@claudexor/schema 3.20.1 → 3.23.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 (147) hide show
  1. package/dist/agent-capabilities.d.ts +9 -9
  2. package/dist/agent-capabilities.d.ts.map +1 -1
  3. package/dist/agent-capabilities.js +2 -1
  4. package/dist/agent-capabilities.js.map +1 -1
  5. package/dist/command-list.d.ts +108 -37
  6. package/dist/command-list.d.ts.map +1 -1
  7. package/dist/command-list.js +17 -35
  8. package/dist/command-list.js.map +1 -1
  9. package/dist/command-summary.d.ts +8 -0
  10. package/dist/command-summary.d.ts.map +1 -0
  11. package/dist/command-summary.js +33 -0
  12. package/dist/command-summary.js.map +1 -0
  13. package/dist/continuation-admission.d.ts +41 -0
  14. package/dist/continuation-admission.d.ts.map +1 -0
  15. package/dist/continuation-admission.js +136 -0
  16. package/dist/continuation-admission.js.map +1 -0
  17. package/dist/control-operation-responses.d.ts +357 -0
  18. package/dist/control-operation-responses.d.ts.map +1 -1
  19. package/dist/control-operation-responses.js +2 -0
  20. package/dist/control-operation-responses.js.map +1 -1
  21. package/dist/control-run-detail.d.ts +726 -0
  22. package/dist/control-run-detail.d.ts.map +1 -1
  23. package/dist/control-run-execution.js +1 -1
  24. package/dist/control-run-execution.js.map +1 -1
  25. package/dist/control-thread-requests.d.ts +17 -3
  26. package/dist/control-thread-requests.d.ts.map +1 -1
  27. package/dist/control-thread-requests.js +24 -1
  28. package/dist/control-thread-requests.js.map +1 -1
  29. package/dist/control.d.ts +347 -22
  30. package/dist/control.d.ts.map +1 -1
  31. package/dist/control.js +32 -4
  32. package/dist/control.js.map +1 -1
  33. package/dist/credential-profile-snapshot.d.ts +144 -0
  34. package/dist/credential-profile-snapshot.d.ts.map +1 -1
  35. package/dist/credential-profile.d.ts +1 -1
  36. package/dist/credential-profile.js +1 -1
  37. package/dist/daemon-status.d.ts +177 -0
  38. package/dist/daemon-status.d.ts.map +1 -0
  39. package/dist/daemon-status.js +27 -0
  40. package/dist/daemon-status.js.map +1 -0
  41. package/dist/decision.d.ts +12 -0
  42. package/dist/decision.d.ts.map +1 -1
  43. package/dist/effort.d.ts +33 -12
  44. package/dist/effort.d.ts.map +1 -1
  45. package/dist/effort.js +43 -13
  46. package/dist/effort.js.map +1 -1
  47. package/dist/events.d.ts +4 -4
  48. package/dist/events.d.ts.map +1 -1
  49. package/dist/events.js +11 -0
  50. package/dist/events.js.map +1 -1
  51. package/dist/harness.d.ts +16 -9
  52. package/dist/harness.d.ts.map +1 -1
  53. package/dist/harness.js +3 -3
  54. package/dist/index.d.ts +6 -0
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +6 -0
  57. package/dist/index.js.map +1 -1
  58. package/dist/mcp-run-result.d.ts +155 -0
  59. package/dist/mcp-run-result.d.ts.map +1 -1
  60. package/dist/mcp-run-result.js +38 -0
  61. package/dist/mcp-run-result.js.map +1 -1
  62. package/dist/project.d.ts +2 -2
  63. package/dist/project.d.ts.map +1 -1
  64. package/dist/project.js +3 -3
  65. package/dist/project.js.map +1 -1
  66. package/dist/quota.d.ts +252 -0
  67. package/dist/quota.d.ts.map +1 -1
  68. package/dist/quota.js +42 -17
  69. package/dist/quota.js.map +1 -1
  70. package/dist/raw.d.ts +1 -1
  71. package/dist/raw.d.ts.map +1 -1
  72. package/dist/raw.js +0 -1
  73. package/dist/raw.js.map +1 -1
  74. package/dist/run-continuation.d.ts +166 -0
  75. package/dist/run-continuation.d.ts.map +1 -0
  76. package/dist/run-continuation.js +65 -0
  77. package/dist/run-continuation.js.map +1 -0
  78. package/dist/run-continuity.d.ts +215 -0
  79. package/dist/run-continuity.d.ts.map +1 -0
  80. package/dist/run-continuity.js +170 -0
  81. package/dist/run-continuity.js.map +1 -0
  82. package/dist/run-facts.d.ts +7 -0
  83. package/dist/run-facts.d.ts.map +1 -1
  84. package/dist/run-list-page.d.ts +74 -0
  85. package/dist/run-list-page.d.ts.map +1 -0
  86. package/dist/run-list-page.js +85 -0
  87. package/dist/run-list-page.js.map +1 -0
  88. package/dist/run-strategy.d.ts +18 -0
  89. package/dist/run-strategy.d.ts.map +1 -1
  90. package/dist/run-strategy.js +15 -0
  91. package/dist/run-strategy.js.map +1 -1
  92. package/dist/status-projection.d.ts +8 -1
  93. package/dist/status-projection.d.ts.map +1 -1
  94. package/dist/status-projection.js +22 -1
  95. package/dist/status-projection.js.map +1 -1
  96. package/dist/telemetry.d.ts +33 -3
  97. package/dist/telemetry.d.ts.map +1 -1
  98. package/dist/telemetry.js +3 -3
  99. package/dist/telemetry.js.map +1 -1
  100. package/dist/thread.d.ts +24 -10
  101. package/dist/thread.d.ts.map +1 -1
  102. package/dist/thread.js +14 -4
  103. package/dist/thread.js.map +1 -1
  104. package/dist/work-report.d.ts +18 -4
  105. package/dist/work-report.d.ts.map +1 -1
  106. package/dist/work-report.js +26 -5
  107. package/dist/work-report.js.map +1 -1
  108. package/generated/AgentCapabilityCatalog.schema.json +5 -4
  109. package/generated/CommandListQuery.schema.json +204 -0
  110. package/generated/ControlCredentialProfilesQueryResponse.schema.json +21 -6
  111. package/generated/ControlCredentialProfilesSnapshotResponse.schema.json +21 -6
  112. package/generated/ControlDaemonStatus.schema.json +150 -0
  113. package/generated/ControlHarnessListResponse.schema.json +1 -1
  114. package/generated/ControlHarnessSettingsPatch.schema.json +1 -1
  115. package/generated/ControlProjectRemoveReceipt.schema.json +1 -1
  116. package/generated/ControlQuotaResponse.schema.json +20 -5
  117. package/generated/ControlRetainedEnvelope.schema.json +63 -0
  118. package/generated/ControlRunAgainDraft.schema.json +17 -1
  119. package/generated/ControlRunDetail.schema.json +406 -1
  120. package/generated/ControlRunListResponse.schema.json +406 -1
  121. package/generated/ControlRunStartRequest.schema.json +17 -1
  122. package/generated/ControlRunSummary.schema.json +406 -1
  123. package/generated/ControlSettingsSnapshot.schema.json +1 -1
  124. package/generated/ControlSettingsUpdateRequest.schema.json +1 -1
  125. package/generated/ControlThread.schema.json +11 -2
  126. package/generated/ControlThreadCreateRequest.schema.json +7 -2
  127. package/generated/ControlThreadDetail.schema.json +25 -3
  128. package/generated/ControlThreadListResponse.schema.json +11 -2
  129. package/generated/ControlThreadTurnRequest.schema.json +4 -0
  130. package/generated/DecisionRecord.schema.json +14 -1
  131. package/generated/EnvelopeCustody.schema.json +195 -0
  132. package/generated/GlobalConfig.schema.json +1 -1
  133. package/generated/HarnessEvent.schema.json +7 -2
  134. package/generated/HarnessManifest.schema.json +1 -1
  135. package/generated/HarnessStatusDto.schema.json +1 -1
  136. package/generated/McpRunHandleResult.schema.json +109 -1
  137. package/generated/McpRunToolResult.schema.json +14 -1
  138. package/generated/RunContinuityReceipt.schema.json +182 -0
  139. package/generated/RunEvent.schema.json +3 -1
  140. package/generated/RunFacts.schema.json +14 -1
  141. package/generated/RunListQuery.schema.json +66 -0
  142. package/generated/RunResumable.schema.json +153 -0
  143. package/generated/RunTelemetry.schema.json +14 -1
  144. package/generated/SessionCapsule.schema.json +78 -0
  145. package/generated/TaskContract.schema.json +1 -1
  146. package/generated/Thread.schema.json +12 -3
  147. package/package.json +2 -2
