@tangle-network/agent-eval 0.94.0 → 0.95.0

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 (1056) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +44 -30
  3. package/dist/action-policy.d.ts +24 -0
  4. package/dist/action-policy.d.ts.map +1 -0
  5. package/dist/action-policy.test.d.ts +2 -0
  6. package/dist/action-policy.test.d.ts.map +1 -0
  7. package/dist/active-learning.d.ts +41 -0
  8. package/dist/active-learning.d.ts.map +1 -0
  9. package/dist/adapters/http.d.ts +15 -21
  10. package/dist/adapters/http.d.ts.map +1 -0
  11. package/dist/adapters/http.js.map +1 -1
  12. package/dist/adapters/langchain.d.ts +7 -13
  13. package/dist/adapters/langchain.d.ts.map +1 -0
  14. package/dist/adapters/otel.d.ts +13 -24
  15. package/dist/adapters/otel.d.ts.map +1 -0
  16. package/dist/agent-profile-cell.d.ts +101 -0
  17. package/dist/agent-profile-cell.d.ts.map +1 -0
  18. package/dist/agent-profile.d.ts +27 -0
  19. package/dist/agent-profile.d.ts.map +1 -0
  20. package/dist/agent-profile.test.d.ts +2 -0
  21. package/dist/agent-profile.test.d.ts.map +1 -0
  22. package/dist/analyst/adapters.d.ts +62 -0
  23. package/dist/analyst/adapters.d.ts.map +1 -0
  24. package/dist/analyst/analyst.test.d.ts +2 -0
  25. package/dist/analyst/analyst.test.d.ts.map +1 -0
  26. package/dist/analyst/ax-service.d.ts +27 -0
  27. package/dist/analyst/ax-service.d.ts.map +1 -0
  28. package/dist/analyst/behavioral-analyst.d.ts +28 -0
  29. package/dist/analyst/behavioral-analyst.d.ts.map +1 -0
  30. package/dist/analyst/chat-client.d.ts +91 -0
  31. package/dist/analyst/chat-client.d.ts.map +1 -0
  32. package/dist/analyst/default-registry.d.ts +27 -0
  33. package/dist/analyst/default-registry.d.ts.map +1 -0
  34. package/dist/analyst/default-registry.test.d.ts +2 -0
  35. package/dist/analyst/default-registry.test.d.ts.map +1 -0
  36. package/dist/analyst/finding-signature.d.ts +48 -0
  37. package/dist/analyst/finding-signature.d.ts.map +1 -0
  38. package/dist/analyst/finding-subject.d.ts +146 -0
  39. package/dist/analyst/finding-subject.d.ts.map +1 -0
  40. package/dist/analyst/finding-subject.test.d.ts +2 -0
  41. package/dist/analyst/finding-subject.test.d.ts.map +1 -0
  42. package/dist/analyst/findings-store.d.ts +75 -0
  43. package/dist/analyst/findings-store.d.ts.map +1 -0
  44. package/dist/analyst/index.d.ts +28 -256
  45. package/dist/analyst/index.d.ts.map +1 -0
  46. package/dist/analyst/index.js +5 -65
  47. package/dist/analyst/index.js.map +1 -1
  48. package/dist/{kind-factory-0BhLSI27.d.ts → analyst/kind-factory.d.ts} +11 -63
  49. package/dist/analyst/kind-factory.d.ts.map +1 -0
  50. package/dist/analyst/kinds/failure-mode.d.ts +19 -0
  51. package/dist/analyst/kinds/failure-mode.d.ts.map +1 -0
  52. package/dist/analyst/kinds/improvement.d.ts +23 -0
  53. package/dist/analyst/kinds/improvement.d.ts.map +1 -0
  54. package/dist/analyst/kinds/index.d.ts +22 -0
  55. package/dist/analyst/kinds/index.d.ts.map +1 -0
  56. package/dist/analyst/kinds/kinds.test.d.ts +2 -0
  57. package/dist/analyst/kinds/kinds.test.d.ts.map +1 -0
  58. package/dist/analyst/kinds/knowledge-gap.d.ts +28 -0
  59. package/dist/analyst/kinds/knowledge-gap.d.ts.map +1 -0
  60. package/dist/analyst/kinds/knowledge-poisoning.d.ts +22 -0
  61. package/dist/analyst/kinds/knowledge-poisoning.d.ts.map +1 -0
  62. package/dist/analyst/kinds/skill-usage.d.ts +84 -0
  63. package/dist/analyst/kinds/skill-usage.d.ts.map +1 -0
  64. package/dist/analyst/kinds/skill-usage.test.d.ts +2 -0
  65. package/dist/analyst/kinds/skill-usage.test.d.ts.map +1 -0
  66. package/dist/analyst/parse-tolerant.d.ts +26 -0
  67. package/dist/analyst/parse-tolerant.d.ts.map +1 -0
  68. package/dist/analyst/parse-tolerant.test.d.ts +2 -0
  69. package/dist/analyst/parse-tolerant.test.d.ts.map +1 -0
  70. package/dist/analyst/registry.budget.test.d.ts +2 -0
  71. package/dist/analyst/registry.budget.test.d.ts.map +1 -0
  72. package/dist/{default-registry-6dhErQbs.d.ts → analyst/registry.d.ts} +8 -37
  73. package/dist/analyst/registry.d.ts.map +1 -0
  74. package/dist/analyst/steer-firewall.d.ts +35 -0
  75. package/dist/analyst/steer-firewall.d.ts.map +1 -0
  76. package/dist/analyst/steer-firewall.test.d.ts +2 -0
  77. package/dist/analyst/steer-firewall.test.d.ts.map +1 -0
  78. package/dist/analyst/structure-findings.d.ts +37 -0
  79. package/dist/analyst/structure-findings.d.ts.map +1 -0
  80. package/dist/analyst/structure-findings.test.d.ts +2 -0
  81. package/dist/analyst/structure-findings.test.d.ts.map +1 -0
  82. package/dist/analyst/tool-groups.d.ts +34 -0
  83. package/dist/analyst/tool-groups.d.ts.map +1 -0
  84. package/dist/{types-Ce17tDlG.d.ts → analyst/types.d.ts} +19 -112
  85. package/dist/analyst/types.d.ts.map +1 -0
  86. package/dist/anti-slop.d.ts +59 -0
  87. package/dist/anti-slop.d.ts.map +1 -0
  88. package/dist/artifact-validator.d.ts +74 -0
  89. package/dist/artifact-validator.d.ts.map +1 -0
  90. package/dist/attestation.d.ts +63 -0
  91. package/dist/attestation.d.ts.map +1 -0
  92. package/dist/attestation.test.d.ts +2 -0
  93. package/dist/attestation.test.d.ts.map +1 -0
  94. package/dist/authenticity/index.d.ts +15 -16
  95. package/dist/authenticity/index.d.ts.map +1 -0
  96. package/dist/authenticity/index.test.d.ts +2 -0
  97. package/dist/authenticity/index.test.d.ts.map +1 -0
  98. package/dist/auto-pr.d.ts +120 -0
  99. package/dist/auto-pr.d.ts.map +1 -0
  100. package/dist/{baseline-Bbid3WoO.d.ts → baseline.d.ts} +8 -44
  101. package/dist/baseline.d.ts.map +1 -0
  102. package/dist/behavior-dsl.d.ts +73 -0
  103. package/dist/behavior-dsl.d.ts.map +1 -0
  104. package/dist/belief-state/calibration.d.ts +10 -0
  105. package/dist/belief-state/calibration.d.ts.map +1 -0
  106. package/dist/belief-state/calibration.test.d.ts +2 -0
  107. package/dist/belief-state/calibration.test.d.ts.map +1 -0
  108. package/dist/belief-state/code-agent-corpus.d.ts +66 -0
  109. package/dist/belief-state/code-agent-corpus.d.ts.map +1 -0
  110. package/dist/belief-state/code-agent-corpus.test.d.ts +2 -0
  111. package/dist/belief-state/code-agent-corpus.test.d.ts.map +1 -0
  112. package/dist/belief-state/code-agent-evidence.d.ts +22 -0
  113. package/dist/belief-state/code-agent-evidence.d.ts.map +1 -0
  114. package/dist/belief-state/code-agent-evidence.test.d.ts +2 -0
  115. package/dist/belief-state/code-agent-evidence.test.d.ts.map +1 -0
  116. package/dist/belief-state/extract.d.ts +7 -0
  117. package/dist/belief-state/extract.d.ts.map +1 -0
  118. package/dist/belief-state/extract.test.d.ts +2 -0
  119. package/dist/belief-state/extract.test.d.ts.map +1 -0
  120. package/dist/belief-state/index.d.ts +14 -604
  121. package/dist/belief-state/index.d.ts.map +1 -0
  122. package/dist/belief-state/ope.d.ts +17 -0
  123. package/dist/belief-state/ope.d.ts.map +1 -0
  124. package/dist/belief-state/ope.test.d.ts +2 -0
  125. package/dist/belief-state/ope.test.d.ts.map +1 -0
  126. package/dist/belief-state/phase0-measurement.d.ts +55 -0
  127. package/dist/belief-state/phase0-measurement.d.ts.map +1 -0
  128. package/dist/belief-state/report.d.ts +17 -0
  129. package/dist/belief-state/report.d.ts.map +1 -0
  130. package/dist/belief-state/report.test.d.ts +2 -0
  131. package/dist/belief-state/report.test.d.ts.map +1 -0
  132. package/dist/belief-state/research-evidence.d.ts +23 -0
  133. package/dist/belief-state/research-evidence.d.ts.map +1 -0
  134. package/dist/belief-state/research-evidence.test.d.ts +2 -0
  135. package/dist/belief-state/research-evidence.test.d.ts.map +1 -0
  136. package/dist/belief-state/runtime-benchmark-corpus.d.ts +32 -0
  137. package/dist/belief-state/runtime-benchmark-corpus.d.ts.map +1 -0
  138. package/dist/belief-state/runtime-hooks.d.ts +87 -0
  139. package/dist/belief-state/runtime-hooks.d.ts.map +1 -0
  140. package/dist/belief-state/runtime-hooks.test.d.ts +2 -0
  141. package/dist/belief-state/runtime-hooks.test.d.ts.map +1 -0
  142. package/dist/belief-state/selective.d.ts +15 -0
  143. package/dist/belief-state/selective.d.ts.map +1 -0
  144. package/dist/belief-state/selective.test.d.ts +2 -0
  145. package/dist/belief-state/selective.test.d.ts.map +1 -0
  146. package/dist/belief-state/shadow-probe.d.ts +80 -0
  147. package/dist/belief-state/shadow-probe.d.ts.map +1 -0
  148. package/dist/belief-state/shadow-probe.test.d.ts +2 -0
  149. package/dist/belief-state/shadow-probe.test.d.ts.map +1 -0
  150. package/dist/belief-state/types.d.ts +195 -0
  151. package/dist/belief-state/types.d.ts.map +1 -0
  152. package/dist/belief-state/types.test.d.ts +2 -0
  153. package/dist/belief-state/types.test.d.ts.map +1 -0
  154. package/dist/benchmark.d.ts +14 -0
  155. package/dist/benchmark.d.ts.map +1 -0
  156. package/dist/benchmarks/index.d.ts +23 -4
  157. package/dist/benchmarks/index.d.ts.map +1 -0
  158. package/dist/benchmarks/routing/dataset.d.ts +34 -0
  159. package/dist/benchmarks/routing/dataset.d.ts.map +1 -0
  160. package/dist/benchmarks/routing/index.d.ts +34 -0
  161. package/dist/benchmarks/routing/index.d.ts.map +1 -0
  162. package/dist/benchmarks/types.d.ts +49 -0
  163. package/dist/benchmarks/types.d.ts.map +1 -0
  164. package/dist/bisector.d.ts +81 -0
  165. package/dist/bisector.d.ts.map +1 -0
  166. package/dist/budget-guard.d.ts +31 -0
  167. package/dist/budget-guard.d.ts.map +1 -0
  168. package/dist/builder-eval/builder-session.d.ts +111 -0
  169. package/dist/builder-eval/builder-session.d.ts.map +1 -0
  170. package/dist/builder-eval/correlation.d.ts +32 -0
  171. package/dist/builder-eval/correlation.d.ts.map +1 -0
  172. package/dist/builder-eval/index.d.ts +5 -250
  173. package/dist/builder-eval/index.d.ts.map +1 -0
  174. package/dist/builder-eval/project-registry.d.ts +51 -0
  175. package/dist/builder-eval/project-registry.d.ts.map +1 -0
  176. package/dist/builder-eval/three-layer-eval.d.ts +55 -0
  177. package/dist/builder-eval/three-layer-eval.d.ts.map +1 -0
  178. package/dist/campaign/analyst-surface.d.ts +108 -0
  179. package/dist/campaign/analyst-surface.d.ts.map +1 -0
  180. package/dist/campaign/analyst-surface.test.d.ts +2 -0
  181. package/dist/campaign/analyst-surface.test.d.ts.map +1 -0
  182. package/dist/campaign/auto-pr.d.ts +46 -0
  183. package/dist/campaign/auto-pr.d.ts.map +1 -0
  184. package/dist/campaign/distillation/agreement-judge.d.ts +69 -0
  185. package/dist/campaign/distillation/agreement-judge.d.ts.map +1 -0
  186. package/dist/campaign/distillation/cli.d.ts +35 -0
  187. package/dist/campaign/distillation/cli.d.ts.map +1 -0
  188. package/dist/campaign/distillation/distillation.test.d.ts +2 -0
  189. package/dist/campaign/distillation/distillation.test.d.ts.map +1 -0
  190. package/dist/campaign/distillation/gold-scenarios.d.ts +54 -0
  191. package/dist/campaign/distillation/gold-scenarios.d.ts.map +1 -0
  192. package/dist/campaign/distillation/run-distillation.d.ts +119 -0
  193. package/dist/campaign/distillation/run-distillation.d.ts.map +1 -0
  194. package/dist/campaign/gates/compose.d.ts +12 -0
  195. package/dist/campaign/gates/compose.d.ts.map +1 -0
  196. package/dist/campaign/gates/default-production-gate.d.ts +58 -0
  197. package/dist/campaign/gates/default-production-gate.d.ts.map +1 -0
  198. package/dist/campaign/gates/heldout-gate.d.ts +12 -0
  199. package/dist/campaign/gates/heldout-gate.d.ts.map +1 -0
  200. package/dist/campaign/gates/promotion-policy.d.ts +125 -0
  201. package/dist/campaign/gates/promotion-policy.d.ts.map +1 -0
  202. package/dist/campaign/gates/promotion-policy.test.d.ts +2 -0
  203. package/dist/campaign/gates/promotion-policy.test.d.ts.map +1 -0
  204. package/dist/campaign/gates/sequential.d.ts +146 -0
  205. package/dist/campaign/gates/sequential.d.ts.map +1 -0
  206. package/dist/campaign/gates/sequential.test.d.ts +2 -0
  207. package/dist/campaign/gates/sequential.test.d.ts.map +1 -0
  208. package/dist/campaign/gates/statistical-heldout.d.ts +99 -0
  209. package/dist/campaign/gates/statistical-heldout.d.ts.map +1 -0
  210. package/dist/campaign/gates/statistical-heldout.test.d.ts +2 -0
  211. package/dist/campaign/gates/statistical-heldout.test.d.ts.map +1 -0
  212. package/dist/campaign/index.d.ts +38 -1341
  213. package/dist/campaign/index.d.ts.map +1 -0
  214. package/dist/campaign/index.js +1863 -1316
  215. package/dist/campaign/index.js.map +1 -1
  216. package/dist/campaign/labeled-store/fs-adapter.d.ts +59 -0
  217. package/dist/campaign/labeled-store/fs-adapter.d.ts.map +1 -0
  218. package/dist/campaign/presets/compare-proposers.d.ts +146 -0
  219. package/dist/campaign/presets/compare-proposers.d.ts.map +1 -0
  220. package/dist/campaign/presets/playback.d.ts +120 -0
  221. package/dist/campaign/presets/playback.d.ts.map +1 -0
  222. package/dist/campaign/presets/playback.test.d.ts +2 -0
  223. package/dist/campaign/presets/playback.test.d.ts.map +1 -0
  224. package/dist/campaign/presets/run-eval.d.ts +14 -0
  225. package/dist/campaign/presets/run-eval.d.ts.map +1 -0
  226. package/dist/campaign/presets/run-improvement-loop.d.ts +63 -0
  227. package/dist/campaign/presets/run-improvement-loop.d.ts.map +1 -0
  228. package/dist/campaign/presets/run-improvement-loop.test.d.ts +2 -0
  229. package/dist/campaign/presets/run-improvement-loop.test.d.ts.map +1 -0
  230. package/dist/campaign/presets/run-optimization.d.ts +92 -0
  231. package/dist/campaign/presets/run-optimization.d.ts.map +1 -0
  232. package/dist/campaign/presets/run-profile-matrix.d.ts +151 -0
  233. package/dist/campaign/presets/run-profile-matrix.d.ts.map +1 -0
  234. package/dist/campaign/presets/run-skill-opt.d.ts +96 -0
  235. package/dist/campaign/presets/run-skill-opt.d.ts.map +1 -0
  236. package/dist/campaign/proposers/_findings-text.d.ts +22 -0
  237. package/dist/campaign/proposers/_findings-text.d.ts.map +1 -0
  238. package/dist/campaign/proposers/ace.d.ts +33 -0
  239. package/dist/campaign/proposers/ace.d.ts.map +1 -0
  240. package/dist/campaign/proposers/ace.test.d.ts +2 -0
  241. package/dist/campaign/proposers/ace.test.d.ts.map +1 -0
  242. package/dist/campaign/proposers/analysis-edit.d.ts +32 -0
  243. package/dist/campaign/proposers/analysis-edit.d.ts.map +1 -0
  244. package/dist/campaign/proposers/evolutionary.d.ts +20 -0
  245. package/dist/campaign/proposers/evolutionary.d.ts.map +1 -0
  246. package/dist/campaign/proposers/fapo.d.ts +120 -0
  247. package/dist/campaign/proposers/fapo.d.ts.map +1 -0
  248. package/dist/campaign/proposers/gepa.d.ts +86 -0
  249. package/dist/campaign/proposers/gepa.d.ts.map +1 -0
  250. package/dist/campaign/proposers/halo.d.ts +44 -0
  251. package/dist/campaign/proposers/halo.d.ts.map +1 -0
  252. package/dist/campaign/proposers/halo.test.d.ts +2 -0
  253. package/dist/campaign/proposers/halo.test.d.ts.map +1 -0
  254. package/dist/campaign/proposers/memory.d.ts +47 -0
  255. package/dist/campaign/proposers/memory.d.ts.map +1 -0
  256. package/dist/campaign/proposers/memory.test.d.ts +2 -0
  257. package/dist/campaign/proposers/memory.test.d.ts.map +1 -0
  258. package/dist/campaign/proposers/skill-opt.d.ts +88 -0
  259. package/dist/campaign/proposers/skill-opt.d.ts.map +1 -0
  260. package/dist/campaign/proposers/trace-analyst.d.ts +48 -0
  261. package/dist/campaign/proposers/trace-analyst.d.ts.map +1 -0
  262. package/dist/campaign/proposers/trace-analyst.test.d.ts +2 -0
  263. package/dist/campaign/proposers/trace-analyst.test.d.ts.map +1 -0
  264. package/dist/campaign/provenance.d.ts +185 -0
  265. package/dist/campaign/provenance.d.ts.map +1 -0
  266. package/dist/campaign/run-campaign.d.ts +90 -0
  267. package/dist/campaign/run-campaign.d.ts.map +1 -0
  268. package/dist/campaign/score-utils.d.ts +26 -0
  269. package/dist/campaign/score-utils.d.ts.map +1 -0
  270. package/dist/campaign/skill-patch.d.ts +62 -0
  271. package/dist/campaign/skill-patch.d.ts.map +1 -0
  272. package/dist/campaign/storage.d.ts +38 -0
  273. package/dist/campaign/storage.d.ts.map +1 -0
  274. package/dist/{types-BU-7W85F.d.ts → campaign/types.d.ts} +98 -99
  275. package/dist/campaign/types.d.ts.map +1 -0
  276. package/dist/campaign/worktree/index.d.ts +53 -0
  277. package/dist/campaign/worktree/index.d.ts.map +1 -0
  278. package/dist/canary.d.ts +101 -0
  279. package/dist/canary.d.ts.map +1 -0
  280. package/dist/causal-attribution.d.ts +45 -0
  281. package/dist/causal-attribution.d.ts.map +1 -0
  282. package/dist/{chunk-2K6UUZ7P.js → chunk-2T4EZACH.js} +1 -1
  283. package/dist/chunk-2T4EZACH.js.map +1 -0
  284. package/dist/{chunk-CTBHKLEU.js → chunk-77T4STFI.js} +59 -86
  285. package/dist/chunk-77T4STFI.js.map +1 -0
  286. package/dist/{chunk-EGPMSBEZ.js → chunk-7QTQKIDD.js} +178 -177
  287. package/dist/chunk-7QTQKIDD.js.map +1 -0
  288. package/dist/{chunk-MIFZUPEK.js → chunk-AQ5WQAIV.js} +21 -6
  289. package/dist/chunk-AQ5WQAIV.js.map +1 -0
  290. package/dist/chunk-DJWX3GVS.js +81 -0
  291. package/dist/chunk-DJWX3GVS.js.map +1 -0
  292. package/dist/{chunk-S6OZEZQK.js → chunk-HMA63UEO.js} +37 -9
  293. package/dist/{chunk-S6OZEZQK.js.map → chunk-HMA63UEO.js.map} +1 -1
  294. package/dist/{chunk-TBDR6PAI.js → chunk-IZCEK2HR.js} +2 -2
  295. package/dist/{chunk-SD2YFWQQ.js → chunk-KKWJD5E6.js} +20 -20
  296. package/dist/chunk-KKWJD5E6.js.map +1 -0
  297. package/dist/{chunk-KWRRMR3J.js → chunk-LO6IOIJ2.js} +10 -10
  298. package/dist/chunk-LO6IOIJ2.js.map +1 -0
  299. package/dist/{chunk-E4GH6USR.js → chunk-NZEQVRH5.js} +2 -2
  300. package/dist/chunk-NZEQVRH5.js.map +1 -0
  301. package/dist/{chunk-MPQWFX6Y.js → chunk-PSWWQXHF.js} +13 -88
  302. package/dist/chunk-PSWWQXHF.js.map +1 -0
  303. package/dist/{chunk-Q5LIB7BC.js → chunk-S4SYLDFX.js} +2 -2
  304. package/dist/chunk-S4SYLDFX.js.map +1 -0
  305. package/dist/{chunk-KW53MSA5.js → chunk-X74V6ESX.js} +2 -2
  306. package/dist/{chunk-QMUEXQJS.js → chunk-YBIGNSCZ.js} +81 -4
  307. package/dist/chunk-YBIGNSCZ.js.map +1 -0
  308. package/dist/{chunk-2KNZHH3P.js → chunk-Z6L6YSU6.js} +2 -2
  309. package/dist/ci-gate.d.ts +44 -0
  310. package/dist/ci-gate.d.ts.map +1 -0
  311. package/dist/cli.d.ts +2 -0
  312. package/dist/cli.d.ts.map +1 -0
  313. package/dist/client.d.ts +77 -0
  314. package/dist/client.d.ts.map +1 -0
  315. package/dist/client.test.d.ts +2 -0
  316. package/dist/client.test.d.ts.map +1 -0
  317. package/dist/command-runner.d.ts +74 -0
  318. package/dist/command-runner.d.ts.map +1 -0
  319. package/dist/command-runner.test.d.ts +2 -0
  320. package/dist/command-runner.test.d.ts.map +1 -0
  321. package/dist/completion-verifier.d.ts +147 -0
  322. package/dist/completion-verifier.d.ts.map +1 -0
  323. package/dist/completion-verifier.test.d.ts +9 -0
  324. package/dist/completion-verifier.test.d.ts.map +1 -0
  325. package/dist/concurrency.d.ts +23 -0
  326. package/dist/concurrency.d.ts.map +1 -0
  327. package/dist/contamination-guard.d.ts +81 -0
  328. package/dist/contamination-guard.d.ts.map +1 -0
  329. package/dist/{analyze-runs-B6Ljo_dI.d.ts → contract/analyze-runs.d.ts} +9 -10
  330. package/dist/contract/analyze-runs.d.ts.map +1 -0
  331. package/dist/contract/define-agent-eval.d.ts +52 -0
  332. package/dist/contract/define-agent-eval.d.ts.map +1 -0
  333. package/dist/contract/diff.d.ts +114 -0
  334. package/dist/contract/diff.d.ts.map +1 -0
  335. package/dist/contract/index.d.ts +106 -640
  336. package/dist/contract/index.d.ts.map +1 -0
  337. package/dist/contract/index.js +127 -17
  338. package/dist/contract/index.js.map +1 -1
  339. package/dist/{insight-report-DWl3z9tl.d.ts → contract/insight-report.d.ts} +16 -19
  340. package/dist/contract/insight-report.d.ts.map +1 -0
  341. package/dist/contract/insight-types-fwd.d.ts +7 -0
  342. package/dist/contract/insight-types-fwd.d.ts.map +1 -0
  343. package/dist/contract/intake/agent-trace.d.ts +97 -0
  344. package/dist/contract/intake/agent-trace.d.ts.map +1 -0
  345. package/dist/{code-agent-session-BO8nCnv3.d.ts → contract/intake/code-agent-session.d.ts} +15 -17
  346. package/dist/contract/intake/code-agent-session.d.ts.map +1 -0
  347. package/dist/contract/intake/feedback-table.d.ts +87 -0
  348. package/dist/contract/intake/feedback-table.d.ts.map +1 -0
  349. package/dist/contract/intake/index.d.ts +22 -0
  350. package/dist/contract/intake/index.d.ts.map +1 -0
  351. package/dist/contract/intake/otel-spans.d.ts +33 -0
  352. package/dist/contract/intake/otel-spans.d.ts.map +1 -0
  353. package/dist/contract/self-improve.d.ts +284 -0
  354. package/dist/contract/self-improve.d.ts.map +1 -0
  355. package/dist/{control-runtime-Acf9CGhw.d.ts → control-runtime.d.ts} +23 -26
  356. package/dist/control-runtime.d.ts.map +1 -0
  357. package/dist/control-runtime.test.d.ts +2 -0
  358. package/dist/control-runtime.test.d.ts.map +1 -0
  359. package/dist/control.d.ts +11 -9
  360. package/dist/control.d.ts.map +1 -0
  361. package/dist/control.js +2 -2
  362. package/dist/convergence.d.ts +29 -0
  363. package/dist/convergence.d.ts.map +1 -0
  364. package/dist/{cost-ledger-DuSqlw5B.d.ts → cost-ledger.d.ts} +10 -11
  365. package/dist/cost-ledger.d.ts.map +1 -0
  366. package/dist/cost-ledger.test.d.ts +2 -0
  367. package/dist/cost-ledger.test.d.ts.map +1 -0
  368. package/dist/cost-report.d.ts +43 -0
  369. package/dist/cost-report.d.ts.map +1 -0
  370. package/dist/cost-report.test.d.ts +2 -0
  371. package/dist/cost-report.test.d.ts.map +1 -0
  372. package/dist/cost-tracker.d.ts +76 -0
  373. package/dist/cost-tracker.d.ts.map +1 -0
  374. package/dist/{counterfactual-DlOz8PBx.d.ts → counterfactual.d.ts} +12 -13
  375. package/dist/counterfactual.d.ts.map +1 -0
  376. package/dist/cross-trace-diff.d.ts +56 -0
  377. package/dist/cross-trace-diff.d.ts.map +1 -0
  378. package/dist/{dataset-BbGkaN2I.d.ts → dataset.d.ts} +11 -14
  379. package/dist/dataset.d.ts.map +1 -0
  380. package/dist/deploy-gate-layer.d.ts +125 -0
  381. package/dist/deploy-gate-layer.d.ts.map +1 -0
  382. package/dist/deploy-gate-layer.test.d.ts +2 -0
  383. package/dist/deploy-gate-layer.test.d.ts.map +1 -0
  384. package/dist/description-length-gate.d.ts +119 -0
  385. package/dist/description-length-gate.d.ts.map +1 -0
  386. package/dist/detectors/edge.test.d.ts +2 -0
  387. package/dist/detectors/edge.test.d.ts.map +1 -0
  388. package/dist/detectors/index.d.ts +81 -0
  389. package/dist/detectors/index.d.ts.map +1 -0
  390. package/dist/detectors/index.test.d.ts +2 -0
  391. package/dist/detectors/index.test.d.ts.map +1 -0
  392. package/dist/diagnose/causal-sweep.d.ts +100 -0
  393. package/dist/diagnose/causal-sweep.d.ts.map +1 -0
  394. package/dist/diagnose/index.d.ts +36 -0
  395. package/dist/diagnose/index.d.ts.map +1 -0
  396. package/dist/diagnose/remediation.d.ts +68 -0
  397. package/dist/diagnose/remediation.d.ts.map +1 -0
  398. package/dist/diagnose/repair.d.ts +77 -0
  399. package/dist/diagnose/repair.d.ts.map +1 -0
  400. package/dist/diagnose.d.ts +1 -251
  401. package/dist/diagnose.js +1 -1
  402. package/dist/discover-personas.d.ts +35 -0
  403. package/dist/discover-personas.d.ts.map +1 -0
  404. package/dist/driver.d.ts +95 -0
  405. package/dist/driver.d.ts.map +1 -0
  406. package/dist/driver.test.d.ts +8 -0
  407. package/dist/driver.test.d.ts.map +1 -0
  408. package/dist/dual-agent-bench.d.ts +81 -0
  409. package/dist/dual-agent-bench.d.ts.map +1 -0
  410. package/dist/error-count-extractor.d.ts +47 -0
  411. package/dist/error-count-extractor.d.ts.map +1 -0
  412. package/dist/error-count-extractor.test.d.ts +2 -0
  413. package/dist/error-count-extractor.test.d.ts.map +1 -0
  414. package/dist/{errors-CzMUYo7b.d.ts → errors.d.ts} +10 -11
  415. package/dist/errors.d.ts.map +1 -0
  416. package/dist/{researcher-B0C2_fVO.d.ts → eval-campaign.d.ts} +34 -156
  417. package/dist/eval-campaign.d.ts.map +1 -0
  418. package/dist/eval-campaign.test.d.ts +2 -0
  419. package/dist/eval-campaign.test.d.ts.map +1 -0
  420. package/dist/eval-tools.d.ts +55 -0
  421. package/dist/eval-tools.d.ts.map +1 -0
  422. package/dist/eval-trace-store.d.ts +107 -0
  423. package/dist/eval-trace-store.d.ts.map +1 -0
  424. package/dist/eval-trace-store.test.d.ts +2 -0
  425. package/dist/eval-trace-store.test.d.ts.map +1 -0
  426. package/dist/executor.d.ts +38 -0
  427. package/dist/executor.d.ts.map +1 -0
  428. package/dist/executor.test.d.ts +10 -0
  429. package/dist/executor.test.d.ts.map +1 -0
  430. package/dist/experiment-tracker.d.ts +178 -0
  431. package/dist/experiment-tracker.d.ts.map +1 -0
  432. package/dist/experiment-tracker.test.d.ts +2 -0
  433. package/dist/experiment-tracker.test.d.ts.map +1 -0
  434. package/dist/failure-taxonomy.d.ts +38 -0
  435. package/dist/failure-taxonomy.d.ts.map +1 -0
  436. package/dist/{feedback-trajectory-BxY0cKfs.d.ts → feedback-trajectory.d.ts} +36 -38
  437. package/dist/feedback-trajectory.d.ts.map +1 -0
  438. package/dist/feedback-trajectory.test.d.ts +2 -0
  439. package/dist/feedback-trajectory.test.d.ts.map +1 -0
  440. package/dist/flow-layer.d.ts +90 -0
  441. package/dist/flow-layer.d.ts.map +1 -0
  442. package/dist/flow-layer.test.d.ts +2 -0
  443. package/dist/flow-layer.test.d.ts.map +1 -0
  444. package/dist/fuzz/capsule.d.ts +46 -0
  445. package/dist/fuzz/capsule.d.ts.map +1 -0
  446. package/dist/fuzz/cube.d.ts +36 -0
  447. package/dist/fuzz/cube.d.ts.map +1 -0
  448. package/dist/fuzz/explorer-cost.test.d.ts +2 -0
  449. package/dist/fuzz/explorer-cost.test.d.ts.map +1 -0
  450. package/dist/fuzz/explorer.d.ts +64 -0
  451. package/dist/fuzz/explorer.d.ts.map +1 -0
  452. package/dist/fuzz/fuzz-agent.d.ts +16 -0
  453. package/dist/fuzz/fuzz-agent.d.ts.map +1 -0
  454. package/dist/fuzz/fuzz-agent.test.d.ts +2 -0
  455. package/dist/fuzz/fuzz-agent.test.d.ts.map +1 -0
  456. package/dist/fuzz/gates.d.ts +33 -0
  457. package/dist/fuzz/gates.d.ts.map +1 -0
  458. package/dist/fuzz/index.d.ts +26 -0
  459. package/dist/fuzz/index.d.ts.map +1 -0
  460. package/dist/fuzz/policies.d.ts +28 -0
  461. package/dist/fuzz/policies.d.ts.map +1 -0
  462. package/dist/fuzz/tools.d.ts +20 -0
  463. package/dist/fuzz/tools.d.ts.map +1 -0
  464. package/dist/fuzz/types.d.ts +307 -0
  465. package/dist/fuzz/types.d.ts.map +1 -0
  466. package/dist/fuzz.d.ts +1 -547
  467. package/dist/golden-matcher.d.ts +71 -0
  468. package/dist/golden-matcher.d.ts.map +1 -0
  469. package/dist/governance/eu-ai-act.d.ts +37 -0
  470. package/dist/governance/eu-ai-act.d.ts.map +1 -0
  471. package/dist/governance/index.d.ts +5 -135
  472. package/dist/governance/index.d.ts.map +1 -0
  473. package/dist/governance/nist-ai-rmf.d.ts +15 -0
  474. package/dist/governance/nist-ai-rmf.d.ts.map +1 -0
  475. package/dist/governance/soc2.d.ts +12 -0
  476. package/dist/governance/soc2.d.ts.map +1 -0
  477. package/dist/governance/types.d.ts +66 -0
  478. package/dist/governance/types.d.ts.map +1 -0
  479. package/dist/harness-optimizer.d.ts +82 -0
  480. package/dist/harness-optimizer.d.ts.map +1 -0
  481. package/dist/held-out-gate.d.ts +135 -0
  482. package/dist/held-out-gate.d.ts.map +1 -0
  483. package/dist/hosted/client.d.ts +73 -0
  484. package/dist/hosted/client.d.ts.map +1 -0
  485. package/dist/hosted/from-env.test.d.ts +8 -0
  486. package/dist/hosted/from-env.test.d.ts.map +1 -0
  487. package/dist/hosted/index.d.ts +10 -238
  488. package/dist/hosted/index.d.ts.map +1 -0
  489. package/dist/hosted/types.d.ts +159 -0
  490. package/dist/hosted/types.d.ts.map +1 -0
  491. package/dist/index.d.ts +277 -5665
  492. package/dist/index.d.ts.map +1 -0
  493. package/dist/index.js +66 -31
  494. package/dist/index.js.map +1 -1
  495. package/dist/integrity/backend-integrity.d.ts +71 -0
  496. package/dist/integrity/backend-integrity.d.ts.map +1 -0
  497. package/dist/integrity/preflight.d.ts +72 -0
  498. package/dist/integrity/preflight.d.ts.map +1 -0
  499. package/dist/integrity/preflight.test.d.ts +2 -0
  500. package/dist/integrity/preflight.test.d.ts.map +1 -0
  501. package/dist/integrity/single-backend.d.ts +67 -0
  502. package/dist/integrity/single-backend.d.ts.map +1 -0
  503. package/dist/intent-match-judge.d.ts +69 -0
  504. package/dist/intent-match-judge.d.ts.map +1 -0
  505. package/dist/intent-match-judge.test.d.ts +2 -0
  506. package/dist/intent-match-judge.test.d.ts.map +1 -0
  507. package/dist/{judge-calibration-0p2QcWNE.d.ts → judge-calibration.d.ts} +16 -17
  508. package/dist/judge-calibration.d.ts.map +1 -0
  509. package/dist/judge-ensemble.d.ts +66 -0
  510. package/dist/judge-ensemble.d.ts.map +1 -0
  511. package/dist/judge-ensemble.test.d.ts +8 -0
  512. package/dist/judge-ensemble.test.d.ts.map +1 -0
  513. package/dist/judge-families.d.ts +38 -0
  514. package/dist/judge-families.d.ts.map +1 -0
  515. package/dist/judge-panel.d.ts +65 -0
  516. package/dist/judge-panel.d.ts.map +1 -0
  517. package/dist/judge-retry.d.ts +70 -0
  518. package/dist/judge-retry.d.ts.map +1 -0
  519. package/dist/judge-runner.d.ts +36 -0
  520. package/dist/judge-runner.d.ts.map +1 -0
  521. package/dist/judge-runner.test.d.ts +2 -0
  522. package/dist/judge-runner.test.d.ts.map +1 -0
  523. package/dist/judges.d.ts +74 -0
  524. package/dist/judges.d.ts.map +1 -0
  525. package/dist/keyword-coverage-judge.d.ts +89 -0
  526. package/dist/keyword-coverage-judge.d.ts.map +1 -0
  527. package/dist/keyword-coverage-judge.test.d.ts +2 -0
  528. package/dist/keyword-coverage-judge.test.d.ts.map +1 -0
  529. package/dist/knowledge/index.d.ts +3 -103
  530. package/dist/knowledge/index.d.ts.map +1 -0
  531. package/dist/knowledge/readiness.d.ts +26 -0
  532. package/dist/knowledge/readiness.d.ts.map +1 -0
  533. package/dist/knowledge/types.d.ts +75 -0
  534. package/dist/knowledge/types.d.ts.map +1 -0
  535. package/dist/live-proof.d.ts +62 -0
  536. package/dist/live-proof.d.ts.map +1 -0
  537. package/dist/{llm-client-Bj7g0rqu.d.ts → llm-client.d.ts} +21 -23
  538. package/dist/llm-client.d.ts.map +1 -0
  539. package/dist/llm-client.test.d.ts +2 -0
  540. package/dist/llm-client.test.d.ts.map +1 -0
  541. package/dist/locked-jsonl-appender.d.ts +19 -0
  542. package/dist/locked-jsonl-appender.d.ts.map +1 -0
  543. package/dist/matrix/aggregation.d.ts +16 -0
  544. package/dist/matrix/aggregation.d.ts.map +1 -0
  545. package/dist/matrix/index.d.ts +12 -30
  546. package/dist/matrix/index.d.ts.map +1 -0
  547. package/dist/matrix/runner.d.ts +15 -0
  548. package/dist/matrix/runner.d.ts.map +1 -0
  549. package/dist/{types-mn5Aqk7x.d.ts → matrix/types.d.ts} +11 -15
  550. package/dist/matrix/types.d.ts.map +1 -0
  551. package/dist/meta-eval/calibration.d.ts +47 -0
  552. package/dist/meta-eval/calibration.d.ts.map +1 -0
  553. package/dist/meta-eval/correlation-study.d.ts +53 -0
  554. package/dist/meta-eval/correlation-study.d.ts.map +1 -0
  555. package/dist/meta-eval/index.d.ts +6 -181
  556. package/dist/meta-eval/index.d.ts.map +1 -0
  557. package/dist/{outcome-store-rnXLEqSn.d.ts → meta-eval/outcome-store.d.ts} +7 -8
  558. package/dist/meta-eval/outcome-store.d.ts.map +1 -0
  559. package/dist/{rubric-predictive-validity-Cy_W-hWZ.d.ts → meta-eval/rubric-predictive-validity.d.ts} +8 -11
  560. package/dist/meta-eval/rubric-predictive-validity.d.ts.map +1 -0
  561. package/dist/meta-eval/sentinel.d.ts +169 -0
  562. package/dist/meta-eval/sentinel.d.ts.map +1 -0
  563. package/dist/metrics.d.ts +63 -0
  564. package/dist/metrics.d.ts.map +1 -0
  565. package/dist/model-seats.d.ts +71 -0
  566. package/dist/model-seats.d.ts.map +1 -0
  567. package/dist/model-seats.test.d.ts +2 -0
  568. package/dist/model-seats.test.d.ts.map +1 -0
  569. package/dist/muffled-gate-scanner.d.ts +102 -0
  570. package/dist/muffled-gate-scanner.d.ts.map +1 -0
  571. package/dist/{multi-layer-verifier-DUZXrPDA.d.ts → multi-layer-verifier.d.ts} +12 -15
  572. package/dist/multi-layer-verifier.d.ts.map +1 -0
  573. package/dist/multi-layer-verifier.test.d.ts +2 -0
  574. package/dist/multi-layer-verifier.test.d.ts.map +1 -0
  575. package/dist/multi-toolchain-layer.d.ts +80 -0
  576. package/dist/multi-toolchain-layer.d.ts.map +1 -0
  577. package/dist/multi-toolchain-layer.test.d.ts +2 -0
  578. package/dist/multi-toolchain-layer.test.d.ts.map +1 -0
  579. package/dist/multishot/default-tools.d.ts +34 -0
  580. package/dist/multishot/default-tools.d.ts.map +1 -0
  581. package/dist/multishot/index.d.ts +7 -290
  582. package/dist/multishot/index.d.ts.map +1 -0
  583. package/dist/multishot/index.js.map +1 -1
  584. package/dist/multishot/judges.d.ts +32 -0
  585. package/dist/multishot/judges.d.ts.map +1 -0
  586. package/dist/multishot/matrix.d.ts +107 -0
  587. package/dist/multishot/matrix.d.ts.map +1 -0
  588. package/dist/multishot/multishot.d.ts +23 -0
  589. package/dist/multishot/multishot.d.ts.map +1 -0
  590. package/dist/multishot/router.d.ts +37 -0
  591. package/dist/multishot/router.d.ts.map +1 -0
  592. package/dist/multishot/types.d.ts +60 -0
  593. package/dist/multishot/types.d.ts.map +1 -0
  594. package/dist/observability.d.ts +71 -0
  595. package/dist/observability.d.ts.map +1 -0
  596. package/dist/openapi.json +1 -1
  597. package/dist/oracle.d.ts +55 -0
  598. package/dist/oracle.d.ts.map +1 -0
  599. package/dist/orthogonality.d.ts +35 -0
  600. package/dist/orthogonality.d.ts.map +1 -0
  601. package/dist/otel-pipeline.d.ts +31 -0
  602. package/dist/otel-pipeline.d.ts.map +1 -0
  603. package/dist/paraphrase.d.ts +107 -0
  604. package/dist/paraphrase.d.ts.map +1 -0
  605. package/dist/{pareto-E-pembql.d.ts → pareto.d.ts} +9 -10
  606. package/dist/pareto.d.ts.map +1 -0
  607. package/dist/partition-held-out.d.ts +70 -0
  608. package/dist/partition-held-out.d.ts.map +1 -0
  609. package/dist/partition-held-out.test.d.ts +2 -0
  610. package/dist/partition-held-out.test.d.ts.map +1 -0
  611. package/dist/perf/index.d.ts +13 -119
  612. package/dist/perf/index.d.ts.map +1 -0
  613. package/dist/perf/integrity.d.ts +30 -0
  614. package/dist/perf/integrity.d.ts.map +1 -0
  615. package/dist/perf/journey.d.ts +45 -0
  616. package/dist/perf/journey.d.ts.map +1 -0
  617. package/dist/perf/ratchet.d.ts +47 -0
  618. package/dist/perf/ratchet.d.ts.map +1 -0
  619. package/dist/pipelines/budget-breach.d.ts +31 -0
  620. package/dist/pipelines/budget-breach.d.ts.map +1 -0
  621. package/dist/pipelines/budget-breach.test.d.ts +2 -0
  622. package/dist/pipelines/budget-breach.test.d.ts.map +1 -0
  623. package/dist/pipelines/failure-cluster.d.ts +38 -0
  624. package/dist/pipelines/failure-cluster.d.ts.map +1 -0
  625. package/dist/pipelines/failure-cluster.test.d.ts +2 -0
  626. package/dist/pipelines/failure-cluster.test.d.ts.map +1 -0
  627. package/dist/pipelines/first-divergence.d.ts +26 -0
  628. package/dist/pipelines/first-divergence.d.ts.map +1 -0
  629. package/dist/pipelines/first-divergence.test.d.ts +2 -0
  630. package/dist/pipelines/first-divergence.test.d.ts.map +1 -0
  631. package/dist/pipelines/index.d.ts +8 -173
  632. package/dist/pipelines/index.d.ts.map +1 -0
  633. package/dist/pipelines/judge-agreement.d.ts +26 -0
  634. package/dist/pipelines/judge-agreement.d.ts.map +1 -0
  635. package/dist/pipelines/judge-agreement.test.d.ts +2 -0
  636. package/dist/pipelines/judge-agreement.test.d.ts.map +1 -0
  637. package/dist/pipelines/regression.d.ts +23 -0
  638. package/dist/pipelines/regression.d.ts.map +1 -0
  639. package/dist/pipelines/regression.test.d.ts +2 -0
  640. package/dist/pipelines/regression.test.d.ts.map +1 -0
  641. package/dist/pipelines/stuck-loop.d.ts +32 -0
  642. package/dist/pipelines/stuck-loop.d.ts.map +1 -0
  643. package/dist/pipelines/stuck-loop.test.d.ts +2 -0
  644. package/dist/pipelines/stuck-loop.test.d.ts.map +1 -0
  645. package/dist/pipelines/tool-waste.d.ts +34 -0
  646. package/dist/pipelines/tool-waste.d.ts.map +1 -0
  647. package/dist/pipelines/tool-waste.test.d.ts +2 -0
  648. package/dist/pipelines/tool-waste.test.d.ts.map +1 -0
  649. package/dist/playbook.d.ts +16 -0
  650. package/dist/playbook.d.ts.map +1 -0
  651. package/dist/pr-review-benchmark.d.ts +88 -0
  652. package/dist/pr-review-benchmark.d.ts.map +1 -0
  653. package/dist/pr-review-benchmark.test.d.ts +2 -0
  654. package/dist/pr-review-benchmark.test.d.ts.map +1 -0
  655. package/dist/pre-registration.d.ts +125 -0
  656. package/dist/pre-registration.d.ts.map +1 -0
  657. package/dist/prm/builtin-rubrics.d.ts +33 -0
  658. package/dist/prm/builtin-rubrics.d.ts.map +1 -0
  659. package/dist/prm/index.d.ts +5 -104
  660. package/dist/prm/index.d.ts.map +1 -0
  661. package/dist/prm/inference.d.ts +29 -0
  662. package/dist/prm/inference.d.ts.map +1 -0
  663. package/dist/prm/inference.test.d.ts +2 -0
  664. package/dist/prm/inference.test.d.ts.map +1 -0
  665. package/dist/{rubric-Cc6UHvUb.d.ts → prm/rubric.d.ts} +10 -13
  666. package/dist/prm/rubric.d.ts.map +1 -0
  667. package/dist/prm/training-export.d.ts +38 -0
  668. package/dist/prm/training-export.d.ts.map +1 -0
  669. package/dist/produced-state.d.ts +63 -0
  670. package/dist/produced-state.d.ts.map +1 -0
  671. package/dist/produced-state.test.d.ts +8 -0
  672. package/dist/produced-state.test.d.ts.map +1 -0
  673. package/dist/profile/baselines.d.ts +37 -0
  674. package/dist/profile/baselines.d.ts.map +1 -0
  675. package/dist/profile/index.d.ts +105 -0
  676. package/dist/profile/index.d.ts.map +1 -0
  677. package/dist/promotion-gate.d.ts +93 -0
  678. package/dist/promotion-gate.d.ts.map +1 -0
  679. package/dist/prompt-registry.d.ts +41 -0
  680. package/dist/prompt-registry.d.ts.map +1 -0
  681. package/dist/propose-review-control.d.ts +49 -0
  682. package/dist/propose-review-control.d.ts.map +1 -0
  683. package/dist/propose-review-control.test.d.ts +2 -0
  684. package/dist/propose-review-control.test.d.ts.map +1 -0
  685. package/dist/propose-review.d.ts +155 -0
  686. package/dist/propose-review.d.ts.map +1 -0
  687. package/dist/{red-team-BWdoyleI.d.ts → red-team.d.ts} +14 -16
  688. package/dist/red-team.d.ts.map +1 -0
  689. package/dist/reference-replay-steering.d.ts +11 -0
  690. package/dist/reference-replay-steering.d.ts.map +1 -0
  691. package/dist/reference-replay.d.ts +176 -0
  692. package/dist/reference-replay.d.ts.map +1 -0
  693. package/dist/reflective-mutation.d.ts +79 -0
  694. package/dist/reflective-mutation.d.ts.map +1 -0
  695. package/dist/registry.d.ts +31 -0
  696. package/dist/registry.d.ts.map +1 -0
  697. package/dist/release-confidence.d.ts +128 -0
  698. package/dist/release-confidence.d.ts.map +1 -0
  699. package/dist/release-report.d.ts +11 -0
  700. package/dist/release-report.d.ts.map +1 -0
  701. package/dist/replay.d.ts +120 -0
  702. package/dist/replay.d.ts.map +1 -0
  703. package/dist/reporter.d.ts +14 -0
  704. package/dist/reporter.d.ts.map +1 -0
  705. package/dist/reporting.d.ts +15 -15
  706. package/dist/reporting.d.ts.map +1 -0
  707. package/dist/researcher.d.ts +140 -0
  708. package/dist/researcher.d.ts.map +1 -0
  709. package/dist/reviewer.d.ts +118 -0
  710. package/dist/reviewer.d.ts.map +1 -0
  711. package/dist/reviewer.test.d.ts +2 -0
  712. package/dist/reviewer.test.d.ts.map +1 -0
  713. package/dist/reward-model-export.d.ts +60 -0
  714. package/dist/reward-model-export.d.ts.map +1 -0
  715. package/dist/rl/active-curriculum.d.ts +110 -0
  716. package/dist/rl/active-curriculum.d.ts.map +1 -0
  717. package/dist/rl/adaptation-eval.d.ts +109 -0
  718. package/dist/rl/adaptation-eval.d.ts.map +1 -0
  719. package/dist/{adversarial-DIVcDoI_.d.ts → rl/adversarial.d.ts} +6 -7
  720. package/dist/rl/adversarial.d.ts.map +1 -0
  721. package/dist/rl/compute-curves.d.ts +127 -0
  722. package/dist/rl/compute-curves.d.ts.map +1 -0
  723. package/dist/rl/contamination.d.ts +117 -0
  724. package/dist/rl/contamination.d.ts.map +1 -0
  725. package/dist/rl/corpus.d.ts +55 -0
  726. package/dist/rl/corpus.d.ts.map +1 -0
  727. package/dist/rl/corpus.test.d.ts +2 -0
  728. package/dist/rl/corpus.test.d.ts.map +1 -0
  729. package/dist/rl/dataset.d.ts +102 -0
  730. package/dist/rl/dataset.d.ts.map +1 -0
  731. package/dist/rl/dataset.test.d.ts +2 -0
  732. package/dist/rl/dataset.test.d.ts.map +1 -0
  733. package/dist/rl/exporters.d.ts +141 -0
  734. package/dist/rl/exporters.d.ts.map +1 -0
  735. package/dist/rl/index.d.ts +49 -0
  736. package/dist/rl/index.d.ts.map +1 -0
  737. package/dist/{off-policy-DiwuKKg7.d.ts → rl/off-policy.d.ts} +8 -9
  738. package/dist/rl/off-policy.d.ts.map +1 -0
  739. package/dist/rl/predictive-validity-researcher.d.ts +69 -0
  740. package/dist/rl/predictive-validity-researcher.d.ts.map +1 -0
  741. package/dist/rl/preferences.d.ts +141 -0
  742. package/dist/rl/preferences.d.ts.map +1 -0
  743. package/dist/rl/process-reward.d.ts +122 -0
  744. package/dist/rl/process-reward.d.ts.map +1 -0
  745. package/dist/rl/reward-hacking.d.ts +104 -0
  746. package/dist/rl/reward-hacking.d.ts.map +1 -0
  747. package/dist/rl/rl-campaign.d.ts +85 -0
  748. package/dist/rl/rl-campaign.d.ts.map +1 -0
  749. package/dist/rl/run-record-adapters.d.ts +56 -0
  750. package/dist/rl/run-record-adapters.d.ts.map +1 -0
  751. package/dist/rl/sim-fidelity.d.ts +166 -0
  752. package/dist/rl/sim-fidelity.d.ts.map +1 -0
  753. package/dist/rl/sim-fidelity.test.d.ts +2 -0
  754. package/dist/rl/sim-fidelity.test.d.ts.map +1 -0
  755. package/dist/rl/tournament.d.ts +115 -0
  756. package/dist/rl/tournament.d.ts.map +1 -0
  757. package/dist/rl/verifiable-reward.d.ts +124 -0
  758. package/dist/rl/verifiable-reward.d.ts.map +1 -0
  759. package/dist/rl.d.ts +1 -1192
  760. package/dist/rl.js +612 -612
  761. package/dist/rl.js.map +1 -1
  762. package/dist/{run-campaign-7WNXMDSN.js → run-campaign-WXY7KI67.js} +2 -2
  763. package/dist/run-critic.d.ts +23 -0
  764. package/dist/run-critic.d.ts.map +1 -0
  765. package/dist/run-evidence.d.ts +32 -0
  766. package/dist/run-evidence.d.ts.map +1 -0
  767. package/dist/{run-record-e7vj1uZQ.d.ts → run-record.d.ts} +16 -122
  768. package/dist/run-record.d.ts.map +1 -0
  769. package/dist/run-record.test.d.ts +2 -0
  770. package/dist/run-record.test.d.ts.map +1 -0
  771. package/dist/run-score.d.ts +31 -0
  772. package/dist/run-score.d.ts.map +1 -0
  773. package/dist/runtime-trajectory.d.ts +47 -0
  774. package/dist/runtime-trajectory.d.ts.map +1 -0
  775. package/dist/{test-graded-scenario-DeODGLra.d.ts → sandbox-harness.d.ts} +15 -60
  776. package/dist/sandbox-harness.d.ts.map +1 -0
  777. package/dist/sandbox-harness.test.d.ts +2 -0
  778. package/dist/sandbox-harness.test.d.ts.map +1 -0
  779. package/dist/sandbox-pool.d.ts +74 -0
  780. package/dist/sandbox-pool.d.ts.map +1 -0
  781. package/dist/sandbox-pool.test.d.ts +2 -0
  782. package/dist/sandbox-pool.test.d.ts.map +1 -0
  783. package/dist/scorecard.d.ts +133 -0
  784. package/dist/scorecard.d.ts.map +1 -0
  785. package/dist/scorecard.test.d.ts +2 -0
  786. package/dist/scorecard.test.d.ts.map +1 -0
  787. package/dist/self-play.d.ts +69 -0
  788. package/dist/self-play.d.ts.map +1 -0
  789. package/dist/semantic-concept-judge.d.ts +135 -0
  790. package/dist/semantic-concept-judge.d.ts.map +1 -0
  791. package/dist/semantic-concept-judge.test.d.ts +2 -0
  792. package/dist/semantic-concept-judge.test.d.ts.map +1 -0
  793. package/dist/{sequential-5iSVfzl2.d.ts → sequential.d.ts} +9 -10
  794. package/dist/sequential.d.ts.map +1 -0
  795. package/dist/{series-convergence-D5OWMBg6.d.ts → series-convergence.d.ts} +4 -5
  796. package/dist/series-convergence.d.ts.map +1 -0
  797. package/dist/slo.d.ts +48 -0
  798. package/dist/slo.d.ts.map +1 -0
  799. package/dist/state-continuity.d.ts +47 -0
  800. package/dist/state-continuity.d.ts.map +1 -0
  801. package/dist/{statistics-CCJpTGOS.d.ts → statistics.d.ts} +46 -48
  802. package/dist/statistics.d.ts.map +1 -0
  803. package/dist/statistics.test.d.ts +2 -0
  804. package/dist/statistics.test.d.ts.map +1 -0
  805. package/dist/steering-optimizer.d.ts +58 -0
  806. package/dist/steering-optimizer.d.ts.map +1 -0
  807. package/dist/steering.d.ts +24 -0
  808. package/dist/steering.d.ts.map +1 -0
  809. package/dist/storyboard/code-edit.d.ts +64 -0
  810. package/dist/storyboard/code-edit.d.ts.map +1 -0
  811. package/dist/storyboard/code-edit.test.d.ts +2 -0
  812. package/dist/storyboard/code-edit.test.d.ts.map +1 -0
  813. package/dist/storyboard/index.d.ts +16 -81
  814. package/dist/storyboard/index.d.ts.map +1 -0
  815. package/dist/storyboard/index.test.d.ts +2 -0
  816. package/dist/storyboard/index.test.d.ts.map +1 -0
  817. package/dist/{summary-report-BDOFevaT.d.ts → summary-report.d.ts} +23 -160
  818. package/dist/summary-report.d.ts.map +1 -0
  819. package/dist/telemetry/client.d.ts +35 -0
  820. package/dist/telemetry/client.d.ts.map +1 -0
  821. package/dist/telemetry/index.d.ts +17 -35
  822. package/dist/telemetry/index.d.ts.map +1 -0
  823. package/dist/telemetry/schema.d.ts +61 -0
  824. package/dist/telemetry/schema.d.ts.map +1 -0
  825. package/dist/telemetry/sink-fetch.d.ts +39 -0
  826. package/dist/telemetry/sink-fetch.d.ts.map +1 -0
  827. package/dist/telemetry/{file.d.ts → sink-file.d.ts} +5 -7
  828. package/dist/telemetry/sink-file.d.ts.map +1 -0
  829. package/dist/test-graded-scenario.d.ts +42 -0
  830. package/dist/test-graded-scenario.d.ts.map +1 -0
  831. package/dist/testing.d.ts +5 -0
  832. package/dist/testing.d.ts.map +1 -0
  833. package/dist/testing.js +8 -0
  834. package/dist/testing.js.map +1 -0
  835. package/dist/tool-use-metrics.d.ts +35 -0
  836. package/dist/tool-use-metrics.d.ts.map +1 -0
  837. package/dist/trace/capture-fetch.d.ts +48 -0
  838. package/dist/trace/capture-fetch.d.ts.map +1 -0
  839. package/dist/trace/capture-fetch.test.d.ts +2 -0
  840. package/dist/trace/capture-fetch.test.d.ts.map +1 -0
  841. package/dist/{emitter-C2rqGH_l.d.ts → trace/emitter.d.ts} +9 -12
  842. package/dist/trace/emitter.d.ts.map +1 -0
  843. package/dist/trace/extract-usage.d.ts +46 -0
  844. package/dist/trace/extract-usage.d.ts.map +1 -0
  845. package/dist/trace/extract-usage.test.d.ts +2 -0
  846. package/dist/trace/extract-usage.test.d.ts.map +1 -0
  847. package/dist/trace/index.d.ts +15 -0
  848. package/dist/trace/index.d.ts.map +1 -0
  849. package/dist/{integrity-D2t12mMw.d.ts → trace/integrity.d.ts} +11 -14
  850. package/dist/trace/integrity.d.ts.map +1 -0
  851. package/dist/trace/otel-bridge.d.ts +29 -0
  852. package/dist/trace/otel-bridge.d.ts.map +1 -0
  853. package/dist/trace/otel-export.d.ts +52 -0
  854. package/dist/trace/otel-export.d.ts.map +1 -0
  855. package/dist/trace/otel.d.ts +57 -0
  856. package/dist/trace/otel.d.ts.map +1 -0
  857. package/dist/trace/otlp-attributes.d.ts +17 -0
  858. package/dist/trace/otlp-attributes.d.ts.map +1 -0
  859. package/dist/trace/query.d.ts +29 -0
  860. package/dist/trace/query.d.ts.map +1 -0
  861. package/dist/trace/query.test.d.ts +2 -0
  862. package/dist/trace/query.test.d.ts.map +1 -0
  863. package/dist/{raw-provider-sink-C46HDghv.d.ts → trace/raw-provider-sink.d.ts} +13 -14
  864. package/dist/trace/raw-provider-sink.d.ts.map +1 -0
  865. package/dist/{redact-B40YG2M_.d.ts → trace/redact.d.ts} +7 -8
  866. package/dist/trace/redact.d.ts.map +1 -0
  867. package/dist/{schema-m0gsnbt3.d.ts → trace/schema.d.ts} +29 -30
  868. package/dist/trace/schema.d.ts.map +1 -0
  869. package/dist/trace/store-to-otlp.d.ts +72 -0
  870. package/dist/trace/store-to-otlp.d.ts.map +1 -0
  871. package/dist/trace/store-to-otlp.test.d.ts +2 -0
  872. package/dist/trace/store-to-otlp.test.d.ts.map +1 -0
  873. package/dist/{store-BcFXE6LG.d.ts → trace/store.d.ts} +21 -12
  874. package/dist/trace/store.d.ts.map +1 -0
  875. package/dist/trace/store.test.d.ts +2 -0
  876. package/dist/trace/store.test.d.ts.map +1 -0
  877. package/dist/{analyst-C8HHvfJp.d.ts → trace-analyst/analyst.d.ts} +12 -14
  878. package/dist/trace-analyst/analyst.d.ts.map +1 -0
  879. package/dist/trace-analyst/analyst.test.d.ts +2 -0
  880. package/dist/trace-analyst/analyst.test.d.ts.map +1 -0
  881. package/dist/trace-analyst/behavioral-metrics.d.ts +40 -0
  882. package/dist/trace-analyst/behavioral-metrics.d.ts.map +1 -0
  883. package/dist/trace-analyst/behavioral-metrics.test.d.ts +2 -0
  884. package/dist/trace-analyst/behavioral-metrics.test.d.ts.map +1 -0
  885. package/dist/trace-analyst/hook.d.ts +55 -0
  886. package/dist/trace-analyst/hook.d.ts.map +1 -0
  887. package/dist/trace-analyst/index.d.ts +18 -0
  888. package/dist/trace-analyst/index.d.ts.map +1 -0
  889. package/dist/trace-analyst/insights.d.ts +71 -0
  890. package/dist/trace-analyst/insights.d.ts.map +1 -0
  891. package/dist/trace-analyst/insights.test.d.ts +2 -0
  892. package/dist/trace-analyst/insights.test.d.ts.map +1 -0
  893. package/dist/trace-analyst/otlp-flatten.d.ts +42 -0
  894. package/dist/trace-analyst/otlp-flatten.d.ts.map +1 -0
  895. package/dist/trace-analyst/otlp-span.d.ts +85 -0
  896. package/dist/trace-analyst/otlp-span.d.ts.map +1 -0
  897. package/dist/trace-analyst/otlp-span.test.d.ts +2 -0
  898. package/dist/trace-analyst/otlp-span.test.d.ts.map +1 -0
  899. package/dist/trace-analyst/otlp-to-run-records.d.ts +115 -0
  900. package/dist/trace-analyst/otlp-to-run-records.d.ts.map +1 -0
  901. package/dist/trace-analyst/otlp-to-run-records.test.d.ts +2 -0
  902. package/dist/trace-analyst/otlp-to-run-records.test.d.ts.map +1 -0
  903. package/dist/trace-analyst/otlp-to-run-records.timestamps.test.d.ts +2 -0
  904. package/dist/trace-analyst/otlp-to-run-records.timestamps.test.d.ts.map +1 -0
  905. package/dist/trace-analyst/prompts.d.ts +6 -0
  906. package/dist/trace-analyst/prompts.d.ts.map +1 -0
  907. package/dist/trace-analyst/store-otlp.d.ts +126 -0
  908. package/dist/trace-analyst/store-otlp.d.ts.map +1 -0
  909. package/dist/trace-analyst/store-otlp.test.d.ts +8 -0
  910. package/dist/trace-analyst/store-otlp.test.d.ts.map +1 -0
  911. package/dist/trace-analyst/store-otlp.timestamps.test.d.ts +2 -0
  912. package/dist/trace-analyst/store-otlp.timestamps.test.d.ts.map +1 -0
  913. package/dist/trace-analyst/store.d.ts +63 -0
  914. package/dist/trace-analyst/store.d.ts.map +1 -0
  915. package/dist/trace-analyst/tools.d.ts +44 -0
  916. package/dist/trace-analyst/tools.d.ts.map +1 -0
  917. package/dist/trace-analyst/tools.test.d.ts +10 -0
  918. package/dist/trace-analyst/tools.test.d.ts.map +1 -0
  919. package/dist/{store-C1YxJDEK.d.ts → trace-analyst/types.d.ts} +18 -74
  920. package/dist/trace-analyst/types.d.ts.map +1 -0
  921. package/dist/trace-contracts.d.ts +180 -0
  922. package/dist/trace-contracts.d.ts.map +1 -0
  923. package/dist/traced-analyst.d.ts +26 -0
  924. package/dist/traced-analyst.d.ts.map +1 -0
  925. package/dist/traced-judges.d.ts +27 -0
  926. package/dist/traced-judges.d.ts.map +1 -0
  927. package/dist/traces.d.ts +4 -960
  928. package/dist/traces.d.ts.map +1 -0
  929. package/dist/traces.js +41 -11
  930. package/dist/{trajectory-2TkpSEVh.d.ts → trajectory.d.ts} +8 -9
  931. package/dist/trajectory.d.ts.map +1 -0
  932. package/dist/{types-C7DGg5ex.d.ts → types.d.ts} +31 -33
  933. package/dist/types.d.ts.map +1 -0
  934. package/dist/ui-finding.d.ts +104 -0
  935. package/dist/ui-finding.d.ts.map +1 -0
  936. package/dist/verdict-cache.d.ts +78 -0
  937. package/dist/verdict-cache.d.ts.map +1 -0
  938. package/dist/verdict-cache.test.d.ts +2 -0
  939. package/dist/verdict-cache.test.d.ts.map +1 -0
  940. package/dist/{verdict-C9MlYujm.d.ts → verdict.d.ts} +2 -3
  941. package/dist/verdict.d.ts.map +1 -0
  942. package/dist/visual-diff.d.ts +32 -0
  943. package/dist/visual-diff.d.ts.map +1 -0
  944. package/dist/wire/handlers.d.ts +54 -0
  945. package/dist/wire/handlers.d.ts.map +1 -0
  946. package/dist/wire/index.d.ts +13 -570
  947. package/dist/wire/index.d.ts.map +1 -0
  948. package/dist/wire/openapi.d.ts +3 -0
  949. package/dist/wire/openapi.d.ts.map +1 -0
  950. package/dist/wire/rpc.d.ts +21 -0
  951. package/dist/wire/rpc.d.ts.map +1 -0
  952. package/dist/wire/rubrics.d.ts +34 -0
  953. package/dist/wire/rubrics.d.ts.map +1 -0
  954. package/dist/wire/schemas.d.ts +410 -0
  955. package/dist/wire/schemas.d.ts.map +1 -0
  956. package/dist/wire/server.d.ts +60 -0
  957. package/dist/wire/server.d.ts.map +1 -0
  958. package/dist/workflow/event-schema.d.ts +5 -0
  959. package/dist/workflow/event-schema.d.ts.map +1 -0
  960. package/dist/workflow/feedback-pack.d.ts +99 -0
  961. package/dist/workflow/feedback-pack.d.ts.map +1 -0
  962. package/dist/workflow/index.d.ts +22 -495
  963. package/dist/workflow/index.d.ts.map +1 -0
  964. package/dist/workflow/index.js +1 -1
  965. package/dist/workflow/intelligence-export.d.ts +62 -0
  966. package/dist/workflow/intelligence-export.d.ts.map +1 -0
  967. package/dist/workflow/partner-report.d.ts +49 -0
  968. package/dist/workflow/partner-report.d.ts.map +1 -0
  969. package/dist/workflow/phase-graph.d.ts +43 -0
  970. package/dist/workflow/phase-graph.d.ts.map +1 -0
  971. package/dist/workflow/promotion-gate.d.ts +61 -0
  972. package/dist/workflow/promotion-gate.d.ts.map +1 -0
  973. package/dist/workflow/run-record.d.ts +12 -0
  974. package/dist/workflow/run-record.d.ts.map +1 -0
  975. package/dist/workflow/runtime-adapter.d.ts +20 -0
  976. package/dist/workflow/runtime-adapter.d.ts.map +1 -0
  977. package/dist/workflow/sanitize.d.ts +21 -0
  978. package/dist/workflow/sanitize.d.ts.map +1 -0
  979. package/dist/workflow/schema.d.ts +5 -0
  980. package/dist/workflow/schema.d.ts.map +1 -0
  981. package/dist/workflow/summary.d.ts +43 -0
  982. package/dist/workflow/summary.d.ts.map +1 -0
  983. package/dist/workflow/trace-event-fields.d.ts +6 -0
  984. package/dist/workflow/trace-event-fields.d.ts.map +1 -0
  985. package/dist/workflow/trajectory.d.ts +15 -0
  986. package/dist/workflow/trajectory.d.ts.map +1 -0
  987. package/dist/workflow/types.d.ts +68 -0
  988. package/dist/workflow/types.d.ts.map +1 -0
  989. package/dist/workspace-inspector.d.ts +67 -0
  990. package/dist/workspace-inspector.d.ts.map +1 -0
  991. package/dist/wrangler-deploy-runner.test.d.ts +2 -0
  992. package/dist/wrangler-deploy-runner.test.d.ts.map +1 -0
  993. package/docs/campaign-proposers.md +170 -0
  994. package/docs/concepts.md +8 -4
  995. package/docs/customer-journeys.md +15 -13
  996. package/docs/design/loop-taxonomy.md +34 -66
  997. package/docs/distributed-driver.md +14 -14
  998. package/docs/feature-guide.md +1 -1
  999. package/docs/hosted-ingest-spec.md +2 -3
  1000. package/docs/multi-shot-optimization.md +8 -8
  1001. package/docs/product-eval-adoption.md +1 -1
  1002. package/docs/self-improvement-map.md +33 -29
  1003. package/package.json +9 -15
  1004. package/dist/calibration-BPmzuVPk.d.ts +0 -101
  1005. package/dist/chunk-2K6UUZ7P.js.map +0 -1
  1006. package/dist/chunk-CTBHKLEU.js.map +0 -1
  1007. package/dist/chunk-E4GH6USR.js.map +0 -1
  1008. package/dist/chunk-EGPMSBEZ.js.map +0 -1
  1009. package/dist/chunk-KWRRMR3J.js.map +0 -1
  1010. package/dist/chunk-MIFZUPEK.js.map +0 -1
  1011. package/dist/chunk-MPQWFX6Y.js.map +0 -1
  1012. package/dist/chunk-Q5LIB7BC.js.map +0 -1
  1013. package/dist/chunk-QMUEXQJS.js.map +0 -1
  1014. package/dist/chunk-SD2YFWQQ.js.map +0 -1
  1015. package/dist/control-D6qwHXIR.d.ts +0 -259
  1016. package/dist/corpus-B8A4BDR3.d.ts +0 -560
  1017. package/dist/failure-cluster-DH9Flgcf.d.ts +0 -76
  1018. package/dist/harness-optimizer-mOl9XX_O.d.ts +0 -106
  1019. package/dist/index-Bx3gZ8xl.d.ts +0 -159
  1020. package/dist/pre-registration-mAnCugl9.d.ts +0 -523
  1021. package/dist/provenance-P-bCL2Fo.d.ts +0 -441
  1022. package/dist/query-B7GGjRox.d.ts +0 -32
  1023. package/dist/release-report-BEbWmVYj.d.ts +0 -233
  1024. package/dist/run-critic-CmMf05uV.d.ts +0 -56
  1025. package/dist/run-improvement-loop-DBahB8Ax.d.ts +0 -427
  1026. package/dist/runtime-trajectory-BDgfGZSr.d.ts +0 -49
  1027. package/dist/semantic-concept-judge-B9MgmBnM.d.ts +0 -624
  1028. package/dist/sink-fetch-B1Yg4Til.d.ts +0 -101
  1029. package/docs/design/external-agent-wedge.md +0 -89
  1030. package/docs/design/phase-d-rfc.md +0 -125
  1031. package/docs/design/phase4-consumer-migration.md +0 -70
  1032. package/docs/design/primitives-integration-spec.md +0 -393
  1033. package/docs/design/product-self-improvement-loop.md +0 -146
  1034. package/docs/design/self-improvement-engine.md +0 -140
  1035. package/docs/design/self-improvement-protocol.md +0 -223
  1036. package/docs/design/self-improvement-roadmap.md +0 -106
  1037. package/docs/design/substrate-gaps.md +0 -118
  1038. package/docs/phase-b-pairing-kit.md +0 -188
  1039. package/docs/phase-b-runbook.md +0 -176
  1040. package/docs/pilot/README.md +0 -62
  1041. package/docs/pilot/customer-checklist.md +0 -90
  1042. package/docs/pilot/integration-foreign-stack.md +0 -296
  1043. package/docs/pilot/integration-tangle-stack.md +0 -248
  1044. package/docs/pilot/one-pager.md +0 -161
  1045. package/docs/pilot/sample-insight-report.json +0 -172
  1046. package/docs/quickstart-external.md +0 -229
  1047. package/docs/research/belief-state-agent-eval-roadmap.md +0 -593
  1048. package/docs/research/research-roadmap.md +0 -205
  1049. package/docs/specs/driver-honest-spec.md +0 -251
  1050. package/docs/specs/hermes-self-improvement-audit.md +0 -93
  1051. package/docs/specs/profile-versioning.md +0 -291
  1052. package/docs/three-package-architecture.md +0 -168
  1053. /package/dist/{chunk-TBDR6PAI.js.map → chunk-IZCEK2HR.js.map} +0 -0
  1054. /package/dist/{chunk-KW53MSA5.js.map → chunk-X74V6ESX.js.map} +0 -0
  1055. /package/dist/{chunk-2KNZHH3P.js.map → chunk-Z6L6YSU6.js.map} +0 -0
  1056. /package/dist/{run-campaign-7WNXMDSN.js.map → run-campaign-WXY7KI67.js.map} +0 -0
