import { type AgentDebugTraceHandler, type AuthConfig } from './client.js'; /** REST 风格 A2A Capability Card */ export interface RestCapabilityCard { capability_id: string; capability_name?: string; description?: string; input_schema?: Record; output_schema?: Record; [key: string]: unknown; } /** REST 风格 A2A 能力执行结果 */ export interface RestCapabilityResult { capability_id: string; capability_name?: string; status: string; result?: { summary?: string; strengths?: string[]; weaknesses?: string[]; risks?: string[]; analysis_findings?: string[]; final_text?: string; [key: string]: unknown; }; task_id?: string; error?: string; [key: string]: unknown; } /** REST 风格 A2A SSE 事件 */ export interface RestSSEEvent { /** 事件类型:status / stage / tool_call / tool_result / message_chunk / result / error */ event: string; /** 事件数据(已解析的 JSON 对象) */ data: Record; } /** REST 风格 A2A 异步任务状态 */ export interface RestTaskStatus { task_id: string; capability_id?: string; capability_name?: string; status: string; caller_agent_id?: string; created_at?: string; updated_at?: string; error_code?: string | null; result?: RestCapabilityResult['result']; [key: string]: unknown; } export interface RestA2AClientOptions { /** 请求超时(毫秒),默认 300000(5分钟) */ timeout?: number; /** SSE 连接超时(毫秒),默认 30000(30秒) */ connectTimeout?: number; /** SSE 逐 chunk 读取超时(毫秒),默认 60000 */ chunkTimeout?: number; /** 自定义 fetch 实现(默认使用 globalThis.fetch) */ fetch?: typeof fetch; /** 自定义请求头;值支持 ${vars.x} / ${env.x} 模板 */ headers?: Record; /** 认证配置;value 支持 ${vars.x} / ${env.x} 模板 */ auth?: AuthConfig; /** * 运行时变量(如 { userId, userMail })。 * 用于解析 headers / auth 中的 ${vars.x} 占位符。 * 也可在每次调用(invoke / invokeStreaming / submit / getTask / discoverCapability)时按需覆盖。 */ vars?: Record; /** 调试 trace 回调;未传时保持原始执行流程 */ onDebugTrace?: AgentDebugTraceHandler; /** 代理 URL(如 http://127.0.0.1:7890),传入后通过 undici ProxyAgent 走代理,不传则直连 */ proxy?: string; } /** * REST 风格 A2A 协议客户端 * * 用法: * const client = new RestA2AClient({ auth: { type: 'custom', name: 'X-Service-Token', value: 'xxx' } }); * const card = await client.discoverCapability('http://localhost:8000', 'competitive_review'); * const result = await client.invoke('http://localhost:8000', 'competitive_review', { ... }); */ export declare class RestA2AClient { private timeout; private connectTimeout; private chunkTimeout; private fetchFn; /** 鉴权配置(构造时保存,发送时结合运行时变量解析) */ private authConfig?; /** 自定义请求头模板(值可含 ${vars.x} / ${env.x} 占位符,发送时解析) */ private headerTemplates; /** 默认运行时变量 */ private contextVars?; private onDebugTrace?; private proxyUrl?; private proxyDispatcher?; constructor(options?: RestA2AClientOptions); /** * 更新运行时变量(如 userId / userMail)。 * 后续请求将使用更新后的值解析 ${vars.x} 占位符。 */ setContextVars(vars: Record): void; /** 合并运行时变量:构造时默认 vars + 本次调用传入的 vars(后者优先) */ private mergeVars; /** 解析本次请求生效的请求头(合并 auth + 自定义头,并应用 ${vars.x}/${env.x} 模板) */ private resolveHeaders; /** 对请求体参数进行变量插值(${vars.x}/${env.x}/${x}),深拷贝不改原对象 */ private resolveBody; /** 获取 Capability Card:GET /capabilities/{capabilityId},失败时尝试 :stream 探测 */ discoverCapability(baseUrl: string, capabilityId: string, streamAction?: string, vars?: Record): Promise; /** 同步调用:POST /api/v1/a2a/capabilities/{capabilityId}:{action} */ invoke(baseUrl: string, capabilityId: string, input: Record, action?: string, vars?: Record): Promise; /** * 流式调用:POST /api/v1/a2a/capabilities/{capabilityId}:stream (SSE) * * SSE 事件格式(标准 text/event-stream): * event: status data: {"status":"running","trace_id":"..."} * event: stage data: {"stage":"loading_skill",...} * event: tool_call data: {"tool_name":"...","args":{...}} * event: tool_result data: {"tool_name":"..."} * event: message_chunk data: {"content":"..."} * event: result data: {"capability_id":"...","status":"completed","result":{...}} * event: error data: {"error":"..."} * * @returns 最后一个 result 事件的数据,或 null(流中断且无 result) */ invokeStreaming(baseUrl: string, capabilityId: string, input: Record, onEvent?: (event: RestSSEEvent) => void, abortSignal?: AbortSignal, action?: string, vars?: Record): Promise; /** 异步提交:POST /api/v1/a2a/capabilities/{capabilityId}:submit */ submit(baseUrl: string, capabilityId: string, input: Record, vars?: Record): Promise<{ task_id: string; [key: string]: unknown; }>; /** 查询任务状态:GET /api/v1/a2a/tasks/{taskId} */ getTask(baseUrl: string, taskId: string, vars?: Record): Promise; /** 构建 Capability URL */ private buildCapabilityUrl; /** 带 chunkTimeout 的 reader.read() */ private readChunkWithTimeout; /** 带超时的 fetch(自动应用代理 dispatcher,无代理时直连) */ private fetchWithTimeout; private emitDebugTrace; private headersToObject; private normalizeException; } //# sourceMappingURL=rest-client.d.ts.map