fix: persist create transcript paths in session entries

This commit is contained in:
Tak Hoffman
2026-03-26 20:44:39 -05:00
parent ca01595699
commit e1ff753790
2 changed files with 26 additions and 3 deletions

View File

@@ -739,12 +739,31 @@ export const sessionsHandlers: GatewayRequestHandlers = {
return;
}
const createdEntry =
created.entry.sessionFile === ensured.transcriptPath
? created.entry
: {
...created.entry,
sessionFile: ensured.transcriptPath,
};
if (createdEntry !== created.entry) {
await updateSessionStore(target.storePath, (store) => {
const existing = store[target.canonicalKey];
if (existing) {
store[target.canonicalKey] = {
...existing,
sessionFile: ensured.transcriptPath,
};
}
});
}
const initialMessage = resolveOptionalInitialSessionMessage(p);
let runPayload: Record<string, unknown> | undefined;
let runError: unknown;
let runMeta: Record<string, unknown> | undefined;
const messageSeq = initialMessage
? readSessionMessages(created.entry.sessionId, target.storePath, created.entry.sessionFile)
? readSessionMessages(createdEntry.sessionId, target.storePath, createdEntry.sessionFile)
.length + 1
: undefined;
@@ -782,8 +801,8 @@ export const sessionsHandlers: GatewayRequestHandlers = {
{
ok: true,
key: target.canonicalKey,
sessionId: created.entry.sessionId,
entry: created.entry,
sessionId: createdEntry.sessionId,
entry: createdEntry,
runStarted,
...(runPayload ? runPayload : {}),
...(runStarted && typeof messageSeq === "number" ? { messageSeq } : {}),

View File

@@ -304,6 +304,7 @@ describe("gateway server sessions", () => {
providerOverride?: string;
modelOverride?: string;
parentSessionKey?: string;
sessionFile?: string;
};
}>(ws, "sessions.create", {
agentId: "ops",
@@ -318,6 +319,7 @@ describe("gateway server sessions", () => {
expect(created.payload?.entry?.providerOverride).toBe("openai");
expect(created.payload?.entry?.modelOverride).toBe("gpt-test-a");
expect(created.payload?.entry?.parentSessionKey).toBe("agent:main:main");
expect(created.payload?.entry?.sessionFile).toBeTruthy();
expect(created.payload?.sessionId).toMatch(
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,
);
@@ -330,6 +332,7 @@ describe("gateway server sessions", () => {
providerOverride?: string;
modelOverride?: string;
parentSessionKey?: string;
sessionFile?: string;
}
>;
const key = created.payload?.key as string;
@@ -340,6 +343,7 @@ describe("gateway server sessions", () => {
modelOverride: "gpt-test-a",
parentSessionKey: "agent:main:main",
});
expect(created.payload?.entry?.sessionFile).toBe(rawStore[key]?.sessionFile);
const transcriptPath = path.join(dir, `${created.payload?.sessionId}.jsonl`);
const transcript = await fs.readFile(transcriptPath, "utf-8");