@openvtc/trust-tasks 0.28.0 → 0.28.2

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 (102) hide show
  1. package/CHANGELOG.md +236 -0
  2. package/dist/_runtime/document.d.ts +13 -0
  3. package/dist/_runtime/document.d.ts.map +1 -1
  4. package/dist/_runtime/document.js +17 -2
  5. package/dist/_runtime/document.js.map +1 -1
  6. package/dist/_runtime/index.d.ts +1 -1
  7. package/dist/_runtime/index.d.ts.map +1 -1
  8. package/dist/_runtime/index.js +1 -1
  9. package/dist/_runtime/index.js.map +1 -1
  10. package/dist/auth/step-up/approve-request/0.5/payload.d.ts +3 -3
  11. package/dist/auth/step-up/approve-request/0.5/payload.js +1 -1
  12. package/dist/auth/step-up/approve-response/0.1/payload.d.ts +4 -4
  13. package/dist/auth/step-up/approve-response/0.1/payload.js +1 -1
  14. package/dist/auth/step-up/approve-response/0.2/payload.d.ts +4 -4
  15. package/dist/auth/step-up/approve-response/0.2/payload.js +1 -1
  16. package/dist/auth/step-up/approve-response/0.3/payload.d.ts +4 -4
  17. package/dist/auth/step-up/approve-response/0.3/payload.js +1 -1
  18. package/dist/auth/step-up/approve-response/0.4/payload.d.ts +4 -4
  19. package/dist/auth/step-up/approve-response/0.4/payload.js +1 -1
  20. package/dist/auth/step-up/approve-response/0.5/payload.d.ts +4 -4
  21. package/dist/auth/step-up/approve-response/0.5/payload.js +1 -1
  22. package/dist/auth/step-up/approve-response/0.6/payload.d.ts +14 -2
  23. package/dist/auth/step-up/approve-response/0.6/payload.d.ts.map +1 -1
  24. package/dist/auth/step-up/approve-response/0.6/payload.js +1 -1
  25. package/dist/auth/step-up/approve-response/0.6/payload.js.map +1 -1
  26. package/dist/auth/step-up/approve-response/0.7/payload.d.ts +988 -0
  27. package/dist/auth/step-up/approve-response/0.7/payload.d.ts.map +1 -0
  28. package/dist/auth/step-up/approve-response/0.7/payload.js +566 -0
  29. package/dist/auth/step-up/approve-response/0.7/payload.js.map +1 -0
  30. package/dist/auth/step-up/approver/attest/0.1/payload.d.ts +3 -3
  31. package/dist/auth/step-up/approver/attest/0.1/payload.js +1 -1
  32. package/dist/index.d.ts +18 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +18 -0
  35. package/dist/index.js.map +1 -1
  36. package/dist/rooms/owner/group/remove/0.1/payload.d.ts +4 -4
  37. package/dist/rooms/owner/group/remove/0.1/payload.js +1 -1
  38. package/dist/rooms/owner/group/remove/0.2/payload.d.ts +4 -4
  39. package/dist/rooms/owner/group/remove/0.2/payload.js +1 -1
  40. package/dist/rooms/owner/group/remove/0.3/payload.d.ts +14 -2
  41. package/dist/rooms/owner/group/remove/0.3/payload.d.ts.map +1 -1
  42. package/dist/rooms/owner/group/remove/0.3/payload.js +1 -1
  43. package/dist/rooms/owner/group/remove/0.3/payload.js.map +1 -1
  44. package/dist/rooms/owner/group/remove/0.4/payload.d.ts +634 -0
  45. package/dist/rooms/owner/group/remove/0.4/payload.d.ts.map +1 -0
  46. package/dist/rooms/owner/group/remove/0.4/payload.js +331 -0
  47. package/dist/rooms/owner/group/remove/0.4/payload.js.map +1 -0
  48. package/dist/task-consent/decision/0.2/payload.d.ts +5 -5
  49. package/dist/task-consent/decision/0.2/payload.js +2 -2
  50. package/dist/vta/contexts/delete/1.0/payload.d.ts +13 -2
  51. package/dist/vta/contexts/delete/1.0/payload.d.ts.map +1 -1
  52. package/dist/vta/contexts/delete/1.0/payload.js +1 -1
  53. package/dist/vta/contexts/delete/1.0/payload.js.map +1 -1
  54. package/dist/vta/contexts/delete/1.1/payload.d.ts +315 -0
  55. package/dist/vta/contexts/delete/1.1/payload.d.ts.map +1 -0
  56. package/dist/vta/contexts/delete/1.1/payload.js +178 -0
  57. package/dist/vta/contexts/delete/1.1/payload.js.map +1 -0
  58. package/dist/vtc/install/claim/finish/0.2/payload.d.ts +4 -4
  59. package/dist/vtc/install/claim/finish/0.2/payload.d.ts.map +1 -1
  60. package/dist/vtc/install/claim/finish/0.2/payload.js +1 -1
  61. package/dist/vtc/install/claim/finish/0.2/payload.js.map +1 -1
  62. package/dist/vtc/install/claim/passkey/finish/0.1/payload.d.ts +306 -0
  63. package/dist/vtc/install/claim/passkey/finish/0.1/payload.d.ts.map +1 -0
  64. package/dist/vtc/install/claim/passkey/finish/0.1/payload.js +175 -0
  65. package/dist/vtc/install/claim/passkey/finish/0.1/payload.js.map +1 -0
  66. package/dist/vtc/install/claim/passkey/start/0.1/payload.d.ts +302 -0
  67. package/dist/vtc/install/claim/passkey/start/0.1/payload.d.ts.map +1 -0
  68. package/dist/vtc/install/claim/passkey/start/0.1/payload.js +172 -0
  69. package/dist/vtc/install/claim/passkey/start/0.1/payload.js.map +1 -0
  70. package/dist/vtc/install/claim/start/0.2/payload.d.ts +4 -4
  71. package/dist/vtc/install/claim/start/0.2/payload.d.ts.map +1 -1
  72. package/dist/vtc/install/claim/start/0.2/payload.js +1 -1
  73. package/dist/vtc/install/claim/start/0.2/payload.js.map +1 -1
  74. package/dist/vtc/members/role/set/0.1/payload.d.ts +1867 -0
  75. package/dist/vtc/members/role/set/0.1/payload.d.ts.map +1 -0
  76. package/dist/vtc/members/role/set/0.1/payload.js +1060 -0
  77. package/dist/vtc/members/role/set/0.1/payload.js.map +1 -0
  78. package/package.json +1 -1
  79. package/src/_runtime/document.ts +18 -2
  80. package/src/_runtime/index.ts +1 -0
  81. package/src/auth/step-up/approve-request/0.5/payload.ts +2 -2
  82. package/src/auth/step-up/approve-response/0.1/payload.ts +5 -5
  83. package/src/auth/step-up/approve-response/0.2/payload.ts +5 -5
  84. package/src/auth/step-up/approve-response/0.3/payload.ts +5 -5
  85. package/src/auth/step-up/approve-response/0.4/payload.ts +5 -5
  86. package/src/auth/step-up/approve-response/0.5/payload.ts +5 -5
  87. package/src/auth/step-up/approve-response/0.6/payload.ts +15 -3
  88. package/src/auth/step-up/approve-response/0.7/payload.ts +664 -0
  89. package/src/auth/step-up/approver/attest/0.1/payload.ts +2 -2
  90. package/src/index.ts +18 -0
  91. package/src/rooms/owner/group/remove/0.1/payload.ts +5 -5
  92. package/src/rooms/owner/group/remove/0.2/payload.ts +5 -5
  93. package/src/rooms/owner/group/remove/0.3/payload.ts +15 -3
  94. package/src/rooms/owner/group/remove/0.4/payload.ts +442 -0
  95. package/src/task-consent/decision/0.2/payload.ts +3 -3
  96. package/src/vta/contexts/delete/1.0/payload.ts +14 -3
  97. package/src/vta/contexts/delete/1.1/payload.ts +228 -0
  98. package/src/vtc/install/claim/finish/0.2/payload.ts +5 -5
  99. package/src/vtc/install/claim/passkey/finish/0.1/payload.ts +228 -0
  100. package/src/vtc/install/claim/passkey/start/0.1/payload.ts +225 -0
  101. package/src/vtc/install/claim/start/0.2/payload.ts +5 -5
  102. package/src/vtc/members/role/set/0.1/payload.ts +1142 -0