@@ -93,6 +93,390 @@
93
93
  "description": "Durable Delegate requested/effective/used receipt projected from engine telemetry; null when legacy telemetry has no receipt.",
94
94
  "default": null
95
95
  },
96
+ "continueFrom": {
97
+ "anyOf": [
98
+ {
99
+ "$ref": "#/definitions/ControlRunSummary/properties/parentRunId/anyOf/0"
100
+ },
101
+ {
102
+ "type": "null"
103
+ }
104
+ ],
105
+ "description": "Predecessor run this run continues (continueFrom); null for ordinary runs.",
106
+ "default": null
107
+ },
108
+ "resumable": {
109
+ "anyOf": [
110
+ {
111
+ "type": "object",
112
+ "properties": {
113
+ "cause": {
114
+ "type": "string",
115
+ "enum": [
116
+ "vendor_limit",
117
+ "pool_exhausted",
118
+ "pinned_limit",
119
+ "transport",
120
+ "context_exhausted",
121
+ "wall_clock",
122
+ "cancelled",
123
+ "host_restart",
124
+ "input_required",
125
+ "other"
126
+ ],
127
+ "description": "Typed reason the previous process stopped: a vendor limit (next account eligible), the whole pool spent, a pinned account's limit, a transport death (crash, timeout, watchdog), context exhaustion, the wall-clock deadline, a cancel, a daemon/host restart, a model that asked for input, or another typed cause."
128
+ },
129
+ "resetsAt": {
130
+ "type": [
131
+ "string",
132
+ "null"
133
+ ],
134
+ "description": "When the spent vendor window reopens, only from a vendor signal; never fabricated."
135
+ },
136
+ "limitWindow": {
137
+ "type": [
138
+ "string",
139
+ "null"
140
+ ],
141
+ "description": "The vendor's own name for the spent window (e.g. five_hour, seven_day_opus), when known."
142
+ },
143
+ "limitEvidence": {
144
+ "anyOf": [
145
+ {
146
+ "type": "string",
147
+ "enum": [
148
+ "window",
149
+ "unspecified"
150
+ ],
151
+ "description": "window: the vendor named the spent window (a reset instant or a constraint id); unspecified: a typed limit without a window — a bare backoff frame is transport, not a limit."
152
+ },
153
+ {
154
+ "type": "null"
155
+ }
156
+ ],
157
+ "description": "window: the vendor named the spent window (a reset instant or a constraint id); unspecified: a typed limit without a window — a bare backoff frame is transport, not a limit."
158
+ },
159
+ "carriers": {
160
+ "type": "array",
161
+ "items": {
162
+ "type": "string",
163
+ "enum": [
164
+ "native",
165
+ "native_moved",
166
+ "packet"
167
+ ],
168
+ "description": "A continuity representation still available for a stopped run."
169
+ },
170
+ "description": "Continuity representations still available (NOT quota readiness; readiness is described by the limit facts)."
171
+ },
172
+ "limitCode": {
173
+ "type": [
174
+ "string",
175
+ "null"
176
+ ],
177
+ "description": "The typed vendor limit code that ended the work, when any."
178
+ },
179
+ "session": {
180
+ "anyOf": [
181
+ {
182
+ "type": "object",
183
+ "properties": {
184
+ "harness": {
185
+ "$ref": "#/definitions/ControlRunSummary/properties/parentRunId/anyOf/0"
186
+ },
187
+ "nativeSessionId": {
188
+ "type": "string",
189
+ "minLength": 1
190
+ },
191
+ "holderProfileId": {
192
+ "anyOf": [
193
+ {
194
+ "$ref": "#/definitions/ControlRunSummary/properties/parentRunId/anyOf/0"
195
+ },
196
+ {
197
+ "type": "null"
198
+ }
199
+ ],
200
+ "description": "Non-empty identifier string."
201
+ }
202
+ },
203
+ "required": [
204
+ "harness",
205
+ "nativeSessionId",
206
+ "holderProfileId"
207
+ ],
208
+ "additionalProperties": false
209
+ },
210
+ {
211
+ "type": "null"
212
+ }
213
+ ],
214
+ "description": "The native session a continuation can resume, when one exists."
215
+ },
216
+ "workspace": {
217
+ "type": "object",
218
+ "properties": {
219
+ "kind": {
220
+ "type": "string",
221
+ "enum": [
222
+ "in_place",
223
+ "retained_envelope",
224
+ "none"
225
+ ]
226
+ },
227
+ "root": {
228
+ "type": [
229
+ "string",
230
+ "null"
231
+ ]
232
+ }
233
+ },
234
+ "required": [
235
+ "kind",
236
+ "root"
237
+ ],
238
+ "additionalProperties": false,
239
+ "description": "Where the stopped work's tree is: the live root, a retained envelope, or gone."
240
+ }
241
+ },
242
+ "required": [
243
+ "cause",
244
+ "resetsAt",
245
+ "limitWindow",
246
+ "limitEvidence",
247
+ "carriers",
248
+ "limitCode",
249
+ "session",
250
+ "workspace"
251
+ ],
252
+ "additionalProperties": false,
253
+ "description": "Terminal facts of a stopped run that can be continued: cause, limit evidence, available carriers, the native session and the workspace."
254
+ },
255
+ {
256
+ "type": "null"
257
+ }
258
+ ],
259
+ "description": "Terminal facts of unfinished work that continueFrom can continue; null when the work finished or the run is not terminal.",
260
+ "default": null
261
+ },
262
+ "continuity": {
263
+ "type": "array",
264
+ "items": {
265
+ "type": "object",
266
+ "properties": {
267
+ "tryIndex": {
268
+ "type": "integer",
269
+ "minimum": 0,
270
+ "description": "Native try within the attempt; joins the receipt to its try."
271
+ },
272
+ "attemptId": {
273
+ "$ref": "#/definitions/ControlRunSummary/properties/parentRunId/anyOf/0"
274
+ },
275
+ "carrier": {
276
+ "type": "string",
277
+ "enum": [
278
+ "native",
279
+ "native_moved",
280
+ "packet",
281
+ "fresh"
282
+ ],
283
+ "description": "Carrier of a continued try: native (the vendor's own session, same account), native_moved (the session file made visible in the next account's store, then resumed there), packet (a fresh session re-grounded by an evidence index), or fresh (nothing to carry — a replay of the original prompt)."
284
+ },
285
+ "cause": {
286
+ "$ref": "#/definitions/ControlRunSummary/properties/resumable/anyOf/0/properties/cause"
287
+ },
288
+ "from": {
289
+ "type": "object",
290
+ "properties": {
291
+ "runId": {
292
+ "$ref": "#/definitions/ControlRunSummary/properties/parentRunId/anyOf/0"
293
+ },
294
+ "attemptId": {
295
+ "$ref": "#/definitions/ControlRunSummary/properties/parentRunId/anyOf/0"
296
+ },
297
+ "profileId": {
298
+ "anyOf": [
299
+ {
300
+ "$ref": "#/definitions/ControlRunSummary/properties/parentRunId/anyOf/0"
301
+ },
302
+ {
303
+ "type": "null"
304
+ }
305
+ ],
306
+ "description": "Non-empty identifier string."
307
+ }
308
+ },
309
+ "required": [
310
+ "runId",
311
+ "attemptId",
312
+ "profileId"
313
+ ],
314
+ "additionalProperties": false
315
+ },
316
+ "to": {
317
+ "type": "object",
318
+ "properties": {
319
+ "profileId": {
320
+ "anyOf": [
321
+ {
322
+ "$ref": "#/definitions/ControlRunSummary/properties/parentRunId/anyOf/0"
323
+ },
324
+ {
325
+ "type": "null"
326
+ }
327
+ ],
328
+ "description": "Non-empty identifier string."
329
+ }
330
+ },
331
+ "required": [
332
+ "profileId"
333
+ ],
334
+ "additionalProperties": false
335
+ },
336
+ "workspace": {
337
+ "type": "string",
338
+ "enum": [
339
+ "same_root",
340
+ "different_root"
341
+ ],
342
+ "description": "Whether the continued try runs in the predecessor's execution root."
343
+ },
344
+ "memory": {
345
+ "type": "string",
346
+ "enum": [
347
+ "full",
348
+ "partial",
349
+ "unknown"
350
+ ],
351
+ "description": "Its own fact: a native resume carries the whole history (full); a packet re-brief is partial; a native resume that lost history (e.g. a rejected compacted item) is partial/unknown."
352
+ },
353
+ "instructions": {
354
+ "type": "string",
355
+ "enum": [
356
+ "as_sent",
357
+ "vendor_snapshot"
358
+ ],
359
+ "description": "as_sent: the successor's instructions equal the predecessor's; vendor_snapshot: they differ, and the vendor may resend its recorded system prompt instead (claude records it on the first request)."
360
+ },
361
+ "reingestedTokens": {
362
+ "anyOf": [
363
+ {
364
+ "type": "integer",
365
+ "minimum": 0
366
+ },
367
+ {
368
+ "type": "null"
369
+ }
370
+ ],
371
+ "description": "Input + cache-creation tokens of the first resumed request, when known."
372
+ },
373
+ "observedModel": {
374
+ "type": [
375
+ "string",
376
+ "null"
377
+ ],
378
+ "description": "THIS try's attested model (never borrowed from another try)."
379
+ },
380
+ "modelMismatch": {
381
+ "type": [
382
+ "boolean",
383
+ "null"
384
+ ]
385
+ },
386
+ "identityCheck": {
387
+ "type": "string",
388
+ "enum": [
389
+ "matched_before_effects",
390
+ "mismatch_before_effects",
391
+ "mismatch_after_possible_effects",
392
+ "not_applicable"
393
+ ],
394
+ "description": "Whether the resumed vendor session was the one requested, judged at the earliest handshake (codex thread/resume before turn/start; claude system/init): matched, mismatch caught before the child could act, mismatch caught after it may have acted, or not applicable (no resume was requested, or a harness without the continuity capability answered with another session id, which is recorded as before)."
395
+ },
396
+ "inputDelivery": {
397
+ "type": "string",
398
+ "enum": [
399
+ "confirmed",
400
+ "uncertain",
401
+ "not_applicable"
402
+ ],
403
+ "description": "Whether the predecessor's last input (its turn prompt or an admitted steering message) is known to be in the vendor history: confirmed, uncertain (carried in the notice as a reference to reconcile, never replayed blindly), or not applicable."
404
+ }
405
+ },
406
+ "required": [
407
+ "tryIndex",
408
+ "attemptId",
409
+ "carrier",
410
+ "cause",
411
+ "from",
412
+ "to",
413
+ "workspace",
414
+ "memory",
415
+ "instructions",
416
+ "reingestedTokens",
417
+ "observedModel",
418
+ "modelMismatch",
419
+ "identityCheck",
420
+ "inputDelivery"
421
+ ],
422
+ "additionalProperties": false,
423
+ "description": "Receipt of one continued try: carrier, cause, accounts, memory, model attestation."
424
+ },
425
+ "description": "One receipt per continued try (carrier, cause, accounts, memory, model), from the run's event log: projected on run detail (GET /runs/:id), omitted from list rows."
426
+ },
427
+ "retainedEnvelope": {
428
+ "anyOf": [
429
+ {
430
+ "type": "object",
431
+ "properties": {
432
+ "root": {
433
+ "type": "string",
434
+ "description": "Absolute path of the kept working tree."
435
+ },
436
+ "bytes": {
437
+ "anyOf": [
438
+ {
439
+ "type": "integer",
440
+ "minimum": 0
441
+ },
442
+ {
443
+ "type": "null"
444
+ }
445
+ ],
446
+ "description": "Disk use of the kept envelope (tree + scoped home); null when not measured."
447
+ },
448
+ "retainedAt": {
449
+ "type": "string",
450
+ "description": "When the envelope was kept."
451
+ },
452
+ "cause": {
453
+ "anyOf": [
454
+ {
455
+ "$ref": "#/definitions/ControlRunSummary/properties/resumable/anyOf/0/properties/cause"
456
+ },
457
+ {
458
+ "type": "null"
459
+ }
460
+ ],
461
+ "description": "Why the run stopped, when recorded."
462
+ }
463
+ },
464
+ "required": [
465
+ "root",
466
+ "bytes",
467
+ "retainedAt",
468
+ "cause"
469
+ ],
470
+ "additionalProperties": false,
471
+ "description": "An isolated envelope kept for continuation: continue it with continueFrom, or release it with the discard decision."
472
+ },
473
+ {
474
+ "type": "null"
475
+ }
476
+ ],
477
+ "description": "Isolated envelope kept for continuation (disk use visible); null when none.",
478
+ "default": null
479
+ },
96
480
  "taskId": {
97
481
  "type": "string",
98
482
  "description": "Task id, when allocated."
@@ -470,6 +854,14 @@
470
854
  "description": "Project metadata projected onto a run summary.",
471
855
  "default": {}
472
856
  },
