UNPKG

route-claudecode

Version:

Advanced routing and transformation system for Claude Code outputs to multiple AI providers

103 lines 2.95 kB
/** * Session Manager for Multi-Turn Conversation Support * Manages conversation state and context across multiple requests * 项目所有者: Jason Zhang */ export interface ConversationSession { sessionId: string; conversationId: string; providerConversationIds: Record<string, string>; messageHistory: ConversationMessage[]; tools?: any[]; system?: any[]; metadata: Record<string, any>; createdAt: Date; lastAccessedAt: Date; } export interface ConversationMessage { role: 'user' | 'assistant'; content: string | any[]; timestamp: Date; metadata?: Record<string, any>; } export declare class SessionManager { private sessions; private clientFingerprintSessions; private readonly maxSessions; private readonly sessionTimeout; constructor(); /** * Extract session ID from request headers or generate new one */ extractSessionId(headers: Record<string, string>): string; /** * Get or create conversation session */ getOrCreateSession(sessionId: string): ConversationSession; /** * Update session with new message */ addMessage(sessionId: string, message: ConversationMessage): void; /** * Get provider-specific conversation ID */ getProviderConversationId(sessionId: string, providerName: string): string; /** * Get conversation history for provider */ getConversationHistory(sessionId: string, maxMessages?: number): ConversationMessage[]; /** * Update session metadata */ updateSessionMetadata(sessionId: string, metadata: Record<string, any>): void; /** * Update session tools */ updateSessionTools(sessionId: string, tools: any[]): void; /** * Update session system messages */ updateSessionSystem(sessionId: string, system: any[]): void; /** * Get session tools */ getSessionTools(sessionId: string): any[]; /** * Get session system messages */ getSessionSystem(sessionId: string): any[]; /** * Clear specific session */ clearSession(sessionId: string): boolean; /** * Get session statistics */ getSessionStats(): { totalSessions: number; activeInLastHour: number; }; /** * Generate unique session ID */ private generateSessionId; /** * Generate client fingerprint based on request headers * This helps identify the same Claude Code client instance across requests */ private generateClientFingerprint; /** * Generate fingerprint data for debugging (not hashed) */ private generateFingerprintDataForDebug; /** * Generate unique conversation ID */ private generateConversationId; /** * Clean up expired sessions */ private cleanupExpiredSessions; } export declare const sessionManager: SessionManager; //# sourceMappingURL=manager.d.ts.map