@cicctencent/agent-core 0.1.56 → 0.1.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/cjs/a2a/client.d.ts +36 -0
  2. package/dist/cjs/a2a/client.d.ts.map +1 -1
  3. package/dist/cjs/a2a/client.js +139 -6
  4. package/dist/cjs/a2a/client.js.map +1 -1
  5. package/dist/cjs/a2a/index.d.ts +1 -1
  6. package/dist/cjs/a2a/index.d.ts.map +1 -1
  7. package/dist/cjs/a2a/rest-client.d.ts +7 -1
  8. package/dist/cjs/a2a/rest-client.d.ts.map +1 -1
  9. package/dist/cjs/a2a/rest-client.js +115 -12
  10. package/dist/cjs/a2a/rest-client.js.map +1 -1
  11. package/dist/cjs/index.d.ts +1 -1
  12. package/dist/cjs/index.d.ts.map +1 -1
  13. package/dist/cjs/index.js.map +1 -1
  14. package/dist/cjs/mcp/base-client.d.ts +15 -1
  15. package/dist/cjs/mcp/base-client.d.ts.map +1 -1
  16. package/dist/cjs/mcp/base-client.js +53 -2
  17. package/dist/cjs/mcp/base-client.js.map +1 -1
  18. package/dist/cjs/mcp/http-client.d.ts +2 -0
  19. package/dist/cjs/mcp/http-client.d.ts.map +1 -1
  20. package/dist/cjs/mcp/http-client.js +62 -4
  21. package/dist/cjs/mcp/http-client.js.map +1 -1
  22. package/dist/cjs/mcp/stdio-client.d.ts.map +1 -1
  23. package/dist/cjs/mcp/stdio-client.js +39 -1
  24. package/dist/cjs/mcp/stdio-client.js.map +1 -1
  25. package/dist/cjs/mcp/types.d.ts +3 -0
  26. package/dist/cjs/mcp/types.d.ts.map +1 -1
  27. package/dist/esm/a2a/client.d.ts +36 -0
  28. package/dist/esm/a2a/client.d.ts.map +1 -1
  29. package/dist/esm/a2a/client.js +139 -6
  30. package/dist/esm/a2a/client.js.map +1 -1
  31. package/dist/esm/a2a/index.d.ts +1 -1
  32. package/dist/esm/a2a/index.d.ts.map +1 -1
  33. package/dist/esm/a2a/rest-client.d.ts +7 -1
  34. package/dist/esm/a2a/rest-client.d.ts.map +1 -1
  35. package/dist/esm/a2a/rest-client.js +115 -12
  36. package/dist/esm/a2a/rest-client.js.map +1 -1
  37. package/dist/esm/index.d.ts +1 -1
  38. package/dist/esm/index.d.ts.map +1 -1
  39. package/dist/esm/index.js.map +1 -1
  40. package/dist/esm/mcp/base-client.d.ts +15 -1
  41. package/dist/esm/mcp/base-client.d.ts.map +1 -1
  42. package/dist/esm/mcp/base-client.js +53 -2
  43. package/dist/esm/mcp/base-client.js.map +1 -1
  44. package/dist/esm/mcp/http-client.d.ts +2 -0
  45. package/dist/esm/mcp/http-client.d.ts.map +1 -1
  46. package/dist/esm/mcp/http-client.js +62 -4
  47. package/dist/esm/mcp/http-client.js.map +1 -1
  48. package/dist/esm/mcp/stdio-client.d.ts.map +1 -1
  49. package/dist/esm/mcp/stdio-client.js +39 -1
  50. package/dist/esm/mcp/stdio-client.js.map +1 -1
  51. package/dist/esm/mcp/types.d.ts +3 -0
  52. package/dist/esm/mcp/types.d.ts.map +1 -1
  53. package/package.json +1 -1
@@ -14,6 +14,36 @@ export interface AuthConfig {
14
14
  }
15
15
  /** 将 AuthConfig 转为 HTTP 请求头 */
16
16
  export declare function buildAuthHeaders(auth?: AuthConfig | null): Record<string, string>;
17
+ export interface AgentDebugTrace {
18
+ step: string;
19
+ title: string;
20
+ duration?: string;
21
+ request?: {
22
+ url: string;
23
+ method: string;
24
+ headers: Record<string, string>;
25
+ body?: unknown;
26
+ };
27
+ response?: {
28
+ status: number;
29
+ statusText: string;
30
+ ok: boolean;
31
+ headers: Record<string, string>;
32
+ contentType: string;
33
+ rawBody?: string;
34
+ sseParsed?: boolean;
35
+ };
36
+ payload?: unknown;
37
+ data?: unknown;
38
+ error?: string;
39
+ exception?: {
40
+ name: string;
41
+ message: string;
42
+ code?: string;
43
+ cause?: unknown;
44
+ };
45
+ }
46
+ export type AgentDebugTraceHandler = (trace: AgentDebugTrace) => void;
17
47
  /** A2A 客户端配置 */
18
48
  export interface A2AClientOptions {
19
49
  /** 请求超时(毫秒),默认 300000(5分钟) */
@@ -28,6 +58,8 @@ export interface A2AClientOptions {
28
58
  headers?: Record<string, string>;
29
59
  /** 认证配置(自动转为 headers,与 headers 合并) */
30
60
  auth?: AuthConfig;
61
+ /** 调试 trace 回调;未传时保持原始执行流程 */
62
+ onDebugTrace?: AgentDebugTraceHandler;
31
63
  }
32
64
  /**
33
65
  * 轻量 A2A 协议客户端
@@ -43,6 +75,7 @@ export declare class A2AClient {
43
75
  private chunkTimeout;
44
76
  private fetchFn;
45
77
  private headers;
78
+ private onDebugTrace?;
46
79
  constructor(options?: A2AClientOptions);
47
80
  /**
48
81
  * 通过 base URL 发现远程 Agent
@@ -76,5 +109,8 @@ export declare class A2AClient {
76
109
  private readChunkWithTimeout;
77
110
  /** 带超时的 fetch */
78
111
  private fetchWithTimeout;
112
+ private emitDebugTrace;
113
+ private headersToObject;
114
+ private normalizeException;
79
115
  }
