/** * Session Manager - Manages MCP client sessions and state * * This module handles session lifecycle, state management, and client communication */ import { Logger } from "../types.js"; export interface Session { id: string; clientId: string; startTime: Date; lastActivity: Date; state: SessionState; metadata: Record; } export interface SessionState { currentWorkflow?: string; activeTools: string[]; userPreferences: Record; context: Record; } export interface SessionManagerConfig { sessionTimeout?: number; maxSessions?: number; enablePersistence?: boolean; cleanupInterval?: number; } export declare class SessionManager { private sessions; private logger; private config; private cleanupTimer?; constructor(logger: Logger, config?: SessionManagerConfig); /** * Create a new session */ createSession(clientId: string, metadata?: Record): Session; /** * Get a session by ID */ getSession(sessionId: string): Session | undefined; /** * Update session activity */ updateActivity(sessionId: string): void; /** * Update session state */ updateSessionState(sessionId: string, state: Partial): void; /** * Add active tool to session */ addActiveTool(sessionId: string, toolName: string): void; /** * Remove active tool from session */ removeActiveTool(sessionId: string, toolName: string): void; /** * Update user preferences */ updateUserPreferences(sessionId: string, preferences: Record): void; /** * Update session context */ updateContext(sessionId: string, context: Record): void; /** * End a session */ endSession(sessionId: string): void; /** * Get all active sessions */ getActiveSessions(): Session[]; /** * Get session statistics */ getSessionStats(): { totalSessions: number; activeSessions: number; averageSessionDuration: number; }; /** * Generate unique session ID */ private generateSessionId; /** * Start cleanup timer for expired sessions */ private startCleanupTimer; /** * Clean up expired sessions */ private cleanupExpiredSessions; /** * Enforce maximum number of sessions */ private enforceMaxSessions; /** * Cleanup resources */ destroy(): void; } //# sourceMappingURL=session-manager.d.ts.map