@openvtc/trust-tasks 0.17.6 → 0.17.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +114 -0
  2. package/dist/_shared/components.d.ts +4 -0
  3. package/dist/_shared/components.d.ts.map +1 -1
  4. package/dist/index.d.ts +6 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +6 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/rooms/_shared/0.1/room.d.ts +1 -1
  9. package/dist/rooms/_shared/0.1/room.d.ts.map +1 -1
  10. package/dist/rooms/create/0.1/payload.d.ts +42 -2
  11. package/dist/rooms/create/0.1/payload.d.ts.map +1 -1
  12. package/dist/rooms/create/0.1/payload.js +24 -0
  13. package/dist/rooms/create/0.1/payload.js.map +1 -1
  14. package/dist/rooms/keys/chain/0.1/payload.d.ts +382 -0
  15. package/dist/rooms/keys/chain/0.1/payload.d.ts.map +1 -0
  16. package/dist/rooms/keys/chain/0.1/payload.js +213 -0
  17. package/dist/rooms/keys/chain/0.1/payload.js.map +1 -0
  18. package/dist/rooms/keys/list/0.1/payload.d.ts +314 -0
  19. package/dist/rooms/keys/list/0.1/payload.d.ts.map +1 -0
  20. package/dist/rooms/keys/list/0.1/payload.js +175 -0
  21. package/dist/rooms/keys/list/0.1/payload.js.map +1 -0
  22. package/dist/rooms/keys/seal/0.1/payload.d.ts +352 -0
  23. package/dist/rooms/keys/seal/0.1/payload.d.ts.map +1 -0
  24. package/dist/rooms/keys/seal/0.1/payload.js +199 -0
  25. package/dist/rooms/keys/seal/0.1/payload.js.map +1 -0
  26. package/dist/rooms/owner/invite/0.1/payload.d.ts +291 -0
  27. package/dist/rooms/owner/invite/0.1/payload.d.ts.map +1 -0
  28. package/dist/rooms/owner/invite/0.1/payload.js +158 -0
  29. package/dist/rooms/owner/invite/0.1/payload.js.map +1 -0
  30. package/dist/rooms/owner/issue-authority/0.1/payload.d.ts +315 -0
  31. package/dist/rooms/owner/issue-authority/0.1/payload.d.ts.map +1 -0
  32. package/dist/rooms/owner/issue-authority/0.1/payload.js +173 -0
  33. package/dist/rooms/owner/issue-authority/0.1/payload.js.map +1 -0
  34. package/dist/rooms/owner/issue-membership/0.1/payload.d.ts +291 -0
  35. package/dist/rooms/owner/issue-membership/0.1/payload.d.ts.map +1 -0
  36. package/dist/rooms/owner/issue-membership/0.1/payload.js +158 -0
  37. package/dist/rooms/owner/issue-membership/0.1/payload.js.map +1 -0
  38. package/package.json +1 -1
  39. package/src/_shared/components.ts +4 -0
  40. package/src/index.ts +6 -0
  41. package/src/rooms/_shared/0.1/room.ts +1 -1
  42. package/src/rooms/create/0.1/payload.ts +30 -2
  43. package/src/rooms/keys/chain/0.1/payload.ts +262 -0
  44. package/src/rooms/keys/list/0.1/payload.ts +222 -0
  45. package/src/rooms/keys/seal/0.1/payload.ts +246 -0
  46. package/src/rooms/owner/invite/0.1/payload.ts +212 -0
  47. package/src/rooms/owner/issue-authority/0.1/payload.ts +233 -0
  48. package/src/rooms/owner/issue-membership/0.1/payload.ts +212 -0
