@appsolutely-io/waypoint 0.0.0-stage → 0.1.1-next.0

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 (161) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +260 -2
  3. package/dist/block-reply-DN4RiLL0.d.cts +169 -0
  4. package/dist/block-reply-Dtof9ild.d.ts +169 -0
  5. package/dist/blocks-25YOJ5SS.cjs +1 -0
  6. package/dist/blocks-UJ7GUJHD.js +1 -0
  7. package/dist/chunk-3KV7TDDR.cjs +3 -0
  8. package/dist/chunk-4BWV3SEL.cjs +1 -0
  9. package/dist/chunk-4ZGW4HM4.cjs +1 -0
  10. package/dist/chunk-5TBO732O.js +1 -0
  11. package/dist/chunk-6OZSKCPT.cjs +1 -0
  12. package/dist/chunk-C3VS33WJ.js +1 -0
  13. package/dist/chunk-D2EGPBCX.cjs +1 -0
  14. package/dist/chunk-FBADWFRR.cjs +1 -0
  15. package/dist/chunk-FQSWQLRW.js +1 -0
  16. package/dist/chunk-GT6PI4CT.cjs +1 -0
  17. package/dist/chunk-II26UWZM.cjs +1 -0
  18. package/dist/chunk-JFMVVGGB.js +1 -0
  19. package/dist/chunk-K73VV7KA.js +1 -0
  20. package/dist/chunk-L4PFFRDE.js +3 -0
  21. package/dist/chunk-LLPGVQUT.cjs +1 -0
  22. package/dist/chunk-M3UENQ6L.cjs +1 -0
  23. package/dist/chunk-M63QOANE.js +1 -0
  24. package/dist/chunk-MEKDQDSV.js +1 -0
  25. package/dist/chunk-OEPKPDLD.js +1 -0
  26. package/dist/chunk-OWT55N6J.js +3 -0
  27. package/dist/chunk-PFR2J5BV.js +1 -0
  28. package/dist/chunk-Q6BD2YL3.cjs +1 -0
  29. package/dist/chunk-Q7BULGQG.cjs +1 -0
  30. package/dist/chunk-QS3MKZOY.cjs +3 -0
  31. package/dist/chunk-RHBDQGD4.js +1 -0
  32. package/dist/chunk-RZZDQWC2.js +1 -0
  33. package/dist/chunk-S73WZWDP.js +1 -0
  34. package/dist/chunk-SD2KAIVE.js +1 -0
  35. package/dist/chunk-T5XF2R74.js +1 -0
  36. package/dist/chunk-TCFCSGQ3.js +1 -0
  37. package/dist/chunk-TGL3DR2K.js +1 -0
  38. package/dist/chunk-TODYQ3SG.cjs +1 -0
  39. package/dist/chunk-TVSQHTK2.cjs +1 -0
  40. package/dist/chunk-UYR3UEIW.cjs +1 -0
  41. package/dist/chunk-VGGJGRNK.cjs +1 -0
  42. package/dist/chunk-W6Y7H56X.js +1 -0
  43. package/dist/chunk-XSHOLIC7.cjs +1 -0
  44. package/dist/chunk-XWDB2LS3.cjs +1 -0
  45. package/dist/cli.js +3 -0
  46. package/dist/confirmation-view-CICNJJIO.js +1 -0
  47. package/dist/confirmation-view-OMWHUYVC.cjs +1 -0
  48. package/dist/conformance.cjs +1 -0
  49. package/dist/conformance.d.cts +10 -0
  50. package/dist/conformance.d.ts +10 -0
  51. package/dist/conformance.js +1 -0
  52. package/dist/flow-parser.cjs +1 -0
  53. package/dist/flow-parser.d.cts +3 -0
  54. package/dist/flow-parser.d.ts +3 -0
  55. package/dist/flow-parser.js +1 -0
  56. package/dist/flows-panel-AIULKYOS.cjs +1 -0
  57. package/dist/flows-panel-YEJ36RTY.js +1 -0
  58. package/dist/form-extras-QYE32TUY.cjs +1 -0
  59. package/dist/form-extras-SBBOMJS2.js +1 -0
  60. package/dist/form-fill-C32AHxSr.d.cts +653 -0
  61. package/dist/form-fill-Dp3ut1_Y.d.ts +653 -0
  62. package/dist/form-session.cjs +1 -0
  63. package/dist/form-session.d.cts +7 -0
  64. package/dist/form-session.d.ts +7 -0
  65. package/dist/form-session.js +1 -0
  66. package/dist/frame-decoder.cjs +3 -0
  67. package/dist/frame-decoder.d.cts +5 -0
  68. package/dist/frame-decoder.d.ts +5 -0
  69. package/dist/frame-decoder.js +3 -0
  70. package/dist/generated-C9tbjwK0.d.cts +797 -0
  71. package/dist/generated-C9tbjwK0.d.ts +797 -0
  72. package/dist/hooks/index.cjs +1 -0
  73. package/dist/hooks/index.d.cts +48 -0
  74. package/dist/hooks/index.d.ts +48 -0
  75. package/dist/hooks/index.js +1 -0
  76. package/dist/i18n-DPNfYTMG.d.cts +148 -0
  77. package/dist/i18n-DPNfYTMG.d.ts +148 -0
  78. package/dist/index-B5idIFTx.d.cts +34 -0
  79. package/dist/index-DPzoKXCK.d.ts +34 -0
  80. package/dist/index.cjs +3 -0
  81. package/dist/index.d.cts +38 -0
  82. package/dist/index.d.ts +38 -0
  83. package/dist/index.js +3 -0
  84. package/dist/intent-BQPPows1.d.cts +154 -0
  85. package/dist/intent-BuvqEU3Q.d.ts +154 -0
  86. package/dist/intent.cjs +1 -0
  87. package/dist/intent.d.cts +2 -0
  88. package/dist/intent.d.ts +2 -0
  89. package/dist/intent.js +1 -0
  90. package/dist/markdown-BSRKJFFE.cjs +17 -0
  91. package/dist/markdown-ETLB66BK.js +17 -0
  92. package/dist/message-actions-3HGE6VTS.js +1 -0
  93. package/dist/message-actions-F6SPLTT7.cjs +1 -0
  94. package/dist/messages/en/index.cjs +1 -0
  95. package/dist/messages/en/index.d.cts +3 -0
  96. package/dist/messages/en/index.d.ts +3 -0
  97. package/dist/messages/en/index.js +1 -0
  98. package/dist/messages/index.cjs +1 -0
  99. package/dist/messages/index.d.cts +14 -0
  100. package/dist/messages/index.d.ts +14 -0
  101. package/dist/messages/index.js +1 -0
  102. package/dist/messages/zh-Hans/index.cjs +1 -0
  103. package/dist/messages/zh-Hans/index.d.cts +3 -0
  104. package/dist/messages/zh-Hans/index.d.ts +3 -0
  105. package/dist/messages/zh-Hans/index.js +1 -0
  106. package/dist/on-demand.cjs +1 -0
  107. package/dist/on-demand.d.cts +56 -0
  108. package/dist/on-demand.d.ts +56 -0
  109. package/dist/on-demand.js +1 -0
  110. package/dist/problem-messages-THONMXFZ.cjs +1 -0
  111. package/dist/problem-messages-Z5QGO6RE.js +1 -0
  112. package/dist/react/index.cjs +1 -0
  113. package/dist/react/index.d.cts +419 -0
  114. package/dist/react/index.d.ts +419 -0
  115. package/dist/react/index.js +1 -0
  116. package/dist/reads-Bk84x_rt.d.ts +38 -0
  117. package/dist/reads-DlpCt8dE.d.cts +38 -0
  118. package/dist/recovery-panel-OWY2CWOH.cjs +3 -0
  119. package/dist/recovery-panel-VOKVDDZD.js +3 -0
  120. package/dist/reply-controls-5CWIAKIG.js +1 -0
  121. package/dist/reply-controls-CPWB4VBK.cjs +1 -0
  122. package/dist/run-XBABOEXK.js +1 -0
  123. package/dist/schema.json +2900 -0
  124. package/dist/skin-antd/index.cjs +1 -0
  125. package/dist/skin-antd/index.d.cts +30 -0
  126. package/dist/skin-antd/index.d.ts +30 -0
  127. package/dist/skin-antd/index.js +1 -0
  128. package/dist/skin-default/index.cjs +1 -0
  129. package/dist/skin-default/index.d.cts +42 -0
  130. package/dist/skin-default/index.d.ts +42 -0
  131. package/dist/skin-default/index.js +1 -0
  132. package/dist/step-name-3hQ6CCGr.d.cts +19 -0
  133. package/dist/step-name-BdkYnb5g.d.ts +19 -0
  134. package/dist/storage-commit.cjs +1 -0
  135. package/dist/storage-commit.d.cts +17 -0
  136. package/dist/storage-commit.d.ts +17 -0
  137. package/dist/storage-commit.js +1 -0
  138. package/dist/stream-reads.cjs +1 -0
  139. package/dist/stream-reads.d.cts +22 -0
  140. package/dist/stream-reads.d.ts +22 -0
  141. package/dist/stream-reads.js +1 -0
  142. package/dist/styles.css +796 -0
  143. package/dist/testing/index.cjs +1 -0
  144. package/dist/testing/index.d.cts +57 -0
  145. package/dist/testing/index.d.ts +57 -0
  146. package/dist/testing/index.js +1 -0
  147. package/docs/examples/message-versions.tsx +74 -0
  148. package/docs/form-fill-protocol.md +83 -0
  149. package/docs/message-versions.md +64 -0
  150. package/docs/plan-protocol.md +83 -0
  151. package/docs/reply-protocol.md +75 -0
  152. package/etc/hooks.api.md +2385 -0
  153. package/etc/index.api.md +2159 -0
  154. package/etc/messages-en.api.md +13 -0
  155. package/etc/messages-zh-Hans.api.md +13 -0
  156. package/etc/messages.api.md +183 -0
  157. package/etc/react.api.md +2968 -0
  158. package/etc/skin-antd.api.md +2989 -0
  159. package/etc/skin-default.api.md +61 -0
  160. package/etc/testing.api.md +3034 -0
  161. package/package.json +168 -4