@@ -38,7 +38,7 @@ export interface TaskConsentDecisionPayload {
38
38
  export interface WebAuthn {
39
39
  kind: "webauthn";
40
40
  /**
41
- * The unmodified AuthenticatorAssertionResponse from the platform WebAuthn API, the same shape auth/step-up/approve-response/0.6 carries. The WebAuthn challenge the approver's client passed to the authenticator MUST be the UTF-8 bytes of this decision's `challenge` value, so `clientDataJSON.challenge` is their base64url (no padding) encoding; the executor, as relying party, verifies it per WebAuthn Level 2 §7.2 against a credential enrolled to the approver whose DID made the document's proof. The commitment to the payload is the executor's binding: it issued that challenge for exactly one pending request, whose `payloadDigest` is salted with it.
41
+ * The unmodified AuthenticatorAssertionResponse from the platform WebAuthn API, the same shape auth/step-up/approve-response/0.7 carries. The WebAuthn challenge the approver's client passed to the authenticator MUST be the UTF-8 bytes of this decision's `challenge` value, so `clientDataJSON.challenge` is their base64url (no padding) encoding; the executor, as relying party, verifies it per WebAuthn Level 2 §7.2 against a credential enrolled to the approver whose DID made the document's proof. The commitment to the payload is the executor's binding: it issued that challenge for exactly one pending request, whose `payloadDigest` is salted with it.
42
42
  */
43
43
  assertion: AuthenticatorAssertionResponseLogin;
44
44
  }
@@ -179,7 +179,7 @@ export const PAYLOAD_SCHEMA = {
179
179
  },
180
180
  "assertion": {
181
181
  "$ref": "#/$defs/AssertionResponse",
182
- "description": "The unmodified AuthenticatorAssertionResponse from the platform WebAuthn API, the same shape auth/step-up/approve-response/0.6 carries. The WebAuthn challenge the approver's client passed to the authenticator MUST be the UTF-8 bytes of this decision's `challenge` value, so `clientDataJSON.challenge` is their base64url (no padding) encoding; the executor, as relying party, verifies it per WebAuthn Level 2 §7.2 against a credential enrolled to the approver whose DID made the document's proof. The commitment to the payload is the executor's binding: it issued that challenge for exactly one pending request, whose `payloadDigest` is salted with it."
182
+ "description": "The unmodified AuthenticatorAssertionResponse from the platform WebAuthn API, the same shape auth/step-up/approve-response/0.7 carries. The WebAuthn challenge the approver's client passed to the authenticator MUST be the UTF-8 bytes of this decision's `challenge` value, so `clientDataJSON.challenge` is their base64url (no padding) encoding; the executor, as relying party, verifies it per WebAuthn Level 2 §7.2 against a credential enrolled to the approver whose DID made the document's proof. The commitment to the payload is the executor's binding: it issued that challenge for exactly one pending request, whose `payloadDigest` is salted with it."
183
183
  }
184
184
  }
