@claudexor/schema 1.0.1 → 2.1.1

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 (278) hide show
  1. package/dist/agent-capabilities.d.ts +102 -30
  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 +117 -52
  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 +1444 -0
  13. package/dist/auth.d.ts.map +1 -0
  14. package/dist/auth.js +371 -0
  15. package/dist/auth.js.map +1 -0
  16. package/dist/budget.d.ts +147 -18
  17. package/dist/budget.d.ts.map +1 -1
  18. package/dist/budget.js +80 -22
  19. package/dist/budget.js.map +1 -1
  20. package/dist/config.d.ts +829 -135
  21. package/dist/config.d.ts.map +1 -1
  22. package/dist/config.js +195 -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-gc.d.ts +185 -0
  29. package/dist/control-gc.d.ts.map +1 -0
  30. package/dist/control-gc.js +81 -0
  31. package/dist/control-gc.js.map +1 -0
  32. package/dist/control-operation-responses.d.ts +1298 -0
  33. package/dist/control-operation-responses.d.ts.map +1 -0
  34. package/dist/control-operation-responses.js +35 -0
  35. package/dist/control-operation-responses.js.map +1 -0
  36. package/dist/control-run-detail.d.ts +556 -247
  37. package/dist/control-run-detail.d.ts.map +1 -1
  38. package/dist/control-run-detail.js +72 -17
  39. package/dist/control-run-detail.js.map +1 -1
  40. package/dist/control-run-retry.d.ts +88 -0
  41. package/dist/control-run-retry.d.ts.map +1 -0
  42. package/dist/control-run-retry.js +40 -0
  43. package/dist/control-run-retry.js.map +1 -0
  44. package/dist/control-run-scope.d.ts +25 -0
  45. package/dist/control-run-scope.d.ts.map +1 -0
  46. package/dist/control-run-scope.js +22 -0
  47. package/dist/control-run-scope.js.map +1 -0
  48. package/dist/control-secret.d.ts +90 -0
  49. package/dist/control-secret.d.ts.map +1 -0
  50. package/dist/control-secret.js +35 -0
  51. package/dist/control-secret.js.map +1 -0
  52. package/dist/control-spec.d.ts +592 -0
  53. package/dist/control-spec.d.ts.map +1 -0
  54. package/dist/control-spec.js +85 -0
  55. package/dist/control-spec.js.map +1 -0
  56. package/dist/control-thread-apply.d.ts +175 -0
  57. package/dist/control-thread-apply.d.ts.map +1 -0
  58. package/dist/control-thread-apply.js +31 -0
  59. package/dist/control-thread-apply.js.map +1 -0
  60. package/dist/control-trust.d.ts +74 -10
  61. package/dist/control-trust.d.ts.map +1 -1
  62. package/dist/control-trust.js +31 -11
  63. package/dist/control-trust.js.map +1 -1
  64. package/dist/control.d.ts +1688 -1334
  65. package/dist/control.d.ts.map +1 -1
  66. package/dist/control.js +592 -333
  67. package/dist/control.js.map +1 -1
  68. package/dist/credential-profile.d.ts +454 -0
  69. package/dist/credential-profile.d.ts.map +1 -0
  70. package/dist/credential-profile.js +140 -0
  71. package/dist/credential-profile.js.map +1 -0
  72. package/dist/decision.d.ts +10 -10
  73. package/dist/decision.d.ts.map +1 -1
  74. package/dist/decision.js +62 -15
  75. package/dist/decision.js.map +1 -1
  76. package/dist/delivery.d.ts +99 -0
  77. package/dist/delivery.d.ts.map +1 -0
  78. package/dist/delivery.js +19 -0
  79. package/dist/delivery.js.map +1 -0
  80. package/dist/events.d.ts +41 -4
  81. package/dist/events.d.ts.map +1 -1
  82. package/dist/events.js +47 -4
  83. package/dist/events.js.map +1 -1
  84. package/dist/gate.d.ts +5 -5
  85. package/dist/gate.d.ts.map +1 -1
  86. package/dist/gate.js +25 -5
  87. package/dist/gate.js.map +1 -1
  88. package/dist/harness.d.ts +775 -237
  89. package/dist/harness.d.ts.map +1 -1
  90. package/dist/harness.js +314 -111
  91. package/dist/harness.js.map +1 -1
  92. package/dist/index.d.ts +19 -0
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +19 -0
  95. package/dist/index.js.map +1 -1
  96. package/dist/operation.d.ts +185 -0
  97. package/dist/operation.d.ts.map +1 -0
  98. package/dist/operation.js +50 -0
  99. package/dist/operation.js.map +1 -0
  100. package/dist/orchestrate.d.ts +150 -22
  101. package/dist/orchestrate.d.ts.map +1 -1
  102. package/dist/orchestrate.js +117 -7
  103. package/dist/orchestrate.js.map +1 -1
  104. package/dist/primitives.d.ts.map +1 -1
  105. package/dist/primitives.js +4 -1
  106. package/dist/primitives.js.map +1 -1
  107. package/dist/problem.d.ts +29 -0
  108. package/dist/problem.d.ts.map +1 -0
  109. package/dist/problem.js +17 -0
  110. package/dist/problem.js.map +1 -0
  111. package/dist/project.d.ts +97 -0
  112. package/dist/project.d.ts.map +1 -0
  113. package/dist/project.js +27 -0
  114. package/dist/project.js.map +1 -0
  115. package/dist/quota.d.ts +269 -0
  116. package/dist/quota.d.ts.map +1 -0
  117. package/dist/quota.js +58 -0
  118. package/dist/quota.js.map +1 -0
  119. package/dist/raw.d.ts +195 -0
  120. package/dist/raw.d.ts.map +1 -0
  121. package/dist/raw.js +58 -0
  122. package/dist/raw.js.map +1 -0
  123. package/dist/readiness.d.ts +596 -0
  124. package/dist/readiness.d.ts.map +1 -0
  125. package/dist/readiness.js +87 -0
  126. package/dist/readiness.js.map +1 -0
  127. package/dist/recovery.d.ts +515 -0
  128. package/dist/recovery.d.ts.map +1 -0
  129. package/dist/recovery.js +93 -0
  130. package/dist/recovery.js.map +1 -0
  131. package/dist/request-requirements.d.ts +36 -0
  132. package/dist/request-requirements.d.ts.map +1 -0
  133. package/dist/request-requirements.js +29 -0
  134. package/dist/request-requirements.js.map +1 -0
  135. package/dist/review.d.ts +26 -26
  136. package/dist/review.d.ts.map +1 -1
  137. package/dist/review.js +50 -10
  138. package/dist/review.js.map +1 -1
  139. package/dist/route.d.ts +13 -13
  140. package/dist/route.d.ts.map +1 -1
  141. package/dist/route.js +19 -4
  142. package/dist/route.js.map +1 -1
  143. package/dist/setup.d.ts +9811 -0
  144. package/dist/setup.d.ts.map +1 -0
  145. package/dist/setup.js +475 -0
  146. package/dist/setup.js.map +1 -0
  147. package/dist/spec.d.ts +178 -61
  148. package/dist/spec.d.ts.map +1 -1
  149. package/dist/spec.js +69 -16
  150. package/dist/spec.js.map +1 -1
  151. package/dist/surface-run-controls.d.ts.map +1 -1
  152. package/dist/surface-run-controls.js +25 -21
  153. package/dist/surface-run-controls.js.map +1 -1
  154. package/dist/task.d.ts +1657 -60
  155. package/dist/task.d.ts.map +1 -1
  156. package/dist/task.js +144 -18
  157. package/dist/task.js.map +1 -1
  158. package/dist/telemetry.d.ts +487 -72
  159. package/dist/telemetry.d.ts.map +1 -1
  160. package/dist/telemetry.js +194 -16
  161. package/dist/telemetry.js.map +1 -1
  162. package/dist/thread.d.ts +89 -51
  163. package/dist/thread.d.ts.map +1 -1
  164. package/dist/thread.js +56 -11
  165. package/dist/thread.js.map +1 -1
  166. package/dist/tool-ref.d.ts +45 -0
  167. package/dist/tool-ref.d.ts.map +1 -0
  168. package/dist/tool-ref.js +45 -0
  169. package/dist/tool-ref.js.map +1 -0
  170. package/dist/workproduct.d.ts +3 -3
  171. package/dist/workproduct.d.ts.map +1 -1
  172. package/dist/workproduct.js.map +1 -1
  173. package/dist/workspace.d.ts +3 -3
  174. package/dist/workspace.d.ts.map +1 -1
  175. package/dist/workspace.js +12 -3
  176. package/dist/workspace.js.map +1 -1
  177. package/generated/AgentCapabilityCatalog.schema.json +53 -11
  178. package/generated/BudgetLease.schema.json +55 -6
  179. package/generated/BudgetObservation.schema.json +44 -7
  180. package/generated/ConformanceReport.schema.json +49 -0
  181. package/generated/ControlApplyCheckResponse.schema.json +34 -0
  182. package/generated/ControlArtifactListResponse.schema.json +57 -0
  183. package/generated/ControlAuthReadinessRefreshRequest.schema.json +38 -0
  184. package/generated/ControlAuthReadinessRefreshResponse.schema.json +85 -0
  185. package/generated/ControlCredentialProfileCreateRequest.schema.json +32 -0
  186. package/generated/ControlCredentialProfileCreateResponse.schema.json +142 -0
  187. package/generated/ControlCredentialProfileDeleteResponse.schema.json +107 -0
  188. package/generated/ControlCredentialProfilesResponse.schema.json +155 -0
  189. package/generated/ControlDeliveryResponse.schema.json +136 -0
  190. package/generated/ControlGcReceipt.schema.json +170 -0
  191. package/generated/ControlGcRequest.schema.json +18 -0
  192. package/generated/ControlHandshakeRequest.schema.json +26 -0
  193. package/generated/ControlHandshakeResponse.schema.json +30 -0
  194. package/generated/ControlHarnessListResponse.schema.json +198 -14
  195. package/generated/ControlHarnessModelsResponse.schema.json +19 -0
  196. package/generated/ControlHarnessSettingsPatch.schema.json +9 -12
  197. package/generated/ControlJournalEvent.schema.json +42 -0
  198. package/generated/ControlJournalExportReceipt.schema.json +49 -0
  199. package/generated/ControlJournalInspection.schema.json +149 -0
  200. package/generated/ControlJournalQuarantineReceipt.schema.json +55 -0
  201. package/generated/ControlJournalQuarantineRequest.schema.json +24 -0
  202. package/generated/ControlJournalValidation.schema.json +181 -0
  203. package/generated/ControlOperationCatalog.schema.json +128 -0
  204. package/generated/ControlOperationDescriptor.schema.json +110 -0
  205. package/generated/ControlProblem.schema.json +59 -0
  206. package/generated/ControlProject.schema.json +42 -0
  207. package/generated/ControlProjectListResponse.schema.json +54 -0
  208. package/generated/ControlProjectRegisterRequest.schema.json +19 -0
  209. package/generated/ControlProjectRelinkRequest.schema.json +19 -0
  210. package/generated/ControlQueuedRunInfo.schema.json +4 -2
  211. package/generated/ControlQuotaResponse.schema.json +177 -0
  212. package/generated/ControlResource.schema.json +59 -0
  213. package/generated/ControlRunAgainDraft.schema.json +539 -0
  214. package/generated/ControlRunDetail.schema.json +373 -34
  215. package/generated/ControlRunListResponse.schema.json +968 -0
  216. package/generated/ControlRunRetryResponse.schema.json +54 -0
  217. package/generated/ControlRunStartRequest.schema.json +123 -55
  218. package/generated/ControlRunStartResponse.schema.json +78 -0
  219. package/generated/ControlRunSummary.schema.json +312 -21
  220. package/generated/ControlSecretListResponse.schema.json +8 -14
  221. package/generated/ControlSecretMutationResponse.schema.json +32 -0
  222. package/generated/ControlSecretSetRequest.schema.json +27 -0
  223. package/generated/ControlSettingsSnapshot.schema.json +128 -44
  224. package/generated/ControlSettingsUpdateRequest.schema.json +119 -40
  225. package/generated/ControlSetupJob.schema.json +770 -64
  226. package/generated/ControlSetupJobCreateRequest.schema.json +16 -13
  227. package/generated/ControlSetupJobEvent.schema.json +869 -5
  228. package/generated/ControlSetupJobListFilter.schema.json +35 -0
  229. package/generated/ControlSetupJobListResponse.schema.json +770 -64
  230. package/generated/ControlSetupJobSnapshot.schema.json +878 -0
  231. package/generated/ControlSpecAnswersRequest.schema.json +74 -0
  232. package/generated/ControlSpecQuestionsRequest.schema.json +128 -2
  233. package/generated/ControlSpecSession.schema.json +249 -0
  234. package/generated/ControlSpecSessionListResponse.schema.json +261 -0
  235. package/generated/ControlThread.schema.json +36 -6
  236. package/generated/ControlThreadApplyResponse.schema.json +139 -0
  237. package/generated/ControlThreadCreateRequest.schema.json +6 -2
  238. package/generated/ControlThreadDetail.schema.json +64 -12
  239. package/generated/ControlThreadListResponse.schema.json +36 -6
  240. package/generated/ControlThreadTurnRequest.schema.json +413 -0
  241. package/generated/ControlThreadTurnResponse.schema.json +73 -0
  242. package/generated/ControlThreadUpdateRequest.schema.json +12 -1
  243. package/generated/ControlTrustListResponse.schema.json +6 -0
  244. package/generated/ControlTrustState.schema.json +6 -0
  245. package/generated/ControlTrustUpdateRequest.schema.json +65 -3
  246. package/generated/ControlUploadCreateRequest.schema.json +37 -0
  247. package/generated/ControlUploadFinalizeRequest.schema.json +17 -0
  248. package/generated/ControlUploadStatus.schema.json +40 -0
  249. package/generated/CredentialProfile.schema.json +78 -0
  250. package/generated/CredentialProfileStatus.schema.json +61 -0
  251. package/generated/DecisionRecord.schema.json +6 -3
  252. package/generated/GlobalConfig.schema.json +238 -55
  253. package/generated/HarnessEvent.schema.json +259 -11
  254. package/generated/HarnessManifest.schema.json +96 -14
  255. package/generated/HarnessModel.schema.json +19 -0
  256. package/generated/HarnessStatusDto.schema.json +198 -14
  257. package/generated/OrchestrateContract.schema.json +32 -6
  258. package/generated/OrchestratePlan.schema.json +20 -0
  259. package/generated/OrchestratePlanProgress.schema.json +61 -0
  260. package/generated/PaidBudget.schema.json +42 -0
  261. package/generated/Project.schema.json +45 -0
  262. package/generated/ProjectConfig.schema.json +45 -18
  263. package/generated/RawContextPacket.schema.json +184 -0
  264. package/generated/RawGitPatchEnvelope.schema.json +70 -0
  265. package/generated/RunEvent.schema.json +3 -0
  266. package/generated/RunTelemetry.schema.json +280 -0
  267. package/generated/SecretMetadata.schema.json +4 -7
  268. package/generated/Session.schema.json +14 -0
  269. package/generated/SpecPack.schema.json +118 -7
  270. package/generated/TaskContract.schema.json +224 -30
  271. package/generated/TestCommandInvocation.schema.json +45 -0
  272. package/generated/Thread.schema.json +74 -6
  273. package/generated/ThreadHeadPing.schema.json +40 -0
  274. package/generated/ThreadTurn.schema.json +24 -11
  275. package/generated/TrustConfig.schema.json +77 -0
  276. package/package.json +3 -2
  277. package/generated/ControlSetupJobConfirmRequest.schema.json +0 -18
  278. package/generated/ControlSpecFreezeRequest.schema.json +0 -83
