@claudexor/schema 1.0.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 (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +16 -0
  3. package/dist/agent-capabilities.d.ts +366 -0
  4. package/dist/agent-capabilities.d.ts.map +1 -0
  5. package/dist/agent-capabilities.js +125 -0
  6. package/dist/agent-capabilities.js.map +1 -0
  7. package/dist/apply-eligibility.d.ts +76 -0
  8. package/dist/apply-eligibility.d.ts.map +1 -0
  9. package/dist/apply-eligibility.js +37 -0
  10. package/dist/apply-eligibility.js.map +1 -0
  11. package/dist/attachment.d.ts +69 -0
  12. package/dist/attachment.d.ts.map +1 -0
  13. package/dist/attachment.js +54 -0
  14. package/dist/attachment.js.map +1 -0
  15. package/dist/budget.d.ts +75 -0
  16. package/dist/budget.d.ts.map +1 -0
  17. package/dist/budget.js +54 -0
  18. package/dist/budget.js.map +1 -0
  19. package/dist/config.d.ts +743 -0
  20. package/dist/config.d.ts.map +1 -0
  21. package/dist/config.js +194 -0
  22. package/dist/config.js.map +1 -0
  23. package/dist/context.d.ts +222 -0
  24. package/dist/context.d.ts.map +1 -0
  25. package/dist/context.js +70 -0
  26. package/dist/context.js.map +1 -0
  27. package/dist/control-run-detail.d.ts +1686 -0
  28. package/dist/control-run-detail.d.ts.map +1 -0
  29. package/dist/control-run-detail.js +107 -0
  30. package/dist/control-run-detail.js.map +1 -0
  31. package/dist/control-trust.d.ts +79 -0
  32. package/dist/control-trust.d.ts.map +1 -0
  33. package/dist/control-trust.js +39 -0
  34. package/dist/control-trust.js.map +1 -0
  35. package/dist/control.d.ts +4226 -0
  36. package/dist/control.d.ts.map +1 -0
  37. package/dist/control.js +1022 -0
  38. package/dist/control.js.map +1 -0
  39. package/dist/decision.d.ts +208 -0
  40. package/dist/decision.d.ts.map +1 -0
  41. package/dist/decision.js +98 -0
  42. package/dist/decision.js.map +1 -0
  43. package/dist/events.d.ts +70 -0
  44. package/dist/events.d.ts.map +1 -0
  45. package/dist/events.js +105 -0
  46. package/dist/events.js.map +1 -0
  47. package/dist/gate.d.ts +37 -0
  48. package/dist/gate.d.ts.map +1 -0
  49. package/dist/gate.js +20 -0
  50. package/dist/gate.js.map +1 -0
  51. package/dist/harness.d.ts +1418 -0
  52. package/dist/harness.d.ts.map +1 -0
  53. package/dist/harness.js +552 -0
  54. package/dist/harness.js.map +1 -0
  55. package/dist/index.d.ts +32 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +32 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/orchestrate.d.ts +428 -0
  60. package/dist/orchestrate.d.ts.map +1 -0
  61. package/dist/orchestrate.js +246 -0
  62. package/dist/orchestrate.js.map +1 -0
  63. package/dist/primitives.d.ts +71 -0
  64. package/dist/primitives.d.ts.map +1 -0
  65. package/dist/primitives.js +114 -0
  66. package/dist/primitives.js.map +1 -0
  67. package/dist/review.d.ts +220 -0
  68. package/dist/review.d.ts.map +1 -0
  69. package/dist/review.js +91 -0
  70. package/dist/review.js.map +1 -0
  71. package/dist/route.d.ts +67 -0
  72. package/dist/route.d.ts.map +1 -0
  73. package/dist/route.js +33 -0
  74. package/dist/route.js.map +1 -0
  75. package/dist/spec.d.ts +561 -0
  76. package/dist/spec.d.ts.map +1 -0
  77. package/dist/spec.js +133 -0
  78. package/dist/spec.js.map +1 -0
  79. package/dist/surface-run-controls.d.ts +14 -0
  80. package/dist/surface-run-controls.d.ts.map +1 -0
  81. package/dist/surface-run-controls.js +142 -0
  82. package/dist/surface-run-controls.js.map +1 -0
  83. package/dist/task.d.ts +565 -0
  84. package/dist/task.d.ts.map +1 -0
  85. package/dist/task.js +186 -0
  86. package/dist/task.js.map +1 -0
  87. package/dist/telemetry.d.ts +660 -0
  88. package/dist/telemetry.d.ts.map +1 -0
  89. package/dist/telemetry.js +140 -0
  90. package/dist/telemetry.js.map +1 -0
  91. package/dist/thread.d.ts +348 -0
  92. package/dist/thread.d.ts.map +1 -0
  93. package/dist/thread.js +194 -0
  94. package/dist/thread.js.map +1 -0
  95. package/dist/workproduct.d.ts +31 -0
  96. package/dist/workproduct.d.ts.map +1 -0
  97. package/dist/workproduct.js +25 -0
  98. package/dist/workproduct.js.map +1 -0
  99. package/dist/workspace.d.ts +53 -0
  100. package/dist/workspace.d.ts.map +1 -0
  101. package/dist/workspace.js +30 -0
  102. package/dist/workspace.js.map +1 -0
  103. package/generated/AgentCapabilityCatalog.schema.json +389 -0
  104. package/generated/ApplyEligibility.schema.json +44 -0
  105. package/generated/BudgetLease.schema.json +95 -0
  106. package/generated/BudgetObservation.schema.json +76 -0
  107. package/generated/ConformanceReport.schema.json +107 -0
  108. package/generated/ContextPack.schema.json +186 -0
  109. package/generated/ControlApplyCheckRequest.schema.json +54 -0
  110. package/generated/ControlApplyRequest.schema.json +74 -0
  111. package/generated/ControlHarnessListResponse.schema.json +498 -0
  112. package/generated/ControlHarnessModelsResponse.schema.json +78 -0
  113. package/generated/ControlHarnessSettingsPatch.schema.json +130 -0
  114. package/generated/ControlInteractionAnswerRequest.schema.json +48 -0
  115. package/generated/ControlInteractionAnswerResponse.schema.json +35 -0
  116. package/generated/ControlPendingInteraction.schema.json +129 -0
  117. package/generated/ControlQueuedRunInfo.schema.json +44 -0
  118. package/generated/ControlRunControlRequest.schema.json +61 -0
  119. package/generated/ControlRunControlResponse.schema.json +40 -0
  120. package/generated/ControlRunDecisionRequest.schema.json +98 -0
  121. package/generated/ControlRunDecisionResponse.schema.json +40 -0
  122. package/generated/ControlRunDetail.schema.json +1925 -0
  123. package/generated/ControlRunStartInfo.schema.json +33 -0
  124. package/generated/ControlRunStartRequest.schema.json +429 -0
  125. package/generated/ControlRunSummary.schema.json +666 -0
  126. package/generated/ControlSecretListResponse.schema.json +57 -0
  127. package/generated/ControlSettingsSnapshot.schema.json +281 -0
  128. package/generated/ControlSettingsUpdateRequest.schema.json +212 -0
  129. package/generated/ControlSetupJob.schema.json +148 -0
  130. package/generated/ControlSetupJobConfirmRequest.schema.json +18 -0
  131. package/generated/ControlSetupJobCreateRequest.schema.json +38 -0
  132. package/generated/ControlSetupJobEvent.schema.json +58 -0
  133. package/generated/ControlSetupJobListResponse.schema.json +162 -0
  134. package/generated/ControlSpecFreezeRequest.schema.json +83 -0
  135. package/generated/ControlSpecQuestionsRequest.schema.json +80 -0
  136. package/generated/ControlThread.schema.json +129 -0
  137. package/generated/ControlThreadApplyRequest.schema.json +32 -0
  138. package/generated/ControlThreadApplyResponse.schema.json +47 -0
  139. package/generated/ControlThreadCreateRequest.schema.json +107 -0
  140. package/generated/ControlThreadDetail.schema.json +515 -0
  141. package/generated/ControlThreadListResponse.schema.json +141 -0
  142. package/generated/ControlThreadUpdateRequest.schema.json +46 -0
  143. package/generated/ControlTrustListResponse.schema.json +59 -0
  144. package/generated/ControlTrustState.schema.json +45 -0
  145. package/generated/ControlTrustUpdateRequest.schema.json +26 -0
  146. package/generated/DecisionRecord.schema.json +232 -0
  147. package/generated/GateResult.schema.json +81 -0
  148. package/generated/GlobalConfig.schema.json +313 -0
  149. package/generated/HarnessEvent.schema.json +360 -0
  150. package/generated/HarnessManifest.schema.json +350 -0
  151. package/generated/HarnessModel.schema.json +41 -0
  152. package/generated/HarnessStatusDto.schema.json +486 -0
  153. package/generated/McpRunToolResult.schema.json +91 -0
  154. package/generated/OrchestrateContract.schema.json +93 -0
  155. package/generated/OrchestratePlan.schema.json +244 -0
  156. package/generated/OrchestratePlanProgress.schema.json +103 -0
  157. package/generated/ProjectConfig.schema.json +95 -0
  158. package/generated/ReviewFinding.schema.json +226 -0
  159. package/generated/RouteFallbackPayload.schema.json +79 -0
  160. package/generated/RouteProof.schema.json +111 -0
  161. package/generated/RunControl.schema.json +51 -0
  162. package/generated/RunEvent.schema.json +103 -0
  163. package/generated/RunFailure.schema.json +98 -0
  164. package/generated/RunTelemetry.schema.json +433 -0
  165. package/generated/SecretMetadata.schema.json +34 -0
  166. package/generated/Session.schema.json +80 -0
  167. package/generated/SessionReboundLineage.schema.json +73 -0
  168. package/generated/SpecPack.schema.json +372 -0
  169. package/generated/TaskContract.schema.json +501 -0
  170. package/generated/Thread.schema.json +176 -0
  171. package/generated/ThreadTurn.schema.json +172 -0
  172. package/generated/TrustConfig.schema.json +44 -0
  173. package/generated/WorkProduct.schema.json +60 -0
  174. package/generated/WorkspaceEnvelope.schema.json +94 -0
  175. package/package.json +43 -0
@@ -0,0 +1,486 @@
1
+ {
2
+ "$ref": "#/definitions/HarnessStatusDto",
3
+ "definitions": {
4
+ "HarnessStatusDto": {
5
+ "type": "object",
6
+ "properties": {
7
+ "id": {
8
+ "type": "string",
9
+ "description": "Harness id."
10
+ },
11
+ "status": {
12
+ "type": "string",
13
+ "enum": [
14
+ "ok",
15
+ "degraded",
16
+ "unavailable"
17
+ ],
18
+ "description": "Doctor verdict for a harness: ok (usable), degraded (usable with limitations), or unavailable."
19
+ },
20
+ "manifest": {
21
+ "anyOf": [
22
+ {
23
+ "type": "object",
24
+ "properties": {
25
+ "id": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "description": "Harness id (codex, claude, cursor, opencode, raw-api, ...)."
29
+ },
30
+ "display_name": {
31
+ "type": "string",
32
+ "description": "Human display name of the harness."
33
+ },
34
+ "kind": {
35
+ "type": "string",
36
+ "enum": [
37
+ "local_cli",
38
+ "remote_api",
39
+ "fake"
40
+ ],
41
+ "description": "Kind of harness adapter: a local vendor CLI, a remote API, or a fake used for tests."
42
+ },
43
+ "version": {
44
+ "type": "string",
45
+ "description": "Vendor CLI/API version, when discovered."
46
+ },
47
+ "adapter_version": {
48
+ "type": "string",
49
+ "description": "Version of the Claudexor adapter itself."
50
+ },
51
+ "provider_family": {
52
+ "type": "string",
53
+ "enum": [
54
+ "openai",
55
+ "anthropic",
56
+ "google",
57
+ "cursor",
58
+ "opencode",
59
+ "xai",
60
+ "local",
61
+ "unknown"
62
+ ],
63
+ "description": "Vendor/provider family a harness routes to, used for route-diversity reasoning; open-ended via \"unknown\".",
64
+ "default": "unknown"
65
+ },
66
+ "capability_profile": {
67
+ "type": "object",
68
+ "properties": {
69
+ "auth": {
70
+ "type": "object",
71
+ "properties": {
72
+ "supported_sources": {
73
+ "type": "array",
74
+ "items": {
75
+ "type": "string",
76
+ "enum": [
77
+ "native_session",
78
+ "api_key_env",
79
+ "api_key_flag",
80
+ "provider_auth_file",
81
+ "none"
82
+ ],
83
+ "description": "Where a harness's credentials can come from: a native login session, an API key via env var or CLI flag, a provider auth file, or none."
84
+ },
85
+ "default": [],
86
+ "description": "Auth sources this harness supports."
87
+ },
88
+ "preferred_source": {
89
+ "anyOf": [
90
+ {
91
+ "$ref": "#/definitions/HarnessStatusDto/properties/manifest/anyOf/0/properties/capability_profile/properties/auth/properties/supported_sources/items"
92
+ },
93
+ {
94
+ "type": "null"
95
+ }
96
+ ],
97
+ "description": "Auth source the adapter prefers; null when it has no preference.",
98
+ "default": null
99
+ },
100
+ "credential_transports": {
101
+ "type": "array",
102
+ "items": {
103
+ "type": "object",
104
+ "properties": {
105
+ "source": {
106
+ "$ref": "#/definitions/HarnessStatusDto/properties/manifest/anyOf/0/properties/capability_profile/properties/auth/properties/supported_sources/items"
107
+ },
108
+ "kind": {
109
+ "type": "string",
110
+ "enum": [
111
+ "config_file",
112
+ "env_var",
113
+ "oauth_token_env",
114
+ "os_keychain",
115
+ "http_header",
116
+ "none"
117
+ ],
118
+ "description": "Mechanism that carries a credential to the harness process (config file, env var, OAuth token env, OS keychain, HTTP header, or none)."
119
+ },
120
+ "relocatable_by": {
121
+ "type": "array",
122
+ "items": {
123
+ "type": "string",
124
+ "enum": [
125
+ "HOME",
126
+ "CONFIG_DIR",
127
+ "ENV",
128
+ "none"
129
+ ],
130
+ "description": "Which relocation lever moves the credential into a scoped environment (HOME, a config dir override, env injection, or none)."
131
+ },
132
+ "default": [],
133
+ "description": "Relocation levers that can move this transport into a scoped environment."
134
+ }
135
+ },
136
+ "required": [
137
+ "source",
138
+ "kind"
139
+ ],
140
+ "additionalProperties": false,
141
+ "description": "How a credential from one auth source physically reaches the harness process."
142
+ },
143
+ "default": [],
144
+ "description": "Declared credential transports per auth source."
145
+ }
146
+ },
147
+ "additionalProperties": false,
148
+ "default": {},
149
+ "description": "Declared auth routing facts for a harness."
150
+ },
151
+ "access_control": {
152
+ "type": "object",
153
+ "properties": {
154
+ "readonly_mechanism": {
155
+ "type": "string",
156
+ "enum": [
157
+ "fs_sandbox",
158
+ "permission_deny",
159
+ "tool_allowlist",
160
+ "none"
161
+ ],
162
+ "description": "How read-only access is enforced for a harness: a filesystem sandbox, permission denial, a tool allowlist, or none (read-only intent is advisory).",
163
+ "default": "none"
164
+ }
165
+ },
166
+ "additionalProperties": false,
167
+ "default": {},
168
+ "description": "Declared access-control facts for a harness."
169
+ },
170
+ "isolation": {
171
+ "type": "object",
172
+ "properties": {
173
+ "supported_containment": {
174
+ "type": "array",
175
+ "items": {
176
+ "type": "string",
177
+ "enum": [
178
+ "env_or_file_injection",
179
+ "scoped_home_keychain_bridge",
180
+ "host_user_context",
181
+ "process_sandbox",
182
+ "container"
183
+ ],
184
+ "description": "Isolation containment level an adapter supports for run environments, from env/file injection through scoped-HOME keychain bridging to process sandboxes and containers."
185
+ },
186
+ "default": [
187
+ "env_or_file_injection"
188
+ ],
189
+ "description": "Containment mechanisms the adapter can run under."
190
+ }
191
+ },
192
+ "additionalProperties": false,
193
+ "default": {},
194
+ "description": "Declared isolation containment facts for a harness."
195
+ },
196
+ "image_input": {
197
+ "type": "string",
198
+ "enum": [
199
+ "file_path",
200
+ "base64_stream",
201
+ "base64_inline",
202
+ "none"
203
+ ],
204
+ "description": "How a harness accepts image input: file_path (CLI file argument), base64_stream (base64 image block on the stream), base64_inline (data-URL in the request), or none (no vision input on this route).",
205
+ "default": "none"
206
+ }
207
+ },
208
+ "additionalProperties": false,
209
+ "default": {},
210
+ "description": "Structured per-harness facts the engine consumes: auth routing, isolation containment, readonly mechanism, and vision input."
211
+ },
212
+ "capabilities": {
213
+ "type": "object",
214
+ "properties": {
215
+ "plan": {
216
+ "type": "boolean",
217
+ "default": false,
218
+ "description": "The harness can produce plans (plan intent)."
219
+ },
220
+ "implement": {
221
+ "type": "boolean",
222
+ "default": false,
223
+ "description": "The harness can implement code changes (implement intent)."
224
+ },
225
+ "create_from_scratch": {
226
+ "type": "boolean",
227
+ "default": false,
228
+ "description": "The harness can scaffold new projects (create_from_scratch intent)."
229
+ },
230
+ "review": {
231
+ "type": "boolean",
232
+ "default": false,
233
+ "description": "The harness can act as a reviewer (review intent)."
234
+ },
235
+ "verify": {
236
+ "type": "boolean",
237
+ "default": false,
238
+ "description": "The harness can act as the FinalVerifier (verify intent)."
239
+ },
240
+ "synthesize": {
241
+ "type": "boolean",
242
+ "default": false,
243
+ "description": "The harness can synthesize across candidate outputs (synthesize intent)."
244
+ },
245
+ "read_files": {
246
+ "type": "boolean",
247
+ "default": false,
248
+ "description": "The harness can read project files."
249
+ },
250
+ "browser_tool": {
251
+ "type": "boolean",
252
+ "default": false,
253
+ "description": "The adapter can inject a browser-automation MCP server (Playwright MCP) the harness drives as browser_* tools; never injected when web policy is off."
254
+ },
255
+ "web_policy": {
256
+ "type": "string",
257
+ "enum": [
258
+ "native",
259
+ "tools",
260
+ "uncontrolled",
261
+ "none"
262
+ ],
263
+ "description": "How a harness can honor the external web policy: native (a native config surface), tools (permissioned tools the adapter can allow/deny), uncontrolled (can reach the web but exposes no enforceable switch), or none (no web access at all).",
264
+ "default": "none"
265
+ },
266
+ "max_turns": {
267
+ "type": "boolean",
268
+ "default": false,
269
+ "description": "Honors HarnessRunSpec.max_turns (e.g. a native --max-turns flag)."
270
+ },
271
+ "tool_lists": {
272
+ "type": "boolean",
273
+ "default": false,
274
+ "description": "Honors tool_permission_policy allow/deny lists (e.g. a native --allowedTools flag)."
275
+ },
276
+ "interactive": {
277
+ "type": "boolean",
278
+ "default": false,
279
+ "description": "The adapter can surface interactive user questions (interaction_requested events) and deliver typed answers back into the live session."
280
+ },
281
+ "orchestrate": {
282
+ "type": "boolean",
283
+ "default": false,
284
+ "description": "The harness can play the autonomous orchestrate planner intent, planning multi-harness work over the typed tool belt; not a privileged role."
285
+ },
286
+ "json_schema_output": {
287
+ "type": "boolean",
288
+ "default": false,
289
+ "description": "The harness can constrain its final message to a caller-supplied JSON Schema (native structured-output flag)."
290
+ },
291
+ "effort_levels": {
292
+ "type": "array",
293
+ "items": {
294
+ "type": "string",
295
+ "enum": [
296
+ "low",
297
+ "medium",
298
+ "high",
299
+ "xhigh",
300
+ "max"
301
+ ],
302
+ "description": "Cross-harness reasoning-effort level, weakest to strongest; adapters declare the subset they support and a shared normalizer clamps requests onto the nearest supported level."
303
+ },
304
+ "default": [],
305
+ "description": "Ordered (weakest to strongest) reasoning-effort levels this harness actually accepts; empty means effort is not a tunable surface."
306
+ },
307
+ "known_models": {
308
+ "type": "array",
309
+ "items": {
310
+ "type": "string"
311
+ },
312
+ "default": [],
313
+ "description": "Manifest-declared model ids/aliases this harness accepts, used as the model truth source when the adapter has no live inventory; explicit models outside the truth source are refused."
314
+ },
315
+ "known_models_verified_against": {
316
+ "type": [
317
+ "string",
318
+ "null"
319
+ ],
320
+ "default": null,
321
+ "description": "Vendor CLI version the known_models hints were last verified against; null = never verified / not applicable."
322
+ }
323
+ },
324
+ "additionalProperties": false,
325
+ "description": "Declared harness capabilities the engine actually consumes for intent gating, routing, knob support, and disclosure."
326
+ },
327
+ "auth_modes": {
328
+ "type": "array",
329
+ "items": {
330
+ "type": "string",
331
+ "enum": [
332
+ "local_session",
333
+ "api_key",
334
+ "none"
335
+ ]
336
+ },
337
+ "default": [],
338
+ "description": "Auth modes the harness supports (availability only, not readiness)."
339
+ },
340
+ "access_profiles_supported": {
341
+ "type": "array",
342
+ "items": {
343
+ "type": "string",
344
+ "enum": [
345
+ "readonly",
346
+ "workspace_write",
347
+ "full",
348
+ "external_sandbox_full",
349
+ "inherit_native"
350
+ ],
351
+ "description": "Filesystem/command access profile for a run: readonly (no writes), workspace_write (writes inside the workspace only), full (unrestricted; requires the per-repo trust allow), external_sandbox_full (full access inside an external sandbox), inherit_native (defer to the harness's own native sandbox settings)."
352
+ },
353
+ "default": [],
354
+ "description": "Access profiles the adapter can enforce."
355
+ }
356
+ },
357
+ "required": [
358
+ "id",
359
+ "display_name",
360
+ "kind",
361
+ "capabilities"
362
+ ],
363
+ "additionalProperties": false,
364
+ "description": "Static manifest an adapter declares for its harness: identity, kind, capabilities, auth modes, and access profiles."
365
+ },
366
+ {
367
+ "type": "null"
368
+ }
369
+ ],
370
+ "description": "The harness's declared manifest, when available."
371
+ },
372
+ "enabledIntents": {
373
+ "type": "array",
374
+ "items": {
375
+ "type": "string"
376
+ },
377
+ "default": [],
378
+ "description": "Intents the gateway will route to this harness."
379
+ },
380
+ "disabledIntents": {
381
+ "type": "array",
382
+ "items": {
383
+ "type": "string"
384
+ },
385
+ "default": [],
386
+ "description": "Intents the doctor disabled."
387
+ },
388
+ "checks": {
389
+ "type": "array",
390
+ "items": {
391
+ "type": "object",
392
+ "properties": {
393
+ "id": {
394
+ "type": "string",
395
+ "description": "Check id."
396
+ },
397
+ "status": {
398
+ "type": "string",
399
+ "enum": [
400
+ "pass",
401
+ "fail",
402
+ "skip"
403
+ ],
404
+ "description": "Outcome of the check: pass, fail, or skip."
405
+ },
406
+ "detail": {
407
+ "type": "string",
408
+ "description": "Human-readable detail for the outcome."
409
+ },
410
+ "duration_ms": {
411
+ "type": "integer",
412
+ "minimum": 0,
413
+ "description": "How long the check took, in milliseconds."
414
+ }
415
+ },
416
+ "required": [
417
+ "id",
418
+ "status"
419
+ ],
420
+ "additionalProperties": false,
421
+ "description": "Result of a conformance probe for one capability check."
422
+ },
423
+ "default": [],
424
+ "description": "Doctor probe results."
425
+ },
426
+ "reasons": {
427
+ "type": "array",
428
+ "items": {
429
+ "type": "string"
430
+ },
431
+ "default": [],
432
+ "description": "Human-readable reasons for degraded/unavailable status."
433
+ },
434
+ "configuredModel": {
435
+ "type": [
436
+ "string",
437
+ "null"
438
+ ],
439
+ "default": null,
440
+ "description": "The user's configured per-harness default model, if any."
441
+ },
442
+ "configuredModelCheck": {
443
+ "anyOf": [
444
+ {
445
+ "type": "object",
446
+ "properties": {
447
+ "status": {
448
+ "type": "string",
449
+ "enum": [
450
+ "ok",
451
+ "rejected"
452
+ ],
453
+ "description": "Whether the configured model passes the strict truth-source check."
454
+ },
455
+ "message": {
456
+ "type": [
457
+ "string",
458
+ "null"
459
+ ],
460
+ "default": null,
461
+ "description": "Actionable rejection message, when rejected."
462
+ }
463
+ },
464
+ "required": [
465
+ "status"
466
+ ],
467
+ "additionalProperties": false
468
+ },
469
+ {
470
+ "type": "null"
471
+ }
472
+ ],
473
+ "default": null,
474
+ "description": "Strict truth-source check of configuredModel; null when no model is configured."
475
+ }
476
+ },
477
+ "required": [
478
+ "id",
479
+ "status"
480
+ ],
481
+ "additionalProperties": false,
482
+ "description": "Doctor-backed status row for one harness: status, intents, checks, and configured-model validity."
483
+ }
484
+ },
485
+ "$schema": "http://json-schema.org/draft-07/schema#"
486
+ }
@@ -0,0 +1,91 @@
1
+ {
2
+ "$ref": "#/definitions/McpRunToolResult",
3
+ "definitions": {
4
+ "McpRunToolResult": {
5
+ "type": "object",
6
+ "properties": {
7
+ "summary": {
8
+ "type": "string",
9
+ "description": "Human-readable outcome summary (same text as the tool's text content)."
10
+ },
11
+ "runId": {
12
+ "type": [
13
+ "string",
14
+ "null"
15
+ ],
16
+ "description": "Daemon run id (recovery handle for inspect/follow/apply/decision); null for in-process read-only runs."
17
+ },
18
+ "runDir": {
19
+ "type": [
20
+ "string",
21
+ "null"
22
+ ],
23
+ "description": "Artifact directory of the run; null when not persisted."
24
+ },
25
+ "status": {
26
+ "type": [
27
+ "string",
28
+ "null"
29
+ ],
30
+ "description": "Terminal run status (success | blocked | failed | cancelled | ...)."
31
+ },
32
+ "applyEligibility": {
33
+ "anyOf": [
34
+ {
35
+ "type": "object",
36
+ "properties": {
37
+ "eligible": {
38
+ "type": "boolean",
39
+ "description": "True when the apply gate would accept this run's patch right now."
40
+ },
41
+ "state": {
42
+ "type": [
43
+ "string",
44
+ "null"
45
+ ],
46
+ "description": "The gate's state classification (e.g. blocked | ungated | review_not_run | no_op | ok) when known."
47
+ },
48
+ "reason": {
49
+ "type": [
50
+ "string",
51
+ "null"
52
+ ],
53
+ "description": "The gate's refusal text when not eligible (null when eligible)."
54
+ },
55
+ "requiredAction": {
56
+ "type": [
57
+ "string",
58
+ "null"
59
+ ],
60
+ "description": "Honest guidance for what actually unblocks apply (typed operator decision, add gates, re-run, or nothing to apply)."
61
+ }
62
+ },
63
+ "required": [
64
+ "eligible",
65
+ "state",
66
+ "reason",
67
+ "requiredAction"
68
+ ],
69
+ "additionalProperties": false,
70
+ "description": "Derived apply-gate verdict for a run's WorkProduct (single producer in the delivery gate)."
71
+ },
72
+ {
73
+ "type": "null"
74
+ }
75
+ ],
76
+ "description": "Apply-gate verdict for mutating runs; null for read-only routes or when no patch exists."
77
+ }
78
+ },
79
+ "required": [
80
+ "summary",
81
+ "runId",
82
+ "runDir",
83
+ "status",
84
+ "applyEligibility"
85
+ ],
86
+ "additionalProperties": false,
87
+ "description": "Structured MCP tool result for Claudexor run tools."
88
+ }
89
+ },
90
+ "$schema": "http://json-schema.org/draft-07/schema#"
91
+ }
@@ -0,0 +1,93 @@
1
+ {
2
+ "$ref": "#/definitions/OrchestrateContract",
3
+ "definitions": {
4
+ "OrchestrateContract": {
5
+ "type": "object",
6
+ "properties": {
7
+ "thread_id": {
8
+ "type": "string",
9
+ "minLength": 1,
10
+ "description": "Thread the orchestration belongs to."
11
+ },
12
+ "goal": {
13
+ "type": "string",
14
+ "description": "The user goal the planner is orchestrating toward."
15
+ },
16
+ "tool_belt": {
17
+ "type": "array",
18
+ "items": {
19
+ "type": "string",
20
+ "enum": [
21
+ "start_run",
22
+ "race",
23
+ "status",
24
+ "answer_question",
25
+ "apply",
26
+ "review"
27
+ ],
28
+ "description": "Tool in the orchestrate planner's belt, mapping 1:1 onto engine entry points: start_run, race (best-of-N), status, answer_question, apply, and review."
29
+ },
30
+ "default": [
31
+ "start_run",
32
+ "race",
33
+ "status",
34
+ "apply",
35
+ "review"
36
+ ],
37
+ "description": "Tools the planner may use this run."
38
+ },
39
+ "budget": {
40
+ "type": "object",
41
+ "properties": {
42
+ "max_usd": {
43
+ "anyOf": [
44
+ {
45
+ "type": "number",
46
+ "minimum": 0
47
+ },
48
+ {
49
+ "type": "null"
50
+ }
51
+ ],
52
+ "default": null,
53
+ "description": "USD cap for the whole orchestration; null = no cap."
54
+ },
55
+ "max_tool_calls": {
56
+ "anyOf": [
57
+ {
58
+ "type": "integer",
59
+ "exclusiveMinimum": 0
60
+ },
61
+ {
62
+ "type": "null"
63
+ }
64
+ ],
65
+ "default": null,
66
+ "description": "Maximum tool calls the executor will run; null = no cap."
67
+ }
68
+ },
69
+ "additionalProperties": false,
70
+ "default": {},
71
+ "description": "Budget limits for the orchestration."
72
+ },
73
+ "autonomy": {
74
+ "type": "string",
75
+ "enum": [
76
+ "suggest",
77
+ "auto_safe",
78
+ "auto_full"
79
+ ],
80
+ "description": "How much the orchestrate planner may act without confirmation: suggest (user executes the plan), auto_safe (auto-runs only provably safe steps), auto_full (auto-runs everything).",
81
+ "default": "suggest"
82
+ }
83
+ },
84
+ "required": [
85
+ "thread_id",
86
+ "goal"
87
+ ],
88
+ "additionalProperties": false,
89
+ "description": "Contract for one orchestrate run: goal, allowed tool belt, budget, and autonomy level."
90
+ }
91
+ },
92
+ "$schema": "http://json-schema.org/draft-07/schema#"
93
+ }