sealbridge 0.4.2 → 0.5.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 (115) hide show
  1. package/README.ja.md +4 -2
  2. package/README.md +6 -2
  3. package/dist/cli/dist/accept.d.ts +2 -1
  4. package/dist/cli/dist/accept.js +18 -7
  5. package/dist/cli/dist/accept.js.map +1 -1
  6. package/dist/cli/dist/index.js +46 -13
  7. package/dist/cli/dist/index.js.map +1 -1
  8. package/dist/cli/dist/invite-links.d.ts +14 -0
  9. package/dist/cli/dist/invite-links.js +263 -0
  10. package/dist/cli/dist/invite-links.js.map +1 -0
  11. package/dist/cli/dist/invite-output.d.ts +1 -1
  12. package/dist/cli/dist/invite-output.js +3 -2
  13. package/dist/cli/dist/invite-output.js.map +1 -1
  14. package/dist/cli/dist/network.js +16 -23
  15. package/dist/cli/dist/network.js.map +1 -1
  16. package/dist/cli/dist/receipt.d.ts +12 -2
  17. package/dist/cli/dist/receipt.js +6 -5
  18. package/dist/cli/dist/receipt.js.map +1 -1
  19. package/dist/cli/dist/sdk.d.ts +6 -4
  20. package/dist/cli/dist/sdk.js +3 -2
  21. package/dist/cli/dist/sdk.js.map +1 -1
  22. package/dist/examples/two-owner-demo/dist/run-demo.js +3 -1
  23. package/dist/examples/two-owner-demo/dist/run-demo.js.map +1 -1
  24. package/dist/package.json +1 -1
  25. package/dist/packages/core/dist/context-grant.d.ts +13 -0
  26. package/dist/packages/core/dist/context-grant.js +65 -0
  27. package/dist/packages/core/dist/context-grant.js.map +1 -0
  28. package/dist/packages/core/dist/delegation.d.ts +17 -0
  29. package/dist/packages/core/dist/delegation.js +126 -0
  30. package/dist/packages/core/dist/delegation.js.map +1 -0
  31. package/dist/packages/core/dist/edge.d.ts +2 -0
  32. package/dist/packages/core/dist/edge.js +2 -0
  33. package/dist/packages/core/dist/edge.js.map +1 -1
  34. package/dist/packages/core/dist/index.d.ts +4 -0
  35. package/dist/packages/core/dist/index.js +4 -0
  36. package/dist/packages/core/dist/index.js.map +1 -1
  37. package/dist/packages/core/dist/invite-link.d.ts +72 -0
  38. package/dist/packages/core/dist/invite-link.js +225 -0
  39. package/dist/packages/core/dist/invite-link.js.map +1 -0
  40. package/dist/packages/core/dist/invite-sas.d.ts +7 -0
  41. package/dist/packages/core/dist/invite-sas.js +15 -0
  42. package/dist/packages/core/dist/invite-sas.js.map +1 -0
  43. package/dist/packages/core/dist/relay-auth.d.ts +1 -1
  44. package/dist/packages/core/dist/relay-auth.js +1 -1
  45. package/dist/packages/core/dist/relay-auth.js.map +1 -1
  46. package/dist/packages/core/dist/schema.d.ts +1 -1
  47. package/dist/packages/core/dist/schema.js +4 -0
  48. package/dist/packages/core/dist/schema.js.map +1 -1
  49. package/dist/packages/core/dist/types.d.ts +52 -0
  50. package/dist/packages/ledger/dist/index.d.ts +70 -2
  51. package/dist/packages/ledger/dist/index.js +404 -26
  52. package/dist/packages/ledger/dist/index.js.map +1 -1
  53. package/dist/packages/relay/dist/fetch.js +4 -0
  54. package/dist/packages/relay/dist/fetch.js.map +1 -1
  55. package/dist/packages/relay/dist/invites.d.ts +42 -0
  56. package/dist/packages/relay/dist/invites.js +347 -0
  57. package/dist/packages/relay/dist/invites.js.map +1 -0
  58. package/dist/packages/relay/dist/worker.d.ts +3 -0
  59. package/dist/packages/relay/dist/worker.js +21 -0
  60. package/dist/packages/relay/dist/worker.js.map +1 -1
  61. package/dist/packages/runtime/dist/a2a.js +1 -1
  62. package/dist/packages/runtime/dist/adapter.d.ts +1 -0
  63. package/dist/packages/runtime/dist/approval-providers.d.ts +4 -0
  64. package/dist/packages/runtime/dist/approval-providers.js +3 -0
  65. package/dist/packages/runtime/dist/approval-providers.js.map +1 -1
  66. package/dist/packages/runtime/dist/connection-persistence.d.ts +1 -1
  67. package/dist/packages/runtime/dist/context-grant-audit.d.ts +8 -0
  68. package/dist/packages/runtime/dist/context-grant-audit.js +41 -0
  69. package/dist/packages/runtime/dist/context-grant-audit.js.map +1 -0
  70. package/dist/packages/runtime/dist/delegation.d.ts +37 -0
  71. package/dist/packages/runtime/dist/delegation.js +125 -0
  72. package/dist/packages/runtime/dist/delegation.js.map +1 -0
  73. package/dist/packages/runtime/dist/gateway.d.ts +1 -0
  74. package/dist/packages/runtime/dist/gateway.js.map +1 -1
  75. package/dist/packages/runtime/dist/index.d.ts +2 -0
  76. package/dist/packages/runtime/dist/index.js +2 -0
  77. package/dist/packages/runtime/dist/index.js.map +1 -1
  78. package/dist/packages/runtime/dist/mcp-server.js +22 -8
  79. package/dist/packages/runtime/dist/mcp-server.js.map +1 -1
  80. package/dist/packages/runtime/dist/mcp-tool-catalog.js +44 -5
  81. package/dist/packages/runtime/dist/mcp-tool-catalog.js.map +1 -1
  82. package/dist/packages/runtime/dist/session-audit.d.ts +6 -1
  83. package/dist/packages/runtime/dist/session-audit.js +35 -4
  84. package/dist/packages/runtime/dist/session-audit.js.map +1 -1
  85. package/dist/packages/runtime/dist/session.d.ts +21 -1
  86. package/dist/packages/runtime/dist/session.js +427 -62
  87. package/dist/packages/runtime/dist/session.js.map +1 -1
  88. package/dist/packages/runtime/dist/task-journal.d.ts +10 -1
  89. package/dist/packages/runtime/dist/task-journal.js +26 -1
  90. package/dist/packages/runtime/dist/task-journal.js.map +1 -1
  91. package/dist/packages/runtime/dist/verifier.d.ts +5 -2
  92. package/dist/packages/runtime/dist/verifier.js +14 -4
  93. package/dist/packages/runtime/dist/verifier.js.map +1 -1
  94. package/dist/spec/audit-entry.schema.json +25 -1
  95. package/dist/spec/audit-evidence.schema.json +179 -0
  96. package/dist/spec/audit-file-record.schema.json +177 -0
  97. package/dist/spec/audit-interruption.schema.json +110 -0
  98. package/dist/spec/context-grant-audit-payload.schema.json +24 -0
  99. package/dist/spec/context-grant.schema.json +146 -0
  100. package/dist/spec/delegation-attachment.schema.json +167 -0
  101. package/dist/spec/delegation-link.schema.json +141 -0
  102. package/dist/spec/examples/context-pooling/approval_redelegation/sample-delegation-attachment.json +413 -0
  103. package/dist/spec/examples/context-pooling/hand_over/sample-context-grant.json +18 -0
  104. package/dist/spec/examples/context-pooling/hand_over/sample-task-manifest.0.2.0.json +94 -0
  105. package/dist/spec/examples/context-pooling/sample-context-grant-audit-payload.json +4 -0
  106. package/dist/spec/examples/context-pooling/view_only/sample-context-grant.json +18 -0
  107. package/dist/spec/examples/context-pooling/view_only/sample-task-manifest.0.2.0.json +94 -0
  108. package/dist/spec/examples/sample-audit-evidence.json +138 -0
  109. package/dist/spec/examples/sample-audit-file-record.json +31 -0
  110. package/dist/spec/examples/sample-audit-interruption.json +29 -0
  111. package/dist/spec/task-manifest.0.2.0.schema.json +87 -1
  112. package/docs/context-grants.md +221 -0
  113. package/docs/sdk.ja.md +4 -0
  114. package/docs/sdk.md +4 -0
  115. package/package.json +3 -2
