diff options
| author | main <main@swarm.moe> | 2026-03-20 18:01:43 -0400 |
|---|---|---|
| committer | main <main@swarm.moe> | 2026-03-20 18:01:43 -0400 |
| commit | a424b9700e271c7ace8f0954671bdee5903555a8 (patch) | |
| tree | 5e8fb2ce0a5da6623da8f2160333deb9e96768d1 /crates/fidget-spinner-cli/src | |
| parent | 9d63844f3a28fde70b19500422f17379e99e588a (diff) | |
| download | fidget_spinner-a424b9700e271c7ace8f0954671bdee5903555a8.zip | |
Refresh workers on same-path project rebinding
Diffstat (limited to 'crates/fidget-spinner-cli/src')
| -rw-r--r-- | crates/fidget-spinner-cli/src/mcp/host/process.rs | 5 | ||||
| -rw-r--r-- | crates/fidget-spinner-cli/src/mcp/host/runtime.rs | 3 |
2 files changed, 7 insertions, 1 deletions
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::<ProjectBindArgs>(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)?, |