@@ -0,0 +1,53 @@
1
+ /**
2
+ * VCS-pluggable worktree adapter. One improvement = one worktree, PR-like
3
+ * (multiple commits allowed). A code-tier proposer's `propose()` creates a
4
+ * worktree, an agent commits the change into it, and `finalize()` returns a
5
+ * `CodeSurface{ worktreeRef }` the measurement checks out to run the worker
6
+ * against the changed code. On promotion the worktree becomes the PR branch.
7
+ *
8
+ * The interface is VCS-agnostic so a future `jj` ([jj-vcs](https://github.com/jj-vcs/jj))
9
+ * adapter can slot in without touching proposer code. Only the git adapter
10
+ * ships today. See `docs/design/loop-taxonomy.md`.
11
+ */
12
+ import type { CodeSurface } from '../types';
13
+ export interface Worktree {
14
+ /** Absolute path to the checked-out worktree directory. */
15
+ path: string;
16
+ /** The branch the worktree is on (becomes the PR branch on promotion). */
17
+ branch: string;
18
+ /** The ref the worktree was forked from. */
19
+ baseRef: string;
20
+ }
21
+ export interface WorktreeAdapter {
22
+ /** Create an isolated worktree on a fresh branch off `baseRef`. */
23
+ create(opts: {
24
+ baseRef: string;
25
+ label: string;
26
+ }): Promise<Worktree>;
27
+ /** Commit any pending changes in the worktree, then return a CodeSurface
28
+ * pointing at it. The agent has already written its change into
29
+ * `worktree.path` by the time this is called. */
30
+ finalize(worktree: Worktree, summary: string): Promise<CodeSurface>;
31
+ /** Remove the worktree (and its branch) — called for losing candidates. */
32
+ discard(worktree: Worktree): Promise<void>;
33
+ }
34
+ export declare class WorktreeAdapterError extends Error {
35
+ readonly cause?: unknown | undefined;
36
+ constructor(message: string, cause?: unknown | undefined);
37
+ }
38
+ export interface GitWorktreeAdapterOptions {
39
+ /** Repo root the worktrees fork from. */
40
+ repoRoot: string;
41
+ /** Directory worktrees are created under. Default: `<repoRoot>/.worktrees`. */
42
+ worktreeDir?: string;
43
+ /** Branch-name prefix. Default: `improve`. */
44
+ branchPrefix?: string;
45
+ /** Test seam — defaults to a real `git` runner. */
46
+ git?: (args: string[], cwd: string) => string;
47
+ }
48
+ export declare function gitWorktreeAdapter(opts: GitWorktreeAdapterOptions): WorktreeAdapter;
49
+ /** Resolve a `CodeSurface`'s worktreeRef to a directory the measurement can
50
+ * run the worker in. A path ref is returned as-is; anything else is treated
51
+ * as a ref under the adapter's worktree dir. */
52
+ export declare function resolveWorktreePath(surface: CodeSurface, worktreeDir?: string): string;
53
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/campaign/worktree/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,MAAM,WAAW,QAAQ;IACvB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAA;IACZ,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAA;IACd,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACnE;;sDAEkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IACnE,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAG3C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;gBADxB,OAAO,EAAE,MAAM,EACN,KAAK,CAAC,EAAE,OAAO,YAAA;CAK3B;AAED,MAAM,WAAW,yBAAyB;IACxC,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mDAAmD;IACnD,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CAC9C;AAyBD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,eAAe,CAqCnF;AAED;;iDAEiD;AACjD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAItF"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Liveness canaries — cheap statistical checks that catch the failure
3
+ * modes a green test suite never sees.
4
+ *
5
+ * Three canary types in this module:
6
+ *
7
+ * 1. **Silent judge fallback** — the judge degraded to a fallback
8
+ * path (rules-only / cached / heuristic) without anyone
9
+ * noticing. Signature: a string of consecutive runs whose
10
+ * `judgeMetadata.confidence` equals a known fallback constant
11
+ * (default 0.30) OR whose `judgeMetadata.fallback` is true.
12
+ *
13
+ * 2. **Judge calibration drift** — the judge's confidence
14
+ * distribution has drifted from a historical window. Two-sample
15
+ * Kolmogorov-Smirnov test on the recent vs historical confidences,
16
+ * with the empirical-CDF max-difference statistic.
17
+ *
18
+ * 3. **Eval-set distribution shift** — the mix of categories /
19
+ * buckets in the recent runs differs significantly from the
20
+ * historical mix. Chi-square test on the binned counts.
21
+ *
22
+ * Outputs are alerts. The canary does NOT fail loud the way a test
23
+ * does — failing tests are reserved for hard correctness violations.
24
+ * A canary that fires is a *signal* to investigate, not a verdict.
25
+ *
26
+ * Why this lives here rather than in `observability.ts`: that module
27
+ * exports already, and is a pure-fanout-to-Langfuse/Prometheus
28
+ * adapter. Canaries are statistical detectors, not adapters.
29
+ */
30
+ import type { RunRecord } from './run-record';
31
+ export type CanaryKind = 'silent_judge_fallback' | 'judge_calibration_drift' | 'distribution_shift';
32
+ export type CanarySeverity = 'info' | 'warn' | 'error';
33
+ export interface CanaryAlert {
34
+ kind: CanaryKind;
35
+ severity: CanarySeverity;
36
+ message: string;
37
+ /** Numbers that informed the decision — drop straight into a
38
+ * dashboard / paper figure. */
39
+ evidence: Record<string, unknown>;
40
+ }
41
+ export interface CanaryReport {
42
+ alerts: CanaryAlert[];
43
+ /** Per-kind summary count. */
44
+ counts: Record<CanaryKind, number>;
45
+ }
46
+ export interface CanaryOptions {
47
+ /**
48
+ * Silent-fallback detection.
49
+ * - `constant`: confidence value treated as the fallback signal.
50
+ * Default 0.30 (matches the soft-fail default in
51
+ * `propose-review.ts`).
52
+ * - `consecutiveThreshold`: trip the alert after this many
53
+ * consecutive runs at `constant` (or `fallback === true`).
54
+ * Default 3.
55
+ */
56
+ silentFallback?: {
57
+ constant?: number;
58
+ consecutiveThreshold?: number;
59
+ /** Floating-point tolerance when comparing against `constant`. */
60
+ epsilon?: number;
61
+ };
62
+ /**
63
+ * Calibration-drift detection.
64
+ * - `historyWindow`: number of past runs (oldest-first) treated as
65
+ * the historical baseline. Default 50.
66
+ * - `recentWindow`: number of recent runs (newest-first) compared
67
+ * against history. Default 20.
68
+ * - `ksAlpha`: alpha for the KS statistic vs critical value.
69
+ * Default 0.05.
70
+ * - `minRecent`: minimum recent runs required to even attempt the
71
+ * check. Default 10.
72
+ */
73
+ calibrationDrift?: {
74
+ historyWindow?: number;
75
+ recentWindow?: number;
76
+ ksAlpha?: number;
77
+ minRecent?: number;
78
+ };
79
+ /**
80
+ * Distribution-shift detection.
81
+ * - `category`: function that maps a run to a categorical bucket.
82
+ * Required to enable this canary; if omitted the chi-square check
83
+ * is skipped entirely.
84
+ * - `chiSquareAlpha`: alpha. Default 0.05.
85
+ * - `historyWindow`, `recentWindow`, `minRecent`: like above.
86
+ */
87
+ distributionShift?: {
88
+ category: (run: RunRecord) => string | null;
89
+ chiSquareAlpha?: number;
90
+ historyWindow?: number;
91
+ recentWindow?: number;
92
+ minRecent?: number;
93
+ };
94
+ }
95
+ /**
96
+ * Run all configured canaries against a chronological run list.
97
+ * Runs MUST be sorted oldest-to-newest by the caller — the order of
98
+ * the input is used to define "recent" vs "historical" windows.
99
+ */
100
+ export declare function runCanaries(runs: RunRecord[], opts?: CanaryOptions): CanaryReport;
101
+ //# sourceMappingURL=canary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canary.d.ts","sourceRoot":"","sources":["../src/canary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,MAAM,UAAU,GAAG,uBAAuB,GAAG,yBAAyB,GAAG,oBAAoB,CAAA;AAEnG,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAEtD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE,cAAc,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;IACf;oCACgC;IAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE;QACf,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,oBAAoB,CAAC,EAAE,MAAM,CAAA;QAC7B,kEAAkE;QAClE,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,CAAA;IAED;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE;QACjB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;IAED;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE;QAClB,QAAQ,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,MAAM,GAAG,IAAI,CAAA;QAC3C,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,IAAI,GAAE,aAAkB,GAAG,YAAY,CAarF"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Causal attribution via factorial experiments.
3
+ *
4
+ * Run every combination of {model × prompt × scenario × seed}, then
5
+ * decompose observed score variance into main effects + interactions.
6
+ * Moves from correlational "variant B is better" to causal "the model
7
+ * swap accounts for 42% of the lead; the prompt change accounts for 28%;
8
+ * interaction is 30%."
9
+ *
10
+ * Minimal implementation: 2-way factorial (two factors at a time) with
11
+ * main-effect + interaction decomposition via variance of cell means.
12
+ * Consumers run the factorial design themselves (we don't schedule
13
+ * runs); this module consumes the (factorLevels, observedScores)
14
+ * table and does the attribution math.
15
+ */
16
+ export interface FactorialCell {
17
+ /** Map factor name → level id. e.g. { model: 'claude', prompt: 'v2' } */
18
+ levels: Record<string, string>;
19
+ /** Observed score for this cell (mean over replications if n > 1). */
20
+ score: number;
21
+ /** Number of replications averaged to produce `score`. */
22
+ n: number;
23
+ }
24
+ export interface FactorContribution {
25
+ factor: string;
26
+ /** Variance attributed to this factor's main effect, as a fraction of total. */
27
+ shareOfVariance: number;
28
+ /** Range of cell means across levels of this factor. */
29
+ range: number;
30
+ }
31
+ export interface InteractionContribution {
32
+ factors: [string, string];
33
+ shareOfVariance: number;
34
+ }
35
+ export interface CausalAttributionReport {
36
+ totalVariance: number;
37
+ mainEffects: FactorContribution[];
38
+ interactions: InteractionContribution[];
39
+ /** Residual = variance unexplained by main effects + modeled interactions. */
40
+ residualShare: number;
41
+ /** Sanity: shares sum to 1 (within fp). */
42
+ sharesSum: number;
43
+ }
44
+ export declare function causalAttribution(cells: FactorialCell[]): CausalAttributionReport;
45
+ //# sourceMappingURL=causal-attribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"causal-attribution.d.ts","sourceRoot":"","sources":["../src/causal-attribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAA;IACb,0DAA0D;IAC1D,CAAC,EAAE,MAAM,CAAA;CACV;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,eAAe,EAAE,MAAM,CAAA;IACvB,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,kBAAkB,EAAE,CAAA;IACjC,YAAY,EAAE,uBAAuB,EAAE,CAAA;IACvC,8EAA8E;IAC9E,aAAa,EAAE,MAAM,CAAA;IACrB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,uBAAuB,CA8DjF"}
@@ -538,4 +538,4 @@ export {
538
538
  inMemoryCampaignStorage,
539
539
  runCampaign
540
540
  };
