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

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 (756) 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 +65 -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 +67 -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 +211 -46
  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 +153 -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 +31 -15
  250. package/lib/core/model-cli.d.ts.map +1 -1
  251. package/lib/core/model-cli.js +53 -23
  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 +198 -253
  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 +149 -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 +231 -10
  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 +163 -78
  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 +52 -4
  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 +32 -24
  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 +50 -42
  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 +59 -179
  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/regrade.js +5 -1
  546. package/lib/orchestrator/regrade.js.map +1 -1
  547. package/lib/orchestrator/rubric-loader.js +1 -1
  548. package/lib/orchestrator/rubric-loader.js.map +1 -1
  549. package/lib/orchestrator/run-dir.d.ts +2 -0
  550. package/lib/orchestrator/run-dir.d.ts.map +1 -1
  551. package/lib/orchestrator/run-dir.js +1 -1
  552. package/lib/orchestrator/run-dir.js.map +1 -1
  553. package/lib/orchestrator/run-execution.d.ts +3 -0
  554. package/lib/orchestrator/run-execution.d.ts.map +1 -1
  555. package/lib/orchestrator/run-execution.js +64 -10
  556. package/lib/orchestrator/run-execution.js.map +1 -1
  557. package/lib/orchestrator/run-lifecycle.d.ts +1 -0
  558. package/lib/orchestrator/run-lifecycle.d.ts.map +1 -1
  559. package/lib/orchestrator/run-lifecycle.js +3 -2
  560. package/lib/orchestrator/run-lifecycle.js.map +1 -1
  561. package/lib/orchestrator/run-workspace.d.ts +10 -0
  562. package/lib/orchestrator/run-workspace.d.ts.map +1 -0
  563. package/lib/orchestrator/run-workspace.js +58 -0
  564. package/lib/orchestrator/run-workspace.js.map +1 -0
  565. package/lib/orchestrator/suite-compare.d.ts +37 -0
  566. package/lib/orchestrator/suite-compare.d.ts.map +1 -1
  567. package/lib/orchestrator/suite-compare.js +44 -22
  568. package/lib/orchestrator/suite-compare.js.map +1 -1
  569. package/lib/orchestrator/suite-runs.d.ts +6 -1
  570. package/lib/orchestrator/suite-runs.d.ts.map +1 -1
  571. package/lib/orchestrator/suite-runs.js +14 -2
  572. package/lib/orchestrator/suite-runs.js.map +1 -1
  573. package/lib/orchestrator/suite-summary.d.ts +79 -0
  574. package/lib/orchestrator/suite-summary.d.ts.map +1 -1
  575. package/lib/orchestrator/suite-summary.js +67 -14
  576. package/lib/orchestrator/suite-summary.js.map +1 -1
  577. package/lib/previewer/artifacts.d.ts +25 -0
  578. package/lib/previewer/artifacts.d.ts.map +1 -0
  579. package/lib/previewer/artifacts.js +180 -0
  580. package/lib/previewer/artifacts.js.map +1 -0
  581. package/lib/previewer/server.d.ts +111 -0
  582. package/lib/previewer/server.d.ts.map +1 -0
  583. package/lib/previewer/server.js +559 -0
  584. package/lib/previewer/server.js.map +1 -0
  585. package/package.json +4 -2
  586. package/skills/lux-answerer/SKILL.md +2 -2
  587. package/src/answerers/claude-code/index.ts +6 -5
  588. package/src/answerers/persona/index.ts +80 -34
  589. package/src/answerers/terminal/index.ts +7 -11
  590. package/src/assertions/authoring.ts +2 -0
  591. package/src/assertions/core/command-exits-zero.ts +82 -17
  592. package/src/assertions/core/event-checks.ts +64 -3
  593. package/src/assertions/core/index.ts +2 -0
  594. package/src/assertions/core/resource-checks.ts +38 -5
  595. package/src/assertions/core/safe-regex.ts +16 -6
  596. package/src/assertions/rubric/evidence.ts +85 -0
  597. package/src/assertions/rubric/index.ts +76 -46
  598. package/src/assertions/rubric/internal.ts +264 -46
  599. package/src/authoring.ts +346 -2
  600. package/src/cli/bin.ts +2 -12
  601. package/src/cli/command-runtime.ts +20 -9
  602. package/src/cli/doctor.ts +17 -0
  603. package/src/cli/harness-plan.ts +123 -0
  604. package/src/cli/init-templates.ts +176 -0
  605. package/src/cli/init.ts +53 -184
  606. package/src/cli/output-schemas.ts +109 -0
  607. package/src/cli/program.ts +697 -730
  608. package/src/cli/render/format.ts +1 -1
  609. package/src/cli/render/reporter.ts +36 -8
  610. package/src/cli/run-options.ts +131 -25
  611. package/src/cli/view.ts +129 -0
  612. package/src/container/driver.ts +213 -0
  613. package/src/container/paths.ts +29 -0
  614. package/src/container/protocol.ts +48 -0
  615. package/src/container/resources.ts +165 -0
  616. package/src/container/worker.ts +107 -0
  617. package/src/core/action-events.ts +59 -0
  618. package/src/core/agent-activity.ts +236 -0
  619. package/src/core/agent-environment.ts +64 -0
  620. package/src/core/agent-events.ts +17 -0
  621. package/src/core/annotation.ts +2 -1
  622. package/src/core/answerer.ts +9 -0
  623. package/src/core/artifact-evidence.ts +40 -5
  624. package/src/core/assertion.ts +8 -2
  625. package/src/core/case-defaults.ts +65 -0
  626. package/src/core/case.ts +79 -8
  627. package/src/core/command-verification.ts +74 -0
  628. package/src/core/driver-execution.ts +84 -0
  629. package/src/core/driver-metrics.ts +51 -0
  630. package/src/core/driver.ts +76 -0
  631. package/src/core/duration.ts +52 -0
  632. package/src/core/environment.ts +22 -0
  633. package/src/core/evaluation-clusters.ts +35 -0
  634. package/src/core/events.ts +13 -2
  635. package/src/core/experiment.ts +71 -25
  636. package/src/core/file-tree.ts +35 -0
  637. package/src/core/global-id.ts +26 -0
  638. package/src/core/harness-catalog.ts +100 -0
  639. package/src/core/harness-catalogs/antigravity.ts +24 -0
  640. package/src/core/harness-catalogs/claude-code.ts +25 -0
  641. package/src/core/harness-catalogs/codex.ts +27 -0
  642. package/src/core/harness-catalogs/copilot.ts +46 -0
  643. package/src/core/harness-catalogs/cursor.ts +13 -0
  644. package/src/core/harness-catalogs/grok-build.ts +19 -0
  645. package/src/core/harness-catalogs/index.ts +31 -0
  646. package/src/core/harness-matrix.ts +316 -0
  647. package/src/core/index.ts +12 -0
  648. package/src/core/lifecycle-fixtures.ts +4 -2
  649. package/src/core/model-cli.ts +78 -28
  650. package/src/core/platform-process.ts +65 -16
  651. package/src/core/reference-defaults.ts +47 -0
  652. package/src/core/run.ts +31 -0
  653. package/src/core/usage.ts +8 -0
  654. package/src/drivers/antigravity/README.md +171 -0
  655. package/src/drivers/antigravity/artifacts.ts +37 -0
  656. package/src/drivers/antigravity/config.ts +92 -0
  657. package/src/drivers/antigravity/events.ts +290 -0
  658. package/src/drivers/antigravity/index.ts +132 -0
  659. package/src/drivers/antigravity/runtime.ts +94 -0
  660. package/src/drivers/claude-code/deferred-process.ts +118 -0
  661. package/src/drivers/claude-code/index.ts +228 -282
  662. package/src/drivers/claude-code/isolation.ts +228 -0
  663. package/src/drivers/claude-code/parse-events.ts +98 -12
  664. package/src/drivers/codex/app-events.ts +126 -16
  665. package/src/drivers/codex/config.ts +59 -8
  666. package/src/drivers/codex/exec-events.ts +258 -0
  667. package/src/drivers/codex/index.ts +146 -312
  668. package/src/drivers/copilot/README.md +60 -0
  669. package/src/drivers/copilot/config.ts +61 -0
  670. package/src/drivers/copilot/index.ts +310 -0
  671. package/src/drivers/cursor/README.md +66 -0
  672. package/src/drivers/cursor/config.ts +31 -0
  673. package/src/drivers/cursor/index.ts +326 -0
  674. package/src/drivers/cursor/interaction.ts +74 -0
  675. package/src/drivers/grok-build/README.md +112 -0
  676. package/src/drivers/grok-build/config.ts +43 -0
  677. package/src/drivers/grok-build/index.ts +331 -0
  678. package/src/drivers/mcp/index.ts +25 -11
  679. package/src/drivers/shared/acp-events.ts +94 -0
  680. package/src/drivers/shared/acp-interaction.ts +27 -0
  681. package/src/drivers/shared/acp-session.ts +40 -0
  682. package/src/drivers/shared/acp-transport.ts +187 -0
  683. package/src/drivers/shared/artifacts.ts +6 -2
  684. package/src/drivers/shared/experiment-behavior.ts +217 -0
  685. package/src/drivers/shared/experiment-policy.ts +201 -0
  686. package/src/drivers/shared/skills.ts +74 -0
  687. package/src/drivers/subprocess/index.ts +55 -12
  688. package/src/index.ts +117 -6
  689. package/src/optimization/reflective.ts +3 -2
  690. package/src/orchestrator/annotation-loader.ts +10 -0
  691. package/src/orchestrator/annotation-store.ts +24 -3
  692. package/src/orchestrator/artifact-origin.ts +50 -0
  693. package/src/orchestrator/campaign-lifecycle.ts +5 -1
  694. package/src/orchestrator/candidates.ts +3 -2
  695. package/src/orchestrator/compare.ts +62 -13
  696. package/src/orchestrator/comparison-identity.ts +2 -0
  697. package/src/orchestrator/config.ts +23 -1
  698. package/src/orchestrator/discover.ts +8 -1
  699. package/src/orchestrator/doctor.ts +281 -74
  700. package/src/orchestrator/driver-capabilities.ts +21 -0
  701. package/src/orchestrator/driver-identity.ts +69 -0
  702. package/src/orchestrator/experiment-context.ts +5 -3
  703. package/src/orchestrator/experiment-corpus.ts +68 -39
  704. package/src/orchestrator/experiment-effects.ts +63 -0
  705. package/src/orchestrator/experiment-evaluation.ts +88 -10
  706. package/src/orchestrator/experiment-identity.ts +98 -61
  707. package/src/orchestrator/experiment-preflight.ts +27 -0
  708. package/src/orchestrator/experiment-report.ts +21 -1
  709. package/src/orchestrator/experiment-runs.ts +11 -4
  710. package/src/orchestrator/experiment-runtime-identity.ts +5 -243
  711. package/src/orchestrator/experiment-selection.ts +178 -18
  712. package/src/orchestrator/experiment.ts +29 -29
  713. package/src/orchestrator/fixture-identity.ts +9 -1
  714. package/src/orchestrator/fs-read.ts +2 -32
  715. package/src/orchestrator/grader-experiment.ts +74 -13
  716. package/src/orchestrator/grading.ts +60 -31
  717. package/src/orchestrator/harness-catalog-drift.ts +132 -0
  718. package/src/orchestrator/harness-registry.ts +12 -0
  719. package/src/orchestrator/index.ts +1 -0
  720. package/src/orchestrator/list-runs.ts +102 -18
  721. package/src/orchestrator/optimization-lifecycle.ts +4 -1
  722. package/src/orchestrator/orchestrator.ts +104 -226
  723. package/src/orchestrator/paired-effects.ts +214 -0
  724. package/src/orchestrator/profile.ts +24 -0
  725. package/src/orchestrator/provenance.ts +23 -3
  726. package/src/orchestrator/regrade.ts +5 -1
  727. package/src/orchestrator/rubric-loader.ts +1 -1
  728. package/src/orchestrator/run-dir.ts +8 -1
  729. package/src/orchestrator/run-execution.ts +75 -10
  730. package/src/orchestrator/run-lifecycle.ts +4 -2
  731. package/src/orchestrator/run-workspace.ts +62 -0
  732. package/src/orchestrator/suite-compare.ts +47 -23
  733. package/src/orchestrator/suite-runs.ts +13 -2
  734. package/src/orchestrator/suite-summary.ts +129 -15
  735. package/src/previewer/artifacts.ts +221 -0
  736. package/src/previewer/server.ts +789 -0
  737. package/viewer/app.css +2111 -0
  738. package/viewer/app.js +627 -0
  739. package/viewer/artifact-view.js +48 -0
  740. package/viewer/charts.js +98 -0
  741. package/viewer/detail.js +1266 -0
  742. package/viewer/format.js +129 -0
  743. package/viewer/index.html +151 -0
  744. package/lib/cli/skills.d.ts +0 -38
  745. package/lib/cli/skills.d.ts.map +0 -1
  746. package/lib/cli/skills.js +0 -84
  747. package/lib/cli/skills.js.map +0 -1
  748. package/lib/drivers/shared/secure-copy.d.ts.map +0 -1
  749. package/lib/drivers/shared/secure-copy.js.map +0 -1
  750. package/skills/lux/SKILL.md +0 -89
  751. package/skills/lux/references/cli.md +0 -125
  752. package/skills/lux/references/eval-authoring.md +0 -257
  753. package/src/cli/skills.ts +0 -129
  754. /package/lib/{drivers/shared → core}/secure-copy.d.ts +0 -0
  755. /package/lib/{drivers/shared → core}/secure-copy.js +0 -0
  756. /package/src/{drivers/shared → core}/secure-copy.ts +0 -0
