@smartmemory/stratum 0.3.3 → 0.4.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 (81) hide show
  1. package/dist/cli/guard.js +63 -6
  2. package/dist/cli/guard.js.map +1 -1
  3. package/dist/cli/learn.js +226 -0
  4. package/dist/cli/learn.js.map +1 -0
  5. package/dist/cli/query_gate.js +2 -1
  6. package/dist/cli/query_gate.js.map +1 -1
  7. package/dist/cli/stratum.js +5 -2
  8. package/dist/cli/stratum.js.map +1 -1
  9. package/dist/connectors/background.js +58 -10
  10. package/dist/connectors/background.js.map +1 -1
  11. package/dist/connectors/base.js +16 -0
  12. package/dist/connectors/base.js.map +1 -1
  13. package/dist/connectors/cancellation.js +119 -0
  14. package/dist/connectors/cancellation.js.map +1 -0
  15. package/dist/connectors/claude-bg-worker.js +9 -1
  16. package/dist/connectors/claude-bg-worker.js.map +1 -1
  17. package/dist/connectors/claude.js +179 -86
  18. package/dist/connectors/claude.js.map +1 -1
  19. package/dist/connectors/codex.js +289 -61
  20. package/dist/connectors/codex.js.map +1 -1
  21. package/dist/connectors/runner.js +44 -3
  22. package/dist/connectors/runner.js.map +1 -1
  23. package/dist/contracts/events.json +34 -1
  24. package/dist/contracts/guard-signers.allowed +36 -0
  25. package/dist/contracts/mcp-surface.json +1097 -104
  26. package/dist/engine/checkpoint.js +8 -1
  27. package/dist/engine/checkpoint.js.map +1 -1
  28. package/dist/engine/engine.js +508 -42
  29. package/dist/engine/engine.js.map +1 -1
  30. package/dist/engine/evaluate.js +61 -0
  31. package/dist/engine/evaluate.js.map +1 -0
  32. package/dist/engine/ledger.js +12 -0
  33. package/dist/engine/ledger.js.map +1 -1
  34. package/dist/engine/receipts.js +91 -0
  35. package/dist/engine/receipts.js.map +1 -0
  36. package/dist/engine/state.js +51 -1
  37. package/dist/engine/state.js.map +1 -1
  38. package/dist/guard/authorization.js +71 -0
  39. package/dist/guard/authorization.js.map +1 -0
  40. package/dist/guard/descriptors.js +248 -0
  41. package/dist/guard/descriptors.js.map +1 -0
  42. package/dist/guard/errors.js +12 -0
  43. package/dist/guard/errors.js.map +1 -1
  44. package/dist/guard/evidence.js +24 -3
  45. package/dist/guard/evidence.js.map +1 -1
  46. package/dist/guard/sshsig.js +264 -0
  47. package/dist/guard/sshsig.js.map +1 -0
  48. package/dist/guard/store.js +13 -0
  49. package/dist/guard/store.js.map +1 -1
  50. package/dist/guard/transition.js +484 -33
  51. package/dist/guard/transition.js.map +1 -1
  52. package/dist/guard/trust.js +78 -0
  53. package/dist/guard/trust.js.map +1 -0
  54. package/dist/ir/schema.js +8 -1
  55. package/dist/ir/schema.js.map +1 -1
  56. package/dist/ir/validate.js +3 -1
  57. package/dist/ir/validate.js.map +1 -1
  58. package/dist/judge/judged.js +1 -1
  59. package/dist/judge/pricing.js +1 -0
  60. package/dist/judge/pricing.js.map +1 -1
  61. package/dist/learn/apply.js +600 -0
  62. package/dist/learn/apply.js.map +1 -0
  63. package/dist/learn/candidate.js +186 -0
  64. package/dist/learn/candidate.js.map +1 -0
  65. package/dist/learn/classify.js +181 -0
  66. package/dist/learn/classify.js.map +1 -0
  67. package/dist/learn/harvest.js +138 -0
  68. package/dist/learn/harvest.js.map +1 -0
  69. package/dist/learn/smartmemory_egress.js +330 -0
  70. package/dist/learn/smartmemory_egress.js.map +1 -0
  71. package/dist/mcp/server.js +155 -24
  72. package/dist/mcp/server.js.map +1 -1
  73. package/dist/policy/bundle.js +195 -0
  74. package/dist/policy/bundle.js.map +1 -0
  75. package/dist/policy/events.js +51 -0
  76. package/dist/policy/events.js.map +1 -0
  77. package/dist/policy/smartmemory_client.js +332 -0
  78. package/dist/policy/smartmemory_client.js.map +1 -0
  79. package/dist/policy/types.js +2 -0
  80. package/dist/policy/types.js.map +1 -0
  81. package/package.json +3 -2
@@ -1,5 +1,5 @@
1
1
  {
2
- "surface": 10,
2
+ "surface": 17,
3
3
  "shapeLanguage": "Same shape language as events.json. Each tool declares its request shape and one response shape per status variant; a response's status field is implicit. Undeclared keys are contract violations.",
4
4
  "errors": {
5
5
  "consumer_dispatch_bg_unsupported": {
@@ -13,133 +13,894 @@
13
13
  }
14
14
  }
15
15
  }
16
+ },
17
+ "spec_validation_failed": {
18
+ "data": {
19
+ "code": "string",
20
+ "errors": {
21
+ "$array": {
22
+ "code": "string",
23
+ "path": "string",
24
+ "message": "string"
25
+ }
26
+ }
27
+ }
28
+ },
29
+ "input_validation_failed": {
30
+ "data": {
31
+ "code": "string",
32
+ "errors": {
33
+ "$array": {
34
+ "code": "string",
35
+ "path": "string",
36
+ "message": "string"
37
+ }
38
+ }
39
+ }
40
+ },
41
+ "agent_run_failed": {
42
+ "data": {
43
+ "code": "string",
44
+ "usage?": {
45
+ "tokens?": "number",
46
+ "ms?": "number",
47
+ "usd?": "number"
48
+ },
49
+ "split?": {
50
+ "input?": "number",
51
+ "output?": "number",
52
+ "cacheRead?": "number",
53
+ "cacheCreation?": "number"
54
+ },
55
+ "usdSource?": "string",
56
+ "stderr?": "string",
57
+ "telemetry?": {
58
+ "model?": "string",
59
+ "durationMs?": "number",
60
+ "effort?": "string"
61
+ }
62
+ }
16
63
  }
17
64
  },