@@ -188,6 +188,119 @@
188
188
  "default": null,
189
189
  "description": "Model the harness stream actually reported; null when never disclosed (rendered as unverified, never guessed)."
190
190
  },
191
+ "auth_mode": {
192
+ "anyOf": [
193
+ {
194
+ "type": "string",
195
+ "enum": [
196
+ "local_session",
197
+ "api_key",
198
+ "unknown"
199
+ ],
200
+ "description": "Auth mode a route runs under: a native local session, an API key, or unknown."
201
+ },
202
+ {
203
+ "type": "null"
204
+ }
205
+ ],
206
+ "description": "Auth route the attempt actually ran under (local_session subscription vs api_key), disclosed by the adapter's typed started payload; null when never disclosed (treated as unknown, never guessed).",
207
+ "default": null
208
+ },
209
+ "auth_source": {
210
+ "anyOf": [
211
+ {
212
+ "type": "string",
213
+ "enum": [
214
+ "native_session",
215
+ "oauth_token_env",
216
+ "api_key_env",
217
+ "api_key_flag",
218
+ "provider_auth_file",
219
+ "none"
220
+ ],
221
+ "description": "Concrete credential source used or probed by a harness."
222
+ },
223
+ {
224
+ "type": "null"
225
+ }
226
+ ],
227
+ "description": "Concrete credential source the attempt disclosed (native_session/api_key_env/...); null when never disclosed.",
228
+ "default": null
229
+ },
230
+ "profile_id": {
231
+ "type": [
232
+ "string",
233
+ "null"
234
+ ],
235
+ "default": null,
236
+ "description": "Credential profile the attempt actually ran under (adapter-stamped); null = engine default or undisclosed."
237
+ },
238
+ "requested_model": {
239
+ "type": [
240
+ "string",
241
+ "null"
242
+ ],
243
+ "default": null,
244
+ "description": "Model hint the engine sent the attempt; null when the route ran on its default."
245
+ },
246
+ "request_requirements": {
247
+ "type": "array",
248
+ "items": {
249
+ "type": "object",
250
+ "properties": {
251
+ "capability": {
252
+ "type": "string",
253
+ "enum": [
254
+ "browser",
255
+ "path_deny"
256
+ ]
257
+ },
258
+ "harness_id": {
259
+ "type": "string",
260
+ "minLength": 1
261
+ },
262
+ "eligible": {
263
+ "type": "boolean"
264
+ },
265
+ "requested": {
266
+ "type": "boolean"
267
+ },
268
+ "effective": {
269
+ "type": "boolean"
270
+ },
271
+ "reason": {
272
+ "type": "string",
273
+ "enum": [
274
+ "not_requested",
275
+ "effective",
276
+ "manifest_unsupported",
277
+ "web_policy_off",
278
+ "access_profile_incompatible",
279
+ "postdiff_only"
280
+ ]
281
+ },
282
+ "evidence_refs": {
283
+ "type": "array",
284
+ "items": {
285
+ "type": "string"
286
+ },
287
+ "default": []
288
+ }
289
+ },
290
+ "required": [
291
+ "capability",
292
+ "harness_id",
293
+ "eligible",
294
+ "requested",
295
+ "effective",
296
+ "reason"
297
+ ],
298
+ "additionalProperties": false,
299
+ "description": "Preflight resolution of one requested capability on one selected harness lane."
300
+ },
301
+ "default": [],
302
+ "description": "Per-lane requested/effective capability receipts computed at preflight; never inferred by surfaces."
303
+ },
191
304
  "web": {
192
305
  "type": "object",
193
306
  "properties": {
@@ -388,6 +501,50 @@
388
501
  "additionalProperties": false,
389
502
  "description": "Contract/outcome truth for one attempt; tool errors are tracked separately from deliverable production.",
390
503
  "default": {}
504
+ },
505
+ "usage": {
506
+ "type": "object",
507
+ "properties": {
508
+ "input_tokens": {
509
+ "anyOf": [
510
+ {
511
+ "type": "integer",
512
+ "minimum": 0
513
+ },
514
+ {
515
+ "type": "null"
516
+ }
517
+ ],
518
+ "default": null
519
+ },
520
+ "output_tokens": {
521
+ "anyOf": [
522
+ {
523
+ "type": "integer",
524
+ "minimum": 0
525
+ },
526
+ {
527
+ "type": "null"
528
+ }
529
+ ],
530
+ "default": null
531
+ },
532
+ "cached_input_tokens": {
533
+ "anyOf": [
534
+ {
535
+ "type": "integer",
536
+ "minimum": 0
537
+ },
538
+ {
539
+ "type": "null"
540
+ }
541
+ ],
542
+ "default": null
543
+ }
544
+ },
545
+ "additionalProperties": false,
546
+ "description": "Token usage summed from harness usage events; money is tracked separately in the budget ledger, not here. Each field is null until a harness reports it (cursor reports cost only; raw-api has no cached), so unreported never reads as 0. Do NOT sum into a grand total: codex cached is a subset of input while claude cached is disjoint from input.",
547
+ "default": {}
391
548
  }
392
549
  },
