UNPKG

route-claudecode

Version:

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

91 lines 2.95 kB
/** * 统一流式处理基类 * 消除重复的流式处理逻辑 * * 遵循零硬编码、零Fallback、零沉默失败原则 */ import { BaseRequest, BaseResponse } from '@/types'; export interface StreamingHandlerOptions { providerName: string; sessionManager?: any; enableValidation?: boolean; allowedEvents?: string[]; } export interface StreamingMetrics { chunkCount: number; hasValidContent: boolean; finishReason?: string; startTime: number; endTime?: number; } /** * 基础流式处理器 * 提供统一的流式请求处理框架 */ export declare abstract class BaseStreamingHandler { protected readonly options: StreamingHandlerOptions; protected metrics: StreamingMetrics; constructor(options: StreamingHandlerOptions); /** * 主要的流式处理方法 */ handleStreamRequest(request: BaseRequest): AsyncIterable<any>; /** * 非流式请求处理(通过流式实现) */ handleNonStreamRequest(request: BaseRequest): Promise<BaseResponse>; /** * 抽象方法:具体的流式处理实现 */ protected abstract processStream(request: BaseRequest): AsyncIterable<any>; /** * 抽象方法:从流式响应构建完整响应 */ protected abstract buildCompleteResponseFromStream(chunks: any[], originalRequest: BaseRequest): Promise<BaseResponse>; /** * 抽象方法:判断是否为有效内容chunk */ protected abstract isValidContentChunk(chunk: any): boolean; /** * 抽象方法:判断是否为流结束chunk */ protected abstract isStreamEndChunk(chunk: any): boolean; /** * 抽象方法:提取finish reason */ protected abstract extractFinishReason(chunk: any): string | undefined; /** * 重置指标 */ protected resetMetrics(): void; /** * 验证单个chunk */ protected validateChunk(chunk: any, requestId: string): void; /** * 验证整体流式输出 */ protected validateStreamOutput(requestId: string): void; /** * 记录流式错误 */ protected logStreamingError(error: unknown, requestId: string): void; /** * 获取当前指标 */ getMetrics(): Readonly<StreamingMetrics>; } /** * OpenAI专用流式处理器 */ export declare class OpenAIStreamingHandler extends BaseStreamingHandler { private openaiClient; private transformer; constructor(options: StreamingHandlerOptions, openaiClient: any, transformer: any); protected processStream(request: BaseRequest): AsyncIterable<any>; protected buildCompleteResponseFromStream(chunks: any[], originalRequest: BaseRequest): Promise<BaseResponse>; protected isValidContentChunk(chunk: any): boolean; protected isStreamEndChunk(chunk: any): boolean; protected extractFinishReason(chunk: any): string | undefined; } //# sourceMappingURL=streaming-handler.d.ts.map