/** * opencode.ai 适配工具 * * opencode 官方要求(其 API 才能正常工作): * 1. 发送典型的编程 Agent 流量 * 2. 使用自身专属的 user agent 标识(例如 my-coding-agent/1.0), * 而不是通用的 SDK 或 HTTP 库名称(如 node-fetch、openai-node、axios 等) * 3. 为每段对话在 x-opencode-session 请求头中发送稳定的会话 ID, * 以便其优化路由和提示词缓存 * * 实现策略: * - user agent 标识固定写死为专属标识 `models-manager-agent/1.0`(不使用随机字符) * - 基于稳定的会话种子(客户端会话头 / requestId)生成稳定的会话 ID, * 相同种子永远映射到同一会话,避免每请求随机导致缓存失效 */ /** 是否命中 opencode.ai 域名(含子域) */ export declare function isOpencodeUrl(url: string): boolean; /** * 获取发送到 opencode.ai 的 User-Agent。 * 固定标识,所有请求保持一致。 */ export declare function getOpencodeUserAgent(): string; /** 默认 UA(非 opencode 域使用,避免泄漏自身身份到其它上游) */ export declare function getDefaultUserAgent(): string; /** * 从会话种子解析出稳定的 opencode 会话 ID。 * * @param seed 稳定的会话种子(例如客户端传入的会话头、conversation id)。 * 传 null/undefined 时返回每次随机的临时会话(仅用于无法识别会话的场景)。 * @returns 稳定的会话 UUID */ export declare function resolveOpencodeSessionId(seed?: string | null): string; /** * 从入站请求头中提取"会话种子"。 * * 优先级:x-opencode-session > x-conversation-id > x-session-id > x-thread-id > client-request-id/x-request-id。 * 前 4 项是显式会话标识;后 2 项是请求级标识 —— 当客户端每个请求都发新的 * client-request-id 时,只能保证"重试/同请求内"稳定,无法保证跨请求稳定, * 此时上游仍会收到合法的会话 ID(格式满足要求,但命中缓存的收益有限)。 */ export declare function extractConversationSeed(headers: Record): string | undefined; /** * 构建发送到 opencode.ai 上游所需的额外请求头。 * * @param seed 会话种子(可选,传稳定种子可获得稳定会话 ID) */ export declare function buildOpencodeHeaders(seed?: string | null): Record; //# sourceMappingURL=opencode-adapter.d.ts.map