857
+ "executionRoot": {
858
+ "type": [
859
+ "string",
860
+ "null"
861
+ ],
862
+ "default": null,
863
+ "description": "Tree this run's file references resolve in: a delegated run's recorded execution.workspaceRoot, otherwise project.root; null without a project. The stable identity stays project.root."
864
+ },
473
865
  "mode": {
474
866
  "type": "string",
475
867
  "enum": [
@@ -1274,7 +1666,7 @@
1274
1666
  "incomplete",
1275
1667
  "unverified"
1276
1668
  ],
1277
- "description": "Folded work state: the WorkReport state, or unverified when no report was obtainable (transport unsupported / lane gated)."
1669
+ "description": "Folded work state: the WorkReport state, or unverified when no valid report was obtained (transport unsupported / lane gated, or an instructed footer missing or broken)."
1278
1670
  },
1279
1671
  "source": {
1280
1672
  "type": "string",
@@ -1330,6 +1722,19 @@
1330
1722
  },
1331
1723
  "maxItems": 16,
1332
1724
  "description": "Carried through from a needs_input/incomplete WorkReport for honest disclosure."
1725
+ },
1726
+ "unverified_reason": {
1727
+ "type": "string",
1728
+ "enum": [
1729
+ "footer_missing",
1730
+ "footer_not_json",
1731
+ "footer_not_object",
1732
+ "report_missing",
1733
+ "report_malformed",
1734
+ "report_contradictory",
1735
+ "legacy_output_invalid"
1736
+ ],
1737
+ "description": "Present only with state unverified on a validated (instructed footer) source: the disclosed cause of the missing report."
1333
1738
  }
