@agent-relay/sdk 3.2.3 → 3.2.4
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/dist/communicate/a2a-bridge.d.ts +25 -0
- package/dist/communicate/a2a-bridge.d.ts.map +1 -0
- package/dist/communicate/a2a-bridge.js +89 -0
- package/dist/communicate/a2a-bridge.js.map +1 -0
- package/dist/communicate/a2a-server.d.ts +31 -0
- package/dist/communicate/a2a-server.d.ts.map +1 -0
- package/dist/communicate/a2a-server.js +220 -0
- package/dist/communicate/a2a-server.js.map +1 -0
- package/dist/communicate/a2a-transport.d.ts +48 -0
- package/dist/communicate/a2a-transport.d.ts.map +1 -0
- package/dist/communicate/a2a-transport.js +302 -0
- package/dist/communicate/a2a-transport.js.map +1 -0
- package/dist/communicate/a2a-types.d.ts +107 -0
- package/dist/communicate/a2a-types.d.ts.map +1 -0
- package/dist/communicate/a2a-types.js +209 -0
- package/dist/communicate/a2a-types.js.map +1 -0
- package/dist/communicate/adapters/claude-sdk.d.ts +28 -0
- package/dist/communicate/adapters/claude-sdk.d.ts.map +1 -0
- package/dist/communicate/adapters/claude-sdk.js +47 -0
- package/dist/communicate/adapters/claude-sdk.js.map +1 -0
- package/dist/communicate/adapters/crewai.d.ts +42 -0
- package/dist/communicate/adapters/crewai.d.ts.map +1 -0
- package/dist/communicate/adapters/crewai.js +95 -0
- package/dist/communicate/adapters/crewai.js.map +1 -0
- package/dist/communicate/adapters/google-adk.d.ts +53 -0
- package/dist/communicate/adapters/google-adk.d.ts.map +1 -0
- package/dist/communicate/adapters/google-adk.js +77 -0
- package/dist/communicate/adapters/google-adk.js.map +1 -0
- package/dist/communicate/adapters/index.d.ts +7 -0
- package/dist/communicate/adapters/index.d.ts.map +1 -0
- package/dist/communicate/adapters/index.js +7 -0
- package/dist/communicate/adapters/index.js.map +1 -0
- package/dist/communicate/adapters/langgraph.d.ts +40 -0
- package/dist/communicate/adapters/langgraph.d.ts.map +1 -0
- package/dist/communicate/adapters/langgraph.js +77 -0
- package/dist/communicate/adapters/langgraph.js.map +1 -0
- package/dist/communicate/adapters/openai-agents.d.ts +25 -0
- package/dist/communicate/adapters/openai-agents.d.ts.map +1 -0
- package/dist/communicate/adapters/openai-agents.js +70 -0
- package/dist/communicate/adapters/openai-agents.js.map +1 -0
- package/dist/communicate/adapters/pi.d.ts +45 -0
- package/dist/communicate/adapters/pi.d.ts.map +1 -0
- package/dist/communicate/adapters/pi.js +59 -0
- package/dist/communicate/adapters/pi.js.map +1 -0
- package/dist/communicate/core.d.ts +58 -0
- package/dist/communicate/core.d.ts.map +1 -0
- package/dist/communicate/core.js +128 -0
- package/dist/communicate/core.js.map +1 -0
- package/dist/communicate/index.d.ts +4 -0
- package/dist/communicate/index.d.ts.map +1 -0
- package/dist/communicate/index.js +4 -0
- package/dist/communicate/index.js.map +1 -0
- package/dist/communicate/transport.d.ts +36 -0
- package/dist/communicate/transport.d.ts.map +1 -0
- package/dist/communicate/transport.js +371 -0
- package/dist/communicate/transport.js.map +1 -0
- package/dist/communicate/types.d.ts +58 -0
- package/dist/communicate/types.d.ts.map +1 -0
- package/dist/communicate/types.js +66 -0
- package/dist/communicate/types.js.map +1 -0
- package/dist/workflows/builder.d.ts +35 -5
- package/dist/workflows/builder.d.ts.map +1 -1
- package/dist/workflows/builder.js +81 -7
- package/dist/workflows/builder.js.map +1 -1
- package/dist/workflows/cli.js +14 -1
- package/dist/workflows/cli.js.map +1 -1
- package/dist/workflows/runner.d.ts +10 -2
- package/dist/workflows/runner.d.ts.map +1 -1
- package/dist/workflows/runner.js +95 -1
- package/dist/workflows/runner.js.map +1 -1
- package/dist/workflows/types.d.ts +11 -0
- package/dist/workflows/types.d.ts.map +1 -1
- package/package.json +48 -2
- package/dist/__tests__/completion-pipeline.test.d.ts +0 -14
- package/dist/__tests__/completion-pipeline.test.d.ts.map +0 -1
- package/dist/__tests__/completion-pipeline.test.js +0 -1476
- package/dist/__tests__/completion-pipeline.test.js.map +0 -1
- package/dist/__tests__/contract-fixtures.test.d.ts +0 -2
- package/dist/__tests__/contract-fixtures.test.d.ts.map +0 -1
- package/dist/__tests__/contract-fixtures.test.js +0 -152
- package/dist/__tests__/contract-fixtures.test.js.map +0 -1
- package/dist/__tests__/e2e-owner-review.test.d.ts +0 -16
- package/dist/__tests__/e2e-owner-review.test.d.ts.map +0 -1
- package/dist/__tests__/e2e-owner-review.test.js +0 -640
- package/dist/__tests__/e2e-owner-review.test.js.map +0 -1
- package/dist/__tests__/facade.test.d.ts +0 -2
- package/dist/__tests__/facade.test.d.ts.map +0 -1
- package/dist/__tests__/facade.test.js +0 -305
- package/dist/__tests__/facade.test.js.map +0 -1
- package/dist/__tests__/integration.test.d.ts +0 -2
- package/dist/__tests__/integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration.test.js +0 -205
- package/dist/__tests__/integration.test.js.map +0 -1
- package/dist/__tests__/pty.test.d.ts +0 -2
- package/dist/__tests__/pty.test.d.ts.map +0 -1
- package/dist/__tests__/pty.test.js +0 -20
- package/dist/__tests__/pty.test.js.map +0 -1
- package/dist/__tests__/quickstart.test.d.ts +0 -2
- package/dist/__tests__/quickstart.test.d.ts.map +0 -1
- package/dist/__tests__/quickstart.test.js +0 -176
- package/dist/__tests__/quickstart.test.js.map +0 -1
- package/dist/__tests__/spawn-from-env.test.d.ts +0 -2
- package/dist/__tests__/spawn-from-env.test.d.ts.map +0 -1
- package/dist/__tests__/spawn-from-env.test.js +0 -222
- package/dist/__tests__/spawn-from-env.test.js.map +0 -1
- package/dist/__tests__/unit.test.d.ts +0 -2
- package/dist/__tests__/unit.test.d.ts.map +0 -1
- package/dist/__tests__/unit.test.js +0 -357
- package/dist/__tests__/unit.test.js.map +0 -1
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A (Agent-to-Agent) protocol transport implementation.
|
|
3
|
+
*
|
|
4
|
+
* Client side: sends JSON-RPC 2.0 to external A2A agent endpoints.
|
|
5
|
+
* Server side: runs a local HTTP server accepting A2A JSON-RPC calls.
|
|
6
|
+
*/
|
|
7
|
+
import { randomUUID } from 'node:crypto';
|
|
8
|
+
import * as http from 'node:http';
|
|
9
|
+
import { A2A_TASK_NOT_CANCELABLE, A2A_TASK_NOT_FOUND, JSONRPC_INTERNAL_ERROR, JSONRPC_INVALID_PARAMS, JSONRPC_METHOD_NOT_FOUND, JSONRPC_PARSE_ERROR, a2aAgentCardFromDict, a2aAgentCardToDict, a2aMessageFromDict, a2aMessageGetText, a2aMessageToDict, a2aTaskToDict, createA2AAgentCard, createA2ATaskStatus, makeJsonRpcError, makeJsonRpcRequest, makeJsonRpcResponse, } from './a2a-types.js';
|
|
10
|
+
export class A2AError extends Error {
|
|
11
|
+
code;
|
|
12
|
+
constructor(code, message) {
|
|
13
|
+
super(`A2A error ${code}: ${message}`);
|
|
14
|
+
this.name = 'A2AError';
|
|
15
|
+
this.code = code;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class A2ATransport {
|
|
19
|
+
config;
|
|
20
|
+
agentName;
|
|
21
|
+
agentCard;
|
|
22
|
+
tasks = new Map();
|
|
23
|
+
_messageCallbacks = [];
|
|
24
|
+
_server;
|
|
25
|
+
_discoveredCards = new Map();
|
|
26
|
+
_closing = false;
|
|
27
|
+
constructor(config) {
|
|
28
|
+
this.config = config;
|
|
29
|
+
}
|
|
30
|
+
// === Transport interface ===
|
|
31
|
+
async register(name) {
|
|
32
|
+
this.agentName = name;
|
|
33
|
+
const host = this.config.serverHost ?? '0.0.0.0';
|
|
34
|
+
const port = this.config.serverPort ?? 5000;
|
|
35
|
+
this.agentCard = createA2AAgentCard(name, this.config.agentDescription ?? `Agent Relay agent: ${name}`, `http://${host}:{PORT}`, this.config.skills ?? []);
|
|
36
|
+
return new Promise((resolve, reject) => {
|
|
37
|
+
const server = http.createServer((req, res) => {
|
|
38
|
+
void this._handleRequest(req, res);
|
|
39
|
+
});
|
|
40
|
+
server.on('error', reject);
|
|
41
|
+
server.listen(port, host, () => {
|
|
42
|
+
this._server = server;
|
|
43
|
+
const addr = server.address();
|
|
44
|
+
const actualPort = typeof addr === 'object' && addr ? addr.port : port;
|
|
45
|
+
this.agentCard.url = `http://${host}:${actualPort}`;
|
|
46
|
+
resolve({ name, url: this.agentCard.url, type: 'a2a' });
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
async unregister() {
|
|
51
|
+
this._closing = true;
|
|
52
|
+
if (this._server) {
|
|
53
|
+
await new Promise((resolve, reject) => {
|
|
54
|
+
this._server.close((err) => (err ? reject(err) : resolve()));
|
|
55
|
+
});
|
|
56
|
+
this._server = undefined;
|
|
57
|
+
}
|
|
58
|
+
this._closing = false;
|
|
59
|
+
}
|
|
60
|
+
async sendDm(target, text) {
|
|
61
|
+
const card = await this._discoverAgent(target);
|
|
62
|
+
const message = {
|
|
63
|
+
role: 'user',
|
|
64
|
+
parts: [{ text }],
|
|
65
|
+
messageId: randomUUID(),
|
|
66
|
+
};
|
|
67
|
+
const rpcRequest = makeJsonRpcRequest('message/send', {
|
|
68
|
+
message: a2aMessageToDict(message),
|
|
69
|
+
});
|
|
70
|
+
const headers = {
|
|
71
|
+
'Content-Type': 'application/json',
|
|
72
|
+
...this._authHeaders(),
|
|
73
|
+
};
|
|
74
|
+
const response = await fetch(card.url, {
|
|
75
|
+
method: 'POST',
|
|
76
|
+
headers,
|
|
77
|
+
body: JSON.stringify(rpcRequest),
|
|
78
|
+
});
|
|
79
|
+
const body = (await response.json());
|
|
80
|
+
if (body.error) {
|
|
81
|
+
throw new A2AError(body.error.code, body.error.message);
|
|
82
|
+
}
|
|
83
|
+
const result = (body.result ?? {});
|
|
84
|
+
return this._a2aResultToRelay(result, card.name);
|
|
85
|
+
}
|
|
86
|
+
async listAgents() {
|
|
87
|
+
const agents = [];
|
|
88
|
+
for (const url of this.config.registry ?? []) {
|
|
89
|
+
try {
|
|
90
|
+
const card = await this._discoverAgent(url);
|
|
91
|
+
agents.push({
|
|
92
|
+
name: card.name,
|
|
93
|
+
url: card.url,
|
|
94
|
+
description: card.description,
|
|
95
|
+
skills: card.skills.map((s) => ({ id: s.id, name: s.name, description: s.description })),
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return agents;
|
|
103
|
+
}
|
|
104
|
+
onMessage(callback) {
|
|
105
|
+
this._messageCallbacks.push(callback);
|
|
106
|
+
}
|
|
107
|
+
async connectWs() {
|
|
108
|
+
// A2A uses HTTP, not WebSocket. No-op.
|
|
109
|
+
}
|
|
110
|
+
// === HTTP request handler ===
|
|
111
|
+
async _handleRequest(req, res) {
|
|
112
|
+
if (req.method === 'GET' && req.url === '/.well-known/agent.json') {
|
|
113
|
+
await this._handleAgentCard(res);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (req.method === 'POST' && (req.url === '/' || req.url === '')) {
|
|
117
|
+
await this._handleJsonRpcHttp(req, res);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
res.writeHead(404, { 'Content-Type': 'application/json' });
|
|
121
|
+
res.end(JSON.stringify({ error: 'Not found' }));
|
|
122
|
+
}
|
|
123
|
+
async _handleAgentCard(res) {
|
|
124
|
+
if (!this.agentCard) {
|
|
125
|
+
res.writeHead(503, { 'Content-Type': 'application/json' });
|
|
126
|
+
res.end(JSON.stringify({ error: 'Not registered' }));
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
130
|
+
res.end(JSON.stringify(a2aAgentCardToDict(this.agentCard)));
|
|
131
|
+
}
|
|
132
|
+
async _handleJsonRpcHttp(req, res) {
|
|
133
|
+
let body;
|
|
134
|
+
try {
|
|
135
|
+
const raw = await this._readBody(req);
|
|
136
|
+
body = JSON.parse(raw);
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
const error = makeJsonRpcError(JSONRPC_PARSE_ERROR, 'Parse error', null);
|
|
140
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
141
|
+
res.end(JSON.stringify(error));
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const result = await this._dispatchJsonRpc(body);
|
|
145
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
146
|
+
res.end(JSON.stringify(result));
|
|
147
|
+
}
|
|
148
|
+
_readBody(req) {
|
|
149
|
+
return new Promise((resolve, reject) => {
|
|
150
|
+
const chunks = [];
|
|
151
|
+
req.on('data', (chunk) => chunks.push(chunk));
|
|
152
|
+
req.on('end', () => resolve(Buffer.concat(chunks).toString()));
|
|
153
|
+
req.on('error', reject);
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
// === JSON-RPC dispatch ===
|
|
157
|
+
async _dispatchJsonRpc(request) {
|
|
158
|
+
const rpcId = (request.id ?? null);
|
|
159
|
+
const method = (request.method ?? '');
|
|
160
|
+
const params = (request.params ?? {});
|
|
161
|
+
const handlers = {
|
|
162
|
+
'message/send': (p) => this._handleMessageSend(p),
|
|
163
|
+
'tasks/get': (p) => this._handleTasksGet(p),
|
|
164
|
+
'tasks/cancel': (p) => this._handleTasksCancel(p),
|
|
165
|
+
};
|
|
166
|
+
const handler = handlers[method];
|
|
167
|
+
if (!handler) {
|
|
168
|
+
return makeJsonRpcError(JSONRPC_METHOD_NOT_FOUND, `Method not found: ${method}`, rpcId);
|
|
169
|
+
}
|
|
170
|
+
try {
|
|
171
|
+
const result = await handler(params);
|
|
172
|
+
return makeJsonRpcResponse(result, rpcId);
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
if (err instanceof A2AError) {
|
|
176
|
+
return makeJsonRpcError(err.code, err.message, rpcId);
|
|
177
|
+
}
|
|
178
|
+
return makeJsonRpcError(JSONRPC_INTERNAL_ERROR, String(err), rpcId);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
async _handleMessageSend(params) {
|
|
182
|
+
const msgData = params.message;
|
|
183
|
+
if (!msgData) {
|
|
184
|
+
throw new A2AError(JSONRPC_INVALID_PARAMS, "Missing 'message' in params");
|
|
185
|
+
}
|
|
186
|
+
const a2aMsg = a2aMessageFromDict(msgData);
|
|
187
|
+
const taskId = a2aMsg.taskId ?? randomUUID();
|
|
188
|
+
const contextId = a2aMsg.contextId ?? randomUUID();
|
|
189
|
+
let task;
|
|
190
|
+
if (this.tasks.has(taskId)) {
|
|
191
|
+
task = this.tasks.get(taskId);
|
|
192
|
+
task.messages.push(a2aMsg);
|
|
193
|
+
task.status = createA2ATaskStatus('working');
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
task = {
|
|
197
|
+
id: taskId,
|
|
198
|
+
contextId,
|
|
199
|
+
status: createA2ATaskStatus('working'),
|
|
200
|
+
messages: [a2aMsg],
|
|
201
|
+
artifacts: [],
|
|
202
|
+
};
|
|
203
|
+
this.tasks.set(taskId, task);
|
|
204
|
+
}
|
|
205
|
+
// Convert to Relay message and invoke callbacks
|
|
206
|
+
const relayMsg = A2ATransport._a2aToRelayMsg(a2aMsg, 'a2a-client');
|
|
207
|
+
await this._invokeCallbacks(relayMsg);
|
|
208
|
+
// Mark completed
|
|
209
|
+
task.status = createA2ATaskStatus('completed');
|
|
210
|
+
return a2aTaskToDict(task);
|
|
211
|
+
}
|
|
212
|
+
async _handleTasksGet(params) {
|
|
213
|
+
const taskId = params.id ?? '';
|
|
214
|
+
if (!taskId || !this.tasks.has(taskId)) {
|
|
215
|
+
throw new A2AError(A2A_TASK_NOT_FOUND, `Task not found: ${taskId}`);
|
|
216
|
+
}
|
|
217
|
+
return a2aTaskToDict(this.tasks.get(taskId));
|
|
218
|
+
}
|
|
219
|
+
async _handleTasksCancel(params) {
|
|
220
|
+
const taskId = params.id ?? '';
|
|
221
|
+
if (!taskId || !this.tasks.has(taskId)) {
|
|
222
|
+
throw new A2AError(A2A_TASK_NOT_FOUND, `Task not found: ${taskId}`);
|
|
223
|
+
}
|
|
224
|
+
const task = this.tasks.get(taskId);
|
|
225
|
+
if (['completed', 'failed', 'canceled'].includes(task.status.state)) {
|
|
226
|
+
throw new A2AError(A2A_TASK_NOT_CANCELABLE, `Task ${taskId} is already ${task.status.state}`);
|
|
227
|
+
}
|
|
228
|
+
task.status = createA2ATaskStatus('canceled');
|
|
229
|
+
return a2aTaskToDict(task);
|
|
230
|
+
}
|
|
231
|
+
// === Agent discovery ===
|
|
232
|
+
async _discoverAgent(url) {
|
|
233
|
+
const normalizedUrl = url.replace(/\/+$/, '');
|
|
234
|
+
if (this._discoveredCards.has(normalizedUrl)) {
|
|
235
|
+
return this._discoveredCards.get(normalizedUrl);
|
|
236
|
+
}
|
|
237
|
+
const cardUrl = `${normalizedUrl}/.well-known/agent.json`;
|
|
238
|
+
const response = await fetch(cardUrl);
|
|
239
|
+
if (!response.ok) {
|
|
240
|
+
throw new A2AError(-1, `Failed to discover agent at ${cardUrl}: HTTP ${response.status}`);
|
|
241
|
+
}
|
|
242
|
+
const data = (await response.json());
|
|
243
|
+
const card = a2aAgentCardFromDict(data);
|
|
244
|
+
this._discoveredCards.set(normalizedUrl, card);
|
|
245
|
+
return card;
|
|
246
|
+
}
|
|
247
|
+
// === Message conversion ===
|
|
248
|
+
static _relayMsgToA2A(text, _sender) {
|
|
249
|
+
return {
|
|
250
|
+
role: 'user',
|
|
251
|
+
parts: [{ text }],
|
|
252
|
+
messageId: randomUUID(),
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
static _a2aToRelayMsg(msg, sender = 'unknown') {
|
|
256
|
+
const text = a2aMessageGetText(msg);
|
|
257
|
+
return {
|
|
258
|
+
sender,
|
|
259
|
+
text,
|
|
260
|
+
channel: undefined,
|
|
261
|
+
threadId: msg.contextId,
|
|
262
|
+
messageId: msg.messageId,
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
_a2aResultToRelay(result, sender) {
|
|
266
|
+
const messages = result.messages ?? [];
|
|
267
|
+
let text = '';
|
|
268
|
+
if (messages.length > 0) {
|
|
269
|
+
const lastMsg = messages[messages.length - 1];
|
|
270
|
+
const parts = lastMsg.parts ?? [];
|
|
271
|
+
text = parts
|
|
272
|
+
.filter((p) => p.text)
|
|
273
|
+
.map((p) => p.text)
|
|
274
|
+
.join(' ');
|
|
275
|
+
}
|
|
276
|
+
return {
|
|
277
|
+
sender,
|
|
278
|
+
text,
|
|
279
|
+
task_id: result.id,
|
|
280
|
+
status: result.status?.state,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
// === Internal helpers ===
|
|
284
|
+
async _invokeCallbacks(msg) {
|
|
285
|
+
for (const cb of this._messageCallbacks) {
|
|
286
|
+
await cb(msg);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
_authHeaders() {
|
|
290
|
+
const headers = {};
|
|
291
|
+
if (this.config.authToken) {
|
|
292
|
+
if (this.config.authScheme === 'api_key') {
|
|
293
|
+
headers['X-API-Key'] = this.config.authToken;
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
headers['Authorization'] = `Bearer ${this.config.authToken}`;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
return headers;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=a2a-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a-transport.js","sourceRoot":"","sources":["../../src/communicate/a2a-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A (Agent-to-Agent) protocol data model types.
|
|
3
|
+
*/
|
|
4
|
+
export interface A2APart {
|
|
5
|
+
text?: string;
|
|
6
|
+
file?: Record<string, unknown>;
|
|
7
|
+
data?: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export interface A2AMessage {
|
|
10
|
+
role: 'user' | 'agent';
|
|
11
|
+
parts: A2APart[];
|
|
12
|
+
messageId?: string;
|
|
13
|
+
contextId?: string;
|
|
14
|
+
taskId?: string;
|
|
15
|
+
}
|
|
16
|
+
export type A2ATaskState = 'submitted' | 'working' | 'completed' | 'failed' | 'canceled';
|
|
17
|
+
export declare const VALID_TASK_STATES: ReadonlySet<string>;
|
|
18
|
+
export interface A2ATaskStatus {
|
|
19
|
+
state: A2ATaskState;
|
|
20
|
+
message?: A2AMessage;
|
|
21
|
+
timestamp?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface A2ATask {
|
|
24
|
+
id: string;
|
|
25
|
+
contextId?: string;
|
|
26
|
+
status: A2ATaskStatus;
|
|
27
|
+
messages: A2AMessage[];
|
|
28
|
+
artifacts: Record<string, unknown>[];
|
|
29
|
+
}
|
|
30
|
+
export interface A2ASkill {
|
|
31
|
+
id: string;
|
|
32
|
+
name: string;
|
|
33
|
+
description: string;
|
|
34
|
+
}
|
|
35
|
+
export interface A2AAgentCard {
|
|
36
|
+
name: string;
|
|
37
|
+
description: string;
|
|
38
|
+
url: string;
|
|
39
|
+
version: string;
|
|
40
|
+
capabilities: Record<string, unknown>;
|
|
41
|
+
skills: A2ASkill[];
|
|
42
|
+
defaultInputModes: string[];
|
|
43
|
+
defaultOutputModes: string[];
|
|
44
|
+
}
|
|
45
|
+
export interface A2AConfig {
|
|
46
|
+
/** Server mode */
|
|
47
|
+
serverPort?: number;
|
|
48
|
+
serverHost?: string;
|
|
49
|
+
/** Client mode */
|
|
50
|
+
targetUrl?: string;
|
|
51
|
+
/** Agent Card registry (known A2A agent URLs) */
|
|
52
|
+
registry?: string[];
|
|
53
|
+
/** Auth */
|
|
54
|
+
authScheme?: 'bearer' | 'api_key' | string;
|
|
55
|
+
authToken?: string;
|
|
56
|
+
/** Agent metadata */
|
|
57
|
+
agentDescription?: string;
|
|
58
|
+
skills?: A2ASkill[];
|
|
59
|
+
}
|
|
60
|
+
export declare function createA2APart(text?: string): A2APart;
|
|
61
|
+
export declare function createA2AMessage(role: 'user' | 'agent', parts: A2APart[], opts?: {
|
|
62
|
+
messageId?: string;
|
|
63
|
+
contextId?: string;
|
|
64
|
+
taskId?: string;
|
|
65
|
+
}): A2AMessage;
|
|
66
|
+
export declare function createA2ATaskStatus(state: A2ATaskState, message?: A2AMessage): A2ATaskStatus;
|
|
67
|
+
export declare function createA2ATask(id: string, contextId?: string): A2ATask;
|
|
68
|
+
export declare function createA2AAgentCard(name: string, description: string, url: string, skills?: A2ASkill[]): A2AAgentCard;
|
|
69
|
+
export declare function a2aPartToDict(part: A2APart): Record<string, unknown>;
|
|
70
|
+
export declare function a2aPartFromDict(d: Record<string, unknown>): A2APart;
|
|
71
|
+
export declare function a2aMessageToDict(msg: A2AMessage): Record<string, unknown>;
|
|
72
|
+
export declare function a2aMessageFromDict(d: Record<string, unknown>): A2AMessage;
|
|
73
|
+
export declare function a2aMessageGetText(msg: A2AMessage): string;
|
|
74
|
+
export declare function a2aTaskStatusToDict(status: A2ATaskStatus): Record<string, unknown>;
|
|
75
|
+
export declare function a2aTaskStatusFromDict(d: Record<string, unknown>): A2ATaskStatus;
|
|
76
|
+
export declare function a2aTaskToDict(task: A2ATask): Record<string, unknown>;
|
|
77
|
+
export declare function a2aTaskFromDict(d: Record<string, unknown>): A2ATask;
|
|
78
|
+
export declare function a2aSkillToDict(skill: A2ASkill): Record<string, unknown>;
|
|
79
|
+
export declare function a2aSkillFromDict(d: Record<string, unknown>): A2ASkill;
|
|
80
|
+
export declare function a2aAgentCardToDict(card: A2AAgentCard): Record<string, unknown>;
|
|
81
|
+
export declare function a2aAgentCardFromDict(d: Record<string, unknown>): A2AAgentCard;
|
|
82
|
+
export interface JsonRpcRequest {
|
|
83
|
+
jsonrpc: '2.0';
|
|
84
|
+
method: string;
|
|
85
|
+
params: Record<string, unknown>;
|
|
86
|
+
id: string | number;
|
|
87
|
+
}
|
|
88
|
+
export interface JsonRpcResponse {
|
|
89
|
+
jsonrpc: '2.0';
|
|
90
|
+
result?: unknown;
|
|
91
|
+
error?: {
|
|
92
|
+
code: number;
|
|
93
|
+
message: string;
|
|
94
|
+
};
|
|
95
|
+
id: string | number | null;
|
|
96
|
+
}
|
|
97
|
+
export declare function makeJsonRpcRequest(method: string, params: Record<string, unknown>, id?: string | number): JsonRpcRequest;
|
|
98
|
+
export declare function makeJsonRpcResponse(result: unknown, id: string | number): JsonRpcResponse;
|
|
99
|
+
export declare function makeJsonRpcError(code: number, message: string, id: string | number | null): JsonRpcResponse;
|
|
100
|
+
export declare const JSONRPC_PARSE_ERROR = -32700;
|
|
101
|
+
export declare const JSONRPC_INVALID_REQUEST = -32600;
|
|
102
|
+
export declare const JSONRPC_METHOD_NOT_FOUND = -32601;
|
|
103
|
+
export declare const JSONRPC_INVALID_PARAMS = -32602;
|
|
104
|
+
export declare const JSONRPC_INTERNAL_ERROR = -32603;
|
|
105
|
+
export declare const A2A_TASK_NOT_FOUND = -32001;
|
|
106
|
+
export declare const A2A_TASK_NOT_CANCELABLE = -32002;
|
|
107
|
+
//# sourceMappingURL=a2a-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a-types.d.ts","sourceRoot":"","sources":["../../src/communicate/a2a-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A (Agent-to-Agent) protocol data model types.
|
|
3
|
+
*/
|
|
4
|
+
import { randomUUID } from 'node:crypto';
|
|
5
|
+
export const VALID_TASK_STATES = new Set([
|
|
6
|
+
'submitted',
|
|
7
|
+
'working',
|
|
8
|
+
'completed',
|
|
9
|
+
'failed',
|
|
10
|
+
'canceled',
|
|
11
|
+
]);
|
|
12
|
+
// --- Factories ---
|
|
13
|
+
export function createA2APart(text) {
|
|
14
|
+
const part = {};
|
|
15
|
+
if (text !== undefined)
|
|
16
|
+
part.text = text;
|
|
17
|
+
return part;
|
|
18
|
+
}
|
|
19
|
+
export function createA2AMessage(role, parts, opts) {
|
|
20
|
+
return {
|
|
21
|
+
role,
|
|
22
|
+
parts,
|
|
23
|
+
messageId: opts?.messageId ?? randomUUID(),
|
|
24
|
+
contextId: opts?.contextId,
|
|
25
|
+
taskId: opts?.taskId,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function createA2ATaskStatus(state, message) {
|
|
29
|
+
return {
|
|
30
|
+
state,
|
|
31
|
+
message,
|
|
32
|
+
timestamp: new Date().toISOString(),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export function createA2ATask(id, contextId) {
|
|
36
|
+
return {
|
|
37
|
+
id,
|
|
38
|
+
contextId,
|
|
39
|
+
status: createA2ATaskStatus('submitted'),
|
|
40
|
+
messages: [],
|
|
41
|
+
artifacts: [],
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export function createA2AAgentCard(name, description, url, skills = []) {
|
|
45
|
+
return {
|
|
46
|
+
name,
|
|
47
|
+
description,
|
|
48
|
+
url,
|
|
49
|
+
version: '1.0.0',
|
|
50
|
+
capabilities: { streaming: true, pushNotifications: false },
|
|
51
|
+
skills,
|
|
52
|
+
defaultInputModes: ['text'],
|
|
53
|
+
defaultOutputModes: ['text'],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
// --- Serialization helpers ---
|
|
57
|
+
export function a2aPartToDict(part) {
|
|
58
|
+
const d = {};
|
|
59
|
+
if (part.text !== undefined)
|
|
60
|
+
d.text = part.text;
|
|
61
|
+
if (part.file !== undefined)
|
|
62
|
+
d.file = part.file;
|
|
63
|
+
if (part.data !== undefined)
|
|
64
|
+
d.data = part.data;
|
|
65
|
+
return d;
|
|
66
|
+
}
|
|
67
|
+
export function a2aPartFromDict(d) {
|
|
68
|
+
return {
|
|
69
|
+
text: d.text,
|
|
70
|
+
file: d.file,
|
|
71
|
+
data: d.data,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export function a2aMessageToDict(msg) {
|
|
75
|
+
const d = {
|
|
76
|
+
role: msg.role,
|
|
77
|
+
parts: msg.parts.map(a2aPartToDict),
|
|
78
|
+
};
|
|
79
|
+
if (msg.messageId !== undefined)
|
|
80
|
+
d.messageId = msg.messageId;
|
|
81
|
+
if (msg.contextId !== undefined)
|
|
82
|
+
d.contextId = msg.contextId;
|
|
83
|
+
if (msg.taskId !== undefined)
|
|
84
|
+
d.taskId = msg.taskId;
|
|
85
|
+
return d;
|
|
86
|
+
}
|
|
87
|
+
export function a2aMessageFromDict(d) {
|
|
88
|
+
const parts = (d.parts ?? []).map(a2aPartFromDict);
|
|
89
|
+
return {
|
|
90
|
+
role: d.role,
|
|
91
|
+
parts,
|
|
92
|
+
messageId: d.messageId,
|
|
93
|
+
contextId: d.contextId,
|
|
94
|
+
taskId: d.taskId,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
export function a2aMessageGetText(msg) {
|
|
98
|
+
return msg.parts
|
|
99
|
+
.filter((p) => p.text)
|
|
100
|
+
.map((p) => p.text)
|
|
101
|
+
.join(' ');
|
|
102
|
+
}
|
|
103
|
+
export function a2aTaskStatusToDict(status) {
|
|
104
|
+
const d = { state: status.state };
|
|
105
|
+
if (status.message !== undefined)
|
|
106
|
+
d.message = a2aMessageToDict(status.message);
|
|
107
|
+
if (status.timestamp !== undefined)
|
|
108
|
+
d.timestamp = status.timestamp;
|
|
109
|
+
return d;
|
|
110
|
+
}
|
|
111
|
+
export function a2aTaskStatusFromDict(d) {
|
|
112
|
+
let message;
|
|
113
|
+
if (d.message !== undefined && d.message !== null) {
|
|
114
|
+
message = a2aMessageFromDict(d.message);
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
state: d.state,
|
|
118
|
+
message,
|
|
119
|
+
timestamp: d.timestamp,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
export function a2aTaskToDict(task) {
|
|
123
|
+
return {
|
|
124
|
+
id: task.id,
|
|
125
|
+
contextId: task.contextId,
|
|
126
|
+
status: a2aTaskStatusToDict(task.status),
|
|
127
|
+
messages: task.messages.map(a2aMessageToDict),
|
|
128
|
+
artifacts: task.artifacts,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
export function a2aTaskFromDict(d) {
|
|
132
|
+
const status = d.status
|
|
133
|
+
? a2aTaskStatusFromDict(d.status)
|
|
134
|
+
: createA2ATaskStatus('submitted');
|
|
135
|
+
const messages = (d.messages ?? []).map(a2aMessageFromDict);
|
|
136
|
+
return {
|
|
137
|
+
id: d.id,
|
|
138
|
+
contextId: d.contextId,
|
|
139
|
+
status,
|
|
140
|
+
messages,
|
|
141
|
+
artifacts: d.artifacts ?? [],
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
export function a2aSkillToDict(skill) {
|
|
145
|
+
return { id: skill.id, name: skill.name, description: skill.description };
|
|
146
|
+
}
|
|
147
|
+
export function a2aSkillFromDict(d) {
|
|
148
|
+
return {
|
|
149
|
+
id: d.id,
|
|
150
|
+
name: d.name,
|
|
151
|
+
description: d.description,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
export function a2aAgentCardToDict(card) {
|
|
155
|
+
return {
|
|
156
|
+
name: card.name,
|
|
157
|
+
description: card.description,
|
|
158
|
+
url: card.url,
|
|
159
|
+
version: card.version,
|
|
160
|
+
capabilities: card.capabilities,
|
|
161
|
+
skills: card.skills.map(a2aSkillToDict),
|
|
162
|
+
defaultInputModes: card.defaultInputModes,
|
|
163
|
+
defaultOutputModes: card.defaultOutputModes,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
export function a2aAgentCardFromDict(d) {
|
|
167
|
+
const skills = (d.skills ?? []).map(a2aSkillFromDict);
|
|
168
|
+
return {
|
|
169
|
+
name: d.name,
|
|
170
|
+
description: d.description,
|
|
171
|
+
url: d.url,
|
|
172
|
+
version: d.version ?? '1.0.0',
|
|
173
|
+
capabilities: d.capabilities ?? {
|
|
174
|
+
streaming: true,
|
|
175
|
+
pushNotifications: false,
|
|
176
|
+
},
|
|
177
|
+
skills,
|
|
178
|
+
defaultInputModes: d.defaultInputModes ?? ['text'],
|
|
179
|
+
defaultOutputModes: d.defaultOutputModes ?? ['text'],
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
export function makeJsonRpcRequest(method, params, id) {
|
|
183
|
+
return {
|
|
184
|
+
jsonrpc: '2.0',
|
|
185
|
+
method,
|
|
186
|
+
params,
|
|
187
|
+
id: id ?? randomUUID(),
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
export function makeJsonRpcResponse(result, id) {
|
|
191
|
+
return { jsonrpc: '2.0', result, id };
|
|
192
|
+
}
|
|
193
|
+
export function makeJsonRpcError(code, message, id) {
|
|
194
|
+
return {
|
|
195
|
+
jsonrpc: '2.0',
|
|
196
|
+
error: { code, message },
|
|
197
|
+
id,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
// Standard JSON-RPC error codes
|
|
201
|
+
export const JSONRPC_PARSE_ERROR = -32700;
|
|
202
|
+
export const JSONRPC_INVALID_REQUEST = -32600;
|
|
203
|
+
export const JSONRPC_METHOD_NOT_FOUND = -32601;
|
|
204
|
+
export const JSONRPC_INVALID_PARAMS = -32602;
|
|
205
|
+
export const JSONRPC_INTERNAL_ERROR = -32603;
|
|
206
|
+
// A2A-specific error codes
|
|
207
|
+
export const A2A_TASK_NOT_FOUND = -32001;
|
|
208
|
+
export const A2A_TASK_NOT_CANCELABLE = -32002;
|
|
209
|
+
//# sourceMappingURL=a2a-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a-types.js","sourceRoot":"","sources":["../../src/communicate/a2a-types.ts"],"names":[],"mappings":"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"}
|