"use client"; const ACTIVE_SESSION_ID_KEY = "claw.activeSessionId"; export const ACTIVE_SESSION_CHANGED_EVENT = "claw-active-session-changed"; export function readActiveSessionId() { if (typeof window === "undefined") return null; return ( normalizeSessionId(window.sessionStorage.getItem(ACTIVE_SESSION_ID_KEY)) ?? normalizeSessionId(window.localStorage.getItem(ACTIVE_SESSION_ID_KEY)) ); } export function writeActiveSessionId(sessionId: string | null | undefined) { if (typeof window === "undefined") return; const normalized = normalizeSessionId(sessionId); if (!normalized) { clearActiveSessionId(); return; } window.sessionStorage.setItem(ACTIVE_SESSION_ID_KEY, normalized); window.localStorage.setItem(ACTIVE_SESSION_ID_KEY, normalized); window.dispatchEvent( new CustomEvent(ACTIVE_SESSION_CHANGED_EVENT, { detail: { sessionId: normalized }, }), ); } export function clearActiveSessionId() { if (typeof window === "undefined") return; window.sessionStorage.removeItem(ACTIVE_SESSION_ID_KEY); window.localStorage.removeItem(ACTIVE_SESSION_ID_KEY); window.dispatchEvent( new CustomEvent(ACTIVE_SESSION_CHANGED_EVENT, { detail: { sessionId: null }, }), ); } function normalizeSessionId(value: unknown) { if (typeof value !== "string") return null; const trimmed = value.trim(); return trimmed || null; }