agent-protocols 0.1.0 → 0.2.1

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.
@@ -8,6 +8,12 @@ export class ProfileClient {
8
8
  async getProfile(agentId) {
9
9
  return this.getJson(`/v1/profiles/${agentId}`);
10
10
  }
11
+ async getProfiles(agentIds) {
12
+ return this.postJson("/v1/profiles/batch", { ids: agentIds });
13
+ }
14
+ async profileEvents(agentId, limit = 1) {
15
+ return this.getJson(`/v1/profiles/${agentId}/events?limit=${limit}`);
16
+ }
11
17
  async submitProfileUpdate(envelope) {
12
18
  return this.postJson("/v1/profiles", envelope);
13
19
  }
@@ -35,34 +41,58 @@ export class DiscourseClient {
35
41
  this.fetchImpl = fetchImpl;
36
42
  }
37
43
  async protocol() {
38
- return this.getJson("/v1/protocol");
44
+ return this.getJson("/.well-known/agent-discourse");
39
45
  }
40
46
  async createRoom(envelope) {
41
47
  return this.postJson("/v1/rooms", envelope);
42
48
  }
49
+ async room(roomId) {
50
+ return this.getJson(`/v1/rooms/${roomId}`);
51
+ }
52
+ async requestJoin(roomId, jwt, request) {
53
+ return this.postJson(`/v1/rooms/${roomId}/join-requests`, request, jwt);
54
+ }
55
+ async joinRequest(roomId, requestId, jwt) {
56
+ return this.getJson(`/v1/rooms/${roomId}/join-requests/${requestId}`, jwt);
57
+ }
58
+ async joinRequests(roomId, jwt) {
59
+ return this.getJson(`/v1/rooms/${roomId}/join-requests`, jwt);
60
+ }
43
61
  async joinRoom(roomId, envelope) {
44
- return this.postJson(`/v1/rooms/${roomId}/join`, envelope);
62
+ return this.postJson(`/v1/rooms/${roomId}`, envelope);
45
63
  }
46
64
  async leaveRoom(roomId, envelope) {
47
- return this.postJson(`/v1/rooms/${roomId}/leave`, envelope);
65
+ return this.postJson(`/v1/rooms/${roomId}`, envelope);
48
66
  }
49
67
  async submitEvent(roomId, envelope) {
50
- return this.postJson(`/v1/rooms/${roomId}/events`, envelope);
68
+ return this.postJson(`/v1/rooms/${roomId}`, envelope);
51
69
  }
52
- async events(roomId) {
53
- return this.getJson(`/v1/rooms/${roomId}/events`);
70
+ async events(roomId, options = {}) {
71
+ return this.getJson(addQuery(`/v1/rooms/${roomId}/events`, {
72
+ after_seq: options.afterSeq,
73
+ limit: options.limit,
74
+ cursor: options.cursor,
75
+ }), options.jwt);
76
+ }
77
+ websocketEventsUrl(roomId, jwt) {
78
+ return websocketEventsUrl(this.baseUrl, roomId, jwt);
54
79
  }
55
80
  async archive(roomId) {
56
81
  return this.getJson(`/v1/rooms/${roomId}/archive`);
57
82
  }
58
- async getJson(path) {
59
- const response = await this.fetchImpl(this.url(path));
83
+ async getJson(path, jwt) {
84
+ const response = await this.fetchImpl(this.url(path), {
85
+ headers: jwt ? { authorization: `Bearer ${jwt}` } : undefined,
86
+ });
60
87
  return readJson(response);
61
88
  }
62
- async postJson(path, body) {
89
+ async postJson(path, body, jwt) {
63
90
  const response = await this.fetchImpl(this.url(path), {
64
91
  method: "POST",
65
- headers: { "content-type": "application/json" },
92
+ headers: {
93
+ "content-type": "application/json",
94
+ ...(jwt ? { authorization: `Bearer ${jwt}` } : {}),
95
+ },
66
96
  body: JSON.stringify(body),
67
97
  });
68
98
  return readJson(response);
@@ -71,6 +101,22 @@ export class DiscourseClient {
71
101
  return `${this.baseUrl.replace(/\/$/, "")}/${path.replace(/^\//, "")}`;
72
102
  }
73
103
  }
104
+ export function websocketEventsUrl(baseUrl, roomId, jwt) {
105
+ const websocketBase = baseUrl
106
+ .replace(/\/$/, "")
107
+ .replace(/^https:/, "wss:")
108
+ .replace(/^http:/, "ws:");
109
+ return `${websocketBase}/v1/rooms/${encodeURIComponent(roomId)}/events/live?access_token=${encodeURIComponent(jwt)}`;
110
+ }
111
+ function addQuery(path, params) {
112
+ const query = new URLSearchParams();
113
+ for (const [key, value] of Object.entries(params)) {
114
+ if (value !== undefined)
115
+ query.set(key, String(value));
116
+ }
117
+ const encoded = query.toString();
118
+ return encoded ? `${path}?${encoded}` : path;
119
+ }
74
120
  async function readJson(response) {
75
121
  if (!response.ok) {
76
122
  const text = await response.text();
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAiBA,MAAM,OAAO,aAAa;IAEL;IACA;IAFnB,YACmB,OAAe,EACf,YAAuB,KAAK;QAD5B,YAAO,GAAP,OAAO,CAAQ;QACf,cAAS,GAAT,SAAS,CAAmB;IAC5C,CAAC;IAEJ,KAAK,CAAC,UAAU,CAAC,OAAgB;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,QAAwC;QAExC,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,IAAY;QACnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,OAAO,QAAQ,CAAI,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAI,IAAY,EAAE,IAAa;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACpD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,QAAQ,CAAI,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAEO,GAAG,CAAC,IAAY;QACtB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC;CACF;AAED,MAAM,OAAO,eAAe;IAEP;IACA;IAFnB,YACmB,OAAe,EACf,YAAuB,KAAK;QAD5B,YAAO,GAAP,OAAO,CAAQ;QACf,cAAS,GAAT,SAAS,CAAmB;IAC5C,CAAC;IAEJ,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,UAAU,CACd,QAAqC;QAErC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,MAAc,EACd,QAAmC;QAEnC,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,MAAM,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,SAAS,CACb,MAAc,EACd,QAAoC;QAEpC,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,MAAM,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,WAAW,CACf,MAAc,EACd,QAAqB;QAErB,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,MAAM,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,MAAM,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,MAAM,UAAU,CAAC,CAAC;IACrD,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,IAAY;QACnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,OAAO,QAAQ,CAAI,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAI,IAAY,EAAE,IAAa;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACpD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,QAAQ,CAAI,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAEO,GAAG,CAAC,IAAY;QACtB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC;CACF;AAED,KAAK,UAAU,QAAQ,CAAI,QAAkB;IAC3C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,36 @@
1
1
  export declare const AGENT_ID_PREFIX = "did:agent:";
2
- export declare const EVENT_ID_PREFIX = "evt_";
3
2
  export declare const DEFAULT_LIVE_WRITE_WINDOW_MS = 300000;
3
+ export declare const DEFAULT_NONCE_TTL_MS = 300000;
4
4
  export declare const DEFAULT_REQUEST_JWT_TTL_SECS = 300;
5
+ export declare const MAX_NONCE_HEADER = "Max-Seen-Nonce";
5
6
  export type AgentId = string;
6
7
  export interface Event<P = unknown> {
7
8
  protocol: string;
8
9
  type: string;
9
10
  actor: AgentId;
10
11
  created_at: number;
11
- nonce: string;
12
+ nonce: number;
12
13
  room_id?: string;
13
14
  payload: P;
14
15
  [key: string]: unknown;
15
16
  }
16
17
  export interface Envelope<P = unknown> {
17
- event_id: string;
18
+ hash: string;
18
19
  event: Event<P>;
19
20
  signature: string;
20
21
  }
21
- export type NonceScopeKind = "actor_protocol" | "actor_room";
22
- export interface NonceScope {
23
- actor: AgentId;
24
- protocol: string;
25
- room_id?: string;
26
- nonce: string;
22
+ export interface NonceRecord {
23
+ maxNonce: number;
24
+ expiresAt: number;
27
25
  }
28
26
  export interface NonceStore {
29
- checkAndInsert(scope: NonceScope): void;
27
+ checkAndUpdate(actor: AgentId, nonce: number, nowMs: number, ttlMs: number): number;
28
+ maxNonce(actor: AgentId, nowMs: number): number | undefined;
30
29
  }
31
30
  export interface LiveWriteOptions {
32
31
  nowMs?: number;
33
32
  windowMs?: number;
34
- nonceScope?: NonceScopeKind;
33
+ nonceTtlMs?: number;
35
34
  }
36
35
  export interface RequestJwtHeader {
37
36
  alg: "EdDSA";
@@ -40,9 +39,6 @@ export interface RequestJwtHeader {
40
39
  }
41
40
  export interface RequestBinding {
42
41
  audience: string;
43
- method: string;
44
- host: string;
45
- path: string;
46
42
  }
47
43
  export interface RequestJwtClaims {
48
44
  iss: AgentId;
@@ -50,10 +46,6 @@ export interface RequestJwtClaims {
50
46
  aud: string;
51
47
  iat: number;
52
48
  exp: number;
53
- jti: string;
54
- method: string;
55
- host: string;
56
- path: string;
57
49
  }
58
50
  export interface RequestAuthContext extends RequestBinding {
59
51
  nowSecs?: number;
@@ -70,28 +62,34 @@ export declare class AgentSigner {
70
62
  signRequestJwt(claims: RequestJwtClaims): string;
71
63
  }
72
64
  export declare class MemoryNonceStore implements NonceStore {
73
- private readonly seen;
74
- checkAndInsert(scope: NonceScope): void;
65
+ private readonly records;
66
+ checkAndUpdate(actor: AgentId, nonce: number, nowMs: number, ttlMs: number): number;
67
+ maxNonce(actor: AgentId, nowMs: number): number | undefined;
68
+ }
69
+ export declare class ClientNonceManager {
70
+ private nextNonceValue;
71
+ constructor(nextNonceValue?: number);
72
+ peek(): number;
73
+ nextNonce(): number;
74
+ observeMaxNonce(maxNonce: number | string | null | undefined): void;
75
75
  }
76
- export declare function createEvent<P>(protocol: string, type: string, actor: AgentId, createdAt: number, nonce: string, payload: P): Event<P>;
76
+ export declare function createEvent<P>(protocol: string, type: string, actor: AgentId, createdAt: number, nonce: number, payload: P): Event<P>;
77
77
  export declare function withRoomId<P>(event: Event<P>, roomId: string): Event<P>;
78
78
  export declare function agentIdFromPublicKey(publicKey: Uint8Array): AgentId;
79
79
  export declare function publicKeyBytes(agentId: AgentId): Uint8Array;
80
80
  export declare function validateAgentId(agentId: AgentId): AgentId;
81
81
  export declare function canonicalEventBytes(event: Event<unknown>): Uint8Array;
82
- export declare function eventId(event: Event<unknown>): string;
82
+ export declare function eventHash(event: Event<unknown>): string;
83
83
  export declare function signEvent(secretKey: Uint8Array, event: Event<unknown>): string;
84
- export declare function verifyEventId(envelope: Envelope<unknown>): void;
84
+ export declare function verifyEventHash(envelope: Envelope<unknown>): void;
85
85
  export declare function verifySignature(envelope: Envelope<unknown>): void;
86
86
  export declare function verifyEnvelope(envelope: Envelope<unknown>): void;
87
87
  export declare function verifyTimestamp(createdAt: number, nowMs: number, windowMs: number): void;
88
- export declare function nonceScopeForEvent(event: Event<unknown>, kind?: NonceScopeKind): NonceScope;
89
- export declare function verifyLiveEnvelope(envelope: Envelope<unknown>, nonceStore: NonceStore, options?: LiveWriteOptions): void;
90
- export declare function createRequestBinding(audience: string, method: string, host: string, path: string): RequestBinding;
91
- export declare function createRequestJwtClaims(agentId: AgentId, binding: RequestBinding, issuedAt: number, ttlSecs: number, jti: string): RequestJwtClaims;
88
+ export declare function verifyLiveEnvelope(envelope: Envelope<unknown>, nonceStore: NonceStore, options?: LiveWriteOptions): number;
89
+ export declare function createRequestBinding(audience: string): RequestBinding;
90
+ export declare function createRequestJwtClaims(agentId: AgentId, binding: RequestBinding, issuedAt: number, ttlSecs: number): RequestJwtClaims;
92
91
  export declare function verifyRequestJwt(token: string, context: RequestAuthContext): RequestJwtClaims;
93
- export declare function verifyRequestJwtLive(token: string, context: RequestAuthContext, nonceStore: NonceStore): RequestJwtClaims;
94
92
  export declare function unixTimeMillis(): number;
95
93
  export declare function unixTimeSecs(): number;
96
- export declare function randomNonce(prefix?: string): string;
94
+ export declare function validateNonce(nonce: number): void;
97
95
  //# sourceMappingURL=identity.d.ts.map
@@ -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
@@ -1,13 +1,12 @@
1
1
  import canonicalize from "canonicalize";
2
- import bs58 from "bs58";
3
- import { createHash, randomBytes } from "node:crypto";
2
+ import { createHash } from "node:crypto";
4
3
  import nacl from "tweetnacl";
5
4
  import { protocolError } from "./errors.js";
6
5
  export const AGENT_ID_PREFIX = "did:agent:";
7
- export const EVENT_ID_PREFIX = "evt_";
8
6
  export const DEFAULT_LIVE_WRITE_WINDOW_MS = 300_000;
7
+ export const DEFAULT_NONCE_TTL_MS = 300_000;
9
8
  export const DEFAULT_REQUEST_JWT_TTL_SECS = 300;
10
- const REQUEST_AUTH_REPLAY_SCOPE = "agent-identity/request-auth";
9
+ export const MAX_NONCE_HEADER = "Max-Seen-Nonce";
11
10
  export class AgentSigner {
12
11
  keyPair;
13
12
  constructor(keyPair) {
@@ -30,7 +29,7 @@ export class AgentSigner {
30
29
  }
31
30
  signEvent(event) {
32
31
  return {
33
- event_id: eventId(event),
32
+ hash: eventHash(event),
34
33
  event,
35
34
  signature: signEvent(this.keyPair.secretKey, event),
36
35
  };
@@ -49,22 +48,54 @@ export class AgentSigner {
49
48
  }
50
49
  }
51
50
  export class MemoryNonceStore {
52
- seen = new Set();
53
- checkAndInsert(scope) {
54
- const key = JSON.stringify([
55
- scope.actor,
56
- scope.protocol,
57
- scope.room_id ?? null,
58
- scope.nonce,
59
- ]);
60
- if (this.seen.has(key)) {
61
- throw protocolError("nonce_reused", "nonce was already used in this replay scope");
51
+ records = new Map();
52
+ checkAndUpdate(actor, nonce, nowMs, ttlMs) {
53
+ validateNonce(nonce);
54
+ if (ttlMs < 0) {
55
+ throw protocolError("invalid_nonce", "nonce cache ttl must be non-negative");
56
+ }
57
+ const record = this.records.get(actor);
58
+ if (record && record.expiresAt > nowMs && nonce <= record.maxNonce) {
59
+ throw protocolError("nonce_not_greater", `nonce must be greater than accepted max nonce ${record.maxNonce}`);
60
+ }
61
+ this.records.set(actor, { maxNonce: nonce, expiresAt: nowMs + ttlMs });
62
+ return nonce;
63
+ }
64
+ maxNonce(actor, nowMs) {
65
+ const record = this.records.get(actor);
66
+ return record && record.expiresAt > nowMs ? record.maxNonce : undefined;
67
+ }
68
+ }
69
+ export class ClientNonceManager {
70
+ nextNonceValue;
71
+ constructor(nextNonceValue = 1) {
72
+ this.nextNonceValue = nextNonceValue;
73
+ validateNonce(nextNonceValue);
74
+ }
75
+ peek() {
76
+ return this.nextNonceValue;
77
+ }
78
+ nextNonce() {
79
+ const nonce = this.nextNonceValue;
80
+ if (!Number.isSafeInteger(nonce + 1)) {
81
+ throw protocolError("invalid_nonce", "nonce counter overflow");
82
+ }
83
+ this.nextNonceValue = nonce + 1;
84
+ return nonce;
85
+ }
86
+ observeMaxNonce(maxNonce) {
87
+ if (maxNonce === null || maxNonce === undefined || maxNonce === "")
88
+ return;
89
+ const parsed = typeof maxNonce === "string" ? Number(maxNonce) : maxNonce;
90
+ validateNonce(parsed);
91
+ if (parsed >= this.nextNonceValue) {
92
+ this.nextNonceValue = parsed + 1;
62
93
  }
63
- this.seen.add(key);
64
94
  }
65
95
  }
66
96
  export function createEvent(protocol, type, actor, createdAt, nonce, payload) {
67
97
  validateAgentId(actor);
98
+ validateNonce(nonce);
68
99
  return {
69
100
  protocol,
70
101
  type,
@@ -84,7 +115,7 @@ export function agentIdFromPublicKey(publicKey) {
84
115
  if (publicKey.byteLength !== 32) {
85
116
  throw protocolError("invalid_public_key", `public key must be 32 bytes, got ${publicKey.byteLength}`);
86
117
  }
87
- return `${AGENT_ID_PREFIX}${base58BtcEncode(publicKey)}`;
118
+ return `${AGENT_ID_PREFIX}${base64UrlEncode(publicKey)}`;
88
119
  }
89
120
  export function publicKeyBytes(agentId) {
90
121
  const encoded = agentId.startsWith(AGENT_ID_PREFIX)
@@ -93,7 +124,7 @@ export function publicKeyBytes(agentId) {
93
124
  if (!encoded) {
94
125
  throw protocolError("invalid_agent_id", "agent id must start with did:agent:");
95
126
  }
96
- const bytes = base58BtcDecode(encoded);
127
+ const bytes = base64UrlDecodeNoPad(encoded);
97
128
  if (bytes.byteLength !== 32) {
98
129
  throw protocolError("invalid_public_key", `agent id public key must be 32 bytes, got ${bytes.byteLength}`);
99
130
  }
@@ -110,11 +141,11 @@ export function canonicalEventBytes(event) {
110
141
  }
111
142
  return new TextEncoder().encode(canonical);
112
143
  }
113
- export function eventId(event) {
114
- const digest = createHash("sha256")
144
+ export function eventHash(event) {
145
+ const digest = createHash("sha3-256")
115
146
  .update(canonicalEventBytes(event))
116
147
  .digest();
117
- return `${EVENT_ID_PREFIX}${base58BtcEncode(digest)}`;
148
+ return base64UrlEncode(digest);
118
149
  }
119
150
  export function signEvent(secretKey, event) {
120
151
  if (secretKey.byteLength !== 64) {
@@ -122,10 +153,10 @@ export function signEvent(secretKey, event) {
122
153
  }
123
154
  return base64UrlEncode(nacl.sign.detached(canonicalEventBytes(event), secretKey));
124
155
  }
125
- export function verifyEventId(envelope) {
126
- const expected = eventId(envelope.event);
127
- if (expected !== envelope.event_id) {
128
- throw protocolError("invalid_event_id", `invalid event id: expected ${expected}, got ${envelope.event_id}`);
156
+ export function verifyEventHash(envelope) {
157
+ const expected = eventHash(envelope.event);
158
+ if (expected !== envelope.hash) {
159
+ throw protocolError("invalid_event_hash", `invalid event hash: expected ${expected}, got ${envelope.hash}`);
129
160
  }
130
161
  }
131
162
  export function verifySignature(envelope) {
@@ -139,7 +170,7 @@ export function verifySignature(envelope) {
139
170
  }
140
171
  }
141
172
  export function verifyEnvelope(envelope) {
142
- verifyEventId(envelope);
173
+ verifyEventHash(envelope);
143
174
  verifySignature(envelope);
144
175
  }
145
176
  export function verifyTimestamp(createdAt, nowMs, windowMs) {
@@ -147,38 +178,24 @@ export function verifyTimestamp(createdAt, nowMs, windowMs) {
147
178
  throw protocolError("timestamp_out_of_window", "timestamp is outside the allowed live-write window");
148
179
  }
149
180
  }
150
- export function nonceScopeForEvent(event, kind = "actor_protocol") {
151
- return {
152
- actor: event.actor,
153
- protocol: event.protocol,
154
- room_id: kind === "actor_room" ? event.room_id : undefined,
155
- nonce: event.nonce,
156
- };
157
- }
158
181
  export function verifyLiveEnvelope(envelope, nonceStore, options = {}) {
182
+ const nowMs = options.nowMs ?? unixTimeMillis();
159
183
  verifyEnvelope(envelope);
160
- verifyTimestamp(envelope.event.created_at, options.nowMs ?? unixTimeMillis(), options.windowMs ?? DEFAULT_LIVE_WRITE_WINDOW_MS);
161
- nonceStore.checkAndInsert(nonceScopeForEvent(envelope.event, options.nonceScope));
184
+ verifyTimestamp(envelope.event.created_at, nowMs, options.windowMs ?? DEFAULT_LIVE_WRITE_WINDOW_MS);
185
+ return nonceStore.checkAndUpdate(envelope.event.actor, envelope.event.nonce, nowMs, options.nonceTtlMs ?? DEFAULT_NONCE_TTL_MS);
162
186
  }
163
- export function createRequestBinding(audience, method, host, path) {
187
+ export function createRequestBinding(audience) {
164
188
  return {
165
189
  audience,
166
- method: method.toUpperCase(),
167
- host,
168
- path,
169
190
  };
170
191
  }
171
- export function createRequestJwtClaims(agentId, binding, issuedAt, ttlSecs, jti) {
192
+ export function createRequestJwtClaims(agentId, binding, issuedAt, ttlSecs) {
172
193
  return {
173
194
  iss: agentId,
174
195
  sub: agentId,
175
196
  aud: binding.audience,
176
197
  iat: issuedAt,
177
198
  exp: issuedAt + ttlSecs,
178
- jti,
179
- method: binding.method.toUpperCase(),
180
- host: binding.host,
181
- path: binding.path,
182
199
  };
183
200
  }
184
201
  export function verifyRequestJwt(token, context) {
@@ -202,15 +219,8 @@ export function verifyRequestJwt(token, context) {
202
219
  if (!nacl.sign.detached.verify(new TextEncoder().encode(signingInput), signature, publicKeyBytes(header.kid))) {
203
220
  throw protocolError("invalid_signature", "JWT signature verification failed");
204
221
  }
205
- const method = context.method.toUpperCase();
206
222
  if (claims.aud !== context.audience)
207
223
  throw protocolError("invalid_jwt_claim", "aud mismatch");
208
- if (claims.method !== method)
209
- throw protocolError("invalid_jwt_claim", "method mismatch");
210
- if (claims.host !== context.host)
211
- throw protocolError("invalid_jwt_claim", "host mismatch");
212
- if (claims.path !== context.path)
213
- throw protocolError("invalid_jwt_claim", "path mismatch");
214
224
  const nowSecs = context.nowSecs ?? unixTimeSecs();
215
225
  const maxTtlSecs = context.maxTtlSecs ?? DEFAULT_REQUEST_JWT_TTL_SECS;
216
226
  if (claims.iat > nowSecs || claims.exp < nowSecs) {
@@ -221,32 +231,16 @@ export function verifyRequestJwt(token, context) {
221
231
  }
222
232
  return claims;
223
233
  }
224
- export function verifyRequestJwtLive(token, context, nonceStore) {
225
- const claims = verifyRequestJwt(token, context);
226
- nonceStore.checkAndInsert({
227
- actor: claims.iss,
228
- protocol: REQUEST_AUTH_REPLAY_SCOPE,
229
- nonce: claims.jti,
230
- });
231
- return claims;
232
- }
233
234
  export function unixTimeMillis() {
234
235
  return Date.now();
235
236
  }
236
237
  export function unixTimeSecs() {
237
238
  return Math.floor(Date.now() / 1000);
238
239
  }
239
- export function randomNonce(prefix = "n_") {
240
- return `${prefix}${base64UrlEncode(randomBytes(16))}`;
241
- }
242
- function base58BtcEncode(bytes) {
243
- return `z${bs58.encode(bytes)}`;
244
- }
245
- function base58BtcDecode(value) {
246
- if (!value.startsWith("z")) {
247
- throw protocolError("invalid_encoding", "expected base58btc multibase value");
240
+ export function validateNonce(nonce) {
241
+ if (!Number.isSafeInteger(nonce) || nonce < 1) {
242
+ throw protocolError("invalid_nonce", "nonce must be a positive safe integer");
248
243
  }
249
- return bs58.decode(value.slice(1));
250
244
  }
251
245
  function base64UrlEncode(bytes) {
252
246
  return Buffer.from(bytes).toString("base64url");
@@ -254,4 +248,10 @@ function base64UrlEncode(bytes) {
254
248
  function base64UrlDecode(value) {
255
249
  return new Uint8Array(Buffer.from(value, "base64url"));
256
250
  }
251
+ function base64UrlDecodeNoPad(value) {
252
+ if (!/^[A-Za-z0-9_-]+$/.test(value)) {
253
+ throw protocolError("invalid_encoding", "expected base64url without padding");
254
+ }
255
+ return base64UrlDecode(value);
256
+ }
257
257
  //# sourceMappingURL=identity.js.map
@@ -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":"AAAA,OAAO,YAAY,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;AAC5C,MAAM,CAAC,MAAM,4BAA4B,GAAG,OAAO,CAAC;AACpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAC5C,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAiEjD,MAAM,OAAO,WAAW;IACe;IAArC,YAAqC,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAElE,MAAM,CAAC,QAAQ;QACb,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAgB;QAC9B,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;YAC3B,MAAM,aAAa,CACjB,qBAAqB,EACrB,8BAA8B,IAAI,CAAC,UAAU,EAAE,CAChD,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO;QACL,OAAO,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAED,SAAS;QACP,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,SAAS,CAAI,KAAe;QAC1B,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC;YACtB,KAAK;YACL,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;SACpD,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,MAAwB;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YACrD,MAAM,aAAa,CACjB,mBAAmB,EACnB,6CAA6C,CAC9C,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAqB,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;QAC5E,MAAM,aAAa,GAAG,eAAe,CACnC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CACjD,CAAC;QACF,MAAM,cAAc,GAAG,eAAe,CACpC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CACjD,CAAC;QACF,MAAM,YAAY,GAAG,GAAG,aAAa,IAAI,cAAc,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAClC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EACtC,IAAI,CAAC,OAAO,CAAC,SAAS,CACvB,CAAC;QACF,OAAO,GAAG,YAAY,IAAI,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;IACzD,CAAC;CACF;AAED,MAAM,OAAO,gBAAgB;IACV,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE3D,cAAc,CACZ,KAAc,EACd,KAAa,EACb,KAAa,EACb,KAAa;QAEb,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,aAAa,CACjB,eAAe,EACf,sCAAsC,CACvC,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACnE,MAAM,aAAa,CACjB,mBAAmB,EACnB,iDAAiD,MAAM,CAAC,QAAQ,EAAE,CACnE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,QAAQ,CAAC,KAAc,EAAE,KAAa;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IACT;IAApB,YAAoB,iBAAiB,CAAC;QAAlB,mBAAc,GAAd,cAAc,CAAI;QACpC,aAAa,CAAC,cAAc,CAAC,CAAC;IAChC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,SAAS;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACrC,MAAM,aAAa,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,GAAG,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,eAAe,CAAC,QAA4C;QAC1D,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE;YAAE,OAAO;QAC3E,MAAM,MAAM,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC1E,aAAa,CAAC,MAAM,CAAC,CAAC;QACtB,IAAI,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAClC,IAAI,CAAC,cAAc,GAAG,MAAM,GAAG,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,WAAW,CACzB,QAAgB,EAChB,IAAY,EACZ,KAAc,EACd,SAAiB,EACjB,KAAa,EACb,OAAU;IAEV,eAAe,CAAC,KAAK,CAAC,CAAC;IACvB,aAAa,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO;QACL,QAAQ;QACR,IAAI;QACJ,KAAK;QACL,UAAU,EAAE,SAAS;QACrB,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAI,KAAe,EAAE,MAAc;IAC3D,OAAO;QACL,GAAG,KAAK;QACR,OAAO,EAAE,MAAM;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAqB;IACxD,IAAI,SAAS,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;QAChC,MAAM,aAAa,CACjB,oBAAoB,EACpB,oCAAoC,SAAS,CAAC,UAAU,EAAE,CAC3D,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,eAAe,GAAG,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC;QACjD,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC;QACvC,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,aAAa,CACjB,kBAAkB,EAClB,qCAAqC,CACtC,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;QAC5B,MAAM,aAAa,CACjB,oBAAoB,EACpB,6CAA6C,KAAK,CAAC,UAAU,EAAE,CAChE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,cAAc,CAAC,OAAO,CAAC,CAAC;IACxB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAqB;IACvD,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,aAAa,CACjB,gBAAgB,EAChB,+CAA+C,CAChD,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC;SAClC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;SAClC,MAAM,EAAE,CAAC;IACZ,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,SAAqB,EACrB,KAAqB;IAErB,IAAI,SAAS,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;QAChC,MAAM,aAAa,CACjB,qBAAqB,EACrB,oCAAoC,SAAS,CAAC,UAAU,EAAE,CAC3D,CAAC;IACJ,CAAC;IACD,OAAO,eAAe,CACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAA2B;IACzD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,aAAa,CACjB,oBAAoB,EACpB,gCAAgC,QAAQ,SAAS,QAAQ,CAAC,IAAI,EAAE,CACjE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAA2B;IACzD,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACtD,IAAI,SAAS,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;QAChC,MAAM,aAAa,CACjB,mBAAmB,EACnB,mCAAmC,SAAS,CAAC,UAAU,EAAE,CAC1D,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAClC,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,EACnC,SAAS,EACT,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CACrC,CAAC;IACF,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,aAAa,CAAC,mBAAmB,EAAE,+BAA+B,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAA2B;IACxD,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC1B,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,SAAiB,EACjB,KAAa,EACb,QAAgB;IAEhB,IAAI,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,QAAQ,EAAE,CAAC;QAC3D,MAAM,aAAa,CACjB,yBAAyB,EACzB,oDAAoD,CACrD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAA2B,EAC3B,UAAsB,EACtB,UAA4B,EAAE;IAE9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,cAAc,EAAE,CAAC;IAChD,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzB,eAAe,CACb,QAAQ,CAAC,KAAK,CAAC,UAAU,EACzB,KAAK,EACL,OAAO,CAAC,QAAQ,IAAI,4BAA4B,CACjD,CAAC;IACF,OAAO,UAAU,CAAC,cAAc,CAC9B,QAAQ,CAAC,KAAK,CAAC,KAAK,EACpB,QAAQ,CAAC,KAAK,CAAC,KAAK,EACpB,KAAK,EACL,OAAO,CAAC,UAAU,IAAI,oBAAoB,CAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,OAAO;QACL,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAgB,EAChB,OAAuB,EACvB,QAAgB,EAChB,OAAe;IAEf,OAAO;QACL,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,OAAO,CAAC,QAAQ;QACrB,GAAG,EAAE,QAAQ;QACb,GAAG,EAAE,QAAQ,GAAG,OAAO;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,OAA2B;IAE3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,aAAa,CAAC,aAAa,EAAE,kCAAkC,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAChC,CAAC;IACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAChC,CAAC;IACtB,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/C,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,aAAa,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,aAAa,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC;QAC3D,MAAM,aAAa,CACjB,mBAAmB,EACnB,mDAAmD,CACpD,CAAC;IACJ,CAAC;IACD,IACE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CACxB,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EACtC,SAAS,EACT,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAC3B,EACD,CAAC;QACD,MAAM,aAAa,CACjB,mBAAmB,EACnB,mCAAmC,CACpC,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO,CAAC,QAAQ;QACjC,MAAM,aAAa,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IAE3D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,YAAY,EAAE,CAAC;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,4BAA4B,CAAC;IACtE,IAAI,MAAM,CAAC,GAAG,GAAG,OAAO,IAAI,MAAM,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC;QACjD,MAAM,aAAa,CACjB,mBAAmB,EACnB,mCAAmC,CACpC,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,UAAU,EAAE,CAAC;QACzC,MAAM,aAAa,CAAC,mBAAmB,EAAE,yBAAyB,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,aAAa,CACjB,eAAe,EACf,uCAAuC,CACxC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAiB;IACxC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,aAAa,CACjB,kBAAkB,EAClB,oCAAoC,CACrC,CAAC;IACJ,CAAC;IACD,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC"}
package/dist/profile.d.ts CHANGED
@@ -6,27 +6,49 @@ export interface ServiceEndpoint {
6
6
  url: string;
7
7
  protocols?: string[];
8
8
  }
9
+ export type ProfileLinkRel = "homepage" | "documentation" | "source_code" | "social" | "browser";
10
+ export interface ProfileLink {
11
+ name: string;
12
+ url: string;
13
+ rel: ProfileLinkRel;
14
+ }
9
15
  export interface ProfileUpdatePayload {
10
- agent_id: AgentId;
16
+ id?: AgentId;
17
+ agent_id?: AgentId;
11
18
  name: string;
12
19
  description?: string;
13
20
  avatar_url?: string;
14
21
  provider?: string;
15
22
  capabilities?: string[];
16
23
  service_endpoints?: ServiceEndpoint[];
17
- links?: Record<string, string>;
18
- metadata?: Record<string, unknown>;
24
+ links?: ProfileLink[];
25
+ extra?: Record<string, unknown>;
19
26
  }
20
- export interface AgentProfile extends ProfileUpdatePayload {
27
+ export interface AgentProfile {
28
+ id: AgentId;
29
+ name: string;
30
+ description?: string;
31
+ avatar_url?: string;
32
+ provider?: string;
33
+ capabilities?: string[];
34
+ service_endpoints?: ServiceEndpoint[];
35
+ links?: ProfileLink[];
36
+ extra?: Record<string, unknown>;
21
37
  updated_at: number;
22
- profile_event_id: string;
38
+ event_id: string;
39
+ }
40
+ export interface ProfileBatchReadRequest {
41
+ ids: AgentId[];
42
+ }
43
+ export interface ProfileBatchReadResponse {
44
+ result: AgentProfile[];
23
45
  }
24
- export interface ProfileReadResponse {
25
- profile: AgentProfile;
26
- profile_event?: Envelope<ProfileUpdatePayload>;
46
+ export interface ProfileEventsResponse {
47
+ result: Envelope<ProfileUpdatePayload>[];
27
48
  }
28
49
  export interface ProfileServiceEndpoints {
29
50
  profiles: string;
51
+ profile_batch?: string;
30
52
  }
31
53
  export interface ProfileServiceDiscovery {
32
54
  protocol: string;
@@ -34,7 +56,7 @@ export interface ProfileServiceDiscovery {
34
56
  endpoints: ProfileServiceEndpoints;
35
57
  features?: string[];
36
58
  }
37
- export declare function profileUpdateEvent(actor: AgentId, createdAt: number, nonce: string, payload: ProfileUpdatePayload): Event<ProfileUpdatePayload>;
59
+ export declare function profileUpdateEvent(actor: AgentId, createdAt: number, nonce: number, payload: ProfileUpdatePayload): Event<ProfileUpdatePayload>;
38
60
  export declare function validateProfileUpdate(envelope: Envelope<ProfileUpdatePayload>): void;
39
61
  export declare function materializeProfile(envelope: Envelope<ProfileUpdatePayload>): AgentProfile;
40
62
  //# sourceMappingURL=profile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,KAAK,EAGN,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AACpD,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,YAAa,SAAQ,oBAAoB;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,YAAY,CAAC;IACtB,aAAa,CAAC,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,uBAAuB,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,oBAAoB,GAC5B,KAAK,CAAC,oBAAoB,CAAC,CAS7B;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACvC,IAAI,CAoBN;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACvC,YAAY,CAgBd"}
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,KAAK,EAGN,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AACpD,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,eAAe,GACf,aAAa,GACb,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,cAAc,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,OAAO,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,uBAAuB,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,oBAAoB,GAC5B,KAAK,CAAC,oBAAoB,CAAC,CAS7B;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACvC,IAAI,CAsBN;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACvC,YAAY,CAiBd"}