80
116
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/a2a/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,YAAY,EAGZ,iBAAiB,EACjB,OAAO,EACP,YAAY,EAGb,MAAM,YAAY,CAAC;AASpB;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC/C,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,+BAA+B;AAC/B,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUjF;AAED,gBAAgB;AAChB,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,sCAAsC;IACtC,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,OAAO,CAAyB;gBAE5B,OAAO,GAAE,gBAAqB;IAU1C;;;OAGG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAe3D,wCAAwC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ7E;;;;;;;;;;;OAWG;IACG,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,iBAAiB,EACzB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,EACvC,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA2F/B,wBAAwB;IAClB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUzF,yBAAyB;IACnB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWpE,wBAAwB;IACxB,OAAO,CAAC,mBAAmB;IAM3B,qBAAqB;YACP,WAAW;IAyBzB,uDAAuD;YACzC,oBAAoB;IAgBlC,iBAAiB;YACH,gBAAgB;CAS/B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/a2a/client.ts"],"names":[],"mappings":"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"}
@@ -38,12 +38,14 @@ class A2AClient {
38
38
  chunkTimeout;
39
39
  fetchFn;
40
40
  headers;
41
+ onDebugTrace;
41
42
  constructor(options = {}) {
42
43
  this.timeout = options.timeout ?? 300_000;
43
44
  this.connectTimeout = options.connectTimeout ?? 30_000;
44
45
  this.chunkTimeout = options.chunkTimeout ?? 60_000;
45
46
  this.fetchFn = options.fetch ?? globalThis.fetch.bind(globalThis);
46
47
  this.headers = { ...buildAuthHeaders(options.auth), ...(options.headers ?? {}) };
48
+ this.onDebugTrace = options.onDebugTrace;
47
49
  }
48
50
  // ---- Agent 发现 ----
49
51
  /**
@@ -90,6 +92,7 @@ class A2AClient {
90
92
  method: 'tasks/sendSubscribe',
91
93
  params: params,
92
94
  };
95
+ const requestHeaders = { 'Content-Type': 'application/json', ...this.headers };
93
96
  // 连接阶段:使用独立 AbortController + connectTimeout + 外部 signal 联动
94
97
  const connectAbort = new AbortController();
95
98
  const connectTimer = setTimeout(() => connectAbort.abort(), this.connectTimeout);
@@ -102,17 +105,29 @@ class A2AClient {
102
105
  }
103
106
  }
104
107
  let res;
108
+ const connectStart = Date.now();
105
109
  try {
106
110
  res = await this.fetchFn(agentUrl, {
107
111
  method: 'POST',
108
- headers: { 'Content-Type': 'application/json', ...this.headers },
112
+ headers: requestHeaders,
109
113
  body: JSON.stringify(request),
110
114
  signal: connectAbort.signal,
111
115
  });
112
116
  }
113
117
  catch (fetchErr) {
118
+ const duration = Date.now() - connectStart;
114
119
  if (abortSignal?.aborted)
115
120
  return null;
121
+ this.emitDebugTrace({
122
+ step: 'tasks/sendSubscribe',
123
+ title: fetchErr?.name === 'AbortError' ? 'A2A 流式连接超时' : 'A2A 流式连接异常',
124
+ duration: `${duration}ms`,
125
+ request: { url: agentUrl, method: 'POST', headers: requestHeaders, body: request },
126
+ error: fetchErr?.name === 'AbortError'
127
+ ? `A2A streaming connect timeout (${this.connectTimeout}ms) → ${agentUrl}`
128
+ : `A2A streaming connect error → ${agentUrl}: ${fetchErr?.message || fetchErr}`,
129
+ exception: this.normalizeException(fetchErr),
130
+ });
116
131
  if (fetchErr?.name === 'AbortError') {
117
132
  throw new Error(`A2A streaming connect timeout (${this.connectTimeout}ms) → ${agentUrl}`);
118
133
  }
@@ -121,20 +136,53 @@ class A2AClient {
121
136
  finally {
122
137
  clearTimeout(connectTimer);
123
138
  }
139
+ const connectDuration = Date.now() - connectStart;
140
+ const contentType = res.headers.get('content-type') || '';
124
141
  if (!res.ok) {
125
142
  let bodyText = '';
126
143
  try {
127
144
  bodyText = await res.text();
128
145
  }
129
146
  catch { /* ignore */ }
147
+ this.emitDebugTrace({
148
+ step: 'tasks/sendSubscribe',
149
+ title: 'A2A 流式连接失败',
150
+ duration: `${connectDuration}ms`,
151
+ request: { url: agentUrl, method: 'POST', headers: requestHeaders, body: request },
152
+ response: {
153
+ status: res.status,
154
+ statusText: res.statusText,
155
+ ok: res.ok,
156
+ headers: this.headersToObject(res.headers),
157
+ contentType,
158
+ rawBody: bodyText,
159
+ },
160
+ error: `A2A streaming failed: HTTP ${res.status} from ${agentUrl}`,
161
+ });
130
162
  console.error(`[A2A-Client] HTTP ${res.status} from ${agentUrl}: ${bodyText.slice(0, 200)}`);
131
163
  throw new Error(`A2A streaming failed: HTTP ${res.status} from ${agentUrl}`);
132
164
  }
165
+ this.emitDebugTrace({
166
+ step: 'tasks/sendSubscribe',
167
+ title: 'A2A 流式连接成功',
168
+ duration: `${connectDuration}ms`,
169
+ request: { url: agentUrl, method: 'POST', headers: requestHeaders, body: request },
170
+ response: {
171
+ status: res.status,
172
+ statusText: res.statusText,
173
+ ok: res.ok,
174
+ headers: this.headersToObject(res.headers),
175
+ contentType,
176
+ sseParsed: contentType.includes('text/event-stream'),
177
+ },
178
+ });
133
179
  const body = res.body;
