route-claudecode
Version:
Advanced routing and transformation system for Claude Code outputs to multiple AI providers
76 lines • 2.42 kB
TypeScript
/**
* Streaming Response Transformer
* Handles real-time conversion of streaming responses between formats
*/
import { MessageTransformer } from './types';
export interface StreamTransformOptions {
sourceFormat: 'openai' | 'anthropic';
targetFormat: 'openai' | 'anthropic';
model?: string;
requestId?: string;
port?: number;
}
export declare class StreamingTransformer {
private sourceTransformer;
private targetTransformer;
private options;
private messageId;
private model;
private requestId;
private toolCallMap;
private contentBlockIndex;
private hasStarted;
private isCompleted;
private pipelineDebugger;
private needsReprocessing;
private reprocessBuffer;
private toolCallDetectionAttempts;
private maxDetectionAttempts;
constructor(sourceTransformer: MessageTransformer, targetTransformer: MessageTransformer, options: StreamTransformOptions);
/**
* Transform streaming response from OpenAI to Anthropic format
*/
transformOpenAIToAnthropic(stream: ReadableStream): AsyncIterable<string>;
/**
* Transform streaming response from Anthropic to OpenAI format
*/
transformAnthropicToOpenAI(stream: ReadableStream): AsyncIterable<string>;
/**
* Create Anthropic SSE event - with defensive programming
*/
private createAnthropicEvent;
/**
* Create OpenAI streaming chunk
*/
private createOpenAIChunk;
/**
* Check if raw data contains tool call signatures
* Made more strict to avoid false positives from normal text
*/
private isLikelyToolCallError;
/**
* 🔄 检查是否需要二次处理 - 错误判断工具调用的情况
*/
private checkForReprocessing;
/**
* 🔄 执行二次工具调用处理
*/
private reprocessForToolCalls;
/**
* 检测buffer内容中的工具调用模式
*/
private detectToolCallPatterns;
/**
* 从buffer中提取工具调用
*/
private extractToolCallsFromBuffer;
/**
* Save raw stream data for analysis
*/
private saveRawStreamDataForAnalysis;
}
/**
* Create streaming transformer
*/
export declare function createStreamingTransformer(sourceTransformer: MessageTransformer, targetTransformer: MessageTransformer, options: StreamTransformOptions): StreamingTransformer;
//# sourceMappingURL=streaming.d.ts.map