sealbridge 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 (73) hide show
  1. package/README.ja.md +22 -0
  2. package/README.md +104 -3
  3. package/dist/cli/dist/approval-summary.d.ts +2 -0
  4. package/dist/cli/dist/approval-summary.js +32 -0
  5. package/dist/cli/dist/approval-summary.js.map +1 -0
  6. package/dist/cli/dist/error-messages.d.ts +2 -0
  7. package/dist/cli/dist/error-messages.js +24 -0
  8. package/dist/cli/dist/error-messages.js.map +1 -0
  9. package/dist/cli/dist/index.js +2 -1
  10. package/dist/cli/dist/index.js.map +1 -1
  11. package/dist/cli/dist/invite-share.js +2 -8
  12. package/dist/cli/dist/invite-share.js.map +1 -1
  13. package/dist/cli/dist/network.js +87 -11
  14. package/dist/cli/dist/network.js.map +1 -1
  15. package/dist/cli/dist/task-input.d.ts +2 -0
  16. package/dist/cli/dist/task-input.js +19 -0
  17. package/dist/cli/dist/task-input.js.map +1 -0
  18. package/dist/cli/dist/wake-hook.d.ts +3 -0
  19. package/dist/cli/dist/wake-hook.js +32 -0
  20. package/dist/cli/dist/wake-hook.js.map +1 -0
  21. package/dist/package.json +1 -1
  22. package/dist/packages/adapters/dist/command.d.ts +2 -0
  23. package/dist/packages/adapters/dist/command.js +13 -0
  24. package/dist/packages/adapters/dist/command.js.map +1 -1
  25. package/dist/packages/core/dist/capability.js +7 -2
  26. package/dist/packages/core/dist/capability.js.map +1 -1
  27. package/dist/packages/core/dist/crypto.js +8 -2
  28. package/dist/packages/core/dist/crypto.js.map +1 -1
  29. package/dist/packages/core/dist/discovery.d.ts +5 -0
  30. package/dist/packages/core/dist/discovery.js +29 -13
  31. package/dist/packages/core/dist/discovery.js.map +1 -1
  32. package/dist/packages/core/dist/revocation.d.ts +4 -1
  33. package/dist/packages/core/dist/revocation.js +29 -5
  34. package/dist/packages/core/dist/revocation.js.map +1 -1
  35. package/dist/packages/relay/dist/fetch.d.ts +28 -1
  36. package/dist/packages/relay/dist/fetch.js +195 -4
  37. package/dist/packages/relay/dist/fetch.js.map +1 -1
  38. package/dist/packages/relay/dist/index.d.ts +16 -5
  39. package/dist/packages/relay/dist/index.js +243 -95
  40. package/dist/packages/relay/dist/index.js.map +1 -1
  41. package/dist/packages/relay/dist/journal.d.ts +7 -0
  42. package/dist/packages/relay/dist/journal.js +33 -4
  43. package/dist/packages/relay/dist/journal.js.map +1 -1
  44. package/dist/packages/relay/dist/notifications.d.ts +63 -0
  45. package/dist/packages/relay/dist/notifications.js +55 -0
  46. package/dist/packages/relay/dist/notifications.js.map +1 -0
  47. package/dist/packages/relay/dist/retry.d.ts +4 -1
  48. package/dist/packages/relay/dist/retry.js +27 -7
  49. package/dist/packages/relay/dist/retry.js.map +1 -1
  50. package/dist/packages/relay/dist/worker.d.ts +7 -0
  51. package/dist/packages/relay/dist/worker.js +57 -8
  52. package/dist/packages/relay/dist/worker.js.map +1 -1
  53. package/dist/packages/runtime/dist/a2a.js +1 -1
  54. package/dist/packages/runtime/dist/approval-providers.d.ts +2 -0
  55. package/dist/packages/runtime/dist/approval-providers.js +2 -2
  56. package/dist/packages/runtime/dist/approval-providers.js.map +1 -1
  57. package/dist/packages/runtime/dist/mcp-server.js +17 -1
  58. package/dist/packages/runtime/dist/mcp-server.js.map +1 -1
  59. package/dist/packages/runtime/dist/mcp-tool-catalog.js +16 -0
  60. package/dist/packages/runtime/dist/mcp-tool-catalog.js.map +1 -1
  61. package/dist/packages/runtime/dist/session-audit.d.ts +22 -3
  62. package/dist/packages/runtime/dist/session-audit.js +128 -23
  63. package/dist/packages/runtime/dist/session-audit.js.map +1 -1
  64. package/dist/packages/runtime/dist/session-timeouts.d.ts +33 -0
  65. package/dist/packages/runtime/dist/session-timeouts.js +62 -0
  66. package/dist/packages/runtime/dist/session-timeouts.js.map +1 -0
  67. package/dist/packages/runtime/dist/session.d.ts +52 -17
  68. package/dist/packages/runtime/dist/session.js +466 -94
  69. package/dist/packages/runtime/dist/session.js.map +1 -1
  70. package/dist/packages/runtime/dist/task-journal.d.ts +36 -0
  71. package/dist/packages/runtime/dist/task-journal.js +104 -0
  72. package/dist/packages/runtime/dist/task-journal.js.map +1 -0
  73. package/package.json +1 -1
