/** * Persistent Session Manager * Manages persistent terminal sessions across server restarts */ export interface PersistentSession { id: string; type: string; status: string; createdAt: string; lastActivity: string; metadata: Record; } export class PersistentSessionManager { private sessions = new Map(); restoreSession(sessionId: string): boolean { // Stub implementation return false; } saveSession(sessionId: string, agentId: string, metadata: Record): void { // Stub implementation this.sessions.set(sessionId, { id: sessionId, type: 'terminal', status: 'active', createdAt: new Date().toISOString(), lastActivity: new Date().toISOString(), metadata }); } listSessions(): PersistentSession[] { return Array.from(this.sessions.values()); } deleteSession(sessionId: string): void { this.sessions.delete(sessionId); } updateActivity(sessionId: string): void { const session = this.sessions.get(sessionId); if (session) { session.lastActivity = new Date().toISOString(); } } // Additional async methods for compatibility async createSession(id: string) { this.saveSession(id, id, {}); return { id, created: new Date().toISOString() }; } async getSession(id: string) { return this.sessions.get(id) || null; } async destroySession(id: string) { this.deleteSession(id); return true; } } // Singleton instance let instance: PersistentSessionManager | null = null; export function getPersistentSessionManager(): PersistentSessionManager { if (!instance) { instance = new PersistentSessionManager(); } return instance; } // Export type for usage in other files export type { PersistentSessionManager as PersistentSessionManagerType }; export default PersistentSessionManager;