185
185
  },
@@ -363,7 +363,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
363
363
  },
364
364
  "assertion": {
365
365
  "$ref": "#/$defs/AssertionResponse",
366
- "description": "The unmodified AuthenticatorAssertionResponse from the platform WebAuthn API, the same shape auth/step-up/approve-response/0.6 carries. The WebAuthn challenge the approver's client passed to the authenticator MUST be the UTF-8 bytes of this decision's `challenge` value, so `clientDataJSON.challenge` is their base64url (no padding) encoding; the executor, as relying party, verifies it per WebAuthn Level 2 §7.2 against a credential enrolled to the approver whose DID made the document's proof. The commitment to the payload is the executor's binding: it issued that challenge for exactly one pending request, whose `payloadDigest` is salted with it."
366
+ "description": "The unmodified AuthenticatorAssertionResponse from the platform WebAuthn API, the same shape auth/step-up/approve-response/0.7 carries. The WebAuthn challenge the approver's client passed to the authenticator MUST be the UTF-8 bytes of this decision's `challenge` value, so `clientDataJSON.challenge` is their base64url (no padding) encoding; the executor, as relying party, verifies it per WebAuthn Level 2 §7.2 against a credential enrolled to the approver whose DID made the document's proof. The commitment to the payload is the executor's binding: it issued that challenge for exactly one pending request, whose `payloadDigest` is salted with it."
367
367
  }
368
368
  }
369
369
  },
@@ -6,6 +6,7 @@
6
6
  import type { Ext } from "../../../../_shared/components.js";
7
7
 
8
8
 
