import type { Source } from './types.js'; /** * Session data structure stored in sessionStorage */ export interface StoredSession { /** Session ID from backend API */ sessionId: string; /** Timestamp when session was created/last updated */ updatedAt: number; /** Optional conversation messages for UI restoration */ messages?: StoredMessage[]; } /** * Message structure for conversation history */ export interface StoredMessage { /** Unique message ID */ id: string; /** 'user' or 'assistant' */ role: 'user' | 'assistant'; /** Message content */ content: string; /** Timestamp */ timestamp: number; /** Whether response was from offline fallback */ offline?: boolean; /** Confidence level of response */ confidence?: 'high' | 'medium' | 'low' | 'none'; /** Source citations from RAG */ sources?: Source[]; } /** * Configuration for session persistence */ export interface SessionStorageConfig { /** Enable session persistence (default: true) */ enabled?: boolean; /** Storage key prefix (default: 'astermind_session') */ storageKey?: string; /** Session TTL in milliseconds (default: 30 minutes) */ sessionTtl?: number; /** Persist conversation messages (default: true) */ persistMessages?: boolean; /** Maximum messages to store (default: 50) */ maxMessages?: number; } /** * Session storage manager for persisting chatbot sessions * * Uses sessionStorage to maintain conversation continuity across * page navigations within the same browser session. */ export declare class CyberneticSessionStorage { private config; private cachedSession; constructor(config?: SessionStorageConfig); /** * Check if sessionStorage is available */ isAvailable(): boolean; /** * Get the current session ID (if valid) */ getSessionId(): string | null; /** * Get the full stored session (if valid) */ getSession(): StoredSession | null; /** * Save/update session ID */ saveSessionId(sessionId: string): void; /** * Add a message to the conversation history */ addMessage(message: Omit): void; /** * Get conversation messages */ getMessages(): StoredMessage[]; /** * Clear the stored session */ clear(): void; /** * Start a new session (clears existing and optionally sets new ID) */ startNewSession(sessionId?: string): void; /** * Check if we have a valid stored session */ hasValidSession(): boolean; /** * Get session info for debugging/status */ getSessionInfo(): { hasSession: boolean; sessionId: string | null; messageCount: number; lastUpdated: Date | null; ttlRemaining: number | null; }; /** * Check if a session is still valid (not expired) */ private isSessionValid; /** * Load session from sessionStorage */ private loadFromStorage; /** * Save session to sessionStorage */ private saveToStorage; /** * Generate a unique message ID */ private generateMessageId; } //# sourceMappingURL=CyberneticSessionStorage.d.ts.map