1334
1739
  },
1335
1740
  "required": [
@@ -108,7 +108,7 @@
108
108
  "minLength": 1,
109
109
  "maxLength": 32,
110
110
  "pattern": "^[a-z0-9]+(?:[_-][a-z0-9]+)*$",
111
- "description": "Cross-harness reasoning-effort level as a lowercase slug (open vocabulary, mirroring the vendor contract); adapters advertise the levels they accept per model, ordered weakest to strongest by the vendor itself, and a shared normalizer passes advertised levels through, clamps inside the vendor order, and refuses levels the advertised ladder has never seen."
111
+ "description": "Cross-harness reasoning-effort level as a lowercase slug (open vocabulary, mirroring the vendor contract); adapters advertise the levels they accept per model, ordered weakest to strongest by the vendor itself, and a shared normalizer passes advertised levels through, clamps inside the vendor order, places a word the vendor order lacks by the shared preference order (none < minimal < low < medium < high < xhigh < max < ultra) onto an advertised level, and refuses words neither order places."
112
112
  }
113
113
  },
114
114
  "required": [
@@ -45,7 +45,7 @@
45
45
  "minLength": 1,
46
46
  "maxLength": 32,
47
47
  "pattern": "^[a-z0-9]+(?:[_-][a-z0-9]+)*$",
48
- "description": "Cross-harness reasoning-effort level as a lowercase slug (open vocabulary, mirroring the vendor contract); adapters advertise the levels they accept per model, ordered weakest to strongest by the vendor itself, and a shared normalizer passes advertised levels through, clamps inside the vendor order, and refuses levels the advertised ladder has never seen."
48
+ "description": "Cross-harness reasoning-effort level as a lowercase slug (open vocabulary, mirroring the vendor contract); adapters advertise the levels they accept per model, ordered weakest to strongest by the vendor itself, and a shared normalizer passes advertised levels through, clamps inside the vendor order, places a word the vendor order lacks by the shared preference order (none < minimal < low < medium < high < xhigh < max < ultra) onto an advertised level, and refuses words neither order places."
49
49
  }