@@ -0,0 +1,20 @@
1
+ import { asRecord } from "./acp-transport.js";
2
+ export const records = (value) => Array.isArray(value)
3
+ ? value.flatMap((entry) => {
4
+ const record = asRecord(entry);
5
+ return record ? [record] : [];
6
+ })
7
+ : [];
8
+ /** A Lux approval applies to this operation only, never a remembered permission. */
9
+ export const permissionAnswer = (params, answer) => {
10
+ if (answer.kind !== "approve")
11
+ throw new Error("ACP permission requires an approval answer");
12
+ const option = records(params.options).find((entry) => entry.kind === (answer.approved ? "allow_once" : "reject_once"));
13
+ return {
14
+ outcome: option && typeof option.optionId === "string"
15
+ ? { outcome: "selected", optionId: option.optionId }
16
+ : { outcome: "cancelled" },
17
+ };
18
+ };
19
+ export const permissionRequestText = (params) => String(asRecord(params.toolCall)?.title ?? "Approve this tool call?");
20
+ //# sourceMappingURL=acp-interaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp-interaction.js","sourceRoot":"","sources":["../../../src/drivers/shared/acp-interaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAkB,MAAM,oBAAoB,CAAC;AAE9D,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAc,EAAe,EAAE,CACrD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAClB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAe,EAAE;QACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChC,CAAC,CAAC;IACJ,CAAC,CAAC,EAAE,CAAC;AAET,oFAAoF;AACpF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAiB,EAAE,MAAc,EAAa,EAAE;IAC/E,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC7F,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CACzC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAC3E,CAAC;IACF,OAAO;QACL,OAAO,EACL,MAAM,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;YAC3C,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;YACpD,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE;KAC/B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAiB,EAAU,EAAE,CACjE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,yBAAyB,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type RpcRecord } from "./acp-transport.js";
2
+ export declare const acpModel: (session: RpcRecord) => unknown;
3
+ export declare const selectAcpModel: (label: string, session: RpcRecord, model: string, request: (method: string, params: RpcRecord) => Promise<RpcRecord>) => Promise<RpcRecord>;
4
+ //# sourceMappingURL=acp-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp-session.d.ts","sourceRoot":"","sources":["../../../src/drivers/shared/acp-session.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE9D,eAAO,MAAM,QAAQ,YAAa,SAAS,KAAG,OAGe,CAAC;AAK9D,eAAO,MAAM,cAAc,UAClB,MAAM,WACJ,SAAS,SACX,MAAM,WACJ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,KACjE,OAAO,CAAC,SAAS,CAuBnB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { records } from "./acp-interaction.js";
2
+ import { asRecord } from "./acp-transport.js";
3
+ export const acpModel = (session) => records(session.configOptions).find((option) => option.category === "model" || option.id === "model")?.currentValue ?? asRecord(session.models)?.currentModelId;
4
+ const hasOption = (options, value) => records(options).some((option) => option.value === value || hasOption(option.options, value));
5
+ export const selectAcpModel = async (label, session, model, request) => {
6
+ let selected = session;
7
+ const selector = records(session.configOptions).find((option) => option.category === "model" || option.id === "model");
8
+ if (acpModel(session) !== model &&
9
+ typeof selector?.id === "string" &&
10
+ hasOption(selector.options, model)) {
11
+ const updated = await request("session/set_config_option", {
12
+ sessionId: session.sessionId,
13
+ configId: selector.id,
14
+ value: model,
15
+ });
16
+ selected = { ...session, ...updated };
17
+ }
18
+ const reported = acpModel(selected);
19
+ if (typeof reported === "string" && reported !== model)
20
+ throw new Error(`${label} ACP selected '${reported}' instead of requested '${model}'; use an exact model ID advertised by the ACP session`);
21
+ return selected;
22
+ };
23
+ //# sourceMappingURL=acp-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp-session.js","sourceRoot":"","sources":["../../../src/drivers/shared/acp-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAkB,MAAM,oBAAoB,CAAC;AAE9D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAkB,EAAW,EAAE,CACtD,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CACjC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,EAAE,KAAK,OAAO,CACjE,EAAE,YAAY,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;AAE9D,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,KAAa,EAAW,EAAE,CAC7D,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAEhG,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,KAAa,EACb,OAAkB,EAClB,KAAa,EACb,OAAkE,EAC9C,EAAE;IACtB,IAAI,QAAQ,GAAG,OAAO,CAAC;IACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAClD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,EAAE,KAAK,OAAO,CACjE,CAAC;IACF,IACE,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK;QAC3B,OAAO,QAAQ,EAAE,EAAE,KAAK,QAAQ;QAChC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,EAClC,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,2BAA2B,EAAE;YACzD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,QAAQ,CAAC,EAAE;YACrB,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QACH,QAAQ,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,KAAK;QACpD,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,kBAAkB,QAAQ,2BAA2B,KAAK,wDAAwD,CAC3H,CAAC;IACJ,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
@@ -0,0 +1,40 @@
1
+ export type RpcRecord = Record<string, unknown>;
2
+ export type RpcId = number | string;
3
+ export declare const asRecord: (value: unknown) => RpcRecord | undefined;
4
+ type TransportOptions = {
5
+ /** Harness name used in failure messages. */
6
+ label: string;
7
+ command: string;
8
+ args: string[];
9
+ cwd: string;
10
+ env?: NodeJS.ProcessEnv;
11
+ signal: AbortSignal;
12
+ maxLineBytes: number;
13
+ maxQueuedBytes: number;
14
+ onMessage: (message: RpcRecord) => Promise<void>;
15
+ onFailure: (error: Error) => void;
16
+ onActivity: () => void;
17
+ };
18
+ export declare class AcpTransport {
19
+ private readonly process;
20
+ private readonly pending;
21
+ private nextId;
22
+ private buffer;
23
+ private queuedBytes;
24
+ private chain;
25
+ private stopped;
26
+ private stderrTail;
27
+ private readonly options;
28
+ constructor(options: TransportOptions);
29
+ spawned(): Promise<void>;
30
+ request(method: string, params: RpcRecord, timeoutMs?: number): Promise<RpcRecord>;
31
+ write(message: RpcRecord): void;
32
+ drained(): Promise<void>;
33
+ close(): Promise<void>;
34
+ private rejectPending;
35
+ private fail;
36
+ private read;
37
+ private line;
38
+ }
39
+ export {};
40
+ //# sourceMappingURL=acp-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp-transport.d.ts","sourceRoot":"","sources":["../../../src/drivers/shared/acp-transport.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAChD,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AACpC,eAAO,MAAM,QAAQ,UAAW,OAAO,KAAG,SAAS,GAAG,SAGvC,CAAC;AAEhB,KAAK,gBAAgB,GAAG;IACtB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAEF,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAOpB;IACJ,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAM;IAExB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAE3C,YAAY,OAAO,EAAE,gBAAgB,EAoBpC;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7B;IAED,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAmBjF;IAED,KAAK,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAM9B;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7B;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAK3B;IAED,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,IAAI;IAmBZ,OAAO,CAAC,IAAI;CA0Cb"}
@@ -0,0 +1,152 @@
1
+ import { spawnManagedProcess } from "../../core/index.js";
2
+ export const asRecord = (value) => value !== null && typeof value === "object" && !Array.isArray(value)
3
+ ? value
4
+ : undefined;
5
+ export class AcpTransport {
6
+ process;
7
+ pending = new Map();
8
+ nextId = 1;
9
+ buffer = Buffer.alloc(0);
10
+ queuedBytes = 0;
11
+ chain = Promise.resolve();
12
+ stopped = false;
13
+ stderrTail = "";
14
+ options;
15
+ constructor(options) {
16
+ this.options = options;
17
+ this.process = spawnManagedProcess(options.command, options.args, {
18
+ cwd: options.cwd,
19
+ ...(options.env ? { env: options.env } : {}),
20
+ signal: options.signal,
21
+ });
22
+ this.process.child.stdout.on("data", (chunk) => this.read(chunk));
23
+ this.process.child.stderr.setEncoding("utf8");
24
+ this.process.child.stderr.on("data", (chunk) => {
25
+ this.stderrTail = (this.stderrTail + chunk).slice(-8_192);
26
+ });
27
+ void this.process.exited.then(({ exitCode, signal }) => {
28
+ if (!this.stopped)
29
+ this.fail(new Error(`${this.options.label} exited before completion (code=${exitCode}, signal=${signal})${this.stderrTail ? `: ${this.stderrTail}` : ""}`));
30
+ });
31
+ }
32
+ async spawned() {
33
+ await this.process.spawned;
34
+ }
35
+ request(method, params, timeoutMs) {
36
+ if (this.stopped)
37
+ return Promise.reject(new Error(`${this.options.label} is closed`));
38
+ const id = this.nextId++;
39
+ return new Promise((resolve, reject) => {
40
+ const timer = timeoutMs === undefined
41
+ ? undefined
42
+ : setTimeout(() => {
43
+ this.fail(new Error(`${this.options.label} ${method} timed out after ${timeoutMs}ms`));
44
+ }, timeoutMs);
45
+ this.pending.set(id, { resolve, reject, timer });
46
+ try {
47
+ this.write({ id, method, params });
48
+ }
49
+ catch (error) {
50
+ this.fail(error instanceof Error ? error : new Error(String(error)));
51
+ }
52
+ });
53
+ }
54
+ write(message) {
55
+ if (this.stopped)
56
+ throw new Error(`${this.options.label} is closed`);
57
+ const line = `${JSON.stringify({ jsonrpc: "2.0", ...message })}\n`;
58
+ if (Buffer.byteLength(line) > this.options.maxLineBytes)
59
+ throw new Error(`${this.options.label} outgoing message exceeded maxLineBytes`);
60
+ this.process.child.stdin.write(line);
61
+ }
62
+ async drained() {
63
+ await this.chain;
64
+ }
65
+ async close() {
66
+ this.stopped = true;
67
+ this.rejectPending(new Error(`${this.options.label} is closed`));
68
+ this.buffer = Buffer.alloc(0);
69
+ await this.process.terminate();
70
+ }
71
+ rejectPending(error) {
72
+ for (const pending of this.pending.values()) {
73
+ clearTimeout(pending.timer);
74
+ pending.reject(error);
75
+ }
76
+ this.pending.clear();
77
+ }
78
+ fail(error) {
79
+ if (this.stopped)
80
+ return;
81
+ this.stopped = true;
82
+ this.rejectPending(error);
83
+ this.options.onFailure(error);
84
+ void this.process.terminate();
85
+ }
86
+ read(chunk) {
87
+ let offset = 0;
88
+ while (offset < chunk.length && !this.stopped) {
89
+ const newline = chunk.indexOf(0x0a, offset);
90
+ const end = newline === -1 ? chunk.length : newline;
91
+ const segment = chunk.subarray(offset, end);
92
+ if (this.buffer.length + segment.length > this.options.maxLineBytes) {
93
+ this.fail(new Error(`${this.options.label} stdout line exceeded maxLineBytes`));
94
+ return;
95
+ }
96
+ this.buffer = Buffer.concat([this.buffer, segment]);
97
+ if (newline === -1)
98
+ return;
99
+ const line = this.buffer;
100
+ this.buffer = Buffer.alloc(0);
101
+ this.line(line);
102
+ offset = newline + 1;
103
+ }
104
+ }
105
+ line(line) {
106
+ if (!line.toString("utf8").trim())
107
+ return;
108
+ let message;
109
+ try {
110
+ message = asRecord(JSON.parse(line.toString("utf8")));
111
+ }
112
+ catch {
113
+ /* Rejected below. */
114
+ }
115
+ if (message?.jsonrpc !== "2.0") {
116
+ this.fail(new Error(`${this.options.label} returned an invalid JSON-RPC message`));
117
+ return;
118
+ }
119
+ this.options.onActivity();
120
+ if (message.method === undefined) {
121
+ const pending = this.pending.get(message.id);
122
+ if (!pending)
123
+ return;
124
+ this.pending.delete(message.id);
125
+ clearTimeout(pending.timer);
126
+ const error = asRecord(message.error);
127
+ if (error)
128
+ pending.reject(new Error(String(error.message ?? `${this.options.label} request failed`)));
129
+ else
130
+ pending.resolve(asRecord(message.result) ?? {});
131
+ return;
132
+ }
133
+ this.queuedBytes += line.length;
134
+ if (this.queuedBytes > this.options.maxQueuedBytes) {
135
+ this.fail(new Error(`${this.options.label} pending events exceeded maxQueuedBytes`));
136
+ return;
137
+ }
138
+ const queued = message;
139
+ this.chain = this.chain
140
+ .then(async () => {
141
+ try {
142
+ if (!this.stopped)
143
+ await this.options.onMessage(queued);
144
+ }
145
+ finally {
146
+ this.queuedBytes -= line.length;
147
+ }
148
+ })
149
+ .catch((error) => this.fail(error instanceof Error ? error : new Error(String(error))));
150
+ }
151
+ }
152
+ //# sourceMappingURL=acp-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp-transport.js","sourceRoot":"","sources":["../../../src/drivers/shared/acp-transport.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../../src/drivers/shared/artifacts.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,qBAAqB,CAAC;AAI7B,2FAA2F;AAC3F,eAAO,MAAM,aAAa,SAAgB,MAAM,mBAAc,OAAO,CAAC,QAAQ,EAAE,CA0E/E,CAAC"}
1
+ {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../../src/drivers/shared/artifacts.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,qBAAqB,CAAC;AAI7B,2FAA2F;AAC3F,eAAO,MAAM,aAAa,SAAgB,MAAM,mBAAc,OAAO,CAAC,QAAQ,EAAE,CA8E/E,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { lstat, readdir, realpath } from "node:fs/promises";
2
2
  import { basename, dirname, join, relative, resolve, sep } from "node:path";
3
3
  import { ARTIFACT_SNAPSHOT_MANIFEST, readArtifactSnapshotManifest, } from "../../core/index.js";
4
- const IGNORED_DIRS = new Set(["node_modules", "lib", "dist"]);
4
+ const IGNORED_DIRS = new Set(["node_modules", "dist"]);
5
5
  /** Enumerate agent-authored files without following symlinks or build/dependency trees. */
6
6
  export const walkArtifacts = async (root, max = 500) => {
7
7
  if (!Number.isSafeInteger(max) || max <= 0) {
@@ -63,7 +63,8 @@ export const walkArtifacts = async (root, max = 500) => {
63
63
  if (entry.isDirectory()) {
64
64
  if (await collectSnapshot(full))
65
65
  continue;
66
- if (entry.name.startsWith(".") || IGNORED_DIRS.has(entry.name))
66
+ if ((entry.name.startsWith(".") && entry.name !== ".spectral") ||
67
+ IGNORED_DIRS.has(entry.name))
67
68
  continue;
68
69
  await walk(full);
69
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/drivers/shared/artifacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/drivers/shared/artifacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare const claudeConfigRoot: (driver: unknown) => string;
2
+ /**
3
+ * Hash every intentionally loaded user behavior source without persisting its
4
+ * contents. This covers user instructions/rules/output styles and the exact
5
+ * installed contents of plugins enabled by settings.json.
6
+ */
7
+ export declare const claudeUserBehaviorHash: (configRoot: string) => Promise<string | null>;
8
+ export declare const configuredClaudeSourceHashes: (driver: unknown, baseRoot: string, cache?: Map<string, Promise<string>>) => Promise<Array<{
9
+ kind: "plugin" | "read" | "skill";
10
+ path: string;
11
+ hash: string;
12
+ }>>;
13
+ //# sourceMappingURL=experiment-behavior.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"experiment-behavior.d.ts","sourceRoot":"","sources":["../../../src/drivers/shared/experiment-behavior.ts"],"names":[],"mappings":"AAwCA,eAAO,MAAM,gBAAgB,WAAY,OAAO,KAAG,MAelD,CAAC;AAgCF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,eAAsB,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAkEtF,CAAC;AAEF,eAAO,MAAM,4BAA4B,WAC/B,OAAO,YACL,MAAM,UACT,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,KAClC,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAoDlF,CAAC"}
@@ -0,0 +1,200 @@
1
+ import { lstat, readFile } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { isAbsolute, join, resolve } from "node:path";
4
+ import { z } from "zod";
5
+ import { walkAuthoredFiles } from "../../core/file-tree.js";
6
+ import { contentHash, valueHash } from "../../core/hash.js";
7
+ import { prepareClaudeExperimentConfig, prepareCodexExperimentConfig, } from "./experiment-policy.js";
8
+ const ClaudeSettingsFileSchema = z.looseObject({
9
+ enabledPlugins: z.record(z.string(), z.boolean()).optional(),
10
+ });
11
+ const ClaudeInstalledPluginRecordSchema = z.looseObject({
12
+ installPath: z.string(),
13
+ });
14
+ const ClaudeInstalledPluginsFileSchema = z.looseObject({
15
+ plugins: z.record(z.string(), z.array(ClaudeInstalledPluginRecordSchema)),
16
+ });
17
+ const optionalRegularFileHash = async (path) => {
18
+ try {
19
+ const info = await lstat(path);
20
+ if (info.isSymbolicLink() || !info.isFile()) {
21
+ throw new Error(`behavior-affecting settings must be a regular file: ${path}`);
22
+ }
23
+ return contentHash(await readFile(path));
24
+ }
25
+ catch (error) {
26
+ if (error.code === "ENOENT")
27
+ return null;
28
+ throw error;
29
+ }
30
+ };
31
+ const driverConfigRecord = (driver) => {
32
+ if (!driver || typeof driver !== "object")
33
+ return {};
34
+ const config = driver.config;
35
+ return config && typeof config === "object" ? config : {};
36
+ };
37
+ export const claudeConfigRoot = (driver) => {
38
+ const config = driverConfigRecord(driver);
39
+ const env = config.env && typeof config.env === "object"
40
+ ? config.env
41
+ : undefined;
42
+ const configured = env?.CLAUDE_CONFIG_DIR;
43
+ const root = typeof configured === "string"
44
+ ? configured
45
+ : (process.env.CLAUDE_CONFIG_DIR ?? join(homedir(), ".claude"));
46
+ if (!isAbsolute(root)) {
47
+ throw new Error("CLAUDE_CONFIG_DIR must be absolute for reproducible experiment identity");
48
+ }
49
+ return resolve(root);
50
+ };
51
+ const hashBehaviorDirectory = async (root, label) => {
52
+ try {
53
+ const info = await lstat(root);
54
+ if (info.isSymbolicLink() || !info.isDirectory()) {
55
+ throw new Error(`behavior-affecting Claude source must be a real directory: ${root}`);
56
+ }
57
+ }
58
+ catch (error) {
59
+ if (error.code === "ENOENT")
60
+ return [];
61
+ throw error;
62
+ }
63
+ const paths = await walkAuthoredFiles(root);
64
+ if (paths.length > 5_000) {
65
+ throw new Error(`behavior-affecting Claude source '${label}' exceeds 5000 files`);
66
+ }
67
+ let bytes = 0;
68
+ const hashes = [];
69
+ for (const path of paths) {
70
+ const content = await readFile(join(root, path));
71
+ bytes += content.length;
72
+ if (bytes > 256 * 1024 * 1024) {
73
+ throw new Error(`behavior-affecting Claude source '${label}' exceeds 256 MiB`);
74
+ }
75
+ hashes.push({ path: `${label}/${path}`, hash: contentHash(content) });
76
+ }
77
+ return hashes;
78
+ };
79
+ /**
80
+ * Hash every intentionally loaded user behavior source without persisting its
81
+ * contents. This covers user instructions/rules/output styles and the exact
82
+ * installed contents of plugins enabled by settings.json.
83
+ */
84
+ export const claudeUserBehaviorHash = async (configRoot) => {
85
+ const settingsPath = join(configRoot, "settings.json");
86
+ const settingsHash = await optionalRegularFileHash(settingsPath);
87
+ const sources = [];
88
+ if (settingsHash)
89
+ sources.push({ path: "settings.json", hash: settingsHash });
90
+ const claudeMdHash = await optionalRegularFileHash(join(configRoot, "CLAUDE.md"));
91
+ if (claudeMdHash)
92
+ sources.push({ path: "CLAUDE.md", hash: claudeMdHash });
93
+ for (const directory of ["rules", "output-styles", "agents", "commands", "skills"]) {
94
+ sources.push(...(await hashBehaviorDirectory(join(configRoot, directory), directory)));
95
+ }
96
+ let settings;
97
+ try {
98
+ const contents = await readFile(settingsPath, "utf8");
99
+ try {
100
+ settings = JSON.parse(contents);
101
+ }
102
+ catch {
103
+ throw new Error("Claude settings.json contains invalid JSON");
104
+ }
105
+ }
106
+ catch (error) {
107
+ if (error.code === "ENOENT") {
108
+ settings = undefined;
109
+ }
110
+ else {
111
+ throw error;
112
+ }
113
+ }
114
+ const parsedSettings = ClaudeSettingsFileSchema.safeParse(settings);
115
+ if (settings !== undefined && !parsedSettings.success) {
116
+ throw new Error("Claude settings.json has an invalid enabledPlugins map");
117
+ }
118
+ const enabledPlugins = parsedSettings.success ? parsedSettings.data.enabledPlugins : undefined;
119
+ const enabledIds = Object.entries(enabledPlugins ?? {})
120
+ .filter(([, value]) => value === true)
121
+ .map(([id]) => id)
122
+ .sort();
123
+ if (enabledIds.length > 0) {
124
+ const installedPath = join(configRoot, "plugins", "installed_plugins.json");
125
+ const installedHash = await optionalRegularFileHash(installedPath);
126
+ if (installedHash) {
127
+ sources.push({ path: "plugins/installed_plugins.json", hash: installedHash });
128
+ }
129
+ let installed;
130
+ try {
131
+ installed = JSON.parse(await readFile(installedPath, "utf8"));
132
+ }
133
+ catch {
134
+ installed = undefined;
135
+ }
136
+ const parsedInstalled = ClaudeInstalledPluginsFileSchema.safeParse(installed);
137
+ if (!parsedInstalled.success) {
138
+ throw new Error("enabled Claude plugins have invalid installed metadata");
139
+ }
140
+ const plugins = parsedInstalled.data.plugins;
141
+ for (const id of enabledIds) {
142
+ const records = plugins[id];
143
+ if (!records || records.length === 0) {
144
+ throw new Error(`enabled Claude plugin '${id}' has no installed content to hash`);
145
+ }
146
+ for (const [index, record] of records.entries()) {
147
+ const installPath = record.installPath;
148
+ sources.push(...(await hashBehaviorDirectory(resolve(installPath), `plugins/enabled/${id}/${index}`)));
149
+ }
150
+ }
151
+ }
152
+ return sources.length === 0 ? null : valueHash(sources);
153
+ };
154
+ export const configuredClaudeSourceHashes = async (driver, baseRoot, cache = new Map()) => {
155
+ const name = typeof driver === "string" ? driver : driver?.name;
156
+ const driverCli = name === "claude-code" || name === "codex" ? { name } : undefined;
157
+ if (!driverCli)
158
+ return [];
159
+ const config = driverConfigRecord(driver);
160
+ // This also rejects path-bearing extraArgs that would evade the source
161
+ // hashes below. Runtime applies the same guard before driver creation.
162
+ if (driverCli.name === "claude-code")
163
+ prepareClaudeExperimentConfig(config);
164
+ else
165
+ prepareCodexExperimentConfig(config);
166
+ const isolation = config.isolation && typeof config.isolation === "object"
167
+ ? config.isolation
168
+ : undefined;
169
+ const configured = [
170
+ ...(driverCli.name === "claude-code" && Array.isArray(config.pluginDirs)
171
+ ? config.pluginDirs.map((path) => ({ kind: "plugin", path }))
172
+ : []),
173
+ ...(Array.isArray(config.addDirs)
174
+ ? config.addDirs.map((path) => ({ kind: "read", path }))
175
+ : []),
176
+ ...(Array.isArray(config.skillDirs)
177
+ ? config.skillDirs.map((path) => ({ kind: "skill", path }))
178
+ : []),
179
+ ...(driverCli.name === "claude-code" && isolation && Array.isArray(isolation.allowRead)
180
+ ? isolation.allowRead.map((path) => ({ kind: "read", path }))
181
+ : []),
182
+ ].filter((entry) => typeof entry.path === "string" && entry.path.length > 0);
183
+ return Promise.all(configured
184
+ .sort((a, b) => `${a.kind}:${a.path}`.localeCompare(`${b.kind}:${b.path}`))
185
+ .map(async ({ kind, path }) => {
186
+ const absolute = resolve(baseRoot, path);
187
+ const key = `${kind}:${absolute}`;
188
+ let hash = cache.get(key);
189
+ if (!hash) {
190
+ hash = hashBehaviorDirectory(absolute, `driver/${kind}/${contentHash(absolute).slice(0, 12)}`).then(valueHash);
191
+ cache.set(key, hash);
192
+ }
193
+ return {
194
+ kind,
195
+ path: absolute,
196
+ hash: await hash,
197
+ };
198
+ }));
199
+ };
200
+ //# sourceMappingURL=experiment-behavior.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"experiment-behavior.js","sourceRoot":"","sources":["../../../src/drivers/shared/experiment-behavior.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const prepareClaudeExperimentConfig: <Cfg extends Record<string, unknown>>(config: Cfg) => Cfg;
2
+ export declare const prepareCodexExperimentConfig: <Cfg extends Record<string, unknown>>(config: Cfg) => Cfg;
3
+ export declare const prepareSubprocessExperimentConfig: <Cfg extends Record<string, unknown>>(config: Cfg) => Cfg;
4
+ //# sourceMappingURL=experiment-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"experiment-policy.d.ts","sourceRoot":"","sources":["../../../src/drivers/shared/experiment-policy.ts"],"names":[],"mappings":"AAwLA,eAAO,MAAM,6BAA6B,GAAI,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UACvE,GAAG,KACV,GAGF,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UACtE,GAAG,KACV,GAGF,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAAI,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAC3E,GAAG,KACV,GAAoD,CAAC"}