first pass of merging in warp (doesn't build)
This commit is contained in:
@@ -3,6 +3,7 @@ use chrono::{DateTime, Utc};
|
||||
use galaxyui::{App, SingletonEntity};
|
||||
use onboarding::slides::{AgentAutonomy, AgentDevelopmentSettings, ProjectOnboardingSettings};
|
||||
use onboarding::SelectedSettings;
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
|
||||
use crate::ai::execution_profiles::profiles::AIExecutionProfilesModel;
|
||||
use crate::ai::execution_profiles::{
|
||||
@@ -16,7 +17,7 @@ use crate::network::NetworkStatus;
|
||||
use crate::server::cloud_objects::update_manager::UpdateManager;
|
||||
use crate::server::ids::{ServerId, SyncId};
|
||||
use crate::server::sync_queue::SyncQueue;
|
||||
use crate::settings::{apply_onboarding_settings, PrivacySettings};
|
||||
use crate::settings::{apply_onboarding_settings, AISettings, PrivacySettings};
|
||||
use crate::test_util::settings::initialize_settings_for_tests;
|
||||
use crate::workspaces::team_tester::TeamTesterStatus;
|
||||
use crate::workspaces::user_workspaces::UserWorkspaces;
|
||||
@@ -86,12 +87,12 @@ fn apply_onboarding_settings_preserves_existing_cloud_profile_on_existing_user_l
|
||||
mcp_permissions: ActionPermission::AlwaysAllow,
|
||||
..Default::default()
|
||||
};
|
||||
let server_object = ServerAIExecutionProfile {
|
||||
id: cloud_sync_id,
|
||||
model: CloudAIExecutionProfileModel::new(cloud_profile),
|
||||
metadata: mock_server_metadata(cloud_uid),
|
||||
permissions: ServerPermissions::mock_personal(),
|
||||
};
|
||||
let server_object = ServerAIExecutionProfile::new(
|
||||
cloud_sync_id,
|
||||
CloudAIExecutionProfileModel::new(cloud_profile),
|
||||
mock_server_metadata(cloud_uid),
|
||||
ServerPermissions::mock_personal(),
|
||||
);
|
||||
|
||||
// Insert the existing user's cloud profile via the initial-load
|
||||
// path (no per-object events) and emit `InitialLoadCompleted` so
|
||||
@@ -127,7 +128,7 @@ fn apply_onboarding_settings_preserves_existing_cloud_profile_on_existing_user_l
|
||||
};
|
||||
|
||||
app.update(|ctx| {
|
||||
apply_onboarding_settings(&onboarding_settings, ctx);
|
||||
apply_onboarding_settings(&onboarding_settings, true, ctx);
|
||||
});
|
||||
|
||||
// Post-condition: the cloud profile retains its stored values.
|
||||
@@ -168,3 +169,59 @@ fn apply_onboarding_settings_preserves_existing_cloud_profile_on_existing_user_l
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
/// Warp's AI features run on a Warp account. For third-party agent intent
|
||||
/// (`disable_oz = true`), AI is therefore off when the user skips creating an
|
||||
/// account and on once they have one.
|
||||
#[test]
|
||||
fn apply_onboarding_settings_gates_third_party_ai_on_account() {
|
||||
let _flag = FeatureFlag::OpenWarpNewSettingsModes.override_enabled(true);
|
||||
App::test((), |mut app| async move {
|
||||
initialize_settings_for_tests(&mut app);
|
||||
app.add_singleton_model(|_| AuthStateProvider::new_for_test());
|
||||
app.add_singleton_model(SyncQueue::mock);
|
||||
app.add_singleton_model(|_| NetworkStatus::new());
|
||||
app.add_singleton_model(TeamTesterStatus::mock);
|
||||
app.add_singleton_model(UpdateManager::mock);
|
||||
app.add_singleton_model(CloudModel::mock);
|
||||
app.add_singleton_model(|_| TemplatableMCPServerManager::default());
|
||||
app.add_singleton_model(PrivacySettings::mock);
|
||||
app.add_singleton_model(UserWorkspaces::default_mock);
|
||||
app.add_singleton_model(|ctx| {
|
||||
AIExecutionProfilesModel::new(&LaunchMode::new_for_unit_test(), ctx)
|
||||
});
|
||||
|
||||
let onboarding_settings = SelectedSettings::AgentDrivenDevelopment {
|
||||
agent_settings: AgentDevelopmentSettings {
|
||||
selected_model_id: LLMId::from("auto"),
|
||||
autonomy: None,
|
||||
cli_agent_toolbar_enabled: true,
|
||||
session_default: onboarding::SessionDefault::Agent,
|
||||
disable_oz: true,
|
||||
show_agent_notifications: true,
|
||||
},
|
||||
project_settings: ProjectOnboardingSettings::default(),
|
||||
ui_customization: None,
|
||||
};
|
||||
|
||||
// Skipping login (no account) leaves AI off, even for agent intent.
|
||||
app.update(|ctx| {
|
||||
apply_onboarding_settings(&onboarding_settings, false, ctx);
|
||||
});
|
||||
let ai_disabled = app.read(|ctx| !*AISettings::as_ref(ctx).is_any_ai_enabled);
|
||||
assert!(
|
||||
ai_disabled,
|
||||
"skipping login must disable AI even for agent intent"
|
||||
);
|
||||
|
||||
// Creating an account turns AI on, including for third-party agents.
|
||||
app.update(|ctx| {
|
||||
apply_onboarding_settings(&onboarding_settings, true, ctx);
|
||||
});
|
||||
let ai_enabled = app.read(|ctx| *AISettings::as_ref(ctx).is_any_ai_enabled);
|
||||
assert!(
|
||||
ai_enabled,
|
||||
"creating an account must enable AI for third-party agent intent"
|
||||
);
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user