From 3288e1cfb9f6adf51ec5dbffda8f59f8bd0ba240 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Sun, 28 Jun 2026 19:10:59 +0700 Subject: [PATCH] Stop agent prompts renaming existing workspaces --- packages/server/src/server/session.ts | 24 ++----------------- .../src/server/session.workspaces.test.ts | 14 +++++++++-- .../workspace-same-cwd-isolation.e2e.test.ts | 8 +++---- 3 files changed, 18 insertions(+), 28 deletions(-) diff --git a/packages/server/src/server/session.ts b/packages/server/src/server/session.ts index 75999482d..91df7536a 100644 --- a/packages/server/src/server/session.ts +++ b/packages/server/src/server/session.ts @@ -2411,6 +2411,7 @@ export class Session { initialTitle: workspacePromptTitle, }, ); + const createdDirectoryWorkspaceForAgent = !createdWorktree && !msg.workspaceId; const { snapshot, liveSnapshot } = await createAgentCommand( { @@ -2441,11 +2442,8 @@ export class Session { }, ); createdAgentId = snapshot.id; - if (!createdWorktree && msg.workspaceId) { - await this.writeInitialWorkspaceTitleIfUntitled(workspaceId, workspacePromptTitle); - } await this.agentUpdates.forwardLiveAgent(snapshot); - if (!createdWorktree && trimmedPrompt) { + if (createdDirectoryWorkspaceForAgent && trimmedPrompt) { await this.scheduleAutoNameLocalWorkspaceTitleForFirstAgent({ workspaceId, cwd: createAgentConfig.cwd, @@ -2906,24 +2904,6 @@ export class Session { }); } - private async writeInitialWorkspaceTitleIfUntitled( - workspaceId: string, - title: string | null, - ): Promise { - if (!title) { - return; - } - const current = await this.workspaceRegistry.get(workspaceId); - if (!current || current.title) { - return; - } - await this.workspaceRegistry.upsert({ - ...current, - title, - updatedAt: new Date().toISOString(), - }); - } - // Wraps the injected workspace-name generator for a directory workspace. private async generateWorkspaceTitleFromContext(input: { cwd: string; diff --git a/packages/server/src/server/session.workspaces.test.ts b/packages/server/src/server/session.workspaces.test.ts index b5873873d..b50b76be4 100644 --- a/packages/server/src/server/session.workspaces.test.ts +++ b/packages/server/src/server/session.workspaces.test.ts @@ -830,7 +830,8 @@ test("create_agent_request keeps requested child cwd when grouped under an exist } }); -test("create_agent_request writes the first prompt title onto an untitled existing workspace", async () => { +test("create_agent_request does not title an existing workspace from the agent prompt", async () => { + vi.useFakeTimers(); const workdir = mkdtempSync(path.join(tmpdir(), "paseo-create-agent-existing-title-")); try { const cwd = path.join(workdir, "repo"); @@ -883,6 +884,7 @@ test("create_agent_request writes the first prompt title onto an untitled existi }), ); + let generateCalls = 0; const session = asTestSession( new Session({ clientId: "test-client", @@ -922,6 +924,10 @@ test("create_agent_request writes the first prompt title onto an untitled existi mcpBaseUrl: null, stt: null, tts: null, + generateWorkspaceName: async () => { + generateCalls += 1; + return { title: "Generated title that must not be written", branch: null }; + }, providerSnapshotManager: createProviderSnapshotManagerStub().manager, terminalManager: null, }), @@ -935,13 +941,17 @@ test("create_agent_request writes the first prompt title onto an untitled existi initialPrompt: "Fix login bug\nwith better validation", attachments: [], }); + await vi.runAllTimersAsync(); const [createdAgent] = agentManager.listAgents(); expect(createdAgent?.workspaceId).toBe("ws-existing"); + expect(generateCalls).toBe(0); await expect(workspaceRegistry.get("ws-existing")).resolves.toMatchObject({ - title: "Fix login bug", + title: null, + updatedAt: "2026-05-07T00:00:00.000Z", }); } finally { + vi.useRealTimers(); rmSync(workdir, { recursive: true, force: true }); } }); diff --git a/packages/server/src/server/workspace-same-cwd-isolation.e2e.test.ts b/packages/server/src/server/workspace-same-cwd-isolation.e2e.test.ts index da743dd32..f49573bf3 100644 --- a/packages/server/src/server/workspace-same-cwd-isolation.e2e.test.ts +++ b/packages/server/src/server/workspace-same-cwd-isolation.e2e.test.ts @@ -410,7 +410,7 @@ test("local workspace auto-title does not broadcast provider snapshot warm-up to } }, 20_000); -test("create_agent_request with initialPrompt generates a daemon-visible workspace title", async () => { +test("create_agent_request with workspaceId does not retitle an existing workspace", async () => { const cwd = mkdtempSync(path.join(tmpdir(), "paseo-agent-submit-title-")); const daemon = await createTestPaseoDaemon({ agentClients: { mock: new MockLoadTestAgentClient() }, @@ -433,6 +433,8 @@ test("create_agent_request with initialPrompt generates a daemon-visible workspa if (!workspaceId) { throw new Error(created.error ?? "Expected workspace to be created"); } + const originalName = await workspaceName(client, workspaceId); + expect(originalName).toBe(path.basename(cwd)); const agent = await client.createAgent({ provider: "mock", @@ -443,9 +445,7 @@ test("create_agent_request with initialPrompt generates a daemon-visible workspa }); expect(agent.workspaceId).toBe(workspaceId); - await expect - .poll(() => workspaceName(client, workspaceId), { timeout: 10_000 }) - .toBe("Fix login bug"); + expect(await workspaceName(client, workspaceId)).toBe(originalName); } finally { await client.close().catch(() => undefined); await daemon.close();