agent-protocols 0.2.2 → 0.3.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 CHANGED
@@ -6,7 +6,7 @@ TypeScript SDK for the draft Agent Identity, Agent Profile, and Agent Discourse
6
6
 
7
7
  - `identity`: `did:agent:` encoding, JCS canonicalization, event hashes, Ed25519 signing and verification, live-write nonce checks, request JWT helpers.
8
8
  - `profile`: `profile.update` payloads, Profile documents, validation, materialization.
9
- - `discourse`: ADP room payloads, join request types, roles, room states, protocol discovery, archive manifests, room-path checks, permission and state helpers.
9
+ - `discourse`: ADP kernel payloads, the room type system (type definitions, pack imports, type registry, JSON Schema payload validation), join request types, roles, room states, protocol discovery, archive manifests, room-path checks, kind-based permission and state helpers.
10
10
  - `http-client`: fetch-based Profile and Discourse clients.
11
11
 
12
12
  ## Example
@@ -23,3 +23,5 @@ const event = profileUpdateEvent(signer.agentId(), Date.now(), nonces.nextNonce(
23
23
  const envelope = signer.signEvent(event);
24
24
  const profile = materializeProfile(envelope);
25
25
  ```
26
+
27
+ `username` is provider-confirmed and appears on Profile documents returned by a profile service. Do not put it in agent-submitted `profile.update` payloads.
@@ -1,5 +1,6 @@
1
1
  import { AgentId, Envelope, Event } from "./identity.js";
2
2
  export declare const DISCOURSE_PROTOCOL = "agent-discourse/1.0";
3
+ /** The nine built-in event types. All other types are room-defined. */
3
4
  export declare const eventType: {
4
5
  readonly ROOM_CREATE: "room.create";
5
6
  readonly ROOM_JOIN: "room.join";
@@ -8,54 +9,110 @@ export declare const eventType: {
8
9
  readonly ROOM_MEMBER_ROLE_UPDATE: "room.member.role.update";
9
10
  readonly ROOM_CLOSE: "room.close";
10
11
  readonly ROOM_CANCEL: "room.cancel";
12
+ readonly TYPE_DEFINE: "type.define";
11
13
  readonly MESSAGE_CREATE: "message.create";
12
- readonly REACTION_CREATE: "reaction.create";
13
- readonly MESSAGE_PROPOSAL_CREATE: "message.proposal.create";
14
- readonly MESSAGE_POLL_CREATE: "message.poll.create";
15
- readonly MESSAGE_POLL_VOTE: "message.poll.vote";
16
- readonly MESSAGE_RESOLUTION_CREATE: "message.resolution.create";
17
- readonly SOURCE_ADD: "source.add";
18
- readonly TURN_UPDATE: "turn.update";
19
- readonly QUESTION_CREATE: "question.create";
20
- readonly ROOM_STEER: "room.steer";
21
- readonly MAP_UPDATE: "map.update";
22
- readonly ARTIFACT_CREATE: "artifact.create";
23
14
  };
24
- export type EventType = (typeof eventType)[keyof typeof eventType];
15
+ export type BuiltinEventType = (typeof eventType)[keyof typeof eventType];
16
+ export declare const BUILTIN_EVENT_TYPES: readonly string[];
17
+ /** Custom event types must not use these prefixes. */
18
+ export declare const RESERVED_TYPE_PREFIXES: readonly ["room.", "type."];
19
+ /** Registered type packs defined by the specification in `1.0.packs.json`. */
20
+ export declare const packId: {
21
+ readonly REACTIONS: "adp:reactions/1.0";
22
+ readonly DELIBERATION: "adp:deliberation/1.0";
23
+ readonly CURATION: "adp:curation/1.0";
24
+ readonly MODERATION: "adp:moderation/1.0";
25
+ readonly REALTIME: "adp:realtime/1.0";
26
+ };
27
+ export declare const REGISTERED_PACK_IDS: readonly string[];
25
28
  export type RoomState = "scheduled" | "active" | "ended" | "cancelled";
26
29
  export type Visibility = "public" | "restricted" | "private";
27
- export type TurnPolicy = "free" | "round_robin" | "moderator_led";
28
- export type Role = "moderator" | "expert" | "participant" | "observer";
30
+ export type Role = "moderator" | "speaker" | "observer";
31
+ /** Permission class of an event type. */
32
+ export type TypeKind = "message" | "signal" | "control";
33
+ export type TypeStatus = "active" | "deprecated" | "disabled";
29
34
  export type JoinRequestStatus = "pending" | "approved" | "rejected" | "expired";
30
35
  export type JoinDecision = "approve" | "reject";
31
- export type MessageIntent = "question" | "answer" | "clarification" | "critique" | "synthesis" | "follow_up" | "other";
32
- export type MapOperation = "upsert_node" | "move_node" | "delete_node" | "merge_nodes" | "replace_snapshot" | "mark_resolved";
33
- export type MapNodeStatus = "open" | "resolved" | "closed";
34
- export type ResolutionOutcome = "accepted" | "rejected" | "deferred" | "superseded";
35
36
  export interface RoomCreatePayload {
36
37
  topic: string;
37
38
  agenda?: string;
39
+ guidance?: string;
38
40
  visibility: Visibility;
39
41
  start_time: number;
40
42
  end_time: number;
41
43
  tags?: string[];
42
44
  language?: string;
43
45
  policy?: RoomPolicy;
44
- extensions?: Record<string, unknown>;
46
+ types?: TypeDeclaration[];
45
47
  extra?: Record<string, unknown>;
46
48
  }
47
49
  export interface RoomPolicy {
48
- turn_policy?: TurnPolicy;
49
50
  moderator_agent_ids?: AgentId[];
50
- max_participants?: number;
51
+ max_speakers?: number;
51
52
  observer_allowed?: boolean;
52
- observer_steering_allowed?: boolean;
53
- [key: string]: unknown;
53
+ extra?: Record<string, unknown>;
54
+ }
55
+ /** A room-scoped declaration of a custom event type. */
56
+ export interface TypeDef {
57
+ type: string;
58
+ kind: TypeKind;
59
+ title: string;
60
+ description?: string;
61
+ /** Self-contained JSON Schema (draft 2020-12) for the event payload. */
62
+ schema: Record<string, unknown>;
63
+ roles?: Role[];
64
+ instructions?: string;
65
+ version?: string;
66
+ status?: TypeStatus;
67
+ rate_hint?: number;
68
+ max_payload_hint?: number;
69
+ extra?: Record<string, unknown>;
70
+ }
71
+ /** Per-type adjustments applied when importing a pack. */
72
+ export interface TypeOverride {
73
+ roles?: Role[];
74
+ instructions?: string;
75
+ status?: TypeStatus;
76
+ rate_hint?: number;
77
+ max_payload_hint?: number;
78
+ }
79
+ /** Imports a registered pack (`use`) or an external pack (`pack` + `digest`). */
80
+ export interface PackImport {
81
+ use?: string;
82
+ pack?: string;
83
+ digest?: string;
84
+ types?: string[];
85
+ overrides?: Record<string, TypeOverride>;
86
+ }
87
+ /** One entry of `room.create.payload.types` or a `type.define` payload. */
88
+ export type TypeDeclaration = TypeDef | PackImport;
89
+ export interface Pack {
90
+ id: string;
91
+ title: string;
92
+ description?: string;
93
+ types: TypeDef[];
94
+ extra?: Record<string, unknown>;
95
+ }
96
+ /** The shape of `1.0.packs.json` and externally published pack documents. */
97
+ export interface PackDocument {
98
+ protocol: string;
99
+ description?: string;
100
+ packs: Pack[];
54
101
  }
102
+ /** Indexes the packs of a document by pack id for registry materialization. */
103
+ export declare function packMap(document: PackDocument): Record<string, Pack>;
55
104
  export interface RoomResponse {
56
105
  id: string;
57
106
  status: RoomState;
58
107
  url: string;
108
+ topic?: string;
109
+ guidance?: string;
110
+ visibility?: Visibility;
111
+ start_time?: number;
112
+ end_time?: number;
113
+ policy?: RoomPolicy;
114
+ /** Materialized type registry served by the host. */
115
+ types?: TypeDef[];
59
116
  seq: number;
60
117
  pre_hash: string | null;
61
118
  hash: string;
@@ -66,6 +123,7 @@ export interface RoomJoinPayload {
66
123
  request_id: string;
67
124
  role: Role;
68
125
  perspective?: string;
126
+ extra?: Record<string, unknown>;
69
127
  }
70
128
  export interface RoomJoinRequestPayload {
71
129
  requested_role: Role;
@@ -84,8 +142,8 @@ export interface RoomJoinRequest {
84
142
  request_reason?: string;
85
143
  review_reason?: string;
86
144
  created_at: number;
87
- reviewed_by?: AgentId;
88
- reviewed_at?: number;
145
+ reviewed_by?: AgentId | null;
146
+ reviewed_at?: number | null;
89
147
  expires_at?: number;
90
148
  extra?: Record<string, unknown>;
91
149
  }
@@ -95,119 +153,28 @@ export interface RoomJoinReviewPayload {
95
153
  decision: JoinDecision;
96
154
  role?: Role;
97
155
  reason?: string;
98
- }
99
- export interface RoomLeavePayload {
100
- reason?: string;
156
+ extra?: Record<string, unknown>;
101
157
  }
102
158
  export interface RoleUpdatePayload {
103
159
  member: AgentId;
104
160
  role: Role;
105
161
  reason?: string;
106
- }
107
- export interface MessageCreatePayload {
108
- content_type: string;
109
- content: unknown;
110
- references?: string[];
111
- }
112
- export interface ProposalCreatePayload {
113
- proposal_id: string;
114
- title: string;
115
- body: string;
116
- content_type?: string;
117
- references?: string[];
118
- source_event_ids?: string[];
119
162
  extra?: Record<string, unknown>;
120
163
  }
121
- export interface PollOption {
122
- id: string;
123
- label: string;
124
- description?: string;
125
- }
126
- export interface PollCreatePayload {
127
- poll_id: string;
128
- question: string;
129
- options: PollOption[];
130
- min_choices?: number;
131
- max_choices?: number;
132
- closes_at?: number;
133
- references?: string[];
134
- extra?: Record<string, unknown>;
135
- }
136
- export interface PollVotePayload {
137
- event_id: string;
138
- option_ids: string[];
139
- }
140
- export interface ResolutionCreatePayload {
141
- resolution_id: string;
142
- outcome: ResolutionOutcome;
143
- summary: string;
144
- proposal_event_id?: string;
145
- poll_event_id?: string;
146
- references?: string[];
147
- extra?: Record<string, unknown>;
148
- }
149
- export interface ReactionCreatePayload {
150
- event_id: string;
151
- reaction: string;
152
- score?: number;
153
- }
154
- export interface SourceAddPayload {
155
- source_type: string;
156
- uri: string;
157
- title?: string;
158
- retrieved_at?: number;
159
- content_digest?: string;
160
- excerpt?: string;
161
- extra?: Record<string, unknown>;
162
- }
163
- export interface TurnUpdatePayload {
164
- turn_id: number;
165
- speaker: AgentId;
166
- intent?: MessageIntent;
167
- topic?: string;
168
- expires_at?: number;
164
+ /** Shared payload of `room.leave`, `room.close`, and `room.cancel`. */
165
+ export interface ReasonPayload {
169
166
  reason?: string;
170
- }
171
- export interface QuestionGeneratePayload {
172
- question: string;
173
- target_perspectives?: string[];
174
- basis?: string;
175
- source_event_ids?: string[];
176
- references?: string[];
177
- priority?: number;
178
- }
179
- export interface DiscourseSteerPayload {
180
- instruction: string;
181
- target: string;
182
- priority?: number;
183
167
  references?: string[];
184
- }
185
- export interface MapNode {
186
- id: string;
187
- parent_id?: string;
188
- title: string;
189
- summary?: string;
190
- status?: MapNodeStatus;
191
- source_event_ids?: string[];
192
- discussion_event_ids?: string[];
193
- children?: MapNode[];
194
168
  extra?: Record<string, unknown>;
195
169
  }
196
- export interface MapUpdatePayload {
197
- operation: MapOperation;
198
- node?: MapNode;
170
+ export type RoomLeavePayload = ReasonPayload;
171
+ export type RoomClosePayload = ReasonPayload;
172
+ export type RoomCancelPayload = ReasonPayload;
173
+ export interface MessageCreatePayload {
174
+ content_type: string;
175
+ content: unknown;
176
+ references?: string[];
199
177
  extra?: Record<string, unknown>;
200
- [key: string]: unknown;
201
- }
202
- export interface ArtifactCreatePayload {
203
- artifact_id: string;
204
- format: string;
205
- title: string;
206
- uri: string;
207
- content_digest?: string;
208
- source_event_ids?: string[];
209
- discussion_event_ids?: string[];
210
- map_event_id?: string;
211
178
  }
212
179
  export interface ServerRecord<P = unknown> {
213
180
  room_id: string;
@@ -233,16 +200,10 @@ export interface DiscourseProtocolDiscovery {
233
200
  protocol: string;
234
201
  host: string;
235
202
  features?: string[];
203
+ registered_packs?: string[];
236
204
  profile?: ProfileResolverMetadata;
237
205
  endpoints?: Record<string, string>;
238
206
  }
239
- export interface ArtifactManifest {
240
- artifact_id: string;
241
- type: string;
242
- format: string;
243
- uri: string;
244
- content_digest?: string;
245
- }
246
207
  export interface ArchiveManifest {
247
208
  protocol: string;
248
209
  type: "room.archive";
@@ -256,43 +217,80 @@ export interface ArchiveManifest {
256
217
  last_hash: string;
257
218
  events_sha3_256: string;
258
219
  archive_root: string;
259
- map_snapshot?: {
260
- event_id: string;
261
- digest: string;
262
- };
263
- artifacts?: ArtifactManifest[];
264
- discourse_trace_quality_score?: number;
265
220
  formats?: Record<string, string>;
221
+ extra?: Record<string, unknown>;
266
222
  }
223
+ /** Permission inputs for one actor in one room. */
267
224
  export interface PermissionContext {
268
225
  role?: Role;
269
226
  isCreator?: boolean;
270
227
  joinRequestApproved?: boolean;
271
- moderatorAuthorized?: boolean;
272
- expertPolicyAllowed?: boolean;
273
- participantPolicyAllowed?: boolean;
274
- observerSteeringAllowed?: boolean;
275
- observerPollVoteAllowed?: boolean;
276
- }
277
- export interface StateWriteOptions {
278
- postEndReactionAllowed?: boolean;
279
228
  }
280
229
  export declare function roomCreateEvent(actor: AgentId, createdAt: number, nonce: number, payload: RoomCreatePayload): Event<RoomCreatePayload>;
230
+ export declare function typeDefineEvent(actor: AgentId, createdAt: number, nonce: number, roomId: string, declaration: TypeDeclaration): Event<TypeDeclaration>;
281
231
  export declare function discourseEvent<P>(type: string, actor: AgentId, createdAt: number, nonce: number, roomId: string, payload: P): Event<P>;
232
+ export declare function isBuiltinEventType(type: string): boolean;
233
+ export declare function eventRequiresRoomId(type: string): boolean;
282
234
  export declare function validateDiscourseEnvelope(envelope: Envelope<unknown>): void;
283
235
  export declare function validateRoomPath(envelope: Envelope<unknown>, pathRoomId: string): void;
284
- export declare function eventRequiresRoomId(type: string): boolean;
236
+ /**
237
+ * Checks the shape of a custom event type name: lowercase dot-separated, at
238
+ * least two segments, not built-in, not under a reserved prefix.
239
+ */
240
+ export declare function validateCustomEventTypeName(name: string): void;
241
+ export declare function isPackImport(declaration: TypeDeclaration): declaration is PackImport;
242
+ export declare function isTypeDef(declaration: TypeDeclaration): declaration is TypeDef;
243
+ export declare function validateTypeDef(def: TypeDef): void;
244
+ export declare function validatePackImport(declaration: PackImport): void;
245
+ export declare function validateTypeDeclaration(declaration: TypeDeclaration): void;
285
246
  export declare function validateRoomCreatePayload(payload: RoomCreatePayload): void;
286
- export declare function validatePollCreatePayload(payload: PollCreatePayload): void;
287
- export declare function validatePollVotePayload(payload: PollVotePayload, poll: PollCreatePayload, nowMs?: number): void;
247
+ export declare function validateMessageCreatePayload(payload: MessageCreatePayload): void;
248
+ /** The effective set of type definitions active in a room. */
249
+ export declare class TypeRegistry {
250
+ private readonly types;
251
+ /**
252
+ * Materializes a registry from declarations, resolving pack imports from
253
+ * `packs`, keyed by registered pack id or external pack URI.
254
+ */
255
+ static fromDeclarations(declarations: TypeDeclaration[], packs?: Record<string, Pack>): TypeRegistry;
256
+ /**
257
+ * Applies one declaration: an inline definition or a pack import.
258
+ * Redefining an existing type replaces it; the latest definition wins.
259
+ */
260
+ apply(declaration: TypeDeclaration, packs?: Record<string, Pack>): void;
261
+ define(def: TypeDef): void;
262
+ private import;
263
+ get(type: string): TypeDef | undefined;
264
+ has(type: string): boolean;
265
+ get size(): number;
266
+ definitions(): TypeDef[];
267
+ /** Validates a custom event payload against the type's schema and status. */
268
+ validatePayload(type: string, payload: unknown): void;
269
+ }
270
+ /**
271
+ * Validates an event payload: built-in payloads are accepted as-is (use the
272
+ * typed validators for them); custom payloads must satisfy the registry.
273
+ */
274
+ export declare function validateEventAgainstRegistry(type: string, payload: unknown, registry: TypeRegistry): void;
275
+ /**
276
+ * Verifies a `<algorithm>:<base64url-digest>` content digest over raw bytes.
277
+ * Supports `sha256` and `sha3-256`.
278
+ */
279
+ export declare function verifyPackDigest(bytes: Uint8Array, digest: string): void;
288
280
  export declare function serverRecordHashPayload(roomId: string, seq: number, preHash: string | null | undefined, envelopeHash: string, receivedAt: number): ServerRecordHashPayload;
289
281
  export declare function serverRecordHash(roomId: string, seq: number, preHash: string | null | undefined, envelopeHash: string, receivedAt: number): string;
290
282
  export declare function buildServerRecord<P>(roomId: string, seq: number, preHash: string | null | undefined, receivedAt: number, envelope: Envelope<P>): ServerRecord<P>;
291
283
  export declare function verifyServerRecord(record: ServerRecord): void;
292
284
  export declare function verifyServerRecordChain(records: ServerRecord[]): void;
293
285
  export declare function archiveEventsDigest(records: ServerRecord[]): string;
294
- export declare function canSubmitEvent(type: string, context: PermissionContext): boolean;
295
- export declare function canWriteInState(type: string, state: RoomState, options?: StateWriteOptions): boolean;
296
- export declare function canAcceptRoomWrite(type: string, state: RoomState, permission: PermissionContext, options?: StateWriteOptions): boolean;
297
- export declare function validateRoomWrite(type: string, state: RoomState, permission: PermissionContext, options?: StateWriteOptions): void;
286
+ /** Default sender roles for each kind. The creator passes every role check. */
287
+ export declare function defaultKindRoles(kind: TypeKind): readonly Role[];
288
+ /**
289
+ * Role check for one event type, using kind defaults and per-type overrides
290
+ * from the room's type registry. State checks are separate.
291
+ */
292
+ export declare function canSubmitEvent(type: string, context: PermissionContext, registry?: TypeRegistry): boolean;
293
+ export declare function canWriteInState(type: string, state: RoomState): boolean;
294
+ export declare function canAcceptRoomWrite(type: string, state: RoomState, permission: PermissionContext, registry?: TypeRegistry): boolean;
295
+ export declare function validateRoomWrite(type: string, state: RoomState, permission: PermissionContext, registry?: TypeRegistry): void;
298
296
  //# sourceMappingURL=discourse.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discourse.d.ts","sourceRoot":"","sources":["../src/discourse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discourse.d.ts","sourceRoot":"","sources":["../src/discourse.ts"],"names":[],"mappings":"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"}
package/dist/discourse.js CHANGED
@@ -1,8 +1,19 @@
1
+ /**
2
+ * Agent Discourse Protocol 1.0: kernel types, the room type system, and
3
+ * verification helpers.
4
+ *
5
+ * The protocol defines nine built-in event types. Every other event type is
6
+ * declared per room as a schema-validated type definition, either inline or
7
+ * imported from a type pack. Hosts validate structure and permissions; they
8
+ * never need to understand application semantics.
9
+ */
10
+ import { Validator } from "@cfworker/json-schema";
1
11
  import canonicalize from "canonicalize";
2
12
  import { createHash } from "node:crypto";
3
13
  import { protocolError } from "./errors.js";
4
14
  import { createEvent, verifyEnvelope, withRoomId, } from "./identity.js";
5
15
  export const DISCOURSE_PROTOCOL = "agent-discourse/1.0";
16
+ /** The nine built-in event types. All other types are room-defined. */
6
17
  export const eventType = {
7
18
  ROOM_CREATE: "room.create",
8
19
  ROOM_JOIN: "room.join",
@@ -11,102 +22,309 @@ export const eventType = {
11
22
  ROOM_MEMBER_ROLE_UPDATE: "room.member.role.update",
12
23
  ROOM_CLOSE: "room.close",
13
24
  ROOM_CANCEL: "room.cancel",
25
+ TYPE_DEFINE: "type.define",
14
26
  MESSAGE_CREATE: "message.create",
15
- REACTION_CREATE: "reaction.create",
16
- MESSAGE_PROPOSAL_CREATE: "message.proposal.create",
17
- MESSAGE_POLL_CREATE: "message.poll.create",
18
- MESSAGE_POLL_VOTE: "message.poll.vote",
19
- MESSAGE_RESOLUTION_CREATE: "message.resolution.create",
20
- SOURCE_ADD: "source.add",
21
- TURN_UPDATE: "turn.update",
22
- QUESTION_CREATE: "question.create",
23
- ROOM_STEER: "room.steer",
24
- MAP_UPDATE: "map.update",
25
- ARTIFACT_CREATE: "artifact.create",
26
27
  };
28
+ export const BUILTIN_EVENT_TYPES = Object.values(eventType);
29
+ /** Custom event types must not use these prefixes. */
30
+ export const RESERVED_TYPE_PREFIXES = ["room.", "type."];
31
+ /** Registered type packs defined by the specification in `1.0.packs.json`. */
32
+ export const packId = {
33
+ REACTIONS: "adp:reactions/1.0",
34
+ DELIBERATION: "adp:deliberation/1.0",
35
+ CURATION: "adp:curation/1.0",
36
+ MODERATION: "adp:moderation/1.0",
37
+ REALTIME: "adp:realtime/1.0",
38
+ };
39
+ export const REGISTERED_PACK_IDS = Object.values(packId);
40
+ /** Indexes the packs of a document by pack id for registry materialization. */
41
+ export function packMap(document) {
42
+ const packs = {};
43
+ for (const pack of document.packs)
44
+ packs[pack.id] = pack;
45
+ return packs;
46
+ }
27
47
  export function roomCreateEvent(actor, createdAt, nonce, payload) {
28
48
  return createEvent(DISCOURSE_PROTOCOL, eventType.ROOM_CREATE, actor, createdAt, nonce, payload);
29
49
  }
50
+ export function typeDefineEvent(actor, createdAt, nonce, roomId, declaration) {
51
+ return withRoomId(createEvent(DISCOURSE_PROTOCOL, eventType.TYPE_DEFINE, actor, createdAt, nonce, declaration), roomId);
52
+ }
30
53
  export function discourseEvent(type, actor, createdAt, nonce, roomId, payload) {
31
54
  return withRoomId(createEvent(DISCOURSE_PROTOCOL, type, actor, createdAt, nonce, payload), roomId);
32
55
  }
56
+ export function isBuiltinEventType(type) {
57
+ return BUILTIN_EVENT_TYPES.includes(type);
58
+ }
59
+ export function eventRequiresRoomId(type) {
60
+ return type !== eventType.ROOM_CREATE;
61
+ }
33
62
  export function validateDiscourseEnvelope(envelope) {
34
63
  verifyEnvelope(envelope);
35
64
  const protocol = envelope.event.protocol;
36
65
  if (protocol !== DISCOURSE_PROTOCOL) {
37
66
  throw protocolError("invalid_event_protocol", `expected ${DISCOURSE_PROTOCOL}, got ${protocol}`);
38
67
  }
39
- if (eventRequiresRoomId(envelope.event.type) &&
40
- envelope.event.room_id === undefined) {
68
+ if (envelope.event.type === eventType.ROOM_CREATE) {
69
+ if (envelope.event.room_id !== undefined) {
70
+ throw protocolError("invalid_event", "room.create must not include room_id");
71
+ }
72
+ }
73
+ else if (envelope.event.room_id === undefined) {
41
74
  throw protocolError("missing_room_id", "event requires a room_id");
42
75
  }
43
76
  }
44
77
  export function validateRoomPath(envelope, pathRoomId) {
45
78
  const actual = envelope.event.room_id;
46
- if (actual === undefined && envelope.event.type === eventType.ROOM_CREATE)
79
+ if (envelope.event.type === eventType.ROOM_CREATE) {
80
+ if (actual !== undefined) {
81
+ throw protocolError("invalid_event", "room.create must not include room_id");
82
+ }
47
83
  return;
84
+ }
48
85
  if (actual === undefined)
49
86
  throw protocolError("missing_room_id", "event requires a room_id");
50
87
  if (actual !== pathRoomId)
51
88
  throw protocolError("room_id_mismatch", `expected ${pathRoomId}, got ${actual}`);
52
89
  }
53
- export function eventRequiresRoomId(type) {
54
- return type !== eventType.ROOM_CREATE;
90
+ /**
91
+ * Checks the shape of a custom event type name: lowercase dot-separated, at
92
+ * least two segments, not built-in, not under a reserved prefix.
93
+ */
94
+ export function validateCustomEventTypeName(name) {
95
+ const segments = name.split(".");
96
+ const validShape = segments.length >= 2 &&
97
+ segments.every((segment) => /^[a-z0-9][a-z0-9_-]*$/.test(segment));
98
+ if (!validShape) {
99
+ throw protocolError("invalid_event", `invalid event type name: ${name}`);
100
+ }
101
+ if (isBuiltinEventType(name)) {
102
+ throw protocolError("invalid_event", `${name} is a built-in event type`);
103
+ }
104
+ if (RESERVED_TYPE_PREFIXES.some((prefix) => name.startsWith(prefix))) {
105
+ throw protocolError("invalid_event", `${name} uses a reserved type prefix`);
106
+ }
107
+ }
108
+ export function isPackImport(declaration) {
109
+ return (typeof declaration === "object" &&
110
+ declaration !== null &&
111
+ ("use" in declaration || "pack" in declaration || "digest" in declaration));
112
+ }
113
+ export function isTypeDef(declaration) {
114
+ return (typeof declaration === "object" &&
115
+ declaration !== null &&
116
+ !isPackImport(declaration) &&
117
+ "type" in declaration);
118
+ }
119
+ export function validateTypeDef(def) {
120
+ validateCustomEventTypeName(def.type);
121
+ if (!["message", "signal", "control"].includes(def.kind)) {
122
+ throw protocolError("invalid_event", `invalid type kind: ${def.kind}`);
123
+ }
124
+ if (typeof def.title !== "string" || def.title.trim() === "") {
125
+ throw protocolError("invalid_event", "type definition title must not be empty");
126
+ }
127
+ if (typeof def.schema !== "object" ||
128
+ def.schema === null ||
129
+ Array.isArray(def.schema)) {
130
+ throw protocolError("invalid_event", "type definition schema must be a JSON Schema object");
131
+ }
132
+ compileSchema(def.schema);
133
+ if (def.roles !== undefined && def.roles.length === 0) {
134
+ throw protocolError("invalid_event", "type definition roles must not be empty");
135
+ }
136
+ for (const hint of [def.rate_hint, def.max_payload_hint]) {
137
+ if (hint !== undefined && (!Number.isInteger(hint) || hint < 1)) {
138
+ throw protocolError("invalid_event", "type definition hints must be positive integers");
139
+ }
140
+ }
141
+ }
142
+ export function validatePackImport(declaration) {
143
+ const hasUse = declaration.use !== undefined;
144
+ const hasExternal = declaration.pack !== undefined && declaration.digest !== undefined;
145
+ if (hasUse) {
146
+ if (declaration.pack !== undefined || declaration.digest !== undefined) {
147
+ throw protocolError("invalid_event", "pack import requires either use, or pack with digest");
148
+ }
149
+ if (!isRegisteredPackId(declaration.use)) {
150
+ throw protocolError("invalid_event", `invalid registered pack id: ${declaration.use}`);
151
+ }
152
+ }
153
+ else if (hasExternal) {
154
+ if (declaration.digest.trim() === "") {
155
+ throw protocolError("invalid_event", "external pack digest must not be empty");
156
+ }
157
+ }
158
+ else {
159
+ throw protocolError("invalid_event", "pack import requires either use, or pack with digest");
160
+ }
161
+ if (declaration.types !== undefined && declaration.types.length === 0) {
162
+ throw protocolError("invalid_event", "pack import types subset must not be empty");
163
+ }
164
+ }
165
+ export function validateTypeDeclaration(declaration) {
166
+ if (isPackImport(declaration)) {
167
+ validatePackImport(declaration);
168
+ }
169
+ else if (isTypeDef(declaration)) {
170
+ validateTypeDef(declaration);
171
+ }
172
+ else {
173
+ throw protocolError("invalid_event", "type declaration must be an inline definition or a pack import");
174
+ }
175
+ }
176
+ function isRegisteredPackId(id) {
177
+ return /^adp:[a-z0-9-]+\/[0-9]+\.[0-9]+$/.test(id);
55
178
  }
56
179
  export function validateRoomCreatePayload(payload) {
57
180
  if (payload.topic.trim() === "") {
58
- throw protocolError("invalid_room", "room topic must not be empty");
181
+ throw protocolError("invalid_event", "room topic must not be empty");
59
182
  }
60
183
  if (payload.start_time >= payload.end_time) {
61
- throw protocolError("invalid_room", "start_time must be before end_time");
184
+ throw protocolError("invalid_event", "start_time must be before end_time");
185
+ }
186
+ const maxSpeakers = payload.policy?.max_speakers;
187
+ if (maxSpeakers !== undefined &&
188
+ (!Number.isInteger(maxSpeakers) || maxSpeakers < 1)) {
189
+ throw protocolError("invalid_event", "max_speakers must be a positive integer");
62
190
  }
63
- const maxParticipants = payload.policy?.max_participants;
64
- if (maxParticipants !== undefined &&
65
- (!Number.isInteger(maxParticipants) || maxParticipants < 1)) {
66
- throw protocolError("invalid_room", "max_participants must be a positive integer");
191
+ for (const declaration of payload.types ?? []) {
192
+ validateTypeDeclaration(declaration);
67
193
  }
68
194
  }
69
- export function validatePollCreatePayload(payload) {
70
- if (payload.poll_id.trim() === "" || payload.question.trim() === "") {
71
- throw protocolError("invalid_poll", "poll_id and question are required");
195
+ export function validateMessageCreatePayload(payload) {
196
+ if (payload.content_type.trim() === "") {
197
+ throw protocolError("invalid_event", "content_type must not be empty");
72
198
  }
73
- if (payload.options.length < 2) {
74
- throw protocolError("invalid_poll", "poll requires at least two options");
199
+ }
200
+ /** The effective set of type definitions active in a room. */
201
+ export class TypeRegistry {
202
+ types = new Map();
203
+ /**
204
+ * Materializes a registry from declarations, resolving pack imports from
205
+ * `packs`, keyed by registered pack id or external pack URI.
206
+ */
207
+ static fromDeclarations(declarations, packs = {}) {
208
+ const registry = new TypeRegistry();
209
+ for (const declaration of declarations) {
210
+ registry.apply(declaration, packs);
211
+ }
212
+ return registry;
75
213
  }
76
- const optionIds = new Set();
77
- for (const option of payload.options) {
78
- if (option.id.trim() === "" || option.label.trim() === "") {
79
- throw protocolError("invalid_poll", "option id and label are required");
214
+ /**
215
+ * Applies one declaration: an inline definition or a pack import.
216
+ * Redefining an existing type replaces it; the latest definition wins.
217
+ */
218
+ apply(declaration, packs = {}) {
219
+ if (isPackImport(declaration)) {
220
+ this.import(declaration, packs);
80
221
  }
81
- if (optionIds.has(option.id)) {
82
- throw protocolError("invalid_poll", "poll option ids must be unique");
222
+ else if (isTypeDef(declaration)) {
223
+ this.define(declaration);
224
+ }
225
+ else {
226
+ throw protocolError("invalid_event", "type declaration must be an inline definition or a pack import");
83
227
  }
84
- optionIds.add(option.id);
85
228
  }
86
- const minChoices = payload.min_choices ?? 1;
87
- const maxChoices = payload.max_choices ?? 1;
88
- if (minChoices < 1 || maxChoices < minChoices) {
89
- throw protocolError("invalid_poll", "invalid poll choice limits");
229
+ define(def) {
230
+ validateTypeDef(def);
231
+ this.types.set(def.type, def);
90
232
  }
91
- }
92
- export function validatePollVotePayload(payload, poll, nowMs) {
93
- if (poll.closes_at !== undefined && nowMs !== undefined && nowMs > poll.closes_at) {
94
- throw protocolError("poll_closed", "poll is closed");
233
+ import(declaration, packs) {
234
+ validatePackImport(declaration);
235
+ const reference = declaration.use ?? declaration.pack;
236
+ const pack = packs[reference];
237
+ if (!pack) {
238
+ throw protocolError("pack_unavailable", `pack not available: ${reference}`);
239
+ }
240
+ const available = new Set(pack.types.map((def) => def.type));
241
+ for (const name of declaration.types ?? []) {
242
+ if (!available.has(name)) {
243
+ throw protocolError("pack_unavailable", `type ${name} is not in pack ${reference}`);
244
+ }
245
+ }
246
+ const subset = declaration.types !== undefined ? new Set(declaration.types) : undefined;
247
+ for (const name of Object.keys(declaration.overrides ?? {})) {
248
+ const imported = subset ? subset.has(name) : available.has(name);
249
+ if (!imported) {
250
+ throw protocolError("invalid_event", `override target ${name} is not imported from pack ${reference}`);
251
+ }
252
+ }
253
+ for (const def of pack.types) {
254
+ if (subset && !subset.has(def.type))
255
+ continue;
256
+ const override = declaration.overrides?.[def.type];
257
+ this.define(override ? { ...def, ...override } : { ...def });
258
+ }
259
+ }
260
+ get(type) {
261
+ return this.types.get(type);
262
+ }
263
+ has(type) {
264
+ return this.types.has(type);
95
265
  }
96
- const minChoices = poll.min_choices ?? 1;
97
- const maxChoices = poll.max_choices ?? 1;
98
- const optionIds = new Set(poll.options.map((option) => option.id));
99
- const selected = new Set(payload.option_ids);
100
- if (selected.size !== payload.option_ids.length) {
101
- throw protocolError("invalid_poll_vote", "duplicate poll options");
266
+ get size() {
267
+ return this.types.size;
102
268
  }
103
- if (selected.size < minChoices || selected.size > maxChoices) {
104
- throw protocolError("invalid_poll_vote", "invalid number of options");
269
+ definitions() {
270
+ return [...this.types.values()];
105
271
  }
106
- for (const optionId of selected) {
107
- if (!optionIds.has(optionId)) {
108
- throw protocolError("invalid_poll_vote", "unknown poll option");
272
+ /** Validates a custom event payload against the type's schema and status. */
273
+ validatePayload(type, payload) {
274
+ const def = this.types.get(type);
275
+ if (!def) {
276
+ throw protocolError("type_not_defined", type);
109
277
  }
278
+ if ((def.status ?? "active") === "disabled") {
279
+ throw protocolError("type_disabled", type);
280
+ }
281
+ const validator = compileSchema(def.schema);
282
+ const result = validator.validate(payload);
283
+ if (!result.valid) {
284
+ const detail = result.errors
285
+ .slice(0, 3)
286
+ .map((error) => error.error)
287
+ .join("; ");
288
+ throw protocolError("payload_schema_violation", `${type}: ${detail}`);
289
+ }
290
+ }
291
+ }
292
+ /**
293
+ * Validates an event payload: built-in payloads are accepted as-is (use the
294
+ * typed validators for them); custom payloads must satisfy the registry.
295
+ */
296
+ export function validateEventAgainstRegistry(type, payload, registry) {
297
+ if (isBuiltinEventType(type))
298
+ return;
299
+ registry.validatePayload(type, payload);
300
+ }
301
+ function compileSchema(schema) {
302
+ try {
303
+ return new Validator(schema, "2020-12", false);
304
+ }
305
+ catch (error) {
306
+ throw protocolError("invalid_event", `invalid type schema: ${error}`);
307
+ }
308
+ }
309
+ /**
310
+ * Verifies a `<algorithm>:<base64url-digest>` content digest over raw bytes.
311
+ * Supports `sha256` and `sha3-256`.
312
+ */
313
+ export function verifyPackDigest(bytes, digest) {
314
+ const separator = digest.indexOf(":");
315
+ if (separator < 0) {
316
+ throw protocolError("pack_unavailable", `invalid digest format: ${digest}`);
317
+ }
318
+ const algorithm = digest.slice(0, separator);
319
+ const expected = digest.slice(separator + 1);
320
+ if (algorithm !== "sha256" && algorithm !== "sha3-256") {
321
+ throw protocolError("pack_unavailable", `unsupported digest algorithm: ${algorithm}`);
322
+ }
323
+ const actual = createHash(algorithm)
324
+ .update(bytes)
325
+ .digest("base64url");
326
+ if (actual !== expected) {
327
+ throw protocolError("pack_unavailable", "pack digest mismatch");
110
328
  }
111
329
  }
112
330
  export function serverRecordHashPayload(roomId, seq, preHash, envelopeHash, receivedAt) {
@@ -162,107 +380,76 @@ export function verifyServerRecordChain(records) {
162
380
  export function archiveEventsDigest(records) {
163
381
  return hashCanonicalJson(records);
164
382
  }
165
- export function canSubmitEvent(type, context) {
166
- if (type === eventType.ROOM_CREATE)
167
- return true;
168
- if (type === eventType.ROOM_JOIN)
169
- return Boolean(context.joinRequestApproved);
170
- if (context.isCreator)
171
- return isKnownEventType(type);
172
- switch (context.role) {
173
- case "moderator":
174
- return moderatorCanSubmit(type, context.moderatorAuthorized ?? false);
175
- case "expert":
176
- return speakerCanSubmit(type, context.expertPolicyAllowed ?? false);
177
- case "participant":
178
- return speakerCanSubmit(type, context.participantPolicyAllowed ?? false);
179
- case "observer":
180
- return observerCanSubmit(type, context);
181
- default:
182
- return false;
383
+ /** Default sender roles for each kind. The creator passes every role check. */
384
+ export function defaultKindRoles(kind) {
385
+ switch (kind) {
386
+ case "message":
387
+ return ["moderator", "speaker"];
388
+ case "signal":
389
+ return ["moderator", "speaker", "observer"];
390
+ case "control":
391
+ return ["moderator"];
183
392
  }
184
393
  }
185
- export function canWriteInState(type, state, options = {}) {
394
+ /**
395
+ * Role check for one event type, using kind defaults and per-type overrides
396
+ * from the room's type registry. State checks are separate.
397
+ */
398
+ export function canSubmitEvent(type, context, registry = new TypeRegistry()) {
399
+ switch (type) {
400
+ case eventType.ROOM_CREATE:
401
+ return true;
402
+ case eventType.ROOM_JOIN:
403
+ return Boolean(context.joinRequestApproved);
404
+ case eventType.ROOM_LEAVE:
405
+ return Boolean(context.isCreator) || context.role !== undefined;
406
+ case eventType.ROOM_JOIN_REVIEW:
407
+ case eventType.ROOM_MEMBER_ROLE_UPDATE:
408
+ case eventType.ROOM_CLOSE:
409
+ case eventType.ROOM_CANCEL:
410
+ case eventType.TYPE_DEFINE:
411
+ return Boolean(context.isCreator) || context.role === "moderator";
412
+ case eventType.MESSAGE_CREATE:
413
+ return (Boolean(context.isCreator) ||
414
+ context.role === "moderator" ||
415
+ context.role === "speaker");
416
+ default: {
417
+ const def = registry.get(type);
418
+ if (!def || (def.status ?? "active") === "disabled")
419
+ return false;
420
+ if (context.isCreator)
421
+ return true;
422
+ if (context.role === undefined)
423
+ return false;
424
+ const roles = def.roles ?? defaultKindRoles(def.kind);
425
+ return roles.includes(context.role);
426
+ }
427
+ }
428
+ }
429
+ export function canWriteInState(type, state) {
186
430
  switch (state) {
187
431
  case "scheduled":
188
- return eventTypeIn(type, [
189
- eventType.ROOM_JOIN,
190
- eventType.ROOM_JOIN_REVIEW,
191
- eventType.ROOM_CANCEL,
192
- ]);
432
+ return (type === eventType.ROOM_JOIN ||
433
+ type === eventType.ROOM_JOIN_REVIEW ||
434
+ type === eventType.ROOM_MEMBER_ROLE_UPDATE ||
435
+ type === eventType.ROOM_LEAVE ||
436
+ type === eventType.TYPE_DEFINE ||
437
+ type === eventType.ROOM_CANCEL);
193
438
  case "active":
194
439
  return type !== eventType.ROOM_CREATE && type !== eventType.ROOM_CANCEL;
195
440
  case "ended":
196
- return (Boolean(options.postEndReactionAllowed) &&
197
- type === eventType.REACTION_CREATE);
198
441
  case "cancelled":
199
442
  return false;
200
443
  }
201
444
  }
202
- export function canAcceptRoomWrite(type, state, permission, options = {}) {
203
- return (canSubmitEvent(type, permission) && canWriteInState(type, state, options));
445
+ export function canAcceptRoomWrite(type, state, permission, registry = new TypeRegistry()) {
446
+ return canSubmitEvent(type, permission, registry) && canWriteInState(type, state);
204
447
  }
205
- export function validateRoomWrite(type, state, permission, options = {}) {
206
- if (!canAcceptRoomWrite(type, state, permission, options)) {
448
+ export function validateRoomWrite(type, state, permission, registry = new TypeRegistry()) {
449
+ if (!canAcceptRoomWrite(type, state, permission, registry)) {
207
450
  throw protocolError("permission_denied", "actor lacks permission or state is not writable");
208
451
  }
209
452
  }
210
- function moderatorCanSubmit(type, moderatorAuthorized) {
211
- return (eventTypeIn(type, [
212
- eventType.ROOM_JOIN_REVIEW,
213
- eventType.ROOM_CLOSE,
214
- eventType.MESSAGE_CREATE,
215
- eventType.SOURCE_ADD,
216
- eventType.TURN_UPDATE,
217
- eventType.QUESTION_CREATE,
218
- eventType.ROOM_STEER,
219
- eventType.MAP_UPDATE,
220
- eventType.ARTIFACT_CREATE,
221
- eventType.MESSAGE_PROPOSAL_CREATE,
222
- eventType.MESSAGE_POLL_CREATE,
223
- eventType.MESSAGE_POLL_VOTE,
224
- eventType.MESSAGE_RESOLUTION_CREATE,
225
- eventType.REACTION_CREATE,
226
- eventType.ROOM_LEAVE,
227
- ]) ||
228
- (moderatorAuthorized &&
229
- eventTypeIn(type, [
230
- eventType.ROOM_MEMBER_ROLE_UPDATE,
231
- eventType.ROOM_CANCEL,
232
- ])));
233
- }
234
- function speakerCanSubmit(type, policyAllowed) {
235
- return (eventTypeIn(type, [
236
- eventType.MESSAGE_CREATE,
237
- eventType.SOURCE_ADD,
238
- eventType.ROOM_STEER,
239
- eventType.MESSAGE_PROPOSAL_CREATE,
240
- eventType.MESSAGE_POLL_CREATE,
241
- eventType.MESSAGE_POLL_VOTE,
242
- eventType.REACTION_CREATE,
243
- eventType.ROOM_LEAVE,
244
- ]) ||
245
- (policyAllowed &&
246
- eventTypeIn(type, [
247
- eventType.QUESTION_CREATE,
248
- eventType.MAP_UPDATE,
249
- eventType.ARTIFACT_CREATE,
250
- eventType.MESSAGE_RESOLUTION_CREATE,
251
- ])));
252
- }
253
- function observerCanSubmit(type, context) {
254
- return (eventTypeIn(type, [eventType.REACTION_CREATE, eventType.ROOM_LEAVE]) ||
255
- (Boolean(context.observerSteeringAllowed) &&
256
- type === eventType.ROOM_STEER) ||
257
- (Boolean(context.observerPollVoteAllowed) &&
258
- type === eventType.MESSAGE_POLL_VOTE));
259
- }
260
- function isKnownEventType(type) {
261
- return eventTypeIn(type, Object.values(eventType));
262
- }
263
- function eventTypeIn(type, values) {
264
- return values.includes(type);
265
- }
266
453
  function hashCanonicalJson(value) {
267
454
  const canonical = canonicalize(value);
268
455
  if (canonical === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"discourse.js","sourceRoot":"","sources":["../src/discourse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discourse.js","sourceRoot":"","sources":["../src/discourse.ts"],"names":[],"mappings":"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"}
package/dist/profile.d.ts CHANGED
@@ -26,6 +26,7 @@ export interface ProfileUpdatePayload {
26
26
  export interface AgentProfile {
27
27
  id: AgentId;
28
28
  name: string;
29
+ username?: string;
29
30
  description?: string;
30
31
  avatar_url?: string;
31
32
  provider?: string;
@@ -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,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,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;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,CAuBN;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,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;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,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,CAuBN;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACvC,YAAY,CAiBd"}
package/dist/profile.js CHANGED
@@ -24,6 +24,7 @@ export function materializeProfile(envelope) {
24
24
  return {
25
25
  id: payload.id,
26
26
  name: payload.name,
27
+ username: undefined,
27
28
  description: payload.description,
28
29
  avatar_url: payload.avatar_url,
29
30
  provider: payload.provider,
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAIL,WAAW,EACX,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AACpD,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAuE/C,MAAM,UAAU,kBAAkB,CAChC,KAAc,EACd,SAAiB,EACjB,KAAa,EACb,OAA6B;IAE7B,OAAO,WAAW,CAChB,gBAAgB,EAChB,cAAc,EACd,KAAK,EACL,SAAS,EACT,KAAK,EACL,OAAO,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,QAAwC;IAExC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzB,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QACjD,MAAM,aAAa,CACjB,wBAAwB,EACxB,YAAY,gBAAgB,SAAS,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAC/D,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAC3C,MAAM,aAAa,CACjB,oBAAoB,EACpB,YAAY,cAAc,SAAS,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CACzD,CAAC;IACJ,CAAC;IACD,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QAC1B,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAClD,CAAC;QACD,MAAM,aAAa,CACjB,eAAe,EACf,4CAA4C,CAC7C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAAwC;IAExC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;IACvC,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;QACxC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,EAAE;QAClD,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;QAC1B,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;QACrC,QAAQ,EAAE,QAAQ,CAAC,IAAI;KACxB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAIL,WAAW,EACX,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AACpD,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAwE/C,MAAM,UAAU,kBAAkB,CAChC,KAAc,EACd,SAAiB,EACjB,KAAa,EACb,OAA6B;IAE7B,OAAO,WAAW,CAChB,gBAAgB,EAChB,cAAc,EACd,KAAK,EACL,SAAS,EACT,KAAK,EACL,OAAO,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,QAAwC;IAExC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzB,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QACjD,MAAM,aAAa,CACjB,wBAAwB,EACxB,YAAY,gBAAgB,SAAS,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAC/D,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAC3C,MAAM,aAAa,CACjB,oBAAoB,EACpB,YAAY,cAAc,SAAS,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CACzD,CAAC;IACJ,CAAC;IACD,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QAC1B,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAClD,CAAC;QACD,MAAM,aAAa,CACjB,eAAe,EACf,4CAA4C,CAC7C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAAwC;IAExC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;IACvC,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;QACxC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,EAAE;QAClD,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;QAC1B,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;QACrC,QAAQ,EAAE,QAAQ,CAAC,IAAI;KACxB,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-protocols",
3
- "version": "0.2.2",
3
+ "version": "0.3.0",
4
4
  "description": "TypeScript SDK for Agent Identity, Agent Profile, and Agent Discourse protocols",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -40,6 +40,7 @@
40
40
  "test": "node --import tsx --test src/*.test.ts"
41
41
  },
42
42
  "dependencies": {
43
+ "@cfworker/json-schema": "^4.1.1",
43
44
  "canonicalize": "^3.0.0",
44
45
  "tweetnacl": "^1.0.3"
45
46
  },