@openvtc/trust-tasks 0.28.3 → 0.28.4

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 (57) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/dist/_extends.d.ts.map +1 -1
  3. package/dist/_extends.js +2 -0
  4. package/dist/_extends.js.map +1 -1
  5. package/dist/index.d.ts +9 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +9 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/peer-check/ask/0.1/payload.d.ts +397 -0
  10. package/dist/peer-check/ask/0.1/payload.d.ts.map +1 -0
  11. package/dist/peer-check/ask/0.1/payload.js +235 -0
  12. package/dist/peer-check/ask/0.1/payload.js.map +1 -0
  13. package/dist/rooms/keys/act/0.1/payload.d.ts +4 -4
  14. package/dist/rooms/keys/act/0.1/payload.js +1 -1
  15. package/dist/rooms/keys/act/0.2/payload.d.ts +4 -4
  16. package/dist/rooms/keys/act/0.2/payload.js +1 -1
  17. package/dist/rooms/keys/act/0.3/payload.d.ts +4 -4
  18. package/dist/rooms/keys/act/0.3/payload.js +1 -1
  19. package/dist/rooms/keys/act/0.4/payload.d.ts +4 -4
  20. package/dist/rooms/keys/act/0.4/payload.js +1 -1
  21. package/dist/rooms/keys/act/0.5/payload.d.ts +4 -4
  22. package/dist/rooms/keys/act/0.5/payload.js +1 -1
  23. package/dist/rooms/keys/act/0.6/payload.d.ts +4 -4
  24. package/dist/rooms/keys/act/0.6/payload.js +1 -1
  25. package/dist/rooms/keys/act/0.7/payload.d.ts +4 -4
  26. package/dist/rooms/keys/act/0.7/payload.js +1 -1
  27. package/dist/rooms/keys/act/0.8/payload.d.ts +14 -2
  28. package/dist/rooms/keys/act/0.8/payload.d.ts.map +1 -1
  29. package/dist/rooms/keys/act/0.8/payload.js +1 -1
  30. package/dist/rooms/keys/act/0.8/payload.js.map +1 -1
  31. package/dist/rooms/keys/act/0.9/payload.d.ts +560 -0
  32. package/dist/rooms/keys/act/0.9/payload.d.ts.map +1 -0
  33. package/dist/rooms/keys/act/0.9/payload.js +319 -0
  34. package/dist/rooms/keys/act/0.9/payload.js.map +1 -0
  35. package/dist/vta/webvh/dids/update/1.0/payload.d.ts +14 -2
  36. package/dist/vta/webvh/dids/update/1.0/payload.d.ts.map +1 -1
  37. package/dist/vta/webvh/dids/update/1.0/payload.js +1 -1
  38. package/dist/vta/webvh/dids/update/1.0/payload.js.map +1 -1
  39. package/dist/vta/webvh/dids/update/1.1/payload.d.ts +511 -0
  40. package/dist/vta/webvh/dids/update/1.1/payload.d.ts.map +1 -0
  41. package/dist/vta/webvh/dids/update/1.1/payload.js +251 -0
  42. package/dist/vta/webvh/dids/update/1.1/payload.js.map +1 -0
  43. package/package.json +1 -1
  44. package/src/_extends.ts +2 -0
  45. package/src/index.ts +9 -0
  46. package/src/peer-check/ask/0.1/payload.ts +301 -0
  47. package/src/rooms/keys/act/0.1/payload.ts +5 -5
  48. package/src/rooms/keys/act/0.2/payload.ts +5 -5
  49. package/src/rooms/keys/act/0.3/payload.ts +5 -5
  50. package/src/rooms/keys/act/0.4/payload.ts +5 -5
  51. package/src/rooms/keys/act/0.5/payload.ts +5 -5
  52. package/src/rooms/keys/act/0.6/payload.ts +5 -5
  53. package/src/rooms/keys/act/0.7/payload.ts +5 -5
  54. package/src/rooms/keys/act/0.8/payload.ts +15 -3
  55. package/src/rooms/keys/act/0.9/payload.ts +396 -0
  56. package/src/vta/webvh/dids/update/1.0/payload.ts +15 -3
  57. package/src/vta/webvh/dids/update/1.1/payload.ts +351 -0
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/vta/webvh/dids/update/1.1/payload.schema.json
4
+ */
5
+ /** Trust Task type URI. */
6
+ export const TYPE_URI = "https://trusttasks.org/spec/vta/webvh/dids/update/1.1";
7
+ /**
8
+ * The earlier version of this specification that this one declares it
9
+ * extends (front matter `extends`, SPEC §5.2 "Declared extension"), or
10
+ * `null`. Only the direct declaration — follow the chain with
11
+ * `extendsChain` / `readForSpec`.
12
+ */
13
+ export const EXTENDS = "1.0";
14
+ /**
15
+ * Why this version is deprecated, or `null` while it is current. A
16
+ * superseded or retired version is still supported, and is withdrawn from
17
+ * this package in a later scheduled batch (SPEC "Superseded and Withdrawn
18
+ * Versions").
19
+ */
20
+ export const DEPRECATION = null;
21
+ /** Trust Task response type URI (request type URI + "#response"). */
22
+ export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/vta/webvh/dids/update/1.1#response";
23
+ /**
24
+ * This specification's payload schema, as a value.
25
+ *
26
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
27
+ * rather than only as a `.json` file because TypeScript types are erased
28
+ * at runtime: without a schema a consumer has nothing to validate, and
29
+ * every REQUIRED payload member is optional in practice. Cross-file
30
+ * `$ref`s are already inlined, so it needs no resolver.
31
+ */
32
+ export const PAYLOAD_SCHEMA = {
33
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
34
+ "$id": "https://trusttasks.org/spec/vta/webvh/dids/update/1.1",
35
+ "title": "WebVH DID Update — payload",
36
+ "description": "Ask a Verifiable Trust Agent to publish a new entry in a did:webvh log it holds the update key for. The agent decides whether to do so; the caller proposes.",
37
+ "type": "object",
38
+ "additionalProperties": false,
39
+ "required": [
40
+ "did"
41
+ ],
42
+ "properties": {
43
+ "did": {
44
+ "type": "string",
45
+ "minLength": 1,
46
+ "description": "The did:webvh being updated. The agent MUST verify it speaks for this subject."
47
+ },
48
+ "document": {
49
+ "type": "object",
50
+ "description": "The new DID document. Omit to leave it unchanged. Supplying this ROTATES the DID's update key and refreshes its pre-rotation commitments, as a parallel consequence of the change — a consequence not visible anywhere in this payload, because it lives in the executing handler's semantics. A consent surface MUST therefore render effects the executor computed, and MUST NOT derive them from this document."
51
+ },
52
+ "preRotationCount": {
53
+ "type": "integer",
54
+ "minimum": 0,
55
+ "description": "Number of pre-rotation commitments to publish. Omit to keep the current count; `0` disables pre-rotation going forward."
56
+ },
57
+ "witnesses": {
58
+ "description": "New witness configuration. Omit to keep the current one."
59
+ },
60
+ "watchers": {
61
+ "type": "array",
62
+ "items": {
63
+ "type": "string"
64
+ },
65
+ "description": "New watcher URLs. Omit to keep the current set; an empty array removes them."
66
+ },
67
+ "ttl": {
68
+ "type": "integer",
69
+ "minimum": 0,
70
+ "description": "New TTL in seconds. Omit to keep the current value."
71
+ },
72
+ "label": {
73
+ "type": "string",
74
+ "maxLength": 256,
75
+ "description": "Operator-facing audit label."
76
+ },
77
+ "expectedVersionId": {
78
+ "type": "string",
79
+ "minLength": 1,
80
+ "description": "Optimistic-concurrency precondition: the versionId the caller based this edit on. The agent MUST refuse the update if the DID's latest entry no longer matches. Without it a `get -> edit -> save` cycle silently overwrites a concurrent edit with a chain that is structurally valid, verifies perfectly, and is based on a stale read. Where a human approves the update the window is minutes wide, so this is a routine race rather than an exotic one. OPTIONAL because a scripted caller with no concurrent writers has nothing to protect against; not optional for anything a person looked at."
81
+ },
82
+ "scidAlsoKnownAs": {
83
+ "type": "boolean",
84
+ "description": "Whether the published document lists this log's `did:scid:vh:1:<scid>?src=<source>` DID URL in `alsoKnownAs`, linking the did:webvh and did:scid forms as one subject (VTI-KEY-164). `true` adds it, for the log's current location, after the entries the document already has; `false` removes every did:scid entry naming this log's SCID. Applied to `document` when one is supplied, otherwise to the current document. Omit to leave `alsoKnownAs` as `document` (or the current document) has it. The agent derives the DID URL itself — the caller never writes it. Changing it publishes an entry, and so ROTATES the update key exactly as supplying `document` does."
85
+ },
86
+ "ext": {
87
+ "$ref": "#/$defs/Ext"
88
+ }
89
+ },
90
+ "$defs": {
91
+ "Response": {
92
+ "$anchor": "response",
93
+ "title": "WebVH DID Update — response payload",
94
+ "description": "The published entry. camelCase per the framework convention — note the counts are the state AFTER the update, including the rotation the caller did not ask for.",
95
+ "type": "object",
96
+ "additionalProperties": false,
97
+ "required": [
98
+ "did",
99
+ "newVersionId"
100
+ ],
101
+ "properties": {
102
+ "did": {
103
+ "type": "string"
104
+ },
105
+ "newVersionId": {
106
+ "type": "string",
107
+ "description": "versionId of the entry just appended. A caller intending a further edit SHOULD pass this back as the next request's `expectedVersionId`."
108
+ },
109
+ "newScid": {
110
+ "type": "string"
111
+ },
112
+ "newLogEntry": {
113
+ "type": "string",
114
+ "description": "The appended log entry, as JSON text."
115
+ },
116
+ "updateKeysCount": {
117
+ "type": "integer",
118
+ "minimum": 0,
119
+ "description": "Update keys authorized AFTER this entry. Where `document` was supplied these are new keys — the previous ones no longer authorize anything."
120
+ },
121
+ "preRotationKeyCount": {
122
+ "type": "integer",
123
+ "minimum": 0,
124
+ "description": "Pre-rotation commitments published by this entry."
125
+ },
126
+ "serverless": {
127
+ "type": "boolean",
128
+ "description": "True when the agent holds the log itself and no hosting server was published to — the operator must fetch and redeploy `did.jsonl`."
129
+ },
130
+ "scidAlsoKnownAs": {
131
+ "type": "boolean",
132
+ "description": "Whether the published document lists `scidDidUrl` in `alsoKnownAs`. A 1.1 consumer MUST report it; it is optional in the schema only because 1.1 extends 1.0."
133
+ },
134
+ "scidDidUrl": {
135
+ "type": "string",
136
+ "description": "The `did:scid:vh:1:<scid>?src=<source>` DID URL of the log at its current location — the did:scid DID with the locator a recipient needs to resolve it. Reported whether or not it is listed. A 1.1 consumer MUST report it; it is optional in the schema only because 1.1 extends 1.0."
137
+ },
138
+ "ext": {
139
+ "$ref": "#/$defs/Ext"
140
+ }
141
+ }
142
+ },
143
+ "Ext": {
144
+ "title": "Ext",
145
+ "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.",
146
+ "type": "object",
147
+ "minProperties": 1,
148
+ "additionalProperties": true,
149
+ "propertyNames": {
150
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
151
+ }
152
+ }
153
+ }
154
+ };
155
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
156
+ export const RESPONSE_PAYLOAD_SCHEMA = {
157
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
158
+ "$ref": "#/$defs/Response",
159
+ "$defs": {
160
+ "Response": {
161
+ "$anchor": "response",
162
+ "title": "WebVH DID Update — response payload",
163
+ "description": "The published entry. camelCase per the framework convention — note the counts are the state AFTER the update, including the rotation the caller did not ask for.",
164
+ "type": "object",
165
+ "additionalProperties": false,
166
+ "required": [
167
+ "did",
168
+ "newVersionId"
169
+ ],
170
+ "properties": {
171
+ "did": {
172
+ "type": "string"
173
+ },
174
+ "newVersionId": {
175
+ "type": "string",
176
+ "description": "versionId of the entry just appended. A caller intending a further edit SHOULD pass this back as the next request's `expectedVersionId`."
177
+ },
178
+ "newScid": {
179
+ "type": "string"
180
+ },
181
+ "newLogEntry": {
182
+ "type": "string",
183
+ "description": "The appended log entry, as JSON text."
184
+ },
185
+ "updateKeysCount": {
186
+ "type": "integer",
187
+ "minimum": 0,
188
+ "description": "Update keys authorized AFTER this entry. Where `document` was supplied these are new keys — the previous ones no longer authorize anything."
189
+ },
190
+ "preRotationKeyCount": {
191
+ "type": "integer",
192
+ "minimum": 0,
193
+ "description": "Pre-rotation commitments published by this entry."
194
+ },
195
+ "serverless": {
196
+ "type": "boolean",
197
+ "description": "True when the agent holds the log itself and no hosting server was published to — the operator must fetch and redeploy `did.jsonl`."
198
+ },
199
+ "scidAlsoKnownAs": {
200
+ "type": "boolean",
201
+ "description": "Whether the published document lists `scidDidUrl` in `alsoKnownAs`. A 1.1 consumer MUST report it; it is optional in the schema only because 1.1 extends 1.0."
202
+ },
203
+ "scidDidUrl": {
204
+ "type": "string",
205
+ "description": "The `did:scid:vh:1:<scid>?src=<source>` DID URL of the log at its current location — the did:scid DID with the locator a recipient needs to resolve it. Reported whether or not it is listed. A 1.1 consumer MUST report it; it is optional in the schema only because 1.1 extends 1.0."
206
+ },
207
+ "ext": {
208
+ "$ref": "#/$defs/Ext"
209
+ }
210
+ }
211
+ },
212
+ "Ext": {
213
+ "title": "Ext",
214
+ "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.",
215
+ "type": "object",
216
+ "minProperties": 1,
217
+ "additionalProperties": true,
218
+ "propertyNames": {
219
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
220
+ }
221
+ }
222
+ }
223
+ };
224
+ /**
225
+ * SPEC.md §7.2 policy for the request variant, from this specification's
226
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
227
+ * per-specification and cannot be derived from the document alone, and
228
+ * item 2 needs the schema this carries.
229
+ */
230
+ export const SPEC = {
231
+ typeUri: TYPE_URI,
232
+ isBearer: false,
233
+ isProofRequired: true,
234
+ isRecipientRequired: true,
235
+ isIssuedAtRequired: true,
236
+ payloadSchema: PAYLOAD_SCHEMA,
237
+ };
238
+ /**
239
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
240
+ * tracks the *issuer* party's requirement because a response swaps the
241
+ * parties (§7.3 item 5).
242
+ */
243
+ export const RESPONSE_SPEC = {
244
+ typeUri: RESPONSE_TYPE_URI,
245
+ isBearer: false,
246
+ isProofRequired: true,
247
+ isRecipientRequired: true,
248
+ isIssuedAtRequired: true,
249
+ payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
250
+ };
251
+ //# sourceMappingURL=payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload.js","sourceRoot":"","sources":["../../../../../../src/vta/webvh/dids/update/1.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.28.3",
3
+ "version": "0.28.4",
4
4
  "description": "Generated TypeScript bindings for the Trust Tasks framework registry.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