@@ -1,16 +1,22 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  import { digest, openEnvelope, signAck, signEnvelope, signPayload, validateSchema, verifyEnvelope, verifySigned, verifySignature, } from '../../core/dist/index.js';
3
3
  import { JsonlStore, verifyAudit } from '../../ledger/dist/index.js';
4
- import { isTransientRelayError, relayRetryDelay, waitForRelayRetry } from '../../relay/dist/index.js';
4
+ import { RelayEnvelopeExpiredError, isTransientRelayError, relayRetryDelay, waitForRelayRetry, relayDeadline } from '../../relay/dist/index.js';
5
5
  /** The peer's signed ERROR, retaining optional diagnostics for programmatic callers. */
6
6
  export class PeerRejectedError extends Error {
7
7
  code;
8
8
  detail;
9
+ recovery;
9
10
  constructor(body) {
10
- super('PEER_REJECTED: ' + JSON.stringify(body));
11
+ super('PEER_REJECTED: ' + JSON.stringify(body && typeof body === 'object' && !Array.isArray(body) && body.recovery
12
+ ? { code: body.code, recovery: true } : body));
11
13
  if (body && typeof body === 'object' && !Array.isArray(body)) {
12
14
  if (typeof body.code === 'string')
13
15
  this.code = body.code;
16
+ const recovery = body.recovery;
17
+ if (recovery && typeof recovery === 'object' && !Array.isArray(recovery) &&
18
+ typeof recovery.proposalDigest === 'string')
19
+ this.recovery = recovery;
14
20
  const detail = body.detail;
15
21
  if (detail && typeof detail === 'object' && !Array.isArray(detail) &&
16
22
  typeof detail.field === 'string' && typeof detail.hint === 'string' &&
@@ -24,7 +30,7 @@ export const asJson = (v) => JSON.parse(JSON.stringify(v));
24
30
  const pause = (signal) => new Promise((resolve, reject) => {
25
31
  const abort = () => {
26
32
  clearTimeout(timer);
27
- reject(new Error('SESSION_ABORTED'));
33
+ reject(signal?.reason ?? new Error('SESSION_ABORTED'));
28
34
  };
29
35
  const timer = setTimeout(() => {
30
36
  signal?.removeEventListener('abort', abort);
@@ -34,21 +40,25 @@ const pause = (signal) => new Promise((resolve, reject) => {
34
40
  if (signal?.aborted)
35
41
  abort();
36
42
  });
37
- export async function receiveRelay(relay, did, signal, filter) {
43
+ export async function receiveRelay(relay, did, signal, filter, onStatus) {
38
44
  let attempt = 0;
39
45
  while (true) {
40
46
  signal?.throwIfAborted();
41
47
  try {
42
48
  const e = await relay.receive(did, 1000, signal, { ...filter, lease: relay.acknowledgeDelivery !== undefined });
49
+ onStatus?.('connected');
43
50
  attempt = 0;
44
51
  if (e)
45
52
  return e;
46
53
  }
47
54
  catch (error) {
48
55
  if (signal?.aborted)
49
- throw new Error('SESSION_ABORTED');
50
- if (!isTransientRelayError(error))
56
+ throw signal.reason ?? new Error('SESSION_ABORTED');
57
+ if (!isTransientRelayError(error)) {
58
+ onStatus?.('unavailable');
51
59
  throw error;
60
+ }
61
+ onStatus?.('reconnecting');
52
62
  console.warn('Relay poll retry ' + (attempt + 1));
53
63
  await waitForRelayRetry(relayRetryDelay(attempt++), signal);
54
64
  continue;
@@ -78,6 +88,7 @@ export class SessionWire {
78
88
  allowUnencryptedEnvelopes;
79
89
  outgoing = 0;
80
90
  incoming = 0;
91
+ recoveryParts = new Map();
81
92
  /** Opened session views keep the ciphertext envelope so delivery verification can check it. */
82
93
  sealedByView = new WeakMap();
83
94
  inbox = [];
@@ -91,11 +102,14 @@ export class SessionWire {
91
102
  dispatching = false;
92
103
  detached = false;
93
104
  stopped = false;
105
+ readController = new AbortController();
106
+ lastHeartbeat = 0;
94
107
  cancellation;
95
108
  /** One bilateral send at a time so PROGRESS cannot overtake its own ACK. */
96
109
  sendTail = Promise.resolve();
97
110
  entries = [];
98
111
  onProgress;
112
+ onActivity;
99
113
  /** Aborts the running task as soon as a CANCEL frame is queued. */
100
114
  earlyCancel;
101
115
  lastCancel;
@@ -117,6 +131,21 @@ export class SessionWire {
117
131
  get cancellationStarted() {
118
132
  return this.cancellation !== undefined;
119
133
  }
134
+ close() {
135
+ this.stopped = true;
136
+ this.readController.abort(new Error('SESSION_CLOSED'));
137
+ this.pumpError ??= new Error('SESSION_CLOSED');
138
+ this.rejectWaiters(this.pumpError);
139
+ for (const wake of this.inboxWaiters.splice(0))
140
+ wake();
141
+ for (const wake of this.waiterAdded.splice(0))
142
+ wake();
143
+ }
144
+ /** Liveness is signed/encrypted but does not consume audit sequence numbers or extend quota. */
145
+ async heartbeat() {
146
+ await this.relay.send(signEnvelope({ taskId: this.taskId, recipientDid: this.peerDid,
147
+ seq: 0, eventType: 'HEARTBEAT', payload: { sentAt: Date.now() } }, this.owner, { encrypt: true }));
148
+ }
120
149
  /** Keep reading after the caller aborts the session signal, so CANCEL can still be sealed. */
121
150
  detachSignal() {
122
151
  this.detached = true;
@@ -147,8 +176,8 @@ export class SessionWire {
147
176
  try {
148
177
  while (!this.stopped) {
149
178
  if (!this.detached && this.signal.aborted)
150
- throw new Error('SESSION_ABORTED');
151
- const envelope = await receiveRelay(this.relay, this.owner.did, this.detached ? undefined : this.signal);
179
+ throw this.signal.reason ?? new Error('SESSION_ABORTED');
180
+ const envelope = await receiveRelay(this.relay, this.owner.did, AbortSignal.any([this.readController.signal, ...(this.detached ? [] : [this.signal])]));
152
181
  if (envelope.payload.eventType === 'CANCEL' && envelope.payload.senderDid === this.peerDid)
153
182
  this.earlyCancel?.();
154
183
  this.inbox.push(envelope);
@@ -156,16 +185,11 @@ export class SessionWire {
156
185
  }
157
186
  }
158
187
  catch (error) {
159
- if (!this.detached)
160
- this.pumpError = error instanceof Error ? error : new Error(String(error));
188
+ this.pumpError = error instanceof Error ? error : new Error(String(error));
161
189
  }
162
190
  finally {
163
191
  this.pumping = false;
164
192
  this.inboxWaiters.shift()?.();
165
- if (this.detached && !this.stopped) {
166
- this.pumpError = undefined;
167
- this.startPump();
168
- }
169
193
  }
170
194
  }
171
195
  shift() {
@@ -205,6 +229,22 @@ export class SessionWire {
205
229
  for (;;) {
206
230
  const envelope = await this.nextEnvelope();
207
231
  const type = envelope.payload.eventType;
232
+ if (type === 'HEARTBEAT') {
233
+ const sentAt = envelope.payload.payload.sentAt;
234
+ if (typeof sentAt !== 'number' || !Number.isSafeInteger(sentAt) || sentAt > Date.now() + 5000)
235
+ throw new Error('INVALID_HEARTBEAT');
236
+ if (sentAt > this.lastHeartbeat && Date.now() - sentAt <= 60_000) {
237
+ this.lastHeartbeat = sentAt;
238
+ this.onActivity?.();
239
+ }
240
+ await acknowledgeRelay(this.relay, this.sealed(envelope));
241
+ continue;
242
+ }
243
+ this.onActivity?.();
244
+ if (type === 'RECOVERY_PART') {
245
+ await acknowledgeRelay(this.relay, this.sealed(envelope));
246
+ continue;
247
+ }
208
248
  const index = this.waiters.findIndex((waiter) => waiter.allowed.includes(type));
209
249
  if (index >= 0) {
210
250
  this.waiters.splice(index, 1)[0].resolve(envelope);
@@ -247,14 +287,45 @@ export class SessionWire {
247
287
  void this.dispatch();
248
288
  }
249
289
  }
290
+ async watchDelivery(envelope) {
291
+ const signal = this.readController.signal;
292
+ let attempt = 0;
293
+ try {
294
+ while (!signal.aborted && !this.stopped) {
295
+ await waitForRelayRetry(attempt ? relayRetryDelay(attempt - 1) : 1000, signal);
296
+ try {
297
+ const notice = await this.relay.deliveryStatus(envelope, signal);
298
+ attempt = 0;
299
+ if (!notice || notice.payload.state === 'unknown')
300
+ return;
301
+ if (notice.payload.state === 'expired')
302
+ throw new RelayEnvelopeExpiredError(notice);
303
+ }
304
+ catch (error) {
305
+ if (!isTransientRelayError(error))
306
+ throw error;
307
+ attempt++;
308
+ }
309
+ }
310
+ }
311
+ catch (error) {
312
+ if (signal.aborted || this.stopped)
313
+ return;
314
+ this.pumpError = error instanceof Error ? error : new Error('RELAY_STATUS_FAILED');
315
+ this.readController.abort(this.pumpError);
316
+ this.rejectWaiters(this.pumpError);
317
+ for (const wake of this.inboxWaiters.splice(0))
318
+ wake();
319
+ }
320
+ }
250
321
  async rawSend(eventType, payload) {
251
- await this.relay.send(signEnvelope({
252
- taskId: this.taskId,
253
- recipientDid: this.peerDid,
254
- seq: this.outgoing++,
255
- eventType,
256
- payload: asJson(payload),
257
- }, this.owner, { encrypt: true }));
322
+ const signal = this.detached ? this.readController.signal : this.signal;
323
+ signal.throwIfAborted();
324
+ const envelope = signEnvelope({ taskId: this.taskId, recipientDid: this.peerDid,
325
+ seq: this.outgoing++, eventType, payload: asJson(payload) }, this.owner, { encrypt: true });
326
+ await relayDeadline(Promise.resolve(this.relay.send(envelope)), 2_147_483_647, signal);
327
+ if (this.relay.deliveryStatus)
328
+ void this.watchDelivery(envelope);
258
329
  }
259
330
  /** Ciphertext that still matches the outer signature, when `view` was opened for the session. */
260
331
  sealed(view) {
@@ -264,7 +335,7 @@ export class SessionWire {
264
335
  if (!verifyEnvelope(e, this.owner.did) ||
265
336
  e.payload.senderDid !== this.peerDid ||
266
337
  e.payload.taskId !== this.taskId ||
267
- e.payload.seq !== this.incoming++)
338
+ (!['ERROR', 'HEARTBEAT'].includes(e.payload.eventType) && e.payload.seq !== this.incoming))
268
339
  throw new Error('INVALID_OR_REPLAYED_SESSION_ENVELOPE');
269
340
  // The signature covers ciphertext. Open a copy so later session code reads plaintext.
270
341
  const view = structuredClone(e);
@@ -272,6 +343,39 @@ export class SessionWire {
272
343
  requireEncrypted: !this.allowUnencryptedEnvelopes,
273
344
  }));
274
345
  this.sealedByView.set(view, e);
346
+ if (view.payload.eventType === 'HEARTBEAT')
347
+ return view;
348
+ if (view.payload.eventType === 'ERROR') {
349
+ const error = new PeerRejectedError(view.payload.payload);
350
+ // Restart notifications are independent of the lost session's wire counters.
351
+ // Sender, recipient, task, signature and encryption were checked above.
352
+ if (error.recovery) {
353
+ const part = error.recovery.part;
354
+ if (part) {
355
+ if (!Number.isSafeInteger(part.index) || !Number.isSafeInteger(part.count) ||
356
+ part.index < 0 || part.index >= part.count || typeof part.data !== 'string' ||
357
+ typeof part.resultDigest !== 'string')
358
+ throw new Error('INVALID_RECOVERY_OUTCOME');
359
+ const key = digest({ proposalDigest: error.recovery.proposalDigest, code: error.code,
360
+ count: part.count, resultDigest: part.resultDigest });
361
+ const parts = this.recoveryParts.get(key) ?? new Map();
362
+ parts.set(part.index, Buffer.from(part.data, 'base64'));
363
+ this.recoveryParts.set(key, parts);
364
+ if (parts.size !== part.count) {
365
+ view.payload.eventType = 'RECOVERY_PART';
366
+ return view;
367
+ }
368
+ const result = JSON.parse(Buffer.concat(Array.from({ length: part.count }, (_, index) => parts.get(index))).toString('utf8'));
369
+ if (digest(result) !== part.resultDigest)
370
+ throw new Error('INVALID_RECOVERY_OUTCOME');
371
+ error.recovery.result = result;
372
+ this.recoveryParts.delete(key);
373
+ }
374
+ throw error;
375
+ }
376
+ }
377
+ if (e.payload.seq !== this.incoming++)
378
+ throw new Error('INVALID_OR_REPLAYED_SESSION_ENVELOPE');
275
379
  if (view.payload.eventType === 'ERROR')
276
380
  throw new PeerRejectedError(view.payload.payload);
277
381
  return view;
@@ -402,12 +506,13 @@ export class SessionWire {
402
506
  const receiver = (await this.rawReceive('CHECKPOINT_ACK')).payload.payload;
403
507
  return this.seal({ actor, receiver });
404
508
  }
405
- async finishWorker() {
509
+ async finishWorker(onSealed) {
406
510
  const actor = (await this.rawReceive('CHECKPOINT')).payload
407
511
  .payload;
408
512
  if (!verifySigned(actor, this.peerDid) || digest(actor.payload) !== digest(this.checkpoint()))
409
513
  throw new Error('INVALID_AUDIT_CHECKPOINT');
410
514
  const receiver = signPayload(actor, this.owner), bundle = this.seal({ actor, receiver });
515
+ onSealed?.(bundle);
411
516
  await this.rawSend('CHECKPOINT_ACK', receiver);
412
517
  return bundle;
413
518
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session-audit.js","sourceRoot":"","sources":["../src/session-audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-audit.js","sourceRoot":"","sources":["../src/session-audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export interface SessionTimeoutOptions {
2
+ /** Legacy alias for taskTimeoutMs. */
3
+ timeoutMs?: number;
4
+ /** Local execution limit; generated proposals use this as their wall-clock budget. */
5
+ executionTimeoutMs?: number;
6
+ /** Overall task limit, including approval and settlement. Default 600000. */
7
+ taskTimeoutMs?: number;
8
+ /** Maximum time in a peer/owner approval wait phase. Default 600000. */
9
+ waitTimeoutMs?: number;
10
+ /** Relay connection/request limit. Default 45000. */
11
+ connectTimeoutMs?: number;
12
+ /** No authenticated peer activity during execution. Default 90000. */
13
+ transportIdleTimeoutMs?: number;
14
+ /** Worker liveness interval, independent of usage accounting. Default 15000. */
15
+ heartbeatIntervalMs?: number;
16
+ }
17
+ export declare function resolveSessionTimeouts(defaults: SessionTimeoutOptions, overrides: SessionTimeoutOptions): SessionTimeoutOptions;
18
+ export declare function validateSessionTimeouts(options: SessionTimeoutOptions): void;
19
+ /** Phase timers never renew the absolute task deadline or the contractual quota. */
20
+ export declare class SessionTimeouts {
21
+ readonly options: SessionTimeoutOptions;
22
+ private readonly controller;
23
+ readonly signal: AbortSignal;
24
+ private readonly overall;
25
+ private phase?;
26
+ private idle?;
27
+ constructor(options: SessionTimeoutOptions, deadline: string, parent?: AbortSignal);
28
+ wait(): void;
29
+ running(): void;
30
+ executing(budgetMs: number): void;
31
+ activity(): void;
32
+ close(): void;
33
+ }
@@ -0,0 +1,62 @@
1
+ const timeoutKeys = ['timeoutMs', 'executionTimeoutMs', 'taskTimeoutMs', 'waitTimeoutMs',
2
+ 'connectTimeoutMs', 'transportIdleTimeoutMs', 'heartbeatIntervalMs'];
3
+ export function resolveSessionTimeouts(defaults, overrides) {
4
+ return Object.fromEntries(timeoutKeys.map(key => [key, overrides[key] ?? defaults[key]]));
5
+ }
6
+ export function validateSessionTimeouts(options) {
7
+ for (const name of timeoutKeys) {
8
+ const value = options[name];
9
+ if (value !== undefined && (!Number.isSafeInteger(value) || value < 1 || value > 2_147_483_647))
10
+ throw new Error('INVALID_TIMEOUT: ' + name);
11
+ }
12
+ if (options.executionTimeoutMs !== undefined && options.taskTimeoutMs !== undefined &&
13
+ options.executionTimeoutMs > options.taskTimeoutMs)
14
+ throw new Error('INCOMPATIBLE_TIMEOUTS: executionTimeoutMs exceeds taskTimeoutMs');
15
+ if ((options.heartbeatIntervalMs ?? 15_000) >= (options.transportIdleTimeoutMs ?? 90_000))
16
+ throw new Error('INCOMPATIBLE_TIMEOUTS: heartbeatIntervalMs must be below transportIdleTimeoutMs');
17
+ }
18
+ /** Phase timers never renew the absolute task deadline or the contractual quota. */
19
+ export class SessionTimeouts {
20
+ options;
21
+ controller = new AbortController();
22
+ signal;
23
+ overall;
24
+ phase;
25
+ idle;
26
+ constructor(options, deadline, parent) {
27
+ this.options = options;
28
+ validateSessionTimeouts(options);
29
+ this.signal = AbortSignal.any([this.controller.signal, ...(parent ? [parent] : [])]);
30
+ const remaining = Math.max(1, Date.parse(deadline) - Date.now());
31
+ this.overall = setTimeout(() => this.controller.abort(new Error('TASK_TIMEOUT')), Math.min(options.taskTimeoutMs ?? options.timeoutMs ?? 600_000, remaining));
32
+ this.overall.unref();
33
+ this.wait();
34
+ }
35
+ wait() {
36
+ clearTimeout(this.phase);
37
+ clearTimeout(this.idle);
38
+ this.phase = setTimeout(() => this.controller.abort(new Error('PEER_WAIT_TIMEOUT')), this.options.waitTimeoutMs ?? 600_000);
39
+ this.phase.unref();
40
+ }
41
+ running() {
42
+ clearTimeout(this.phase);
43
+ clearTimeout(this.idle);
44
+ }
45
+ executing(budgetMs) {
46
+ this.running();
47
+ this.phase = setTimeout(() => this.controller.abort(new Error('EXECUTION_TIMEOUT')), Math.min(budgetMs, 2_147_483_647));
48
+ this.phase.unref();
49
+ this.activity();
50
+ }
51
+ activity() {
52
+ clearTimeout(this.idle);
53
+ this.idle = setTimeout(() => this.controller.abort(new Error('PEER_IDLE_TIMEOUT')), this.options.transportIdleTimeoutMs ?? 90_000);
54
+ this.idle.unref();
55
+ }
56
+ close() {
57
+ clearTimeout(this.overall);
58
+ clearTimeout(this.phase);
59
+ clearTimeout(this.idle);
60
+ }
61
+ }
62
+ //# sourceMappingURL=session-timeouts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-timeouts.js","sourceRoot":"","sources":["../src/session-timeouts.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,19 @@
1
1
  import type { Json, KeyPair, Schema, TaskManifest, Signed, SignedAgentCard, SignedEnvelope, CapabilityToken, BudgetSpec, OpenPolicy, RevocationList, Invite, SignedRevocationNotice } from '@acp/core';
2
- import { type AuditBundle } from '@acp/ledger';
3
- import type { RelayClientSecurityOptions, RelayTransport } from '@acp/relay';
2
+ import { type AuditBundle, type AuditEntry } from '@acp/ledger';
3
+ import type { RelayClientSecurityOptions, RelayTransport, RelayConnectionStatus } from '@acp/relay';
4
4
  import type { AgentAdapter, ProgressPayload, ProtocolEnvelope } from './adapter.js';
5
5
  import type { ApprovalProvider, WorkerAcceptancePolicy } from './approval-providers.js';
6
6
  import type { ToolBackend, ToolDefinition } from './mcp.js';
7
7
  import { VerificationEngine } from './verifier.js';
8
8
  import type { VerificationResult } from './verifier.js';
9
+ import { PeerRejectedError } from './session-audit.js';
10
+ import type { SessionTimeoutOptions } from './session-timeouts.js';
11
+ export type { SessionTimeoutOptions } from './session-timeouts.js';
12
+ export interface WorkspaceCleanupFailure {
13
+ taskId: string;
14
+ workspaceDir: string;
15
+ code: string;
16
+ }
9
17
  export interface SessionResult {
10
18
  taskId: string;
11
19
  state: 'SETTLED' | 'CANCELLED';
@@ -15,7 +23,9 @@ export interface SessionResult {
15
23
  }
16
24
  /** Daemon workers stay finite unless the owner raises the cap. */
17
25
  export declare const DEFAULT_MAX_CONCURRENT_TASKS = 8;
18
- export interface WorkerNodeOptions extends WorkerAcceptancePolicy {
26
+ export interface WorkerNodeOptions extends WorkerAcceptancePolicy, SessionTimeoutOptions {
27
+ /** Startup invite and signed card lifetime in seconds. Default 86400 (24 hours). */
28
+ inviteTtlSeconds?: number;
19
29
  /** Shared host state, independent of requester and worker identity. */
20
30
  dailyLimit?: {
21
31
  path: string;
@@ -33,15 +43,18 @@ export interface WorkerNodeOptions extends WorkerAcceptancePolicy {
33
43
  /** Controls agentDid when it is not owner.did. Required to sign the delegation. */
34
44
  agentKey?: KeyPair;
35
45
  approvalProvider?: ApprovalProvider;
46
+ /** Bilateral audit path; enables adjacent task checkpoints when inboxPath is absent. */
36
47
  auditPath?: string;
37
- /** Append accepted, decrypted task messages as private JSONL before execution. */
48
+ /** Append accepted messages as private JSONL; also enables adjacent task checkpoints. */
38
49
  inboxPath?: string;
39
50
  /** Best-effort notification after a successful inbox append; never awaited. */
40
51
  onInboxRecord?: (record: string) => void | Promise<void>;
41
- timeoutMs?: number;
42
52
  tools?: Record<string, ToolDefinition>;
43
53
  toolBackend?: ToolBackend;
44
54
  revocation?: RevocationList;
55
+ /** Residual workspace after bounded cleanup retries. Defaults to a console warning. */
56
+ onWorkspaceCleanupError?: (failure: WorkspaceCleanupFailure) => void | Promise<void>;
57
+ onStatus?: (status: RelayConnectionStatus, error?: Error) => void;
45
58
  onEvent?: (event: string, taskId: string, error?: ErrorDiagnostic) => void;
46
59
  /** Opt in to loopback and RFC1918 relays. Network invites stay blocked by default. */
47
60
  allowPrivateRelay?: boolean;
@@ -60,6 +73,8 @@ export declare class WorkerNode {
60
73
  readonly acceptance: WorkerAcceptancePolicy;
61
74
  private completed;
62
75
  private activeTasks;
76
+ private readonly taskJournal?;
77
+ private reconciled;
63
78
  private readonly proposalTimes;
64
79
  private readonly mailboxes;
65
80
  private readonly forwardedQueue;
@@ -86,12 +101,17 @@ export declare class WorkerNode {
86
101
  private consumeRate;
87
102
  /** Budget, allowlist, and rate checks that can be decided before execution starts. */
88
103
  private intakeRejection;
104
+ private status?;
105
+ private listenerStatus;
106
+ private listen;
89
107
  start(options?: {
90
108
  once?: boolean;
91
109
  signal?: AbortSignal;
92
110
  }): Promise<SessionResult | undefined>;
93
- private persistedEnvelopeIds?;
94
- private alreadyPersisted;
111
+ private notifyOutcome;
112
+ private reconcileTasks;
113
+ private sealedTaskResult;
114
+ private recoverProposal;
95
115
  private deliver;
96
116
  /** Local signed diagnostics are separate from the bilateral hash-chain ledger. */
97
117
  private reportRejection;
@@ -112,12 +132,6 @@ export declare class WorkerNode {
112
132
  private ingestRevocation;
113
133
  private recordNotice;
114
134
  private assertInviteActive;
115
- /**
116
- * Digest of an invite the worker already holds. Parsing does not dial the relay.
117
- * A loopback invite is hashed even when this worker did not opt into dialing it,
118
- * so a digest revocation still matches. An unparseable token is not a revocation.
119
- */
120
- private inviteDigest;
121
135
  /**
122
136
  * Before ACCEPT, every verified capability chain is checked against revocation
123
137
  * notices. A notice is stored and applied only when its issuer signed that
@@ -150,13 +164,12 @@ export interface ErrorDiagnostic {
150
164
  code: string;
151
165
  detail?: ErrorDetail;
152
166
  }
153
- export interface RequesterClientOptions {
167
+ export interface RequesterClientOptions extends SessionTimeoutOptions {
154
168
  owner: KeyPair;
155
169
  relay?: RelayTransport | string;
156
170
  approvalProvider?: ApprovalProvider;
157
171
  verificationEngine?: VerificationEngine;
158
172
  auditPath?: string;
159
- timeoutMs?: number;
160
173
  allowPrivateRelay?: boolean;
161
174
  /** DNS resolver used before a string relay URL is dialed. */
162
175
  lookup?: RelayClientSecurityOptions['lookup'];
@@ -166,7 +179,7 @@ export interface RequesterClientOptions {
166
179
  */
167
180
  allowUnencryptedEnvelopes?: boolean;
168
181
  }
169
- export interface DelegateOptions {
182
+ export interface DelegateOptions extends SessionTimeoutOptions {
170
183
  to: string;
171
184
  discover?: {
172
185
  skillId?: string;
@@ -203,6 +216,22 @@ export interface DelegateReceipt {
203
216
  bundle: AuditBundle;
204
217
  accepted: boolean;
205
218
  }
219
+ /** Locally verified delivery whose bilateral checkpoint did not finish. Never an audit bundle. */
220
+ export interface IncompleteDelegateReceipt extends Omit<DelegateReceipt, 'bundle'> {
221
+ checkpointComplete: false;
222
+ delivery: SignedEnvelope;
223
+ verification: VerificationResult;
224
+ entries: AuditEntry[];
225
+ completionError: string;
226
+ }
227
+ /** Completion failure preserves local verification without claiming a sealed checkpoint. */
228
+ export declare class IncompleteSettlementError extends Error {
229
+ readonly incompleteReceipt: IncompleteDelegateReceipt;
230
+ readonly code?: string;
231
+ readonly detail?: ErrorDetail;
232
+ readonly recovery?: PeerRejectedError['recovery'];
233
+ constructor(incompleteReceipt: IncompleteDelegateReceipt, cause: unknown);
234
+ }
206
235
  export interface DelegateMultiResult {
207
236
  mode: 'race' | 'quorum';
208
237
  status: 'SETTLED';
@@ -215,12 +244,15 @@ export interface DelegateMultiResult {
215
244
  outputDigest: string;
216
245
  }>;
217
246
  receipts: DelegateReceipt[];
247
+ incompleteReceipts: IncompleteDelegateReceipt[];
218
248
  cancelled: string[];
219
249
  }
220
- export interface DelegateMultiOptions {
250
+ export interface DelegateMultiOptions extends SessionTimeoutOptions {
221
251
  workers: DelegateWorkerTarget[];
222
252
  mode: 'race' | 'quorum';
223
253
  quorumSize?: number;
254
+ /** Completion grace for delivered sessions after a winner is selected. Default 45000 ms. */
255
+ completionTimeoutMs?: number;
224
256
  title: string;
225
257
  description: string;
226
258
  input: Json;
@@ -271,6 +303,8 @@ export declare class RequesterClient {
271
303
  }): Promise<SignedEnvelope>;
272
304
  delegate(options: DelegateOptions, hooks?: {
273
305
  onProgress?: DelegateOptions['onProgress'];
306
+ /** @internal Multi-delegation stops cancelling execution once DELIVER is recorded. */
307
+ onDelivered?: () => void;
274
308
  }): Promise<SessionResult>;
275
309
  delegateMulti(options: DelegateMultiOptions): Promise<DelegateMultiResult>;
276
310
  }
@@ -284,5 +318,6 @@ export declare function buildTaskManifest(options: {
284
318
  description: string;
285
319
  outputSchema?: Schema;
286
320
  budget?: Partial<BudgetSpec>;
321
+ taskTimeoutMs?: number;
287
322
  capabilities?: TaskManifest['permissions']['grantedCapabilities'];
288
323
  }): TaskManifest;