@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
@@ -0,0 +1,261 @@
1
+ {
2
+ "$ref": "#/definitions/ControlSpecSessionListResponse",
3
+ "definitions": {
4
+ "ControlSpecSessionListResponse": {
5
+ "type": "object",
6
+ "properties": {
7
+ "sessions": {
8
+ "type": "array",
9
+ "items": {
10
+ "type": "object",
11
+ "properties": {
12
+ "sessionId": {
13
+ "type": "string",
14
+ "minLength": 1,
15
+ "pattern": "\\S",
16
+ "description": "User-supplied string that must contain visible content, not just whitespace."
17
+ },
18
+ "prompt": {
19
+ "type": "string"
20
+ },
21
+ "scope": {
22
+ "type": "object",
23
+ "properties": {
24
+ "kind": {
25
+ "type": "string",
26
+ "const": "project"
27
+ },
28
+ "root": {
29
+ "type": "string"
30
+ },
31
+ "context": {
32
+ "type": "string",
33
+ "enum": [
34
+ "auto"
35
+ ],
36
+ "description": "Project context depth; auto is the only mode."
37
+ }
38
+ },
39
+ "required": [
40
+ "kind",
41
+ "root",
42
+ "context"
43
+ ],
44
+ "additionalProperties": false
45
+ },
46
+ "state": {
47
+ "type": "string",
48
+ "enum": [
49
+ "grounding",
50
+ "questions",
51
+ "answered",
52
+ "freezing",
53
+ "frozen",
54
+ "cancelled",
55
+ "failed",
56
+ "interrupted_unknown"
57
+ ]
58
+ },
59
+ "planRunId": {
60
+ "type": [
61
+ "string",
62
+ "null"
63
+ ]
64
+ },
65
+ "questions": {
66
+ "type": "array",
67
+ "items": {
68
+ "type": "object",
69
+ "properties": {
70
+ "id": {
71
+ "type": "string",
72
+ "minLength": 1,
73
+ "description": "Question id."
74
+ },
75
+ "tier": {
76
+ "type": "integer",
77
+ "minimum": 0,
78
+ "default": 0,
79
+ "description": "Hierarchical depth of the question (0 = foundational)."
80
+ },
81
+ "prompt": {
82
+ "type": "string",
83
+ "description": "The question text shown to the user."
84
+ },
85
+ "kind": {
86
+ "type": "string",
87
+ "enum": [
88
+ "single",
89
+ "multi",
90
+ "text"
91
+ ],
92
+ "description": "Answer shape of an interview question: single choice, multiple choice, or free text.",
93
+ "default": "single"
94
+ },
95
+ "options": {
96
+ "type": "array",
97
+ "items": {
98
+ "type": "object",
99
+ "properties": {
100
+ "id": {
101
+ "type": "string",
102
+ "minLength": 1,
103
+ "description": "Option id."
104
+ },
105
+ "label": {
106
+ "type": "string",
107
+ "description": "Human-readable option label."
108
+ }
109
+ },
110
+ "required": [
111
+ "id",
112
+ "label"
113
+ ],
114
+ "additionalProperties": false,
115
+ "description": "One selectable option of an interview question."
116
+ },
117
+ "default": [],
118
+ "description": "Selectable options; empty for pure free-text questions."
119
+ },
120
+ "allow_text": {
121
+ "type": "boolean",
122
+ "default": false,
123
+ "description": "Whether free-text is accepted in addition to or instead of options."
124
+ },
125
+ "rationale": {
126
+ "type": "string",
127
+ "description": "Why this question matters for the spec."
128
+ }
129
+ },
130
+ "required": [
131
+ "id",
132
+ "prompt"
133
+ ],
134
+ "additionalProperties": false,
135
+ "description": "One quiz card of the spec interview."
136
+ }
137
+ },
138
+ "answers": {
139
+ "type": "array",
140
+ "items": {
141
+ "type": "object",
142
+ "properties": {
143
+ "question_id": {
144
+ "type": "string",
145
+ "minLength": 1,
146
+ "description": "Id of the question being answered."
147
+ },
148
+ "option_ids": {
149
+ "type": "array",
150
+ "items": {
151
+ "type": "string",
152
+ "minLength": 1,
153
+ "description": "Non-empty identifier string."
154
+ },
155
+ "default": [],
156
+ "description": "Ids of the selected options."
157
+ },
158
+ "text": {
159
+ "type": [
160
+ "string",
161
+ "null"
162
+ ],
163
+ "default": null,
164
+ "description": "Free-text answer; null when only options were selected."
165
+ }
166
+ },
167
+ "required": [
168
+ "question_id"
169
+ ],
170
+ "additionalProperties": false,
171
+ "description": "The user's answer to one interview question."
172
+ }
173
+ },
174
+ "priorDecisions": {
175
+ "type": "array",
176
+ "items": {
177
+ "type": "object",
178
+ "properties": {
179
+ "question": {
180
+ "type": "string",
181
+ "description": "Question asked in a prior tier."
182
+ },
183
+ "answer": {
184
+ "type": "string",
185
+ "description": "The user's answer."
186
+ }
187
+ },
188
+ "required": [
189
+ "question",
190
+ "answer"
191
+ ],
192
+ "additionalProperties": false
193
+ }
194
+ },
195
+ "specId": {
196
+ "type": [
197
+ "string",
198
+ "null"
199
+ ]
200
+ },
201
+ "specDir": {
202
+ "type": [
203
+ "string",
204
+ "null"
205
+ ]
206
+ },
207
+ "specPath": {
208
+ "type": [
209
+ "string",
210
+ "null"
211
+ ]
212
+ },
213
+ "specHash": {
214
+ "type": [
215
+ "string",
216
+ "null"
217
+ ]
218
+ },
219
+ "error": {
220
+ "type": [
221
+ "string",
222
+ "null"
223
+ ]
224
+ },
225
+ "createdAt": {
226
+ "type": "string"
227
+ },
228
+ "updatedAt": {
229
+ "type": "string"
230
+ }
231
+ },
232
+ "required": [
233
+ "sessionId",
234
+ "prompt",
235
+ "scope",
236
+ "state",
237
+ "planRunId",
238
+ "questions",
239
+ "answers",
240
+ "priorDecisions",
241
+ "specId",
242
+ "specDir",
243
+ "specPath",
244
+ "specHash",
245
+ "error",
246
+ "createdAt",
247
+ "updatedAt"
248
+ ],
249
+ "additionalProperties": false,
250
+ "description": "Durable public projection of a spec interview session."
251
+ }
252
+ }
253
+ },
254
+ "required": [
255
+ "sessions"
256
+ ],
257
+ "additionalProperties": false
258
+ }
259
+ },
260
+ "$schema": "http://json-schema.org/draft-07/schema#"
261
+ }
@@ -71,21 +71,51 @@
71
71
  "default": [],
