agent-protocols 0.8.0 → 0.9.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 (46) hide show
  1. package/README.md +24 -19
  2. package/dist/delegation.d.ts +57 -36
  3. package/dist/delegation.d.ts.map +1 -1
  4. package/dist/delegation.js +208 -69
  5. package/dist/delegation.js.map +1 -1
  6. package/dist/discourse.d.ts +196 -74
  7. package/dist/discourse.d.ts.map +1 -1
  8. package/dist/discourse.js +568 -116
  9. package/dist/discourse.js.map +1 -1
  10. package/dist/http-client.d.ts +43 -18
  11. package/dist/http-client.d.ts.map +1 -1
  12. package/dist/http-client.js +86 -32
  13. package/dist/http-client.js.map +1 -1
  14. package/dist/identity.d.ts +100 -3
  15. package/dist/identity.d.ts.map +1 -1
  16. package/dist/identity.js +333 -7
  17. package/dist/identity.js.map +1 -1
  18. package/dist/local-connector/catalog.d.ts +1 -16
  19. package/dist/local-connector/catalog.d.ts.map +1 -1
  20. package/dist/local-connector/catalog.js +53 -71
  21. package/dist/local-connector/catalog.js.map +1 -1
  22. package/dist/local-connector/engine.d.ts +55 -32
  23. package/dist/local-connector/engine.d.ts.map +1 -1
  24. package/dist/local-connector/engine.js +636 -608
  25. package/dist/local-connector/engine.js.map +1 -1
  26. package/dist/local-connector/inputs.d.ts +28 -76
  27. package/dist/local-connector/inputs.d.ts.map +1 -1
  28. package/dist/local-connector/inputs.js +19 -1
  29. package/dist/local-connector/inputs.js.map +1 -1
  30. package/dist/local-connector/projection.d.ts +24 -9
  31. package/dist/local-connector/projection.d.ts.map +1 -1
  32. package/dist/local-connector/projection.js +78 -39
  33. package/dist/local-connector/projection.js.map +1 -1
  34. package/dist/local-connector/state.d.ts +10 -3
  35. package/dist/local-connector/state.d.ts.map +1 -1
  36. package/dist/local-connector/state.js +3 -0
  37. package/dist/local-connector/state.js.map +1 -1
  38. package/dist/local-connector/views.d.ts +36 -12
  39. package/dist/local-connector/views.d.ts.map +1 -1
  40. package/dist/local-connector/views.js +49 -31
  41. package/dist/local-connector/views.js.map +1 -1
  42. package/dist/profile.d.ts +23 -9
  43. package/dist/profile.d.ts.map +1 -1
  44. package/dist/profile.js +120 -3
  45. package/dist/profile.js.map +1 -1
  46. package/package.json +1 -1
@@ -1,9 +1,25 @@
1
1
  export declare const AGENT_ID_PREFIX = "did:agent:";
2
2
  export declare const DEFAULT_LIVE_WRITE_WINDOW_MS = 300000;
3
- export declare const DEFAULT_NONCE_TTL_MS = 300000;
3
+ /**
4
+ * Nonce cache validity (Agent Identity Section 6.2): at least twice the
5
+ * live-write window, because an envelope signed up to one window ahead of the
6
+ * receiver's clock stays inside the window for two windows after acceptance.
7
+ */
8
+ export declare const DEFAULT_NONCE_TTL_MS: number;
4
9
  export declare const DEFAULT_REQUEST_JWT_TTL_SECS = 300;
5
10
  export declare const MAX_NONCE_HEADER = "Max-Seen-Nonce";
6
11
  export declare const MAX_SAFE_NONCE: number;
12
+ /**
13
+ * Largest jump a single `Max-Seen-Nonce` header may cause beyond
14
+ * `max(nextNonce, now)` (Agent Identity Section 6.2). The nonce sequence is
15
+ * shared by every service an agent uses, so one hostile service must not be
16
+ * able to exhaust it.
17
+ */
18
+ export declare const MAX_NONCE_JUMP: number;
19
+ /** The six Agent Identity event fields; protocols add their own on top. */
20
+ export declare const IDENTITY_EVENT_FIELDS: readonly string[];
21
+ /** Error codes shared by every Agent Protocols service (Section 8.1). */
22
+ export declare const SHARED_ERROR_CODES: readonly string[];
7
23
  export type AgentId = string;
