fix(regression): preserve CLI continuity across chat reset

This commit is contained in:
Tak Hoffman 2026-03-27 16:00:53 -05:00
parent b50b9b16ab
commit 1a9abb13bd
No known key found for this signature in database
2 changed files with 12 additions and 6 deletions

View File

@ -1399,9 +1399,9 @@ describe("initSessionState preserves behavior overrides across /new and /reset",
authProfileOverrideSource: overrides.authProfileOverrideSource,
authProfileOverrideCompactionCount: overrides.authProfileOverrideCompactionCount,
});
expect(result.sessionEntry.cliSessionIds).toBeUndefined();
expect(result.sessionEntry.cliSessionBindings).toBeUndefined();
expect(result.sessionEntry.claudeCliSessionId).toBeUndefined();
expect(result.sessionEntry.cliSessionIds).toEqual(overrides.cliSessionIds);
expect(result.sessionEntry.cliSessionBindings).toEqual(overrides.cliSessionBindings);
expect(result.sessionEntry.claudeCliSessionId).toBe(overrides.claudeCliSessionId);
}
});

View File

@ -259,6 +259,9 @@ export async function initSessionState(params: {
let persistedAuthProfileOverride: string | undefined;
let persistedAuthProfileOverrideSource: SessionEntry["authProfileOverrideSource"];
let persistedAuthProfileOverrideCompactionCount: number | undefined;
let persistedCliSessionIds: SessionEntry["cliSessionIds"];
let persistedCliSessionBindings: SessionEntry["cliSessionBindings"];
let persistedClaudeCliSessionId: string | undefined;
let persistedLabel: string | undefined;
const normalizedChatType = normalizeChatType(ctx.ChatType);
@ -417,6 +420,9 @@ export async function initSessionState(params: {
persistedAuthProfileOverride = entry.authProfileOverride;
persistedAuthProfileOverrideSource = entry.authProfileOverrideSource;
persistedAuthProfileOverrideCompactionCount = entry.authProfileOverrideCompactionCount;
persistedCliSessionIds = entry.cliSessionIds;
persistedCliSessionBindings = entry.cliSessionBindings;
persistedClaudeCliSessionId = entry.claudeCliSessionId;
persistedLabel = entry.label;
}
}
@ -473,6 +479,9 @@ export async function initSessionState(params: {
persistedAuthProfileOverrideSource ?? baseEntry?.authProfileOverrideSource,
authProfileOverrideCompactionCount:
persistedAuthProfileOverrideCompactionCount ?? baseEntry?.authProfileOverrideCompactionCount,
cliSessionIds: persistedCliSessionIds ?? baseEntry?.cliSessionIds,
cliSessionBindings: persistedCliSessionBindings ?? baseEntry?.cliSessionBindings,
claudeCliSessionId: persistedClaudeCliSessionId ?? baseEntry?.claudeCliSessionId,
label: persistedLabel ?? baseEntry?.label,
sendPolicy: baseEntry?.sendPolicy,
queueMode: baseEntry?.queueMode,
@ -575,9 +584,6 @@ export async function initSessionState(params: {
sessionEntry.outputTokens = undefined;
sessionEntry.estimatedCostUsd = undefined;
sessionEntry.contextTokens = undefined;
delete sessionEntry.cliSessionIds;
delete sessionEntry.cliSessionBindings;
delete sessionEntry.claudeCliSessionId;
}
// Preserve per-session overrides while resetting compaction state on /new.
sessionStore[sessionKey] = { ...sessionStore[sessionKey], ...sessionEntry };