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.
Files changed (59) hide show
  1. package/README.md +80 -40
  2. package/README.zh-CN.md +72 -37
  3. package/lib/config.d.ts +15 -7
  4. package/lib/config.d.ts.map +1 -1
  5. package/lib/config.js +6 -1
  6. package/lib/config.js.map +1 -1
  7. package/lib/index.d.ts +9 -4
  8. package/lib/index.d.ts.map +1 -1
  9. package/lib/index.js +53 -20
  10. package/lib/index.js.map +1 -1
  11. package/lib/projection.d.ts +21 -19
  12. package/lib/projection.d.ts.map +1 -1
  13. package/lib/projection.js +15 -7
  14. package/lib/projection.js.map +1 -1
  15. package/lib/protocol/card.d.ts +25 -7
  16. package/lib/protocol/card.d.ts.map +1 -1
  17. package/lib/protocol/card.js +35 -14
  18. package/lib/protocol/card.js.map +1 -1
  19. package/lib/protocol/index.d.ts +10 -10
  20. package/lib/protocol/index.d.ts.map +1 -1
  21. package/lib/protocol/index.js +8 -8
  22. package/lib/protocol/index.js.map +1 -1
  23. package/lib/protocol/jsonrpc.d.ts +54 -6
  24. package/lib/protocol/jsonrpc.d.ts.map +1 -1
  25. package/lib/protocol/jsonrpc.js +70 -8
  26. package/lib/protocol/jsonrpc.js.map +1 -1
  27. package/lib/protocol/parse.d.ts +79 -0
  28. package/lib/protocol/parse.d.ts.map +1 -0
  29. package/lib/protocol/parse.js +249 -0
  30. package/lib/protocol/parse.js.map +1 -0
  31. package/lib/protocol/sse.d.ts +6 -3
  32. package/lib/protocol/sse.d.ts.map +1 -1
  33. package/lib/protocol/sse.js +4 -2
  34. package/lib/protocol/sse.js.map +1 -1
  35. package/lib/protocol/wire.d.ts +165 -54
  36. package/lib/protocol/wire.d.ts.map +1 -1
  37. package/lib/protocol/wire.js +54 -9
  38. package/lib/protocol/wire.js.map +1 -1
  39. package/lib/router.d.ts +10 -1
  40. package/lib/router.d.ts.map +1 -1
  41. package/lib/router.js +247 -107
  42. package/lib/router.js.map +1 -1
  43. package/lib/security.d.ts +33 -1
  44. package/lib/security.d.ts.map +1 -1
  45. package/lib/security.js +44 -2
  46. package/lib/security.js.map +1 -1
  47. package/lib/tasks.js +5 -5
  48. package/lib/tasks.js.map +1 -1
  49. package/lib/types.d.ts +3 -3
  50. package/lib/types.js +1 -1
  51. package/lib/version.d.ts +20 -0
  52. package/lib/version.d.ts.map +1 -0
  53. package/lib/version.js +20 -0
  54. package/lib/version.js.map +1 -0
  55. package/package.json +1 -1
  56. package/lib/protocol/normalize.d.ts +0 -72
  57. package/lib/protocol/normalize.d.ts.map +0 -1
  58. package/lib/protocol/normalize.js +0 -278
  59. 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, ERR_UNSUPPORTED_OPERATION, A2ARpcError, jsonRpcError, jsonRpcResult, nowIso, parseSendParams, partsToText, renderStatusUpdate, renderTask, resolveMethod, sseFrame, taskNotFound, } from "./protocol/index.js";
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
- && !['0.3', '0.3.0', '1.0', '1.0.0'].includes(version)) {
129
- sendJson(res, 200, jsonRpcError(id, ERR_INVALID_PARAMS, `unsupported A2A-Version: ${version}`));
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
- const entry = resolveMethod(method);
133
- if (entry === undefined) {
134
- sendJson(res, 200, jsonRpcError(id, ERR_METHOD_NOT_FOUND, `method not found: ${method}`));
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(entry.operation, entry.dialect, id, params, peer, res);
162
+ await dispatch(operation, id, params, peer, req, res);
139
163
  }
140
164
  catch (error) {
141
165
  if (error instanceof A2ARpcError) {
142
- sendJson(res, error.httpStatus, jsonRpcError(id, error.code, error.message));
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, resubscribe) need the live slot and stop here.
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
- /** Validate the `taskId` parameter shape. */
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, 'taskId is required');
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 `tasks/get`
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
- const state = slot.turn === undefined ? 'submitted' : 'working';
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, dialect, id, params, peer, res) => {
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 = parseSendParams(params);
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
- const activation = await resolveContext(parsed.message.contextId, peer);
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' }, '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, renderTask(rejected, dialect)));
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, dialect, slot, activation);
298
+ openStream(res, id, slot, activation);
258
299
  return;