package/src/_extends.ts CHANGED
@@ -7,9 +7,11 @@
7
7
  * `extendsChain` follows them transitively.
8
8
  */
9
9
  export const EXTENDS_BY_TYPE_URI: Readonly<Record<string, string>> = Object.freeze({
10
+ "https://trusttasks.org/spec/rooms/keys/act/0.9": "0.8",
10
11
  "https://trusttasks.org/spec/rooms/records/put/0.4": "0.3",
11
12
  "https://trusttasks.org/spec/vta/did-templates/create/3.2": "3.1",
12
13
  "https://trusttasks.org/spec/vta/did-templates/get/3.2": "3.1",
13
14
  "https://trusttasks.org/spec/vta/did-templates/list/3.2": "3.1",
14
15
  "https://trusttasks.org/spec/vta/did-templates/update/3.2": "3.1",
16
+ "https://trusttasks.org/spec/vta/webvh/dids/update/1.1": "1.0",
15
17
  });
package/src/index.ts CHANGED
@@ -1261,6 +1261,9 @@ export import MessagingQueueStatus_v0_1 = _MessagingQueueStatus_v0_1;
1261
1261
  import * as _MessagingStatsShow_v0_1 from "./messaging/stats/show/0.1/payload.js";
1262
1262
  /** @deprecated The prebuilt specification modules will be removed: pin the tasks you use with the `trust-tasks` CLI, generate them with `@openvtc/trust-tasks-gen`, and import the runtime from `@openvtc/trust-tasks/runtime` (GETTING-STARTED.md). */