@@ -1,27 +1,151 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- import { appendFileSync, readFileSync } from 'node:fs';
3
- import { digest, signPayload, signAck, verifySigned, verifySignature, validateSchema, } from '../../core/dist/index.js';
2
+ import { appendFileSync, readFileSync, openSync, closeSync, fsyncSync, unlinkSync } from 'node:fs';
3
+ import { dirname, resolve } from 'node:path';
4
+ import { digest, signPayload, signAck, verifySigned, verifySignature, validateSchema, validateManifest, } from '../../core/dist/index.js';
5
+ function persistInterruptionIntent(beforeWrite) {
6
+ const result = beforeWrite?.();
7
+ if (result && typeof result.then === 'function') {
8
+ void Promise.resolve(result).catch(() => { });
9
+ throw new Error('ASYNC_AUDIT_INTENT_FORBIDDEN');
10
+ }
11
+ }
12
+ // Source locations are diagnostic metadata only: never serialize them into a bundle.
13
+ const jsonlLocations = new WeakMap();
14
+ function object(value) {
15
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
16
+ ? value : undefined;
17
+ }
18
+ function diagnosticText(value) {
19
+ if (typeof value !== 'string')
20
+ return undefined;
21
+ if (/acp-invite:/i.test(value))
22
+ return '[redacted]';
23
+ return value.length > 160 ? value.slice(0, 160) + '...' : value;
24
+ }
25
+ function diagnosticJson(value) {
26
+ // JSON escaping covers C0 controls; also escape DEL, C1 and Unicode display controls.
27
+ return JSON.stringify(value).replace(/[\u007f-\uffff]/g, char => '\\u' + char.charCodeAt(0).toString(16).padStart(4, '0'));
28
+ }
29
+ function entryLocation(entry, locationKind, index, line) {
30
+ const e = object(entry), body = object(e?.body);
31
+ return {
32
+ locationKind,
33
+ taskId: diagnosticText(body?.taskId),
34
+ seq: typeof body?.seq === 'number' && Number.isSafeInteger(body.seq) && body.seq >= 0
35
+ ? body.seq : undefined,
36
+ entryHash: diagnosticText(e?.entryHash),
37
+ line,
38
+ index,
39
+ verified: false,
40
+ };
41
+ }
42
+ function checkpointLocation(bundle) {
43
+ const checkpoint = object(bundle?.checkpoint), payload = object(object(checkpoint?.actor)?.payload);
44
+ const entries = Array.isArray(bundle?.entries) ? bundle.entries : [];
45
+ const source = jsonlLocations.get(bundle);
46
+ return {
47
+ locationKind: 'checkpoint',
48
+ taskId: diagnosticText(payload?.taskId),
49
+ head: diagnosticText(payload?.head),
50
+ line: source?.checkpointLine,
51
+ lastEntry: entries.length
52
+ ? entryLocation(entries.at(-1), 'last-entry', entries.length - 1, source?.entryLines.at(-1)) : undefined,
53
+ verified: false,
54
+ };
55
+ }
56
+ function parseRecords(text) {
57
+ // Keep the existing trim/filter rules while counting physical lines before filtering.
58
+ const start = text.length - text.trimStart().length;
59
+ const firstLine = text.slice(0, start).split('\n').length;
60
+ return text.trim().split('\n').flatMap((line, index) => {
61
+ if (!line)
62
+ return [];
63
+ const physicalLine = firstLine + index;
64
+ let record;
65
+ try {
66
+ record = JSON.parse(line);
67
+ }
68
+ catch {
69
+ // Engine JSON errors can quote the input, including task payloads or invitations.
70
+ throw new SyntaxError('Invalid JSON; auditLocation=' + diagnosticJson({ line: physicalLine, verified: false }));
71
+ }
72
+ return [{ record, line: physicalLine }];
73
+ });
74
+ }
4
75
  export class MemoryStore {
5
76
  #entries = [];
77
+ #interruption;
78
+ #checkpoint;
79
+ #closing = false;
6
80
  read() {
7
81
  return structuredClone(this.#entries);
8
82
  }
9
83
  append(entry) {
84
+ if (this.#closing)
85
+ throw new Error('LEDGER_BUSY');
86
+ if (this.#interruption || this.#checkpoint)
87
+ throw new Error('LEDGER_SEALED');
10
88
  this.#entries.push(structuredClone(entry));
11
89
  }
90
+ seal(checkpoint) {
91
+ if (this.#closing)
92
+ throw new Error('LEDGER_BUSY');
93
+ if (this.#interruption)
94
+ throw new Error('LEDGER_SEALED');
95
+ if (this.#checkpoint && digest(this.#checkpoint.actor.payload) !== digest(checkpoint.actor.payload))
96
+ throw new Error('LEDGER_SEALED');
97
+ this.#checkpoint = structuredClone(checkpoint);
98
+ }
99
+ closeInterrupted(bundle, beforeWrite) {
100
+ if (this.#closing)
101
+ throw new Error('LEDGER_BUSY');
102
+ bundle = structuredClone(bundle);
103
+ if (this.#checkpoint)
104
+ throw new Error('LEDGER_SEALED');
105
+ if (digest(this.#entries) !== digest(bundle.entries) ||
106
+ verifyAuditEvidence(bundle).status !== 'UNILATERALLY_CLOSED')
107
+ throw new Error('INVALID_AUDIT_INTERRUPTION');
108
+ if (this.#interruption && digest(this.#interruption) !== digest(bundle.interruption))
109
+ throw new Error('LEDGER_SEALED');
110
+ this.#closing = true;
111
+ try {
112
+ persistInterruptionIntent(beforeWrite);
113
+ this.#interruption = bundle.interruption;
114
+ }
115
+ finally {
116
+ this.#closing = false;
117
+ }
118
+ }
12
119
  }
13
120
  export class JsonlStore {
14
121
  path;
15
122
  constructor(path) {
16
123
  this.path = path;
17
124
  }
125
+ /** All cooperating writers use this exclusive file lock. Never share with an older writer.
126
+ * A lock left by process death is an explicit local recovery operation, never stolen. */
127
+ exclusive(operation) {
128
+ const path = resolve(this.path) + '.lock';
129
+ let fd;
130
+ try {
131
+ fd = openSync(path, 'wx', 0o600);
132
+ }
133
+ catch (error) {
134
+ if (error.code === 'EEXIST')
135
+ throw new Error('LEDGER_BUSY');
136
+ throw error;
137
+ }
138
+ try {
139
+ return operation();
140
+ }
141
+ finally {
142
+ closeSync(fd);
143
+ unlinkSync(path);
144
+ }
145
+ }
18
146
  records() {
19
147
  try {
20
- return readFileSync(this.path, 'utf8')
21
- .trim()
22
- .split('\n')
23
- .filter(Boolean)
24
- .map((l) => JSON.parse(l));
148
+ return parseRecords(readFileSync(this.path, 'utf8')).map(({ record }) => record);
25
149
  }
26
150
  catch (e) {
27
151
  if (e.code === 'ENOENT')
@@ -35,30 +159,93 @@ export class JsonlStore {
35
159
  .map((r) => r.entry);
36
160
  }
37
161
  append(entry) {
38
- if (this.records().some((r) => r.checkpoint))
39
- throw new Error('LEDGER_SEALED');
40
- appendFileSync(this.path, JSON.stringify({ entry }) + '\n', { mode: 0o600 });
162
+ this.exclusive(() => {
163
+ if (this.records().some((r) => r.checkpoint || Object.hasOwn(r, 'interruption')))
164
+ throw new Error('LEDGER_SEALED');
165
+ appendFileSync(this.path, JSON.stringify({ entry }) + '\n', { mode: 0o600 });
166
+ });
41
167
  }
42
168
  seal(checkpoint) {
43
- const old = this.records().at(-1)?.checkpoint;
44
- if (old) {
45
- if (digest(old.actor.payload) !== digest(checkpoint.actor.payload))
169
+ this.exclusive(() => {
170
+ const records = this.records();
171
+ if (records.some(r => Object.hasOwn(r, 'interruption')))
46
172
  throw new Error('LEDGER_SEALED');
47
- return;
48
- }
49
- appendFileSync(this.path, JSON.stringify({ checkpoint }) + '\n', { mode: 0o600 });
173
+ const old = records.at(-1)?.checkpoint;
174
+ if (old) {
175
+ if (digest(old.actor.payload) !== digest(checkpoint.actor.payload))
176
+ throw new Error('LEDGER_SEALED');
177
+ return;
178
+ }
179
+ appendFileSync(this.path, JSON.stringify({ checkpoint }) + '\n', { mode: 0o600 });
180
+ });
181
+ }
182
+ closeInterrupted(bundle, beforeWrite) {
183
+ bundle = structuredClone(bundle);
184
+ this.exclusive(() => {
185
+ if (verifyAuditEvidence(bundle).status !== 'UNILATERALLY_CLOSED')
186
+ throw new Error('INVALID_AUDIT_INTERRUPTION');
187
+ const text = readFileSync(this.path, 'utf8'), records = parseRecords(text);
188
+ const terminal = records.at(-1)?.record.interruption;
189
+ if (terminal) {
190
+ const existing = parseAuditJsonl(text);
191
+ if (digest(existing) !== digest(bundle))
192
+ throw new Error('LEDGER_SEALED');
193
+ }
194
+ else {
195
+ if (records.some(({ record }) => !object(record) || Object.keys(record).length !== 1 || !record.entry) ||
196
+ digest(records.map(({ record }) => record.entry)) !== digest(bundle.entries))
197
+ throw new Error('AUDIT_PREFIX_MISMATCH');
198
+ }
199
+ persistInterruptionIntent(beforeWrite);
200
+ // Journal callbacks must not change the audit. Cooperating processes remain excluded.
201
+ if (readFileSync(this.path, 'utf8') !== text)
202
+ throw new Error('AUDIT_PREFIX_MISMATCH');
203
+ const fd = openSync(this.path, 'a');
204
+ try {
205
+ if (!terminal)
206
+ appendFileSync(fd, (text.endsWith('\n') ? '' : '\n') + JSON.stringify({ interruption: bundle.interruption }) + '\n');
207
+ // Includes the original acknowledged prefix, and also retries a failed sync after append.
208
+ fsyncSync(fd);
209
+ }
210
+ finally {
211
+ closeSync(fd);
212
+ }
213
+ if (process.platform !== 'win32') {
214
+ const dir = openSync(dirname(this.path), 'r');
215
+ try {
216
+ fsyncSync(dir);
217
+ }
218
+ finally {
219
+ closeSync(dir);
220
+ }
221
+ }
222
+ });
50
223
  }
51
224
  }
52
225
  export function parseJsonl(text) {
53
- const records = text
54
- .trim()
55
- .split('\n')
56
- .filter(Boolean)
57
- .map((l) => JSON.parse(l));
58
- const last = records.pop();
59
- if (!last?.checkpoint || last.entry || records.some((r) => !r.entry || r.checkpoint))
60
- throw new Error('MISSING_OR_MISPLACED_CHECKPOINT');
61
- return { entries: records.map((r) => r.entry), checkpoint: last.checkpoint };
226
+ const records = parseRecords(text);
227
+ const last = records.at(-1);
228
+ const misplaced = records.slice(0, -1).find(({ record }) => !object(record)?.entry || object(record)?.checkpoint || Object.hasOwn(record, 'interruption'));
229
+ if (!object(last?.record)?.checkpoint || object(last?.record)?.entry || Object.hasOwn(last.record, 'interruption') || misplaced) {
230
+ const offending = misplaced ?? last;
231
+ const entry = object(offending?.record)?.entry;
232
+ const checkpoint = object(offending?.record)?.checkpoint;
233
+ const payload = object(object(object(checkpoint)?.actor)?.payload);
234
+ const lastEntry = !entry && !checkpoint
235
+ ? records.findLast(({ record }) => object(record)?.entry) : undefined;
236
+ const location = entry
237
+ ? entryLocation(entry, !misplaced && !object(last?.record)?.checkpoint ? 'last-entry' : 'entry')
238
+ : { locationKind: checkpoint ? 'checkpoint' : 'record', taskId: diagnosticText(payload?.taskId),
239
+ head: diagnosticText(payload?.head), verified: false };
240
+ throw new Error('MISSING_OR_MISPLACED_CHECKPOINT; auditLocation=' + diagnosticJson({
241
+ ...location, line: offending?.line,
242
+ lastEntry: lastEntry ? { ...entryLocation(lastEntry.record.entry, 'last-entry'), line: lastEntry.line } : undefined,
243
+ }));
244
+ }
245
+ const entryRecords = records.slice(0, -1);
246
+ const bundle = { entries: entryRecords.map(({ record }) => record.entry), checkpoint: last.record.checkpoint };
247
+ jsonlLocations.set(bundle, { entryLines: entryRecords.map(({ line }) => line), checkpointLine: last.line });
248
+ return bundle;
62
249
  }
63
250
  export class BilateralLedger {
64
251
  taskId;
@@ -224,9 +411,22 @@ function auditResult(supplied, error) {
224
411
  truncationChecked: true,
225
412
  };
226
413
  }
414
+ function verificationError(error) {
415
+ // Retain existing verifier codes and schema explanations, without forwarding arbitrary exceptions.
416
+ if (error instanceof Error && (/^(checkpoint|trust anchor|entry \d+|[A-Z][A-Z0-9_]{0,79})$/.test(error.message)
417
+ || error.message.startsWith('SCHEMA_VIOLATION: '))) {
418
+ const message = error.message;
419
+ const bounded = message.length > 1024 ? message.slice(0, 1024) + '...' : message;
420
+ return 'Error: ' + diagnosticJson(bounded).slice(1, -1);
421
+ }
422
+ return error instanceof TypeError ? 'TypeError' : 'Error';
423
+ }
227
424
  export function verifyAudit(bundle, expected) {
228
425
  const supplied = anchorSupplied(expected);
426
+ let location = checkpointLocation(bundle);
229
427
  try {
428
+ if (object(bundle) && Object.hasOwn(bundle, 'interruption'))
429
+ throw new Error('checkpoint');
230
430
  const { entries, checkpoint } = bundle, c = checkpoint.actor.payload;
231
431
  const selfDelegated = Array.isArray(c?.actors) && c.actors.length === 2 && c.actors[0] === c.actors[1];
232
432
  if (c.type !== 'AuditCheckpoint' ||
@@ -243,6 +443,7 @@ export function verifyAudit(bundle, expected) {
243
443
  throw new Error('checkpoint');
244
444
  assertTrustAnchor(resolveAnchor(expected), c, entries);
245
445
  for (let i = 0; i < entries.length; i++) {
446
+ location = entryLocation(entries[i], 'entry', i, jsonlLocations.get(bundle)?.entryLines[i]);
246
447
  const e = entries[i], b = e.body, a = e.counterSignature;
247
448
  validateSchema('audit-entry', e);
248
449
  if (b.taskId !== c.taskId ||
@@ -263,7 +464,184 @@ export function verifyAudit(bundle, expected) {
263
464
  return auditResult(supplied);
264
465
  }
265
466
  catch (e) {
266
- return auditResult(supplied, e);
467
+ return auditResult(supplied, verificationError(e) + '; auditLocation=' + diagnosticJson(location));
267
468
  }
268
469
  }
470
+ const interruptionLocations = new WeakMap();
471
+ function interruptionLocation(bundle) {
472
+ const signed = object(bundle?.interruption), p = object(signed?.payload);
473
+ const source = interruptionLocations.get(bundle);
474
+ const entries = Array.isArray(bundle?.entries) ? bundle.entries : [];
475
+ let interruptionHash;
476
+ try {
477
+ if (p)
478
+ interruptionHash = digest(p);
479
+ }
480
+ catch { /* Only expose a computed digest. */ }
481
+ return {
482
+ locationKind: 'interruption', taskId: diagnosticText(p?.taskId),
483
+ seq: typeof p?.seq === 'number' && Number.isSafeInteger(p.seq) && p.seq >= 0 ? p.seq : undefined,
484
+ interruptionHash, line: source?.terminalLine, verified: false,
485
+ lastEntry: entries.length ? entryLocation(entries.at(-1), 'last-entry', entries.length - 1, source?.entryLines.at(-1)) : undefined,
486
+ };
487
+ }
488
+ /** Read either terminal form, retaining physical JSONL locations out of band. */
489
+ export function parseAuditJsonl(text) {
490
+ const records = parseRecords(text);
491
+ // Keep the bilateral parser's diagnostics for old files, including missing checkpoints.
492
+ if (!records.some(({ record }) => object(record) && Object.hasOwn(record, 'interruption'))) {
493
+ const bilateral = parseJsonl(text);
494
+ const malformed = records.find(({ record }) => !object(record) || Object.keys(record).length !== 1 ||
495
+ !['entry', 'checkpoint'].includes(Object.keys(record)[0]));
496
+ if (!malformed)
497
+ return bilateral;
498
+ throw new Error('INVALID_AUDIT_RECORD; auditLocation=' + diagnosticJson({ line: malformed.line, verified: false }));
499
+ }
500
+ const bad = records.find(({ record }, index) => {
501
+ const r = object(record);
502
+ return !r || Object.keys(r).length !== 1 ||
503
+ (index === records.length - 1 ? !Object.hasOwn(r, 'interruption') : !Object.hasOwn(r, 'entry'));
504
+ });
505
+ if (bad)
506
+ throw new Error('MISPLACED_AUDIT_TERMINAL; auditLocation=' + diagnosticJson({ line: bad.line, verified: false }));
507
+ const bundle = { entries: records.slice(0, -1).map(({ record }) => record.entry), interruption: records.at(-1).record.interruption };
508
+ interruptionLocations.set(bundle, { entryLines: records.slice(0, -1).map(({ line }) => line), terminalLine: records.at(-1).line });
509
+ return bundle;
510
+ }
511
+ /** Verify a PROPOSE-only acknowledged prefix, including offline manifest roles/signature. */
512
+ function assertInterruptionPrefix(entries, taskId, actors) {
513
+ if (!Array.isArray(entries) || entries.length !== 1 || actors.length !== 2 || actors[0] === actors[1])
514
+ throw new Error('INTERRUPTION_SCOPE');
515
+ const e = entries[0];
516
+ validateSchema('audit-entry', e);
517
+ const b = e.body, a = e.counterSignature;
518
+ if (b.eventType !== 'PROPOSE' || b.taskId !== taskId || b.seq !== 0 || b.prevEntryHash !== null ||
519
+ b.actorDid !== actors[0] || b.receiverDid !== actors[1] || e.entryHash !== digest(b) ||
520
+ !verifySignature(b, e.actorSignature, actors[0]) || !verifySigned(a, actors[1]) ||
521
+ a.payload.type !== 'AckReceipt' || a.payload.taskId !== taskId || a.payload.entryHash !== e.entryHash ||
522
+ a.payload.actorDid !== actors[0] || a.payload.receiverDid !== actors[1])
523
+ throw new Error('entry 0');
524
+ const proposal = object(b.payload)?.proposal;
525
+ if (!proposal)
526
+ throw new Error('INTERRUPTION_MANIFEST');
527
+ validateManifest(proposal.payload);
528
+ if (!verifySigned(proposal, actors[0]) || proposal.payload.taskId !== taskId ||
529
+ proposal.payload.requester.ownerDid !== actors[0] || proposal.payload.worker?.ownerDid !== actors[1])
530
+ throw new Error('INTERRUPTION_MANIFEST');
531
+ // Deliberately no live expiry, retirement clock, or peer-floor policy in offline verification.
532
+ }
533
+ function evidencePins(options) {
534
+ const base = resolveAnchor(options);
535
+ for (const key of ['expectedClosureKind', 'expectedInterruptionHash']) {
536
+ if (!sameAnchorField(options?.[key], options?.trustAnchor?.[key]))
537
+ throw new Error('trust anchor');
538
+ }
539
+ return { ...base,
540
+ expectedClosureKind: options?.expectedClosureKind ?? options?.trustAnchor?.expectedClosureKind,
541
+ expectedInterruptionHash: options?.expectedInterruptionHash ?? options?.trustAnchor?.expectedInterruptionHash };
542
+ }
543
+ function assertInterruptionPins(options) {
544
+ if (options !== undefined && !object(options))
545
+ throw new Error('trust anchor');
546
+ if (options?.trustAnchor !== undefined && !object(options.trustAnchor))
547
+ throw new Error('trust anchor');
548
+ for (const part of [options, options?.trustAnchor]) {
549
+ if (!part)
550
+ continue;
551
+ for (const key of ['taskId', 'head', 'expectedLastEntryHash', 'expectedFinalState', 'expectedInterruptionHash'])
552
+ if (part[key] !== undefined && !hasText(part[key]))
553
+ throw new Error('trust anchor');
554
+ if (part.expectedClosureKind !== undefined && !['bilateral', 'interruption'].includes(part.expectedClosureKind))
555
+ throw new Error('trust anchor');
556
+ if (part.actors !== undefined && (!Array.isArray(part.actors) || part.actors.length !== 2 || !part.actors.every(hasText)))
557
+ throw new Error('trust anchor');
558
+ if (part.expectedEntryCount !== undefined && (!Number.isSafeInteger(part.expectedEntryCount) || part.expectedEntryCount < 0))
559
+ throw new Error('trust anchor');
560
+ }
561
+ }
562
+ /** Both formats are verified locally. A worker-only observation never becomes VALID. */
563
+ export function verifyAuditEvidence(bundle, expected) {
564
+ const value = object(bundle);
565
+ if (!value || !Object.hasOwn(value, 'interruption')) {
566
+ const bilateral = bundle;
567
+ const result = verifyAudit(bilateral, expected);
568
+ if (!result.valid)
569
+ return result;
570
+ try {
571
+ validateSchema('audit-evidence', bundle);
572
+ const pins = evidencePins(expected);
573
+ if (pins.expectedClosureKind !== undefined && pins.expectedClosureKind !== 'bilateral' ||
574
+ pins.expectedInterruptionHash !== undefined)
575
+ throw new Error('trust anchor');
576
+ return pins.expectedClosureKind === 'bilateral' ? { ...result, trustAnchorVerified: true } : result;
577
+ }
578
+ catch (error) {
579
+ return auditResult(anchorSupplied(expected), verificationError(error) + '; auditLocation=' + diagnosticJson(checkpointLocation(bilateral)));
580
+ }
581
+ }
582
+ const interrupted = bundle;
583
+ let prefixVerified = false, terminalSignatureVerified = false, truncationChecked = false;
584
+ let location = interruptionLocation(interrupted);
585
+ try {
586
+ // Exclusive object shape and terminal schema before interpreting its fields.
587
+ if (Object.keys(value).length !== 2 || !Object.hasOwn(value, 'entries'))
588
+ throw new Error('INVALID_AUDIT_EVIDENCE');
589
+ validateSchema('audit-interruption', interrupted.interruption);
590
+ const { entries, interruption } = interrupted, p = interruption.payload;
591
+ location = entryLocation(entries?.[0], 'entry', 0, interruptionLocations.get(interrupted)?.entryLines[0]);
592
+ assertInterruptionPrefix(entries, p.taskId, p.actors);
593
+ prefixVerified = true;
594
+ location = interruptionLocation(interrupted);
595
+ const prefix = p.acknowledgedPrefix, head = entries[0].entryHash;
596
+ if (p.formatVersion !== 1 || p.seq !== 1 || prefix.count !== 1 || prefix.lastSeq !== 0 ||
597
+ p.prevEntryHash !== head || prefix.head !== head || prefix.entriesDigest !== digest(entries) ||
598
+ !Number.isSafeInteger(p.seq) || !Number.isSafeInteger(prefix.count) || !Number.isSafeInteger(prefix.lastSeq) ||
599
+ p.observedAt !== interruption.signature.signedAt || !Number.isFinite(Date.parse(p.observedAt)) ||
600
+ !verifySigned(interruption, p.actors[1]))
601
+ throw new Error('INVALID_AUDIT_INTERRUPTION');
602
+ terminalSignatureVerified = true;
603
+ assertInterruptionPins(expected);
604
+ const pins = evidencePins(expected);
605
+ const prefixCheckpoint = { type: 'AuditCheckpoint', taskId: p.taskId, actors: p.actors, count: 1, head };
606
+ assertTrustAnchor({ taskId: pins.taskId, actors: pins.actors }, prefixCheckpoint, entries);
607
+ if (pins.expectedClosureKind !== undefined && pins.expectedClosureKind !== 'interruption')
608
+ throw new Error('trust anchor');
609
+ if ([pins.head, pins.expectedLastEntryHash, pins.expectedFinalState, pins.expectedEntryCount].some(v => v !== undefined)) {
610
+ truncationChecked = true;
611
+ assertTrustAnchor(pins, prefixCheckpoint, entries);
612
+ }
613
+ if (pins.expectedInterruptionHash !== undefined) {
614
+ truncationChecked = true;
615
+ if (pins.expectedInterruptionHash !== digest(p))
616
+ throw new Error('trust anchor');
617
+ }
618
+ const supplied = anchorSupplied(expected) || pins.expectedClosureKind !== undefined || pins.expectedInterruptionHash !== undefined;
619
+ return { valid: false, status: 'UNILATERALLY_CLOSED',
620
+ statusLabel: 'UNILATERALLY_CLOSED (worker-only terminal; no peer terminal signature)', reason: 'WORKER_ONLY_INTERRUPTION',
621
+ prefixVerified, terminalSignatureVerified, bilateralCheckpointVerified: false,
622
+ trustAnchorVerified: supplied, truncationChecked, closureKind: 'interruption' };
623
+ }
624
+ catch (error) {
625
+ return { valid: false, status: 'INVALID', statusLabel: 'INVALID',
626
+ reason: verificationError(error) + '; auditLocation=' + diagnosticJson(location),
627
+ prefixVerified, terminalSignatureVerified, bilateralCheckpointVerified: false,
628
+ trustAnchorVerified: false, truncationChecked, closureKind: 'interruption' };
629
+ }
630
+ }
631
+ /** Creates a worker observation; callers must preserve the original prefix and journal the intent before writing. */
632
+ export function createAuditInterruption(entries, worker, phase, reason, observedAt = new Date().toISOString()) {
633
+ const first = entries[0];
634
+ if (!first)
635
+ throw new Error('INTERRUPTION_SCOPE');
636
+ const actors = [first.body.actorDid, worker.did];
637
+ assertInterruptionPrefix(entries, first.body.taskId, actors);
638
+ const payload = { type: 'AuditInterruption', formatVersion: 1,
639
+ taskId: first.body.taskId, actors, seq: 1, prevEntryHash: first.entryHash,
640
+ acknowledgedPrefix: { count: 1, lastSeq: 0, head: first.entryHash, entriesDigest: digest(entries) },
641
+ phase, reason, observedAt };
642
+ const interruption = signPayload(payload, worker, observedAt);
643
+ if (verifyAuditEvidence({ entries, interruption }).status !== 'UNILATERALLY_CLOSED')
644
+ throw new Error('INVALID_AUDIT_INTERRUPTION');
645
+ return interruption;
646
+ }
269
647
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
+ import { createMemoryInviteHandler } from './invites.js';
2
3
  import { verifySigned, generateKeyPair, signPayload, resolveDid, verifySignedAgentCard, findDiscoveredAgentCard, toA2AAgentCard, verifyRelayAuthToken, createRelayAuthToken, } from '../../core/dist/edge.js';
3
4
  export * from './notifications.js';
4
5
  // Same outer wire shape as envelope.schema.json, without filesystem schema loads.
@@ -1255,7 +1256,10 @@ export function createRelayFetchHandler(options = {}) {
1255
1256
  }
1256
1257
  return JSON.parse(Buffer.concat(chunks).toString('utf8'));
1257
1258
  }
1259
+ const inviteHandler = createMemoryInviteHandler();
1258
1260
  return async (request) => {
1261
+ if (new URL(request.url).pathname.startsWith('/v1/invites') || new URL(request.url).pathname === '/v1/capabilities')
1262
+ return inviteHandler(request);
1259
1263
  try {
1260
1264
  relay.evictExpired();
1261
1265
  const url = new URL(request.url), path = canonicalRelayPath(url.pathname);