@tangle-network/agent-eval 0.93.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 (1087) 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 +6 -66
  47. package/dist/analyst/index.js.map +1 -1
  48. package/dist/{kind-factory-5b7xXXOr.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-zoGHUQEH.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-2VVIL04s.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-DE36-Np7.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/index.js +1 -1
  123. package/dist/belief-state/ope.d.ts +17 -0
  124. package/dist/belief-state/ope.d.ts.map +1 -0
  125. package/dist/belief-state/ope.test.d.ts +2 -0
  126. package/dist/belief-state/ope.test.d.ts.map +1 -0
  127. package/dist/belief-state/phase0-measurement.d.ts +55 -0
  128. package/dist/belief-state/phase0-measurement.d.ts.map +1 -0
  129. package/dist/belief-state/report.d.ts +17 -0
  130. package/dist/belief-state/report.d.ts.map +1 -0
  131. package/dist/belief-state/report.test.d.ts +2 -0
  132. package/dist/belief-state/report.test.d.ts.map +1 -0
  133. package/dist/belief-state/research-evidence.d.ts +23 -0
  134. package/dist/belief-state/research-evidence.d.ts.map +1 -0
  135. package/dist/belief-state/research-evidence.test.d.ts +2 -0
  136. package/dist/belief-state/research-evidence.test.d.ts.map +1 -0
  137. package/dist/belief-state/runtime-benchmark-corpus.d.ts +32 -0
  138. package/dist/belief-state/runtime-benchmark-corpus.d.ts.map +1 -0
  139. package/dist/belief-state/runtime-hooks.d.ts +87 -0
  140. package/dist/belief-state/runtime-hooks.d.ts.map +1 -0
  141. package/dist/belief-state/runtime-hooks.test.d.ts +2 -0
  142. package/dist/belief-state/runtime-hooks.test.d.ts.map +1 -0
  143. package/dist/belief-state/selective.d.ts +15 -0
  144. package/dist/belief-state/selective.d.ts.map +1 -0
  145. package/dist/belief-state/selective.test.d.ts +2 -0
  146. package/dist/belief-state/selective.test.d.ts.map +1 -0
  147. package/dist/belief-state/shadow-probe.d.ts +80 -0
  148. package/dist/belief-state/shadow-probe.d.ts.map +1 -0
  149. package/dist/belief-state/shadow-probe.test.d.ts +2 -0
  150. package/dist/belief-state/shadow-probe.test.d.ts.map +1 -0
  151. package/dist/belief-state/types.d.ts +195 -0
  152. package/dist/belief-state/types.d.ts.map +1 -0
  153. package/dist/belief-state/types.test.d.ts +2 -0
  154. package/dist/belief-state/types.test.d.ts.map +1 -0
  155. package/dist/benchmark.d.ts +14 -0
  156. package/dist/benchmark.d.ts.map +1 -0
  157. package/dist/benchmarks/index.d.ts +23 -4
  158. package/dist/benchmarks/index.d.ts.map +1 -0
  159. package/dist/benchmarks/routing/dataset.d.ts +34 -0
  160. package/dist/benchmarks/routing/dataset.d.ts.map +1 -0
  161. package/dist/benchmarks/routing/index.d.ts +34 -0
  162. package/dist/benchmarks/routing/index.d.ts.map +1 -0
  163. package/dist/benchmarks/types.d.ts +49 -0
  164. package/dist/benchmarks/types.d.ts.map +1 -0
  165. package/dist/bisector.d.ts +81 -0
  166. package/dist/bisector.d.ts.map +1 -0
  167. package/dist/budget-guard.d.ts +31 -0
  168. package/dist/budget-guard.d.ts.map +1 -0
  169. package/dist/builder-eval/builder-session.d.ts +111 -0
  170. package/dist/builder-eval/builder-session.d.ts.map +1 -0
  171. package/dist/builder-eval/correlation.d.ts +32 -0
  172. package/dist/builder-eval/correlation.d.ts.map +1 -0
  173. package/dist/builder-eval/index.d.ts +5 -250
  174. package/dist/builder-eval/index.d.ts.map +1 -0
  175. package/dist/builder-eval/index.js +2 -2
  176. package/dist/builder-eval/project-registry.d.ts +51 -0
  177. package/dist/builder-eval/project-registry.d.ts.map +1 -0
  178. package/dist/builder-eval/three-layer-eval.d.ts +55 -0
  179. package/dist/builder-eval/three-layer-eval.d.ts.map +1 -0
  180. package/dist/campaign/analyst-surface.d.ts +108 -0
  181. package/dist/campaign/analyst-surface.d.ts.map +1 -0
  182. package/dist/campaign/analyst-surface.test.d.ts +2 -0
  183. package/dist/campaign/analyst-surface.test.d.ts.map +1 -0
  184. package/dist/campaign/auto-pr.d.ts +46 -0
  185. package/dist/campaign/auto-pr.d.ts.map +1 -0
  186. package/dist/campaign/distillation/agreement-judge.d.ts +69 -0
  187. package/dist/campaign/distillation/agreement-judge.d.ts.map +1 -0
  188. package/dist/campaign/distillation/cli.d.ts +35 -0
  189. package/dist/campaign/distillation/cli.d.ts.map +1 -0
  190. package/dist/campaign/distillation/distillation.test.d.ts +2 -0
  191. package/dist/campaign/distillation/distillation.test.d.ts.map +1 -0
  192. package/dist/campaign/distillation/gold-scenarios.d.ts +54 -0
  193. package/dist/campaign/distillation/gold-scenarios.d.ts.map +1 -0
  194. package/dist/campaign/distillation/run-distillation.d.ts +119 -0
  195. package/dist/campaign/distillation/run-distillation.d.ts.map +1 -0
  196. package/dist/campaign/gates/compose.d.ts +12 -0
  197. package/dist/campaign/gates/compose.d.ts.map +1 -0
  198. package/dist/campaign/gates/default-production-gate.d.ts +58 -0
  199. package/dist/campaign/gates/default-production-gate.d.ts.map +1 -0
  200. package/dist/campaign/gates/heldout-gate.d.ts +12 -0
  201. package/dist/campaign/gates/heldout-gate.d.ts.map +1 -0
  202. package/dist/campaign/gates/promotion-policy.d.ts +125 -0
  203. package/dist/campaign/gates/promotion-policy.d.ts.map +1 -0
  204. package/dist/campaign/gates/promotion-policy.test.d.ts +2 -0
  205. package/dist/campaign/gates/promotion-policy.test.d.ts.map +1 -0
  206. package/dist/campaign/gates/sequential.d.ts +146 -0
  207. package/dist/campaign/gates/sequential.d.ts.map +1 -0
  208. package/dist/campaign/gates/sequential.test.d.ts +2 -0
  209. package/dist/campaign/gates/sequential.test.d.ts.map +1 -0
  210. package/dist/campaign/gates/statistical-heldout.d.ts +99 -0
  211. package/dist/campaign/gates/statistical-heldout.d.ts.map +1 -0
  212. package/dist/campaign/gates/statistical-heldout.test.d.ts +2 -0
  213. package/dist/campaign/gates/statistical-heldout.test.d.ts.map +1 -0
  214. package/dist/campaign/index.d.ts +38 -1341
  215. package/dist/campaign/index.d.ts.map +1 -0
  216. package/dist/campaign/index.js +1865 -1318
  217. package/dist/campaign/index.js.map +1 -1
  218. package/dist/campaign/labeled-store/fs-adapter.d.ts +59 -0
  219. package/dist/campaign/labeled-store/fs-adapter.d.ts.map +1 -0
  220. package/dist/campaign/presets/compare-proposers.d.ts +146 -0
  221. package/dist/campaign/presets/compare-proposers.d.ts.map +1 -0
  222. package/dist/campaign/presets/playback.d.ts +120 -0
  223. package/dist/campaign/presets/playback.d.ts.map +1 -0
  224. package/dist/campaign/presets/playback.test.d.ts +2 -0
  225. package/dist/campaign/presets/playback.test.d.ts.map +1 -0
  226. package/dist/campaign/presets/run-eval.d.ts +14 -0
  227. package/dist/campaign/presets/run-eval.d.ts.map +1 -0
  228. package/dist/campaign/presets/run-improvement-loop.d.ts +63 -0
  229. package/dist/campaign/presets/run-improvement-loop.d.ts.map +1 -0
  230. package/dist/campaign/presets/run-improvement-loop.test.d.ts +2 -0
  231. package/dist/campaign/presets/run-improvement-loop.test.d.ts.map +1 -0
  232. package/dist/campaign/presets/run-optimization.d.ts +92 -0
  233. package/dist/campaign/presets/run-optimization.d.ts.map +1 -0
  234. package/dist/campaign/presets/run-profile-matrix.d.ts +151 -0
  235. package/dist/campaign/presets/run-profile-matrix.d.ts.map +1 -0
  236. package/dist/campaign/presets/run-skill-opt.d.ts +96 -0
  237. package/dist/campaign/presets/run-skill-opt.d.ts.map +1 -0
  238. package/dist/campaign/proposers/_findings-text.d.ts +22 -0
  239. package/dist/campaign/proposers/_findings-text.d.ts.map +1 -0
  240. package/dist/campaign/proposers/ace.d.ts +33 -0
  241. package/dist/campaign/proposers/ace.d.ts.map +1 -0
  242. package/dist/campaign/proposers/ace.test.d.ts +2 -0
  243. package/dist/campaign/proposers/ace.test.d.ts.map +1 -0
  244. package/dist/campaign/proposers/analysis-edit.d.ts +32 -0
  245. package/dist/campaign/proposers/analysis-edit.d.ts.map +1 -0
  246. package/dist/campaign/proposers/evolutionary.d.ts +20 -0
  247. package/dist/campaign/proposers/evolutionary.d.ts.map +1 -0
  248. package/dist/campaign/proposers/fapo.d.ts +120 -0
  249. package/dist/campaign/proposers/fapo.d.ts.map +1 -0
  250. package/dist/campaign/proposers/gepa.d.ts +86 -0
  251. package/dist/campaign/proposers/gepa.d.ts.map +1 -0
  252. package/dist/campaign/proposers/halo.d.ts +44 -0
  253. package/dist/campaign/proposers/halo.d.ts.map +1 -0
  254. package/dist/campaign/proposers/halo.test.d.ts +2 -0
  255. package/dist/campaign/proposers/halo.test.d.ts.map +1 -0
  256. package/dist/campaign/proposers/memory.d.ts +47 -0
  257. package/dist/campaign/proposers/memory.d.ts.map +1 -0
  258. package/dist/campaign/proposers/memory.test.d.ts +2 -0
  259. package/dist/campaign/proposers/memory.test.d.ts.map +1 -0
  260. package/dist/campaign/proposers/skill-opt.d.ts +88 -0
  261. package/dist/campaign/proposers/skill-opt.d.ts.map +1 -0
  262. package/dist/campaign/proposers/trace-analyst.d.ts +48 -0
  263. package/dist/campaign/proposers/trace-analyst.d.ts.map +1 -0
  264. package/dist/campaign/proposers/trace-analyst.test.d.ts +2 -0
  265. package/dist/campaign/proposers/trace-analyst.test.d.ts.map +1 -0
  266. package/dist/campaign/provenance.d.ts +185 -0
  267. package/dist/campaign/provenance.d.ts.map +1 -0
  268. package/dist/campaign/run-campaign.d.ts +90 -0
  269. package/dist/campaign/run-campaign.d.ts.map +1 -0
  270. package/dist/campaign/score-utils.d.ts +26 -0
  271. package/dist/campaign/score-utils.d.ts.map +1 -0
  272. package/dist/campaign/skill-patch.d.ts +62 -0
  273. package/dist/campaign/skill-patch.d.ts.map +1 -0
  274. package/dist/campaign/storage.d.ts +38 -0
  275. package/dist/campaign/storage.d.ts.map +1 -0
  276. package/dist/{types-BU-7W85F.d.ts → campaign/types.d.ts} +98 -99
  277. package/dist/campaign/types.d.ts.map +1 -0
  278. package/dist/campaign/worktree/index.d.ts +53 -0
  279. package/dist/campaign/worktree/index.d.ts.map +1 -0
  280. package/dist/canary.d.ts +101 -0
  281. package/dist/canary.d.ts.map +1 -0
  282. package/dist/causal-attribution.d.ts +45 -0
  283. package/dist/causal-attribution.d.ts.map +1 -0
  284. package/dist/{chunk-TWS7AZEY.js → chunk-2T4EZACH.js} +2 -2
  285. package/dist/chunk-2T4EZACH.js.map +1 -0
  286. package/dist/{chunk-LMZQ2Z4U.js → chunk-56GC6VYO.js} +126 -1
  287. package/dist/chunk-56GC6VYO.js.map +1 -0
  288. package/dist/{chunk-QG2OVF2D.js → chunk-77T4STFI.js} +154 -112
  289. package/dist/chunk-77T4STFI.js.map +1 -0
  290. package/dist/{chunk-ZFIBGEOL.js → chunk-7QTQKIDD.js} +179 -178
  291. package/dist/chunk-7QTQKIDD.js.map +1 -0
  292. package/dist/{chunk-UMMZHCPB.js → chunk-AQ5WQAIV.js} +26 -9
  293. package/dist/chunk-AQ5WQAIV.js.map +1 -0
  294. package/dist/{chunk-CVVHBFGN.js → chunk-CWNP4DV4.js} +53 -5
  295. package/dist/chunk-CWNP4DV4.js.map +1 -0
  296. package/dist/{chunk-QS3RBQPI.js → chunk-D5KBVULY.js} +2 -2
  297. package/dist/chunk-DJWX3GVS.js +81 -0
  298. package/dist/chunk-DJWX3GVS.js.map +1 -0
  299. package/dist/{chunk-S6OZEZQK.js → chunk-HMA63UEO.js} +37 -9
  300. package/dist/{chunk-S6OZEZQK.js.map → chunk-HMA63UEO.js.map} +1 -1
  301. package/dist/{chunk-UHMJT4T7.js → chunk-IZCEK2HR.js} +2 -2
  302. package/dist/{chunk-6SOJM3VR.js → chunk-KKWJD5E6.js} +21 -21
  303. package/dist/chunk-KKWJD5E6.js.map +1 -0
  304. package/dist/{chunk-KWRRMR3J.js → chunk-LO6IOIJ2.js} +10 -10
  305. package/dist/chunk-LO6IOIJ2.js.map +1 -0
  306. package/dist/{chunk-L3JOU6XM.js → chunk-NACM5RS7.js} +3 -3
  307. package/dist/{chunk-E4GH6USR.js → chunk-NZEQVRH5.js} +2 -2
  308. package/dist/chunk-NZEQVRH5.js.map +1 -0
  309. package/dist/{chunk-XY4DDNEG.js → chunk-PSWWQXHF.js} +14 -89
  310. package/dist/chunk-PSWWQXHF.js.map +1 -0
  311. package/dist/{chunk-4FBZZIYD.js → chunk-QTMYW64F.js} +2 -2
  312. package/dist/{chunk-D3V5B42D.js → chunk-S4SYLDFX.js} +7 -4
  313. package/dist/chunk-S4SYLDFX.js.map +1 -0
  314. package/dist/{chunk-47X6LRCE.js → chunk-UFSG7ACU.js} +10 -7
  315. package/dist/chunk-UFSG7ACU.js.map +1 -0
  316. package/dist/{chunk-CY6U5S3X.js → chunk-URWVKRCS.js} +2 -2
  317. package/dist/{chunk-GSH6QNNS.js → chunk-X74V6ESX.js} +102 -79
  318. package/dist/chunk-X74V6ESX.js.map +1 -0
  319. package/dist/{chunk-QAY5UIJO.js → chunk-YBIGNSCZ.js} +178 -59
  320. package/dist/chunk-YBIGNSCZ.js.map +1 -0
  321. package/dist/{chunk-Y47J2LJ3.js → chunk-Z6L6YSU6.js} +5 -5
  322. package/dist/{chunk-T375SUOZ.js → chunk-ZOPLCJSY.js} +86 -31
  323. package/dist/chunk-ZOPLCJSY.js.map +1 -0
  324. package/dist/ci-gate.d.ts +44 -0
  325. package/dist/ci-gate.d.ts.map +1 -0
  326. package/dist/cli.d.ts +2 -0
  327. package/dist/cli.d.ts.map +1 -0
  328. package/dist/cli.js +2 -2
  329. package/dist/client.d.ts +77 -0
  330. package/dist/client.d.ts.map +1 -0
  331. package/dist/client.test.d.ts +2 -0
  332. package/dist/client.test.d.ts.map +1 -0
  333. package/dist/command-runner.d.ts +74 -0
  334. package/dist/command-runner.d.ts.map +1 -0
  335. package/dist/command-runner.test.d.ts +2 -0
  336. package/dist/command-runner.test.d.ts.map +1 -0
  337. package/dist/completion-verifier.d.ts +147 -0
  338. package/dist/completion-verifier.d.ts.map +1 -0
  339. package/dist/completion-verifier.test.d.ts +9 -0
  340. package/dist/completion-verifier.test.d.ts.map +1 -0
  341. package/dist/concurrency.d.ts +23 -0
  342. package/dist/concurrency.d.ts.map +1 -0
  343. package/dist/contamination-guard.d.ts +81 -0
  344. package/dist/contamination-guard.d.ts.map +1 -0
  345. package/dist/{analyze-runs-DwCEkpO_.d.ts → contract/analyze-runs.d.ts} +9 -10
  346. package/dist/contract/analyze-runs.d.ts.map +1 -0
  347. package/dist/contract/define-agent-eval.d.ts +52 -0
  348. package/dist/contract/define-agent-eval.d.ts.map +1 -0
  349. package/dist/contract/diff.d.ts +114 -0
  350. package/dist/contract/diff.d.ts.map +1 -0
  351. package/dist/contract/index.d.ts +106 -640
  352. package/dist/contract/index.d.ts.map +1 -0
  353. package/dist/contract/index.js +131 -21
  354. package/dist/contract/index.js.map +1 -1
  355. package/dist/{insight-report-BBwvOh6x.d.ts → contract/insight-report.d.ts} +16 -19
  356. package/dist/contract/insight-report.d.ts.map +1 -0
  357. package/dist/contract/insight-types-fwd.d.ts +7 -0
  358. package/dist/contract/insight-types-fwd.d.ts.map +1 -0
  359. package/dist/contract/intake/agent-trace.d.ts +97 -0
  360. package/dist/contract/intake/agent-trace.d.ts.map +1 -0
  361. package/dist/{code-agent-session-BO8nCnv3.d.ts → contract/intake/code-agent-session.d.ts} +15 -17
  362. package/dist/contract/intake/code-agent-session.d.ts.map +1 -0
  363. package/dist/contract/intake/feedback-table.d.ts +87 -0
  364. package/dist/contract/intake/feedback-table.d.ts.map +1 -0
  365. package/dist/contract/intake/index.d.ts +22 -0
  366. package/dist/contract/intake/index.d.ts.map +1 -0
  367. package/dist/contract/intake/otel-spans.d.ts +33 -0
  368. package/dist/contract/intake/otel-spans.d.ts.map +1 -0
  369. package/dist/contract/self-improve.d.ts +284 -0
  370. package/dist/contract/self-improve.d.ts.map +1 -0
  371. package/dist/{control-runtime-DuFBYg7A.d.ts → control-runtime.d.ts} +23 -26
  372. package/dist/control-runtime.d.ts.map +1 -0
  373. package/dist/control-runtime.test.d.ts +2 -0
  374. package/dist/control-runtime.test.d.ts.map +1 -0
  375. package/dist/control.d.ts +11 -9
  376. package/dist/control.d.ts.map +1 -0
  377. package/dist/control.js +2 -2
  378. package/dist/convergence.d.ts +29 -0
  379. package/dist/convergence.d.ts.map +1 -0
  380. package/dist/{cost-ledger-DuSqlw5B.d.ts → cost-ledger.d.ts} +10 -11
  381. package/dist/cost-ledger.d.ts.map +1 -0
  382. package/dist/cost-ledger.test.d.ts +2 -0
  383. package/dist/cost-ledger.test.d.ts.map +1 -0
  384. package/dist/cost-report.d.ts +43 -0
  385. package/dist/cost-report.d.ts.map +1 -0
  386. package/dist/cost-report.test.d.ts +2 -0
  387. package/dist/cost-report.test.d.ts.map +1 -0
  388. package/dist/cost-tracker.d.ts +76 -0
  389. package/dist/cost-tracker.d.ts.map +1 -0
  390. package/dist/{counterfactual-Dwibr5IW.d.ts → counterfactual.d.ts} +12 -13
  391. package/dist/counterfactual.d.ts.map +1 -0
  392. package/dist/cross-trace-diff.d.ts +56 -0
  393. package/dist/cross-trace-diff.d.ts.map +1 -0
  394. package/dist/{dataset-BbGkaN2I.d.ts → dataset.d.ts} +11 -14
  395. package/dist/dataset.d.ts.map +1 -0
  396. package/dist/deploy-gate-layer.d.ts +125 -0
  397. package/dist/deploy-gate-layer.d.ts.map +1 -0
  398. package/dist/deploy-gate-layer.test.d.ts +2 -0
  399. package/dist/deploy-gate-layer.test.d.ts.map +1 -0
  400. package/dist/description-length-gate.d.ts +119 -0
  401. package/dist/description-length-gate.d.ts.map +1 -0
  402. package/dist/detectors/edge.test.d.ts +2 -0
  403. package/dist/detectors/edge.test.d.ts.map +1 -0
  404. package/dist/detectors/index.d.ts +81 -0
  405. package/dist/detectors/index.d.ts.map +1 -0
  406. package/dist/detectors/index.test.d.ts +2 -0
  407. package/dist/detectors/index.test.d.ts.map +1 -0
  408. package/dist/diagnose/causal-sweep.d.ts +100 -0
  409. package/dist/diagnose/causal-sweep.d.ts.map +1 -0
  410. package/dist/diagnose/index.d.ts +36 -0
  411. package/dist/diagnose/index.d.ts.map +1 -0
  412. package/dist/diagnose/remediation.d.ts +68 -0
  413. package/dist/diagnose/remediation.d.ts.map +1 -0
  414. package/dist/diagnose/repair.d.ts +77 -0
  415. package/dist/diagnose/repair.d.ts.map +1 -0
  416. package/dist/diagnose.d.ts +1 -251
  417. package/dist/diagnose.js +2 -2
  418. package/dist/discover-personas.d.ts +35 -0
  419. package/dist/discover-personas.d.ts.map +1 -0
  420. package/dist/driver.d.ts +95 -0
  421. package/dist/driver.d.ts.map +1 -0
  422. package/dist/driver.test.d.ts +8 -0
  423. package/dist/driver.test.d.ts.map +1 -0
  424. package/dist/dual-agent-bench.d.ts +81 -0
  425. package/dist/dual-agent-bench.d.ts.map +1 -0
  426. package/dist/error-count-extractor.d.ts +47 -0
  427. package/dist/error-count-extractor.d.ts.map +1 -0
  428. package/dist/error-count-extractor.test.d.ts +2 -0
  429. package/dist/error-count-extractor.test.d.ts.map +1 -0
  430. package/dist/{errors-CzMUYo7b.d.ts → errors.d.ts} +10 -11
  431. package/dist/errors.d.ts.map +1 -0
  432. package/dist/{researcher-DE6Gpnb4.d.ts → eval-campaign.d.ts} +34 -156
  433. package/dist/eval-campaign.d.ts.map +1 -0
  434. package/dist/eval-campaign.test.d.ts +2 -0
  435. package/dist/eval-campaign.test.d.ts.map +1 -0
  436. package/dist/eval-tools.d.ts +55 -0
  437. package/dist/eval-tools.d.ts.map +1 -0
  438. package/dist/eval-trace-store.d.ts +107 -0
  439. package/dist/eval-trace-store.d.ts.map +1 -0
  440. package/dist/eval-trace-store.test.d.ts +2 -0
  441. package/dist/eval-trace-store.test.d.ts.map +1 -0
  442. package/dist/executor.d.ts +38 -0
  443. package/dist/executor.d.ts.map +1 -0
  444. package/dist/executor.test.d.ts +10 -0
  445. package/dist/executor.test.d.ts.map +1 -0
  446. package/dist/experiment-tracker.d.ts +178 -0
  447. package/dist/experiment-tracker.d.ts.map +1 -0
  448. package/dist/experiment-tracker.test.d.ts +2 -0
  449. package/dist/experiment-tracker.test.d.ts.map +1 -0
  450. package/dist/failure-taxonomy.d.ts +38 -0
  451. package/dist/failure-taxonomy.d.ts.map +1 -0
  452. package/dist/{feedback-trajectory-D9OVLrg9.d.ts → feedback-trajectory.d.ts} +36 -38
  453. package/dist/feedback-trajectory.d.ts.map +1 -0
  454. package/dist/feedback-trajectory.test.d.ts +2 -0
  455. package/dist/feedback-trajectory.test.d.ts.map +1 -0
  456. package/dist/flow-layer.d.ts +90 -0
  457. package/dist/flow-layer.d.ts.map +1 -0
  458. package/dist/flow-layer.test.d.ts +2 -0
  459. package/dist/flow-layer.test.d.ts.map +1 -0
  460. package/dist/fuzz/capsule.d.ts +46 -0
  461. package/dist/fuzz/capsule.d.ts.map +1 -0
  462. package/dist/fuzz/cube.d.ts +36 -0
  463. package/dist/fuzz/cube.d.ts.map +1 -0
  464. package/dist/fuzz/explorer-cost.test.d.ts +2 -0
  465. package/dist/fuzz/explorer-cost.test.d.ts.map +1 -0
  466. package/dist/fuzz/explorer.d.ts +64 -0
  467. package/dist/fuzz/explorer.d.ts.map +1 -0
  468. package/dist/fuzz/fuzz-agent.d.ts +16 -0
  469. package/dist/fuzz/fuzz-agent.d.ts.map +1 -0
  470. package/dist/fuzz/fuzz-agent.test.d.ts +2 -0
  471. package/dist/fuzz/fuzz-agent.test.d.ts.map +1 -0
  472. package/dist/fuzz/gates.d.ts +33 -0
  473. package/dist/fuzz/gates.d.ts.map +1 -0
  474. package/dist/fuzz/index.d.ts +26 -0
  475. package/dist/fuzz/index.d.ts.map +1 -0
  476. package/dist/fuzz/policies.d.ts +28 -0
  477. package/dist/fuzz/policies.d.ts.map +1 -0
  478. package/dist/fuzz/tools.d.ts +20 -0
  479. package/dist/fuzz/tools.d.ts.map +1 -0
  480. package/dist/fuzz/types.d.ts +307 -0
  481. package/dist/fuzz/types.d.ts.map +1 -0
  482. package/dist/fuzz.d.ts +1 -547
  483. package/dist/golden-matcher.d.ts +71 -0
  484. package/dist/golden-matcher.d.ts.map +1 -0
  485. package/dist/governance/eu-ai-act.d.ts +37 -0
  486. package/dist/governance/eu-ai-act.d.ts.map +1 -0
  487. package/dist/governance/index.d.ts +5 -135
  488. package/dist/governance/index.d.ts.map +1 -0
  489. package/dist/governance/nist-ai-rmf.d.ts +15 -0
  490. package/dist/governance/nist-ai-rmf.d.ts.map +1 -0
  491. package/dist/governance/soc2.d.ts +12 -0
  492. package/dist/governance/soc2.d.ts.map +1 -0
  493. package/dist/governance/types.d.ts +66 -0
  494. package/dist/governance/types.d.ts.map +1 -0
  495. package/dist/harness-optimizer.d.ts +82 -0
  496. package/dist/harness-optimizer.d.ts.map +1 -0
  497. package/dist/held-out-gate.d.ts +135 -0
  498. package/dist/held-out-gate.d.ts.map +1 -0
  499. package/dist/hosted/client.d.ts +73 -0
  500. package/dist/hosted/client.d.ts.map +1 -0
  501. package/dist/hosted/from-env.test.d.ts +8 -0
  502. package/dist/hosted/from-env.test.d.ts.map +1 -0
  503. package/dist/hosted/index.d.ts +10 -238
  504. package/dist/hosted/index.d.ts.map +1 -0
  505. package/dist/hosted/types.d.ts +159 -0
  506. package/dist/hosted/types.d.ts.map +1 -0
  507. package/dist/index.d.ts +277 -5643
  508. package/dist/index.d.ts.map +1 -0
  509. package/dist/index.js +317 -108
  510. package/dist/index.js.map +1 -1
  511. package/dist/integrity/backend-integrity.d.ts +71 -0
  512. package/dist/integrity/backend-integrity.d.ts.map +1 -0
  513. package/dist/integrity/preflight.d.ts +72 -0
  514. package/dist/integrity/preflight.d.ts.map +1 -0
  515. package/dist/integrity/preflight.test.d.ts +2 -0
  516. package/dist/integrity/preflight.test.d.ts.map +1 -0
  517. package/dist/integrity/single-backend.d.ts +67 -0
  518. package/dist/integrity/single-backend.d.ts.map +1 -0
  519. package/dist/intent-match-judge.d.ts +69 -0
  520. package/dist/intent-match-judge.d.ts.map +1 -0
  521. package/dist/intent-match-judge.test.d.ts +2 -0
  522. package/dist/intent-match-judge.test.d.ts.map +1 -0
  523. package/dist/{judge-calibration-0p2QcWNE.d.ts → judge-calibration.d.ts} +16 -17
  524. package/dist/judge-calibration.d.ts.map +1 -0
  525. package/dist/judge-ensemble.d.ts +66 -0
  526. package/dist/judge-ensemble.d.ts.map +1 -0
  527. package/dist/judge-ensemble.test.d.ts +8 -0
  528. package/dist/judge-ensemble.test.d.ts.map +1 -0
  529. package/dist/judge-families.d.ts +38 -0
  530. package/dist/judge-families.d.ts.map +1 -0
  531. package/dist/judge-panel.d.ts +65 -0
  532. package/dist/judge-panel.d.ts.map +1 -0
  533. package/dist/judge-retry.d.ts +70 -0
  534. package/dist/judge-retry.d.ts.map +1 -0
  535. package/dist/judge-runner.d.ts +36 -0
  536. package/dist/judge-runner.d.ts.map +1 -0
  537. package/dist/judge-runner.test.d.ts +2 -0
  538. package/dist/judge-runner.test.d.ts.map +1 -0
  539. package/dist/judges.d.ts +74 -0
  540. package/dist/judges.d.ts.map +1 -0
  541. package/dist/keyword-coverage-judge.d.ts +89 -0
  542. package/dist/keyword-coverage-judge.d.ts.map +1 -0
  543. package/dist/keyword-coverage-judge.test.d.ts +2 -0
  544. package/dist/keyword-coverage-judge.test.d.ts.map +1 -0
  545. package/dist/knowledge/index.d.ts +3 -103
  546. package/dist/knowledge/index.d.ts.map +1 -0
  547. package/dist/knowledge/readiness.d.ts +26 -0
  548. package/dist/knowledge/readiness.d.ts.map +1 -0
  549. package/dist/knowledge/types.d.ts +75 -0
  550. package/dist/knowledge/types.d.ts.map +1 -0
  551. package/dist/live-proof.d.ts +62 -0
  552. package/dist/live-proof.d.ts.map +1 -0
  553. package/dist/{llm-client-BeEcAokY.d.ts → llm-client.d.ts} +52 -23
  554. package/dist/llm-client.d.ts.map +1 -0
  555. package/dist/llm-client.test.d.ts +2 -0
  556. package/dist/llm-client.test.d.ts.map +1 -0
  557. package/dist/locked-jsonl-appender.d.ts +19 -0
  558. package/dist/locked-jsonl-appender.d.ts.map +1 -0
  559. package/dist/matrix/aggregation.d.ts +16 -0
  560. package/dist/matrix/aggregation.d.ts.map +1 -0
  561. package/dist/matrix/index.d.ts +12 -30
  562. package/dist/matrix/index.d.ts.map +1 -0
  563. package/dist/matrix/runner.d.ts +15 -0
  564. package/dist/matrix/runner.d.ts.map +1 -0
  565. package/dist/{types-mn5Aqk7x.d.ts → matrix/types.d.ts} +11 -15
  566. package/dist/matrix/types.d.ts.map +1 -0
  567. package/dist/meta-eval/calibration.d.ts +47 -0
  568. package/dist/meta-eval/calibration.d.ts.map +1 -0
  569. package/dist/meta-eval/correlation-study.d.ts +53 -0
  570. package/dist/meta-eval/correlation-study.d.ts.map +1 -0
  571. package/dist/meta-eval/index.d.ts +6 -181
  572. package/dist/meta-eval/index.d.ts.map +1 -0
  573. package/dist/meta-eval/index.js +1 -1
  574. package/dist/{outcome-store-rnXLEqSn.d.ts → meta-eval/outcome-store.d.ts} +7 -8
  575. package/dist/meta-eval/outcome-store.d.ts.map +1 -0
  576. package/dist/{rubric-predictive-validity-Cy_W-hWZ.d.ts → meta-eval/rubric-predictive-validity.d.ts} +8 -11
  577. package/dist/meta-eval/rubric-predictive-validity.d.ts.map +1 -0
  578. package/dist/meta-eval/sentinel.d.ts +169 -0
  579. package/dist/meta-eval/sentinel.d.ts.map +1 -0
  580. package/dist/metrics.d.ts +63 -0
  581. package/dist/metrics.d.ts.map +1 -0
  582. package/dist/model-seats.d.ts +71 -0
  583. package/dist/model-seats.d.ts.map +1 -0
  584. package/dist/model-seats.test.d.ts +2 -0
  585. package/dist/model-seats.test.d.ts.map +1 -0
  586. package/dist/muffled-gate-scanner.d.ts +102 -0
  587. package/dist/muffled-gate-scanner.d.ts.map +1 -0
  588. package/dist/{multi-layer-verifier-DUZXrPDA.d.ts → multi-layer-verifier.d.ts} +12 -15
  589. package/dist/multi-layer-verifier.d.ts.map +1 -0
  590. package/dist/multi-layer-verifier.test.d.ts +2 -0
  591. package/dist/multi-layer-verifier.test.d.ts.map +1 -0
  592. package/dist/multi-toolchain-layer.d.ts +80 -0
  593. package/dist/multi-toolchain-layer.d.ts.map +1 -0
  594. package/dist/multi-toolchain-layer.test.d.ts +2 -0
  595. package/dist/multi-toolchain-layer.test.d.ts.map +1 -0
  596. package/dist/multishot/default-tools.d.ts +34 -0
  597. package/dist/multishot/default-tools.d.ts.map +1 -0
  598. package/dist/multishot/index.d.ts +7 -290
  599. package/dist/multishot/index.d.ts.map +1 -0
  600. package/dist/multishot/index.js.map +1 -1
  601. package/dist/multishot/judges.d.ts +32 -0
  602. package/dist/multishot/judges.d.ts.map +1 -0
  603. package/dist/multishot/matrix.d.ts +107 -0
  604. package/dist/multishot/matrix.d.ts.map +1 -0
  605. package/dist/multishot/multishot.d.ts +23 -0
  606. package/dist/multishot/multishot.d.ts.map +1 -0
  607. package/dist/multishot/router.d.ts +37 -0
  608. package/dist/multishot/router.d.ts.map +1 -0
  609. package/dist/multishot/types.d.ts +60 -0
  610. package/dist/multishot/types.d.ts.map +1 -0
  611. package/dist/observability.d.ts +71 -0
  612. package/dist/observability.d.ts.map +1 -0
  613. package/dist/openapi.json +1 -1
  614. package/dist/oracle.d.ts +55 -0
  615. package/dist/oracle.d.ts.map +1 -0
  616. package/dist/orthogonality.d.ts +35 -0
  617. package/dist/orthogonality.d.ts.map +1 -0
  618. package/dist/otel-pipeline.d.ts +31 -0
  619. package/dist/otel-pipeline.d.ts.map +1 -0
  620. package/dist/paraphrase.d.ts +107 -0
  621. package/dist/paraphrase.d.ts.map +1 -0
  622. package/dist/{pareto-E-pembql.d.ts → pareto.d.ts} +9 -10
  623. package/dist/pareto.d.ts.map +1 -0
  624. package/dist/partition-held-out.d.ts +70 -0
  625. package/dist/partition-held-out.d.ts.map +1 -0
  626. package/dist/partition-held-out.test.d.ts +2 -0
  627. package/dist/partition-held-out.test.d.ts.map +1 -0
  628. package/dist/perf/index.d.ts +13 -119
  629. package/dist/perf/index.d.ts.map +1 -0
  630. package/dist/perf/integrity.d.ts +30 -0
  631. package/dist/perf/integrity.d.ts.map +1 -0
  632. package/dist/perf/journey.d.ts +45 -0
  633. package/dist/perf/journey.d.ts.map +1 -0
  634. package/dist/perf/ratchet.d.ts +47 -0
  635. package/dist/perf/ratchet.d.ts.map +1 -0
  636. package/dist/pipelines/budget-breach.d.ts +31 -0
  637. package/dist/pipelines/budget-breach.d.ts.map +1 -0
  638. package/dist/pipelines/budget-breach.test.d.ts +2 -0
  639. package/dist/pipelines/budget-breach.test.d.ts.map +1 -0
  640. package/dist/pipelines/failure-cluster.d.ts +38 -0
  641. package/dist/pipelines/failure-cluster.d.ts.map +1 -0
  642. package/dist/pipelines/failure-cluster.test.d.ts +2 -0
  643. package/dist/pipelines/failure-cluster.test.d.ts.map +1 -0
  644. package/dist/pipelines/first-divergence.d.ts +26 -0
  645. package/dist/pipelines/first-divergence.d.ts.map +1 -0
  646. package/dist/pipelines/first-divergence.test.d.ts +2 -0
  647. package/dist/pipelines/first-divergence.test.d.ts.map +1 -0
  648. package/dist/pipelines/index.d.ts +8 -173
  649. package/dist/pipelines/index.d.ts.map +1 -0
  650. package/dist/pipelines/index.js +40 -15
  651. package/dist/pipelines/index.js.map +1 -1
  652. package/dist/pipelines/judge-agreement.d.ts +26 -0
  653. package/dist/pipelines/judge-agreement.d.ts.map +1 -0
  654. package/dist/pipelines/judge-agreement.test.d.ts +2 -0
  655. package/dist/pipelines/judge-agreement.test.d.ts.map +1 -0
  656. package/dist/pipelines/regression.d.ts +23 -0
  657. package/dist/pipelines/regression.d.ts.map +1 -0
  658. package/dist/pipelines/regression.test.d.ts +2 -0
  659. package/dist/pipelines/regression.test.d.ts.map +1 -0
  660. package/dist/pipelines/stuck-loop.d.ts +32 -0
  661. package/dist/pipelines/stuck-loop.d.ts.map +1 -0
  662. package/dist/pipelines/stuck-loop.test.d.ts +2 -0
  663. package/dist/pipelines/stuck-loop.test.d.ts.map +1 -0
  664. package/dist/pipelines/tool-waste.d.ts +34 -0
  665. package/dist/pipelines/tool-waste.d.ts.map +1 -0
  666. package/dist/pipelines/tool-waste.test.d.ts +2 -0
  667. package/dist/pipelines/tool-waste.test.d.ts.map +1 -0
  668. package/dist/playbook.d.ts +16 -0
  669. package/dist/playbook.d.ts.map +1 -0
  670. package/dist/pr-review-benchmark.d.ts +88 -0
  671. package/dist/pr-review-benchmark.d.ts.map +1 -0
  672. package/dist/pr-review-benchmark.test.d.ts +2 -0
  673. package/dist/pr-review-benchmark.test.d.ts.map +1 -0
  674. package/dist/pre-registration.d.ts +125 -0
  675. package/dist/pre-registration.d.ts.map +1 -0
  676. package/dist/prm/builtin-rubrics.d.ts +33 -0
  677. package/dist/prm/builtin-rubrics.d.ts.map +1 -0
  678. package/dist/prm/index.d.ts +5 -100
  679. package/dist/prm/index.d.ts.map +1 -0
  680. package/dist/prm/index.js +55 -12
  681. package/dist/prm/index.js.map +1 -1
  682. package/dist/prm/inference.d.ts +29 -0
  683. package/dist/prm/inference.d.ts.map +1 -0
  684. package/dist/prm/inference.test.d.ts +2 -0
  685. package/dist/prm/inference.test.d.ts.map +1 -0
  686. package/dist/{rubric-BOfxn4ja.d.ts → prm/rubric.d.ts} +10 -13
  687. package/dist/prm/rubric.d.ts.map +1 -0
  688. package/dist/prm/training-export.d.ts +38 -0
  689. package/dist/prm/training-export.d.ts.map +1 -0
  690. package/dist/produced-state.d.ts +63 -0
  691. package/dist/produced-state.d.ts.map +1 -0
  692. package/dist/produced-state.test.d.ts +8 -0
  693. package/dist/produced-state.test.d.ts.map +1 -0
  694. package/dist/profile/baselines.d.ts +37 -0
  695. package/dist/profile/baselines.d.ts.map +1 -0
  696. package/dist/profile/index.d.ts +105 -0
  697. package/dist/profile/index.d.ts.map +1 -0
  698. package/dist/promotion-gate.d.ts +93 -0
  699. package/dist/promotion-gate.d.ts.map +1 -0
  700. package/dist/prompt-registry.d.ts +41 -0
  701. package/dist/prompt-registry.d.ts.map +1 -0
  702. package/dist/propose-review-control.d.ts +49 -0
  703. package/dist/propose-review-control.d.ts.map +1 -0
  704. package/dist/propose-review-control.test.d.ts +2 -0
  705. package/dist/propose-review-control.test.d.ts.map +1 -0
  706. package/dist/propose-review.d.ts +155 -0
  707. package/dist/propose-review.d.ts.map +1 -0
  708. package/dist/{red-team-BXHil6c8.d.ts → red-team.d.ts} +14 -16
  709. package/dist/red-team.d.ts.map +1 -0
  710. package/dist/reference-replay-steering.d.ts +11 -0
  711. package/dist/reference-replay-steering.d.ts.map +1 -0
  712. package/dist/reference-replay.d.ts +176 -0
  713. package/dist/reference-replay.d.ts.map +1 -0
  714. package/dist/reflective-mutation.d.ts +79 -0
  715. package/dist/reflective-mutation.d.ts.map +1 -0
  716. package/dist/registry.d.ts +31 -0
  717. package/dist/registry.d.ts.map +1 -0
  718. package/dist/release-confidence.d.ts +128 -0
  719. package/dist/release-confidence.d.ts.map +1 -0
  720. package/dist/release-report.d.ts +11 -0
  721. package/dist/release-report.d.ts.map +1 -0
  722. package/dist/replay.d.ts +120 -0
  723. package/dist/replay.d.ts.map +1 -0
  724. package/dist/reporter.d.ts +14 -0
  725. package/dist/reporter.d.ts.map +1 -0
  726. package/dist/reporting.d.ts +15 -15
  727. package/dist/reporting.d.ts.map +1 -0
  728. package/dist/reporting.js +3 -3
  729. package/dist/researcher.d.ts +140 -0
  730. package/dist/researcher.d.ts.map +1 -0
  731. package/dist/reviewer.d.ts +118 -0
  732. package/dist/reviewer.d.ts.map +1 -0
  733. package/dist/reviewer.test.d.ts +2 -0
  734. package/dist/reviewer.test.d.ts.map +1 -0
  735. package/dist/reward-model-export.d.ts +60 -0
  736. package/dist/reward-model-export.d.ts.map +1 -0
  737. package/dist/rl/active-curriculum.d.ts +110 -0
  738. package/dist/rl/active-curriculum.d.ts.map +1 -0
  739. package/dist/rl/adaptation-eval.d.ts +109 -0
  740. package/dist/rl/adaptation-eval.d.ts.map +1 -0
  741. package/dist/{adversarial-DIVcDoI_.d.ts → rl/adversarial.d.ts} +6 -7
  742. package/dist/rl/adversarial.d.ts.map +1 -0
  743. package/dist/rl/compute-curves.d.ts +127 -0
  744. package/dist/rl/compute-curves.d.ts.map +1 -0
  745. package/dist/rl/contamination.d.ts +117 -0
  746. package/dist/rl/contamination.d.ts.map +1 -0
  747. package/dist/rl/corpus.d.ts +55 -0
  748. package/dist/rl/corpus.d.ts.map +1 -0
  749. package/dist/rl/corpus.test.d.ts +2 -0
  750. package/dist/rl/corpus.test.d.ts.map +1 -0
  751. package/dist/rl/dataset.d.ts +102 -0
  752. package/dist/rl/dataset.d.ts.map +1 -0
  753. package/dist/rl/dataset.test.d.ts +2 -0
  754. package/dist/rl/dataset.test.d.ts.map +1 -0
  755. package/dist/rl/exporters.d.ts +141 -0
  756. package/dist/rl/exporters.d.ts.map +1 -0
  757. package/dist/rl/index.d.ts +49 -0
  758. package/dist/rl/index.d.ts.map +1 -0
  759. package/dist/{off-policy-DiwuKKg7.d.ts → rl/off-policy.d.ts} +8 -9
  760. package/dist/rl/off-policy.d.ts.map +1 -0
  761. package/dist/rl/predictive-validity-researcher.d.ts +69 -0
  762. package/dist/rl/predictive-validity-researcher.d.ts.map +1 -0
  763. package/dist/rl/preferences.d.ts +141 -0
  764. package/dist/rl/preferences.d.ts.map +1 -0
  765. package/dist/rl/process-reward.d.ts +122 -0
  766. package/dist/rl/process-reward.d.ts.map +1 -0
  767. package/dist/rl/reward-hacking.d.ts +104 -0
  768. package/dist/rl/reward-hacking.d.ts.map +1 -0
  769. package/dist/rl/rl-campaign.d.ts +85 -0
  770. package/dist/rl/rl-campaign.d.ts.map +1 -0
  771. package/dist/rl/run-record-adapters.d.ts +56 -0
  772. package/dist/rl/run-record-adapters.d.ts.map +1 -0
  773. package/dist/rl/sim-fidelity.d.ts +166 -0
  774. package/dist/rl/sim-fidelity.d.ts.map +1 -0
  775. package/dist/rl/sim-fidelity.test.d.ts +2 -0
  776. package/dist/rl/sim-fidelity.test.d.ts.map +1 -0
  777. package/dist/rl/tournament.d.ts +115 -0
  778. package/dist/rl/tournament.d.ts.map +1 -0
  779. package/dist/rl/verifiable-reward.d.ts +124 -0
  780. package/dist/rl/verifiable-reward.d.ts.map +1 -0
  781. package/dist/rl.d.ts +1 -1192
  782. package/dist/rl.js +615 -615
  783. package/dist/rl.js.map +1 -1
  784. package/dist/{run-campaign-RDGAM5KJ.js → run-campaign-WXY7KI67.js} +3 -3
  785. package/dist/run-critic.d.ts +23 -0
  786. package/dist/run-critic.d.ts.map +1 -0
  787. package/dist/run-evidence.d.ts +32 -0
  788. package/dist/run-evidence.d.ts.map +1 -0
  789. package/dist/{run-record-e7vj1uZQ.d.ts → run-record.d.ts} +16 -122
  790. package/dist/run-record.d.ts.map +1 -0
  791. package/dist/run-record.test.d.ts +2 -0
  792. package/dist/run-record.test.d.ts.map +1 -0
  793. package/dist/run-score.d.ts +31 -0
  794. package/dist/run-score.d.ts.map +1 -0
  795. package/dist/runtime-trajectory.d.ts +47 -0
  796. package/dist/runtime-trajectory.d.ts.map +1 -0
  797. package/dist/{test-graded-scenario-BdVaPyHT.d.ts → sandbox-harness.d.ts} +34 -60
  798. package/dist/sandbox-harness.d.ts.map +1 -0
  799. package/dist/sandbox-harness.test.d.ts +2 -0
  800. package/dist/sandbox-harness.test.d.ts.map +1 -0
  801. package/dist/sandbox-pool.d.ts +74 -0
  802. package/dist/sandbox-pool.d.ts.map +1 -0
  803. package/dist/sandbox-pool.test.d.ts +2 -0
  804. package/dist/sandbox-pool.test.d.ts.map +1 -0
  805. package/dist/scorecard.d.ts +133 -0
  806. package/dist/scorecard.d.ts.map +1 -0
  807. package/dist/scorecard.test.d.ts +2 -0
  808. package/dist/scorecard.test.d.ts.map +1 -0
  809. package/dist/self-play.d.ts +69 -0
  810. package/dist/self-play.d.ts.map +1 -0
  811. package/dist/semantic-concept-judge.d.ts +135 -0
  812. package/dist/semantic-concept-judge.d.ts.map +1 -0
  813. package/dist/semantic-concept-judge.test.d.ts +2 -0
  814. package/dist/semantic-concept-judge.test.d.ts.map +1 -0
  815. package/dist/{sequential-5iSVfzl2.d.ts → sequential.d.ts} +9 -10
  816. package/dist/sequential.d.ts.map +1 -0
  817. package/dist/{series-convergence-D5OWMBg6.d.ts → series-convergence.d.ts} +4 -5
  818. package/dist/series-convergence.d.ts.map +1 -0
  819. package/dist/slo.d.ts +48 -0
  820. package/dist/slo.d.ts.map +1 -0
  821. package/dist/state-continuity.d.ts +47 -0
  822. package/dist/state-continuity.d.ts.map +1 -0
  823. package/dist/{statistics-C7PozGrZ.d.ts → statistics.d.ts} +152 -39
  824. package/dist/statistics.d.ts.map +1 -0
  825. package/dist/statistics.test.d.ts +2 -0
  826. package/dist/statistics.test.d.ts.map +1 -0
  827. package/dist/steering-optimizer.d.ts +58 -0
  828. package/dist/steering-optimizer.d.ts.map +1 -0
  829. package/dist/steering.d.ts +24 -0
  830. package/dist/steering.d.ts.map +1 -0
  831. package/dist/storyboard/code-edit.d.ts +64 -0
  832. package/dist/storyboard/code-edit.d.ts.map +1 -0
  833. package/dist/storyboard/code-edit.test.d.ts +2 -0
  834. package/dist/storyboard/code-edit.test.d.ts.map +1 -0
  835. package/dist/storyboard/index.d.ts +16 -81
  836. package/dist/storyboard/index.d.ts.map +1 -0
  837. package/dist/storyboard/index.test.d.ts +2 -0
  838. package/dist/storyboard/index.test.d.ts.map +1 -0
  839. package/dist/{summary-report-DGmUucwQ.d.ts → summary-report.d.ts} +23 -160
  840. package/dist/summary-report.d.ts.map +1 -0
  841. package/dist/telemetry/client.d.ts +35 -0
  842. package/dist/telemetry/client.d.ts.map +1 -0
  843. package/dist/telemetry/index.d.ts +17 -35
  844. package/dist/telemetry/index.d.ts.map +1 -0
  845. package/dist/telemetry/schema.d.ts +61 -0
  846. package/dist/telemetry/schema.d.ts.map +1 -0
  847. package/dist/telemetry/sink-fetch.d.ts +39 -0
  848. package/dist/telemetry/sink-fetch.d.ts.map +1 -0
  849. package/dist/telemetry/{file.d.ts → sink-file.d.ts} +5 -7
  850. package/dist/telemetry/sink-file.d.ts.map +1 -0
  851. package/dist/test-graded-scenario.d.ts +42 -0
  852. package/dist/test-graded-scenario.d.ts.map +1 -0
  853. package/dist/testing.d.ts +5 -0
  854. package/dist/testing.d.ts.map +1 -0
  855. package/dist/testing.js +8 -0
  856. package/dist/testing.js.map +1 -0
  857. package/dist/tool-use-metrics.d.ts +35 -0
  858. package/dist/tool-use-metrics.d.ts.map +1 -0
  859. package/dist/trace/capture-fetch.d.ts +48 -0
  860. package/dist/trace/capture-fetch.d.ts.map +1 -0
  861. package/dist/trace/capture-fetch.test.d.ts +2 -0
  862. package/dist/trace/capture-fetch.test.d.ts.map +1 -0
  863. package/dist/{emitter-DEZwY14K.d.ts → trace/emitter.d.ts} +9 -12
  864. package/dist/trace/emitter.d.ts.map +1 -0
  865. package/dist/trace/extract-usage.d.ts +46 -0
  866. package/dist/trace/extract-usage.d.ts.map +1 -0
  867. package/dist/trace/extract-usage.test.d.ts +2 -0
  868. package/dist/trace/extract-usage.test.d.ts.map +1 -0
  869. package/dist/trace/index.d.ts +15 -0
  870. package/dist/trace/index.d.ts.map +1 -0
  871. package/dist/{integrity-VJ9A7aST.d.ts → trace/integrity.d.ts} +11 -14
  872. package/dist/trace/integrity.d.ts.map +1 -0
  873. package/dist/trace/otel-bridge.d.ts +29 -0
  874. package/dist/trace/otel-bridge.d.ts.map +1 -0
  875. package/dist/trace/otel-export.d.ts +52 -0
  876. package/dist/trace/otel-export.d.ts.map +1 -0
  877. package/dist/trace/otel.d.ts +57 -0
  878. package/dist/trace/otel.d.ts.map +1 -0
  879. package/dist/trace/otlp-attributes.d.ts +17 -0
  880. package/dist/trace/otlp-attributes.d.ts.map +1 -0
  881. package/dist/trace/query.d.ts +29 -0
  882. package/dist/trace/query.d.ts.map +1 -0
  883. package/dist/trace/query.test.d.ts +2 -0
  884. package/dist/trace/query.test.d.ts.map +1 -0
  885. package/dist/{raw-provider-sink-C46HDghv.d.ts → trace/raw-provider-sink.d.ts} +13 -14
  886. package/dist/trace/raw-provider-sink.d.ts.map +1 -0
  887. package/dist/{redact-B40YG2M_.d.ts → trace/redact.d.ts} +7 -8
  888. package/dist/trace/redact.d.ts.map +1 -0
  889. package/dist/{schema-m0gsnbt3.d.ts → trace/schema.d.ts} +29 -30
  890. package/dist/trace/schema.d.ts.map +1 -0
  891. package/dist/trace/store-to-otlp.d.ts +72 -0
  892. package/dist/trace/store-to-otlp.d.ts.map +1 -0
  893. package/dist/trace/store-to-otlp.test.d.ts +2 -0
  894. package/dist/trace/store-to-otlp.test.d.ts.map +1 -0
  895. package/dist/{store-CKUAgsJz.d.ts → trace/store.d.ts} +37 -13
  896. package/dist/trace/store.d.ts.map +1 -0
  897. package/dist/trace/store.test.d.ts +2 -0
  898. package/dist/trace/store.test.d.ts.map +1 -0
  899. package/dist/{analyst-C8HHvfJp.d.ts → trace-analyst/analyst.d.ts} +12 -14
  900. package/dist/trace-analyst/analyst.d.ts.map +1 -0
  901. package/dist/trace-analyst/analyst.test.d.ts +2 -0
  902. package/dist/trace-analyst/analyst.test.d.ts.map +1 -0
  903. package/dist/trace-analyst/behavioral-metrics.d.ts +40 -0
  904. package/dist/trace-analyst/behavioral-metrics.d.ts.map +1 -0
  905. package/dist/trace-analyst/behavioral-metrics.test.d.ts +2 -0
  906. package/dist/trace-analyst/behavioral-metrics.test.d.ts.map +1 -0
  907. package/dist/trace-analyst/hook.d.ts +55 -0
  908. package/dist/trace-analyst/hook.d.ts.map +1 -0
  909. package/dist/trace-analyst/index.d.ts +18 -0
  910. package/dist/trace-analyst/index.d.ts.map +1 -0
  911. package/dist/trace-analyst/insights.d.ts +71 -0
  912. package/dist/trace-analyst/insights.d.ts.map +1 -0
  913. package/dist/trace-analyst/insights.test.d.ts +2 -0
  914. package/dist/trace-analyst/insights.test.d.ts.map +1 -0
  915. package/dist/trace-analyst/otlp-flatten.d.ts +42 -0
  916. package/dist/trace-analyst/otlp-flatten.d.ts.map +1 -0
  917. package/dist/trace-analyst/otlp-span.d.ts +85 -0
  918. package/dist/trace-analyst/otlp-span.d.ts.map +1 -0
  919. package/dist/trace-analyst/otlp-span.test.d.ts +2 -0
  920. package/dist/trace-analyst/otlp-span.test.d.ts.map +1 -0
  921. package/dist/trace-analyst/otlp-to-run-records.d.ts +115 -0
  922. package/dist/trace-analyst/otlp-to-run-records.d.ts.map +1 -0
  923. package/dist/trace-analyst/otlp-to-run-records.test.d.ts +2 -0
  924. package/dist/trace-analyst/otlp-to-run-records.test.d.ts.map +1 -0
  925. package/dist/trace-analyst/otlp-to-run-records.timestamps.test.d.ts +2 -0
  926. package/dist/trace-analyst/otlp-to-run-records.timestamps.test.d.ts.map +1 -0
  927. package/dist/trace-analyst/prompts.d.ts +6 -0
  928. package/dist/trace-analyst/prompts.d.ts.map +1 -0
  929. package/dist/trace-analyst/store-otlp.d.ts +126 -0
  930. package/dist/trace-analyst/store-otlp.d.ts.map +1 -0
  931. package/dist/trace-analyst/store-otlp.test.d.ts +8 -0
  932. package/dist/trace-analyst/store-otlp.test.d.ts.map +1 -0
  933. package/dist/trace-analyst/store-otlp.timestamps.test.d.ts +2 -0
  934. package/dist/trace-analyst/store-otlp.timestamps.test.d.ts.map +1 -0
  935. package/dist/trace-analyst/store.d.ts +63 -0
  936. package/dist/trace-analyst/store.d.ts.map +1 -0
  937. package/dist/trace-analyst/tools.d.ts +44 -0
  938. package/dist/trace-analyst/tools.d.ts.map +1 -0
  939. package/dist/trace-analyst/tools.test.d.ts +10 -0
  940. package/dist/trace-analyst/tools.test.d.ts.map +1 -0
  941. package/dist/{store-C1YxJDEK.d.ts → trace-analyst/types.d.ts} +18 -74
  942. package/dist/trace-analyst/types.d.ts.map +1 -0
  943. package/dist/trace-contracts.d.ts +180 -0
  944. package/dist/trace-contracts.d.ts.map +1 -0
  945. package/dist/traced-analyst.d.ts +26 -0
  946. package/dist/traced-analyst.d.ts.map +1 -0
  947. package/dist/traced-judges.d.ts +27 -0
  948. package/dist/traced-judges.d.ts.map +1 -0
  949. package/dist/traces.d.ts +4 -947
  950. package/dist/traces.d.ts.map +1 -0
  951. package/dist/traces.js +42 -12
  952. package/dist/{trajectory-GEdXJCL5.d.ts → trajectory.d.ts} +8 -9
  953. package/dist/trajectory.d.ts.map +1 -0
  954. package/dist/{types-Croy5h7V.d.ts → types.d.ts} +33 -33
  955. package/dist/types.d.ts.map +1 -0
  956. package/dist/ui-finding.d.ts +104 -0
  957. package/dist/ui-finding.d.ts.map +1 -0
  958. package/dist/verdict-cache.d.ts +78 -0
  959. package/dist/verdict-cache.d.ts.map +1 -0
  960. package/dist/verdict-cache.test.d.ts +2 -0
  961. package/dist/verdict-cache.test.d.ts.map +1 -0
  962. package/dist/{verdict-C9MlYujm.d.ts → verdict.d.ts} +2 -3
  963. package/dist/verdict.d.ts.map +1 -0
  964. package/dist/visual-diff.d.ts +32 -0
  965. package/dist/visual-diff.d.ts.map +1 -0
  966. package/dist/wire/handlers.d.ts +54 -0
  967. package/dist/wire/handlers.d.ts.map +1 -0
  968. package/dist/wire/index.d.ts +13 -570
  969. package/dist/wire/index.d.ts.map +1 -0
  970. package/dist/wire/index.js +2 -2
  971. package/dist/wire/openapi.d.ts +3 -0
  972. package/dist/wire/openapi.d.ts.map +1 -0
  973. package/dist/wire/rpc.d.ts +21 -0
  974. package/dist/wire/rpc.d.ts.map +1 -0
  975. package/dist/wire/rubrics.d.ts +34 -0
  976. package/dist/wire/rubrics.d.ts.map +1 -0
  977. package/dist/wire/schemas.d.ts +410 -0
  978. package/dist/wire/schemas.d.ts.map +1 -0
  979. package/dist/wire/server.d.ts +60 -0
  980. package/dist/wire/server.d.ts.map +1 -0
  981. package/dist/workflow/event-schema.d.ts +5 -0
  982. package/dist/workflow/event-schema.d.ts.map +1 -0
  983. package/dist/workflow/feedback-pack.d.ts +99 -0
  984. package/dist/workflow/feedback-pack.d.ts.map +1 -0
  985. package/dist/workflow/index.d.ts +22 -495
  986. package/dist/workflow/index.d.ts.map +1 -0
  987. package/dist/workflow/index.js +2 -2
  988. package/dist/workflow/intelligence-export.d.ts +62 -0
  989. package/dist/workflow/intelligence-export.d.ts.map +1 -0
  990. package/dist/workflow/partner-report.d.ts +49 -0
  991. package/dist/workflow/partner-report.d.ts.map +1 -0
  992. package/dist/workflow/phase-graph.d.ts +43 -0
  993. package/dist/workflow/phase-graph.d.ts.map +1 -0
  994. package/dist/workflow/promotion-gate.d.ts +61 -0
  995. package/dist/workflow/promotion-gate.d.ts.map +1 -0
  996. package/dist/workflow/run-record.d.ts +12 -0
  997. package/dist/workflow/run-record.d.ts.map +1 -0
  998. package/dist/workflow/runtime-adapter.d.ts +20 -0
  999. package/dist/workflow/runtime-adapter.d.ts.map +1 -0
  1000. package/dist/workflow/sanitize.d.ts +21 -0
  1001. package/dist/workflow/sanitize.d.ts.map +1 -0
  1002. package/dist/workflow/schema.d.ts +5 -0
  1003. package/dist/workflow/schema.d.ts.map +1 -0
  1004. package/dist/workflow/summary.d.ts +43 -0
  1005. package/dist/workflow/summary.d.ts.map +1 -0
  1006. package/dist/workflow/trace-event-fields.d.ts +6 -0
  1007. package/dist/workflow/trace-event-fields.d.ts.map +1 -0
  1008. package/dist/workflow/trajectory.d.ts +15 -0
  1009. package/dist/workflow/trajectory.d.ts.map +1 -0
  1010. package/dist/workflow/types.d.ts +68 -0
  1011. package/dist/workflow/types.d.ts.map +1 -0
  1012. package/dist/workspace-inspector.d.ts +67 -0
  1013. package/dist/workspace-inspector.d.ts.map +1 -0
  1014. package/dist/wrangler-deploy-runner.test.d.ts +2 -0
  1015. package/dist/wrangler-deploy-runner.test.d.ts.map +1 -0
  1016. package/docs/campaign-proposers.md +170 -0
  1017. package/docs/concepts.md +8 -4
  1018. package/docs/customer-journeys.md +15 -13
  1019. package/docs/design/loop-taxonomy.md +34 -66
  1020. package/docs/distributed-driver.md +14 -14
  1021. package/docs/feature-guide.md +1 -1
  1022. package/docs/hosted-ingest-spec.md +2 -3
  1023. package/docs/multi-shot-optimization.md +8 -8
  1024. package/docs/product-eval-adoption.md +1 -1
  1025. package/docs/self-improvement-map.md +33 -29
  1026. package/package.json +9 -15
  1027. package/dist/calibration-Cpr3WaX3.d.ts +0 -101
  1028. package/dist/chunk-47X6LRCE.js.map +0 -1
  1029. package/dist/chunk-6SOJM3VR.js.map +0 -1
  1030. package/dist/chunk-CVVHBFGN.js.map +0 -1
  1031. package/dist/chunk-D3V5B42D.js.map +0 -1
  1032. package/dist/chunk-E4GH6USR.js.map +0 -1
  1033. package/dist/chunk-GSH6QNNS.js.map +0 -1
  1034. package/dist/chunk-KWRRMR3J.js.map +0 -1
  1035. package/dist/chunk-LMZQ2Z4U.js.map +0 -1
  1036. package/dist/chunk-QAY5UIJO.js.map +0 -1
  1037. package/dist/chunk-QG2OVF2D.js.map +0 -1
  1038. package/dist/chunk-T375SUOZ.js.map +0 -1
  1039. package/dist/chunk-TWS7AZEY.js.map +0 -1
  1040. package/dist/chunk-UMMZHCPB.js.map +0 -1
  1041. package/dist/chunk-XY4DDNEG.js.map +0 -1
  1042. package/dist/chunk-ZFIBGEOL.js.map +0 -1
  1043. package/dist/control-_Qb7skHX.d.ts +0 -259
  1044. package/dist/corpus-BoR-041R.d.ts +0 -560
  1045. package/dist/failure-cluster-CL7IVgkJ.d.ts +0 -76
  1046. package/dist/harness-optimizer-EnEnQPsr.d.ts +0 -106
  1047. package/dist/index-Bx3gZ8xl.d.ts +0 -159
  1048. package/dist/pre-registration-mAnCugl9.d.ts +0 -523
  1049. package/dist/provenance-LnqRT0sS.d.ts +0 -441
  1050. package/dist/query-CqTxMwDw.d.ts +0 -31
  1051. package/dist/release-report-euXIV_Sk.d.ts +0 -233
  1052. package/dist/run-critic-BAIjX99r.d.ts +0 -56
  1053. package/dist/run-improvement-loop-5z_l5zDz.d.ts +0 -427
  1054. package/dist/runtime-trajectory-BDgfGZSr.d.ts +0 -49
  1055. package/dist/semantic-concept-judge-Dn8Z6KEG.d.ts +0 -624
  1056. package/dist/sink-fetch-B1Yg4Til.d.ts +0 -101
  1057. package/docs/design/external-agent-wedge.md +0 -89
  1058. package/docs/design/phase-d-rfc.md +0 -125
  1059. package/docs/design/phase4-consumer-migration.md +0 -70
  1060. package/docs/design/primitives-integration-spec.md +0 -393
  1061. package/docs/design/product-self-improvement-loop.md +0 -146
  1062. package/docs/design/self-improvement-engine.md +0 -140
  1063. package/docs/design/self-improvement-protocol.md +0 -223
  1064. package/docs/design/self-improvement-roadmap.md +0 -106
  1065. package/docs/design/substrate-gaps.md +0 -118
  1066. package/docs/phase-b-pairing-kit.md +0 -188
  1067. package/docs/phase-b-runbook.md +0 -176
  1068. package/docs/pilot/README.md +0 -62
  1069. package/docs/pilot/customer-checklist.md +0 -90
  1070. package/docs/pilot/integration-foreign-stack.md +0 -296
  1071. package/docs/pilot/integration-tangle-stack.md +0 -248
  1072. package/docs/pilot/one-pager.md +0 -161
  1073. package/docs/pilot/sample-insight-report.json +0 -172
  1074. package/docs/quickstart-external.md +0 -229
  1075. package/docs/research/belief-state-agent-eval-roadmap.md +0 -593
  1076. package/docs/research/research-roadmap.md +0 -205
  1077. package/docs/specs/driver-honest-spec.md +0 -251
  1078. package/docs/specs/hermes-self-improvement-audit.md +0 -93
  1079. package/docs/specs/profile-versioning.md +0 -291
  1080. package/docs/three-package-architecture.md +0 -168
  1081. /package/dist/{chunk-QS3RBQPI.js.map → chunk-D5KBVULY.js.map} +0 -0
  1082. /package/dist/{chunk-UHMJT4T7.js.map → chunk-IZCEK2HR.js.map} +0 -0
  1083. /package/dist/{chunk-L3JOU6XM.js.map → chunk-NACM5RS7.js.map} +0 -0
  1084. /package/dist/{chunk-4FBZZIYD.js.map → chunk-QTMYW64F.js.map} +0 -0
  1085. /package/dist/{chunk-CY6U5S3X.js.map → chunk-URWVKRCS.js.map} +0 -0
  1086. /package/dist/{chunk-Y47J2LJ3.js.map → chunk-Z6L6YSU6.js.map} +0 -0
  1087. /package/dist/{run-campaign-RDGAM5KJ.js.map → run-campaign-WXY7KI67.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/pipelines/budget-breach.ts","../../src/pipelines/failure-cluster.ts","../../src/pipelines/first-divergence.ts","../../src/pipelines/judge-agreement.ts","../../src/pipelines/regression.ts","../../src/pipelines/stuck-loop.ts","../../src/pipelines/tool-waste.ts"],"sourcesContent":["/**\n * BudgetBreachView — aggregates breach events across the corpus.\n *\n * Answers: which dimensions get hit most often? Which scenarios are\n * underbudgeted? Which variants trigger the most breaches?\n */\n\nimport type { BudgetSpec } from '../trace/schema'\nimport type { TraceStore } from '../trace/store'\n\nexport interface BudgetBreachFinding {\n runId: string\n scenarioId: string\n variantId?: string\n dimension: keyof BudgetSpec\n limit: number\n consumed: number\n excessRatio: number\n timestamp: number\n}\n\nexport interface BudgetBreachReport {\n findings: BudgetBreachFinding[]\n byDimension: Record<string, number>\n byScenario: Record<string, number>\n byVariant: Record<string, number>\n totalRuns: number\n breachedRunRatio: number\n}\n\nexport async function budgetBreachView(\n store: TraceStore,\n options: { scenarioId?: string; variantId?: string } = {},\n): Promise<BudgetBreachReport> {\n const runs = await store.listRuns({\n scenarioId: options.scenarioId,\n variantId: options.variantId,\n })\n const findings: BudgetBreachFinding[] = []\n const byDimension: Record<string, number> = {}\n const byScenario: Record<string, number> = {}\n const byVariant: Record<string, number> = {}\n\n for (const run of runs) {\n const entries = await store.budget(run.runId)\n for (const e of entries) {\n if (!e.breached) continue\n const excessRatio = e.limit > 0 ? e.consumed / e.limit : Infinity\n findings.push({\n runId: run.runId,\n scenarioId: run.scenarioId,\n variantId: run.variantId,\n dimension: e.dimension,\n limit: e.limit,\n consumed: e.consumed,\n excessRatio,\n timestamp: e.timestamp,\n })\n byDimension[e.dimension] = (byDimension[e.dimension] ?? 0) + 1\n byScenario[run.scenarioId] = (byScenario[run.scenarioId] ?? 0) + 1\n if (run.variantId) byVariant[run.variantId] = (byVariant[run.variantId] ?? 0) + 1\n }\n }\n\n const breachedRuns = new Set(findings.map((f) => f.runId))\n return {\n findings,\n byDimension,\n byScenario,\n byVariant,\n totalRuns: runs.length,\n breachedRunRatio: runs.length > 0 ? breachedRuns.size / runs.length : 0,\n }\n}\n","/**\n * FailureClusterView — groups failed runs by (failureClass, triggerTool,\n * argHash-prefix) so weekly reviews can prioritize the top-N clusters.\n *\n * Each cluster includes: N runs, scenarios affected, representative\n * error message, a proposed mitigation hint (rule → action table).\n */\n\nimport { classifyFailure, DEFAULT_RULES, type FailureRule } from '../failure-taxonomy'\nimport { argHash, toolSpans } from '../trace/query'\nimport type { FailureClass, Span } from '../trace/schema'\nimport type { TraceStore } from '../trace/store'\n\nexport interface FailureCluster {\n failureClass: FailureClass\n /** Tool name when the trigger was a tool span, else undefined. */\n toolName?: string\n /** First 16 chars of argHash — clusters similar args. */\n argPrefix?: string\n /**\n * Source dimension when the trigger was a judge span (e.g. `'format'`,\n * `'safety'`, `'correctness'`). Lets cross-template aggregators\n * group failures by the dimension that fired without overloading\n * `argPrefix`. Optional — clusters without this field deserialize cleanly.\n */\n dimension?: string\n runCount: number\n scenarioIds: string[]\n exampleError?: string\n exampleRunId: string\n}\n\nexport interface FailureClusterReport {\n clusters: FailureCluster[]\n totalFailures: number\n totalRuns: number\n}\n\nexport async function failureClusterView(\n store: TraceStore,\n options: { rules?: FailureRule[]; minClusterSize?: number } = {},\n): Promise<FailureClusterReport> {\n const rules = options.rules ?? DEFAULT_RULES\n const minSize = options.minClusterSize ?? 1\n const runs = await store.listRuns()\n\n type Key = string\n const clusters = new Map<Key, FailureCluster>()\n let totalFailures = 0\n\n for (const run of runs) {\n if (run.status === 'completed' && run.outcome?.pass !== false) continue\n totalFailures++\n const spans = await store.spans({ runId: run.runId })\n const events = await store.events({ runId: run.runId })\n const cls = classifyFailure({ run, spans, events }, rules)\n\n let toolName: string | undefined\n let argPrefix: string | undefined\n let dimension: string | undefined\n if (cls.triggerSpanId) {\n const trig = spans.find((s) => s.spanId === cls.triggerSpanId)\n if (trig?.kind === 'tool') {\n toolName = trig.toolName\n argPrefix = argHash(trig.args).slice(0, 16)\n } else if (trig?.kind === 'judge') {\n dimension = trig.dimension\n }\n }\n // Fallback: look at the last errored tool span\n if (!toolName) {\n const ts = await toolSpans(store, run.runId)\n const errored = ts.filter((t) => t.status === 'error').pop()\n if (errored) {\n toolName = errored.toolName\n argPrefix = argHash(errored.args).slice(0, 16)\n }\n }\n // Secondary signal: any judge span on the failed run carries a\n // dimension. Useful when the rule classified by judge score but\n // didn't surface the trigger span (or surfaced a non-judge span).\n if (!dimension) {\n const judge = spans.find((s) => s.kind === 'judge' && typeof s.dimension === 'string')\n if (judge?.kind === 'judge') dimension = judge.dimension\n }\n\n const key = `${cls.failureClass}|${toolName ?? ''}|${argPrefix ?? ''}|${dimension ?? ''}`\n let cluster = clusters.get(key)\n if (!cluster) {\n cluster = {\n failureClass: cls.failureClass,\n toolName,\n argPrefix,\n dimension,\n runCount: 0,\n scenarioIds: [],\n exampleRunId: run.runId,\n exampleError: firstErrorMessage(spans) ?? cls.reason,\n }\n clusters.set(key, cluster)\n }\n cluster.runCount++\n if (!cluster.scenarioIds.includes(run.scenarioId)) cluster.scenarioIds.push(run.scenarioId)\n }\n\n const arr = [...clusters.values()]\n .filter((c) => c.runCount >= minSize)\n .sort((a, b) => b.runCount - a.runCount)\n\n return { clusters: arr, totalFailures, totalRuns: runs.length }\n}\n\nfunction firstErrorMessage(spans: Span[]): string | undefined {\n const errored = spans.find((s) => s.status === 'error')\n return errored?.error\n}\n","/**\n * FirstDivergenceView — aligns two trajectories by step index, reports\n * the first step where they differ.\n *\n * \"Differ\" is configurable — default is (kind, toolName if tool, model\n * if llm). Use this view to attribute \"why is variant B better?\" to a\n * specific step rather than an aggregate mean delta.\n */\n\nimport type { TraceStore } from '../trace/store'\nimport { buildTrajectory, type Trajectory, type TrajectoryStep } from '../trajectory'\n\nexport interface DivergenceReport {\n runA: string\n runB: string\n firstDivergenceIndex: number | null\n aStep?: TrajectoryStep\n bStep?: TrajectoryStep\n reason?: string\n /** Common prefix length (steps that matched). */\n commonPrefixLen: number\n}\n\nexport interface DivergenceOptions {\n /** Returns true if two steps are considered equal. Default: kind + tool/model match. */\n stepEquals?: (a: TrajectoryStep, b: TrajectoryStep) => boolean\n}\n\nexport async function firstDivergenceView(\n store: TraceStore,\n runA: string,\n runB: string,\n options: DivergenceOptions = {},\n): Promise<DivergenceReport> {\n const [a, b] = await Promise.all([buildTrajectory(store, runA), buildTrajectory(store, runB)])\n const eq = options.stepEquals ?? defaultStepEquals\n const minLen = Math.min(a.steps.length, b.steps.length)\n for (let i = 0; i < minLen; i++) {\n const aStep = a.steps[i]!\n const bStep = b.steps[i]!\n if (!eq(aStep, bStep)) {\n return {\n runA,\n runB,\n firstDivergenceIndex: i,\n aStep,\n bStep,\n reason: describeDifference(aStep, bStep),\n commonPrefixLen: i,\n }\n }\n }\n if (a.steps.length === b.steps.length) {\n return { runA, runB, firstDivergenceIndex: null, commonPrefixLen: minLen }\n }\n const longer: Trajectory = a.steps.length > b.steps.length ? a : b\n return {\n runA,\n runB,\n firstDivergenceIndex: minLen,\n aStep: a.steps[minLen],\n bStep: b.steps[minLen],\n reason: `one trajectory has ${longer.steps.length - minLen} more step(s) after index ${minLen - 1}`,\n commonPrefixLen: minLen,\n }\n}\n\nfunction defaultStepEquals(a: TrajectoryStep, b: TrajectoryStep): boolean {\n if (a.span.kind !== b.span.kind) return false\n if (a.span.kind === 'tool' && b.span.kind === 'tool') return a.span.toolName === b.span.toolName\n if (a.span.kind === 'llm' && b.span.kind === 'llm') return a.span.model === b.span.model\n if (a.span.kind === 'judge' && b.span.kind === 'judge')\n return a.span.dimension === b.span.dimension\n return a.span.name === b.span.name\n}\n\nfunction describeDifference(a: TrajectoryStep, b: TrajectoryStep): string {\n if (a.span.kind !== b.span.kind) return `kind ${a.span.kind} vs ${b.span.kind}`\n if (a.span.kind === 'tool' && b.span.kind === 'tool' && a.span.toolName !== b.span.toolName) {\n return `tool ${a.span.toolName} vs ${b.span.toolName}`\n }\n if (a.span.kind === 'llm' && b.span.kind === 'llm' && a.span.model !== b.span.model) {\n return `model ${a.span.model} vs ${b.span.model}`\n }\n return `name \"${a.span.name}\" vs \"${b.span.name}\"`\n}\n","/**\n * JudgeAgreementView — pairwise agreement between judges across the\n * corpus, grouped by dimension.\n *\n * Output drives two workflows:\n * - Judge robustness audit: \"does Claude agree with GPT at κ ≥ 0.6?\"\n * - Calibration tracking: κ vs golden human labels over time (by\n * providing a `humanGoldenJudgeId`).\n */\n\nimport { interRaterReliability } from '../statistics'\nimport type { JudgeSpan } from '../trace/schema'\nimport type { TraceStore } from '../trace/store'\n\nexport interface JudgePair {\n judgeA: string\n judgeB: string\n dimension: string\n /** Number of (targetSpanId, dimension) tuples both judges scored. */\n commonItems: number\n pearson: number\n krippendorff: number\n}\n\nexport interface JudgeAgreementReport {\n pairs: JudgePair[]\n dimensions: string[]\n judgeIds: string[]\n}\n\nexport async function judgeAgreementView(store: TraceStore): Promise<JudgeAgreementReport> {\n const all = (await store.spans({ kind: 'judge' })).filter(\n (s): s is JudgeSpan => s.kind === 'judge',\n )\n if (all.length === 0) return { pairs: [], dimensions: [], judgeIds: [] }\n\n const byDimension = new Map<string, JudgeSpan[]>()\n for (const s of all) {\n const arr = byDimension.get(s.dimension) ?? []\n arr.push(s)\n byDimension.set(s.dimension, arr)\n }\n\n const judgeIds = [...new Set(all.map((s) => s.judgeId))].sort()\n const pairs: JudgePair[] = []\n for (const [dim, spans] of byDimension) {\n const byJudge = new Map<string, Map<string, number>>()\n for (const s of spans) {\n const m = byJudge.get(s.judgeId) ?? new Map<string, number>()\n m.set(s.targetSpanId, s.score)\n byJudge.set(s.judgeId, m)\n }\n const judgesHere = [...byJudge.keys()]\n for (let i = 0; i < judgesHere.length; i++) {\n for (let j = i + 1; j < judgesHere.length; j++) {\n const judgeI = judgesHere[i]!\n const judgeJ = judgesHere[j]!\n const a = byJudge.get(judgeI)!\n const b = byJudge.get(judgeJ)!\n const common: Array<[number, number]> = []\n for (const [target, scoreA] of a) {\n const scoreB = b.get(target)\n if (scoreB !== undefined) common.push([scoreA, scoreB])\n }\n if (common.length < 2) continue\n const judgeScores = common.map(\n ([scoreA, scoreB]) =>\n [\n { judgeName: judgeI, dimension: dim, score: scoreA, reasoning: '' },\n { judgeName: judgeJ, dimension: dim, score: scoreB, reasoning: '' },\n ] as const,\n )\n const k = interRaterReliability(\n judgeScores[0]!.map((_, k2) => judgeScores.map((pair) => pair[k2]!)),\n )\n pairs.push({\n judgeA: judgeI,\n judgeB: judgeJ,\n dimension: dim,\n commonItems: common.length,\n pearson: pearson(\n common.map((c) => c[0]),\n common.map((c) => c[1]),\n ),\n krippendorff: k,\n })\n }\n }\n }\n\n return {\n pairs: pairs.sort((a, b) => b.commonItems - a.commonItems),\n dimensions: [...byDimension.keys()].sort(),\n judgeIds,\n }\n}\n\nfunction pearson(a: number[], b: number[]): number {\n if (a.length !== b.length || a.length < 2) return NaN\n const mA = a.reduce((s, v) => s + v, 0) / a.length\n const mB = b.reduce((s, v) => s + v, 0) / b.length\n let num = 0,\n denA = 0,\n denB = 0\n for (let i = 0; i < a.length; i++) {\n const dA = a[i]! - mA\n const dB = b[i]! - mB\n num += dA * dB\n denA += dA * dA\n denB += dB * dB\n }\n if (denA === 0 || denB === 0) return denA === 0 && denB === 0 ? 1 : 0\n return num / Math.sqrt(denA * denB)\n}\n","/**\n * RegressionView — compares a candidate slice to a baseline slice on a\n * named metric. Delegates the statistics (Welch's t-test, Cohen's d,\n * IQR stability) to `baseline.ts`.\n *\n * This is the entry point for CI regression gates: \"given runs tagged\n * release=A and release=B, did any metric regress?\"\n */\n\nimport { type BaselineOptions, type BaselineReport, compareToBaseline } from '../baseline'\nimport { aggregateLlm, llmSpans, runFailureClass } from '../trace/query'\nimport type { Run } from '../trace/schema'\nimport type { RunFilter, TraceStore } from '../trace/store'\n\nexport interface RegressionSpec {\n metric: string\n higherIsBetter: boolean\n /** Extract a scalar from a run. Default extractors handle common metrics. */\n extract?: (run: Run, store: TraceStore) => Promise<number | null>\n}\n\nexport interface RegressionOptions extends BaselineOptions {\n baseline: RunFilter\n candidate: RunFilter\n}\n\nexport async function regressionView(\n store: TraceStore,\n metrics: RegressionSpec[],\n options: RegressionOptions,\n): Promise<BaselineReport> {\n const baselineRuns = await store.listRuns(options.baseline)\n const candidateRuns = await store.listRuns(options.candidate)\n const samples = await Promise.all(\n metrics.map(async (m) => {\n const extract = m.extract ?? defaultExtract(m.metric)\n const baseline = await extractAll(baselineRuns, extract, store)\n const candidate = await extractAll(candidateRuns, extract, store)\n return { metric: m.metric, higherIsBetter: m.higherIsBetter, baseline, candidate }\n }),\n )\n return compareToBaseline(samples, options)\n}\n\nasync function extractAll(\n runs: Run[],\n extract: (r: Run, s: TraceStore) => Promise<number | null>,\n store: TraceStore,\n): Promise<number[]> {\n const out: number[] = []\n for (const r of runs) {\n const v = await extract(r, store)\n if (v !== null && Number.isFinite(v)) out.push(v)\n }\n return out\n}\n\nfunction defaultExtract(metric: string): (run: Run, store: TraceStore) => Promise<number | null> {\n return async (run, store) => {\n switch (metric) {\n case 'score':\n case 'overallScore':\n return run.outcome?.score ?? null\n case 'pass':\n return run.outcome?.pass === true ? 1 : 0\n case 'durationMs':\n return run.endedAt && run.startedAt ? run.endedAt - run.startedAt : null\n case 'costUsd': {\n const llm = await llmSpans(store, run.runId)\n return aggregateLlm(llm).costUsd\n }\n case 'inputTokens': {\n const llm = await llmSpans(store, run.runId)\n return aggregateLlm(llm).inputTokens\n }\n case 'outputTokens': {\n const llm = await llmSpans(store, run.runId)\n return aggregateLlm(llm).outputTokens\n }\n case 'failureClass': {\n return runFailureClass(run) === 'success' ? 1 : 0\n }\n default:\n return null\n }\n }\n}\n","/**\n * StuckLoopView — detects when an agent calls the same tool with the\n * same (or structurally similar) arguments ≥ N times in a short window.\n *\n * Rationale: agents that loop are the number-one production failure\n * mode on long-horizon flows. The view returns (runId, toolName,\n * argHash, occurrences, windowMs) for each detected loop plus a\n * fraction of runs affected.\n */\n\nimport { argHash, toolSpans } from '../trace/query'\nimport type { TraceStore } from '../trace/store'\n\nexport interface StuckLoopFinding {\n runId: string\n toolName: string\n argHash: string\n occurrences: number\n spanIds: string[]\n /** Milliseconds between first and last call in the loop. */\n windowMs: number\n}\n\nexport interface StuckLoopReport {\n findings: StuckLoopFinding[]\n affectedRunRatio: number\n totalRuns: number\n}\n\nexport interface StuckLoopOptions {\n /** Minimum call count to flag a loop (default 3). */\n minOccurrences?: number\n /** Filter to a specific runId; omit to scan the entire corpus. */\n runId?: string\n}\n\nexport async function stuckLoopView(\n store: TraceStore,\n options: StuckLoopOptions = {},\n): Promise<StuckLoopReport> {\n const minOccurrences = options.minOccurrences ?? 3\n const runs = options.runId\n ? [{ runId: options.runId }]\n : (await store.listRuns()).map((r) => ({ runId: r.runId }))\n\n const findings: StuckLoopFinding[] = []\n for (const { runId } of runs) {\n const tools = await toolSpans(store, runId)\n const byKey = new Map<string, { spans: typeof tools; argHash: string }>()\n for (const t of tools) {\n const h = argHash(t.args)\n const key = `${t.toolName}|${h}`\n const bucket = byKey.get(key) ?? { spans: [], argHash: h }\n bucket.spans.push(t)\n byKey.set(key, bucket)\n }\n for (const [key, { spans, argHash: h }] of byKey) {\n if (spans.length < minOccurrences) continue\n const sorted = [...spans].sort((a, b) => a.startedAt - b.startedAt)\n const first = sorted[0]!.startedAt\n const last = sorted[sorted.length - 1]!.startedAt\n findings.push({\n runId,\n toolName: key.split('|')[0]!,\n argHash: h,\n occurrences: sorted.length,\n spanIds: sorted.map((s) => s.spanId),\n windowMs: last - first,\n })\n }\n }\n\n const affectedRuns = new Set(findings.map((f) => f.runId))\n return {\n findings,\n affectedRunRatio: runs.length > 0 ? affectedRuns.size / runs.length : 0,\n totalRuns: runs.length,\n }\n}\n","/**\n * ToolWasteView — fraction of tool calls whose results weren't used\n * downstream. Without a \"used\" signal we fall back to structural\n * proxies: error calls, duplicate calls, and tool calls followed by\n * zero subsequent LLM spans are all considered waste.\n *\n * Consumers can pass a `usageOracle` that inspects a tool span and\n * returns true iff the tool's result appears in a later LLM message,\n * artifact, or state mutation — that's the canonical definition; the\n * default heuristic is a reasonable fallback.\n */\n\nimport { computeToolUseMetrics } from '../tool-use-metrics'\nimport { llmSpans, toolSpans } from '../trace/query'\nimport type { ToolSpan } from '../trace/schema'\nimport type { TraceStore } from '../trace/store'\n\nexport interface ToolWasteFinding {\n runId: string\n wastedCalls: number\n totalCalls: number\n wasteRate: number\n}\n\nexport interface ToolWasteReport {\n byRun: ToolWasteFinding[]\n overallWasteRate: number\n}\n\nexport interface ToolWasteOptions {\n runId?: string\n usageOracle?: (tool: ToolSpan, later: { llm: Awaited<ReturnType<typeof llmSpans>> }) => boolean\n}\n\nexport async function toolWasteView(\n store: TraceStore,\n options: ToolWasteOptions = {},\n): Promise<ToolWasteReport> {\n const runs = options.runId ? [options.runId] : (await store.listRuns()).map((r) => r.runId)\n\n const byRun: ToolWasteFinding[] = []\n let totalCalls = 0\n let totalWasted = 0\n for (const runId of runs) {\n const tools = await toolSpans(store, runId)\n if (tools.length === 0) {\n byRun.push({ runId, wastedCalls: 0, totalCalls: 0, wasteRate: 0 })\n continue\n }\n const llms = await llmSpans(store, runId)\n let wasted = 0\n for (const t of tools) {\n if (t.status === 'error') {\n wasted++\n continue\n }\n const laterLlm = llms.filter((l) => l.startedAt > t.startedAt)\n if (options.usageOracle) {\n if (!options.usageOracle(t, { llm: laterLlm })) wasted++\n } else {\n // Default heuristic: a tool whose result is NOT mentioned in any\n // later LLM input message is likely wasted.\n const resultStr = stringify(t.result)\n const used = laterLlm.some((l) =>\n l.messages.some(\n (m) =>\n typeof m.content === 'string' &&\n resultStr &&\n m.content.includes(resultStr.slice(0, 120)),\n ),\n )\n if (!used) wasted++\n }\n }\n const wasteRate = wasted / tools.length\n byRun.push({ runId, wastedCalls: wasted, totalCalls: tools.length, wasteRate })\n totalCalls += tools.length\n totalWasted += wasted\n }\n return { byRun, overallWasteRate: totalCalls > 0 ? totalWasted / totalCalls : 0 }\n}\n\nfunction stringify(v: unknown): string {\n if (v === null || v === undefined) return ''\n if (typeof v === 'string') return v\n try {\n return JSON.stringify(v)\n } catch {\n return String(v)\n }\n}\n\n// Re-export for convenience in consumers that want both descriptive and usage metrics.\nexport { computeToolUseMetrics }\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/pipelines/budget-breach.ts","../../src/pipelines/failure-cluster.ts","../../src/pipelines/first-divergence.ts","../../src/pipelines/judge-agreement.ts","../../src/pipelines/regression.ts","../../src/pipelines/stuck-loop.ts","../../src/pipelines/tool-waste.ts"],"sourcesContent":["/**\n * BudgetBreachView — aggregates breach events across the corpus.\n *\n * Answers: which dimensions get hit most often? Which scenarios are\n * underbudgeted? Which variants trigger the most breaches?\n */\n\nimport type { BudgetSpec } from '../trace/schema'\nimport type { TraceStore } from '../trace/store'\n\nexport interface BudgetBreachFinding {\n runId: string\n scenarioId: string\n variantId?: string\n dimension: keyof BudgetSpec\n limit: number\n consumed: number\n excessRatio: number\n timestamp: number\n}\n\nexport interface BudgetBreachReport {\n findings: BudgetBreachFinding[]\n byDimension: Record<string, number>\n byScenario: Record<string, number>\n byVariant: Record<string, number>\n totalRuns: number\n breachedRunRatio: number\n}\n\nexport async function budgetBreachView(\n store: TraceStore,\n options: { scenarioId?: string; variantId?: string } = {},\n): Promise<BudgetBreachReport> {\n const runs = await store.listRuns({\n scenarioId: options.scenarioId,\n variantId: options.variantId,\n })\n const findings: BudgetBreachFinding[] = []\n const byDimension: Record<string, number> = {}\n const byScenario: Record<string, number> = {}\n const byVariant: Record<string, number> = {}\n\n for (const run of runs) {\n const entries = await store.budget(run.runId)\n for (const e of entries) {\n if (!e.breached) continue\n const excessRatio = e.limit > 0 ? e.consumed / e.limit : Infinity\n findings.push({\n runId: run.runId,\n scenarioId: run.scenarioId,\n variantId: run.variantId,\n dimension: e.dimension,\n limit: e.limit,\n consumed: e.consumed,\n excessRatio,\n timestamp: e.timestamp,\n })\n byDimension[e.dimension] = (byDimension[e.dimension] ?? 0) + 1\n byScenario[run.scenarioId] = (byScenario[run.scenarioId] ?? 0) + 1\n if (run.variantId) byVariant[run.variantId] = (byVariant[run.variantId] ?? 0) + 1\n }\n }\n\n const breachedRuns = new Set(findings.map((f) => f.runId))\n return {\n findings,\n byDimension,\n byScenario,\n byVariant,\n totalRuns: runs.length,\n breachedRunRatio: runs.length > 0 ? breachedRuns.size / runs.length : 0,\n }\n}\n","/**\n * FailureClusterView — groups failed runs by (failureClass, triggerTool,\n * argHash-prefix) so weekly reviews can prioritize the top-N clusters.\n *\n * Each cluster includes: N runs, scenarios affected, representative\n * error message, a proposed mitigation hint (rule → action table).\n */\n\nimport { classifyFailure, DEFAULT_RULES, type FailureRule } from '../failure-taxonomy'\nimport { argHash, toolSpans } from '../trace/query'\nimport type { FailureClass, Span } from '../trace/schema'\nimport type { TraceStore } from '../trace/store'\n\nexport interface FailureCluster {\n failureClass: FailureClass\n /** Tool name when the trigger was a tool span, else undefined. */\n toolName?: string\n /** First 16 chars of argHash — clusters similar args. */\n argPrefix?: string\n /**\n * Source dimension when the trigger was a judge span (e.g. `'format'`,\n * `'safety'`, `'correctness'`). Lets cross-template aggregators\n * group failures by the dimension that fired without overloading\n * `argPrefix`. Optional — clusters without this field deserialize cleanly.\n */\n dimension?: string\n runCount: number\n scenarioIds: string[]\n exampleError?: string\n exampleRunId: string\n}\n\nexport interface FailureClusterReport {\n clusters: FailureCluster[]\n totalFailures: number\n totalRuns: number\n}\n\nexport async function failureClusterView(\n store: TraceStore,\n options: { rules?: FailureRule[]; minClusterSize?: number } = {},\n): Promise<FailureClusterReport> {\n const rules = options.rules ?? DEFAULT_RULES\n const minSize = options.minClusterSize ?? 1\n const runs = await store.listRuns()\n\n type Key = string\n const clusters = new Map<Key, FailureCluster>()\n let totalFailures = 0\n\n for (const run of runs) {\n if (run.status === 'completed' && run.outcome?.pass !== false) continue\n totalFailures++\n const spans = await store.spans({ runId: run.runId })\n const events = await store.events({ runId: run.runId })\n const cls = classifyFailure({ run, spans, events }, rules)\n\n let toolName: string | undefined\n let argPrefix: string | undefined\n let dimension: string | undefined\n if (cls.triggerSpanId) {\n const trig = spans.find((s) => s.spanId === cls.triggerSpanId)\n if (trig?.kind === 'tool') {\n toolName = trig.toolName\n argPrefix = argHash(trig.args).slice(0, 16)\n } else if (trig?.kind === 'judge') {\n dimension = trig.dimension\n }\n }\n // Fallback: look at the last errored tool span\n if (!toolName) {\n const ts = await toolSpans(store, run.runId)\n const errored = ts.filter((t) => t.status === 'error').pop()\n if (errored) {\n toolName = errored.toolName\n argPrefix = argHash(errored.args).slice(0, 16)\n }\n }\n // Secondary signal: any judge span on the failed run carries a\n // dimension. Useful when the rule classified by judge score but\n // didn't surface the trigger span (or surfaced a non-judge span).\n if (!dimension) {\n const judge = spans.find((s) => s.kind === 'judge' && typeof s.dimension === 'string')\n if (judge?.kind === 'judge') dimension = judge.dimension\n }\n\n const key = `${cls.failureClass}|${toolName ?? ''}|${argPrefix ?? ''}|${dimension ?? ''}`\n let cluster = clusters.get(key)\n if (!cluster) {\n cluster = {\n failureClass: cls.failureClass,\n toolName,\n argPrefix,\n dimension,\n runCount: 0,\n scenarioIds: [],\n exampleRunId: run.runId,\n exampleError: firstErrorMessage(spans) ?? cls.reason,\n }\n clusters.set(key, cluster)\n }\n cluster.runCount++\n if (!cluster.scenarioIds.includes(run.scenarioId)) cluster.scenarioIds.push(run.scenarioId)\n }\n\n const arr = [...clusters.values()]\n .filter((c) => c.runCount >= minSize)\n .sort((a, b) => b.runCount - a.runCount)\n\n return { clusters: arr, totalFailures, totalRuns: runs.length }\n}\n\nfunction firstErrorMessage(spans: Span[]): string | undefined {\n const errored = spans.find((s) => s.status === 'error')\n return errored?.error\n}\n","/**\n * FirstDivergenceView — aligns two trajectories by step index, reports\n * the first step where they differ.\n *\n * \"Differ\" is configurable — default is (kind, toolName if tool, model\n * if llm). Use this view to attribute \"why is variant B better?\" to a\n * specific step rather than an aggregate mean delta.\n */\n\nimport type { TraceStore } from '../trace/store'\nimport { buildTrajectory, type Trajectory, type TrajectoryStep } from '../trajectory'\n\nexport interface DivergenceReport {\n runA: string\n runB: string\n firstDivergenceIndex: number | null\n aStep?: TrajectoryStep\n bStep?: TrajectoryStep\n reason?: string\n /** Common prefix length (steps that matched). */\n commonPrefixLen: number\n}\n\nexport interface DivergenceOptions {\n /** Returns true if two steps are considered equal. Default: kind + tool/model match. */\n stepEquals?: (a: TrajectoryStep, b: TrajectoryStep) => boolean\n}\n\nexport async function firstDivergenceView(\n store: TraceStore,\n runA: string,\n runB: string,\n options: DivergenceOptions = {},\n): Promise<DivergenceReport> {\n const [a, b] = await Promise.all([buildTrajectory(store, runA), buildTrajectory(store, runB)])\n const eq = options.stepEquals ?? defaultStepEquals\n const minLen = Math.min(a.steps.length, b.steps.length)\n for (let i = 0; i < minLen; i++) {\n const aStep = a.steps[i]!\n const bStep = b.steps[i]!\n if (!eq(aStep, bStep)) {\n return {\n runA,\n runB,\n firstDivergenceIndex: i,\n aStep,\n bStep,\n reason: describeDifference(aStep, bStep),\n commonPrefixLen: i,\n }\n }\n }\n if (a.steps.length === b.steps.length) {\n return { runA, runB, firstDivergenceIndex: null, commonPrefixLen: minLen }\n }\n const longer: Trajectory = a.steps.length > b.steps.length ? a : b\n const extra = longer.steps.length - minLen\n // minLen === 0 means one trajectory is empty: divergence is the first step\n // itself (index 0), and the absent side has no step to surface.\n const reason =\n minLen === 0\n ? `one trajectory is empty; the other has ${extra} step(s) starting at index 0`\n : `one trajectory has ${extra} more step(s) after index ${minLen - 1}`\n return {\n runA,\n runB,\n firstDivergenceIndex: minLen,\n aStep: a.steps[minLen],\n bStep: b.steps[minLen],\n reason,\n commonPrefixLen: minLen,\n }\n}\n\nfunction defaultStepEquals(a: TrajectoryStep, b: TrajectoryStep): boolean {\n if (a.span.kind !== b.span.kind) return false\n if (a.span.kind === 'tool' && b.span.kind === 'tool') return a.span.toolName === b.span.toolName\n if (a.span.kind === 'llm' && b.span.kind === 'llm') return a.span.model === b.span.model\n if (a.span.kind === 'judge' && b.span.kind === 'judge')\n return a.span.dimension === b.span.dimension\n return a.span.name === b.span.name\n}\n\nfunction describeDifference(a: TrajectoryStep, b: TrajectoryStep): string {\n if (a.span.kind !== b.span.kind) return `kind ${a.span.kind} vs ${b.span.kind}`\n if (a.span.kind === 'tool' && b.span.kind === 'tool' && a.span.toolName !== b.span.toolName) {\n return `tool ${a.span.toolName} vs ${b.span.toolName}`\n }\n if (a.span.kind === 'llm' && b.span.kind === 'llm' && a.span.model !== b.span.model) {\n return `model ${a.span.model} vs ${b.span.model}`\n }\n return `name \"${a.span.name}\" vs \"${b.span.name}\"`\n}\n","/**\n * JudgeAgreementView — pairwise agreement between judges across the\n * corpus, grouped by dimension.\n *\n * Output drives two workflows:\n * - Judge robustness audit: \"does Claude agree with GPT at κ ≥ 0.6?\"\n * - Calibration tracking: κ vs golden human labels over time (by\n * providing a `humanGoldenJudgeId`).\n */\n\nimport { interRaterReliability } from '../statistics'\nimport type { JudgeSpan } from '../trace/schema'\nimport type { TraceStore } from '../trace/store'\n\nexport interface JudgePair {\n judgeA: string\n judgeB: string\n dimension: string\n /** Number of (targetSpanId, dimension) tuples both judges scored. */\n commonItems: number\n pearson: number\n krippendorff: number\n}\n\nexport interface JudgeAgreementReport {\n pairs: JudgePair[]\n dimensions: string[]\n judgeIds: string[]\n}\n\nexport async function judgeAgreementView(store: TraceStore): Promise<JudgeAgreementReport> {\n const all = (await store.spans({ kind: 'judge' })).filter(\n (s): s is JudgeSpan => s.kind === 'judge',\n )\n if (all.length === 0) return { pairs: [], dimensions: [], judgeIds: [] }\n\n const byDimension = new Map<string, JudgeSpan[]>()\n for (const s of all) {\n const arr = byDimension.get(s.dimension) ?? []\n arr.push(s)\n byDimension.set(s.dimension, arr)\n }\n\n const judgeIds = [...new Set(all.map((s) => s.judgeId))].sort()\n const pairs: JudgePair[] = []\n for (const [dim, spans] of byDimension) {\n const byJudge = new Map<string, Map<string, number>>()\n for (const s of spans) {\n const m = byJudge.get(s.judgeId) ?? new Map<string, number>()\n m.set(s.targetSpanId, s.score)\n byJudge.set(s.judgeId, m)\n }\n const judgesHere = [...byJudge.keys()]\n for (let i = 0; i < judgesHere.length; i++) {\n for (let j = i + 1; j < judgesHere.length; j++) {\n const judgeI = judgesHere[i]!\n const judgeJ = judgesHere[j]!\n const a = byJudge.get(judgeI)!\n const b = byJudge.get(judgeJ)!\n const common: Array<[number, number]> = []\n for (const [target, scoreA] of a) {\n const scoreB = b.get(target)\n if (scoreB !== undefined) common.push([scoreA, scoreB])\n }\n if (common.length < 2) continue\n const judgeScores = common.map(\n ([scoreA, scoreB]) =>\n [\n { judgeName: judgeI, dimension: dim, score: scoreA, reasoning: '' },\n { judgeName: judgeJ, dimension: dim, score: scoreB, reasoning: '' },\n ] as const,\n )\n const k = interRaterReliability(\n judgeScores[0]!.map((_, k2) => judgeScores.map((pair) => pair[k2]!)),\n )\n pairs.push({\n judgeA: judgeI,\n judgeB: judgeJ,\n dimension: dim,\n commonItems: common.length,\n pearson: pearson(\n common.map((c) => c[0]),\n common.map((c) => c[1]),\n ),\n krippendorff: k,\n })\n }\n }\n }\n\n return {\n pairs: pairs.sort((a, b) => b.commonItems - a.commonItems),\n dimensions: [...byDimension.keys()].sort(),\n judgeIds,\n }\n}\n\nfunction pearson(a: number[], b: number[]): number {\n if (a.length !== b.length || a.length < 2) return NaN\n const mA = a.reduce((s, v) => s + v, 0) / a.length\n const mB = b.reduce((s, v) => s + v, 0) / b.length\n let num = 0,\n denA = 0,\n denB = 0\n for (let i = 0; i < a.length; i++) {\n const dA = a[i]! - mA\n const dB = b[i]! - mB\n num += dA * dB\n denA += dA * dA\n denB += dB * dB\n }\n if (denA === 0 || denB === 0) return denA === 0 && denB === 0 ? 1 : 0\n return num / Math.sqrt(denA * denB)\n}\n","/**\n * RegressionView — compares a candidate slice to a baseline slice on a\n * named metric. Delegates the statistics (Welch's t-test, Cohen's d,\n * IQR stability) to `baseline.ts`.\n *\n * This is the entry point for CI regression gates: \"given runs tagged\n * release=A and release=B, did any metric regress?\"\n */\n\nimport { type BaselineOptions, type BaselineReport, compareToBaseline } from '../baseline'\nimport { aggregateLlm, llmSpans, runFailureClass } from '../trace/query'\nimport type { Run } from '../trace/schema'\nimport type { RunFilter, TraceStore } from '../trace/store'\n\nexport interface RegressionSpec {\n metric: string\n higherIsBetter: boolean\n /** Extract a scalar from a run. Default extractors handle common metrics. */\n extract?: (run: Run, store: TraceStore) => Promise<number | null>\n}\n\nexport interface RegressionOptions extends BaselineOptions {\n baseline: RunFilter\n candidate: RunFilter\n}\n\nexport async function regressionView(\n store: TraceStore,\n metrics: RegressionSpec[],\n options: RegressionOptions,\n): Promise<BaselineReport> {\n const baselineRuns = await store.listRuns(options.baseline)\n const candidateRuns = await store.listRuns(options.candidate)\n const samples = await Promise.all(\n metrics.map(async (m) => {\n const extract = m.extract ?? defaultExtract(m.metric)\n const baseline = await extractAll(baselineRuns, extract, store)\n const candidate = await extractAll(candidateRuns, extract, store)\n return { metric: m.metric, higherIsBetter: m.higherIsBetter, baseline, candidate }\n }),\n )\n return compareToBaseline(samples, options)\n}\n\nasync function extractAll(\n runs: Run[],\n extract: (r: Run, s: TraceStore) => Promise<number | null>,\n store: TraceStore,\n): Promise<number[]> {\n const out: number[] = []\n for (const r of runs) {\n const v = await extract(r, store)\n if (v !== null && Number.isFinite(v)) out.push(v)\n }\n return out\n}\n\nfunction defaultExtract(metric: string): (run: Run, store: TraceStore) => Promise<number | null> {\n return async (run, store) => {\n switch (metric) {\n case 'score':\n case 'overallScore':\n return run.outcome?.score ?? null\n case 'pass':\n return run.outcome?.pass === true ? 1 : 0\n case 'durationMs':\n return run.endedAt && run.startedAt ? run.endedAt - run.startedAt : null\n case 'costUsd': {\n const llm = await llmSpans(store, run.runId)\n return aggregateLlm(llm).costUsd\n }\n case 'inputTokens': {\n const llm = await llmSpans(store, run.runId)\n return aggregateLlm(llm).inputTokens\n }\n case 'outputTokens': {\n const llm = await llmSpans(store, run.runId)\n return aggregateLlm(llm).outputTokens\n }\n case 'failureClass': {\n return runFailureClass(run) === 'success' ? 1 : 0\n }\n default:\n return null\n }\n }\n}\n","/**\n * StuckLoopView — detects when an agent calls the same tool with the\n * same (or structurally similar) arguments ≥ N times in a short window.\n *\n * Rationale: agents that loop are the number-one production failure\n * mode on long-horizon flows. The view returns (runId, toolName,\n * argHash, occurrences, windowMs) for each detected loop plus a\n * fraction of runs affected.\n */\n\nimport { argHash, toolSpans } from '../trace/query'\nimport type { TraceStore } from '../trace/store'\n\nexport interface StuckLoopFinding {\n runId: string\n toolName: string\n argHash: string\n occurrences: number\n spanIds: string[]\n /** Milliseconds between first and last call in the loop. */\n windowMs: number\n}\n\nexport interface StuckLoopReport {\n findings: StuckLoopFinding[]\n affectedRunRatio: number\n totalRuns: number\n}\n\nexport interface StuckLoopOptions {\n /** Minimum call count to flag a loop (default 3). */\n minOccurrences?: number\n /** Filter to a specific runId; omit to scan the entire corpus. */\n runId?: string\n}\n\nexport async function stuckLoopView(\n store: TraceStore,\n options: StuckLoopOptions = {},\n): Promise<StuckLoopReport> {\n const minOccurrences = options.minOccurrences ?? 3\n const runs = options.runId\n ? [{ runId: options.runId }]\n : (await store.listRuns()).map((r) => ({ runId: r.runId }))\n\n const findings: StuckLoopFinding[] = []\n for (const { runId } of runs) {\n const tools = await toolSpans(store, runId)\n const byKey = new Map<string, { spans: typeof tools; argHash: string; toolName: string }>()\n for (const t of tools) {\n const h = argHash(t.args)\n // NUL delimiter never appears in a tool name or a JSON argHash, so the\n // key cannot collide; toolName is carried in the bucket rather than\n // re-derived by splitting the key (which mislabeled any tool whose name\n // contained the delimiter, e.g. \"shell|grep\").\n const key = `${t.toolName}\\u0000${h}`\n const bucket = byKey.get(key) ?? { spans: [], argHash: h, toolName: t.toolName }\n bucket.spans.push(t)\n byKey.set(key, bucket)\n }\n for (const { spans, argHash: h, toolName } of byKey.values()) {\n if (spans.length < minOccurrences) continue\n const sorted = [...spans].sort((a, b) => a.startedAt - b.startedAt)\n const first = sorted[0]!.startedAt\n const last = sorted[sorted.length - 1]!.startedAt\n findings.push({\n runId,\n toolName,\n argHash: h,\n occurrences: sorted.length,\n spanIds: sorted.map((s) => s.spanId),\n windowMs: last - first,\n })\n }\n }\n\n const affectedRuns = new Set(findings.map((f) => f.runId))\n return {\n findings,\n affectedRunRatio: runs.length > 0 ? affectedRuns.size / runs.length : 0,\n totalRuns: runs.length,\n }\n}\n","/**\n * ToolWasteView — fraction of tool calls whose results weren't used\n * downstream. Without a \"used\" signal we fall back to structural\n * proxies: error calls, duplicate calls, and tool calls followed by\n * zero subsequent LLM spans are all considered waste.\n *\n * Consumers can pass a `usageOracle` that inspects a tool span and\n * returns true iff the tool's result appears in a later LLM message,\n * artifact, or state mutation — that's the canonical definition; the\n * default heuristic is a reasonable fallback.\n */\n\nimport { computeToolUseMetrics } from '../tool-use-metrics'\nimport { llmSpans, toolSpans } from '../trace/query'\nimport type { LlmSpan, ToolSpan } from '../trace/schema'\nimport type { TraceStore } from '../trace/store'\n\nexport interface ToolWasteFinding {\n runId: string\n wastedCalls: number\n totalCalls: number\n wasteRate: number\n}\n\nexport interface ToolWasteReport {\n byRun: ToolWasteFinding[]\n overallWasteRate: number\n}\n\nexport interface ToolWasteOptions {\n runId?: string\n usageOracle?: (tool: ToolSpan, later: { llm: Awaited<ReturnType<typeof llmSpans>> }) => boolean\n}\n\nexport async function toolWasteView(\n store: TraceStore,\n options: ToolWasteOptions = {},\n): Promise<ToolWasteReport> {\n const runs = options.runId ? [options.runId] : (await store.listRuns()).map((r) => r.runId)\n\n const byRun: ToolWasteFinding[] = []\n let totalCalls = 0\n let totalWasted = 0\n for (const runId of runs) {\n const tools = await toolSpans(store, runId)\n if (tools.length === 0) {\n byRun.push({ runId, wastedCalls: 0, totalCalls: 0, wasteRate: 0 })\n continue\n }\n const llms = await llmSpans(store, runId)\n // Sort LLM spans once by start time, then build a suffix index of the\n // concatenated message text. `suffixText[i]` is the haystack of every\n // string message content in spans[i..]. Per tool we binary-search the\n // first span started strictly after the tool, then test that one suffix\n // — turning the per-tool O(llms × messages × content) scan into a single\n // O(log llms) lookup over precomputed text.\n const sortedLlm = [...llms].sort((a, b) => a.startedAt - b.startedAt)\n const startTimes = sortedLlm.map((l) => l.startedAt)\n const suffixText = buildSuffixText(sortedLlm)\n let wasted = 0\n for (const t of tools) {\n if (t.status === 'error') {\n wasted++\n continue\n }\n // First LLM span started strictly after this tool (upper-bound search).\n const cutoff = upperBound(startTimes, t.startedAt)\n if (options.usageOracle) {\n if (!options.usageOracle(t, { llm: sortedLlm.slice(cutoff) })) wasted++\n } else {\n // Default heuristic: a tool whose result is NOT mentioned in any\n // later LLM input message is likely wasted. An empty/null result has\n // no payload to propagate downstream — there is nothing to find in a\n // later message, so it is not evidence of waste; skip it.\n const resultStr = stringify(t.result)\n if (resultStr === '') continue\n const haystack = suffixText[cutoff] ?? ''\n const used = haystack.includes(resultStr.slice(0, 120))\n if (!used) wasted++\n }\n }\n const wasteRate = wasted / tools.length\n byRun.push({ runId, wastedCalls: wasted, totalCalls: tools.length, wasteRate })\n totalCalls += tools.length\n totalWasted += wasted\n }\n return { byRun, overallWasteRate: totalCalls > 0 ? totalWasted / totalCalls : 0 }\n}\n\n/**\n * Build per-position suffix haystacks: result[i] is the concatenation of every\n * string message content in spans[i..end]. Built back-to-front so each entry\n * reuses the next one — O(total message text) rather than O(spans²).\n */\nfunction buildSuffixText(spans: LlmSpan[]): string[] {\n const result = new Array<string>(spans.length + 1)\n result[spans.length] = ''\n for (let i = spans.length - 1; i >= 0; i--) {\n const own = spans[i]!.messages.map((m) =>\n typeof m.content === 'string' ? m.content : '',\n ).join('\\n')\n result[i] = `${own}\\n${result[i + 1]}`\n }\n return result\n}\n\n/** Index of the first element strictly greater than `target` in a sorted array. */\nfunction upperBound(sorted: number[], target: number): number {\n let lo = 0\n let hi = sorted.length\n while (lo < hi) {\n const mid = (lo + hi) >>> 1\n if (sorted[mid]! <= target) lo = mid + 1\n else hi = mid\n }\n return lo\n}\n\nfunction stringify(v: unknown): string {\n if (v === null || v === undefined) return ''\n if (typeof v === 'string') return v\n try {\n return JSON.stringify(v)\n } catch {\n return String(v)\n }\n}\n\n// Re-export for convenience in consumers that want both descriptive and usage metrics.\nexport { computeToolUseMetrics }\n"],"mappings":"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","names":[]}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * JudgeAgreementView — pairwise agreement between judges across the
3
+ * corpus, grouped by dimension.
4
+ *
5
+ * Output drives two workflows:
6
+ * - Judge robustness audit: "does Claude agree with GPT at κ ≥ 0.6?"
7
+ * - Calibration tracking: κ vs golden human labels over time (by
8
+ * providing a `humanGoldenJudgeId`).
9
+ */
10
+ import type { TraceStore } from '../trace/store';
11
+ export interface JudgePair {
12
+ judgeA: string;
13
+ judgeB: string;
14
+ dimension: string;
15
+ /** Number of (targetSpanId, dimension) tuples both judges scored. */
16
+ commonItems: number;
17
+ pearson: number;
18
+ krippendorff: number;
19
+ }
20
+ export interface JudgeAgreementReport {
21
+ pairs: JudgePair[];
22
+ dimensions: string[];
23
+ judgeIds: string[];
24
+ }
25
+ export declare function judgeAgreementView(store: TraceStore): Promise<JudgeAgreementReport>;
26
+ //# sourceMappingURL=judge-agreement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"judge-agreement.d.ts","sourceRoot":"","sources":["../../src/pipelines/judge-agreement.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAiEzF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=judge-agreement.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"judge-agreement.test.d.ts","sourceRoot":"","sources":["../../src/pipelines/judge-agreement.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * RegressionView — compares a candidate slice to a baseline slice on a
3
+ * named metric. Delegates the statistics (Welch's t-test, Cohen's d,
4
+ * IQR stability) to `baseline.ts`.
5
+ *
6
+ * This is the entry point for CI regression gates: "given runs tagged
7
+ * release=A and release=B, did any metric regress?"
8
+ */
9
+ import { type BaselineOptions, type BaselineReport } from '../baseline';
10
+ import type { Run } from '../trace/schema';
11
+ import type { RunFilter, TraceStore } from '../trace/store';
12
+ export interface RegressionSpec {
13
+ metric: string;
14
+ higherIsBetter: boolean;
15
+ /** Extract a scalar from a run. Default extractors handle common metrics. */
16
+ extract?: (run: Run, store: TraceStore) => Promise<number | null>;
17
+ }
18
+ export interface RegressionOptions extends BaselineOptions {
19
+ baseline: RunFilter;
20
+ candidate: RunFilter;
21
+ }
22
+ export declare function regressionView(store: TraceStore, metrics: RegressionSpec[], options: RegressionOptions): Promise<BaselineReport>;
23
+ //# sourceMappingURL=regression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regression.d.ts","sourceRoot":"","sources":["../../src/pipelines/regression.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAqB,MAAM,aAAa,CAAA;AAE1F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CAClE;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,cAAc,EAAE,EACzB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,cAAc,CAAC,CAYzB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=regression.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regression.test.d.ts","sourceRoot":"","sources":["../../src/pipelines/regression.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * StuckLoopView — detects when an agent calls the same tool with the
3
+ * same (or structurally similar) arguments ≥ N times in a short window.
4
+ *
5
+ * Rationale: agents that loop are the number-one production failure
6
+ * mode on long-horizon flows. The view returns (runId, toolName,
7
+ * argHash, occurrences, windowMs) for each detected loop plus a
8
+ * fraction of runs affected.
9
+ */
10
+ import type { TraceStore } from '../trace/store';
11
+ export interface StuckLoopFinding {
12
+ runId: string;
13
+ toolName: string;
14
+ argHash: string;
15
+ occurrences: number;
16
+ spanIds: string[];
17
+ /** Milliseconds between first and last call in the loop. */
18
+ windowMs: number;
19
+ }
20
+ export interface StuckLoopReport {
21
+ findings: StuckLoopFinding[];
22
+ affectedRunRatio: number;
23
+ totalRuns: number;
24
+ }
25
+ export interface StuckLoopOptions {
26
+ /** Minimum call count to flag a loop (default 3). */
27
+ minOccurrences?: number;
28
+ /** Filter to a specific runId; omit to scan the entire corpus. */
29
+ runId?: string;
30
+ }
31
+ export declare function stuckLoopView(store: TraceStore, options?: StuckLoopOptions): Promise<StuckLoopReport>;
32
+ //# sourceMappingURL=stuck-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stuck-loop.d.ts","sourceRoot":"","sources":["../../src/pipelines/stuck-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,gBAAgB,EAAE,CAAA;IAC5B,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CA2C1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stuck-loop.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stuck-loop.test.d.ts","sourceRoot":"","sources":["../../src/pipelines/stuck-loop.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * ToolWasteView — fraction of tool calls whose results weren't used
3
+ * downstream. Without a "used" signal we fall back to structural
4
+ * proxies: error calls, duplicate calls, and tool calls followed by
5
+ * zero subsequent LLM spans are all considered waste.
6
+ *
7
+ * Consumers can pass a `usageOracle` that inspects a tool span and
8
+ * returns true iff the tool's result appears in a later LLM message,
9
+ * artifact, or state mutation — that's the canonical definition; the
10
+ * default heuristic is a reasonable fallback.
11
+ */
12
+ import { computeToolUseMetrics } from '../tool-use-metrics';
13
+ import { llmSpans } from '../trace/query';
14
+ import type { ToolSpan } from '../trace/schema';
15
+ import type { TraceStore } from '../trace/store';
16
+ export interface ToolWasteFinding {
17
+ runId: string;
18
+ wastedCalls: number;
19
+ totalCalls: number;
20
+ wasteRate: number;
21
+ }
22
+ export interface ToolWasteReport {
23
+ byRun: ToolWasteFinding[];
24
+ overallWasteRate: number;
25
+ }
26
+ export interface ToolWasteOptions {
27
+ runId?: string;
28
+ usageOracle?: (tool: ToolSpan, later: {
29
+ llm: Awaited<ReturnType<typeof llmSpans>>;
30
+ }) => boolean;
31
+ }
32
+ export declare function toolWasteView(store: TraceStore, options?: ToolWasteOptions): Promise<ToolWasteReport>;
33
+ export { computeToolUseMetrics };
34
+ //# sourceMappingURL=tool-waste.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-waste.d.ts","sourceRoot":"","sources":["../../src/pipelines/tool-waste.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAa,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAW,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,gBAAgB,EAAE,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;QAAE,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAA;KAAE,KAAK,OAAO,CAAA;CAChG;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAkD1B;AA0CD,OAAO,EAAE,qBAAqB,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tool-waste.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-waste.test.d.ts","sourceRoot":"","sources":["../../src/pipelines/tool-waste.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ export interface PlaybookEntry {
2
+ instruction: string;
3
+ rationale: string;
4
+ category?: string;
5
+ evidence?: string;
6
+ weight?: number;
7
+ sourceRunId?: string;
8
+ }
9
+ export interface Playbook {
10
+ entries: PlaybookEntry[];
11
+ }
12
+ export declare function distillPlaybook(entries: PlaybookEntry[], options?: {
13
+ maxEntries?: number;
14
+ }): Playbook;
15
+ export declare function renderPlaybookMarkdown(playbook: Playbook): string;
16
+ //# sourceMappingURL=playbook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playbook.d.ts","sourceRoot":"","sources":["../src/playbook.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,aAAa,EAAE,CAAA;CACzB;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,aAAa,EAAE,EACxB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACpC,QAAQ,CAiBV;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAWjE"}
@@ -0,0 +1,88 @@
1
+ export type PrReviewSource = 'drew' | 'donovan' | 'shady' | 'codex' | 'claude-code' | 'gpt-5.5-high' | 'claude-opus-4.7-high' | 'kimi' | 'opencode' | (string & {});
2
+ export type PrReviewSeverity = 'critical' | 'high' | 'medium' | 'low' | 'nit';
3
+ export type PrReviewOutcome = 'accepted' | 'fixed' | 'rejected' | 'duplicate' | 'noise' | 'unknown';
4
+ export interface PrReviewComment {
5
+ id: string;
6
+ source: PrReviewSource;
7
+ body: string;
8
+ model?: string;
9
+ author?: string;
10
+ path?: string;
11
+ line?: number;
12
+ severity?: PrReviewSeverity;
13
+ outcome?: PrReviewOutcome;
14
+ createdAt?: string;
15
+ metadata?: Record<string, unknown>;
16
+ }
17
+ export interface PrReviewReferenceFinding {
18
+ id: string;
19
+ title: string;
20
+ severity: PrReviewSeverity;
21
+ path?: string;
22
+ line?: number;
23
+ /**
24
+ * Stable terms that should appear in a useful finding. Keep these
25
+ * factual: API names, invariant names, table names, error classes.
26
+ */
27
+ keywords?: string[];
28
+ fixedByCommit?: string;
29
+ sourceCommentIds?: string[];
30
+ metadata?: Record<string, unknown>;
31
+ }
32
+ export interface PrReviewAuditCase {
33
+ id: string;
34
+ repo: string;
35
+ prNumber?: number;
36
+ baseSha?: string;
37
+ headSha?: string;
38
+ title?: string;
39
+ diff?: string;
40
+ split?: 'train' | 'validation' | 'test' | 'holdout' | (string & {});
41
+ comments: PrReviewComment[];
42
+ referenceFindings: PrReviewReferenceFinding[];
43
+ metadata?: Record<string, unknown>;
44
+ }
45
+ export interface PrReviewScoreWeights {
46
+ recall: number;
47
+ precision: number;
48
+ actionability: number;
49
+ severityCalibration: number;
50
+ lowNoise: number;
51
+ }
52
+ export interface PrReviewMatchedFinding {
53
+ referenceId: string;
54
+ commentId: string;
55
+ score: number;
56
+ }
57
+ export interface PrReviewScore {
58
+ caseId: string;
59
+ source: PrReviewSource;
60
+ commentCount: number;
61
+ referenceCount: number;
62
+ matchedFindings: PrReviewMatchedFinding[];
63
+ recall: number;
64
+ precision: number;
65
+ actionability: number;
66
+ severityCalibration: number;
67
+ lowNoise: number;
68
+ aggregate: number;
69
+ notes: string[];
70
+ }
71
+ export interface PrReviewBenchmarkSummary {
72
+ source: PrReviewSource;
73
+ caseCount: number;
74
+ commentCount: number;
75
+ aggregateMean: number;
76
+ recallMean: number;
77
+ precisionMean: number;
78
+ actionabilityMean: number;
79
+ severityCalibrationMean: number;
80
+ lowNoiseMean: number;
81
+ }
82
+ export declare const DEFAULT_PR_REVIEW_SCORE_WEIGHTS: PrReviewScoreWeights;
83
+ export declare function commentsForSource(auditCase: PrReviewAuditCase, source: PrReviewSource): PrReviewComment[];
84
+ export declare function scorePrReviewSource(auditCase: PrReviewAuditCase, source: PrReviewSource, weights?: Partial<PrReviewScoreWeights>): PrReviewScore;
85
+ export declare function scorePrReviewComments(auditCase: PrReviewAuditCase, comments: PrReviewComment[], source: PrReviewSource, weights?: Partial<PrReviewScoreWeights>): PrReviewScore;
86
+ export declare function summarizePrReviewBenchmark(scores: PrReviewScore[]): PrReviewBenchmarkSummary[];
87
+ export declare function aggregatePrReviewScore(dimensions: Pick<PrReviewScore, 'recall' | 'precision' | 'actionability' | 'severityCalibration' | 'lowNoise'>, weights?: Partial<PrReviewScoreWeights>): number;
88
+ //# sourceMappingURL=pr-review-benchmark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-review-benchmark.d.ts","sourceRoot":"","sources":["../src/pr-review-benchmark.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pr-review-benchmark.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-review-benchmark.test.d.ts","sourceRoot":"","sources":["../src/pr-review-benchmark.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Pre-registered hypotheses — declare what you're testing BEFORE the
3
+ * run, check it AFTER. Prevents p-hacking, optional stopping, and the
4
+ * "we ran until it looked good" failure mode.
5
+ *
6
+ * Manifest is a plain JSON-friendly object. Sign it with a content hash
7
+ * + timestamp; the registered record becomes immutable. Post-run,
8
+ * evaluate the manifest against observed results — the library refuses
9
+ * to let you re-interpret a different metric as the declared one.
10
+ */
11
+ export interface HypothesisManifest {
12
+ id: string;
13
+ /** Human prose — goes into the audit trail. */
14
+ hypothesis: string;
15
+ /** Metric the hypothesis claims to move. */
16
+ metric: string;
17
+ /** 'increase' = candidate should score higher than baseline; 'decrease' = lower. */
18
+ direction: 'increase' | 'decrease';
19
+ /** Minimum effect size to count (same units as the metric). */
20
+ minEffect: number;
21
+ /** Alpha threshold. */
22
+ alpha: number;
23
+ /** Target statistical power at which sample size was pre-computed. */
24
+ power: number;
25
+ /** Declared N per arm before running. */
26
+ preRegisteredN: number;
27
+ /** ISO8601 timestamp the manifest was registered. */
28
+ registeredAt: string;
29
+ /** Optional identifiers to tie into the trace corpus. */
30
+ baselineLabel?: string;
31
+ candidateLabel?: string;
32
+ }
33
+ /**
34
+ * Identifier for the hashing scheme used to produce `contentHash`.
35
+ *
36
+ * `'sha256-content'` — sha256 hex over the canonicalized manifest with
37
+ * the `contentHash` and `algo` fields stripped. Held as a string union
38
+ * so future schemes can be added without breaking parsers; SignedManifest
39
+ * values without `algo` deserialize cleanly because the field is optional.
40
+ */
41
+ export type SignedManifestAlgo = 'sha256-content';
42
+ export interface SignedManifest extends HypothesisManifest {
43
+ /** sha256 hex of canonicalized manifest (everything except contentHash and algo). */
44
+ contentHash: string;
45
+ /**
46
+ * Algorithm string describing how `contentHash` was produced.
47
+ *
48
+ * Optional on the type so serialized manifests without it still parse,
49
+ * but ALWAYS populated by {@link signManifest}. Consumers that want to
50
+ * enforce a known algorithm should reject manifests where this field
51
+ * is missing or unrecognized.
52
+ */
53
+ algo?: SignedManifestAlgo;
54
+ }
55
+ export interface HypothesisResult {
56
+ manifest: SignedManifest;
57
+ observedN: number;
58
+ observedEffect: number;
59
+ observedPValue: number;
60
+ /** True iff the observed effect hits the pre-declared direction with
61
+ * magnitude ≥ minEffect AND p < alpha. */
62
+ confirmed: boolean;
63
+ /** Enumerated reasons the hypothesis was rejected (each a machine-tag). */
64
+ rejectionReasons: Array<'wrong_direction' | 'effect_too_small' | 'not_significant' | 'undersampled'>;
65
+ notes?: string;
66
+ }
67
+ /**
68
+ * Deterministic JSON canonicalization — sort object keys recursively.
69
+ *
70
+ * Two semantically-equal objects produce byte-identical canonicalized output;
71
+ * this is what makes a content-hash stable across encoders, key insertion
72
+ * orders, and runtime versions. Exported for any consumer that needs the same
73
+ * canonicalization guarantee outside the manifest-signing path (e.g., signing
74
+ * an artifact bundle, hashing a dataset version, etc.).
75
+ */
76
+ export declare function canonicalize(v: unknown): unknown;
77
+ /**
78
+ * SHA-256 hex (full 64 chars) over the canonicalized JSON encoding of `obj`.
79
+ *
80
+ * The same primitive `signManifest` and `verifyManifest` are built on, exposed
81
+ * directly so consumers signing arbitrary structured content (artifact bundles,
82
+ * production packets, dataset manifests, etc.) don't have to re-derive
83
+ * canonicalize+sha256 from scratch.
84
+ *
85
+ * Stable across:
86
+ * - object key insertion order (canonicalization sorts keys recursively)
87
+ * - encoder choice (UTF-8 via TextEncoder, fixed)
88
+ * - runtime (uses the Web Crypto subtle digest, present in Node ≥18 and browsers)
89
+ *
90
+ * Named `hashJson` to disambiguate from `prompt-registry.ts`'s `hashContent`,
91
+ * which takes a string input and returns a truncated 12-char prompt id.
92
+ * Use `hashJson` when you mean "canonicalize then hash."
93
+ *
94
+ * @example
95
+ * const hash = await hashJson({ id: '1', kind: 'spec' })
96
+ * // 'a3f1...' (64 hex chars)
97
+ */
98
+ export declare function hashJson<T>(obj: T): Promise<string>;
99
+ /**
100
+ * Sign a manifest with a SHA-256 content hash.
101
+ *
102
+ * The hash covers the canonicalized manifest with the `contentHash`
103
+ * and `algo` fields stripped; this lets verifiers re-sign the rest and
104
+ * compare. Returned manifest always carries `algo: 'sha256-content'`
105
+ * so downstream consumers can identify the scheme; manifests without
106
+ * `algo` still verify because it is stripped before hashing on both sides.
107
+ */
108
+ export declare function signManifest(m: HypothesisManifest): Promise<SignedManifest>;
109
+ /**
110
+ * Verify that a signed manifest has not been tampered with.
111
+ *
112
+ * Strips `contentHash` and `algo` before re-signing so manifests without
113
+ * `algo` verify identically to ones that carry it.
114
+ */
115
+ export declare function verifyManifest(m: SignedManifest): Promise<boolean>;
116
+ /**
117
+ * Evaluate a pre-registered hypothesis against observed results.
118
+ * Mechanical — no re-interpretation permitted.
119
+ */
120
+ export declare function evaluateHypothesis(manifest: SignedManifest, observed: {
121
+ n: number;
122
+ effect: number;
123
+ pValue: number;
124
+ }): Promise<HypothesisResult>;
125
+ //# sourceMappingURL=pre-registration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pre-registration.d.ts","sourceRoot":"","sources":["../src/pre-registration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAA;IAClB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAA;IACd,oFAAoF;IACpF,SAAS,EAAE,UAAU,GAAG,UAAU,CAAA;IAClC,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAA;IACjB,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAA;IACb,yCAAyC;IACzC,cAAc,EAAE,MAAM,CAAA;IACtB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAA;IACpB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAA;AAEjD,MAAM,WAAW,cAAe,SAAQ,kBAAkB;IACxD,qFAAqF;IACrF,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,kBAAkB,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,cAAc,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB;+CAC2C;IAC3C,SAAS,EAAE,OAAO,CAAA;IAClB,2EAA2E;IAC3E,gBAAgB,EAAE,KAAK,CACrB,iBAAiB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,cAAc,CAC5E,CAAA;IACD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAOhD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAOzD;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAGjF;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAKxE;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACtD,OAAO,CAAC,gBAAgB,CAAC,CAkB3B"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Built-in reference rubrics. Consumers combine these with domain
3
+ * rubrics. All are deterministic, rule-based — cheap to run + easy
4
+ * to unit-test. LLM-based rubrics are trivially authored by
5
+ * following the StepRubric contract.
6
+ */
7
+ import type { StepRubric } from './rubric';
8
+ /** Penalize very short or very long assistant outputs. */
9
+ export declare function outputLengthRubric(args?: {
10
+ minChars?: number;
11
+ maxChars?: number;
12
+ weight?: number;
13
+ }): StepRubric;
14
+ /** Reward tool calls that succeeded (status='ok') with an informative result. */
15
+ export declare function toolSuccessRubric(args?: {
16
+ weight?: number;
17
+ }): StepRubric;
18
+ /** Penalize tool calls that duplicate a prior call with identical args. */
19
+ export declare function toolNonRedundantRubric(args?: {
20
+ weight?: number;
21
+ }): StepRubric;
22
+ /** Penalize LLM outputs that contain common refusal markers when a refusal
23
+ * is NOT expected (caller inverts weight for scenarios where refusal IS expected). */
24
+ export declare function nonRefusalRubric(args?: {
25
+ markers?: RegExp[];
26
+ weight?: number;
27
+ }): StepRubric;
28
+ /** Reward outputs that invoke the next-step tool the trajectory actually uses
29
+ * (i.e. the LLM span announced "I will call X" and the following tool span IS X). */
30
+ export declare function toolIntentAlignmentRubric(args?: {
31
+ weight?: number;
32
+ }): StepRubric;
33
+ //# sourceMappingURL=builtin-rubrics.d.ts.map