1263
1263
  export import MessagingStatsShow_v0_1 = _MessagingStatsShow_v0_1;
1264
+ import * as _PeerCheckAsk_v0_1 from "./peer-check/ask/0.1/payload.js";
1265
+ /** @deprecated The prebuilt specification modules will be removed: pin the tasks you use with the `trust-tasks` CLI, generate them with `@openvtc/trust-tasks-gen`, and import the runtime from `@openvtc/trust-tasks/runtime` (GETTING-STARTED.md). */
1266
+ export import PeerCheckAsk_v0_1 = _PeerCheckAsk_v0_1;
1264
1267
  import * as _ContactAnnotationsShared_v0_1 from "./persona/_shared/0.1/contact-annotations.js";
1265
1268
  /** @deprecated The prebuilt specification modules will be removed: pin the tasks you use with the `trust-tasks` CLI, generate them with `@openvtc/trust-tasks-gen`, and import the runtime from `@openvtc/trust-tasks/runtime` (GETTING-STARTED.md). */
1266
1269
  export import ContactAnnotationsShared_v0_1 = _ContactAnnotationsShared_v0_1;
@@ -1693,6 +1696,9 @@ export import RoomsKeysAct_v0_7 = _RoomsKeysAct_v0_7;
1693
1696
  import * as _RoomsKeysAct_v0_8 from "./rooms/keys/act/0.8/payload.js";
