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.
- package/README.ja.md +4 -2
- package/README.md +6 -2
- package/dist/cli/dist/accept.d.ts +2 -1
- package/dist/cli/dist/accept.js +18 -7
- package/dist/cli/dist/accept.js.map +1 -1
- package/dist/cli/dist/index.js +46 -13
- package/dist/cli/dist/index.js.map +1 -1
- package/dist/cli/dist/invite-links.d.ts +14 -0
- package/dist/cli/dist/invite-links.js +263 -0
- package/dist/cli/dist/invite-links.js.map +1 -0
- package/dist/cli/dist/invite-output.d.ts +1 -1
- package/dist/cli/dist/invite-output.js +3 -2
- package/dist/cli/dist/invite-output.js.map +1 -1
- package/dist/cli/dist/network.js +16 -23
- package/dist/cli/dist/network.js.map +1 -1
- package/dist/cli/dist/receipt.d.ts +12 -2
- package/dist/cli/dist/receipt.js +6 -5
- package/dist/cli/dist/receipt.js.map +1 -1
- package/dist/cli/dist/sdk.d.ts +6 -4
- package/dist/cli/dist/sdk.js +3 -2
- package/dist/cli/dist/sdk.js.map +1 -1
- package/dist/examples/two-owner-demo/dist/run-demo.js +3 -1
- package/dist/examples/two-owner-demo/dist/run-demo.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/packages/core/dist/context-grant.d.ts +13 -0
- package/dist/packages/core/dist/context-grant.js +65 -0
- package/dist/packages/core/dist/context-grant.js.map +1 -0
- package/dist/packages/core/dist/delegation.d.ts +17 -0
- package/dist/packages/core/dist/delegation.js +126 -0
- package/dist/packages/core/dist/delegation.js.map +1 -0
- package/dist/packages/core/dist/edge.d.ts +2 -0
- package/dist/packages/core/dist/edge.js +2 -0
- package/dist/packages/core/dist/edge.js.map +1 -1
- package/dist/packages/core/dist/index.d.ts +4 -0
- package/dist/packages/core/dist/index.js +4 -0
- package/dist/packages/core/dist/index.js.map +1 -1
- package/dist/packages/core/dist/invite-link.d.ts +72 -0
- package/dist/packages/core/dist/invite-link.js +225 -0
- package/dist/packages/core/dist/invite-link.js.map +1 -0
- package/dist/packages/core/dist/invite-sas.d.ts +7 -0
- package/dist/packages/core/dist/invite-sas.js +15 -0
- package/dist/packages/core/dist/invite-sas.js.map +1 -0
- package/dist/packages/core/dist/relay-auth.d.ts +1 -1
- package/dist/packages/core/dist/relay-auth.js +1 -1
- package/dist/packages/core/dist/relay-auth.js.map +1 -1
- package/dist/packages/core/dist/schema.d.ts +1 -1
- package/dist/packages/core/dist/schema.js +4 -0
- package/dist/packages/core/dist/schema.js.map +1 -1
- package/dist/packages/core/dist/types.d.ts +52 -0
- package/dist/packages/ledger/dist/index.d.ts +70 -2
- package/dist/packages/ledger/dist/index.js +404 -26
- package/dist/packages/ledger/dist/index.js.map +1 -1
- package/dist/packages/relay/dist/fetch.js +4 -0
- package/dist/packages/relay/dist/fetch.js.map +1 -1
- package/dist/packages/relay/dist/invites.d.ts +42 -0
- package/dist/packages/relay/dist/invites.js +347 -0
- package/dist/packages/relay/dist/invites.js.map +1 -0
- package/dist/packages/relay/dist/worker.d.ts +3 -0
- package/dist/packages/relay/dist/worker.js +21 -0
- package/dist/packages/relay/dist/worker.js.map +1 -1
- package/dist/packages/runtime/dist/a2a.js +1 -1
- package/dist/packages/runtime/dist/adapter.d.ts +1 -0
- package/dist/packages/runtime/dist/approval-providers.d.ts +4 -0
- package/dist/packages/runtime/dist/approval-providers.js +3 -0
- package/dist/packages/runtime/dist/approval-providers.js.map +1 -1
- package/dist/packages/runtime/dist/connection-persistence.d.ts +1 -1
- package/dist/packages/runtime/dist/context-grant-audit.d.ts +8 -0
- package/dist/packages/runtime/dist/context-grant-audit.js +41 -0
- package/dist/packages/runtime/dist/context-grant-audit.js.map +1 -0
- package/dist/packages/runtime/dist/delegation.d.ts +37 -0
- package/dist/packages/runtime/dist/delegation.js +125 -0
- package/dist/packages/runtime/dist/delegation.js.map +1 -0
- package/dist/packages/runtime/dist/gateway.d.ts +1 -0
- package/dist/packages/runtime/dist/gateway.js.map +1 -1
- package/dist/packages/runtime/dist/index.d.ts +2 -0
- package/dist/packages/runtime/dist/index.js +2 -0
- package/dist/packages/runtime/dist/index.js.map +1 -1
- package/dist/packages/runtime/dist/mcp-server.js +22 -8
- package/dist/packages/runtime/dist/mcp-server.js.map +1 -1
- package/dist/packages/runtime/dist/mcp-tool-catalog.js +44 -5
- package/dist/packages/runtime/dist/mcp-tool-catalog.js.map +1 -1
- package/dist/packages/runtime/dist/session-audit.d.ts +6 -1
- package/dist/packages/runtime/dist/session-audit.js +35 -4
- package/dist/packages/runtime/dist/session-audit.js.map +1 -1
- package/dist/packages/runtime/dist/session.d.ts +21 -1
- package/dist/packages/runtime/dist/session.js +427 -62
- package/dist/packages/runtime/dist/session.js.map +1 -1
- package/dist/packages/runtime/dist/task-journal.d.ts +10 -1
- package/dist/packages/runtime/dist/task-journal.js +26 -1
- package/dist/packages/runtime/dist/task-journal.js.map +1 -1
- package/dist/packages/runtime/dist/verifier.d.ts +5 -2
- package/dist/packages/runtime/dist/verifier.js +14 -4
- package/dist/packages/runtime/dist/verifier.js.map +1 -1
- package/dist/spec/audit-entry.schema.json +25 -1
- package/dist/spec/audit-evidence.schema.json +179 -0
- package/dist/spec/audit-file-record.schema.json +177 -0
- package/dist/spec/audit-interruption.schema.json +110 -0
- package/dist/spec/context-grant-audit-payload.schema.json +24 -0
- package/dist/spec/context-grant.schema.json +146 -0
- package/dist/spec/delegation-attachment.schema.json +167 -0
- package/dist/spec/delegation-link.schema.json +141 -0
- package/dist/spec/examples/context-pooling/approval_redelegation/sample-delegation-attachment.json +413 -0
- package/dist/spec/examples/context-pooling/hand_over/sample-context-grant.json +18 -0
- package/dist/spec/examples/context-pooling/hand_over/sample-task-manifest.0.2.0.json +94 -0
- package/dist/spec/examples/context-pooling/sample-context-grant-audit-payload.json +4 -0
- package/dist/spec/examples/context-pooling/view_only/sample-context-grant.json +18 -0
- package/dist/spec/examples/context-pooling/view_only/sample-task-manifest.0.2.0.json +94 -0
- package/dist/spec/examples/sample-audit-evidence.json +138 -0
- package/dist/spec/examples/sample-audit-file-record.json +31 -0
- package/dist/spec/examples/sample-audit-interruption.json +29 -0
- package/dist/spec/task-manifest.0.2.0.schema.json +87 -1
- package/docs/context-grants.md +221 -0
- package/docs/sdk.ja.md +4 -0
- package/docs/sdk.md +4 -0
- 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 {
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
if (
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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);
|