route-claudecode
Version:
Advanced routing and transformation system for Claude Code outputs to multiple AI providers
88 lines • 2.43 kB
TypeScript
/**
* CodeWhisperer Client 统一接口
* 定义缓冲式和实时流式实现的公共接口
* 项目所有者: Jason Zhang
*/
import { AnthropicRequest } from './types';
export interface ICodeWhispererClient {
/**
* 处理流式请求
* @param anthropicReq Anthropic格式请求
* @param writeSSE SSE事件写入函数
* @param onError 错误处理函数
*/
handleStreamRequest(anthropicReq: AnthropicRequest, writeSSE: (event: string, data: any) => void, onError: (message: string, error: Error) => void): Promise<void>;
/**
* 处理非流式请求
* @param anthropicReq Anthropic格式请求
*/
handleNonStreamRequest(anthropicReq: AnthropicRequest): Promise<any>;
/**
* 获取客户端类型
*/
getClientType(): 'buffered' | 'realtime';
/**
* 健康检查
*/
healthCheck(): Promise<{
healthy: boolean;
type: string;
message?: string;
}>;
}
export interface PerformanceReport {
requestId: string;
durationMs: number;
memoryDelta: {
rss: number;
heapUsed: number;
};
eventsCount: number;
avgLatency: number;
maxLatency: number;
minLatency: number;
}
export interface SSEEvent {
event: string;
data: any;
timestamp?: number;
}
export type { AnthropicRequest, CodeWhispererRequest, CodeWhispererConfig } from './types';
export interface TestResult {
success: boolean;
duration: number;
events: SSEEvent[];
performance?: PerformanceReport | null;
implementation: 'buffered' | 'realtime';
error?: string;
}
export interface ComparisonResult {
testCase: TestCase;
bufferedResult: TestResult;
realtimeResult: TestResult;
comparison: {
latencyImprovement: number;
memoryReduction: number;
eventsMatch: boolean;
performanceScore: number;
};
}
export interface ComparisonReport {
totalTests: number;
results: ComparisonResult[];
summary: {
avgLatencyImprovement: number;
avgMemoryReduction: number;
realtimeSuccessRate: number;
bufferedSuccessRate: number;
recommendation: 'use_realtime' | 'use_buffered' | 'mixed';
};
}
export interface TestCase {
id: string;
name: string;
request: AnthropicRequest;
expectedEvents?: string[];
timeoutMs?: number;
}
//# sourceMappingURL=client-interface.d.ts.map