@@ -0,0 +1,291 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/rooms/owner/issue-membership/0.1/payload.schema.json
4
+ */
5
+ import type { Ext } from "../../../../_shared/components.js";
6
+ export interface RoomsOwnerIssueMembershipPayload {
7
+ /**
8
+ * The room whose identity issues this credential. The recipient MUST hold a signing key for it — it is signing AS the room, not as itself.
9
+ */
10
+ roomId: string;
11
+ /**
12
+ * Which held key signs. Named explicitly rather than looked up from `roomId`, because nothing maps a DID to a key it was minted with and inventing that mapping would add a lifecycle to get wrong. A key that is not the room's produces a credential that fails to verify against the room's DID document — loud, and at the first use rather than later.
13
+ */
14
+ signingKeyId: string;
15
+ /**
16
+ * Ecosystem-defined extension members per SPEC.md §4.5.1.
17
+ */
18
+ ext?: Ext;
19
+ /**
20
+ * The member this admits. Membership is an explicit set of parties, never a role — a room that admitted a role would be a room whose membership its host could compute.
21
+ */
22
+ subject: string;
23
+ /**
24
+ * When membership lapses. Absent means it does not, and removal is then an epoch advance rather than an expiry — see `rooms/epoch/mint`.
25
+ */
26
+ validUntil?: string;
27
+ }
28
+ /**
29
+ * Success response to rooms/owner/issue-membership. Type https://trusttasks.org/spec/rooms/owner/issue-membership/0.1#response. The signed VMC naming the member.
30
+ */
31
+ export interface RoomsOwnerIssueMembershipResponsePayload {
32
+ /**
33
+ * The signed Verifiable Membership Credential, serialised, for delivery to the member.
34
+ */
35
+ credential: string;
36
+ /**
37
+ * Its `id`, which is how a re-send is told from a renewal.
38
+ */
39
+ credentialId: string;
40
+ ext?: Ext;
41
+ }
42
+ /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
43
+ export type { Ext };
44
+ /** Trust Task type URI. */
45
+ export declare const TYPE_URI: "https://trusttasks.org/spec/rooms/owner/issue-membership/0.1";
46
+ /** Stable alias for this specification's request payload shape. */
47
+ export type Payload = RoomsOwnerIssueMembershipPayload;
48
+ /** Trust Task response type URI (request type URI + "#response"). */
49
+ export declare const RESPONSE_TYPE_URI: "https://trusttasks.org/spec/rooms/owner/issue-membership/0.1#response";
50
+ /** Stable alias for this specification's success-response payload shape. */
51
+ export type Response = RoomsOwnerIssueMembershipResponsePayload;
52
+ /**
53
+ * This specification's payload schema, as a value.
54
+ *
55
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
56
+ * rather than only as a `.json` file because TypeScript types are erased
57
+ * at runtime: without a schema a consumer has nothing to validate, and
58
+ * every REQUIRED payload member is optional in practice. Cross-file
59
+ * `$ref`s are already inlined, so it needs no resolver.
60
+ */
61
+ export declare const PAYLOAD_SCHEMA: {
62
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
63
+ readonly $id: "https://trusttasks.org/spec/rooms/owner/issue-membership/0.1";
64
+ readonly title: "Rooms Owner Issue Membership — payload";
65
+ readonly type: "object";
66
+ readonly additionalProperties: false;
67
+ readonly required: readonly ["roomId", "signingKeyId", "subject"];
68
+ readonly properties: {
69
+ readonly roomId: {
70
+ readonly type: "string";
71
+ readonly description: "The room whose identity issues this credential. The recipient MUST hold a signing key for it — it is signing AS the room, not as itself.";
72
+ };
73
+ readonly signingKeyId: {
74
+ readonly type: "string";
75
+ readonly maxLength: 256;
76
+ readonly description: "Which held key signs. Named explicitly rather than looked up from `roomId`, because nothing maps a DID to a key it was minted with and inventing that mapping would add a lifecycle to get wrong. A key that is not the room's produces a credential that fails to verify against the room's DID document — loud, and at the first use rather than later.";
77
+ };
78
+ readonly ext: {
79
+ readonly $ref: "#/$defs/Ext";
80
+ readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1.";
81
+ };
82
+ readonly subject: {
83
+ readonly type: "string";
84
+ readonly description: "The member this admits. Membership is an explicit set of parties, never a role — a room that admitted a role would be a room whose membership its host could compute.";
85
+ };
86
+ readonly validUntil: {
87
+ readonly type: "string";
88
+ readonly format: "date-time";
89
+ readonly description: "When membership lapses. Absent means it does not, and removal is then an epoch advance rather than an expiry — see `rooms/epoch/mint`.";
90
+ };
91
+ };
92
+ readonly $defs: {
93
+ readonly Response: {
94
+ readonly $anchor: "response";
95
+ readonly title: "Rooms Owner Issue Membership — response payload";
96
+ readonly description: "Success response to rooms/owner/issue-membership. Type https://trusttasks.org/spec/rooms/owner/issue-membership/0.1#response. The signed VMC naming the member.";
97
+ readonly type: "object";
98
+ readonly additionalProperties: false;
99
+ readonly required: readonly ["credential", "credentialId"];
100
+ readonly properties: {
101
+ readonly credential: {
102
+ readonly type: "string";
103
+ readonly description: "The signed Verifiable Membership Credential, serialised, for delivery to the member.";
104
+ };
105
+ readonly credentialId: {
106
+ readonly type: "string";
107
+ readonly description: "Its `id`, which is how a re-send is told from a renewal.";
108
+ };
109
+ readonly ext: {
110
+ readonly $ref: "#/$defs/Ext";
111
+ };
112
+ };
113
+ };
114
+ readonly Ext: {
115
+ readonly title: "Ext";
116
+ readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
117
+ readonly type: "object";
118
+ readonly minProperties: 1;
119
+ readonly additionalProperties: true;
120
+ readonly propertyNames: {
121
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
122
+ };
123
+ };
124
+ };
125
+ };
126
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
127
+ export declare const RESPONSE_PAYLOAD_SCHEMA: {
128
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
129
+ readonly $ref: "#/$defs/Response";
130
+ readonly $defs: {
131
+ readonly Response: {
132
+ readonly $anchor: "response";
133
+ readonly title: "Rooms Owner Issue Membership — response payload";
134
+ readonly description: "Success response to rooms/owner/issue-membership. Type https://trusttasks.org/spec/rooms/owner/issue-membership/0.1#response. The signed VMC naming the member.";
135
+ readonly type: "object";
136
+ readonly additionalProperties: false;
137
+ readonly required: readonly ["credential", "credentialId"];
138
+ readonly properties: {
139
+ readonly credential: {
140
+ readonly type: "string";
141
+ readonly description: "The signed Verifiable Membership Credential, serialised, for delivery to the member.";
142
+ };
143
+ readonly credentialId: {
144
+ readonly type: "string";
145
+ readonly description: "Its `id`, which is how a re-send is told from a renewal.";
146
+ };
147
+ readonly ext: {
148
+ readonly $ref: "#/$defs/Ext";
149
+ };
150
+ };
151
+ };
152
+ readonly Ext: {
153
+ readonly title: "Ext";
154
+ readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
155
+ readonly type: "object";
156
+ readonly minProperties: 1;
157
+ readonly additionalProperties: true;
158
+ readonly propertyNames: {
159
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
160
+ };
161
+ };
162
+ };
163
+ };
164
+ /**
165
+ * SPEC.md §7.2 policy for the request variant, from this specification's
166
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
167
+ * per-specification and cannot be derived from the document alone, and
168
+ * item 2 needs the schema this carries.
169
+ */
170
+ export declare const SPEC: {
171
+ readonly typeUri: "https://trusttasks.org/spec/rooms/owner/issue-membership/0.1";
172
+ readonly isBearer: false;
173
+ readonly isProofRequired: true;
174
+ readonly isRecipientRequired: true;
175
+ readonly isIssuedAtRequired: true;
176
+ readonly payloadSchema: {
177
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
178
+ readonly $id: "https://trusttasks.org/spec/rooms/owner/issue-membership/0.1";
179
+ readonly title: "Rooms Owner Issue Membership — payload";
180
+ readonly type: "object";
181
+ readonly additionalProperties: false;
182
+ readonly required: readonly ["roomId", "signingKeyId", "subject"];
183
+ readonly properties: {
184
+ readonly roomId: {
185
+ readonly type: "string";
186
+ readonly description: "The room whose identity issues this credential. The recipient MUST hold a signing key for it — it is signing AS the room, not as itself.";
187
+ };
188
+ readonly signingKeyId: {
189
+ readonly type: "string";
190
+ readonly maxLength: 256;
191
+ readonly description: "Which held key signs. Named explicitly rather than looked up from `roomId`, because nothing maps a DID to a key it was minted with and inventing that mapping would add a lifecycle to get wrong. A key that is not the room's produces a credential that fails to verify against the room's DID document — loud, and at the first use rather than later.";
192
+ };
193
+ readonly ext: {
194
+ readonly $ref: "#/$defs/Ext";
195
+ readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1.";
196
+ };
197
+ readonly subject: {
198
+ readonly type: "string";
199
+ readonly description: "The member this admits. Membership is an explicit set of parties, never a role — a room that admitted a role would be a room whose membership its host could compute.";
200
+ };
201
+ readonly validUntil: {
202
+ readonly type: "string";
203
+ readonly format: "date-time";
204
+ readonly description: "When membership lapses. Absent means it does not, and removal is then an epoch advance rather than an expiry — see `rooms/epoch/mint`.";
205
+ };
206
+ };
207
+ readonly $defs: {
208
+ readonly Response: {
209
+ readonly $anchor: "response";
210
+ readonly title: "Rooms Owner Issue Membership — response payload";
211
+ readonly description: "Success response to rooms/owner/issue-membership. Type https://trusttasks.org/spec/rooms/owner/issue-membership/0.1#response. The signed VMC naming the member.";
212
+ readonly type: "object";
213
+ readonly additionalProperties: false;
214
+ readonly required: readonly ["credential", "credentialId"];
215
+ readonly properties: {
216
+ readonly credential: {
217
+ readonly type: "string";
218
+ readonly description: "The signed Verifiable Membership Credential, serialised, for delivery to the member.";
219
+ };
220
+ readonly credentialId: {
221
+ readonly type: "string";
222
+ readonly description: "Its `id`, which is how a re-send is told from a renewal.";
223
+ };
224
+ readonly ext: {
225
+ readonly $ref: "#/$defs/Ext";
226
+ };
227
+ };
228
+ };
229
+ readonly Ext: {
230
+ readonly title: "Ext";
231
+ readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
232
+ readonly type: "object";
233
+ readonly minProperties: 1;
234
+ readonly additionalProperties: true;
235
+ readonly propertyNames: {
236
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
237
+ };
238
+ };
239
+ };
240
+ };
241
+ };
242
+ /**
243
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
244
+ * tracks the *issuer* party's requirement because a response swaps the
245
+ * parties (§7.3 item 5).
246
+ */
247
+ export declare const RESPONSE_SPEC: {
248
+ readonly typeUri: "https://trusttasks.org/spec/rooms/owner/issue-membership/0.1#response";
249
+ readonly isBearer: false;
250
+ readonly isProofRequired: true;
251
+ readonly isRecipientRequired: true;
252
+ readonly isIssuedAtRequired: true;
253
+ readonly payloadSchema: {
254
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
255
+ readonly $ref: "#/$defs/Response";
256
+ readonly $defs: {
257
+ readonly Response: {
258
+ readonly $anchor: "response";
259
+ readonly title: "Rooms Owner Issue Membership — response payload";
260
+ readonly description: "Success response to rooms/owner/issue-membership. Type https://trusttasks.org/spec/rooms/owner/issue-membership/0.1#response. The signed VMC naming the member.";
261
+ readonly type: "object";
262
+ readonly additionalProperties: false;
263
+ readonly required: readonly ["credential", "credentialId"];
264
+ readonly properties: {
265
+ readonly credential: {
266
+ readonly type: "string";
267
+ readonly description: "The signed Verifiable Membership Credential, serialised, for delivery to the member.";
268
+ };
269
+ readonly credentialId: {
270
+ readonly type: "string";
271
+ readonly description: "Its `id`, which is how a re-send is told from a renewal.";
272
+ };
273
+ readonly ext: {
274
+ readonly $ref: "#/$defs/Ext";
275
+ };
276
+ };
277
+ };
278
+ readonly Ext: {
279
+ readonly title: "Ext";
280
+ readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
281
+ readonly type: "object";
282
+ readonly minProperties: 1;
283
+ readonly additionalProperties: true;
284
+ readonly propertyNames: {
285
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
286
+ };
287
+ };
288
+ };
289
+ };
290
+ };
291
+ //# sourceMappingURL=payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../src/rooms/owner/issue-membership/0.1/payload.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mCAAmC,CAAC;AAG7D,MAAM,WAAW,gCAAgC;IAC/C;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC;IACV;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AACD;;GAEG;AACH,MAAM,WAAW,wCAAwC;IACvD;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AAED,kHAAkH;AAClH,YAAY,EAAE,GAAG,EAAE,CAAC;AAEpB,2BAA2B;AAC3B,eAAO,MAAM,QAAQ,EAAG,8DAAuE,CAAC;AAEhG,mEAAmE;AACnE,MAAM,MAAM,OAAO,GAAG,gCAAgC,CAAC;AAEvD,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,EAAG,uEAAgF,CAAC;AAElH,4EAA4E;AAC5E,MAAM,MAAM,QAAQ,GAAG,wCAAwC,CAAC;AAEhE;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuEjB,CAAC;AAEX,mEAAmE;AACnE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuC1B,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOP,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOhB,CAAC"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/rooms/owner/issue-membership/0.1/payload.schema.json
4
+ */
5
+ /** Trust Task type URI. */
6
+ export const TYPE_URI = "https://trusttasks.org/spec/rooms/owner/issue-membership/0.1";
7
+ /** Trust Task response type URI (request type URI + "#response"). */
8
+ export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/rooms/owner/issue-membership/0.1#response";
9
+ /**
10
+ * This specification's payload schema, as a value.
11
+ *
12
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
13
+ * rather than only as a `.json` file because TypeScript types are erased
14
+ * at runtime: without a schema a consumer has nothing to validate, and
15
+ * every REQUIRED payload member is optional in practice. Cross-file
16
+ * `$ref`s are already inlined, so it needs no resolver.
17
+ */
18
+ export const PAYLOAD_SCHEMA = {
19
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
20
+ "$id": "https://trusttasks.org/spec/rooms/owner/issue-membership/0.1",
21
+ "title": "Rooms Owner Issue Membership — payload",
22
+ "type": "object",
23
+ "additionalProperties": false,
24
+ "required": [
25
+ "roomId",
26
+ "signingKeyId",
27
+ "subject"
28
+ ],
29
+ "properties": {
30
+ "roomId": {
31
+ "type": "string",
32
+ "description": "The room whose identity issues this credential. The recipient MUST hold a signing key for it — it is signing AS the room, not as itself."
33
+ },
34
+ "signingKeyId": {
35
+ "type": "string",
36
+ "maxLength": 256,
37
+ "description": "Which held key signs. Named explicitly rather than looked up from `roomId`, because nothing maps a DID to a key it was minted with and inventing that mapping would add a lifecycle to get wrong. A key that is not the room's produces a credential that fails to verify against the room's DID document — loud, and at the first use rather than later."
38
+ },
39
+ "ext": {
40
+ "$ref": "#/$defs/Ext",
41
+ "description": "Ecosystem-defined extension members per SPEC.md §4.5.1."
42
+ },
43
+ "subject": {
44
+ "type": "string",
45
+ "description": "The member this admits. Membership is an explicit set of parties, never a role — a room that admitted a role would be a room whose membership its host could compute."
46
+ },
47
+ "validUntil": {
48
+ "type": "string",
49
+ "format": "date-time",
50
+ "description": "When membership lapses. Absent means it does not, and removal is then an epoch advance rather than an expiry — see `rooms/epoch/mint`."
51
+ }
52
+ },
53
+ "$defs": {
54
+ "Response": {
55
+ "$anchor": "response",
56
+ "title": "Rooms Owner Issue Membership — response payload",
57
+ "description": "Success response to rooms/owner/issue-membership. Type https://trusttasks.org/spec/rooms/owner/issue-membership/0.1#response. The signed VMC naming the member.",
58
+ "type": "object",
59
+ "additionalProperties": false,
60
+ "required": [
61
+ "credential",
62
+ "credentialId"
63
+ ],
64
+ "properties": {
65
+ "credential": {
66
+ "type": "string",
67
+ "description": "The signed Verifiable Membership Credential, serialised, for delivery to the member."
68
+ },
69
+ "credentialId": {
70
+ "type": "string",
71
+ "description": "Its `id`, which is how a re-send is told from a renewal."
72
+ },
73
+ "ext": {
74
+ "$ref": "#/$defs/Ext"
75
+ }
76
+ }
77
+ },
78
+ "Ext": {
79
+ "title": "Ext",
80
+ "description": "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.",
81
+ "type": "object",
82
+ "minProperties": 1,
83
+ "additionalProperties": true,
84
+ "propertyNames": {
85
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
86
+ }
87
+ }
88
+ }
89
+ };
90
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
91
+ export const RESPONSE_PAYLOAD_SCHEMA = {
92
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
93
+ "$ref": "#/$defs/Response",
94
+ "$defs": {
95
+ "Response": {
96
+ "$anchor": "response",
97
+ "title": "Rooms Owner Issue Membership — response payload",
98
+ "description": "Success response to rooms/owner/issue-membership. Type https://trusttasks.org/spec/rooms/owner/issue-membership/0.1#response. The signed VMC naming the member.",
99
+ "type": "object",
100
+ "additionalProperties": false,
101
+ "required": [
102
+ "credential",
103
+ "credentialId"
104
+ ],
105
+ "properties": {
106
+ "credential": {
107
+ "type": "string",
108
+ "description": "The signed Verifiable Membership Credential, serialised, for delivery to the member."
109
+ },
110
+ "credentialId": {
111
+ "type": "string",
112
+ "description": "Its `id`, which is how a re-send is told from a renewal."
113
+ },
114
+ "ext": {
115
+ "$ref": "#/$defs/Ext"
116
+ }
117
+ }
118
+ },
119
+ "Ext": {
120
+ "title": "Ext",
121
+ "description": "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.",
122
+ "type": "object",
123
+ "minProperties": 1,
124
+ "additionalProperties": true,
125
+ "propertyNames": {
126
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
127
+ }
128
+ }
129
+ }
130
+ };
131
+ /**
132
+ * SPEC.md §7.2 policy for the request variant, from this specification's
133
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
134
+ * per-specification and cannot be derived from the document alone, and
135
+ * item 2 needs the schema this carries.
136
+ */
137
+ export const SPEC = {
138
+ typeUri: TYPE_URI,
139
+ isBearer: false,
140
+ isProofRequired: true,
141
+ isRecipientRequired: true,
142
+ isIssuedAtRequired: true,
143
+ payloadSchema: PAYLOAD_SCHEMA,
144
+ };
145
+ /**
146
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
147
+ * tracks the *issuer* party's requirement because a response swaps the
148
+ * parties (§7.3 item 5).
149
+ */
150
+ export const RESPONSE_SPEC = {
151
+ typeUri: RESPONSE_TYPE_URI,
152
+ isBearer: false,
153
+ isProofRequired: true,
154
+ isRecipientRequired: true,
155
+ isIssuedAtRequired: true,
156
+ payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
157
+ };
158
+ //# sourceMappingURL=payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload.js","sourceRoot":"","sources":["../../../../../src/rooms/owner/issue-membership/0.1/payload.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openvtc/trust-tasks",
3
- "version": "0.17.6",
3
+ "version": "0.17.7",
4
4
  "description": "Generated TypeScript bindings for the Trust Tasks framework registry.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -267,6 +267,10 @@ export type RecordType = "authorization" | "recognition";
