first pass of merging in warp (doesn't build)
This commit is contained in:
@@ -2,6 +2,7 @@ use warp_multi_agent_api as api;
|
||||
|
||||
pub fn create_message(id: &str, task_id: &str) -> api::Message {
|
||||
api::Message {
|
||||
fetched_memories: vec![],
|
||||
id: id.to_string(),
|
||||
task_id: task_id.to_string(),
|
||||
server_message_data: String::new(),
|
||||
@@ -23,6 +24,7 @@ pub fn create_subagent_tool_call_message(
|
||||
metadata: Option<api::message::tool_call::subagent::Metadata>,
|
||||
) -> api::Message {
|
||||
api::Message {
|
||||
fetched_memories: vec![],
|
||||
id: id.to_string(),
|
||||
task_id: task_id.to_string(),
|
||||
server_message_data: String::new(),
|
||||
|
||||
@@ -7,43 +7,60 @@ pub fn initialize_settings_for_tests(app: &mut App) {
|
||||
initialize_settings_for_tests_with_mode(app, ExecutionMode::App, false);
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
pub fn initialize_history_persistence_for_tests(app: &mut App) {
|
||||
use crate::{GlobalResourceHandles, GlobalResourceHandlesProvider};
|
||||
|
||||
initialize_settings_for_tests(app);
|
||||
|
||||
let global_resource_handles = GlobalResourceHandles::mock(app);
|
||||
app.add_singleton_model(|_| GlobalResourceHandlesProvider::new(global_resource_handles));
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
pub fn initialize_settings_for_tests_with_mode(
|
||||
app: &mut App,
|
||||
mode: galaxy_core::execution_mode::ExecutionMode,
|
||||
is_sandboxed: bool,
|
||||
) {
|
||||
use crate::{
|
||||
ai::cloud_agent_settings::CloudAgentSettings,
|
||||
drive::settings::WarpDriveSettings,
|
||||
search::command_search::settings::CommandSearchSettings,
|
||||
settings::{
|
||||
app_icon::AppIconSettings, init_and_register_user_preferences,
|
||||
manager::SettingsManager, AISettings, AccessibilitySettings, AliasExpansionSettings,
|
||||
AppEditorSettings, BlockVisibilitySettings, ChangelogSettings,
|
||||
CloudPreferencesSettings, CodeSettings, DebugSettings, EmacsBindingsSettings,
|
||||
FontSettings, GPUSettings, InputModeSettings, InputSettings, NativePreferenceSettings,
|
||||
PaneSettings, SameLinePromptBlockSettings, ScrollSettings, SelectionSettings,
|
||||
SshSettings, ThemeSettings, VimBannerSettings,
|
||||
},
|
||||
terminal::{
|
||||
general_settings::GeneralSettings, keys_settings::KeysSettings,
|
||||
ligature_settings::LigatureSettings, safe_mode_settings::SafeModeSettings,
|
||||
session_settings::SessionSettings, settings::TerminalSettings,
|
||||
shared_session::settings::SharedSessionSettings, warpify::settings::WarpifySettings,
|
||||
BlockListSettings,
|
||||
},
|
||||
undo_close::UndoCloseSettings,
|
||||
user_config::GalaxyConfig,
|
||||
window_settings::WindowSettings,
|
||||
workspace::tab_settings::TabSettings,
|
||||
use galaxy_core::execution_mode::AppExecutionMode;
|
||||
use galaxy_core::semantic_selection::SemanticSelection;
|
||||
|
||||
use crate::ai::cloud_agent_settings::CloudAgentSettings;
|
||||
use crate::drive::settings::WarpDriveSettings;
|
||||
use crate::search::command_search::settings::CommandSearchSettings;
|
||||
use crate::settings::app_icon::AppIconSettings;
|
||||
use crate::settings::manager::SettingsManager;
|
||||
use crate::settings::{
|
||||
init_and_register_user_preferences, AISettings, AccessibilitySettings,
|
||||
AliasExpansionSettings, AppEditorSettings, BlockVisibilitySettings, ChangelogSettings,
|
||||
CloudPreferencesSettings, CodeSettings, DebugSettings, EmacsBindingsSettings, FontSettings,
|
||||
GPUSettings, InputModeSettings, InputSettings, LocalControlSettings,
|
||||
NativePreferenceSettings, PaneSettings, SameLinePromptBlockSettings, ScrollSettings,
|
||||
SelectionSettings, SshSettings, ThemeSettings, VimBannerSettings,
|
||||
};
|
||||
use galaxy_core::{execution_mode::AppExecutionMode, semantic_selection::SemanticSelection};
|
||||
use crate::terminal::general_settings::GeneralSettings;
|
||||
use crate::terminal::keys_settings::KeysSettings;
|
||||
use crate::terminal::ligature_settings::LigatureSettings;
|
||||
use crate::terminal::safe_mode_settings::SafeModeSettings;
|
||||
use crate::terminal::session_settings::SessionSettings;
|
||||
use crate::terminal::settings::TerminalSettings;
|
||||
use crate::terminal::shared_session::settings::SharedSessionSettings;
|
||||
use crate::terminal::warpify::settings::WarpifySettings;
|
||||
use crate::terminal::BlockListSettings;
|
||||
use crate::undo_close::UndoCloseSettings;
|
||||
use crate::user_config::WarpConfig;
|
||||
use crate::window_settings::WindowSettings;
|
||||
use crate::workspace::tab_settings::TabSettings;
|
||||
app.add_singleton_model(|ctx| AppExecutionMode::new(mode, is_sandboxed, ctx));
|
||||
|
||||
app.update(init_and_register_user_preferences);
|
||||
app.add_singleton_model(|_ctx| SettingsManager::default());
|
||||
app.add_singleton_model(GalaxyConfig::mock);
|
||||
app.add_singleton_model(WarpConfig::mock);
|
||||
app.update(|ctx| {
|
||||
// Register a no-op secure storage provider for testing.
|
||||
galaxyui_extras::secure_storage::register_noop("test", ctx);
|
||||
});
|
||||
|
||||
AccessibilitySettings::register(app);
|
||||
app.update(AISettings::register_and_subscribe_to_events);
|
||||
@@ -71,8 +88,11 @@ pub fn initialize_settings_for_tests_with_mode(
|
||||
InputSettings::register(app);
|
||||
KeysSettings::register(app);
|
||||
LigatureSettings::register(app);
|
||||
if galaxy_core::features::FeatureFlag::WarpControlCli.is_enabled() {
|
||||
LocalControlSettings::register(app);
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(any(target_os = "linux", target_os = "freebsd"))]
|
||||
{
|
||||
use crate::settings::LinuxAppConfiguration;
|
||||
LinuxAppConfiguration::register(app);
|
||||
@@ -101,9 +121,6 @@ pub fn initialize_settings_for_tests_with_mode(
|
||||
SemanticSelection::register(app);
|
||||
|
||||
app.update(|ctx| {
|
||||
// Register a no-op secure storage provider for testing.
|
||||
galaxyui_extras::secure_storage::register_noop("test", ctx);
|
||||
|
||||
// Add settings models that are backed by secure storage, not user preferences.
|
||||
ctx.add_singleton_model(ai::api_keys::ApiKeyManager::new);
|
||||
});
|
||||
|
||||
@@ -1,77 +1,90 @@
|
||||
use ai::index::full_source_code_embedding::manager::CodebaseIndexManager;
|
||||
use galaxy_core::ui::appearance::Appearance;
|
||||
#[cfg(feature = "local_fs")]
|
||||
use ai::skills::SKILL_PROVIDER_DEFINITIONS;
|
||||
use repo_metadata::repositories::DetectedRepositories;
|
||||
use repo_metadata::watcher::DirectoryWatcher;
|
||||
#[cfg(feature = "local_fs")]
|
||||
use repo_metadata::RepoMetadataModel;
|
||||
|
||||
use crate::ai::active_agent_views_model::ActiveAgentViewsModel;
|
||||
use crate::ai::agent_conversations_model::AgentConversationsModel;
|
||||
use crate::ai::ambient_agents::github_auth_notifier::GitHubAuthNotifier;
|
||||
use crate::ai::document::ai_document_model::AIDocumentModel;
|
||||
use crate::ai::mcp::{
|
||||
gallery::MCPGalleryManager, templatable_manager::TemplatableMCPServerManager,
|
||||
};
|
||||
use crate::ai::persisted_workspace::PersistedWorkspace;
|
||||
use crate::ai::skills::SkillManager;
|
||||
use crate::code_review::git_status_update::GitStatusUpdateModel;
|
||||
use crate::galaxy_managed_paths_watcher::GalaxyManagedPathsWatcher;
|
||||
use crate::terminal::cli_agent_sessions::CLIAgentSessionsModel;
|
||||
use galaxyui::SingletonEntity;
|
||||
use galaxyui::{platform::WindowStyle, App, ViewHandle, WindowId};
|
||||
use galaxy_core::ui::appearance::Appearance;
|
||||
use galaxy_server_client::iap::IapManager;
|
||||
use galaxyui::platform::WindowStyle;
|
||||
use galaxyui::{App, SingletonEntity, ViewHandle, WindowId};
|
||||
use watcher::HomeDirectoryWatcher;
|
||||
|
||||
use super::settings::initialize_settings_for_tests;
|
||||
use crate::ai::blocklist::BlocklistAIPermissions;
|
||||
use crate::ai::blocklist::SerializedBlockListItem;
|
||||
use super::settings::initialize_history_persistence_for_tests;
|
||||
use crate::ai::active_agent_views_model::ActiveAgentViewsModel;
|
||||
use crate::ai::agent_conversations_model::AgentConversationsModel;
|
||||
use crate::ai::agent_tips::AITipModel;
|
||||
use crate::ai::ambient_agents::github_auth_notifier::GitHubAuthNotifier;
|
||||
use crate::ai::blocklist::agent_view::orchestration_pill_bar_model::OrchestrationPillBarModel;
|
||||
use crate::ai::blocklist::local_agent_task_sync_model::LocalAgentTaskSyncModel;
|
||||
use crate::ai::blocklist::orchestration_event_streamer::OrchestrationEventStreamer;
|
||||
use crate::ai::blocklist::orchestration_events::OrchestrationEventService;
|
||||
use crate::ai::blocklist::{
|
||||
BlocklistAIHistoryModel, BlocklistAIPermissions, QueuedQueryModel, SerializedBlockListItem,
|
||||
};
|
||||
use crate::ai::connected_self_hosted_workers::ConnectedSelfHostedWorkersModel;
|
||||
use crate::ai::document::ai_document_model::AIDocumentModel;
|
||||
use crate::ai::execution_profiles::profiles::AIExecutionProfilesModel;
|
||||
use crate::ai::harness_availability::HarnessAvailabilityModel;
|
||||
use crate::ai::llms::LLMPreferences;
|
||||
use crate::ai::mcp::gallery::MCPGalleryManager;
|
||||
use crate::ai::mcp::templatable_manager::TemplatableMCPServerManager;
|
||||
use crate::ai::outline::RepoOutlines;
|
||||
use crate::ai::persisted_workspace::PersistedWorkspace;
|
||||
use crate::ai::restored_conversations::RestoredAgentConversations;
|
||||
use crate::ai::skills::SkillManager;
|
||||
use crate::ai::AIRequestUsageModel;
|
||||
use crate::auth::auth_manager::AuthManager;
|
||||
use crate::auth::AuthStateProvider;
|
||||
use crate::changelog_model::ChangelogModel;
|
||||
use crate::cloud_object::model::persistence::CloudModel;
|
||||
use crate::code_review::git_repo_model::GitRepoModels;
|
||||
use crate::context_chips::prompt::Prompt;
|
||||
use crate::network::NetworkStatus;
|
||||
use crate::pricing::PricingInfoModel;
|
||||
use crate::search::files::model::FileSearchModel;
|
||||
use crate::server::cloud_objects::listener::Listener;
|
||||
use crate::server::cloud_objects::update_manager::UpdateManager;
|
||||
use crate::server::server_api::ServerApiProvider;
|
||||
use crate::server::sync_queue::SyncQueue;
|
||||
use crate::server::telemetry::context_provider::AppTelemetryContextProvider;
|
||||
use crate::settings::PrivacySettings;
|
||||
use crate::settings_view::keybindings::KeybindingChangedNotifier;
|
||||
use crate::suggestions::ignored_suggestions_model::IgnoredSuggestionsModel;
|
||||
use crate::system::{SystemInfo, SystemStats};
|
||||
use crate::terminal::alt_screen_reporting::AltScreenReporting;
|
||||
use crate::terminal::cli_agent_sessions::CLIAgentSessionsModel;
|
||||
use crate::terminal::keys::TerminalKeybindings;
|
||||
use crate::terminal::resizable_data::ResizableData;
|
||||
use crate::terminal::shared_session::permissions_manager::SessionPermissionsManager;
|
||||
use crate::terminal::view::inline_banner::ByoLlmAuthBannerSessionState;
|
||||
use crate::terminal::{History, TerminalView};
|
||||
use crate::undo_close::UndoCloseStack;
|
||||
use crate::workspace::{OneTimeModalModel, WorkspaceRegistry};
|
||||
use crate::AgentNotificationsModel;
|
||||
use crate::{
|
||||
ai::{blocklist::BlocklistAIHistoryModel, AIRequestUsageModel},
|
||||
cloud_object::model::persistence::CloudModel,
|
||||
context_chips::prompt::Prompt,
|
||||
experiments,
|
||||
network::NetworkStatus,
|
||||
search::files::model::FileSearchModel,
|
||||
server::{
|
||||
cloud_objects::{listener::Listener, update_manager::UpdateManager},
|
||||
server_api::ServerApiProvider,
|
||||
sync_queue::SyncQueue,
|
||||
},
|
||||
settings::PrivacySettings,
|
||||
settings_view::keybindings::KeybindingChangedNotifier,
|
||||
system::SystemInfo,
|
||||
system::SystemStats,
|
||||
terminal::{
|
||||
alt_screen_reporting::AltScreenReporting, keys::TerminalKeybindings,
|
||||
resizable_data::ResizableData, History, TerminalView,
|
||||
},
|
||||
workflows::local_workflows::LocalWorkflows,
|
||||
workspace::{sync_inputs::SyncedInputState, ActiveSession},
|
||||
workspaces::{
|
||||
team_tester::TeamTesterStatus, update_manager::TeamUpdateManager,
|
||||
user_workspaces::UserWorkspaces,
|
||||
},
|
||||
};
|
||||
use repo_metadata::watcher::DirectoryWatcher;
|
||||
use crate::warp_managed_paths_watcher::WarpManagedPathsWatcher;
|
||||
use crate::workflows::local_workflows::LocalWorkflows;
|
||||
use crate::workspace::sync_inputs::SyncedInputState;
|
||||
use crate::workspace::{ActiveSession, OneTimeModalModel, WorkspaceRegistry};
|
||||
use crate::workspaces::team_tester::TeamTesterStatus;
|
||||
use crate::workspaces::update_manager::TeamUpdateManager;
|
||||
use crate::workspaces::user_workspaces::UserWorkspaces;
|
||||
use crate::{experiments, AgentNotificationsModel};
|
||||
|
||||
/// Initializes all of the necessary models to use a terminal view.
|
||||
pub fn initialize_app_for_terminal_view(app: &mut App) {
|
||||
initialize_settings_for_tests(app);
|
||||
initialize_history_persistence_for_tests(app);
|
||||
|
||||
app.add_singleton_model(|_| ServerApiProvider::new_for_test());
|
||||
// Register a disabled `IapManager` (no IAP state) so code paths that read
|
||||
// the singleton (e.g. the shared-session viewer network) don't panic in
|
||||
// tests. With `None` state it is an inert no-op.
|
||||
app.add_singleton_model(|ctx| {
|
||||
IapManager::new(
|
||||
None,
|
||||
Box::new(|_| futures::FutureExt::boxed(futures::future::ready(None::<String>))),
|
||||
ctx,
|
||||
)
|
||||
});
|
||||
app.add_singleton_model(|ctx| ChangelogModel::new(ServerApiProvider::as_ref(ctx).get()));
|
||||
app.add_singleton_model(|_| NetworkStatus::new());
|
||||
app.add_singleton_model(|_| SystemStats::new());
|
||||
@@ -91,7 +104,16 @@ pub fn initialize_app_for_terminal_view(app: &mut App) {
|
||||
app.add_singleton_model(LocalWorkflows::new);
|
||||
app.add_singleton_model(|_| History::default());
|
||||
app.add_singleton_model(|_| BlocklistAIHistoryModel::new_for_test());
|
||||
// QueuedQueryModel subscribes to history events; register after the
|
||||
// history model is in place.
|
||||
app.add_singleton_model(QueuedQueryModel::new);
|
||||
// Pill bar model subscribes to history events; register after the
|
||||
// history model is in place.
|
||||
app.add_singleton_model(|ctx| OrchestrationPillBarModel::new(Default::default(), ctx));
|
||||
app.add_singleton_model(|_| CLIAgentSessionsModel::new());
|
||||
app.add_singleton_model(OrchestrationEventService::new);
|
||||
app.add_singleton_model(LocalAgentTaskSyncModel::new);
|
||||
app.add_singleton_model(OrchestrationEventStreamer::new);
|
||||
app.add_singleton_model(|_| ActiveAgentViewsModel::new());
|
||||
app.add_singleton_model(BlocklistAIPermissions::new);
|
||||
app.add_singleton_model(AgentNotificationsModel::new);
|
||||
@@ -107,13 +129,31 @@ pub fn initialize_app_for_terminal_view(app: &mut App) {
|
||||
app.add_singleton_model(AppTelemetryContextProvider::new_context_provider);
|
||||
app.add_singleton_model(AuthManager::new_for_test);
|
||||
app.add_singleton_model(LLMPreferences::new);
|
||||
app.add_singleton_model(HarnessAvailabilityModel::new);
|
||||
app.add_singleton_model(|ctx| AITipModel::new_for_agent_tips(ctx));
|
||||
app.add_singleton_model(ConnectedSelfHostedWorkersModel::new);
|
||||
app.add_singleton_model(SessionPermissionsManager::new);
|
||||
app.add_singleton_model(DirectoryWatcher::new);
|
||||
app.add_singleton_model(|_| DetectedRepositories::default());
|
||||
#[cfg(feature = "local_fs")]
|
||||
app.add_singleton_model(RepoMetadataModel::new);
|
||||
app.add_singleton_model(|ctx| {
|
||||
let model = RepoMetadataModel::new(ctx);
|
||||
model.register_force_included_paths(
|
||||
SKILL_PROVIDER_DEFINITIONS
|
||||
.iter()
|
||||
.map(|provider| provider.skills_path.clone()),
|
||||
ctx,
|
||||
);
|
||||
model.set_project_skill_provider_paths(
|
||||
SKILL_PROVIDER_DEFINITIONS
|
||||
.iter()
|
||||
.map(|provider| provider.skills_path.clone()),
|
||||
ctx,
|
||||
);
|
||||
model
|
||||
});
|
||||
app.add_singleton_model(FileSearchModel::new);
|
||||
app.add_singleton_model(|_| GitStatusUpdateModel::new());
|
||||
app.add_singleton_model(|_| GitRepoModels::new());
|
||||
app.add_singleton_model(RepoOutlines::new_for_test);
|
||||
app.add_singleton_model(HomeDirectoryWatcher::new_for_test);
|
||||
app.add_singleton_model(GalaxyManagedPathsWatcher::new_for_testing);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use std::path::PathBuf;
|
||||
|
||||
pub use virtual_fs::{Dirs, Stub, VirtualFS};
|
||||
|
||||
pub trait WarpDirs {
|
||||
|
||||
Reference in New Issue
Block a user