134
180
  if (!body)
135
181
  throw new Error('A2A streaming: empty response body');
136
182
  // 只追踪最后一个 status-update 事件(用于提取最终结果),不累积所有事件
137
183
  let lastStatusUpdate = null;
184
+ let eventCount = 0;
185
+ const eventSamples = [];
138
186
  const reader = body.getReader();
139
187
  const decoder = new TextDecoder();
140
188
  let buffer = '';
@@ -158,6 +206,9 @@ class A2AClient {
158
206
  continue;
159
207
  try {
160
208
  const event = JSON.parse(jsonStr);
209
+ eventCount++;
210
+ if (eventSamples.length < 5)
211
+ eventSamples.push(event);
161
212
  onEvent?.(event);
162
213
  if (event.kind === 'status-update')
163
214
  lastStatusUpdate = event;
@@ -168,6 +219,13 @@ class A2AClient {
168
219
  }
169
220
  }
170
221
  catch (streamErr) {
222
+ this.emitDebugTrace({
223
+ step: 'tasks/sendSubscribe.stream',
224
+ title: 'A2A SSE 读取异常',
225
+ data: { eventCount, eventSamples, hasLastStatusUpdate: !!lastStatusUpdate },
226
+ error: streamErr?.message || String(streamErr),
227
+ exception: this.normalizeException(streamErr),
228
+ });
171
229
  // 流异常时保留已接收事件(优雅降级)
172
230
  if (abortSignal?.aborted)
173
231
  return lastStatusUpdate;
@@ -183,6 +241,11 @@ class A2AClient {
183
241
  }
184
242
  catch { /* ignore */ }
185
243
  }
244
+ this.emitDebugTrace({
245
+ step: 'tasks/sendSubscribe.stream',
246
+ title: 'A2A SSE 读取完成',
247
+ data: { eventCount, eventSamples, hasLastStatusUpdate: !!lastStatusUpdate },
248
+ });
186
249
  return lastStatusUpdate;
187
250
  }
188
251
  /** 查询任务状态(tasks/get) */
@@ -221,15 +284,57 @@ class A2AClient {
221
284
  method,
222
285
  params,
223
286
  };
224
- const res = await this.fetchWithTimeout(url, {
225
- method: 'POST',
226
- headers: { 'Content-Type': 'application/json', ...this.headers },
227
- body: JSON.stringify(request),
287
+ const requestHeaders = { 'Content-Type': 'application/json', ...this.headers };
288
+ const start = Date.now();
289
+ let res;
290
+ try {
291
+ res = await this.fetchWithTimeout(url, {
292
+ method: 'POST',
293
+ headers: requestHeaders,
294
+ body: JSON.stringify(request),
295
+ });
296
+ }
297
+ catch (err) {
298
+ this.emitDebugTrace({
299
+ step: method,
300
+ title: `A2A ${method} 请求异常`,
301
+ duration: `${Date.now() - start}ms`,
302
+ request: { url, method: 'POST', headers: requestHeaders, body: request },
303
+ error: err?.message || String(err),
304
+ exception: this.normalizeException(err),
305
+ });
306
+ throw err;
307
+ }
308
+ const duration = Date.now() - start;
309
+ const contentType = res.headers.get('content-type') || '';
310
+ const rawBody = await res.text();
311
+ let payload;
312
+ try {
313
+ payload = rawBody ? JSON.parse(rawBody) : {};
314
+ }
315
+ catch {
316
+ payload = { jsonrpc: '2.0', id: request.id, error: { code: -32700, message: rawBody || 'Invalid JSON response' } };
317
+ }
318
+ this.emitDebugTrace({
319
+ step: method,
320
+ title: res.ok ? `A2A ${method} 请求完成` : `A2A ${method} 请求失败`,
321
+ duration: `${duration}ms`,
322
+ request: { url, method: 'POST', headers: requestHeaders, body: request },
323
+ response: {
324
+ status: res.status,
325
+ statusText: res.statusText,
326
+ ok: res.ok,
327
+ headers: this.headersToObject(res.headers),
328
+ contentType,
329
+ rawBody,
330
+ },
331
+ payload,
332
+ error: res.ok ? undefined : `A2A JSON-RPC ${method} failed: HTTP ${res.status}`,
228
333
  });
229
334
  if (!res.ok) {
230
335
  throw new Error(`A2A JSON-RPC ${method} failed: HTTP ${res.status}`);
231
336
  }
232
- return (await res.json());
337
+ return payload;
233
338
  }
234
339
  /** 带 chunkTimeout 的 reader.read()(每次读取单独计时,收到数据即重置) */
235
340
  async readChunkWithTimeout(reader) {
@@ -257,6 +362,34 @@ class A2AClient {
257
362
  clearTimeout(timer);
258
363
  }
259
364
  }
365
+ emitDebugTrace(trace) {
366
+ if (!this.onDebugTrace)
367
+ return;
368
+ try {
369
+ this.onDebugTrace(trace);
370
+ }
371
+ catch { /* ignore debug hook errors */ }
372
+ }
373
+ headersToObject(headers) {
374
+ const result = {};
375
+ headers.forEach((value, key) => { result[key] = value; });
376
+ return result;
377
+ }
378
+ normalizeException(err) {
379
+ return {
380
+ name: err?.name || '',
381
+ message: err?.message || String(err),
382
+ code: err?.code || err?.cause?.code || '',
383
+ cause: err?.cause ? {
384
+ code: err.cause.code,
385
+ errno: err.cause.errno,
386
+ syscall: err.cause.syscall,
387
+ address: err.cause.address,
388
+ port: err.cause.port,
389
+ message: err.cause.message,
390
+ } : undefined,
391
+ };
392
+ }
260
393
  }
