Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/src/ai/agent_conversations_model.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ use crate::ai::cloud_environments::CloudAmbientAgentEnvironment;
use crate::ai::conversation_navigation::ConversationNavigationData;
use crate::auth::auth_manager::{AuthManager, AuthManagerEvent};
use crate::auth::AuthStateProvider;
use crate::cloud_object::CloudObjectLookup as _;
use crate::network::{NetworkStatus, NetworkStatusEvent, NetworkStatusKind};
use crate::server::cloud_objects::update_manager::{UpdateManager, UpdateManagerEvent};
use crate::server::ids::{ServerId, SyncId};
Expand Down
2 changes: 1 addition & 1 deletion app/src/ai/agent_sdk/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ use crate::ai::ambient_agents::AmbientAgentTaskId;
use crate::ai::cloud_environments::CloudAmbientAgentEnvironment;
use crate::ai::llms::{LLMId, LLMPreferences};
use crate::auth::auth_state::AuthStateProvider;
use crate::cloud_object::{CloudObject, Owner};
use crate::cloud_object::{CloudObject, CloudObjectLookup as _, Owner};
use crate::server::cloud_objects::update_manager::UpdateManager;
use crate::server::ids::{ServerId, SyncId};
use crate::server::server_api::ai::AIClient;
Expand Down
2 changes: 1 addition & 1 deletion app/src/ai/agent_sdk/driver.rs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ use crate::ai::skills::{
SkillWatcher,
};
use crate::auth::AuthStateProvider;
use crate::cloud_object::CloudObject;
use crate::cloud_object::{CloudObject, CloudObjectLookup as _};
use crate::send_telemetry_from_app_ctx;
use crate::server::ids::{ServerId, SyncId};
use crate::server::server_api::ai::AIClient;
Expand Down
2 changes: 1 addition & 1 deletion app/src/ai/agent_sdk/environment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ use crate::ai::cloud_environments::{
};
use crate::auth::UserUid;
use crate::cloud_object::model::generic_string_model::GenericStringObjectId;
use crate::cloud_object::CloudObject;
use crate::cloud_object::{CloudObject, CloudObjectLookup as _};
use crate::server::cloud_objects::update_manager::{
ObjectOperation, OperationSuccessType, UpdateManager, UpdateManagerEvent,
};
Expand Down
1 change: 1 addition & 0 deletions app/src/ai/agent_sdk/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ use crate::ai::skills::{
use crate::auth::auth_manager::{AuthManager, AuthManagerEvent};
use crate::auth::AuthStateProvider;
use crate::cloud_object::model::persistence::CloudModel;
use crate::cloud_object::CloudObjectLookup as _;
use crate::send_telemetry_sync_from_app_ctx;
use crate::server::ids::{ServerId, SyncId};
use crate::server::server_api::ai::{AIClient, AgentConfigSnapshot};
Expand Down
2 changes: 1 addition & 1 deletion app/src/ai/agent_sdk/schedule.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ use crate::ai::ambient_agents::scheduled::{
CloudScheduledAmbientAgent, ScheduledAgentManager, ScheduledAmbientAgent, UpdateScheduleParams,
};
use crate::ai::ambient_agents::AgentConfigSnapshot;
use crate::cloud_object::CloudObject;
use crate::cloud_object::{CloudObject, CloudObjectLookup as _};
use crate::server::ids::{ServerId, SyncId};
use crate::util::time_format::format_approx_duration_from_now_utc;

Expand Down
21 changes: 2 additions & 19 deletions app/src/ai/ambient_agents/scheduled.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ use crate::cloud_object::model::generic_string_model::{
use crate::cloud_object::model::json_model::{JsonModel, JsonSerializer};
use crate::cloud_object::model::persistence::CloudModel;
use crate::cloud_object::{
GenericCloudObject, GenericStringObjectFormat, GenericStringObjectUniqueKey, JsonObjectType,
Owner, Revision,
CloudObjectLookup as _, GenericCloudObject, GenericStringObjectFormat,
GenericStringObjectUniqueKey, JsonObjectType, Owner, Revision,
};
use crate::drive::CloudObjectTypeAndId;
use crate::server::cloud_objects::update_manager::{
Expand Down Expand Up @@ -54,23 +54,6 @@ pub type CloudScheduledAmbientAgent =
pub type CloudScheduledAmbientAgentModel =
GenericStringModel<ScheduledAmbientAgent, JsonSerializer>;

impl CloudScheduledAmbientAgent {
pub fn get_all(app: &AppContext) -> Vec<CloudScheduledAmbientAgent> {
CloudModel::as_ref(app)
.get_all_objects_of_type::<GenericStringObjectId, CloudScheduledAmbientAgentModel>()
.cloned()
.collect()
}

pub fn get_by_id<'a>(
sync_id: &'a SyncId,
app: &'a AppContext,
) -> Option<&'a CloudScheduledAmbientAgent> {
CloudModel::as_ref(app)
.get_object_of_type::<GenericStringObjectId, CloudScheduledAmbientAgentModel>(sync_id)
}
}

impl ScheduledAmbientAgent {
pub fn new(name: String, cron_schedule: String, enabled: bool, prompt: String) -> Self {
Self {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ use crate::ai::cloud_environments::CloudAmbientAgentEnvironment;
use crate::appearance::Appearance;
use crate::cloud_object::model::generic_string_model::StringModel;
use crate::cloud_object::model::persistence::CloudModel;
use crate::cloud_object::CloudObjectLookup as _;
use crate::context_chips::display_menu::{
ChipMenuType, DisplayChipMenu, FixedFooter, GenericMenuItem, PromptDisplayMenuEvent,
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ use crate::ai::local_child_harnesses::{
local_child_harness_disabled_message, local_child_harness_is_enabled,
};
use crate::appearance::Appearance;
use crate::cloud_object::CloudObjectLookup as _;
use crate::menu::{MenuItem, MenuItemFields};
use crate::ui_components::blended_colors;
use crate::ui_components::icons::Icon;
Expand Down
17 changes: 0 additions & 17 deletions app/src/ai/cloud_agent_config/mod.rs
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
use std::collections::HashMap;

use serde::{Deserialize, Serialize};
use warpui::{AppContext, SingletonEntity as _};

use crate::cloud_object::model::generic_string_model::{
GenericStringModel, GenericStringObjectId, StringModel,
};
use crate::cloud_object::model::json_model::{JsonModel, JsonSerializer};
use crate::cloud_object::model::persistence::CloudModel;
use crate::cloud_object::{
GenericCloudObject, GenericStringObjectFormat, GenericStringObjectUniqueKey, JsonObjectType,
Revision,
};
use crate::server::ids::SyncId;
use crate::server::server_api::ai::AgentConfigSnapshot;
use crate::server::sync_queue::QueueItem;

Expand Down Expand Up @@ -58,20 +55,6 @@ impl AgentConfig {
}
}

impl CloudAgentConfig {
pub fn get_all(app: &AppContext) -> Vec<CloudAgentConfig> {
CloudModel::as_ref(app)
.get_all_objects_of_type::<GenericStringObjectId, CloudAgentConfigModel>()
.cloned()
.collect()
}

pub fn get_by_id<'a>(sync_id: &'a SyncId, app: &'a AppContext) -> Option<&'a CloudAgentConfig> {
CloudModel::as_ref(app)
.get_object_of_type::<GenericStringObjectId, CloudAgentConfigModel>(sync_id)
}
}

impl StringModel for AgentConfig {
type CloudObjectType = CloudAgentConfig;

Expand Down
19 changes: 0 additions & 19 deletions app/src/ai/cloud_environments/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,10 @@ use crate::cloud_object::model::generic_string_model::{
GenericStringModel, GenericStringObjectId, StringModel,
};
use crate::cloud_object::model::json_model::{JsonModel, JsonSerializer};
use crate::cloud_object::model::persistence::CloudModel;
use crate::cloud_object::{
GenericCloudObject, GenericStringObjectFormat, GenericStringObjectUniqueKey, JsonObjectType,
Revision,
};
use crate::server::ids::SyncId;
use crate::server::sync_queue::QueueItem;
use crate::workspaces::user_workspaces::UserWorkspaces;

Expand Down Expand Up @@ -110,23 +108,6 @@ pub type CloudAmbientAgentEnvironment =
pub type CloudAmbientAgentEnvironmentModel =
GenericStringModel<AmbientAgentEnvironment, JsonSerializer>;

impl CloudAmbientAgentEnvironment {
pub fn get_all(app: &AppContext) -> Vec<CloudAmbientAgentEnvironment> {
CloudModel::as_ref(app)
.get_all_objects_of_type::<GenericStringObjectId, CloudAmbientAgentEnvironmentModel>()
.cloned()
.collect()
}

pub fn get_by_id<'a>(
sync_id: &'a SyncId,
app: &'a AppContext,
) -> Option<&'a CloudAmbientAgentEnvironment> {
CloudModel::as_ref(app)
.get_object_of_type::<GenericStringObjectId, CloudAmbientAgentEnvironmentModel>(sync_id)
}
}

impl AmbientAgentEnvironment {
pub fn new(
name: String,
Expand Down
1 change: 1 addition & 0 deletions app/src/ai/conversation_details_panel.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ use crate::ai::harness_availability::HarnessAvailabilityModel;
use crate::ai::harness_display;
use crate::appearance::Appearance;
use crate::auth::UserUid;
use crate::cloud_object::CloudObjectLookup as _;
use crate::notebooks::NotebookId;
use crate::send_telemetry_from_ctx;
use crate::server::ids::{ServerId, SyncId};
Expand Down
29 changes: 5 additions & 24 deletions app/src/ai/mcp/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,9 @@ use crate::cloud_object::model::generic_string_model::{
GenericStringModel, GenericStringObjectId, StringModel,
};
use crate::cloud_object::model::json_model::{JsonModel, JsonSerializer};
use crate::cloud_object::model::persistence::CloudModel;
use crate::cloud_object::{
GenericCloudObject, GenericStringObjectFormat, GenericStringObjectUniqueKey, JsonObjectType,
Revision,
CloudObjectUuid, GenericCloudObject, GenericStringObjectFormat, GenericStringObjectUniqueKey,
JsonObjectType, Revision,
};
use crate::drive::items::mcp_server::WarpDriveMCPServer;
use crate::drive::items::WarpDriveItem;
Expand Down Expand Up @@ -56,7 +55,6 @@ cfg_if::cfg_if! {

pub mod gallery;
pub use gallery::MCPGalleryManager;
use warpui::{AppContext, SingletonEntity as _};
pub mod templatable;
pub use templatable::{JsonTemplate, TemplatableMCPServer, TemplateVariable};
pub mod logs;
Expand Down Expand Up @@ -162,26 +160,9 @@ pub struct ServerSentEvents {
pub type CloudMCPServer = GenericCloudObject<GenericStringObjectId, CloudMCPServerModel>;
pub type CloudMCPServerModel = GenericStringModel<MCPServer, JsonSerializer>;

impl CloudMCPServer {
pub fn get_all(app: &AppContext) -> Vec<CloudMCPServer> {
CloudModel::as_ref(app)
.get_all_objects_of_type::<GenericStringObjectId, CloudMCPServerModel>()
.cloned()
.collect()
}

pub fn get_by_id<'a>(sync_id: &'a SyncId, app: &'a AppContext) -> Option<&'a CloudMCPServer> {
CloudModel::as_ref(app)
.get_object_of_type::<GenericStringObjectId, CloudMCPServerModel>(sync_id)
}

pub fn get_by_uuid<'a>(
uuid: &'a uuid::Uuid,
app: &'a AppContext,
) -> Option<&'a CloudMCPServer> {
CloudModel::as_ref(app)
.get_all_objects_of_type::<GenericStringObjectId, CloudMCPServerModel>()
.find(|server| server.model().string_model.uuid == *uuid)
impl CloudObjectUuid for MCPServer {
fn uuid(&self) -> uuid::Uuid {
self.uuid
}
}

Expand Down
32 changes: 5 additions & 27 deletions app/src/ai/mcp/templatable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,14 @@ use handlebars::get_arguments;
use serde::{Deserialize, Serialize};
use uuid::Uuid;
use warp_core::ui::appearance::Appearance;
use warpui::{AppContext, SingletonEntity as _};

use crate::cloud_object::model::generic_string_model::{
GenericStringModel, GenericStringObjectId, StringModel,
};
use crate::cloud_object::model::json_model::{JsonModel, JsonSerializer};
use crate::cloud_object::model::persistence::CloudModel;
use crate::cloud_object::{
GenericCloudObject, GenericStringObjectFormat, GenericStringObjectUniqueKey, JsonObjectType,
Revision, UniquePer,
CloudObjectUuid, GenericCloudObject, GenericStringObjectFormat, GenericStringObjectUniqueKey,
JsonObjectType, Revision, UniquePer,
};
use crate::drive::items::WarpDriveItem;
use crate::server::datetime_ext::DateTimeExt;
Expand Down Expand Up @@ -205,29 +203,9 @@ pub type CloudTemplatableMCPServer =
GenericCloudObject<GenericStringObjectId, CloudTemplatableMCPServerModel>;
pub type CloudTemplatableMCPServerModel = GenericStringModel<TemplatableMCPServer, JsonSerializer>;

impl CloudTemplatableMCPServer {
pub fn get_all(app: &AppContext) -> Vec<CloudTemplatableMCPServer> {
CloudModel::as_ref(app)
.get_all_objects_of_type::<GenericStringObjectId, CloudTemplatableMCPServerModel>()
.cloned()
.collect()
}

pub fn get_by_id<'a>(
sync_id: &'a SyncId,
app: &'a AppContext,
) -> Option<&'a CloudTemplatableMCPServer> {
CloudModel::as_ref(app)
.get_object_of_type::<GenericStringObjectId, CloudTemplatableMCPServerModel>(sync_id)
}

pub fn get_by_uuid<'a>(
uuid: &'a uuid::Uuid,
app: &'a AppContext,
) -> Option<&'a CloudTemplatableMCPServer> {
CloudModel::as_ref(app)
.get_all_objects_of_type::<GenericStringObjectId, CloudTemplatableMCPServerModel>()
.find(|server| server.model().string_model.uuid == *uuid)
impl CloudObjectUuid for TemplatableMCPServer {
fn uuid(&self) -> uuid::Uuid {
self.uuid
}
}

Expand Down
6 changes: 2 additions & 4 deletions app/src/ai/mcp/templatable_manager/native.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ use crate::ai::mcp::{
use crate::auth::AuthStateProvider;
use crate::cloud_object::model::persistence::{CloudModel, CloudModelEvent};
use crate::cloud_object::{
CloudObject, CloudObjectLocation, CloudObjectMetadataExt, GenericStringObjectFormat,
JsonObjectType, Space,
CloudObject, CloudObjectLocation, CloudObjectLookup as _, CloudObjectMetadataExt,
CloudObjectUuidLookup as _, GenericStringObjectFormat, JsonObjectType, Space,
};
use crate::drive::CloudObjectTypeAndId;
use crate::persistence::{
Expand Down Expand Up @@ -1416,8 +1416,6 @@ impl TemplatableMCPServerManager {
servers_to_restart: HashSet<Uuid>,
ctx: &mut ModelContext<Self>,
) {
// Import inline because of circular dependencies
use crate::ai::mcp::CloudMCPServer;
let cloud_legacy_servers = CloudMCPServer::get_all(ctx);
log::info!(
"Converting {} legacy MCP servers into templatable MCP servers",
Expand Down
Loading
Loading