first pass of merging in warp (doesn't build)

This commit is contained in:
Ryan Ward
2026-07-01 16:08:58 -05:00
parent 2f64909469
commit 4770ac06b5
3662 changed files with 414574 additions and 89772 deletions
+65 -8
View File
@@ -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"
);
})
}