@claudexor/schema 1.0.1 → 2.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 (248) hide show
  1. package/dist/agent-capabilities.d.ts +88 -16
  2. package/dist/agent-capabilities.d.ts.map +1 -1
  3. package/dist/agent-capabilities.js +49 -18
  4. package/dist/agent-capabilities.js.map +1 -1
  5. package/dist/apply-eligibility.d.ts.map +1 -1
  6. package/dist/apply-eligibility.js +22 -6
  7. package/dist/apply-eligibility.js.map +1 -1
  8. package/dist/attachment.d.ts +113 -48
  9. package/dist/attachment.d.ts.map +1 -1
  10. package/dist/attachment.js +60 -45
  11. package/dist/attachment.js.map +1 -1
  12. package/dist/auth.d.ts +1423 -0
  13. package/dist/auth.d.ts.map +1 -0
  14. package/dist/auth.js +317 -0
  15. package/dist/auth.js.map +1 -0
  16. package/dist/budget.d.ts +133 -16
  17. package/dist/budget.d.ts.map +1 -1
  18. package/dist/budget.js +65 -22
  19. package/dist/budget.js.map +1 -1
  20. package/dist/config.d.ts +449 -115
  21. package/dist/config.d.ts.map +1 -1
  22. package/dist/config.js +114 -41
  23. package/dist/config.js.map +1 -1
  24. package/dist/context.d.ts +6 -6
  25. package/dist/context.d.ts.map +1 -1
  26. package/dist/context.js +31 -7
  27. package/dist/context.js.map +1 -1
  28. package/dist/control-operation-responses.d.ts +1172 -0
  29. package/dist/control-operation-responses.d.ts.map +1 -0
  30. package/dist/control-operation-responses.js +35 -0
  31. package/dist/control-operation-responses.js.map +1 -0
  32. package/dist/control-run-detail.d.ts +443 -242
  33. package/dist/control-run-detail.d.ts.map +1 -1
  34. package/dist/control-run-detail.js +72 -17
  35. package/dist/control-run-detail.js.map +1 -1
  36. package/dist/control-run-retry.d.ts +88 -0
  37. package/dist/control-run-retry.d.ts.map +1 -0
  38. package/dist/control-run-retry.js +40 -0
  39. package/dist/control-run-retry.js.map +1 -0
  40. package/dist/control-run-scope.d.ts +25 -0
  41. package/dist/control-run-scope.d.ts.map +1 -0
  42. package/dist/control-run-scope.js +22 -0
  43. package/dist/control-run-scope.js.map +1 -0
  44. package/dist/control-secret.d.ts +90 -0
  45. package/dist/control-secret.d.ts.map +1 -0
  46. package/dist/control-secret.js +35 -0
  47. package/dist/control-secret.js.map +1 -0
  48. package/dist/control-spec.d.ts +592 -0
  49. package/dist/control-spec.d.ts.map +1 -0
  50. package/dist/control-spec.js +85 -0
  51. package/dist/control-spec.js.map +1 -0
  52. package/dist/control-thread-apply.d.ts +175 -0
  53. package/dist/control-thread-apply.d.ts.map +1 -0
  54. package/dist/control-thread-apply.js +31 -0
  55. package/dist/control-thread-apply.js.map +1 -0
  56. package/dist/control-trust.d.ts +74 -10
  57. package/dist/control-trust.d.ts.map +1 -1
  58. package/dist/control-trust.js +31 -11
  59. package/dist/control-trust.js.map +1 -1
  60. package/dist/control.d.ts +1391 -878
  61. package/dist/control.d.ts.map +1 -1
  62. package/dist/control.js +468 -310
  63. package/dist/control.js.map +1 -1
  64. package/dist/decision.d.ts +10 -10
  65. package/dist/decision.d.ts.map +1 -1
  66. package/dist/decision.js +62 -15
  67. package/dist/decision.js.map +1 -1
  68. package/dist/delivery.d.ts +99 -0
  69. package/dist/delivery.d.ts.map +1 -0
  70. package/dist/delivery.js +19 -0
  71. package/dist/delivery.js.map +1 -0
  72. package/dist/events.d.ts +25 -2
  73. package/dist/events.d.ts.map +1 -1
  74. package/dist/events.js +25 -4
  75. package/dist/events.js.map +1 -1
  76. package/dist/gate.d.ts +2 -2
  77. package/dist/gate.d.ts.map +1 -1
  78. package/dist/gate.js +25 -5
  79. package/dist/gate.js.map +1 -1
  80. package/dist/harness.d.ts +558 -175
  81. package/dist/harness.d.ts.map +1 -1
  82. package/dist/harness.js +207 -82
  83. package/dist/harness.js.map +1 -1
  84. package/dist/index.d.ts +15 -0
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +15 -0
  87. package/dist/index.js.map +1 -1
  88. package/dist/operation.d.ts +185 -0
  89. package/dist/operation.d.ts.map +1 -0
  90. package/dist/operation.js +50 -0
  91. package/dist/operation.js.map +1 -0
  92. package/dist/orchestrate.d.ts +127 -22
  93. package/dist/orchestrate.d.ts.map +1 -1
  94. package/dist/orchestrate.js +61 -7
  95. package/dist/orchestrate.js.map +1 -1
  96. package/dist/primitives.d.ts.map +1 -1
  97. package/dist/primitives.js +4 -1
  98. package/dist/primitives.js.map +1 -1
  99. package/dist/problem.d.ts +29 -0
  100. package/dist/problem.d.ts.map +1 -0
  101. package/dist/problem.js +17 -0
  102. package/dist/problem.js.map +1 -0
  103. package/dist/project.d.ts +97 -0
  104. package/dist/project.d.ts.map +1 -0
  105. package/dist/project.js +27 -0
  106. package/dist/project.js.map +1 -0
  107. package/dist/quota.d.ts +251 -0
  108. package/dist/quota.d.ts.map +1 -0
  109. package/dist/quota.js +46 -0
  110. package/dist/quota.js.map +1 -0
  111. package/dist/raw.d.ts +195 -0
  112. package/dist/raw.d.ts.map +1 -0
  113. package/dist/raw.js +58 -0
  114. package/dist/raw.js.map +1 -0
  115. package/dist/recovery.d.ts +515 -0
  116. package/dist/recovery.d.ts.map +1 -0
  117. package/dist/recovery.js +93 -0
  118. package/dist/recovery.js.map +1 -0
  119. package/dist/request-requirements.d.ts +36 -0
  120. package/dist/request-requirements.d.ts.map +1 -0
  121. package/dist/request-requirements.js +26 -0
  122. package/dist/request-requirements.js.map +1 -0
  123. package/dist/review.d.ts +26 -26
  124. package/dist/review.d.ts.map +1 -1
  125. package/dist/review.js +50 -10
  126. package/dist/review.js.map +1 -1
  127. package/dist/route.d.ts +10 -10
  128. package/dist/route.d.ts.map +1 -1
  129. package/dist/route.js +19 -4
  130. package/dist/route.js.map +1 -1
  131. package/dist/setup.d.ts +9766 -0
  132. package/dist/setup.d.ts.map +1 -0
  133. package/dist/setup.js +450 -0
  134. package/dist/setup.js.map +1 -0
  135. package/dist/spec.d.ts +174 -57
  136. package/dist/spec.d.ts.map +1 -1
  137. package/dist/spec.js +69 -16
  138. package/dist/spec.js.map +1 -1
  139. package/dist/surface-run-controls.d.ts.map +1 -1
  140. package/dist/surface-run-controls.js +25 -21
  141. package/dist/surface-run-controls.js.map +1 -1
  142. package/dist/task.d.ts +1560 -58
  143. package/dist/task.d.ts.map +1 -1
  144. package/dist/task.js +97 -18
  145. package/dist/task.js.map +1 -1
  146. package/dist/telemetry.d.ts +233 -60
  147. package/dist/telemetry.d.ts.map +1 -1
  148. package/dist/telemetry.js +97 -15
  149. package/dist/telemetry.js.map +1 -1
  150. package/dist/thread.d.ts +68 -41
  151. package/dist/thread.d.ts.map +1 -1
  152. package/dist/thread.js +45 -11
  153. package/dist/thread.js.map +1 -1
  154. package/dist/workproduct.d.ts +3 -3
  155. package/dist/workproduct.d.ts.map +1 -1
  156. package/dist/workproduct.js.map +1 -1
  157. package/dist/workspace.d.ts +1 -1
  158. package/dist/workspace.d.ts.map +1 -1
  159. package/dist/workspace.js +12 -3
  160. package/dist/workspace.js.map +1 -1
  161. package/generated/AgentCapabilityCatalog.schema.json +53 -11
  162. package/generated/BudgetLease.schema.json +55 -6
  163. package/generated/BudgetObservation.schema.json +28 -7
  164. package/generated/ConformanceReport.schema.json +49 -0
  165. package/generated/ControlApplyCheckResponse.schema.json +34 -0
  166. package/generated/ControlArtifactListResponse.schema.json +57 -0
  167. package/generated/ControlAuthReadinessRefreshRequest.schema.json +38 -0
  168. package/generated/ControlAuthReadinessRefreshResponse.schema.json +85 -0
  169. package/generated/ControlDeliveryResponse.schema.json +136 -0
  170. package/generated/ControlHandshakeRequest.schema.json +26 -0
  171. package/generated/ControlHandshakeResponse.schema.json +30 -0
  172. package/generated/ControlHarnessListResponse.schema.json +103 -12
  173. package/generated/ControlHarnessSettingsPatch.schema.json +0 -12
  174. package/generated/ControlJournalEvent.schema.json +42 -0
  175. package/generated/ControlJournalExportReceipt.schema.json +49 -0
  176. package/generated/ControlJournalInspection.schema.json +149 -0
  177. package/generated/ControlJournalQuarantineReceipt.schema.json +55 -0
  178. package/generated/ControlJournalQuarantineRequest.schema.json +24 -0
  179. package/generated/ControlJournalValidation.schema.json +181 -0
  180. package/generated/ControlOperationCatalog.schema.json +128 -0
  181. package/generated/ControlOperationDescriptor.schema.json +110 -0
  182. package/generated/ControlProblem.schema.json +59 -0
  183. package/generated/ControlProject.schema.json +42 -0
  184. package/generated/ControlProjectListResponse.schema.json +54 -0
  185. package/generated/ControlProjectRegisterRequest.schema.json +19 -0
  186. package/generated/ControlProjectRelinkRequest.schema.json +19 -0
  187. package/generated/ControlQueuedRunInfo.schema.json +4 -2
  188. package/generated/ControlQuotaResponse.schema.json +176 -0
  189. package/generated/ControlResource.schema.json +59 -0
  190. package/generated/ControlRunAgainDraft.schema.json +499 -0
  191. package/generated/ControlRunDetail.schema.json +197 -30
  192. package/generated/ControlRunListResponse.schema.json +797 -0
  193. package/generated/ControlRunRetryResponse.schema.json +54 -0
  194. package/generated/ControlRunStartRequest.schema.json +83 -55
  195. package/generated/ControlRunStartResponse.schema.json +78 -0
  196. package/generated/ControlRunSummary.schema.json +140 -20
  197. package/generated/ControlSecretListResponse.schema.json +8 -14
  198. package/generated/ControlSecretMutationResponse.schema.json +32 -0
  199. package/generated/ControlSecretSetRequest.schema.json +27 -0
  200. package/generated/ControlSettingsSnapshot.schema.json +118 -44
  201. package/generated/ControlSettingsUpdateRequest.schema.json +110 -40
  202. package/generated/ControlSetupJob.schema.json +763 -65
  203. package/generated/ControlSetupJobCreateRequest.schema.json +11 -13
  204. package/generated/ControlSetupJobEvent.schema.json +861 -5
  205. package/generated/ControlSetupJobListFilter.schema.json +35 -0
  206. package/generated/ControlSetupJobListResponse.schema.json +763 -65
  207. package/generated/ControlSetupJobSnapshot.schema.json +870 -0
  208. package/generated/ControlSpecAnswersRequest.schema.json +74 -0
  209. package/generated/ControlSpecQuestionsRequest.schema.json +128 -2
  210. package/generated/ControlSpecSession.schema.json +249 -0
  211. package/generated/ControlSpecSessionListResponse.schema.json +261 -0
  212. package/generated/ControlThread.schema.json +20 -2
  213. package/generated/ControlThreadApplyResponse.schema.json +139 -0
  214. package/generated/ControlThreadDetail.schema.json +32 -4
  215. package/generated/ControlThreadListResponse.schema.json +20 -2
  216. package/generated/ControlThreadTurnRequest.schema.json +373 -0
  217. package/generated/ControlThreadTurnResponse.schema.json +73 -0
  218. package/generated/ControlThreadUpdateRequest.schema.json +1 -1
  219. package/generated/ControlTrustListResponse.schema.json +6 -0
  220. package/generated/ControlTrustState.schema.json +6 -0
  221. package/generated/ControlTrustUpdateRequest.schema.json +65 -3
  222. package/generated/ControlUploadCreateRequest.schema.json +37 -0
  223. package/generated/ControlUploadFinalizeRequest.schema.json +17 -0
  224. package/generated/ControlUploadStatus.schema.json +40 -0
  225. package/generated/DecisionRecord.schema.json +6 -3
  226. package/generated/GlobalConfig.schema.json +105 -58
  227. package/generated/HarnessEvent.schema.json +201 -10
  228. package/generated/HarnessManifest.schema.json +63 -12
  229. package/generated/HarnessStatusDto.schema.json +103 -12
  230. package/generated/OrchestrateContract.schema.json +32 -6
  231. package/generated/OrchestratePlan.schema.json +20 -0
  232. package/generated/OrchestratePlanProgress.schema.json +61 -0
  233. package/generated/PaidBudget.schema.json +42 -0
  234. package/generated/Project.schema.json +45 -0
  235. package/generated/ProjectConfig.schema.json +45 -18
  236. package/generated/RawContextPacket.schema.json +184 -0
  237. package/generated/RawGitPatchEnvelope.schema.json +70 -0
  238. package/generated/RunTelemetry.schema.json +80 -0
  239. package/generated/SecretMetadata.schema.json +4 -7
  240. package/generated/SpecPack.schema.json +118 -7
  241. package/generated/TaskContract.schema.json +159 -26
  242. package/generated/TestCommandInvocation.schema.json +45 -0
  243. package/generated/Thread.schema.json +62 -6
  244. package/generated/ThreadTurn.schema.json +24 -11
  245. package/generated/TrustConfig.schema.json +77 -0
  246. package/package.json +1 -1
  247. package/generated/ControlSetupJobConfirmRequest.schema.json +0 -18
  248. package/generated/ControlSpecFreezeRequest.schema.json +0 -83
