@openvtc/trust-tasks 0.26.11 → 0.26.12

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 (69) hide show
  1. package/CHANGELOG.md +274 -0
  2. package/dist/_shared/components.d.ts +18 -0
  3. package/dist/_shared/components.d.ts.map +1 -1
  4. package/dist/index.d.ts +11 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +11 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/rooms/keys/act/0.3/payload.d.ts +546 -0
  9. package/dist/rooms/keys/act/0.3/payload.d.ts.map +1 -0
  10. package/dist/rooms/keys/act/0.3/payload.js +305 -0
  11. package/dist/rooms/keys/act/0.3/payload.js.map +1 -0
  12. package/dist/rooms/owner/group/add/0.2/payload.d.ts +417 -0
  13. package/dist/rooms/owner/group/add/0.2/payload.d.ts.map +1 -0
  14. package/dist/rooms/owner/group/add/0.2/payload.js +218 -0
  15. package/dist/rooms/owner/group/add/0.2/payload.js.map +1 -0
  16. package/dist/vta/_shared/0.6/witness-party.d.ts +16 -0
  17. package/dist/vta/_shared/0.6/witness-party.d.ts.map +1 -0
  18. package/dist/vta/_shared/0.6/witness-party.js +6 -0
  19. package/dist/vta/_shared/0.6/witness-party.js.map +1 -0
  20. package/dist/vta/witness/accept/0.2/payload.d.ts +499 -0
  21. package/dist/vta/witness/accept/0.2/payload.d.ts.map +1 -0
  22. package/dist/vta/witness/accept/0.2/payload.js +278 -0
  23. package/dist/vta/witness/accept/0.2/payload.js.map +1 -0
  24. package/dist/vta/witness/open/0.2/payload.d.ts +500 -0
  25. package/dist/vta/witness/open/0.2/payload.d.ts.map +1 -0
  26. package/dist/vta/witness/open/0.2/payload.js +259 -0
  27. package/dist/vta/witness/open/0.2/payload.js.map +1 -0
  28. package/dist/vta/witness/present/0.2/payload.d.ts +303 -0
  29. package/dist/vta/witness/present/0.2/payload.d.ts.map +1 -0
  30. package/dist/vta/witness/present/0.2/payload.js +170 -0
  31. package/dist/vta/witness/present/0.2/payload.js.map +1 -0
  32. package/dist/vtc/members/personhood/assert/0.2/payload.d.ts +536 -0
  33. package/dist/vtc/members/personhood/assert/0.2/payload.d.ts.map +1 -0
  34. package/dist/vtc/members/personhood/assert/0.2/payload.js +228 -0
  35. package/dist/vtc/members/personhood/assert/0.2/payload.js.map +1 -0
  36. package/dist/vtc/members/registry-consent/0.1/payload.d.ts +311 -0
  37. package/dist/vtc/members/registry-consent/0.1/payload.d.ts.map +1 -0
  38. package/dist/vtc/members/registry-consent/0.1/payload.js +183 -0
  39. package/dist/vtc/members/registry-consent/0.1/payload.js.map +1 -0
  40. package/dist/vtc/members/update/0.1/payload.d.ts +3 -3
  41. package/dist/vtc/members/update/0.1/payload.js +1 -1
  42. package/dist/vtc/members/update/0.1/payload.js.map +1 -1
  43. package/dist/witness/_shared/0.1/outcome-evidence.d.ts +16 -0
  44. package/dist/witness/_shared/0.1/outcome-evidence.d.ts.map +1 -0
  45. package/dist/witness/_shared/0.1/outcome-evidence.js +6 -0
  46. package/dist/witness/_shared/0.1/outcome-evidence.js.map +1 -0
  47. package/dist/witness/session/0.2/payload.d.ts +274 -0
  48. package/dist/witness/session/0.2/payload.d.ts.map +1 -0
  49. package/dist/witness/session/0.2/payload.js +152 -0
  50. package/dist/witness/session/0.2/payload.js.map +1 -0
  51. package/dist/witness/session/submit/0.2/payload.d.ts +295 -0
  52. package/dist/witness/session/submit/0.2/payload.d.ts.map +1 -0
  53. package/dist/witness/session/submit/0.2/payload.js +166 -0
  54. package/dist/witness/session/submit/0.2/payload.js.map +1 -0
  55. package/package.json +1 -1
  56. package/src/_shared/components.ts +17 -0
  57. package/src/index.ts +11 -0
  58. package/src/rooms/keys/act/0.3/payload.ts +380 -0
  59. package/src/rooms/owner/group/add/0.2/payload.ts +288 -0
  60. package/src/vta/_shared/0.6/witness-party.ts +17 -0
  61. package/src/vta/witness/accept/0.2/payload.ts +330 -0
  62. package/src/vta/witness/open/0.2/payload.ts +336 -0
  63. package/src/vta/witness/present/0.2/payload.ts +210 -0
  64. package/src/vtc/members/personhood/assert/0.2/payload.ts +421 -0
  65. package/src/vtc/members/registry-consent/0.1/payload.ts +231 -0
  66. package/src/vtc/members/update/0.1/payload.ts +2 -2
  67. package/src/witness/_shared/0.1/outcome-evidence.ts +17 -0
  68. package/src/witness/session/0.2/payload.ts +197 -0
  69. package/src/witness/session/submit/0.2/payload.ts +212 -0
