From 5449b3b46ad55d844231bbbabac2cfee8403ceba Mon Sep 17 00:00:00 2001 From: clawdbot Date: Sun, 15 Mar 2026 17:23:32 +0000 Subject: [PATCH] fix: archive session behavior --- src/auto-reply/reply/session.ts | 2 +- src/gateway/server-methods/sessions.ts | 18 ++++++++++-------- src/gateway/sessions-resolve.ts | 2 ++ 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/auto-reply/reply/session.ts b/src/auto-reply/reply/session.ts index 34af2d881c8..91d8509bfed 100644 --- a/src/auto-reply/reply/session.ts +++ b/src/auto-reply/reply/session.ts @@ -442,7 +442,7 @@ export async function initSessionState(params: { archivedAt: baseEntry?.archivedAt, }; if (typeof sessionEntry.archivedAt === "number") { - delete sessionEntry.archivedAt; + sessionEntry.archivedAt = null; } const metaPatch = deriveSessionMetaPatch({ ctx: sessionCtxForState, diff --git a/src/gateway/server-methods/sessions.ts b/src/gateway/server-methods/sessions.ts index f8891f3b459..dc64bdb9470 100644 --- a/src/gateway/server-methods/sessions.ts +++ b/src/gateway/server-methods/sessions.ts @@ -217,14 +217,16 @@ export const sessionsHandlers: GatewayRequestHandlers = { const wasArchived = typeof applied.previous?.archivedAt === "number"; const isArchived = typeof applied.entry.archivedAt === "number"; if (!wasArchived && isArchived) { - void writeSessionArchiveSummary({ - cfg, - key: target.canonicalKey ?? key, - entry: applied.entry, - storePath, - archivedAt: applied.entry.archivedAt ?? undefined, - }).catch((err) => { - console.warn(`sessions.patch archive summary failed: ${String(err)}`); + setImmediate(() => { + void writeSessionArchiveSummary({ + cfg, + key: target.canonicalKey ?? key, + entry: applied.entry, + storePath, + archivedAt: applied.entry.archivedAt ?? undefined, + }).catch((err) => { + console.warn(`sessions.patch archive summary failed: ${String(err)}`); + }); }); } diff --git a/src/gateway/sessions-resolve.ts b/src/gateway/sessions-resolve.ts index 47ca47b86e3..f3e5561ee16 100644 --- a/src/gateway/sessions-resolve.ts +++ b/src/gateway/sessions-resolve.ts @@ -75,6 +75,7 @@ export async function resolveSessionKeyFromResolveParams(params: { opts: { includeGlobal: p.includeGlobal === true, includeUnknown: p.includeUnknown === true, + includeArchived: true, spawnedBy: p.spawnedBy, agentId: p.agentId, search: sessionId, @@ -119,6 +120,7 @@ export async function resolveSessionKeyFromResolveParams(params: { opts: { includeGlobal: p.includeGlobal === true, includeUnknown: p.includeUnknown === true, + includeArchived: true, label: parsedLabel.label, agentId: p.agentId, spawnedBy: p.spawnedBy,