50
50
  },
51
51
  "required": [
@@ -53,11 +53,20 @@
53
53
  "type": "string",
54
54
  "enum": [
55
55
  "in_place",
56
- "isolated"
56
+ "isolated",
57
+ "delegated"
57
58
  ],
58
- "description": "Per-thread workspace mode: in_place mutates the live project tree directly (the default); isolated keeps a persistent git worktree per thread that apply merges into the project.",
59
+ "description": "Per-thread workspace mode: in_place mutates the live project tree directly (the default); isolated keeps a persistent git worktree per thread that apply merges into the project; delegated runs every turn in one caller-owned workspace bound at creation, which Claudexor never applies to the project or deletes.",
59
60
  "default": "in_place"
60
61
  },
62
+ "workspaceRoot": {
63
+ "type": [
64
+ "string",
65
+ "null"
66
+ ],
67
+ "default": null,
68
+ "description": "Caller-owned workspace a delegated thread executes in; null for in_place and isolated threads."
69
+ },
61
70
  "authPreference": {
62
71
  "type": "string",
63
72
  "enum": [
@@ -81,9 +81,14 @@
81
81
  "type": "string",
82
82
  "enum": [
83
83
  "in_place",
84
- "isolated"
84
+ "isolated",
85
+ "delegated"
85
86
  ],
86
- "description": "Workspace mode for the thread (in_place or isolated)."
87
+ "description": "Workspace mode for the thread (in_place, isolated, or delegated)."
88
+ },
89
+ "workspaceRoot": {
90
+ "type": "string",
91
+ "description": "Absolute existing caller-owned directory every turn of a workspace='delegated' thread executes in. Required exactly for that workspace, project scope only, and immutable after creation; scope.root stays the stable project identity."
87
92
  },
88
93
  "authPreference": {
89
94
  "type": "string",
@@ -56,11 +56,20 @@
56
56
  "type": "string",
57
57
  "enum": [
58
58
  "in_place",
59
- "isolated"
59
+ "isolated",
60
+ "delegated"
60
61
  ],
61
- "description": "Per-thread workspace mode: in_place mutates the live project tree directly (the default); isolated keeps a persistent git worktree per thread that apply merges into the project.",
62
+ "description": "Per-thread workspace mode: in_place mutates the live project tree directly (the default); isolated keeps a persistent git worktree per thread that apply merges into the project; delegated runs every turn in one caller-owned workspace bound at creation, which Claudexor never applies to the project or deletes.",
62
63
  "default": "in_place"
63
64
  },
65
+ "workspaceRoot": {
66
+ "type": [
67
+ "string",
68
+ "null"
69
+ ],
70
+ "default": null,
71
+ "description": "Caller-owned workspace a delegated thread executes in; null for in_place and isolated threads."
72
+ },
64
73
  "authPreference": {
65
74
  "type": "string",
66
75
  "enum": [
@@ -597,7 +606,7 @@
597
606
  "incomplete",
598
607
  "unverified"
599
608
  ],
600
- "description": "Folded work state: the WorkReport state, or unverified when no report was obtainable (transport unsupported / lane gated)."
609
+ "description": "Folded work state: the WorkReport state, or unverified when no valid report was obtained (transport unsupported / lane gated, or an instructed footer missing or broken)."
601
610
  },
602
611
  "source": {
603
612
  "type": "string",
@@ -653,6 +662,19 @@
653
662
  },
654
663
  "maxItems": 16,
655
664
  "description": "Carried through from a needs_input/incomplete WorkReport for honest disclosure."
665
+ },
666
+ "unverified_reason": {
667
+ "type": "string",
668
+ "enum": [
669
+ "footer_missing",
670
+ "footer_not_json",
671
+ "footer_not_object",
672
+ "report_missing",
673
+ "report_malformed",
674
+ "report_contradictory",
675
+ "legacy_output_invalid"
676
+ ],
677
+ "description": "Present only with state unverified on a validated (instructed footer) source: the disclosed cause of the missing report."
656
678
  }