261
394
  exports.A2AClient = A2AClient;
262
395
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/a2a/client.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,2BAA2B;AAC3B,8BAA8B;AAC9B,+DAA+D;;;AAmC/D,4CAUC;AAhCD,2BAA2B;AAC3B,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB,SAAS,SAAS;IAChB,OAAO,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAC/C,CAAC;AAgBD,+BAA+B;AAC/B,SAAgB,gBAAgB,CAAC,IAAwB;IACvD,IAAI,CAAC,IAAI,EAAE,KAAK;QAAE,OAAO,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAClG,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC;QAC3D,KAAK,OAAO,CAAC,CAAE,OAAO,EAAE,eAAe,EAAE,SAAS,GAAG,EAAE,EAAE,CAAC;QAC1D,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;QAC1D,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,CAAC;QAC9D,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAkBD;;;;;;;GAOG;AACH,MAAa,SAAS;IACZ,OAAO,CAAS;IAChB,cAAc,CAAS;IACvB,YAAY,CAAS;IACrB,OAAO,CAAe;IACtB,OAAO,CAAyB;IAExC,YAAY,UAA4B,EAAE;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC;QACvD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;IACnF,CAAC;IAED,qBAAqB;IAErB;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAiB,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,uBAAuB,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB;IAEjB,wCAAwC;IACxC,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,MAAyB;QACxD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,MAA4C,CAAC,CAAC;QAC9G,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,QAAQ,CAAC,MAAiB,CAAC;IACpC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,iBAAiB,CACrB,QAAgB,EAChB,MAAyB,EACzB,OAAuC,EACvC,WAAyB;QAEzB,MAAM,OAAO,GAAsB;YACjC,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,SAAS,EAAE;YACf,MAAM,EAAE,qBAAqB;YAC7B,MAAM,EAAE,MAA4C;SACrD,CAAC;QAEF,4DAA4D;QAC5D,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACjF,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;iBAC7C,CAAC;gBAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAAC,CAAC;QAC7F,CAAC;QAED,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACjC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;gBAChE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAC7B,MAAM,EAAE,YAAY,CAAC,MAAM;aAC5B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,QAAa,EAAE,CAAC;YACvB,IAAI,WAAW,EAAE,OAAO;gBAAE,OAAO,IAAI,CAAC;YACtC,IAAI,QAAQ,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,cAAc,SAAS,QAAQ,EAAE,CAAC,CAAC;YAC5F,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,KAAK,QAAQ,EAAE,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC;QACjG,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,YAAY,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC;gBAAC,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAC3D,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,SAAS,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7F,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,CAAC,MAAM,SAAS,QAAQ,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAEjE,6CAA6C;QAC7C,IAAI,gBAAgB,GAAwB,IAAI,CAAC;QAEjD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,IAAI,WAAW,EAAE,OAAO;oBAAE,MAAM;gBAEhC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBAChE,IAAI,IAAI;oBAAE,MAAM;gBAEhB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;wBAAE,SAAS;oBAClD,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBAChC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wBACxC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ;4BAAE,SAAS;wBAC/C,IAAI,CAAC;4BACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;4BAClD,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;4BACjB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe;gCAAE,gBAAgB,GAAG,KAAK,CAAC;wBAC/D,CAAC;wBAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,SAAc,EAAE,CAAC;YACxB,oBAAoB;YACpB,IAAI,WAAW,EAAE,OAAO;gBAAE,OAAO,gBAAgB,CAAC;YAClD,IAAI,gBAAgB,EAAE,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,qEAAqE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;gBACxG,OAAO,gBAAgB,CAAC;YAC1B,CAAC;YACD,MAAM,SAAS,CAAC;QAClB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,MAAc,EAAE,aAAsB;QACpE,MAAM,MAAM,GAAqB,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;QAChD,IAAI,aAAa,KAAK,SAAS;YAAE,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;QACtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,MAA4C,CAAC,CAAC;QAC7G,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,QAAQ,CAAC,MAAiB,CAAC;IACpC,CAAC;IAED,yBAAyB;IACzB,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,MAAc;QAC/C,MAAM,MAAM,GAAwB,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,MAA4C,CAAC,CAAC;QAChH,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,QAAQ,CAAC,MAAiB,CAAC;IACpC,CAAC;IAED,iBAAiB;IAEjB,wBAAwB;IAChB,mBAAmB,CAAC,OAAe;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YAAE,OAAO,OAAO,CAAC;QAChE,OAAO,GAAG,OAAO,yBAAyB,CAAC;IAC7C,CAAC;IAED,qBAAqB;IACb,KAAK,CAAC,WAAW,CACvB,GAAW,EACX,MAAc,EACd,MAA+B;QAE/B,MAAM,OAAO,GAAsB;YACjC,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,SAAS,EAAE;YACf,MAAM;YACN,MAAM;SACP,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;YAC3C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;YAChE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuB,CAAC;IAClD,CAAC;IAED,uDAAuD;IAC/C,KAAK,CAAC,oBAAoB,CAChC,MAA+C;QAE/C,IAAI,KAAoC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC/C,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,MAAM,CAAC,IAAI,KAAK,CAAC,4CAA4C,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;YACvF,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QACtD,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAM,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,iBAAiB;IACT,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,IAAiB;QAC3D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACzE,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;CACF;AA5OD,8BA4OC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/a2a/client.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,2BAA2B;AAC3B,8BAA8B;AAC9B,+DAA+D;;;AAmC/D,4CAUC;AAhCD,2BAA2B;AAC3B,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB,SAAS,SAAS;IAChB,OAAO,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAC/C,CAAC;AAgBD,+BAA+B;AAC/B,SAAgB,gBAAgB,CAAC,IAAwB;IACvD,IAAI,CAAC,IAAI,EAAE,KAAK;QAAE,OAAO,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAClG,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC;QAC3D,KAAK,OAAO,CAAC,CAAE,OAAO,EAAE,eAAe,EAAE,SAAS,GAAG,EAAE,EAAE,CAAC;QAC1D,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;QAC1D,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,CAAC;QAC9D,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAkCD;;;;;;;GAOG;AACH,MAAa,SAAS;IACZ,OAAO,CAAS;IAChB,cAAc,CAAS;IACvB,YAAY,CAAS;IACrB,OAAO,CAAe;IACtB,OAAO,CAAyB;IAChC,YAAY,CAA0B;IAE9C,YAAY,UAA4B,EAAE;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC;QACvD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QACjF,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3C,CAAC;IAED,qBAAqB;IAErB;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAiB,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,uBAAuB,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB;IAEjB,wCAAwC;IACxC,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,MAAyB;QACxD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,MAA4C,CAAC,CAAC;QAC9G,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,QAAQ,CAAC,MAAiB,CAAC;IACpC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,iBAAiB,CACrB,QAAgB,EAChB,MAAyB,EACzB,OAAuC,EACvC,WAAyB;QAEzB,MAAM,OAAO,GAAsB;YACjC,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,SAAS,EAAE;YACf,MAAM,EAAE,qBAAqB;YAC7B,MAAM,EAAE,MAA4C;SACrD,CAAC;QACF,MAAM,cAAc,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAE/E,4DAA4D;QAC5D,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACjF,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;iBAC7C,CAAC;gBAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAAC,CAAC;QAC7F,CAAC;QAED,IAAI,GAAa,CAAC;QAClB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACjC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,cAAc;gBACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAC7B,MAAM,EAAE,YAAY,CAAC,MAAM;aAC5B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,QAAa,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC;YAC3C,IAAI,WAAW,EAAE,OAAO;gBAAE,OAAO,IAAI,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC;gBAClB,IAAI,EAAE,qBAAqB;gBAC3B,KAAK,EAAE,QAAQ,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;gBACpE,QAAQ,EAAE,GAAG,QAAQ,IAAI;gBACzB,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE;gBAClF,KAAK,EAAE,QAAQ,EAAE,IAAI,KAAK,YAAY;oBACpC,CAAC,CAAC,kCAAkC,IAAI,CAAC,cAAc,SAAS,QAAQ,EAAE;oBAC1E,CAAC,CAAC,iCAAiC,QAAQ,KAAK,QAAQ,EAAE,OAAO,IAAI,QAAQ,EAAE;gBACjF,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;aAC7C,CAAC,CAAC;YACH,IAAI,QAAQ,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,cAAc,SAAS,QAAQ,EAAE,CAAC,CAAC;YAC5F,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,KAAK,QAAQ,EAAE,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC;QACjG,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,YAAY,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC;QAClD,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAE1D,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC;gBAAC,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAC3D,IAAI,CAAC,cAAc,CAAC;gBAClB,IAAI,EAAE,qBAAqB;gBAC3B,KAAK,EAAE,YAAY;gBACnB,QAAQ,EAAE,GAAG,eAAe,IAAI;gBAChC,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE;gBAClF,QAAQ,EAAE;oBACR,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;oBAC1B,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;oBAC1C,WAAW;oBACX,OAAO,EAAE,QAAQ;iBAClB;gBACD,KAAK,EAAE,8BAA8B,GAAG,CAAC,MAAM,SAAS,QAAQ,EAAE;aACnE,CAAC,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,SAAS,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7F,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,CAAC,MAAM,SAAS,QAAQ,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,CAAC,cAAc,CAAC;YAClB,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,YAAY;YACnB,QAAQ,EAAE,GAAG,eAAe,IAAI;YAChC,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE;YAClF,QAAQ,EAAE;gBACR,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC1C,WAAW;gBACX,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC;aACrD;SACF,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAEjE,6CAA6C;QAC7C,IAAI,gBAAgB,GAAwB,IAAI,CAAC;QACjD,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,YAAY,GAAmB,EAAE,CAAC;QAExC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,IAAI,WAAW,EAAE,OAAO;oBAAE,MAAM;gBAEhC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBAChE,IAAI,IAAI;oBAAE,MAAM;gBAEhB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;wBAAE,SAAS;oBAClD,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBAChC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wBACxC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ;4BAAE,SAAS;wBAC/C,IAAI,CAAC;4BACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;4BAClD,UAAU,EAAE,CAAC;4BACb,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;gCAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACtD,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;4BACjB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe;gCAAE,gBAAgB,GAAG,KAAK,CAAC;wBAC/D,CAAC;wBAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,SAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC;gBAClB,IAAI,EAAE,4BAA4B;gBAClC,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAC,gBAAgB,EAAE;gBAC3E,KAAK,EAAE,SAAS,EAAE,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC;gBAC9C,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;aAC9C,CAAC,CAAC;YACH,oBAAoB;YACpB,IAAI,WAAW,EAAE,OAAO;gBAAE,OAAO,gBAAgB,CAAC;YAClD,IAAI,gBAAgB,EAAE,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,qEAAqE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;gBACxG,OAAO,gBAAgB,CAAC;YAC1B,CAAC;YACD,MAAM,SAAS,CAAC;QAClB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC,cAAc,CAAC;YAClB,IAAI,EAAE,4BAA4B;YAClC,KAAK,EAAE,cAAc;YACrB,IAAI,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAC,gBAAgB,EAAE;SAC5E,CAAC,CAAC;QACH,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,MAAc,EAAE,aAAsB;QACpE,MAAM,MAAM,GAAqB,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;QAChD,IAAI,aAAa,KAAK,SAAS;YAAE,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;QACtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,MAA4C,CAAC,CAAC;QAC7G,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,QAAQ,CAAC,MAAiB,CAAC;IACpC,CAAC;IAED,yBAAyB;IACzB,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,MAAc;QAC/C,MAAM,MAAM,GAAwB,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,MAA4C,CAAC,CAAC;QAChH,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,QAAQ,CAAC,MAAiB,CAAC;IACpC,CAAC;IAED,iBAAiB;IAEjB,wBAAwB;IAChB,mBAAmB,CAAC,OAAe;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YAAE,OAAO,OAAO,CAAC;QAChE,OAAO,GAAG,OAAO,yBAAyB,CAAC;IAC7C,CAAC;IAED,qBAAqB;IACb,KAAK,CAAC,WAAW,CACvB,GAAW,EACX,MAAc,EACd,MAA+B;QAE/B,MAAM,OAAO,GAAsB;YACjC,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,SAAS,EAAE;YACf,MAAM;YACN,MAAM;SACP,CAAC;QAEF,MAAM,cAAc,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;gBACrC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,cAAc;gBACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAC9B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,CAAC;gBAClB,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,OAAO,MAAM,OAAO;gBAC3B,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI;gBACnC,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE;gBACxE,KAAK,EAAE,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC;gBAClC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;aACxC,CAAC,CAAC;YACH,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACpC,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,OAA2B,CAAC;QAChC,IAAI,CAAC;YACH,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAuB,CAAC,CAAC,CAAC,EAAwB,CAAC;QAC3F,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,EAAwB,CAAC;QAC3I,CAAC;QAED,IAAI,CAAC,cAAc,CAAC;YAClB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,OAAO,CAAC,CAAC,CAAC,OAAO,MAAM,OAAO;YAC3D,QAAQ,EAAE,GAAG,QAAQ,IAAI;YACzB,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE;YACxE,QAAQ,EAAE;gBACR,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC1C,WAAW;gBACX,OAAO;aACR;YACD,OAAO;YACP,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE;SAChF,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,uDAAuD;IAC/C,KAAK,CAAC,oBAAoB,CAChC,MAA+C;QAE/C,IAAI,KAAoC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC/C,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,MAAM,CAAC,IAAI,KAAK,CAAC,4CAA4C,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;YACvF,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QACtD,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAM,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,iBAAiB;IACT,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,IAAiB;QAC3D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACzE,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,KAAsB;QAC3C,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAC/B,IAAI,CAAC;YAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;IAC5E,CAAC;IAEO,eAAe,CAAC,OAAgB;QACtC,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,kBAAkB,CAAC,GAAQ;QACjC,OAAO;YACL,IAAI,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC;YACpC,IAAI,EAAE,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE;YACzC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;gBAClB,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI;gBACpB,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK;gBACtB,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO;gBAC1B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO;gBAC1B,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI;gBACpB,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO;aAC3B,CAAC,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;CACF;AAjXD,8BAiXC"}
@@ -1,6 +1,6 @@
1
1
  export type { A2AAgentCard, A2AAgentSkill, A2AAgentCapabilities, A2ATextPart, A2AFilePart, A2ADataPart, A2APart, A2AMessage, A2ATaskState, A2ATaskStatus, A2AArtifact, A2ATask, A2ATaskStatusUpdateEvent, A2ATaskArtifactUpdateEvent, A2ATaskEvent, A2AJsonRpcRequest, A2AJsonRpcResponse, A2AJsonRpcError, A2ASendTaskParams, A2ASendSubscribeParams, A2AGetTaskParams, A2ACancelTaskParams, A2ARemoteAgentConfig, } from './types.js';
