/** * BaseProxy — 代理转换基类 * * 定义完整的代理/转换生命周期,参考 cc-switch 的转换模式: * * convert() * ├── 1. validate() — 输入校验 * ├── 2. optimizeInput() — 设置默认值、清理无效字段 * ├── 3. transformRequest() — 请求格式转换(如 Anthropic → Chat/Responses) * ├── 4. buildEndpoint() — 构建上游 URL * ├── 5. proxy() — HTTP 转发(SSE 流或 JSON),内置自动重试 * ├── 6. transformResponse() — 响应格式转换(反向) * └── 7. optimizeOutput() — 最终输出处理 * * 子类只需覆写需要定制的步骤,未覆写的步骤走默认直通逻辑。 * * @template TInput 输入类型 * @template TOutput 输出类型 * @template TBody 请求体类型(转换后发给上游的格式) */ export default abstract class BaseProxy> { /** * 1. 输入校验 — 检查必填字段,抛出明确错误 * 默认直通(不校验) */ protected validate(input: TInput): void | never; /** * 2. 输入优化 — 设置默认值、清理字段、归一化结构 * 默认直通 */ protected optimizeInput(input: TInput): TInput; /** * 3. 请求格式转换 — 将输入格式转换为目标 API 格式 * * 参考 cc-switch: * - Anthropic → OpenAI Chat:system 提取、tool_use 提升、thinking 处理 * - Anthropic → Responses:system→instructions、tool_use→function_call * - 纯代理模式:直接返回 body(不转换) * * 默认直通(返回 input 中的 body 字段) */ protected transformRequest(input: TInput): TBody; /** * 4. 构建上游端点 URL * 默认使用 config.baseUrl + 路径 */ protected buildEndpoint(input: TInput): string; /** * 5. HTTP 代理转发 — 发送请求到上游并返回 Response * 使用 fetchWithRetry 实现自动重试(50x / 超时) */ protected proxy(input: TInput, body: TBody, endpoint: string): Promise; /** * 6. 响应格式转换 — 将上游响应转换为目标格式 * * 参考 cc-switch: * - OpenAI Chat → Anthropic:choices→content、tool_calls→tool_use * - OpenAI Responses → Anthropic:output→content、function_call→tool_use * - 纯代理模式:直传 * * 默认直传 */ protected transformResponse(upstreamResponse: any, originalInput: TInput): any; /** * 7. 输出优化 — 最终处理(日志、统计等) * 默认直传 */ protected optimizeOutput(response: any, originalInput: TInput): TOutput; /** * 执行完整的代理转换流程 * * 子类通常不需要覆写此方法,而是覆写上面的各个步骤。 */ convert(input: TInput): Promise; protected log(level: 'debug' | 'info' | 'warn' | 'error', message: string, ...args: any[]): void; } //# sourceMappingURL=BaseProxy.d.ts.map