@openvtc/trust-tasks 0.19.1 → 0.19.3

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 (40) hide show
  1. package/CHANGELOG.md +121 -0
  2. package/dist/_shared/components.d.ts +4 -0
  3. package/dist/_shared/components.d.ts.map +1 -1
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +2 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/keys/create/0.1/payload.d.ts +20 -0
  9. package/dist/keys/create/0.1/payload.d.ts.map +1 -1
  10. package/dist/keys/create/0.1/payload.js +10 -0
  11. package/dist/keys/create/0.1/payload.js.map +1 -1
  12. package/dist/keys/export-secret/0.1/payload.d.ts +309 -0
  13. package/dist/keys/export-secret/0.1/payload.d.ts.map +1 -0
  14. package/dist/keys/export-secret/0.1/payload.js +181 -0
  15. package/dist/keys/export-secret/0.1/payload.js.map +1 -0
  16. package/dist/keys/import/0.1/payload.d.ts +20 -0
  17. package/dist/keys/import/0.1/payload.d.ts.map +1 -1
  18. package/dist/keys/import/0.1/payload.js +10 -0
  19. package/dist/keys/import/0.1/payload.js.map +1 -1
  20. package/dist/keys/list/0.1/payload.d.ts +20 -0
  21. package/dist/keys/list/0.1/payload.d.ts.map +1 -1
  22. package/dist/keys/list/0.1/payload.js +10 -0
  23. package/dist/keys/list/0.1/payload.js.map +1 -1
  24. package/dist/keys/set-exportability/0.1/payload.d.ts +560 -0
  25. package/dist/keys/set-exportability/0.1/payload.d.ts.map +1 -0
  26. package/dist/keys/set-exportability/0.1/payload.js +330 -0
  27. package/dist/keys/set-exportability/0.1/payload.js.map +1 -0
  28. package/dist/keys/show/0.1/payload.d.ts +20 -0
  29. package/dist/keys/show/0.1/payload.d.ts.map +1 -1
  30. package/dist/keys/show/0.1/payload.js +10 -0
  31. package/dist/keys/show/0.1/payload.js.map +1 -1
  32. package/package.json +1 -1
  33. package/src/_shared/components.ts +4 -0
  34. package/src/index.ts +2 -0
  35. package/src/keys/create/0.1/payload.ts +10 -0
  36. package/src/keys/export-secret/0.1/payload.ts +227 -0
  37. package/src/keys/import/0.1/payload.ts +10 -0
  38. package/src/keys/list/0.1/payload.ts +10 -0
  39. package/src/keys/set-exportability/0.1/payload.ts +371 -0
  40. package/src/keys/show/0.1/payload.ts +10 -0
