/** * Collaborative Session Manager * KILLER FEATURE: Multi-developer + AI agent session management with persistence * Cursor doesn't have session management - we do! */ import { EventEmitter } from 'events'; import { CollaborationSession, CollaborationUser, AISuggestion, CodeChange } from './websocket-server'; export interface SessionPersistence { saveSession(session: CollaborationSession): Promise; loadSession(sessionId: string): Promise; deleteSession(sessionId: string): Promise; listSessions(userId?: string): Promise; saveCodeHistory(sessionId: string, change: CodeChange): Promise; getCodeHistory(sessionId: string, file?: string): Promise; } export interface UserPresence { userId: string; sessionId: string; status: 'active' | 'idle' | 'away' | 'coding' | 'reviewing'; lastActivity: Date; currentFile?: string; cursor?: { line: number; column: number; file: string; }; isTyping?: boolean; typingIn?: string; } export interface SessionInvite { id: string; sessionId: string; invitedBy: string; invitedUser: string; invitedEmail?: string; message?: string; expiresAt: Date; accepted?: boolean; acceptedAt?: Date; } export interface SessionAnalytics { sessionId: string; totalUsers: number; totalTime: number; codeChanges: number; aiSuggestions: number; aiAcceptanceRate: number; mostActiveUser: string; mostEditedFiles: string[]; collaborationScore: number; } export declare class SessionManager extends EventEmitter { private sessions; private userPresence; private sessionInvites; private analytics; private persistence; private presenceUpdateInterval; constructor(persistence?: SessionPersistence); createSession(creator: CollaborationUser, sessionData: Partial): Promise; joinSession(sessionId: string, user: CollaborationUser): Promise; leaveSession(sessionId: string, userId: string): Promise; updateUserPresence(userId: string, sessionId: string, updates: Partial): void; getUserPresence(userId: string): UserPresence | null; getSessionPresence(sessionId: string): UserPresence[]; createInvite(sessionId: string, invitedBy: string, invitedUser: string, options?: { email?: string; message?: string; expiresIn?: number; }): Promise; acceptInvite(inviteId: string, user: CollaborationUser): Promise; recordCodeChange(sessionId: string, change: CodeChange): void; recordAISuggestion(sessionId: string, suggestion: AISuggestion): void; getSessionAnalytics(sessionId: string): SessionAnalytics | null; private startPresenceUpdates; private cleanupInactiveUsers; private updateCollaborationScore; getSession(sessionId: string): CollaborationSession | null; getAllSessions(): CollaborationSession[]; getUserSessions(userId: string): CollaborationSession[]; getActiveUsers(sessionId: string): CollaborationUser[]; shutdown(): Promise; } //# sourceMappingURL=session-manager.d.ts.map