@cicctencent/agent-core 0.1.7 → 0.1.9
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.
- package/README.md +1 -1
- package/dist/cjs/a2a/client.d.ts +47 -0
- package/dist/cjs/a2a/client.d.ts.map +1 -0
- package/dist/cjs/a2a/client.js +178 -0
- package/dist/cjs/a2a/client.js.map +1 -0
- package/dist/cjs/a2a/index.d.ts +5 -0
- package/dist/cjs/a2a/index.d.ts.map +1 -0
- package/dist/cjs/a2a/index.js +12 -0
- package/dist/cjs/a2a/index.js.map +1 -0
- package/dist/cjs/a2a/runner.d.ts +34 -0
- package/dist/cjs/a2a/runner.d.ts.map +1 -0
- package/dist/cjs/a2a/runner.js +148 -0
- package/dist/cjs/a2a/runner.js.map +1 -0
- package/dist/cjs/a2a/types.d.ts +149 -0
- package/dist/cjs/a2a/types.d.ts.map +1 -0
- package/dist/cjs/a2a/types.js +8 -0
- package/dist/cjs/a2a/types.js.map +1 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +6 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/a2a/client.d.ts +47 -0
- package/dist/esm/a2a/client.d.ts.map +1 -0
- package/dist/esm/a2a/client.js +174 -0
- package/dist/esm/a2a/client.js.map +1 -0
- package/dist/esm/a2a/index.d.ts +5 -0
- package/dist/esm/a2a/index.d.ts.map +1 -0
- package/dist/esm/a2a/index.js +6 -0
- package/dist/esm/a2a/index.js.map +1 -0
- package/dist/esm/a2a/runner.d.ts +34 -0
- package/dist/esm/a2a/runner.d.ts.map +1 -0
- package/dist/esm/a2a/runner.js +144 -0
- package/dist/esm/a2a/runner.js.map +1 -0
- package/dist/esm/a2a/types.d.ts +149 -0
- package/dist/esm/a2a/types.d.ts.map +1 -0
- package/dist/esm/a2a/types.js +7 -0
- package/dist/esm/a2a/types.js.map +1 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> **内部库,仅供项目内部使用,不对外发布。**
|
|
4
4
|
|
|
5
|
-
AI Agent 核心引擎,提供 ReAct 循环编排、多 LLM 供应商抽象、工具注册与执行、MCP 协议集成、Skill
|
|
5
|
+
AI Agent 核心引擎,提供 ReAct 循环编排、多 LLM 供应商抽象、工具注册与执行、MCP 协议集成、Skill 路由、安全守卫、渐进式记忆管道、A2A 协议互操作,以及工具风险评估、审批管理、运行注册表、引擎复用池、JSON 存储、可观测性日志等应用级能力。
|
|
6
6
|
|
|
7
7
|
## 文档
|
|
8
8
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { A2AAgentCard, A2ASendTaskParams, A2ATask, A2ATaskEvent } from './types.ts';
|
|
2
|
+
/** A2A 客户端配置 */
|
|
3
|
+
export interface A2AClientOptions {
|
|
4
|
+
/** 请求超时(毫秒),默认 300000(5分钟) */
|
|
5
|
+
timeout?: number;
|
|
6
|
+
/** 自定义 fetch 实现(默认使用 globalThis.fetch) */
|
|
7
|
+
fetch?: typeof fetch;
|
|
8
|
+
/** 自定义请求头(如认证 token) */
|
|
9
|
+
headers?: Record<string, string>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 轻量 A2A 协议客户端
|
|
13
|
+
*
|
|
14
|
+
* 用法:
|
|
15
|
+
* const client = new A2AClient();
|
|
16
|
+
* const card = await client.discoverAgent('https://example.com');
|
|
17
|
+
* const task = await client.sendTask(card.url, { message: ... });
|
|
18
|
+
*/
|
|
19
|
+
export declare class A2AClient {
|
|
20
|
+
private timeout;
|
|
21
|
+
private fetchFn;
|
|
22
|
+
private headers;
|
|
23
|
+
constructor(options?: A2AClientOptions);
|
|
24
|
+
/**
|
|
25
|
+
* 通过 base URL 发现远程 Agent
|
|
26
|
+
* 自动请求 /.well-known/agent.json 并返回 AgentCard
|
|
27
|
+
*/
|
|
28
|
+
discoverAgent(baseUrl: string): Promise<A2AAgentCard>;
|
|
29
|
+
/** 同步发送任务(tasks/send),等待完成后返回完整 Task */
|
|
30
|
+
sendTask(agentUrl: string, params: A2ASendTaskParams): Promise<A2ATask>;
|
|
31
|
+
/**
|
|
32
|
+
* 流式发送任务(tasks/sendSubscribe),通过回调逐步接收事件
|
|
33
|
+
* 返回所有收集到的事件列表
|
|
34
|
+
*/
|
|
35
|
+
sendTaskStreaming(agentUrl: string, params: A2ASendTaskParams, onEvent?: (event: A2ATaskEvent) => void): Promise<A2ATaskEvent[]>;
|
|
36
|
+
/** 查询任务状态(tasks/get) */
|
|
37
|
+
getTask(agentUrl: string, taskId: string, historyLength?: number): Promise<A2ATask>;
|
|
38
|
+
/** 取消任务(tasks/cancel) */
|
|
39
|
+
cancelTask(agentUrl: string, taskId: string): Promise<A2ATask>;
|
|
40
|
+
/** 解析 Agent Card URL */
|
|
41
|
+
private resolveAgentCardUrl;
|
|
42
|
+
/** 发送 JSON-RPC 请求 */
|
|
43
|
+
private jsonRpcCall;
|
|
44
|
+
/** 带超时的 fetch */
|
|
45
|
+
private fetchWithTimeout;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +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,gBAAgB;AAChB,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,OAAO,CAAyB;gBAE5B,OAAO,GAAE,gBAAqB;IAQ1C;;;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;;;OAGG;IACG,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,iBAAiB,EACzB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GACtC,OAAO,CAAC,YAAY,EAAE,CAAC;IA6D1B,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;IAO3B,qBAAqB;YACP,WAAW;IAyBzB,iBAAiB;YACH,gBAAgB;CAS/B"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// A2AClient — 轻量 A2A 协议客户端
|
|
4
|
+
// 支持 Agent 发现、同步/流式任务、取消等核心方法
|
|
5
|
+
// ============================================================
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.A2AClient = void 0;
|
|
8
|
+
/** JSON-RPC 请求 ID 自增计数器 */
|
|
9
|
+
let rpcIdCounter = 0;
|
|
10
|
+
function nextRpcId() {
|
|
11
|
+
return `a2a_${++rpcIdCounter}_${Date.now()}`;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 轻量 A2A 协议客户端
|
|
15
|
+
*
|
|
16
|
+
* 用法:
|
|
17
|
+
* const client = new A2AClient();
|
|
18
|
+
* const card = await client.discoverAgent('https://example.com');
|
|
19
|
+
* const task = await client.sendTask(card.url, { message: ... });
|
|
20
|
+
*/
|
|
21
|
+
class A2AClient {
|
|
22
|
+
timeout;
|
|
23
|
+
fetchFn;
|
|
24
|
+
headers;
|
|
25
|
+
constructor(options = {}) {
|
|
26
|
+
this.timeout = options.timeout ?? 300_000;
|
|
27
|
+
this.fetchFn = options.fetch ?? globalThis.fetch.bind(globalThis);
|
|
28
|
+
this.headers = options.headers ?? {};
|
|
29
|
+
}
|
|
30
|
+
// ---- Agent 发现 ----
|
|
31
|
+
/**
|
|
32
|
+
* 通过 base URL 发现远程 Agent
|
|
33
|
+
* 自动请求 /.well-known/agent.json 并返回 AgentCard
|
|
34
|
+
*/
|
|
35
|
+
async discoverAgent(baseUrl) {
|
|
36
|
+
const url = this.resolveAgentCardUrl(baseUrl);
|
|
37
|
+
const res = await this.fetchWithTimeout(url, { method: 'GET' });
|
|
38
|
+
if (!res.ok) {
|
|
39
|
+
throw new Error(`A2A discover failed: HTTP ${res.status} from ${url}`);
|
|
40
|
+
}
|
|
41
|
+
const card = (await res.json());
|
|
42
|
+
if (!card.name || !card.url) {
|
|
43
|
+
throw new Error(`Invalid Agent Card from ${url}: missing name or url`);
|
|
44
|
+
}
|
|
45
|
+
return card;
|
|
46
|
+
}
|
|
47
|
+
// ---- 任务操作 ----
|
|
48
|
+
/** 同步发送任务(tasks/send),等待完成后返回完整 Task */
|
|
49
|
+
async sendTask(agentUrl, params) {
|
|
50
|
+
const response = await this.jsonRpcCall(agentUrl, 'tasks/send', params);
|
|
51
|
+
if (response.error) {
|
|
52
|
+
throw new Error(`A2A tasks/send error [${response.error.code}]: ${response.error.message}`);
|
|
53
|
+
}
|
|
54
|
+
return response.result;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 流式发送任务(tasks/sendSubscribe),通过回调逐步接收事件
|
|
58
|
+
* 返回所有收集到的事件列表
|
|
59
|
+
*/
|
|
60
|
+
async sendTaskStreaming(agentUrl, params, onEvent) {
|
|
61
|
+
const request = {
|
|
62
|
+
jsonrpc: '2.0',
|
|
63
|
+
id: nextRpcId(),
|
|
64
|
+
method: 'tasks/sendSubscribe',
|
|
65
|
+
params: params,
|
|
66
|
+
};
|
|
67
|
+
const res = await this.fetchWithTimeout(agentUrl, {
|
|
68
|
+
method: 'POST',
|
|
69
|
+
headers: { 'Content-Type': 'application/json', ...this.headers },
|
|
70
|
+
body: JSON.stringify(request),
|
|
71
|
+
});
|
|
72
|
+
if (!res.ok) {
|
|
73
|
+
throw new Error(`A2A streaming failed: HTTP ${res.status}`);
|
|
74
|
+
}
|
|
75
|
+
const events = [];
|
|
76
|
+
const body = res.body;
|
|
77
|
+
if (!body) {
|
|
78
|
+
throw new Error('A2A streaming: empty response body');
|
|
79
|
+
}
|
|
80
|
+
// SSE 解析:逐行读取 data: 前缀的 JSON 事件
|
|
81
|
+
const reader = body.getReader();
|
|
82
|
+
const decoder = new TextDecoder();
|
|
83
|
+
let buffer = '';
|
|
84
|
+
try {
|
|
85
|
+
while (true) {
|
|
86
|
+
const { done, value } = await reader.read();
|
|
87
|
+
if (done)
|
|
88
|
+
break;
|
|
89
|
+
buffer += decoder.decode(value, { stream: true });
|
|
90
|
+
const lines = buffer.split('\n');
|
|
91
|
+
buffer = lines.pop() || ''; // 最后一行可能不完整
|
|
92
|
+
for (const line of lines) {
|
|
93
|
+
const trimmed = line.trim();
|
|
94
|
+
if (!trimmed || trimmed.startsWith(':'))
|
|
95
|
+
continue; // 跳过注释和空行
|
|
96
|
+
if (trimmed.startsWith('data:')) {
|
|
97
|
+
const jsonStr = trimmed.slice(5).trim();
|
|
98
|
+
if (!jsonStr || jsonStr === '[DONE]')
|
|
99
|
+
continue;
|
|
100
|
+
try {
|
|
101
|
+
const event = JSON.parse(jsonStr);
|
|
102
|
+
events.push(event);
|
|
103
|
+
onEvent?.(event);
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// 跳过非 JSON 行
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
reader.releaseLock();
|
|
114
|
+
}
|
|
115
|
+
return events;
|
|
116
|
+
}
|
|
117
|
+
/** 查询任务状态(tasks/get) */
|
|
118
|
+
async getTask(agentUrl, taskId, historyLength) {
|
|
119
|
+
const params = { id: taskId };
|
|
120
|
+
if (historyLength !== undefined)
|
|
121
|
+
params.historyLength = historyLength;
|
|
122
|
+
const response = await this.jsonRpcCall(agentUrl, 'tasks/get', params);
|
|
123
|
+
if (response.error) {
|
|
124
|
+
throw new Error(`A2A tasks/get error [${response.error.code}]: ${response.error.message}`);
|
|
125
|
+
}
|
|
126
|
+
return response.result;
|
|
127
|
+
}
|
|
128
|
+
/** 取消任务(tasks/cancel) */
|
|
129
|
+
async cancelTask(agentUrl, taskId) {
|
|
130
|
+
const params = { id: taskId };
|
|
131
|
+
const response = await this.jsonRpcCall(agentUrl, 'tasks/cancel', params);
|
|
132
|
+
if (response.error) {
|
|
133
|
+
throw new Error(`A2A tasks/cancel error [${response.error.code}]: ${response.error.message}`);
|
|
134
|
+
}
|
|
135
|
+
return response.result;
|
|
136
|
+
}
|
|
137
|
+
// ---- 内部方法 ----
|
|
138
|
+
/** 解析 Agent Card URL */
|
|
139
|
+
resolveAgentCardUrl(baseUrl) {
|
|
140
|
+
const trimmed = baseUrl.replace(/\/+$/, '');
|
|
141
|
+
if (trimmed.includes('/.well-known/agent.json'))
|
|
142
|
+
return trimmed;
|
|
143
|
+
if (trimmed.endsWith('/a2a'))
|
|
144
|
+
return `${trimmed}/.well-known/agent.json`;
|
|
145
|
+
return `${trimmed}/.well-known/agent.json`;
|
|
146
|
+
}
|
|
147
|
+
/** 发送 JSON-RPC 请求 */
|
|
148
|
+
async jsonRpcCall(url, method, params) {
|
|
149
|
+
const request = {
|
|
150
|
+
jsonrpc: '2.0',
|
|
151
|
+
id: nextRpcId(),
|
|
152
|
+
method,
|
|
153
|
+
params,
|
|
154
|
+
};
|
|
155
|
+
const res = await this.fetchWithTimeout(url, {
|
|
156
|
+
method: 'POST',
|
|
157
|
+
headers: { 'Content-Type': 'application/json', ...this.headers },
|
|
158
|
+
body: JSON.stringify(request),
|
|
159
|
+
});
|
|
160
|
+
if (!res.ok) {
|
|
161
|
+
throw new Error(`A2A JSON-RPC ${method} failed: HTTP ${res.status}`);
|
|
162
|
+
}
|
|
163
|
+
return (await res.json());
|
|
164
|
+
}
|
|
165
|
+
/** 带超时的 fetch */
|
|
166
|
+
async fetchWithTimeout(url, init) {
|
|
167
|
+
const controller = new AbortController();
|
|
168
|
+
const timer = setTimeout(() => controller.abort(), this.timeout);
|
|
169
|
+
try {
|
|
170
|
+
return await this.fetchFn(url, { ...init, signal: controller.signal });
|
|
171
|
+
}
|
|
172
|
+
finally {
|
|
173
|
+
clearTimeout(timer);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
exports.A2AClient = A2AClient;
|
|
178
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/a2a/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
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.ts';
|
|
2
|
+
export { A2AClient } from './client.ts';
|
|
3
|
+
export { createA2ARemoteRunner, extractTextFromMessage } from './runner.ts';
|
|
4
|
+
export type { A2ARemoteRunnerConfig } from './runner.ts';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC5E,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// A2A 模块统一导出
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.extractTextFromMessage = exports.createA2ARemoteRunner = exports.A2AClient = void 0;
|
|
7
|
+
var client_ts_1 = require("./client.js");
|
|
8
|
+
Object.defineProperty(exports, "A2AClient", { enumerable: true, get: function () { return client_ts_1.A2AClient; } });
|
|
9
|
+
var runner_ts_1 = require("./runner.js");
|
|
10
|
+
Object.defineProperty(exports, "createA2ARemoteRunner", { enumerable: true, get: function () { return runner_ts_1.createA2ARemoteRunner; } });
|
|
11
|
+
Object.defineProperty(exports, "extractTextFromMessage", { enumerable: true, get: function () { return runner_ts_1.extractTextFromMessage; } });
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/a2a/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,aAAa;AACb,+DAA+D;;;AA4B/D,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAElB,yCAA4E;AAAnE,kHAAA,qBAAqB,OAAA;AAAE,mHAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { SubAgentRunner } from '../tool/delegate.ts';
|
|
2
|
+
import type { A2AMessage } from './types.ts';
|
|
3
|
+
import { A2AClient } from './client.ts';
|
|
4
|
+
/** 从 A2A Message 中提取文本内容 */
|
|
5
|
+
export declare function extractTextFromMessage(message?: A2AMessage): string;
|
|
6
|
+
/** createA2ARemoteRunner 配置项 */
|
|
7
|
+
export interface A2ARemoteRunnerConfig {
|
|
8
|
+
/** 远程 Agent 的 A2A 端点 URL(Agent Card 中的 url 字段) */
|
|
9
|
+
agentUrl: string;
|
|
10
|
+
/** Runner 标识名(展示用,如 "[Remote] MyAgent") */
|
|
11
|
+
name: string;
|
|
12
|
+
/** Runner 能力描述(供 LLM 理解) */
|
|
13
|
+
description: string;
|
|
14
|
+
/** 是否启用流式(tasks/sendSubscribe);false 则走同步(tasks/send) */
|
|
15
|
+
streaming?: boolean;
|
|
16
|
+
/** A2A 客户端实例(外部注入,便于复用和自定义配置) */
|
|
17
|
+
client: A2AClient;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 创建远程 A2A Agent 的 SubAgentRunner
|
|
21
|
+
*
|
|
22
|
+
* 核心逻辑:
|
|
23
|
+
* - streaming=true && ctx.emitSubEvent 存在 → sendTaskStreaming + 事件转发
|
|
24
|
+
* - 否则 → sendTask 同步阻塞
|
|
25
|
+
*
|
|
26
|
+
* 转发的事件类型:
|
|
27
|
+
* - start: runner 开始执行
|
|
28
|
+
* - progress: 远程 Agent 返回 working 状态
|
|
29
|
+
* - artifact: 远程 Agent 生成文件产物
|
|
30
|
+
* - done: 任务完成
|
|
31
|
+
* - error: 任务失败或网络异常
|
|
32
|
+
*/
|
|
33
|
+
export declare function createA2ARemoteRunner(config: A2ARemoteRunnerConfig): SubAgentRunner;
|
|
34
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/a2a/runner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAA0C,MAAM,YAAY,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,4BAA4B;AAC5B,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,CAMnE;AAED,gCAAgC;AAChC,MAAM,WAAW,qBAAqB;IACpC,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iCAAiC;IACjC,MAAM,EAAE,SAAS,CAAC;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,cAAc,CAgFnF"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// A2A Remote Runner 工厂 — 将远程 A2A Agent 包装为 SubAgentRunner
|
|
4
|
+
// 纯协议适配逻辑,不依赖任何持久化/缓存/路由设施
|
|
5
|
+
// ============================================================
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.extractTextFromMessage = extractTextFromMessage;
|
|
8
|
+
exports.createA2ARemoteRunner = createA2ARemoteRunner;
|
|
9
|
+
/** 从 A2A Message 中提取文本内容 */
|
|
10
|
+
function extractTextFromMessage(message) {
|
|
11
|
+
if (!message?.parts)
|
|
12
|
+
return '';
|
|
13
|
+
return message.parts
|
|
14
|
+
.filter((p) => p.kind === 'text')
|
|
15
|
+
.map(p => p.text)
|
|
16
|
+
.join('\n');
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 创建远程 A2A Agent 的 SubAgentRunner
|
|
20
|
+
*
|
|
21
|
+
* 核心逻辑:
|
|
22
|
+
* - streaming=true && ctx.emitSubEvent 存在 → sendTaskStreaming + 事件转发
|
|
23
|
+
* - 否则 → sendTask 同步阻塞
|
|
24
|
+
*
|
|
25
|
+
* 转发的事件类型:
|
|
26
|
+
* - start: runner 开始执行
|
|
27
|
+
* - progress: 远程 Agent 返回 working 状态
|
|
28
|
+
* - artifact: 远程 Agent 生成文件产物
|
|
29
|
+
* - done: 任务完成
|
|
30
|
+
* - error: 任务失败或网络异常
|
|
31
|
+
*/
|
|
32
|
+
function createA2ARemoteRunner(config) {
|
|
33
|
+
const { agentUrl, name: runnerName, description: runnerDesc, streaming, client } = config;
|
|
34
|
+
// ---- 流式执行(tasks/sendSubscribe + 事件转发)----
|
|
35
|
+
const runStreaming = async (task, ctx) => {
|
|
36
|
+
const emit = ctx.emitSubEvent;
|
|
37
|
+
const parentCallId = ctx.currentToolCallId || `a2a_${Date.now()}`;
|
|
38
|
+
const taskId = crypto.randomUUID();
|
|
39
|
+
emitStart(emit, parentCallId, runnerName, task);
|
|
40
|
+
try {
|
|
41
|
+
const events = await client.sendTaskStreaming(agentUrl, {
|
|
42
|
+
id: taskId,
|
|
43
|
+
message: {
|
|
44
|
+
kind: 'message',
|
|
45
|
+
role: 'user',
|
|
46
|
+
messageId: crypto.randomUUID(),
|
|
47
|
+
parts: [{ kind: 'text', text: task }],
|
|
48
|
+
},
|
|
49
|
+
}, (event) => forwardSSEEvent(emit, parentCallId, runnerName, event));
|
|
50
|
+
// 提取最终结果
|
|
51
|
+
const statusEvents = events
|
|
52
|
+
.filter((e) => e.kind === 'status-update');
|
|
53
|
+
const finalEvent = statusEvents.find(e => e.final === true) || statusEvents[statusEvents.length - 1];
|
|
54
|
+
if (finalEvent?.status?.state === 'failed') {
|
|
55
|
+
const errorText = extractTextFromMessage(finalEvent.status?.message);
|
|
56
|
+
const msg = errorText || 'Remote agent returned error';
|
|
57
|
+
emitError(emit, parentCallId, runnerName, msg);
|
|
58
|
+
return `[A2A Remote Agent '${runnerName}'] Error: ${msg}`;
|
|
59
|
+
}
|
|
60
|
+
const resultText = extractTextFromMessage(finalEvent?.status?.message) || 'Task completed with no output.';
|
|
61
|
+
emitDone(emit, parentCallId, runnerName, resultText.length);
|
|
62
|
+
return resultText;
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
emitError(emit, parentCallId, runnerName, err.message || err);
|
|
66
|
+
return `[A2A Remote Agent '${runnerName}'] Error: ${err.message || err}`;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
// ---- 同步执行(tasks/send,无事件转发)----
|
|
70
|
+
const runSync = async (task) => {
|
|
71
|
+
try {
|
|
72
|
+
const result = await client.sendTask(agentUrl, {
|
|
73
|
+
id: crypto.randomUUID(),
|
|
74
|
+
message: {
|
|
75
|
+
kind: 'message',
|
|
76
|
+
role: 'user',
|
|
77
|
+
messageId: crypto.randomUUID(),
|
|
78
|
+
parts: [{ kind: 'text', text: task }],
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
const textParts = result.status?.message?.parts
|
|
82
|
+
?.filter((p) => p.kind === 'text')
|
|
83
|
+
.map(p => p.text) ?? [];
|
|
84
|
+
if (textParts.length > 0)
|
|
85
|
+
return textParts.join('\n');
|
|
86
|
+
return `[A2A Remote Agent '${runnerName}'] Task ${result.id} completed with state: ${result.status?.state || 'unknown'}`;
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
return `[A2A Remote Agent '${runnerName}'] Error: ${err.message || err}`;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
return {
|
|
93
|
+
name: runnerName,
|
|
94
|
+
description: runnerDesc,
|
|
95
|
+
run: async (task, ctx, _options) => {
|
|
96
|
+
return streaming && ctx?.emitSubEvent
|
|
97
|
+
? runStreaming(task, ctx)
|
|
98
|
+
: runSync(task);
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
// ---- 事件转发辅助函数 ----
|
|
103
|
+
function emitStart(emit, parentCallId, agentName, task) {
|
|
104
|
+
emit?.({
|
|
105
|
+
parentToolCallId: parentCallId,
|
|
106
|
+
agentName,
|
|
107
|
+
eventType: 'start',
|
|
108
|
+
data: { agentName, task, source: 'a2a-streaming' },
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
function forwardSSEEvent(emit, parentCallId, agentName, event) {
|
|
112
|
+
if (event.kind === 'status-update') {
|
|
113
|
+
const state = event.status?.state;
|
|
114
|
+
if (state === 'working') {
|
|
115
|
+
emit?.({
|
|
116
|
+
parentToolCallId: parentCallId,
|
|
117
|
+
agentName,
|
|
118
|
+
eventType: 'progress',
|
|
119
|
+
data: { state, timestamp: event.status?.timestamp },
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else if (event.kind === 'artifact-update') {
|
|
124
|
+
emit?.({
|
|
125
|
+
parentToolCallId: parentCallId,
|
|
126
|
+
agentName,
|
|
127
|
+
eventType: 'artifact',
|
|
128
|
+
data: { artifactId: event.artifact?.artifactId, name: event.artifact?.name },
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function emitDone(emit, parentCallId, agentName, contentLength) {
|
|
133
|
+
emit?.({
|
|
134
|
+
parentToolCallId: parentCallId,
|
|
135
|
+
agentName,
|
|
136
|
+
eventType: 'done',
|
|
137
|
+
data: { contentLength },
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
function emitError(emit, parentCallId, agentName, error) {
|
|
141
|
+
emit?.({
|
|
142
|
+
parentToolCallId: parentCallId,
|
|
143
|
+
agentName,
|
|
144
|
+
eventType: 'error',
|
|
145
|
+
data: { error },
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/a2a/runner.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,0DAA0D;AAC1D,2BAA2B;AAC3B,+DAA+D;;AAQ/D,wDAMC;AA8BD,sDAgFC;AArHD,4BAA4B;AAC5B,SAAgB,sBAAsB,CAAC,OAAoB;IACzD,IAAI,CAAC,OAAO,EAAE,KAAK;QAAE,OAAO,EAAE,CAAC;IAC/B,OAAO,OAAO,CAAC,KAAK;SACjB,MAAM,CAAC,CAAC,CAAC,EAAuC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SACrE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAChB,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAgBD;;;;;;;;;;;;;GAaG;AACH,SAAgB,qBAAqB,CAAC,MAA6B;IACjE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE1F,4CAA4C;IAC5C,MAAM,YAAY,GAAG,KAAK,EAAE,IAAY,EAAE,GAAgB,EAAmB,EAAE;QAC7E,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC;QAC9B,MAAM,YAAY,GAAG,GAAG,CAAC,iBAAiB,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAClE,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAEnC,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAEhD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAC3C,QAAQ,EACR;gBACE,EAAE,EAAE,MAAM;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,MAAM;oBACZ,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE;oBAC9B,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;iBACtC;aACF,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAClE,CAAC;YAEF,SAAS;YACT,MAAM,YAAY,GAAG,MAAM;iBACxB,MAAM,CAAC,CAAC,CAAC,EAAiC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;YAC5E,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAErG,IAAI,UAAU,EAAE,MAAM,EAAE,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,sBAAsB,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACrE,MAAM,GAAG,GAAG,SAAS,IAAI,6BAA6B,CAAC;gBACvD,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;gBAC/C,OAAO,sBAAsB,UAAU,aAAa,GAAG,EAAE,CAAC;YAC5D,CAAC;YAED,MAAM,UAAU,GAAG,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,gCAAgC,CAAC;YAC3G,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YAC5D,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;YAC9D,OAAO,sBAAsB,UAAU,aAAa,GAAG,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC;QAC3E,CAAC;IACH,CAAC,CAAC;IAEF,kCAAkC;IAClC,MAAM,OAAO,GAAG,KAAK,EAAE,IAAY,EAAmB,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBAC7C,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;gBACvB,OAAO,EAAE;oBACP,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,MAAM;oBACZ,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE;oBAC9B,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;iBACtC;aACF,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK;gBAC7C,EAAE,MAAM,CAAC,CAAC,CAAC,EAAuC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;iBACtE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAE1B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,OAAO,sBAAsB,UAAU,WAAW,MAAM,CAAC,EAAE,0BAA0B,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,SAAS,EAAE,CAAC;QAC3H,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,sBAAsB,UAAU,aAAa,GAAG,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC;QAC3E,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,UAAU;QACvB,GAAG,EAAE,KAAK,EAAE,IAAY,EAAE,GAAG,EAAE,QAAQ,EAAmB,EAAE;YAC1D,OAAO,SAAS,IAAI,GAAG,EAAE,YAAY;gBACnC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;gBACzB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,qBAAqB;AAErB,SAAS,SAAS,CAAC,IAAsC,EAAE,YAAoB,EAAE,SAAiB,EAAE,IAAY;IAC9G,IAAI,EAAE,CAAC;QACL,gBAAgB,EAAE,YAAY;QAC9B,SAAS;QACT,SAAS,EAAE,OAAO;QAClB,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE;KACnD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,IAAsC,EAAE,YAAoB,EAAE,SAAiB,EAAE,KAAmB;IAC3H,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,EAAE,CAAC;gBACL,gBAAgB,EAAE,YAAY;gBAC9B,SAAS;gBACT,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE;aACpD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAC5C,IAAI,EAAE,CAAC;YACL,gBAAgB,EAAE,YAAY;YAC9B,SAAS;YACT,SAAS,EAAE,UAAU;YACrB,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE;SAC7E,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAsC,EAAE,YAAoB,EAAE,SAAiB,EAAE,aAAqB;IACtH,IAAI,EAAE,CAAC;QACL,gBAAgB,EAAE,YAAY;QAC9B,SAAS;QACT,SAAS,EAAE,MAAM;QACjB,IAAI,EAAE,EAAE,aAAa,EAAE;KACxB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,IAAsC,EAAE,YAAoB,EAAE,SAAiB,EAAE,KAAa;IAC/G,IAAI,EAAE,CAAC;QACL,gBAAgB,EAAE,YAAY;QAC9B,SAAS;QACT,SAAS,EAAE,OAAO;QAClB,IAAI,EAAE,EAAE,KAAK,EAAE;KAChB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/** Agent 技能描述 */
|
|
2
|
+
export interface A2AAgentSkill {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
tags?: string[];
|
|
7
|
+
examples?: string[];
|
|
8
|
+
inputModes?: string[];
|
|
9
|
+
outputModes?: string[];
|
|
10
|
+
}
|
|
11
|
+
/** Agent 能力声明 */
|
|
12
|
+
export interface A2AAgentCapabilities {
|
|
13
|
+
streaming: boolean;
|
|
14
|
+
pushNotifications: boolean;
|
|
15
|
+
stateTransitionHistory?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/** Agent Card — 通过 /.well-known/agent.json 发布 */
|
|
18
|
+
export interface A2AAgentCard {
|
|
19
|
+
name: string;
|
|
20
|
+
description: string;
|
|
21
|
+
url: string;
|
|
22
|
+
version: string;
|
|
23
|
+
provider?: {
|
|
24
|
+
organization: string;
|
|
25
|
+
url?: string;
|
|
26
|
+
};
|
|
27
|
+
capabilities: A2AAgentCapabilities;
|
|
28
|
+
skills: A2AAgentSkill[];
|
|
29
|
+
defaultInputModes: string[];
|
|
30
|
+
defaultOutputModes: string[];
|
|
31
|
+
supportsAuthenticatedExtendedCard?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface A2ATextPart {
|
|
34
|
+
kind: 'text';
|
|
35
|
+
text: string;
|
|
36
|
+
}
|
|
37
|
+
export interface A2AFilePart {
|
|
38
|
+
kind: 'file';
|
|
39
|
+
file: {
|
|
40
|
+
name?: string;
|
|
41
|
+
mimeType?: string;
|
|
42
|
+
bytes?: string;
|
|
43
|
+
uri?: string;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export interface A2ADataPart {
|
|
47
|
+
kind: 'data';
|
|
48
|
+
data: Record<string, unknown>;
|
|
49
|
+
}
|
|
50
|
+
export type A2APart = A2ATextPart | A2AFilePart | A2ADataPart;
|
|
51
|
+
export interface A2AMessage {
|
|
52
|
+
kind: 'message';
|
|
53
|
+
role: 'user' | 'agent';
|
|
54
|
+
messageId: string;
|
|
55
|
+
parts: A2APart[];
|
|
56
|
+
taskId?: string;
|
|
57
|
+
contextId?: string;
|
|
58
|
+
referenceTaskIds?: string[];
|
|
59
|
+
metadata?: Record<string, unknown>;
|
|
60
|
+
}
|
|
61
|
+
export type A2ATaskState = 'submitted' | 'working' | 'input-required' | 'completed' | 'failed' | 'canceled' | 'unknown';
|
|
62
|
+
export interface A2ATaskStatus {
|
|
63
|
+
state: A2ATaskState;
|
|
64
|
+
message?: A2AMessage;
|
|
65
|
+
timestamp?: string;
|
|
66
|
+
}
|
|
67
|
+
export interface A2AArtifact {
|
|
68
|
+
artifactId: string;
|
|
69
|
+
name?: string;
|
|
70
|
+
description?: string;
|
|
71
|
+
parts: A2APart[];
|
|
72
|
+
metadata?: Record<string, unknown>;
|
|
73
|
+
}
|
|
74
|
+
export interface A2ATask {
|
|
75
|
+
id: string;
|
|
76
|
+
contextId: string;
|
|
77
|
+
status: A2ATaskStatus;
|
|
78
|
+
artifacts?: A2AArtifact[];
|
|
79
|
+
history?: A2AMessage[];
|
|
80
|
+
metadata?: Record<string, unknown>;
|
|
81
|
+
}
|
|
82
|
+
export interface A2ATaskStatusUpdateEvent {
|
|
83
|
+
kind: 'status-update';
|
|
84
|
+
taskId: string;
|
|
85
|
+
contextId: string;
|
|
86
|
+
status: A2ATaskStatus;
|
|
87
|
+
final: boolean;
|
|
88
|
+
metadata?: Record<string, unknown>;
|
|
89
|
+
}
|
|
90
|
+
export interface A2ATaskArtifactUpdateEvent {
|
|
91
|
+
kind: 'artifact-update';
|
|
92
|
+
taskId: string;
|
|
93
|
+
contextId: string;
|
|
94
|
+
artifact: A2AArtifact;
|
|
95
|
+
metadata?: Record<string, unknown>;
|
|
96
|
+
}
|
|
97
|
+
export type A2ATaskEvent = A2ATaskStatusUpdateEvent | A2ATaskArtifactUpdateEvent;
|
|
98
|
+
export interface A2AJsonRpcRequest {
|
|
99
|
+
jsonrpc: '2.0';
|
|
100
|
+
id: string;
|
|
101
|
+
method: string;
|
|
102
|
+
params?: Record<string, unknown>;
|
|
103
|
+
}
|
|
104
|
+
export interface A2AJsonRpcError {
|
|
105
|
+
code: number;
|
|
106
|
+
message: string;
|
|
107
|
+
data?: unknown;
|
|
108
|
+
}
|
|
109
|
+
export interface A2AJsonRpcResponse {
|
|
110
|
+
jsonrpc: '2.0';
|
|
111
|
+
id: string;
|
|
112
|
+
result?: unknown;
|
|
113
|
+
error?: A2AJsonRpcError;
|
|
114
|
+
}
|
|
115
|
+
/** tasks/send 参数 */
|
|
116
|
+
export interface A2ASendTaskParams {
|
|
117
|
+
id: string;
|
|
118
|
+
contextId?: string;
|
|
119
|
+
message: A2AMessage;
|
|
120
|
+
acceptedOutputModes?: string[];
|
|
121
|
+
pushNotificationConfig?: {
|
|
122
|
+
url: string;
|
|
123
|
+
token?: string;
|
|
124
|
+
};
|
|
125
|
+
metadata?: Record<string, unknown>;
|
|
126
|
+
}
|
|
127
|
+
/** tasks/sendSubscribe 参数(同 tasks/send,但返回 SSE 流) */
|
|
128
|
+
export type A2ASendSubscribeParams = A2ASendTaskParams;
|
|
129
|
+
/** tasks/get 参数 */
|
|
130
|
+
export interface A2AGetTaskParams {
|
|
131
|
+
id: string;
|
|
132
|
+
historyLength?: number;
|
|
133
|
+
}
|
|
134
|
+
/** tasks/cancel 参数 */
|
|
135
|
+
export interface A2ACancelTaskParams {
|
|
136
|
+
id: string;
|
|
137
|
+
}
|
|
138
|
+
/** 存储在 data/a2a-remotes.json 中的远程 Agent 配置 */
|
|
139
|
+
export interface A2ARemoteAgentConfig {
|
|
140
|
+
id: string;
|
|
141
|
+
name: string;
|
|
142
|
+
url: string;
|
|
143
|
+
agentCardUrl: string;
|
|
144
|
+
enabled: boolean;
|
|
145
|
+
discoveredAt?: string;
|
|
146
|
+
lastCheckedAt?: string;
|
|
147
|
+
card?: A2AAgentCard;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/a2a/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// A2A (Agent-to-Agent) 协议核心类型定义
|
|
4
|
+
// 基于 A2A Protocol v1.x(Linux Foundation / Google)
|
|
5
|
+
// JSON-RPC 2.0 over HTTP(S)
|
|
6
|
+
// ============================================================
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/a2a/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gCAAgC;AAChC,kDAAkD;AAClD,4BAA4B;AAC5B,+DAA+D"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -71,4 +71,7 @@ export type { PipelineOptions, PipelineResult } from './memory/pipeline.ts';
|
|
|
71
71
|
export { getDataPath, getProjectDataPath, ensureDataDir, ensureProjectDataDir, expandEnvVars, setAppName, getAppName, } from './utils/data-dir.ts';
|
|
72
72
|
export { collectEngineOutput } from './utils/event-collector.ts';
|
|
73
73
|
export type { EngineRunResult } from './utils/event-collector.ts';
|
|
74
|
+
export { A2AClient, createA2ARemoteRunner, extractTextFromMessage, } from './a2a/index.ts';
|
|
75
|
+
export type { A2ARemoteRunnerConfig, } from './a2a/index.ts';
|
|
76
|
+
export type { A2AAgentCard, A2AAgentSkill, A2AAgentCapabilities, A2APart, A2ATextPart, A2AFilePart, A2ADataPart, A2AMessage, A2ATaskState, A2ATaskStatus, A2AArtifact, A2ATask, A2ATaskStatusUpdateEvent, A2ATaskArtifactUpdateEvent, A2ATaskEvent, A2AJsonRpcRequest, A2AJsonRpcResponse, A2AJsonRpcError, A2ASendTaskParams, A2ASendSubscribeParams, A2AGetTaskParams, A2ACancelTaskParams, A2ARemoteAgentConfig, } from './a2a/index.ts';
|
|
74
77
|
//# sourceMappingURL=index.d.ts.map
|