541
- //# sourceMappingURL=chunk-2K6UUZ7P.js.map
541
+ //# sourceMappingURL=chunk-2T4EZACH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/campaign/run-campaign.ts","../src/integrity/backend-integrity.ts","../src/campaign/storage.ts"],"sourcesContent":["/**\n * `runCampaign` — Pass A substrate primitive. ONE function that orchestrates\n * scenarios → dispatch → artifacts → judges → aggregates, with full\n * reproducibility (seed + manifest hash), cell-level resumability, bootstrap\n * CIs, and the `LabeledScenarioStore` capture flywheel.\n *\n * Improvement loops (optimizer / gate / autoOnPromote) ride on top of this\n * primitive but live in `presets/run-improvement-loop.ts`. This file keeps\n * the core orchestrator minimal — Phase 1 of the Pass A track.\n */\n\nimport { createHash } from 'node:crypto'\nimport { join } from 'node:path'\nimport { BackendIntegrityError, type BackendIntegrityReport } from '../integrity/backend-integrity'\nimport { confidenceInterval } from '../statistics'\nimport { type CampaignStorage, fsCampaignStorage } from './storage'\nimport type {\n CampaignAggregates,\n CampaignArtifactWriter,\n CampaignCellResult,\n CampaignCostMeter,\n CampaignResult,\n CampaignTokenUsage,\n CampaignTraceWriter,\n DispatchContext,\n DispatchFn,\n JudgeAggregate,\n JudgeConfig,\n JudgeScore,\n LabeledScenarioStore,\n Scenario,\n ScenarioAggregate,\n TraceSpan,\n} from './types'\n\nexport interface RunCampaignOptions<TScenario extends Scenario, TArtifact> {\n scenarios: TScenario[]\n dispatch: DispatchFn<TScenario, TArtifact>\n judges?: JudgeConfig<TArtifact, TScenario>[]\n /** Required for reproducibility. Default 42. */\n seed?: number\n /** Per-scenario replicates for CI bands. Default 1; raise to 5+ for\n * bootstrap-tight intervals on critical eval. */\n reps?: number\n /** When true (default), completed cells are cached by\n * (manifestHash, scenarioId, rep, generation). Re-runs skip cached cells. */\n resumable?: boolean\n /** Optional store — when present, every artifact + judge score is captured\n * with the configured `captureSource`. Capture is default ON; pass `'off'`\n * to disable. */\n labeledStore?: LabeledScenarioStore | 'off'\n captureSource?: 'production-trace' | 'eval-run' | 'manual' | 'red-team' | 'synthetic'\n captureSourceVersionHash?: string\n /** Wall-clock cost cap across all cells. Cells beyond ceiling are skipped. */\n costCeiling?: number\n /** Max concurrent cells. Default 2. */\n maxConcurrency?: number\n /**\n * Per-cell dispatch deadline in ms. A `dispatch` that neither resolves nor\n * rejects within this window is a hang (a stalled model request, an\n * exhausted runtime resource, a backend that never closes its stream). When\n * set, the cell's `ctx.signal` is aborted and the cell is recorded as a LOUD\n * error (`dispatch exceeded <N>ms`) so the campaign proceeds and the failure\n * is visible — instead of one wedged cell silently hanging the whole run (and\n * every loop/CI job above it) forever. `undefined`/`0` = unbounded (legacy).\n */\n dispatchTimeoutMs?: number\n /** Required: where artifacts + traces land. */\n runDir: string\n /** Tracing posture. Default is the substrate's `FileSystemTraceStore` rooted\n * at `<runDir>/traces/`. `'off'` disables capture entirely — substrate\n * refuses this when the caller wires `autoOnPromote !== 'none'`. */\n tracing?: 'on' | 'off'\n /**\n * Per-cell usage expectation — the early, fine-grained sibling of the\n * batch `assertRealBackend` guard. A cell that produced an artifact (no\n * error) but reported `costUsd === 0` AND zero tokens is a stub: the\n * dispatch never reported LLM activity via `ctx.cost`. Modes:\n * - `'warn'` (default) — log the offending cell loudly, keep going.\n * - `'assert'` — throw `BackendIntegrityError` on the first such cell\n * (fail-fast; recommended for CI campaigns expecting real LLM calls).\n * - `'off'` — no check (replay / deterministic-only / offline analysis).\n */\n expectUsage?: 'assert' | 'warn' | 'off'\n /** Test seam — override the wall clock for deterministic tests. */\n now?: () => Date\n /** Test seam — override per-cell trace writer factory. */\n buildTraceWriter?: (cellId: string, dir: string) => CampaignTraceWriter\n /** Storage backend for run/cell dirs, the resumability cache, artifacts,\n * and trace spans. Default: the Node filesystem (`fsCampaignStorage`).\n * Pass `inMemoryCampaignStorage()` to run in a filesystem-less runtime\n * (Cloudflare Workers, Deno, edge) — the `CampaignResult` is still\n * produced; artifacts/traces just aren't persisted to disk. */\n storage?: CampaignStorage\n /**\n * Optional per-cell placement strategy. Returns an opaque string the\n * substrate forwards as `ctx.placement` to the Dispatch — placement-aware\n * Dispatches (e.g. `httpDispatch` from `/adapters/http`) use it to route\n * each cell to the right worker, region, or sandbox. When unset, every\n * cell receives `ctx.placement = undefined` and behaves identically to\n * the in-process case.\n *\n * @example\n * cellPlacement: ({ scenario }) => scenario.tags?.includes('eu') ? 'eu-west' : 'us-east'\n */\n cellPlacement?: (input: {\n scenario: TScenario\n rep: number\n generation?: number\n }) => string | undefined\n}\n\nexport async function runCampaign<TScenario extends Scenario, TArtifact>(\n opts: RunCampaignOptions<TScenario, TArtifact>,\n): Promise<CampaignResult<TArtifact, TScenario>> {\n const seed = opts.seed ?? 42\n const reps = opts.reps ?? 1\n const resumable = opts.resumable ?? true\n const maxConcurrency = opts.maxConcurrency ?? 2\n const now = opts.now ?? (() => new Date())\n const judges = opts.judges ?? []\n const storage = opts.storage ?? fsCampaignStorage()\n\n if (typeof opts.runDir !== 'string' || opts.runDir.trim().length === 0) {\n throw new Error('runCampaign: runDir is required and must be a non-empty string')\n }\n storage.ensureDir(opts.runDir)\n\n const manifestHash = computeManifestHash({\n scenarios: opts.scenarios,\n judges: judges as unknown as JudgeConfig<unknown>[],\n dispatchRef: opts.dispatch.name || 'anonymous',\n seed,\n reps,\n })\n\n const startedAt = now()\n const cells: CampaignCellResult<TArtifact>[] = []\n const artifactsByPath: Record<string, string> = {}\n\n // Build the cell schedule (scenario × rep).\n const schedule: Array<{ scenario: TScenario; rep: number; cellId: string; cellSeed: number }> = []\n let cellIndex = 0\n for (const scenario of opts.scenarios) {\n for (let rep = 0; rep < reps; rep++) {\n const cellId = `${scenario.id}:${rep}`\n const cellSeed = seed + cellIndex\n schedule.push({ scenario, rep, cellId, cellSeed })\n cellIndex += 1\n }\n }\n\n // Concurrency-limited execution.\n let totalCostUsd = 0\n let costCeilingReached = false\n const abortController = new AbortController()\n // Concurrency lanes that drain the cell schedule. Named \"lanes\" — not\n // \"workers\" — to avoid clashing with the taxonomy's worker (= the agent\n // harness in a sandbox, invoked behind `dispatch`). See loop-taxonomy.md.\n const lanes: Promise<void>[] = []\n let nextIdx = 0\n const cellsRef = cells\n\n for (let i = 0; i < maxConcurrency; i++) {\n lanes.push(\n (async () => {\n while (true) {\n const myIdx = nextIdx++\n if (myIdx >= schedule.length) return\n const slot = schedule[myIdx]!\n if (costCeilingReached) {\n cellsRef.push(skippedCell(slot, 'cost_ceiling_reached'))\n continue\n }\n const result = await executeCell({\n slot,\n opts,\n manifestHash,\n resumable,\n now,\n storage,\n buildTraceWriter: opts.buildTraceWriter ?? defaultBuildTraceWriter(storage),\n signal: abortController.signal,\n dispatchTimeoutMs: opts.dispatchTimeoutMs,\n })\n cellsRef.push(result.cell)\n enforceCellUsage(result.cell, opts.expectUsage ?? 'warn')\n totalCostUsd += result.cell.costUsd\n Object.assign(artifactsByPath, result.artifactsByPath)\n if (opts.costCeiling !== undefined && totalCostUsd >= opts.costCeiling) {\n costCeilingReached = true\n }\n // Capture into LabeledScenarioStore unless explicitly disabled.\n if (opts.labeledStore && opts.labeledStore !== 'off' && !result.cell.error) {\n await captureToStore({\n store: opts.labeledStore,\n cell: result.cell,\n scenario: slot.scenario,\n opts,\n now,\n }).catch((err) => {\n // Capture failures are non-fatal — log but don't crash the campaign.\n // (Trace would normally land here.)\n console.warn(\n `[runCampaign] capture failed for ${result.cell.cellId}: ${err instanceof Error ? err.message : String(err)}`,\n )\n })\n }\n }\n })(),\n )\n }\n await Promise.all(lanes)\n\n const endedAt = now()\n cellsRef.sort((a, b) => a.cellId.localeCompare(b.cellId))\n\n const aggregates = computeAggregates(\n cellsRef,\n judges as unknown as JudgeConfig<TArtifact>[],\n seed,\n )\n\n return {\n manifestHash,\n seed,\n startedAt: startedAt.toISOString(),\n endedAt: endedAt.toISOString(),\n durationMs: endedAt.getTime() - startedAt.getTime(),\n cells: cellsRef,\n aggregates,\n runDir: opts.runDir,\n artifactsByPath,\n scenarios: opts.scenarios.map((s) => ({ id: s.id, kind: s.kind })),\n }\n}\n\n// ── Internals ─────────────────────────────────────────────────────────\n\ninterface ExecuteCellArgs<TScenario extends Scenario, TArtifact> {\n slot: { scenario: TScenario; rep: number; cellId: string; cellSeed: number }\n opts: RunCampaignOptions<TScenario, TArtifact>\n manifestHash: string\n resumable: boolean\n now: () => Date\n storage: CampaignStorage\n buildTraceWriter: (cellId: string, dir: string) => CampaignTraceWriter\n signal: AbortSignal\n dispatchTimeoutMs?: number\n}\n\nasync function executeCell<TScenario extends Scenario, TArtifact>(\n args: ExecuteCellArgs<TScenario, TArtifact>,\n): Promise<{ cell: CampaignCellResult<TArtifact>; artifactsByPath: Record<string, string> }> {\n const storage = args.storage\n const cellDir = join(args.opts.runDir, args.slot.cellId.replace(/[^a-zA-Z0-9_-]/g, '_'))\n storage.ensureDir(cellDir)\n\n // Resumability: cache key = (manifestHash, scenarioId, rep)\n const cachePath = join(cellDir, 'cached-result.json')\n if (args.resumable) {\n const raw = storage.read(cachePath)\n if (raw !== undefined) {\n try {\n const cached = JSON.parse(raw) as CampaignCellResult<TArtifact>\n if (cached.cellId === args.slot.cellId) {\n return { cell: { ...cached, cached: true }, artifactsByPath: {} }\n }\n } catch {\n // Corrupt cache — fall through to re-run.\n }\n }\n }\n\n const startMs = Date.now()\n const trace = args.buildTraceWriter(args.slot.cellId, cellDir)\n const artifactsByPath: Record<string, string> = {}\n const artifacts: CampaignArtifactWriter = {\n async write(path, content) {\n const fullPath = join(cellDir, path)\n storage.ensureDir(join(fullPath, '..'))\n storage.write(fullPath, content)\n artifactsByPath[`${args.slot.cellId}/${path}`] = fullPath\n return fullPath\n },\n async writeJson(path, value) {\n return artifacts.write(path, JSON.stringify(value, null, 2))\n },\n }\n let costSoFar = 0\n const tokensSoFar: CampaignTokenUsage = { input: 0, output: 0 }\n const cost: CampaignCostMeter = {\n observe(amount, source) {\n costSoFar += amount\n trace.span(`cost.${source}`, { amountUsd: amount }).end()\n },\n observeTokens(usage) {\n tokensSoFar.input += usage.input\n tokensSoFar.output += usage.output\n if (usage.cached) tokensSoFar.cached = (tokensSoFar.cached ?? 0) + usage.cached\n },\n current() {\n return costSoFar\n },\n tokens() {\n return { ...tokensSoFar }\n },\n }\n\n const placement = args.opts.cellPlacement?.({\n scenario: args.slot.scenario,\n rep: args.slot.rep,\n })\n\n // Per-cell abort signal, chained to the campaign signal. The dispatch sees\n // THIS signal so a timeout (below) can abort just this cell's in-flight work\n // without tearing down sibling cells — and a signal-honoring dispatch\n // releases its open request instead of leaking it past the deadline.\n const cellAbort = new AbortController()\n const onCampaignAbort = () => cellAbort.abort((args.signal as { reason?: unknown }).reason)\n if (args.signal.aborted) cellAbort.abort((args.signal as { reason?: unknown }).reason)\n else args.signal.addEventListener('abort', onCampaignAbort, { once: true })\n\n const ctx: DispatchContext = {\n cellId: args.slot.cellId,\n rep: args.slot.rep,\n seed: args.slot.cellSeed,\n signal: cellAbort.signal,\n trace,\n artifacts,\n cost,\n placement,\n }\n\n let artifact: TArtifact | undefined\n let errorMessage: string | undefined\n const timeoutMs = args.dispatchTimeoutMs\n let timeoutTimer: ReturnType<typeof setTimeout> | undefined\n try {\n const dispatched = args.opts.dispatch(args.slot.scenario, ctx)\n if (timeoutMs !== undefined && timeoutMs > 0) {\n // A dispatch that never settles (stalled model request, exhausted runtime\n // resource, a stream that never closes) must NOT hang the cell — and with\n // it the lane, the campaign, the loop, the CI job — forever. Race it\n // against the deadline; on timeout, abort the cell and fail it LOUD.\n artifact = await Promise.race([\n dispatched,\n new Promise<never>((_, reject) => {\n timeoutTimer = setTimeout(() => {\n cellAbort.abort(new Error('dispatch timeout'))\n reject(\n new Error(\n `dispatch exceeded ${timeoutMs}ms for cell '${args.slot.cellId}' — aborted and failed loud (no silent hang)`,\n ),\n )\n }, timeoutMs)\n if (typeof (timeoutTimer as { unref?: () => void }).unref === 'function')\n (timeoutTimer as { unref: () => void }).unref()\n }),\n ])\n } else {\n artifact = await dispatched\n }\n } catch (err) {\n errorMessage = err instanceof Error ? err.message : String(err)\n } finally {\n if (timeoutTimer) clearTimeout(timeoutTimer)\n args.signal.removeEventListener('abort', onCampaignAbort)\n }\n\n // Run judges (only if we have an artifact). A judge that throws invalidates\n // the cell — recorded as `error`, NOT folded into a fake composite:0 (a fake\n // zero is indistinguishable from a real zero and poisons every aggregate).\n const judgeScores: Record<string, JudgeScore> = {}\n if (artifact !== undefined) {\n for (const judge of args.opts.judges ?? []) {\n if (judge.appliesTo && !judge.appliesTo(args.slot.scenario)) continue\n try {\n judgeScores[judge.name] = await runJudgeCell(judge, {\n artifact,\n scenario: args.slot.scenario,\n signal: args.signal,\n })\n } catch (err) {\n errorMessage = `judge '${judge.name}' failed: ${err instanceof Error ? err.message : String(err)}`\n break\n }\n }\n }\n\n await trace.flush()\n\n const cell: CampaignCellResult<TArtifact> = {\n cellId: args.slot.cellId,\n scenarioId: args.slot.scenario.id,\n rep: args.slot.rep,\n artifact: (artifact ?? null) as TArtifact,\n judgeScores,\n costUsd: costSoFar,\n tokenUsage: { ...tokensSoFar },\n durationMs: Date.now() - startMs,\n seed: args.slot.cellSeed,\n cached: false,\n error: errorMessage,\n }\n\n if (!errorMessage && args.resumable) {\n storage.write(cachePath, JSON.stringify(cell))\n }\n\n return { cell, artifactsByPath }\n}\n\n/**\n * Per-cell stub guard. A cell that produced an artifact (no error) but reported\n * `costUsd === 0` AND zero tokens means the dispatch never called `ctx.cost` —\n * i.e. it ran against a stub or silently dropped its usage. `'warn'` logs it,\n * `'assert'` throws (fail-fast), `'off'` skips. An errored/skipped cell or a\n * deterministic judge-only run that genuinely made no LLM call is not flagged.\n */\nfunction enforceCellUsage<TArtifact>(\n cell: CampaignCellResult<TArtifact>,\n mode: 'assert' | 'warn' | 'off',\n): void {\n if (mode === 'off' || cell.error) return\n if (cell.artifact === null || cell.artifact === undefined) return\n const zeroTokens = cell.tokenUsage.input === 0 && cell.tokenUsage.output === 0\n if (cell.costUsd !== 0 || !zeroTokens) return\n const msg = `cell '${cell.cellId}' produced an artifact but reported zero cost and zero tokens — the dispatch never reported LLM usage via ctx.cost.observe/observeTokens (a stub cell)`\n if (mode === 'assert') {\n const report: BackendIntegrityReport = {\n totalRecords: 1,\n stubRecords: 1,\n realRecords: 0,\n uncostedRecords: 0,\n totalInputTokens: 0,\n totalOutputTokens: 0,\n totalCostUsd: 0,\n verdict: 'stub',\n diagnosis: msg,\n }\n throw new BackendIntegrityError(`expectUsage: ${msg}`, report)\n }\n // eslint-disable-next-line no-console\n console.warn(`[runCampaign] expectUsage: ${msg}`)\n}\n\nasync function runJudgeCell<TArtifact, TScenario extends Scenario>(\n judge: JudgeConfig<TArtifact, TScenario>,\n input: { artifact: TArtifact; scenario: TScenario; signal: AbortSignal },\n): Promise<JudgeScore> {\n return judge.score(input)\n}\n\nfunction defaultBuildTraceWriter(\n storage: CampaignStorage,\n): (cellId: string, dir: string) => CampaignTraceWriter {\n return (cellId, dir) => {\n const spans: Array<Record<string, unknown>> = []\n return {\n span(name, attributes) {\n const startMs = Date.now()\n const record: Record<string, unknown> = { name, cellId, startMs, ...(attributes ?? {}) }\n const finish: TraceSpan = {\n end(endAttrs) {\n record.durationMs = Date.now() - startMs\n if (endAttrs) Object.assign(record, endAttrs)\n spans.push(record)\n },\n setAttribute(key, value) {\n record[key] = value\n },\n }\n return finish\n },\n async flush() {\n storage.write(join(dir, 'spans.jsonl'), spans.map((s) => JSON.stringify(s)).join('\\n'))\n },\n }\n }\n}\n\nfunction skippedCell<TScenario extends Scenario, TArtifact>(\n slot: { scenario: TScenario; rep: number; cellId: string; cellSeed: number },\n reason: string,\n): CampaignCellResult<TArtifact> {\n return {\n cellId: slot.cellId,\n scenarioId: slot.scenario.id,\n rep: slot.rep,\n artifact: null as unknown as TArtifact,\n judgeScores: {},\n costUsd: 0,\n tokenUsage: { input: 0, output: 0 },\n durationMs: 0,\n seed: slot.cellSeed,\n cached: false,\n error: `skipped: ${reason}`,\n }\n}\n\ninterface CaptureArgs<TScenario extends Scenario, TArtifact> {\n store: LabeledScenarioStore\n cell: CampaignCellResult<TArtifact>\n scenario: TScenario\n opts: RunCampaignOptions<TScenario, TArtifact>\n now: () => Date\n}\n\nasync function captureToStore<TScenario extends Scenario, TArtifact>(\n args: CaptureArgs<TScenario, TArtifact>,\n): Promise<void> {\n await args.store.observe({\n scenario: args.scenario,\n artifact: args.cell.artifact,\n judgeScores: args.cell.judgeScores,\n source: args.opts.captureSource ?? 'eval-run',\n sourceVersionHash: args.opts.captureSourceVersionHash ?? 'unknown',\n capturedAt: args.now().toISOString(),\n redactionStatus: 'raw',\n })\n}\n\n// ── Aggregates + manifest hash ────────────────────────────────────────\n\nfunction computeManifestHash(input: {\n scenarios: Scenario[]\n judges: JudgeConfig<unknown>[]\n dispatchRef: string\n seed: number\n reps: number\n}): string {\n const canonical = {\n scenarios: input.scenarios.map((s) => ({ id: s.id, kind: s.kind })),\n judges: input.judges.map((j) => ({ name: j.name, dims: j.dimensions.map((d) => d.key) })),\n dispatch: input.dispatchRef,\n seed: input.seed,\n reps: input.reps,\n }\n return createHash('sha256').update(JSON.stringify(canonical)).digest('hex')\n}\n\nfunction computeAggregates<TArtifact>(\n cells: CampaignCellResult<TArtifact>[],\n judges: JudgeConfig<TArtifact>[],\n seed: number,\n): CampaignAggregates {\n const byJudge: Record<string, JudgeAggregate> = {}\n for (const judge of judges) {\n const scores: number[] = []\n for (const cell of cells) {\n const s = cell.judgeScores[judge.name]\n if (s !== undefined) scores.push(s.composite)\n }\n byJudge[judge.name] = aggregate(scores, seed)\n }\n const byScenario: Record<string, ScenarioAggregate> = {}\n const scenarioGroups = new Map<string, number[]>()\n for (const cell of cells) {\n const composites = Object.values(cell.judgeScores).map((s) => s.composite)\n if (composites.length === 0) continue\n const mean = composites.reduce((a, b) => a + b, 0) / composites.length\n const arr = scenarioGroups.get(cell.scenarioId) ?? []\n arr.push(mean)\n scenarioGroups.set(cell.scenarioId, arr)\n }\n for (const [scenarioId, samples] of scenarioGroups) {\n const ag = aggregate(samples, seed)\n byScenario[scenarioId] = { meanComposite: ag.mean, ci95: ag.ci95, n: ag.n }\n }\n return {\n byJudge,\n byScenario,\n totalCostUsd: cells.reduce((a, c) => a + c.costUsd, 0),\n cellsExecuted: cells.filter((c) => !c.error).length,\n cellsSkipped: cells.filter((c) => c.error?.startsWith('skipped:')).length,\n cellsCached: cells.filter((c) => c.cached).length,\n cellsFailed: cells.filter((c) => c.error && !c.error.startsWith('skipped:')).length,\n }\n}\n\n// Percentile bootstrap CI95 via seeded resampling. Deterministic for a given\n// seed — same campaign re-run produces identical CI bands. Falls back to\n// degenerate intervals at n<=1 (the bootstrap is undefined there).\nfunction aggregate(samples: number[], seed: number): JudgeAggregate {\n const n = samples.length\n if (n === 0) return { mean: 0, stdev: 0, ci95: [0, 0], n: 0 }\n const mean = samples.reduce((a, b) => a + b, 0) / n\n const variance = samples.reduce((a, b) => a + (b - mean) ** 2, 0) / Math.max(1, n - 1)\n const stdev = Math.sqrt(variance)\n const ci = confidenceInterval(samples, 0.95, { seed, resamples: 1000 })\n return { mean, stdev, ci95: [ci.lower, ci.upper], n }\n}\n","/**\n * Backend-integrity guard: distinguish \"agent failed\" from \"eval ran against\n * a stub / unconfigured backend.\" Without this guard a canonical eval can\n * silently report `0/N passed` and look like an agent-quality problem when\n * the LLM was never actually called — the failure mode we just hit running\n * the 4-vertical parallel eval (legal-sandbox-stub returned hard-coded 33-104\n * char strings; gtm/creative defaulted to a cli-bridge that wasn't running).\n *\n * The shape:\n *\n * const report = summarizeBackendIntegrity(records)\n * assertRealBackend(records) // throws BackendIntegrityError if 100% stub\n *\n * A record is \"stub-mode\" if its `tokenUsage.input === 0 && tokenUsage.output === 0`.\n * (`costUsd` alone is unreliable — some backends successfully call LLMs but\n * don't propagate pricing, producing real tokens with $0 cost.)\n *\n * Verdicts:\n * - `real` — at least one record has nonzero token usage\n * - `stub` — every record is stub-mode (eval ran blind)\n * - `mixed` — some records real, some stub (partial backend failure;\n * often the 429-cascade or auth-half-failed case)\n */\n\nimport { AgentEvalError } from '../errors'\nimport type { RunRecord } from '../run-record'\n\nexport interface BackendIntegrityReport {\n /** Total records inspected. */\n totalRecords: number\n /** Records with input=0 AND output=0 (a stub fingerprint). */\n stubRecords: number\n /** Records with nonzero token usage (real LLM activity). */\n realRecords: number\n /** Records where output>0 but costUsd=0 (real LLM, broken cost ledger). */\n uncostedRecords: number\n /** Sum of input tokens across all records. */\n totalInputTokens: number\n /** Sum of output tokens across all records. */\n totalOutputTokens: number\n /** Sum of costUsd across all records. */\n totalCostUsd: number\n /** Worst-case integrity verdict. */\n verdict: 'real' | 'mixed' | 'stub'\n /** Human-readable diagnosis suitable for terminal output. */\n diagnosis: string\n}\n\n/**\n * Error thrown when an integrity assertion fails. Caller can pattern-match\n * by `code === 'AGENT_EVAL_BACKEND_STUB'` to differentiate from other\n * errors.\n */\nexport class BackendIntegrityError extends AgentEvalError {\n constructor(\n message: string,\n public readonly report: BackendIntegrityReport,\n ) {\n super('backend_integrity', message)\n }\n}\n\nfunction isStubRecord(rec: RunRecord): boolean {\n return rec.tokenUsage.input === 0 && rec.tokenUsage.output === 0\n}\n\nfunction isUncostedRecord(rec: RunRecord): boolean {\n return rec.tokenUsage.output > 0 && rec.costUsd === 0\n}\n\n/**\n * Inspect a batch of RunRecords and return an integrity report. Pure\n * function — no I/O, no logging. The caller decides what to do with the\n * verdict (print warning, throw, gate CI, etc.).\n */\nexport function summarizeBackendIntegrity(\n records: ReadonlyArray<RunRecord>,\n): BackendIntegrityReport {\n const totalRecords = records.length\n let stubRecords = 0\n let realRecords = 0\n let uncostedRecords = 0\n let totalInputTokens = 0\n let totalOutputTokens = 0\n let totalCostUsd = 0\n for (const rec of records) {\n totalInputTokens += rec.tokenUsage.input\n totalOutputTokens += rec.tokenUsage.output\n totalCostUsd += rec.costUsd\n if (isStubRecord(rec)) stubRecords++\n else realRecords++\n if (isUncostedRecord(rec)) uncostedRecords++\n }\n const verdict: BackendIntegrityReport['verdict'] =\n totalRecords === 0\n ? 'stub'\n : stubRecords === totalRecords\n ? 'stub'\n : stubRecords === 0\n ? 'real'\n : 'mixed'\n const diagnosis = buildDiagnosis({\n totalRecords,\n stubRecords,\n realRecords,\n uncostedRecords,\n totalInputTokens,\n totalOutputTokens,\n totalCostUsd,\n verdict,\n })\n return {\n totalRecords,\n stubRecords,\n realRecords,\n uncostedRecords,\n totalInputTokens,\n totalOutputTokens,\n totalCostUsd,\n verdict,\n diagnosis,\n }\n}\n\nfunction buildDiagnosis(r: Omit<BackendIntegrityReport, 'diagnosis'>): string {\n if (r.totalRecords === 0) {\n return 'no records — eval produced zero runs; backend likely failed before first turn'\n }\n if (r.verdict === 'stub') {\n return [\n `all ${r.totalRecords} records have zero token usage — the LLM backend was never called.`,\n 'common causes: --backend sandbox without a sandbox bridge running; stub model returning hard-coded strings;',\n 'auth misconfigured so requests were silently dropped before the LLM. Re-run with --backend tcloud and TANGLE_API_KEY set,',\n 'or boot the cli-bridge / sandbox before invoking the eval.',\n ].join(' ')\n }\n if (r.verdict === 'mixed') {\n const pct = ((r.stubRecords / r.totalRecords) * 100).toFixed(0)\n return [\n `${r.stubRecords}/${r.totalRecords} records (${pct}%) have zero token usage — the backend partially failed.`,\n 'common causes: rate-limit cascade (429s after the first N personas);',\n 'transient auth expiry mid-run; provider outage. Treat the affected records as missing data, not agent failures.',\n ].join(' ')\n }\n // verdict === 'real'\n if (r.uncostedRecords > 0) {\n const pct = ((r.uncostedRecords / r.totalRecords) * 100).toFixed(0)\n return [\n `${r.totalRecords} records with real LLM activity (in=${r.totalInputTokens}, out=${r.totalOutputTokens} tokens).`,\n `${r.uncostedRecords} (${pct}%) have output tokens but costUsd=0. Two distinct roots:`,\n '(a) cost ledger mis-wired — no usage propagation from the runtime stream into RunRecord; or',\n '(b) the model is unpriced at the source (sandbox/router returned $0 despite real tokens).',\n 'For (b), price the measured tokens against the substrate table (estimateCost) instead of leaving $0.',\n ].join(' ')\n }\n return `${r.totalRecords} records with real LLM activity (in=${r.totalInputTokens}, out=${r.totalOutputTokens} tokens, $${r.totalCostUsd.toFixed(4)}).`\n}\n\n/**\n * Throw BackendIntegrityError if the verdict is 'stub' — i.e. every record\n * shows zero LLM activity. Non-strict callers can pass `{ allowMixed: false }`\n * to also reject mixed verdicts (recommended for CI gates).\n *\n * Real backends pass through silently.\n */\nexport function assertRealBackend(\n records: ReadonlyArray<RunRecord>,\n opts: { allowMixed?: boolean } = {},\n): BackendIntegrityReport {\n const report = summarizeBackendIntegrity(records)\n const allowMixed = opts.allowMixed ?? true\n if (report.verdict === 'stub') {\n throw new BackendIntegrityError(\n `backend-integrity: ran against a stub or unconfigured backend — ${report.diagnosis}`,\n report,\n )\n }\n if (!allowMixed && report.verdict === 'mixed') {\n throw new BackendIntegrityError(\n `backend-integrity: partial backend failure rejected — ${report.diagnosis}`,\n report,\n )\n }\n return report\n}\n","import { createRequire } from 'node:module'\n\n/**\n * `CampaignStorage` — the filesystem seam `runCampaign` writes through\n * (run/cell dirs, the resumability cache, per-cell artifacts, trace spans).\n *\n * The default (`fsCampaignStorage`) is the Node filesystem — identical\n * behavior to the inline `node:fs` calls it replaces, so existing CLI\n * consumers are unaffected. `inMemoryCampaignStorage` keeps everything in a\n * `Map`, so the substrate runs in environments WITHOUT a filesystem\n * (Cloudflare Workers, Deno Deploy, other edge runtimes) — the campaign\n * still produces its `CampaignResult` (cells + aggregates) in memory;\n * artifacts/traces simply aren't persisted to disk.\n *\n * Paths are opaque keys to the in-memory adapter — it does not parse them,\n * so the same `join(...)`-built paths work unchanged across both adapters.\n */\nexport interface CampaignStorage {\n /** Ensure a directory exists (recursive). No-op for in-memory. */\n ensureDir(dir: string): void\n /** Does this path exist (as a written file or an ensured dir)? */\n exists(path: string): boolean\n /** Read a UTF-8 file; `undefined` when missing or unreadable. */\n read(path: string): string | undefined\n /** Write a file (string or bytes). Parent dir is assumed ensured. */\n write(path: string, content: string | Uint8Array): void\n}\n\n/** Node-filesystem storage — the default. Lazily requires `node:fs` so the\n * module imports cleanly in non-Node runtimes (where the caller passes\n * `inMemoryCampaignStorage` instead and never constructs this).\n *\n * `createRequire(import.meta.url)` is the ESM-native lazy require — a bare\n * `require` is a ReferenceError under `\"type\": \"module\"`, which is exactly\n * the shape this package publishes. */\nexport function fsCampaignStorage(): CampaignStorage {\n const nodeRequire = createRequire(import.meta.url)\n const { existsSync, mkdirSync, readFileSync, writeFileSync } = nodeRequire(\n 'node:fs',\n ) as typeof import('node:fs')\n return {\n ensureDir(dir) {\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true })\n },\n exists(path) {\n return existsSync(path)\n },\n read(path) {\n try {\n return readFileSync(path, 'utf8')\n } catch {\n return undefined\n }\n },\n write(path, content) {\n writeFileSync(path, content as Uint8Array)\n },\n }\n}\n\n/** In-memory storage for filesystem-less runtimes. Artifacts + trace spans\n * live in a `Map` for the duration of the run; the `CampaignResult` is\n * fully populated, but nothing is persisted to disk. */\nexport function inMemoryCampaignStorage(): CampaignStorage {\n const files = new Map<string, string | Uint8Array>()\n const dirs = new Set<string>()\n return {\n ensureDir(dir) {\n dirs.add(dir)\n },\n exists(path) {\n return files.has(path) || dirs.has(path)\n },\n read(path) {\n const value = files.get(path)\n if (value === undefined) return undefined\n return typeof value === 'string' ? value : new TextDecoder().decode(value)\n },\n write(path, content) {\n files.set(path, content)\n },\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,20 +1,32 @@
1
1
  import {
2
2
  analyzeTraces
3
- } from "./chunk-TBDR6PAI.js";
3
+ } from "./chunk-IZCEK2HR.js";
4
4
  import {
5
+ LLM_CACHED_TOKEN_ATTR_KEYS,
6
+ LLM_COST_ATTR_KEYS,
7
+ LLM_COST_USD,
8
+ LLM_INPUT_TOKENS,
9
+ LLM_INPUT_TOKEN_ATTR_KEYS,
10
+ LLM_MODEL_ATTR_KEYS,
11
+ LLM_MODEL_NAME,
12
+ LLM_OUTPUT_TOKENS,
13
+ LLM_OUTPUT_TOKEN_ATTR_KEYS,
14
+ OPENINFERENCE_SPAN_KIND,
15
+ TOOL_NAME,
5
16
  compareSpanTime,
6
17
  firstNumberAttr,
7
18
  firstStringAttr,
8
19
  projectOtlpFlatLine,
9
- spanEpochMillis
10
- } from "./chunk-QMUEXQJS.js";
20
+ spanEpochMillis,
21
+ traceSpanKindToOpenInferenceKind
22
+ } from "./chunk-YBIGNSCZ.js";
11
23
  import {
12
24
  defaultProviderRedactor,
13
25
  providerFromBaseUrl
14
26
  } from "./chunk-PC4UYEBM.js";