259
300
  }
260
- // A2A is async-first: `message/send` MAY answer with a non-terminal
261
- // task. Whether it waits is negotiated, not fixed — the client asks
262
- // through `configuration.blocking`, and the deployment's `sendMode` is
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 the server decline a blocking request ("The server may
266
- // reject this if the task is long-running"), which is exactly what the
267
- // timeout below does: the task keeps running and the peer polls.
268
- const requested = parsed.configuration?.blocking;
269
- const shouldBlock = requested ?? config.sendMode === 'block';
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 tasks/get or resubscribes, and the task
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, 'working', [])
316
+ ? deps.taskSnapshot(activation, slot, 'TASK_STATE_WORKING', [])
277
317
  : deps.taskSnapshot(activation, slot, settlement.state, redactArtifacts(settlement.artifacts), settlement.stopReason);
278
- sendJson(res, 200, jsonRpcResult(id, renderTask(task, dialect)));
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?.['taskId'], peer);
283
- sendJson(res, 200, jsonRpcResult(id, renderTask(task, dialect)));
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?.['taskId'], peer);
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, 'canceled', []);
292
- sendJson(res, 200, jsonRpcResult(id, renderTask(task, dialect)));
338
+ const task = deps.taskSnapshot(activation, slot, 'TASK_STATE_CANCELED', []);
339
+ sendJson(res, 200, jsonRpcResult(id, task));
293
340
  return;
294
341
  }
295
- case 'resubscribe': {
296
- const rawTaskId = params?.['taskId'];
342
+ case 'subscribe': {
343
+ const rawTaskId = params?.['id'];
297
344
  const live = findSlot(rawTaskId, peer);
298
345
  if (live !== undefined) {
299
- openStream(res, id, dialect, live.slot, live.activation);
346
+ openStream(res, id, live.slot, live.activation);
300
347
  return;
301
348
  }
302
- // Already settled: a peer that reconnects after the fact still deserves
303
- // the outcome. Emit the terminal transition from the projection and
304
- // close, rather than claiming the task never existed.
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
- openSettledStream(res, id, dialect, task);
307
- return;
354
+ throw unsupportedOperation(`task ${task.id} is in terminal state ${task.status.state}; read it with GetTask`);
308
355
  }
309
- case 'push_set':
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
- throw new A2ARpcError(config.push.enabled ? ERR_UNSUPPORTED_OPERATION : ERR_PUSH_NOT_SUPPORTED, 'push notifications are not enabled on this deployment');
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 terminal transition when it settles. */
323
- const openStream = (res, id, dialect, slot, activation) => {
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, dialect, taskId: slot.taskId, contextId: activation.contextId,
465
+ res, id, taskId: slot.taskId, contextId: activation.contextId,
331
466
  };
332
467
  streams.add(channel);
333
- res.write(sseFrame(id, renderStatusUpdate({
334
- kind: 'status-update',
335
- taskId: slot.taskId,
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
- for (const artifact of redactArtifacts(settlement.artifacts)) {
344
- res.write(sseFrame(id, { kind: 'artifact-update', taskId: slot.taskId, contextId: activation.contextId, artifact, lastChunk: true }));
345
- }
346
- res.write(sseFrame(id, renderStatusUpdate({
347
- kind: 'status-update',
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
- final: true,
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, renderStatusUpdate({
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: 'canceled', timestamp: nowIso() },
387
- final: true,
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 => part.kind === 'text' ? { kind: 'text', text: redactOutbound(part.text) } : 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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"}