diff --git a/packages/server/src/server/session.workspaces.test.ts b/packages/server/src/server/session.workspaces.test.ts index 36992bd11..32ba120d3 100644 --- a/packages/server/src/server/session.workspaces.test.ts +++ b/packages/server/src/server/session.workspaces.test.ts @@ -1,6 +1,6 @@ import { execSync } from "node:child_process"; import { mkdtempSync, realpathSync, rmSync, writeFileSync } from "node:fs"; -import { tmpdir } from "node:os"; +import { homedir, tmpdir } from "node:os"; import path from "node:path"; import { expect, test, vi } from "vitest"; import { Session } from "./session.js"; @@ -47,6 +47,10 @@ interface SessionTestAccess { getAgentPayloadById(agentId: string): Promise; buildProjectPlacementForCwd(cwd: string): Promise; buildProjectPlacement(cwd: string): Promise; + resolveRegisteredWorkspaceIdForCwd( + cwd: string, + workspaces: ReturnType[], + ): string; buildWorkspaceDescriptorMap(...args: unknown[]): Promise>; describeWorkspaceRecord(...args: unknown[]): Promise; describeWorkspaceRecordWithGitData(...args: unknown[]): Promise; @@ -3042,3 +3046,21 @@ test("subscribed fetch_workspaces includes git enrichment in the initial snapsho expect(workspaceUpdates).toEqual([]); expect(session.describeWorkspaceRecordWithGitData).toHaveBeenCalledWith(gitWorkspace, gitProject); }); + +test("resolveRegisteredWorkspaceIdForCwd does not match home directory as a prefix", () => { + const session = createSessionForWorkspaceTests(); + const home = homedir(); + const childCwd = path.join(home, "projects/new-app"); + const homeWorkspace = createPersistedWorkspaceRecord({ + workspaceId: home, + projectId: "proj-home", + cwd: home, + kind: "directory", + displayName: "home", + createdAt: "2026-03-01T12:00:00.000Z", + updatedAt: "2026-03-01T12:00:00.000Z", + }); + + expect(session.resolveRegisteredWorkspaceIdForCwd(childCwd, [homeWorkspace])).toBe(childCwd); + expect(session.resolveRegisteredWorkspaceIdForCwd(home, [homeWorkspace])).toBe(home); +});