@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
@@ -14,21 +14,22 @@
14
14
  "enum": [
15
15
  "codex",
16
16
  "claude",
17
- "cursor",
18
- "opencode",
19
- "raw"
17
+ "cursor"
20
18
  ],
21
- "description": "Harness ids that have a managed setup flow."
19
+ "description": "Harness ids with a managed native-login flow."
22
20
  },
23
21
  "action": {
24
22
  "type": "string",
25
- "enum": [
26
- "install",
27
- "login",
28
- "doctor",
29
- "store_key"
23
+ "const": "login",
24
+ "description": "The daemon-managed native-login action."
25
+ },
26
+ "profileId": {
27
+ "type": [
28
+ "string",
29
+ "null"
30
30
  ],
31
- "description": "Setup action to perform: install the vendor CLI, log in, run the doctor, or store an API key."
31
+ "default": null,
32
+ "description": "Registered profile this login targets; null = the default session."
32
33
  },
33
34
  "state": {
34
35
  "type": "string",
@@ -39,17 +40,79 @@
39
40
  "succeeded",
40
41
  "failed",
41
42
  "cancelled",
43
+ "timed_out",
44
+ "interrupted_unknown",
42
45
  "not_supported"
43
46
  ],
44
47
  "description": "Lifecycle state of a setup job, including waiting_for_input (needs user confirmation/input) and not_supported."
45
48
  },
49
+ "phase": {
50
+ "type": "string",
51
+ "enum": [
52
+ "preparing",
53
+ "launching",
54
+ "awaiting_user",
55
+ "verifying",
56
+ "cancelling",
57
+ "completed"
58
+ ],
59
+ "description": "Fine-grained setup phase; cancellation remains a phase until the underlying process has actually stopped."
60
+ },
61
+ "deadlineAt": {
62
+ "type": "string",
63
+ "format": "date-time",
64
+ "description": "Current native-login deadline when the job has one."
65
+ },
66
+ "outcome": {
67
+ "type": "object",
68
+ "properties": {
69
+ "reason": {
70
+ "type": "string",
71
+ "enum": [
72
+ "completed",
73
+ "not_supported",
74
+ "launch_failed",
75
+ "command_failed",
76
+ "auth_not_ready",
77
+ "capability_verification_failed",
78
+ "credential_route_mismatch",
79
+ "timed_out",
80
+ "cancelled_by_user",
81
+ "cancelled_on_restart",
82
+ "interrupted",
83
+ "interrupted_unknown",
84
+ "termination_unconfirmed"
85
+ ]
86
+ },
87
+ "exitCode": {
88
+ "anyOf": [
89
+ {
90
+ "type": "integer"
91
+ },
92
+ {
93
+ "type": "null"
94
+ }
95
+ ]
96
+ },
97
+ "signal": {
98
+ "type": [
99
+ "string",
100
+ "null"
101
+ ]
102
+ }
103
+ },
104
+ "required": [
105
+ "reason"
106
+ ],
107
+ "additionalProperties": false,
108
+ "description": "Typed terminal setup outcome with native command evidence when available."
109
+ },
46
110
  "command": {
47
111
  "type": [
48
112
  "string",
49
113
  "null"
50
114
  ],
51
- "default": null,
52
- "description": "Shell command the job runs, when applicable."
115
+ "description": "Display-only native-login command description, when available."
53
116
  },
54
117
  "guideUrl": {
55
118
  "anyOf": [
@@ -61,75 +124,713 @@
61
124
  "type": "null"
62
125
  }
63
126
  ],
64
- "default": null,
65
- "description": "Vendor guide URL for manual steps, when applicable."
66
- },
67
- "logPath": {
68
- "type": [
69
- "string",
70
- "null"
71
- ],
72
- "default": null,
73
- "description": "On-disk log path for the job's output."
127
+ "description": "Official vendor login guide URL."
74
128
  },
75
129
  "message": {
76
130
  "type": "string",
77
131
  "description": "Human-readable status message."
78
132
  },
79
- "riskFlags": {
80
- "type": "array",
81
- "items": {
82
- "type": "string"
83
- },
84
- "default": [],
85
- "description": "Risk flags for the action (e.g. network_download, shell_pipe), surfaced before confirmation."
86
- },
87
- "requiresConfirmation": {
88
- "type": "boolean",
89
- "default": false,
90
- "description": "Whether the job waits for explicit user confirmation before running."
91
- },
92
133
  "createdAt": {
93
134
  "type": "string",
135
+ "format": "date-time",
94
136
  "description": "When the job was created."
95
137
  },
