From c7d0081a54dfd8dfedabcdd453d8fb37bce75d34 Mon Sep 17 00:00:00 2001 From: Umesh Yadav Date: Thu, 31 Jul 2025 19:02:23 +0530 Subject: [PATCH 1/2] agent_ui: Fix context_server duplication when name is updated Signed-off-by: Umesh Yadav --- .../configure_context_server_modal.rs | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/crates/agent_ui/src/agent_configuration/configure_context_server_modal.rs b/crates/agent_ui/src/agent_configuration/configure_context_server_modal.rs index 06d035d836..ff7ce6ce24 100644 --- a/crates/agent_ui/src/agent_configuration/configure_context_server_modal.rs +++ b/crates/agent_ui/src/agent_configuration/configure_context_server_modal.rs @@ -251,6 +251,7 @@ pub struct ConfigureContextServerModal { workspace: WeakEntity, source: ConfigurationSource, state: State, + original_server_id: Option, } impl ConfigureContextServerModal { @@ -349,6 +350,11 @@ impl ConfigureContextServerModal { context_server_store, workspace: workspace_handle, state: State::Idle, + original_server_id: match &target { + ConfigurationTarget::Existing { id, .. } => Some(id.clone()), + ConfigurationTarget::Extension { id, .. } => Some(id.clone()), + ConfigurationTarget::New => None, + }, source: ConfigurationSource::from_target( target, language_registry, @@ -416,9 +422,20 @@ impl ConfigureContextServerModal { // When we write the settings to the file, the context server will be restarted. workspace.update(cx, |workspace, cx| { let fs = workspace.app_state().fs.clone(); - update_settings_file::(fs.clone(), cx, |project_settings, _| { - project_settings.context_servers.insert(id.0, settings); - }); + let original_server_id = self.original_server_id.clone(); + let new_id = id.0.clone(); + update_settings_file::( + fs.clone(), + cx, + move |project_settings, _| { + if let Some(original_id) = &original_server_id { + if original_id.0 != new_id { + project_settings.context_servers.remove(&original_id.0); + } + } + project_settings.context_servers.insert(new_id, settings); + }, + ); }); } else if let Some(existing_server) = existing_server { self.context_server_store From ab2ac0e3175e46ac0cafe7d62e8a338a59e1080a Mon Sep 17 00:00:00 2001 From: Umesh Yadav Date: Thu, 31 Jul 2025 19:14:01 +0530 Subject: [PATCH 2/2] cleanup Signed-off-by: Umesh Yadav --- .../agent_configuration/configure_context_server_modal.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/crates/agent_ui/src/agent_configuration/configure_context_server_modal.rs b/crates/agent_ui/src/agent_configuration/configure_context_server_modal.rs index ff7ce6ce24..4b9f50dd3d 100644 --- a/crates/agent_ui/src/agent_configuration/configure_context_server_modal.rs +++ b/crates/agent_ui/src/agent_configuration/configure_context_server_modal.rs @@ -423,17 +423,16 @@ impl ConfigureContextServerModal { workspace.update(cx, |workspace, cx| { let fs = workspace.app_state().fs.clone(); let original_server_id = self.original_server_id.clone(); - let new_id = id.0.clone(); update_settings_file::( fs.clone(), cx, move |project_settings, _| { if let Some(original_id) = &original_server_id { - if original_id.0 != new_id { + if original_id.0 != id.0 { project_settings.context_servers.remove(&original_id.0); } } - project_settings.context_servers.insert(new_id, settings); + project_settings.context_servers.insert(id.0, settings); }, ); });