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.
- package/README.ja.md +22 -0
- package/README.md +104 -3
- package/dist/cli/dist/approval-summary.d.ts +2 -0
- package/dist/cli/dist/approval-summary.js +32 -0
- package/dist/cli/dist/approval-summary.js.map +1 -0
- package/dist/cli/dist/error-messages.d.ts +2 -0
- package/dist/cli/dist/error-messages.js +24 -0
- package/dist/cli/dist/error-messages.js.map +1 -0
- package/dist/cli/dist/index.js +2 -1
- package/dist/cli/dist/index.js.map +1 -1
- package/dist/cli/dist/invite-share.js +2 -8
- package/dist/cli/dist/invite-share.js.map +1 -1
- package/dist/cli/dist/network.js +87 -11
- package/dist/cli/dist/network.js.map +1 -1
- package/dist/cli/dist/task-input.d.ts +2 -0
- package/dist/cli/dist/task-input.js +19 -0
- package/dist/cli/dist/task-input.js.map +1 -0
- package/dist/cli/dist/wake-hook.d.ts +3 -0
- package/dist/cli/dist/wake-hook.js +32 -0
- package/dist/cli/dist/wake-hook.js.map +1 -0
- package/dist/package.json +1 -1
- package/dist/packages/adapters/dist/command.d.ts +2 -0
- package/dist/packages/adapters/dist/command.js +13 -0
- package/dist/packages/adapters/dist/command.js.map +1 -1
- package/dist/packages/core/dist/capability.js +7 -2
- package/dist/packages/core/dist/capability.js.map +1 -1
- package/dist/packages/core/dist/crypto.js +8 -2
- package/dist/packages/core/dist/crypto.js.map +1 -1
- package/dist/packages/core/dist/discovery.d.ts +5 -0
- package/dist/packages/core/dist/discovery.js +29 -13
- package/dist/packages/core/dist/discovery.js.map +1 -1
- package/dist/packages/core/dist/revocation.d.ts +4 -1
- package/dist/packages/core/dist/revocation.js +29 -5
- package/dist/packages/core/dist/revocation.js.map +1 -1
- package/dist/packages/relay/dist/fetch.d.ts +28 -1
- package/dist/packages/relay/dist/fetch.js +195 -4
- package/dist/packages/relay/dist/fetch.js.map +1 -1
- package/dist/packages/relay/dist/index.d.ts +16 -5
- package/dist/packages/relay/dist/index.js +243 -95
- package/dist/packages/relay/dist/index.js.map +1 -1
- package/dist/packages/relay/dist/journal.d.ts +7 -0
- package/dist/packages/relay/dist/journal.js +33 -4
- package/dist/packages/relay/dist/journal.js.map +1 -1
- package/dist/packages/relay/dist/notifications.d.ts +63 -0
- package/dist/packages/relay/dist/notifications.js +55 -0
- package/dist/packages/relay/dist/notifications.js.map +1 -0
- package/dist/packages/relay/dist/retry.d.ts +4 -1
- package/dist/packages/relay/dist/retry.js +27 -7
- package/dist/packages/relay/dist/retry.js.map +1 -1
- package/dist/packages/relay/dist/worker.d.ts +7 -0
- package/dist/packages/relay/dist/worker.js +57 -8
- package/dist/packages/relay/dist/worker.js.map +1 -1
- package/dist/packages/runtime/dist/a2a.js +1 -1
- package/dist/packages/runtime/dist/approval-providers.d.ts +2 -0
- package/dist/packages/runtime/dist/approval-providers.js +2 -2
- package/dist/packages/runtime/dist/approval-providers.js.map +1 -1
- package/dist/packages/runtime/dist/mcp-server.js +17 -1
- package/dist/packages/runtime/dist/mcp-server.js.map +1 -1
- package/dist/packages/runtime/dist/mcp-tool-catalog.js +16 -0
- package/dist/packages/runtime/dist/mcp-tool-catalog.js.map +1 -1
- package/dist/packages/runtime/dist/session-audit.d.ts +22 -3
- package/dist/packages/runtime/dist/session-audit.js +128 -23
- package/dist/packages/runtime/dist/session-audit.js.map +1 -1
- package/dist/packages/runtime/dist/session-timeouts.d.ts +33 -0
- package/dist/packages/runtime/dist/session-timeouts.js +62 -0
- package/dist/packages/runtime/dist/session-timeouts.js.map +1 -0
- package/dist/packages/runtime/dist/session.d.ts +52 -17
- package/dist/packages/runtime/dist/session.js +466 -94
- package/dist/packages/runtime/dist/session.js.map +1 -1
- package/dist/packages/runtime/dist/task-journal.d.ts +36 -0
- package/dist/packages/runtime/dist/task-journal.js +104 -0
- package/dist/packages/runtime/dist/task-journal.js.map +1 -0
- 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 ?
|
|
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
|
-
|
|
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
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
seq: this.outgoing++,
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
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
|
|
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
|
|
94
|
-
private
|
|
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;
|