15
27
  import {
16
28
  validateRunRecord
17
- } from "./chunk-KWRRMR3J.js";
29
+ } from "./chunk-LO6IOIJ2.js";
18
30
  import {
19
31
  canonicalize,
20
32
  hashJson
@@ -350,14 +362,26 @@ function nanoToIso(nano) {
350
362
  return Number.isFinite(ms) ? new Date(ms).toISOString() : (/* @__PURE__ */ new Date(0)).toISOString();
351
363
  }
352
364
  function applyOpenInference(attrs) {
353
- if ("llm.model" in attrs && !("llm.model_name" in attrs)) {
354
- attrs["llm.model_name"] = attrs["llm.model"];
365
+ if ("llm.model" in attrs && !(LLM_MODEL_NAME in attrs)) {
366
+ attrs[LLM_MODEL_NAME] = attrs["llm.model"];
355
367
  }
356
- if ("tool.name" in attrs && !("inference.tool.name" in attrs)) {
357
- attrs["inference.tool.name"] = attrs["tool.name"];
368
+ if ("llm.input_tokens" in attrs && !(LLM_INPUT_TOKENS in attrs)) {
369
+ attrs[LLM_INPUT_TOKENS] = attrs["llm.input_tokens"];
358
370
  }
359
- if ("span.kind" in attrs && !("openinference.span.kind" in attrs)) {
360
- attrs["openinference.span.kind"] = String(attrs["span.kind"]).toUpperCase();
371
+ if ("inference.llm.input_tokens" in attrs && !(LLM_INPUT_TOKENS in attrs)) {
372
+ attrs[LLM_INPUT_TOKENS] = attrs["inference.llm.input_tokens"];
373
+ }
374
+ if ("llm.output_tokens" in attrs && !(LLM_OUTPUT_TOKENS in attrs)) {
375
+ attrs[LLM_OUTPUT_TOKENS] = attrs["llm.output_tokens"];
376
+ }
377
+ if ("inference.llm.output_tokens" in attrs && !(LLM_OUTPUT_TOKENS in attrs)) {
378
+ attrs[LLM_OUTPUT_TOKENS] = attrs["inference.llm.output_tokens"];
379
+ }
380
+ if (TOOL_NAME in attrs && !("inference.tool.name" in attrs)) {
381
+ attrs["inference.tool.name"] = attrs[TOOL_NAME];
382
+ }
383
+ if ("span.kind" in attrs && !(OPENINFERENCE_SPAN_KIND in attrs)) {
384
+ attrs[OPENINFERENCE_SPAN_KIND] = String(attrs["span.kind"]).toUpperCase();
361
385
  }
362
386
  }
363
387
  function flattenOtlpExportToNdjson(otlpExport, opts = {}) {
@@ -400,39 +424,6 @@ function flattenOtlpExportToNdjson(otlpExport, opts = {}) {
400
424
  }
401
425
 
402
426
  // src/trace-analyst/otlp-to-run-records.ts
403
- var INPUT_TOKEN_KEYS = [
404
- "llm.input_tokens",
405
- "inference.llm.input_tokens",
406
- "llm.token_count.prompt",
407
- "gen_ai.usage.input_tokens",
408
- "gen_ai.usage.prompt_tokens"
409
- ];
410
- var OUTPUT_TOKEN_KEYS = [
411
- "llm.output_tokens",
412
- "inference.llm.output_tokens",
413
- "llm.token_count.completion",
414
- "gen_ai.usage.output_tokens",
415
- "gen_ai.usage.completion_tokens"
416
- ];
417
- var CACHED_TOKEN_KEYS = [
418
- "llm.cached_tokens",
419
- "inference.llm.cached_tokens",
420
- "llm.token_count.prompt_cache_hit",
421
- "gen_ai.usage.cached_tokens"
422
- ];
423
- var COST_KEYS = [
424
- "llm.cost_usd",
425
- "inference.llm.cost.total",
426
- "llm.cost.total",
427
- "gen_ai.usage.cost"
428
- ];
429
- var MODEL_KEYS = [
430
- "llm.model_name",
431
- "inference.llm.model_name",
432
- "llm.model",
433
- "gen_ai.request.model",
434
- "gen_ai.response.model"
435
- ];
436
427
  function otlpToRunRecords(otlpJsonl, opts) {
437
428
  return otlpToTraceRunRecords(otlpJsonl, opts).map((r) => r.record);
438
429
  }
@@ -538,16 +529,16 @@ function aggregateTrace(traceId, spans, fallbackModel) {
538
529
  if (s.end_time && (!latest || compareSpanTime(s.end_time, latest) > 0)) latest = s.end_time;
539
530
  if (s.kind === "LLM") {
540
531
  llmSpanCount += 1;
541
- const i = firstNumberAttr(s.attributes, INPUT_TOKEN_KEYS);
542
- const o = firstNumberAttr(s.attributes, OUTPUT_TOKEN_KEYS);
543
- const c = firstNumberAttr(s.attributes, CACHED_TOKEN_KEYS);
532
+ const i = firstNumberAttr(s.attributes, LLM_INPUT_TOKEN_ATTR_KEYS);
533
+ const o = firstNumberAttr(s.attributes, LLM_OUTPUT_TOKEN_ATTR_KEYS);
534
+ const c = firstNumberAttr(s.attributes, LLM_CACHED_TOKEN_ATTR_KEYS);
544
535
  if (i !== null) input += i;
545
536
  if (o !== null) output += o;
546
537
  if (c !== null) {
547
538
  cached += c;
548
539
  sawCached = true;
549
540
  }
550
- const m = firstStringAttr(s.attributes, MODEL_KEYS) ?? s.model_name;
541
+ const m = firstStringAttr(s.attributes, LLM_MODEL_ATTR_KEYS) ?? s.model_name;
551
542
  if (m) modelVotes.set(m, (modelVotes.get(m) ?? 0) + 1);
552
543
  } else if (s.kind === "TOOL") {
553
544
  toolSpanCount += 1;
@@ -599,7 +590,7 @@ function resolveCost(opts, agg, spans) {
599
590
  let sawCost = false;
600
591
  for (const s of spans) {
601
592
  if (s.kind !== "LLM") continue;
602
- const c = firstNumberAttr(s.attributes, COST_KEYS);
593
+ const c = firstNumberAttr(s.attributes, LLM_COST_ATTR_KEYS);
603
594
  if (c !== null) {
604
595
  perSpanCost += c;
605
596
  sawCost = true;
@@ -642,7 +633,7 @@ function topVote(votes) {
642
633
  }
643
634
  function firstModelAttr(spans) {
644
635
  for (const s of spans) {
645
- const m = firstStringAttr(s.attributes, MODEL_KEYS) ?? s.model_name;
636
+ const m = firstStringAttr(s.attributes, LLM_MODEL_ATTR_KEYS) ?? s.model_name;
646
637
  if (m) return m;
647
638
  }
648
639
  return null;
@@ -1222,16 +1213,16 @@ function spanToOtlp(span, traceId, events) {
1222
1213
  }
1223
1214
  function flattenSpanAttributes(span) {
1224
1215
  const base = {
1225
- "span.kind": span.kind
1216
+ [OPENINFERENCE_SPAN_KIND]: traceSpanKindToOpenInferenceKind(span.kind)
1226
1217
  };
1227
1218
  if (span.kind === "llm") {
1228
- base["llm.model"] = span.model;
1229
- if (span.inputTokens !== void 0) base["llm.input_tokens"] = span.inputTokens;
1230
- if (span.outputTokens !== void 0) base["llm.output_tokens"] = span.outputTokens;
1231
- if (span.costUsd !== void 0) base["llm.cost_usd"] = span.costUsd;
1219
+ base[LLM_MODEL_NAME] = span.model;
1220
+ if (span.inputTokens !== void 0) base[LLM_INPUT_TOKENS] = span.inputTokens;
1221
+ if (span.outputTokens !== void 0) base[LLM_OUTPUT_TOKENS] = span.outputTokens;
1222
+ if (span.costUsd !== void 0) base[LLM_COST_USD] = span.costUsd;
1232
1223
  if (span.finishReason) base["llm.finish_reason"] = span.finishReason;
1233
1224
  } else if (span.kind === "tool") {
1234
- base["tool.name"] = span.toolName;
1225
+ base[TOOL_NAME] = span.toolName;
1235
1226
  if (span.latencyMs !== void 0) base["tool.latency_ms"] = span.latencyMs;
1236
1227
  } else if (span.kind === "retrieval") {
1237
1228
  base["retrieval.query"] = span.query;
@@ -1441,12 +1432,12 @@ function parseHeadersFromEnv() {
1441
1432
  function toOtlpSpan(span) {
1442
1433
  const endedAt = span.endedAt ?? span.startedAt;
1443
1434
  const attrs = {
1444
- "span.kind": span.kind
1435
+ [OPENINFERENCE_SPAN_KIND]: traceSpanKindToOpenInferenceKind(span.kind)
1445
1436
  };
1446
- if (span.model) attrs["llm.model"] = span.model;
1447
- if (span.inputTokens !== void 0) attrs["llm.input_tokens"] = span.inputTokens;
1448
- if (span.outputTokens !== void 0) attrs["llm.output_tokens"] = span.outputTokens;
1449
- if (span.costUsd !== void 0) attrs["llm.cost_usd"] = span.costUsd;
1437
+ if (span.model) attrs[LLM_MODEL_NAME] = span.model;
1438
+ if (span.inputTokens !== void 0) attrs[LLM_INPUT_TOKENS] = span.inputTokens;
1439
+ if (span.outputTokens !== void 0) attrs[LLM_OUTPUT_TOKENS] = span.outputTokens;
1440
+ if (span.costUsd !== void 0) attrs[LLM_COST_USD] = span.costUsd;
1450
1441
  if (span.attributes) {
1451
1442
  for (const [k, v] of Object.entries(span.attributes)) {
1452
1443
  if (typeof v === "string" || typeof v === "number" || typeof v === "boolean") attrs[k] = v;
@@ -1588,7 +1579,7 @@ function projectCell(args) {
1588
1579
  const runEnd = msToIso(run.endedAt ?? run.startedAt);
1589
1580
  const runStatus = run.outcome?.failureClass && run.outcome.failureClass !== "success" ? "STATUS_CODE_ERROR" : "STATUS_CODE_OK";
1590
1581
  const runAttrs = {
1591
- "openinference.span.kind": "AGENT",
1582
+ [OPENINFERENCE_SPAN_KIND]: "AGENT",
1592
1583
  "agent.name": agentName,
1593
1584
  "agent.workflow.name": serviceName,
1594
1585
  ...runAttributes(run)
@@ -1695,13 +1686,13 @@ function readMergedShards(cellDir, name, idKey) {
1695
1686
  }
1696
1687
  function spanToAttributes(span, events) {
1697
1688
  const attrs = {
1698
- "openinference.span.kind": spanKindToOpenInferenceKind(span.kind)
1689
+ [OPENINFERENCE_SPAN_KIND]: traceSpanKindToOpenInferenceKind(span.kind)
1699
1690
  };
1700
1691
  if (span.kind === "llm") {
1701
- attrs["llm.model_name"] = span.model;
1702
- if (span.inputTokens !== void 0) attrs["llm.token_count.prompt"] = span.inputTokens;
1703
- if (span.outputTokens !== void 0) attrs["llm.token_count.completion"] = span.outputTokens;
1704
- if (span.costUsd !== void 0) attrs["llm.cost_usd"] = span.costUsd;
1692
+ attrs[LLM_MODEL_NAME] = span.model;
1693
+ if (span.inputTokens !== void 0) attrs[LLM_INPUT_TOKENS] = span.inputTokens;
1694
+ if (span.outputTokens !== void 0) attrs[LLM_OUTPUT_TOKENS] = span.outputTokens;
1695
+ if (span.costUsd !== void 0) attrs[LLM_COST_USD] = span.costUsd;
1705
1696
  if (span.finishReason) attrs["llm.finish_reason"] = span.finishReason;
1706
1697
  if (Array.isArray(span.messages)) {
1707
1698
  attrs["llm.input_messages"] = JSON.stringify(span.messages.slice(-6));
@@ -1710,7 +1701,7 @@ function spanToAttributes(span, events) {
1710
1701
  attrs["llm.output_messages"] = JSON.stringify([{ role: "assistant", content: span.output }]);
1711
1702
  }
1712
1703
  } else if (span.kind === "tool") {
1713
- attrs["tool.name"] = span.toolName;
1704
+ attrs[TOOL_NAME] = span.toolName;
1714
1705
  if (span.latencyMs !== void 0) attrs["tool.latency_ms"] = span.latencyMs;
1715
1706
  attrs["input.value"] = safeStringify(span.args);
1716
1707
  if (span.result !== void 0) attrs["output.value"] = safeStringify(span.result);
@@ -1741,24 +1732,6 @@ function spanKindToOtlpKind(kind) {
1741
1732
  return "SPAN_KIND_INTERNAL";
1742
1733
  }
1743
1734
  }
1744
- function spanKindToOpenInferenceKind(kind) {
1745
- switch (kind) {
1746
- case "llm":
1747
- return "LLM";
1748
- case "tool":
1749
- return "TOOL";
1750
- case "retrieval":
1751
- return "CHAIN";
1752
- case "judge":
1753
- return "GUARDRAIL";
1754
- case "sandbox":
1755
- return "CHAIN";
1756
- case "agent":
1757
- return "AGENT";
1758
- default:
1759
- return "SPAN";
1760
- }
1761
- }
1762
1735
  function toLine(args) {
1763
1736
  return {
1764
1737
  trace_id: args.traceId,
@@ -1981,4 +1954,4 @@ export {
1981
1954
  createReplayFetch,
1982
1955
  iterateRawCalls
1983
1956
  };
1984
- //# sourceMappingURL=chunk-CTBHKLEU.js.map
1957
+ //# sourceMappingURL=chunk-77T4STFI.js.map