Clear stale active session ids

This commit is contained in:
武阳
2026-05-07 15:52:12 +08:00
parent 7a8152fba8
commit b0ae8ad0be
2 changed files with 13 additions and 5 deletions
@@ -14,7 +14,11 @@ export async function GET(req: Request) {
if (sessionId) url.searchParams.set("session_id", sessionId); if (sessionId) url.searchParams.set("session_id", sessionId);
try { try {
const response = await fetch(url, { cache: "no-store" }); let response = await fetch(url, { cache: "no-store" });
if (response.status === 404 && sessionId) {
url.searchParams.delete("session_id");
response = await fetch(url, { cache: "no-store" });
}
const payload = await response.text(); const payload = await response.text();
return new Response(payload, { return new Response(payload, {
status: response.status, status: response.status,
@@ -549,7 +549,7 @@ function useComposerContextStatus() {
const statePayload = stateResponse.ok const statePayload = stateResponse.ok
? ((await stateResponse.json()) as ClawState) ? ((await stateResponse.json()) as ClawState)
: {}; : {};
const sessionId = normalizeSessionId( let sessionId = normalizeSessionId(
normalizeSessionId(latestSessionId) || normalizeSessionId(latestSessionId) ||
normalizeSessionId( normalizeSessionId(
window.localStorage.getItem("claw.activeSessionId"), window.localStorage.getItem("claw.activeSessionId"),
@@ -567,9 +567,13 @@ function useComposerContextStatus() {
cache: "no-store", cache: "no-store",
}, },
); );
sessionPayload = sessionResponse.ok if (sessionResponse.ok) {
? ((await sessionResponse.json()) as ClawStoredSession) sessionPayload =
: null; (await sessionResponse.json()) as ClawStoredSession;
} else if (sessionResponse.status === 404) {
window.localStorage.removeItem("claw.activeSessionId");
sessionId = null;
}
} }
const budgetUrl = new URL( const budgetUrl = new URL(
"/api/claw/context-budget", "/api/claw/context-budget",