route-claudecode
Version:
Advanced routing and transformation system for Claude Code outputs to multiple AI providers
103 lines • 2.95 kB
TypeScript
/**
* 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