diff --git a/packages/core/src/__tests__/session-manager.test.ts b/packages/core/src/__tests__/session-manager.test.ts index 75fd8ad8d..907214ec0 100644 --- a/packages/core/src/__tests__/session-manager.test.ts +++ b/packages/core/src/__tests__/session-manager.test.ts @@ -759,8 +759,9 @@ describe("cleanup", () => { }), }; - // Session with role=orchestrator but a non-standard name - writeMetadata(sessionsDir, "app-orchestrator", { + // Session with role=orchestrator but a name that does NOT end in "-orchestrator" + // so only the role metadata check can protect it (not the name fallback) + writeMetadata(sessionsDir, "app-99", { worktree: "/tmp", branch: "main", status: "working", @@ -773,7 +774,7 @@ describe("cleanup", () => { const result = await sm.cleanup(); expect(result.killed).toHaveLength(0); - expect(result.skipped).toContain("app-orchestrator"); + expect(result.skipped).toContain("app-99"); }); it("skips orchestrator sessions by name fallback (no role metadata)", async () => { diff --git a/packages/core/src/metadata.ts b/packages/core/src/metadata.ts index 67e5242f1..bf3b5d430 100644 --- a/packages/core/src/metadata.ts +++ b/packages/core/src/metadata.ts @@ -99,6 +99,7 @@ export function readMetadata(dataDir: string, sessionId: SessionId): SessionMeta project: raw["project"], createdAt: raw["createdAt"], runtimeHandle: raw["runtimeHandle"], + role: raw["role"], dashboardPort: raw["dashboardPort"] ? Number(raw["dashboardPort"]) : undefined, terminalWsPort: raw["terminalWsPort"] ? Number(raw["terminalWsPort"]) : undefined, directTerminalWsPort: raw["directTerminalWsPort"] ? Number(raw["directTerminalWsPort"]) : undefined, @@ -141,6 +142,7 @@ export function writeMetadata( if (metadata.project) data["project"] = metadata.project; if (metadata.createdAt) data["createdAt"] = metadata.createdAt; if (metadata.runtimeHandle) data["runtimeHandle"] = metadata.runtimeHandle; + if (metadata.role) data["role"] = metadata.role; if (metadata.dashboardPort !== undefined) data["dashboardPort"] = String(metadata.dashboardPort); if (metadata.terminalWsPort !== undefined)