@prismatic-io/lux 0.0.2-preview.3 → 0.0.2-preview.32

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 (727) 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 +7 -5
  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 +4 -1
  17. package/lib/assertions/core/command-exits-zero.d.ts.map +1 -1
  18. package/lib/assertions/core/command-exits-zero.js +50 -7
  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/helpers.d.ts +2 -7
  27. package/lib/assertions/core/helpers.d.ts.map +1 -1
  28. package/lib/assertions/core/helpers.js +2 -6
  29. package/lib/assertions/core/helpers.js.map +1 -1
  30. package/lib/assertions/core/index.d.ts.map +1 -1
  31. package/lib/assertions/core/index.js +2 -1
  32. package/lib/assertions/core/index.js.map +1 -1
  33. package/lib/assertions/core/json-pointer-equals.d.ts +1 -0
  34. package/lib/assertions/core/json-pointer-equals.d.ts.map +1 -1
  35. package/lib/assertions/core/output-checks.d.ts +3 -0
  36. package/lib/assertions/core/output-checks.d.ts.map +1 -1
  37. package/lib/assertions/core/predicate.d.ts +1 -0
  38. package/lib/assertions/core/predicate.d.ts.map +1 -1
  39. package/lib/assertions/core/resource-checks.d.ts +25 -0
  40. package/lib/assertions/core/resource-checks.d.ts.map +1 -1
  41. package/lib/assertions/core/resource-checks.js +35 -5
  42. package/lib/assertions/core/resource-checks.js.map +1 -1
  43. package/lib/assertions/rubric/index.d.ts +28 -3
  44. package/lib/assertions/rubric/index.d.ts.map +1 -1
  45. package/lib/assertions/rubric/index.js +59 -13
  46. package/lib/assertions/rubric/index.js.map +1 -1
  47. package/lib/assertions/rubric/internal.d.ts +30 -5
  48. package/lib/assertions/rubric/internal.d.ts.map +1 -1
  49. package/lib/assertions/rubric/internal.js +181 -28
  50. package/lib/assertions/rubric/internal.js.map +1 -1
  51. package/lib/authoring.d.ts +36 -2
  52. package/lib/authoring.d.ts.map +1 -1
  53. package/lib/authoring.js +36 -1
  54. package/lib/authoring.js.map +1 -1
  55. package/lib/cli/bin.js +2 -13
  56. package/lib/cli/bin.js.map +1 -1
  57. package/lib/cli/command-runtime.d.ts +3 -3
  58. package/lib/cli/command-runtime.d.ts.map +1 -1
  59. package/lib/cli/command-runtime.js +17 -6
  60. package/lib/cli/command-runtime.js.map +1 -1
  61. package/lib/cli/doctor.d.ts +55 -0
  62. package/lib/cli/doctor.d.ts.map +1 -0
  63. package/lib/cli/doctor.js +14 -0
  64. package/lib/cli/doctor.js.map +1 -0
  65. package/lib/cli/harness-plan.d.ts +26 -0
  66. package/lib/cli/harness-plan.d.ts.map +1 -0
  67. package/lib/cli/harness-plan.js +75 -0
  68. package/lib/cli/harness-plan.js.map +1 -0
  69. package/lib/cli/init-templates.d.ts +11 -0
  70. package/lib/cli/init-templates.d.ts.map +1 -0
  71. package/lib/cli/init-templates.js +215 -0
  72. package/lib/cli/init-templates.js.map +1 -0
  73. package/lib/cli/init.d.ts +10 -0
  74. package/lib/cli/init.d.ts.map +1 -1
  75. package/lib/cli/init.js +34 -173
  76. package/lib/cli/init.js.map +1 -1
  77. package/lib/cli/output-schemas.d.ts +1408 -0
  78. package/lib/cli/output-schemas.d.ts.map +1 -0
  79. package/lib/cli/output-schemas.js +91 -0
  80. package/lib/cli/output-schemas.js.map +1 -0
  81. package/lib/cli/program.d.ts +140 -12
  82. package/lib/cli/program.d.ts.map +1 -1
  83. package/lib/cli/program.js +779 -646
  84. package/lib/cli/program.js.map +1 -1
  85. package/lib/cli/render/reporter.d.ts.map +1 -1
  86. package/lib/cli/render/reporter.js +48 -8
  87. package/lib/cli/render/reporter.js.map +1 -1
  88. package/lib/cli/run-options.d.ts +20 -4
  89. package/lib/cli/run-options.d.ts.map +1 -1
  90. package/lib/cli/run-options.js +100 -19
  91. package/lib/cli/run-options.js.map +1 -1
  92. package/lib/cli/view.d.ts +15 -0
  93. package/lib/cli/view.d.ts.map +1 -0
  94. package/lib/cli/view.js +168 -0
  95. package/lib/cli/view.js.map +1 -0
  96. package/lib/container/driver.d.ts +27 -0
  97. package/lib/container/driver.d.ts.map +1 -0
  98. package/lib/container/driver.js +197 -0
  99. package/lib/container/driver.js.map +1 -0
  100. package/lib/container/protocol.d.ts +12 -0
  101. package/lib/container/protocol.d.ts.map +1 -0
  102. package/lib/container/protocol.js +38 -0
  103. package/lib/container/protocol.js.map +1 -0
  104. package/lib/container/resources.d.ts +12 -0
  105. package/lib/container/resources.d.ts.map +1 -0
  106. package/lib/container/resources.js +133 -0
  107. package/lib/container/resources.js.map +1 -0
  108. package/lib/container/worker.d.ts +2 -0
  109. package/lib/container/worker.d.ts.map +1 -0
  110. package/lib/container/worker.js +85 -0
  111. package/lib/container/worker.js.map +1 -0
  112. package/lib/core/action-events.d.ts +29 -0
  113. package/lib/core/action-events.d.ts.map +1 -0
  114. package/lib/core/action-events.js +51 -0
  115. package/lib/core/action-events.js.map +1 -0
  116. package/lib/core/agent-activity.d.ts +49 -0
  117. package/lib/core/agent-activity.d.ts.map +1 -0
  118. package/lib/core/agent-activity.js +206 -0
  119. package/lib/core/agent-activity.js.map +1 -0
  120. package/lib/core/agent-environment.d.ts +5 -0
  121. package/lib/core/agent-environment.d.ts.map +1 -0
  122. package/lib/core/agent-environment.js +47 -0
  123. package/lib/core/agent-environment.js.map +1 -0
  124. package/lib/core/agent-events.d.ts +26 -0
  125. package/lib/core/agent-events.d.ts.map +1 -0
  126. package/lib/core/agent-events.js +13 -0
  127. package/lib/core/agent-events.js.map +1 -0
  128. package/lib/core/annotation.d.ts +6 -2
  129. package/lib/core/annotation.d.ts.map +1 -1
  130. package/lib/core/annotation.js +2 -1
  131. package/lib/core/annotation.js.map +1 -1
  132. package/lib/core/answerer.d.ts +12 -0
  133. package/lib/core/answerer.d.ts.map +1 -1
  134. package/lib/core/answerer.js +2 -0
  135. package/lib/core/answerer.js.map +1 -1
  136. package/lib/core/artifact-evidence.d.ts +8 -0
  137. package/lib/core/artifact-evidence.d.ts.map +1 -1
  138. package/lib/core/artifact-evidence.js +36 -4
  139. package/lib/core/artifact-evidence.js.map +1 -1
  140. package/lib/core/assertion.d.ts +20 -2
  141. package/lib/core/assertion.d.ts.map +1 -1
  142. package/lib/core/assertion.js +19 -1
  143. package/lib/core/assertion.js.map +1 -1
  144. package/lib/core/case.d.ts +111 -3
  145. package/lib/core/case.d.ts.map +1 -1
  146. package/lib/core/case.js +17 -2
  147. package/lib/core/case.js.map +1 -1
  148. package/lib/core/command-verification.d.ts +10 -0
  149. package/lib/core/command-verification.d.ts.map +1 -0
  150. package/lib/core/command-verification.js +66 -0
  151. package/lib/core/command-verification.js.map +1 -0
  152. package/lib/core/driver-execution.d.ts +83 -0
  153. package/lib/core/driver-execution.d.ts.map +1 -0
  154. package/lib/core/driver-execution.js +72 -0
  155. package/lib/core/driver-execution.js.map +1 -0
  156. package/lib/core/driver-metrics.d.ts +98 -0
  157. package/lib/core/driver-metrics.d.ts.map +1 -0
  158. package/lib/core/driver-metrics.js +36 -0
  159. package/lib/core/driver-metrics.js.map +1 -0
  160. package/lib/core/driver.d.ts +64 -0
  161. package/lib/core/driver.d.ts.map +1 -1
  162. package/lib/core/driver.js +28 -0
  163. package/lib/core/driver.js.map +1 -1
  164. package/lib/core/duration.d.ts +5 -0
  165. package/lib/core/duration.d.ts.map +1 -0
  166. package/lib/core/duration.js +49 -0
  167. package/lib/core/duration.js.map +1 -0
  168. package/lib/core/environment.d.ts +18 -0
  169. package/lib/core/environment.d.ts.map +1 -0
  170. package/lib/core/environment.js +21 -0
  171. package/lib/core/environment.js.map +1 -0
  172. package/lib/core/evaluation-clusters.d.ts +17 -0
  173. package/lib/core/evaluation-clusters.d.ts.map +1 -0
  174. package/lib/core/evaluation-clusters.js +23 -0
  175. package/lib/core/evaluation-clusters.js.map +1 -0
  176. package/lib/core/events.d.ts +36 -0
  177. package/lib/core/events.d.ts.map +1 -1
  178. package/lib/core/events.js +12 -2
  179. package/lib/core/events.js.map +1 -1
  180. package/lib/core/experiment.d.ts +32 -2
  181. package/lib/core/experiment.d.ts.map +1 -1
  182. package/lib/core/experiment.js +35 -18
  183. package/lib/core/experiment.js.map +1 -1
  184. package/lib/core/file-tree.d.ts +7 -0
  185. package/lib/core/file-tree.d.ts.map +1 -0
  186. package/lib/core/file-tree.js +35 -0
  187. package/lib/core/file-tree.js.map +1 -0
  188. package/lib/core/global-id.d.ts +6 -0
  189. package/lib/core/global-id.d.ts.map +1 -0
  190. package/lib/core/global-id.js +17 -0
  191. package/lib/core/global-id.js.map +1 -0
  192. package/lib/core/harness-catalog.d.ts +35 -0
  193. package/lib/core/harness-catalog.d.ts.map +1 -0
  194. package/lib/core/harness-catalog.js +45 -0
  195. package/lib/core/harness-catalog.js.map +1 -0
  196. package/lib/core/harness-catalogs/antigravity.d.ts +11 -0
  197. package/lib/core/harness-catalogs/antigravity.d.ts.map +1 -0
  198. package/lib/core/harness-catalogs/antigravity.js +23 -0
  199. package/lib/core/harness-catalogs/antigravity.js.map +1 -0
  200. package/lib/core/harness-catalogs/claude-code.d.ts +12 -0
  201. package/lib/core/harness-catalogs/claude-code.d.ts.map +1 -0
  202. package/lib/core/harness-catalogs/claude-code.js +24 -0
  203. package/lib/core/harness-catalogs/claude-code.js.map +1 -0
  204. package/lib/core/harness-catalogs/codex.d.ts +11 -0
  205. package/lib/core/harness-catalogs/codex.d.ts.map +1 -0
  206. package/lib/core/harness-catalogs/codex.js +26 -0
  207. package/lib/core/harness-catalogs/codex.js.map +1 -0
  208. package/lib/core/harness-catalogs/copilot.d.ts +29 -0
  209. package/lib/core/harness-catalogs/copilot.d.ts.map +1 -0
  210. package/lib/core/harness-catalogs/copilot.js +45 -0
  211. package/lib/core/harness-catalogs/copilot.js.map +1 -0
  212. package/lib/core/harness-catalogs/cursor.d.ts +2 -0
  213. package/lib/core/harness-catalogs/cursor.d.ts.map +1 -0
  214. package/lib/core/harness-catalogs/cursor.js +13 -0
  215. package/lib/core/harness-catalogs/cursor.js.map +1 -0
  216. package/lib/core/harness-catalogs/grok-build.d.ts +7 -0
  217. package/lib/core/harness-catalogs/grok-build.d.ts.map +1 -0
  218. package/lib/core/harness-catalogs/grok-build.js +18 -0
  219. package/lib/core/harness-catalogs/grok-build.js.map +1 -0
  220. package/lib/core/harness-catalogs/index.d.ts +73 -0
  221. package/lib/core/harness-catalogs/index.d.ts.map +1 -0
  222. package/lib/core/harness-catalogs/index.js +17 -0
  223. package/lib/core/harness-catalogs/index.js.map +1 -0
  224. package/lib/core/harness-matrix.d.ts +154 -0
  225. package/lib/core/harness-matrix.d.ts.map +1 -0
  226. package/lib/core/harness-matrix.js +204 -0
  227. package/lib/core/harness-matrix.js.map +1 -0
  228. package/lib/core/index.d.ts +12 -0
  229. package/lib/core/index.d.ts.map +1 -1
  230. package/lib/core/index.js +12 -0
  231. package/lib/core/index.js.map +1 -1
  232. package/lib/core/lifecycle-fixtures.d.ts.map +1 -1
  233. package/lib/core/lifecycle-fixtures.js +4 -2
  234. package/lib/core/lifecycle-fixtures.js.map +1 -1
  235. package/lib/core/model-cli.d.ts +9 -11
  236. package/lib/core/model-cli.d.ts.map +1 -1
  237. package/lib/core/model-cli.js +31 -19
  238. package/lib/core/model-cli.js.map +1 -1
  239. package/lib/core/platform-process.d.ts +6 -1
  240. package/lib/core/platform-process.d.ts.map +1 -1
  241. package/lib/core/platform-process.js +49 -11
  242. package/lib/core/platform-process.js.map +1 -1
  243. package/lib/core/rubric.d.ts +1 -0
  244. package/lib/core/rubric.d.ts.map +1 -1
  245. package/lib/core/run.d.ts +293 -1
  246. package/lib/core/run.d.ts.map +1 -1
  247. package/lib/core/run.js +27 -0
  248. package/lib/core/run.js.map +1 -1
  249. package/lib/core/secure-copy.d.ts.map +1 -0
  250. package/lib/core/secure-copy.js.map +1 -0
  251. package/lib/core/usage.d.ts +5 -0
  252. package/lib/core/usage.d.ts.map +1 -1
  253. package/lib/core/usage.js +3 -0
  254. package/lib/core/usage.js.map +1 -1
  255. package/lib/core/wire.d.ts +12 -0
  256. package/lib/core/wire.d.ts.map +1 -1
  257. package/lib/core/wire.js +5 -1
  258. package/lib/core/wire.js.map +1 -1
  259. package/lib/drivers/antigravity/artifacts.d.ts +2 -0
  260. package/lib/drivers/antigravity/artifacts.d.ts.map +1 -0
  261. package/lib/drivers/antigravity/artifacts.js +33 -0
  262. package/lib/drivers/antigravity/artifacts.js.map +1 -0
  263. package/lib/drivers/antigravity/config.d.ts +88 -0
  264. package/lib/drivers/antigravity/config.d.ts.map +1 -0
  265. package/lib/drivers/antigravity/config.js +87 -0
  266. package/lib/drivers/antigravity/config.js.map +1 -0
  267. package/lib/drivers/antigravity/events.d.ts +4 -0
  268. package/lib/drivers/antigravity/events.d.ts.map +1 -0
  269. package/lib/drivers/antigravity/events.js +241 -0
  270. package/lib/drivers/antigravity/events.js.map +1 -0
  271. package/lib/drivers/antigravity/index.d.ts +114 -0
  272. package/lib/drivers/antigravity/index.d.ts.map +1 -0
  273. package/lib/drivers/antigravity/index.js +113 -0
  274. package/lib/drivers/antigravity/index.js.map +1 -0
  275. package/lib/drivers/antigravity/runtime.d.ts +7 -0
  276. package/lib/drivers/antigravity/runtime.d.ts.map +1 -0
  277. package/lib/drivers/antigravity/runtime.js +83 -0
  278. package/lib/drivers/antigravity/runtime.js.map +1 -0
  279. package/lib/drivers/claude-code/deferred-process.d.ts +17 -0
  280. package/lib/drivers/claude-code/deferred-process.d.ts.map +1 -0
  281. package/lib/drivers/claude-code/deferred-process.js +108 -0
  282. package/lib/drivers/claude-code/deferred-process.js.map +1 -0
  283. package/lib/drivers/claude-code/index.d.ts +180 -10
  284. package/lib/drivers/claude-code/index.d.ts.map +1 -1
  285. package/lib/drivers/claude-code/index.js +186 -252
  286. package/lib/drivers/claude-code/index.js.map +1 -1
  287. package/lib/drivers/claude-code/isolation.d.ts +8 -0
  288. package/lib/drivers/claude-code/isolation.d.ts.map +1 -0
  289. package/lib/drivers/claude-code/isolation.js +199 -0
  290. package/lib/drivers/claude-code/isolation.js.map +1 -0
  291. package/lib/drivers/claude-code/parse-events.d.ts.map +1 -1
  292. package/lib/drivers/claude-code/parse-events.js +73 -8
  293. package/lib/drivers/claude-code/parse-events.js.map +1 -1
  294. package/lib/drivers/codex/app-events.d.ts +9 -2
  295. package/lib/drivers/codex/app-events.d.ts.map +1 -1
  296. package/lib/drivers/codex/app-events.js +104 -12
  297. package/lib/drivers/codex/app-events.js.map +1 -1
  298. package/lib/drivers/codex/config.d.ts +66 -5
  299. package/lib/drivers/codex/config.d.ts.map +1 -1
  300. package/lib/drivers/codex/config.js +39 -8
  301. package/lib/drivers/codex/config.js.map +1 -1
  302. package/lib/drivers/codex/exec-events.d.ts +4 -0
  303. package/lib/drivers/codex/exec-events.d.ts.map +1 -0
  304. package/lib/drivers/codex/exec-events.js +230 -0
  305. package/lib/drivers/codex/exec-events.js.map +1 -0
  306. package/lib/drivers/codex/index.d.ts +138 -4
  307. package/lib/drivers/codex/index.d.ts.map +1 -1
  308. package/lib/drivers/codex/index.js +112 -276
  309. package/lib/drivers/codex/index.js.map +1 -1
  310. package/lib/drivers/copilot/config.d.ts +84 -0
  311. package/lib/drivers/copilot/config.d.ts.map +1 -0
  312. package/lib/drivers/copilot/config.js +57 -0
  313. package/lib/drivers/copilot/config.js.map +1 -0
  314. package/lib/drivers/copilot/index.d.ts +107 -0
  315. package/lib/drivers/copilot/index.d.ts.map +1 -0
  316. package/lib/drivers/copilot/index.js +268 -0
  317. package/lib/drivers/copilot/index.js.map +1 -0
  318. package/lib/drivers/cursor/config.d.ts +28 -0
  319. package/lib/drivers/cursor/config.d.ts.map +1 -0
  320. package/lib/drivers/cursor/config.js +28 -0
  321. package/lib/drivers/cursor/config.js.map +1 -0
  322. package/lib/drivers/cursor/index.d.ts +44 -0
  323. package/lib/drivers/cursor/index.d.ts.map +1 -0
  324. package/lib/drivers/cursor/index.js +286 -0
  325. package/lib/drivers/cursor/index.js.map +1 -0
  326. package/lib/drivers/cursor/interaction.d.ts +6 -0
  327. package/lib/drivers/cursor/interaction.d.ts.map +1 -0
  328. package/lib/drivers/cursor/interaction.js +55 -0
  329. package/lib/drivers/cursor/interaction.js.map +1 -0
  330. package/lib/drivers/grok-build/config.d.ts +68 -0
  331. package/lib/drivers/grok-build/config.d.ts.map +1 -0
  332. package/lib/drivers/grok-build/config.js +40 -0
  333. package/lib/drivers/grok-build/config.js.map +1 -0
  334. package/lib/drivers/grok-build/index.d.ts +87 -0
  335. package/lib/drivers/grok-build/index.d.ts.map +1 -0
  336. package/lib/drivers/grok-build/index.js +293 -0
  337. package/lib/drivers/grok-build/index.js.map +1 -0
  338. package/lib/drivers/mcp/index.d.ts +37 -4
  339. package/lib/drivers/mcp/index.d.ts.map +1 -1
  340. package/lib/drivers/mcp/index.js +25 -11
  341. package/lib/drivers/mcp/index.js.map +1 -1
  342. package/lib/drivers/shared/acp-events.d.ts +15 -0
  343. package/lib/drivers/shared/acp-events.d.ts.map +1 -0
  344. package/lib/drivers/shared/acp-events.js +83 -0
  345. package/lib/drivers/shared/acp-events.js.map +1 -0
  346. package/lib/drivers/shared/acp-interaction.d.ts +7 -0
  347. package/lib/drivers/shared/acp-interaction.d.ts.map +1 -0
  348. package/lib/drivers/shared/acp-interaction.js +20 -0
  349. package/lib/drivers/shared/acp-interaction.js.map +1 -0
  350. package/lib/drivers/shared/acp-session.d.ts +4 -0
  351. package/lib/drivers/shared/acp-session.d.ts.map +1 -0
  352. package/lib/drivers/shared/acp-session.js +23 -0
  353. package/lib/drivers/shared/acp-session.js.map +1 -0
  354. package/lib/drivers/shared/acp-transport.d.ts +40 -0
  355. package/lib/drivers/shared/acp-transport.d.ts.map +1 -0
  356. package/lib/drivers/shared/acp-transport.js +152 -0
  357. package/lib/drivers/shared/acp-transport.js.map +1 -0
  358. package/lib/drivers/shared/artifacts.d.ts.map +1 -1
  359. package/lib/drivers/shared/artifacts.js +3 -2
  360. package/lib/drivers/shared/artifacts.js.map +1 -1
  361. package/lib/drivers/shared/experiment-behavior.d.ts +13 -0
  362. package/lib/drivers/shared/experiment-behavior.d.ts.map +1 -0
  363. package/lib/drivers/shared/experiment-behavior.js +197 -0
  364. package/lib/drivers/shared/experiment-behavior.js.map +1 -0
  365. package/lib/drivers/shared/experiment-policy.d.ts +4 -0
  366. package/lib/drivers/shared/experiment-policy.d.ts.map +1 -0
  367. package/lib/drivers/shared/experiment-policy.js +143 -0
  368. package/lib/drivers/shared/experiment-policy.js.map +1 -0
  369. package/lib/drivers/subprocess/index.d.ts +39 -4
  370. package/lib/drivers/subprocess/index.d.ts.map +1 -1
  371. package/lib/drivers/subprocess/index.js +56 -12
  372. package/lib/drivers/subprocess/index.js.map +1 -1
  373. package/lib/index.d.ts +22 -8
  374. package/lib/index.d.ts.map +1 -1
  375. package/lib/index.js +20 -6
  376. package/lib/index.js.map +1 -1
  377. package/lib/optimization/reflective.d.ts +3 -1
  378. package/lib/optimization/reflective.d.ts.map +1 -1
  379. package/lib/optimization/reflective.js +3 -2
  380. package/lib/optimization/reflective.js.map +1 -1
  381. package/lib/orchestrator/annotation-loader.d.ts +6 -2
  382. package/lib/orchestrator/annotation-loader.d.ts.map +1 -1
  383. package/lib/orchestrator/annotation-loader.js +8 -0
  384. package/lib/orchestrator/annotation-loader.js.map +1 -1
  385. package/lib/orchestrator/annotation-store.d.ts.map +1 -1
  386. package/lib/orchestrator/annotation-store.js +16 -2
  387. package/lib/orchestrator/annotation-store.js.map +1 -1
  388. package/lib/orchestrator/artifact-origin.d.ts +3 -0
  389. package/lib/orchestrator/artifact-origin.d.ts.map +1 -0
  390. package/lib/orchestrator/artifact-origin.js +40 -0
  391. package/lib/orchestrator/artifact-origin.js.map +1 -0
  392. package/lib/orchestrator/campaign-lifecycle.d.ts +1 -0
  393. package/lib/orchestrator/campaign-lifecycle.d.ts.map +1 -1
  394. package/lib/orchestrator/campaign-lifecycle.js +4 -1
  395. package/lib/orchestrator/campaign-lifecycle.js.map +1 -1
  396. package/lib/orchestrator/candidates.d.ts.map +1 -1
  397. package/lib/orchestrator/candidates.js +3 -2
  398. package/lib/orchestrator/candidates.js.map +1 -1
  399. package/lib/orchestrator/compare.d.ts +19 -3
  400. package/lib/orchestrator/compare.d.ts.map +1 -1
  401. package/lib/orchestrator/compare.js +32 -6
  402. package/lib/orchestrator/compare.js.map +1 -1
  403. package/lib/orchestrator/comparison-identity.d.ts.map +1 -1
  404. package/lib/orchestrator/comparison-identity.js +2 -0
  405. package/lib/orchestrator/comparison-identity.js.map +1 -1
  406. package/lib/orchestrator/config.d.ts +179 -1
  407. package/lib/orchestrator/config.d.ts.map +1 -1
  408. package/lib/orchestrator/config.js +18 -4
  409. package/lib/orchestrator/config.js.map +1 -1
  410. package/lib/orchestrator/discover.d.ts +1 -0
  411. package/lib/orchestrator/discover.d.ts.map +1 -1
  412. package/lib/orchestrator/discover.js +7 -1
  413. package/lib/orchestrator/discover.js.map +1 -1
  414. package/lib/orchestrator/doctor.d.ts +1 -0
  415. package/lib/orchestrator/doctor.d.ts.map +1 -1
  416. package/lib/orchestrator/doctor.js +121 -33
  417. package/lib/orchestrator/doctor.js.map +1 -1
  418. package/lib/orchestrator/driver-capabilities.d.ts +4 -0
  419. package/lib/orchestrator/driver-capabilities.d.ts.map +1 -0
  420. package/lib/orchestrator/driver-capabilities.js +13 -0
  421. package/lib/orchestrator/driver-capabilities.js.map +1 -0
  422. package/lib/orchestrator/driver-identity.d.ts +5 -0
  423. package/lib/orchestrator/driver-identity.d.ts.map +1 -0
  424. package/lib/orchestrator/driver-identity.js +51 -0
  425. package/lib/orchestrator/driver-identity.js.map +1 -0
  426. package/lib/orchestrator/experiment-context.d.ts +51 -3
  427. package/lib/orchestrator/experiment-context.d.ts.map +1 -1
  428. package/lib/orchestrator/experiment-context.js.map +1 -1
  429. package/lib/orchestrator/experiment-contracts.d.ts +30 -1
  430. package/lib/orchestrator/experiment-contracts.d.ts.map +1 -1
  431. package/lib/orchestrator/experiment-corpus.d.ts +2 -1
  432. package/lib/orchestrator/experiment-corpus.d.ts.map +1 -1
  433. package/lib/orchestrator/experiment-corpus.js +28 -22
  434. package/lib/orchestrator/experiment-corpus.js.map +1 -1
  435. package/lib/orchestrator/experiment-effects.d.ts +33 -0
  436. package/lib/orchestrator/experiment-effects.d.ts.map +1 -0
  437. package/lib/orchestrator/experiment-effects.js +44 -0
  438. package/lib/orchestrator/experiment-effects.js.map +1 -0
  439. package/lib/orchestrator/experiment-evaluation.d.ts.map +1 -1
  440. package/lib/orchestrator/experiment-evaluation.js +56 -5
  441. package/lib/orchestrator/experiment-evaluation.js.map +1 -1
  442. package/lib/orchestrator/experiment-identity.d.ts +3 -0
  443. package/lib/orchestrator/experiment-identity.d.ts.map +1 -1
  444. package/lib/orchestrator/experiment-identity.js +22 -33
  445. package/lib/orchestrator/experiment-identity.js.map +1 -1
  446. package/lib/orchestrator/experiment-loader.d.ts +8 -3
  447. package/lib/orchestrator/experiment-loader.d.ts.map +1 -1
  448. package/lib/orchestrator/experiment-preflight.d.ts +3 -0
  449. package/lib/orchestrator/experiment-preflight.d.ts.map +1 -0
  450. package/lib/orchestrator/experiment-preflight.js +21 -0
  451. package/lib/orchestrator/experiment-preflight.js.map +1 -0
  452. package/lib/orchestrator/experiment-report.d.ts +90 -1
  453. package/lib/orchestrator/experiment-report.d.ts.map +1 -1
  454. package/lib/orchestrator/experiment-report.js +9 -1
  455. package/lib/orchestrator/experiment-report.js.map +1 -1
  456. package/lib/orchestrator/experiment-runs.d.ts +61 -2
  457. package/lib/orchestrator/experiment-runs.d.ts.map +1 -1
  458. package/lib/orchestrator/experiment-runs.js +13 -5
  459. package/lib/orchestrator/experiment-runs.js.map +1 -1
  460. package/lib/orchestrator/experiment-runtime-identity.d.ts +0 -16
  461. package/lib/orchestrator/experiment-runtime-identity.d.ts.map +1 -1
  462. package/lib/orchestrator/experiment-runtime-identity.js +5 -220
  463. package/lib/orchestrator/experiment-runtime-identity.js.map +1 -1
  464. package/lib/orchestrator/experiment-selection.d.ts.map +1 -1
  465. package/lib/orchestrator/experiment-selection.js +52 -0
  466. package/lib/orchestrator/experiment-selection.js.map +1 -1
  467. package/lib/orchestrator/experiment.d.ts +3 -3
  468. package/lib/orchestrator/experiment.d.ts.map +1 -1
  469. package/lib/orchestrator/experiment.js +26 -21
  470. package/lib/orchestrator/experiment.js.map +1 -1
  471. package/lib/orchestrator/fixture-identity.d.ts +1 -0
  472. package/lib/orchestrator/fixture-identity.d.ts.map +1 -1
  473. package/lib/orchestrator/fixture-identity.js +6 -1
  474. package/lib/orchestrator/fixture-identity.js.map +1 -1
  475. package/lib/orchestrator/fs-read.d.ts +1 -6
  476. package/lib/orchestrator/fs-read.d.ts.map +1 -1
  477. package/lib/orchestrator/fs-read.js +2 -32
  478. package/lib/orchestrator/fs-read.js.map +1 -1
  479. package/lib/orchestrator/grader-experiment.d.ts +33 -3
  480. package/lib/orchestrator/grader-experiment.d.ts.map +1 -1
  481. package/lib/orchestrator/grader-experiment.js +54 -9
  482. package/lib/orchestrator/grader-experiment.js.map +1 -1
  483. package/lib/orchestrator/grading.d.ts +2 -1
  484. package/lib/orchestrator/grading.d.ts.map +1 -1
  485. package/lib/orchestrator/grading.js +46 -31
  486. package/lib/orchestrator/grading.js.map +1 -1
  487. package/lib/orchestrator/harness-catalog-drift.d.ts +22 -0
  488. package/lib/orchestrator/harness-catalog-drift.d.ts.map +1 -0
  489. package/lib/orchestrator/harness-catalog-drift.js +90 -0
  490. package/lib/orchestrator/harness-catalog-drift.js.map +1 -0
  491. package/lib/orchestrator/harness-registry.d.ts +4 -0
  492. package/lib/orchestrator/harness-registry.d.ts.map +1 -0
  493. package/lib/orchestrator/harness-registry.js +5 -0
  494. package/lib/orchestrator/harness-registry.js.map +1 -0
  495. package/lib/orchestrator/index.d.ts +1 -1
  496. package/lib/orchestrator/index.d.ts.map +1 -1
  497. package/lib/orchestrator/index.js +1 -1
  498. package/lib/orchestrator/index.js.map +1 -1
  499. package/lib/orchestrator/list-runs.d.ts +8 -1
  500. package/lib/orchestrator/list-runs.d.ts.map +1 -1
  501. package/lib/orchestrator/list-runs.js +81 -14
  502. package/lib/orchestrator/list-runs.js.map +1 -1
  503. package/lib/orchestrator/optimization-lifecycle.d.ts.map +1 -1
  504. package/lib/orchestrator/optimization-lifecycle.js +3 -1
  505. package/lib/orchestrator/optimization-lifecycle.js.map +1 -1
  506. package/lib/orchestrator/orchestrator.d.ts +18 -2
  507. package/lib/orchestrator/orchestrator.d.ts.map +1 -1
  508. package/lib/orchestrator/orchestrator.js +50 -168
  509. package/lib/orchestrator/orchestrator.js.map +1 -1
  510. package/lib/orchestrator/paired-effects.d.ts +34 -0
  511. package/lib/orchestrator/paired-effects.d.ts.map +1 -0
  512. package/lib/orchestrator/paired-effects.js +158 -0
  513. package/lib/orchestrator/paired-effects.js.map +1 -0
  514. package/lib/orchestrator/provenance.d.ts +5 -1
  515. package/lib/orchestrator/provenance.d.ts.map +1 -1
  516. package/lib/orchestrator/provenance.js +16 -3
  517. package/lib/orchestrator/provenance.js.map +1 -1
  518. package/lib/orchestrator/regrade.d.ts +9 -1
  519. package/lib/orchestrator/regrade.d.ts.map +1 -1
  520. package/lib/orchestrator/rubric-loader.js +1 -1
  521. package/lib/orchestrator/rubric-loader.js.map +1 -1
  522. package/lib/orchestrator/run-dir.d.ts +2 -0
  523. package/lib/orchestrator/run-dir.d.ts.map +1 -1
  524. package/lib/orchestrator/run-dir.js +1 -1
  525. package/lib/orchestrator/run-dir.js.map +1 -1
  526. package/lib/orchestrator/run-execution.d.ts +3 -0
  527. package/lib/orchestrator/run-execution.d.ts.map +1 -1
  528. package/lib/orchestrator/run-execution.js +66 -12
  529. package/lib/orchestrator/run-execution.js.map +1 -1
  530. package/lib/orchestrator/run-lifecycle.d.ts +1 -0
  531. package/lib/orchestrator/run-lifecycle.d.ts.map +1 -1
  532. package/lib/orchestrator/run-lifecycle.js +3 -2
  533. package/lib/orchestrator/run-lifecycle.js.map +1 -1
  534. package/lib/orchestrator/run-workspace.d.ts +10 -0
  535. package/lib/orchestrator/run-workspace.d.ts.map +1 -0
  536. package/lib/orchestrator/run-workspace.js +58 -0
  537. package/lib/orchestrator/run-workspace.js.map +1 -0
  538. package/lib/orchestrator/suite-compare.d.ts +37 -0
  539. package/lib/orchestrator/suite-compare.d.ts.map +1 -1
  540. package/lib/orchestrator/suite-compare.js +27 -17
  541. package/lib/orchestrator/suite-compare.js.map +1 -1
  542. package/lib/orchestrator/suite-runs.d.ts +6 -1
  543. package/lib/orchestrator/suite-runs.d.ts.map +1 -1
  544. package/lib/orchestrator/suite-runs.js +14 -2
  545. package/lib/orchestrator/suite-runs.js.map +1 -1
  546. package/lib/orchestrator/suite-summary.d.ts +77 -0
  547. package/lib/orchestrator/suite-summary.d.ts.map +1 -1
  548. package/lib/orchestrator/suite-summary.js +61 -12
  549. package/lib/orchestrator/suite-summary.js.map +1 -1
  550. package/lib/previewer/artifacts.d.ts +25 -0
  551. package/lib/previewer/artifacts.d.ts.map +1 -0
  552. package/lib/previewer/artifacts.js +180 -0
  553. package/lib/previewer/artifacts.js.map +1 -0
  554. package/lib/previewer/server.d.ts +111 -0
  555. package/lib/previewer/server.d.ts.map +1 -0
  556. package/lib/previewer/server.js +558 -0
  557. package/lib/previewer/server.js.map +1 -0
  558. package/package.json +3 -3
  559. package/skills/lux-answerer/SKILL.md +2 -2
  560. package/src/answerers/claude-code/index.ts +6 -5
  561. package/src/answerers/persona/index.ts +75 -34
  562. package/src/answerers/terminal/index.ts +8 -12
  563. package/src/assertions/authoring.ts +2 -0
  564. package/src/assertions/core/command-exits-zero.ts +61 -7
  565. package/src/assertions/core/event-checks.ts +64 -3
  566. package/src/assertions/core/helpers.ts +3 -6
  567. package/src/assertions/core/index.ts +2 -0
  568. package/src/assertions/core/resource-checks.ts +38 -5
  569. package/src/assertions/rubric/index.ts +68 -13
  570. package/src/assertions/rubric/internal.ts +227 -27
  571. package/src/authoring.ts +345 -2
  572. package/src/cli/bin.ts +2 -12
  573. package/src/cli/command-runtime.ts +20 -9
  574. package/src/cli/doctor.ts +17 -0
  575. package/src/cli/harness-plan.ts +117 -0
  576. package/src/cli/init-templates.ts +238 -0
  577. package/src/cli/init.ts +53 -184
  578. package/src/cli/output-schemas.ts +106 -0
  579. package/src/cli/program.ts +691 -721
  580. package/src/cli/render/reporter.ts +50 -8
  581. package/src/cli/run-options.ts +132 -25
  582. package/src/cli/view.ts +129 -0
  583. package/src/container/driver.ts +211 -0
  584. package/src/container/protocol.ts +48 -0
  585. package/src/container/resources.ts +153 -0
  586. package/src/container/worker.ts +107 -0
  587. package/src/core/action-events.ts +59 -0
  588. package/src/core/agent-activity.ts +236 -0
  589. package/src/core/agent-environment.ts +64 -0
  590. package/src/core/agent-events.ts +17 -0
  591. package/src/core/annotation.ts +2 -1
  592. package/src/core/answerer.ts +9 -0
  593. package/src/core/artifact-evidence.ts +47 -4
  594. package/src/core/assertion.ts +21 -1
  595. package/src/core/case.ts +21 -3
  596. package/src/core/command-verification.ts +74 -0
  597. package/src/core/driver-execution.ts +84 -0
  598. package/src/core/driver-metrics.ts +51 -0
  599. package/src/core/driver.ts +76 -0
  600. package/src/core/duration.ts +52 -0
  601. package/src/core/environment.ts +22 -0
  602. package/src/core/evaluation-clusters.ts +35 -0
  603. package/src/core/events.ts +14 -2
  604. package/src/core/experiment.ts +64 -24
  605. package/src/core/file-tree.ts +35 -0
  606. package/src/core/global-id.ts +26 -0
  607. package/src/core/harness-catalog.ts +100 -0
  608. package/src/core/harness-catalogs/antigravity.ts +24 -0
  609. package/src/core/harness-catalogs/claude-code.ts +25 -0
  610. package/src/core/harness-catalogs/codex.ts +27 -0
  611. package/src/core/harness-catalogs/copilot.ts +46 -0
  612. package/src/core/harness-catalogs/cursor.ts +13 -0
  613. package/src/core/harness-catalogs/grok-build.ts +19 -0
  614. package/src/core/harness-catalogs/index.ts +31 -0
  615. package/src/core/harness-matrix.ts +316 -0
  616. package/src/core/index.ts +12 -0
  617. package/src/core/lifecycle-fixtures.ts +4 -2
  618. package/src/core/model-cli.ts +52 -23
  619. package/src/core/platform-process.ts +58 -10
  620. package/src/core/run.ts +31 -0
  621. package/src/core/usage.ts +8 -0
  622. package/src/core/wire.ts +5 -1
  623. package/src/drivers/antigravity/README.md +171 -0
  624. package/src/drivers/antigravity/artifacts.ts +37 -0
  625. package/src/drivers/antigravity/config.ts +92 -0
  626. package/src/drivers/antigravity/events.ts +290 -0
  627. package/src/drivers/antigravity/index.ts +132 -0
  628. package/src/drivers/antigravity/runtime.ts +94 -0
  629. package/src/drivers/claude-code/deferred-process.ts +118 -0
  630. package/src/drivers/claude-code/index.ts +216 -281
  631. package/src/drivers/claude-code/isolation.ts +228 -0
  632. package/src/drivers/claude-code/parse-events.ts +98 -12
  633. package/src/drivers/codex/app-events.ts +126 -16
  634. package/src/drivers/codex/config.ts +50 -8
  635. package/src/drivers/codex/exec-events.ts +258 -0
  636. package/src/drivers/codex/index.ts +144 -312
  637. package/src/drivers/copilot/README.md +60 -0
  638. package/src/drivers/copilot/config.ts +61 -0
  639. package/src/drivers/copilot/index.ts +310 -0
  640. package/src/drivers/cursor/README.md +66 -0
  641. package/src/drivers/cursor/config.ts +31 -0
  642. package/src/drivers/cursor/index.ts +326 -0
  643. package/src/drivers/cursor/interaction.ts +74 -0
  644. package/src/drivers/grok-build/README.md +112 -0
  645. package/src/drivers/grok-build/config.ts +43 -0
  646. package/src/drivers/grok-build/index.ts +331 -0
  647. package/src/drivers/mcp/index.ts +25 -11
  648. package/src/drivers/shared/acp-events.ts +94 -0
  649. package/src/drivers/shared/acp-interaction.ts +27 -0
  650. package/src/drivers/shared/acp-session.ts +40 -0
  651. package/src/drivers/shared/acp-transport.ts +187 -0
  652. package/src/drivers/shared/artifacts.ts +6 -2
  653. package/src/drivers/shared/experiment-behavior.ts +214 -0
  654. package/src/drivers/shared/experiment-policy.ts +195 -0
  655. package/src/drivers/subprocess/index.ts +55 -12
  656. package/src/index.ts +115 -10
  657. package/src/optimization/reflective.ts +3 -2
  658. package/src/orchestrator/annotation-loader.ts +10 -0
  659. package/src/orchestrator/annotation-store.ts +24 -3
  660. package/src/orchestrator/artifact-origin.ts +50 -0
  661. package/src/orchestrator/campaign-lifecycle.ts +5 -1
  662. package/src/orchestrator/candidates.ts +3 -2
  663. package/src/orchestrator/compare.ts +41 -6
  664. package/src/orchestrator/comparison-identity.ts +2 -0
  665. package/src/orchestrator/config.ts +20 -3
  666. package/src/orchestrator/discover.ts +8 -1
  667. package/src/orchestrator/doctor.ts +189 -28
  668. package/src/orchestrator/driver-capabilities.ts +21 -0
  669. package/src/orchestrator/driver-identity.ts +69 -0
  670. package/src/orchestrator/experiment-context.ts +3 -2
  671. package/src/orchestrator/experiment-corpus.ts +53 -37
  672. package/src/orchestrator/experiment-effects.ts +61 -0
  673. package/src/orchestrator/experiment-evaluation.ts +71 -10
  674. package/src/orchestrator/experiment-identity.ts +42 -48
  675. package/src/orchestrator/experiment-preflight.ts +27 -0
  676. package/src/orchestrator/experiment-report.ts +21 -1
  677. package/src/orchestrator/experiment-runs.ts +11 -4
  678. package/src/orchestrator/experiment-runtime-identity.ts +5 -243
  679. package/src/orchestrator/experiment-selection.ts +77 -0
  680. package/src/orchestrator/experiment.ts +29 -29
  681. package/src/orchestrator/fixture-identity.ts +9 -1
  682. package/src/orchestrator/fs-read.ts +2 -32
  683. package/src/orchestrator/grader-experiment.ts +74 -13
  684. package/src/orchestrator/grading.ts +67 -28
  685. package/src/orchestrator/harness-catalog-drift.ts +132 -0
  686. package/src/orchestrator/harness-registry.ts +12 -0
  687. package/src/orchestrator/index.ts +1 -0
  688. package/src/orchestrator/list-runs.ts +98 -13
  689. package/src/orchestrator/optimization-lifecycle.ts +4 -1
  690. package/src/orchestrator/orchestrator.ts +92 -216
  691. package/src/orchestrator/paired-effects.ts +209 -0
  692. package/src/orchestrator/provenance.ts +23 -3
  693. package/src/orchestrator/rubric-loader.ts +1 -1
  694. package/src/orchestrator/run-dir.ts +8 -1
  695. package/src/orchestrator/run-execution.ts +77 -11
  696. package/src/orchestrator/run-lifecycle.ts +4 -2
  697. package/src/orchestrator/run-workspace.ts +62 -0
  698. package/src/orchestrator/suite-compare.ts +29 -19
  699. package/src/orchestrator/suite-runs.ts +13 -2
  700. package/src/orchestrator/suite-summary.ts +122 -13
  701. package/src/previewer/artifacts.ts +221 -0
  702. package/src/previewer/server.ts +787 -0
  703. package/viewer/app.css +2079 -0
  704. package/viewer/app.js +627 -0
  705. package/viewer/artifact-view.js +48 -0
  706. package/viewer/charts.js +86 -0
  707. package/viewer/detail.js +1237 -0
  708. package/viewer/format.js +129 -0
  709. package/viewer/index.html +151 -0
  710. package/lib/answerers/scripted/index.d.ts +0 -8
  711. package/lib/answerers/scripted/index.d.ts.map +0 -1
  712. package/lib/answerers/scripted/index.js +0 -163
  713. package/lib/answerers/scripted/index.js.map +0 -1
  714. package/lib/cli/skills.d.ts +0 -38
  715. package/lib/cli/skills.d.ts.map +0 -1
  716. package/lib/cli/skills.js +0 -84
  717. package/lib/cli/skills.js.map +0 -1
  718. package/lib/drivers/shared/secure-copy.d.ts.map +0 -1
  719. package/lib/drivers/shared/secure-copy.js.map +0 -1
  720. package/skills/lux/SKILL.md +0 -85
  721. package/skills/lux/references/cli.md +0 -102
  722. package/skills/lux/references/eval-authoring.md +0 -105
  723. package/src/answerers/scripted/index.ts +0 -186
  724. package/src/cli/skills.ts +0 -129
  725. /package/lib/{drivers/shared → core}/secure-copy.d.ts +0 -0
  726. /package/lib/{drivers/shared → core}/secure-copy.js +0 -0
  727. /package/src/{drivers/shared → core}/secure-copy.ts +0 -0