267
267
  * Absent means *not decided by the holder* and resolves from the claim-type registry, which defaults `payment.*` and `gov.*` to `stepUp`.
268
268
  */
269
269
  export type ReleaseRequirement = "consent" | "stepUp";
270
+ /**
271
+ * Whether a room keeps its history readable across a membership change, fixed at creation and immutable thereafter — like `Visibility`, and for the same reason: the rungs of an epoch key chain either exist for an epoch or they do not, and no later change of mind can seal key material that was never sealed or unseal what was already severed. `chained`: each advance produces an `EpochLink`, so every member reads the room's whole retained history however long they have been in it — what a **library** wants, at the cost of post-compromise security for record content, since a compromised current key then reaches every retained epoch. `fromJoin`: no rungs are produced, so a member reads only from the epoch their group state is at — what a **stream** wants, and what a room under a strict forward-secrecy obligation wants, at the cost that a joining member finds an empty-looking room and nobody can reread a record once their group state has moved past the epoch it was sealed under. Absent means `chained`; see the prose on why the absent case is the readable one.
272
+ */
273
+ export type RetentionPolicy = "chained" | "fromJoin";
270
274
  /**
271
275
  * How a consent prompt reaches the approver: `wake` pushes to the approver's device for a DID-signed decision; `bridge-relay` renders it through an enrolled bridge (e.g. a numbered card in the operator's messaging app) for a bridge-attested decision.
272
276
  */