@@ -0,0 +1,330 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/keys/set-exportability/0.1/payload.schema.json
4
+ */
5
+ /** Trust Task type URI. */
6
+ export const TYPE_URI = "https://trusttasks.org/spec/keys/set-exportability/0.1";
7
+ /** Trust Task response type URI (request type URI + "#response"). */
8
+ export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/keys/set-exportability/0.1#response";
9
+ /**
10
+ * This specification's payload schema, as a value.
11
+ *
12
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
13
+ * rather than only as a `.json` file because TypeScript types are erased
14
+ * at runtime: without a schema a consumer has nothing to validate, and
15
+ * every REQUIRED payload member is optional in practice. Cross-file
16
+ * `$ref`s are already inlined, so it needs no resolver.
17
+ */
18
+ export const PAYLOAD_SCHEMA = {
19
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
20
+ "$id": "https://trusttasks.org/spec/keys/set-exportability/0.1",
21
+ "title": "Keys Set Exportability — payload",
22
+ "description": "Names one key and the exportability it should carry afterwards. The outer document members (id, type, issuer, recipient, issuedAt, expiresAt, proof) are owned by the framework — SPEC §6.3.",
23
+ "type": "object",
24
+ "additionalProperties": false,
25
+ "required": [
26
+ "keyId",
27
+ "exportable"
28
+ ],
29
+ "properties": {
30
+ "keyId": {
31
+ "type": "string",
32
+ "minLength": 1,
33
+ "description": "The key whose exportability changes. Custodian-scoped, as everywhere in `keys/*`."
34
+ },
35
+ "exportable": {
36
+ "type": "boolean",
37
+ "description": "The state the key should be in when this request succeeds — not a delta. `false` asks the custodian to refuse every future export of the key; `true` asks it to allow them again. Stated absolutely so a repeat of the same request is a no-op rather than a toggle: a producer that retried a lost reply must not discover it has undone itself."
38
+ },
39
+ "ext": {
40
+ "$ref": "#/$defs/Ext"
41
+ }
42
+ },
43
+ "$defs": {
44
+ "Response": {
45
+ "$anchor": "response",
46
+ "title": "Keys Set Exportability — response payload",
47
+ "description": "The success response: the key record as it now stands. Returning the whole record rather than an acknowledgement lets a producer confirm the state it asked for without a second round trip. Wrapped in `key` to match the rest of the family (`keys/show`, `keys/create`). Carried in a Trust Task document whose type is https://trusttasks.org/spec/keys/set-exportability/0.1#response.",
48
+ "type": "object",
49
+ "additionalProperties": false,
50
+ "required": [
51
+ "key"
52
+ ],
53
+ "properties": {
54
+ "key": {
55
+ "description": "The record the custodian now holds. Never null — a request naming a key the custodian does not hold is `keys:notFound`, not a successful answer with no record. This differs from `keys/show`, where 'no such key' is a legitimate success.",
56
+ "$ref": "#/$defs/KeyRecord"
57
+ }
58
+ }
59
+ },
60
+ "KeyRecord": {
61
+ "title": "KeyRecord",
62
+ "type": "object",
63
+ "additionalProperties": false,
64
+ "required": [
65
+ "keyId",
66
+ "keyType",
67
+ "status",
68
+ "publicKey",
69
+ "createdAt"
70
+ ],
71
+ "properties": {
72
+ "keyId": {
73
+ "type": "string",
74
+ "minLength": 1,
75
+ "description": "Maintainer-scoped identifier for the key. Stable for the key's lifetime except through an explicit `keys/rename`."
76
+ },
77
+ "keyType": {
78
+ "$ref": "#/$defs/KeyType"
79
+ },
80
+ "status": {
81
+ "$ref": "#/$defs/KeyStatus"
82
+ },
83
+ "publicKey": {
84
+ "type": "string",
85
+ "minLength": 1,
86
+ "description": "The public half, multibase-encoded. The private half is never carried by any keys/* response."
87
+ },
88
+ "derivationPath": {
89
+ "type": "string",
90
+ "description": "Hierarchical-deterministic path the key was derived at, when `origin` is `derived`. Absent for imported keys, which have no path."
91
+ },
92
+ "seedId": {
93
+ "type": "integer",
94
+ "minimum": 0,
95
+ "description": "Identifier of the seed the key was derived from, when the maintainer holds more than one. Absent for imported keys."
96
+ },
97
+ "origin": {
98
+ "$ref": "#/$defs/KeyOrigin"
99
+ },
100
+ "label": {
101
+ "type": "string",
102
+ "maxLength": 256,
103
+ "description": "Optional human-readable label. Operator-facing only; carries no authorization meaning."
104
+ },
105
+ "exportable": {
106
+ "type": "boolean",
107
+ "description": "Whether the private half may be released to a caller. `false` means the custodian refuses every export of this key and can only be asked to *use* it — signing, key agreement — so the material never leaves. **Absence means the key may be exported.** That is the permissive reading, and it is deliberate: it is what every record written before this member existed already meant, so a custodian adding the member cannot silently retract access to keys its callers already hold. A consumer MUST NOT infer the converse — absence is not a statement that export was considered and allowed. Marking a key non-exportable does not make it unrecoverable: a custodian's own whole-store backup is a different mechanism from an export to a caller, and this member does not speak to it.",
108
+ "$comment": "No JSON Schema `default` is declared here on purpose. A declared default is materialised by the generated bindings — the field becomes non-optional with a serde default — so an absent member reappears as an explicit `true` on re-serialisation, which breaks round-trip idempotence for every record written before this member existed. The permissive reading is stated in prose above, where a binding cannot act on it."
109
+ },
110
+ "contextId": {
111
+ "type": "string",
112
+ "description": "Scope the key belongs to. **Absence is not 'every scope'** — a key with no context is reachable only by a caller with unrestricted authority over the maintainer, which is the more restrictive reading, and a consumer that treats absence as a wildcard inverts the guarantee."
113
+ },
114
+ "createdAt": {
115
+ "type": "string",
116
+ "format": "date-time",
117
+ "description": "RFC 3339 timestamp at which the key was created or imported."
118
+ },
119
+ "updatedAt": {
120
+ "type": "string",
121
+ "format": "date-time",
122
+ "description": "RFC 3339 timestamp of the last change to the record (rename, revocation)."
123
+ },
124
+ "ext": {
125
+ "$ref": "#/$defs/Ext"
126
+ }
127
+ }
128
+ },
129
+ "KeyOrigin": {
130
+ "title": "KeyOrigin",
131
+ "type": "string",
132
+ "enum": [
133
+ "derived",
134
+ "imported",
135
+ "internal"
136
+ ],
137
+ "description": "Where the private key came from. `derived` means the maintainer generated it from a seed it holds and can reproduce it from `derivationPath`; `imported` means it arrived from outside and exists only as stored material; `internal` means the maintainer generated it from a CSPRNG and it is reproducible from nothing at all. The distinction is operationally load-bearing: a `derived` key survives a seed restore, an `imported` one is lost unless it was backed up separately, and an `internal` one cannot be recovered by any means once the maintainer's storage is gone. This member is also the only way a consumer can confirm that a `keys/create` request for an `internal` key was honoured rather than silently downgraded to a derived one — see that specification's `internal` member.",
138
+ "default": "derived"
139
+ },
140
+ "KeyStatus": {
141
+ "title": "KeyStatus",
142
+ "type": "string",
143
+ "enum": [
144
+ "active",
145
+ "revoked"
146
+ ],
147
+ "description": "Lifecycle state. Only an `active` key may be named in a signing request; a `revoked` key is retained so historic signatures remain attributable, and MUST NOT be reactivated."
148
+ },
149
+ "KeyType": {
150
+ "title": "KeyType",
151
+ "type": "string",
152
+ "enum": [
153
+ "ed25519",
154
+ "x25519",
155
+ "p256"
156
+ ],
157
+ "description": "Cryptographic algorithm the key material belongs to. `ed25519` signs (EdDSA), `x25519` performs key agreement and never signs, `p256` signs (ES256)."
158
+ },
159
+ "Ext": {
160
+ "title": "Ext",
161
+ "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.",
162
+ "type": "object",
163
+ "minProperties": 1,
164
+ "additionalProperties": true,
165
+ "propertyNames": {
166
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
167
+ }
168
+ }
169
+ }
170
+ };
171
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
172
+ export const RESPONSE_PAYLOAD_SCHEMA = {
173
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
174
+ "$ref": "#/$defs/Response",
175
+ "$defs": {
176
+ "Response": {
177
+ "$anchor": "response",
178
+ "title": "Keys Set Exportability — response payload",
179
+ "description": "The success response: the key record as it now stands. Returning the whole record rather than an acknowledgement lets a producer confirm the state it asked for without a second round trip. Wrapped in `key` to match the rest of the family (`keys/show`, `keys/create`). Carried in a Trust Task document whose type is https://trusttasks.org/spec/keys/set-exportability/0.1#response.",
180
+ "type": "object",
181
+ "additionalProperties": false,
182
+ "required": [
183
+ "key"
184
+ ],
185
+ "properties": {
186
+ "key": {
187
+ "description": "The record the custodian now holds. Never null — a request naming a key the custodian does not hold is `keys:notFound`, not a successful answer with no record. This differs from `keys/show`, where 'no such key' is a legitimate success.",
188
+ "$ref": "#/$defs/KeyRecord"
189
+ }
190
+ }
191
+ },
192
+ "KeyRecord": {
193
+ "title": "KeyRecord",
194
+ "type": "object",
195
+ "additionalProperties": false,
196
+ "required": [
197
+ "keyId",
198
+ "keyType",
199
+ "status",
200
+ "publicKey",
201
+ "createdAt"
202
+ ],
203
+ "properties": {
204
+ "keyId": {
205
+ "type": "string",
206
+ "minLength": 1,
207
+ "description": "Maintainer-scoped identifier for the key. Stable for the key's lifetime except through an explicit `keys/rename`."
208
+ },
209
+ "keyType": {
210
+ "$ref": "#/$defs/KeyType"
211
+ },
212
+ "status": {
213
+ "$ref": "#/$defs/KeyStatus"
214
+ },
215
+ "publicKey": {
216
+ "type": "string",
217
+ "minLength": 1,
218
+ "description": "The public half, multibase-encoded. The private half is never carried by any keys/* response."
219
+ },
220
+ "derivationPath": {
221
+ "type": "string",
222
+ "description": "Hierarchical-deterministic path the key was derived at, when `origin` is `derived`. Absent for imported keys, which have no path."
223
+ },
224
+ "seedId": {
225
+ "type": "integer",
226
+ "minimum": 0,
227
+ "description": "Identifier of the seed the key was derived from, when the maintainer holds more than one. Absent for imported keys."
228
+ },
229
+ "origin": {
230
+ "$ref": "#/$defs/KeyOrigin"
231
+ },
232
+ "label": {
233
+ "type": "string",
234
+ "maxLength": 256,
235
+ "description": "Optional human-readable label. Operator-facing only; carries no authorization meaning."
236
+ },
237
+ "exportable": {
238
+ "type": "boolean",
239
+ "description": "Whether the private half may be released to a caller. `false` means the custodian refuses every export of this key and can only be asked to *use* it — signing, key agreement — so the material never leaves. **Absence means the key may be exported.** That is the permissive reading, and it is deliberate: it is what every record written before this member existed already meant, so a custodian adding the member cannot silently retract access to keys its callers already hold. A consumer MUST NOT infer the converse — absence is not a statement that export was considered and allowed. Marking a key non-exportable does not make it unrecoverable: a custodian's own whole-store backup is a different mechanism from an export to a caller, and this member does not speak to it.",
240
+ "$comment": "No JSON Schema `default` is declared here on purpose. A declared default is materialised by the generated bindings — the field becomes non-optional with a serde default — so an absent member reappears as an explicit `true` on re-serialisation, which breaks round-trip idempotence for every record written before this member existed. The permissive reading is stated in prose above, where a binding cannot act on it."
241
+ },
242
+ "contextId": {
243
+ "type": "string",
244
+ "description": "Scope the key belongs to. **Absence is not 'every scope'** — a key with no context is reachable only by a caller with unrestricted authority over the maintainer, which is the more restrictive reading, and a consumer that treats absence as a wildcard inverts the guarantee."
245
+ },
246
+ "createdAt": {
247
+ "type": "string",
248
+ "format": "date-time",
249
+ "description": "RFC 3339 timestamp at which the key was created or imported."
250
+ },
251
+ "updatedAt": {
252
+ "type": "string",
253
+ "format": "date-time",
254
+ "description": "RFC 3339 timestamp of the last change to the record (rename, revocation)."
255
+ },
256
+ "ext": {
257
+ "$ref": "#/$defs/Ext"
258
+ }
259
+ }
260
+ },
261
+ "KeyOrigin": {
262
+ "title": "KeyOrigin",
263
+ "type": "string",
264
+ "enum": [
265
+ "derived",
266
+ "imported",
267
+ "internal"
268
+ ],
269
+ "description": "Where the private key came from. `derived` means the maintainer generated it from a seed it holds and can reproduce it from `derivationPath`; `imported` means it arrived from outside and exists only as stored material; `internal` means the maintainer generated it from a CSPRNG and it is reproducible from nothing at all. The distinction is operationally load-bearing: a `derived` key survives a seed restore, an `imported` one is lost unless it was backed up separately, and an `internal` one cannot be recovered by any means once the maintainer's storage is gone. This member is also the only way a consumer can confirm that a `keys/create` request for an `internal` key was honoured rather than silently downgraded to a derived one — see that specification's `internal` member.",
270
+ "default": "derived"
271
+ },
272
+ "KeyStatus": {
273
+ "title": "KeyStatus",
274
+ "type": "string",
275
+ "enum": [
276
+ "active",
277
+ "revoked"
278
+ ],
279
+ "description": "Lifecycle state. Only an `active` key may be named in a signing request; a `revoked` key is retained so historic signatures remain attributable, and MUST NOT be reactivated."
280
+ },
281
+ "KeyType": {
282
+ "title": "KeyType",
283
+ "type": "string",
284
+ "enum": [
285
+ "ed25519",
286
+ "x25519",
287
+ "p256"
288
+ ],
289
+ "description": "Cryptographic algorithm the key material belongs to. `ed25519` signs (EdDSA), `x25519` performs key agreement and never signs, `p256` signs (ES256)."
290
+ },
291
+ "Ext": {
292
+ "title": "Ext",
293
+ "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.",
294
+ "type": "object",
295
+ "minProperties": 1,
296
+ "additionalProperties": true,
297
+ "propertyNames": {
298
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
299
+ }
300
+ }
301
+ }
302
+ };
303
+ /**
304
+ * SPEC.md §7.2 policy for the request variant, from this specification's
305
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
306
+ * per-specification and cannot be derived from the document alone, and
307
+ * item 2 needs the schema this carries.
308
+ */
309
+ export const SPEC = {
310
+ typeUri: TYPE_URI,
311
+ isBearer: false,
312
+ isProofRequired: true,
313
+ isRecipientRequired: true,
314
+ isIssuedAtRequired: true,
315
+ payloadSchema: PAYLOAD_SCHEMA,
316
+ };
317
+ /**
318
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
319
+ * tracks the *issuer* party's requirement because a response swaps the
320
+ * parties (§7.3 item 5).
321
+ */
322
+ export const RESPONSE_SPEC = {
323
+ typeUri: RESPONSE_TYPE_URI,
324
+ isBearer: false,
325
+ isProofRequired: true,
326
+ isRecipientRequired: true,
327
+ isIssuedAtRequired: true,
328
+ payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
329
+ };
330
+ //# sourceMappingURL=payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload.js","sourceRoot":"","sources":["../../../../src/keys/set-exportability/0.1/payload.ts"],"names":[],"mappings":"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"}
@@ -131,6 +131,11 @@ export declare const PAYLOAD_SCHEMA: {
131
131
  readonly maxLength: 256;
132
132
  readonly description: "Optional human-readable label. Operator-facing only; carries no authorization meaning.";
133
133
  };