1694
1697
  /** @deprecated The prebuilt specification modules will be removed: pin the tasks you use with the `trust-tasks` CLI, generate them with `@openvtc/trust-tasks-gen`, and import the runtime from `@openvtc/trust-tasks/runtime` (GETTING-STARTED.md). */
1695
1698
  export import RoomsKeysAct_v0_8 = _RoomsKeysAct_v0_8;
1699
+ import * as _RoomsKeysAct_v0_9 from "./rooms/keys/act/0.9/payload.js";
1700
+ /** @deprecated The prebuilt specification modules will be removed: pin the tasks you use with the `trust-tasks` CLI, generate them with `@openvtc/trust-tasks-gen`, and import the runtime from `@openvtc/trust-tasks/runtime` (GETTING-STARTED.md). */
1701
+ export import RoomsKeysAct_v0_9 = _RoomsKeysAct_v0_9;
1696
1702
  import * as _RoomsKeysBackfill_v0_1 from "./rooms/keys/backfill/0.1/payload.js";
1697
1703
  /** @deprecated The prebuilt specification modules will be removed: pin the tasks you use with the `trust-tasks` CLI, generate them with `@openvtc/trust-tasks-gen`, and import the runtime from `@openvtc/trust-tasks/runtime` (GETTING-STARTED.md). */