package/src/index.ts CHANGED
@@ -233,12 +233,18 @@ export * as RoomShared_v0_1 from "./rooms/_shared/0.1/room.js";
233
233
  export * as RoomsCreate_v0_1 from "./rooms/create/0.1/payload.js";
234
234
  export * as RoomsEpochChain_v0_1 from "./rooms/epoch/chain/0.1/payload.js";
235
235
  export * as RoomsEpochMint_v0_1 from "./rooms/epoch/mint/0.1/payload.js";
236
+ export * as RoomsKeysChain_v0_1 from "./rooms/keys/chain/0.1/payload.js";
236
237
  export * as RoomsKeysCommit_v0_1 from "./rooms/keys/commit/0.1/payload.js";
237
238
  export * as RoomsKeysKeyPackage_v0_1 from "./rooms/keys/key-package/0.1/payload.js";
239
+ export * as RoomsKeysList_v0_1 from "./rooms/keys/list/0.1/payload.js";
238
240
  export * as RoomsKeysOpen_v0_1 from "./rooms/keys/open/0.1/payload.js";
239
241
  export * as RoomsKeysPresent_v0_1 from "./rooms/keys/present/0.1/payload.js";
242
+ export * as RoomsKeysSeal_v0_1 from "./rooms/keys/seal/0.1/payload.js";
240
243
  export * as RoomsKeysWelcome_v0_1 from "./rooms/keys/welcome/0.1/payload.js";