393
550
  "required": [
@@ -401,12 +558,135 @@
401
558
  "default": [],
402
559
  "description": "Per-attempt telemetry records."
403
560
  },
561
+ "request_requirements": {
562
+ "type": "array",
563
+ "items": {
564
+ "$ref": "#/definitions/RunTelemetry/properties/attempts/items/properties/request_requirements/items"
565
+ },
566
+ "default": [],
567
+ "description": "All selected-lane capability receipts for this run."
568
+ },
404
569
  "tool_warnings_total": {
405
570
  "type": "integer",
406
571
  "minimum": 0,
407
572
  "default": 0,
408
573
  "description": "Sum of attempt tool warnings; rendered separately from terminal state."
409
574
  },
575
+ "usage_totals": {
576
+ "$ref": "#/definitions/RunTelemetry/properties/attempts/items/properties/usage",
577
+ "default": {},
578
+ "description": "Token usage summed from harness usage events; money is tracked separately in the budget ledger, not here. Each field is null until a harness reports it (cursor reports cost only; raw-api has no cached), so unreported never reads as 0. Do NOT sum into a grand total: codex cached is a subset of input while claude cached is disjoint from input."
579
+ },
580
+ "auth_route": {
581
+ "anyOf": [
582
+ {
583
+ "type": "object",
584
+ "properties": {
585
+ "requested": {
586
+ "type": "string",
587
+ "enum": [
588
+ "subscription",
589
+ "api_key",
590
+ "auto"
591
+ ],
592
+ "description": "Preferred auth route: subscription (native/OAuth session), api_key (a stored API key), or auto (engine picks subscription-first with policy fallback). A preference, not a secret."
593
+ },
594
+ "effective": {
595
+ "anyOf": [
596
+ {
597
+ "$ref": "#/definitions/RunTelemetry/properties/attempts/items/properties/auth_mode/anyOf/0"
598
+ },
599
+ {
600
+ "type": "null"
601
+ }
602
+ ],
603
+ "description": "Auth mode a route runs under: a native local session, an API key, or unknown.",
604
+ "default": null
605
+ },
606
+ "source": {
607
+ "anyOf": [
608
+ {
609
+ "$ref": "#/definitions/RunTelemetry/properties/attempts/items/properties/auth_source/anyOf/0"
610
+ },
611
+ {
612
+ "type": "null"
613
+ }
614
+ ],
615
+ "description": "Concrete credential source used or probed by a harness.",
616
+ "default": null
617
+ },
618
+ "reason": {
619
+ "type": "string",
620
+ "enum": [
621
+ "as_requested",
622
+ "native_first",
623
+ "no_native_session_fallback",
624
+ "requested_route_unavailable",
625
+ "undisclosed"
626
+ ],
627
+ "description": "Deterministic reason for the effective auth route: as_requested, native_first (auto, INV-061), no_native_session_fallback (auto downgraded to api_key), requested_route_unavailable (explicit preference contradicted), or undisclosed."
628
+ },
629
+ "harness_id": {
630
+ "type": [
631
+ "string",
632
+ "null"
633
+ ],
634
+ "default": null
635
+ },
636
+ "attempt_id": {
637
+ "type": [
638
+ "string",
639
+ "null"
640
+ ],
641
+ "default": null
642
+ },
643
+ "profile_id": {
644
+ "type": [
645
+ "string",
646
+ "null"
647
+ ],
648
+ "default": null,
649
+ "description": "Credential profile the deciding attempt ran under; null = engine-default credentials."
650
+ },
651
+ "model_mismatch": {
652
+ "anyOf": [
653
+ {
654
+ "type": "object",
655
+ "properties": {
656
+ "requested": {
657
+ "type": "string"
658
+ },
659
+ "observed": {
660
+ "type": "string"
661
+ }
662
+ },
663
+ "required": [
664
+ "requested",
665
+ "observed"
666
+ ],
667
+ "additionalProperties": false
668
+ },
669
+ {
670
+ "type": "null"
671
+ }
672
+ ],
673
+ "default": null,
674
+ "description": "Requested-vs-observed model mismatch on the deciding attempt; null when they match or either side is unknown."
675
+ }
676
+ },
677
+ "required": [
678
+ "requested",
679
+ "reason"
680
+ ],
681
+ "additionalProperties": false
682
+ },
683
+ {
684
+ "type": "null"
685
+ }
686
+ ],
687
+ "default": null,
688
+ "description": "Auth route receipt: requested preference, disclosed effective route/source, deterministic reason, and the disclosing attempt; surfaces project it verbatim."
689
+ },
410
690
  "generated_at": {
411
691
  "type": "string",
412
692
  "minLength": 1,
@@ -10,16 +10,13 @@
10
10
  },
