route-claudecode
Version:
Advanced routing and transformation system for Claude Code outputs to multiple AI providers
83 lines • 2.7 kB
TypeScript
/**
* Pipeline Coordinator - Clean Architecture
* 统一流水线协调器,确保清晰的层次分离
* Project owner: Jason Zhang
*
* Architecture Principles:
* Input → Preprocessing → Transformer → Provider → Third-party API
*
* 职责:
* 1. 协调各层之间的数据流
* 2. 确保单向依赖
* 3. 集中化转换和修复逻辑
*/
import { BaseRequest, BaseResponse } from '../types';
export interface PipelineContext {
requestId: string;
provider: string;
model: string;
stage: 'input' | 'transform' | 'provider' | 'response';
timestamp: number;
}
/**
* 流水线协调器
* 管理Input → Preprocessing → Transformer → Provider的数据流
*/
export declare class PipelineCoordinator {
private geminiTransformer;
private patchPreprocessor;
constructor(port?: number);
/**
* 输入阶段处理 - Input Layer
* 统一的请求预处理入口
*/
processInput(request: BaseRequest, provider: string, model: string): Promise<BaseRequest>;
/**
* 转换阶段处理 - Transformer Layer
* 格式转换,不包含服务特定逻辑
*/
processTransform(request: BaseRequest, targetFormat: 'gemini' | 'openai' | 'anthropic'): Promise<{
transformedData: any;
metadata: any;
}>;
/**
* Provider准备阶段 - Provider Layer Input
* 将转换后的数据打包成Provider可以直接使用的格式
*/
prepareForProvider(transformedData: any, metadata: any, originalModel: string): Promise<BaseRequest>;
/**
* 响应处理阶段 - Response Layer
* 处理Provider返回的原始响应,转换回统一格式
*/
processResponse(providerResponse: BaseResponse, originalFormat: 'gemini' | 'openai' | 'anthropic', originalModel: string): Promise<BaseResponse>;
/**
* 生成唯一请求ID
*/
private generateRequestId;
/**
* 获取性能统计
*/
getStats(): {
patchPreprocessorStats: {
totalProcessed: number;
totalDuration: number;
byStage: {
input: {
count: number;
duration: number;
};
response: {
count: number;
duration: number;
};
streaming: {
count: number;
duration: number;
};
};
};
};
}
export declare function getPipelineCoordinator(port?: number): PipelineCoordinator;
export declare function createPipelineCoordinator(port?: number): PipelineCoordinator;
//# sourceMappingURL=pipeline-coordinator.d.ts.map