@@ -1,85 +0,0 @@
1
- ---
2
- name: lux
3
- description: Author, validate, run, inspect, compare, and improve coding-agent evaluations with the Lux CLI. Use when creating Lux cases or campaigns, choosing assertions/personas/drivers, diagnosing eval failures, comparing runs, or running Lux experiments.
4
- ---
5
-
6
- # Lux
7
-
8
- Use Lux as an eval test runner and evidence system for coding agents. Prefer
9
- small, discriminating cases with deterministic assertions; add an LLM rubric
10
- only for qualities that artifacts and commands cannot establish.
11
-
12
- ## Start here
13
-
14
- 1. Inspect the repository and its existing `lux.config.ts`, cases, fixtures,
15
- prompts, and experiments before adding files.
16
- 2. If Lux is not initialized, run `npm exec -- lux init` for ordinary evals or
17
- `npm exec -- lux init --experiment` for an improvement campaign.
18
- 3. Read [references/eval-authoring.md](references/eval-authoring.md) before
19
- authoring or reviewing a case.
20
- 4. Read [references/cli.md](references/cli.md) before running, diagnosing,
21
- comparing, or promoting results.
22
- 5. Run `npm exec -- lux doctor` before model calls. Treat its errors as
23
- authoring problems, not as permission to bypass validation.
24
-
25
- ## Workflow
26
-
27
- ### Author an eval
28
-
29
- - Define the behavior and likely failure mode first.
30
- - Make the prompt realistic and self-contained.
31
- - Give the persona only facts and preferences the simulated user should know.
32
- - Assert observable outcomes, not implementation details.
33
- - Use stable assertion IDs so grading evidence remains intelligible.
34
- - Use the cheapest deterministic assertion that proves each requirement.
35
- - Include a rubric assertion only when semantic judgment is unavoidable, and
36
- write one narrow, falsifiable criterion per assertion.
37
- - Pin the subject driver model explicitly when comparability matters.
38
-
39
- ### Run and diagnose
40
-
41
- ```bash
42
- npm exec -- lux doctor
43
- npm exec -- lux run <case-or-filter> --loop 3
44
- npm exec -- lux view <run-or-suite>
45
- ```
46
-
47
- Inspect `case.json`, `run.json`, `events.jsonl`, `grading.json`, and `artifacts/`
48
- before changing the case. Separate subject failure from harness failure:
49
-
50
- - Subject failure: the agent misunderstood, asked poorly, used the wrong tools,
51
- or left incorrect artifacts.
52
- - Harness failure: the prompt was underspecified, the persona lacked a needed
53
- fact, an assertion measured a proxy, or the judge criterion was ambiguous.
54
-
55
- Do not weaken a valid assertion merely to make a run pass.
56
-
57
- ### Improve with evidence
58
-
59
- Use repeated runs and held-out splits for noisy agent behavior. For skill,
60
- prompt, or agent-source changes, use `subjectPath()` in cases and an experiment
61
- campaign with immutable candidates. Plan first, run the experiment, inspect the
62
- report, and apply a promoted candidate as a separate action:
63
-
64
- ```bash
65
- npm exec -- lux experiment experiments/example.experiment.ts --plan
66
- npm exec -- lux experiment experiments/example.experiment.ts
67
- npm exec -- lux report <experiment-dir>
68
- npm exec -- lux apply <experiment-dir>
69
- ```
70
-
71
- Never edit a materialized candidate or managed experiment record by hand.
72
-
73
- ## Guardrails
74
-
75
- - Lux eval projects execute project-authored commands and agent-generated work.
76
- Run untrusted evals only in a disposable environment.
77
- - Do not infer success from agent prose. Grade the final artifacts and recorded
78
- behavior.
79
- - Do not use only `run-succeeded` for a case that claims to verify a concrete
80
- result.
81
- - Do not let train examples leak into validation or test splits.
82
- - Do not combine evidence across changed models, harnesses, cases, or subjects;
83
- Lux identity checks exist to prevent that.
84
- - Prefer `--plan`, `doctor`, `view`, and `report` before expensive or mutating
85
- commands.
@@ -1,102 +0,0 @@
1
- # Lux CLI runbook
2
-
3
- Invoke the project-local CLI with `npm exec -- lux ...` unless the repository
4
- uses another package-manager convention.
5
-
6
- ## Author and preflight
7
-
8
- ```bash
9
- lux init
10
- lux init --experiment
11
- lux doctor
12
- lux doctor experiments/campaign.experiment.ts --json
13
- lux run --list
14
- lux run --list-tags
15
- ```
16
-
17
- `init` is conservative around existing files. `doctor` validates configuration,
18
- case discovery, driver executables, campaign splits, confidence feasibility,
19
- and projected budgets without model calls.
20
-
21
- ## Run
22
-
23
- ```bash
24
- lux run
25
- lux run retry-flag
26
- lux run cases/retry-flag.ts
27
- lux run --tag smoke
28
- lux run retry --loop 5 --concurrency 2
29
- lux run one-case --interactive
30
- ```
31
-
32
- Filters match case IDs and paths. Tags come from `meta.tags`. A run invocation
33
- also creates a suite record, which is the right unit for repeated or multi-case
34
- comparison.
35
-
36
- ## Inspect and compare
37
-
38
- ```bash
39
- lux view
40
- lux view <run-or-suite>
41
- lux view --experiments
42
- lux compare <run-or-suite-a> <run-or-suite-b>
43
- ```
44
-
45
- Use `view` before opening raw files. When diagnosing, inspect:
46
-
47
- - `case.json`: frozen authored inputs;
48
- - `run.json`: exit reason, timing, usage, source identity;
49
- - `events.jsonl`: trajectory, tools, and interrupts;
50
- - `grading.json`: assertion evidence;
51
- - `artifacts/`: the subject workspace output.
52
-
53
- `compare` exits nonzero on a gated regression, making it suitable for CI.
54
-
55
- ## Regrade and annotate
56
-
57
- ```bash
58
- lux grade <run>
59
- lux grade <run> --case cases/changed-grader.ts
60
- lux annotate <run> \
61
- --out evals/annotations.json \
62
- --rubric evals/rubrics/case.json \
63
- --label pass
64
- ```
65
-
66
- Regrading preserves subject evidence and changes only grading. Human annotations
67
- support grader-alignment experiments; keep assertion IDs aligned with the
68
- rubric and record reviewer context where available.
69
-
70
- ## Experiment lifecycle
71
-
72
- ```bash
73
- lux experiment <campaign> --plan
74
- lux experiment <campaign>
75
- lux optimize <campaign> --plan
76
- lux optimize <campaign>
77
- lux optimize <campaign> --resume <experiment-dir>
78
- lux view <experiment-dir>
79
- lux report <experiment-dir> --out .lux-runs/reports/decision.md
80
- lux apply <experiment-dir>
81
- ```
82
-
83
- `experiment` compares authored variants. `optimize` searches proposed changes.
84
- Both create durable, resumable, integrity-checked records. `report` re-verifies
85
- the ledger and promotion decision. `apply` is deliberately separate and
86
- hash-guards the source it changes.
87
-
88
- Use the exact resume, report, and apply commands printed by Lux. Do not edit
89
- `.lux-runs/.experiments/` manually.
90
-
91
- ## Failure triage
92
-
93
- - Discovery/config error: run `doctor`, verify paths and exported definitions.
94
- - Driver unavailable: verify the selected CLI is installed and the model is
95
- explicitly configured where required.
96
- - Agent exit/error: inspect `events.jsonl` and the driver section of `run.json`.
97
- - Assertion failure: inspect the assertion evidence and final artifact; decide
98
- whether the subject or measurement is wrong.
99
- - Judge disagreement: narrow the rubric, regrade stored evidence, and collect
100
- human annotations before changing the subject.
101
- - Interrupted experiment: resume the printed experiment directory; do not start
102
- a nominally identical campaign and combine results yourself.
@@ -1,105 +0,0 @@
1
- # Authoring useful Lux evals
2
-
3
- ## Case shape
4
-
5
- A case default-exports `defineEvalCase`:
6
-
7
- ```ts
8
- import { defineEvalCase } from "@prismatic-io/lux";
9
-
10
- export default defineEvalCase({
11
- id: "retry-flag",
12
- prompt: "Add a --retry <n> flag to the fetch command.",
13
- persona: "You are the maintainer. If asked, retries default to 3.",
14
- driver: { name: "codex", config: { model: "YOUR_CODEX_MODEL" } },
15
- assertions: [
16
- { id: "flag-present", type: "file-contains", path: "src/cli.ts", text: "--retry" },
17
- { id: "tests-pass", type: "command-exits-zero", command: "npm test" },
18
- { id: "test-coverage", type: "rubric", criteria: "A test covers the new retry flag." },
19
- ],
20
- meta: { tags: ["cli", "validation"] },
21
- });
22
- ```
23
-
24
- Use the project-level default driver when all cases share it. Case-level
25
- drivers are useful for intentional cross-agent or cross-model comparisons.
26
-
27
- ## Design checklist
28
-
29
- Before writing:
30
-
31
- 1. State the capability or regression in one sentence.
32
- 2. Identify the artifact, command result, or interaction that proves it.
33
- 3. List plausible false positives. Adjust assertions to reject them.
34
- 4. Decide whether the case needs a fixture and whether each run must begin from
35
- an isolated copy.
36
- 5. Identify any question a competent agent must ask. Put only the answer and
37
- relevant preferences in the persona.
38
-
39
- After writing:
40
-
41
- 1. Run `lux doctor`.
42
- 2. List discovery with `lux run <filter> --list`.
43
- 3. Run the case more than once if agent behavior can vary.
44
- 4. Inspect events and artifacts, including failed runs.
45
- 5. Confirm each assertion fails when its requirement is deliberately absent.
46
-
47
- ## Assertion selection
48
-
49
- Prefer deterministic assertions:
50
-
51
- - `run-succeeded`: the driver completed; necessary but rarely sufficient.
52
- - `file-exists`: a required artifact exists.
53
- - `file-contains`: a stable literal is present.
54
- - `json-path-equals`: structured output contains the expected value.
55
- - `command-exits-zero`: project-authored validation succeeds.
56
-
57
- Use `rubric` for semantic properties such as design quality, completeness, or
58
- whether a test meaningfully covers behavior. Keep criteria narrow. Avoid words
59
- like “good,” “proper,” or “best practice” without observable conditions.
60
-
61
- Assertions should test user-visible behavior and durable contracts. Avoid
62
- requiring a specific function name, file layout, or algorithm unless that is
63
- the contract under evaluation.
64
-
65
- ## Human-in-the-loop behavior
66
-
67
- The persona is simulated user state, not another system prompt. Include:
68
-
69
- - facts the user would know;
70
- - preferences needed to resolve legitimate ambiguity;
71
- - approval boundaries relevant to the task.
72
-
73
- Do not tell the persona how to help the agent solve the task. If no interaction
74
- is part of the capability being evaluated, omit the persona or keep it minimal.
75
-
76
- Use `interactionMode: "defer-resume"` for automated Claude Code question-tool
77
- handling. Use `textQuestionFallback: true` only when intentionally evaluating
78
- models that ask in prose instead of using the supported tool.
79
-
80
- ## Experiments for prompts, skills, and agent source
81
-
82
- Bind mutable source through `subjectPath()`:
83
-
84
- ```ts
85
- import { defineEvalCase, subjectPath } from "@prismatic-io/lux";
86
-
87
- export default defineEvalCase({
88
- id: "skill-routing",
89
- prompt: `Use the skill at ${subjectPath("plugin/skills/routing/SKILL.md")} to complete the task.`,
90
- assertions: [{ id: "completed", type: "run-succeeded" }],
91
- meta: { tags: ["validation"] },
92
- });
93
- ```
94
-
95
- Campaigns should:
96
-
97
- - restrict `subject.mutable` to the intended source;
98
- - define named, explicit driver/model profiles;
99
- - keep train, validation, and test selectors disjoint;
100
- - budget calls, tokens, cost, and wall time;
101
- - use repetitions and confidence gates appropriate to stochastic outcomes;
102
- - reserve held-out cases for promotion and final confirmation.
103
-
104
- Use `experiment` for authored variants and `optimize` for model-proposed source
105
- changes. Always run the corresponding `--plan` command first.
@@ -1,186 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
- import { resolve } from "node:path";
3
- import { load as loadYaml } from "js-yaml";
4
- import { z } from "zod";
5
- import {
6
- type Answer,
7
- type Answerer,
8
- type AnswererPlugin,
9
- formatZodIssues,
10
- type Interrupt,
11
- InterruptKindSchema,
12
- } from "../../core/index.js";
13
- import { approveAnswer } from "../shared.js";
14
-
15
- const MatchSchema = z
16
- .object({
17
- kind: InterruptKindSchema.optional(),
18
- id: z.string().optional(),
19
- question_contains: z.string().optional(),
20
- question_matches: z.string().optional(),
21
- request_contains: z.string().optional(),
22
- })
23
- .strict();
24
-
25
- const AnsweredAskSchema = z.object({ answer: z.string() }).strict();
26
- const AnsweredApproveSchema = z
27
- .object({ approved: z.boolean(), reason: z.string().optional() })
28
- .strict();
29
- const AnsweredCustomSchema = z.object({ payload: z.unknown() }).strict();
30
-
31
- const RuleSchema = z.union([
32
- z.object({ match: MatchSchema, answer: z.string() }).strict(),
33
- z.object({ match: MatchSchema, approved: z.boolean(), reason: z.string().optional() }).strict(),
34
- z.object({ match: MatchSchema, payload: z.unknown() }).strict(),
35
- z.object({ default: AnsweredAskSchema }).strict(),
36
- z.object({ default: AnsweredApproveSchema }).strict(),
37
- z.object({ default: AnsweredCustomSchema }).strict(),
38
- ]);
39
-
40
- const FixtureSchema = z.array(RuleSchema);
41
-
42
- export const ScriptedAnswererConfigSchema = z.object({ fixturePath: z.string() }).strict();
43
-
44
- export type ScriptedAnswererConfig = z.infer<typeof ScriptedAnswererConfigSchema>;
45
-
46
- type Rule = z.infer<typeof RuleSchema>;
47
-
48
- /** A rule vetted at load time: kind/body cross-checked, regex pre-compiled. */
49
- type PreparedRule = { rule: Rule; questionPattern: RegExp | undefined };
50
-
51
- const ruleLabel = (path: string, index: number): string => `rule ${index + 1} of ${path}`;
52
-
53
- const bodyKind = (rule: Rule): Interrupt["kind"] => {
54
- const body = "default" in rule ? rule.default : rule;
55
- if ("answer" in body) return "ask";
56
- if ("approved" in body) return "approve";
57
- return "custom";
58
- };
59
-
60
- const matchableKind = (m: z.infer<typeof MatchSchema>): Interrupt["kind"] | undefined => {
61
- if (m.kind) return m.kind;
62
- if (m.question_contains !== undefined || m.question_matches !== undefined) return "ask";
63
- if (m.request_contains !== undefined) return "approve";
64
- return undefined;
65
- };
66
-
67
- const compileQuestionPattern = (rule: Rule, path: string, index: number): RegExp | undefined => {
68
- if (!("match" in rule) || rule.match.question_matches === undefined) return undefined;
69
- try {
70
- return new RegExp(rule.match.question_matches);
71
- } catch (err) {
72
- throw new Error(
73
- `scripted: invalid question_matches in ${ruleLabel(path, index)}: ${
74
- err instanceof Error ? err.message : String(err)
75
- }`,
76
- );
77
- }
78
- };
79
-
80
- // The rule's match fields and answer body are independently valid shapes, so
81
- // their interrupt kinds still need a semantic cross-check.
82
- const prepareRule = (rule: Rule, path: string, index: number): PreparedRule => {
83
- if ("match" in rule) {
84
- const wanted = matchableKind(rule.match);
85
- const answered = bodyKind(rule);
86
- if (wanted !== undefined && wanted !== answered) {
87
- throw new Error(
88
- `scripted: ${ruleLabel(path, index)} matches ${wanted} interrupts but its body answers ${answered}`,
89
- );
90
- }
91
- }
92
- return { rule, questionPattern: compileQuestionPattern(rule, path, index) };
93
- };
94
-
95
- const matches = ({ rule, questionPattern }: PreparedRule, interrupt: Interrupt): boolean => {
96
- if (!("match" in rule)) return false;
97
- const m = rule.match;
98
- if (m.kind && m.kind !== interrupt.kind) return false;
99
- if (m.id && m.id !== interrupt.id) return false;
100
- if (m.question_contains) {
101
- if (interrupt.kind !== "ask") return false;
102
- if (!interrupt.question.includes(m.question_contains)) return false;
103
- }
104
- if (questionPattern) {
105
- if (interrupt.kind !== "ask") return false;
106
- if (!questionPattern.test(interrupt.question)) return false;
107
- }
108
- if (m.request_contains) {
109
- if (interrupt.kind !== "approve") return false;
110
- if (!interrupt.request.includes(m.request_contains)) return false;
111
- }
112
- return true;
113
- };
114
-
115
- // A fixture may carry one default per interrupt kind; the shape of the
116
- // default's body is what says which kind it can answer.
117
- const defaultAnswersKind = (rule: Rule, kind: Interrupt["kind"]): boolean => {
118
- if (!("default" in rule)) return false;
119
- const body = rule.default;
120
- if (kind === "ask") return "answer" in body;
121
- if (kind === "approve") return "approved" in body;
122
- return "payload" in body;
123
- };
124
-
125
- const buildAnswer = (rule: Rule, interrupt: Interrupt): Answer => {
126
- const body = "default" in rule ? rule.default : rule;
127
- if (interrupt.kind === "ask") {
128
- if (!("answer" in body)) {
129
- throw new Error(`scripted: rule for ask interrupt missing 'answer' (id=${interrupt.id})`);
130
- }
131
- return { kind: "ask", id: interrupt.id, text: body.answer };
132
- }
133
- if (interrupt.kind === "approve") {
134
- if (!("approved" in body)) {
135
- throw new Error(
136
- `scripted: rule for approve interrupt missing 'approved' (id=${interrupt.id})`,
137
- );
138
- }
139
- return approveAnswer(interrupt.id, body.approved, body.reason);
140
- }
141
- if (!("payload" in body)) {
142
- throw new Error(`scripted: rule for custom interrupt missing 'payload' (id=${interrupt.id})`);
143
- }
144
- return { kind: "custom", id: interrupt.id, payload: body.payload };
145
- };
146
-
147
- class ScriptedAnswererImpl implements Answerer {
148
- private rules: PreparedRule[] = [];
149
- private readonly config: ScriptedAnswererConfig;
150
-
151
- constructor(config: ScriptedAnswererConfig) {
152
- this.config = config;
153
- }
154
-
155
- async prepare(): Promise<void> {
156
- const path = resolve(this.config.fixturePath);
157
- const raw = loadYaml(await readFile(path, "utf-8"));
158
- const parsed = FixtureSchema.safeParse(raw);
159
- if (!parsed.success) {
160
- throw new Error(`scripted: invalid fixture at ${path}: ${formatZodIssues(parsed.error)}`);
161
- }
162
- this.rules = parsed.data.map((rule, index) => prepareRule(rule, path, index));
163
- }
164
-
165
- async answer(interrupt: Interrupt): Promise<Answer> {
166
- const matched = this.rules.find((r) => matches(r, interrupt));
167
- if (matched) {
168
- return buildAnswer(matched.rule, interrupt);
169
- }
170
- const fallback = this.rules.find((r) => defaultAnswersKind(r.rule, interrupt.kind));
171
- if (fallback) {
172
- return buildAnswer(fallback.rule, interrupt);
173
- }
174
- throw new Error(
175
- `scripted: no rule matched interrupt (kind=${interrupt.kind}, id=${interrupt.id}) and no default provided`,
176
- );
177
- }
178
-
179
- async close(): Promise<void> {}
180
- }
181
-
182
- export const scriptedAnswerer: AnswererPlugin<ScriptedAnswererConfig> = {
183
- name: "scripted",
184
- configSchema: ScriptedAnswererConfigSchema,
185
- create: (config) => new ScriptedAnswererImpl(config),
186
- };
package/src/cli/skills.ts DELETED
@@ -1,129 +0,0 @@
1
- import { lstat, mkdir, readdir, readFile, writeFile } from "node:fs/promises";
2
- import { homedir } from "node:os";
3
- import { dirname, join, relative, resolve, sep } from "node:path";
4
- import { fileURLToPath } from "node:url";
5
- import { z } from "zod";
6
-
7
- const PlatformSchema = z.enum(["claude", "claude-code", "codex", "all"]);
8
- export type SkillsPlatform = z.infer<typeof PlatformSchema>;
9
- const SkillNameSchema = z.enum(["lux", "lux-answerer"]);
10
- export type BundledSkillName = z.infer<typeof SkillNameSchema>;
11
-
12
- const InstallSkillsOptionsSchema = z
13
- .object({
14
- cwd: z.string().min(1),
15
- platform: PlatformSchema,
16
- project: z.boolean().default(false),
17
- dir: z.string().min(1).optional(),
18
- name: SkillNameSchema.optional(),
19
- })
20
- .strict();
21
-
22
- export interface InstalledSkill {
23
- name: BundledSkillName;
24
- platform: "claude-code" | "codex";
25
- path: string;
26
- }
27
-
28
- const BUNDLED_SKILLS = [
29
- {
30
- name: "lux",
31
- description: "Author and drive coding-agent evals with Lux",
32
- platforms: ["claude-code", "codex"],
33
- },
34
- {
35
- name: "lux-answerer",
36
- description: "Play a simulated user for a running Lux eval",
37
- platforms: ["claude-code"],
38
- },
39
- ] as const satisfies readonly {
40
- name: BundledSkillName;
41
- description: string;
42
- platforms: readonly ("claude-code" | "codex")[];
43
- }[];
44
-
45
- export const formatSkillsList = (): string =>
46
- BUNDLED_SKILLS.map(
47
- ({ name, description, platforms }) => `${name}\t${description}\t${platforms.join(",")}`,
48
- ).join("\n");
49
-
50
- const targetsFor = (
51
- platform: SkillsPlatform,
52
- cwd: string,
53
- project: boolean,
54
- dir?: string,
55
- name?: BundledSkillName,
56
- ): (InstalledSkill & { source: string })[] => {
57
- const platforms =
58
- platform === "all"
59
- ? (["claude-code", "codex"] as const)
60
- : ([platform === "claude" ? "claude-code" : platform] as const);
61
- const scopeRoot = project ? resolve(cwd) : homedir();
62
- const skills = name ? BUNDLED_SKILLS.filter((skill) => skill.name === name) : BUNDLED_SKILLS;
63
- return platforms.flatMap((platformName) =>
64
- skills
65
- .filter((skill) =>
66
- (skill.platforms as readonly ("claude-code" | "codex")[]).includes(platformName),
67
- )
68
- .map((skill) => ({
69
- name: skill.name,
70
- platform: platformName,
71
- source: fileURLToPath(new URL(`../../skills/${skill.name}`, import.meta.url)),
72
- path: dir
73
- ? join(resolve(dir), skill.name)
74
- : join(
75
- scopeRoot,
76
- platformName === "claude-code" ? ".claude" : ".codex",
77
- "skills",
78
- skill.name,
79
- ),
80
- })),
81
- );
82
- };
83
-
84
- const copySkillDirectory = async (source: string, target: string): Promise<void> => {
85
- const sourceInfo = await lstat(source);
86
- if (!sourceInfo.isDirectory() || sourceInfo.isSymbolicLink()) {
87
- throw new Error(`lux skills: bundled skill source is not a real directory: ${source}`);
88
- }
89
- await mkdir(target, { recursive: true });
90
- for (const entry of await readdir(source, { withFileTypes: true })) {
91
- const sourcePath = join(source, entry.name);
92
- const targetPath = join(target, entry.name);
93
- if (entry.isSymbolicLink()) {
94
- throw new Error(`lux skills: bundled skill contains a symbolic link: ${sourcePath}`);
95
- }
96
- if (entry.isDirectory()) {
97
- await copySkillDirectory(sourcePath, targetPath);
98
- } else if (entry.isFile()) {
99
- await mkdir(dirname(targetPath), { recursive: true });
100
- await writeFile(targetPath, await readFile(sourcePath));
101
- } else {
102
- throw new Error(`lux skills: bundled skill contains an unsupported entry: ${sourcePath}`);
103
- }
104
- }
105
- };
106
-
107
- export const installSkills = async (
108
- options: z.input<typeof InstallSkillsOptionsSchema>,
109
- ): Promise<InstalledSkill[]> => {
110
- const parsed = InstallSkillsOptionsSchema.parse(options);
111
- const targets = targetsFor(parsed.platform, parsed.cwd, parsed.project, parsed.dir, parsed.name);
112
- if (targets.length === 0) {
113
- throw new Error(
114
- `lux skills: '${parsed.name}' is not available for platform '${parsed.platform}'`,
115
- );
116
- }
117
- for (const target of targets) await copySkillDirectory(target.source, target.path);
118
- return targets.map(({ source: _, ...installed }) => installed);
119
- };
120
-
121
- export const formatSkillsInstall = (installed: InstalledSkill[], cwd: string): string =>
122
- installed
123
- .map(
124
- ({ name, platform, path }) =>
125
- `installed ${name} skill for ${platform} at ${
126
- relative(cwd, path).split(sep).join("/") || "."
127
- }`,
128
- )
129
- .join("\n");
File without changes
File without changes
File without changes