fix(sessions): resolve transcript paths with explicit agent context (#16288)

Merged via /review-pr -> /prepare-pr -> /merge-pr.

Prepared head SHA: 7cbe9deca9
Co-authored-by: robbyczgw-cla <239660374+robbyczgw-cla@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
This commit is contained in:
Robby
2026-02-14 19:44:51 +01:00
committed by GitHub
parent 77b89719d5
commit cab0abf52a
10 changed files with 252 additions and 12 deletions

View File

@@ -53,8 +53,9 @@ function resolveTranscriptPath(params: {
sessionId: string;
storePath: string | undefined;
sessionFile?: string;
agentId?: string;
}): string | null {
const { sessionId, storePath, sessionFile } = params;
const { sessionId, storePath, sessionFile, agentId } = params;
if (!storePath && !sessionFile) {
return null;
}
@@ -63,7 +64,7 @@ function resolveTranscriptPath(params: {
return resolveSessionFilePath(
sessionId,
sessionFile ? { sessionFile } : undefined,
sessionsDir ? { sessionsDir } : undefined,
sessionsDir || agentId ? { sessionsDir, agentId } : undefined,
);
} catch {
return null;
@@ -99,12 +100,14 @@ function appendAssistantTranscriptMessage(params: {
sessionId: string;
storePath: string | undefined;
sessionFile?: string;
agentId?: string;
createIfMissing?: boolean;
}): TranscriptAppendResult {
const transcriptPath = resolveTranscriptPath({
sessionId: params.sessionId,
storePath: params.storePath,
sessionFile: params.sessionFile,
agentId: params.agentId,
});
if (!transcriptPath) {
return { ok: false, error: "transcript path not resolved" };
@@ -572,6 +575,7 @@ export const chatHandlers: GatewayRequestHandlers = {
sessionId,
storePath: latestStorePath,
sessionFile: latestEntry?.sessionFile,
agentId,
createIfMissing: true,
});
if (appended.ok) {
@@ -666,7 +670,7 @@ export const chatHandlers: GatewayRequestHandlers = {
// Load session to find transcript file
const rawSessionKey = p.sessionKey;
const { storePath, entry } = loadSessionEntry(rawSessionKey);
const { cfg, storePath, entry } = loadSessionEntry(rawSessionKey);
const sessionId = entry?.sessionId;
if (!sessionId || !storePath) {
respond(false, undefined, errorShape(ErrorCodes.INVALID_REQUEST, "session not found"));
@@ -679,6 +683,7 @@ export const chatHandlers: GatewayRequestHandlers = {
sessionId,
storePath,
sessionFile: entry?.sessionFile,
agentId: resolveSessionAgentId({ sessionKey: rawSessionKey, config: cfg }),
createIfMissing: false,
});
if (!appended.ok || !appended.messageId || !appended.message) {