657
679
  },
658
680
  "required": [
@@ -58,11 +58,20 @@
58
58
  "type": "string",
59
59
  "enum": [
60
60
  "in_place",
61
- "isolated"
61
+ "isolated",
62
+ "delegated"
62
63
  ],
63
- "description": "Per-thread workspace mode: in_place mutates the live project tree directly (the default); isolated keeps a persistent git worktree per thread that apply merges into the project.",
64
+ "description": "Per-thread workspace mode: in_place mutates the live project tree directly (the default); isolated keeps a persistent git worktree per thread that apply merges into the project; delegated runs every turn in one caller-owned workspace bound at creation, which Claudexor never applies to the project or deletes.",
64
65
  "default": "in_place"
65
66
  },
67
+ "workspaceRoot": {
68
+ "type": [
69
+ "string",
70
+ "null"
71
+ ],
72
+ "default": null,
73
+ "description": "Caller-owned workspace a delegated thread executes in; null for in_place and isolated threads."
74
+ },
66
75
  "authPreference": {
67
76
  "type": "string",
68
77
  "enum": [
@@ -320,6 +320,10 @@
320
320
  },
321
321
  "description": "Typed per-run approvals for changing auto-protected gate/test paths; does not bypass built-in critical/security path human gates."
322
322
  },