@@ -0,0 +1,2900 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://waypoint.example/schema",
4
+ "title": "WaypointProtocol",
5
+ "$defs": {
6
+ "Problem": {
7
+ "type": "object",
8
+ "properties": {
9
+ "code": {
10
+ "enum": [
11
+ "update-required",
12
+ "in-doubt",
13
+ "replaced",
14
+ "retryable",
15
+ "refused",
16
+ "closed",
17
+ "full",
18
+ "declined",
19
+ "unavailable",
20
+ "sign-in",
21
+ "rate-limited",
22
+ "step-up-cancelled",
23
+ "mismatch",
24
+ "invalid-read",
25
+ "invalid-plan",
26
+ "needs-attention",
27
+ "stopped",
28
+ "plan-changed",
29
+ "agreement-expired"
30
+ ]
31
+ },
32
+ "id": {
33
+ "type": "string",
34
+ "minLength": 1
35
+ },
36
+ "retryAfter": {
37
+ "type": "integer",
38
+ "minimum": 0
39
+ },
40
+ "confirmation": {
41
+ "type": "object",
42
+ "description": "Why a confirmation was refused; only with code refused.",
43
+ "properties": {
44
+ "reason": {
45
+ "enum": ["expired", "used", "stale", "mismatch", "missing"]
46
+ }
47
+ },
48
+ "required": ["reason"]
49
+ }
50
+ },
51
+ "required": ["code", "id"]
52
+ },
53
+ "Negotiation": {
54
+ "type": "object",
55
+ "properties": {
56
+ "protocol": {
57
+ "type": "string",
58
+ "minLength": 1
59
+ },
60
+ "supported": {
61
+ "type": "array",
62
+ "items": {
63
+ "type": "string",
64
+ "minLength": 1
65
+ }
66
+ },
67
+ "offer": {
68
+ "$ref": "#/$defs/NegotiationOfferWire"
69
+ }
70
+ },
71
+ "required": ["protocol", "supported"]
72
+ },
73
+ "NegotiationOfferWire": {
74
+ "type": "object",
75
+ "properties": {
76
+ "capabilities": {
77
+ "type": "array",
78
+ "items": {
79
+ "type": "string",
80
+ "minLength": 1
81
+ }
82
+ }
83
+ },
84
+ "required": ["capabilities"]
85
+ },
86
+ "Negotiated": {
87
+ "type": "object",
88
+ "properties": {
89
+ "protocol": {
90
+ "type": "string",
91
+ "minLength": 1
92
+ },
93
+ "capabilities": {
94
+ "type": "array",
95
+ "items": {
96
+ "type": "string",
97
+ "minLength": 1
98
+ }
99
+ },
100
+ "agreementId": {
101
+ "type": "string",
102
+ "minLength": 1,
103
+ "maxLength": 128,
104
+ "pattern": "^[A-Za-z0-9._~-]+$"
105
+ }
106
+ },
107
+ "required": ["protocol", "capabilities"]
108
+ },
109
+ "CanonicalRequest": {
110
+ "type": "object",
111
+ "properties": {
112
+ "method": {
113
+ "enum": ["POST", "PUT", "PATCH", "GET"]
114
+ },
115
+ "path": {
116
+ "type": "string",
117
+ "pattern": "^/[^?#]*$"
118
+ },
119
+ "body": {
120
+ "type": "string"
121
+ },
122
+ "headers": {
123
+ "type": "object",
124
+ "additionalProperties": {
125
+ "type": "string"
126
+ }
127
+ },
128
+ "digest": {
129
+ "type": "string",
130
+ "minLength": 1
131
+ }
132
+ },
133
+ "required": ["method", "path", "body", "headers", "digest"],
134
+ "additionalProperties": false
135
+ },
136
+ "ReadTemplate": {
137
+ "type": "object",
138
+ "properties": {
139
+ "method": {
140
+ "const": "GET"
141
+ },
142
+ "path": {
143
+ "type": "string",
144
+ "minLength": 1
145
+ },
146
+ "rows": {
147
+ "type": "array",
148
+ "items": {
149
+ "type": "string",
150
+ "minLength": 1
151
+ }
152
+ },
153
+ "fields": {
154
+ "type": "array",
155
+ "items": {
156
+ "type": "string",
157
+ "minLength": 1
158
+ }
159
+ }
160
+ },
161
+ "required": ["method", "path", "rows", "fields"],
162
+ "additionalProperties": false
163
+ },
164
+ "Step": {
165
+ "type": "object",
166
+ "properties": {
167
+ "id": {
168
+ "type": "string",
169
+ "minLength": 1
170
+ },
171
+ "operation": {
172
+ "type": "string",
173
+ "minLength": 1
174
+ },
175
+ "resource": {
176
+ "type": "string",
177
+ "minLength": 1
178
+ },
179
+ "rows": {
180
+ "type": "array",
181
+ "items": {
182
+ "type": "string",
183
+ "minLength": 1
184
+ }
185
+ },
186
+ "fields": {
187
+ "type": "array",
188
+ "items": {
189
+ "type": "string",
190
+ "minLength": 1
191
+ }
192
+ },
193
+ "view": {
194
+ "type": "string",
195
+ "minLength": 1
196
+ },
197
+ "tier": {
198
+ "enum": ["low", "sensitive"]
199
+ },
200
+ "undo": {
201
+ "type": "string",
202
+ "pattern": "^(compare-and-set|archive-created|inverse:[a-zA-Z0-9._-]+|none)$"
203
+ },
204
+ "stepUp": {
205
+ "type": "boolean"
206
+ },
207
+ "request": {
208
+ "$ref": "#/$defs/CanonicalRequest"
209
+ },
210
+ "before": {
211
+ "type": "object"
212
+ },
213
+ "after": {
214
+ "type": "object"
215
+ },
216
+ "planningRead": {
217
+ "$ref": "#/$defs/ReadTemplate"
218
+ }
219
+ },
220
+ "required": [
221
+ "id",
222
+ "operation",
223
+ "resource",
224
+ "rows",
225
+ "fields",
226
+ "view",
227
+ "tier",
228
+ "undo",
229
+ "stepUp"
230
+ ]
231
+ },
232
+ "ImmediateDraft": {
233
+ "type": "object",
234
+ "properties": {
235
+ "kind": {
236
+ "const": "immediate"
237
+ },
238
+ "stage": {
239
+ "const": "draft"
240
+ },
241
+ "id": {
242
+ "type": "string",
243
+ "minLength": 1
244
+ },
245
+ "steps": {
246
+ "type": "array",
247
+ "items": {
248
+ "allOf": [
249
+ {
250
+ "$ref": "#/$defs/Step"
251
+ },
252
+ {
253
+ "required": ["planningRead"],
254
+ "not": {
255
+ "anyOf": [
256
+ {
257
+ "required": ["request"]
258
+ },
259
+ {
260
+ "required": ["before"]
261
+ }
262
+ ]
263
+ }
264
+ }
265
+ ]
266
+ }
267
+ }
268
+ },
269
+ "required": ["kind", "stage", "id", "steps"],
270
+ "additionalProperties": false
271
+ },
272
+ "ImmediatePlan": {
273
+ "type": "object",
274
+ "properties": {
275
+ "kind": {
276
+ "const": "immediate"
277
+ },
278
+ "stage": {
279
+ "const": "final"
280
+ },
281
+ "id": {
282
+ "type": "string",
283
+ "minLength": 1
284
+ },
285
+ "digest": {
286
+ "type": "string",
287
+ "minLength": 1
288
+ },
289
+ "steps": {
290
+ "type": "array",
291
+ "items": {
292
+ "allOf": [
293
+ {
294
+ "$ref": "#/$defs/Step"
295
+ },
296
+ {
297
+ "required": ["request", "before", "after"],
298
+ "not": {
299
+ "required": ["planningRead"]
300
+ }
301
+ }
302
+ ]
303
+ }
304
+ },
305
+ "stepUpCount": {
306
+ "type": "integer",
307
+ "minimum": 0
308
+ }
309
+ },
310
+ "required": ["kind", "stage", "id", "digest", "steps", "stepUpCount"],
311
+ "additionalProperties": false
312
+ },
313
+ "TimedPlan": {
314
+ "type": "object",
315
+ "properties": {
316
+ "kind": {
317
+ "const": "timed"
318
+ },
319
+ "id": {
320
+ "type": "string",
321
+ "minLength": 1
322
+ },
323
+ "values": {
324
+ "type": "object",
325
+ "additionalProperties": {
326
+ "type": "object",
327
+ "additionalProperties": {}
328
+ }
329
+ },
330
+ "start": {
331
+ "type": ["string", "null"]
332
+ },
333
+ "end": {
334
+ "type": ["string", "null"]
335
+ }
336
+ },
337
+ "required": ["kind", "id", "values", "start", "end"],
338
+ "additionalProperties": false,
339
+ "not": {
340
+ "properties": {
341
+ "start": {
342
+ "const": null
343
+ },
344
+ "end": {
345
+ "const": null
346
+ }
347
+ }
348
+ }
349
+ },
350
+ "Plan": {
351
+ "oneOf": [
352
+ {
353
+ "$ref": "#/$defs/ImmediateDraft"
354
+ },
355
+ {
356
+ "$ref": "#/$defs/ImmediatePlan"
357
+ },
358
+ {
359
+ "$ref": "#/$defs/TimedPlan"
360
+ }
361
+ ]
362
+ },
363
+ "PlanState": {
364
+ "enum": [
365
+ "proposed",
366
+ "awaiting-confirmation",
367
+ "running",
368
+ "undoing",
369
+ "completed",
370
+ "submitted",
371
+ "undone",
372
+ "needs-attention",
373
+ "cancelled"
374
+ ]
375
+ },
376
+ "Outcome": {
377
+ "type": "object",
378
+ "properties": {
379
+ "stepId": {
380
+ "type": "string",
381
+ "minLength": 1
382
+ },
383
+ "status": {
384
+ "type": "integer",
385
+ "minimum": 0
386
+ },
387
+ "attributed": {
388
+ "type": "boolean"
389
+ },
390
+ "version": {
391
+ "type": "string",
392
+ "minLength": 1
393
+ },
394
+ "reason": {
395
+ "type": "string",
396
+ "minLength": 1,
397
+ "maxLength": 500,
398
+ "description": "The host's plain words for why the step failed, shown to the user; only for a failed step. Optional."
399
+ },
400
+ "retryable": {
401
+ "type": "boolean",
402
+ "description": "Whether the failed step can be tried again. Optional."
403
+ }
404
+ },
405
+ "required": ["stepId", "status", "attributed"]
406
+ },
407
+ "ConfirmationItem": {
408
+ "type": "object",
409
+ "properties": {
410
+ "label": {
411
+ "type": "string",
412
+ "minLength": 1,
413
+ "maxLength": 2000
414
+ },
415
+ "before": {
416
+ "type": "string",
417
+ "minLength": 1,
418
+ "maxLength": 2000
419
+ },
420
+ "after": {
421
+ "type": "string",
422
+ "minLength": 1,
423
+ "maxLength": 2000
424
+ },
425
+ "note": {
426
+ "type": "string",
427
+ "minLength": 1,
428
+ "maxLength": 2000
429
+ }
430
+ },
431
+ "required": ["label"]
432
+ },
433
+ "ConfirmationSchedule": {
434
+ "type": "object",
435
+ "properties": {
436
+ "start": {
437
+ "type": ["string", "null"],
438
+ "format": "date-time"
439
+ },
440
+ "end": {
441
+ "type": ["string", "null"],
442
+ "format": "date-time"
443
+ },
444
+ "startText": {
445
+ "type": "string",
446
+ "minLength": 1,
447
+ "maxLength": 2000
448
+ },
449
+ "endText": {
450
+ "type": "string",
451
+ "minLength": 1,
452
+ "maxLength": 2000
453
+ }
454
+ },
455
+ "required": ["start", "end", "startText", "endText"]
456
+ },
457
+ "ConfirmationRecord": {
458
+ "type": "object",
459
+ "description": "What the host will apply, issued and worded by the host; confirmed only by sending its single-use token.",
460
+ "properties": {
461
+ "token": {
462
+ "type": "string",
463
+ "minLength": 1,
464
+ "maxLength": 512
465
+ },
466
+ "expiresAt": {
467
+ "type": "string",
468
+ "format": "date-time"
469
+ },
470
+ "planId": {
471
+ "type": "string",
472
+ "minLength": 1
473
+ },
474
+ "conversationId": {
475
+ "type": "string",
476
+ "minLength": 1
477
+ },
478
+ "revision": {
479
+ "type": "integer",
480
+ "minimum": 0
481
+ },
482
+ "heading": {
483
+ "type": "string",
484
+ "minLength": 1,
485
+ "maxLength": 2000
486
+ },
487
+ "items": {
488
+ "type": "array",
489
+ "items": {
490
+ "$ref": "#/$defs/ConfirmationItem"
491
+ },
492
+ "maxItems": 1000
493
+ },
494
+ "schedule": {
495
+ "$ref": "#/$defs/ConfirmationSchedule"
496
+ },
497
+ "irreversible": {
498
+ "type": "boolean"
499
+ },
500
+ "undo": {
501
+ "type": "string",
502
+ "minLength": 1,
503
+ "maxLength": 2000
504
+ },
505
+ "verificationCount": {
506
+ "type": "integer",
507
+ "minimum": 0
508
+ },
509
+ "actionLabel": {
510
+ "type": "string",
511
+ "minLength": 1,
512
+ "maxLength": 2000
513
+ }
514
+ },
515
+ "required": [
516
+ "token",
517
+ "expiresAt",
518
+ "planId",
519
+ "conversationId",
520
+ "revision",
521
+ "heading",
522
+ "items",
523
+ "irreversible",
524
+ "undo",
525
+ "verificationCount"
526
+ ]
527
+ },
528
+ "PlanRecord": {
529
+ "type": "object",
530
+ "properties": {
531
+ "protocol": {
532
+ "type": "string",
533
+ "minLength": 1
534
+ },
535
+ "id": {
536
+ "type": "string",
537
+ "minLength": 1
538
+ },
539
+ "state": {
540
+ "$ref": "#/$defs/PlanState"
541
+ },
542
+ "plan": {
543
+ "$ref": "#/$defs/Plan"
544
+ },
545
+ "outcomes": {
546
+ "type": "array",
547
+ "items": {
548
+ "$ref": "#/$defs/Outcome"
549
+ }
550
+ },
551
+ "undoPlanId": {
552
+ "type": "string",
553
+ "minLength": 1
554
+ },
555
+ "reason": {
556
+ "type": "string",
557
+ "minLength": 1
558
+ },
559
+ "recovery": {
560
+ "$ref": "#/$defs/RecoveryView"
561
+ },
562
+ "confirmation": {
563
+ "$ref": "#/$defs/ConfirmationRecord"
564
+ }
565
+ },
566
+ "required": ["protocol", "id", "state", "plan", "outcomes"]
567
+ },
568
+ "RecoveryPhase": {
569
+ "enum": [
570
+ "proposal",
571
+ "initial-review",
572
+ "forward-active",
573
+ "readback",
574
+ "completed",
575
+ "cancelled",
576
+ "left-known",
577
+ "left-unconfirmed",
578
+ "left-reopened"
579
+ ]
580
+ },
581
+ "IntentKind": {
582
+ "enum": ["stop", "cancel-initial", "cancel-review", "leave", "keep"]
583
+ },
584
+ "WinnerKind": {
585
+ "enum": ["stop", "cancel-initial", "cancel-review", "leave", "keep"]
586
+ },
587
+ "IntentCause": {
588
+ "enum": [
589
+ "user",
590
+ "connection-lost",
591
+ "renewal-refused",
592
+ "step-failed",
593
+ "step-up-failed",
594
+ "identity-lost",
595
+ "attribution-missing",
596
+ "plan-changed",
597
+ "adapter-configuration"
598
+ ]
599
+ },
600
+ "IntentWinner": {
601
+ "type": "object",
602
+ "properties": {
603
+ "kind": {
604
+ "$ref": "#/$defs/WinnerKind"
605
+ },
606
+ "cause": {
607
+ "$ref": "#/$defs/IntentCause"
608
+ }
609
+ },
610
+ "required": ["kind", "cause"],
611
+ "additionalProperties": false
612
+ },
613
+ "RecoveryView": {
614
+ "type": "object",
615
+ "properties": {
616
+ "profile": {
617
+ "type": "string",
618
+ "minLength": 1,
619
+ "maxLength": 64,
620
+ "x-open-enum": ["plan-recovery-v1"]
621
+ },
622
+ "phase": {
623
+ "type": "string",
624
+ "minLength": 1,
625
+ "maxLength": 64,
626
+ "x-open-enum": "RecoveryPhase"
627
+ },
628
+ "generation": {
629
+ "type": "string",
630
+ "minLength": 1,
631
+ "maxLength": 128
632
+ },
633
+ "round": {
634
+ "type": "integer",
635
+ "minimum": 0,
636
+ "maximum": 9007199254740991
637
+ },
638
+ "revision": {
639
+ "type": "integer",
640
+ "minimum": 0,
641
+ "maximum": 9007199254740991
642
+ },
643
+ "conversationId": {
644
+ "type": "string",
645
+ "minLength": 1,
646
+ "maxLength": 128
647
+ },
648
+ "reviewId": {
649
+ "type": "string",
650
+ "minLength": 1,
651
+ "maxLength": 128
652
+ },
653
+ "executionId": {
654
+ "type": "string",
655
+ "minLength": 1,
656
+ "maxLength": 128
657
+ },
658
+ "slots": {
659
+ "type": "object",
660
+ "properties": {
661
+ "stop": {
662
+ "type": "integer",
663
+ "minimum": 0,
664
+ "maximum": 9007199254740991
665
+ },
666
+ "cancel-initial": {
667
+ "type": "integer",
668
+ "minimum": 0,
669
+ "maximum": 9007199254740991
670
+ },
671
+ "cancel-review": {
672
+ "type": "integer",
673
+ "minimum": 0,
674
+ "maximum": 9007199254740991
675
+ },
676
+ "leave": {
677
+ "type": "integer",
678
+ "minimum": 0,
679
+ "maximum": 9007199254740991
680
+ },
681
+ "keep": {
682
+ "type": "integer",
683
+ "minimum": 0,
684
+ "maximum": 9007199254740991
685
+ }
686
+ },
687
+ "required": [
688
+ "stop",
689
+ "cancel-initial",
690
+ "cancel-review",
691
+ "leave",
692
+ "keep"
693
+ ],
694
+ "additionalProperties": false
695
+ },
696
+ "winner": {
697
+ "$ref": "#/$defs/IntentWinner"
698
+ },
699
+ "steps": {
700
+ "type": "array",
701
+ "items": {
702
+ "type": "object",
703
+ "properties": {
704
+ "stepId": {
705
+ "type": "string",
706
+ "minLength": 1,
707
+ "maxLength": 128
708
+ },
709
+ "truth": {
710
+ "enum": ["done", "not-done", "unknown"]
711
+ }
712
+ },
713
+ "required": ["stepId", "truth"],
714
+ "additionalProperties": false
715
+ }
716
+ },
717
+ "versions": {
718
+ "$ref": "#/$defs/DecisionVersions"
719
+ },
720
+ "decisionKey": {
721
+ "type": "string",
722
+ "minLength": 1,
723
+ "maxLength": 128
724
+ },
725
+ "evidenceDigest": {
726
+ "type": "string",
727
+ "pattern": "^[A-Za-z0-9_-]{43}$"
728
+ },
729
+ "unknownCount": {
730
+ "type": "integer",
731
+ "minimum": 0,
732
+ "maximum": 9007199254740991
733
+ },
734
+ "remaining": {
735
+ "type": "integer",
736
+ "minimum": 0,
737
+ "maximum": 9007199254740991
738
+ },
739
+ "sealed": {
740
+ "type": "boolean"
741
+ },
742
+ "contradictedAfterSeal": {
743
+ "type": "array",
744
+ "items": {
745
+ "type": "string",
746
+ "minLength": 1,
747
+ "maxLength": 128
748
+ },
749
+ "maxItems": 256
750
+ }
751
+ },
752
+ "required": [
753
+ "profile",
754
+ "phase",
755
+ "generation",
756
+ "round",
757
+ "revision",
758
+ "conversationId",
759
+ "slots",
760
+ "versions"
761
+ ],
762
+ "additionalProperties": false
763
+ },
764
+ "IntentTarget": {
765
+ "type": "object",
766
+ "properties": {
767
+ "type": {
768
+ "enum": ["generation", "review", "execution"]
769
+ },
770
+ "id": {
771
+ "type": "string",
772
+ "minLength": 1,
773
+ "maxLength": 128
774
+ }
775
+ },
776
+ "required": ["type", "id"],
777
+ "additionalProperties": false
778
+ },
779
+ "IntentRequest": {
780
+ "type": "object",
781
+ "properties": {
782
+ "kind": {
783
+ "$ref": "#/$defs/IntentKind"
784
+ },
785
+ "planId": {
786
+ "type": "string",
787
+ "minLength": 1,
788
+ "maxLength": 128
789
+ },
790
+ "target": {
791
+ "$ref": "#/$defs/IntentTarget"
792
+ },
793
+ "capturedRound": {
794
+ "type": "integer",
795
+ "minimum": 0,
796
+ "maximum": 9007199254740991
797
+ },
798
+ "expectedSlotVersion": {
799
+ "type": "integer",
800
+ "minimum": 0,
801
+ "maximum": 9007199254740991
802
+ },
803
+ "correlation": {
804
+ "type": "string",
805
+ "minLength": 1,
806
+ "maxLength": 128
807
+ },
808
+ "cause": {
809
+ "$ref": "#/$defs/IntentCause"
810
+ },
811
+ "payload": {
812
+ "type": "string",
813
+ "maxLength": 4096
814
+ },
815
+ "acknowledgment": {
816
+ "$ref": "#/$defs/LeaveAcknowledgment"
817
+ },
818
+ "review": {
819
+ "enum": ["forward-only", "end-retention"]
820
+ }
821
+ },
822
+ "required": [
823
+ "kind",
824
+ "planId",
825
+ "target",
826
+ "capturedRound",
827
+ "expectedSlotVersion",
828
+ "correlation",
829
+ "cause"
830
+ ],
831
+ "additionalProperties": false
832
+ },
833
+ "PlanIntentReply": {
834
+ "type": "object",
835
+ "properties": {
836
+ "planId": {
837
+ "type": "string",
838
+ "minLength": 1,
839
+ "maxLength": 128
840
+ },
841
+ "kind": {
842
+ "$ref": "#/$defs/IntentKind"
843
+ },
844
+ "capturedRound": {
845
+ "type": "integer",
846
+ "minimum": 0,
847
+ "maximum": 9007199254740991
848
+ },
849
+ "correlation": {
850
+ "type": "string",
851
+ "minLength": 1,
852
+ "maxLength": 128
853
+ },
854
+ "effectiveRound": {
855
+ "type": "integer",
856
+ "minimum": 0,
857
+ "maximum": 9007199254740991
858
+ },
859
+ "slotVersion": {
860
+ "type": "integer",
861
+ "minimum": 0,
862
+ "maximum": 9007199254740991
863
+ },
864
+ "resolvedTarget": {
865
+ "type": "string",
866
+ "minLength": 1,
867
+ "maxLength": 128
868
+ },
869
+ "requestedTargetApplied": {
870
+ "type": "boolean"
871
+ },
872
+ "replacement": {
873
+ "$ref": "#/$defs/IntentTarget"
874
+ },
875
+ "result": {
876
+ "enum": [
877
+ "applied",
878
+ "replaced",
879
+ "already-closed",
880
+ "already-stopped",
881
+ "defeated",
882
+ "superseded",
883
+ "needs-review",
884
+ "conflict",
885
+ "unavailable",
886
+ "invalid-target",
887
+ "refused",
888
+ "kept",
889
+ "already-kept",
890
+ "sealed"
891
+ ]
892
+ },
893
+ "keys": {
894
+ "type": "array",
895
+ "items": {
896
+ "type": "string",
897
+ "minLength": 1,
898
+ "maxLength": 64
899
+ }
900
+ },
901
+ "winner": {
902
+ "$ref": "#/$defs/IntentWinner"
903
+ },
904
+ "phase": {
905
+ "$ref": "#/$defs/RecoveryPhase"
906
+ },
907
+ "safetyApplied": {
908
+ "type": "boolean"
909
+ },
910
+ "dispositionApplied": {
911
+ "type": "boolean"
912
+ },
913
+ "forwardClosed": {
914
+ "type": "boolean"
915
+ },
916
+ "count": {
917
+ "type": "integer",
918
+ "minimum": 0,
919
+ "maximum": 9007199254740991
920
+ },
921
+ "requestKey": {
922
+ "enum": ["requestAlreadyStopped", "requestTargetStopped"]
923
+ },
924
+ "savedDisposition": {
925
+ "type": "object",
926
+ "properties": {
927
+ "phase": {
928
+ "enum": ["left-known", "left-unconfirmed"]
929
+ },
930
+ "count": {
931
+ "type": "integer",
932
+ "minimum": 0,
933
+ "maximum": 9007199254740991
934
+ }
935
+ },
936
+ "required": ["phase", "count"],
937
+ "additionalProperties": false
938
+ },
939
+ "finalHistory": {
940
+ "$ref": "#/$defs/FinalHistory"
941
+ }
942
+ },
943
+ "required": [
944
+ "planId",
945
+ "kind",
946
+ "capturedRound",
947
+ "correlation",
948
+ "effectiveRound",
949
+ "slotVersion",
950
+ "result",
951
+ "keys",
952
+ "phase"
953
+ ],
954
+ "additionalProperties": false
955
+ },
956
+ "ExecutionAcceptance": {
957
+ "type": "object",
958
+ "properties": {
959
+ "planId": {
960
+ "type": "string",
961
+ "minLength": 1,
962
+ "maxLength": 128
963
+ },
964
+ "executionId": {
965
+ "type": "string",
966
+ "minLength": 1,
967
+ "maxLength": 128
968
+ },
969
+ "fence": {
970
+ "type": "integer",
971
+ "minimum": 1,
972
+ "maximum": 9007199254740991
973
+ }
974
+ },
975
+ "required": ["planId", "executionId", "fence"],
976
+ "additionalProperties": false
977
+ },
978
+ "ReplyDecline": {
979
+ "type": "object",
980
+ "properties": {
981
+ "kind": {
982
+ "const": "decline"
983
+ },
984
+ "planId": {
985
+ "type": "string",
986
+ "minLength": 1,
987
+ "maxLength": 128
988
+ },
989
+ "clientReplyId": {
990
+ "type": "string",
991
+ "minLength": 1,
992
+ "maxLength": 128
993
+ }
994
+ },
995
+ "required": ["kind", "planId", "clientReplyId"],
996
+ "additionalProperties": false
997
+ },
998
+ "CardAnswer": {
999
+ "description": "The answer the host applied to a card, as it was sent without its protocol; only with answered. A host may leave out a form's values.",
1000
+ "oneOf": [
1001
+ {
1002
+ "type": "object",
1003
+ "properties": {
1004
+ "kind": {
1005
+ "const": "action"
1006
+ },
1007
+ "clientReplyId": {
1008
+ "type": "string",
1009
+ "minLength": 1
1010
+ },
1011
+ "blockId": {
1012
+ "type": "string",
1013
+ "minLength": 1
1014
+ },
1015
+ "actionId": {
1016
+ "type": "string",
1017
+ "minLength": 1
1018
+ }
1019
+ },
1020
+ "required": ["kind", "clientReplyId", "blockId", "actionId"]
1021
+ },
1022
+ {
1023
+ "type": "object",
1024
+ "properties": {
1025
+ "kind": {
1026
+ "const": "form"
1027
+ },
1028
+ "clientReplyId": {
1029
+ "type": "string",
1030
+ "minLength": 1
1031
+ },
1032
+ "blockId": {
1033
+ "type": "string",
1034
+ "minLength": 1
1035
+ },
1036
+ "values": {
1037
+ "type": "object"
1038
+ }
1039
+ },
1040
+ "required": ["kind", "clientReplyId", "blockId"]
1041
+ }
1042
+ ]
1043
+ },
1044
+ "BlockMarkdown": {
1045
+ "type": "object",
1046
+ "properties": {
1047
+ "type": {
1048
+ "const": "markdown"
1049
+ },
1050
+ "id": {
1051
+ "type": "string",
1052
+ "minLength": 1
1053
+ },
1054
+ "fallback": {
1055
+ "type": "string"
1056
+ },
1057
+ "body": {
1058
+ "type": "object",
1059
+ "properties": {
1060
+ "text": {
1061
+ "type": "string"
1062
+ }
1063
+ },
1064
+ "required": ["text"]
1065
+ },
1066
+ "answered": {
1067
+ "type": "boolean",
1068
+ "description": "Whether the host holds an answer to this card; it holds one at most (see the README's Card answers)."
1069
+ },
1070
+ "answer": {
1071
+ "$ref": "#/$defs/CardAnswer"
1072
+ }
1073
+ },
1074
+ "required": ["type", "id", "fallback", "body"]
1075
+ },
1076
+ "BlockCard": {
1077
+ "type": "object",
1078
+ "properties": {
1079
+ "type": {
1080
+ "const": "card"
1081
+ },
1082
+ "id": {
1083
+ "type": "string",
1084
+ "minLength": 1
1085
+ },
1086
+ "fallback": {
1087
+ "type": "string"
1088
+ },
1089
+ "body": {
1090
+ "type": "object",
1091
+ "properties": {
1092
+ "title": {
1093
+ "type": "string",
1094
+ "minLength": 1
1095
+ },
1096
+ "blocks": {
1097
+ "type": "array",
1098
+ "items": {
1099
+ "$ref": "#/$defs/Block"
1100
+ }
1101
+ }
1102
+ },
1103
+ "required": ["title", "blocks"]
1104
+ },
1105
+ "answered": {
1106
+ "type": "boolean",
1107
+ "description": "Whether the host holds an answer to this card; it holds one at most (see the README's Card answers)."
1108
+ },
1109
+ "answer": {
1110
+ "$ref": "#/$defs/CardAnswer"
1111
+ }
1112
+ },
1113
+ "required": ["type", "id", "fallback", "body"]
1114
+ },
1115
+ "BlockDetails": {
1116
+ "type": "object",
1117
+ "description": "Supporting detail behind a disclosure: closed until the user opens it, so the answer comes first.",
1118
+ "properties": {
1119
+ "type": {
1120
+ "const": "details",
1121
+ "description": "The block's type: `details`."
1122
+ },
1123
+ "id": {
1124
+ "type": "string",
1125
+ "minLength": 1,
1126
+ "description": "The block's id, unique in its message."
1127
+ },
1128
+ "fallback": {
1129
+ "type": "string",
1130
+ "description": "Plain text shown by a client that does not know the type."
1131
+ },
1132
+ "body": {
1133
+ "type": "object",
1134
+ "properties": {
1135
+ "summary": {
1136
+ "type": "string",
1137
+ "minLength": 1,
1138
+ "maxLength": 200,
1139
+ "description": "The words on the closed disclosure."
1140
+ },
1141
+ "blocks": {
1142
+ "type": "array",
1143
+ "items": {
1144
+ "$ref": "#/$defs/Block"
1145
+ },
1146
+ "description": "The supporting detail, shown when the disclosure is open."
1147
+ }
1148
+ },
1149
+ "required": ["summary", "blocks"],
1150
+ "description": "The disclosure's words and what it holds."
1151
+ },
1152
+ "answered": {
1153
+ "type": "boolean",
1154
+ "description": "Whether the host holds an answer to a card nested in this block, named in `answer`. An answer marks the message's own block, so a details block that holds a form or buttons is the one marked (see the README's Card answers)."
1155
+ },
1156
+ "answer": {
1157
+ "$ref": "#/$defs/CardAnswer"
1158
+ }
1159
+ },
1160
+ "required": ["type", "id", "fallback", "body"]
1161
+ },
1162
+ "BlockList": {
1163
+ "type": "object",
1164
+ "properties": {
1165
+ "type": {
1166
+ "const": "list"
1167
+ },
1168
+ "id": {
1169
+ "type": "string",
1170
+ "minLength": 1
1171
+ },
1172
+ "fallback": {
1173
+ "type": "string"
1174
+ },
1175
+ "body": {
1176
+ "type": "object",
1177
+ "properties": {
1178
+ "items": {
1179
+ "type": "array",
1180
+ "items": {
1181
+ "type": "string",
1182
+ "minLength": 1
1183
+ }
1184
+ }
1185
+ },
1186
+ "required": ["items"]
1187
+ },
1188
+ "answered": {
1189
+ "type": "boolean",
1190
+ "description": "Whether the host holds an answer to this card; it holds one at most (see the README's Card answers)."
1191
+ },
1192
+ "answer": {
1193
+ "$ref": "#/$defs/CardAnswer"
1194
+ }
1195
+ },
1196
+ "required": ["type", "id", "fallback", "body"]
1197
+ },
1198
+ "BlockTable": {
1199
+ "type": "object",
1200
+ "properties": {
1201
+ "type": {
1202
+ "const": "table"
1203
+ },
1204
+ "id": {
1205
+ "type": "string",
1206
+ "minLength": 1
1207
+ },
1208
+ "fallback": {
1209
+ "type": "string"
1210
+ },
1211
+ "body": {
1212
+ "type": "object",
1213
+ "properties": {
1214
+ "columns": {
1215
+ "type": "array",
1216
+ "items": {
1217
+ "type": "string",
1218
+ "minLength": 1
1219
+ }
1220
+ },
1221
+ "rows": {
1222
+ "type": "array",
1223
+ "items": {
1224
+ "type": "array",
1225
+ "items": {}
1226
+ }
1227
+ }
1228
+ },
1229
+ "required": ["columns", "rows"]
1230
+ },
1231
+ "answered": {
1232
+ "type": "boolean",
1233
+ "description": "Whether the host holds an answer to this card; it holds one at most (see the README's Card answers)."
1234
+ },
1235
+ "answer": {
1236
+ "$ref": "#/$defs/CardAnswer"
1237
+ }
1238
+ },
1239
+ "required": ["type", "id", "fallback", "body"]
1240
+ },
1241
+ "BlockForm": {
1242
+ "type": "object",
1243
+ "properties": {
1244
+ "type": {
1245
+ "const": "form"
1246
+ },
1247
+ "id": {
1248
+ "type": "string",
1249
+ "minLength": 1
1250
+ },
1251
+ "fallback": {
1252
+ "type": "string"
1253
+ },
1254
+ "body": {
1255
+ "type": "object",
1256
+ "properties": {
1257
+ "fields": {
1258
+ "type": "array",
1259
+ "items": {
1260
+ "type": "object",
1261
+ "properties": {
1262
+ "name": {
1263
+ "type": "string",
1264
+ "minLength": 1
1265
+ },
1266
+ "label": {
1267
+ "type": "string",
1268
+ "minLength": 1
1269
+ },
1270
+ "required": {
1271
+ "type": "boolean"
1272
+ },
1273
+ "value": {
1274
+ "description": "What the host already knows for the field: the form starts with it, and the user may change it. Optional.",
1275
+ "type": "string"
1276
+ }
1277
+ },
1278
+ "required": ["name", "label"]
1279
+ }
1280
+ }
1281
+ },
1282
+ "required": ["fields"]
1283
+ },
1284
+ "answered": {
1285
+ "type": "boolean",
1286
+ "description": "Whether the host holds an answer to this card; it holds one at most (see the README's Card answers)."
1287
+ },
1288
+ "answer": {
1289
+ "$ref": "#/$defs/CardAnswer"
1290
+ }
1291
+ },
1292
+ "required": ["type", "id", "fallback", "body"]
1293
+ },
1294
+ "BlockChoice": {
1295
+ "type": "object",
1296
+ "properties": {
1297
+ "type": {
1298
+ "const": "choice"
1299
+ },
1300
+ "id": {
1301
+ "type": "string",
1302
+ "minLength": 1
1303
+ },
1304
+ "fallback": {
1305
+ "type": "string"
1306
+ },
1307
+ "body": {
1308
+ "type": "object",
1309
+ "properties": {
1310
+ "mode": {
1311
+ "enum": ["single", "multi", "text"]
1312
+ },
1313
+ "options": {
1314
+ "type": "array",
1315
+ "items": {
1316
+ "type": "string",
1317
+ "minLength": 1
1318
+ }
1319
+ }
1320
+ },
1321
+ "required": ["mode", "options"]
1322
+ },
1323
+ "answered": {
1324
+ "type": "boolean",
1325
+ "description": "Whether the host holds an answer to this card; it holds one at most (see the README's Card answers)."
1326
+ },
1327
+ "answer": {
1328
+ "$ref": "#/$defs/CardAnswer"
1329
+ }
1330
+ },
1331
+ "required": ["type", "id", "fallback", "body"]
1332
+ },
1333
+ "BlockButtons": {
1334
+ "type": "object",
1335
+ "properties": {
1336
+ "type": {
1337
+ "const": "buttons"
1338
+ },
1339
+ "id": {
1340
+ "type": "string",
1341
+ "minLength": 1
1342
+ },
1343
+ "fallback": {
1344
+ "type": "string"
1345
+ },
1346
+ "body": {
1347
+ "type": "object",
1348
+ "properties": {
1349
+ "actions": {
1350
+ "type": "array",
1351
+ "items": {
1352
+ "type": "object",
1353
+ "properties": {
1354
+ "id": {
1355
+ "type": "string",
1356
+ "minLength": 1
1357
+ },
1358
+ "label": {
1359
+ "type": "string",
1360
+ "minLength": 1
1361
+ }
1362
+ },
1363
+ "required": ["id", "label"]
1364
+ }
1365
+ }
1366
+ },
1367
+ "required": ["actions"]
1368
+ },
1369
+ "answered": {
1370
+ "type": "boolean",
1371
+ "description": "Whether the host holds an answer to this card; it holds one at most (see the README's Card answers)."
1372
+ },
1373
+ "answer": {
1374
+ "$ref": "#/$defs/CardAnswer"
1375
+ }
1376
+ },
1377
+ "required": ["type", "id", "fallback", "body"]
1378
+ },
1379
+ "BlockDiff": {
1380
+ "type": "object",
1381
+ "properties": {
1382
+ "type": {
1383
+ "const": "diff"
1384
+ },
1385
+ "id": {
1386
+ "type": "string",
1387
+ "minLength": 1
1388
+ },
1389
+ "fallback": {
1390
+ "type": "string"
1391
+ },
1392
+ "body": {
1393
+ "type": "object",
1394
+ "properties": {
1395
+ "before": {},
1396
+ "after": {}
1397
+ },
1398
+ "required": ["before", "after"]
1399
+ },
1400
+ "answered": {
1401
+ "type": "boolean",
1402
+ "description": "Whether the host holds an answer to this card; it holds one at most (see the README's Card answers)."
1403
+ },
1404
+ "answer": {
1405
+ "$ref": "#/$defs/CardAnswer"
1406
+ }
1407
+ },
1408
+ "required": ["type", "id", "fallback", "body"]
1409
+ },
1410
+ "BlockPlan": {
1411
+ "type": "object",
1412
+ "properties": {
1413
+ "type": {
1414
+ "const": "plan"
1415
+ },
1416
+ "id": {
1417
+ "type": "string",
1418
+ "minLength": 1
1419
+ },
1420
+ "fallback": {
1421
+ "type": "string"
1422
+ },
1423
+ "body": {
1424
+ "type": "object",
1425
+ "properties": {
1426
+ "planId": {
1427
+ "type": "string",
1428
+ "minLength": 1
1429
+ }
1430
+ },
1431
+ "required": ["planId"]
1432
+ },
1433
+ "answered": {
1434
+ "type": "boolean",
1435
+ "description": "Whether the host holds an answer to this card; it holds one at most (see the README's Card answers)."
1436
+ },
1437
+ "answer": {
1438
+ "$ref": "#/$defs/CardAnswer"
1439
+ }
1440
+ },
1441
+ "required": ["type", "id", "fallback", "body"]
1442
+ },
1443
+ "BlockRouteLink": {
1444
+ "type": "object",
1445
+ "properties": {
1446
+ "type": {
1447
+ "const": "route-link"
1448
+ },
1449
+ "id": {
1450
+ "type": "string",
1451
+ "minLength": 1
1452
+ },
1453
+ "fallback": {
1454
+ "type": "string"
1455
+ },
1456
+ "body": {
1457
+ "type": "object",
1458
+ "properties": {
1459
+ "label": {
1460
+ "type": "string",
1461
+ "minLength": 1
1462
+ },
1463
+ "route": {
1464
+ "type": "string",
1465
+ "minLength": 1
1466
+ }
1467
+ },
1468
+ "required": ["label", "route"]
1469
+ },
1470
+ "answered": {
1471
+ "type": "boolean",
1472
+ "description": "Whether the host holds an answer to this card; it holds one at most (see the README's Card answers)."
1473
+ },
1474
+ "answer": {
1475
+ "$ref": "#/$defs/CardAnswer"
1476
+ }
1477
+ },
1478
+ "required": ["type", "id", "fallback", "body"]
1479
+ },
1480
+ "BlockNotice": {
1481
+ "type": "object",
1482
+ "properties": {
1483
+ "type": {
1484
+ "const": "notice"
1485
+ },
1486
+ "id": {
1487
+ "type": "string",
1488
+ "minLength": 1
1489
+ },
1490
+ "fallback": {
1491
+ "type": "string"
1492
+ },
1493
+ "body": {
1494
+ "type": "object",
1495
+ "properties": {
1496
+ "text": {
1497
+ "type": "string",
1498
+ "minLength": 1
1499
+ },
1500
+ "tone": {
1501
+ "enum": ["info", "warning", "error"]
1502
+ }
1503
+ },
1504
+ "required": ["text"]
1505
+ },
1506
+ "answered": {
1507
+ "type": "boolean",
1508
+ "description": "Whether the host holds an answer to this card; it holds one at most (see the README's Card answers)."
1509
+ },
1510
+ "answer": {
1511
+ "$ref": "#/$defs/CardAnswer"
1512
+ }
1513
+ },
1514
+ "required": ["type", "id", "fallback", "body"]
1515
+ },
1516
+ "ExtensionBlock": {
1517
+ "type": "object",
1518
+ "properties": {
1519
+ "type": {
1520
+ "type": "string",
1521
+ "pattern": "^[a-zA-Z0-9._-]+/[a-zA-Z0-9._-]+$"
1522
+ },
1523
+ "id": {
1524
+ "type": "string",
1525
+ "minLength": 1
1526
+ },
1527
+ "fallback": {
1528
+ "type": "string"
1529
+ },
1530
+ "body": {},
1531
+ "answered": {
1532
+ "type": "boolean",
1533
+ "description": "Whether the host holds an answer to this card; it holds one at most (see the README's Card answers)."
1534
+ },
1535
+ "answer": {
1536
+ "$ref": "#/$defs/CardAnswer"
1537
+ }
1538
+ },
1539
+ "required": ["type", "id", "fallback", "body"]
1540
+ },
1541
+ "Block": {
1542
+ "oneOf": [
1543
+ {
1544
+ "$ref": "#/$defs/BlockMarkdown"
1545
+ },
1546
+ {
1547
+ "$ref": "#/$defs/BlockCard"
1548
+ },
1549
+ {
1550
+ "$ref": "#/$defs/BlockDetails"
1551
+ },
1552
+ {
1553
+ "$ref": "#/$defs/BlockList"
1554
+ },
1555
+ {
1556
+ "$ref": "#/$defs/BlockTable"
1557
+ },
1558
+ {
1559
+ "$ref": "#/$defs/BlockForm"
1560
+ },
1561
+ {
1562
+ "$ref": "#/$defs/BlockChoice"
1563
+ },
1564
+ {
1565
+ "$ref": "#/$defs/BlockButtons"
1566
+ },
1567
+ {
1568
+ "$ref": "#/$defs/BlockDiff"
1569
+ },
1570
+ {
1571
+ "$ref": "#/$defs/BlockPlan"
1572
+ },
1573
+ {
1574
+ "$ref": "#/$defs/BlockRouteLink"
1575
+ },
1576
+ {
1577
+ "$ref": "#/$defs/BlockNotice"
1578
+ },
1579
+ {
1580
+ "$ref": "#/$defs/BlockFormFill"
1581
+ },
1582
+ {
1583
+ "$ref": "#/$defs/ExtensionBlock"
1584
+ }
1585
+ ]
1586
+ },
1587
+ "Message": {
1588
+ "type": "object",
1589
+ "properties": {
1590
+ "id": {
1591
+ "type": "string",
1592
+ "minLength": 1
1593
+ },
1594
+ "clientMessageId": {
1595
+ "type": "string",
1596
+ "minLength": 1
1597
+ },
1598
+ "role": {
1599
+ "enum": ["user", "assistant"]
1600
+ },
1601
+ "content": {
1602
+ "type": "string"
1603
+ },
1604
+ "blocks": {
1605
+ "type": "array",
1606
+ "items": {
1607
+ "$ref": "#/$defs/Block"
1608
+ }
1609
+ },
1610
+ "createdAt": {
1611
+ "type": "integer",
1612
+ "minimum": 0
1613
+ },
1614
+ "status": {
1615
+ "enum": ["writing", "completed", "failed", "unavailable", "stopped"]
1616
+ },
1617
+ "versionIndex": {
1618
+ "type": "integer",
1619
+ "minimum": 1
1620
+ },
1621
+ "versionCount": {
1622
+ "type": "integer",
1623
+ "minimum": 1
1624
+ },
1625
+ "sources": {
1626
+ "description": "What the reply drew on. `[n]` in its content cites the n-th source. Optional.",
1627
+ "type": "array",
1628
+ "maxItems": 50,
1629
+ "items": {
1630
+ "$ref": "#/$defs/Source"
1631
+ }
1632
+ }
1633
+ },
1634
+ "required": ["id", "role", "content", "blocks", "createdAt"]
1635
+ },
1636
+ "Source": {
1637
+ "type": "object",
1638
+ "properties": {
1639
+ "id": {
1640
+ "type": "string",
1641
+ "minLength": 1
1642
+ },
1643
+ "title": {
1644
+ "type": "string",
1645
+ "minLength": 1,
1646
+ "maxLength": 300
1647
+ },
1648
+ "url": {
1649
+ "type": "string",
1650
+ "minLength": 1
1651
+ }
1652
+ },
1653
+ "required": ["id", "title", "url"]
1654
+ },
1655
+ "Conversation": {
1656
+ "type": "object",
1657
+ "properties": {
1658
+ "protocol": {
1659
+ "type": "string",
1660
+ "minLength": 1
1661
+ },
1662
+ "id": {
1663
+ "type": "string",
1664
+ "minLength": 1
1665
+ },
1666
+ "title": {
1667
+ "type": "string"
1668
+ },
1669
+ "messages": {
1670
+ "type": "array",
1671
+ "items": {
1672
+ "$ref": "#/$defs/Message"
1673
+ }
1674
+ },
1675
+ "replyOverdueAt": {
1676
+ "type": ["number", "null"]
1677
+ },
1678
+ "replyStatus": {
1679
+ "enum": ["expected", "unavailable", "failed", "complete"]
1680
+ },
1681
+ "mode": {
1682
+ "const": "form-fill"
1683
+ },
1684
+ "subject": {
1685
+ "$ref": "#/$defs/FormSubject"
1686
+ },
1687
+ "parentConversationId": {
1688
+ "type": "string",
1689
+ "minLength": 1
1690
+ },
1691
+ "field": {
1692
+ "type": "string",
1693
+ "minLength": 1
1694
+ }
1695
+ },
1696
+ "required": ["protocol", "id", "title", "messages"],
1697
+ "allOf": [
1698
+ {
1699
+ "if": {
1700
+ "required": ["mode"]
1701
+ },
1702
+ "then": {
1703
+ "required": ["subject"]
1704
+ }
1705
+ }
1706
+ ]
1707
+ },
1708
+ "ReplyMessage": {
1709
+ "type": "object",
1710
+ "properties": {
1711
+ "kind": {
1712
+ "const": "message"
1713
+ },
1714
+ "protocol": {
1715
+ "type": "string",
1716
+ "minLength": 1
1717
+ },
1718
+ "clientReplyId": {
1719
+ "type": "string",
1720
+ "minLength": 1
1721
+ },
1722
+ "content": {
1723
+ "type": "string",
1724
+ "minLength": 1
1725
+ },
1726
+ "clientMessageId": {
1727
+ "type": "string",
1728
+ "minLength": 1
1729
+ }
1730
+ },
1731
+ "required": [
1732
+ "kind",
1733
+ "protocol",
1734
+ "clientReplyId",
1735
+ "content",
1736
+ "clientMessageId"
1737
+ ]
1738
+ },
1739
+ "ReplyConfirm": {
1740
+ "type": "object",
1741
+ "properties": {
1742
+ "kind": {
1743
+ "const": "confirm"
1744
+ },
1745
+ "protocol": {
1746
+ "type": "string",
1747
+ "minLength": 1
1748
+ },
1749
+ "clientReplyId": {
1750
+ "type": "string",
1751
+ "minLength": 1
1752
+ },
1753
+ "planId": {
1754
+ "type": "string",
1755
+ "minLength": 1
1756
+ },
1757
+ "digest": {
1758
+ "type": "string",
1759
+ "minLength": 1
1760
+ },
1761
+ "confirmationToken": {
1762
+ "type": "string",
1763
+ "minLength": 1,
1764
+ "maxLength": 512
1765
+ }
1766
+ },
1767
+ "required": [
1768
+ "kind",
1769
+ "protocol",
1770
+ "clientReplyId",
1771
+ "planId",
1772
+ "confirmationToken"
1773
+ ]
1774
+ },
1775
+ "ReplyForm": {
1776
+ "type": "object",
1777
+ "properties": {
1778
+ "kind": {
1779
+ "const": "form"
1780
+ },
1781
+ "protocol": {
1782
+ "type": "string",
1783
+ "minLength": 1
1784
+ },
1785
+ "clientReplyId": {
1786
+ "type": "string",
1787
+ "minLength": 1
1788
+ },
1789
+ "blockId": {
1790
+ "type": "string",
1791
+ "minLength": 1
1792
+ },
1793
+ "values": {
1794
+ "type": "object"
1795
+ }
1796
+ },
1797
+ "required": ["kind", "protocol", "clientReplyId", "blockId", "values"]
1798
+ },
1799
+ "ReplyAction": {
1800
+ "type": "object",
1801
+ "properties": {
1802
+ "kind": {
1803
+ "const": "action"
1804
+ },
1805
+ "protocol": {
1806
+ "type": "string",
1807
+ "minLength": 1
1808
+ },
1809
+ "clientReplyId": {
1810
+ "type": "string",
1811
+ "minLength": 1
1812
+ },
1813
+ "blockId": {
1814
+ "type": "string",
1815
+ "minLength": 1
1816
+ },
1817
+ "actionId": {
1818
+ "type": "string",
1819
+ "minLength": 1
1820
+ }
1821
+ },
1822
+ "required": ["kind", "protocol", "clientReplyId", "blockId", "actionId"]
1823
+ },
1824
+ "ReplyToolResult": {
1825
+ "type": "object",
1826
+ "properties": {
1827
+ "kind": {
1828
+ "const": "tool-result"
1829
+ },
1830
+ "protocol": {
1831
+ "type": "string",
1832
+ "minLength": 1
1833
+ },
1834
+ "clientReplyId": {
1835
+ "type": "string",
1836
+ "minLength": 1
1837
+ },
1838
+ "callId": {
1839
+ "type": "string",
1840
+ "minLength": 1
1841
+ },
1842
+ "result": {},
1843
+ "problem": {
1844
+ "$ref": "#/$defs/Problem"
1845
+ }
1846
+ },
1847
+ "required": ["kind", "protocol", "clientReplyId", "callId", "result"]
1848
+ },
1849
+ "ReplyPlanValues": {
1850
+ "type": "object",
1851
+ "properties": {
1852
+ "kind": {
1853
+ "const": "plan.values"
1854
+ },
1855
+ "protocol": {
1856
+ "type": "string",
1857
+ "minLength": 1
1858
+ },
1859
+ "clientReplyId": {
1860
+ "type": "string",
1861
+ "minLength": 1
1862
+ },
1863
+ "planId": {
1864
+ "type": "string",
1865
+ "minLength": 1
1866
+ },
1867
+ "steps": {
1868
+ "type": "array",
1869
+ "items": {
1870
+ "type": "object",
1871
+ "properties": {
1872
+ "stepId": {
1873
+ "type": "string",
1874
+ "minLength": 1
1875
+ },
1876
+ "rows": {
1877
+ "type": "object"
1878
+ },
1879
+ "versions": {
1880
+ "type": "object",
1881
+ "additionalProperties": {
1882
+ "type": "string",
1883
+ "minLength": 1
1884
+ }
1885
+ }
1886
+ },
1887
+ "required": ["stepId", "rows", "versions"]
1888
+ }
1889
+ }
1890
+ },
1891
+ "required": ["kind", "protocol", "clientReplyId", "planId", "steps"]
1892
+ },
1893
+ "Reply": {
1894
+ "oneOf": [
1895
+ {
1896
+ "$ref": "#/$defs/ReplyMessage"
1897
+ },
1898
+ {
1899
+ "$ref": "#/$defs/ReplyConfirm"
1900
+ },
1901
+ {
1902
+ "$ref": "#/$defs/ReplyForm"
1903
+ },
1904
+ {
1905
+ "$ref": "#/$defs/ReplyAction"
1906
+ },
1907
+ {
1908
+ "$ref": "#/$defs/ReplyToolResult"
1909
+ },
1910
+ {
1911
+ "$ref": "#/$defs/ReplyPlanValues"
1912
+ },
1913
+ {
1914
+ "$ref": "#/$defs/ReplyFormFill"
1915
+ },
1916
+ {
1917
+ "$ref": "#/$defs/ReplyStop"
1918
+ }
1919
+ ]
1920
+ },
1921
+ "ReplyStop": {
1922
+ "description": "Asks the host to stop writing a reply. Sent only under the negotiated `reply-stop` capability.",
1923
+ "type": "object",
1924
+ "properties": {
1925
+ "kind": {
1926
+ "const": "stop"
1927
+ },
1928
+ "protocol": {
1929
+ "type": "string",
1930
+ "minLength": 1
1931
+ },
1932
+ "clientReplyId": {
1933
+ "type": "string",
1934
+ "minLength": 1
1935
+ },
1936
+ "messageId": {
1937
+ "type": "string",
1938
+ "minLength": 1
1939
+ },
1940
+ "versionIndex": {
1941
+ "description": "The version of the message the stop is for, numbered as the message's `versionIndex` (1 for a message with one version). A host ignores a stop for a version it is not writing. Optional: without it, the stop is for the version being written when it arrives.",
1942
+ "type": "integer",
1943
+ "minimum": 1
1944
+ }
1945
+ },
1946
+ "required": ["kind", "protocol", "clientReplyId", "messageId"]
1947
+ },
1948
+ "ManifestEntry": {
1949
+ "type": "object",
1950
+ "properties": {
1951
+ "id": {
1952
+ "type": "string",
1953
+ "minLength": 1
1954
+ },
1955
+ "kind": {
1956
+ "enum": [
1957
+ "read",
1958
+ "planning-read",
1959
+ "update",
1960
+ "create",
1961
+ "action",
1962
+ "bulk"
1963
+ ]
1964
+ },
1965
+ "method": {
1966
+ "enum": ["GET", "POST", "PUT", "PATCH"]
1967
+ },
1968
+ "path": {
1969
+ "type": "string",
1970
+ "minLength": 1
1971
+ },
1972
+ "resource": {
1973
+ "type": "string",
1974
+ "minLength": 1
1975
+ },
1976
+ "fields": {
1977
+ "type": "object",
1978
+ "additionalProperties": {
1979
+ "enum": ["low", "sensitive", "human-only"]
1980
+ }
1981
+ },
1982
+ "returns": {
1983
+ "type": "array",
1984
+ "items": {
1985
+ "type": "string",
1986
+ "minLength": 1
1987
+ }
1988
+ },
1989
+ "filterable": {
1990
+ "type": "array",
1991
+ "items": {
1992
+ "type": "string",
1993
+ "minLength": 1
1994
+ }
1995
+ },
1996
+ "permission": {
1997
+ "type": "string",
1998
+ "minLength": 1
1999
+ },
2000
+ "view": {
2001
+ "type": "string",
2002
+ "minLength": 1
2003
+ },
2004
+ "undo": {
2005
+ "type": "string",
2006
+ "minLength": 1
2007
+ }
2008
+ },
2009
+ "required": [
2010
+ "id",
2011
+ "kind",
2012
+ "method",
2013
+ "path",
2014
+ "resource",
2015
+ "fields",
2016
+ "returns",
2017
+ "filterable",
2018
+ "permission",
2019
+ "view",
2020
+ "undo"
2021
+ ]
2022
+ },
2023
+ "ToolCall": {
2024
+ "type": "object",
2025
+ "properties": {
2026
+ "id": {
2027
+ "type": "string",
2028
+ "minLength": 1
2029
+ },
2030
+ "operation": {
2031
+ "type": "string",
2032
+ "minLength": 1
2033
+ },
2034
+ "method": {
2035
+ "type": "string",
2036
+ "minLength": 1
2037
+ },
2038
+ "path": {
2039
+ "type": "string",
2040
+ "minLength": 1
2041
+ },
2042
+ "query": {
2043
+ "type": "object",
2044
+ "additionalProperties": {
2045
+ "type": "string",
2046
+ "minLength": 1
2047
+ }
2048
+ },
2049
+ "label": {
2050
+ "description": "The host's plain words for the read, shown to the user while it runs, for example \"Reading 3 orders…\". Optional.",
2051
+ "type": "string",
2052
+ "minLength": 1,
2053
+ "maxLength": 200
2054
+ }
2055
+ },
2056
+ "required": ["id", "operation", "method", "path"]
2057
+ },
2058
+ "FrameMessageStart": {
2059
+ "type": "object",
2060
+ "properties": {
2061
+ "type": {
2062
+ "const": "message.start"
2063
+ },
2064
+ "protocol": {
2065
+ "type": "string",
2066
+ "minLength": 1
2067
+ },
2068
+ "sequence": {
2069
+ "type": "integer",
2070
+ "minimum": 0
2071
+ },
2072
+ "messageId": {
2073
+ "type": "string",
2074
+ "minLength": 1
2075
+ },
2076
+ "role": {
2077
+ "enum": ["user", "assistant"]
2078
+ }
2079
+ },
2080
+ "required": ["type", "protocol", "sequence", "messageId", "role"]
2081
+ },
2082
+ "FrameTextDelta": {
2083
+ "type": "object",
2084
+ "properties": {
2085
+ "type": {
2086
+ "const": "text.delta"
2087
+ },
2088
+ "protocol": {
2089
+ "type": "string",
2090
+ "minLength": 1
2091
+ },
2092
+ "sequence": {
2093
+ "type": "integer",
2094
+ "minimum": 0
2095
+ },
2096
+ "messageId": {
2097
+ "type": "string",
2098
+ "minLength": 1
2099
+ },
2100
+ "text": {
2101
+ "type": "string"
2102
+ }
2103
+ },
2104
+ "required": ["type", "protocol", "sequence", "messageId", "text"]
2105
+ },
2106
+ "FrameBlock": {
2107
+ "type": "object",
2108
+ "properties": {
2109
+ "type": {
2110
+ "const": "block"
2111
+ },
2112
+ "protocol": {
2113
+ "type": "string",
2114
+ "minLength": 1
2115
+ },
2116
+ "sequence": {
2117
+ "type": "integer",
2118
+ "minimum": 0
2119
+ },
2120
+ "messageId": {
2121
+ "type": "string",
2122
+ "minLength": 1
2123
+ },
2124
+ "block": {
2125
+ "$ref": "#/$defs/Block"
2126
+ }
2127
+ },
2128
+ "required": ["type", "protocol", "sequence", "messageId", "block"]
2129
+ },
2130
+ "FramePlanDraft": {
2131
+ "type": "object",
2132
+ "properties": {
2133
+ "type": {
2134
+ "const": "plan.draft"
2135
+ },
2136
+ "protocol": {
2137
+ "type": "string",
2138
+ "minLength": 1
2139
+ },
2140
+ "sequence": {
2141
+ "type": "integer",
2142
+ "minimum": 0
2143
+ },
2144
+ "messageId": {
2145
+ "type": "string",
2146
+ "minLength": 1
2147
+ },
2148
+ "plan": {
2149
+ "$ref": "#/$defs/ImmediateDraft"
2150
+ }
2151
+ },
2152
+ "required": ["type", "protocol", "sequence", "messageId", "plan"]
2153
+ },
2154
+ "FramePlanFinal": {
2155
+ "type": "object",
2156
+ "properties": {
2157
+ "type": {
2158
+ "const": "plan.final"
2159
+ },
2160
+ "protocol": {
2161
+ "type": "string",
2162
+ "minLength": 1
2163
+ },
2164
+ "sequence": {
2165
+ "type": "integer",
2166
+ "minimum": 0
2167
+ },
2168
+ "messageId": {
2169
+ "type": "string",
2170
+ "minLength": 1
2171
+ },
2172
+ "plan": {
2173
+ "oneOf": [
2174
+ {
2175
+ "$ref": "#/$defs/ImmediatePlan"
2176
+ },
2177
+ {
2178
+ "$ref": "#/$defs/TimedPlan"
2179
+ }
2180
+ ]
2181
+ }
2182
+ },
2183
+ "required": ["type", "protocol", "sequence", "messageId", "plan"]
2184
+ },
2185
+ "FramePlanStep": {
2186
+ "type": "object",
2187
+ "properties": {
2188
+ "type": {
2189
+ "const": "plan.step"
2190
+ },
2191
+ "protocol": {
2192
+ "type": "string",
2193
+ "minLength": 1
2194
+ },
2195
+ "sequence": {
2196
+ "type": "integer",
2197
+ "minimum": 0
2198
+ },
2199
+ "planId": {
2200
+ "type": "string",
2201
+ "minLength": 1
2202
+ },
2203
+ "outcome": {
2204
+ "$ref": "#/$defs/Outcome"
2205
+ }
2206
+ },
2207
+ "required": ["type", "protocol", "sequence", "planId", "outcome"]
2208
+ },
2209
+ "FrameToolCall": {
2210
+ "type": "object",
2211
+ "properties": {
2212
+ "type": {
2213
+ "const": "tool.call"
2214
+ },
2215
+ "protocol": {
2216
+ "type": "string",
2217
+ "minLength": 1
2218
+ },
2219
+ "sequence": {
2220
+ "type": "integer",
2221
+ "minimum": 0
2222
+ },
2223
+ "call": {
2224
+ "$ref": "#/$defs/ToolCall"
2225
+ }
2226
+ },
2227
+ "required": ["type", "protocol", "sequence", "call"]
2228
+ },
2229
+ "FramePlanningRead": {
2230
+ "type": "object",
2231
+ "properties": {
2232
+ "type": {
2233
+ "const": "planning-read"
2234
+ },
2235
+ "protocol": {
2236
+ "type": "string",
2237
+ "minLength": 1
2238
+ },
2239
+ "sequence": {
2240
+ "type": "integer",
2241
+ "minimum": 0
2242
+ },
2243
+ "planId": {
2244
+ "type": "string",
2245
+ "minLength": 1
2246
+ },
2247
+ "stepId": {
2248
+ "type": "string",
2249
+ "minLength": 1
2250
+ },
2251
+ "template": {
2252
+ "$ref": "#/$defs/ReadTemplate"
2253
+ }
2254
+ },
2255
+ "required": [
2256
+ "type",
2257
+ "protocol",
2258
+ "sequence",
2259
+ "planId",
2260
+ "stepId",
2261
+ "template"
2262
+ ]
2263
+ },
2264
+ "FrameMessageEnd": {
2265
+ "type": "object",
2266
+ "properties": {
2267
+ "type": {
2268
+ "const": "message.end"
2269
+ },
2270
+ "protocol": {
2271
+ "type": "string",
2272
+ "minLength": 1
2273
+ },
2274
+ "sequence": {
2275
+ "type": "integer",
2276
+ "minimum": 0
2277
+ },
2278
+ "messageId": {
2279
+ "type": "string",
2280
+ "minLength": 1
2281
+ },
2282
+ "status": {
2283
+ "enum": ["completed", "failed", "unavailable", "stopped"]
2284
+ }
2285
+ },
2286
+ "required": ["type", "protocol", "sequence", "messageId", "status"]
2287
+ },
2288
+ "FrameStale": {
2289
+ "type": "object",
2290
+ "properties": {
2291
+ "type": {
2292
+ "const": "stale"
2293
+ },
2294
+ "protocol": {
2295
+ "type": "string",
2296
+ "minLength": 1
2297
+ },
2298
+ "sequence": {
2299
+ "type": "integer",
2300
+ "minimum": 0
2301
+ },
2302
+ "reads": {
2303
+ "type": "array",
2304
+ "items": {
2305
+ "enum": ["conversation", "conversations", "plans", "flows"]
2306
+ }
2307
+ }
2308
+ },
2309
+ "required": ["type", "protocol", "sequence", "reads"]
2310
+ },
2311
+ "FrameProblem": {
2312
+ "type": "object",
2313
+ "properties": {
2314
+ "type": {
2315
+ "const": "problem"
2316
+ },
2317
+ "protocol": {
2318
+ "type": "string",
2319
+ "minLength": 1
2320
+ },
2321
+ "sequence": {
2322
+ "type": "integer",
2323
+ "minimum": 0
2324
+ },
2325
+ "problem": {
2326
+ "$ref": "#/$defs/Problem"
2327
+ }
2328
+ },
2329
+ "required": ["type", "protocol", "sequence", "problem"]
2330
+ },
2331
+ "Frame": {
2332
+ "oneOf": [
2333
+ {
2334
+ "$ref": "#/$defs/FrameMessageStart"
2335
+ },
2336
+ {
2337
+ "$ref": "#/$defs/FrameTextDelta"
2338
+ },
2339
+ {
2340
+ "$ref": "#/$defs/FrameBlock"
2341
+ },
2342
+ {
2343
+ "$ref": "#/$defs/FramePlanDraft"
2344
+ },
2345
+ {
2346
+ "$ref": "#/$defs/FramePlanFinal"
2347
+ },
2348
+ {
2349
+ "$ref": "#/$defs/FramePlanStep"
2350
+ },
2351
+ {
2352
+ "$ref": "#/$defs/FrameToolCall"
2353
+ },
2354
+ {
2355
+ "$ref": "#/$defs/FramePlanningRead"
2356
+ },
2357
+ {
2358
+ "$ref": "#/$defs/FrameMessageEnd"
2359
+ },
2360
+ {
2361
+ "$ref": "#/$defs/FrameStale"
2362
+ },
2363
+ {
2364
+ "$ref": "#/$defs/FrameProblem"
2365
+ }
2366
+ ]
2367
+ },
2368
+ "FlowParameter": {
2369
+ "type": "object",
2370
+ "properties": {
2371
+ "name": {
2372
+ "type": "string",
2373
+ "minLength": 1
2374
+ },
2375
+ "type": {
2376
+ "enum": ["string", "number", "boolean"]
2377
+ },
2378
+ "label": {
2379
+ "type": "string",
2380
+ "minLength": 1
2381
+ },
2382
+ "required": {
2383
+ "type": "boolean"
2384
+ },
2385
+ "default": {}
2386
+ },
2387
+ "required": ["name", "type", "label", "required"]
2388
+ },
2389
+ "Flow": {
2390
+ "type": "object",
2391
+ "properties": {
2392
+ "format": {
2393
+ "const": "1.0"
2394
+ },
2395
+ "id": {
2396
+ "type": "string",
2397
+ "minLength": 1
2398
+ },
2399
+ "title": {
2400
+ "type": "string",
2401
+ "minLength": 1
2402
+ },
2403
+ "kind": {
2404
+ "enum": ["structured", "prompt"]
2405
+ },
2406
+ "parameters": {
2407
+ "type": "array",
2408
+ "items": {
2409
+ "$ref": "#/$defs/FlowParameter"
2410
+ }
2411
+ },
2412
+ "steps": {
2413
+ "type": "array",
2414
+ "items": {
2415
+ "type": "object",
2416
+ "properties": {
2417
+ "operation": {
2418
+ "type": "string",
2419
+ "minLength": 1
2420
+ },
2421
+ "arguments": {
2422
+ "type": "object"
2423
+ }
2424
+ },
2425
+ "required": ["operation", "arguments"]
2426
+ }
2427
+ },
2428
+ "tags": {
2429
+ "type": "array",
2430
+ "items": {
2431
+ "type": "string",
2432
+ "minLength": 1
2433
+ }
2434
+ },
2435
+ "body": {
2436
+ "type": "string"
2437
+ }
2438
+ },
2439
+ "required": [
2440
+ "format",
2441
+ "id",
2442
+ "title",
2443
+ "kind",
2444
+ "parameters",
2445
+ "tags",
2446
+ "body"
2447
+ ],
2448
+ "allOf": [
2449
+ {
2450
+ "if": {
2451
+ "properties": {
2452
+ "kind": {
2453
+ "const": "structured"
2454
+ }
2455
+ }
2456
+ },
2457
+ "then": {
2458
+ "required": ["steps"]
2459
+ },
2460
+ "else": {
2461
+ "not": {
2462
+ "required": ["steps"]
2463
+ }
2464
+ }
2465
+ }
2466
+ ]
2467
+ },
2468
+ "CreateConversation": {
2469
+ "type": "object",
2470
+ "properties": {
2471
+ "protocol": {
2472
+ "type": "string",
2473
+ "minLength": 1
2474
+ },
2475
+ "title": {
2476
+ "type": "string",
2477
+ "minLength": 1
2478
+ },
2479
+ "mode": {
2480
+ "const": "form-fill"
2481
+ },
2482
+ "subject": {
2483
+ "$ref": "#/$defs/FormSubject"
2484
+ },
2485
+ "parentConversationId": {
2486
+ "type": "string",
2487
+ "minLength": 1
2488
+ },
2489
+ "field": {
2490
+ "type": "string",
2491
+ "minLength": 1
2492
+ },
2493
+ "clientCreationId": {
2494
+ "type": "string",
2495
+ "minLength": 1
2496
+ }
2497
+ },
2498
+ "required": ["protocol", "title"],
2499
+ "allOf": [
2500
+ {
2501
+ "if": {
2502
+ "required": ["mode"]
2503
+ },
2504
+ "then": {
2505
+ "required": ["subject"]
2506
+ }
2507
+ }
2508
+ ]
2509
+ },
2510
+ "PlanCommand": {
2511
+ "type": "object",
2512
+ "properties": {
2513
+ "protocol": {
2514
+ "type": "string",
2515
+ "minLength": 1
2516
+ },
2517
+ "action": {
2518
+ "enum": ["stop", "heartbeat", "resume", "retry-undo"]
2519
+ },
2520
+ "planId": {
2521
+ "type": "string",
2522
+ "minLength": 1
2523
+ }
2524
+ },
2525
+ "required": ["protocol", "action", "planId"]
2526
+ },
2527
+ "RunFlow": {
2528
+ "type": "object",
2529
+ "properties": {
2530
+ "protocol": {
2531
+ "type": "string",
2532
+ "minLength": 1
2533
+ },
2534
+ "flowId": {
2535
+ "type": "string",
2536
+ "minLength": 1
2537
+ },
2538
+ "values": {
2539
+ "type": "object"
2540
+ }
2541
+ },
2542
+ "required": ["protocol", "flowId", "values"]
2543
+ },
2544
+ "PatchFlow": {
2545
+ "type": "object",
2546
+ "properties": {
2547
+ "protocol": {
2548
+ "type": "string",
2549
+ "minLength": 1
2550
+ },
2551
+ "flowId": {
2552
+ "type": "string",
2553
+ "minLength": 1
2554
+ },
2555
+ "favourite": {
2556
+ "type": "boolean"
2557
+ },
2558
+ "title": {
2559
+ "type": "string",
2560
+ "minLength": 1
2561
+ }
2562
+ },
2563
+ "required": ["protocol", "flowId", "favourite", "title"]
2564
+ },
2565
+ "FormSubject": {
2566
+ "type": "object",
2567
+ "properties": {
2568
+ "key": {
2569
+ "type": "string",
2570
+ "minLength": 1
2571
+ },
2572
+ "resource": {
2573
+ "type": "string",
2574
+ "minLength": 1
2575
+ },
2576
+ "label": {
2577
+ "type": "string"
2578
+ },
2579
+ "route": {
2580
+ "type": "string"
2581
+ },
2582
+ "state": {
2583
+ "enum": ["pending", "bound", "unlinked"]
2584
+ },
2585
+ "record": {
2586
+ "type": "string",
2587
+ "minLength": 1
2588
+ }
2589
+ },
2590
+ "required": ["key", "resource", "label", "route", "state"],
2591
+ "additionalProperties": false,
2592
+ "allOf": [
2593
+ {
2594
+ "if": {
2595
+ "properties": {
2596
+ "state": {
2597
+ "const": "bound"
2598
+ }
2599
+ }
2600
+ },
2601
+ "then": {
2602
+ "required": ["record"]
2603
+ }
2604
+ }
2605
+ ]
2606
+ },
2607
+ "FormValidation": {
2608
+ "type": "object",
2609
+ "properties": {
2610
+ "status": {
2611
+ "enum": ["valid", "invalid"]
2612
+ },
2613
+ "messages": {
2614
+ "type": "array",
2615
+ "items": {
2616
+ "type": "string"
2617
+ }
2618
+ },
2619
+ "guidance": {
2620
+ "type": "string"
2621
+ }
2622
+ },
2623
+ "required": ["status", "messages"],
2624
+ "additionalProperties": false
2625
+ },
2626
+ "FormFillValue": {
2627
+ "type": "object",
2628
+ "properties": {
2629
+ "label": {
2630
+ "type": "string"
2631
+ },
2632
+ "value": {},
2633
+ "validation": {
2634
+ "$ref": "#/$defs/FormValidation"
2635
+ }
2636
+ },
2637
+ "required": ["value", "validation"],
2638
+ "additionalProperties": false
2639
+ },
2640
+ "FormFillField": {
2641
+ "type": "object",
2642
+ "properties": {
2643
+ "name": {
2644
+ "type": "string",
2645
+ "minLength": 1
2646
+ },
2647
+ "label": {
2648
+ "type": "string"
2649
+ },
2650
+ "tier": {
2651
+ "const": "low"
2652
+ },
2653
+ "value": {}
2654
+ },
2655
+ "required": ["name", "label", "tier", "value"],
2656
+ "additionalProperties": false
2657
+ },
2658
+ "FormFillRequest": {
2659
+ "type": "object",
2660
+ "properties": {
2661
+ "requestId": {
2662
+ "type": "string",
2663
+ "minLength": 1
2664
+ },
2665
+ "text": {
2666
+ "type": "string"
2667
+ },
2668
+ "references": {
2669
+ "type": "array",
2670
+ "items": {
2671
+ "type": "string"
2672
+ }
2673
+ },
2674
+ "attachments": {
2675
+ "type": "array",
2676
+ "items": {
2677
+ "type": "string",
2678
+ "minLength": 1
2679
+ }
2680
+ },
2681
+ "field": {
2682
+ "type": "string",
2683
+ "minLength": 1
2684
+ },
2685
+ "fields": {
2686
+ "type": "array",
2687
+ "minItems": 1,
2688
+ "items": {
2689
+ "$ref": "#/$defs/FormFillField"
2690
+ }
2691
+ }
2692
+ },
2693
+ "required": ["requestId", "text", "references", "attachments", "fields"],
2694
+ "additionalProperties": false
2695
+ },
2696
+ "BlockFormFill": {
2697
+ "type": "object",
2698
+ "properties": {
2699
+ "type": {
2700
+ "const": "form.fill"
2701
+ },
2702
+ "id": {
2703
+ "type": "string",
2704
+ "minLength": 1
2705
+ },
2706
+ "fallback": {
2707
+ "type": "string"
2708
+ },
2709
+ "body": {
2710
+ "type": "object",
2711
+ "properties": {
2712
+ "requestId": {
2713
+ "type": "string",
2714
+ "minLength": 1
2715
+ },
2716
+ "values": {
2717
+ "type": "object",
2718
+ "minProperties": 1,
2719
+ "additionalProperties": {
2720
+ "$ref": "#/$defs/FormFillValue"
2721
+ }
2722
+ }
2723
+ },
2724
+ "required": ["requestId", "values"],
2725
+ "additionalProperties": false
2726
+ },
2727
+ "answered": {
2728
+ "type": "boolean",
2729
+ "description": "Whether the host holds an answer to this card; it holds one at most (see the README's Card answers)."
2730
+ },
2731
+ "answer": {
2732
+ "$ref": "#/$defs/CardAnswer"
2733
+ }
2734
+ },
2735
+ "required": ["type", "id", "fallback", "body"],
2736
+ "additionalProperties": false
2737
+ },
2738
+ "ReplyFormFill": {
2739
+ "type": "object",
2740
+ "properties": {
2741
+ "kind": {
2742
+ "const": "form-fill"
2743
+ },
2744
+ "protocol": {
2745
+ "type": "string",
2746
+ "minLength": 1
2747
+ },
2748
+ "clientReplyId": {
2749
+ "type": "string",
2750
+ "minLength": 1
2751
+ },
2752
+ "request": {
2753
+ "$ref": "#/$defs/FormFillRequest"
2754
+ }
2755
+ },
2756
+ "required": ["kind", "protocol", "clientReplyId", "request"],
2757
+ "additionalProperties": false
2758
+ },
2759
+ "LeaveAcknowledgment": {
2760
+ "type": "object",
2761
+ "properties": {
2762
+ "sourceDecisionKey": {
2763
+ "type": "string",
2764
+ "minLength": 1,
2765
+ "maxLength": 128
2766
+ },
2767
+ "evidenceVersion": {
2768
+ "type": "integer",
2769
+ "minimum": 0,
2770
+ "maximum": 9007199254740991
2771
+ },
2772
+ "winnerVersion": {
2773
+ "type": "integer",
2774
+ "minimum": 0,
2775
+ "maximum": 9007199254740991
2776
+ },
2777
+ "decisionResolutionVersion": {
2778
+ "type": "integer",
2779
+ "minimum": 0,
2780
+ "maximum": 9007199254740991
2781
+ },
2782
+ "evidenceDigest": {
2783
+ "type": "string",
2784
+ "pattern": "^[A-Za-z0-9_-]{43}$"
2785
+ },
2786
+ "unknownCount": {
2787
+ "type": "integer",
2788
+ "minimum": 0,
2789
+ "maximum": 9007199254740991
2790
+ }
2791
+ },
2792
+ "required": [
2793
+ "sourceDecisionKey",
2794
+ "evidenceVersion",
2795
+ "winnerVersion",
2796
+ "decisionResolutionVersion",
2797
+ "evidenceDigest",
2798
+ "unknownCount"
2799
+ ],
2800
+ "additionalProperties": false
2801
+ },
2802
+ "DecisionVersions": {
2803
+ "type": "object",
2804
+ "properties": {
2805
+ "evidence": {
2806
+ "type": "integer",
2807
+ "minimum": 0,
2808
+ "maximum": 9007199254740991
2809
+ },
2810
+ "winner": {
2811
+ "type": "integer",
2812
+ "minimum": 0,
2813
+ "maximum": 9007199254740991
2814
+ },
2815
+ "decisionResolution": {
2816
+ "type": "integer",
2817
+ "minimum": 0,
2818
+ "maximum": 9007199254740991
2819
+ }
2820
+ },
2821
+ "required": ["evidence", "winner", "decisionResolution"],
2822
+ "additionalProperties": false
2823
+ },
2824
+ "KeptFact": {
2825
+ "type": "object",
2826
+ "properties": {
2827
+ "keepEffect": {
2828
+ "enum": [
2829
+ "forward-closed",
2830
+ "decision-closed",
2831
+ "retention-ended",
2832
+ "leave-completed"
2833
+ ]
2834
+ },
2835
+ "actorCause": {
2836
+ "$ref": "#/$defs/IntentCause"
2837
+ },
2838
+ "round": {
2839
+ "type": "integer",
2840
+ "minimum": 0,
2841
+ "maximum": 9007199254740991
2842
+ }
2843
+ },
2844
+ "required": ["keepEffect", "actorCause", "round"],
2845
+ "additionalProperties": false
2846
+ },
2847
+ "FinalHistory": {
2848
+ "type": "object",
2849
+ "properties": {
2850
+ "winner": {
2851
+ "$ref": "#/$defs/IntentWinner"
2852
+ },
2853
+ "keptFact": {
2854
+ "$ref": "#/$defs/KeptFact"
2855
+ },
2856
+ "relation": {
2857
+ "enum": [
2858
+ "keptElsewhere",
2859
+ "leaveCompletedByKeep",
2860
+ "leaveCoveredByKeep"
2861
+ ]
2862
+ },
2863
+ "requestedTargetApplied": {
2864
+ "type": "boolean"
2865
+ },
2866
+ "contradictedAfterSeal": {
2867
+ "type": "array",
2868
+ "items": {
2869
+ "type": "string",
2870
+ "minLength": 1,
2871
+ "maxLength": 128
2872
+ },
2873
+ "maxItems": 256
2874
+ }
2875
+ },
2876
+ "required": ["winner", "keptFact"],
2877
+ "additionalProperties": false
2878
+ }
2879
+ },
2880
+ "oneOf": [
2881
+ {
2882
+ "$ref": "#/$defs/Negotiation"
2883
+ },
2884
+ {
2885
+ "$ref": "#/$defs/Negotiated"
2886
+ },
2887
+ {
2888
+ "$ref": "#/$defs/Conversation"
2889
+ },
2890
+ {
2891
+ "$ref": "#/$defs/Reply"
2892
+ },
2893
+ {
2894
+ "$ref": "#/$defs/Frame"
2895
+ },
2896
+ {
2897
+ "$ref": "#/$defs/PlanRecord"
2898
+ }
2899
+ ]
2900
+ }