241
244
  export * as RoomsOwnerClaim_v0_1 from "./rooms/owner/claim/0.1/payload.js";
245
+ export * as RoomsOwnerInvite_v0_1 from "./rooms/owner/invite/0.1/payload.js";
246
+ export * as RoomsOwnerIssueAuthority_v0_1 from "./rooms/owner/issue-authority/0.1/payload.js";
247
+ export * as RoomsOwnerIssueMembership_v0_1 from "./rooms/owner/issue-membership/0.1/payload.js";
242
248
  export * as RoomsOwnerTransfer_v0_1 from "./rooms/owner/transfer/0.1/payload.js";
243
249
  export * as RoomsRecordsCurate_v0_1 from "./rooms/records/curate/0.1/payload.js";
244
250
  export * as RoomsRecordsGet_v0_1 from "./rooms/records/get/0.1/payload.js";
@@ -14,4 +14,4 @@ export interface RoomsSharedTypes {
14
14
  * The definitions this shared schema publishes, hoisted to one declaration each.
15
15
  * See "../../../_shared/components.js".
16
16
  */
17
- export type { AuthorityPresentation, EpochLink, RecordMetadata, SealedRecord, Visibility } from "../../../_shared/components.js";
17
+ export type { AuthorityPresentation, EpochLink, RecordMetadata, RetentionPolicy, SealedRecord, Visibility } from "../../../_shared/components.js";
@@ -3,7 +3,7 @@
3
3
  * Source: specs/rooms/create/0.1/payload.schema.json
4
4
  */
5
5
 
6
- import type { Ext, Visibility } from "../../../_shared/components.js";
6
+ import type { Ext, RetentionPolicy, Visibility } from "../../../_shared/components.js";
7
7
 
8
8
 
9
9
  export interface RoomsCreatePayload {
@@ -16,6 +16,10 @@ export interface RoomsCreatePayload {
16
16
  * The room's accountable party: the controller of the room's identifier, the issuer of every credential in it, and the party a host addresses about quota, abuse, or lifecycle. Visible at every visibility, including `private` — a room has someone answerable for it.
17
17
  */
18
18
  ownerDid: string;
19
+ /**
20
+ * Whether this room keeps its history readable across a membership change. Absent means `chained`, which is the choice a room wants unless it has a reason not to: joining a room should mean being able to read it. A host MUST reject an epoch link for a room whose policy is `fromJoin` rather than storing one it declared it would not have.
21
+ */
22
+ retentionPolicy?: RetentionPolicy;
19
23
  /**
20
24
  * How long the host will hold the room after its epoch lapses without renewal, before storage may be reclaimed. Stated at creation rather than discovered: reclamation that surprises a member is a failure of the design, not of the member.
21
25
  */
@@ -38,7 +42,7 @@ export interface RoomsCreateResponsePayload {
38
42
  }
39
43
 
40
44
  /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
41
- export type { Ext, Visibility };
45
+ export type { Ext, RetentionPolicy, Visibility };
42
46
 
43
47
  /** Trust Task type URI. */
44
48
  export const TYPE_URI = "https://trusttasks.org/spec/rooms/create/0.1" as const;
@@ -84,6 +88,10 @@ export const PAYLOAD_SCHEMA = {
84
88
  "type": "string",
85
89
  "description": "The room's accountable party: the controller of the room's identifier, the issuer of every credential in it, and the party a host addresses about quota, abuse, or lifecycle. Visible at every visibility, including `private` — a room has someone answerable for it."
86
90
  },
91
+ "retentionPolicy": {
92
+ "$ref": "#/$defs/RetentionPolicy",
93
+ "description": "Whether this room keeps its history readable across a membership change. Absent means `chained`, which is the choice a room wants unless it has a reason not to: joining a room should mean being able to read it. A host MUST reject an epoch link for a room whose policy is `fromJoin` rather than storing one it declared it would not have."
94
+ },
87
95
  "retentionDays": {
88
96
  "type": "integer",
89
97
  "minimum": 1,
@@ -129,6 +137,16 @@ export const PAYLOAD_SCHEMA = {
129
137
  "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
130
138
  }
131
139
  },
140
+ "RetentionPolicy": {
141
+ "title": "RetentionPolicy",
142
+ "type": "string",
143
+ "enum": [
144
+ "chained",
145
+ "fromJoin"
146
+ ],
147
+ "description": "Whether a room keeps its history readable across a membership change, fixed at creation and immutable thereafter — like `Visibility`, and for the same reason: the rungs of an epoch key chain either exist for an epoch or they do not, and no later change of mind can seal key material that was never sealed or unseal what was already severed. `chained`: each advance produces an `EpochLink`, so every member reads the room's whole retained history however long they have been in it — what a **library** wants, at the cost of post-compromise security for record content, since a compromised current key then reaches every retained epoch. `fromJoin`: no rungs are produced, so a member reads only from the epoch their group state is at — what a **stream** wants, and what a room under a strict forward-secrecy obligation wants, at the cost that a joining member finds an empty-looking room and nobody can reread a record once their group state has moved past the epoch it was sealed under. Absent means `chained`; see the prose on why the absent case is the readable one.",
148
+ "$comment": "Deliberately no JSON Schema `default`. A declared default is materialised by the generated bindings — the member becomes non-optional with a serde default — so an absent value would reappear as an explicit one on re-serialisation and break round-trip idempotence for every document written before this member existed. The meaning of absence is stated in prose, where a binding cannot act on it."
149
+ },
132
150
  "Visibility": {
133
151
  "title": "Visibility",
134
152
  "type": "string",
@@ -181,6 +199,16 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
181
199
  "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
182
200
  }
183
201
  },
202
+ "RetentionPolicy": {
203
+ "title": "RetentionPolicy",
204
+ "type": "string",
205
+ "enum": [
206
+ "chained",
207
+ "fromJoin"
208
+ ],
209
+ "description": "Whether a room keeps its history readable across a membership change, fixed at creation and immutable thereafter — like `Visibility`, and for the same reason: the rungs of an epoch key chain either exist for an epoch or they do not, and no later change of mind can seal key material that was never sealed or unseal what was already severed. `chained`: each advance produces an `EpochLink`, so every member reads the room's whole retained history however long they have been in it — what a **library** wants, at the cost of post-compromise security for record content, since a compromised current key then reaches every retained epoch. `fromJoin`: no rungs are produced, so a member reads only from the epoch their group state is at — what a **stream** wants, and what a room under a strict forward-secrecy obligation wants, at the cost that a joining member finds an empty-looking room and nobody can reread a record once their group state has moved past the epoch it was sealed under. Absent means `chained`; see the prose on why the absent case is the readable one.",
210
+ "$comment": "Deliberately no JSON Schema `default`. A declared default is materialised by the generated bindings — the member becomes non-optional with a serde default — so an absent value would reappear as an explicit one on re-serialisation and break round-trip idempotence for every document written before this member existed. The meaning of absence is stated in prose, where a binding cannot act on it."
211
+ },
184
212
  "Visibility": {
185
213
  "title": "Visibility",
186
214
  "type": "string",