323
+ "continueModelInherited": {
324
+ "type": "boolean",
325
+ "description": "Internal continuation model provenance; direct POST /runs rejects it."
326
+ },
323
327
  "planRunId": {
324
328
  "type": "string",
325
329
  "minLength": 1,
@@ -107,7 +107,7 @@
107
107
  "incomplete",
108
108
  "unverified"
109
109
  ],
110
- "description": "Folded work state: the WorkReport state, or unverified when no report was obtainable (transport unsupported / lane gated)."
110
+ "description": "Folded work state: the WorkReport state, or unverified when no valid report was obtained (transport unsupported / lane gated, or an instructed footer missing or broken)."
111
111
  },
112
112
  "source": {
113
113
  "type": "string",
@@ -163,6 +163,19 @@
163
163
  },
164
164
  "maxItems": 16,
165
165
  "description": "Carried through from a needs_input/incomplete WorkReport for honest disclosure."
166
+ },
167
+ "unverified_reason": {
168
+ "type": "string",
169
+ "enum": [
170
+ "footer_missing",
171
+ "footer_not_json",
172
+ "footer_not_object",
173
+ "report_missing",
174
+ "report_malformed",
175
+ "report_contradictory",
176
+ "legacy_output_invalid"
177
+ ],
178
+ "description": "Present only with state unverified on a validated (instructed footer) source: the disclosed cause of the missing report."
166
179
  }
167
180
  },
168
181
  "required": [