11
11
  "backend": {
12
12
  "type": "string",
13
- "enum": [
14
- "keychain",
15
- "file"
16
- ],
17
- "description": "Where the secret is stored: the OS keychain or a file store."
13
+ "const": "file",
14
+ "description": "Claudexor v2 file secret store."
18
15
  },
19
16
  "present": {
20
17
  "type": "boolean",
21
18
  "default": true,
22
- "description": "Whether a value is actually stored."
19
+ "description": "Whether a value is stored."
23
20
  }
24
21
  },
25
22
  "required": [
@@ -27,7 +24,7 @@
27
24
  "backend"
28
25
  ],
29
26
  "additionalProperties": false,
30
- "description": "Secret list row: name, storage backend, and presence — never the value."
27
+ "description": "Secret metadata; never the value."
31
28
  }
32
29
  },
33
30
  "$schema": "http://json-schema.org/draft-07/schema#"
@@ -36,6 +36,20 @@
36
36
  "description": "How the session can be continued on its native CLI: resume_by_id when a native session id exists, none otherwise.",
37
37
  "default": "none"
38
38
  },
39
+ "profile_id": {
40
+ "anyOf": [
41
+ {
42
+ "type": "string",
43
+ "minLength": 1,
44
+ "description": "Non-empty identifier string."
45
+ },
46
+ {
47
+ "type": "null"
48
+ }
49
+ ],
50
+ "description": "Credential profile the vendor session was created under; resume never crosses profiles (null = engine-default credentials).",
51
+ "default": null
52
+ },
39
53
  "last_observed_model": {
40
54
  "type": [
41
55
  "string",
@@ -128,27 +128,138 @@
128
128
  "items": {
129
129
  "type": "object",
130
130
  "properties": {
131
- "id": {
131
+ "program": {
132
132
  "type": "string",
133
133
  "minLength": 1,
134
- "description": "Test command id."
134
+ "pattern": "\\S",
135
+ "description": "Executable invoked directly without an implicit shell."
136
+ },
137
+ "args": {
138
+ "type": "array",
139
+ "items": {
140
+ "type": "string"
141
+ },
142
+ "default": [],
143
+ "description": "Exact argv passed to the executable."
144
+ },
145
+ "cwd": {
146
+ "type": "string",
147
+ "description": "Optional project-relative working directory for the command."
135
148
  },
136
- "command": {
149
+ "envAllowlist": {
150
+ "type": "array",
151
+ "items": {
152
+ "type": "string",
153
+ "minLength": 1,
154
+ "pattern": "\\S",
155
+ "description": "User-supplied string that must contain visible content, not just whitespace."
156
+ },
157
+ "default": [],
158
+ "description": "Non-secret parent environment names explicitly forwarded to the command."
159
+ },
160
+ "id": {
137
161
  "type": "string",
138
- "description": "Shell command executed as a deterministic gate."
162
+ "minLength": 1,
163
+ "description": "Test command id."
139
164
  },
140
165
  "required": {
141
166
  "type": "boolean",
142
167
  "default": true,
143
168
  "description": "Whether this test must pass (vs advisory)."
169
+ },
170
+ "trust_required": {
171
+ "type": "boolean",
172
+ "default": false,
173
+ "description": "Whether this command originated in versioned project config."
174
+ },
175
+ "trust_grant": {
176
+ "anyOf": [
177
+ {
178
+ "type": "object",
179
+ "properties": {
180
+ "projectDigest": {
181
+ "type": "string",
182
+ "minLength": 1,
183
+ "description": "Digest of the canonical project identity."
184
+ },
185
+ "configDigest": {
186
+ "type": "string",
187
+ "minLength": 1,
188
+ "description": "Digest of the parsed versioned project config blob."
189
+ },
190
+ "commandDigest": {
191
+ "type": "string",
192
+ "minLength": 1,
193
+ "description": "Digest of the canonical command invocation."
194
+ },
195
+ "executablePath": {
196
+ "type": "string",
197
+ "description": "Resolved executable path approved by the operator."
198
+ },
199
+ "executableDigest": {
200
+ "type": "string",
201
+ "minLength": 1,
202
+ "description": "Digest of the resolved executable bytes."
203
+ },
204
+ "scriptPath": {
205
+ "type": [
206
+ "string",
207
+ "null"
208
+ ],
209
+ "default": null,
210
+ "description": "Resolved script path, when any."
211
+ },
212
+ "scriptDigest": {
213
+ "anyOf": [
214
+ {
215
+ "type": "string",
216
+ "minLength": 1,
217
+ "description": "Content hash in algo:hex form, e.g. \"sha256:abcd...\"."
218
+ },
219
+ {
220
+ "type": "null"
221
+ }
222
+ ],
223
+ "description": "Digest of the script bytes.",
224
+ "default": null
225
+ },
226
+ "accessProfile": {
227
+ "type": "string",
228
+ "enum": [
229
+ "readonly",
230
+ "workspace_write",
231
+ "full",
232
+ "external_sandbox_full",
233
+ "inherit_native"
234
+ ],
235
+ "description": "Effective access profile covered by this grant."
236
+ }
237
+ },
238
+ "required": [
239
+ "projectDigest",
240
+ "configDigest",
241
+ "commandDigest",
242
+ "executablePath",
243
+ "executableDigest",
244
+ "accessProfile"
245
+ ],
246
+ "additionalProperties": false,
247
+ "description": "External exact grant for one versioned project test command."
248
+ },
249
+ {
250
+ "type": "null"
251
+ }
252
+ ],
253
+ "description": "Matching external grant; null when none was found.",
254
+ "default": null
144
255
  }
145
256
  },
146
257
  "required": [
147
- "id",
148
- "command"
258
+ "program",
259
+ "id"
149
260
  ],
150
261
  "additionalProperties": false,
151
- "description": "A deterministic test command used as a verification gate."
262
+ "description": "A deterministic typed-argv test command used as a verification gate."
152
263
  },
153
264
  "default": [],
154
265
  "description": "Deterministic test commands frozen into the spec."