@@ -75,12 +75,13 @@
75
75
  "type": "string",
76
76
  "enum": [
77
77
  "native_session",
78
+ "oauth_token_env",
78
79
  "api_key_env",
79
80
  "api_key_flag",
80
81
  "provider_auth_file",
81
82
  "none"
82
83
  ],
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
+ "description": "Concrete credential source used or probed by a harness."
84
85
  },
85
86
  "default": [],
86
87
  "description": "Auth sources this harness supports."
@@ -193,21 +194,62 @@
193
194
  "default": {},
194
195
  "description": "Declared isolation containment facts for a harness."
195
196
  },
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"
197
+ "attachment_inputs": {
198
+ "type": "array",
199
+ "items": {
200
+ "type": "object",
201
+ "properties": {
202
+ "kind": {
203
+ "type": "string",
204
+ "enum": [
205
+ "image",
206
+ "file"
207
+ ],
208
+ "description": "Kind of attached resource: image input or generic file bytes."
209
+ },
210
+ "mime_types": {
211
+ "type": "array",
212
+ "items": {
213
+ "type": "string",
214
+ "minLength": 1
215
+ },
216
+ "minItems": 1
217
+ },
218
+ "max_bytes": {
219
+ "type": "integer",
220
+ "exclusiveMinimum": 0
221
+ },
222
+ "max_count": {
223
+ "type": "integer",
224
+ "exclusiveMinimum": 0
225
+ },
226
+ "transport": {
227
+ "type": "string",
228
+ "enum": [
229
+ "file_path",
230
+ "base64_stream",
231
+ "base64_inline",
232
+ "text_inline"
233
+ ],
234
+ "description": "Native adapter transport used for one supported attachment class."
235
+ }
236
+ },
237
+ "required": [
238
+ "kind",
239
+ "mime_types",
240
+ "max_bytes",
241
+ "max_count",
242
+ "transport"
243
+ ],
244
+ "additionalProperties": false,
245
+ "description": "Finite MIME, size, count and transport limits declared by one adapter."
246
+ },
247
+ "default": []
206
248
  }
