@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
@@ -0,0 +1,129 @@
1
+ export const escapeHtml = (value) =>
2
+ String(value ?? "").replace(
3
+ /[&<>"']/g,
4
+ (character) =>
5
+ ({ "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#039;" })[character],
6
+ );
7
+
8
+ export const percentage = (value) =>
9
+ typeof value === "number" ? `${Number((value * 100).toPrecision(15))}%` : "—";
10
+
11
+ export const signedPercentage = (value) => {
12
+ if (typeof value !== "number") return "—";
13
+ const rounded = Number((value * 100).toPrecision(15));
14
+ return `${rounded > 0 ? "+" : ""}${rounded}%`;
15
+ };
16
+
17
+ export const duration = (milliseconds) => {
18
+ if (typeof milliseconds !== "number") return "—";
19
+ if (milliseconds < 1_000) return `${Math.round(milliseconds)}ms`;
20
+ if (milliseconds < 60_000) return `${(milliseconds / 1_000).toFixed(1)}s`;
21
+ return `${Math.floor(milliseconds / 60_000)}m ${Math.round((milliseconds % 60_000) / 1_000)}s`;
22
+ };
23
+
24
+ export const signedDuration = (milliseconds) => {
25
+ if (typeof milliseconds !== "number") return "—";
26
+ return `${milliseconds > 0 ? "+" : ""}${duration(milliseconds)}`;
27
+ };
28
+
29
+ export const compactNumber = (value) =>
30
+ new Intl.NumberFormat(undefined, { notation: "compact", maximumFractionDigits: 1 }).format(
31
+ value ?? 0,
32
+ );
33
+
34
+ export const relativeTime = (value) => {
35
+ if (!value) return "unknown";
36
+ const elapsed = Date.now() - Date.parse(value);
37
+ if (!Number.isFinite(elapsed)) return "unknown";
38
+ const minutes = Math.floor(elapsed / 60_000);
39
+ if (minutes < 1) return "now";
40
+ if (minutes < 60) return `${minutes}m`;
41
+ const hours = Math.floor(minutes / 60);
42
+ if (hours < 24) return `${hours}h`;
43
+ return `${Math.floor(hours / 24)}d`;
44
+ };
45
+
46
+ export const fullDate = (value) => {
47
+ if (!value) return "—";
48
+ const date = new Date(value);
49
+ return Number.isNaN(date.valueOf())
50
+ ? "—"
51
+ : new Intl.DateTimeFormat(undefined, {
52
+ month: "short",
53
+ day: "numeric",
54
+ hour: "numeric",
55
+ minute: "2-digit",
56
+ }).format(date);
57
+ };
58
+
59
+ export const statusLabel = (status) =>
60
+ ({
61
+ passed: "Passed",
62
+ failed: "Failed",
63
+ running: "Running",
64
+ aborted: "Aborted",
65
+ error: "Error",
66
+ promote: "Promote",
67
+ retain: "Retain",
68
+ reject: "Reject",
69
+ incomplete: "Incomplete",
70
+ })[status] ?? "Ungraded";
71
+
72
+ export const badge = (status) =>
73
+ `<span class="status-badge ${escapeHtml(status)}">${escapeHtml(statusLabel(status))}</span>`;
74
+
75
+ export const totalTokens = (usage = {}) =>
76
+ (usage.input ?? 0) + (usage.output ?? 0) + (usage.cacheRead ?? 0) + (usage.cacheCreation ?? 0);
77
+
78
+ export const toneForDelta = (value, lowerIsBetter = false) => {
79
+ if (!value) return "metric-neutral";
80
+ const better = lowerIsBetter ? value < 0 : value > 0;
81
+ return better ? "metric-good" : "metric-bad";
82
+ };
83
+
84
+ export const finite = (value, digits = 2) =>
85
+ typeof value === "number" && Number.isFinite(value)
86
+ ? value.toLocaleString(undefined, { maximumFractionDigits: digits })
87
+ : "—";
88
+
89
+ const bytes = (value) => {
90
+ if (typeof value !== "number" || !Number.isFinite(value)) return "—";
91
+ if (Math.abs(value) < 1_024) return `${finite(value)} B`;
92
+ if (Math.abs(value) < 1_048_576) return `${finite(value / 1_024)} KiB`;
93
+ return `${finite(value / 1_048_576)} MiB`;
94
+ };
95
+
96
+ export const metricValue = (value, unit = "number") => {
97
+ if (unit === "milliseconds") return duration(value);
98
+ if (unit === "bytes") return bytes(value);
99
+ if (unit === "tokens") return typeof value === "number" ? `${compactNumber(value)} tokens` : "—";
100
+ if (unit === "usd") return typeof value === "number" ? `$${finite(value, 4)}` : "—";
101
+ if (unit === "ratio" || unit === "score") return percentage(value);
102
+ if (unit === "percent") return typeof value === "number" ? `${finite(value)}%` : "—";
103
+ return finite(value);
104
+ };
105
+
106
+ export const metricName = (name, label) => {
107
+ if (label) return label;
108
+ const tail =
109
+ String(name)
110
+ .replace(/^driver\./, "")
111
+ .split(".")
112
+ .at(-1) ?? String(name);
113
+ return tail
114
+ .replace(/([a-z0-9])([A-Z])/g, "$1 $2")
115
+ .replace(/[-_]+/g, " ")
116
+ .replace(/^./, (character) => character.toUpperCase());
117
+ };
118
+
119
+ export const detailLoading = (label) =>
120
+ `<div class="loading-card"><span></span><span></span><span></span><p>${escapeHtml(label)}</p></div>`;
121
+
122
+ export const detailError = (message) => `<div class="error-card">${escapeHtml(message)}</div>`;
123
+
124
+ export const detailEmpty = () => `
125
+ <div class="inspector-empty">
126
+ <span class="empty-glyph" aria-hidden="true">↗</span>
127
+ <h2>Select evidence to inspect</h2>
128
+ <p>Scores, assertions, traces, spend, and artifacts meet here.</p>
129
+ </div>`;
@@ -0,0 +1,151 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <meta name="color-scheme" content="dark" />
7
+ <meta name="theme-color" content="#0b0d0f" />
8
+ <meta
9
+ name="description"
10
+ content="A local review cockpit for Lux evaluation runs and experiments."
11
+ />
12
+ <title>Lux Review</title>
13
+ <link rel="stylesheet" href="/assets/app.css" />
14
+ <script src="/assets/app.js" type="module"></script>
15
+ </head>
16
+ <body>
17
+ <div class="app-shell">
18
+ <aside class="sidebar">
19
+ <a class="brand" href="/" aria-label="Lux Review home">
20
+ <span class="brand-mark" aria-hidden="true">LX</span>
21
+ <span>
22
+ <strong>LUX</strong>
23
+ <small>REVIEW</small>
24
+ </span>
25
+ </a>
26
+
27
+ <nav class="primary-nav" aria-label="Evidence type">
28
+ <button class="nav-item is-active" type="button" data-tab="runs">
29
+ <span class="nav-glyph" aria-hidden="true">R</span>
30
+ <span>Runs</span>
31
+ <span class="nav-count" data-count="runs">0</span>
32
+ </button>
33
+ <button class="nav-item" type="button" data-tab="suites">
34
+ <span class="nav-glyph" aria-hidden="true">S</span>
35
+ <span>Suites</span>
36
+ <span class="nav-count" data-count="suites">0</span>
37
+ </button>
38
+ <button class="nav-item" type="button" data-tab="experiments">
39
+ <span class="nav-glyph" aria-hidden="true">E</span>
40
+ <span>Experiments</span>
41
+ <span class="nav-count" data-count="experiments">0</span>
42
+ </button>
43
+ </nav>
44
+
45
+ <div class="sidebar-note">
46
+ <span class="pulse-dot" aria-hidden="true"></span>
47
+ <span>
48
+ <strong>Local evidence</strong>
49
+ <small>Read-only · auto-refreshing</small>
50
+ </span>
51
+ </div>
52
+
53
+ <div class="shortcut-card">
54
+ <p>Shortcuts</p>
55
+ <dl>
56
+ <div class="shortcut-row"><dt><kbd>/</kbd></dt><dd>Search</dd></div>
57
+ <div class="shortcut-row"><dt><kbd>J</kbd> <kbd>K</kbd></dt><dd>Move</dd></div>
58
+ <div class="shortcut-row"><dt><kbd>R</kbd></dt><dd>Refresh</dd></div>
59
+ </dl>
60
+ </div>
61
+ </aside>
62
+
63
+ <main>
64
+ <header class="topbar">
65
+ <div>
66
+ <span class="eyebrow">Evaluation evidence</span>
67
+ <h1>Evidence, at a glance.</h1>
68
+ </div>
69
+ <div class="topbar-actions">
70
+ <label class="search">
71
+ <span aria-hidden="true">⌕</span>
72
+ <input
73
+ id="search-input"
74
+ type="search"
75
+ placeholder="Search cases, drivers, campaigns…"
76
+ autocomplete="off"
77
+ />
78
+ <kbd>/</kbd>
79
+ </label>
80
+ <button class="icon-button" id="refresh-button" type="button" aria-label="Refresh data">
81
+ ↻
82
+ </button>
83
+ </div>
84
+ </header>
85
+
86
+ <section class="metrics" aria-label="Evidence summary">
87
+ <article>
88
+ <span>Graded pass rate</span>
89
+ <strong id="metric-pass-rate">—</strong>
90
+ <small id="metric-pass-note">No graded runs</small>
91
+ </article>
92
+ <article>
93
+ <span>Needs attention</span>
94
+ <strong id="metric-failures">0</strong>
95
+ <small>Failed or errored runs</small>
96
+ </article>
97
+ <article>
98
+ <span>Experiment activity</span>
99
+ <strong id="metric-experiments">0</strong>
100
+ <small id="metric-experiment-note">No campaigns yet</small>
101
+ </article>
102
+ <article>
103
+ <span>Last evidence</span>
104
+ <strong id="metric-recency">—</strong>
105
+ <small id="metric-refresh">Waiting for local data</small>
106
+ </article>
107
+ </section>
108
+
109
+ <section class="workspace">
110
+ <div class="collection-pane">
111
+ <div class="collection-toolbar">
112
+ <div>
113
+ <span class="eyebrow" id="collection-eyebrow">Individual evidence</span>
114
+ <h2 id="collection-title">Runs</h2>
115
+ </div>
116
+ <div class="collection-actions">
117
+ <span class="result-count" id="result-count">0 records</span>
118
+ <button class="compare-button" id="compare-button" type="button">Compare</button>
119
+ </div>
120
+ </div>
121
+ <div class="compare-tray" id="compare-tray" hidden></div>
122
+ <fieldset
123
+ class="status-filters"
124
+ id="status-filters"
125
+ aria-label="Filter by status"
126
+ ></fieldset>
127
+ <div class="collection-list" id="collection-list" aria-live="polite">
128
+ <div class="loading-card">
129
+ <span></span><span></span><span></span>
130
+ <p>Reading Lux evidence…</p>
131
+ </div>
132
+ </div>
133
+ </div>
134
+
135
+ <aside class="inspector" id="inspector" aria-label="Evidence detail">
136
+ <div class="inspector-empty">
137
+ <span class="empty-glyph" aria-hidden="true">↗</span>
138
+ <h2>Select evidence to inspect</h2>
139
+ <p>Scores, assertions, traces, spend, and artifacts meet here.</p>
140
+ </div>
141
+ </aside>
142
+ </section>
143
+
144
+ <footer>
145
+ <span id="runs-root">Local Lux run store</span>
146
+ <span id="connection-state"><i></i> Connected</span>
147
+ </footer>
148
+ </main>
149
+ </div>
150
+ </body>
151
+ </html>
@@ -1,38 +0,0 @@
1
- import { z } from "zod";
2
- declare const PlatformSchema: z.ZodEnum<{
3
- all: "all";
4
- claude: "claude";
5
- "claude-code": "claude-code";
6
- codex: "codex";
7
- }>;
8
- export type SkillsPlatform = z.infer<typeof PlatformSchema>;
9
- declare const SkillNameSchema: z.ZodEnum<{
10
- lux: "lux";
11
- "lux-answerer": "lux-answerer";
12
- }>;
13
- export type BundledSkillName = z.infer<typeof SkillNameSchema>;
14
- declare const InstallSkillsOptionsSchema: z.ZodObject<{
15
- cwd: z.ZodString;
16
- platform: z.ZodEnum<{
17
- all: "all";
18
- claude: "claude";
19
- "claude-code": "claude-code";
20
- codex: "codex";
21
- }>;
22
- project: z.ZodDefault<z.ZodBoolean>;
23
- dir: z.ZodOptional<z.ZodString>;
24
- name: z.ZodOptional<z.ZodEnum<{
25
- lux: "lux";
26
- "lux-answerer": "lux-answerer";
27
- }>>;
28
- }, z.core.$strict>;
29
- export interface InstalledSkill {
30
- name: BundledSkillName;
31
- platform: "claude-code" | "codex";
32
- path: string;
33
- }
34
- export declare const formatSkillsList: () => string;
35
- export declare const installSkills: (options: z.input<typeof InstallSkillsOptionsSchema>) => Promise<InstalledSkill[]>;
36
- export declare const formatSkillsInstall: (installed: InstalledSkill[], cwd: string) => string;
37
- export {};
38
- //# sourceMappingURL=skills.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,cAAc;;;;;EAAoD,CAAC;AACzE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC5D,QAAA,MAAM,eAAe;;;EAAkC,CAAC;AACxD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE/D,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;kBAQrB,CAAC;AAEZ,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd;AAmBD,eAAO,MAAM,gBAAgB,QAAO,MAGtB,CAAC;AA2Df,eAAO,MAAM,aAAa,YACf,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,KAClD,OAAO,CAAC,cAAc,EAAE,CAU1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,cAAe,cAAc,EAAE,OAAO,MAAM,KAAG,MAQhE,CAAC"}
package/lib/cli/skills.js DELETED
@@ -1,84 +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
- const PlatformSchema = z.enum(["claude", "claude-code", "codex", "all"]);
7
- const SkillNameSchema = z.enum(["lux", "lux-answerer"]);
8
- const InstallSkillsOptionsSchema = z
9
- .object({
10
- cwd: z.string().min(1),
11
- platform: PlatformSchema,
12
- project: z.boolean().default(false),
13
- dir: z.string().min(1).optional(),
14
- name: SkillNameSchema.optional(),
15
- })
16
- .strict();
17
- const BUNDLED_SKILLS = [
18
- {
19
- name: "lux",
20
- description: "Author and drive coding-agent evals with Lux",
21
- platforms: ["claude-code", "codex"],
22
- },
23
- {
24
- name: "lux-answerer",
25
- description: "Play a simulated user for a running Lux eval",
26
- platforms: ["claude-code"],
27
- },
28
- ];
29
- export const formatSkillsList = () => BUNDLED_SKILLS.map(({ name, description, platforms }) => `${name}\t${description}\t${platforms.join(",")}`).join("\n");
30
- const targetsFor = (platform, cwd, project, dir, name) => {
31
- const platforms = platform === "all"
32
- ? ["claude-code", "codex"]
33
- : [platform === "claude" ? "claude-code" : platform];
34
- const scopeRoot = project ? resolve(cwd) : homedir();
35
- const skills = name ? BUNDLED_SKILLS.filter((skill) => skill.name === name) : BUNDLED_SKILLS;
36
- return platforms.flatMap((platformName) => skills
37
- .filter((skill) => skill.platforms.includes(platformName))
38
- .map((skill) => ({
39
- name: skill.name,
40
- platform: platformName,
41
- source: fileURLToPath(new URL(`../../skills/${skill.name}`, import.meta.url)),
42
- path: dir
43
- ? join(resolve(dir), skill.name)
44
- : join(scopeRoot, platformName === "claude-code" ? ".claude" : ".codex", "skills", skill.name),
45
- })));
46
- };
47
- const copySkillDirectory = async (source, target) => {
48
- const sourceInfo = await lstat(source);
49
- if (!sourceInfo.isDirectory() || sourceInfo.isSymbolicLink()) {
50
- throw new Error(`lux skills: bundled skill source is not a real directory: ${source}`);
51
- }
52
- await mkdir(target, { recursive: true });
53
- for (const entry of await readdir(source, { withFileTypes: true })) {
54
- const sourcePath = join(source, entry.name);
55
- const targetPath = join(target, entry.name);
56
- if (entry.isSymbolicLink()) {
57
- throw new Error(`lux skills: bundled skill contains a symbolic link: ${sourcePath}`);
58
- }
59
- if (entry.isDirectory()) {
60
- await copySkillDirectory(sourcePath, targetPath);
61
- }
62
- else if (entry.isFile()) {
63
- await mkdir(dirname(targetPath), { recursive: true });
64
- await writeFile(targetPath, await readFile(sourcePath));
65
- }
66
- else {
67
- throw new Error(`lux skills: bundled skill contains an unsupported entry: ${sourcePath}`);
68
- }
69
- }
70
- };
71
- export const installSkills = async (options) => {
72
- const parsed = InstallSkillsOptionsSchema.parse(options);
73
- const targets = targetsFor(parsed.platform, parsed.cwd, parsed.project, parsed.dir, parsed.name);
74
- if (targets.length === 0) {
75
- throw new Error(`lux skills: '${parsed.name}' is not available for platform '${parsed.platform}'`);
76
- }
77
- for (const target of targets)
78
- await copySkillDirectory(target.source, target.path);
79
- return targets.map(({ source: _, ...installed }) => installed);
80
- };
81
- export const formatSkillsInstall = (installed, cwd) => installed
82
- .map(({ name, platform, path }) => `installed ${name} skill for ${platform} at ${relative(cwd, path).split(sep).join("/") || "."}`)
83
- .join("\n");
84
- //# sourceMappingURL=skills.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAEzE,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;AAGxD,MAAM,0BAA0B,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,QAAQ,EAAE,cAAc;IACxB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjC,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,MAAM,EAAE,CAAC;AAQZ,MAAM,cAAc,GAAG;IACrB;QACE,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,8CAA8C;QAC3D,SAAS,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC;KACpC;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,8CAA8C;QAC3D,SAAS,EAAE,CAAC,aAAa,CAAC;KAC3B;CAKA,CAAC;AAEJ,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAW,EAAE,CAC3C,cAAc,CAAC,GAAG,CAChB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,WAAW,KAAK,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACxF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEf,MAAM,UAAU,GAAG,CACjB,QAAwB,EACxB,GAAW,EACX,OAAgB,EAChB,GAAY,EACZ,IAAuB,EACkB,EAAE;IAC3C,MAAM,SAAS,GACb,QAAQ,KAAK,KAAK;QAChB,CAAC,CAAE,CAAC,aAAa,EAAE,OAAO,CAAW;QACrC,CAAC,CAAE,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAW,CAAC;IACpE,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;IAC7F,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,CACxC,MAAM;SACH,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CACf,KAAK,CAAC,SAAkD,CAAC,QAAQ,CAAC,YAAY,CAAC,CACjF;SACA,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC,gBAAgB,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7E,IAAI,EAAE,GAAG;YACP,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC;YAChC,CAAC,CAAC,IAAI,CACF,SAAS,EACT,YAAY,KAAK,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EACrD,QAAQ,EACR,KAAK,CAAC,IAAI,CACX;KACN,CAAC,CAAC,CACN,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,KAAK,EAAE,MAAc,EAAE,MAAc,EAAiB,EAAE;IACjF,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,6DAA6D,MAAM,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,uDAAuD,UAAU,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,MAAM,SAAS,CAAC,UAAU,EAAE,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,4DAA4D,UAAU,EAAE,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,OAAmD,EACxB,EAAE;IAC7B,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACjG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,gBAAgB,MAAM,CAAC,IAAI,oCAAoC,MAAM,CAAC,QAAQ,GAAG,CAClF,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,MAAM,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACnF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAA2B,EAAE,GAAW,EAAU,EAAE,CACtF,SAAS;KACN,GAAG,CACF,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAC3B,aAAa,IAAI,cAAc,QAAQ,OACrC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAC9C,EAAE,CACL;KACA,IAAI,CAAC,IAAI,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"secure-copy.d.ts","sourceRoot":"","sources":["../../../src/drivers/shared/secure-copy.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,uBAAuB,eACtB,MAAM,cACN,MAAM,cACN,MAAM,KACjB,OAAO,CAAC,IAAI,CA0Bd,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"secure-copy.js","sourceRoot":"","sources":["../../../src/drivers/shared/secure-copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,KAAa,EAAW,EAAE;IAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC1C,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EACH,EAAE;IACjB,IAAI,CAAC,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,GAAG,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;IACxF,IAAI,MAAoD,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAAC;QAC3F,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,qDAAqD,UAAU,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC;QAChD,IACE,CAAC,YAAY,CAAC,MAAM,EAAE;YACtB,YAAY,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG;YACnC,YAAY,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EACnC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,UAAU,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;QAC/D,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;AACH,CAAC,CAAC"}
@@ -1,89 +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 or reviewing Lux cases, custom assertions, lifecycle fixtures, driver or harness configuration, campaigns, grader annotations, diagnosing eval failures, comparing runs, or running and promoting 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, assertion plugin, or lifecycle fixture.
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> --list
44
- npm exec -- lux run <case-or-filter> --loop 3
45
- npm exec -- lux view <run-or-suite>
46
- ```
47
-
48
- Inspect `case.json`, `run.json`, `events.jsonl`, `grading.json`, and `artifacts/`
49
- before changing the case. Separate subject failure from harness failure:
50
-
51
- - Subject failure: the agent misunderstood, asked poorly, used the wrong tools,
52
- or left incorrect artifacts.
53
- - Harness failure: the prompt was underspecified, the persona lacked a needed
54
- fact, a fixture or driver failed, an assertion measured a proxy, or the
55
- judge criterion was ambiguous.
56
-
57
- Do not weaken a valid assertion merely to make a run pass.
58
-
59
- ### Improve with evidence
60
-
61
- Use repeated runs and held-out splits for noisy agent behavior. For skill,
62
- prompt, or agent-source changes, use `subjectPath()` in cases and an experiment
63
- campaign with immutable candidates. Plan first, run the experiment, inspect the
64
- report, and apply a promoted candidate as a separate action:
65
-
66
- ```bash
67
- npm exec -- lux experiment experiments/example.experiment.ts --plan
68
- npm exec -- lux experiment experiments/example.experiment.ts
69
- npm exec -- lux report <experiment-dir>
70
- npm exec -- lux apply <experiment-dir>
71
- ```
72
-
73
- Never edit a materialized candidate or managed experiment record by hand.
74
-
75
- ## Guardrails
76
-
77
- - Lux eval projects execute project-authored commands and agent-generated work.
78
- Run untrusted evals only in a disposable environment.
79
- - Do not infer success from agent prose. Grade the final artifacts and recorded
80
- behavior.
81
- - Do not use only `run-succeeded` for a case that claims to verify a concrete
82
- result.
83
- - Do not invoke bare `lux`; it displays help. Use the explicit `lux run` verb
84
- and narrow by case, path, or tag before any model call.
85
- - Do not let train examples leak into validation or test splits.
86
- - Do not combine evidence across changed models, harnesses, cases, or subjects;
87
- Lux identity checks exist to prevent that.
88
- - Prefer `--plan`, `doctor`, `view`, and `report` before expensive or mutating
89
- commands.
@@ -1,125 +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
- Bare `lux` prints command and agent-skill help. Running cases always requires
7
- the explicit `run` verb; do not assume an unfiltered run is harmless.
8
- Use `lux <command> --help` before composing an unfamiliar or automation-facing
9
- invocation; it is the authoritative option list for the installed version.
10
-
11
- ## Author and preflight
12
-
13
- ```bash
14
- lux init
15
- lux init --experiment
16
- lux skills list
17
- lux skills install codex --project
18
- lux skills install claude --project
19
- lux doctor
20
- lux doctor experiments/campaign.experiment.ts --json
21
- lux run --list
22
- lux run --list-tags
23
- ```
24
-
25
- `init` is conservative around existing files. `doctor` validates configuration,
26
- case discovery, driver executables, campaign splits, confidence feasibility,
27
- and projected budgets without model calls.
28
-
29
- ## Run
30
-
31
- ```bash
32
- lux run
33
- lux run retry-flag
34
- lux run cases/retry-flag.ts
35
- lux run --tag smoke
36
- lux run retry --loop 5 --concurrency 2
37
- lux run one-case --interactive
38
- lux run one-case --claude-answerer
39
- lux run one-case --profile small-low --subject-root . --verbose
40
- lux run one-case --skip-judge
41
- ```
42
-
43
- Filters match case IDs and paths. Tags come from `meta.tags`. A run invocation
44
- also creates a suite record, which is the right unit for repeated or multi-case
45
- comparison.
46
-
47
- `--skip-judge` leaves subject execution unchanged but does not call rubric LLM
48
- judges. Deterministic assertions still determine the verdict; judge-only cases
49
- remain ungraded, and persisted grading records identify the skipped rubrics.
50
-
51
- ## Inspect and compare
52
-
53
- ```bash
54
- lux view
55
- lux view <run-or-suite>
56
- lux view --suites --json
57
- lux view --experiments
58
- lux compare <run-or-suite-a> <run-or-suite-b> --pass-rate-tolerance 0.05
59
- ```
60
-
61
- Use `view` before opening raw files. When diagnosing, inspect:
62
-
63
- - `case.json`: frozen authored inputs;
64
- - `run.json`: exit reason, timing, usage, source identity;
65
- - `events.jsonl`: trajectory, tools, and interrupts;
66
- - `grading.json`: assertion evidence;
67
- - `artifacts/`: the subject workspace output.
68
-
69
- `compare` exits nonzero on a gated regression, making it suitable for CI.
70
-
71
- ## Regrade and annotate
72
-
73
- ```bash
74
- lux grade <run>
75
- lux grade <run> --case cases/changed-grader.ts
76
- lux annotate <run> \
77
- --out evals/annotations.json \
78
- --rubric evals/rubrics/case.json \
79
- --label pass
80
- ```
81
-
82
- Regrading preserves subject evidence and changes only grading. Human annotations
83
- support grader-alignment experiments. `annotate` can record overall label or
84
- score, repeatable assertion outcomes, split/tag selection, feedback, annotator,
85
- reviewer, and human/synthetic provenance. Keep assertion IDs aligned with the
86
- rubric and record reviewer context where available.
87
-
88
- ## Experiment lifecycle
89
-
90
- ```bash
91
- lux experiment <campaign> --plan
92
- lux experiment <campaign>
93
- lux experiment <campaign> --resume <experiment-dir>
94
- lux optimize <campaign> --plan
95
- lux optimize <campaign>
96
- lux optimize <campaign> --resume <experiment-dir>
97
- lux view <experiment-dir>
98
- lux report <experiment-dir> --out .lux-runs/reports/decision.md
99
- lux report <experiment-dir> --json
100
- lux apply <experiment-dir>
101
- ```
102
-
103
- `experiment` compares authored variants. `optimize` searches proposed changes.
104
- Both create durable, resumable, integrity-checked records. `report` re-verifies
105
- the ledger and promotion decision. `apply` is deliberately separate and
106
- hash-guards the source it changes.
107
-
108
- Use the exact resume, report, and apply commands printed by Lux. Do not edit
109
- `.lux-runs/.experiments/` manually.
110
-
111
- ## Failure triage
112
-
113
- - Discovery/config error: run `doctor`, verify paths and exported definitions.
114
- - Driver unavailable: verify the selected CLI is installed and the model is
115
- explicitly configured where required.
116
- - Agent exit/error: inspect `events.jsonl` and the driver section of `run.json`.
117
- - Assertion failure: inspect the assertion evidence and final artifact; decide
118
- whether the subject or measurement is wrong.
119
- - Tool evidence mismatch: compare paired call/result IDs and inspect unresolved,
120
- unmatched, malformed, and failed tool outcomes; never infer success from a
121
- call event alone.
122
- - Judge disagreement: narrow the rubric, regrade stored evidence, and collect
123
- human annotations before changing the subject.
124
- - Interrupted experiment: resume the printed experiment directory; do not start
125
- a nominally identical campaign and combine results yourself.