diff --git a/.kilo/plans/agent-manager-new-worktree-project-selector.md b/.kilo/plans/agent-manager-new-worktree-project-selector.md index ed6ed73d1d..5f98fd086f 100644 --- a/.kilo/plans/agent-manager-new-worktree-project-selector.md +++ b/.kilo/plans/agent-manager-new-worktree-project-selector.md @@ -827,8 +827,8 @@ de es fa fr it ja ko nl no pl ru th tr uk zh zht`) via the `translator` subagent - No change to `.am-project-item`, `.am-branch-item`, `.am-selector-trigger`, `.am-nv-config-label`, or any other existing rule. The only existing rule touched is the `overflow: visible` selector group in E.3, and only by adding selectors to it. -- No new message types. `agentManager.addProject`, `agentManager.requestBranches`, - `agentManager.createMultiVersion`, `agentManager.importFromBranch`, and - `agentManager.importFromPR` all already exist and already accept what is needed. +- No new message types. `agentManager.requestBranches`, `agentManager.createMultiVersion`, + `agentManager.importFromBranch`, and `agentManager.importFromPR` all already exist and + already accept what is needed. - With `props.projects` empty, the rendered dialog markup must be identical to before the change. Verify by toggling `kilo-code.new.experimental.multiProject` off. diff --git a/packages/kilo-vscode/tests/unit/agent-manager-new-worktree-project.test.ts b/packages/kilo-vscode/tests/unit/agent-manager-new-worktree-project.test.ts index 3e811eb838..e7684806a2 100644 --- a/packages/kilo-vscode/tests/unit/agent-manager-new-worktree-project.test.ts +++ b/packages/kilo-vscode/tests/unit/agent-manager-new-worktree-project.test.ts @@ -4,6 +4,7 @@ import { join } from "node:path" const root = join(__dirname, "..", "..") const dialog = readFileSync(join(root, "webview-ui", "agent-manager", "NewWorktreeDialog.tsx"), "utf8") +const app = readFileSync(join(root, "webview-ui", "agent-manager", "AgentManagerApp.tsx"), "utf8") const importer = readFileSync(join(root, "src", "agent-manager", "worktree-importer.ts"), "utf8") const css = readFileSync(join(root, "webview-ui", "agent-manager", "agent-manager.css"), "utf8") @@ -18,6 +19,10 @@ describe("Agent Manager New Worktree project targeting", () => { expect(dialog).toContain('type: "agentManager.importFromBranch"') }) + it("does not replace a pending cross-project activation", () => { + expect(app).toContain("if (pendingCreate()) return") + }) + it("tags branch and import responses with their owning project", () => { expect(importer).toContain("async branches(projectId?: string)") expect(importer).toContain('type: "agentManager.branches", projectId') diff --git a/packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx b/packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx index 1286fd74e3..b48896cb65 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx +++ b/packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx @@ -269,6 +269,7 @@ const AgentManagerContent: Component = () => { const [pendingCreate, setPendingCreate] = createSignal<{ projectId: string }>() const scheduleCreate = (projectId: string) => { if (projectId === activeProjectId()) return + if (pendingCreate()) return setPendingCreate({ projectId }) } const isActivePayload = (pid: string | undefined) =>