From a424b9700e271c7ace8f0954671bdee5903555a8 Mon Sep 17 00:00:00 2001 From: main Date: Fri, 20 Mar 2026 18:01:43 -0400 Subject: Refresh workers on same-path project rebinding --- crates/fidget-spinner-cli/src/mcp/host/process.rs | 5 +++++ crates/fidget-spinner-cli/src/mcp/host/runtime.rs | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'crates/fidget-spinner-cli/src/mcp/host') diff --git a/crates/fidget-spinner-cli/src/mcp/host/process.rs b/crates/fidget-spinner-cli/src/mcp/host/process.rs index d4cbb4b..fdbd873 100644 --- a/crates/fidget-spinner-cli/src/mcp/host/process.rs +++ b/crates/fidget-spinner-cli/src/mcp/host/process.rs @@ -55,6 +55,11 @@ impl WorkerSupervisor { self.bound_project_root = Some(project_root); } + pub(super) fn refresh_binding(&mut self, project_root: PathBuf) { + self.kill_current_worker(); + self.bound_project_root = Some(project_root); + } + pub(super) fn execute( &mut self, request_id: HostRequestId, diff --git a/crates/fidget-spinner-cli/src/mcp/host/runtime.rs b/crates/fidget-spinner-cli/src/mcp/host/runtime.rs index bf0484a..f2f10b7 100644 --- a/crates/fidget-spinner-cli/src/mcp/host/runtime.rs +++ b/crates/fidget-spinner-cli/src/mcp/host/runtime.rs @@ -392,7 +392,8 @@ impl HostRuntime { let args = deserialize::(arguments, "tools/call:project.bind")?; let resolved = resolve_project_binding(PathBuf::from(args.path)) .map_err(host_store_fault("tools/call:project.bind"))?; - self.worker.rebind(resolved.binding.project_root.clone()); + self.worker + .refresh_binding(resolved.binding.project_root.clone()); self.binding = Some(resolved.binding); tool_success( project_bind_output(&resolved.status)?, -- cgit v1.2.3