72
72
  "description": "Sticky eligible harness pool; empty = the engine auto-pools."
73
73
  },
74
+ "credentialProfileId": {
75
+ "anyOf": [
76
+ {
77
+ "type": "string",
78
+ "minLength": 1,
79
+ "description": "Non-empty identifier string."
80
+ },
81
+ {
82
+ "type": "null"
83
+ }
84
+ ],
85
+ "description": "Sticky credential profile for the thread; per-turn selection wins, null = engine-default credentials.",
86
+ "default": null
87
+ },
74
88
  "state": {
75
89
  "type": "string",
76
90
  "enum": [
77
91
  "active",
78
- "closed"
92
+ "closed",
93
+ "trashed",
94
+ "purged"
79
95
  ],
80
- "description": "Thread lifecycle state: active or explicitly closed (archived). Blocked is a live projection, not a thread state.",
96
+ "description": "Thread lifecycle state: active, closed, trashed for recovery, or terminally purged.",
81
97
  "default": "active"
82
98
  },
99
+ "trashedAt": {
100
+ "type": [
101
+ "string",
102
+ "null"
103
+ ],
104
+ "default": null,
105
+ "description": "When the thread entered trash."
106
+ },
107
+ "purgeAfter": {
108
+ "type": [
109
+ "string",
110
+ "null"
111
+ ],
112
+ "default": null,
113
+ "description": "When trash retention expires."
114
+ },
83
115
  "runIds": {
84
116
  "type": "array",
85
117
  "items": {
86
- "type": "string",
87
- "minLength": 1,
88
- "description": "Non-empty identifier string."
118
+ "$ref": "#/definitions/ControlThread/properties/credentialProfileId/anyOf/0"
89
119
  },
90
120
  "default": [],
91
121
  "description": "Ordered run lineage of the thread."
@@ -93,7 +123,7 @@
93
123
  "headRunId": {
94
124
  "anyOf": [
95
125
  {
96
- "$ref": "#/definitions/ControlThread/properties/runIds/items"
126
+ "$ref": "#/definitions/ControlThread/properties/credentialProfileId/anyOf/0"
97
127
  },
98
128
  {
99
129
  "type": "null"
@@ -33,6 +33,145 @@
33
33
  ],
34
34
  "default": null,
35
35
  "description": "Human-readable detail."
36
+ },
37
+ "delivery": {
38
+ "anyOf": [
39
+ {
40
+ "type": "object",
41
+ "properties": {
42
+ "mode": {
43
+ "type": "string",
44
+ "enum": [
45
+ "artifact_only",
46
+ "apply",
47
+ "branch",
48
+ "commit",
49
+ "pr"
50
+ ]
51
+ },
52
+ "applied": {
53
+ "type": "boolean"
54
+ },
55
+ "branch": {
56
+ "type": "string"
57
+ },
58
+ "commit": {
59
+ "type": "string"
60
+ },
61
+ "prUrl": {
62
+ "type": "string"
63
+ },
64
+ "detail": {
65
+ "type": "string"
66
+ },
67
+ "treeMutated": {
68
+ "type": "boolean"
69
+ },
70
+ "refused": {
71
+ "type": "boolean"
72
+ },
73
+ "finalVerify": {
74
+ "type": "object",
75
+ "properties": {
76
+ "attempted": {
77
+ "type": "boolean",
78
+ "description": "Whether the final verify was attempted."
79
+ },
80
+ "base_sha": {
81
+ "type": [
82
+ "string",
83
+ "null"
84
+ ],
85
+ "default": null,
86
+ "description": "Base SHA the verify tree was created from (the winner envelope's base)."
87
+ },
88
+ "applied_cleanly": {
89
+ "type": [
90
+ "boolean",
91
+ "null"
92
+ ],
93
+ "default": null,
94
+ "description": "Whether the patch applied cleanly onto the fresh tree; null when not attempted."
95
+ },
96
+ "gates_passed": {
97
+ "type": [
98
+ "boolean",
99
+ "null"
100
+ ],
101
+ "default": null,
102
+ "description": "Whether the re-run deterministic gates passed; null when not attempted."
103
+ },
104
+ "gates": {
105
+ "type": "array",
106
+ "items": {
107
+ "type": "object",
108
+ "properties": {
109
+ "id": {
110
+ "type": "string",
111
+ "description": "Gate id."
112
+ },
113
+ "status": {
114
+ "type": "string",
115
+ "description": "Gate status."
116
+ }
117
+ },
118
+ "required": [
119
+ "id",
120
+ "status"
121
+ ],
122
+ "additionalProperties": false
123
+ },
124
+ "default": [],
125
+ "description": "Per-gate re-run results."
126
+ },
127
+ "duration_ms": {
128
+ "anyOf": [
129
+ {
130
+ "type": "integer",
131
+ "minimum": 0
132
+ },
133
+ {
134
+ "type": "null"
135
+ }
136
+ ],
137
+ "default": null,
138
+ "description": "How long the verify took, in milliseconds."
139
+ },
140
+ "reason": {
141
+ "type": [
142
+ "string",
143
+ "null"
144
+ ],
145
+ "default": null,
146
+ "description": "Typed reason when attempted=false (e.g. no_patch, no_base_sha) or a failure detail."
147
+ }
148
+ },
149
+ "required": [
150
+ "attempted"
151
+ ],
152
+ "additionalProperties": false,
153
+ "description": "Fresh verifier evidence for this delivery attempt."
154
+ },
155
+ "targetPreimageSha": {
156
+ "type": "string",
157
+ "description": "Target snapshot verified immediately before delivery."
158
+ }
159
+ },
160
+ "required": [
161
+ "mode",
162
+ "applied",
163
+ "finalVerify",
164
+ "targetPreimageSha"
165
+ ],
166
+ "additionalProperties": false,
167
+ "description": "Immutable receipt for a freshly verified delivery attempt."
168
+ },
169
+ {
170
+ "type": "null"
171
+ }
172
+ ],
173
+ "description": "Fresh verifier, target preimage, and mutation receipt; null when no delivery ran.",
174
+ "default": null
36
175
  }
37
176
  },
38
177
  "required": [
@@ -85,16 +85,20 @@
85
85
  ],
86
86
  "description": "Per-thread auth preference override."
87
87
  },
