/** * Generates `lib/ai-chat/session-store.js`, the home of the chat transcript * while the visitor moves around the site. * * WHY THIS EXISTS. The chat is a component instance placed on each page, so * navigating unmounts it and React throws its state away — the visitor loses * the conversation by clicking a link. * * TWO LAYERS, deliberately: * * - a `globalThis` bag, which carries the transcript through a client-side * navigation (Next's ``) without touching storage at all; * - `sessionStorage`, which carries it through a FULL document load — the * language switcher is a plain ``, and typing a URL does the * same thing. Both tear down the JavaScript context, so an in-memory bag * alone loses the conversation exactly when the visitor changes language. * * ⛔ sessionStorage would also survive a refresh, which is NOT wanted: a * refresh starts a new conversation. That is what the reload check is for — * `PerformanceNavigationTiming.type` tells a reload apart from a navigation, * so the stored transcript is dropped on F5 and kept on everything else. * It is scoped to one tab by definition, so a second tab starts clean. * * The conversation id travels with the transcript because the two are one * thing: the server appends to a conversation row by id (`ON CONFLICT (id) DO * UPDATE`), so restoring messages without the id would show the visitor a * history the database no longer believes in, and restoring the id without the * messages would leave the assistant answering with no visible context. */ /** Emitted next to `localized-messages`, under `lib/ai-chat/`. */ export declare const AI_CHAT_SESSION_STORE_FILE = "session-store"; export declare function generateAIChatSessionStoreCode(): string; //# sourceMappingURL=session-store.d.ts.map