9
+ /** @deprecated superseded by vta/contexts/delete/1.1 */
9
10
  export interface VTAContextsDeletePayload {
10
11
  /**
11
12
  * Context to delete.
@@ -19,6 +20,8 @@ export interface VTAContextsDeletePayload {
19
20
  }
20
21
  /**
21
22
  * Success response to vta/contexts/delete. Type https://trusttasks.org/spec/vta/contexts/delete/1.0#response.
23
+ *
24
+ * @deprecated superseded by vta/contexts/delete/1.1
22
25
  */
23
26
  export interface VTAContextsDeleteResponsePayload {
24
27
  id: string;
@@ -53,15 +56,23 @@ export const EXTENDS: string | null = null;
53
56
  * this package in a later scheduled batch (SPEC "Superseded and Withdrawn
54
57
  * Versions").
55
58
  */
56
- export const DEPRECATION: string | null = null;
59
+ export const DEPRECATION: string | null = "superseded by vta/contexts/delete/1.1";
57
60
 
58
- /** Stable alias for this specification's request payload shape. */
61
+ /**
62
+ * Stable alias for this specification's request payload shape.
63
+ *
64
+ * @deprecated superseded by vta/contexts/delete/1.1
65
+ */
59
66
  export type Payload = VTAContextsDeletePayload;
60
67
 
61
68
  /** Trust Task response type URI (request type URI + "#response"). */
62
69
  export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/vta/contexts/delete/1.0#response" as const;
63
70
 
64
- /** Stable alias for this specification's success-response payload shape. */
71
+ /**
72
+ * Stable alias for this specification's success-response payload shape.
73
+ *
74
+ * @deprecated superseded by vta/contexts/delete/1.1
75
+ */
65
76
  export type Response = VTAContextsDeleteResponsePayload;
66
77
 
67
78
  /**
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/vta/contexts/delete/1.1/payload.schema.json
4
+ */
5
+
6
+ import type { Ext } from "../../../../_shared/components.js";
7
+
8
+
9
+ export interface VTAContextsDeletePayload {
10
+ /**
11
+ * Context to delete.
12
+ */
13
+ id: string;
14
+ /**
15
+ * Delete even though the context still holds keys, DIDs or templates. Default false, and the default is the point: without it a context holding anything is refused, so the destructive case is always something a caller asked for explicitly.
16
+ */
17
+ force?: boolean;
18
+ /**
19
+ * Complete the deletion even where the published log of a `did:webvh` DID in the subtree could not be confirmed removed from its hosting server — the server unreachable, refusing, or no longer known to the VTA. Default false: such a deletion is refused with `vta/contexts/delete:hostCleanupFailed` and nothing is deleted locally, so the caller can wait for the host and retry. True accepts that the named DIDs may keep resolving and that removing them is now the caller's responsibility; each is reported in `daemonCleanupErrors`.
20
+ */
21
+ abandonHostCopies?: boolean;
22
+ ext?: Ext;
23
+ }
24
+ /**
25
+ * Success response to vta/contexts/delete. Type https://trusttasks.org/spec/vta/contexts/delete/1.1#response.
26
+ */
27
+ export interface VTAContextsDeleteResponsePayload {
28
+ id: string;
29
+ /**
30
+ * Whether the context was removed. A successful response carrying `false` means the VTA declined to act — it is not an error, and a consumer MUST NOT report the deletion as done on the basis of the response status alone.
31
+ */
32
+ deleted: boolean;
33
+ /**
34
+ * One entry per `did:webvh` DID in the deleted subtree whose local record was removed while its hosting server did not confirm removal of the published log. **Those DIDs may still resolve.** Only ever present when the request set `abandonHostCopies`; a requester that did not is refused instead. A consumer MUST surface it rather than treating the deletion as complete. Absent or empty means every host copy was confirmed gone.
35
+ */
36
+ daemonCleanupErrors?: 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/vta/contexts/delete/1.1" as const;
45
+
46
+ /**
47
+ * The earlier version of this specification that this one declares it
48
+ * extends (front matter `extends`, SPEC §5.2 "Declared extension"), or
49
+ * `null`. Only the direct declaration — follow the chain with
50
+ * `extendsChain` / `readForSpec`.
51
+ */
52
+ export const EXTENDS: string | null = null;
53
+
54
+ /**
55
+ * Why this version is deprecated, or `null` while it is current. A
56
+ * superseded or retired version is still supported, and is withdrawn from
57
+ * this package in a later scheduled batch (SPEC "Superseded and Withdrawn
58
+ * Versions").
59
+ */
60
+ export const DEPRECATION: string | null = null;
61
+
62
+ /** Stable alias for this specification's request payload shape. */
63
+ export type Payload = VTAContextsDeletePayload;
64
+
65
+ /** Trust Task response type URI (request type URI + "#response"). */
66
+ export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/vta/contexts/delete/1.1#response" as const;
67
+
68
+ /** Stable alias for this specification's success-response payload shape. */
69
+ export type Response = VTAContextsDeleteResponsePayload;
70
+
71
+ /**
72
+ * This specification's payload schema, as a value.
73
+ *
74
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
75
+ * rather than only as a `.json` file because TypeScript types are erased
76
+ * at runtime: without a schema a consumer has nothing to validate, and
77
+ * every REQUIRED payload member is optional in practice. Cross-file
78
+ * `$ref`s are already inlined, so it needs no resolver.
79
+ */
80
+ export const PAYLOAD_SCHEMA = {
81
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
82
+ "$id": "https://trusttasks.org/spec/vta/contexts/delete/1.1",
83
+ "title": "VTA Contexts Delete — payload",
84
+ "type": "object",
85
+ "additionalProperties": false,
86
+ "required": [
87
+ "id"
88
+ ],
89
+ "properties": {
90
+ "id": {
91
+ "type": "string",
92
+ "minLength": 1,
93
+ "description": "Context to delete."
94
+ },
95
+ "force": {
96
+ "type": "boolean",
97
+ "default": false,
98
+ "description": "Delete even though the context still holds keys, DIDs or templates. Default false, and the default is the point: without it a context holding anything is refused, so the destructive case is always something a caller asked for explicitly."
99
+ },
100
+ "abandonHostCopies": {
101
+ "type": "boolean",
102
+ "default": false,
103
+ "description": "Complete the deletion even where the published log of a `did:webvh` DID in the subtree could not be confirmed removed from its hosting server — the server unreachable, refusing, or no longer known to the VTA. Default false: such a deletion is refused with `vta/contexts/delete:hostCleanupFailed` and nothing is deleted locally, so the caller can wait for the host and retry. True accepts that the named DIDs may keep resolving and that removing them is now the caller's responsibility; each is reported in `daemonCleanupErrors`."
104
+ },
105
+ "ext": {
106
+ "$ref": "#/$defs/Ext"
107
+ }
108
+ },
109
+ "$defs": {
110
+ "Response": {
111
+ "$anchor": "response",
112
+ "title": "VTA Contexts Delete — response payload",
113
+ "description": "Success response to vta/contexts/delete. Type https://trusttasks.org/spec/vta/contexts/delete/1.1#response.",
114
+ "type": "object",
115
+ "additionalProperties": false,
116
+ "required": [
117
+ "id",
118
+ "deleted"
119
+ ],
120
+ "properties": {
121
+ "id": {
122
+ "type": "string"
123
+ },
124
+ "deleted": {
125
+ "type": "boolean",
126
+ "description": "Whether the context was removed. A successful response carrying `false` means the VTA declined to act — it is not an error, and a consumer MUST NOT report the deletion as done on the basis of the response status alone."
127
+ },
128
+ "daemonCleanupErrors": {
129
+ "type": "array",
130
+ "items": {
131
+ "type": "string"
132
+ },
133
+ "description": "One entry per `did:webvh` DID in the deleted subtree whose local record was removed while its hosting server did not confirm removal of the published log. **Those DIDs may still resolve.** Only ever present when the request set `abandonHostCopies`; a requester that did not is refused instead. A consumer MUST surface it rather than treating the deletion as complete. Absent or empty means every host copy was confirmed gone."
134
+ },
135
+ "ext": {
136
+ "$ref": "#/$defs/Ext"
137
+ }
138
+ }
139
+ },
140
+ "Ext": {
141
+ "title": "Ext",
142
+ "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.",
143
+ "type": "object",
144
+ "minProperties": 1,
145
+ "additionalProperties": true,
146
+ "propertyNames": {
147
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
148
+ }
149
+ }
150
+ }
151
+ } as const;
152
+
153
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
154
+ export const RESPONSE_PAYLOAD_SCHEMA = {
155
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
156
+ "$ref": "#/$defs/Response",
157
+ "$defs": {
158
+ "Response": {
159
+ "$anchor": "response",
160
+ "title": "VTA Contexts Delete — response payload",
161
+ "description": "Success response to vta/contexts/delete. Type https://trusttasks.org/spec/vta/contexts/delete/1.1#response.",
162
+ "type": "object",
163
+ "additionalProperties": false,
164
+ "required": [
165
+ "id",
166
+ "deleted"
167
+ ],
168
+ "properties": {
169
+ "id": {
170
+ "type": "string"
171
+ },
172
+ "deleted": {
173
+ "type": "boolean",
174
+ "description": "Whether the context was removed. A successful response carrying `false` means the VTA declined to act — it is not an error, and a consumer MUST NOT report the deletion as done on the basis of the response status alone."
175
+ },
176
+ "daemonCleanupErrors": {
177
+ "type": "array",
178
+ "items": {
179
+ "type": "string"
180
+ },
181
+ "description": "One entry per `did:webvh` DID in the deleted subtree whose local record was removed while its hosting server did not confirm removal of the published log. **Those DIDs may still resolve.** Only ever present when the request set `abandonHostCopies`; a requester that did not is refused instead. A consumer MUST surface it rather than treating the deletion as complete. Absent or empty means every host copy was confirmed gone."
182
+ },
183
+ "ext": {
184
+ "$ref": "#/$defs/Ext"
185
+ }
186
+ }
187
+ },
188
+ "Ext": {
189
+ "title": "Ext",
190
+ "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.",
191
+ "type": "object",
192
+ "minProperties": 1,
193
+ "additionalProperties": true,
194
+ "propertyNames": {
195
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
196
+ }
197
+ }
198
+ }
199
+ } as const;
200
+
201
+ /**
202
+ * SPEC.md §7.2 policy for the request variant, from this specification's
203
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
204
+ * per-specification and cannot be derived from the document alone, and
205
+ * item 2 needs the schema this carries.
206
+ */
207
+ export const SPEC = {
208
+ typeUri: TYPE_URI,
209
+ isBearer: false,
210
+ isProofRequired: true,
211
+ isRecipientRequired: true,
212
+ isIssuedAtRequired: true,
213
+ payloadSchema: PAYLOAD_SCHEMA,
214
+ } as const;
215
+
216
+ /**
217
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
218
+ * tracks the *issuer* party's requirement because a response swaps the
219
+ * parties (§7.3 item 5).
220
+ */
221
+ export const RESPONSE_SPEC = {
222
+ typeUri: RESPONSE_TYPE_URI,
223
+ isBearer: false,
224
+ isProofRequired: true,
225
+ isRecipientRequired: true,
226
+ isIssuedAtRequired: true,
227
+ payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
228
+ } as const;
@@ -6,7 +6,7 @@
6
6
  import type { Ext } from "../../../../../_shared/components.js";
7
7
 
8
8
 
9
- /** @deprecated superseded by vtc/install/claim/finish/0.3 */
9
+ /** @deprecated retired; use vtc/install/claim/passkey/finish/0.1 */
10
10
  export interface VTCInstallClaimFinishPayload {
11
11
  installToken: string;
12
12
  /**
@@ -19,7 +19,7 @@ export interface VTCInstallClaimFinishPayload {
19
19
  webauthnResponse: {};
20
20
  ext?: Ext;
21
21
  }
22
- /** @deprecated superseded by vtc/install/claim/finish/0.3 */
22
+ /** @deprecated retired; use vtc/install/claim/passkey/finish/0.1 */
23
23
  export interface VTCInstallClaimFinishResponsePayload {
24
24
  /**
25
25
  * Candidate admin DID derived from the passkey's Ed25519 public key.
@@ -52,12 +52,12 @@ export const EXTENDS: string | null = null;
52
52
  * this package in a later scheduled batch (SPEC "Superseded and Withdrawn
53
53
  * Versions").
54
54
  */
55
- export const DEPRECATION: string | null = "superseded by vtc/install/claim/finish/0.3";
55
+ export const DEPRECATION: string | null = "retired; use vtc/install/claim/passkey/finish/0.1";
56
56
 
57
57
  /**
58
58
  * Stable alias for this specification's request payload shape.
59
59
  *
60
- * @deprecated superseded by vtc/install/claim/finish/0.3
60
+ * @deprecated retired; use vtc/install/claim/passkey/finish/0.1
61
61
  */
62
62
  export type Payload = VTCInstallClaimFinishPayload;
63
63
 
@@ -67,7 +67,7 @@ export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/vtc/install/claim/
67
67
  /**
68
68
  * Stable alias for this specification's success-response payload shape.
69
69
  *
70
- * @deprecated superseded by vtc/install/claim/finish/0.3
70
+ * @deprecated retired; use vtc/install/claim/passkey/finish/0.1
71
71
  */
72
72
  export type Response = VTCInstallClaimFinishResponsePayload;
73
73
 
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/vtc/install/claim/passkey/finish/0.1/payload.schema.json
4
+ */
5
+
6
+ import type { Ext } from "../../../../../../_shared/components.js";
7
+
8
+
9
+ /**
10
+ * Complete first-administrator enrolment with a passkey: submit the WebAuthn registration and one assertion proving possession of the registered key, from whose credential public key — Ed25519 or P-256 — the administrator's did:key is derived, and receive a setup-session token. The passkey ceremony of vtc/install/claim/finish 0.2, widened from Ed25519 alone to P-256. The outer document members (id, type, issuer, recipient, issuedAt, expiresAt, proof) are owned by the framework — SPEC §6.3.
11
+ */
12
+ export interface VTCInstallClaimPasskeyFinishPayload {
13
+ /**
14
+ * The install JWT the claim was started with.
15
+ */
16
+ installToken: string;
17
+ /**
18
+ * From vtc/install/claim/passkey/start.
19
+ */
20
+ registrationId: string;
21
+ /**
22
+ * RegisterPublicKeyCredential from navigator.credentials.create() (opaque here). Its credential public key is a COSE key for EdDSA/Ed25519 (alg -8) or ES256/P-256 (alg -7); any other is refused with unsupportedAlgorithm.
23
+ */
24
+ webauthnResponse: {};
25
+ /**
26
+ * PublicKeyCredential from navigator.credentials.get() (opaque here): one assertion by the credential just registered, over the assertion challenge vtc/install/claim/passkey/start issued. Verified against the key the administrator's DID is derived from; it is the proof of possession, whatever the registration's attestation format.
27
+ */
28
+ webauthnAssertion: {};
29
+ ext?: Ext;
30
+ }
31
+ export interface VTCInstallClaimPasskeyFinishResponsePayload {
32
+ /**
33
+ * The administrator's DID: the did:key of the passkey credential's own public key — Ed25519 (multicodec 0xed01, did:key:z6Mk…) or P-256, compressed (multicodec 0x1200, did:key:zDn…). Derived by the community from the registered key, never taken from the install token.
34
+ */
35
+ adminDid: string;
36
+ /**
37
+ * EdDSA JWT (aud=vtc-install-session, 5min TTL) consumed by admin/bootstrap.
38
+ */
39
+ setupSessionToken: string;
40
+ ext?: Ext;
41
+ }
42
+
43
+ /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
44
+ export type { Ext };
45
+
46
+ /** Trust Task type URI. */
47
+ export const TYPE_URI = "https://trusttasks.org/spec/vtc/install/claim/passkey/finish/0.1" as const;
48
+
49
+ /**
50
+ * The earlier version of this specification that this one declares it
51
+ * extends (front matter `extends`, SPEC §5.2 "Declared extension"), or
52
+ * `null`. Only the direct declaration — follow the chain with
53
+ * `extendsChain` / `readForSpec`.
54
+ */
55
+ export const EXTENDS: string | null = null;
56
+
57
+ /**
58
+ * Why this version is deprecated, or `null` while it is current. A
59
+ * superseded or retired version is still supported, and is withdrawn from
60
+ * this package in a later scheduled batch (SPEC "Superseded and Withdrawn
61
+ * Versions").
62
+ */
63
+ export const DEPRECATION: string | null = null;
64
+
65
+ /** Stable alias for this specification's request payload shape. */
66
+ export type Payload = VTCInstallClaimPasskeyFinishPayload;
67
+
68
+ /** Trust Task response type URI (request type URI + "#response"). */
69
+ export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/vtc/install/claim/passkey/finish/0.1#response" as const;
70
+
71
+ /** Stable alias for this specification's success-response payload shape. */
72
+ export type Response = VTCInstallClaimPasskeyFinishResponsePayload;
73
+
74
+ /**
75
+ * This specification's payload schema, as a value.
76
+ *
77
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
78
+ * rather than only as a `.json` file because TypeScript types are erased
79
+ * at runtime: without a schema a consumer has nothing to validate, and
80
+ * every REQUIRED payload member is optional in practice. Cross-file
81
+ * `$ref`s are already inlined, so it needs no resolver.
82
+ */
83
+ export const PAYLOAD_SCHEMA = {
84
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
85
+ "$id": "https://trusttasks.org/spec/vtc/install/claim/passkey/finish/0.1",
86
+ "title": "VTC Install Claim Passkey Finish — payload",
87
+ "description": "Complete first-administrator enrolment with a passkey: submit the WebAuthn registration and one assertion proving possession of the registered key, from whose credential public key — Ed25519 or P-256 — the administrator's did:key is derived, and receive a setup-session token. The passkey ceremony of vtc/install/claim/finish 0.2, widened from Ed25519 alone to P-256. The outer document members (id, type, issuer, recipient, issuedAt, expiresAt, proof) are owned by the framework — SPEC §6.3.",
88
+ "type": "object",
89
+ "additionalProperties": false,
90
+ "required": [
91
+ "installToken",
92
+ "registrationId",
93
+ "webauthnResponse",
94
+ "webauthnAssertion"
95
+ ],
96
+ "properties": {
97
+ "installToken": {
98
+ "type": "string",
99
+ "minLength": 1,
100
+ "description": "The install JWT the claim was started with."
101
+ },
102
+ "registrationId": {
103
+ "type": "string",
104
+ "minLength": 1,
105
+ "description": "From vtc/install/claim/passkey/start."
106
+ },
107
+ "webauthnResponse": {
108
+ "type": "object",
109
+ "description": "RegisterPublicKeyCredential from navigator.credentials.create() (opaque here). Its credential public key is a COSE key for EdDSA/Ed25519 (alg -8) or ES256/P-256 (alg -7); any other is refused with unsupportedAlgorithm."
110
+ },
111
+ "webauthnAssertion": {
112
+ "type": "object",
113
+ "description": "PublicKeyCredential from navigator.credentials.get() (opaque here): one assertion by the credential just registered, over the assertion challenge vtc/install/claim/passkey/start issued. Verified against the key the administrator's DID is derived from; it is the proof of possession, whatever the registration's attestation format."
114
+ },
115
+ "ext": {
116
+ "$ref": "#/$defs/Ext"
117
+ }
118
+ },
119
+ "$defs": {
120
+ "Response": {
121
+ "$anchor": "response",
122
+ "title": "VTC Install Claim Passkey Finish — response payload",
123
+ "type": "object",
124
+ "additionalProperties": false,
125
+ "required": [
126
+ "adminDid",
127
+ "setupSessionToken"
128
+ ],
129
+ "properties": {
130
+ "adminDid": {
131
+ "type": "string",
132
+ "pattern": "^did:key:z(6Mk|Dn)[1-9A-HJ-NP-Za-km-z]+$",
133
+ "description": "The administrator's DID: the did:key of the passkey credential's own public key — Ed25519 (multicodec 0xed01, did:key:z6Mk…) or P-256, compressed (multicodec 0x1200, did:key:zDn…). Derived by the community from the registered key, never taken from the install token."
134
+ },
135
+ "setupSessionToken": {
136
+ "type": "string",
137
+ "minLength": 1,
138
+ "description": "EdDSA JWT (aud=vtc-install-session, 5min TTL) consumed by admin/bootstrap."
139
+ },
140
+ "ext": {
141
+ "$ref": "#/$defs/Ext"
142
+ }
143
+ }
144
+ },
145
+ "Ext": {
146
+ "title": "Ext",
147
+ "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.",
148
+ "type": "object",
149
+ "minProperties": 1,
150
+ "additionalProperties": true,
151
+ "propertyNames": {
152
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
153
+ }
154
+ }
155
+ }
156
+ } as const;
157
+
158
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
159
+ export const RESPONSE_PAYLOAD_SCHEMA = {
160
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
161
+ "$ref": "#/$defs/Response",
162
+ "$defs": {
163
+ "Response": {
164
+ "$anchor": "response",
165
+ "title": "VTC Install Claim Passkey Finish — response payload",
166
+ "type": "object",
167
+ "additionalProperties": false,
168
+ "required": [
169
+ "adminDid",
170
+ "setupSessionToken"
171
+ ],
172
+ "properties": {
173
+ "adminDid": {
174
+ "type": "string",
175
+ "pattern": "^did:key:z(6Mk|Dn)[1-9A-HJ-NP-Za-km-z]+$",
176
+ "description": "The administrator's DID: the did:key of the passkey credential's own public key — Ed25519 (multicodec 0xed01, did:key:z6Mk…) or P-256, compressed (multicodec 0x1200, did:key:zDn…). Derived by the community from the registered key, never taken from the install token."
177
+ },
178
+ "setupSessionToken": {
179
+ "type": "string",
180
+ "minLength": 1,
181
+ "description": "EdDSA JWT (aud=vtc-install-session, 5min TTL) consumed by admin/bootstrap."
182
+ },
183
+ "ext": {
184
+ "$ref": "#/$defs/Ext"
185
+ }
186
+ }
187
+ },
188
+ "Ext": {
189
+ "title": "Ext",
190
+ "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.",
191
+ "type": "object",
192
+ "minProperties": 1,
193
+ "additionalProperties": true,
194
+ "propertyNames": {
195
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
196
+ }
197
+ }
198
+ }
199
+ } as const;
200
+
201
+ /**
202
+ * SPEC.md §7.2 policy for the request variant, from this specification's
203
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
204
+ * per-specification and cannot be derived from the document alone, and
205
+ * item 2 needs the schema this carries.
206
+ */
207
+ export const SPEC = {
208
+ typeUri: TYPE_URI,
209
+ isBearer: false,
210
+ isProofRequired: false,
211
+ isRecipientRequired: true,
212
+ isIssuedAtRequired: true,
213
+ payloadSchema: PAYLOAD_SCHEMA,
214
+ } as const;
215
+
216
+ /**
217
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
218
+ * tracks the *issuer* party's requirement because a response swaps the
219
+ * parties (§7.3 item 5).
220
+ */
221
+ export const RESPONSE_SPEC = {
222
+ typeUri: RESPONSE_TYPE_URI,
223
+ isBearer: false,
224
+ isProofRequired: true,
225
+ isRecipientRequired: true,
226
+ isIssuedAtRequired: true,
227
+ payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
228
+ } as const;