207
249
  },
208
250
  "additionalProperties": false,
209
251
  "default": {},
210
- "description": "Structured per-harness facts the engine consumes: auth routing, isolation containment, readonly mechanism, and vision input."
252
+ "description": "Structured per-harness facts the engine consumes: auth routing, isolation containment, readonly mechanism, and finite attachment inputs."
211
253
  },
212
254
  "capabilities": {
213
255
  "type": "object",
@@ -222,6 +264,15 @@
222
264
  "default": false,
223
265
  "description": "The harness can implement code changes (implement intent)."
224
266
  },
267
+ "implementation_transport": {
268
+ "type": "string",
269
+ "enum": [
270
+ "workspace",
271
+ "git_patch_envelope"
272
+ ],
273
+ "description": "Typed producer/consumer transport used when implement=true.",
274
+ "default": "workspace"
275
+ },
225
276
  "create_from_scratch": {
226
277
  "type": "boolean",
227
278
  "default": false,
@@ -431,6 +482,46 @@
431
482
  "default": [],
432
483
  "description": "Human-readable reasons for degraded/unavailable status."
433
484
  },
485
+ "authSources": {
486
+ "type": "array",
487
+ "items": {
488
+ "type": "object",
489
+ "properties": {
490
+ "source": {
491
+ "$ref": "#/definitions/HarnessStatusDto/properties/manifest/anyOf/0/properties/capability_profile/properties/auth/properties/supported_sources/items"
492
+ },
493
+ "availability": {
494
+ "type": "string",
495
+ "enum": [
496
+ "available",
497
+ "unavailable",
498
+ "unknown"
499
+ ]
500
+ },
501
+ "verification": {
502
+ "type": "string",
503
+ "enum": [
504
+ "passed",
505
+ "failed",
506
+ "not_run"
507
+ ]
508
+ },
509
+ "detail": {
510
+ "type": "string",
511
+ "description": "Redacted human-readable source evidence."
512
+ }
513
+ },
514
+ "required": [
515
+ "source",
516
+ "availability",
517
+ "verification"
518
+ ],
519
+ "additionalProperties": false,
520
+ "description": "Doctor-backed readiness for one exact credential source."
521
+ },
522
+ "default": [],
523
+ "description": "Doctor-backed readiness by authentication source; an empty array means readiness was not reported."
524
+ },
434
525
  "configuredModel": {
435
526
  "type": [
436
527
  "string",
@@ -39,18 +39,44 @@
39
39
  "budget": {
40
40
  "type": "object",
41
41
  "properties": {
42
- "max_usd": {
42
+ "paid_budget": {
43
43
  "anyOf": [
44
44
  {
45
- "type": "number",
46
- "minimum": 0
45
+ "type": "object",
46
+ "properties": {
47
+ "kind": {
48
+ "type": "string",
49
+ "const": "unlimited"
50
+ }
51
+ },
52
+ "required": [
53
+ "kind"
54
+ ],
55
+ "additionalProperties": false
47
56
  },
48
57
  {
49
- "type": "null"
58
+ "type": "object",
59
+ "properties": {
60
+ "kind": {
61
+ "type": "string",
62
+ "const": "finite"
63
+ },
64
+ "maxUsd": {
65
+ "type": "number",
66
+ "minimum": 0
67
+ }
68
+ },
69
+ "required": [
70
+ "kind",
71
+ "maxUsd"
72
+ ],
73
+ "additionalProperties": false
50
74
  }
51
75
  ],
52
- "default": null,
53
- "description": "USD cap for the whole orchestration; null = no cap."
76
+ "description": "Incremental-cash budget: explicitly unlimited or a finite non-negative USD cap.",
77
+ "default": {
78
+ "kind": "unlimited"
79
+ }
54
80
  },
55
81
  "max_tool_calls": {
56
82
  "anyOf": [
@@ -11,6 +11,11 @@
11
11
  {
12
12
  "type": "object",
13
13
  "properties": {
14
+ "required": {
15
+ "type": "boolean",
16
+ "default": true,
17
+ "description": "Whether parent success requires this step to succeed."
18
+ },
14
19
  "tool": {
15
20
  "type": "string",
16
21
  "const": "start_run"
@@ -52,6 +57,9 @@
52
57
  {
53
58
  "type": "object",
54
59
  "properties": {
60
+ "required": {
61
+ "$ref": "#/definitions/OrchestratePlan/properties/tool_calls/items/anyOf/0/properties/required"
62
+ },
55
63
  "tool": {
56
64
  "type": "string",
57
65
  "const": "race"
@@ -83,6 +91,9 @@
83
91
  {
84
92
  "type": "object",
85
93
  "properties": {
94
+ "required": {
95
+ "$ref": "#/definitions/OrchestratePlan/properties/tool_calls/items/anyOf/0/properties/required"
96
+ },
86
97
  "tool": {
87
98
  "type": "string",
88
99
  "const": "review"
@@ -108,6 +119,9 @@
108
119
  {
109
120
  "type": "object",
110
121
  "properties": {
122
+ "required": {
123
+ "$ref": "#/definitions/OrchestratePlan/properties/tool_calls/items/anyOf/0/properties/required"
124
+ },
111
125
  "tool": {
112
126
  "type": "string",
113
127
  "const": "status"
@@ -133,6 +147,9 @@
133
147
  {
134
148
  "type": "object",
135
149
  "properties": {
150
+ "required": {
151
+ "$ref": "#/definitions/OrchestratePlan/properties/tool_calls/items/anyOf/0/properties/required"
152
+ },
136
153
  "tool": {
137
154
  "type": "string",
138
155
  "const": "answer_question"
@@ -193,6 +210,9 @@
193
210
  {
194
211
  "type": "object",
195
212
  "properties": {
213
+ "required": {
214
+ "$ref": "#/definitions/OrchestratePlan/properties/tool_calls/items/anyOf/0/properties/required"
215
+ },
196
216
  "tool": {
197
217
  "type": "string",
198
218
  "const": "apply"
@@ -46,6 +46,67 @@
46
46
  ],
47
47
  "description": "Executor status of one plan step: pending, running, done, skipped, blocked (risky step awaiting a human), or failed."
48
48
  },
49
+ "required": {
50
+ "type": "boolean",
51
+ "default": true
52
+ },
53
+ "terminal_status": {
54
+ "anyOf": [
55
+ {
56
+ "type": "string",
57
+ "enum": [
58
+ "success",
59
+ "no_op",
60
+ "ungated",
61
+ "review_not_run",
62
+ "blocked",
63
+ "failed",
64
+ "interrupted_unknown",
65
+ "cost_unverifiable",
66
+ "exhausted_overshoot",
67
+ "exhausted",
68
+ "not_converged",
69
+ "stuck_no_progress",
70
+ "cancelled"
71
+ ],
72
+ "description": "Terminal status of a run, including truthful blocked, interrupted-unknown, cost-unverifiable, overshoot, exhaustion, non-convergence, failure, and cancellation outcomes."
73
+ },
74
+ {
75
+ "type": "null"
76
+ }
77
+ ],
78
+ "description": "Actual child/delivery terminal used by the parent outcome reducer.",
79
+ "default": null
80
+ },
81
+ "terminal_source": {
82
+ "anyOf": [
83
+ {
84
+ "type": "string",
85
+ "enum": [
86
+ "executor",
87
+ "subrun",
88
+ "review",
89
+ "delivery",
90
+ "policy",
91
+ "budget"
92
+ ]
93
+ },
94
+ {
95
+ "type": "null"
96
+ }
97
+ ],
98
+ "default": null,
99
+ "description": "Authority that produced terminal_status."
100
+ },
101
+ "evidence_refs": {
102
+ "type": "array",
103
+ "items": {
104
+ "type": "string",
105
+ "minLength": 1
106
+ },
107
+ "default": [],
108
+ "description": "Immutable run artifact or delivery receipt references."
109
+ },
49
110
  "run_id": {
50
111
  "type": [
51
112
  "string",
@@ -0,0 +1,42 @@
1
+ {
2
+ "$ref": "#/definitions/PaidBudget",
3
+ "definitions": {
4
+ "PaidBudget": {
5
+ "anyOf": [
6
+ {
7
+ "type": "object",
8
+ "properties": {
9
+ "kind": {
10
+ "type": "string",
11
+ "const": "unlimited"
12
+ }
13
+ },
14
+ "required": [
15
+ "kind"
16
+ ],
17
+ "additionalProperties": false
18
+ },
19
+ {
20
+ "type": "object",
21
+ "properties": {
22
+ "kind": {
23
+ "type": "string",
24
+ "const": "finite"
25
+ },
26
+ "maxUsd": {
27
+ "type": "number",
28
+ "minimum": 0
29
+ }
30
+ },
31
+ "required": [
32
+ "kind",
33
+ "maxUsd"
34
+ ],
35
+ "additionalProperties": false
36
+ }
37
+ ],
38
+ "description": "Incremental-cash budget: explicitly unlimited or a finite non-negative USD cap."
39
+ }
40
+ },
41
+ "$schema": "http://json-schema.org/draft-07/schema#"
42
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "$ref": "#/definitions/Project",
3
+ "definitions": {
4
+ "Project": {
5
+ "type": "object",
6
+ "properties": {
7
+ "schema_version": {
8
+ "type": "number",
9
+ "const": 2,
10
+ "description": "Schema version of the artifact; bumped on breaking ABI changes."
11
+ },
12
+ "id": {
13
+ "type": "string",
14
+ "minLength": 1,
15
+ "description": "Stable Claudexor project id."
16
+ },
17
+ "root": {
18
+ "type": "string",
19
+ "minLength": 1,
20
+ "description": "Canonical absolute project root."
21
+ },
22
+ "created_at": {
23
+ "type": "string",
24
+ "minLength": 1,
25
+ "description": "When the project was first registered."
26
+ },
27
+ "updated_at": {
28
+ "type": "string",
29
+ "minLength": 1,
30
+ "description": "When the project link was last updated."
31
+ }
32
+ },
33
+ "required": [
34
+ "schema_version",
35
+ "id",
36
+ "root",
37
+ "created_at",
38
+ "updated_at"
39
+ ],
40
+ "additionalProperties": false,
41
+ "description": "A durable v2 project registration; v1 state is never imported implicitly."
42
+ }
43
+ },
44
+ "$schema": "http://json-schema.org/draft-07/schema#"
45
+ }
@@ -48,10 +48,46 @@
48
48
  "commands": {
49
49
  "type": "array",
50
50
  "items": {
51
- "type": "string"
51
+ "type": "object",
52
+ "properties": {
53
+ "program": {
54
+ "type": "string",
55
+ "minLength": 1,
56
+ "pattern": "\\S",
57
+ "description": "Executable invoked directly without an implicit shell."
58
+ },
59
+ "args": {
60
+ "type": "array",
61
+ "items": {
62
+ "type": "string"
63
+ },
64
+ "default": [],
65
+ "description": "Exact argv passed to the executable."
66
+ },
67
+ "cwd": {
68
+ "type": "string",
69
+ "description": "Optional project-relative working directory for the command."
70
+ },
71
+ "envAllowlist": {
72
+ "type": "array",
73
+ "items": {
74
+ "type": "string",
75
+ "minLength": 1,
76
+ "pattern": "\\S",
77
+ "description": "User-supplied string that must contain visible content, not just whitespace."
78
+ },
79
+ "default": [],
80
+ "description": "Non-secret parent environment names explicitly forwarded to the command."
81
+ }
82
+ },
83
+ "required": [
84
+ "program"
85
+ ],
86
+ "additionalProperties": false,
87
+ "description": "Canonical deterministic command invocation; no implicit shell parsing."
52
88
  },
53
89
  "default": [],
54
- "description": "Test commands run as deterministic gates."
90
+ "description": "Typed-argv test commands run as deterministic gates."
55
91
  }
56
92
  },
57
93
  "additionalProperties": false,
@@ -63,28 +99,19 @@
63
99
  "budget": {
64
100
  "type": "object",
65
101
  "properties": {
66
- "portfolio": {
102
+ "routing_goal": {
67
103
  "type": "string",
68
104
  "enum": [
69
- "daily-rich",
70
- "balanced",
71
- "cheapest",
72
- "strongest",
73
- "burn",
74
- "subscription-first",
75
- "api-overflow",
76
- "conserve-claude",
77
- "conserve-codex"
105
+ "auto",
106
+ "quality",
107
+ "economy"
78
108
  ],
79
- "description": "Budget portfolio weighting the harness router's quality/cost/latency and subscription-vs-API preferences (e.g. cheapest minimizes spend, burn maximizes quality, conserve-* deprioritizes one vendor).",
80
- "default": "subscription-first"
109
+ "description": "Routing objective: pace expiring quota, choose the highest declared quality tier, or minimize incremental paid spend."
81
110
  }
82
111
  },
83
112
  "additionalProperties": false,
84
- "default": {
85
- "portfolio": "subscription-first"
86
- },
87
- "description": "Project budget preferences."
113
+ "default": {},
114
+ "description": "Safe project routing preference; paid fallback remains user-global."
88
115
  }
89
116
  },
90
117
  "additionalProperties": false,