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.
- package/README.md +24 -19
- package/dist/delegation.d.ts +57 -36
- package/dist/delegation.d.ts.map +1 -1
- package/dist/delegation.js +208 -69
- package/dist/delegation.js.map +1 -1
- package/dist/discourse.d.ts +196 -74
- package/dist/discourse.d.ts.map +1 -1
- package/dist/discourse.js +568 -116
- package/dist/discourse.js.map +1 -1
- package/dist/http-client.d.ts +43 -18
- package/dist/http-client.d.ts.map +1 -1
- package/dist/http-client.js +86 -32
- package/dist/http-client.js.map +1 -1
- package/dist/identity.d.ts +100 -3
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +333 -7
- package/dist/identity.js.map +1 -1
- package/dist/local-connector/catalog.d.ts +1 -16
- package/dist/local-connector/catalog.d.ts.map +1 -1
- package/dist/local-connector/catalog.js +53 -71
- package/dist/local-connector/catalog.js.map +1 -1
- package/dist/local-connector/engine.d.ts +55 -32
- package/dist/local-connector/engine.d.ts.map +1 -1
- package/dist/local-connector/engine.js +636 -608
- package/dist/local-connector/engine.js.map +1 -1
- package/dist/local-connector/inputs.d.ts +28 -76
- package/dist/local-connector/inputs.d.ts.map +1 -1
- package/dist/local-connector/inputs.js +19 -1
- package/dist/local-connector/inputs.js.map +1 -1
- package/dist/local-connector/projection.d.ts +24 -9
- package/dist/local-connector/projection.d.ts.map +1 -1
- package/dist/local-connector/projection.js +78 -39
- package/dist/local-connector/projection.js.map +1 -1
- package/dist/local-connector/state.d.ts +10 -3
- package/dist/local-connector/state.d.ts.map +1 -1
- package/dist/local-connector/state.js +3 -0
- package/dist/local-connector/state.js.map +1 -1
- package/dist/local-connector/views.d.ts +36 -12
- package/dist/local-connector/views.d.ts.map +1 -1
- package/dist/local-connector/views.js +49 -31
- package/dist/local-connector/views.js.map +1 -1
- package/dist/profile.d.ts +23 -9
- package/dist/profile.d.ts.map +1 -1
- package/dist/profile.js +120 -3
- package/dist/profile.js.map +1 -1
- package/package.json +1 -1
package/dist/identity.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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).
|
package/dist/identity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,4BAA4B,SAAU,CAAC;AACpD,eAAO,MAAM,oBAAoB,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (!
|
|
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)
|
package/dist/identity.js.map
CHANGED
|
@@ -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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"}
|