@prismatic-io/lux 0.0.2-preview.4 → 0.0.2-preview.40

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 (753) hide show
  1. package/lib/answerers/claude-code/index.d.ts +15 -3
  2. package/lib/answerers/claude-code/index.d.ts.map +1 -1
  3. package/lib/answerers/claude-code/index.js +6 -5
  4. package/lib/answerers/claude-code/index.js.map +1 -1
  5. package/lib/answerers/persona/index.d.ts +44 -5
  6. package/lib/answerers/persona/index.d.ts.map +1 -1
  7. package/lib/answerers/persona/index.js +60 -34
  8. package/lib/answerers/persona/index.js.map +1 -1
  9. package/lib/answerers/terminal/index.d.ts +9 -3
  10. package/lib/answerers/terminal/index.d.ts.map +1 -1
  11. package/lib/answerers/terminal/index.js +6 -4
  12. package/lib/answerers/terminal/index.js.map +1 -1
  13. package/lib/assertions/authoring.d.ts +2 -2
  14. package/lib/assertions/authoring.d.ts.map +1 -1
  15. package/lib/assertions/authoring.js.map +1 -1
  16. package/lib/assertions/core/command-exits-zero.d.ts +5 -2
  17. package/lib/assertions/core/command-exits-zero.d.ts.map +1 -1
  18. package/lib/assertions/core/command-exits-zero.js +59 -14
  19. package/lib/assertions/core/command-exits-zero.js.map +1 -1
  20. package/lib/assertions/core/event-checks.d.ts +3 -0
  21. package/lib/assertions/core/event-checks.d.ts.map +1 -1
  22. package/lib/assertions/core/event-checks.js +49 -3
  23. package/lib/assertions/core/event-checks.js.map +1 -1
  24. package/lib/assertions/core/file-checks.d.ts +6 -0
  25. package/lib/assertions/core/file-checks.d.ts.map +1 -1
  26. package/lib/assertions/core/index.d.ts.map +1 -1
  27. package/lib/assertions/core/index.js +2 -1
  28. package/lib/assertions/core/index.js.map +1 -1
  29. package/lib/assertions/core/json-pointer-equals.d.ts +1 -0
  30. package/lib/assertions/core/json-pointer-equals.d.ts.map +1 -1
  31. package/lib/assertions/core/output-checks.d.ts +3 -0
  32. package/lib/assertions/core/output-checks.d.ts.map +1 -1
  33. package/lib/assertions/core/predicate.d.ts +1 -0
  34. package/lib/assertions/core/predicate.d.ts.map +1 -1
  35. package/lib/assertions/core/resource-checks.d.ts +25 -0
  36. package/lib/assertions/core/resource-checks.d.ts.map +1 -1
  37. package/lib/assertions/core/resource-checks.js +35 -5
  38. package/lib/assertions/core/resource-checks.js.map +1 -1
  39. package/lib/assertions/core/safe-regex.d.ts.map +1 -1
  40. package/lib/assertions/core/safe-regex.js +7 -1
  41. package/lib/assertions/core/safe-regex.js.map +1 -1
  42. package/lib/assertions/rubric/evidence.d.ts +88 -0
  43. package/lib/assertions/rubric/evidence.d.ts.map +1 -0
  44. package/lib/assertions/rubric/evidence.js +75 -0
  45. package/lib/assertions/rubric/evidence.js.map +1 -0
  46. package/lib/assertions/rubric/index.d.ts +88 -34
  47. package/lib/assertions/rubric/index.d.ts.map +1 -1
  48. package/lib/assertions/rubric/index.js +59 -43
  49. package/lib/assertions/rubric/index.js.map +1 -1
  50. package/lib/assertions/rubric/internal.d.ts +30 -5
  51. package/lib/assertions/rubric/internal.d.ts.map +1 -1
  52. package/lib/assertions/rubric/internal.js +203 -41
  53. package/lib/assertions/rubric/internal.js.map +1 -1
  54. package/lib/authoring.d.ts +37 -2
  55. package/lib/authoring.d.ts.map +1 -1
  56. package/lib/authoring.js +36 -1
  57. package/lib/authoring.js.map +1 -1
  58. package/lib/cli/bin.js +2 -13
  59. package/lib/cli/bin.js.map +1 -1
  60. package/lib/cli/command-runtime.d.ts +3 -3
  61. package/lib/cli/command-runtime.d.ts.map +1 -1
  62. package/lib/cli/command-runtime.js +17 -6
  63. package/lib/cli/command-runtime.js.map +1 -1
  64. package/lib/cli/doctor.d.ts +55 -0
  65. package/lib/cli/doctor.d.ts.map +1 -0
  66. package/lib/cli/doctor.js +14 -0
  67. package/lib/cli/doctor.js.map +1 -0
  68. package/lib/cli/harness-plan.d.ts +27 -0
  69. package/lib/cli/harness-plan.d.ts.map +1 -0
  70. package/lib/cli/harness-plan.js +75 -0
  71. package/lib/cli/harness-plan.js.map +1 -0
  72. package/lib/cli/init-templates.d.ts +11 -0
  73. package/lib/cli/init-templates.d.ts.map +1 -0
  74. package/lib/cli/init-templates.js +215 -0
  75. package/lib/cli/init-templates.js.map +1 -0
  76. package/lib/cli/init.d.ts +10 -0
  77. package/lib/cli/init.d.ts.map +1 -1
  78. package/lib/cli/init.js +34 -173
  79. package/lib/cli/init.js.map +1 -1
  80. package/lib/cli/output-schemas.d.ts +1412 -0
  81. package/lib/cli/output-schemas.d.ts.map +1 -0
  82. package/lib/cli/output-schemas.js +94 -0
  83. package/lib/cli/output-schemas.js.map +1 -0
  84. package/lib/cli/program.d.ts +140 -12
  85. package/lib/cli/program.d.ts.map +1 -1
  86. package/lib/cli/program.js +783 -650
  87. package/lib/cli/program.js.map +1 -1
  88. package/lib/cli/render/format.d.ts.map +1 -1
  89. package/lib/cli/render/format.js +1 -1
  90. package/lib/cli/render/format.js.map +1 -1
  91. package/lib/cli/render/reporter.d.ts.map +1 -1
  92. package/lib/cli/render/reporter.js +35 -8
  93. package/lib/cli/render/reporter.js.map +1 -1
  94. package/lib/cli/run-options.d.ts +19 -4
  95. package/lib/cli/run-options.d.ts.map +1 -1
  96. package/lib/cli/run-options.js +100 -19
  97. package/lib/cli/run-options.js.map +1 -1
  98. package/lib/cli/view.d.ts +15 -0
  99. package/lib/cli/view.d.ts.map +1 -0
  100. package/lib/cli/view.js +168 -0
  101. package/lib/cli/view.js.map +1 -0
  102. package/lib/container/driver.d.ts +27 -0
  103. package/lib/container/driver.d.ts.map +1 -0
  104. package/lib/container/driver.js +199 -0
  105. package/lib/container/driver.js.map +1 -0
  106. package/lib/container/paths.d.ts +3 -0
  107. package/lib/container/paths.d.ts.map +1 -0
  108. package/lib/container/paths.js +27 -0
  109. package/lib/container/paths.js.map +1 -0
  110. package/lib/container/protocol.d.ts +12 -0
  111. package/lib/container/protocol.d.ts.map +1 -0
  112. package/lib/container/protocol.js +38 -0
  113. package/lib/container/protocol.js.map +1 -0
  114. package/lib/container/resources.d.ts +14 -0
  115. package/lib/container/resources.d.ts.map +1 -0
  116. package/lib/container/resources.js +141 -0
  117. package/lib/container/resources.js.map +1 -0
  118. package/lib/container/worker.d.ts +2 -0
  119. package/lib/container/worker.d.ts.map +1 -0
  120. package/lib/container/worker.js +85 -0
  121. package/lib/container/worker.js.map +1 -0
  122. package/lib/core/action-events.d.ts +29 -0
  123. package/lib/core/action-events.d.ts.map +1 -0
  124. package/lib/core/action-events.js +51 -0
  125. package/lib/core/action-events.js.map +1 -0
  126. package/lib/core/agent-activity.d.ts +49 -0
  127. package/lib/core/agent-activity.d.ts.map +1 -0
  128. package/lib/core/agent-activity.js +206 -0
  129. package/lib/core/agent-activity.js.map +1 -0
  130. package/lib/core/agent-environment.d.ts +5 -0
  131. package/lib/core/agent-environment.d.ts.map +1 -0
  132. package/lib/core/agent-environment.js +47 -0
  133. package/lib/core/agent-environment.js.map +1 -0
  134. package/lib/core/agent-events.d.ts +26 -0
  135. package/lib/core/agent-events.d.ts.map +1 -0
  136. package/lib/core/agent-events.js +13 -0
  137. package/lib/core/agent-events.js.map +1 -0
  138. package/lib/core/annotation.d.ts +6 -2
  139. package/lib/core/annotation.d.ts.map +1 -1
  140. package/lib/core/annotation.js +2 -1
  141. package/lib/core/annotation.js.map +1 -1
  142. package/lib/core/answerer.d.ts +12 -0
  143. package/lib/core/answerer.d.ts.map +1 -1
  144. package/lib/core/answerer.js +2 -0
  145. package/lib/core/answerer.js.map +1 -1
  146. package/lib/core/artifact-evidence.d.ts +6 -1
  147. package/lib/core/artifact-evidence.d.ts.map +1 -1
  148. package/lib/core/artifact-evidence.js +27 -6
  149. package/lib/core/artifact-evidence.js.map +1 -1
  150. package/lib/core/assertion.d.ts +10 -4
  151. package/lib/core/assertion.d.ts.map +1 -1
  152. package/lib/core/assertion.js +8 -2
  153. package/lib/core/assertion.js.map +1 -1
  154. package/lib/core/case-defaults.d.ts +16 -0
  155. package/lib/core/case-defaults.d.ts.map +1 -0
  156. package/lib/core/case-defaults.js +42 -0
  157. package/lib/core/case-defaults.js.map +1 -0
  158. package/lib/core/case.d.ts +120 -6
  159. package/lib/core/case.d.ts.map +1 -1
  160. package/lib/core/case.js +51 -5
  161. package/lib/core/case.js.map +1 -1
  162. package/lib/core/command-verification.d.ts +10 -0
  163. package/lib/core/command-verification.d.ts.map +1 -0
  164. package/lib/core/command-verification.js +66 -0
  165. package/lib/core/command-verification.js.map +1 -0
  166. package/lib/core/driver-execution.d.ts +83 -0
  167. package/lib/core/driver-execution.d.ts.map +1 -0
  168. package/lib/core/driver-execution.js +72 -0
  169. package/lib/core/driver-execution.js.map +1 -0
  170. package/lib/core/driver-metrics.d.ts +98 -0
  171. package/lib/core/driver-metrics.d.ts.map +1 -0
  172. package/lib/core/driver-metrics.js +36 -0
  173. package/lib/core/driver-metrics.js.map +1 -0
  174. package/lib/core/driver.d.ts +64 -0
  175. package/lib/core/driver.d.ts.map +1 -1
  176. package/lib/core/driver.js +28 -0
  177. package/lib/core/driver.js.map +1 -1
  178. package/lib/core/duration.d.ts +5 -0
  179. package/lib/core/duration.d.ts.map +1 -0
  180. package/lib/core/duration.js +49 -0
  181. package/lib/core/duration.js.map +1 -0
  182. package/lib/core/environment.d.ts +18 -0
  183. package/lib/core/environment.d.ts.map +1 -0
  184. package/lib/core/environment.js +21 -0
  185. package/lib/core/environment.js.map +1 -0
  186. package/lib/core/evaluation-clusters.d.ts +17 -0
  187. package/lib/core/evaluation-clusters.d.ts.map +1 -0
  188. package/lib/core/evaluation-clusters.js +23 -0
  189. package/lib/core/evaluation-clusters.js.map +1 -0
  190. package/lib/core/events.d.ts +34 -0
  191. package/lib/core/events.d.ts.map +1 -1
  192. package/lib/core/events.js +11 -2
  193. package/lib/core/events.js.map +1 -1
  194. package/lib/core/experiment.d.ts +33 -2
  195. package/lib/core/experiment.d.ts.map +1 -1
  196. package/lib/core/experiment.js +40 -19
  197. package/lib/core/experiment.js.map +1 -1
  198. package/lib/core/file-tree.d.ts +7 -0
  199. package/lib/core/file-tree.d.ts.map +1 -0
  200. package/lib/core/file-tree.js +35 -0
  201. package/lib/core/file-tree.js.map +1 -0
  202. package/lib/core/global-id.d.ts +6 -0
  203. package/lib/core/global-id.d.ts.map +1 -0
  204. package/lib/core/global-id.js +17 -0
  205. package/lib/core/global-id.js.map +1 -0
  206. package/lib/core/harness-catalog.d.ts +35 -0
  207. package/lib/core/harness-catalog.d.ts.map +1 -0
  208. package/lib/core/harness-catalog.js +45 -0
  209. package/lib/core/harness-catalog.js.map +1 -0
  210. package/lib/core/harness-catalogs/antigravity.d.ts +11 -0
  211. package/lib/core/harness-catalogs/antigravity.d.ts.map +1 -0
  212. package/lib/core/harness-catalogs/antigravity.js +23 -0
  213. package/lib/core/harness-catalogs/antigravity.js.map +1 -0
  214. package/lib/core/harness-catalogs/claude-code.d.ts +12 -0
  215. package/lib/core/harness-catalogs/claude-code.d.ts.map +1 -0
  216. package/lib/core/harness-catalogs/claude-code.js +24 -0
  217. package/lib/core/harness-catalogs/claude-code.js.map +1 -0
  218. package/lib/core/harness-catalogs/codex.d.ts +11 -0
  219. package/lib/core/harness-catalogs/codex.d.ts.map +1 -0
  220. package/lib/core/harness-catalogs/codex.js +26 -0
  221. package/lib/core/harness-catalogs/codex.js.map +1 -0
  222. package/lib/core/harness-catalogs/copilot.d.ts +29 -0
  223. package/lib/core/harness-catalogs/copilot.d.ts.map +1 -0
  224. package/lib/core/harness-catalogs/copilot.js +45 -0
  225. package/lib/core/harness-catalogs/copilot.js.map +1 -0
  226. package/lib/core/harness-catalogs/cursor.d.ts +2 -0
  227. package/lib/core/harness-catalogs/cursor.d.ts.map +1 -0
  228. package/lib/core/harness-catalogs/cursor.js +13 -0
  229. package/lib/core/harness-catalogs/cursor.js.map +1 -0
  230. package/lib/core/harness-catalogs/grok-build.d.ts +7 -0
  231. package/lib/core/harness-catalogs/grok-build.d.ts.map +1 -0
  232. package/lib/core/harness-catalogs/grok-build.js +18 -0
  233. package/lib/core/harness-catalogs/grok-build.js.map +1 -0
  234. package/lib/core/harness-catalogs/index.d.ts +73 -0
  235. package/lib/core/harness-catalogs/index.d.ts.map +1 -0
  236. package/lib/core/harness-catalogs/index.js +17 -0
  237. package/lib/core/harness-catalogs/index.js.map +1 -0
  238. package/lib/core/harness-matrix.d.ts +154 -0
  239. package/lib/core/harness-matrix.d.ts.map +1 -0
  240. package/lib/core/harness-matrix.js +204 -0
  241. package/lib/core/harness-matrix.js.map +1 -0
  242. package/lib/core/index.d.ts +12 -0
  243. package/lib/core/index.d.ts.map +1 -1
  244. package/lib/core/index.js +12 -0
  245. package/lib/core/index.js.map +1 -1
  246. package/lib/core/lifecycle-fixtures.d.ts.map +1 -1
  247. package/lib/core/lifecycle-fixtures.js +4 -2
  248. package/lib/core/lifecycle-fixtures.js.map +1 -1
  249. package/lib/core/model-cli.d.ts +9 -11
  250. package/lib/core/model-cli.d.ts.map +1 -1
  251. package/lib/core/model-cli.js +39 -22
  252. package/lib/core/model-cli.js.map +1 -1
  253. package/lib/core/platform-process.d.ts +7 -2
  254. package/lib/core/platform-process.d.ts.map +1 -1
  255. package/lib/core/platform-process.js +54 -16
  256. package/lib/core/platform-process.js.map +1 -1
  257. package/lib/core/reference-defaults.d.ts +5 -0
  258. package/lib/core/reference-defaults.d.ts.map +1 -0
  259. package/lib/core/reference-defaults.js +42 -0
  260. package/lib/core/reference-defaults.js.map +1 -0
  261. package/lib/core/rubric.d.ts +1 -0
  262. package/lib/core/rubric.d.ts.map +1 -1
  263. package/lib/core/run.d.ts +292 -1
  264. package/lib/core/run.d.ts.map +1 -1
  265. package/lib/core/run.js +27 -0
  266. package/lib/core/run.js.map +1 -1
  267. package/lib/core/secure-copy.d.ts.map +1 -0
  268. package/lib/core/secure-copy.js.map +1 -0
  269. package/lib/core/usage.d.ts +5 -0
  270. package/lib/core/usage.d.ts.map +1 -1
  271. package/lib/core/usage.js +3 -0
  272. package/lib/core/usage.js.map +1 -1
  273. package/lib/core/wire.d.ts +11 -0
  274. package/lib/core/wire.d.ts.map +1 -1
  275. package/lib/drivers/antigravity/artifacts.d.ts +2 -0
  276. package/lib/drivers/antigravity/artifacts.d.ts.map +1 -0
  277. package/lib/drivers/antigravity/artifacts.js +33 -0
  278. package/lib/drivers/antigravity/artifacts.js.map +1 -0
  279. package/lib/drivers/antigravity/config.d.ts +88 -0
  280. package/lib/drivers/antigravity/config.d.ts.map +1 -0
  281. package/lib/drivers/antigravity/config.js +87 -0
  282. package/lib/drivers/antigravity/config.js.map +1 -0
  283. package/lib/drivers/antigravity/events.d.ts +4 -0
  284. package/lib/drivers/antigravity/events.d.ts.map +1 -0
  285. package/lib/drivers/antigravity/events.js +241 -0
  286. package/lib/drivers/antigravity/events.js.map +1 -0
  287. package/lib/drivers/antigravity/index.d.ts +114 -0
  288. package/lib/drivers/antigravity/index.d.ts.map +1 -0
  289. package/lib/drivers/antigravity/index.js +113 -0
  290. package/lib/drivers/antigravity/index.js.map +1 -0
  291. package/lib/drivers/antigravity/runtime.d.ts +7 -0
  292. package/lib/drivers/antigravity/runtime.d.ts.map +1 -0
  293. package/lib/drivers/antigravity/runtime.js +83 -0
  294. package/lib/drivers/antigravity/runtime.js.map +1 -0
  295. package/lib/drivers/claude-code/deferred-process.d.ts +17 -0
  296. package/lib/drivers/claude-code/deferred-process.d.ts.map +1 -0
  297. package/lib/drivers/claude-code/deferred-process.js +108 -0
  298. package/lib/drivers/claude-code/deferred-process.js.map +1 -0
  299. package/lib/drivers/claude-code/index.d.ts +187 -10
  300. package/lib/drivers/claude-code/index.d.ts.map +1 -1
  301. package/lib/drivers/claude-code/index.js +197 -252
  302. package/lib/drivers/claude-code/index.js.map +1 -1
  303. package/lib/drivers/claude-code/isolation.d.ts +8 -0
  304. package/lib/drivers/claude-code/isolation.d.ts.map +1 -0
  305. package/lib/drivers/claude-code/isolation.js +199 -0
  306. package/lib/drivers/claude-code/isolation.js.map +1 -0
  307. package/lib/drivers/claude-code/parse-events.d.ts.map +1 -1
  308. package/lib/drivers/claude-code/parse-events.js +73 -8
  309. package/lib/drivers/claude-code/parse-events.js.map +1 -1
  310. package/lib/drivers/codex/app-events.d.ts +9 -2
  311. package/lib/drivers/codex/app-events.d.ts.map +1 -1
  312. package/lib/drivers/codex/app-events.js +104 -12
  313. package/lib/drivers/codex/app-events.js.map +1 -1
  314. package/lib/drivers/codex/config.d.ts +69 -5
  315. package/lib/drivers/codex/config.d.ts.map +1 -1
  316. package/lib/drivers/codex/config.js +48 -8
  317. package/lib/drivers/codex/config.js.map +1 -1
  318. package/lib/drivers/codex/exec-events.d.ts +4 -0
  319. package/lib/drivers/codex/exec-events.d.ts.map +1 -0
  320. package/lib/drivers/codex/exec-events.js +230 -0
  321. package/lib/drivers/codex/exec-events.js.map +1 -0
  322. package/lib/drivers/codex/index.d.ts +142 -4
  323. package/lib/drivers/codex/index.d.ts.map +1 -1
  324. package/lib/drivers/codex/index.js +114 -276
  325. package/lib/drivers/codex/index.js.map +1 -1
  326. package/lib/drivers/copilot/config.d.ts +84 -0
  327. package/lib/drivers/copilot/config.d.ts.map +1 -0
  328. package/lib/drivers/copilot/config.js +57 -0
  329. package/lib/drivers/copilot/config.js.map +1 -0
  330. package/lib/drivers/copilot/index.d.ts +107 -0
  331. package/lib/drivers/copilot/index.d.ts.map +1 -0
  332. package/lib/drivers/copilot/index.js +268 -0
  333. package/lib/drivers/copilot/index.js.map +1 -0
  334. package/lib/drivers/cursor/config.d.ts +28 -0
  335. package/lib/drivers/cursor/config.d.ts.map +1 -0
  336. package/lib/drivers/cursor/config.js +28 -0
  337. package/lib/drivers/cursor/config.js.map +1 -0
  338. package/lib/drivers/cursor/index.d.ts +44 -0
  339. package/lib/drivers/cursor/index.d.ts.map +1 -0
  340. package/lib/drivers/cursor/index.js +286 -0
  341. package/lib/drivers/cursor/index.js.map +1 -0
  342. package/lib/drivers/cursor/interaction.d.ts +6 -0
  343. package/lib/drivers/cursor/interaction.d.ts.map +1 -0
  344. package/lib/drivers/cursor/interaction.js +55 -0
  345. package/lib/drivers/cursor/interaction.js.map +1 -0
  346. package/lib/drivers/grok-build/config.d.ts +68 -0
  347. package/lib/drivers/grok-build/config.d.ts.map +1 -0
  348. package/lib/drivers/grok-build/config.js +40 -0
  349. package/lib/drivers/grok-build/config.js.map +1 -0
  350. package/lib/drivers/grok-build/index.d.ts +87 -0
  351. package/lib/drivers/grok-build/index.d.ts.map +1 -0
  352. package/lib/drivers/grok-build/index.js +293 -0
  353. package/lib/drivers/grok-build/index.js.map +1 -0
  354. package/lib/drivers/mcp/index.d.ts +37 -4
  355. package/lib/drivers/mcp/index.d.ts.map +1 -1
  356. package/lib/drivers/mcp/index.js +25 -11
  357. package/lib/drivers/mcp/index.js.map +1 -1
  358. package/lib/drivers/shared/acp-events.d.ts +15 -0
  359. package/lib/drivers/shared/acp-events.d.ts.map +1 -0
  360. package/lib/drivers/shared/acp-events.js +83 -0
  361. package/lib/drivers/shared/acp-events.js.map +1 -0
  362. package/lib/drivers/shared/acp-interaction.d.ts +7 -0
  363. package/lib/drivers/shared/acp-interaction.d.ts.map +1 -0
  364. package/lib/drivers/shared/acp-interaction.js +20 -0
  365. package/lib/drivers/shared/acp-interaction.js.map +1 -0
  366. package/lib/drivers/shared/acp-session.d.ts +4 -0
  367. package/lib/drivers/shared/acp-session.d.ts.map +1 -0
  368. package/lib/drivers/shared/acp-session.js +23 -0
  369. package/lib/drivers/shared/acp-session.js.map +1 -0
  370. package/lib/drivers/shared/acp-transport.d.ts +40 -0
  371. package/lib/drivers/shared/acp-transport.d.ts.map +1 -0
  372. package/lib/drivers/shared/acp-transport.js +152 -0
  373. package/lib/drivers/shared/acp-transport.js.map +1 -0
  374. package/lib/drivers/shared/artifacts.d.ts.map +1 -1
  375. package/lib/drivers/shared/artifacts.js +3 -2
  376. package/lib/drivers/shared/artifacts.js.map +1 -1
  377. package/lib/drivers/shared/experiment-behavior.d.ts +13 -0
  378. package/lib/drivers/shared/experiment-behavior.d.ts.map +1 -0
  379. package/lib/drivers/shared/experiment-behavior.js +200 -0
  380. package/lib/drivers/shared/experiment-behavior.js.map +1 -0
  381. package/lib/drivers/shared/experiment-policy.d.ts +4 -0
  382. package/lib/drivers/shared/experiment-policy.d.ts.map +1 -0
  383. package/lib/drivers/shared/experiment-policy.js +144 -0
  384. package/lib/drivers/shared/experiment-policy.js.map +1 -0
  385. package/lib/drivers/shared/skills.d.ts +3 -0
  386. package/lib/drivers/shared/skills.d.ts.map +1 -0
  387. package/lib/drivers/shared/skills.js +73 -0
  388. package/lib/drivers/shared/skills.js.map +1 -0
  389. package/lib/drivers/subprocess/index.d.ts +39 -4
  390. package/lib/drivers/subprocess/index.d.ts.map +1 -1
  391. package/lib/drivers/subprocess/index.js +56 -12
  392. package/lib/drivers/subprocess/index.js.map +1 -1
  393. package/lib/index.d.ts +24 -8
  394. package/lib/index.d.ts.map +1 -1
  395. package/lib/index.js +20 -5
  396. package/lib/index.js.map +1 -1
  397. package/lib/optimization/reflective.d.ts +3 -1
  398. package/lib/optimization/reflective.d.ts.map +1 -1
  399. package/lib/optimization/reflective.js +3 -2
  400. package/lib/optimization/reflective.js.map +1 -1
  401. package/lib/orchestrator/annotation-loader.d.ts +6 -2
  402. package/lib/orchestrator/annotation-loader.d.ts.map +1 -1
  403. package/lib/orchestrator/annotation-loader.js +8 -0
  404. package/lib/orchestrator/annotation-loader.js.map +1 -1
  405. package/lib/orchestrator/annotation-store.d.ts.map +1 -1
  406. package/lib/orchestrator/annotation-store.js +16 -2
  407. package/lib/orchestrator/annotation-store.js.map +1 -1
  408. package/lib/orchestrator/artifact-origin.d.ts +3 -0
  409. package/lib/orchestrator/artifact-origin.d.ts.map +1 -0
  410. package/lib/orchestrator/artifact-origin.js +40 -0
  411. package/lib/orchestrator/artifact-origin.js.map +1 -0
  412. package/lib/orchestrator/campaign-lifecycle.d.ts +1 -0
  413. package/lib/orchestrator/campaign-lifecycle.d.ts.map +1 -1
  414. package/lib/orchestrator/campaign-lifecycle.js +4 -1
  415. package/lib/orchestrator/campaign-lifecycle.js.map +1 -1
  416. package/lib/orchestrator/candidates.d.ts.map +1 -1
  417. package/lib/orchestrator/candidates.js +3 -2
  418. package/lib/orchestrator/candidates.js.map +1 -1
  419. package/lib/orchestrator/compare.d.ts +23 -6
  420. package/lib/orchestrator/compare.d.ts.map +1 -1
  421. package/lib/orchestrator/compare.js +45 -12
  422. package/lib/orchestrator/compare.js.map +1 -1
  423. package/lib/orchestrator/comparison-identity.d.ts.map +1 -1
  424. package/lib/orchestrator/comparison-identity.js +2 -0
  425. package/lib/orchestrator/comparison-identity.js.map +1 -1
  426. package/lib/orchestrator/config.d.ts +180 -1
  427. package/lib/orchestrator/config.d.ts.map +1 -1
  428. package/lib/orchestrator/config.js +21 -2
  429. package/lib/orchestrator/config.js.map +1 -1
  430. package/lib/orchestrator/discover.d.ts +1 -0
  431. package/lib/orchestrator/discover.d.ts.map +1 -1
  432. package/lib/orchestrator/discover.js +7 -1
  433. package/lib/orchestrator/discover.js.map +1 -1
  434. package/lib/orchestrator/doctor.d.ts +1 -0
  435. package/lib/orchestrator/doctor.d.ts.map +1 -1
  436. package/lib/orchestrator/doctor.js +134 -69
  437. package/lib/orchestrator/doctor.js.map +1 -1
  438. package/lib/orchestrator/driver-capabilities.d.ts +4 -0
  439. package/lib/orchestrator/driver-capabilities.d.ts.map +1 -0
  440. package/lib/orchestrator/driver-capabilities.js +13 -0
  441. package/lib/orchestrator/driver-capabilities.js.map +1 -0
  442. package/lib/orchestrator/driver-identity.d.ts +5 -0
  443. package/lib/orchestrator/driver-identity.d.ts.map +1 -0
  444. package/lib/orchestrator/driver-identity.js +51 -0
  445. package/lib/orchestrator/driver-identity.js.map +1 -0
  446. package/lib/orchestrator/experiment-context.d.ts +51 -3
  447. package/lib/orchestrator/experiment-context.d.ts.map +1 -1
  448. package/lib/orchestrator/experiment-context.js +2 -1
  449. package/lib/orchestrator/experiment-context.js.map +1 -1
  450. package/lib/orchestrator/experiment-contracts.d.ts +31 -1
  451. package/lib/orchestrator/experiment-contracts.d.ts.map +1 -1
  452. package/lib/orchestrator/experiment-corpus.d.ts +2 -1
  453. package/lib/orchestrator/experiment-corpus.d.ts.map +1 -1
  454. package/lib/orchestrator/experiment-corpus.js +28 -22
  455. package/lib/orchestrator/experiment-corpus.js.map +1 -1
  456. package/lib/orchestrator/experiment-effects.d.ts +33 -0
  457. package/lib/orchestrator/experiment-effects.d.ts.map +1 -0
  458. package/lib/orchestrator/experiment-effects.js +46 -0
  459. package/lib/orchestrator/experiment-effects.js.map +1 -0
  460. package/lib/orchestrator/experiment-evaluation.d.ts.map +1 -1
  461. package/lib/orchestrator/experiment-evaluation.js +70 -5
  462. package/lib/orchestrator/experiment-evaluation.js.map +1 -1
  463. package/lib/orchestrator/experiment-identity.d.ts +3 -0
  464. package/lib/orchestrator/experiment-identity.d.ts.map +1 -1
  465. package/lib/orchestrator/experiment-identity.js +22 -33
  466. package/lib/orchestrator/experiment-identity.js.map +1 -1
  467. package/lib/orchestrator/experiment-loader.d.ts +8 -3
  468. package/lib/orchestrator/experiment-loader.d.ts.map +1 -1
  469. package/lib/orchestrator/experiment-preflight.d.ts +3 -0
  470. package/lib/orchestrator/experiment-preflight.d.ts.map +1 -0
  471. package/lib/orchestrator/experiment-preflight.js +21 -0
  472. package/lib/orchestrator/experiment-preflight.js.map +1 -0
  473. package/lib/orchestrator/experiment-report.d.ts +91 -1
  474. package/lib/orchestrator/experiment-report.d.ts.map +1 -1
  475. package/lib/orchestrator/experiment-report.js +9 -1
  476. package/lib/orchestrator/experiment-report.js.map +1 -1
  477. package/lib/orchestrator/experiment-runs.d.ts +63 -2
  478. package/lib/orchestrator/experiment-runs.d.ts.map +1 -1
  479. package/lib/orchestrator/experiment-runs.js +13 -5
  480. package/lib/orchestrator/experiment-runs.js.map +1 -1
  481. package/lib/orchestrator/experiment-runtime-identity.d.ts +0 -16
  482. package/lib/orchestrator/experiment-runtime-identity.d.ts.map +1 -1
  483. package/lib/orchestrator/experiment-runtime-identity.js +5 -220
  484. package/lib/orchestrator/experiment-runtime-identity.js.map +1 -1
  485. package/lib/orchestrator/experiment-selection.d.ts.map +1 -1
  486. package/lib/orchestrator/experiment-selection.js +151 -43
  487. package/lib/orchestrator/experiment-selection.js.map +1 -1
  488. package/lib/orchestrator/experiment.d.ts +3 -3
  489. package/lib/orchestrator/experiment.d.ts.map +1 -1
  490. package/lib/orchestrator/experiment.js +26 -21
  491. package/lib/orchestrator/experiment.js.map +1 -1
  492. package/lib/orchestrator/fixture-identity.d.ts +1 -0
  493. package/lib/orchestrator/fixture-identity.d.ts.map +1 -1
  494. package/lib/orchestrator/fixture-identity.js +6 -1
  495. package/lib/orchestrator/fixture-identity.js.map +1 -1
  496. package/lib/orchestrator/fs-read.d.ts +1 -6
  497. package/lib/orchestrator/fs-read.d.ts.map +1 -1
  498. package/lib/orchestrator/fs-read.js +2 -32
  499. package/lib/orchestrator/fs-read.js.map +1 -1
  500. package/lib/orchestrator/grader-experiment.d.ts +23 -5
  501. package/lib/orchestrator/grader-experiment.d.ts.map +1 -1
  502. package/lib/orchestrator/grader-experiment.js +54 -9
  503. package/lib/orchestrator/grader-experiment.js.map +1 -1
  504. package/lib/orchestrator/grading.d.ts +1 -0
  505. package/lib/orchestrator/grading.d.ts.map +1 -1
  506. package/lib/orchestrator/grading.js +41 -33
  507. package/lib/orchestrator/grading.js.map +1 -1
  508. package/lib/orchestrator/harness-catalog-drift.d.ts +22 -0
  509. package/lib/orchestrator/harness-catalog-drift.d.ts.map +1 -0
  510. package/lib/orchestrator/harness-catalog-drift.js +90 -0
  511. package/lib/orchestrator/harness-catalog-drift.js.map +1 -0
  512. package/lib/orchestrator/harness-registry.d.ts +4 -0
  513. package/lib/orchestrator/harness-registry.d.ts.map +1 -0
  514. package/lib/orchestrator/harness-registry.js +5 -0
  515. package/lib/orchestrator/harness-registry.js.map +1 -0
  516. package/lib/orchestrator/index.d.ts +1 -1
  517. package/lib/orchestrator/index.d.ts.map +1 -1
  518. package/lib/orchestrator/index.js +1 -1
  519. package/lib/orchestrator/index.js.map +1 -1
  520. package/lib/orchestrator/list-runs.d.ts +8 -1
  521. package/lib/orchestrator/list-runs.d.ts.map +1 -1
  522. package/lib/orchestrator/list-runs.js +83 -18
  523. package/lib/orchestrator/list-runs.js.map +1 -1
  524. package/lib/orchestrator/optimization-lifecycle.d.ts.map +1 -1
  525. package/lib/orchestrator/optimization-lifecycle.js +3 -1
  526. package/lib/orchestrator/optimization-lifecycle.js.map +1 -1
  527. package/lib/orchestrator/orchestrator.d.ts +17 -2
  528. package/lib/orchestrator/orchestrator.d.ts.map +1 -1
  529. package/lib/orchestrator/orchestrator.js +55 -177
  530. package/lib/orchestrator/orchestrator.js.map +1 -1
  531. package/lib/orchestrator/paired-effects.d.ts +34 -0
  532. package/lib/orchestrator/paired-effects.d.ts.map +1 -0
  533. package/lib/orchestrator/paired-effects.js +164 -0
  534. package/lib/orchestrator/paired-effects.js.map +1 -0
  535. package/lib/orchestrator/profile.d.ts +4 -0
  536. package/lib/orchestrator/profile.d.ts.map +1 -0
  537. package/lib/orchestrator/profile.js +10 -0
  538. package/lib/orchestrator/profile.js.map +1 -0
  539. package/lib/orchestrator/provenance.d.ts +5 -1
  540. package/lib/orchestrator/provenance.d.ts.map +1 -1
  541. package/lib/orchestrator/provenance.js +16 -3
  542. package/lib/orchestrator/provenance.js.map +1 -1
  543. package/lib/orchestrator/regrade.d.ts +4 -2
  544. package/lib/orchestrator/regrade.d.ts.map +1 -1
  545. package/lib/orchestrator/rubric-loader.js +1 -1
  546. package/lib/orchestrator/rubric-loader.js.map +1 -1
  547. package/lib/orchestrator/run-dir.d.ts +2 -0
  548. package/lib/orchestrator/run-dir.d.ts.map +1 -1
  549. package/lib/orchestrator/run-dir.js +1 -1
  550. package/lib/orchestrator/run-dir.js.map +1 -1
  551. package/lib/orchestrator/run-execution.d.ts +3 -0
  552. package/lib/orchestrator/run-execution.d.ts.map +1 -1
  553. package/lib/orchestrator/run-execution.js +64 -10
  554. package/lib/orchestrator/run-execution.js.map +1 -1
  555. package/lib/orchestrator/run-lifecycle.d.ts +1 -0
  556. package/lib/orchestrator/run-lifecycle.d.ts.map +1 -1
  557. package/lib/orchestrator/run-lifecycle.js +3 -2
  558. package/lib/orchestrator/run-lifecycle.js.map +1 -1
  559. package/lib/orchestrator/run-workspace.d.ts +10 -0
  560. package/lib/orchestrator/run-workspace.d.ts.map +1 -0
  561. package/lib/orchestrator/run-workspace.js +58 -0
  562. package/lib/orchestrator/run-workspace.js.map +1 -0
  563. package/lib/orchestrator/suite-compare.d.ts +37 -0
  564. package/lib/orchestrator/suite-compare.d.ts.map +1 -1
  565. package/lib/orchestrator/suite-compare.js +44 -22
  566. package/lib/orchestrator/suite-compare.js.map +1 -1
  567. package/lib/orchestrator/suite-runs.d.ts +6 -1
  568. package/lib/orchestrator/suite-runs.d.ts.map +1 -1
  569. package/lib/orchestrator/suite-runs.js +14 -2
  570. package/lib/orchestrator/suite-runs.js.map +1 -1
  571. package/lib/orchestrator/suite-summary.d.ts +79 -0
  572. package/lib/orchestrator/suite-summary.d.ts.map +1 -1
  573. package/lib/orchestrator/suite-summary.js +67 -14
  574. package/lib/orchestrator/suite-summary.js.map +1 -1
  575. package/lib/previewer/artifacts.d.ts +25 -0
  576. package/lib/previewer/artifacts.d.ts.map +1 -0
  577. package/lib/previewer/artifacts.js +180 -0
  578. package/lib/previewer/artifacts.js.map +1 -0
  579. package/lib/previewer/server.d.ts +111 -0
  580. package/lib/previewer/server.d.ts.map +1 -0
  581. package/lib/previewer/server.js +559 -0
  582. package/lib/previewer/server.js.map +1 -0
  583. package/package.json +4 -2
  584. package/skills/lux-answerer/SKILL.md +2 -2
  585. package/src/answerers/claude-code/index.ts +6 -5
  586. package/src/answerers/persona/index.ts +75 -34
  587. package/src/answerers/terminal/index.ts +7 -11
  588. package/src/assertions/authoring.ts +2 -0
  589. package/src/assertions/core/command-exits-zero.ts +82 -17
  590. package/src/assertions/core/event-checks.ts +64 -3
  591. package/src/assertions/core/index.ts +2 -0
  592. package/src/assertions/core/resource-checks.ts +38 -5
  593. package/src/assertions/core/safe-regex.ts +16 -6
  594. package/src/assertions/rubric/evidence.ts +85 -0
  595. package/src/assertions/rubric/index.ts +63 -46
  596. package/src/assertions/rubric/internal.ts +256 -41
  597. package/src/authoring.ts +346 -2
  598. package/src/cli/bin.ts +2 -12
  599. package/src/cli/command-runtime.ts +20 -9
  600. package/src/cli/doctor.ts +17 -0
  601. package/src/cli/harness-plan.ts +123 -0
  602. package/src/cli/init-templates.ts +238 -0
  603. package/src/cli/init.ts +53 -184
  604. package/src/cli/output-schemas.ts +109 -0
  605. package/src/cli/program.ts +697 -730
  606. package/src/cli/render/format.ts +1 -1
  607. package/src/cli/render/reporter.ts +36 -8
  608. package/src/cli/run-options.ts +131 -25
  609. package/src/cli/view.ts +129 -0
  610. package/src/container/driver.ts +213 -0
  611. package/src/container/paths.ts +29 -0
  612. package/src/container/protocol.ts +48 -0
  613. package/src/container/resources.ts +165 -0
  614. package/src/container/worker.ts +107 -0
  615. package/src/core/action-events.ts +59 -0
  616. package/src/core/agent-activity.ts +236 -0
  617. package/src/core/agent-environment.ts +64 -0
  618. package/src/core/agent-events.ts +17 -0
  619. package/src/core/annotation.ts +2 -1
  620. package/src/core/answerer.ts +9 -0
  621. package/src/core/artifact-evidence.ts +40 -5
  622. package/src/core/assertion.ts +8 -2
  623. package/src/core/case-defaults.ts +65 -0
  624. package/src/core/case.ts +79 -8
  625. package/src/core/command-verification.ts +74 -0
  626. package/src/core/driver-execution.ts +84 -0
  627. package/src/core/driver-metrics.ts +51 -0
  628. package/src/core/driver.ts +76 -0
  629. package/src/core/duration.ts +52 -0
  630. package/src/core/environment.ts +22 -0
  631. package/src/core/evaluation-clusters.ts +35 -0
  632. package/src/core/events.ts +13 -2
  633. package/src/core/experiment.ts +71 -25
  634. package/src/core/file-tree.ts +35 -0
  635. package/src/core/global-id.ts +26 -0
  636. package/src/core/harness-catalog.ts +100 -0
  637. package/src/core/harness-catalogs/antigravity.ts +24 -0
  638. package/src/core/harness-catalogs/claude-code.ts +25 -0
  639. package/src/core/harness-catalogs/codex.ts +27 -0
  640. package/src/core/harness-catalogs/copilot.ts +46 -0
  641. package/src/core/harness-catalogs/cursor.ts +13 -0
  642. package/src/core/harness-catalogs/grok-build.ts +19 -0
  643. package/src/core/harness-catalogs/index.ts +31 -0
  644. package/src/core/harness-matrix.ts +316 -0
  645. package/src/core/index.ts +12 -0
  646. package/src/core/lifecycle-fixtures.ts +4 -2
  647. package/src/core/model-cli.ts +60 -26
  648. package/src/core/platform-process.ts +65 -16
  649. package/src/core/reference-defaults.ts +47 -0
  650. package/src/core/run.ts +31 -0
  651. package/src/core/usage.ts +8 -0
  652. package/src/drivers/antigravity/README.md +171 -0
  653. package/src/drivers/antigravity/artifacts.ts +37 -0
  654. package/src/drivers/antigravity/config.ts +92 -0
  655. package/src/drivers/antigravity/events.ts +290 -0
  656. package/src/drivers/antigravity/index.ts +132 -0
  657. package/src/drivers/antigravity/runtime.ts +94 -0
  658. package/src/drivers/claude-code/deferred-process.ts +118 -0
  659. package/src/drivers/claude-code/index.ts +227 -281
  660. package/src/drivers/claude-code/isolation.ts +228 -0
  661. package/src/drivers/claude-code/parse-events.ts +98 -12
  662. package/src/drivers/codex/app-events.ts +126 -16
  663. package/src/drivers/codex/config.ts +59 -8
  664. package/src/drivers/codex/exec-events.ts +258 -0
  665. package/src/drivers/codex/index.ts +146 -312
  666. package/src/drivers/copilot/README.md +60 -0
  667. package/src/drivers/copilot/config.ts +61 -0
  668. package/src/drivers/copilot/index.ts +310 -0
  669. package/src/drivers/cursor/README.md +66 -0
  670. package/src/drivers/cursor/config.ts +31 -0
  671. package/src/drivers/cursor/index.ts +326 -0
  672. package/src/drivers/cursor/interaction.ts +74 -0
  673. package/src/drivers/grok-build/README.md +112 -0
  674. package/src/drivers/grok-build/config.ts +43 -0
  675. package/src/drivers/grok-build/index.ts +331 -0
  676. package/src/drivers/mcp/index.ts +25 -11
  677. package/src/drivers/shared/acp-events.ts +94 -0
  678. package/src/drivers/shared/acp-interaction.ts +27 -0
  679. package/src/drivers/shared/acp-session.ts +40 -0
  680. package/src/drivers/shared/acp-transport.ts +187 -0
  681. package/src/drivers/shared/artifacts.ts +6 -2
  682. package/src/drivers/shared/experiment-behavior.ts +217 -0
  683. package/src/drivers/shared/experiment-policy.ts +196 -0
  684. package/src/drivers/shared/skills.ts +74 -0
  685. package/src/drivers/subprocess/index.ts +55 -12
  686. package/src/index.ts +117 -6
  687. package/src/optimization/reflective.ts +3 -2
  688. package/src/orchestrator/annotation-loader.ts +10 -0
  689. package/src/orchestrator/annotation-store.ts +24 -3
  690. package/src/orchestrator/artifact-origin.ts +50 -0
  691. package/src/orchestrator/campaign-lifecycle.ts +5 -1
  692. package/src/orchestrator/candidates.ts +3 -2
  693. package/src/orchestrator/compare.ts +62 -13
  694. package/src/orchestrator/comparison-identity.ts +2 -0
  695. package/src/orchestrator/config.ts +23 -1
  696. package/src/orchestrator/discover.ts +8 -1
  697. package/src/orchestrator/doctor.ts +211 -65
  698. package/src/orchestrator/driver-capabilities.ts +21 -0
  699. package/src/orchestrator/driver-identity.ts +69 -0
  700. package/src/orchestrator/experiment-context.ts +5 -3
  701. package/src/orchestrator/experiment-corpus.ts +58 -37
  702. package/src/orchestrator/experiment-effects.ts +63 -0
  703. package/src/orchestrator/experiment-evaluation.ts +88 -10
  704. package/src/orchestrator/experiment-identity.ts +57 -48
  705. package/src/orchestrator/experiment-preflight.ts +27 -0
  706. package/src/orchestrator/experiment-report.ts +21 -1
  707. package/src/orchestrator/experiment-runs.ts +11 -4
  708. package/src/orchestrator/experiment-runtime-identity.ts +5 -243
  709. package/src/orchestrator/experiment-selection.ts +178 -18
  710. package/src/orchestrator/experiment.ts +29 -29
  711. package/src/orchestrator/fixture-identity.ts +9 -1
  712. package/src/orchestrator/fs-read.ts +2 -32
  713. package/src/orchestrator/grader-experiment.ts +74 -13
  714. package/src/orchestrator/grading.ts +60 -31
  715. package/src/orchestrator/harness-catalog-drift.ts +132 -0
  716. package/src/orchestrator/harness-registry.ts +12 -0
  717. package/src/orchestrator/index.ts +1 -0
  718. package/src/orchestrator/list-runs.ts +102 -18
  719. package/src/orchestrator/optimization-lifecycle.ts +4 -1
  720. package/src/orchestrator/orchestrator.ts +105 -224
  721. package/src/orchestrator/paired-effects.ts +214 -0
  722. package/src/orchestrator/profile.ts +24 -0
  723. package/src/orchestrator/provenance.ts +23 -3
  724. package/src/orchestrator/rubric-loader.ts +1 -1
  725. package/src/orchestrator/run-dir.ts +8 -1
  726. package/src/orchestrator/run-execution.ts +75 -10
  727. package/src/orchestrator/run-lifecycle.ts +4 -2
  728. package/src/orchestrator/run-workspace.ts +62 -0
  729. package/src/orchestrator/suite-compare.ts +47 -23
  730. package/src/orchestrator/suite-runs.ts +13 -2
  731. package/src/orchestrator/suite-summary.ts +129 -15
  732. package/src/previewer/artifacts.ts +221 -0
  733. package/src/previewer/server.ts +789 -0
  734. package/viewer/app.css +2111 -0
  735. package/viewer/app.js +627 -0
  736. package/viewer/artifact-view.js +48 -0
  737. package/viewer/charts.js +98 -0
  738. package/viewer/detail.js +1266 -0
  739. package/viewer/format.js +129 -0
  740. package/viewer/index.html +151 -0
  741. package/lib/cli/skills.d.ts +0 -38
  742. package/lib/cli/skills.d.ts.map +0 -1
  743. package/lib/cli/skills.js +0 -84
  744. package/lib/cli/skills.js.map +0 -1
  745. package/lib/drivers/shared/secure-copy.d.ts.map +0 -1
  746. package/lib/drivers/shared/secure-copy.js.map +0 -1
  747. package/skills/lux/SKILL.md +0 -89
  748. package/skills/lux/references/cli.md +0 -125
  749. package/skills/lux/references/eval-authoring.md +0 -257
  750. package/src/cli/skills.ts +0 -129
  751. /package/lib/{drivers/shared → core}/secure-copy.d.ts +0 -0
  752. /package/lib/{drivers/shared → core}/secure-copy.js +0 -0
  753. /package/src/{drivers/shared → core}/secure-copy.ts +0 -0