@@ -0,0 +1,421 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/vtc/members/personhood/assert/0.2/payload.schema.json
4
+ */
5
+
6
+ import type { EvidenceDocument, Ext, OutcomeEvidence } from "../../../../../_shared/components.js";
7
+
8
+
9
+ export interface VTCMembersPersonhoodAssertPayload {
10
+ /**
11
+ * The member asserting personhood; MUST equal the presentation's holder.
12
+ */
13
+ did: string;
14
+ /**
15
+ * A W3C Verifiable Presentation (opaque here). Its holder MUST match did, its proof.challenge MUST be the paired challengeId, and it MUST carry at least one credential satisfying the community's active personhood policy. A Verifiable Witness Credential in it counts only with paired outcomeEvidence.
16
+ */
17
+ presentation: {};
18
+ /**
19
+ * OPTIONAL. The outcome evidence of the witnessing sessions that the Verifiable Witness Credentials in presentation cite: one entry per VWC the member wants counted, each the witness/session document the VWC's taskContext names and the witness/session/submit #response that delivered it, exactly as stored, never re-serialised. A VWC with no paired entry counts for nothing; an entry pairing with no VWC in presentation is ignored.
20
+ *
21
+ * @minItems 1
22
+ * @maxItems 16
23
+ */
24
+ outcomeEvidence?:
25
+ | [OutcomeEvidence]
26
+ | [OutcomeEvidence, OutcomeEvidence]
27
+ | [OutcomeEvidence, OutcomeEvidence, OutcomeEvidence]
28
+ | [OutcomeEvidence, OutcomeEvidence, OutcomeEvidence, OutcomeEvidence]
29
+ | [OutcomeEvidence, OutcomeEvidence, OutcomeEvidence, OutcomeEvidence, OutcomeEvidence]
30
+ | [OutcomeEvidence, OutcomeEvidence, OutcomeEvidence, OutcomeEvidence, OutcomeEvidence, OutcomeEvidence]
31
+ | [
32
+ OutcomeEvidence,
33
+ OutcomeEvidence,
34
+ OutcomeEvidence,
35
+ OutcomeEvidence,
36
+ OutcomeEvidence,
37
+ OutcomeEvidence,
38
+ OutcomeEvidence
39
+ ]
40
+ | [
41
+ OutcomeEvidence,
42
+ OutcomeEvidence,
43
+ OutcomeEvidence,
44
+ OutcomeEvidence,
45
+ OutcomeEvidence,
46
+ OutcomeEvidence,
47
+ OutcomeEvidence,
48
+ OutcomeEvidence
49
+ ]
50
+ | [
51
+ OutcomeEvidence,
52
+ OutcomeEvidence,
53
+ OutcomeEvidence,
54
+ OutcomeEvidence,
55
+ OutcomeEvidence,
56
+ OutcomeEvidence,
57
+ OutcomeEvidence,
58
+ OutcomeEvidence,
59
+ OutcomeEvidence
60
+ ]
61
+ | [
62
+ OutcomeEvidence,
63
+ OutcomeEvidence,
64
+ OutcomeEvidence,
65
+ OutcomeEvidence,
66
+ OutcomeEvidence,
67
+ OutcomeEvidence,
68
+ OutcomeEvidence,
69
+ OutcomeEvidence,
70
+ OutcomeEvidence,
71
+ OutcomeEvidence
72
+ ]
73
+ | [
74
+ OutcomeEvidence,
75
+ OutcomeEvidence,
76
+ OutcomeEvidence,
77
+ OutcomeEvidence,
78
+ OutcomeEvidence,
79
+ OutcomeEvidence,
80
+ OutcomeEvidence,
81
+ OutcomeEvidence,
82
+ OutcomeEvidence,
83
+ OutcomeEvidence,
84
+ OutcomeEvidence
85
+ ]
86
+ | [
87
+ OutcomeEvidence,
88
+ OutcomeEvidence,
89
+ OutcomeEvidence,
90
+ OutcomeEvidence,
91
+ OutcomeEvidence,
92
+ OutcomeEvidence,
93
+ OutcomeEvidence,
94
+ OutcomeEvidence,
95
+ OutcomeEvidence,
96
+ OutcomeEvidence,
97
+ OutcomeEvidence,
98
+ OutcomeEvidence
99
+ ]
100
+ | [
101
+ OutcomeEvidence,
102
+ OutcomeEvidence,
103
+ OutcomeEvidence,
104
+ OutcomeEvidence,
105
+ OutcomeEvidence,
106
+ OutcomeEvidence,
107
+ OutcomeEvidence,
108
+ OutcomeEvidence,
109
+ OutcomeEvidence,
110
+ OutcomeEvidence,
111
+ OutcomeEvidence,
112
+ OutcomeEvidence,
113
+ OutcomeEvidence
114
+ ]
115
+ | [
116
+ OutcomeEvidence,
117
+ OutcomeEvidence,
118
+ OutcomeEvidence,
119
+ OutcomeEvidence,
120
+ OutcomeEvidence,
121
+ OutcomeEvidence,
122
+ OutcomeEvidence,
123
+ OutcomeEvidence,
124
+ OutcomeEvidence,
125
+ OutcomeEvidence,
126
+ OutcomeEvidence,
127
+ OutcomeEvidence,
128
+ OutcomeEvidence,
129
+ OutcomeEvidence
130
+ ]
131
+ | [
132
+ OutcomeEvidence,
133
+ OutcomeEvidence,
134
+ OutcomeEvidence,
135
+ OutcomeEvidence,
136
+ OutcomeEvidence,
137
+ OutcomeEvidence,
138
+ OutcomeEvidence,
139
+ OutcomeEvidence,
140
+ OutcomeEvidence,
141
+ OutcomeEvidence,
142
+ OutcomeEvidence,
143
+ OutcomeEvidence,
144
+ OutcomeEvidence,
145
+ OutcomeEvidence,
146
+ OutcomeEvidence
147
+ ]
148
+ | [
149
+ OutcomeEvidence,
150
+ OutcomeEvidence,
151
+ OutcomeEvidence,
152
+ OutcomeEvidence,
153
+ OutcomeEvidence,
154
+ OutcomeEvidence,
155
+ OutcomeEvidence,
156
+ OutcomeEvidence,
157
+ OutcomeEvidence,
158
+ OutcomeEvidence,
159
+ OutcomeEvidence,
160
+ OutcomeEvidence,
161
+ OutcomeEvidence,
162
+ OutcomeEvidence,
163
+ OutcomeEvidence,
164
+ OutcomeEvidence
165
+ ];
166
+ ext?: Ext;
167
+ }
168
+ export interface VTCMembersPersonhoodAssertResponsePayload {
169
+ did: string;
170
+ /**
171
+ * Always true on success — the flag flipped or stayed asserted.
172
+ */
173
+ personhood: true;
174
+ /**
175
+ * Re-issued membership credential carrying the asserted personhood (opaque here).
176
+ */
177
+ vmc: {};
178
+ /**
179
+ * Re-issued role credential (opaque here): a Verifiable Authority Credential (`type` including `AuthorityCredential`) issued by the community with `issuerScope` `public`, whose `credentialSubject.authority` is `{ scope: <community DID>, actions: ["role:<name>"] }` — the shape vtc/vetting/vetters/grant/0.1 issues.
180
+ */
181
+ roleVac: {};
182
+ ext?: Ext;
183
+ }
184
+
185
+ /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
186
+ export type { EvidenceDocument, Ext, OutcomeEvidence };
187
+
188
+ /** Trust Task type URI. */
189
+ export const TYPE_URI = "https://trusttasks.org/spec/vtc/members/personhood/assert/0.2" as const;
190
+
191
+ /** Stable alias for this specification's request payload shape. */
192
+ export type Payload = VTCMembersPersonhoodAssertPayload;
193
+
194
+ /** Trust Task response type URI (request type URI + "#response"). */
195
+ export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/vtc/members/personhood/assert/0.2#response" as const;
196
+
197
+ /** Stable alias for this specification's success-response payload shape. */
198
+ export type Response = VTCMembersPersonhoodAssertResponsePayload;
199
+
200
+ /**
201
+ * This specification's payload schema, as a value.
202
+ *
203
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
204
+ * rather than only as a `.json` file because TypeScript types are erased
205
+ * at runtime: without a schema a consumer has nothing to validate, and
206
+ * every REQUIRED payload member is optional in practice. Cross-file
207
+ * `$ref`s are already inlined, so it needs no resolver.
208
+ */
209
+ export const PAYLOAD_SCHEMA = {
210
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
211
+ "$id": "https://trusttasks.org/spec/vtc/members/personhood/assert/0.2",
212
+ "title": "VTC Members Personhood-Assert — payload",
213
+ "type": "object",
214
+ "additionalProperties": false,
215
+ "required": [
216
+ "did",
217
+ "presentation"
218
+ ],
219
+ "properties": {
220
+ "did": {
221
+ "type": "string",
222
+ "minLength": 1,
223
+ "description": "The member asserting personhood; MUST equal the presentation's holder."
224
+ },
225
+ "presentation": {
226
+ "type": "object",
227
+ "description": "A W3C Verifiable Presentation (opaque here). Its holder MUST match did, its proof.challenge MUST be the paired challengeId, and it MUST carry at least one credential satisfying the community's active personhood policy. A Verifiable Witness Credential in it counts only with paired outcomeEvidence."
228
+ },
229
+ "outcomeEvidence": {
230
+ "type": "array",
231
+ "minItems": 1,
232
+ "maxItems": 16,
233
+ "items": {
234
+ "$ref": "#/$defs/OutcomeEvidence"
235
+ },
236
+ "description": "OPTIONAL. The outcome evidence of the witnessing sessions that the Verifiable Witness Credentials in presentation cite: one entry per VWC the member wants counted, each the witness/session document the VWC's taskContext names and the witness/session/submit #response that delivered it, exactly as stored, never re-serialised. A VWC with no paired entry counts for nothing; an entry pairing with no VWC in presentation is ignored."
237
+ },
238
+ "ext": {
239
+ "$ref": "#/$defs/Ext"
240
+ }
241
+ },
242
+ "$defs": {
243
+ "Response": {
244
+ "$anchor": "response",
245
+ "title": "VTC Members Personhood-Assert — response payload",
246
+ "type": "object",
247
+ "additionalProperties": false,
248
+ "required": [
249
+ "did",
250
+ "personhood",
251
+ "vmc",
252
+ "roleVac"
253
+ ],
254
+ "properties": {
255
+ "did": {
256
+ "type": "string",
257
+ "minLength": 1
258
+ },
259
+ "personhood": {
260
+ "type": "boolean",
261
+ "const": true,
262
+ "description": "Always true on success — the flag flipped or stayed asserted."
263
+ },
264
+ "vmc": {
265
+ "type": "object",
266
+ "description": "Re-issued membership credential carrying the asserted personhood (opaque here)."
267
+ },
268
+ "roleVac": {
269
+ "type": "object",
270
+ "description": "Re-issued role credential (opaque here): a Verifiable Authority Credential (`type` including `AuthorityCredential`) issued by the community with `issuerScope` `public`, whose `credentialSubject.authority` is `{ scope: <community DID>, actions: [\"role:<name>\"] }` — the shape vtc/vetting/vetters/grant/0.1 issues."
271
+ },
272
+ "ext": {
273
+ "$ref": "#/$defs/Ext"
274
+ }
275
+ }
276
+ },
277
+ "Ext": {
278
+ "title": "Ext",
279
+ "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.",
280
+ "type": "object",
281
+ "minProperties": 1,
282
+ "additionalProperties": true,
283
+ "propertyNames": {
284
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
285
+ }
286
+ },
287
+ "OutcomeEvidence": {
288
+ "title": "OutcomeEvidence",
289
+ "description": "One witnessing session's outcome evidence. `session` is the initiating witness/session document; `outcome` is the terminal witness/session/submit #response that the initiating document's own specification declares as its outcome evidence, under the witness's proof, delivering the VWC and its vwcDigestMultibase. A consumer pairs them with a presented VWC by SPEC §4.9.4's four checks and the witnessing checks of witness/session/submit (This response is the outcome evidence).",
290
+ "type": "object",
291
+ "additionalProperties": false,
292
+ "required": [
293
+ "session",
294
+ "outcome"
295
+ ],
296
+ "properties": {
297
+ "session": {
298
+ "$ref": "#/$defs/EvidenceDocument",
299
+ "description": "The witness/session document that opened the session. The VWC's taskContext is its id and its taskDigestMultibase is computed over it (SPEC §4.9.3)."
300
+ },
301
+ "outcome": {
302
+ "$ref": "#/$defs/EvidenceDocument",
303
+ "description": "The witness/session/submit #response that closed the session, under the witness's proof. It carries the VWC and its vwcDigestMultibase."
304
+ }
305
+ }
306
+ },
307
+ "EvidenceDocument": {
308
+ "title": "EvidenceDocument",
309
+ "description": "A whole Trust Task document — `id`, `type`, `payload` and every other member, `proof` included — carried exactly as it was sent or received, never re-serialised: a task digest and a proof are taken over its members, and a re-serialised copy reproduces neither reliably. Typed as an open object so every member survives; the checks that give it meaning belong to the task that reads it.",
310
+ "type": "object",
311
+ "minProperties": 1
312
+ }
313
+ }
314
+ } as const;
315
+
316
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
317
+ export const RESPONSE_PAYLOAD_SCHEMA = {
318
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
319
+ "$ref": "#/$defs/Response",
320
+ "$defs": {
321
+ "Response": {
322
+ "$anchor": "response",
323
+ "title": "VTC Members Personhood-Assert — response payload",
324
+ "type": "object",
325
+ "additionalProperties": false,
326
+ "required": [
327
+ "did",
328
+ "personhood",
329
+ "vmc",
330
+ "roleVac"
331
+ ],
332
+ "properties": {
333
+ "did": {
334
+ "type": "string",
335
+ "minLength": 1
336
+ },
337
+ "personhood": {
338
+ "type": "boolean",
339
+ "const": true,
340
+ "description": "Always true on success — the flag flipped or stayed asserted."
341
+ },
342
+ "vmc": {
343
+ "type": "object",
344
+ "description": "Re-issued membership credential carrying the asserted personhood (opaque here)."
345
+ },
346
+ "roleVac": {
347
+ "type": "object",
348
+ "description": "Re-issued role credential (opaque here): a Verifiable Authority Credential (`type` including `AuthorityCredential`) issued by the community with `issuerScope` `public`, whose `credentialSubject.authority` is `{ scope: <community DID>, actions: [\"role:<name>\"] }` — the shape vtc/vetting/vetters/grant/0.1 issues."
349
+ },
350
+ "ext": {
351
+ "$ref": "#/$defs/Ext"
352
+ }
353
+ }
354
+ },
355
+ "Ext": {
356
+ "title": "Ext",
357
+ "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.",
358
+ "type": "object",
359
+ "minProperties": 1,
360
+ "additionalProperties": true,
361
+ "propertyNames": {
362
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
363
+ }
364
+ },
365
+ "OutcomeEvidence": {
366
+ "title": "OutcomeEvidence",
367
+ "description": "One witnessing session's outcome evidence. `session` is the initiating witness/session document; `outcome` is the terminal witness/session/submit #response that the initiating document's own specification declares as its outcome evidence, under the witness's proof, delivering the VWC and its vwcDigestMultibase. A consumer pairs them with a presented VWC by SPEC §4.9.4's four checks and the witnessing checks of witness/session/submit (This response is the outcome evidence).",
368
+ "type": "object",
369
+ "additionalProperties": false,
370
+ "required": [
371
+ "session",
372
+ "outcome"
373
+ ],
374
+ "properties": {
375
+ "session": {
376
+ "$ref": "#/$defs/EvidenceDocument",
377
+ "description": "The witness/session document that opened the session. The VWC's taskContext is its id and its taskDigestMultibase is computed over it (SPEC §4.9.3)."
378
+ },
379
+ "outcome": {
380
+ "$ref": "#/$defs/EvidenceDocument",
381
+ "description": "The witness/session/submit #response that closed the session, under the witness's proof. It carries the VWC and its vwcDigestMultibase."
382
+ }
383
+ }
384
+ },
385
+ "EvidenceDocument": {
386
+ "title": "EvidenceDocument",
387
+ "description": "A whole Trust Task document — `id`, `type`, `payload` and every other member, `proof` included — carried exactly as it was sent or received, never re-serialised: a task digest and a proof are taken over its members, and a re-serialised copy reproduces neither reliably. Typed as an open object so every member survives; the checks that give it meaning belong to the task that reads it.",
388
+ "type": "object",
389
+ "minProperties": 1
390
+ }
391
+ }
392
+ } as const;
393
+
394
+ /**
395
+ * SPEC.md §7.2 policy for the request variant, from this specification's
396
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
397
+ * per-specification and cannot be derived from the document alone, and
398
+ * item 2 needs the schema this carries.
399
+ */
400
+ export const SPEC = {
401
+ typeUri: TYPE_URI,
402
+ isBearer: false,
403
+ isProofRequired: true,
404
+ isRecipientRequired: true,
405
+ isIssuedAtRequired: true,
406
+ payloadSchema: PAYLOAD_SCHEMA,
407
+ } as const;
408
+
409
+ /**
410
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
411
+ * tracks the *issuer* party's requirement because a response swaps the
412
+ * parties (§7.3 item 5).
413
+ */
414
+ export const RESPONSE_SPEC = {
415
+ typeUri: RESPONSE_TYPE_URI,
416
+ isBearer: false,
417
+ isProofRequired: true,
418
+ isRecipientRequired: true,
419
+ isIssuedAtRequired: true,
420
+ payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
421
+ } as const;
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/vtc/members/registry-consent/0.1/payload.schema.json
4
+ */
5
+
6
+ import type { Ext } from "../../../../_shared/components.js";
7
+
8
+
9
+ export interface VTCMembersRegistryConsentPayload {
10
+ /**
11
+ * The member's own decision on trust-registry publication: `true` consents to the community publishing their membership in its trust registry, `false` withdraws that consent. Applies to the member who signed the document, and to no one else.
12
+ */
13
+ publishConsent: boolean;
14
+ ext?: Ext;
15
+ }
16
+ export interface VTCMembersRegistryConsentResponsePayload {
17
+ /**
18
+ * The member whose consent this is: the document's signer.
19
+ */
20
+ did: string;
21
+ /**
22
+ * The consent now recorded on the member record.
23
+ */
24
+ publishConsent: boolean;
25
+ /**
26
+ * Whether this document changed the recorded consent. `false` when the member restated the value already recorded.
27
+ */
28
+ changed: boolean;
29
+ /**
30
+ * What the community did about its trust registry. `queued`: a registry sync job carrying the change is queued (publication on a grant, removal on a withdrawal). `notConfigured`: the community publishes to no trust registry at present; the consent is recorded and governs any registry configured later. `unchanged`: nothing to sync, because the consent did not change, or because the community does not publish this member on other grounds (consent permits publication; it does not oblige it).
31
+ */
32
+ registrySync: "queued" | "notConfigured" | "unchanged";
33
+ /**
34
+ * When the community recorded the consent now in force — this document's execution when `changed` is `true`, the earlier change otherwise.
35
+ */
36
+ effectiveAt: string;
37
+ ext?: Ext;
38
+ }
39
+
40
+ /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
41
+ export type { Ext };
42
+
43
+ /** Trust Task type URI. */
44
+ export const TYPE_URI = "https://trusttasks.org/spec/vtc/members/registry-consent/0.1" as const;
45
+
46
+ /** Stable alias for this specification's request payload shape. */
47
+ export type Payload = VTCMembersRegistryConsentPayload;
48
+
49
+ /** Trust Task response type URI (request type URI + "#response"). */
50
+ export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/vtc/members/registry-consent/0.1#response" as const;
51
+
52
+ /** Stable alias for this specification's success-response payload shape. */
53
+ export type Response = VTCMembersRegistryConsentResponsePayload;
54
+
55
+ /**
56
+ * This specification's payload schema, as a value.
57
+ *
58
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
59
+ * rather than only as a `.json` file because TypeScript types are erased
60
+ * at runtime: without a schema a consumer has nothing to validate, and
61
+ * every REQUIRED payload member is optional in practice. Cross-file
62
+ * `$ref`s are already inlined, so it needs no resolver.
63
+ */
64
+ export const PAYLOAD_SCHEMA = {
65
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
66
+ "$id": "https://trusttasks.org/spec/vtc/members/registry-consent/0.1",
67
+ "title": "VTC Members Registry Consent — payload",
68
+ "type": "object",
69
+ "additionalProperties": false,
70
+ "required": [
71
+ "publishConsent"
72
+ ],
73
+ "properties": {
74
+ "publishConsent": {
75
+ "type": "boolean",
76
+ "description": "The member's own decision on trust-registry publication: `true` consents to the community publishing their membership in its trust registry, `false` withdraws that consent. Applies to the member who signed the document, and to no one else."
77
+ },
78
+ "ext": {
79
+ "$ref": "#/$defs/Ext"
80
+ }
81
+ },
82
+ "$defs": {
83
+ "Response": {
84
+ "$anchor": "response",
85
+ "title": "VTC Members Registry Consent — response payload",
86
+ "type": "object",
87
+ "additionalProperties": false,
88
+ "required": [
89
+ "did",
90
+ "publishConsent",
91
+ "changed",
92
+ "registrySync",
93
+ "effectiveAt"
94
+ ],
95
+ "properties": {
96
+ "did": {
97
+ "type": "string",
98
+ "minLength": 1,
99
+ "description": "The member whose consent this is: the document's signer."
100
+ },
101
+ "publishConsent": {
102
+ "type": "boolean",
103
+ "description": "The consent now recorded on the member record."
104
+ },
105
+ "changed": {
106
+ "type": "boolean",
107
+ "description": "Whether this document changed the recorded consent. `false` when the member restated the value already recorded."
108
+ },
109
+ "registrySync": {
110
+ "type": "string",
111
+ "enum": [
112
+ "queued",
113
+ "notConfigured",
114
+ "unchanged"
115
+ ],
116
+ "description": "What the community did about its trust registry. `queued`: a registry sync job carrying the change is queued (publication on a grant, removal on a withdrawal). `notConfigured`: the community publishes to no trust registry at present; the consent is recorded and governs any registry configured later. `unchanged`: nothing to sync, because the consent did not change, or because the community does not publish this member on other grounds (consent permits publication; it does not oblige it)."
117
+ },
118
+ "effectiveAt": {
119
+ "type": "string",
120
+ "format": "date-time",
121
+ "description": "When the community recorded the consent now in force — this document's execution when `changed` is `true`, the earlier change otherwise."
122
+ },
123
+ "ext": {
124
+ "$ref": "#/$defs/Ext"
125
+ }
126
+ }
127
+ },
128
+ "Ext": {
129
+ "title": "Ext",
130
+ "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.",
131
+ "type": "object",
132
+ "minProperties": 1,
133
+ "additionalProperties": true,
134
+ "propertyNames": {
135
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
136
+ }
137
+ }
138
+ }
139
+ } as const;
140
+
141
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
142
+ export const RESPONSE_PAYLOAD_SCHEMA = {
143
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
144
+ "$ref": "#/$defs/Response",
145
+ "$defs": {
146
+ "Response": {
147
+ "$anchor": "response",
148
+ "title": "VTC Members Registry Consent — response payload",
149
+ "type": "object",
150
+ "additionalProperties": false,
151
+ "required": [
152
+ "did",
153
+ "publishConsent",
154
+ "changed",
155
+ "registrySync",
156
+ "effectiveAt"
157
+ ],
158
+ "properties": {
159
+ "did": {
160
+ "type": "string",
161
+ "minLength": 1,
162
+ "description": "The member whose consent this is: the document's signer."
163
+ },
164
+ "publishConsent": {
165
+ "type": "boolean",
166
+ "description": "The consent now recorded on the member record."
167
+ },
168
+ "changed": {
169
+ "type": "boolean",
170
+ "description": "Whether this document changed the recorded consent. `false` when the member restated the value already recorded."
171
+ },
172
+ "registrySync": {
173
+ "type": "string",
174
+ "enum": [
175
+ "queued",
176
+ "notConfigured",
177
+ "unchanged"
178
+ ],
179
+ "description": "What the community did about its trust registry. `queued`: a registry sync job carrying the change is queued (publication on a grant, removal on a withdrawal). `notConfigured`: the community publishes to no trust registry at present; the consent is recorded and governs any registry configured later. `unchanged`: nothing to sync, because the consent did not change, or because the community does not publish this member on other grounds (consent permits publication; it does not oblige it)."
180
+ },
181
+ "effectiveAt": {
182
+ "type": "string",
183
+ "format": "date-time",
184
+ "description": "When the community recorded the consent now in force — this document's execution when `changed` is `true`, the earlier change otherwise."
185
+ },
186
+ "ext": {
187
+ "$ref": "#/$defs/Ext"
188
+ }
189
+ }
190
+ },
191
+ "Ext": {
192
+ "title": "Ext",
193
+ "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.",
194
+ "type": "object",
195
+ "minProperties": 1,
196
+ "additionalProperties": true,
197
+ "propertyNames": {
198
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
199
+ }
200
+ }
201
+ }
202
+ } as const;
203
+
204
+ /**
205
+ * SPEC.md §7.2 policy for the request variant, from this specification's
206
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
207
+ * per-specification and cannot be derived from the document alone, and
208
+ * item 2 needs the schema this carries.
209
+ */
210
+ export const SPEC = {
211
+ typeUri: TYPE_URI,
212
+ isBearer: false,
213
+ isProofRequired: true,
214
+ isRecipientRequired: true,
215
+ isIssuedAtRequired: true,
216
+ payloadSchema: PAYLOAD_SCHEMA,
217
+ } as const;
218
+
219
+ /**
220
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
221
+ * tracks the *issuer* party's requirement because a response swaps the
222
+ * parties (§7.3 item 5).
223
+ */
224
+ export const RESPONSE_SPEC = {
225
+ typeUri: RESPONSE_TYPE_URI,
226
+ isBearer: false,
227
+ isProofRequired: true,
228
+ isRecipientRequired: true,
229
+ isIssuedAtRequired: true,
230
+ payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
231
+ } as const;
@@ -20,7 +20,7 @@ export interface VTCMembersUpdatePayload {
20
20
  */
21
21
  label?: string | null;
22
22
  /**
23
- * New directory-publish consent.
23
+ * New directory-publish consent. May only withdraw consent (`true` → `false`) or restate the current value; `true` for a member whose record does not already carry it is refused with `consentGrantForbidden`. Consent is the member's own, given by `registryConsent` on `vtc/join-requests/submit`.
24
24
  */
25
25
  publishConsent?: boolean;
26
26
  departurePreference?: "purge" | "tombstone" | "historical" | "policydefault";
@@ -89,7 +89,7 @@ export const PAYLOAD_SCHEMA = {
89
89
  },
90
90
  "publishConsent": {
91
91
  "type": "boolean",
92
- "description": "New directory-publish consent."
92
+ "description": "New directory-publish consent. May only withdraw consent (`true` → `false`) or restate the current value; `true` for a member whose record does not already carry it is refused with `consentGrantForbidden`. Consent is the member's own, given by `registryConsent` on `vtc/join-requests/submit`."
93
93
  },
94
94
  "departurePreference": {
95
95
  "type": "string",
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/witness/_shared/0.1/outcome-evidence.schema.json
4
+ */
5
+
6
+ /**
7
+ * The outcome evidence of one witnessing session (SPEC §4.9.4): the witness/session document that opened it and the witness/session/submit #response that closed it, which together let a party outside the exchange pair a Verifiable Witness Credential with the session it cites. Defined once because more than one task carries it: the VTA that stores a VWC returns it (vta/witness/accept), and a holder presenting a VWC ships it beside the presentation (vtc/members/personhood/assert). Not itself a Trust Task specification: the `_shared` folder is skipped by the registry build and the codegen.
8
+ */
9
+ export interface WitnessingOutcomeEvidenceSharedDefinitions {
10
+ [k: string]: unknown | undefined;
11
+ }
12
+
13
+ /**
14
+ * The definitions this shared schema publishes, hoisted to one declaration each.
15
+ * See "../../../_shared/components.js".
16
+ */
17
+ export type { EvidenceDocument, OutcomeEvidence } from "../../../_shared/components.js";