@brightbeamai/chap-coordinator-mcp 0.2.11 → 0.2.13
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.
- package/README.md +36 -3
- package/dist/cli.cjs +302 -14725
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +291 -14715
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +280 -14699
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +287 -14712
- package/dist/index.js.map +1 -1
- package/dist/schemas.cjs +228 -134
- package/dist/schemas.cjs.map +1 -1
- package/dist/schemas.d.cts +6 -3
- package/dist/schemas.d.ts +6 -3
- package/dist/schemas.js +228 -134
- package/dist/schemas.js.map +1 -1
- package/dist/tools.cjs +39 -39
- package/dist/tools.cjs.map +1 -1
- package/dist/tools.d.cts +5 -4
- package/dist/tools.d.ts +5 -4
- package/dist/tools.js +39 -39
- package/dist/tools.js.map +1 -1
- package/package.json +5 -3
package/dist/schemas.js
CHANGED
|
@@ -11,17 +11,37 @@ var TASK_ID = {
|
|
|
11
11
|
type: "string",
|
|
12
12
|
description: "Task identifier returned by chap.task.create."
|
|
13
13
|
};
|
|
14
|
+
var decimalStringNote = (example) => `Written as a decimal string, e.g. "${example}". CHAP canonicalisation accepts integers only, so a JSON number with a fractional part is refused with -32602.`;
|
|
14
15
|
var ROUTING_HINTS = {
|
|
15
16
|
type: "object",
|
|
16
|
-
description: "
|
|
17
|
+
description: "Signals recorded on the task and read by the routing/1.0 methods: task.route, review.depth and escalate.auto. Recording a hint has no effect on its own; it is consulted only when one of those methods is called.",
|
|
17
18
|
properties: {
|
|
18
|
-
criticality: {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
criticality: {
|
|
20
|
+
type: "string",
|
|
21
|
+
enum: ["low", "medium", "high", "critical"],
|
|
22
|
+
description: "How costly a wrong answer would be. The default review-depth policy reads it: 'critical' gives a full review, and 'high' with confidence below 0.7 does the same. The default assignee policy does not read it."
|
|
23
|
+
},
|
|
24
|
+
deadline: { type: "string", description: "When the work is needed by, as an ISO 8601 timestamp. Recorded on the task; the coordinator does not act on it." },
|
|
25
|
+
risk_tier: { type: "string", description: "Operator-defined risk band, e.g. 'regulated' or 'internal'. No built-in policy reads it; it is available to an operator-supplied routing policy." },
|
|
26
|
+
max_cost_usd: { type: "string", description: `Budget ceiling for this task in US dollars. ${decimalStringNote("12.50")} No built-in policy reads it.` }
|
|
22
27
|
},
|
|
23
28
|
additionalProperties: true
|
|
24
29
|
};
|
|
30
|
+
var COMMENT = {
|
|
31
|
+
type: "string",
|
|
32
|
+
description: "The reviewer's note on this decision. Recorded in the audit entry for the decision."
|
|
33
|
+
};
|
|
34
|
+
var TAGS = {
|
|
35
|
+
type: "array",
|
|
36
|
+
items: { type: "string" },
|
|
37
|
+
description: "Workspace-defined labels for this decision, e.g. ['tone', 'unsupported-claim']. Recorded in the audit entry. chap.audit.read does not filter on tags, so grouping by tag is done by the reader."
|
|
38
|
+
};
|
|
39
|
+
var ARTEFACT_DIGEST = {
|
|
40
|
+
type: "string",
|
|
41
|
+
pattern: "^sha256:[0-9a-f]{64}$",
|
|
42
|
+
description: "Optional. SHA-256 over the JCS canonicalisation of the artefact under review, in the form `sha256:<hex>`. When present it binds the decision to the exact content reviewed, and a mismatch is refused with -32074."
|
|
43
|
+
};
|
|
44
|
+
var STRUCTURED_PAYLOAD_NOTE = "Pass a JSON object or array. A JSON-encoded string is parsed back to the structured value before dispatch, so patches in chap.decide.override apply against a real object.";
|
|
25
45
|
var SCHEMAS = {
|
|
26
46
|
"chap.workspace.create": {
|
|
27
47
|
type: "object",
|
|
@@ -30,10 +50,20 @@ var SCHEMAS = {
|
|
|
30
50
|
profiles: {
|
|
31
51
|
type: "array",
|
|
32
52
|
items: { type: "string" },
|
|
33
|
-
description: "Profile identifiers to enable, e.g. ['core/1.0', 'review/1.0']."
|
|
53
|
+
description: "Profile identifiers to enable, e.g. ['core/1.0', 'review/1.0']. Recorded on the workspace. Two profiles change behaviour by being present: modes/1.0, under which a trial-mode task requires review, and audit-scitt/1.0, which turns on the hash-linked chain."
|
|
54
|
+
},
|
|
55
|
+
mode: {
|
|
56
|
+
type: "string",
|
|
57
|
+
enum: ["shadow", "trial", "production"],
|
|
58
|
+
default: "trial",
|
|
59
|
+
description: "Default mode for tasks created here. Under modes/1.0 a trial-mode task has review_required set to true whatever the caller passes. 'shadow' and 'production' are recorded on the task and carry no further behaviour in this implementation."
|
|
34
60
|
},
|
|
35
|
-
|
|
36
|
-
|
|
61
|
+
mode_ceiling: {
|
|
62
|
+
type: "string",
|
|
63
|
+
enum: ["shadow", "trial", "production"],
|
|
64
|
+
default: "production",
|
|
65
|
+
description: "Highest mode a task in this workspace may request. A task.create above the ceiling is refused with -32040. The ceiling can be changed afterwards with chap.control.set_mode_ceiling."
|
|
66
|
+
}
|
|
37
67
|
},
|
|
38
68
|
additionalProperties: false
|
|
39
69
|
},
|
|
@@ -46,7 +76,11 @@ var SCHEMAS = {
|
|
|
46
76
|
type: "object",
|
|
47
77
|
properties: {
|
|
48
78
|
workspace: WORKSPACE_ID,
|
|
49
|
-
profiles: {
|
|
79
|
+
profiles: {
|
|
80
|
+
type: "array",
|
|
81
|
+
items: { type: "string" },
|
|
82
|
+
description: "The complete profile set to enable, replacing the current one. Adding audit-scitt/1.0 to a workspace that already has entries leaves those entries unchained and outside chain verification."
|
|
83
|
+
}
|
|
50
84
|
},
|
|
51
85
|
required: ["workspace", "profiles"]
|
|
52
86
|
},
|
|
@@ -55,9 +89,13 @@ var SCHEMAS = {
|
|
|
55
89
|
properties: {
|
|
56
90
|
workspace: WORKSPACE_ID,
|
|
57
91
|
from: PARTICIPANT_URI,
|
|
58
|
-
type: {
|
|
59
|
-
|
|
60
|
-
|
|
92
|
+
type: {
|
|
93
|
+
type: "string",
|
|
94
|
+
enum: ["human", "agent", "service", "group", "workspace"],
|
|
95
|
+
description: "The kind of participant. Only members of type 'human' are eligible for the review that chap.task.complete opens on a task marked review_required, and a completion with no eligible human is refused with -32011."
|
|
96
|
+
},
|
|
97
|
+
role: { type: "string", description: "Operator-defined role, e.g. 'reviewer' or 'drafter'. One value is read by the coordinator: 'admin' permits revoking another member's key." },
|
|
98
|
+
display_name: { type: "string", description: "Human-readable name for interfaces. Not used in authorisation." }
|
|
61
99
|
},
|
|
62
100
|
required: ["workspace", "from", "type"]
|
|
63
101
|
},
|
|
@@ -70,12 +108,25 @@ var SCHEMAS = {
|
|
|
70
108
|
type: "object",
|
|
71
109
|
properties: {
|
|
72
110
|
workspace: WORKSPACE_ID,
|
|
73
|
-
from: { ...PARTICIPANT_URI, description: "
|
|
74
|
-
kind: { type: "string", description: "Task kind, e.g. 'draft_response' or 'review'." },
|
|
75
|
-
assignee: { ...PARTICIPANT_URI, description: "Who the task is assigned to. Must be a workspace member." },
|
|
111
|
+
from: { ...PARTICIPANT_URI, description: "The delegator. Must be a workspace member." },
|
|
112
|
+
kind: { type: "string", description: "Task kind, e.g. 'draft_response' or 'review'. Free text; the coordinator records it without interpreting it." },
|
|
113
|
+
assignee: { ...PARTICIPANT_URI, description: "Who the task is assigned to. Must be a workspace member, and must not be paused: assigning to a paused member is refused with -32063." },
|
|
76
114
|
input: { type: "object", description: "Task-specific input payload.", additionalProperties: true },
|
|
77
115
|
routing_hints: ROUTING_HINTS,
|
|
78
|
-
mode: {
|
|
116
|
+
mode: {
|
|
117
|
+
type: "string",
|
|
118
|
+
enum: ["shadow", "trial", "production"],
|
|
119
|
+
description: "Mode for this task, defaulting to the workspace mode. A mode above the workspace ceiling is refused with -32040."
|
|
120
|
+
},
|
|
121
|
+
review_required: {
|
|
122
|
+
type: "boolean",
|
|
123
|
+
description: "When true, chap.task.complete opens a review instead of completing: the output becomes the artefact under review, and the task reaches 'completed' only on a reviewer decision. chap.task.update cannot complete such a task. Under modes/1.0 a trial-mode task has this set to true whatever is passed here."
|
|
124
|
+
},
|
|
125
|
+
deadline: { type: "string", description: "When the task is due, as an ISO 8601 timestamp. Recorded on the task; the coordinator does not act on it." },
|
|
126
|
+
idempotency_key: {
|
|
127
|
+
type: "string",
|
|
128
|
+
description: "Caller-chosen key for safe retries. A second create carrying a key already seen in this workspace returns the original task and records nothing further. The workspace retains the 10,000 most recent keys."
|
|
129
|
+
}
|
|
79
130
|
},
|
|
80
131
|
required: ["workspace", "from", "kind", "assignee", "input"]
|
|
81
132
|
},
|
|
@@ -85,8 +136,12 @@ var SCHEMAS = {
|
|
|
85
136
|
workspace: WORKSPACE_ID,
|
|
86
137
|
from: PARTICIPANT_URI,
|
|
87
138
|
task_id: TASK_ID,
|
|
88
|
-
state: {
|
|
89
|
-
|
|
139
|
+
state: {
|
|
140
|
+
type: "string",
|
|
141
|
+
enum: ["in_progress", "review_requested", "declined", "paused", "cancelled", "completed"],
|
|
142
|
+
description: "The state to move the task to. Only the transitions in SPECIFICATION.md 8.1 are legal from the task's current state; others are refused with -32602. A task marked review_required cannot be moved to 'completed' here: submit the output with chap.task.complete, which opens the review."
|
|
143
|
+
},
|
|
144
|
+
progress_note: { type: "string", description: "Short note on what changed, kept in the task's history." }
|
|
90
145
|
},
|
|
91
146
|
required: ["workspace", "from", "task_id", "state"]
|
|
92
147
|
},
|
|
@@ -96,8 +151,8 @@ var SCHEMAS = {
|
|
|
96
151
|
workspace: WORKSPACE_ID,
|
|
97
152
|
from: PARTICIPANT_URI,
|
|
98
153
|
task_id: TASK_ID,
|
|
99
|
-
output: { description:
|
|
100
|
-
confidence: { type: "
|
|
154
|
+
output: { description: `The task's output artefact. ${STRUCTURED_PAYLOAD_NOTE}` },
|
|
155
|
+
confidence: { type: "string", description: `Self-reported confidence in the output, between 0 and 1. ${decimalStringNote("0.86")}` },
|
|
101
156
|
routing_hints: ROUTING_HINTS
|
|
102
157
|
},
|
|
103
158
|
required: ["workspace", "from", "task_id"]
|
|
@@ -108,17 +163,19 @@ var SCHEMAS = {
|
|
|
108
163
|
workspace: WORKSPACE_ID,
|
|
109
164
|
range: {
|
|
110
165
|
type: "object",
|
|
166
|
+
description: "Sequence window to return. Omit for the whole log.",
|
|
111
167
|
properties: {
|
|
112
|
-
from_seq: { type: "integer", description: "Start sequence number
|
|
113
|
-
to_seq: { type: "integer", description: "End sequence number
|
|
168
|
+
from_seq: { type: "integer", description: "Start sequence number, inclusive." },
|
|
169
|
+
to_seq: { type: "integer", description: "End sequence number, exclusive." }
|
|
114
170
|
}
|
|
115
171
|
},
|
|
116
172
|
filter: {
|
|
117
173
|
type: "object",
|
|
174
|
+
description: "Narrows the entries returned. Conditions combine with AND, and are applied within the sequence window rather than before it.",
|
|
118
175
|
properties: {
|
|
119
|
-
method: { type: "string" },
|
|
120
|
-
from: { type: "string" },
|
|
121
|
-
task_id: { type: "string" }
|
|
176
|
+
method: { type: "string", description: "Return only entries for this CHAP method, e.g. 'decide.override'. Matched in full, without the 'chap.' tool-name prefix." },
|
|
177
|
+
from: { type: "string", description: "Return only entries whose actor is this participant URI." },
|
|
178
|
+
task_id: { type: "string", description: "Return only entries about this task." }
|
|
122
179
|
}
|
|
123
180
|
}
|
|
124
181
|
},
|
|
@@ -135,15 +192,16 @@ var SCHEMAS = {
|
|
|
135
192
|
task_id: TASK_ID,
|
|
136
193
|
to: {
|
|
137
194
|
oneOf: [PARTICIPANT_URI, { type: "array", items: PARTICIPANT_URI }],
|
|
138
|
-
description: "One or more reviewers
|
|
195
|
+
description: "One or more reviewers, as a single URI string or an array of URI strings. Only a workspace member can go on to decide, so a review addressed elsewhere cannot be closed by its recipient."
|
|
139
196
|
},
|
|
140
197
|
rule: {
|
|
141
198
|
type: "string",
|
|
142
199
|
enum: ["any_one_approves", "all_approve", "quorum:2", "quorum:3"],
|
|
143
|
-
default: "any_one_approves"
|
|
200
|
+
default: "any_one_approves",
|
|
201
|
+
description: "How many of the addressed reviewers must approve before the task completes. quorum:N is accepted for any N of 1 or more. The rule is fixed once the review is open: a later request naming a different one is refused with -32014. Omitting it on a later request leaves the rule alone, which is how reviewers are added to an open review."
|
|
144
202
|
},
|
|
145
|
-
artefact: { description:
|
|
146
|
-
deadline: { type: "string" }
|
|
203
|
+
artefact: { description: `The draft being submitted for review. ${STRUCTURED_PAYLOAD_NOTE} Re-requesting with the same artefact widens the reviewer set; a different artefact on an open review is refused with -32014.` },
|
|
204
|
+
deadline: { type: "string", description: "When the review is needed by, as an ISO 8601 timestamp. Recorded on the review; the coordinator does not act on it." }
|
|
147
205
|
},
|
|
148
206
|
required: ["workspace", "from", "task_id", "to", "artefact"]
|
|
149
207
|
},
|
|
@@ -153,13 +211,9 @@ var SCHEMAS = {
|
|
|
153
211
|
workspace: WORKSPACE_ID,
|
|
154
212
|
from: PARTICIPANT_URI,
|
|
155
213
|
task_id: TASK_ID,
|
|
156
|
-
approved_artefact_digest:
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
description: "Optional. SHA-256 over the JCS canonicalisation of the artefact under review, as `sha256:<hex>`. Binds the decision to the exact content reviewed; refused with -32074 on mismatch."
|
|
160
|
-
},
|
|
161
|
-
comment: { type: "string" },
|
|
162
|
-
tags: { type: "array", items: { type: "string" } }
|
|
214
|
+
approved_artefact_digest: ARTEFACT_DIGEST,
|
|
215
|
+
comment: COMMENT,
|
|
216
|
+
tags: TAGS
|
|
163
217
|
},
|
|
164
218
|
required: ["workspace", "from", "task_id"]
|
|
165
219
|
},
|
|
@@ -169,47 +223,49 @@ var SCHEMAS = {
|
|
|
169
223
|
workspace: WORKSPACE_ID,
|
|
170
224
|
from: PARTICIPANT_URI,
|
|
171
225
|
task_id: TASK_ID,
|
|
172
|
-
approved_artefact_digest:
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
},
|
|
177
|
-
comment: { type: "string" },
|
|
178
|
-
tags: { type: "array", items: { type: "string" } },
|
|
179
|
-
request_revision: { type: "boolean", description: "If true, task returns to in_progress instead of declined." }
|
|
226
|
+
approved_artefact_digest: ARTEFACT_DIGEST,
|
|
227
|
+
comment: COMMENT,
|
|
228
|
+
tags: TAGS,
|
|
229
|
+
request_revision: { type: "boolean", description: "When true the task returns to 'in_progress' rather than 'declined', so the assignee can revise and resubmit." }
|
|
180
230
|
},
|
|
181
231
|
required: ["workspace", "from", "task_id"]
|
|
182
232
|
},
|
|
183
233
|
"chap.decide.override": {
|
|
184
234
|
type: "object",
|
|
185
235
|
properties: {
|
|
186
|
-
approved_artefact_digest:
|
|
187
|
-
type: "string",
|
|
188
|
-
pattern: "^sha256:[0-9a-f]{64}$",
|
|
189
|
-
description: "Optional. SHA-256 over the JCS canonicalisation of the artefact under review, as `sha256:<hex>`. Binds the decision to the exact content reviewed; refused with -32074 on mismatch."
|
|
190
|
-
},
|
|
236
|
+
approved_artefact_digest: ARTEFACT_DIGEST,
|
|
191
237
|
workspace: WORKSPACE_ID,
|
|
192
238
|
from: PARTICIPANT_URI,
|
|
193
239
|
task_id: TASK_ID,
|
|
194
240
|
diff: {
|
|
195
241
|
type: "array",
|
|
196
|
-
description: "RFC 6902 JSON Patch operations applied to the artefact under review.",
|
|
242
|
+
description: "RFC 6902 JSON Patch operations applied to the artefact under review. The patched artefact becomes the task output; a patch that does not apply is refused with -32012.",
|
|
197
243
|
items: {
|
|
198
244
|
type: "object",
|
|
199
245
|
properties: {
|
|
200
|
-
op: { type: "string", enum: ["add", "replace", "remove", "copy", "move", "test"] },
|
|
201
|
-
path: { type: "string" },
|
|
202
|
-
value: {},
|
|
203
|
-
from: { type: "string" }
|
|
246
|
+
op: { type: "string", enum: ["add", "replace", "remove", "copy", "move", "test"], description: "The patch operation to apply." },
|
|
247
|
+
path: { type: "string", description: "JSON Pointer into the artefact, e.g. '/body' or '/items/0/severity'." },
|
|
248
|
+
value: { description: "The new value, for add, replace and test." },
|
|
249
|
+
from: { type: "string", description: "Source JSON Pointer, for copy and move." }
|
|
204
250
|
},
|
|
205
251
|
required: ["op", "path"]
|
|
206
252
|
}
|
|
207
253
|
},
|
|
208
|
-
rationale: { type: "string", description: "Why the
|
|
209
|
-
tags:
|
|
210
|
-
policy_refs: {
|
|
211
|
-
|
|
212
|
-
|
|
254
|
+
rationale: { type: "string", description: "Why the correction was made. Required on every override and recorded in the audit entry, since the diff shows what changed but not why." },
|
|
255
|
+
tags: TAGS,
|
|
256
|
+
policy_refs: {
|
|
257
|
+
type: "array",
|
|
258
|
+
items: { type: "string" },
|
|
259
|
+
description: "Identifiers of the policies or guidelines this correction applies, e.g. ['policy:no-delivery-promises']. Recorded in the audit entry."
|
|
260
|
+
},
|
|
261
|
+
logical_id: {
|
|
262
|
+
type: "string",
|
|
263
|
+
description: "Caller-chosen identifier for the item being decided, stable across revisions and overrides of the same underlying content. Recorded in the audit entry."
|
|
264
|
+
},
|
|
265
|
+
intent_preserved: {
|
|
266
|
+
type: "boolean",
|
|
267
|
+
description: "True when the edit refines the decision the draft was making, false when it substitutes a different one. Recorded in the audit entry."
|
|
268
|
+
}
|
|
213
269
|
},
|
|
214
270
|
required: ["workspace", "from", "task_id", "diff", "rationale"]
|
|
215
271
|
},
|
|
@@ -219,8 +275,12 @@ var SCHEMAS = {
|
|
|
219
275
|
workspace: WORKSPACE_ID,
|
|
220
276
|
from: PARTICIPANT_URI,
|
|
221
277
|
task_id: TASK_ID,
|
|
222
|
-
reason: { type: "string" },
|
|
223
|
-
category: {
|
|
278
|
+
reason: { type: "string", description: "Why this reviewer is standing aside. Recorded in the audit entry." },
|
|
279
|
+
category: {
|
|
280
|
+
type: "string",
|
|
281
|
+
enum: ["conflict_of_interest", "insufficient_context", "out_of_scope", "other"],
|
|
282
|
+
description: "The kind of abstention. Recorded in the audit entry."
|
|
283
|
+
}
|
|
224
284
|
},
|
|
225
285
|
required: ["workspace", "from", "task_id", "reason"]
|
|
226
286
|
},
|
|
@@ -229,13 +289,14 @@ var SCHEMAS = {
|
|
|
229
289
|
properties: {
|
|
230
290
|
workspace: WORKSPACE_ID,
|
|
231
291
|
from: PARTICIPANT_URI,
|
|
232
|
-
original_task_id: TASK_ID,
|
|
292
|
+
original_task_id: { ...TASK_ID, description: "The task being escalated. It moves to 'escalated' and is linked to the successor. A completed, cancelled or superseded task cannot be escalated." },
|
|
233
293
|
new_task: {
|
|
234
294
|
type: "object",
|
|
295
|
+
description: "The successor task to open for the escalation target.",
|
|
235
296
|
properties: {
|
|
236
|
-
kind: { type: "string" },
|
|
237
|
-
assignee: PARTICIPANT_URI,
|
|
238
|
-
input: { type: "object", additionalProperties: true }
|
|
297
|
+
kind: { type: "string", description: "Task kind for the successor. Defaults to the original's kind." },
|
|
298
|
+
assignee: { ...PARTICIPANT_URI, description: "Who the escalation goes to. Must be a workspace member." },
|
|
299
|
+
input: { type: "object", additionalProperties: true, description: "Input payload for the successor. It defaults to an empty object rather than the original's input, so anything the new assignee needs has to be restated here." }
|
|
239
300
|
},
|
|
240
301
|
required: ["assignee"]
|
|
241
302
|
}
|
|
@@ -252,15 +313,27 @@ var SCHEMAS = {
|
|
|
252
313
|
from: PARTICIPANT_URI,
|
|
253
314
|
task_id: TASK_ID,
|
|
254
315
|
to: { type: "array", items: PARTICIPANT_URI, description: "Who is being asked." },
|
|
255
|
-
question: { type: "string" },
|
|
316
|
+
question: { type: "string", description: "The question being put. A whisper is answered on its own, without the recipient opening the task." },
|
|
256
317
|
options: {
|
|
257
318
|
type: "array",
|
|
258
|
-
items: {
|
|
259
|
-
|
|
319
|
+
items: {
|
|
320
|
+
type: "object",
|
|
321
|
+
properties: {
|
|
322
|
+
id: { type: "string", description: "Stable identifier that an answer refers to." },
|
|
323
|
+
label: { type: "string", description: "What the option says to the person answering." }
|
|
324
|
+
},
|
|
325
|
+
required: ["id"]
|
|
326
|
+
},
|
|
327
|
+
description: "Multiple-choice options. When present, an answer must name one of these ids in answer_option; any other id is refused with -32022."
|
|
260
328
|
},
|
|
261
|
-
deadline_ms: { type: "integer", description: "
|
|
262
|
-
default_if_lapsed: { description: "
|
|
263
|
-
urgency: {
|
|
329
|
+
deadline_ms: { type: "integer", description: "How long the whisper stays open, in milliseconds from now. Once it passes, the whisper lapses and default_if_lapsed is applied." },
|
|
330
|
+
default_if_lapsed: { description: "The value applied if the deadline passes with no answer. Required, so that a lapsed whisper still has a defined outcome." },
|
|
331
|
+
urgency: {
|
|
332
|
+
type: "string",
|
|
333
|
+
enum: ["low", "medium", "high"],
|
|
334
|
+
default: "low",
|
|
335
|
+
description: "How urgent the question is. Recorded and passed on to the client; it does not change the deadline or the lapse behaviour."
|
|
336
|
+
}
|
|
264
337
|
},
|
|
265
338
|
required: ["workspace", "from", "task_id", "to", "question", "deadline_ms", "default_if_lapsed"]
|
|
266
339
|
},
|
|
@@ -269,10 +342,10 @@ var SCHEMAS = {
|
|
|
269
342
|
properties: {
|
|
270
343
|
workspace: WORKSPACE_ID,
|
|
271
344
|
from: PARTICIPANT_URI,
|
|
272
|
-
whisper_id: { type: "string" },
|
|
273
|
-
answer_option: { type: "string", description: "
|
|
274
|
-
answer: { type: "string", description: "Free-text answer
|
|
275
|
-
comment: { type: "string" }
|
|
345
|
+
whisper_id: { type: "string", description: "Identifier returned by chap.whisper.ask. A whisper that has already been answered is refused with -32020, and one past its deadline with -32021." },
|
|
346
|
+
answer_option: { type: "string", description: "The id of the chosen option. Required when the whisper carried options." },
|
|
347
|
+
answer: { type: "string", description: "Free-text answer, for a whisper with no options." },
|
|
348
|
+
comment: { type: "string", description: "Anything else the answerer wants recorded alongside the answer." }
|
|
276
349
|
},
|
|
277
350
|
required: ["workspace", "from", "whisper_id"]
|
|
278
351
|
},
|
|
@@ -284,16 +357,16 @@ var SCHEMAS = {
|
|
|
284
357
|
properties: {
|
|
285
358
|
workspace: WORKSPACE_ID,
|
|
286
359
|
from: PARTICIPANT_URI,
|
|
287
|
-
to: { type: "array", items: PARTICIPANT_URI, description: "
|
|
360
|
+
to: { type: "array", items: PARTICIPANT_URI, description: "The participants entitled to vote. A vote from anyone else is refused with -32030." },
|
|
288
361
|
task_id: TASK_ID,
|
|
289
362
|
rule: {
|
|
290
363
|
type: "string",
|
|
291
|
-
description: "
|
|
364
|
+
description: "How the outcome is decided when the deliberation closes: any_one_approves, all_approve, quorum:N, weighted_vote:T or weighted_vote_with_veto:T. An unrecognised rule is refused at open with -32033."
|
|
292
365
|
},
|
|
293
|
-
question: { type: "string" },
|
|
294
|
-
weights: { type: "object", additionalProperties: { type: "
|
|
295
|
-
veto: { type: "object", additionalProperties: { type: "boolean" }, description: "Voter
|
|
296
|
-
deadline: { type: "string" }
|
|
366
|
+
question: { type: "string", description: "What the group is deciding. State it so that a yea or a nay is unambiguous." },
|
|
367
|
+
weights: { type: "object", additionalProperties: { type: "integer" }, description: "Voter to weight map, read by the weighted rules. A voter with no entry counts as 1. Weights must be integers: a JSON number with a fractional part is refused with -32602." },
|
|
368
|
+
veto: { type: "object", additionalProperties: { type: "boolean" }, description: "Voter to can-veto map. A veto is honoured only under weighted_vote_with_veto, and only from a voter listed true here." },
|
|
369
|
+
deadline: { type: "string", description: "When voting is intended to close, as an ISO 8601 timestamp. Recorded on the deliberation; closing is done by chap.deliberate.close and the coordinator does not close on the deadline." }
|
|
297
370
|
},
|
|
298
371
|
required: ["workspace", "from", "to", "rule"]
|
|
299
372
|
},
|
|
@@ -302,8 +375,8 @@ var SCHEMAS = {
|
|
|
302
375
|
properties: {
|
|
303
376
|
workspace: WORKSPACE_ID,
|
|
304
377
|
from: PARTICIPANT_URI,
|
|
305
|
-
deliberation_id: { type: "string" },
|
|
306
|
-
comment: { type: "string" }
|
|
378
|
+
deliberation_id: { type: "string", description: "Identifier returned by chap.deliberate.open. A closed deliberation is refused with -32032." },
|
|
379
|
+
comment: { type: "string", description: "The contribution to record. Comments are kept with the deliberation and in the audit log, so the reasoning survives the vote." }
|
|
307
380
|
},
|
|
308
381
|
required: ["workspace", "from", "deliberation_id", "comment"]
|
|
309
382
|
},
|
|
@@ -312,11 +385,11 @@ var SCHEMAS = {
|
|
|
312
385
|
properties: {
|
|
313
386
|
workspace: WORKSPACE_ID,
|
|
314
387
|
from: PARTICIPANT_URI,
|
|
315
|
-
deliberation_id: { type: "string" },
|
|
316
|
-
vote: { type: "string", enum: ["yea", "nay", "abstain"] },
|
|
317
|
-
weight: { type: "
|
|
318
|
-
comment: { type: "string" },
|
|
319
|
-
veto_invoked: { type: "boolean" }
|
|
388
|
+
deliberation_id: { type: "string", description: "Identifier returned by chap.deliberate.open. A closed deliberation is refused with -32032, and a second vote from the same voter with -32031." },
|
|
389
|
+
vote: { type: "string", enum: ["yea", "nay", "abstain"], description: "This voter's position. An abstention is recorded but counts as neither a yea nor a nay, so under all_approve or quorum:N it withholds the approval those rules need." },
|
|
390
|
+
weight: { type: "integer", description: "Recorded with the vote. The tally uses the weights map given at chap.deliberate.open, not this value." },
|
|
391
|
+
comment: { type: "string", description: "Why the vote went this way. Recorded with it." },
|
|
392
|
+
veto_invoked: { type: "boolean", description: "Blocks the outcome regardless of the tally. Honoured only under weighted_vote_with_veto, and only when the voter is listed true in the veto map given at open." }
|
|
320
393
|
},
|
|
321
394
|
required: ["workspace", "from", "deliberation_id", "vote"]
|
|
322
395
|
},
|
|
@@ -325,7 +398,7 @@ var SCHEMAS = {
|
|
|
325
398
|
properties: {
|
|
326
399
|
workspace: WORKSPACE_ID,
|
|
327
400
|
from: PARTICIPANT_URI,
|
|
328
|
-
deliberation_id: { type: "string" }
|
|
401
|
+
deliberation_id: { type: "string", description: "Identifier returned by chap.deliberate.open. Closing computes the outcome from the votes cast; closing an already closed deliberation returns the outcome unchanged." }
|
|
329
402
|
},
|
|
330
403
|
required: ["workspace", "from", "deliberation_id"]
|
|
331
404
|
},
|
|
@@ -337,23 +410,24 @@ var SCHEMAS = {
|
|
|
337
410
|
properties: {
|
|
338
411
|
workspace: WORKSPACE_ID,
|
|
339
412
|
from: PARTICIPANT_URI,
|
|
340
|
-
to: { type: "string", description: "Recipient
|
|
413
|
+
to: { type: "string", description: "Recipient, as a participant URI or a group URI such as 'group:support-team'. A recipient who is not a workspace member is refused with -32052." },
|
|
341
414
|
tasks: {
|
|
342
415
|
type: "array",
|
|
416
|
+
description: "The work being handed over, one entry per task. Every task must currently be assigned to the proposer; otherwise the proposal is refused with -32050.",
|
|
343
417
|
items: {
|
|
344
418
|
type: "object",
|
|
345
419
|
properties: {
|
|
346
420
|
task_id: TASK_ID,
|
|
347
|
-
title: { type: "string" },
|
|
348
|
-
status_summary: { type: "string" },
|
|
349
|
-
next_action: { type: "string" },
|
|
350
|
-
blockers: { type: "array", items: { type: "string" } }
|
|
421
|
+
title: { type: "string", description: "Short label for the task." },
|
|
422
|
+
status_summary: { type: "string", description: "Where the work has reached, and what has already been tried." },
|
|
423
|
+
next_action: { type: "string", description: "What the recipient should do first." },
|
|
424
|
+
blockers: { type: "array", items: { type: "string" }, description: "What is preventing progress, if anything." }
|
|
351
425
|
},
|
|
352
426
|
required: ["task_id"]
|
|
353
427
|
}
|
|
354
428
|
},
|
|
355
|
-
summary: { type: "string" },
|
|
356
|
-
context_links: { type: "array", items: { type: "string" } }
|
|
429
|
+
summary: { type: "string", description: "Covering note for the handover as a whole, above the per-task detail." },
|
|
430
|
+
context_links: { type: "array", items: { type: "string" }, description: "URLs to threads, tickets or documents the recipient will need." }
|
|
357
431
|
},
|
|
358
432
|
required: ["workspace", "from", "to", "tasks"]
|
|
359
433
|
},
|
|
@@ -362,9 +436,9 @@ var SCHEMAS = {
|
|
|
362
436
|
properties: {
|
|
363
437
|
workspace: WORKSPACE_ID,
|
|
364
438
|
from: PARTICIPANT_URI,
|
|
365
|
-
handoff_id: { type: "string" },
|
|
366
|
-
accepted_task_ids: { type: "array", items: TASK_ID, description: "
|
|
367
|
-
comment: { type: "string" }
|
|
439
|
+
handoff_id: { type: "string", description: "Identifier returned by chap.handoff.propose. A handoff already accepted or declined is refused with -32051." },
|
|
440
|
+
accepted_task_ids: { type: "array", items: TASK_ID, description: "Which of the proposed tasks are being accepted. If omitted, all of them are." },
|
|
441
|
+
comment: { type: "string", description: "Anything the recipient wants recorded when taking the work on." }
|
|
368
442
|
},
|
|
369
443
|
required: ["workspace", "from", "handoff_id"]
|
|
370
444
|
},
|
|
@@ -373,9 +447,9 @@ var SCHEMAS = {
|
|
|
373
447
|
properties: {
|
|
374
448
|
workspace: WORKSPACE_ID,
|
|
375
449
|
from: PARTICIPANT_URI,
|
|
376
|
-
handoff_id: { type: "string" },
|
|
377
|
-
reason: { type: "string" },
|
|
378
|
-
suggested_target: PARTICIPANT_URI
|
|
450
|
+
handoff_id: { type: "string", description: "Identifier returned by chap.handoff.propose. A handoff already accepted or declined is refused with -32051." },
|
|
451
|
+
reason: { type: "string", description: "Why the handover is refused. Recorded so the proposer can route it elsewhere." },
|
|
452
|
+
suggested_target: { ...PARTICIPANT_URI, description: "Who should take it instead, if the decliner knows." }
|
|
379
453
|
},
|
|
380
454
|
required: ["workspace", "from", "handoff_id"]
|
|
381
455
|
},
|
|
@@ -387,11 +461,20 @@ var SCHEMAS = {
|
|
|
387
461
|
properties: {
|
|
388
462
|
workspace: WORKSPACE_ID,
|
|
389
463
|
from: PARTICIPANT_URI,
|
|
390
|
-
scope: {
|
|
464
|
+
scope: {
|
|
465
|
+
type: "string",
|
|
466
|
+
enum: ["task", "participant", "workspace"],
|
|
467
|
+
default: "task",
|
|
468
|
+
description: "What the pause applies to. 'task' moves one task to 'paused'; a task that is completed, declined, cancelled or superseded is refused with -32061. 'participant' stops new tasks being assigned to that member and leaves their existing work running. 'workspace' refuses every method except workspace.create, workspace.describe, control.resume, audit.read, participant.join and participant.leave."
|
|
469
|
+
},
|
|
391
470
|
task_id: TASK_ID,
|
|
392
|
-
participant_uri: PARTICIPANT_URI,
|
|
393
|
-
in_flight_policy: {
|
|
394
|
-
|
|
471
|
+
participant_uri: { ...PARTICIPANT_URI, description: "Whose work to pause, when scope is 'participant'. Must be a workspace member." },
|
|
472
|
+
in_flight_policy: {
|
|
473
|
+
type: "string",
|
|
474
|
+
enum: ["allow_to_complete", "interrupt"],
|
|
475
|
+
description: "Recorded with the request, and echoed back when scope is 'participant'. The coordinator does not act on it: under either value, work already under way is left alone."
|
|
476
|
+
},
|
|
477
|
+
reason: { type: "string", description: "Why the pause was applied. Recorded in the audit entry." }
|
|
395
478
|
},
|
|
396
479
|
required: ["workspace", "from"]
|
|
397
480
|
},
|
|
@@ -400,9 +483,14 @@ var SCHEMAS = {
|
|
|
400
483
|
properties: {
|
|
401
484
|
workspace: WORKSPACE_ID,
|
|
402
485
|
from: PARTICIPANT_URI,
|
|
403
|
-
scope: {
|
|
486
|
+
scope: {
|
|
487
|
+
type: "string",
|
|
488
|
+
enum: ["task", "participant", "workspace"],
|
|
489
|
+
default: "task",
|
|
490
|
+
description: "What the resume applies to. 'task' returns a paused task to 'in_progress'; a task that is not paused is refused with -32061. 'participant' allows that member to be assigned tasks again. 'workspace' returns the workspace to active."
|
|
491
|
+
},
|
|
404
492
|
task_id: TASK_ID,
|
|
405
|
-
participant_uri: PARTICIPANT_URI
|
|
493
|
+
participant_uri: { ...PARTICIPANT_URI, description: "Whose work to resume, when scope is 'participant'. Must be a workspace member." }
|
|
406
494
|
},
|
|
407
495
|
required: ["workspace", "from"]
|
|
408
496
|
},
|
|
@@ -411,8 +499,8 @@ var SCHEMAS = {
|
|
|
411
499
|
properties: {
|
|
412
500
|
workspace: WORKSPACE_ID,
|
|
413
501
|
from: PARTICIPANT_URI,
|
|
414
|
-
task_id: TASK_ID,
|
|
415
|
-
reason: { type: "string" }
|
|
502
|
+
task_id: { ...TASK_ID, description: "The task to cancel. A task that is completed, declined, cancelled or superseded is refused with -32061." },
|
|
503
|
+
reason: { type: "string", description: "Why the task was cancelled. Recorded in the audit entry." }
|
|
416
504
|
},
|
|
417
505
|
required: ["workspace", "from", "task_id"]
|
|
418
506
|
},
|
|
@@ -421,8 +509,8 @@ var SCHEMAS = {
|
|
|
421
509
|
properties: {
|
|
422
510
|
workspace: WORKSPACE_ID,
|
|
423
511
|
from: PARTICIPANT_URI,
|
|
424
|
-
label: { type: "string" },
|
|
425
|
-
include: { type: "array", items: { type: "string" }, description: "
|
|
512
|
+
label: { type: "string", description: "Name for this snapshot, recorded on the artefact. chap.control.rollback identifies a snapshot by its artefact id, not by label." },
|
|
513
|
+
include: { type: "array", items: { type: "string" }, description: "Which aspects of the workspace to capture. Recognised values are 'members', 'open_tasks', 'mode_ceiling', 'policy' and 'audit'. Defaults to members, open_tasks and mode_ceiling." }
|
|
426
514
|
},
|
|
427
515
|
required: ["workspace", "from"]
|
|
428
516
|
},
|
|
@@ -431,9 +519,9 @@ var SCHEMAS = {
|
|
|
431
519
|
properties: {
|
|
432
520
|
workspace: WORKSPACE_ID,
|
|
433
521
|
from: PARTICIPANT_URI,
|
|
434
|
-
to_snapshot_artefact_id: { type: "string" },
|
|
435
|
-
what_to_restore: { type: "array", items: { type: "string" } },
|
|
436
|
-
reason: { type: "string" }
|
|
522
|
+
to_snapshot_artefact_id: { type: "string", description: "Artefact id returned by chap.control.snapshot. An id with no matching snapshot is refused with -32062." },
|
|
523
|
+
what_to_restore: { type: "array", items: { type: "string" }, description: "Which captured aspects to apply. Only 'mode_ceiling' and 'members' are restored; the others are held in the snapshot and not reapplied. Restoring members resets role and scopes on members still present, and does not re-add members who have left. Defaults to the snapshot's include list." },
|
|
524
|
+
reason: { type: "string", description: "Why the rollback was performed. The rollback is itself an audit entry; earlier entries are not rewritten." }
|
|
437
525
|
},
|
|
438
526
|
required: ["workspace", "from", "to_snapshot_artefact_id"]
|
|
439
527
|
},
|
|
@@ -442,17 +530,18 @@ var SCHEMAS = {
|
|
|
442
530
|
properties: {
|
|
443
531
|
workspace: WORKSPACE_ID,
|
|
444
532
|
from: PARTICIPANT_URI,
|
|
445
|
-
task_id: TASK_ID,
|
|
533
|
+
task_id: { ...TASK_ID, description: "The task being replaced. It moves to 'superseded' and is linked to the successor rather than deleted." },
|
|
446
534
|
successor_task: {
|
|
447
535
|
type: "object",
|
|
536
|
+
description: "The replacement task.",
|
|
448
537
|
properties: {
|
|
449
|
-
kind: { type: "string" },
|
|
450
|
-
assignee: PARTICIPANT_URI,
|
|
451
|
-
input: { type: "object", additionalProperties: true }
|
|
538
|
+
kind: { type: "string", description: "Task kind for the successor. Required." },
|
|
539
|
+
assignee: { ...PARTICIPANT_URI, description: "Who takes the replacement on. Defaults to the superseded task's assignee, and must be a workspace member." },
|
|
540
|
+
input: { type: "object", additionalProperties: true, description: "Input payload for the successor. Defaults to an empty object." }
|
|
452
541
|
},
|
|
453
542
|
required: ["kind"]
|
|
454
543
|
},
|
|
455
|
-
reason: { type: "string" }
|
|
544
|
+
reason: { type: "string", description: "Why the original is being replaced. Recorded in the audit entry." }
|
|
456
545
|
},
|
|
457
546
|
required: ["workspace", "from", "task_id", "successor_task"]
|
|
458
547
|
},
|
|
@@ -461,8 +550,12 @@ var SCHEMAS = {
|
|
|
461
550
|
properties: {
|
|
462
551
|
workspace: WORKSPACE_ID,
|
|
463
552
|
from: PARTICIPANT_URI,
|
|
464
|
-
new_ceiling: {
|
|
465
|
-
|
|
553
|
+
new_ceiling: {
|
|
554
|
+
type: "string",
|
|
555
|
+
enum: ["shadow", "trial", "production"],
|
|
556
|
+
description: "The highest mode tasks in this workspace may request from now on. Existing tasks keep the mode they were created with. Where the coordinator is configured to enforce step-up authentication this method is one of the privileged ones and a call without step-up is refused with -32402."
|
|
557
|
+
},
|
|
558
|
+
reason: { type: "string", description: "Why the ceiling is being changed. Recorded in the audit entry." }
|
|
466
559
|
},
|
|
467
560
|
required: ["workspace", "from", "new_ceiling"]
|
|
468
561
|
},
|
|
@@ -475,7 +568,7 @@ var SCHEMAS = {
|
|
|
475
568
|
workspace: WORKSPACE_ID,
|
|
476
569
|
from: PARTICIPANT_URI,
|
|
477
570
|
task_id: TASK_ID,
|
|
478
|
-
candidates: { type: "array", items: PARTICIPANT_URI, description: "Candidate assignees." }
|
|
571
|
+
candidates: { type: "array", items: PARTICIPANT_URI, description: "Candidate assignees. An empty list is refused with -32513. Candidates that are not workspace members are dropped, and if none remain the call is refused with -32510. The default policy selects the first remaining candidate; an operator-supplied routing policy may select on any basis." }
|
|
479
572
|
},
|
|
480
573
|
required: ["workspace", "from", "task_id", "candidates"]
|
|
481
574
|
},
|
|
@@ -487,7 +580,7 @@ var SCHEMAS = {
|
|
|
487
580
|
task_id: TASK_ID,
|
|
488
581
|
artefact_routing_hints: {
|
|
489
582
|
type: "object",
|
|
490
|
-
description:
|
|
583
|
+
description: `Per-artefact signals such as confidence, model_id and cost_consumed_usd, merged over the task's routing_hints for this call. The default policy reads criticality and confidence. If the merged set is empty the call is refused with -32514. Fractional values are written as decimal strings, e.g. "confidence": "0.86".`,
|
|
491
584
|
additionalProperties: true
|
|
492
585
|
}
|
|
493
586
|
},
|
|
@@ -499,7 +592,7 @@ var SCHEMAS = {
|
|
|
499
592
|
workspace: WORKSPACE_ID,
|
|
500
593
|
from: PARTICIPANT_URI,
|
|
501
594
|
task_id: TASK_ID,
|
|
502
|
-
default_escalation_target: PARTICIPANT_URI
|
|
595
|
+
default_escalation_target: { ...PARTICIPANT_URI, description: "Who to escalate to when the policy decides to escalate and names no target of its own. It must be a workspace member or a group URI; if the policy escalates with no usable target the call is refused with -32516." }
|
|
503
596
|
},
|
|
504
597
|
required: ["workspace", "from", "task_id"]
|
|
505
598
|
},
|
|
@@ -511,8 +604,8 @@ var SCHEMAS = {
|
|
|
511
604
|
properties: {
|
|
512
605
|
workspace: WORKSPACE_ID,
|
|
513
606
|
from: PARTICIPANT_URI,
|
|
514
|
-
old_kid: { type: "string" },
|
|
515
|
-
new_jwk: { type: "object", additionalProperties: true }
|
|
607
|
+
old_kid: { type: "string", description: "Key id being retired. It is given a valid_until timestamp and stays in the member's key history, so signatures made before the rotation still verify. A key id that is unknown is refused with -32071, and one already revoked with -32072." },
|
|
608
|
+
new_jwk: { type: "object", additionalProperties: true, description: "The replacement public key as a JWK. It must carry a 'kid'. Whether the request itself has to be signed with the old key is decided at dispatch, and only where the coordinator is configured to require signatures." }
|
|
516
609
|
},
|
|
517
610
|
required: ["workspace", "from", "old_kid", "new_jwk"]
|
|
518
611
|
},
|
|
@@ -521,9 +614,9 @@ var SCHEMAS = {
|
|
|
521
614
|
properties: {
|
|
522
615
|
workspace: WORKSPACE_ID,
|
|
523
616
|
from: PARTICIPANT_URI,
|
|
524
|
-
target_uri: PARTICIPANT_URI,
|
|
525
|
-
kid: { type: "string" },
|
|
526
|
-
reason: { type: "string" }
|
|
617
|
+
target_uri: { ...PARTICIPANT_URI, description: "Whose key is being revoked. Revoking another member's key requires the caller to hold the role 'admin'; otherwise the call is refused with -32011." },
|
|
618
|
+
kid: { type: "string", description: "Key id to revoke. It is marked revoked with a timestamp and a reason, and signatures presented with it are refused from then on. A key id that is unknown is refused with -32071." },
|
|
619
|
+
reason: { type: "string", description: "Why the key was revoked, e.g. 'laptop lost'. Recorded on the key and in the audit entry." }
|
|
527
620
|
},
|
|
528
621
|
required: ["workspace", "from", "target_uri", "kid"]
|
|
529
622
|
},
|
|
@@ -537,12 +630,13 @@ var SCHEMAS = {
|
|
|
537
630
|
from: PARTICIPANT_URI,
|
|
538
631
|
range: {
|
|
539
632
|
type: "object",
|
|
633
|
+
description: "Sequence window to anchor. Omit to submit the whole chain.",
|
|
540
634
|
properties: {
|
|
541
|
-
from_seq: { type: "integer" },
|
|
542
|
-
to_seq: { type: "integer" }
|
|
635
|
+
from_seq: { type: "integer", description: "Start sequence number, inclusive." },
|
|
636
|
+
to_seq: { type: "integer", description: "End sequence number, exclusive." }
|
|
543
637
|
}
|
|
544
638
|
},
|
|
545
|
-
issuer: { type: "string" }
|
|
639
|
+
issuer: { type: "string", description: "Issuer identifier placed on each SCITT signed statement, naming who vouches for the chain. Defaults to 'service:coordinator'. Where no submitter is configured the statements are returned unsigned for the deployment to submit out of band." }
|
|
546
640
|
},
|
|
547
641
|
required: ["workspace"]
|
|
548
642
|
},
|
|
@@ -551,7 +645,7 @@ var SCHEMAS = {
|
|
|
551
645
|
properties: {
|
|
552
646
|
workspace: WORKSPACE_ID,
|
|
553
647
|
from: PARTICIPANT_URI,
|
|
554
|
-
receipt: { type: "object", additionalProperties: true }
|
|
648
|
+
receipt: { type: "object", additionalProperties: true, description: "The SCITT receipt to check, as returned by the transparency service. Verification is delegated to a hook supplied by the deployment, and fails closed with -32082 where no hook is configured." }
|
|
555
649
|
},
|
|
556
650
|
required: ["workspace", "receipt"]
|
|
557
651
|
},
|