88
- "primaryHarness": {
88
+ "credentialProfileId": {
89
89
  "type": "string",
90
90
  "minLength": 1,
91
91
  "pattern": "\\S",
92
+ "description": "Sticky credential profile for the thread (INV-135); per-turn selection wins."
93
+ },
94
+ "primaryHarness": {
95
+ "$ref": "#/definitions/ControlThreadCreateRequest/properties/credentialProfileId",
92
96
  "description": "Sticky primary harness for the thread."
93
97
  },
94
98
  "eligibleHarnesses": {
95
99
  "type": "array",
96
100
  "items": {
97
- "$ref": "#/definitions/ControlThreadCreateRequest/properties/primaryHarness"
101
+ "$ref": "#/definitions/ControlThreadCreateRequest/properties/credentialProfileId"
98
102
  },
99
103
  "description": "Sticky eligible harness pool; turns inherit it when unset."
100
104
  }
@@ -74,21 +74,51 @@
74
74
  "default": [],
75
75
  "description": "Sticky eligible harness pool; empty = the engine auto-pools."
76
76
  },
77
+ "credentialProfileId": {
78
+ "anyOf": [
79
+ {
80
+ "type": "string",
81
+ "minLength": 1,
82
+ "description": "Non-empty identifier string."
83
+ },
84
+ {
85
+ "type": "null"
86
+ }
87
+ ],
88
+ "description": "Sticky credential profile for the thread; per-turn selection wins, null = engine-default credentials.",
89
+ "default": null
90
+ },
77
91
  "state": {
78
92
  "type": "string",
79
93
  "enum": [
80
94
  "active",
81
- "closed"
95
+ "closed",
96
+ "trashed",
97
+ "purged"
82
98
  ],
83
- "description": "Thread lifecycle state: active or explicitly closed (archived). Blocked is a live projection, not a thread state.",
99
+ "description": "Thread lifecycle state: active, closed, trashed for recovery, or terminally purged.",
84
100
  "default": "active"
85
101
  },
