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