/** * keyStore.ts * * WHAT: A tiny utility module that manages the visitor's Groq API key in sessionStorage. * * WHY: We centralise all key read/write operations here so that: * 1. No other file reaches into sessionStorage directly (single responsibility). * 2. If we ever change the storage mechanism, we only update this file. * * HOW sessionStorage vs localStorage: * - localStorage persists FOREVER across tabs and browser restarts. * - sessionStorage is scoped to ONE TAB and is automatically wiped when that * tab is closed. This is exactly what we want for temporary API keys. */ const SESSION_KEY = "multiverse_groq_key"; /** Save the visitor's Groq API key to their browser's sessionStorage. */ export function saveApiKey(key: string): void { sessionStorage.setItem(SESSION_KEY, key); } /** * Retrieve the stored Groq API key, or null if not set. * This is called by the API client before every request. */ export function getStoredApiKey(): string | null { return sessionStorage.getItem(SESSION_KEY); } /** * Remove the key from sessionStorage immediately. * Called when the user clicks "Clear Key & Leave". * Note: sessionStorage also clears automatically on tab close, * so this is just for users who want to be extra careful. */ export function clearApiKey(): void { sessionStorage.removeItem(SESSION_KEY); }