96
138
  "startedAt": {
97
- "type": [
98
- "string",
99
- "null"
139
+ "anyOf": [
140
+ {
141
+ "$ref": "#/definitions/ControlSetupJob/properties/deadlineAt"
142
+ },
143
+ {
144
+ "type": "null"
145
+ }
100
146
  ],
101
- "default": null,
102
147
  "description": "When the job started running."
103
148
  },
104
- "firstOutputAt": {
105
- "type": [
106
- "string",
107
- "null"
149
+ "finishedAt": {
150
+ "anyOf": [
151
+ {
152
+ "$ref": "#/definitions/ControlSetupJob/properties/deadlineAt"
153
+ },
154
+ {
155
+ "type": "null"
156
+ }
108
157
  ],
109
- "default": null,
110
- "description": "When the job produced its first output."
158
+ "description": "When the job finished."
111
159
  },
112
- "lastOutputAt": {
113
- "type": [
114
- "string",
115
- "null"
160
+ "authCapability": {
161
+ "anyOf": [
162
+ {
163
+ "type": "object",
164
+ "properties": {
165
+ "attemptId": {
166
+ "type": "string",
167
+ "minLength": 1,
168
+ "description": "Non-empty identifier string."
169
+ },
170
+ "challengeDigest": {
171
+ "type": "string",
172
+ "pattern": "^[a-f0-9]{64}$"
173
+ },
174
+ "requestDigest": {
175
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/challengeDigest"
176
+ },
177
+ "disclosure": {
178
+ "type": "object",
179
+ "properties": {
180
+ "schemaVersion": {
181
+ "type": "number",
182
+ "const": 1
183
+ },
184
+ "protocolVersion": {
185
+ "type": "number",
186
+ "const": 1
187
+ },
188
+ "harness": {
189
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/attemptId"
190
+ },
191
+ "requested": {
192
+ "type": "string",
193
+ "enum": [
194
+ "subscription",
195
+ "api_key",
196
+ "auto"
197
+ ],
198
+ "description": "Requested credential behavior: exact subscription, exact managed API key, or policy-governed auto selection."
199
+ },
200
+ "requiredRoute": {
201
+ "type": "string",
202
+ "enum": [
203
+ "vendor_native",
204
+ "managed_api_key",
205
+ "local"
206
+ ],
207
+ "description": "Effective credential route: vendor-owned native session, Claudexor-managed API key, or credential-free local execution."
208
+ },
209
+ "requiredSource": {
210
+ "type": "string",
211
+ "enum": [
212
+ "native_session",
213
+ "oauth_token_env",
214
+ "api_key_env",
215
+ "api_key_flag",
216
+ "provider_auth_file",
217
+ "none"
218
+ ],
219
+ "description": "Concrete credential source used or probed by a harness."
220
+ },
221
+ "networkScope": {
222
+ "type": "string",
223
+ "const": "selected_harness_only"
224
+ },
225
+ "billingKnowledge": {
226
+ "type": "string",
227
+ "enum": [
228
+ "proven_zero",
229
+ "subscription_entitlement",
230
+ "metered",
231
+ "unknown"
232
+ ],
233
+ "description": "What is actually known about incremental billing; a native credential route alone never proves entitlement or zero cost."
234
+ },
235
+ "incrementalCostKnowledge": {
236
+ "type": "string",
237
+ "enum": [
238
+ "exact",
239
+ "estimated",
240
+ "unknown"
241
+ ],
242
+ "description": "Quality of incremental-cash cost evidence for an operation."
243
+ },
244
+ "mayConsumeQuota": {
245
+ "type": "boolean"
246
+ },
247
+ "generatedAt": {
248
+ "type": "string",
249
+ "format": "date-time"
250
+ }
251
+ },
252
+ "required": [
253
+ "schemaVersion",
254
+ "protocolVersion",
255
+ "harness",
256
+ "requested",
257
+ "requiredRoute",
258
+ "requiredSource",
259
+ "networkScope",
260
+ "billingKnowledge",
261
+ "incrementalCostKnowledge",
262
+ "mayConsumeQuota",
263
+ "generatedAt"
264
+ ],
265
+ "additionalProperties": false,
266
+ "description": "Pre-execution disclosure for the exact same-harness capability smoke required by auth setup."
267
+ },
268
+ "state": {
269
+ "type": "string",
270
+ "const": "disclosed"
271
+ }
272
+ },
273
+ "required": [
274
+ "attemptId",
275
+ "challengeDigest",
276
+ "requestDigest",
277
+ "disclosure",
278
+ "state"
279
+ ],
280
+ "additionalProperties": false
281
+ },
282
+ {
283
+ "type": "object",
284
+ "properties": {
285
+ "attemptId": {
286
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/attemptId"
287
+ },
288
+ "challengeDigest": {
289
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/challengeDigest"
290
+ },
291
+ "requestDigest": {
292
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/challengeDigest"
293
+ },
294
+ "disclosure": {
295
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure"
296
+ },
297
+ "state": {
298
+ "type": "string",
299
+ "const": "running"
300
+ },
301
+ "startedAt": {
302
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
303
+ }
304
+ },
305
+ "required": [
306
+ "attemptId",
307
+ "challengeDigest",
308
+ "requestDigest",
309
+ "disclosure",
310
+ "state",
311
+ "startedAt"
312
+ ],
313
+ "additionalProperties": false
314
+ },
315
+ {
316
+ "type": "object",
317
+ "properties": {
318
+ "attemptId": {
319
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/attemptId"
320
+ },
321
+ "challengeDigest": {
322
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/challengeDigest"
323
+ },
324
+ "requestDigest": {
325
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/challengeDigest"
326
+ },
327
+ "disclosure": {
328
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure"
329
+ },
330
+ "state": {
331
+ "type": "string",
332
+ "const": "completed"
333
+ },
334
+ "startedAt": {
335
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
336
+ },
337
+ "completedAt": {
338
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
339
+ },
340
+ "receipt": {
341
+ "type": "object",
342
+ "properties": {
343
+ "receiptId": {
344
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/attemptId"
345
+ },
346
+ "attemptId": {
347
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/attemptId"
348
+ },
349
+ "harness": {
350
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/attemptId"
351
+ },
352
+ "requested": {
353
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure/properties/requested"
354
+ },
355
+ "requiredRoute": {
356
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure/properties/requiredRoute"
357
+ },
358
+ "requiredSource": {
359
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure/properties/requiredSource"
360
+ },
361
+ "effective": {
362
+ "anyOf": [
363
+ {
364
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure/properties/requiredRoute"
365
+ },
366
+ {
367
+ "type": "null"
368
+ }
369
+ ],
370
+ "description": "Effective credential route: vendor-owned native session, Claudexor-managed API key, or credential-free local execution."
371
+ },
372
+ "effectiveSource": {
373
+ "anyOf": [
374
+ {
375
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure/properties/requiredSource"
376
+ },
377
+ {
378
+ "type": "null"
379
+ }
380
+ ],
381
+ "description": "Concrete credential source used or probed by a harness."
382
+ },
383
+ "selectionReason": {
384
+ "type": "string",
385
+ "enum": [
386
+ "exact_requested_route",
387
+ "adapter_unavailable",
388
+ "request_mismatch",
389
+ "route_missing",
390
+ "route_mismatch",
391
+ "source_missing",
392
+ "source_mismatch",
393
+ "harness_error",
394
+ "adapter_error",
395
+ "missing_completion",
396
+ "response_mismatch",
397
+ "scratch_mutated",
398
+ "protocol_violation",
399
+ "adapter_identity_mismatch",
400
+ "cancelled"
401
+ ]
402
+ },
403
+ "availability": {
404
+ "type": "string",
405
+ "enum": [
406
+ "available",
407
+ "unavailable",
408
+ "unknown"
409
+ ]
410
+ },
411
+ "verification": {
412
+ "type": "string",
413
+ "enum": [
414
+ "passed",
415
+ "failed",
416
+ "not_run"
417
+ ]
418
+ },
419
+ "billingKnowledge": {
420
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure/properties/billingKnowledge"
421
+ },
422
+ "costKnowledge": {
423
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure/properties/incrementalCostKnowledge"
424
+ },
425
+ "costUsd": {
426
+ "type": "number",
427
+ "minimum": 0
428
+ },
429
+ "startedAt": {
430
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
431
+ },
432
+ "completedAt": {
433
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
434
+ },
435
+ "challengeDigest": {
436
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/challengeDigest"
437
+ },
438
+ "requestDigest": {
439
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/challengeDigest"
440
+ },
441
+ "responseDigest": {
442
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/challengeDigest"
443
+ },
444
+ "streamDigest": {
445
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/challengeDigest"
446
+ },
447
+ "scratchBeforeDigest": {
448
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/challengeDigest"
449
+ },
450
+ "scratchAfterDigest": {
451
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/challengeDigest"
452
+ },
453
+ "stream": {
454
+ "type": "object",
455
+ "properties": {
456
+ "startedEvents": {
457
+ "type": "integer",
458
+ "minimum": 0
459
+ },
460
+ "completedEvents": {
461
+ "type": "integer",
462
+ "minimum": 0
463
+ },
464
+ "errorEvents": {
465
+ "type": "integer",
466
+ "minimum": 0
467
+ },
468
+ "unexpectedToolEvents": {
469
+ "type": "integer",
470
+ "minimum": 0
471
+ },
472
+ "interactionEvents": {
473
+ "type": "integer",
474
+ "minimum": 0
475
+ },
476
+ "sessionMismatchEvents": {
477
+ "type": "integer",
478
+ "minimum": 0
479
+ },
480
+ "eventsAfterCompleted": {
481
+ "type": "integer",
482
+ "minimum": 0
483
+ },
484
+ "aborted": {
485
+ "type": "boolean"
486
+ }
487
+ },
488
+ "required": [
489
+ "startedEvents",
490
+ "completedEvents",
491
+ "errorEvents",
492
+ "unexpectedToolEvents",
493
+ "interactionEvents",
494
+ "sessionMismatchEvents",
495
+ "eventsAfterCompleted",
496
+ "aborted"
497
+ ],
498
+ "additionalProperties": false
499
+ },
500
+ "evidenceRefs": {
501
+ "type": "array",
502
+ "items": {
503
+ "type": "string",
504
+ "minLength": 1
505
+ }
506
+ }
507
+ },
508
+ "required": [
509
+ "receiptId",
510
+ "attemptId",
511
+ "harness",
512
+ "requested",
513
+ "requiredRoute",
514
+ "requiredSource",
515
+ "effective",
516
+ "effectiveSource",
517
+ "selectionReason",
518
+ "availability",
519
+ "verification",
520
+ "billingKnowledge",
521
+ "costKnowledge",
522
+ "startedAt",
523
+ "completedAt",
524
+ "challengeDigest",
525
+ "requestDigest",
526
+ "responseDigest",
527
+ "streamDigest",
528
+ "scratchBeforeDigest",
529
+ "scratchAfterDigest",
530
+ "stream",
531
+ "evidenceRefs"
532
+ ],
533
+ "additionalProperties": false,
534
+ "description": "Immutable result of one exact-route same-harness capability smoke."
535
+ }
536
+ },
537
+ "required": [
538
+ "attemptId",
539
+ "challengeDigest",
540
+ "requestDigest",
541
+ "disclosure",
542
+ "state",
543
+ "startedAt",
544
+ "completedAt",
545
+ "receipt"
546
+ ],
547
+ "additionalProperties": false
548
+ },
549
+ {
550
+ "type": "object",
551
+ "properties": {
552
+ "attemptId": {
553
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/attemptId"
554
+ },
555
+ "challengeDigest": {
556
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/challengeDigest"
557
+ },
558
+ "requestDigest": {
559
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/challengeDigest"
560
+ },
561
+ "disclosure": {
562
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure"
563
+ },
564
+ "state": {
565
+ "type": "string",
566
+ "const": "interrupted_unknown"
567
+ },
568
+ "startedAt": {
569
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
570
+ },
571
+ "interruptedAt": {
572
+ "$ref": "#/definitions/ControlSetupJob/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
573
+ }
574
+ },
575
+ "required": [
576
+ "attemptId",
577
+ "challengeDigest",
578
+ "requestDigest",
579
+ "disclosure",
580
+ "state",
581
+ "startedAt",
582
+ "interruptedAt"
583
+ ],
584
+ "additionalProperties": false
585
+ }
116
586
  ],
117
- "default": null,
118
- "description": "When the job last produced output."
587
+ "description": "Single durable lifecycle for the exact-route same-harness capability proof."
119
588
  },
120
- "finishedAt": {
121
- "type": [
122
- "string",
123
- "null"
589
+ "execution": {
590
+ "type": "object",
591
+ "properties": {
592
+ "executionId": {
593
+ "type": "string",
594
+ "pattern": "^[A-Za-z0-9-]+$"
595
+ },
596
+ "commandDigest": {
597
+ "type": "string",
598
+ "pattern": "^[a-f0-9]{64}$"
599
+ },
600
+ "manifestDigest": {
601
+ "$ref": "#/definitions/ControlSetupJob/properties/execution/properties/commandDigest"
602
+ },
603
+ "processGroup": {
604
+ "type": "object",
605
+ "properties": {
606
+ "schemaVersion": {
607
+ "type": "number",
608
+ "const": 1
609
+ },
610
+ "pgid": {
611
+ "type": "integer",
612
+ "exclusiveMinimum": 0
613
+ },
614
+ "leader": {
615
+ "type": "object",
616
+ "properties": {
617
+ "status": {
618
+ "type": "string",
619
+ "const": "known"
620
+ },
621
+ "pid": {
622
+ "type": "integer",
623
+ "exclusiveMinimum": 0
624
+ },
625
+ "platform": {
626
+ "type": "string",
627
+ "enum": [
628
+ "linux",
629
+ "darwin"
630
+ ]
631
+ },
632
+ "source": {
633
+ "type": "string",
634
+ "enum": [
635
+ "procfs_stat",
636
+ "proc_pidinfo"
637
+ ]
638
+ },
639
+ "startToken": {
640
+ "type": "string",
641
+ "minLength": 1
642
+ },
643
+ "processGroupId": {
644
+ "type": "integer",
645
+ "exclusiveMinimum": 0
646
+ }
647
+ },
648
+ "required": [
649
+ "status",
650
+ "pid",
651
+ "platform",
652
+ "source",
653
+ "startToken",
654
+ "processGroupId"
655
+ ],
656
+ "additionalProperties": false
657
+ }
658
+ },
659
+ "required": [
660
+ "schemaVersion",
661
+ "pgid",
662
+ "leader"
663
+ ],
664
+ "additionalProperties": false
665
+ },
666
+ "observedAt": {
667
+ "$ref": "#/definitions/ControlSetupJob/properties/deadlineAt"
668
+ },
669
+ "permitIssuedAt": {
670
+ "$ref": "#/definitions/ControlSetupJob/properties/deadlineAt"
671
+ }
672
+ },
673
+ "required": [
674
+ "executionId",
675
+ "commandDigest",
676
+ "manifestDigest",
677
+ "processGroup",
678
+ "observedAt"
124
679
  ],
125
- "default": null,
126
- "description": "When the job finished."
680
+ "additionalProperties": false,
681
+ "description": "Durable process-group and pre-execution permit evidence."
682
+ },
683
+ "authorization": {
684
+ "type": "object",
685
+ "properties": {
686
+ "executionId": {
687
+ "type": "string",
688
+ "pattern": "^[A-Za-z0-9-]+$"
689
+ },
690
+ "executable": {
691
+ "type": "object",
692
+ "properties": {
693
+ "realpath": {
694
+ "type": "string",
695
+ "pattern": "^\\/"
696
+ },
697
+ "sha256": {
698
+ "$ref": "#/definitions/ControlSetupJob/properties/execution/properties/commandDigest"
699
+ },
700
+ "size": {
701
+ "type": "integer",
702
+ "minimum": 0
703
+ },
704
+ "mode": {
705
+ "type": "integer",
706
+ "minimum": 0
707
+ },
708
+ "device": {
709
+ "type": "string",
710
+ "pattern": "^[0-9]+$"
711
+ },
712
+ "inode": {
713
+ "type": "string",
714
+ "pattern": "^[0-9]+$"
715
+ }
716
+ },
717
+ "required": [
718
+ "realpath",
719
+ "sha256",
720
+ "size",
721
+ "mode",
722
+ "device",
723
+ "inode"
724
+ ],
725
+ "additionalProperties": false
726
+ },
727
+ "args": {
728
+ "type": "array",
729
+ "items": {
730
+ "type": "string"
731
+ }
732
+ },
733
+ "commandDigest": {
734
+ "$ref": "#/definitions/ControlSetupJob/properties/execution/properties/commandDigest"
735
+ },
736
+ "manifestDigest": {
737
+ "$ref": "#/definitions/ControlSetupJob/properties/execution/properties/commandDigest"
738
+ }
739
+ },
740
+ "required": [
741
+ "executionId",
742
+ "executable",
743
+ "args",
744
+ "commandDigest",
745
+ "manifestDigest"
746
+ ],
747
+ "additionalProperties": false,
748
+ "description": "Immutable hash-bound command authorized before external handoff."
127
749
  },
128
- "retryCount": {
129
- "type": "integer",
130
- "minimum": 0,
131
- "default": 0,
132
- "description": "How many times the job was retried."
750
+ "nativeCommand": {
751
+ "type": "object",
752
+ "properties": {
753
+ "executionId": {
754
+ "type": "string",
755
+ "pattern": "^[A-Za-z0-9-]+$"
756
+ },
757
+ "commandDigest": {
758
+ "$ref": "#/definitions/ControlSetupJob/properties/execution/properties/commandDigest"
759
+ },
760
+ "manifestDigest": {
761
+ "$ref": "#/definitions/ControlSetupJob/properties/execution/properties/commandDigest"
762
+ },
763
+ "permitIssuedAt": {
764
+ "anyOf": [
765
+ {
766
+ "$ref": "#/definitions/ControlSetupJob/properties/deadlineAt"
767
+ },
768
+ {
769
+ "type": "null"
770
+ }
771
+ ]
772
+ },
773
+ "commandStarted": {
774
+ "type": "boolean"
775
+ },
776
+ "exitCode": {
777
+ "anyOf": [
778
+ {
779
+ "type": "integer",
780
+ "minimum": 0
781
+ },
782
+ {
783
+ "type": "null"
784
+ }
785
+ ]
786
+ },
787
+ "signal": {
788
+ "type": [
789
+ "string",
790
+ "null"
791
+ ]
792
+ },
793
+ "errorCode": {
794
+ "type": "string",
795
+ "enum": [
796
+ "permit_timeout",
797
+ "spawn_failed"
798
+ ]
799
+ },
800
+ "finishedAt": {
801
+ "$ref": "#/definitions/ControlSetupJob/properties/deadlineAt"
802
+ }
803
+ },
804
+ "required": [
805
+ "executionId",
806
+ "commandDigest",
807
+ "manifestDigest",
808
+ "permitIssuedAt",
809
+ "commandStarted",
810
+ "exitCode",
811
+ "signal",
812
+ "finishedAt"
813
+ ],
814
+ "additionalProperties": false,
815
+ "description": "Durable result of the hash-bound native login command, persisted before capability verification."
816
+ },
817
+ "terminationReconciliation": {
818
+ "type": "object",
819
+ "properties": {
820
+ "status": {
821
+ "type": "string",
822
+ "const": "empty"
823
+ },
824
+ "observedAt": {
825
+ "$ref": "#/definitions/ControlSetupJob/properties/deadlineAt"
826
+ }
827
+ },
828
+ "required": [
829
+ "status",
830
+ "observedAt"
831
+ ],
832
+ "additionalProperties": false,
833
+ "description": "Server-owned proof that a previously unconfirmed setup process group is empty."
133
834
  }
134
835
  },
135
836
  "required": [
@@ -137,11 +838,16 @@
137
838
  "harness",
138
839
  "action",
139
840
  "state",
841
+ "phase",
842
+ "command",
843
+ "guideUrl",
140
844
  "message",
141
- "createdAt"
845
+ "createdAt",
846
+ "startedAt",
847
+ "finishedAt"
142
848
  ],
143
849
  "additionalProperties": false,
144
- "description": "One managed harness setup job (install/login/doctor/store_key) with its lifecycle timestamps."
850
+ "description": "One daemon-managed exact-subscription native-login job."
145
851
  }
146
852
  },
147
853
  "$schema": "http://json-schema.org/draft-07/schema#"