@@ -1,6 +1,8 @@
1
1
  import { z } from "zod";
2
+ import type { DriverExecution } from "./driver-execution.js";
2
3
  import type { EventHandler } from "./emitter.js";
3
4
  import type { Answer, Done, ErrorEvent, Interrupt, Progress, ReadyState } from "./events.js";
5
+ import type { ReasoningEffort } from "./harness-catalog.js";
4
6
  import type { FixtureValueBinding } from "./lifecycle-hooks.js";
5
7
 
6
8
  export const ArtifactSchema = z.object({
@@ -11,6 +13,8 @@ export const ArtifactSchema = z.object({
11
13
  * Consumers resolve `path` against this before falling back to the default.
12
14
  */
13
15
  root: z.exactOptional(z.string()),
16
+ /** Assigned by Lux against fixture bytes frozen before the subject starts. */
17
+ origin: z.exactOptional(z.enum(["generated", "modified", "fixture"])),
14
18
  contentType: z.exactOptional(z.string()),
15
19
  size: z.exactOptional(z.number()),
16
20
  meta: z.exactOptional(z.record(z.string(), z.unknown())),
@@ -27,6 +31,8 @@ export type ResolvedFixtures = z.infer<typeof ResolvedFixturesSchema>;
27
31
  export type StartContext = {
28
32
  /** Stable selected case id, available to drivers that multiplex scenarios. */
29
33
  caseId?: string;
34
+ /** Private home owned by an outer execution boundary; never the caller’s home. */
35
+ isolatedHome?: string;
30
36
  prompt: string;
31
37
  fixtures?: ResolvedFixtures | undefined;
32
38
  /** Authored fixture values selected for this case. */
@@ -68,11 +74,81 @@ export interface AgentDriver {
68
74
  * responsible for stopping background writers before this promise resolves.
69
75
  */
70
76
  collect(): Promise<Artifact[]>;
77
+ /** Optional quiesced full execution tree for private command verification, until close. */
78
+ verificationWorkspace?(): Promise<string | undefined>;
71
79
  close(): Promise<void>;
72
80
  }
73
81
 
82
+ export const DriverCapabilitySchema = z.enum([
83
+ "interactive",
84
+ "tool-calls",
85
+ "tool-results",
86
+ "artifacts",
87
+ "subagents",
88
+ "usage",
89
+ "cost",
90
+ "isolation",
91
+ ]);
92
+ export type DriverCapability = z.infer<typeof DriverCapabilitySchema>;
93
+
94
+ export type DriverRuntime = {
95
+ commands: string[];
96
+ /** Missing keys mean unknown; false means the adapter cannot provide the capability. */
97
+ capabilities: Partial<Record<DriverCapability, boolean>>;
98
+ };
99
+
100
+ export type DriverExperiment<Cfg> = {
101
+ version: string;
102
+ /** Bind a configuration to the experiment environment; Lux validates the returned config. */
103
+ prepare(config: Cfg): unknown;
104
+ /** Fingerprint behavior outside authored cases/configuration and the reported executables. */
105
+ identity(config: Cfg, context: { rootDir: string }): unknown | Promise<unknown>;
106
+ };
107
+
108
+ /** Model and reasoning effort chosen by a harness matrix permutation. */
109
+ export type HarnessSelection = {
110
+ model?: string | undefined;
111
+ effort?: ReasoningEffort | undefined;
112
+ };
113
+
74
114
  export type DriverPlugin<Cfg = unknown> = {
75
115
  name: string;
76
116
  configSchema?: z.ZodTypeAny;
77
117
  create: (config: Cfg) => AgentDriver | Promise<AgentDriver>;
118
+ runtime?: (config: Cfg) => DriverRuntime;
119
+ /** Ordinary runs remain supported when controlled experiments are not declared. */
120
+ experiment?: DriverExperiment<Cfg>;
121
+ /**
122
+ * Apply a matrix selection to raw (unvalidated) configuration. Drivers
123
+ * without a model concept leave this undefined and reject selection.
124
+ */
125
+ selectHarness?: (config: unknown, selection: HarnessSelection) => unknown;
78
126
  };
127
+
128
+ /** Selection for drivers whose configuration uses `model` and `reasoningEffort`. */
129
+ export const selectModelAndReasoningEffort = (
130
+ config: unknown,
131
+ selection: HarnessSelection,
132
+ ): unknown => ({
133
+ ...(config && typeof config === "object" && !Array.isArray(config)
134
+ ? (config as Record<string, unknown>)
135
+ : {}),
136
+ ...(selection.model !== undefined ? { model: selection.model } : {}),
137
+ ...(selection.effort !== undefined || selection.model !== undefined
138
+ ? { reasoningEffort: selection.effort }
139
+ : {}),
140
+ });
141
+
142
+ export const defineDriver = <S extends z.ZodType>(
143
+ definition: Omit<DriverPlugin<z.output<S>>, "configSchema"> & { configSchema: S },
144
+ ): Omit<DriverPlugin<z.output<S>>, "configSchema"> & { configSchema: S } => definition;
145
+
146
+ export const driverRef = <S extends z.ZodType>(
147
+ plugin: { name: string; configSchema: S },
148
+ config: z.input<S>,
149
+ execution?: DriverExecution,
150
+ ): { name: string; config: z.input<S>; execution?: DriverExecution } => ({
151
+ name: plugin.name,
152
+ config,
153
+ ...(execution ? { execution } : {}),
154
+ });
@@ -0,0 +1,52 @@
1
+ import { z } from "zod";
2
+
3
+ const UNITS: Record<string, number> = {
4
+ ms: 1,
5
+ millisecond: 1,
6
+ milliseconds: 1,
7
+ s: 1000,
8
+ second: 1000,
9
+ seconds: 1000,
10
+ m: 60_000,
11
+ minute: 60_000,
12
+ minutes: 60_000,
13
+ h: 3_600_000,
14
+ hour: 3_600_000,
15
+ hours: 3_600_000,
16
+ d: 86_400_000,
17
+ day: 86_400_000,
18
+ days: 86_400_000,
19
+ };
20
+ const MAX_TIMER_MS = 2_147_483_647;
21
+ const INVALID_DURATION =
22
+ 'Expected a positive duration such as "20 minutes", "1.5 hours", or "500 ms", up to 2147483647 milliseconds';
23
+
24
+ /** Explicit units prevent ambiguous numeric configuration and Node timer overflow. */
25
+ export const durationMs = (value: string): number => {
26
+ if (value.length > 80) throw new Error(INVALID_DURATION);
27
+ const match =
28
+ /^(\d+(?:\.\d+)?)\s*(ms|milliseconds?|s|seconds?|m|minutes?|h|hours?|d|days?)$/i.exec(
29
+ value.trim(),
30
+ );
31
+ const amount = match?.[1];
32
+ const multiplier = match?.[2] ? UNITS[match[2].toLowerCase()] : undefined;
33
+ if (!amount || !multiplier) throw new Error(INVALID_DURATION);
34
+ const [whole, fraction = ""] = amount.split(".");
35
+ const scale = 10n ** BigInt(fraction.length);
36
+ const numerator = BigInt(`${whole}${fraction}`) * BigInt(multiplier);
37
+ const milliseconds = numerator / scale;
38
+ if (numerator % scale !== 0n || milliseconds <= 0n || milliseconds > BigInt(MAX_TIMER_MS)) {
39
+ throw new Error(INVALID_DURATION);
40
+ }
41
+ return Number(milliseconds);
42
+ };
43
+
44
+ // Keep strings in validated configs: schema validation may run again during
45
+ // experiment preparation or replay. Conversion belongs at the timer boundary.
46
+ export const DurationSchema = z.string().superRefine((value, ctx) => {
47
+ try {
48
+ durationMs(value);
49
+ } catch {
50
+ ctx.addIssue({ code: "custom", message: INVALID_DURATION });
51
+ }
52
+ });
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+
3
+ /** Author-declared execution conditions. Lux records these without enforcing or verifying them. */
4
+ export const EnvironmentDeclarationSchema = z
5
+ .object({
6
+ imageDigest: z
7
+ .string()
8
+ .regex(/^(?:[^@\s]+@)?sha256:[a-f0-9]{64}$/)
9
+ .optional(),
10
+ toolchains: z.record(z.string().min(1), z.string().min(1)).optional(),
11
+ network: z.enum(["disabled", "restricted", "unrestricted"]).optional(),
12
+ resources: z
13
+ .object({
14
+ cpuCount: z.number().positive().optional(),
15
+ memoryBytes: z.number().int().positive().optional(),
16
+ diskBytes: z.number().int().positive().optional(),
17
+ })
18
+ .strict()
19
+ .optional(),
20
+ })
21
+ .strict();
22
+ export type EnvironmentDeclaration = z.infer<typeof EnvironmentDeclarationSchema>;
@@ -0,0 +1,35 @@
1
+ import { z } from "zod";
2
+
3
+ export const EvaluationMetadataSchema = z
4
+ .object({
5
+ /** Related perturbations share one independent statistical unit. */
6
+ cluster: z.string().trim().min(1).optional(),
7
+ })
8
+ .catchall(z.unknown());
9
+
10
+ export const clusterKey = (id: string, cluster: string | undefined): string =>
11
+ JSON.stringify(cluster === undefined ? ["case", id] : ["cluster", cluster]);
12
+
13
+ export const independentClusterCount = (
14
+ items: readonly { id: string; cluster?: string | undefined }[],
15
+ ): number => new Set(items.map((item) => clusterKey(item.id, item.cluster))).size;
16
+
17
+ export const assertDisjointClusters = (
18
+ splits: readonly {
19
+ name: string;
20
+ items: readonly { id: string; cluster?: string | undefined }[];
21
+ }[],
22
+ ): void => {
23
+ const owners = new Map<string, string>();
24
+ for (const split of splits) {
25
+ for (const item of split.items) {
26
+ if (item.cluster === undefined) continue;
27
+ const owner = owners.get(item.cluster);
28
+ if (owner !== undefined && owner !== split.name)
29
+ throw new Error(
30
+ `evaluation cluster '${item.cluster}' appears in both ${owner} and ${split.name} splits`,
31
+ );
32
+ owners.set(item.cluster, split.name);
33
+ }
34
+ }
35
+ };
@@ -57,11 +57,22 @@ export const AnswerSchema = z.discriminatedUnion("kind", [
57
57
  ]);
58
58
  export type Answer = z.infer<typeof AnswerSchema>;
59
59
 
60
+ export const AgentAttributionSchema = z.object({
61
+ id: z.string().min(1),
62
+ role: z.enum(["main", "subagent"]),
63
+ parentId: z.exactOptional(z.string().min(1)),
64
+ spawnToolUseId: z.exactOptional(z.string().min(1)),
65
+ name: z.exactOptional(z.string().min(1)),
66
+ model: z.exactOptional(z.string().min(1)),
67
+ });
68
+ export type AgentAttribution = z.infer<typeof AgentAttributionSchema>;
69
+
60
70
  export const ProgressSchema = z.object({
61
71
  id: z.string(),
62
72
  kind: z.string(),
63
73
  payload: z.unknown(),
64
74
  ts: z.number(),
75
+ agent: z.exactOptional(AgentAttributionSchema),
65
76
  });
66
77
  export type Progress = z.infer<typeof ProgressSchema>;
67
78
 
@@ -69,8 +80,8 @@ export const DoneSchema = z.object({
69
80
  exitReason: z.literal("done"),
70
81
  /**
71
82
  * Driver-defined summary. The orchestrator recognizes `usage`, `cost`,
72
- * `modelCalls`, and `unpricedModelCalls` when present while preserving room
73
- * for domain-specific measurements.
83
+ * `modelCalls`, `unpricedModelCalls`, and scalar `metrics` when present while
84
+ * preserving room for other domain-specific evidence.
74
85
  */
75
86
  summary: z.unknown().optional(),
76
87
  });
@@ -1,4 +1,6 @@
1
1
  import { z } from "zod";
2
+ import { DriverMetricDescriptorSchema } from "./driver-metrics.js";
3
+ import { DurationSchema } from "./duration.js";
2
4
  import { ConfidenceConfigSchema } from "./statistics.js";
3
5
  import { TokenUsageSchema } from "./usage.js";
4
6
  import { formatZodIssues } from "./zod.js";
@@ -45,7 +47,7 @@ export const FileSetSubjectSchema = z
45
47
  * External paths and URLs are rejected by experiment preflight.
46
48
  */
47
49
  args: z.array(z.string()).default([]),
48
- timeoutMs: z.number().int().positive().default(120_000),
50
+ timeout: DurationSchema.default("2 minutes"),
49
51
  /**
50
52
  * Validation launches a host process against model-generated source.
51
53
  * Authors must explicitly acknowledge that trust boundary. Commands
@@ -83,6 +85,8 @@ export type ExperimentVariant = z.output<typeof ExperimentVariantSchema>;
83
85
  export const ExperimentConstraintSchema = z
84
86
  .object({
85
87
  metric: z.string().min(1),
88
+ /** Bounds apply to paired candidate-minus-baseline case means. */
89
+ relativeTo: z.exactOptional(z.literal("baseline")),
86
90
  min: z.number().optional(),
87
91
  max: z.number().optional(),
88
92
  profile: z.string().optional(),
@@ -150,6 +154,52 @@ const DEFAULT_EXPERIMENT_BUDGET: ExperimentBudget = {
150
154
  maxWallTimeMs: 3_600_000,
151
155
  };
152
156
 
157
+ const validateConstraintConfidence = (
158
+ constraint: ExperimentConstraint,
159
+ index: number,
160
+ boundedMetrics: Set<string>,
161
+ ctx: z.RefinementCtx,
162
+ ): void => {
163
+ const issue = (message: string): void =>
164
+ ctx.addIssue({ code: "custom", path: ["objectives", "constraints", index], message });
165
+ if (constraint.relativeTo && constraint.confidence?.method === "wilson") {
166
+ issue(
167
+ "paired differences are not Bernoulli observations; use Hoeffding or percentile-bootstrap confidence",
168
+ );
169
+ }
170
+ if (
171
+ constraint.relativeTo &&
172
+ ["subject.bytes", "quality.caseRegressions"].includes(constraint.metric)
173
+ ) {
174
+ issue("relative constraints require a metric with per-case observations");
175
+ }
176
+ if (constraint.metric === "score" && constraint.confidence?.method === "wilson") {
177
+ issue(
178
+ "continuous scores are not Bernoulli observations; use Hoeffding or percentile-bootstrap confidence",
179
+ );
180
+ }
181
+ const bounded = boundedMetrics.has(constraint.metric);
182
+ if (
183
+ (constraint.confidence?.method === "hoeffding" || constraint.confidence?.method === "wilson") &&
184
+ !bounded
185
+ ) {
186
+ issue(
187
+ `metric '${constraint.metric}' has no declared [0,1] support; use percentile-bootstrap confidence`,
188
+ );
189
+ }
190
+ const minimum = constraint.relativeTo ? -1 : 0;
191
+ if (
192
+ bounded &&
193
+ [constraint.min, constraint.max].some(
194
+ (bound) => bound !== undefined && (bound < minimum || bound > 1),
195
+ )
196
+ ) {
197
+ issue(
198
+ `metric '${constraint.metric}' has support [${minimum},1]; constraint bounds must stay in that interval`,
199
+ );
200
+ }
201
+ };
202
+
153
203
  export const ExperimentCampaignSchema = z
154
204
  .object({
155
205
  id: z.string().min(1),
@@ -214,9 +264,11 @@ export const ExperimentCampaignSchema = z
214
264
  "grader.macroFalseNegativeRate",
215
265
  "grader.coverage",
216
266
  "grader.abstentionRate",
267
+ "grader.insufficientEvidenceRate",
268
+ "grader.operationalErrorRate",
217
269
  "grader.scoreMae",
218
270
  ]);
219
- const unitIntervalMetrics = graderConfidenceMetrics;
271
+ const unitIntervalMetrics = new Set([...graderConfidenceMetrics, "score"]);
220
272
  if (campaign.optimizer && !campaign.splits.train) {
221
273
  ctx.addIssue({
222
274
  code: "custom",
@@ -288,29 +340,7 @@ export const ExperimentCampaignSchema = z
288
340
  profiles.add(profile);
289
341
  }
290
342
  for (const [index, constraint] of campaign.objectives.constraints.entries()) {
291
- if (
292
- (constraint.confidence?.method === "hoeffding" ||
293
- constraint.confidence?.method === "wilson") &&
294
- !unitIntervalMetrics.has(constraint.metric)
295
- ) {
296
- ctx.addIssue({
297
- code: "custom",
298
- path: ["objectives", "constraints", index, "confidence", "method"],
299
- message: `metric '${constraint.metric}' has no declared [0,1] support; use percentile-bootstrap confidence`,
300
- });
301
- }
302
- if (
303
- unitIntervalMetrics.has(constraint.metric) &&
304
- [constraint.min, constraint.max].some(
305
- (bound) => bound !== undefined && (bound < 0 || bound > 1),
306
- )
307
- ) {
308
- ctx.addIssue({
309
- code: "custom",
310
- path: ["objectives", "constraints", index],
311
- message: `metric '${constraint.metric}' has support [0,1]; constraint bounds must stay in that interval`,
312
- });
313
- }
343
+ validateConstraintConfidence(constraint, index, unitIntervalMetrics, ctx);
314
344
  if (constraint.profile && !profiles.has(constraint.profile)) {
315
345
  ctx.addIssue({
316
346
  code: "custom",
@@ -415,6 +445,7 @@ export const CandidateEvaluationSchema = z.object({
415
445
  passRate: z.number().min(0).max(1),
416
446
  casePassRates: z.record(z.string(), z.number().min(0).max(1)),
417
447
  metrics: z.record(z.string(), z.number()),
448
+ metricDefinitions: z.exactOptional(z.record(z.string(), DriverMetricDescriptorSchema)),
418
449
  metricCalls: z.exactOptional(z.number().int().nonnegative()),
419
450
  judgeCalls: z.exactOptional(z.number().int().nonnegative()),
420
451
  unpricedModelCalls: z.exactOptional(z.number().int().nonnegative()),
@@ -422,6 +453,21 @@ export const CandidateEvaluationSchema = z.object({
422
453
  costUsd: z.exactOptional(z.number().nonnegative()),
423
454
  /** Raw observations used by confidence-aware constraints. */
424
455
  samples: z.exactOptional(z.record(z.string(), z.array(z.number()))),
456
+ /** Independent cases with repetition coverage retained for paired comparisons. */
457
+ caseSamples: z.exactOptional(
458
+ z.record(
459
+ z.string(),
460
+ z.object({
461
+ identityHash: z.string().nullable(),
462
+ scoreBasis: z.exactOptional(z.string().nullable()),
463
+ clusterId: z.exactOptional(z.string().min(1)),
464
+ metrics: z.record(
465
+ z.string(),
466
+ z.object({ mean: z.number().finite(), n: z.number().int().positive() }),
467
+ ),
468
+ }),
469
+ ),
470
+ ),
425
471
  failedCases: z.array(
426
472
  z.object({
427
473
  caseId: z.string(),
@@ -0,0 +1,35 @@
1
+ import { existsSync } from "node:fs";
2
+ import { readdir } from "node:fs/promises";
3
+ import { join, relative, resolve } from "node:path";
4
+
5
+ /**
6
+ * Walk authored trees without silently following or omitting a symlink that
7
+ * can change outside the experiment identity. Exact ignored paths support
8
+ * generated state directories whose names are project-configurable.
9
+ */
10
+ export const walkAuthoredFiles = async (
11
+ root: string,
12
+ ignoredDirectoryNames: ReadonlySet<string> = new Set(),
13
+ ignoredPaths: ReadonlySet<string> = new Set(),
14
+ ): Promise<string[]> => {
15
+ if (!existsSync(root)) return [];
16
+ const out: string[] = [];
17
+ const stack = [root];
18
+ while (stack.length > 0) {
19
+ const dir = stack.pop();
20
+ if (!dir) continue;
21
+ for (const entry of await readdir(dir, { withFileTypes: true })) {
22
+ const full = join(dir, entry.name);
23
+ if (ignoredPaths.has(resolve(full))) continue;
24
+ if (entry.isDirectory() && ignoredDirectoryNames.has(entry.name)) continue;
25
+ if (entry.isSymbolicLink()) {
26
+ throw new Error(
27
+ `authored evaluation trees cannot contain symlinks: ${relative(root, full)}`,
28
+ );
29
+ }
30
+ if (entry.isDirectory()) stack.push(full);
31
+ else if (entry.isFile()) out.push(relative(root, full));
32
+ }
33
+ }
34
+ return out.sort();
35
+ };
@@ -0,0 +1,26 @@
1
+ import { z } from "zod";
2
+
3
+ export interface GlobalIdParts {
4
+ type: string;
5
+ id: string;
6
+ }
7
+
8
+ const UuidSchema = z.uuid();
9
+
10
+ export const tryParseGlobalId = (globalId: string): GlobalIdParts | null => {
11
+ const decoded = Buffer.from(globalId, "base64").toString("utf8");
12
+ const parts = decoded.split(":");
13
+ const type = parts[0];
14
+ const id = parts[1];
15
+ if (
16
+ parts.length !== 2 ||
17
+ !type ||
18
+ !id ||
19
+ !UuidSchema.safeParse(id).success ||
20
+ Buffer.from(decoded, "utf8").toString("base64") !== globalId
21
+ ) {
22
+ return null;
23
+ }
24
+
25
+ return { type, id };
26
+ };
@@ -0,0 +1,100 @@
1
+ import { z } from "zod";
2
+
3
+ export const HARNESS_EFFORTS = [
4
+ "none",
5
+ "minimal",
6
+ "low",
7
+ "medium",
8
+ "high",
9
+ "xhigh",
10
+ "max",
11
+ "ultra",
12
+ ] as const;
13
+ export const ReasoningEffortSchema = z.enum(HARNESS_EFFORTS);
14
+ export type ReasoningEffort = z.infer<typeof ReasoningEffortSchema>;
15
+
16
+ export type CatalogModels = Readonly<Record<string, readonly ReasoningEffort[]>>;
17
+
18
+ export type HarnessCatalog<
19
+ D extends string = string,
20
+ E extends readonly ReasoningEffort[] = readonly ReasoningEffort[],
21
+ M extends CatalogModels | undefined = CatalogModels | undefined,
22
+ > = {
23
+ readonly driver: D;
24
+ readonly verified: string;
25
+ readonly sources: readonly string[];
26
+ readonly efforts: E;
27
+ readonly models: M;
28
+ };
29
+
30
+ export type ClosedHarnessCatalog = HarnessCatalog<
31
+ string,
32
+ readonly ReasoningEffort[],
33
+ CatalogModels
34
+ >;
35
+
36
+ export const defineHarnessCatalog = <
37
+ const D extends string,
38
+ const E extends readonly ReasoningEffort[],
39
+ const M extends CatalogModels | undefined,
40
+ >(
41
+ catalog: HarnessCatalog<D, E, M>,
42
+ ): HarnessCatalog<D, E, M> => catalog;
43
+
44
+ export const isClosedCatalog = (catalog: HarnessCatalog): catalog is ClosedHarnessCatalog =>
45
+ catalog.models !== undefined;
46
+
47
+ export const catalogModelIds = (catalog: HarnessCatalog): string[] =>
48
+ Object.keys(catalog.models ?? {});
49
+
50
+ export const catalogEfforts = (
51
+ catalog: HarnessCatalog,
52
+ model: string,
53
+ ): readonly ReasoningEffort[] | undefined => catalog.models?.[model];
54
+
55
+ export const defaultCatalogEffort = (
56
+ catalog: HarnessCatalog,
57
+ model: string,
58
+ ): ReasoningEffort | undefined => {
59
+ if (!isClosedCatalog(catalog)) return undefined;
60
+ const accepted = catalog.models[model] ?? catalog.efforts;
61
+ return accepted.includes("low") ? "low" : accepted[0];
62
+ };
63
+
64
+ export const describeAcceptedEfforts = (
65
+ catalog: HarnessCatalog,
66
+ model: string,
67
+ accepted: readonly ReasoningEffort[],
68
+ ): string =>
69
+ accepted.length === 0
70
+ ? `model '${model}' has no reasoning effort in ${catalog.driver}`
71
+ : `model '${model}' accepts reasoning effort ${accepted.join(", ")} in ${catalog.driver}`;
72
+
73
+ export const effortIssue = (
74
+ catalog: HarnessCatalog,
75
+ model: string,
76
+ effort: ReasoningEffort | undefined,
77
+ ): string | undefined => {
78
+ if (effort === undefined) return undefined;
79
+ const accepted = catalogEfforts(catalog, model);
80
+ if (accepted === undefined || accepted.includes(effort)) return undefined;
81
+ return describeAcceptedEfforts(catalog, model, accepted);
82
+ };
83
+
84
+ export type CatalogEffortConfig = {
85
+ model: string;
86
+ reasoningEffort?: ReasoningEffort | undefined;
87
+ };
88
+
89
+ export const applyCatalogEffort =
90
+ (catalog: HarnessCatalog) =>
91
+ <C extends CatalogEffortConfig>(config: C, ctx: z.RefinementCtx): C => {
92
+ const issue = effortIssue(catalog, config.model, config.reasoningEffort);
93
+ if (issue) {
94
+ ctx.addIssue({ code: "custom", path: ["reasoningEffort"], message: issue });
95
+ return config;
96
+ }
97
+ if (config.reasoningEffort !== undefined) return config;
98
+ const effort = defaultCatalogEffort(catalog, config.model);
99
+ return effort === undefined ? config : { ...config, reasoningEffort: effort };
100
+ };
@@ -0,0 +1,24 @@
1
+ import { defineHarnessCatalog } from "../harness-catalog.js";
2
+
3
+ const flash = ["low", "medium", "high"] as const;
4
+
5
+ export const antigravityCatalog = defineHarnessCatalog({
6
+ driver: "antigravity",
7
+ verified: "2026-09-18",
8
+ sources: [
9
+ "https://antigravity.google/docs/models/",
10
+ "https://antigravity.google/docs/cli/headless/",
11
+ "agy models (needs a login)",
12
+ ],
13
+ efforts: flash,
14
+ models: {
15
+ "gemini-3.8-flash": flash,
16
+ "gemini-3.7-flash": flash,
17
+ "gemini-3.6-flash": flash,
18
+ "gemini-3.5-flash": flash,
19
+ "gemini-3.1-pro": ["low", "high"],
20
+ "claude-sonnet-4-6": [],
21
+ "claude-opus-4-6-thinking": [],
22
+ "gpt-oss-120b-medium": [],
23
+ },
24
+ });
@@ -0,0 +1,25 @@
1
+ import { defineHarnessCatalog } from "../harness-catalog.js";
2
+
3
+ const full = ["low", "medium", "high", "xhigh", "max"] as const;
4
+ const withoutXhigh = ["low", "medium", "high", "max"] as const;
5
+
6
+ export const claudeCodeCatalog = defineHarnessCatalog({
7
+ driver: "claude-code",
8
+ verified: "2026-09-18",
9
+ sources: [
10
+ "https://code.claude.com/docs/en/model-config",
11
+ "https://platform.claude.com/docs/en/about-claude/models/overview",
12
+ ],
13
+ efforts: full,
14
+ models: {
15
+ "claude-fable-5-1": full,
16
+ "claude-fable-5": full,
17
+ "claude-opus-5": full,
18
+ "claude-opus-4-8": full,
19
+ "claude-opus-4-7": full,
20
+ "claude-sonnet-5": full,
21
+ "claude-opus-4-6": withoutXhigh,
22
+ "claude-sonnet-4-6": withoutXhigh,
23
+ "claude-haiku-4-5": [],
24
+ },
25
+ });
@@ -0,0 +1,27 @@
1
+ import { defineHarnessCatalog } from "../harness-catalog.js";
2
+
3
+ const throughUltra = ["low", "medium", "high", "xhigh", "max", "ultra"] as const;
4
+ const throughMax = ["low", "medium", "high", "xhigh", "max"] as const;
5
+ const throughXhigh = ["low", "medium", "high", "xhigh"] as const;
6
+ const noneThroughXhigh = ["none", "low", "medium", "high", "xhigh"] as const;
7
+
8
+ export const codexCatalog = defineHarnessCatalog({
9
+ driver: "codex",
10
+ verified: "2026-09-18",
11
+ sources: [
12
+ "https://learn.chatgpt.com/docs/models",
13
+ "https://developers.openai.com/api/docs/guides/reasoning",
14
+ "codex app-server model/list (mirrored in $CODEX_HOME/models_cache.json)",
15
+ ],
16
+ efforts: ["none", "low", "medium", "high", "xhigh", "max", "ultra"],
17
+ models: {
18
+ "gpt-6-astra": throughUltra,
19
+ "gpt-5.6-sol": throughUltra,
20
+ "gpt-5.6-terra": throughUltra,
21
+ "gpt-5.6-luna": throughMax,
22
+ "gpt-5.5": throughXhigh,
23
+ "gpt-5.4": noneThroughXhigh,
24
+ "gpt-5.4-mini": noneThroughXhigh,
25
+ "gpt-5.3-codex": throughXhigh,
26
+ },
27
+ });