134
+ readonly exportable: {
135
+ readonly type: "boolean";
136
+ readonly description: "Whether the private half may be released to a caller. `false` means the custodian refuses every export of this key and can only be asked to *use* it — signing, key agreement — so the material never leaves. **Absence means the key may be exported.** That is the permissive reading, and it is deliberate: it is what every record written before this member existed already meant, so a custodian adding the member cannot silently retract access to keys its callers already hold. A consumer MUST NOT infer the converse — absence is not a statement that export was considered and allowed. Marking a key non-exportable does not make it unrecoverable: a custodian's own whole-store backup is a different mechanism from an export to a caller, and this member does not speak to it.";
137
+ readonly $comment: "No JSON Schema `default` is declared here on purpose. A declared default is materialised by the generated bindings — the field becomes non-optional with a serde default — so an absent member reappears as an explicit `true` on re-serialisation, which breaks round-trip idempotence for every record written before this member existed. The permissive reading is stated in prose above, where a binding cannot act on it.";
138
+ };
134
139
  readonly contextId: {
135
140
  readonly type: "string";
136
141
  readonly description: "Scope the key belongs to. **Absence is not 'every scope'** — a key with no context is reachable only by a caller with unrestricted authority over the maintainer, which is the more restrictive reading, and a consumer that treats absence as a wildcard inverts the guarantee.";
@@ -246,6 +251,11 @@ export declare const RESPONSE_PAYLOAD_SCHEMA: {
246
251
  readonly maxLength: 256;
247
252
  readonly description: "Optional human-readable label. Operator-facing only; carries no authorization meaning.";
248
253
  };
254
+ readonly exportable: {
255
+ readonly type: "boolean";
256
+ readonly description: "Whether the private half may be released to a caller. `false` means the custodian refuses every export of this key and can only be asked to *use* it — signing, key agreement — so the material never leaves. **Absence means the key may be exported.** That is the permissive reading, and it is deliberate: it is what every record written before this member existed already meant, so a custodian adding the member cannot silently retract access to keys its callers already hold. A consumer MUST NOT infer the converse — absence is not a statement that export was considered and allowed. Marking a key non-exportable does not make it unrecoverable: a custodian's own whole-store backup is a different mechanism from an export to a caller, and this member does not speak to it.";
257
+ readonly $comment: "No JSON Schema `default` is declared here on purpose. A declared default is materialised by the generated bindings — the field becomes non-optional with a serde default — so an absent member reappears as an explicit `true` on re-serialisation, which breaks round-trip idempotence for every record written before this member existed. The permissive reading is stated in prose above, where a binding cannot act on it.";
258
+ };
249
259
  readonly contextId: {
250
260
  readonly type: "string";
251
261
  readonly description: "Scope the key belongs to. **Absence is not 'every scope'** — a key with no context is reachable only by a caller with unrestricted authority over the maintainer, which is the more restrictive reading, and a consumer that treats absence as a wildcard inverts the guarantee.";
@@ -387,6 +397,11 @@ export declare const SPEC: {
387
397
  readonly maxLength: 256;
388
398
  readonly description: "Optional human-readable label. Operator-facing only; carries no authorization meaning.";
389
399
  };
400
+ readonly exportable: {
401
+ readonly type: "boolean";
402
+ readonly description: "Whether the private half may be released to a caller. `false` means the custodian refuses every export of this key and can only be asked to *use* it — signing, key agreement — so the material never leaves. **Absence means the key may be exported.** That is the permissive reading, and it is deliberate: it is what every record written before this member existed already meant, so a custodian adding the member cannot silently retract access to keys its callers already hold. A consumer MUST NOT infer the converse — absence is not a statement that export was considered and allowed. Marking a key non-exportable does not make it unrecoverable: a custodian's own whole-store backup is a different mechanism from an export to a caller, and this member does not speak to it.";
403
+ readonly $comment: "No JSON Schema `default` is declared here on purpose. A declared default is materialised by the generated bindings — the field becomes non-optional with a serde default — so an absent member reappears as an explicit `true` on re-serialisation, which breaks round-trip idempotence for every record written before this member existed. The permissive reading is stated in prose above, where a binding cannot act on it.";
404
+ };
390
405
  readonly contextId: {
391
406
  readonly type: "string";
392
407
  readonly description: "Scope the key belongs to. **Absence is not 'every scope'** — a key with no context is reachable only by a caller with unrestricted authority over the maintainer, which is the more restrictive reading, and a consumer that treats absence as a wildcard inverts the guarantee.";
@@ -513,6 +528,11 @@ export declare const RESPONSE_SPEC: {
513
528
  readonly maxLength: 256;
514
529
  readonly description: "Optional human-readable label. Operator-facing only; carries no authorization meaning.";
515
530
  };
531
+ readonly exportable: {
532
+ readonly type: "boolean";
533
+ readonly description: "Whether the private half may be released to a caller. `false` means the custodian refuses every export of this key and can only be asked to *use* it — signing, key agreement — so the material never leaves. **Absence means the key may be exported.** That is the permissive reading, and it is deliberate: it is what every record written before this member existed already meant, so a custodian adding the member cannot silently retract access to keys its callers already hold. A consumer MUST NOT infer the converse — absence is not a statement that export was considered and allowed. Marking a key non-exportable does not make it unrecoverable: a custodian's own whole-store backup is a different mechanism from an export to a caller, and this member does not speak to it.";
534
+ readonly $comment: "No JSON Schema `default` is declared here on purpose. A declared default is materialised by the generated bindings — the field becomes non-optional with a serde default — so an absent member reappears as an explicit `true` on re-serialisation, which breaks round-trip idempotence for every record written before this member existed. The permissive reading is stated in prose above, where a binding cannot act on it.";
535
+ };
516
536
  readonly contextId: {
517
537
  readonly type: "string";
518
538
  readonly description: "Scope the key belongs to. **Absence is not 'every scope'** — a key with no context is reachable only by a caller with unrestricted authority over the maintainer, which is the more restrictive reading, and a consumer that treats absence as a wildcard inverts the guarantee.";
@@ -1 +1 @@
1
- {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../src/keys/show/0.1/payload.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAGpG,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AACD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IACtB,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AAED,kHAAkH;AAClH,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAE9D,2BAA2B;AAC3B,eAAO,MAAM,QAAQ,EAAG,2CAAoD,CAAC;AAE7E,mEAAmE;AACnE,MAAM,MAAM,OAAO,GAAG,eAAe,CAAC;AAEtC,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,EAAG,oDAA6D,CAAC;AAE/F,4EAA4E;AAC5E,MAAM,MAAM,QAAQ,GAAG,uBAAuB,CAAC;AAE/C;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwJjB,CAAC;AAEX,mEAAmE;AACnE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuI1B,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOP,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOhB,CAAC"}
1
+ {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../src/keys/show/0.1/payload.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAGpG,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AACD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IACtB,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AAED,kHAAkH;AAClH,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAE9D,2BAA2B;AAC3B,eAAO,MAAM,QAAQ,EAAG,2CAAoD,CAAC;AAE7E,mEAAmE;AACnE,MAAM,MAAM,OAAO,GAAG,eAAe,CAAC;AAEtC,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,EAAG,oDAA6D,CAAC;AAE/F,4EAA4E;AAC5E,MAAM,MAAM,QAAQ,GAAG,uBAAuB,CAAC;AAE/C;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6JjB,CAAC;AAEX,mEAAmE;AACnE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4I1B,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOP,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOhB,CAAC"}
@@ -117,6 +117,11 @@ export const PAYLOAD_SCHEMA = {
117
117
  "maxLength": 256,
118
118
  "description": "Optional human-readable label. Operator-facing only; carries no authorization meaning."
119
119
  },
120
+ "exportable": {
121
+ "type": "boolean",
122
+ "description": "Whether the private half may be released to a caller. `false` means the custodian refuses every export of this key and can only be asked to *use* it — signing, key agreement — so the material never leaves. **Absence means the key may be exported.** That is the permissive reading, and it is deliberate: it is what every record written before this member existed already meant, so a custodian adding the member cannot silently retract access to keys its callers already hold. A consumer MUST NOT infer the converse — absence is not a statement that export was considered and allowed. Marking a key non-exportable does not make it unrecoverable: a custodian's own whole-store backup is a different mechanism from an export to a caller, and this member does not speak to it.",
123
+ "$comment": "No JSON Schema `default` is declared here on purpose. A declared default is materialised by the generated bindings — the field becomes non-optional with a serde default — so an absent member reappears as an explicit `true` on re-serialisation, which breaks round-trip idempotence for every record written before this member existed. The permissive reading is stated in prose above, where a binding cannot act on it."
124
+ },
120
125
  "contextId": {
121
126
  "type": "string",
122
127
  "description": "Scope the key belongs to. **Absence is not 'every scope'** — a key with no context is reachable only by a caller with unrestricted authority over the maintainer, which is the more restrictive reading, and a consumer that treats absence as a wildcard inverts the guarantee."
@@ -254,6 +259,11 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
254
259
  "maxLength": 256,
255
260
  "description": "Optional human-readable label. Operator-facing only; carries no authorization meaning."
256
261
  },
262
+ "exportable": {
263
+ "type": "boolean",
264
+ "description": "Whether the private half may be released to a caller. `false` means the custodian refuses every export of this key and can only be asked to *use* it — signing, key agreement — so the material never leaves. **Absence means the key may be exported.** That is the permissive reading, and it is deliberate: it is what every record written before this member existed already meant, so a custodian adding the member cannot silently retract access to keys its callers already hold. A consumer MUST NOT infer the converse — absence is not a statement that export was considered and allowed. Marking a key non-exportable does not make it unrecoverable: a custodian's own whole-store backup is a different mechanism from an export to a caller, and this member does not speak to it.",
265
+ "$comment": "No JSON Schema `default` is declared here on purpose. A declared default is materialised by the generated bindings — the field becomes non-optional with a serde default — so an absent member reappears as an explicit `true` on re-serialisation, which breaks round-trip idempotence for every record written before this member existed. The permissive reading is stated in prose above, where a binding cannot act on it."
266
+ },
257
267
  "contextId": {
258
268
  "type": "string",
259
269
  "description": "Scope the key belongs to. **Absence is not 'every scope'** — a key with no context is reachable only by a caller with unrestricted authority over the maintainer, which is the more restrictive reading, and a consumer that treats absence as a wildcard inverts the guarantee."
@@ -1 +1 @@
1
- {"version":3,"file":"payload.js","sourceRoot":"","sources":["../../../../src/keys/show/0.1/payload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payload.js","sourceRoot":"","sources":["../../../../src/keys/show/0.1/payload.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openvtc/trust-tasks",
3
- "version": "0.19.1",
3
+ "version": "0.19.3",
4
4
  "description": "Generated TypeScript bindings for the Trust Tasks framework registry.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -2173,6 +2173,10 @@ export interface KeyRecord {
2173
2173
  * Optional human-readable label. Operator-facing only; carries no authorization meaning.
2174
2174
  */
2175
2175
  label?: string;
2176
+ /**
2177
+ * Whether the private half may be released to a caller. `false` means the custodian refuses every export of this key and can only be asked to *use* it — signing, key agreement — so the material never leaves. **Absence means the key may be exported.** That is the permissive reading, and it is deliberate: it is what every record written before this member existed already meant, so a custodian adding the member cannot silently retract access to keys its callers already hold. A consumer MUST NOT infer the converse — absence is not a statement that export was considered and allowed. Marking a key non-exportable does not make it unrecoverable: a custodian's own whole-store backup is a different mechanism from an export to a caller, and this member does not speak to it.
2178
+ */
2179
+ exportable?: boolean;
2176
2180
  /**
2177
2181
  * Scope the key belongs to. **Absence is not 'every scope'** — a key with no context is reachable only by a caller with unrestricted authority over the maintainer, which is the more restrictive reading, and a consumer that treats absence as a wildcard inverts the guarantee.
2178
2182
  */
package/src/index.ts CHANGED
@@ -141,10 +141,12 @@ export * as SignAlgorithmShared_v0_1 from "./keys/_shared/0.1/sign-algorithm.js"
141
141
  export * as KeysCreate_v0_1 from "./keys/create/0.1/payload.js";
142
142
  export * as KeysDeriveAndSignDocument_v0_1 from "./keys/derive-and-sign-document/0.1/payload.js";
143
143
  export * as KeysDeriveAndSign_v0_1 from "./keys/derive-and-sign/0.1/payload.js";
144
+ export * as KeysExportSecret_v0_1 from "./keys/export-secret/0.1/payload.js";
144
145
  export * as KeysImport_v0_1 from "./keys/import/0.1/payload.js";
145
146
  export * as KeysList_v0_1 from "./keys/list/0.1/payload.js";
146
147
  export * as KeysRename_v0_1 from "./keys/rename/0.1/payload.js";
147
148
  export * as KeysRevoke_v0_1 from "./keys/revoke/0.1/payload.js";
149
+ export * as KeysSetExportability_v0_1 from "./keys/set-exportability/0.1/payload.js";
148
150
  export * as KeysShow_v0_1 from "./keys/show/0.1/payload.js";
149
151
  export * as KeysSign_v0_1 from "./keys/sign/0.1/payload.js";
150
152
  export * as MessagingShared_v0_1 from "./messaging/_shared/0.1/messaging.js";
@@ -197,6 +197,11 @@ export const PAYLOAD_SCHEMA = {
197
197
  "maxLength": 256,
198
198
  "description": "Optional human-readable label. Operator-facing only; carries no authorization meaning."
199
199
  },
200
+ "exportable": {
201
+ "type": "boolean",
202
+ "description": "Whether the private half may be released to a caller. `false` means the custodian refuses every export of this key and can only be asked to *use* it — signing, key agreement — so the material never leaves. **Absence means the key may be exported.** That is the permissive reading, and it is deliberate: it is what every record written before this member existed already meant, so a custodian adding the member cannot silently retract access to keys its callers already hold. A consumer MUST NOT infer the converse — absence is not a statement that export was considered and allowed. Marking a key non-exportable does not make it unrecoverable: a custodian's own whole-store backup is a different mechanism from an export to a caller, and this member does not speak to it.",
203
+ "$comment": "No JSON Schema `default` is declared here on purpose. A declared default is materialised by the generated bindings — the field becomes non-optional with a serde default — so an absent member reappears as an explicit `true` on re-serialisation, which breaks round-trip idempotence for every record written before this member existed. The permissive reading is stated in prose above, where a binding cannot act on it."
204
+ },
200
205
  "contextId": {
201
206
  "type": "string",
202
207
  "description": "Scope the key belongs to. **Absence is not 'every scope'** — a key with no context is reachable only by a caller with unrestricted authority over the maintainer, which is the more restrictive reading, and a consumer that treats absence as a wildcard inverts the guarantee."
@@ -328,6 +333,11 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
328
333
  "maxLength": 256,
329
334
  "description": "Optional human-readable label. Operator-facing only; carries no authorization meaning."
330
335
  },
336
+ "exportable": {
337
+ "type": "boolean",
338
+ "description": "Whether the private half may be released to a caller. `false` means the custodian refuses every export of this key and can only be asked to *use* it — signing, key agreement — so the material never leaves. **Absence means the key may be exported.** That is the permissive reading, and it is deliberate: it is what every record written before this member existed already meant, so a custodian adding the member cannot silently retract access to keys its callers already hold. A consumer MUST NOT infer the converse — absence is not a statement that export was considered and allowed. Marking a key non-exportable does not make it unrecoverable: a custodian's own whole-store backup is a different mechanism from an export to a caller, and this member does not speak to it.",
339
+ "$comment": "No JSON Schema `default` is declared here on purpose. A declared default is materialised by the generated bindings — the field becomes non-optional with a serde default — so an absent member reappears as an explicit `true` on re-serialisation, which breaks round-trip idempotence for every record written before this member existed. The permissive reading is stated in prose above, where a binding cannot act on it."
340
+ },
331
341
  "contextId": {
332
342
  "type": "string",
333
343
  "description": "Scope the key belongs to. **Absence is not 'every scope'** — a key with no context is reachable only by a caller with unrestricted authority over the maintainer, which is the more restrictive reading, and a consumer that treats absence as a wildcard inverts the guarantee."