route-claudecode
Version:
Advanced routing and transformation system for Claude Code outputs to multiple AI providers
85 lines • 2.42 kB
TypeScript
/**
* Simple Session Manager
* Provides basic session tracking without concurrency control
*
* Key Features:
* 1. Session metadata tracking
* 2. Request ID generation
* 3. Basic statistics
* 4. No queuing or concurrency control
*/
import { EventEmitter } from 'events';
export interface SessionRequest {
requestId: string;
sessionId: string;
conversationId: string;
timestamp: Date;
isStreaming: boolean;
status: 'active' | 'completed' | 'failed';
sequenceNumber: number;
startTime: number;
endTime?: number;
}
export interface SessionStats {
totalSessions: number;
activeRequests: number;
completedRequests: number;
failedRequests: number;
outOfOrderResponses: number;
}
/**
* Simple session manager without concurrency control
* Provides basic session tracking and request ID generation
*/
export declare class SimpleSessionManager extends EventEmitter {
private port;
private activeRequests;
private sessionCounters;
private completedRequests;
private failedRequests;
private outOfOrderResponses;
private conversationHistory;
constructor(port: number);
/**
* Generate a simple request ID without queuing
* Format: sessionId:conversationId:timestamp:random
*/
generateRequestId(sessionId: string, conversationId: string, isStreaming?: boolean): string;
/**
* Mark request as completed
*/
completeRequest(requestId: string, finishReason?: string): void;
/**
* Mark request as failed
*/
failRequest(requestId: string, error: any): void;
/**
* Check if a request is active
*/
isRequestActive(requestId: string): boolean;
/**
* Get session statistics
*/
getSessionStats(): SessionStats;
/**
* Get active requests for a specific session
*/
getActiveRequests(sessionId: string, conversationId?: string): SessionRequest[];
/**
* Get next counter for a session
*/
private getNextCounter;
/**
* Check if request completed out of order and log warning
*/
private checkRequestOrder;
/**
* Clean up expired sessions
*/
private cleanupExpiredSessions;
}
/**
* Get or create simple session manager for a specific port
*/
export declare function getSimpleSessionManager(port: number): SimpleSessionManager;
//# sourceMappingURL=simple-session-manager.d.ts.map