2
2
  export { A2AClient, buildAuthHeaders } from './client.js';
3
- export type { AuthConfig, A2AClientOptions } from './client.js';
3
+ export type { AuthConfig, A2AClientOptions, AgentDebugTrace, AgentDebugTraceHandler } from './client.js';
4
4
  export { createA2ARemoteRunner, extractTextFromMessage } from './runner.js';
5
5
  export type { A2ARemoteRunnerConfig } from './runner.js';
6
6
  export { A2AServerHandler, InMemoryA2ATaskStore, createA2AAgentCard, createA2AMessage, mapAgentEventToA2AEvent, } from './server.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/a2a/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,WAAW,EACX,OAAO,EACP,UAAU,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,OAAO,EACP,wBAAwB,EACxB,0BAA0B,EAC1B,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC5E,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/a2a/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,WAAW,EACX,OAAO,EACP,UAAU,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,OAAO,EACP,wBAAwB,EACxB,0BAA0B,EAC1B,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAEzG,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC5E,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type AuthConfig } from './client.js';
1
+ import { type AgentDebugTraceHandler, type AuthConfig } from './client.js';
2
2
  /** REST 风格 A2A Capability Card */
3
3
  export interface RestCapabilityCard {
4
4
  capability_id: string;
@@ -59,6 +59,8 @@ export interface RestA2AClientOptions {
59
59
  headers?: Record<string, string>;
60
60
  /** 认证配置 */
61
61
  auth?: AuthConfig;
62
+ /** 调试 trace 回调;未传时保持原始执行流程 */
63
+ onDebugTrace?: AgentDebugTraceHandler;
62
64
  }
63
65
  /**
64
66
  * REST 风格 A2A 协议客户端
@@ -74,6 +76,7 @@ export declare class RestA2AClient {
74
76
  private chunkTimeout;
75
77
  private fetchFn;
76
78
  private headers;
79
+ private onDebugTrace?;
77
80
  constructor(options?: RestA2AClientOptions);
78
81
  /** 获取 Capability Card:GET /capabilities/{capabilityId},失败时尝试 :stream 探测 */
79
82
  discoverCapability(baseUrl: string, capabilityId: string, streamAction?: string): Promise<RestCapabilityCard>;
@@ -107,5 +110,8 @@ export declare class RestA2AClient {
107
110
  private readChunkWithTimeout;
108
111
  /** 带超时的 fetch */
109
112
  private fetchWithTimeout;
113
+ private emitDebugTrace;
114
+ private headersToObject;
115
+ private normalizeException;
110
116
  }
111
117
  //# sourceMappingURL=rest-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rest-client.d.ts","sourceRoot":"","sources":["../../../src/a2a/rest-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rest-client.d.ts","sourceRoot":"","sources":["../../../src/a2a/rest-client.ts"],"names":[],"mappings":"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"}
@@ -31,12 +31,14 @@ class RestA2AClient {
31
31
  chunkTimeout;
32
32
  fetchFn;
33
33
  headers;
34
+ onDebugTrace;
34
35
  constructor(options = {}) {
35
36
  this.timeout = options.timeout ?? 300_000;
36
37
  this.connectTimeout = options.connectTimeout ?? 30_000;
37
38
  this.chunkTimeout = options.chunkTimeout ?? 60_000;
38
39
  this.fetchFn = options.fetch ?? globalThis.fetch.bind(globalThis);
39
40
  this.headers = { ...(0, client_ts_1.buildAuthHeaders)(options.auth), ...(options.headers ?? {}) };
41
+ this.onDebugTrace = options.onDebugTrace;
40
42
  }
41
43
  // ---- Capability 发现 ----
42
44
  /** 获取 Capability Card:GET /capabilities/{capabilityId},失败时尝试 :stream 探测 */
@@ -119,23 +121,51 @@ class RestA2AClient {
119
121
  console.log(`[REST-A2A-Client] invoke start: POST ${url}`);
120
122
  console.log(`[REST-A2A-Client] invoke input: ${JSON.stringify(input, null, 2).slice(0, 500)}`);
121
123
  const startTime = Date.now();
122
- const res = await this.fetchWithTimeout(url, {
123
- method: 'POST',
124
- headers: { 'Content-Type': 'application/json', ...this.headers },
125
- body: JSON.stringify(input),
126
- });
124
+ const requestHeaders = { 'Content-Type': 'application/json', ...this.headers };
125
+ let res;
126
+ try {
127
+ res = await this.fetchWithTimeout(url, {
128
+ method: 'POST',
129
+ headers: requestHeaders,
130
+ body: JSON.stringify(input),
131
+ });
132
+ }
133
+ catch (err) {
134
+ this.emitDebugTrace({
135
+ step: 'rest/invoke',
136
+ title: 'REST A2A 同步请求异常',
137
+ duration: `${Date.now() - startTime}ms`,
138
+ request: { url, method: 'POST', headers: requestHeaders, body: input },
139
+ error: err?.message || String(err),
140
+ exception: this.normalizeException(err),
141
+ });
142
+ throw err;
143
+ }
127
144
  const elapsed = Date.now() - startTime;
145
+ const contentType = res.headers.get('content-type') || '';
146
+ const bodyText = await res.text().catch(() => '');
128
147
  console.log(`[REST-A2A-Client] invoke response: HTTP ${res.status} (${elapsed}ms)`);
129
148
  if (!res.ok) {
130
- let bodyText = '';
131
- try {
132
- bodyText = await res.text();
133
- }
134
- catch { /* ignore */ }
149
+ this.emitDebugTrace({
150
+ step: 'rest/invoke',
151
+ title: 'REST A2A 同步请求失败',
152
+ duration: `${elapsed}ms`,
153
+ request: { url, method: 'POST', headers: requestHeaders, body: input },
154
+ response: { status: res.status, statusText: res.statusText, ok: res.ok, headers: this.headersToObject(res.headers), contentType, rawBody: bodyText },
155
+ error: `REST A2A invoke failed: HTTP ${res.status} from ${url}: ${bodyText.slice(0, 200)}`,
156
+ });
135
157
  console.error(`[REST-A2A-Client] invoke failed: HTTP ${res.status}, body: ${bodyText.slice(0, 200)}`);
136
158
  throw new Error(`REST A2A invoke failed: HTTP ${res.status} from ${url}: ${bodyText.slice(0, 200)}`);
137
159
  }
138
- const result = (await res.json());
160
+ const result = JSON.parse(bodyText || '{}');
161
+ this.emitDebugTrace({
162
+ step: 'rest/invoke',
163
+ title: 'REST A2A 同步请求完成',
164
+ duration: `${elapsed}ms`,
165
+ request: { url, method: 'POST', headers: requestHeaders, body: input },
166
+ response: { status: res.status, statusText: res.statusText, ok: res.ok, headers: this.headersToObject(res.headers), contentType, rawBody: bodyText },
167
+ payload: result,
168
+ });
139
169
  console.log(`[REST-A2A-Client] invoke result: status=${result.status}, has_result=${!!result.result}, error=${result.error || 'none'}`);
140
170
  return result;
141
171
  }
@@ -171,20 +201,32 @@ class RestA2AClient {
171
201
  }
172
202
  let res;
173
203
  const connectStartTime = Date.now();
204
+ const requestHeaders = { 'Content-Type': 'application/json', ...this.headers };
174
205
  try {
175
206
  res = await this.fetchFn(url, {
176
207
  method: 'POST',
177
- headers: { 'Content-Type': 'application/json', ...this.headers },
208
+ headers: requestHeaders,
178
209
  body: JSON.stringify(input),
179
210
  signal: connectAbort.signal,
180
211
  });
181
212
  console.log(`[REST-A2A-Client] invokeStreaming connected: HTTP ${res.status} (${Date.now() - connectStartTime}ms)`);
182
213
  }
183
214
  catch (fetchErr) {
215
+ const duration = Date.now() - connectStartTime;
184
216
  if (abortSignal?.aborted) {
185
217
  console.log(`[REST-A2A-Client] invokeStreaming aborted by signal`);
186
218
  return null;
187
219
  }
220
+ this.emitDebugTrace({
221
+ step: 'rest/stream',
222
+ title: fetchErr?.name === 'AbortError' ? 'REST A2A 流式连接超时' : 'REST A2A 流式连接异常',
223
+ duration: `${duration}ms`,
224
+ request: { url, method: 'POST', headers: requestHeaders, body: input },
225
+ error: fetchErr?.name === 'AbortError'
226
+ ? `REST A2A streaming connect timeout (${this.connectTimeout}ms) → ${url}`
227
+ : `REST A2A streaming connect error → ${url}: ${fetchErr?.message || fetchErr}`,
228
+ exception: this.normalizeException(fetchErr),
229
+ });
188
230
  if (fetchErr?.name === 'AbortError') {
189
231
  console.error(`[REST-A2A-Client] invokeStreaming connect timeout (${this.connectTimeout}ms)`);
190
232
  throw new Error(`REST A2A streaming connect timeout (${this.connectTimeout}ms) → ${url}`);
@@ -195,15 +237,32 @@ class RestA2AClient {
195
237
  finally {
196
238
  clearTimeout(connectTimer);
197
239
  }
240
+ const connectDuration = Date.now() - connectStartTime;
241
+ const contentType = res.headers.get('content-type') || '';
198
242
  if (!res.ok) {
199
243
  let bodyText = '';
200
244
  try {
201
245
  bodyText = await res.text();
202
246
  }
203
247
  catch { /* ignore */ }
248
+ this.emitDebugTrace({
249
+ step: 'rest/stream',
250
+ title: 'REST A2A 流式连接失败',
251
+ duration: `${connectDuration}ms`,
252
+ request: { url, method: 'POST', headers: requestHeaders, body: input },
253
+ response: { status: res.status, statusText: res.statusText, ok: res.ok, headers: this.headersToObject(res.headers), contentType, rawBody: bodyText },
254
+ error: `REST A2A streaming failed: HTTP ${res.status} from ${url}`,
255
+ });
204
256
  console.error(`[REST-A2A-Client] invokeStreaming HTTP ${res.status} from ${url}: ${bodyText.slice(0, 200)}`);
205
257
  throw new Error(`REST A2A streaming failed: HTTP ${res.status} from ${url}`);
206
258
  }
259
+ this.emitDebugTrace({
260
+ step: 'rest/stream',
261
+ title: 'REST A2A 流式连接成功',
262
+ duration: `${connectDuration}ms`,
263
+ request: { url, method: 'POST', headers: requestHeaders, body: input },
264
+ response: { status: res.status, statusText: res.statusText, ok: res.ok, headers: this.headersToObject(res.headers), contentType, sseParsed: contentType.includes('text/event-stream') },
265
+ });
207
266
  const body = res.body;
208
267
  if (!body) {
209
268
  console.error(`[REST-A2A-Client] invokeStreaming empty response body`);
@@ -215,6 +274,7 @@ class RestA2AClient {
215
274
  let buffer = '';
216
275
  let currentEvent = '';
217
276
  let eventCount = 0;
277
+ const eventSamples = [];
218
278
  console.log(`[REST-A2A-Client] invokeStreaming reading SSE stream...`);
219
279
  try {
220
280
  while (true) {
@@ -247,6 +307,8 @@ class RestA2AClient {
247
307
  const data = JSON.parse(jsonStr);
248
308
  const sseEvent = { event: currentEvent || 'message', data };
249
309
  eventCount++;
310
+ if (eventSamples.length < 5)
311
+ eventSamples.push(sseEvent);
250
312
  console.log(`[REST-A2A-Client] SSE event #${eventCount}: type=${sseEvent.event}, data=${JSON.stringify(data).slice(0, 200)}`);
251
313
  onEvent?.(sseEvent);
252
314
  // 捕获最终结果
@@ -270,6 +332,13 @@ class RestA2AClient {
270
332
  }
271
333
  }
272
334
  catch (streamErr) {
335
+ this.emitDebugTrace({
336
+ step: 'rest/stream.events',
337
+ title: 'REST A2A SSE 读取异常',
338
+ data: { eventCount, eventSamples, hasResult: !!lastResult, status: lastResult?.status },
339
+ error: streamErr?.message || String(streamErr),
340
+ exception: this.normalizeException(streamErr),
341
+ });
273
342
  // 流异常时保留已接收结果(优雅降级)
274
343
  if (abortSignal?.aborted) {
275
344
  console.log(`[REST-A2A-Client] invokeStreaming stream aborted after ${eventCount} events`);
@@ -288,6 +357,12 @@ class RestA2AClient {
288
357
  }
289
358
  catch { /* ignore */ }
290
359
  }
360
+ this.emitDebugTrace({
361
+ step: 'rest/stream.events',
362
+ title: 'REST A2A SSE 读取完成',
363
+ data: { eventCount, eventSamples, hasResult: !!lastResult, status: lastResult?.status },
364
+ payload: lastResult,
365
+ });
291
366
  console.log(`[REST-A2A-Client] invokeStreaming completed: hasResult=${!!lastResult}, status=${lastResult?.status}`);
292
367
  return lastResult;
293
368
  }
@@ -409,6 +484,34 @@ class RestA2AClient {
409
484
  clearTimeout(timer);
410
485
  }
411
486
  }
487
+ emitDebugTrace(trace) {
488
+ if (!this.onDebugTrace)
489
+ return;
490
+ try {
491
+ this.onDebugTrace(trace);
492
+ }
493
+ catch { /* ignore debug hook errors */ }
494
+ }
495
+ headersToObject(headers) {
496
+ const result = {};
497
+ headers.forEach((value, key) => { result[key] = value; });
498
+ return result;
499
+ }
500
+ normalizeException(err) {
501
+ return {
502
+ name: err?.name || '',
503
+ message: err?.message || String(err),
504
+ code: err?.code || err?.cause?.code || '',
505
+ cause: err?.cause ? {
506
+ code: err.cause.code,
507
+ errno: err.cause.errno,
508
+ syscall: err.cause.syscall,
509
+ address: err.cause.address,
510
+ port: err.cause.port,
511
+ message: err.cause.message,
512
+ } : undefined,
513
+ };
514
+ }
412
515
  }
413
516
  exports.RestA2AClient = RestA2AClient;
414
517
  //# sourceMappingURL=rest-client.js.map