@openvtc/trust-tasks 0.28.1 → 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 (92) hide show
  1. package/CHANGELOG.md +201 -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 +15 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +15 -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/vtc/install/claim/finish/0.2/payload.d.ts +4 -4
  51. package/dist/vtc/install/claim/finish/0.2/payload.d.ts.map +1 -1
  52. package/dist/vtc/install/claim/finish/0.2/payload.js +1 -1
  53. package/dist/vtc/install/claim/finish/0.2/payload.js.map +1 -1
  54. package/dist/vtc/install/claim/passkey/finish/0.1/payload.d.ts +306 -0
  55. package/dist/vtc/install/claim/passkey/finish/0.1/payload.d.ts.map +1 -0
  56. package/dist/vtc/install/claim/passkey/finish/0.1/payload.js +175 -0
  57. package/dist/vtc/install/claim/passkey/finish/0.1/payload.js.map +1 -0
  58. package/dist/vtc/install/claim/passkey/start/0.1/payload.d.ts +302 -0
  59. package/dist/vtc/install/claim/passkey/start/0.1/payload.d.ts.map +1 -0
  60. package/dist/vtc/install/claim/passkey/start/0.1/payload.js +172 -0
  61. package/dist/vtc/install/claim/passkey/start/0.1/payload.js.map +1 -0
  62. package/dist/vtc/install/claim/start/0.2/payload.d.ts +4 -4
  63. package/dist/vtc/install/claim/start/0.2/payload.d.ts.map +1 -1
  64. package/dist/vtc/install/claim/start/0.2/payload.js +1 -1
  65. package/dist/vtc/install/claim/start/0.2/payload.js.map +1 -1
  66. package/dist/vtc/members/role/set/0.1/payload.d.ts +1867 -0
  67. package/dist/vtc/members/role/set/0.1/payload.d.ts.map +1 -0
  68. package/dist/vtc/members/role/set/0.1/payload.js +1060 -0
  69. package/dist/vtc/members/role/set/0.1/payload.js.map +1 -0
  70. package/package.json +1 -1
  71. package/src/_runtime/document.ts +18 -2
  72. package/src/_runtime/index.ts +1 -0
  73. package/src/auth/step-up/approve-request/0.5/payload.ts +2 -2
  74. package/src/auth/step-up/approve-response/0.1/payload.ts +5 -5
  75. package/src/auth/step-up/approve-response/0.2/payload.ts +5 -5
  76. package/src/auth/step-up/approve-response/0.3/payload.ts +5 -5
  77. package/src/auth/step-up/approve-response/0.4/payload.ts +5 -5
  78. package/src/auth/step-up/approve-response/0.5/payload.ts +5 -5
  79. package/src/auth/step-up/approve-response/0.6/payload.ts +15 -3
  80. package/src/auth/step-up/approve-response/0.7/payload.ts +664 -0
  81. package/src/auth/step-up/approver/attest/0.1/payload.ts +2 -2
  82. package/src/index.ts +15 -0
  83. package/src/rooms/owner/group/remove/0.1/payload.ts +5 -5
  84. package/src/rooms/owner/group/remove/0.2/payload.ts +5 -5
  85. package/src/rooms/owner/group/remove/0.3/payload.ts +15 -3
  86. package/src/rooms/owner/group/remove/0.4/payload.ts +442 -0
  87. package/src/task-consent/decision/0.2/payload.ts +3 -3
  88. package/src/vtc/install/claim/finish/0.2/payload.ts +5 -5
  89. package/src/vtc/install/claim/passkey/finish/0.1/payload.ts +228 -0
  90. package/src/vtc/install/claim/passkey/start/0.1/payload.ts +225 -0
  91. package/src/vtc/install/claim/start/0.2/payload.ts +5 -5
  92. 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,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;
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/vtc/install/claim/passkey/start/0.1/payload.schema.json
4
+ */
5
+
6
+ import type { Ext } from "../../../../../../_shared/components.js";
7
+
8
+
9
+ /**
10
+ * Begin claiming a fresh community with a passkey: exchange the install token (and its claim code, when the token was issued with one) for a WebAuthn registration challenge, and the assertion challenge with which the installer will prove possession of the passkey. The passkey ceremony of vtc/install/claim/start 0.2, with the administrator's DID derived from the passkey's own key — Ed25519 or P-256 — and never named by the token. The outer document members (id, type, issuer, recipient, issuedAt, expiresAt, proof) are owned by the framework — SPEC §6.3.
11
+ */
12
+ export interface VTCInstallClaimPasskeyStartPayload {
13
+ /**
14
+ * The EdDSA-signed install JWT (aud=vtc-install) printed by vtc setup.
15
+ */
16
+ installToken: string;
17
+ /**
18
+ * A short code the operator receives **out of band**, alongside the install URL but through a separate channel.
19
+ *
20
+ * The second factor on a claim: the URL alone is deliberately insufficient, so a stolen or forwarded install link cannot claim the passkey by itself. A maintainer that mints one shows the plaintext once and stores only a hash; a claim that omits or fails it is refused before any registration challenge is issued.
21
+ *
22
+ * Optional in the schema because a maintainer may issue tokens without one — but a maintainer that does issue one MUST require it, and SHOULD issue one for any invite that travels over a channel it does not control.
23
+ */
24
+ claimSecret?: string;
25
+ ext?: Ext;
26
+ }
27
+ export interface VTCInstallClaimPasskeyStartResponsePayload {
28
+ /**
29
+ * Echoes the install token's jti (a UUID); pass it back to vtc/install/claim/passkey/finish.
30
+ */
31
+ registrationId: string;
32
+ /**
33
+ * WebAuthn PublicKeyCredentialCreationOptions (opaque here). pubKeyCredParams lists exactly EdDSA (-8, Ed25519) and ES256 (-7, P-256), the two algorithms whose key the administrator's did:key can name; user.id, user.name and user.displayName name no DID.
34
+ */
35
+ options: {};
36
+ /**
37
+ * WebAuthn PublicKeyCredentialRequestOptions (opaque here) for the one assertion that proves possession of the passkey just registered: a fresh challenge of at least 128 bits, distinct from the creation challenge, single-use and bound to this registration, with the community's rpId. allowCredentials is omitted — the credential does not exist yet — and the installer's page sets it to the rawId navigator.credentials.create() returned.
38
+ */
39
+ assertionOptions: {};
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/start/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 = VTCInstallClaimPasskeyStartPayload;
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/start/0.1#response" as const;
70
+
71
+ /** Stable alias for this specification's success-response payload shape. */
72
+ export type Response = VTCInstallClaimPasskeyStartResponsePayload;
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/start/0.1",
86
+ "title": "VTC Install Claim Passkey Start — payload",
87
+ "description": "Begin claiming a fresh community with a passkey: exchange the install token (and its claim code, when the token was issued with one) for a WebAuthn registration challenge, and the assertion challenge with which the installer will prove possession of the passkey. The passkey ceremony of vtc/install/claim/start 0.2, with the administrator's DID derived from the passkey's own key — Ed25519 or P-256 — and never named by the token. 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
+ ],
93
+ "properties": {
94
+ "installToken": {
95
+ "type": "string",
96
+ "minLength": 1,
97
+ "description": "The EdDSA-signed install JWT (aud=vtc-install) printed by vtc setup."
98
+ },
99
+ "claimSecret": {
100
+ "type": "string",
101
+ "minLength": 1,
102
+ "description": "A short code the operator receives **out of band**, alongside the install URL but through a separate channel.\n\nThe second factor on a claim: the URL alone is deliberately insufficient, so a stolen or forwarded install link cannot claim the passkey by itself. A maintainer that mints one shows the plaintext once and stores only a hash; a claim that omits or fails it is refused before any registration challenge is issued.\n\nOptional in the schema because a maintainer may issue tokens without one — but a maintainer that does issue one MUST require it, and SHOULD issue one for any invite that travels over a channel it does not control."
103
+ },
104
+ "ext": {
105
+ "$ref": "#/$defs/Ext"
106
+ }
107
+ },
108
+ "$defs": {
109
+ "Response": {
110
+ "$anchor": "response",
111
+ "title": "VTC Install Claim Passkey Start — response payload",
112
+ "type": "object",
113
+ "additionalProperties": false,
114
+ "required": [
115
+ "registrationId",
116
+ "options",
117
+ "assertionOptions"
118
+ ],
119
+ "properties": {
120
+ "registrationId": {
121
+ "type": "string",
122
+ "minLength": 1,
123
+ "description": "Echoes the install token's jti (a UUID); pass it back to vtc/install/claim/passkey/finish."
124
+ },
125
+ "options": {
126
+ "type": "object",
127
+ "description": "WebAuthn PublicKeyCredentialCreationOptions (opaque here). pubKeyCredParams lists exactly EdDSA (-8, Ed25519) and ES256 (-7, P-256), the two algorithms whose key the administrator's did:key can name; user.id, user.name and user.displayName name no DID."
128
+ },
129
+ "assertionOptions": {
130
+ "type": "object",
131
+ "description": "WebAuthn PublicKeyCredentialRequestOptions (opaque here) for the one assertion that proves possession of the passkey just registered: a fresh challenge of at least 128 bits, distinct from the creation challenge, single-use and bound to this registration, with the community's rpId. allowCredentials is omitted — the credential does not exist yet — and the installer's page sets it to the rawId navigator.credentials.create() returned."
132
+ },
133
+ "ext": {
134
+ "$ref": "#/$defs/Ext"
135
+ }
136
+ }
137
+ },
138
+ "Ext": {
139
+ "title": "Ext",
140
+ "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.",
141
+ "type": "object",
142
+ "minProperties": 1,
143
+ "additionalProperties": true,
144
+ "propertyNames": {
145
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
146
+ }
147
+ }
148
+ }
149
+ } as const;
150
+
151
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
152
+ export const RESPONSE_PAYLOAD_SCHEMA = {
153
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
154
+ "$ref": "#/$defs/Response",
155
+ "$defs": {
156
+ "Response": {
157
+ "$anchor": "response",
158
+ "title": "VTC Install Claim Passkey Start — response payload",
159
+ "type": "object",
160
+ "additionalProperties": false,
161
+ "required": [
162
+ "registrationId",
163
+ "options",
164
+ "assertionOptions"
165
+ ],
166
+ "properties": {
167
+ "registrationId": {
168
+ "type": "string",
169
+ "minLength": 1,
170
+ "description": "Echoes the install token's jti (a UUID); pass it back to vtc/install/claim/passkey/finish."
171
+ },
172
+ "options": {
173
+ "type": "object",
174
+ "description": "WebAuthn PublicKeyCredentialCreationOptions (opaque here). pubKeyCredParams lists exactly EdDSA (-8, Ed25519) and ES256 (-7, P-256), the two algorithms whose key the administrator's did:key can name; user.id, user.name and user.displayName name no DID."
175
+ },
176
+ "assertionOptions": {
177
+ "type": "object",
178
+ "description": "WebAuthn PublicKeyCredentialRequestOptions (opaque here) for the one assertion that proves possession of the passkey just registered: a fresh challenge of at least 128 bits, distinct from the creation challenge, single-use and bound to this registration, with the community's rpId. allowCredentials is omitted — the credential does not exist yet — and the installer's page sets it to the rawId navigator.credentials.create() returned."
179
+ },
180
+ "ext": {
181
+ "$ref": "#/$defs/Ext"
182
+ }
183
+ }
184
+ },
185
+ "Ext": {
186
+ "title": "Ext",
187
+ "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.",
188
+ "type": "object",
189
+ "minProperties": 1,
190
+ "additionalProperties": true,
191
+ "propertyNames": {
192
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
193
+ }
194
+ }
195
+ }
196
+ } as const;
197
+
198
+ /**
199
+ * SPEC.md §7.2 policy for the request variant, from this specification's
200
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
201
+ * per-specification and cannot be derived from the document alone, and
202
+ * item 2 needs the schema this carries.
203
+ */
204
+ export const SPEC = {
205
+ typeUri: TYPE_URI,
206
+ isBearer: false,
207
+ isProofRequired: false,
208
+ isRecipientRequired: true,
209
+ isIssuedAtRequired: false,
210
+ payloadSchema: PAYLOAD_SCHEMA,
211
+ } as const;
212
+
213
+ /**
214
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
215
+ * tracks the *issuer* party's requirement because a response swaps the
216
+ * parties (§7.3 item 5).
217
+ */
218
+ export const RESPONSE_SPEC = {
219
+ typeUri: RESPONSE_TYPE_URI,
220
+ isBearer: false,
221
+ isProofRequired: false,
222
+ isRecipientRequired: true,
223
+ isIssuedAtRequired: false,
224
+ payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
225
+ } 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/start/0.3 */
9
+ /** @deprecated retired; use vtc/install/claim/passkey/start/0.1 */
10
10
  export interface VTCInstallClaimStartPayload {
11
11
  /**
12
12
  * The EdDSA-signed install JWT (aud=vtc-install) printed by vtc setup.
@@ -22,7 +22,7 @@ export interface VTCInstallClaimStartPayload {
22
22
  claimSecret?: string;
23
23
  ext?: Ext;
24
24
  }
25
- /** @deprecated superseded by vtc/install/claim/start/0.3 */
25
+ /** @deprecated retired; use vtc/install/claim/passkey/start/0.1 */
26
26
  export interface VTCInstallClaimStartResponsePayload {
27
27
  /**
28
28
  * Echoes the install token's jti (a UUID); pass it back to claim/finish.
@@ -55,12 +55,12 @@ export const EXTENDS: string | null = null;
55
55
  * this package in a later scheduled batch (SPEC "Superseded and Withdrawn
56
56
  * Versions").
57
57
  */
58
- export const DEPRECATION: string | null = "superseded by vtc/install/claim/start/0.3";
58
+ export const DEPRECATION: string | null = "retired; use vtc/install/claim/passkey/start/0.1";
59
59
 
60
60
  /**
61
61
  * Stable alias for this specification's request payload shape.
62
62
  *
63
- * @deprecated superseded by vtc/install/claim/start/0.3
63
+ * @deprecated retired; use vtc/install/claim/passkey/start/0.1
64
64
  */
65
65
  export type Payload = VTCInstallClaimStartPayload;
66
66
 
@@ -70,7 +70,7 @@ export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/vtc/install/claim/
70
70
  /**
71
71
  * Stable alias for this specification's success-response payload shape.
72
72
  *
73
- * @deprecated superseded by vtc/install/claim/start/0.3
73
+ * @deprecated retired; use vtc/install/claim/passkey/start/0.1
74
74
  */
75
75
  export type Response = VTCInstallClaimStartResponsePayload;
76
76