From 89fc3369d5e72924e0520b5dcc06cd43032f9ae3 Mon Sep 17 00:00:00 2001 From: suraj-markup Date: Tue, 24 Feb 2026 03:54:52 +0530 Subject: [PATCH] fix: add agent field to readMetadata return mapping readMetadata() was not returning the `agent` field even though writeMetadata() persisted it. This meant typed consumers got undefined for session.agent while raw readers worked fine. Co-Authored-By: Claude Opus 4.6 --- packages/core/src/__tests__/session-manager.test.ts | 10 ++++++++++ packages/core/src/metadata.ts | 1 + 2 files changed, 11 insertions(+) diff --git a/packages/core/src/__tests__/session-manager.test.ts b/packages/core/src/__tests__/session-manager.test.ts index ae2d3c466..5722ebaaa 100644 --- a/packages/core/src/__tests__/session-manager.test.ts +++ b/packages/core/src/__tests__/session-manager.test.ts @@ -303,6 +303,16 @@ describe("spawn", () => { expect(meta).not.toBeNull(); expect(meta!["agent"]).toBe("mock-agent"); }); + + it("readMetadata returns agent field (typed SessionMetadata)", async () => { + const sm = createSessionManager({ config, registry: registryWithMultipleAgents }); + + await sm.spawn({ projectId: "my-app", agent: "codex" }); + + const meta = readMetadata(sessionsDir, "app-1"); + expect(meta).not.toBeNull(); + expect(meta!.agent).toBe("codex"); + }); }); it("validates issue exists when issueId provided", async () => { diff --git a/packages/core/src/metadata.ts b/packages/core/src/metadata.ts index 71fd263ec..0e0fb1db5 100644 --- a/packages/core/src/metadata.ts +++ b/packages/core/src/metadata.ts @@ -97,6 +97,7 @@ export function readMetadata(dataDir: string, sessionId: SessionId): SessionMeta pr: raw["pr"], summary: raw["summary"], project: raw["project"], + agent: raw["agent"], createdAt: raw["createdAt"], runtimeHandle: raw["runtimeHandle"], dashboardPort: raw["dashboardPort"] ? Number(raw["dashboardPort"]) : undefined,