102
+ "trashedAt": {
103
+ "type": [
104
+ "string",
105
+ "null"
106
+ ],
107
+ "default": null,
108
+ "description": "When the thread entered trash."
109
+ },
110
+ "purgeAfter": {
111
+ "type": [
112
+ "string",
113
+ "null"
114
+ ],
115
+ "default": null,
116
+ "description": "When trash retention expires."
117
+ },
86
118
  "runIds": {
87
119
  "type": "array",
88
120
  "items": {
89
- "type": "string",
90
- "minLength": 1,
91
- "description": "Non-empty identifier string."
121
+ "$ref": "#/definitions/ControlThreadDetail/properties/thread/properties/credentialProfileId/anyOf/0"
92
122
  },
93
123
  "default": [],
94
124
  "description": "Ordered run lineage of the thread."
@@ -96,7 +126,7 @@
96
126
  "headRunId": {
97
127
  "anyOf": [
98
128
  {
99
- "$ref": "#/definitions/ControlThreadDetail/properties/thread/properties/runIds/items"
129
+ "$ref": "#/definitions/ControlThreadDetail/properties/thread/properties/credentialProfileId/anyOf/0"
100
130
  },
101
131
  {
102
132
  "type": "null"
@@ -163,6 +193,18 @@
163
193
  "default": null,
164
194
  "description": "Model last observed on the session's stream."
165
195
  },
196
+ "profileId": {
197
+ "anyOf": [
198
+ {
199
+ "$ref": "#/definitions/ControlThreadDetail/properties/thread/properties/credentialProfileId/anyOf/0"
200
+ },
201
+ {
202
+ "type": "null"
203
+ }
204
+ ],
205
+ "description": "Credential profile the vendor session was created under; resume never crosses profiles (null = engine-default credentials).",
206
+ "default": null
207
+ },
166
208
  "state": {
167
209
  "type": "string",
168
210
  "enum": [
@@ -203,7 +245,7 @@
203
245
  "runId": {
204
246
  "anyOf": [
205
247
  {
206
- "$ref": "#/definitions/ControlThreadDetail/properties/thread/properties/runIds/items"
248
+ "$ref": "#/definitions/ControlThreadDetail/properties/thread/properties/credentialProfileId/anyOf/0"
207
249
  },
208
250
  {
209
251
  "type": "null"
@@ -215,7 +257,7 @@
215
257
  "parentRunId": {
216
258
  "anyOf": [
217
259
  {
218
- "$ref": "#/definitions/ControlThreadDetail/properties/thread/properties/runIds/items"
260
+ "$ref": "#/definitions/ControlThreadDetail/properties/thread/properties/credentialProfileId/anyOf/0"
219
261
  },
220
262
  {
221
263
  "type": "null"
@@ -227,7 +269,7 @@
227
269
  "planRunId": {
228
270
  "anyOf": [
229
271
  {
230
- "$ref": "#/definitions/ControlThreadDetail/properties/thread/properties/runIds/items"
272
+ "$ref": "#/definitions/ControlThreadDetail/properties/thread/properties/credentialProfileId/anyOf/0"
231
273
  },
232
274
  {
233
275
  "type": "null"
@@ -268,12 +310,14 @@
268
310
  "review_not_run",
269
311
  "failed",
270
312
  "cancelled",
271
- "interrupted",
313
+ "interrupted_unknown",
314
+ "cost_unverifiable",
315
+ "exhausted_overshoot",
272
316
  "exhausted",
273
317
  "not_converged",
274
318
  "stuck_no_progress"
275
319
  ],
276
- "description": "Control-plane run state: queued/running while live; blocked awaiting a human; then a terminal outcome (succeeded, no_op, ungated, review_not_run, failed, cancelled, interrupted, exhausted, not_converged, stuck_no_progress)."
320
+ "description": "Control-plane run state: queued/running while live, then an honest success, block, failure, interruption, cost, exhaustion, non-convergence, or cancellation terminal."
277
321
  },
278
322
  "mode": {
279
323
  "$ref": "#/definitions/ControlThreadDetail/properties/thread/properties/mode",
@@ -392,6 +436,14 @@
392
436
  "default": null,
393
437
  "description": "Tree SHA right after this turn's mutation; revert refuses if the working tree has diverged from this since."
394
438
  },
439
+ "revertAnchorId": {
440
+ "type": [
441
+ "string",
442
+ "null"
443
+ ],
444
+ "default": null,
445
+ "description": "GC-independent revert anchor."
446
+ },
395
447
  "revertable": {
396
448
  "type": "boolean",
397
449
  "default": false,
@@ -407,7 +459,7 @@
407
459
  "number",
408
460
  "null"
409
461
  ],
410
- "description": "Settled spend in USD; null when unknown."
462
+ "description": "Settled cash in USD; null when unknown."
411
463
  },
412
464
  "outputReadyState": {
413
465
  "type": "string",