dsh-a2a-server 0.1.0 → 0.2.0
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 +80 -40
- package/README.zh-CN.md +72 -37
- package/lib/config.d.ts +15 -7
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +6 -1
- package/lib/config.js.map +1 -1
- package/lib/index.d.ts +9 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +53 -20
- package/lib/index.js.map +1 -1
- package/lib/projection.d.ts +21 -19
- package/lib/projection.d.ts.map +1 -1
- package/lib/projection.js +15 -7
- package/lib/projection.js.map +1 -1
- package/lib/protocol/card.d.ts +25 -7
- package/lib/protocol/card.d.ts.map +1 -1
- package/lib/protocol/card.js +35 -14
- package/lib/protocol/card.js.map +1 -1
- package/lib/protocol/index.d.ts +10 -10
- package/lib/protocol/index.d.ts.map +1 -1
- package/lib/protocol/index.js +8 -8
- package/lib/protocol/index.js.map +1 -1
- package/lib/protocol/jsonrpc.d.ts +54 -6
- package/lib/protocol/jsonrpc.d.ts.map +1 -1
- package/lib/protocol/jsonrpc.js +70 -8
- package/lib/protocol/jsonrpc.js.map +1 -1
- package/lib/protocol/parse.d.ts +79 -0
- package/lib/protocol/parse.d.ts.map +1 -0
- package/lib/protocol/parse.js +249 -0
- package/lib/protocol/parse.js.map +1 -0
- package/lib/protocol/sse.d.ts +6 -3
- package/lib/protocol/sse.d.ts.map +1 -1
- package/lib/protocol/sse.js +4 -2
- package/lib/protocol/sse.js.map +1 -1
- package/lib/protocol/wire.d.ts +165 -54
- package/lib/protocol/wire.d.ts.map +1 -1
- package/lib/protocol/wire.js +54 -9
- package/lib/protocol/wire.js.map +1 -1
- package/lib/router.d.ts +10 -1
- package/lib/router.d.ts.map +1 -1
- package/lib/router.js +247 -107
- package/lib/router.js.map +1 -1
- package/lib/security.d.ts +33 -1
- package/lib/security.d.ts.map +1 -1
- package/lib/security.js +44 -2
- package/lib/security.js.map +1 -1
- package/lib/tasks.js +5 -5
- package/lib/tasks.js.map +1 -1
- package/lib/types.d.ts +3 -3
- package/lib/types.js +1 -1
- package/lib/version.d.ts +20 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/version.js +20 -0
- package/lib/version.js.map +1 -0
- package/package.json +1 -1
- package/lib/protocol/normalize.d.ts +0 -72
- package/lib/protocol/normalize.d.ts.map +0 -1
- package/lib/protocol/normalize.js +0 -278
- package/lib/protocol/normalize.js.map +0 -1
package/lib/router.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* HTTP + JSON-RPC dispatch.
|
|
2
|
+
* HTTP + JSON-RPC dispatch for the A2A v1.0 binding.
|
|
3
3
|
*
|
|
4
4
|
* Deliberately free of Cordis: everything it needs arrives through
|
|
5
5
|
* {@link RouterDeps}, so the RPC semantics can be unit-tested without booting a
|
|
@@ -8,10 +8,12 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @module dsh-a2a/router
|
|
10
10
|
*/
|
|
11
|
-
import { A2AContextId, ERR_INVALID_PARAMS, ERR_INVALID_REQUEST, ERR_METHOD_NOT_FOUND, ERR_PARSE, ERR_PUSH_NOT_SUPPORTED, ERR_TASK_NOT_CANCELABLE,
|
|
11
|
+
import { A2AContextId, A2A_PROTOCOL_VERSION, ERR_EXTENDED_CARD_NOT_CONFIGURED, ERR_INVALID_PARAMS, ERR_INVALID_REQUEST, ERR_METHOD_NOT_FOUND, ERR_PARSE, ERR_PUSH_NOT_SUPPORTED, ERR_TASK_NOT_CANCELABLE, A2ARpcError, jsonRpcError, jsonRpcResult, legacyMethodReplacement, nowIso, parseListTasksParams, parseSendMessageRequest, parseTenant, partsToText, resolveMethod, sseFrame, streamArtifactUpdate, streamStatusUpdate, streamTask, taskNotFound, unsupportedOperation, versionNotSupported, } from "./protocol/index.js";
|
|
12
12
|
import { filterInbound, redactOutbound } from "./security.js";
|
|
13
13
|
/** Largest request body accepted, before parsing. */
|
|
14
14
|
const MAX_BODY_BYTES = 1_000_000;
|
|
15
|
+
/** `ListTasks` page size when a peer names none, per the spec's default. */
|
|
16
|
+
const DEFAULT_PAGE_SIZE = 50;
|
|
15
17
|
/**
|
|
16
18
|
* Build the router.
|
|
17
19
|
* @param deps - the injected plugin capabilities.
|
|
@@ -28,6 +30,10 @@ export function createRouter(deps) {
|
|
|
28
30
|
});
|
|
29
31
|
res.end(text);
|
|
30
32
|
};
|
|
33
|
+
/** Answer a JSON-RPC failure, carrying its A2A reason when it has one. */
|
|
34
|
+
const sendRpcError = (res, id, error) => {
|
|
35
|
+
sendJson(res, error.httpStatus, jsonRpcError(id, error.code, error.message, error.data));
|
|
36
|
+
};
|
|
31
37
|
/**
|
|
32
38
|
* Answer an authentication-class failure.
|
|
33
39
|
*
|
|
@@ -46,8 +52,9 @@ export function createRouter(deps) {
|
|
|
46
52
|
for await (const chunk of req) {
|
|
47
53
|
const buffer = chunk;
|
|
48
54
|
size += buffer.length;
|
|
49
|
-
if (size > MAX_BODY_BYTES)
|
|
50
|
-
throw new A2ARpcError(ERR_PARSE, 'payload too large', 413);
|
|
55
|
+
if (size > MAX_BODY_BYTES) {
|
|
56
|
+
throw new A2ARpcError(ERR_PARSE, 'payload too large', { httpStatus: 413 });
|
|
57
|
+
}
|
|
51
58
|
chunks.push(buffer);
|
|
52
59
|
}
|
|
53
60
|
return Buffer.concat(chunks).toString('utf8');
|
|
@@ -123,23 +130,40 @@ export function createRouter(deps) {
|
|
|
123
130
|
sendJson(res, 200, jsonRpcError(id, ERR_INVALID_PARAMS, 'params must be an object'));
|
|
124
131
|
return;
|
|
125
132
|
}
|
|
133
|
+
// Version negotiation. The spec says an EMPTY header means 0.3 — but this
|
|
134
|
+
// interface declares only 1.0 on its card, and a v0.3 peer could not read
|
|
135
|
+
// the reply anyway. So an absent header is taken as 1.0 (the interface a
|
|
136
|
+
// client just discovered), and an explicit version this interface does not
|
|
137
|
+
// serve gets the spec's own VersionNotSupportedError rather than a reply in
|
|
138
|
+
// a spelling the caller cannot parse.
|
|
126
139
|
const version = req.headers['a2a-version'];
|
|
127
|
-
if (typeof version === 'string' && version.length > 0
|
|
128
|
-
&& !['
|
|
129
|
-
|
|
140
|
+
if (typeof version === 'string' && version.trim().length > 0
|
|
141
|
+
&& !['1.0', '1.0.0'].includes(version.trim())) {
|
|
142
|
+
sendRpcError(res, id, versionNotSupported(version.trim(), A2A_PROTOCOL_VERSION));
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const operation = resolveMethod(method);
|
|
146
|
+
if (operation === undefined) {
|
|
147
|
+
const replacement = legacyMethodReplacement(method);
|
|
148
|
+
sendJson(res, 200, jsonRpcError(id, ERR_METHOD_NOT_FOUND, replacement === undefined
|
|
149
|
+
? `method not found: ${method}`
|
|
150
|
+
: `method not found: ${method}; this agent speaks A2A `
|
|
151
|
+
+ `${A2A_PROTOCOL_VERSION}, which renamed it to ${replacement}`));
|
|
130
152
|
return;
|
|
131
153
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
154
|
+
// This card's interface declares no tenant, so a peer that names one has
|
|
155
|
+
// been routed somewhere it did not intend.
|
|
156
|
+
const tenant = parseTenant(params);
|
|
157
|
+
if (tenant !== undefined) {
|
|
158
|
+
sendJson(res, 200, jsonRpcError(id, ERR_INVALID_PARAMS, `this interface declares no tenant; remove tenant: ${tenant}`));
|
|
135
159
|
return;
|
|
136
160
|
}
|
|
137
161
|
try {
|
|
138
|
-
await dispatch(
|
|
162
|
+
await dispatch(operation, id, params, peer, req, res);
|
|
139
163
|
}
|
|
140
164
|
catch (error) {
|
|
141
165
|
if (error instanceof A2ARpcError) {
|
|
142
|
-
|
|
166
|
+
sendRpcError(res, id, error);
|
|
143
167
|
return;
|
|
144
168
|
}
|
|
145
169
|
deps.logger.warn(`a2a: ${method} failed: ${String(error)}`);
|
|
@@ -168,7 +192,7 @@ export function createRouter(deps) {
|
|
|
168
192
|
* A settled task has no slot — `settleSlot` removes it — so this is only the
|
|
169
193
|
* first half of a lookup. Operations that merely READ a task fall through to
|
|
170
194
|
* the projection ({@link readTask}); operations that act on a running task
|
|
171
|
-
* (cancel,
|
|
195
|
+
* (cancel, subscribe) need the live slot and stop here.
|
|
172
196
|
*/
|
|
173
197
|
const requireSlot = (rawTaskId, peer) => {
|
|
174
198
|
const found = findSlot(rawTaskId, peer);
|
|
@@ -188,17 +212,36 @@ export function createRouter(deps) {
|
|
|
188
212
|
}
|
|
189
213
|
return undefined;
|
|
190
214
|
};
|
|
191
|
-
/**
|
|
215
|
+
/**
|
|
216
|
+
* Validate the `id` parameter shape.
|
|
217
|
+
*
|
|
218
|
+
* v1.0 spells every task reference `id`. The v0.3 `taskId` is NOT accepted:
|
|
219
|
+
* a peer still sending it would also be sending a v0.3 message body and
|
|
220
|
+
* expecting a v0.3 reply, and a half-understood request is worse than a
|
|
221
|
+
* refused one.
|
|
222
|
+
*/
|
|
192
223
|
const requireTaskId = (rawTaskId) => {
|
|
193
224
|
if (typeof rawTaskId !== 'string' || rawTaskId.length === 0) {
|
|
194
|
-
throw new A2ARpcError(ERR_INVALID_PARAMS, '
|
|
225
|
+
throw new A2ARpcError(ERR_INVALID_PARAMS, 'id is required');
|
|
195
226
|
}
|
|
196
227
|
return rawTaskId;
|
|
197
228
|
};
|
|
229
|
+
/** The current wire shape of an in-flight task. */
|
|
230
|
+
const liveTask = (activation, slot) => {
|
|
231
|
+
const state = slot.turn === undefined
|
|
232
|
+
? 'TASK_STATE_SUBMITTED'
|
|
233
|
+
: 'TASK_STATE_WORKING';
|
|
234
|
+
return deps.taskSnapshot(activation, slot, state, redactArtifacts(slot.texts.length > 0
|
|
235
|
+
? [{
|
|
236
|
+
artifactId: `${slot.taskId}-result`,
|
|
237
|
+
parts: [{ text: slot.texts.join('\n'), mediaType: 'text/plain' }],
|
|
238
|
+
}]
|
|
239
|
+
: []));
|
|
240
|
+
};
|
|
198
241
|
/**
|
|
199
242
|
* Read a task's current state, live slot or not.
|
|
200
243
|
*
|
|
201
|
-
* Falls back to the durable projection, which is what makes `
|
|
244
|
+
* Falls back to the durable projection, which is what makes `GetTask`
|
|
202
245
|
* answerable after settlement — and, once persistence is composed, after a
|
|
203
246
|
* restart. A task belonging to another peer reports exactly like an absent
|
|
204
247
|
* one, so ownership cannot be probed by comparing responses.
|
|
@@ -209,15 +252,8 @@ export function createRouter(deps) {
|
|
|
209
252
|
if (activation.peer !== peer)
|
|
210
253
|
continue;
|
|
211
254
|
const slot = activation.slots.get(taskId);
|
|
212
|
-
if (slot !== undefined)
|
|
213
|
-
|
|
214
|
-
return deps.taskSnapshot(activation, slot, state, redactArtifacts(slot.texts.length > 0
|
|
215
|
-
? [{
|
|
216
|
-
artifactId: `${taskId}-result`,
|
|
217
|
-
parts: [{ kind: 'text', text: slot.texts.join('\n') }],
|
|
218
|
-
}]
|
|
219
|
-
: []));
|
|
220
|
-
}
|
|
255
|
+
if (slot !== undefined)
|
|
256
|
+
return liveTask(activation, slot);
|
|
221
257
|
const projected = deps.readProjectedTask?.(activation, taskId);
|
|
222
258
|
// Text read back from the log leaves the process just like live text
|
|
223
259
|
// does, so it goes through the same scrub.
|
|
@@ -227,165 +263,242 @@ export function createRouter(deps) {
|
|
|
227
263
|
}
|
|
228
264
|
throw taskNotFound(taskId);
|
|
229
265
|
};
|
|
230
|
-
const dispatch = async (operation,
|
|
266
|
+
const dispatch = async (operation, id, params, peer, req, res) => {
|
|
231
267
|
switch (operation) {
|
|
232
268
|
case 'send':
|
|
233
269
|
case 'stream': {
|
|
234
|
-
const parsed =
|
|
270
|
+
const parsed = parseSendMessageRequest(params);
|
|
235
271
|
if (parsed === undefined)
|
|
236
272
|
throw new A2ARpcError(ERR_INVALID_PARAMS, 'message is required');
|
|
237
273
|
const raw = partsToText(parsed.message.parts);
|
|
238
274
|
if (raw.trim().length === 0) {
|
|
239
275
|
throw new A2ARpcError(ERR_INVALID_PARAMS, 'message carries no readable content');
|
|
240
276
|
}
|
|
241
|
-
|
|
277
|
+
// A message may address a context directly, or name a task and let the
|
|
278
|
+
// server infer the context from it. A task that already settled cannot
|
|
279
|
+
// take further messages, which the spec spells UnsupportedOperation.
|
|
280
|
+
const activation = parsed.message.taskId === undefined
|
|
281
|
+
? await resolveContext(parsed.message.contextId, peer)
|
|
282
|
+
: continueTask(parsed.message.taskId, peer);
|
|
242
283
|
const turn = deps.turns.track(activation.contextId);
|
|
243
284
|
if (turn > config.maxContextTurns) {
|
|
244
|
-
const rejected = deps.taskSnapshot(activation, { taskId: 'rejected' }, '
|
|
285
|
+
const rejected = deps.taskSnapshot(activation, { taskId: 'rejected' }, 'TASK_STATE_REJECTED', [{
|
|
245
286
|
artifactId: 'rejected',
|
|
246
287
|
parts: [{
|
|
247
|
-
kind: 'text',
|
|
248
288
|
text: `context ${activation.contextId} exceeded ${config.maxContextTurns} turns; `
|
|
249
289
|
+ 'start a new context or raise maxContextTurns',
|
|
290
|
+
mediaType: 'text/plain',
|
|
250
291
|
}],
|
|
251
292
|
}]);
|
|
252
|
-
sendJson(res, 200, jsonRpcResult(id,
|
|
293
|
+
sendJson(res, 200, jsonRpcResult(id, { task: rejected }));
|
|
253
294
|
return;
|
|
254
295
|
}
|
|
255
296
|
const slot = await deps.submit(activation, filterInbound(raw), peer);
|
|
256
297
|
if (operation === 'stream') {
|
|
257
|
-
openStream(res, id,
|
|
298
|
+
openStream(res, id, slot, activation);
|
|
258
299
|
return;
|
|
259
300
|
}
|
|
260
|
-
//
|
|
261
|
-
//
|
|
262
|
-
//
|
|
263
|
-
// only the default for a client that expresses no preference.
|
|
301
|
+
// v1.0 inverted the send-mode knob: operations BLOCK by default and a
|
|
302
|
+
// client opts out with `returnImmediately`. The deployment's `sendMode`
|
|
303
|
+
// is only the default for a client that expresses no preference.
|
|
264
304
|
//
|
|
265
|
-
// The spec lets
|
|
266
|
-
//
|
|
267
|
-
//
|
|
268
|
-
const requested = parsed.configuration?.
|
|
269
|
-
const shouldBlock = requested
|
|
305
|
+
// The spec still lets a server answer a blocking request with a
|
|
306
|
+
// non-terminal task, which is exactly what the timeout below does: the
|
|
307
|
+
// task keeps running and the peer polls.
|
|
308
|
+
const requested = parsed.configuration?.returnImmediately;
|
|
309
|
+
const shouldBlock = requested === undefined ? config.sendMode === 'block' : !requested;
|
|
270
310
|
const settlement = shouldBlock
|
|
271
311
|
? await withTimeout(slot.settled, config.blockTimeoutMs)
|
|
272
312
|
: undefined;
|
|
273
313
|
const task = settlement === undefined
|
|
274
|
-
// Not an error: the peer polls
|
|
314
|
+
// Not an error: the peer polls GetTask or subscribes, and the task
|
|
275
315
|
// keeps running. Erroring here would discard real work.
|
|
276
|
-
? deps.taskSnapshot(activation, slot, '
|
|
316
|
+
? deps.taskSnapshot(activation, slot, 'TASK_STATE_WORKING', [])
|
|
277
317
|
: deps.taskSnapshot(activation, slot, settlement.state, redactArtifacts(settlement.artifacts), settlement.stopReason);
|
|
278
|
-
|
|
318
|
+
// v1.0 wraps the result: SendMessage answers with a task OR a message,
|
|
319
|
+
// and the member name is what tells them apart.
|
|
320
|
+
sendJson(res, 200, jsonRpcResult(id, { task }));
|
|
279
321
|
return;
|
|
280
322
|
}
|
|
281
323
|
case 'get': {
|
|
282
|
-
const task = readTask(params?.['
|
|
283
|
-
sendJson(res, 200, jsonRpcResult(id,
|
|
324
|
+
const task = readTask(params?.['id'], peer);
|
|
325
|
+
sendJson(res, 200, jsonRpcResult(id, task));
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
case 'list': {
|
|
329
|
+
sendJson(res, 200, jsonRpcResult(id, listTasks(parseListTasksParams(params), peer)));
|
|
284
330
|
return;
|
|
285
331
|
}
|
|
286
332
|
case 'cancel': {
|
|
287
|
-
const { activation, slot } = requireSlot(params?.['
|
|
288
|
-
if (slot.done)
|
|
289
|
-
throw new A2ARpcError(ERR_TASK_NOT_CANCELABLE, 'task already reached a terminal state');
|
|
333
|
+
const { activation, slot } = requireSlot(params?.['id'], peer);
|
|
334
|
+
if (slot.done) {
|
|
335
|
+
throw new A2ARpcError(ERR_TASK_NOT_CANCELABLE, 'task already reached a terminal state', { reason: 'TASK_NOT_CANCELABLE', metadata: { taskId: slot.taskId } });
|
|
336
|
+
}
|
|
290
337
|
deps.cancel(activation, slot);
|
|
291
|
-
const task = deps.taskSnapshot(activation, slot, '
|
|
292
|
-
sendJson(res, 200, jsonRpcResult(id,
|
|
338
|
+
const task = deps.taskSnapshot(activation, slot, 'TASK_STATE_CANCELED', []);
|
|
339
|
+
sendJson(res, 200, jsonRpcResult(id, task));
|
|
293
340
|
return;
|
|
294
341
|
}
|
|
295
|
-
case '
|
|
296
|
-
const rawTaskId = params?.['
|
|
342
|
+
case 'subscribe': {
|
|
343
|
+
const rawTaskId = params?.['id'];
|
|
297
344
|
const live = findSlot(rawTaskId, peer);
|
|
298
345
|
if (live !== undefined) {
|
|
299
|
-
openStream(res, id,
|
|
346
|
+
openStream(res, id, live.slot, live.activation);
|
|
300
347
|
return;
|
|
301
348
|
}
|
|
302
|
-
//
|
|
303
|
-
//
|
|
304
|
-
//
|
|
349
|
+
// Settled, or never existed. readTask separates the two, and a settled
|
|
350
|
+
// task is refused rather than streamed: v1.0 states a subscription to a
|
|
351
|
+
// terminal task is an UnsupportedOperation, and the outcome is still
|
|
352
|
+
// one GetTask away.
|
|
305
353
|
const task = readTask(rawTaskId, peer);
|
|
306
|
-
|
|
307
|
-
return;
|
|
354
|
+
throw unsupportedOperation(`task ${task.id} is in terminal state ${task.status.state}; read it with GetTask`);
|
|
308
355
|
}
|
|
309
|
-
case '
|
|
356
|
+
case 'push_create':
|
|
310
357
|
case 'push_get':
|
|
311
358
|
case 'push_list':
|
|
312
359
|
case 'push_delete': {
|
|
313
360
|
// Advertised as unsupported on the card, so a compliant peer never
|
|
314
361
|
// reaches this; answering with the spec's own code keeps one that does
|
|
315
362
|
// from guessing.
|
|
316
|
-
|
|
363
|
+
if (config.push.enabled) {
|
|
364
|
+
throw unsupportedOperation('push notifications are not enabled on this deployment');
|
|
365
|
+
}
|
|
366
|
+
throw new A2ARpcError(ERR_PUSH_NOT_SUPPORTED, 'push notifications are not enabled on this deployment', { reason: 'PUSH_NOTIFICATION_NOT_SUPPORTED' });
|
|
367
|
+
}
|
|
368
|
+
case 'extended_card': {
|
|
369
|
+
const extended = deps.extendedCardFor(req.headers.host);
|
|
370
|
+
if (extended === undefined) {
|
|
371
|
+
throw new A2ARpcError(ERR_EXTENDED_CARD_NOT_CONFIGURED, 'this deployment declares no extended agent card', { reason: 'EXTENDED_AGENT_CARD_NOT_CONFIGURED' });
|
|
372
|
+
}
|
|
373
|
+
sendJson(res, 200, jsonRpcResult(id, extended));
|
|
374
|
+
return;
|
|
317
375
|
}
|
|
318
376
|
default:
|
|
319
|
-
throw new A2ARpcError(ERR_METHOD_NOT_FOUND, `unsupported operation: ${operation}`);
|
|
377
|
+
throw new A2ARpcError(ERR_METHOD_NOT_FOUND, `unsupported operation: ${String(operation)}`);
|
|
378
|
+
}
|
|
379
|
+
};
|
|
380
|
+
/**
|
|
381
|
+
* Resolve the context that owns a task a message continues.
|
|
382
|
+
*
|
|
383
|
+
* A task here spans one submitted message, so "continuing" one means adding a
|
|
384
|
+
* message to the SAME context, not reopening the same task id. A settled task
|
|
385
|
+
* is refused outright, which is the rule v1.0 states for messages addressed to
|
|
386
|
+
* a terminal task.
|
|
387
|
+
* @param rawTaskId - the `taskId` the message carried.
|
|
388
|
+
* @param peer - the authenticated identity.
|
|
389
|
+
* @returns the owning context.
|
|
390
|
+
*/
|
|
391
|
+
const continueTask = (rawTaskId, peer) => {
|
|
392
|
+
const live = findSlot(rawTaskId, peer);
|
|
393
|
+
if (live !== undefined)
|
|
394
|
+
return live.activation;
|
|
395
|
+
const settled = readTask(rawTaskId, peer);
|
|
396
|
+
throw unsupportedOperation(`task ${settled.id} is in terminal state ${settled.status.state} `
|
|
397
|
+
+ 'and cannot accept further messages; send to its contextId instead');
|
|
398
|
+
};
|
|
399
|
+
/**
|
|
400
|
+
* List the tasks this peer may see, newest first.
|
|
401
|
+
*
|
|
402
|
+
* Scope is the RESIDENT contexts: a context evicted for idleness takes its
|
|
403
|
+
* task list with it, because nothing in this plugin indexes sessions outside
|
|
404
|
+
* the registry. `GetTask` has the same horizon, so the two agree.
|
|
405
|
+
* @param filters - the parsed `ListTasks` parameters.
|
|
406
|
+
* @param peer - the authenticated identity.
|
|
407
|
+
* @returns one page of results plus its cursor.
|
|
408
|
+
*/
|
|
409
|
+
const listTasks = (filters, peer) => {
|
|
410
|
+
const collected = [];
|
|
411
|
+
for (const activation of deps.contexts.values()) {
|
|
412
|
+
if (activation.peer !== peer)
|
|
413
|
+
continue;
|
|
414
|
+
if (filters.contextId !== undefined && activation.contextId !== filters.contextId)
|
|
415
|
+
continue;
|
|
416
|
+
for (const slot of activation.slots.values())
|
|
417
|
+
collected.push(liveTask(activation, slot));
|
|
418
|
+
for (const projected of deps.readProjectedTasks?.(activation) ?? []) {
|
|
419
|
+
// A live slot is authoritative over its own projected row.
|
|
420
|
+
if (activation.slots.has(projected.id))
|
|
421
|
+
continue;
|
|
422
|
+
collected.push({ ...projected, artifacts: redactArtifacts(projected.artifacts ?? []) });
|
|
423
|
+
}
|
|
320
424
|
}
|
|
425
|
+
const matching = collected
|
|
426
|
+
.filter(task => filters.status === undefined || task.status.state === filters.status)
|
|
427
|
+
.filter(task => filters.statusTimestampAfter === undefined
|
|
428
|
+
|| task.status.timestamp >= filters.statusTimestampAfter)
|
|
429
|
+
// Newest first, with the id as a tiebreak so the cursor below is total.
|
|
430
|
+
.sort((a, b) => a.status.timestamp === b.status.timestamp
|
|
431
|
+
? (a.id < b.id ? 1 : a.id > b.id ? -1 : 0)
|
|
432
|
+
: (a.status.timestamp < b.status.timestamp ? 1 : -1));
|
|
433
|
+
const after = decodeCursor(filters.pageToken);
|
|
434
|
+
const remaining = after === undefined
|
|
435
|
+
? matching
|
|
436
|
+
: matching.filter(task => task.status.timestamp < after.timestamp
|
|
437
|
+
|| (task.status.timestamp === after.timestamp && task.id < after.taskId));
|
|
438
|
+
const pageSize = filters.pageSize ?? DEFAULT_PAGE_SIZE;
|
|
439
|
+
const page = remaining.slice(0, pageSize);
|
|
440
|
+
const last = page[page.length - 1];
|
|
441
|
+
const more = remaining.length > page.length;
|
|
442
|
+
return {
|
|
443
|
+
// `includeArtifacts` defaults to false, and the spec is explicit that the
|
|
444
|
+
// member must then be ABSENT rather than an empty array.
|
|
445
|
+
tasks: page.map((task) => {
|
|
446
|
+
if (filters.includeArtifacts === true)
|
|
447
|
+
return task;
|
|
448
|
+
const { artifacts: _artifacts, ...rest } = task;
|
|
449
|
+
return rest;
|
|
450
|
+
}),
|
|
451
|
+
// Always present; empty string is how "no more pages" is spelled.
|
|
452
|
+
nextPageToken: more && last !== undefined ? encodeCursor(last) : '',
|
|
453
|
+
pageSize,
|
|
454
|
+
totalSize: matching.length,
|
|
455
|
+
};
|
|
321
456
|
};
|
|
322
|
-
/** Open an SSE stream and push this task's
|
|
323
|
-
const openStream = (res, id,
|
|
457
|
+
/** Open an SSE stream and push this task's transitions until it settles. */
|
|
458
|
+
const openStream = (res, id, slot, activation) => {
|
|
324
459
|
res.writeHead(200, {
|
|
325
460
|
'content-type': 'text/event-stream',
|
|
326
461
|
'cache-control': 'no-cache',
|
|
327
462
|
connection: 'keep-alive',
|
|
328
463
|
});
|
|
329
464
|
const channel = {
|
|
330
|
-
res, id,
|
|
465
|
+
res, id, taskId: slot.taskId, contextId: activation.contextId,
|
|
331
466
|
};
|
|
332
467
|
streams.add(channel);
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
contextId: activation.contextId,
|
|
337
|
-
status: { state: slot.turn === undefined ? 'submitted' : 'working', timestamp: nowIso() },
|
|
338
|
-
final: false,
|
|
339
|
-
}, dialect)));
|
|
468
|
+
// v1.0 requires the Task object itself as the first frame, so a subscriber
|
|
469
|
+
// never has to call GetTask to learn where the task stood when it joined.
|
|
470
|
+
res.write(sseFrame(id, streamTask(liveTask(activation, slot))));
|
|
340
471
|
void slot.settled.then((settlement) => {
|
|
341
472
|
if (!streams.has(channel))
|
|
342
473
|
return;
|
|
343
|
-
|
|
344
|
-
res.write(sseFrame(id, {
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
474
|
+
redactArtifacts(settlement.artifacts).forEach((artifact, index) => {
|
|
475
|
+
res.write(sseFrame(id, streamArtifactUpdate({
|
|
476
|
+
taskId: slot.taskId,
|
|
477
|
+
contextId: activation.contextId,
|
|
478
|
+
artifact,
|
|
479
|
+
index,
|
|
480
|
+
lastChunk: true,
|
|
481
|
+
})));
|
|
482
|
+
});
|
|
483
|
+
res.write(sseFrame(id, streamStatusUpdate({
|
|
348
484
|
taskId: slot.taskId,
|
|
349
485
|
contextId: activation.contextId,
|
|
350
486
|
status: { state: settlement.state, timestamp: nowIso() },
|
|
351
|
-
|
|
352
|
-
}, dialect)));
|
|
487
|
+
})));
|
|
353
488
|
streams.delete(channel);
|
|
489
|
+
// v1.0 dropped the `final` flag: closing the stream IS the terminal
|
|
490
|
+
// signal, so the close must follow the terminal status immediately.
|
|
354
491
|
res.end();
|
|
355
492
|
});
|
|
356
493
|
};
|
|
357
|
-
/**
|
|
358
|
-
* Answer a resubscribe for an already-settled task: one terminal frame, then close.
|
|
359
|
-
* @param res - the HTTP response to stream over.
|
|
360
|
-
* @param id - the JSON-RPC id to correlate frames with.
|
|
361
|
-
* @param dialect - the dialect the peer spoke.
|
|
362
|
-
* @param task - the settled task, read from the projection.
|
|
363
|
-
*/
|
|
364
|
-
const openSettledStream = (res, id, dialect, task) => {
|
|
365
|
-
res.writeHead(200, {
|
|
366
|
-
'content-type': 'text/event-stream',
|
|
367
|
-
'cache-control': 'no-cache',
|
|
368
|
-
connection: 'keep-alive',
|
|
369
|
-
});
|
|
370
|
-
res.write(sseFrame(id, renderStatusUpdate({
|
|
371
|
-
kind: 'status-update',
|
|
372
|
-
taskId: task.id,
|
|
373
|
-
contextId: task.contextId,
|
|
374
|
-
status: task.status,
|
|
375
|
-
final: true,
|
|
376
|
-
}, dialect)));
|
|
377
|
-
res.end();
|
|
378
|
-
};
|
|
379
494
|
const closeStreams = () => {
|
|
380
495
|
for (const channel of streams) {
|
|
381
496
|
try {
|
|
382
|
-
channel.res.write(sseFrame(channel.id,
|
|
383
|
-
kind: 'status-update',
|
|
497
|
+
channel.res.write(sseFrame(channel.id, streamStatusUpdate({
|
|
384
498
|
taskId: channel.taskId,
|
|
385
499
|
contextId: A2AContextId(channel.contextId),
|
|
386
|
-
status: { state: '
|
|
387
|
-
|
|
388
|
-
}, channel.dialect)));
|
|
500
|
+
status: { state: 'TASK_STATE_CANCELED', timestamp: nowIso() },
|
|
501
|
+
})));
|
|
389
502
|
channel.res.end();
|
|
390
503
|
}
|
|
391
504
|
catch {
|
|
@@ -396,6 +509,33 @@ export function createRouter(deps) {
|
|
|
396
509
|
};
|
|
397
510
|
return { serveCard, serveRpc, closeStreams };
|
|
398
511
|
}
|
|
512
|
+
/**
|
|
513
|
+
* Encode a page cursor.
|
|
514
|
+
*
|
|
515
|
+
* The token is opaque by contract, so it is base64url of the sort key that
|
|
516
|
+
* produced it — a real cursor rather than an offset, which is what keeps a page
|
|
517
|
+
* boundary stable while tasks are being added ahead of it.
|
|
518
|
+
* @param task - the last task on the page just returned.
|
|
519
|
+
* @returns the token a peer sends back as `pageToken`.
|
|
520
|
+
*/
|
|
521
|
+
function encodeCursor(task) {
|
|
522
|
+
return Buffer.from(`${task.status.timestamp}|${task.id}`, 'utf8').toString('base64url');
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* Decode a page cursor.
|
|
526
|
+
* @param token - the `pageToken` a peer sent, if any.
|
|
527
|
+
* @returns the sort key to resume after, or undefined for the first page.
|
|
528
|
+
* @throws {A2ARpcError} when the token is not one this server issued.
|
|
529
|
+
*/
|
|
530
|
+
function decodeCursor(token) {
|
|
531
|
+
if (token === undefined)
|
|
532
|
+
return undefined;
|
|
533
|
+
const decoded = Buffer.from(token, 'base64url').toString('utf8');
|
|
534
|
+
const split = decoded.lastIndexOf('|');
|
|
535
|
+
if (split <= 0)
|
|
536
|
+
throw new A2ARpcError(ERR_INVALID_PARAMS, 'pageToken is not a cursor this server issued');
|
|
537
|
+
return { timestamp: decoded.slice(0, split), taskId: decoded.slice(split + 1) };
|
|
538
|
+
}
|
|
399
539
|
/**
|
|
400
540
|
* Scrub credential-shaped text from artifacts before they leave the process.
|
|
401
541
|
* @param artifacts - the artifacts about to be sent.
|
|
@@ -404,7 +544,7 @@ export function createRouter(deps) {
|
|
|
404
544
|
function redactArtifacts(artifacts) {
|
|
405
545
|
return artifacts.map(artifact => ({
|
|
406
546
|
...artifact,
|
|
407
|
-
parts: artifact.parts.map(part =>
|
|
547
|
+
parts: artifact.parts.map(part => 'text' in part ? { ...part, text: redactOutbound(part.text) } : part),
|
|
408
548
|
}));
|
|
409
549
|
}
|
|
410
550
|
/**
|
package/lib/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|