18
65
  "tools": {
19
66
  "stratum_validate": {
20
- "request": { "spec": "object" },
67
+ "request": {
68
+ "spec": "object"
69
+ },
21
70
  "responses": {
22
71
  "valid": {},
23
- "invalid": { "errors": "array" }
72
+ "invalid": {
73
+ "errors": "array"
74
+ }
24
75
  }
25
76
  },
26
77
  "stratum_compile_speckit": {
27
- "request": { "tasks_dir": "string", "flow_name?": "string" },
78
+ "request": {
79
+ "tasks_dir": "string",
80
+ "flow_name?": "string"
81
+ },
28
82
  "responses": {
29
- "ok": { "yaml": "string", "flow_name": "string", "steps": "array" },
30
- "error": { "error_type": "string", "message": "string" }
83
+ "ok": {
84
+ "yaml": "string",
85
+ "flow_name": "string",
86
+ "steps": "array"
87
+ },
88
+ "error": {
89
+ "error_type": "string",
90
+ "message": "string"
91
+ }
31
92
  }
32
93
  },
33
94
  "stratum_plan": {
34
- "request": { "spec": "object", "input": "object", "workspaceRoot?": "string" },
95
+ "request": {
96
+ "spec": "object",
97
+ "input": "object",
98
+ "workspaceRoot?": "string",
99
+ "policy_bundle?": "object",
100
+ "policy_step_selector?": "string"
101
+ },
35
102
  "responses": {
36
- "ready": { "runId": "string", "ready": { "$array": { "$oneOf": [
37
- { "id": "string", "do": "string", "agent": "string", "attempt": "number", "epoch": "number", "dispatchToken": "string", "previousFailure?": { "attempt": "number", "reason": "string" } },
38
- { "id": "string", "do": "string", "agent": "string", "attempt": "number", "epoch": "number", "dispatchToken": "string", "previousFailure?": { "attempt": "number", "reason": "string" }, "flow": "string", "step": "string", "stage": "number", "isFinalStage": "boolean", "itemIndex": "number", "generation": "number", "contract": { "$oneOf": [{ "root": "string", "contracts": "object" }, "null"] }, "contractDigest": "string|null", "policy": { "isolation": "string", "merge": "string", "pre_merge": { "$array": "string" } }, "revisionDigest": "string" }
39
- ] } }, "ledger": { "spent": "object", "budget?": "object" }, "revisionDigest": "string" },
40
- "running": { "runId": "string", "ledger": { "spent": "object", "budget?": "object" }, "revisionDigest": "string" },
41
- "completed": { "runId": "string", "output": "any", "ledger": { "spent": "object", "budget?": "object" }, "revisionDigest": "string" },
42
- "failed": { "runId": "string", "failure": { "attempt": "number", "reason": "string" }, "ledger": { "spent": "object", "budget?": "object" }, "revisionDigest": "string" },
43
- "budget_exhausted": { "runId": "string", "failure": { "attempt": "number", "reason": "string" }, "ledger": { "spent": "object", "budget?": "object" }, "revisionDigest": "string" }
103
+ "ready": {
104
+ "runId": "string",
105
+ "ready": {
106
+ "$array": {
107
+ "$oneOf": [
108
+ {
109
+ "id": "string",
110
+ "do": "string",
111
+ "agent": "string",
112
+ "attempt": "number",
113
+ "epoch": "number",
114
+ "dispatchToken": "string",
115
+ "previousFailure?": {
116
+ "attempt": "number",
117
+ "reason": "string"
118
+ }
119
+ },
120
+ {
121
+ "id": "string",
122
+ "do": "string",
123
+ "agent": "string",
124
+ "attempt": "number",
125
+ "epoch": "number",
126
+ "dispatchToken": "string",
127
+ "previousFailure?": {
128
+ "attempt": "number",
129
+ "reason": "string"
130
+ },
131
+ "flow": "string",
132
+ "step": "string",
133
+ "stage": "number",
134
+ "isFinalStage": "boolean",
135
+ "itemIndex": "number",
136
+ "generation": "number",
137
+ "contract": {
138
+ "$oneOf": [
139
+ {
140
+ "root": "string",
141
+ "contracts": "object"
142
+ },
143
+ "null"
144
+ ]
145
+ },
146
+ "contractDigest": "string|null",
147
+ "policy": {
148
+ "isolation": "string",
149
+ "merge": "string",
150
+ "pre_merge": {
151
+ "$array": "string"
152
+ }
153
+ },
154
+ "revisionDigest": "string"
155
+ }
156
+ ]
157
+ }
158
+ },
159
+ "ledger": {
160
+ "spent": "object",
161
+ "budget?": "object"
162
+ },
163
+ "revisionDigest": "string"
164
+ },
165
+ "running": {
166
+ "runId": "string",
167
+ "ledger": {
168
+ "spent": "object",
169
+ "budget?": "object"
170
+ },
171
+ "revisionDigest": "string"
172
+ },
173
+ "completed": {
174
+ "runId": "string",
175
+ "output": "any",
176
+ "ledger": {
177
+ "spent": "object",
178
+ "budget?": "object"
179
+ },
180
+ "revisionDigest": "string"
181
+ },
182
+ "failed": {
183
+ "runId": "string",
184
+ "failure": {
185
+ "attempt": "number",
186
+ "reason": "string"
187
+ },
188
+ "ledger": {
189
+ "spent": "object",
190
+ "budget?": "object"
191
+ },
192
+ "revisionDigest": "string"
193
+ },
194
+ "budget_exhausted": {
195
+ "runId": "string",
196
+ "failure": {
197
+ "attempt": "number",
198
+ "reason": "string"
199
+ },
200
+ "ledger": {
201
+ "spent": "object",
202
+ "budget?": "object"
203
+ },
204
+ "revisionDigest": "string"
205
+ }
44
206
  }
45
207
  },
46
208
  "stratum_step_done": {
47
- "request": { "runId": "string", "stepId": "string", "result": { "output?": "any", "failure?": "string", "usage?": "object", "telemetry?": { "durationMs": "number", "model": "string", "effort?": "string" } }, "dispatchToken": "string" },
209
+ "request": {
210
+ "runId": "string",
211
+ "stepId": "string",
212
+ "result": {
213
+ "output?": "any",
214
+ "failure?": "string",
215
+ "usage?": "object",
216
+ "telemetry?": {
217
+ "durationMs": "number",
218
+ "model": "string",
219
+ "effort?": "string"
220
+ }
221
+ },
222
+ "dispatchToken": "string"
223
+ },
224
+ "responses": {
225
+ "ready": {
226
+ "runId": "string",
227
+ "ready": {
228
+ "$array": {
229
+ "$oneOf": [
230
+ {
231
+ "id": "string",
232
+ "do": "string",
233
+ "agent": "string",
234
+ "attempt": "number",
235
+ "epoch": "number",
236
+ "dispatchToken": "string",
237
+ "previousFailure?": {
238
+ "attempt": "number",
239
+ "reason": "string"
240
+ }
241
+ },
242
+ {
243
+ "id": "string",
244
+ "do": "string",
245
+ "agent": "string",
246
+ "attempt": "number",
247
+ "epoch": "number",
248
+ "dispatchToken": "string",
249
+ "previousFailure?": {
250
+ "attempt": "number",
251
+ "reason": "string"
252
+ },
253
+ "flow": "string",
254
+ "step": "string",
255
+ "stage": "number",
256
+ "isFinalStage": "boolean",
257
+ "itemIndex": "number",
258
+ "generation": "number",
259
+ "contract": {
260
+ "$oneOf": [
261
+ {
262
+ "root": "string",
263
+ "contracts": "object"
264
+ },
265
+ "null"
266
+ ]
267
+ },
268
+ "contractDigest": "string|null",
269
+ "policy": {
270
+ "isolation": "string",
271
+ "merge": "string",
272
+ "pre_merge": {
273
+ "$array": "string"
274
+ }
275
+ },
276
+ "revisionDigest": "string"
277
+ }
278
+ ]
279
+ }
280
+ },
281
+ "ledger": {
282
+ "spent": "object",
283
+ "budget?": "object"
284
+ }
285
+ },
286
+ "running": {
287
+ "runId": "string",
288
+ "ledger": {
289
+ "spent": "object",
290
+ "budget?": "object"
291
+ }
292
+ },
293
+ "completed": {
294
+ "runId": "string",
295
+ "output": "any",
296
+ "ledger": {
297
+ "spent": "object",
298
+ "budget?": "object"
299
+ }
300
+ },
301
+ "failed": {
302
+ "runId": "string",
303
+ "failure": {
304
+ "attempt": "number",
305
+ "reason": "string"
306
+ },
307
+ "ledger": {
308
+ "spent": "object",
309
+ "budget?": "object"
310
+ }
311
+ },
312
+ "budget_exhausted": {
313
+ "runId": "string",
314
+ "failure": {
315
+ "attempt": "number",
316
+ "reason": "string"
317
+ },
318
+ "ledger": {
319
+ "spent": "object",
320
+ "budget?": "object"
321
+ }
322
+ }
323
+ }
324
+ },
325
+ "stratum_usage_report": {
326
+ "request": {
327
+ "runId": "string",
328
+ "receipt": {
329
+ "dispatchId": "string",
330
+ "stepId?": "string",
331
+ "source": "string",
332
+ "usage": "object",
333
+ "telemetry?": {
334
+ "durationMs": "number",
335
+ "model": "string",
336
+ "effort?": "string"
337
+ },
338
+ "split?": {
339
+ "input": "number",
340
+ "output": "number",
341
+ "cacheRead?": "number",
342
+ "cacheCreation?": "number"
343
+ },
344
+ "usdSource?": "string",
345
+ "at?": "string"
346
+ }
347
+ },
48
348
  "responses": {
49
- "ready": { "runId": "string", "ready": { "$array": { "$oneOf": [
50
- { "id": "string", "do": "string", "agent": "string", "attempt": "number", "epoch": "number", "dispatchToken": "string", "previousFailure?": { "attempt": "number", "reason": "string" } },
51
- { "id": "string", "do": "string", "agent": "string", "attempt": "number", "epoch": "number", "dispatchToken": "string", "previousFailure?": { "attempt": "number", "reason": "string" }, "flow": "string", "step": "string", "stage": "number", "isFinalStage": "boolean", "itemIndex": "number", "generation": "number", "contract": { "$oneOf": [{ "root": "string", "contracts": "object" }, "null"] }, "contractDigest": "string|null", "policy": { "isolation": "string", "merge": "string", "pre_merge": { "$array": "string" } }, "revisionDigest": "string" }
52
- ] } }, "ledger": { "spent": "object", "budget?": "object" } },
53
- "running": { "runId": "string", "ledger": { "spent": "object", "budget?": "object" } },
54
- "completed": { "runId": "string", "output": "any", "ledger": { "spent": "object", "budget?": "object" } },
55
- "failed": { "runId": "string", "failure": { "attempt": "number", "reason": "string" }, "ledger": { "spent": "object", "budget?": "object" } },
56
- "budget_exhausted": { "runId": "string", "failure": { "attempt": "number", "reason": "string" }, "ledger": { "spent": "object", "budget?": "object" } }
349
+ "ok": {
350
+ "runId": "string",
351
+ "seq": "number",
352
+ "budget?": "string",
353
+ "ledger": {
354
+ "spent": "object",
355
+ "budget?": "object"
356
+ }
357
+ },
358
+ "duplicate": {
359
+ "runId": "string",
360
+ "seq": "number",
361
+ "ledger": {
362
+ "spent": "object",
363
+ "budget?": "object"
364
+ }
365
+ }
57
366
  }
58
367
  },
59
368
  "stratum_commit": {
60
369
  "description": "Save a named checkpoint of the current flow state; state-only; no files are touched; the caller owns file-level undo.",
61
- "request": { "flow_id": "string", "label": "string" },
370
+ "request": {
371
+ "flow_id": "string",
372
+ "label": "string"
373
+ },
62
374
  "responses": {
63
- "committed": { "flow_id": "string", "label": "string", "step_number": "number", "current_step_id": "string|null", "checkpoints": "array" },
64
- "error": { "error_type": "string", "message": "string", "available?": "array" }
375
+ "committed": {
376
+ "flow_id": "string",
377
+ "label": "string",
378
+ "step_number": "number",
379
+ "current_step_id": "string|null",
380
+ "checkpoints": "array"
381
+ },
382
+ "error": {
383
+ "error_type": "string",
384
+ "message": "string",
385
+ "available?": "array"
386
+ }
65
387
  }
66
388
  },
67
389
  "stratum_revert": {
68
390
  "description": "Roll back flow state to a named checkpoint; state-only; no files are touched; the caller owns file-level undo.",
69
- "request": { "flow_id": "string", "label": "string" },
391
+ "request": {
392
+ "flow_id": "string",
393
+ "label": "string"
394
+ },
70
395
  "responses": {
71
- "ready": { "runId": "string", "ready": { "$array": { "$oneOf": [
72
- { "id": "string", "do": "string", "agent": "string", "attempt": "number", "epoch": "number", "dispatchToken": "string", "previousFailure?": { "attempt": "number", "reason": "string" } },
73
- { "id": "string", "do": "string", "agent": "string", "attempt": "number", "epoch": "number", "dispatchToken": "string", "previousFailure?": { "attempt": "number", "reason": "string" }, "flow": "string", "step": "string", "stage": "number", "isFinalStage": "boolean", "itemIndex": "number", "generation": "number", "contract": { "$oneOf": [{ "root": "string", "contracts": "object" }, "null"] }, "contractDigest": "string|null", "policy": { "isolation": "string", "merge": "string", "pre_merge": { "$array": "string" } }, "revisionDigest": "string" }
74
- ] } }, "ledger": { "spent": "object", "budget?": "object" }, "reverted_to": "string" },
75
- "running": { "runId": "string", "ledger": { "spent": "object", "budget?": "object" }, "reverted_to": "string" },
76
- "completed": { "runId": "string", "output": "any", "ledger": { "spent": "object", "budget?": "object" }, "reverted_to": "string" },
77
- "failed": { "runId": "string", "failure": { "attempt": "number", "reason": "string" }, "ledger": { "spent": "object", "budget?": "object" }, "reverted_to": "string" },
78
- "budget_exhausted": { "runId": "string", "failure": { "attempt": "number", "reason": "string" }, "ledger": { "spent": "object", "budget?": "object" }, "reverted_to": "string" },
79
- "error": { "error_type": "string", "message": "string", "available?": "array" }
396
+ "ready": {
397
+ "runId": "string",
398
+ "ready": {
399
+ "$array": {
400
+ "$oneOf": [
401
+ {
402
+ "id": "string",
403
+ "do": "string",
404
+ "agent": "string",
405
+ "attempt": "number",
406
+ "epoch": "number",
407
+ "dispatchToken": "string",
408
+ "previousFailure?": {
409
+ "attempt": "number",
410
+ "reason": "string"
411
+ }
412
+ },
413
+ {
414
+ "id": "string",
415
+ "do": "string",
416
+ "agent": "string",
417
+ "attempt": "number",
418
+ "epoch": "number",
419
+ "dispatchToken": "string",
420
+ "previousFailure?": {
421
+ "attempt": "number",
422
+ "reason": "string"
423
+ },
424
+ "flow": "string",
425
+ "step": "string",
426
+ "stage": "number",
427
+ "isFinalStage": "boolean",
428
+ "itemIndex": "number",
429
+ "generation": "number",
430
+ "contract": {
431
+ "$oneOf": [
432
+ {
433
+ "root": "string",
434
+ "contracts": "object"
435
+ },
436
+ "null"
437
+ ]
438
+ },
439
+ "contractDigest": "string|null",
440
+ "policy": {
441
+ "isolation": "string",
442
+ "merge": "string",
443
+ "pre_merge": {
444
+ "$array": "string"
445
+ }
446
+ },
447
+ "revisionDigest": "string"
448
+ }
449
+ ]
450
+ }
451
+ },
452
+ "ledger": {
453
+ "spent": "object",
454
+ "budget?": "object"
455
+ },
456
+ "reverted_to": "string"
457
+ },
458
+ "running": {
459
+ "runId": "string",
460
+ "ledger": {
461
+ "spent": "object",
462
+ "budget?": "object"
463
+ },
464
+ "reverted_to": "string"
465
+ },
466
+ "completed": {
467
+ "runId": "string",
468
+ "output": "any",
469
+ "ledger": {
470
+ "spent": "object",
471
+ "budget?": "object"
472
+ },
473
+ "reverted_to": "string"
474
+ },
475
+ "failed": {
476
+ "runId": "string",
477
+ "failure": {
478
+ "attempt": "number",
479
+ "reason": "string"
480
+ },
481
+ "ledger": {
482
+ "spent": "object",
483
+ "budget?": "object"
484
+ },
485
+ "reverted_to": "string"
486
+ },
487
+ "budget_exhausted": {
488
+ "runId": "string",
489
+ "failure": {
490
+ "attempt": "number",
491
+ "reason": "string"
492
+ },
493
+ "ledger": {
494
+ "spent": "object",
495
+ "budget?": "object"
496
+ },
497
+ "reverted_to": "string"
498
+ },
499
+ "error": {
500
+ "error_type": "string",
501
+ "message": "string",
502
+ "available?": "array"
503
+ }
80
504
  }
81
505
  },
82
506
  "stratum_resume": {
83
- "request": { "runId": "string" },
507
+ "request": {
508
+ "runId": "string"
509
+ },
84
510
  "responses": {
85
- "ready": { "runId": "string", "ready": { "$array": { "$oneOf": [
86
- { "id": "string", "do": "string", "agent": "string", "attempt": "number", "epoch": "number", "dispatchToken": "string", "previousFailure?": { "attempt": "number", "reason": "string" } },
87
- { "id": "string", "do": "string", "agent": "string", "attempt": "number", "epoch": "number", "dispatchToken": "string", "previousFailure?": { "attempt": "number", "reason": "string" }, "flow": "string", "step": "string", "stage": "number", "isFinalStage": "boolean", "itemIndex": "number", "generation": "number", "contract": { "$oneOf": [{ "root": "string", "contracts": "object" }, "null"] }, "contractDigest": "string|null", "policy": { "isolation": "string", "merge": "string", "pre_merge": { "$array": "string" } }, "revisionDigest": "string" }
88
- ] } }, "ledger": { "spent": "object", "budget?": "object" }, "revisionDigest": "string" },
89
- "running": { "runId": "string", "ledger": { "spent": "object", "budget?": "object" }, "revisionDigest": "string" },
90
- "completed": { "runId": "string", "output": "any", "ledger": { "spent": "object", "budget?": "object" }, "revisionDigest": "string" },
91
- "failed": { "runId": "string", "failure": { "attempt": "number", "reason": "string" }, "ledger": { "spent": "object", "budget?": "object" }, "revisionDigest": "string" },
92
- "budget_exhausted": { "runId": "string", "failure": { "attempt": "number", "reason": "string" }, "ledger": { "spent": "object", "budget?": "object" }, "revisionDigest": "string" }
511
+ "ready": {
512
+ "runId": "string",
513
+ "ready": {
514
+ "$array": {
515
+ "$oneOf": [
516
+ {
517
+ "id": "string",
518
+ "do": "string",
519
+ "agent": "string",
520
+ "attempt": "number",
521
+ "epoch": "number",
522
+ "dispatchToken": "string",
523
+ "previousFailure?": {
524
+ "attempt": "number",
525
+ "reason": "string"
526
+ }
527
+ },
528
+ {
529
+ "id": "string",
530
+ "do": "string",
531
+ "agent": "string",
532
+ "attempt": "number",
533
+ "epoch": "number",
534
+ "dispatchToken": "string",
535
+ "previousFailure?": {
536
+ "attempt": "number",
537
+ "reason": "string"
538
+ },
539
+ "flow": "string",
540
+ "step": "string",
541
+ "stage": "number",
542
+ "isFinalStage": "boolean",
543
+ "itemIndex": "number",
544
+ "generation": "number",
545
+ "contract": {
546
+ "$oneOf": [
547
+ {
548
+ "root": "string",
549
+ "contracts": "object"
550
+ },
551
+ "null"
552
+ ]
553
+ },
554
+ "contractDigest": "string|null",
555
+ "policy": {
556
+ "isolation": "string",
557
+ "merge": "string",
558
+ "pre_merge": {
559
+ "$array": "string"
560
+ }
561
+ },
562
+ "revisionDigest": "string"
563
+ }
564
+ ]
565
+ }
566
+ },
567
+ "ledger": {
568
+ "spent": "object",
569
+ "budget?": "object"
570
+ },
571
+ "revisionDigest": "string"
572
+ },
573
+ "running": {
574
+ "runId": "string",
575
+ "ledger": {
576
+ "spent": "object",
577
+ "budget?": "object"
578
+ },
579
+ "revisionDigest": "string"
580
+ },
581
+ "completed": {
582
+ "runId": "string",
583
+ "output": "any",
584
+ "ledger": {
585
+ "spent": "object",
586
+ "budget?": "object"
587
+ },
588
+ "revisionDigest": "string"
589
+ },
590
+ "failed": {
591
+ "runId": "string",
592
+ "failure": {
593
+ "attempt": "number",
594
+ "reason": "string"
595
+ },
596
+ "ledger": {
597
+ "spent": "object",
598
+ "budget?": "object"
599
+ },
600
+ "revisionDigest": "string"
601
+ },
602
+ "budget_exhausted": {
603
+ "runId": "string",
604
+ "failure": {
605
+ "attempt": "number",
606
+ "reason": "string"
607
+ },
608
+ "ledger": {
609
+ "spent": "object",
610
+ "budget?": "object"
611
+ },
612
+ "revisionDigest": "string"
613
+ }
93
614
  }
94
615
  },
95
616
  "stratum_audit": {
96
- "request": { "runId": "string" },
617
+ "request": {
618
+ "runId": "string"
619
+ },
97
620
  "responses": {
98
- "running": { "runId": "string", "events": "array", "steps": "object", "flowSpent": "object", "output?": "any" },
99
- "completed": { "runId": "string", "events": "array", "steps": "object", "flowSpent": "object", "output?": "any" },
100
- "failed": { "runId": "string", "events": "array", "steps": "object", "flowSpent": "object", "output?": "any" },
101
- "budget_exhausted": { "runId": "string", "events": "array", "steps": "object", "flowSpent": "object", "output?": "any" }
621
+ "running": {
622
+ "runId": "string",
623
+ "events": "array",
624
+ "steps": "object",
625
+ "flowSpent": "object",
626
+ "output?": "any"
627
+ },
628
+ "completed": {
629
+ "runId": "string",
630
+ "events": "array",
631
+ "steps": "object",
632
+ "flowSpent": "object",
633
+ "output?": "any"
634
+ },
635
+ "failed": {
636
+ "runId": "string",
637
+ "events": "array",
638
+ "steps": "object",
639
+ "flowSpent": "object",
640
+ "output?": "any"
641
+ },
642
+ "budget_exhausted": {
643
+ "runId": "string",
644
+ "events": "array",
645
+ "steps": "object",
646
+ "flowSpent": "object",
647
+ "output?": "any"
648
+ }
102
649
  }
103
650
  },
104
651
  "stratum_gate_resolve": {
105
- "request": { "runId": "string", "stepId": "string", "decision": "string", "gateToken": "string" },
652
+ "request": {
653
+ "runId": "string",
654
+ "stepId": "string",
655
+ "decision": "string",
656
+ "gateToken": "string",
657
+ "user_id?": "string"
658
+ },
106
659
  "responses": {
107
- "ready": { "runId": "string", "ready": { "$array": { "$oneOf": [
108
- { "id": "string", "do": "string", "agent": "string", "attempt": "number", "epoch": "number", "dispatchToken": "string", "previousFailure?": { "attempt": "number", "reason": "string" } },
109
- { "id": "string", "do": "string", "agent": "string", "attempt": "number", "epoch": "number", "dispatchToken": "string", "previousFailure?": { "attempt": "number", "reason": "string" }, "flow": "string", "step": "string", "stage": "number", "isFinalStage": "boolean", "itemIndex": "number", "generation": "number", "contract": { "$oneOf": [{ "root": "string", "contracts": "object" }, "null"] }, "contractDigest": "string|null", "policy": { "isolation": "string", "merge": "string", "pre_merge": { "$array": "string" } }, "revisionDigest": "string" }
110
- ] } }, "ledger": { "spent": "object", "budget?": "object" } },
111
- "running": { "runId": "string", "ledger": { "spent": "object", "budget?": "object" } },
112
- "completed": { "runId": "string", "output": "any", "ledger": { "spent": "object", "budget?": "object" } },
113
- "failed": { "runId": "string", "failure": { "attempt": "number", "reason": "string" }, "ledger": { "spent": "object", "budget?": "object" } },
114
- "budget_exhausted": { "runId": "string", "failure": { "attempt": "number", "reason": "string" }, "ledger": { "spent": "object", "budget?": "object" } }
660
+ "ready": {
661
+ "runId": "string",
662
+ "ready": {
663
+ "$array": {
664
+ "$oneOf": [
665
+ {
666
+ "id": "string",
667
+ "do": "string",
668
+ "agent": "string",
669
+ "attempt": "number",
670
+ "epoch": "number",
671
+ "dispatchToken": "string",
672
+ "previousFailure?": {
673
+ "attempt": "number",
674
+ "reason": "string"
675
+ }
676
+ },
677
+ {
678
+ "id": "string",
679
+ "do": "string",
680
+ "agent": "string",
681
+ "attempt": "number",
682
+ "epoch": "number",
683
+ "dispatchToken": "string",
684
+ "previousFailure?": {
685
+ "attempt": "number",
686
+ "reason": "string"
687
+ },
688
+ "flow": "string",
689
+ "step": "string",
690
+ "stage": "number",
691
+ "isFinalStage": "boolean",
692
+ "itemIndex": "number",
693
+ "generation": "number",
694
+ "contract": {
695
+ "$oneOf": [
696
+ {
697
+ "root": "string",
698
+ "contracts": "object"
699
+ },
700
+ "null"
701
+ ]
702
+ },
703
+ "contractDigest": "string|null",
704
+ "policy": {
705
+ "isolation": "string",
706
+ "merge": "string",
707
+ "pre_merge": {
708
+ "$array": "string"
709
+ }
710
+ },
711
+ "revisionDigest": "string"
712
+ }
713
+ ]
714
+ }
715
+ },
716
+ "ledger": {
717
+ "spent": "object",
718
+ "budget?": "object"
719
+ }
720
+ },
721
+ "running": {
722
+ "runId": "string",
723
+ "ledger": {
724
+ "spent": "object",
725
+ "budget?": "object"
726
+ }
727
+ },
728
+ "completed": {
729
+ "runId": "string",
730
+ "output": "any",
731
+ "ledger": {
732
+ "spent": "object",
733
+ "budget?": "object"
734
+ }
735
+ },
736
+ "failed": {
737
+ "runId": "string",
738
+ "failure": {
739
+ "attempt": "number",
740
+ "reason": "string"
741
+ },
742
+ "ledger": {
743
+ "spent": "object",
744
+ "budget?": "object"
745
+ }
746
+ },
747
+ "budget_exhausted": {
748
+ "runId": "string",
749
+ "failure": {
750
+ "attempt": "number",
751
+ "reason": "string"
752
+ },
753
+ "ledger": {
754
+ "spent": "object",
755
+ "budget?": "object"
756
+ }
757
+ }
115
758
  }
116
759
  },
117
760
  "stratum_flow_poll": {
118
- "request": { "runId": "string", "cursor?": "number" },
761
+ "request": {
762
+ "runId": "string",
763
+ "cursor?": "number"
764
+ },
119
765
  "responses": {
120
- "running": { "runId": "string", "events": "array", "nextCursor": "number", "ledger": { "spent": "object", "budget?": "object" }, "output?": "any", "failure?": "object" },
121
- "completed": { "runId": "string", "events": "array", "nextCursor": "number", "ledger": { "spent": "object", "budget?": "object" }, "output?": "any", "failure?": "object" },
122
- "failed": { "runId": "string", "events": "array", "nextCursor": "number", "ledger": { "spent": "object", "budget?": "object" }, "output?": "any", "failure?": "object" },
123
- "budget_exhausted": { "runId": "string", "events": "array", "nextCursor": "number", "ledger": { "spent": "object", "budget?": "object" }, "output?": "any", "failure?": "object" }
766
+ "running": {
767
+ "runId": "string",
768
+ "events": "array",
769
+ "nextCursor": "number",
770
+ "ledger": {
771
+ "spent": "object",
772
+ "budget?": "object"
773
+ },
774
+ "output?": "any",
775
+ "failure?": "object"
776
+ },
777
+ "completed": {
778
+ "runId": "string",
779
+ "events": "array",
780
+ "nextCursor": "number",
781
+ "ledger": {
782
+ "spent": "object",
783
+ "budget?": "object"
784
+ },
785
+ "output?": "any",
786
+ "failure?": "object"
787
+ },
788
+ "failed": {
789
+ "runId": "string",
790
+ "events": "array",
791
+ "nextCursor": "number",
792
+ "ledger": {
793
+ "spent": "object",
794
+ "budget?": "object"
795
+ },
796
+ "output?": "any",
797
+ "failure?": "object"
798
+ },
799
+ "budget_exhausted": {
800
+ "runId": "string",
801
+ "events": "array",
802
+ "nextCursor": "number",
803
+ "ledger": {
804
+ "spent": "object",
805
+ "budget?": "object"
806
+ },
807
+ "output?": "any",
808
+ "failure?": "object"
809
+ }
124
810
  }
125
811
  },
126
812
  "stratum_flow_run_bg": {
127
- "request": { "spec": "object", "input": "object", "workspaceRoot?": "string" },
813
+ "request": {
814
+ "spec": "object",
815
+ "input": "object",
816
+ "workspaceRoot?": "string"
817
+ },
128
818
  "responses": {
129
- "running": { "runId": "string" }
819
+ "running": {
820
+ "runId": "string"
821
+ }
130
822
  }
131
823
  },
132
824
  "stratum_flow_bg_poll": {
133
- "request": { "runId": "string", "cursor?": "number" },
825
+ "request": {
826
+ "runId": "string",
827
+ "cursor?": "number"
828
+ },
134
829
  "responses": {
135
- "running": { "runId": "string", "events": "array", "nextCursor": "number", "ledger": { "spent": "object", "budget?": "object" }, "output?": "any", "failure?": "object", "bg": { "status": "string", "cancelRequested": "boolean", "pendingGates": "array", "gateStepId?": "string" } },
136
- "completed": { "runId": "string", "events": "array", "nextCursor": "number", "ledger": { "spent": "object", "budget?": "object" }, "output?": "any", "failure?": "object", "bg": { "status": "string", "cancelRequested": "boolean", "pendingGates": "array", "gateStepId?": "string" } },
137
- "failed": { "runId": "string", "events": "array", "nextCursor": "number", "ledger": { "spent": "object", "budget?": "object" }, "output?": "any", "failure?": "object", "bg": { "status": "string", "cancelRequested": "boolean", "pendingGates": "array", "gateStepId?": "string" } },
138
- "budget_exhausted": { "runId": "string", "events": "array", "nextCursor": "number", "ledger": { "spent": "object", "budget?": "object" }, "output?": "any", "failure?": "object", "bg": { "status": "string", "cancelRequested": "boolean", "pendingGates": "array", "gateStepId?": "string" } }
830
+ "running": {
831
+ "runId": "string",
832
+ "events": "array",
833
+ "nextCursor": "number",
834
+ "ledger": {
835
+ "spent": "object",
836
+ "budget?": "object"
837
+ },
838
+ "output?": "any",
839
+ "failure?": "object",
840
+ "bg": {
841
+ "status": "string",
842
+ "cancelRequested": "boolean",
843
+ "pendingGates": "array",
844
+ "gateStepId?": "string"
845
+ }
846
+ },
847
+ "completed": {
848
+ "runId": "string",
849
+ "events": "array",
850
+ "nextCursor": "number",
851
+ "ledger": {
852
+ "spent": "object",
853
+ "budget?": "object"
854
+ },
855
+ "output?": "any",
856
+ "failure?": "object",
857
+ "bg": {
858
+ "status": "string",
859
+ "cancelRequested": "boolean",
860
+ "pendingGates": "array",
861
+ "gateStepId?": "string"
862
+ }
863
+ },
864
+ "failed": {
865
+ "runId": "string",
866
+ "events": "array",
867
+ "nextCursor": "number",
868
+ "ledger": {
869
+ "spent": "object",
870
+ "budget?": "object"
871
+ },
872
+ "output?": "any",
873
+ "failure?": "object",
874
+ "bg": {
875
+ "status": "string",
876
+ "cancelRequested": "boolean",
877
+ "pendingGates": "array",
878
+ "gateStepId?": "string"
879
+ }
880
+ },
881
+ "budget_exhausted": {
882
+ "runId": "string",
883
+ "events": "array",
884
+ "nextCursor": "number",
885
+ "ledger": {
886
+ "spent": "object",
887
+ "budget?": "object"
888
+ },
889
+ "output?": "any",
890
+ "failure?": "object",
891
+ "bg": {
892
+ "status": "string",
893
+ "cancelRequested": "boolean",
894
+ "pendingGates": "array",
895
+ "gateStepId?": "string"
896
+ }
897
+ }
139
898
  }
140
899
  },
141
900
  "stratum_flow_cancel_bg": {
142
- "request": { "runId": "string" },
901
+ "request": {
902
+ "runId": "string"
903
+ },
143
904
  "responses": {
144
905
  "running": {},
145
906
  "completed": {},
@@ -149,66 +910,298 @@
149
910
  }
150
911
  },
151
912
  "stratum_agent_run": {
152
- "request": { "agent": "string", "prompt": "string", "cwd": "string", "model?": "string", "sandboxMode?": "string", "background?": "boolean", "allowedTools?": { "$array": "string" }, "disallowedTools?": { "$array": "string" } },
913
+ "request": {
914
+ "agent": "string",
915
+ "prompt": "string",
916
+ "cwd": "string",
917
+ "model?": "string",
918
+ "sandboxMode?": "string",
919
+ "background?": "boolean",
920
+ "allowedTools?": {
921
+ "$array": "string"
922
+ },
923
+ "disallowedTools?": {
924
+ "$array": "string"
925
+ },
926
+ "thinking?": "object",
927
+ "effort?": "string",
928
+ "cancellationId?": "string"
929
+ },
153
930
  "responses": {
154
- "complete": { "text": "string", "usage": "object", "telemetry": { "durationMs": "number", "model": "string", "effort?": "string" } },
155
- "bg_started": { "runId": "string", "pid?": "number", "streamPath": "string" }
931
+ "complete": {
932
+ "text": "string",
933
+ "usage": "object",
934
+ "split?": {
935
+ "input": "number",
936
+ "output": "number",
937
+ "cacheRead?": "number",
938
+ "cacheCreation?": "number"
939
+ },
940
+ "usdSource?": "string",
941
+ "telemetry": {
942
+ "durationMs": "number",
943
+ "model": "string",
944
+ "effort?": "string"
945
+ }
946
+ },
947
+ "bg_started": {
948
+ "runId": "string",
949
+ "pid?": "number",
950
+ "streamPath": "string"
951
+ }
156
952
  }
157
953
  },
158
954
  "stratum_agent_poll": {
159
- "request": { "runId": "string" },
955
+ "request": {
956
+ "runId": "string"
957
+ },
160
958
  "responses": {
161
- "not_found": { "runId": "string" },
162
- "running": { "runId": "string", "textTail": "string", "eventsSeen": "number", "streamPath": "string" },
163
- "complete": { "runId": "string", "text": "string", "usage": "object", "exitCode": "number", "telemetry": { "durationMs": "number", "model": "string", "effort?": "string" } },
164
- "error": { "runId": "string", "textTail": "string", "stderrTail": "string", "reason?": "string", "exitCode?": "number", "eventsSeen?": "number", "streamPath?": "string", "telemetry?": { "durationMs": "number", "model": "string", "effort?": "string" } }
959
+ "not_found": {
960
+ "runId": "string"
961
+ },
962
+ "running": {
963
+ "runId": "string",
964
+ "textTail": "string",
965
+ "eventsSeen": "number",
966
+ "streamPath": "string"
967
+ },
968
+ "complete": {
969
+ "runId": "string",
970
+ "text": "string",
971
+ "usage": "object",
972
+ "split?": {
973
+ "input": "number",
974
+ "output": "number",
975
+ "cacheRead?": "number",
976
+ "cacheCreation?": "number"
977
+ },
978
+ "usdSource?": "string",
979
+ "exitCode": "number",
980
+ "telemetry": {
981
+ "durationMs": "number",
982
+ "model": "string",
983
+ "effort?": "string"
984
+ }
985
+ },
986
+ "error": {
987
+ "runId": "string",
988
+ "textTail": "string",
989
+ "stderrTail": "string",
990
+ "reason?": "string",
991
+ "exitCode?": "number",
992
+ "eventsSeen?": "number",
993
+ "streamPath?": "string",
994
+ "telemetry?": {
995
+ "durationMs": "number",
996
+ "model": "string",
997
+ "effort?": "string"
998
+ }
999
+ }
165
1000
  }
166
1001
  },
167
1002
  "stratum_cancel_agent_run": {
168
- "request": { "runId": "string" },
1003
+ "request": {
1004
+ "runId": "string"
1005
+ },
169
1006
  "responses": {
170
- "cancelled": { "runId": "string" },
171
- "already_complete": { "runId": "string" },
172
- "already_error": { "runId": "string" },
173
- "not_found": { "runId": "string" }
1007
+ "cancelled": {
1008
+ "runId": "string"
1009
+ },
1010
+ "already_complete": {
1011
+ "runId": "string"
1012
+ },
1013
+ "already_error": {
1014
+ "runId": "string"
1015
+ },
1016
+ "not_found": {
1017
+ "runId": "string"
1018
+ }
174
1019
  }
175
1020
  },
176
1021
  "stratum_guard_register": {
177
- "request": { "resource_id": "string", "graph": "object", "edge_predicates": "object", "initial": "string", "terminal?": "array|null", "stakes?": "object|null", "workspace_root?": "string|null" },
1022
+ "request": {
1023
+ "resource_id": "string",
1024
+ "graph": "object",
1025
+ "edge_predicates": "object",
1026
+ "initial": "string",
1027
+ "terminal?": "array|null",
1028
+ "stakes?": "object|null",
1029
+ "workspace_root?": "string|null",
1030
+ "policy_bundle?": "object"
1031
+ },
178
1032
  "responses": {
179
- "registered": { "guard_id": "string", "checksum": "string" },
180
- "exists": { "guard_id": "string", "checksum": "string" },
181
- "error": { "error_type": "string", "message": "string" }
1033
+ "registered": {
1034
+ "guard_id": "string",
1035
+ "checksum": "string"
1036
+ },
1037
+ "exists": {
1038
+ "guard_id": "string",
1039
+ "checksum": "string"
1040
+ },
1041
+ "error": {
1042
+ "error_type": "string",
1043
+ "message": "string"
1044
+ }
182
1045
  }
183
1046
  },
184
1047
  "stratum_guard_transition": {
185
- "request": { "resource_id": "string", "from_state": "string", "to_state": "string", "artifacts": "object", "modified_files?": "array|null", "idempotency_key?": "string|null", "resolved_by?": "string" },
1048
+ "request": {
1049
+ "resource_id": "string",
1050
+ "from_state": "string",
1051
+ "to_state": "string",
1052
+ "artifacts": "object",
1053
+ "modified_files?": "array|null",
1054
+ "idempotency_key?": "string|null",
1055
+ "resolved_by?": "string",
1056
+ "run_id?": "string"
1057
+ },
186
1058
  "responses": {
187
- "applied": { "verdict": "object", "ledger_ref": "string", "current_state": "string" },
188
- "refused": { "verdict": "object", "ledger_ref": "string", "current_state": "string" },
189
- "replayed": { "verdict": "object", "ledger_ref": "string", "current_state": "string" },
190
- "error": { "error_type": "string", "message": "string" }
1059
+ "applied": {
1060
+ "verdict": "object",
1061
+ "ledger_ref": "string",
1062
+ "current_state": "string",
1063
+ "entry_digest": "string",
1064
+ "prev_digest": "string",
1065
+ "payload_digest": "string"
1066
+ },
1067
+ "refused": {
1068
+ "verdict": "object",
1069
+ "ledger_ref": "string",
1070
+ "current_state": "string",
1071
+ "entry_digest": "string",
1072
+ "prev_digest": "string",
1073
+ "payload_digest": "string"
1074
+ },
1075
+ "replayed": {
1076
+ "verdict": "object",
1077
+ "ledger_ref": "string",
1078
+ "current_state": "string",
1079
+ "entry_digest": "string",
1080
+ "prev_digest": "string",
1081
+ "payload_digest": "string"
1082
+ },
1083
+ "error": {
1084
+ "error_type": "string",
1085
+ "message": "string"
1086
+ }
191
1087
  }
192
1088
  },
193
1089
  "stratum_guard_override": {
194
- "request": { "resource_id": "string", "from_state": "string", "to_state": "string", "override_token": "string", "rationale": "string", "resolved_by?": "string" },
1090
+ "request": {
1091
+ "resource_id": "string",
1092
+ "from_state": "string",
1093
+ "to_state": "string",
1094
+ "authorization": "string",
1095
+ "rationale": "string",
1096
+ "resolved_by?": "string",
1097
+ "user_id?": "string",
1098
+ "run_id?": "string"
1099
+ },
195
1100
  "responses": {
196
- "deviation": { "ledger_ref": "string", "current_state": "string", "rationale": "string" },
197
- "error": { "error_type": "string", "message": "string" }
1101
+ "deviation": {
1102
+ "ledger_ref": "string",
1103
+ "current_state": "string",
1104
+ "rationale": "string",
1105
+ "authorized_by": "string",
1106
+ "entry_digest": "string",
1107
+ "prev_digest": "string",
1108
+ "payload_digest": "string"
1109
+ },
1110
+ "error": {
1111
+ "error_type": "string",
1112
+ "message": "string"
1113
+ }
198
1114
  }
199
1115
  },
200
1116
  "stratum_guard_migrate": {
201
- "request": { "resource_id": "string", "new_graph": "object", "new_edge_predicates": "object", "override_token": "string", "rationale": "string", "new_terminal?": "array|null", "new_stakes?": "object|null" },
1117
+ "request": {
1118
+ "resource_id": "string",
1119
+ "new_graph": "object",
1120
+ "new_edge_predicates": "object",
1121
+ "authorization": "string",
1122
+ "rationale": "string",
1123
+ "new_terminal?": "array|null",
1124
+ "new_stakes?": "object|null"
1125
+ },
202
1126
  "responses": {
203
- "migrated": { "checksum": "string", "graph_version": "number", "ledger_ref": "string", "rationale": "string" },
204
- "error": { "error_type": "string", "message": "string" }
1127
+ "migrated": {
1128
+ "checksum": "string",
1129
+ "graph_version": "number",
1130
+ "ledger_ref": "string",
1131
+ "rationale": "string",
1132
+ "authorized_by": "string"
1133
+ },
1134
+ "error": {
1135
+ "error_type": "string",
1136
+ "message": "string"
1137
+ }
1138
+ }
1139
+ },
1140
+ "stratum_guard_upgrade": {
1141
+ "request": {
1142
+ "resource_id": "string",
1143
+ "new_graph": "object",
1144
+ "new_edge_predicates": "object",
1145
+ "rationale": "string",
1146
+ "new_terminal?": "array|null",
1147
+ "new_stakes?": "object|null"
1148
+ },
1149
+ "responses": {
1150
+ "migrated": {
1151
+ "checksum": "string",
1152
+ "graph_version": "number",
1153
+ "ledger_ref": "string",
1154
+ "rationale": "string"
1155
+ },
1156
+ "unchanged": {
1157
+ "checksum": "string",
1158
+ "graph_version": "number",
1159
+ "rationale": "string"
1160
+ },
1161
+ "error": {
1162
+ "error_type": "string",
1163
+ "message": "string"
1164
+ }
1165
+ }
1166
+ },
1167
+ "stratum_guard_apply_upgrade": {
1168
+ "request": {
1169
+ "resource_id": "string",
1170
+ "descriptor_id": "string"
1171
+ },
1172
+ "responses": {
1173
+ "applied": {
1174
+ "checksum": "string",
1175
+ "graph_version": "number",
1176
+ "ledger_ref": "string",
1177
+ "descriptor_id": "string"
1178
+ },
1179
+ "unchanged": {
1180
+ "checksum": "string",
1181
+ "graph_version": "number",
1182
+ "descriptor_id": "string"
1183
+ },
1184
+ "error": {
1185
+ "error_type": "string",
1186
+ "message": "string"
1187
+ }
205
1188
  }
206
1189
  },
207
1190
  "stratum_guard_history": {
208
- "request": { "resource_id": "string" },
1191
+ "request": {
1192
+ "resource_id": "string"
1193
+ },
209
1194
  "responses": {
210
- "success": { "resource_id": "string", "current_state": "string", "graph_version": "number", "ledger": "array" },
211
- "error": { "error_type": "string", "message": "string" }
1195
+ "success": {
1196
+ "resource_id": "string",
1197
+ "current_state": "string",
1198
+ "graph_version": "number",
1199
+ "ledger": "array"
1200
+ },
1201
+ "error": {
1202
+ "error_type": "string",
1203
+ "message": "string"
1204
+ }
212
1205
  }
213
1206
  }
214
1207
  }