1698
1704
  export import RoomsKeysBackfill_v0_1 = _RoomsKeysBackfill_v0_1;
@@ -2735,6 +2741,9 @@ export import VtaWebvhDidsRotateKeys_v2_0 = _VtaWebvhDidsRotateKeys_v2_0;
2735
2741
  import * as _VtaWebvhDidsUpdate_v1_0 from "./vta/webvh/dids/update/1.0/payload.js";
2736
2742
  /** @deprecated The prebuilt specification modules will be removed: pin the tasks you use with the `trust-tasks` CLI, generate them with `@openvtc/trust-tasks-gen`, and import the runtime from `@openvtc/trust-tasks/runtime` (GETTING-STARTED.md). */
2737
2743
  export import VtaWebvhDidsUpdate_v1_0 = _VtaWebvhDidsUpdate_v1_0;
2744
+ import * as _VtaWebvhDidsUpdate_v1_1 from "./vta/webvh/dids/update/1.1/payload.js";
2745
+ /** @deprecated The prebuilt specification modules will be removed: pin the tasks you use with the `trust-tasks` CLI, generate them with `@openvtc/trust-tasks-gen`, and import the runtime from `@openvtc/trust-tasks/runtime` (GETTING-STARTED.md). */
2746
+ export import VtaWebvhDidsUpdate_v1_1 = _VtaWebvhDidsUpdate_v1_1;
2738
2747
  import * as _VtaWebvhDidsUpdate_v2_0 from "./vta/webvh/dids/update/2.0/payload.js";
2739
2748
  /** @deprecated The prebuilt specification modules will be removed: pin the tasks you use with the `trust-tasks` CLI, generate them with `@openvtc/trust-tasks-gen`, and import the runtime from `@openvtc/trust-tasks/runtime` (GETTING-STARTED.md). */
2740
2749
  export import VtaWebvhDidsUpdate_v2_0 = _VtaWebvhDidsUpdate_v2_0;