8
24
  export interface Event<P = unknown> {
9
25
  protocol: string;
@@ -23,6 +39,32 @@ export interface Envelope<P = unknown> {
23
39
  event: Event<P>;
24
40
  signature: string;
25
41
  }
42
+ /** Error response body shared by every Agent Protocols service (Section 8.1). */
43
+ export interface ErrorResponse {
44
+ error: {
45
+ code: string;
46
+ message: string;
47
+ data?: Record<string, unknown>;
48
+ };
49
+ }
50
+ /** List response shape (Section 8.2). `next_cursor` is present exactly when more items follow. */
51
+ export interface ListResponse<T> {
52
+ result: T[];
53
+ next_cursor?: string;
54
+ }
55
+ /** An accepted envelope with the service's acceptance time (Section 8.3). */
56
+ export interface AcceptedRecord<P = unknown> {
57
+ envelope: Envelope<P>;
58
+ accepted_at: number;
59
+ }
60
+ /** Discovery document skeleton served at `/.well-known/{protocol-name}` (Section 8.4). */
61
+ export interface DiscoveryDocument {
62
+ protocol: string;
63
+ service: string;
64
+ endpoints?: Record<string, string>;
65
+ features?: string[];
66
+ [key: string]: unknown;
67
+ }
26
68
  export interface NonceRecord {
27
69
  maxNonce: number;
28
70
  expiresAt: number;
@@ -36,6 +78,20 @@ export interface LiveWriteOptions {
36
78
  windowMs?: number;
37
79
  nonceTtlMs?: number;
38
80
  }
81
+ export interface SubmissionOptions extends LiveWriteOptions {
82
+ /** Reports whether an envelope with this hash is in durable accepted history. */
83
+ isAccepted?: (hash: string) => boolean;
84
+ }
85
+ /**
86
+ * Outcome of {@link verifySubmission}: an exact resubmission of an accepted
87
+ * envelope, or a new live write with the nonce now recorded.
88
+ */
89
+ export type SubmissionResult = {
90
+ kind: "resubmission";
91
+ } | {
92
+ kind: "accepted";
93
+ maxNonce: number;
94
+ };
39
95
  export interface RequestJwtHeader {
40
96
  alg: "EdDSA";
41
97
  typ: "JWT";
@@ -75,14 +131,29 @@ export declare class MemoryNonceStore implements NonceStore {
75
131
  checkAndUpdate(actor: AgentId, nonce: number, nowMs: number, ttlMs: number): number;
76
132
  maxNonce(actor: AgentId, nowMs: number): number | undefined;
77
133
  }
134
+ /**
135
+ * Client-side nonce sequence for one Agent ID (Agent Identity Section 6.2).
136
+ * Pass the event's `created_at` to derive clock-based nonces,
137
+ * `max(last + 1, created_at)`, which stay monotonic across restarts, restores,
138
+ * and devices sharing a key; without it the manager is a plain counter.
139
+ */
78
140
  export declare class ClientNonceManager {
79
141
  private nextNonceValue;
80
142
  constructor(nextNonceValue?: number);
81
143
  peek(): number;
82
- nextNonce(): number;
83
- observeMaxNonce(maxNonce: number | string | null | undefined): void;
144
+ nextNonce(createdAt?: number): number;
145
+ /**
146
+ * Applies a `Max-Seen-Nonce` header. A value more than {@link MAX_NONCE_JUMP}
147
+ * beyond `max(nextNonce, nowMs)` is rejected rather than applied.
148
+ */
149
+ observeMaxNonce(maxNonce: number | string | null | undefined, nowMs?: number): void;
84
150
  }
85
151
  export declare function createEvent<P>(protocol: string, type: string, actor: AgentId, createdAt: number, nonce: number, payload: P): Event<P>;
152
+ /**
153
+ * Enforces the closed event object (Section 5.1): the event may carry only the
154
+ * six Agent Identity fields plus `extraFields` the protocol defines.
155
+ */
156
+ export declare function validateEventFields(event: Event<unknown>, extraFields?: readonly string[]): void;
86
157
  export declare function withRoomId<P>(event: Event<P>, roomId: string): Event<P>;
87
158
  export declare function withRoomHead<P>(event: Event<P>, baseSeq: number, baseHash: string): Event<P>;
88
159
  export declare function withMentions<P>(event: Event<P>, mentions: AgentId[]): Event<P>;
@@ -105,10 +176,36 @@ export declare function signEventHash(secretKey: Uint8Array, eventHash: Uint8Arr
105
176
  export declare function verifyEventHash(envelope: Envelope<unknown>): void;
106
177
  export declare function verifySignature(envelope: Envelope<unknown>): void;
107
178
  export declare function verifyEventHashSignature(publicKey: Uint8Array, eventHash: Uint8Array, encodedSignature: string): void;
179
+ /**
180
+ * Ed25519 verification under the deterministic rules of Agent Identity
181
+ * Section 3.1: canonical, non-small-order `A` and `R`, reduced `S`, and the
182
+ * cofactorless equation (which tweetnacl implements by recomputing `R`).
183
+ */
184
+ export declare function verifyEd25519Strict(message: Uint8Array, signature: Uint8Array, publicKey: Uint8Array): boolean;
108
185
  export declare function verifyEnvelope(envelope: Envelope<unknown>): void;
186
+ /**
187
+ * Parses signed JSON strictly (Agent Identity Section 4.1): rejects duplicate
188
+ * member names, unpaired surrogates, and integers outside the safe range. Use
189
+ * it on raw request bodies before hashing, because `JSON.parse` silently keeps
190
+ * the last of two duplicate names.
191
+ */
192
+ export declare function parseStrictJson(text: string): unknown;
193
+ /** {@link parseStrictJson} for a signed envelope, checking its outer shape. */
194
+ export declare function parseEnvelopeJson<P = unknown>(text: string): Envelope<P>;
109
195
  export declare function verifyTimestamp(createdAt: number, nowMs: number, windowMs: number): void;
196
+ /**
197
+ * Agent Identity Section 6.1 for one submission: verifies the envelope, answers
198
+ * an exact resubmission of an accepted envelope before the time window and
199
+ * nonce checks (Section 6.3), and otherwise enforces both.
200
+ */
201
+ export declare function verifySubmission(envelope: Envelope<unknown>, nonceStore: NonceStore, options?: SubmissionOptions): SubmissionResult;
110
202
  export declare function verifyLiveEnvelope(envelope: Envelope<unknown>, nonceStore: NonceStore, options?: LiveWriteOptions): number;
111
203
  export declare function createRequestBinding(audience: string): RequestBinding;
204
+ /**
205
+ * Checks that `value` is a serialized HTTPS origin (Agent Identity Section
206
+ * 4.4): WHATWG URL parsing and origin serialization must reproduce it exactly.
207
+ */
208
+ export declare function validateOrigin(value: unknown): asserts value is string;
112
209
  /**
113
210
  * Derives the request JWT `aud` from a request URL: the service origin —
114
211
  * scheme, host, and non-default port, with no path (Agent Identity Section 7).
@@ -1 +1 @@
1
- {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"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"}
package/dist/identity.js CHANGED
@@ -4,10 +4,46 @@ import nacl from "tweetnacl";
4
4
  import { protocolError } from "./errors.js";
5
5
  export const AGENT_ID_PREFIX = "did:agent:";
6
6
  export const DEFAULT_LIVE_WRITE_WINDOW_MS = 300_000;
7
- export const DEFAULT_NONCE_TTL_MS = 300_000;
7
+ /**
8
+ * Nonce cache validity (Agent Identity Section 6.2): at least twice the
9
+ * live-write window, because an envelope signed up to one window ahead of the
10
+ * receiver's clock stays inside the window for two windows after acceptance.
11
+ */
12
+ export const DEFAULT_NONCE_TTL_MS = 2 * DEFAULT_LIVE_WRITE_WINDOW_MS;
8
13
  export const DEFAULT_REQUEST_JWT_TTL_SECS = 300;
9
14
  export const MAX_NONCE_HEADER = "Max-Seen-Nonce";
10
15
  export const MAX_SAFE_NONCE = Number.MAX_SAFE_INTEGER;
16
+ /**
17
+ * Largest jump a single `Max-Seen-Nonce` header may cause beyond
18
+ * `max(nextNonce, now)` (Agent Identity Section 6.2). The nonce sequence is
19
+ * shared by every service an agent uses, so one hostile service must not be
20
+ * able to exhaust it.
21
+ */
22
+ export const MAX_NONCE_JUMP = 2 ** 32;
23
+ /** The six Agent Identity event fields; protocols add their own on top. */
24
+ export const IDENTITY_EVENT_FIELDS = [
25
+ "protocol",
26
+ "type",
27
+ "actor",
28
+ "created_at",
29
+ "nonce",
30
+ "payload",
31
+ ];
32
+ /** Error codes shared by every Agent Protocols service (Section 8.1). */
33
+ export const SHARED_ERROR_CODES = [
34
+ "invalid_request",
35
+ "invalid_event",
36
+ "invalid_event_hash",
37
+ "invalid_signature",
38
+ "invalid_actor",
39
+ "timestamp_out_of_window",
40
+ "nonce_not_greater",
41
+ "invalid_token",
42
+ "permission_denied",
43
+ "not_found",
44
+ "rate_limited",
45
+ "payload_too_large",
46
+ ];
11
47
  export class AgentSigner {
12
48
  keyPair;
13
49
  constructor(keyPair) {
@@ -70,6 +106,12 @@ export class MemoryNonceStore {
70
106
  return record && record.expiresAt > nowMs ? record.maxNonce : undefined;
71
107
  }
72
108
  }
109
+ /**
110
+ * Client-side nonce sequence for one Agent ID (Agent Identity Section 6.2).
111
+ * Pass the event's `created_at` to derive clock-based nonces,
112
+ * `max(last + 1, created_at)`, which stay monotonic across restarts, restores,
113
+ * and devices sharing a key; without it the manager is a plain counter.
114
+ */
73
115
  export class ClientNonceManager {
74
116
  nextNonceValue;
75
117
  constructor(nextNonceValue = 1) {
@@ -79,17 +121,26 @@ export class ClientNonceManager {
79
121
  peek() {
80
122
  return this.nextNonceValue;
81
123
  }
82
- nextNonce() {
83
- const nonce = this.nextNonceValue;
124
+ nextNonce(createdAt) {
125
+ const nonce = createdAt !== undefined && createdAt > this.nextNonceValue
126
+ ? createdAt
127
+ : this.nextNonceValue;
84
128
  validateNonce(nonce);
85
129
  this.nextNonceValue = nonce + 1;
86
130
  return nonce;
87
131
  }
88
- observeMaxNonce(maxNonce) {
132
+ /**
133
+ * Applies a `Max-Seen-Nonce` header. A value more than {@link MAX_NONCE_JUMP}
134
+ * beyond `max(nextNonce, nowMs)` is rejected rather than applied.
135
+ */
136
+ observeMaxNonce(maxNonce, nowMs = unixTimeMillis()) {
89
137
  if (maxNonce === null || maxNonce === undefined || maxNonce === "")
90
138
  return;
91
139
  const parsed = typeof maxNonce === "string" ? Number(maxNonce) : maxNonce;
92
140
  validateNonce(parsed);
141
+ if (parsed > Math.max(this.nextNonceValue, nowMs) + MAX_NONCE_JUMP) {
142
+ throw protocolError("invalid_nonce", `Max-Seen-Nonce ${parsed} jumps too far beyond the local sequence`);
143
+ }
93
144
  if (parsed >= this.nextNonceValue) {
94
145
  this.nextNonceValue = parsed + 1;
95
146
  }
@@ -107,6 +158,25 @@ export function createEvent(protocol, type, actor, createdAt, nonce, payload) {
107
158
  payload,
108
159
  };
109
160
  }
161
+ /**
162
+ * Enforces the closed event object (Section 5.1): the event may carry only the
163
+ * six Agent Identity fields plus `extraFields` the protocol defines.
164
+ */
165
+ export function validateEventFields(event, extraFields = []) {
166
+ if (typeof event !== "object" || event === null || Array.isArray(event)) {
167
+ throw protocolError("invalid_event", "event must be an object");
168
+ }
169
+ for (const field of IDENTITY_EVENT_FIELDS) {
170
+ if (!Object.prototype.hasOwnProperty.call(event, field)) {
171
+ throw protocolError("invalid_event", `event requires ${field}`);
172
+ }
173
+ }
174
+ for (const key of Object.keys(event)) {
175
+ if (!IDENTITY_EVENT_FIELDS.includes(key) && !extraFields.includes(key)) {
176
+ throw protocolError("invalid_event", `unknown event field: ${key}`);
177
+ }
178
+ }
179
+ }
110
180
  export function withRoomId(event, roomId) {
111
181
  return {
112
182
  ...event,
@@ -214,20 +284,258 @@ export function verifyEventHashSignature(publicKey, eventHash, encodedSignature)
214
284
  if (signature.byteLength !== 64) {
215
285
  throw protocolError("invalid_signature", `signature must be 64 bytes, got ${signature.byteLength}`);
216
286
  }
217
- const ok = nacl.sign.detached.verify(validEventHashBytes(eventHash), signature, publicKey);
218
- if (!ok) {
287
+ if (!verifyEd25519Strict(validEventHashBytes(eventHash), signature, publicKey)) {
219
288
  throw protocolError("invalid_signature", "signature verification failed");
220
289
  }
221
290
  }
291
+ // p = 2^255 - 19 and L = 2^252 + 27742317777372353535851937790883648493.
292
+ const FIELD_P = (1n << 255n) - 19n;
293
+ const GROUP_L = (1n << 252n) + 27742317777372353535851937790883648493n;
294
+ /** y-coordinates (sign bit cleared) of every small-order point (Appendix B). */
295
+ const SMALL_ORDER_Y = [
296
+ 0n,
297
+ 1n,
298
+ FIELD_P - 1n,
299
+ littleEndian(Buffer.from("26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05", "hex")),
300
+ littleEndian(Buffer.from("c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a", "hex")),
301
+ ];
302
+ function littleEndian(bytes) {
303
+ let value = 0n;
304
+ for (let i = bytes.length - 1; i >= 0; i--)
305
+ value = (value << 8n) | BigInt(bytes[i]);
306
+ return value;
307
+ }
308
+ function pointY(encoding) {
309
+ const bytes = new Uint8Array(encoding);
310
+ bytes[31] &= 0x7f;
311
+ return littleEndian(bytes);
312
+ }
313
+ /** Canonical encoding (y < p) of a point that is not of small order. */
314
+ function isStrictPoint(encoding) {
315
+ const y = pointY(encoding);
316
+ return y < FIELD_P && !SMALL_ORDER_Y.includes(y);
317
+ }
318
+ /**
319
+ * Ed25519 verification under the deterministic rules of Agent Identity
320
+ * Section 3.1: canonical, non-small-order `A` and `R`, reduced `S`, and the
321
+ * cofactorless equation (which tweetnacl implements by recomputing `R`).
322
+ */
323
+ export function verifyEd25519Strict(message, signature, publicKey) {
324
+ if (signature.byteLength !== 64 || publicKey.byteLength !== 32)
325
+ return false;
326
+ if (!isStrictPoint(publicKey) || !isStrictPoint(signature.subarray(0, 32))) {
327
+ return false;
328
+ }
329
+ if (littleEndian(signature.subarray(32)) >= GROUP_L)
330
+ return false;
331
+ return nacl.sign.detached.verify(message, signature, publicKey);
332
+ }
222
333
  export function verifyEnvelope(envelope) {
223
334
  verifyEventHash(envelope);
224
335
  verifySignature(envelope);
225
336
  }
337
+ /**
338
+ * Parses signed JSON strictly (Agent Identity Section 4.1): rejects duplicate
339
+ * member names, unpaired surrogates, and integers outside the safe range. Use
340
+ * it on raw request bodies before hashing, because `JSON.parse` silently keeps
341
+ * the last of two duplicate names.
342
+ */
343
+ export function parseStrictJson(text) {
344
+ return new StrictJsonParser(text).parseDocument();
345
+ }
346
+ /** {@link parseStrictJson} for a signed envelope, checking its outer shape. */
347
+ export function parseEnvelopeJson(text) {
348
+ const value = parseStrictJson(text);
349
+ if (typeof value !== "object" ||
350
+ value === null ||
351
+ Array.isArray(value) ||
352
+ typeof value.hash !== "string" ||
353
+ typeof value.signature !== "string" ||
354
+ typeof value.event !== "object" ||
355
+ value.event === null) {
356
+ throw protocolError("invalid_event", "envelope must contain hash, event, and signature");
357
+ }
358
+ for (const key of Object.keys(value)) {
359
+ if (key !== "hash" && key !== "event" && key !== "signature") {
360
+ throw protocolError("invalid_event", `unknown envelope field: ${key}`);
361
+ }
362
+ }
363
+ return value;
364
+ }
365
+ function hasUnpairedSurrogate(value) {
366
+ for (let i = 0; i < value.length; i++) {
367
+ const unit = value.charCodeAt(i);
368
+ if (unit >= 0xd800 && unit <= 0xdbff) {
369
+ const next = value.charCodeAt(i + 1);
370
+ if (!(next >= 0xdc00 && next <= 0xdfff))
371
+ return true;
372
+ i += 1;
373
+ }
374
+ else if (unit >= 0xdc00 && unit <= 0xdfff) {
375
+ return true;
376
+ }
377
+ }
378
+ return false;
379
+ }
380
+ class StrictJsonParser {
381
+ text;
382
+ index = 0;
383
+ constructor(text) {
384
+ this.text = text;
385
+ }
386
+ parseDocument() {
387
+ this.skipWhitespace();
388
+ const value = this.parseValue(0);
389
+ this.skipWhitespace();
390
+ if (this.index !== this.text.length)
391
+ this.fail("trailing characters");
392
+ return value;
393
+ }
394
+ fail(message) {
395
+ throw protocolError("invalid_event", `invalid JSON at ${this.index}: ${message}`);
396
+ }
397
+ skipWhitespace() {
398
+ while (this.index < this.text.length && " \t\n\r".includes(this.text[this.index])) {
399
+ this.index += 1;
400
+ }
401
+ }
402
+ parseValue(depth) {
403
+ if (depth > 256)
404
+ this.fail("nesting too deep");
405
+ const ch = this.text[this.index];
406
+ if (ch === "{")
407
+ return this.parseObject(depth);
408
+ if (ch === "[")
409
+ return this.parseArray(depth);
410
+ if (ch === '"')
411
+ return this.parseString();
412
+ if (ch === "-" || (ch >= "0" && ch <= "9"))
413
+ return this.parseNumber();
414
+ for (const [literal, value] of [["true", true], ["false", false], ["null", null]]) {
415
+ if (this.text.startsWith(literal, this.index)) {
416
+ this.index += literal.length;
417
+ return value;
418
+ }
419
+ }
420
+ return this.fail("unexpected token");
421
+ }
422
+ parseObject(depth) {
423
+ const result = Object.create(null);
424
+ const seen = new Set();
425
+ this.index += 1;
426
+ this.skipWhitespace();
427
+ if (this.text[this.index] === "}") {
428
+ this.index += 1;
429
+ return { ...result };
430
+ }
431
+ for (;;) {
432
+ this.skipWhitespace();
433
+ if (this.text[this.index] !== '"')
434
+ this.fail("expected member name");
435
+ const key = this.parseString();
436
+ if (seen.has(key))
437
+ this.fail(`duplicate member name ${JSON.stringify(key)}`);
438
+ seen.add(key);
439
+ this.skipWhitespace();
440
+ if (this.text[this.index] !== ":")
441
+ this.fail("expected ':'");
442
+ this.index += 1;
443
+ this.skipWhitespace();
444
+ result[key] = this.parseValue(depth + 1);
445
+ this.skipWhitespace();
446
+ const next = this.text[this.index];
447
+ this.index += 1;
448
+ if (next === "}")
449
+ break;
450
+ if (next !== ",")
451
+ this.fail("expected ',' or '}'");
452
+ }
453
+ // Define own data properties, including __proto__, without invoking setters.
454
+ return { ...result };
455
+ }
456
+ parseArray(depth) {
457
+ const result = [];
458
+ this.index += 1;
459
+ this.skipWhitespace();
460
+ if (this.text[this.index] === "]") {
461
+ this.index += 1;
462
+ return result;
463
+ }
464
+ for (;;) {
465
+ this.skipWhitespace();
466
+ result.push(this.parseValue(depth + 1));
467
+ this.skipWhitespace();
468
+ const next = this.text[this.index];
469
+ this.index += 1;
470
+ if (next === "]")
471
+ break;
472
+ if (next !== ",")
473
+ this.fail("expected ',' or ']'");
474
+ }
475
+ return result;
476
+ }
477
+ parseString() {
478
+ const start = this.index;
479
+ this.index += 1;
480
+ for (;;) {
481
+ const ch = this.text[this.index];
482
+ if (ch === undefined)
483
+ this.fail("unterminated string");
484
+ if (ch === '"')
485
+ break;
486
+ if (ch === "\\") {
487
+ this.index += 2;
488
+ continue;
489
+ }
490
+ if (ch.charCodeAt(0) < 0x20)
491
+ this.fail("control character in string");
492
+ this.index += 1;
493
+ }
494
+ this.index += 1;
495
+ let value;
496
+ try {
497
+ value = JSON.parse(this.text.slice(start, this.index));
498
+ }
499
+ catch {
500
+ return this.fail("invalid string escape");
501
+ }
502
+ if (hasUnpairedSurrogate(value))
503
+ this.fail("unpaired surrogate in string");
504
+ return value;
505
+ }
506
+ parseNumber() {
507
+ const match = /^-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/.exec(this.text.slice(this.index));
508
+ if (!match)
509
+ this.fail("invalid number");
510
+ this.index += match[0].length;
511
+ const value = Number(match[0]);
512
+ if (Number.isInteger(value) && !Number.isSafeInteger(value)) {
513
+ this.fail("integer outside the safe range");
514
+ }
515
+ if (!Number.isFinite(value))
516
+ this.fail("number out of range");
517
+ return value;
518
+ }
519
+ }
226
520
  export function verifyTimestamp(createdAt, nowMs, windowMs) {
227
521
  if (windowMs < 0 || Math.abs(createdAt - nowMs) > windowMs) {
228
522
  throw protocolError("timestamp_out_of_window", "timestamp is outside the allowed live-write window");
229
523
  }
230
524
  }
525
+ /**
526
+ * Agent Identity Section 6.1 for one submission: verifies the envelope, answers
527
+ * an exact resubmission of an accepted envelope before the time window and
528
+ * nonce checks (Section 6.3), and otherwise enforces both.
529
+ */
530
+ export function verifySubmission(envelope, nonceStore, options = {}) {
531
+ verifyEnvelope(envelope);
532
+ if (options.isAccepted?.(envelope.hash))
533
+ return { kind: "resubmission" };
534
+ const nowMs = options.nowMs ?? unixTimeMillis();
535
+ verifyTimestamp(envelope.event.created_at, nowMs, options.windowMs ?? DEFAULT_LIVE_WRITE_WINDOW_MS);
536
+ const maxNonce = nonceStore.checkAndUpdate(envelope.event.actor, envelope.event.nonce, nowMs, options.nonceTtlMs ?? DEFAULT_NONCE_TTL_MS);
537
+ return { kind: "accepted", maxNonce };
538
+ }
231
539
  export function verifyLiveEnvelope(envelope, nonceStore, options = {}) {
232
540
  const nowMs = options.nowMs ?? unixTimeMillis();
233
541
  verifyEnvelope(envelope);
@@ -239,6 +547,24 @@ export function createRequestBinding(audience) {
239
547
  audience,
240
548
  };
241
549
  }
550
+ /**
551
+ * Checks that `value` is a serialized HTTPS origin (Agent Identity Section
552
+ * 4.4): WHATWG URL parsing and origin serialization must reproduce it exactly.
553
+ */
554
+ export function validateOrigin(value) {
555
+ let parsed;
556
+ if (typeof value === "string") {
557
+ try {
558
+ parsed = new URL(value);
559
+ }
560
+ catch {
561
+ parsed = undefined;
562
+ }
563
+ }
564
+ if (!parsed || parsed.protocol !== "https:" || parsed.origin !== value) {
565
+ throw protocolError("invalid_url", `origin must be a serialized HTTPS origin: ${String(value)}`);
566
+ }
567
+ }
242
568
  /**
243
569
  * Derives the request JWT `aud` from a request URL: the service origin —
244
570
  * scheme, host, and non-default port, with no path (Agent Identity Section 7).
@@ -283,7 +609,7 @@ export function verifyRequestJwt(token, context) {
283
609
  if (header.kid !== claims.iss || claims.iss !== claims.sub) {
284
610
  throw protocolError("invalid_jwt_claim", "kid, iss, and sub must identify the same Agent ID");
285
611
  }
286
- if (!nacl.sign.detached.verify(new TextEncoder().encode(signingInput), signature, publicKeyBytes(header.kid))) {
612
+ if (!verifyEd25519Strict(new TextEncoder().encode(signingInput), signature, publicKeyBytes(header.kid))) {
287
613
  throw protocolError("invalid_signature", "JWT signature verification failed");
288
614
  }
289
615
  if (claims.aud !== context.audience)
@@ -1 +1 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"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"}