UNPKG

route-claudecode

Version:

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

79 lines 2.65 kB
/** * Conversation Queue Manager for OpenAI Provider * Implements Anthropic-compliant concurrency control for same-session requests * * Key Requirements: * 1. Same session + same conversationID requests must be processed sequentially * 2. RequestID must have clear numeric ordering within conversation * 3. Input blocks until previous request completes (finish reason received) * 4. All finish reasons must be correctly returned (no silent failures) */ import { EventEmitter } from 'events'; export interface ConversationRequest { requestId: string; sessionId: string; conversationId: string; sequenceNumber: number; timestamp: Date; isStreaming: boolean; resolve: (result: any) => void; reject: (error: any) => void; } export interface ConversationQueueStats { totalQueues: number; totalPendingRequests: number; averageWaitTime: number; longestQueue: number; completedRequests: number; } /** * Manages sequential processing of requests within the same conversation * Ensures Anthropic-compliant ordering and finish reason handling */ export declare class ConversationQueueManager extends EventEmitter { private port; private conversationQueues; private processingRequests; private sequenceCounters; private completedRequests; private requestStartTimes; constructor(port: number); /** * Enqueue a request for sequential processing within its conversation * Returns a promise that resolves when the request can be processed */ enqueueRequest(sessionId: string, conversationId: string, isStreaming?: boolean): Promise<{ requestId: string; sequenceNumber: number; }>; /** * Mark a request as completed and process next in queue * Must be called when finish reason is received */ completeRequest(requestId: string, finishReason?: string): void; /** * Handle request failure and process next in queue */ failRequest(requestId: string, error: any): void; /** * Get queue statistics */ getQueueStats(): ConversationQueueStats; /** * Process the next request in a conversation queue */ private processNextInQueue; /** * Get next sequence number for a conversation */ private getNextSequenceNumber; /** * Clean up expired conversations and their queues */ private cleanupExpiredConversations; } /** * Get or create conversation queue manager for a specific port */ export declare function getConversationQueueManager(port: number): ConversationQueueManager; //# sourceMappingURL=conversation-queue-manager.d.ts.map