@@ -0,0 +1,301 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/peer-check/ask/0.1/payload.schema.json
4
+ */
5
+
6
+ import type { DigestMultibase } from "../../../_shared/components.js";
7
+
8
+
9
+ /**
10
+ * The request payload of peer-check/ask: a short yes-or-no question one party puts to another, with an unguessable challenge. The outer document members (id, type, issuer, recipient, issuedAt, expiresAt, proof) are owned by the framework — SPEC §6.3. The asker is the `issuer`, the party being asked is the `recipient`, and the payload MUST carry `expiresAt`, the deadline for the answer. The envelope `expiresAt` keeps its framework meaning (SPEC §4.2): after it the responder does not prompt for the request.
11
+ */
12
+ export interface PeerCheckAskPayload {
13
+ /**
14
+ * An unguessable value the asker generates for this one question: at least 128 bits from a cryptographically secure random source, encoded base64url without padding (22 to 86 characters). The responder echoes it unchanged in its answer.
15
+ */
16
+ challenge: string;
17
+ /**
18
+ * What the asker wants confirmed, in one short sentence, for example "Did you just ask me to send you a one-time code?". It is asker-authored text the responder's device displays attributed to the asker, never as a statement the device itself vouches for.
19
+ */
20
+ question: string;
21
+ /**
22
+ * OPTIONAL extra context from the asker. It is UNTRUSTED display text: the responder's device MUST render it as plain text, attributed to the asker and visually distinct from anything the device itself asserts, and MUST NOT interpret it as markup, a link, or an instruction.
23
+ */
24
+ note?: string;
25
+ /**
26
+ * The answer deadline. After this instant the pending question lapses: the responder does not prompt for it and the asker accepts no answer. It is the task's own deadline (SPEC §7.3 item 16); the envelope `expiresAt` bounds only acceptance of the request document.
27
+ */
28
+ expiresAt: string;
29
+ }
30
+ /**
31
+ * The success-response payload: the responder's answer, signed by the responder. Failures use trust-task-error, not this shape. A responder that declines because it does not recognize the question answers with `decision: notConfirmed`; an error is for a document the responder could not act on at all.
32
+ */
33
+ export interface PeerCheckAskResponsePayload {
34
+ /**
35
+ * The `challenge` of the request, echoed unchanged. The asker rejects an answer whose challenge it did not issue, or has already consumed.
36
+ */
37
+ challenge: string;
38
+ /**
39
+ * The task digest (SPEC §4.9.3) of the request document this answers: multibase(multihash(H(JCS(request without its top-level proof)))). It binds the answer to the exact question, challenge, note, parties and deadline the responder was shown, so a yes given to one ask cannot be presented as a yes to another.
40
+ */
41
+ requestDigest: DigestMultibase;
42
+ /**
43
+ * The responder's answer. `confirmed` means yes to the question as asked; `notConfirmed` means no.
44
+ */
45
+ decision: "confirmed" | "notConfirmed";
46
+ /**
47
+ * When the responder gave the answer, RFC 3339. Informational for the asker; freshness is judged against the request's `payload.expiresAt` and the asker's own clock. It is the time of the user's answer; the envelope `issuedAt` is when the responder signed the document, which may be later.
48
+ */
49
+ respondedAt: string;
50
+ /**
51
+ * OPTIONAL, and only with `decision: notConfirmed`, which the schema enforces; a document carrying it beside `confirmed` is invalid. `notRecognized` — the responder does not recognize what the question describes; `declined` — the responder recognizes it and says no; `other` — anything else. An enumeration rather than prose, so an asker never renders responder-authored text.
52
+ */
53
+ notConfirmedReason?: "notRecognized" | "declined" | "other";
54
+ }
55
+
56
+ /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
57
+ export type { DigestMultibase };
58
+
59
+ /** Trust Task type URI. */
60
+ export const TYPE_URI = "https://trusttasks.org/spec/peer-check/ask/0.1" as const;
61
+
62
+ /**
63
+ * The earlier version of this specification that this one declares it
64
+ * extends (front matter `extends`, SPEC §5.2 "Declared extension"), or
65
+ * `null`. Only the direct declaration — follow the chain with
66
+ * `extendsChain` / `readForSpec`.
67
+ */
68
+ export const EXTENDS: string | null = null;
69
+
70
+ /**
71
+ * Why this version is deprecated, or `null` while it is current. A
72
+ * superseded or retired version is still supported, and is withdrawn from
73
+ * this package in a later scheduled batch (SPEC "Superseded and Withdrawn
74
+ * Versions").
75
+ */
76
+ export const DEPRECATION: string | null = null;
77
+
78
+ /** Stable alias for this specification's request payload shape. */
79
+ export type Payload = PeerCheckAskPayload;
80
+
81
+ /** Trust Task response type URI (request type URI + "#response"). */
82
+ export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/peer-check/ask/0.1#response" as const;
83
+
84
+ /** Stable alias for this specification's success-response payload shape. */
85
+ export type Response = PeerCheckAskResponsePayload;
86
+
87
+ /**
88
+ * This specification's payload schema, as a value.
89
+ *
90
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
91
+ * rather than only as a `.json` file because TypeScript types are erased
92
+ * at runtime: without a schema a consumer has nothing to validate, and
93
+ * every REQUIRED payload member is optional in practice. Cross-file
94
+ * `$ref`s are already inlined, so it needs no resolver.
95
+ */
96
+ export const PAYLOAD_SCHEMA = {
97
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
98
+ "$id": "https://trusttasks.org/spec/peer-check/ask/0.1",
99
+ "title": "Peer Check — Ask — payload",
100
+ "description": "The request payload of peer-check/ask: a short yes-or-no question one party puts to another, with an unguessable challenge. The outer document members (id, type, issuer, recipient, issuedAt, expiresAt, proof) are owned by the framework — SPEC §6.3. The asker is the `issuer`, the party being asked is the `recipient`, and the payload MUST carry `expiresAt`, the deadline for the answer. The envelope `expiresAt` keeps its framework meaning (SPEC §4.2): after it the responder does not prompt for the request.",
101
+ "type": "object",
102
+ "additionalProperties": false,
103
+ "required": [
104
+ "challenge",
105
+ "question",
106
+ "expiresAt"
107
+ ],
108
+ "properties": {
109
+ "challenge": {
110
+ "type": "string",
111
+ "pattern": "^[A-Za-z0-9_-]{22,86}$",
112
+ "description": "An unguessable value the asker generates for this one question: at least 128 bits from a cryptographically secure random source, encoded base64url without padding (22 to 86 characters). The responder echoes it unchanged in its answer."
113
+ },
114
+ "question": {
115
+ "type": "string",
116
+ "minLength": 1,
117
+ "maxLength": 200,
118
+ "description": "What the asker wants confirmed, in one short sentence, for example \"Did you just ask me to send you a one-time code?\". It is asker-authored text the responder's device displays attributed to the asker, never as a statement the device itself vouches for."
119
+ },
120
+ "note": {
121
+ "type": "string",
122
+ "minLength": 1,
123
+ "maxLength": 500,
124
+ "description": "OPTIONAL extra context from the asker. It is UNTRUSTED display text: the responder's device MUST render it as plain text, attributed to the asker and visually distinct from anything the device itself asserts, and MUST NOT interpret it as markup, a link, or an instruction."
125
+ },
126
+ "expiresAt": {
127
+ "type": "string",
128
+ "format": "date-time",
129
+ "description": "The answer deadline. After this instant the pending question lapses: the responder does not prompt for it and the asker accepts no answer. It is the task's own deadline (SPEC §7.3 item 16); the envelope `expiresAt` bounds only acceptance of the request document."
130
+ }
131
+ },
132
+ "$defs": {
133
+ "Response": {
134
+ "$anchor": "response",
135
+ "title": "Peer Check Ask Response Payload",
136
+ "type": "object",
137
+ "additionalProperties": false,
138
+ "required": [
139
+ "challenge",
140
+ "requestDigest",
141
+ "decision",
142
+ "respondedAt"
143
+ ],
144
+ "description": "The success-response payload: the responder's answer, signed by the responder. Failures use trust-task-error, not this shape. A responder that declines because it does not recognize the question answers with `decision: notConfirmed`; an error is for a document the responder could not act on at all.",
145
+ "dependentSchemas": {
146
+ "notConfirmedReason": {
147
+ "properties": {
148
+ "decision": {
149
+ "const": "notConfirmed"
150
+ }
151
+ }
152
+ }
153
+ },
154
+ "properties": {
155
+ "challenge": {
156
+ "type": "string",
157
+ "pattern": "^[A-Za-z0-9_-]{22,86}$",
158
+ "description": "The `challenge` of the request, echoed unchanged. The asker rejects an answer whose challenge it did not issue, or has already consumed."
159
+ },
160
+ "requestDigest": {
161
+ "$ref": "#/$defs/DigestMultibase",
162
+ "description": "The task digest (SPEC §4.9.3) of the request document this answers: multibase(multihash(H(JCS(request without its top-level proof)))). It binds the answer to the exact question, challenge, note, parties and deadline the responder was shown, so a yes given to one ask cannot be presented as a yes to another."
163
+ },
164
+ "decision": {
165
+ "type": "string",
166
+ "enum": [
167
+ "confirmed",
168
+ "notConfirmed"
169
+ ],
170
+ "description": "The responder's answer. `confirmed` means yes to the question as asked; `notConfirmed` means no."
171
+ },
172
+ "respondedAt": {
173
+ "type": "string",
174
+ "format": "date-time",
175
+ "description": "When the responder gave the answer, RFC 3339. Informational for the asker; freshness is judged against the request's `payload.expiresAt` and the asker's own clock. It is the time of the user's answer; the envelope `issuedAt` is when the responder signed the document, which may be later."
176
+ },
177
+ "notConfirmedReason": {
178
+ "type": "string",
179
+ "enum": [
180
+ "notRecognized",
181
+ "declined",
182
+ "other"
183
+ ],
184
+ "description": "OPTIONAL, and only with `decision: notConfirmed`, which the schema enforces; a document carrying it beside `confirmed` is invalid. `notRecognized` — the responder does not recognize what the question describes; `declined` — the responder recognizes it and says no; `other` — anything else. An enumeration rather than prose, so an asker never renders responder-authored text."
185
+ }
186
+ }
187
+ },
188
+ "DigestMultibase": {
189
+ "title": "DigestMultibase",
190
+ "description": "A cryptographic digest as a multibase-encoded multihash — the encoding the W3C Verifiable Credentials Data Model 2.0 defines for `digestMultibase`, and the one `did:webvh` uses for its SCID and entry hashes.\n\nMultihash carries the hash algorithm in-band, so the value is self-describing and the wire format survives an algorithm change without a schema revision; multibase does the same for the base encoding, so a verifier never infers base58 from base64url by context. A bare hex string or a `sha-256:`-style prefix hard-codes one algorithm into the wire contract and is non-conforming here.\n\nThis definition constrains the *encoding only*. What the digest is computed over is stated by each referencing field, because it differs legitimately: a digest over a JSON document is taken over its RFC 8785 (JCS) canonicalization, while a digest over an opaque artifact is taken over its bytes. A field whose input is a JSON document and which does not name a canonicalization is not reproducible.\n\nRestricted to the two multibase headers W3C Controlled Identifiers 1.0 §2.4 normatively requires — `z` (base58btc) and `u` (base64url-no-pad). CID permits others but states that \"interoperability is not guaranteed between implementations using such values\", and a registry whose purpose is interoperability should not mint digests a conforming verifier may be unable to read. The alphabets are enforced rather than assumed: base58btc excludes 0, O, I and l, and an earlier permissive pattern let three published examples carry digests that were not valid base58 at all. base58btc is RECOMMENDED, for consistency with `did:key` and `did:webvh`.",
191
+ "type": "string",
192
+ "minLength": 16,
193
+ "pattern": "^(z[1-9A-HJ-NP-Za-km-z]+|u[A-Za-z0-9_-]+)$",
194
+ "examples": [
195
+ "zQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR"
196
+ ]
197
+ }
198
+ }
199
+ } as const;
200
+
201
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
202
+ export const RESPONSE_PAYLOAD_SCHEMA = {
203
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
204
+ "$ref": "#/$defs/Response",
205
+ "$defs": {
206
+ "Response": {
207
+ "$anchor": "response",
208
+ "title": "Peer Check Ask Response Payload",
209
+ "type": "object",
210
+ "additionalProperties": false,
211
+ "required": [
212
+ "challenge",
213
+ "requestDigest",
214
+ "decision",
215
+ "respondedAt"
216
+ ],
217
+ "description": "The success-response payload: the responder's answer, signed by the responder. Failures use trust-task-error, not this shape. A responder that declines because it does not recognize the question answers with `decision: notConfirmed`; an error is for a document the responder could not act on at all.",
218
+ "dependentSchemas": {
219
+ "notConfirmedReason": {
220
+ "properties": {
221
+ "decision": {
222
+ "const": "notConfirmed"
223
+ }
224
+ }
225
+ }
226
+ },
227
+ "properties": {
228
+ "challenge": {
229
+ "type": "string",
230
+ "pattern": "^[A-Za-z0-9_-]{22,86}$",
231
+ "description": "The `challenge` of the request, echoed unchanged. The asker rejects an answer whose challenge it did not issue, or has already consumed."
232
+ },
233
+ "requestDigest": {
234
+ "$ref": "#/$defs/DigestMultibase",
235
+ "description": "The task digest (SPEC §4.9.3) of the request document this answers: multibase(multihash(H(JCS(request without its top-level proof)))). It binds the answer to the exact question, challenge, note, parties and deadline the responder was shown, so a yes given to one ask cannot be presented as a yes to another."
236
+ },
237
+ "decision": {
238
+ "type": "string",
239
+ "enum": [
240
+ "confirmed",
241
+ "notConfirmed"
242
+ ],
243
+ "description": "The responder's answer. `confirmed` means yes to the question as asked; `notConfirmed` means no."
244
+ },
245
+ "respondedAt": {
246
+ "type": "string",
247
+ "format": "date-time",
248
+ "description": "When the responder gave the answer, RFC 3339. Informational for the asker; freshness is judged against the request's `payload.expiresAt` and the asker's own clock. It is the time of the user's answer; the envelope `issuedAt` is when the responder signed the document, which may be later."
249
+ },
250
+ "notConfirmedReason": {
251
+ "type": "string",
252
+ "enum": [
253
+ "notRecognized",
254
+ "declined",
255
+ "other"
256
+ ],
257
+ "description": "OPTIONAL, and only with `decision: notConfirmed`, which the schema enforces; a document carrying it beside `confirmed` is invalid. `notRecognized` — the responder does not recognize what the question describes; `declined` — the responder recognizes it and says no; `other` — anything else. An enumeration rather than prose, so an asker never renders responder-authored text."
258
+ }
259
+ }
260
+ },
261
+ "DigestMultibase": {
262
+ "title": "DigestMultibase",
263
+ "description": "A cryptographic digest as a multibase-encoded multihash — the encoding the W3C Verifiable Credentials Data Model 2.0 defines for `digestMultibase`, and the one `did:webvh` uses for its SCID and entry hashes.\n\nMultihash carries the hash algorithm in-band, so the value is self-describing and the wire format survives an algorithm change without a schema revision; multibase does the same for the base encoding, so a verifier never infers base58 from base64url by context. A bare hex string or a `sha-256:`-style prefix hard-codes one algorithm into the wire contract and is non-conforming here.\n\nThis definition constrains the *encoding only*. What the digest is computed over is stated by each referencing field, because it differs legitimately: a digest over a JSON document is taken over its RFC 8785 (JCS) canonicalization, while a digest over an opaque artifact is taken over its bytes. A field whose input is a JSON document and which does not name a canonicalization is not reproducible.\n\nRestricted to the two multibase headers W3C Controlled Identifiers 1.0 §2.4 normatively requires — `z` (base58btc) and `u` (base64url-no-pad). CID permits others but states that \"interoperability is not guaranteed between implementations using such values\", and a registry whose purpose is interoperability should not mint digests a conforming verifier may be unable to read. The alphabets are enforced rather than assumed: base58btc excludes 0, O, I and l, and an earlier permissive pattern let three published examples carry digests that were not valid base58 at all. base58btc is RECOMMENDED, for consistency with `did:key` and `did:webvh`.",
264
+ "type": "string",
265
+ "minLength": 16,
266
+ "pattern": "^(z[1-9A-HJ-NP-Za-km-z]+|u[A-Za-z0-9_-]+)$",
267
+ "examples": [
268
+ "zQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR"
269
+ ]
270
+ }
271
+ }
272
+ } as const;
273
+
274
+ /**
275
+ * SPEC.md §7.2 policy for the request variant, from this specification's
276
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
277
+ * per-specification and cannot be derived from the document alone, and
278
+ * item 2 needs the schema this carries.
279
+ */
280
+ export const SPEC = {
281
+ typeUri: TYPE_URI,
282
+ isBearer: false,
283
+ isProofRequired: true,
284
+ isRecipientRequired: true,
285
+ isIssuedAtRequired: true,
286
+ payloadSchema: PAYLOAD_SCHEMA,
287
+ } as const;
288
+
289
+ /**
290
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
291
+ * tracks the *issuer* party's requirement because a response swaps the
292
+ * parties (§7.3 item 5).
293
+ */
294
+ export const RESPONSE_SPEC = {
295
+ typeUri: RESPONSE_TYPE_URI,
296
+ isBearer: false,
297
+ isProofRequired: true,
298
+ isRecipientRequired: true,
299
+ isIssuedAtRequired: true,
300
+ payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
301
+ } as const;