diff --git a/packages/kilo-vscode/src/agent-manager/AgentManagerProvider.ts b/packages/kilo-vscode/src/agent-manager/AgentManagerProvider.ts index 1ee48a082a..589cd9aaec 100644 --- a/packages/kilo-vscode/src/agent-manager/AgentManagerProvider.ts +++ b/packages/kilo-vscode/src/agent-manager/AgentManagerProvider.ts @@ -1110,8 +1110,8 @@ export class AgentManagerProvider implements Disposable { return null } - const orphaned = state.removeWorktree(worktreeId) this.naming.forget(worktreeId) + const orphaned = state.removeWorktree(worktreeId) if (this.diffs.shouldStopForWorktree(worktree.path, orphaned)) { this.diffs.stop() } diff --git a/packages/kilo-vscode/src/agent-manager/branch-naming.ts b/packages/kilo-vscode/src/agent-manager/branch-naming.ts index ea3dbdab02..6ed5ec88f8 100644 --- a/packages/kilo-vscode/src/agent-manager/branch-naming.ts +++ b/packages/kilo-vscode/src/agent-manager/branch-naming.ts @@ -124,9 +124,13 @@ export class BranchNamingController { } /** Drop in-memory bookkeeping for a worktree whose arming ended without a - * rename (worktree removed, session moved/deleted). Safe to call for any - * id; no-ops when nothing is held. */ + * rename (worktree removed, session moved/deleted). Also clears the armed + * session from the busy set. Call before the worktree is removed from state + * so the session is still resolvable. Safe to call for any id; no-ops when + * nothing is held. */ forget(id: string): void { + const worktree = this.deps.state()?.getWorktree(id) + if (worktree?.autoNameSessionId) this.busySessions.delete(worktree.autoNameSessionId) this.pending.delete(id) this.model.delete(id) this.idleAttempted.delete(id)