@tangle-network/agent-eval 1.0.22 → 1.0.24

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 (233) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/dist/adapters/http.d.ts +2 -2
  3. package/dist/{agent-profile-DU5InUT9.d.ts → agent-profile-DC_v4p1f.d.ts} +3 -3
  4. package/dist/{agent-profile-DU5InUT9.d.ts.map → agent-profile-DC_v4p1f.d.ts.map} +1 -1
  5. package/dist/analyst/index.d.ts +14 -14
  6. package/dist/analyst/index.js +9 -9
  7. package/dist/{analyze-runs-jLTRKuoK.js → analyze-runs-BCSHzqna.js} +2 -2
  8. package/dist/{analyze-runs-jLTRKuoK.js.map → analyze-runs-BCSHzqna.js.map} +1 -1
  9. package/dist/{analyze-runs-DYYe18Gw.d.ts → analyze-runs-DGr7mpC3.d.ts} +5 -5
  10. package/dist/{analyze-runs-DYYe18Gw.d.ts.map → analyze-runs-DGr7mpC3.d.ts.map} +1 -1
  11. package/dist/app-grade/index.d.ts +4 -4
  12. package/dist/app-grade/index.js +3 -3
  13. package/dist/{benchmark-command-DkUpd9Q6.js → benchmark-command-DRAHkn4D.js} +8 -9
  14. package/dist/{benchmark-command-DkUpd9Q6.js.map → benchmark-command-DRAHkn4D.js.map} +1 -1
  15. package/dist/benchmarks/index.d.ts +5 -5
  16. package/dist/benchmarks/index.js +3 -3
  17. package/dist/campaign/index.d.ts +7 -7
  18. package/dist/campaign/index.js +8 -8
  19. package/dist/{campaign-C2mmydmx.js → campaign-C9QC27C2.js} +12 -12
  20. package/dist/{campaign-C2mmydmx.js.map → campaign-C9QC27C2.js.map} +1 -1
  21. package/dist/{campaign-evidence-NtH29ctt.js → campaign-evidence-CVNKiK0q.js} +2 -2
  22. package/dist/{campaign-evidence-NtH29ctt.js.map → campaign-evidence-CVNKiK0q.js.map} +1 -1
  23. package/dist/{chat-client-Zz97O3NB.js → chat-client-9XLgWrQ7.js} +5 -3
  24. package/dist/chat-client-9XLgWrQ7.js.map +1 -0
  25. package/dist/{chat-json-call-Dgi7-RH-.js → chat-json-call-CaNO3k0A.js} +2 -2
  26. package/dist/{chat-json-call-Dgi7-RH-.js.map → chat-json-call-CaNO3k0A.js.map} +1 -1
  27. package/dist/cli.js +8 -8
  28. package/dist/{cluster-Cd0MRbr9.d.ts → cluster-CkzP4h3T.d.ts} +4 -2
  29. package/dist/{cluster-Cd0MRbr9.d.ts.map → cluster-CkzP4h3T.d.ts.map} +1 -1
  30. package/dist/{completion-verifier-DFyYFezn.js → completion-verifier-BYLOcQt7.js} +5 -4
  31. package/dist/completion-verifier-BYLOcQt7.js.map +1 -0
  32. package/dist/{completion-verifier-BEpsr3N4.d.ts → completion-verifier-CJVDPv2T.d.ts} +3 -2
  33. package/dist/{completion-verifier-BEpsr3N4.d.ts.map → completion-verifier-CJVDPv2T.d.ts.map} +1 -1
  34. package/dist/contract/index.d.ts +11 -11
  35. package/dist/contract/index.js +11 -13
  36. package/dist/contract/index.js.map +1 -1
  37. package/dist/{cost-ledger-DfhStGcZ.js → cost-ledger-1CwUnVOd.js} +145 -3
  38. package/dist/cost-ledger-1CwUnVOd.js.map +1 -0
  39. package/dist/{decision-point-Di2LATNH.js → decision-point-CQOczIIH.js} +2 -2
  40. package/dist/{decision-point-Di2LATNH.js.map → decision-point-CQOczIIH.js.map} +1 -1
  41. package/dist/{default-registry-aPvwtzEM.d.ts → default-registry-C_Akmpui.d.ts} +7 -7
  42. package/dist/{default-registry-aPvwtzEM.d.ts.map → default-registry-C_Akmpui.d.ts.map} +1 -1
  43. package/dist/{default-registry-CdFbxPnr.js → default-registry-D-xd7KxV.js} +5 -5
  44. package/dist/{default-registry-CdFbxPnr.js.map → default-registry-D-xd7KxV.js.map} +1 -1
  45. package/dist/{define-agent-eval-BROmIwn1.js → define-agent-eval-BLVewqJm.js} +8 -8
  46. package/dist/{define-agent-eval-BROmIwn1.js.map → define-agent-eval-BLVewqJm.js.map} +1 -1
  47. package/dist/{define-agent-eval-DGWBgCid.d.ts → define-agent-eval-nNPC7cD5.d.ts} +7 -7
  48. package/dist/{define-agent-eval-DGWBgCid.d.ts.map → define-agent-eval-nNPC7cD5.d.ts.map} +1 -1
  49. package/dist/diagnosis/index.d.ts +2 -2
  50. package/dist/diagnosis/index.js +1 -1
  51. package/dist/{dspy-rlm-engine-cWyn8G1a.js → dspy-rlm-engine-BS_jxE0P.js} +4 -4
  52. package/dist/{dspy-rlm-engine-cWyn8G1a.js.map → dspy-rlm-engine-BS_jxE0P.js.map} +1 -1
  53. package/dist/{engine-BF8naBn7.d.ts → engine-B0gr15-l.d.ts} +2 -2
  54. package/dist/{engine-BF8naBn7.d.ts.map → engine-B0gr15-l.d.ts.map} +1 -1
  55. package/dist/{eval-campaign-Dq8DEKmy.js → eval-campaign-DpkToY_w.js} +2 -2
  56. package/dist/eval-campaign-DpkToY_w.js.map +1 -0
  57. package/dist/{evaluation-bU_bhlv-.js → evaluation-C_GJvEEG.js} +2 -2
  58. package/dist/{evaluation-bU_bhlv-.js.map → evaluation-C_GJvEEG.js.map} +1 -1
  59. package/dist/{evaluation-CFKj_IlJ.d.ts → evaluation-mk3u_ZJC.d.ts} +4 -4
  60. package/dist/{evaluation-CFKj_IlJ.d.ts.map → evaluation-mk3u_ZJC.d.ts.map} +1 -1
  61. package/dist/evaluation.d.ts +1 -1
  62. package/dist/evaluation.js +1 -1
  63. package/dist/{exact-types-VAFjtOQN.d.ts → exact-types-Blq7YvsK.d.ts} +2 -2
  64. package/dist/{exact-types-VAFjtOQN.d.ts.map → exact-types-Blq7YvsK.d.ts.map} +1 -1
  65. package/dist/experiment/index.d.ts +3 -3
  66. package/dist/experiment/index.js +2 -2
  67. package/dist/{external-optimizer-process-2ImGH_LR.js → external-optimizer-process-m9xln7zN.js} +2 -2
  68. package/dist/{external-optimizer-process-2ImGH_LR.js.map → external-optimizer-process-m9xln7zN.js.map} +1 -1
  69. package/dist/{external-optimizer-subprocess-_C_2yriN.js → external-optimizer-subprocess-GO6s84Ov.js} +3 -3
  70. package/dist/{external-optimizer-subprocess-_C_2yriN.js.map → external-optimizer-subprocess-GO6s84Ov.js.map} +1 -1
  71. package/dist/{feedback-trajectory-DTj8eVTR.d.ts → feedback-trajectory-D3oISeGl.d.ts} +3 -3
  72. package/dist/{feedback-trajectory-DTj8eVTR.d.ts.map → feedback-trajectory-D3oISeGl.d.ts.map} +1 -1
  73. package/dist/{findings-store-BSuaV3dN.js → findings-store-CTy71Lnr.js} +5 -5
  74. package/dist/{findings-store-BSuaV3dN.js.map → findings-store-CTy71Lnr.js.map} +1 -1
  75. package/dist/fuzz.js +1 -1
  76. package/dist/hosted/index.js +1 -1
  77. package/dist/{index-DNXFzSpc.d.ts → index-BN6htPVi.d.ts} +2 -2
  78. package/dist/{index-DNXFzSpc.d.ts.map → index-BN6htPVi.d.ts.map} +1 -1
  79. package/dist/{index-BlTbxHlY.d.ts → index-BdFlQP54.d.ts} +4 -4
  80. package/dist/{index-BlTbxHlY.d.ts.map → index-BdFlQP54.d.ts.map} +1 -1
  81. package/dist/{index-QLDWZTxI.d.ts → index-CxuK3sxA.d.ts} +9 -9
  82. package/dist/{index-QLDWZTxI.d.ts.map → index-CxuK3sxA.d.ts.map} +1 -1
  83. package/dist/{index-YS58LHlx.d.ts → index-Dodw93oW.d.ts} +25 -181
  84. package/dist/index-Dodw93oW.d.ts.map +1 -0
  85. package/dist/{index-DX87wzX3.d.ts → index-IE8O0HNr.d.ts} +9 -9
  86. package/dist/{index-DX87wzX3.d.ts.map → index-IE8O0HNr.d.ts.map} +1 -1
  87. package/dist/{index-B62BaRzH.d.ts → index-KAYaJtMA.d.ts} +4 -4
  88. package/dist/{index-B62BaRzH.d.ts.map → index-KAYaJtMA.d.ts.map} +1 -1
  89. package/dist/{index-Bp3w4fWc.d.ts → index-cp5gkylN.d.ts} +12 -12
  90. package/dist/{index-Bp3w4fWc.d.ts.map → index-cp5gkylN.d.ts.map} +1 -1
  91. package/dist/index.d.ts +30 -30
  92. package/dist/index.js +72 -30
  93. package/dist/index.js.map +1 -1
  94. package/dist/{integrity-CrmnGB2T.d.ts → integrity-zeWMeTQt.d.ts} +2 -2
  95. package/dist/{integrity-CrmnGB2T.d.ts.map → integrity-zeWMeTQt.d.ts.map} +1 -1
  96. package/dist/{judge-gate-CrN0PaAL.js → judge-gate-DsoI5tx7.js} +2 -2
  97. package/dist/{judge-gate-CrN0PaAL.js.map → judge-gate-DsoI5tx7.js.map} +1 -1
  98. package/dist/{kind-factory-CV0FNCMM.js → kind-factory-CJXaE1oF.js} +2 -2
  99. package/dist/{kind-factory-CV0FNCMM.js.map → kind-factory-CJXaE1oF.js.map} +1 -1
  100. package/dist/{llm-client-DMMSg-Ro.js → llm-client-Bj-TooRS.js} +11 -11
  101. package/dist/{llm-client-DMMSg-Ro.js.map → llm-client-Bj-TooRS.js.map} +1 -1
  102. package/dist/{llm-judge-C813vmpc.js → llm-judge-DzAT7Wka.js} +11 -11
  103. package/dist/{llm-judge-C813vmpc.js.map → llm-judge-DzAT7Wka.js.map} +1 -1
  104. package/dist/{matrix-C-GxIgeJ.d.ts → matrix-Diw3yJCG.d.ts} +3 -4
  105. package/dist/matrix-Diw3yJCG.d.ts.map +1 -0
  106. package/dist/meta-eval/index.d.ts +3 -3
  107. package/dist/meta-eval/index.js +2 -2
  108. package/dist/{mint-yF51iBgY.js → mint-Ck92efNo.js} +2 -2
  109. package/dist/{mint-yF51iBgY.js.map → mint-Ck92efNo.js.map} +1 -1
  110. package/dist/multishot/golden/index.d.ts +1 -1
  111. package/dist/multishot/index.d.ts +3 -2
  112. package/dist/multishot/index.d.ts.map +1 -1
  113. package/dist/multishot/index.js +3 -3
  114. package/dist/multishot/index.js.map +1 -1
  115. package/dist/openapi.json +1 -1
  116. package/dist/{paired-promotion-decision-DJU3fZxH.d.ts → paired-promotion-decision-COeOgNHG.d.ts} +2 -2
  117. package/dist/{paired-promotion-decision-DJU3fZxH.d.ts.map → paired-promotion-decision-COeOgNHG.d.ts.map} +1 -1
  118. package/dist/paired-promotion-power-D03cUj9E.js +289 -0
  119. package/dist/paired-promotion-power-D03cUj9E.js.map +1 -0
  120. package/dist/{pareto-fJZg8pXm.js → pareto-UzjB3ZBk.js} +5 -288
  121. package/dist/pareto-UzjB3ZBk.js.map +1 -0
  122. package/dist/{prime-protocol-D1NkJRuD.d.ts → prime-protocol-bRbh6dqd.d.ts} +2 -2
  123. package/dist/{prime-protocol-D1NkJRuD.d.ts.map → prime-protocol-bRbh6dqd.d.ts.map} +1 -1
  124. package/dist/{promotion-gate-Da0xV4sa.d.ts → promotion-gate-XglbDCNo.d.ts} +3 -3
  125. package/dist/{promotion-gate-Da0xV4sa.d.ts.map → promotion-gate-XglbDCNo.d.ts.map} +1 -1
  126. package/dist/{proposal-findings-DWs94yT8.js → proposal-findings-CS6LoGGp.js} +2 -2
  127. package/dist/{proposal-findings-DWs94yT8.js.map → proposal-findings-CS6LoGGp.js.map} +1 -1
  128. package/dist/{registry-BAcEbzKm.d.ts → registry-Pfeqsr5k.d.ts} +4 -4
  129. package/dist/{registry-BAcEbzKm.d.ts.map → registry-Pfeqsr5k.d.ts.map} +1 -1
  130. package/dist/{release-confidence-DGtuPDxJ.js → release-confidence-B4Xxdpmn.js} +2 -2
  131. package/dist/{release-confidence-DGtuPDxJ.js.map → release-confidence-B4Xxdpmn.js.map} +1 -1
  132. package/dist/reporting.d.ts +5 -5
  133. package/dist/reporting.js +2 -2
  134. package/dist/{researcher-CSlc84Bp.d.ts → researcher-DlyjP5uq.d.ts} +6 -6
  135. package/dist/{researcher-CSlc84Bp.d.ts.map → researcher-DlyjP5uq.d.ts.map} +1 -1
  136. package/dist/{reward-ST4PXNXF.d.ts → reward-ap_R9mCH.d.ts} +2 -2
  137. package/dist/{reward-ST4PXNXF.d.ts.map → reward-ap_R9mCH.d.ts.map} +1 -1
  138. package/dist/{reward-hacking-C9hPVT0Q.d.ts → reward-hacking-CIdVwVe4.d.ts} +2 -2
  139. package/dist/{reward-hacking-C9hPVT0Q.d.ts.map → reward-hacking-CIdVwVe4.d.ts.map} +1 -1
  140. package/dist/rl.d.ts +11 -11
  141. package/dist/rl.js +5 -5
  142. package/dist/rl.js.map +1 -1
  143. package/dist/rollout/index.d.ts +3 -3
  144. package/dist/rollout/index.js +2 -2
  145. package/dist/{rollout-DKa54qer.js → rollout-Dh5q6CPA.js} +3 -3
  146. package/dist/{rollout-DKa54qer.js.map → rollout-Dh5q6CPA.js.map} +1 -1
  147. package/dist/{rubric-predictive-validity-B3RzbwOx.d.ts → rubric-predictive-validity-Bbi88Aut.d.ts} +2 -2
  148. package/dist/{rubric-predictive-validity-B3RzbwOx.d.ts.map → rubric-predictive-validity-Bbi88Aut.d.ts.map} +1 -1
  149. package/dist/{run-record-CFbnkE1K.js → run-record-DTTx9Ktr.js} +2 -2
  150. package/dist/{run-record-CFbnkE1K.js.map → run-record-DTTx9Ktr.js.map} +1 -1
  151. package/dist/{run-record-CpLS4Uid.js → run-record-DmX_ESC5.js} +7 -5
  152. package/dist/run-record-DmX_ESC5.js.map +1 -0
  153. package/dist/{run-record-D2BFMPGl.d.ts → run-record-pBlhZizT.d.ts} +8 -8
  154. package/dist/{run-record-D2BFMPGl.d.ts.map → run-record-pBlhZizT.d.ts.map} +1 -1
  155. package/dist/search/index.d.ts +2 -2
  156. package/dist/search/index.d.ts.map +1 -1
  157. package/dist/search/index.js +2 -2
  158. package/dist/{search-kernel-CQGLbmgn.d.ts → search-kernel-6P1dRpJ4.d.ts} +4 -4
  159. package/dist/{search-kernel-CQGLbmgn.d.ts.map → search-kernel-6P1dRpJ4.d.ts.map} +1 -1
  160. package/dist/{search-ledger-Dk-yk5Li.js → search-ledger-9liYyZf5.js} +2 -2
  161. package/dist/{search-ledger-Dk-yk5Li.js.map → search-ledger-9liYyZf5.js.map} +1 -1
  162. package/dist/{search-shipper-Dm-_Dtvy.js → search-shipper-B6tMNx1I.js} +2 -2
  163. package/dist/{search-shipper-Dm-_Dtvy.js.map → search-shipper-B6tMNx1I.js.map} +1 -1
  164. package/dist/{search-summary-sPWiYtSl.js → search-summary-CISbbxyr.js} +2 -2
  165. package/dist/{search-summary-sPWiYtSl.js.map → search-summary-CISbbxyr.js.map} +1 -1
  166. package/dist/{sequential-CAksw6EU.js → sequential-Ko7T-zvu.js} +65 -28
  167. package/dist/sequential-Ko7T-zvu.js.map +1 -0
  168. package/dist/sequential-OeSwJ2uG.d.ts +246 -0
  169. package/dist/sequential-OeSwJ2uG.d.ts.map +1 -0
  170. package/dist/{server-DFVwfoZq.js → server-BorE0Y3O.js} +16 -5
  171. package/dist/server-BorE0Y3O.js.map +1 -0
  172. package/dist/{skillopt-optimization-method-QO1nU8Kz.js → skillopt-optimization-method-BtX7xXDd.js} +7 -7
  173. package/dist/{skillopt-optimization-method-QO1nU8Kz.js.map → skillopt-optimization-method-BtX7xXDd.js.map} +1 -1
  174. package/dist/{statistical-heldout-CvOwNqt9.d.ts → statistical-heldout-vjrs8iyO.d.ts} +6 -6
  175. package/dist/{statistical-heldout-CvOwNqt9.d.ts.map → statistical-heldout-vjrs8iyO.d.ts.map} +1 -1
  176. package/dist/statistics.d.ts +2 -2
  177. package/dist/{store-otlp-C-jyj3WX.js → store-otlp-CmgKDr0O.js} +2 -2
  178. package/dist/{store-otlp-C-jyj3WX.js.map → store-otlp-CmgKDr0O.js.map} +1 -1
  179. package/dist/{store-tool-spans-B3z_Qb5u.d.ts → store-tool-spans-BemsQEhd.d.ts} +6 -6
  180. package/dist/{store-tool-spans-B3z_Qb5u.d.ts.map → store-tool-spans-BemsQEhd.d.ts.map} +1 -1
  181. package/dist/{store-tool-spans-DalWlKY8.js → store-tool-spans-CW24axM0.js} +3 -3
  182. package/dist/{store-tool-spans-DalWlKY8.js.map → store-tool-spans-CW24axM0.js.map} +1 -1
  183. package/dist/{summary-report-DyZquTaH.d.ts → summary-report-vdhE20Zf.d.ts} +4 -4
  184. package/dist/{summary-report-DyZquTaH.d.ts.map → summary-report-vdhE20Zf.d.ts.map} +1 -1
  185. package/dist/supervisor-run/index.d.ts +1 -1
  186. package/dist/{systemone-DVk-Crtu.d.ts → systemone-DFUN9DL1.d.ts} +7 -7
  187. package/dist/{systemone-DVk-Crtu.d.ts.map → systemone-DFUN9DL1.d.ts.map} +1 -1
  188. package/dist/{systemone-review-CToBl1oa.d.ts → systemone-review-4CKmHvr5.d.ts} +2 -2
  189. package/dist/{systemone-review-CToBl1oa.d.ts.map → systemone-review-4CKmHvr5.d.ts.map} +1 -1
  190. package/dist/systemone.d.ts +3 -3
  191. package/dist/systemone.js +2 -2
  192. package/dist/{tool-groups-R5RO9OHn.d.ts → tool-groups-Dpl3picW.d.ts} +3 -3
  193. package/dist/tool-groups-Dpl3picW.d.ts.map +1 -0
  194. package/dist/{trace-questions-BY6taxnl.d.ts → trace-questions-oT2fZWJ8.d.ts} +3 -3
  195. package/dist/{trace-questions-BY6taxnl.d.ts.map → trace-questions-oT2fZWJ8.d.ts.map} +1 -1
  196. package/dist/trace-repair/index.d.ts +2 -2
  197. package/dist/traces.d.ts +6 -6
  198. package/dist/traces.js +5 -11
  199. package/dist/traces.js.map +1 -1
  200. package/dist/{tree-C-N2kP-8.js → tree-D2cNtu9m.js} +10 -10
  201. package/dist/tree-D2cNtu9m.js.map +1 -0
  202. package/dist/{types-kBMNdo1X.d.ts → types-6GuPL-Vt.d.ts} +3 -3
  203. package/dist/{types-kBMNdo1X.d.ts.map → types-6GuPL-Vt.d.ts.map} +1 -1
  204. package/dist/{types-ip2D3-Ib.d.ts → types-C9yEqDjQ.d.ts} +6 -6
  205. package/dist/{types-ip2D3-Ib.d.ts.map → types-C9yEqDjQ.d.ts.map} +1 -1
  206. package/dist/{types-BsdcSWnf.d.ts → types-CP3rkpir.d.ts} +3 -3
  207. package/dist/{types-BsdcSWnf.d.ts.map → types-CP3rkpir.d.ts.map} +1 -1
  208. package/dist/{types-DUVhW5V1.d.ts → types-CwHU7U9J.d.ts} +2 -2
  209. package/dist/{types-DUVhW5V1.d.ts.map → types-CwHU7U9J.d.ts.map} +1 -1
  210. package/dist/wire/index.d.ts +4 -4
  211. package/dist/wire/index.d.ts.map +1 -1
  212. package/dist/wire/index.js +1 -1
  213. package/docs/adopt-stack.md +9 -0
  214. package/docs/eval-fixtures.md +2 -2
  215. package/docs/search-ledger.md +1 -0
  216. package/docs/wire-protocol.md +1 -1
  217. package/package.json +1 -1
  218. package/dist/chat-client-Zz97O3NB.js.map +0 -1
  219. package/dist/completion-verifier-DFyYFezn.js.map +0 -1
  220. package/dist/cost-ledger-DfhStGcZ.js.map +0 -1
  221. package/dist/eval-campaign-Dq8DEKmy.js.map +0 -1
  222. package/dist/index-YS58LHlx.d.ts.map +0 -1
  223. package/dist/matrix-C-GxIgeJ.d.ts.map +0 -1
  224. package/dist/metrics-zALlR17s.js +0 -146
  225. package/dist/metrics-zALlR17s.js.map +0 -1
  226. package/dist/pareto-fJZg8pXm.js.map +0 -1
  227. package/dist/run-record-CpLS4Uid.js.map +0 -1
  228. package/dist/sequential-B9p6uoV8.d.ts +0 -168
  229. package/dist/sequential-B9p6uoV8.d.ts.map +0 -1
  230. package/dist/sequential-CAksw6EU.js.map +0 -1
  231. package/dist/server-DFVwfoZq.js.map +0 -1
  232. package/dist/tool-groups-R5RO9OHn.d.ts.map +0 -1
  233. package/dist/tree-C-N2kP-8.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { o as CostLedgerHandle, u as CostProvenance } from "./cost-ledger-Czro9wmo.js";
2
- import { a as RunRecord, d as RunTokenUsage } from "./run-record-D2BFMPGl.js";
3
- import { O as ChatClient, g as JudgeInput, t as BootstrapInterval } from "./cluster-Cd0MRbr9.js";
2
+ import { a as RunRecord, d as RunTokenUsage } from "./run-record-pBlhZizT.js";
3
+ import { O as ChatClient, g as JudgeInput, t as BootstrapInterval } from "./cluster-CkzP4h3T.js";
4
4
  import { z } from "zod";
5
5
  import { SpanKind } from "@tangle-network/agent-trace-contract";
6
6
  import { RE2JS } from "re2js";
@@ -1012,4 +1012,4 @@ type AnalystRunEvent = {
1012
1012
  result: AnalystRunResult;
1013
1013
  };
1014
1014
  export { ErrorCluster as $, FindingParseOutcome as A, FindingTreatment as B, CalibrationInterval as C, FindingLayer as D, FindingEvidenceUnit as E, independentUnitCount as F, ReadSpanSourceInput as G, TreatmentLayer as H, lineageRoots as I, TRACE_ANALYSIS_LIMITS as J, ReadSpanSourceResult as K, parseAnalystFinding as L, FindingScope as M, FindingScopeReading as N, FindingMeasure as O, ProposalFindingSchema as P, DatasetOverview as Q, readFindingScope as R, makeProposalFinding as S, FindingCalibration as T, createBoundedTraceAnalysisStore as U, TREATMENT_LAYERS as V, BoundedTraceAnalysisStoreOptions as W, TraceAnalysisStoreContext as X, TraceAnalysisStore as Y, DEFAULT_TRACE_ANALYST_BUDGETS as Z, ExecutionProbeRequest as _, AnalystFindingSchemaVersion as a, TraceAnalystFilters as at, computeFindingId as b, AnalystRunEvent as c, TraceAnalystSpanStatus as ct, AnalystRunSummary as d, ViewTraceOversized as dt, QueryTracesPage as et, AnalystSeverity as f, ViewTraceResult as ft, ExecutionProbeOutcome as g, ExecutionProbe as h, AnalystFinding as i, TraceAnalystByteBudgets as it, FindingReaderLabel as j, FindingMethod as k, AnalystRunInputs as l, TraceAnalystTraceSummary as lt, EvidenceRef as m, AnalystContext as n, SearchTraceResult as nt, AnalystInputKind as o, TraceAnalystSpan as ot, AnalystUsageReceipt as p, SpanSourceReader as q, AnalystCost as r, SpanMatchRecord as rt, AnalystRequirements as s, TraceAnalystSpanKind as st, Analyst as t, SearchSpanResult as tt, AnalystRunResult as u, ViewSpansResult as ut, ProposalFinding as v, FINDING_LAYERS as w, makeFinding as x, ProposalFindingOrigin as y, FindingConditions as z };
1015
- //# sourceMappingURL=types-kBMNdo1X.d.ts.map
1015
+ //# sourceMappingURL=types-6GuPL-Vt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-kBMNdo1X.d.ts","names":[],"sources":["../src/trace-analyst/types.ts","../src/trace-analyst/store-contract.ts","../src/trace-analyst/store-boundary.ts","../src/analyst/finding-composition.ts","../src/analyst/finding-scope.ts","../src/analyst/types.ts"],"mappings":"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"}
1
+ {"version":3,"file":"types-6GuPL-Vt.d.ts","names":[],"sources":["../src/trace-analyst/types.ts","../src/trace-analyst/store-contract.ts","../src/trace-analyst/store-boundary.ts","../src/analyst/finding-composition.ts","../src/analyst/finding-scope.ts","../src/analyst/types.ts"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  import { g as PaidCallResult, i as CostChannel, l as CostLedgerSummary, o as CostLedgerHandle, r as CostBreakdown, u as CostProvenance, y as RunPaidCallInput } from "./cost-ledger-Czro9wmo.js";
2
- import { a as RunRecord, d as RunTokenUsage, s as RunSearchCoordinates } from "./run-record-D2BFMPGl.js";
3
- import { v as ProposalFinding } from "./types-kBMNdo1X.js";
4
- import { R as LlmCallMetadata } from "./cluster-Cd0MRbr9.js";
5
- import { ht as SeriesDistribution } from "./index-DNXFzSpc.js";
2
+ import { a as RunRecord, d as RunTokenUsage, s as RunSearchCoordinates } from "./run-record-pBlhZizT.js";
3
+ import { v as ProposalFinding } from "./types-6GuPL-Vt.js";
4
+ import { z as LlmCallMetadata } from "./cluster-CkzP4h3T.js";
5
+ import { ht as SeriesDistribution } from "./index-BN6htPVi.js";
6
6
  import { A as SearchLedgerHash, F as SearchNodeRegisteredEvent, G as SearchSplit, I as SearchNodeStatus, L as SearchOpenedEvent, N as SearchNodeDecision, O as SearchLedgerEntry, P as SearchNodeRef, Q as SearchTaskOutcome, R as SearchOperationKind, U as SearchReservation, Z as SearchTask, b as SearchClosedEvent, d as SearchCellCancelledEvent, i as SearchArtifactRef, l as SearchCandidateSurface, o as SearchAudit, p as SearchCellStage, t as NodeEstimate, w as SearchEdgeRecordedEvent, z as SearchOperationRecordedEvent } from "./search-ledger-types-qiYRUo_N.js";
7
7
  import { y as LedgerProjector } from "./index-lRKqfyg4.js";
8
8
  import { s as TraceStore } from "./store-CMs5wGXP.js";
9
9
  import { a as MintedRolloutLine, m as RolloutEvidenceAttempt, t as ChatMessage, y as RolloutRole } from "./schema-PDKQ_iNE.js";
10
- import "./reward-ST4PXNXF.js";
10
+ import "./reward-ap_R9mCH.js";
11
11
  /** Deterministic node id: identical content in one search is one node. */
12
12
  declare function searchNodeId(searchId: string, artifactDigest: string): string;
13
13
  /** Deterministic cell id: one node on one task in one split at one repeat. */
@@ -1078,4 +1078,4 @@ interface CampaignResult<TArtifact = unknown, TScenario extends Scenario = Scena
1078
1078
  scenarios: Array<CampaignScenarioIdentity & Pick<TScenario, 'id' | 'kind'>>;
1079
1079
  }
1080
1080
  export { MintRolloutResult as $, LabeledScenarioWrite as A, ScoredSurfaceOutcome as B, JudgeDimension as C, LabeledScenarioSampleArgs as D, LabeledScenarioRecord as E, ProposeContext as F, SearchProposerView as G, SurfaceProposer as H, ProposedCandidate as I, searchProposerView as J, SearchSummaryOptions as K, RedactionStatus as L, OptimizerConfig as M, ParetoParent as N, LabeledScenarioSource as O, ProposalTrackContext as P, MintRolloutOptions as Q, Scenario as R, JudgeConfig as S, LabelTrust as T, TraceSpan as U, SessionScript as V, isProposedCandidate as W, SearchStateView as X, SearchState as Y, searchUnitScores as Z, GateDecision as _, CampaignResult as a, SearchCompletion as at, GenerationRecord as b, CampaignTraceWriter as c, SearchOperation as ct, DispatchContext as d, SearchUnitScore as dt, RolloutScrubber as et, DispatchFn as f, searchCellId as ft, GateContribution as g, GateContext as h, CampaignCostMeter as i, SearchCell as it, MutableSurface as j, LabeledScenarioStore as k, CodeSurface as l, SearchScoredCell as lt, GateCheckStatus as m, searchTaskSetDigest as mt, CampaignArtifactWriter as n, mintRolloutRows as nt, CampaignScenarioIdentity as o, SearchDecisionRecord as ot, Gate as p, searchNodeId as pt, renderSearchSummary as q, CampaignCellResult as r, unmintableReasons as rt, CampaignTokenUsage as s, SearchNode as st, CampaignAggregates as t, RolloutSearchLineage as tt, ComponentSurface as u, SearchSpend as ut, GateResult as v, JudgeScore as w, JudgeAggregate as x, GenerationCandidate as y, ScenarioAggregate as z };
1081
- //# sourceMappingURL=types-ip2D3-Ib.d.ts.map
1081
+ //# sourceMappingURL=types-C9yEqDjQ.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-ip2D3-Ib.d.ts","names":[],"sources":["../src/campaign/search-state-identity.ts","../src/campaign/search-state-types.ts","../src/campaign/search-state-indexes.ts","../src/rollout/mint.ts","../src/campaign/search-state-view.ts","../src/campaign/search-state-projection.ts","../src/campaign/search-summary.ts","../src/campaign/types.ts"],"mappings":"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"}
1
+ {"version":3,"file":"types-C9yEqDjQ.d.ts","names":[],"sources":["../src/campaign/search-state-identity.ts","../src/campaign/search-state-types.ts","../src/campaign/search-state-indexes.ts","../src/rollout/mint.ts","../src/campaign/search-state-view.ts","../src/campaign/search-state-projection.ts","../src/campaign/search-summary.ts","../src/campaign/types.ts"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { c as RunSplitTag } from "./run-record-D2BFMPGl.js";
2
- import { R as Scenario, d as DispatchContext } from "./types-ip2D3-Ib.js";
1
+ import { c as RunSplitTag } from "./run-record-pBlhZizT.js";
2
+ import { R as Scenario, d as DispatchContext } from "./types-C9yEqDjQ.js";
3
3
  type BenchmarkTaskKind = 'retrieval' | 'rag-answer' | 'hallucination' | 'kb-improvement' | 'routing' | 'custom';
4
4
  type BenchmarkFamily = 'beir' | 'mteb-retrieval' | 'msmarco' | 'trec-dl' | 'miracl' | 'lotte' | 'bright' | 'crag' | 'hotpotqa' | 'kilt' | 'ragtruth' | 'faithbench' | 'first-party' | 'custom';
5
5
  interface BenchmarkDatasetItem<TPayload = unknown> {
@@ -97,4 +97,4 @@ declare const BENCHMARK_SPLIT_SEED = "agent-eval-v1";
97
97
  */
98
98
  declare function deterministicSplit(itemId: string, seed?: string): RunSplitTag;
99
99
  export { BenchmarkFamily as a, BenchmarkSource as c, BenchmarkEvaluation as i, BenchmarkTaskKind as l, BenchmarkAdapter as n, BenchmarkResponder as o, BenchmarkDatasetItem as r, BenchmarkScenario as s, BENCHMARK_SPLIT_SEED as t, deterministicSplit as u };
100
- //# sourceMappingURL=types-BsdcSWnf.d.ts.map
100
+ //# sourceMappingURL=types-CP3rkpir.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-BsdcSWnf.d.ts","names":[],"sources":["../src/benchmarks/types.ts"],"mappings":";;KASY;KAQA;UAgBK,qBAAqB;;;EAGpC;;EAEA,SAAS;;EAET,QAAQ;;EAER,SAAS;;EAET,WAAW;;EAEX;;EAEA,SAAS;EACT,WAAW;;UAGI;;;;EAIf;;EAEA;;EAEA,aAAa;;;EAGb,KAAK;EACL;;UAGe;EACf;EACA;EACA;;EAEA;EACA;EACA;;EAEA;;;;;EAKA;;;UAQe,iBAAiB,kBAAkB,oBAAoB;;EAEtE;EACA,SAAS;EACT,WAAW;EACX;EACA,SAAS;EACT;;;;;EAKA,YAAY,OAAO,cAAc,QAAQ,qBAAqB;;EAE9D,SAAS,MAAM,qBAAqB,WAAW,UAAU,YAAY,QAAQ;;;;EAI7E,YAAY,iBAAiB;;UAGd,kBAAkB,4BAA4B;EAC7D;EACA;EACA,QAAQ;EACR,UAAU;EACV,UAAU;EACV,MAAM,qBAAqB;;KAGjB,mBAAmB,oBAAoB,uBAAuB;EACxE,UAAU,kBAAkB;EAC5B,MAAM,qBAAqB;EAC3B,SAAS;MACL,QAAQ,aAAa;;;cAoBd;;;;;;;;;iBAUG,mBACd,gBACA,gBACC"}
1
+ {"version":3,"file":"types-CP3rkpir.d.ts","names":[],"sources":["../src/benchmarks/types.ts"],"mappings":";;KASY;KAQA;UAgBK,qBAAqB;;;EAGpC;;EAEA,SAAS;;EAET,QAAQ;;EAER,SAAS;;EAET,WAAW;;EAEX;;EAEA,SAAS;EACT,WAAW;;UAGI;;;;EAIf;;EAEA;;EAEA,aAAa;;;EAGb,KAAK;EACL;;UAGe;EACf;EACA;EACA;;EAEA;EACA;EACA;;EAEA;;;;;EAKA;;;UAQe,iBAAiB,kBAAkB,oBAAoB;;EAEtE;EACA,SAAS;EACT,WAAW;EACX;EACA,SAAS;EACT;;;;;EAKA,YAAY,OAAO,cAAc,QAAQ,qBAAqB;;EAE9D,SAAS,MAAM,qBAAqB,WAAW,UAAU,YAAY,QAAQ;;;;EAI7E,YAAY,iBAAiB;;UAGd,kBAAkB,4BAA4B;EAC7D;EACA;EACA,QAAQ;EACR,UAAU;EACV,UAAU;EACV,MAAM,qBAAqB;;KAGjB,mBAAmB,oBAAoB,uBAAuB;EACxE,UAAU,kBAAkB;EAC5B,MAAM,qBAAqB;EAC3B,SAAS;MACL,QAAQ,aAAa;;;cAoBd;;;;;;;;;iBAUG,mBACd,gBACA,gBACC"}
@@ -1,4 +1,4 @@
1
- import { ht as SeriesDistribution } from "./index-DNXFzSpc.js";
1
+ import { ht as SeriesDistribution } from "./index-BN6htPVi.js";
2
2
  import { C as RolloutWorkspaceCapture, h as RolloutLine } from "./schema-PDKQ_iNE.js";
3
3
  /** A metric that could not be computed, with the reason its artifact was missing. */
4
4
  interface Unavailable {
@@ -563,4 +563,4 @@ interface SupervisorRunTreeGap {
563
563
  readonly count?: number;
564
564
  }
565
565
  export { WorkerTurnCoverage as A, SupervisorRunTreeGapCode as C, WallDistribution as D, Unavailable as E, showMeasured as M, unavailable as N, WorkerLogSource as O, SupervisorRunTreeGap as S, TerminalFailure as T, SupervisorRunReader as _, OrchestrationMetrics as a, SupervisorRunSources as b, PerWorkerRow as c, RollupCellRow as d, SourceLimits as f, SupervisorRunNodeRole as g, SteerBreakdown as h, NamedResourceReceipt as i, isUnavailable as j, WorkerNativeSession as k, ResourceSpendRecord as l, SpendMeasurements as m, EconomicsMetrics as n, OutcomeMetrics as o, SpendMeasurement as p, Measured as r, PatchStats as s, DecisionMetrics as t, RoleSpend as u, SupervisorRunReport as v, SupervisorStatusSource as w, SupervisorRunTree as x, SupervisorRunRollup as y };
566
- //# sourceMappingURL=types-DUVhW5V1.d.ts.map
566
+ //# sourceMappingURL=types-CwHU7U9J.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-DUVhW5V1.d.ts","names":[],"sources":["../src/supervisor-run/types.ts"],"mappings":"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"}
1
+ {"version":3,"file":"types-CwHU7U9J.d.ts","names":[],"sources":["../src/supervisor-run/types.ts"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { m as CustomTokenPricing, o as CostLedgerHandle } from "../cost-ledger-Czro9wmo.js";
2
- import { O as ChatClient } from "../cluster-Cd0MRbr9.js";
2
+ import { O as ChatClient } from "../cluster-CkzP4h3T.js";
3
3
  import { s as TraceStore } from "../store-CMs5wGXP.js";
4
- import { m as FeedbackTrajectoryStore } from "../feedback-trajectory-DTj8eVTR.js";
4
+ import { m as FeedbackTrajectoryStore } from "../feedback-trajectory-D3oISeGl.js";
5
5
  import { z } from "zod";
6
6
  import { ServerType } from "@hono/node-server";
7
7
  import { Hono } from "hono";
@@ -267,10 +267,10 @@ export declare const FeedbackTrajectorySchema: z.ZodObject<{
267
267
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
268
268
  }, z.core.$strip>>;
269
269
  split: z.ZodOptional<z.ZodEnum<{
270
- train: "train";
271
270
  dev: "dev";
272
- test: "test";
273
271
  holdout: "holdout";
272
+ train: "train";
273
+ test: "test";
274
274
  }>>;
275
275
  tags: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
276
276
  createdAt: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/wire/schemas.ts","../../src/wire/handlers.ts","../../src/wire/rpc.ts","../../src/wire/server.ts"],"mappings":";;;;;;;cAoBa,uBAAqB,EAAA;;;;;;GAkBD,EAAA,KAAA;cAE3B,mBAAiB,EAAA;;;GAKM,EAAA,KAAA;cAIhB,cAAY,EAAA;;;;;;;;;;;;;;;;;;;GA6BL,EAAA,KAAA;cAIP,oBAAkB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAwBL,EAAA,KAAA;cAEb,mBAAiB,EAAA;;;;;;;;;GA6BL,EAAA,KAAA;cAInB,kBAAgB,EAAA;;;;;;;;;;GAcE,EAAA,KAAA;cAEX,2BAAyB,EAAA;;;;;;;;;;;;GAIL,EAAA,KAAA;cAIpB,uBAAqB,EAAA;;;;;GAWL,EAAA,KAAA;;;;;;;qBAiBhB,kBAAgB,EAAA;;;;;;;;;;;;;;;;GA0BD,EAAA,KAAA;cAEf,2BAAyB,EAAA;;;;;;;;;;;;;;;;;;GAQL,EAAA,KAAA;cAEpB,4BAA0B,EAAA;;;;;;;GAiBL,EAAA,KAAA;qBA2DrB,0BAAwB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BD,EAAA,KAAA;cAEvB,8BAA4B,EAAA;;;GAKL,EAAA,KAAA;KAExB,iBAAiB,EAAE,aAAa;KAChC,sBAAsB,EAAE,aAAa;KACrC,uBAAuB,EAAE,aAAa;KACtC,yBAAyB,EAAE,aAAa;KACxC,yBAAyB,EAAE,aAAa;qBAIvC,qBAAmB,EAAA;;;;;;GAcL,EAAA,KAAA;KAIf,sBAAsB,EAAE,aAAa;KACrC,kBAAkB,EAAE,aAAa;KACjC,SAAS,EAAE,aAAa;KACxB,eAAe,EAAE,aAAa;KAC9B,cAAc,EAAE,aAAa;KAC7B,aAAa,EAAE,aAAa;KAC5B,sBAAsB,EAAE,aAAa;KACrC,kBAAkB,EAAE,aAAa;KACjC,gBAAgB,EAAE,aAAa;;;;;;;qBAU9B;;qBChWA,kBAAkB;WAEX;WAEA;WACA;EAHA,YAAA,cAChB,iBACgB,iBACA;;UAgJH;EACf,aAAa;EACb;;;;;;EAMA,OAAO;EACP;;EAEA,UAAU;EACV,SAAS;;;;;;;;;;UAsGM;EACf,aAAa;EACb,gBAAgB;;UC5RR;EACR;EACA;;UAGQ;EACR;;UAGQ;EACR;IAAS;IAAc;IAAiB;;;UAGzB;;EAEf,OAAO;EACP;;wBAGoB,YACpB,KAAK,YACL,UAAS,aACR,QAAQ,aAAa;UCNd;;EAER,SAAS;;;;;;EAMT,OAAO;;EAEP;;;;;;;;;;EAUA;IACE,mBAAmB,4BAA4B;;;wBAMnC,UAAU,OAAM,mBAAqB,0BAAA,+BAAA;UA0IpC,qBAAqB;;EAEpC;;EAEA;;wBAGc,YAAY,OAAM,eAAoB;UAUrC;EACf,QAAQ;;;;EAIR;;EAEA;;EAEA,SAAS;;;;;;;wBAQK,iBAAiB,OAAM,eAAoB,QAAQ"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/wire/schemas.ts","../../src/wire/handlers.ts","../../src/wire/rpc.ts","../../src/wire/server.ts"],"mappings":";;;;;;;cAoBa,uBAAqB,EAAA;;;;;;GAkBD,EAAA,KAAA;cAE3B,mBAAiB,EAAA;;;GAKM,EAAA,KAAA;cAIhB,cAAY,EAAA;;;;;;;;;;;;;;;;;;;GA6BL,EAAA,KAAA;cAIP,oBAAkB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAwBL,EAAA,KAAA;cAEb,mBAAiB,EAAA;;;;;;;;;GA6BL,EAAA,KAAA;cAInB,kBAAgB,EAAA;;;;;;;;;;GAcE,EAAA,KAAA;cAEX,2BAAyB,EAAA;;;;;;;;;;;;GAIL,EAAA,KAAA;cAIpB,uBAAqB,EAAA;;;;;GAWL,EAAA,KAAA;;;;;;;qBAiBhB,kBAAgB,EAAA;;;;;;;;;;;;;;;;GA0BD,EAAA,KAAA;cAEf,2BAAyB,EAAA;;;;;;;;;;;;;;;;;;GAQL,EAAA,KAAA;cAEpB,4BAA0B,EAAA;;;;;;;GAiBL,EAAA,KAAA;qBA2DrB,0BAAwB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BD,EAAA,KAAA;cAEvB,8BAA4B,EAAA;;;GAKL,EAAA,KAAA;KAExB,iBAAiB,EAAE,aAAa;KAChC,sBAAsB,EAAE,aAAa;KACrC,uBAAuB,EAAE,aAAa;KACtC,yBAAyB,EAAE,aAAa;KACxC,yBAAyB,EAAE,aAAa;qBAIvC,qBAAmB,EAAA;;;;;;GAcL,EAAA,KAAA;KAIf,sBAAsB,EAAE,aAAa;KACrC,kBAAkB,EAAE,aAAa;KACjC,SAAS,EAAE,aAAa;KACxB,eAAe,EAAE,aAAa;KAC9B,cAAc,EAAE,aAAa;KAC7B,aAAa,EAAE,aAAa;KAC5B,sBAAsB,EAAE,aAAa;KACrC,kBAAkB,EAAE,aAAa;KACjC,gBAAgB,EAAE,aAAa;;;;;;;qBAU9B;;qBChWA,kBAAkB;WAEX;WAEA;WACA;EAHA,YAAA,cAChB,iBACgB,iBACA;;UA8IH;EACf,aAAa;EACb;;;;;;EAMA,OAAO;EACP;;EAEA,UAAU;EACV,SAAS;;;;;;;;;;UAsGM;EACf,aAAa;EACb,gBAAgB;;UC1RR;EACR;EACA;;UAGQ;EACR;;UAGQ;EACR;IAAS;IAAc;IAAiB;;;UAGzB;;EAEf,OAAO;EACP;;wBAGoB,YACpB,KAAK,YACL,UAAS,aACR,QAAQ,aAAa;UCNd;;EAER,SAAS;;;;;;EAMT,OAAO;;EAEP;;;;;;;;;;EAUA;IACE,mBAAmB,4BAA4B;;;wBAMnC,UAAU,OAAM,mBAAqB,0BAAA,+BAAA;UA0IpC,qBAAqB;;EAEpC;;EAEA;;wBAGc,YAAY,OAAM,eAAoB;UAUrC;EACf,QAAQ;;;;EAIR;;EAEA;;EAEA,SAAS;;;;;;;wBAQK,iBAAiB,OAAM,eAAoB,QAAQ"}
@@ -1 +1 @@
1
- export { u as ErrorResponseSchema, d as FeedbackTrajectorySchema, f as TraceEventSchema, p as WIRE_VERSION, c as WireError, t as createApp, a as dispatchRpc, n as startServer, r as startServerAsync } from "../server-DFVwfoZq.js";
1
+ export { u as ErrorResponseSchema, d as FeedbackTrajectorySchema, f as TraceEventSchema, p as WIRE_VERSION, c as WireError, t as createApp, a as dispatchRpc, n as startServer, r as startServerAsync } from "../server-BorE0Y3O.js";
@@ -0,0 +1,9 @@
1
+ # Scoped adoption
2
+
3
+ `scripts/adopt-stack.mjs` exports `plan(root, requested, { consumer })` for a producer adopting packages in one workspace member. `consumer` is a directory relative to the real workspace root, such as `apps/cli`; it must identify an enumerated member and cannot escape the root. Omitting it retains workspace-wide planning.
4
+
5
+ The selected member's actual importer supplies locked versions and peer context. Unknown selected versions or an unreadable owning lock refuse. Planning still reads the real root manifest, catalog, install constraints and release cohort, and retains publication evidence and holds. Shared policy or cohort edits remain visible in `result.edits`; a producer must review them before applying a plan. Root `$` override references must admit the selected target after planned root/catalog edits; conflicting or unverifiable references refuse for explicit reconciliation.
6
+
7
+ Pass the result to the existing `writePlan(root, result)` and `install(root, result)`. Only selected member pins become install targets; root policy edits remain root edits. Verify the installed boundary with `resolvedVersions(root, new Map(result.expected), { consumer })` from `scripts/adopt-stack-workspace.mjs`, using the same selector, then run the consumer's maintained acceptance gate. Caller-supplied locks or peer contexts are unsupported.
8
+
9
+ The CLI accepts `--consumer apps/cli` or `--consumer=apps/cli`; an explicit empty or missing value refuses. The reusable `adopt-stack.yml` workflow exposes the same `consumer` input; its blank default omits the selector. Both paths retain the real root install and apply the same selector to planning and both installed-version checks. Omission keeps workspace-wide behavior.
@@ -56,7 +56,7 @@ Use `validation: 'none'` for prompt-only corpora.
56
56
  ```ts
57
57
  const scenarios = loadEvalFixtureScenarios('evals', {
58
58
  fingerprintConfig: {
59
- model: 'claude-sonnet-4-6@2026-06-01',
59
+ model: 'claude-sonnet-5-5',
60
60
  tools: ['shell', 'edit'],
61
61
  },
62
62
  })
@@ -66,7 +66,7 @@ const plan = planEvalFixtureRun({
66
66
  runDir: '.agent-eval/runs/coding',
67
67
  dispatchRef: 'codex/sandbox/v1',
68
68
  fingerprintConfig: {
69
- model: 'claude-sonnet-4-6@2026-06-01',
69
+ model: 'claude-sonnet-5-5',
70
70
  tools: ['shell', 'edit'],
71
71
  },
72
72
  })
@@ -200,6 +200,7 @@ metaSearch.bestPolicyConfiguration: unknown — no configuration of vb/coder ·
200
200
  ```
201
201
 
202
202
  Every signal reports honestly rather than guessing: at 2 nodes and 1 shared unit, this real climb is below every lens's `insufficient`/`none` threshold, so `operatorYield`, `front`, `taskMatrix`, `editCredit`, `landscape` and `skillManifold` all say so instead of printing a number.
203
+ The objective key is `subject · metric (direction) · judge revision`. The transcript above was recorded before the revision was part of the key.
203
204
  The two `--wired` behaviors above (`incumbentWithOperatorBandit`, `draftOnPlateau`, `nextUnitExtension`) fall back to their base policy's own behavior on exactly this "insufficient" case — the same code path a synthetic ledger with real signal values exercises, proved in each lens's own PR.
204
205
 
205
206
 
@@ -54,7 +54,7 @@ POST /v1/judge
54
54
  "wins": ["specific-component", "earned-detail"],
55
55
  "rationale": "Specific architectural detail, no AI cadence, technical voice.",
56
56
  "rubricVersion": "anti-slop@sha256-rfc8785:2307e4f3f0948d20275a1521515c36635b37ba848149d3f603b6dfde07f7ea1c",
57
- "model": "claude-sonnet-4-6",
57
+ "model": "gpt-6-luna",
58
58
  "durationMs": 1840
59
59
  }
60
60
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/agent-eval",
3
- "version": "1.0.22",
3
+ "version": "1.0.24",
4
4
  "description": "Evaluate and improve AI agents from runs, traces, judges, and feedback. Compare candidates, cluster failures, measure lift, and gate releases.",
5
5
  "homepage": "https://github.com/tangle-network/agent-eval#readme",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-client-Zz97O3NB.js","names":[],"sources":["../src/analyst/chat-client.ts"],"sourcesContent":["/**\n * Provider-neutral chat contract for every model call made by agent-eval.\n *\n * The caller owns model execution. Evaluation code receives canonical requests\n * and results without importing a provider SDK, and agent-eval reads no\n * environment variable to find a provider credential: every transport is bound\n * at the call site.\n *\n * Two ways to bind one. `custom` and `sandbox-sdk` take a `chat` function the\n * caller wrote. `openai-compatible` takes an endpoint and a credential the\n * caller passes as values, and agent-eval issues the HTTP request itself.\n *\n * WHY THE THIRD ONE EXISTS. Every consumer that wanted a plain OpenAI-style\n * endpoint had to hand-write the same fetch loop — retry on 429 and 5xx,\n * `json_schema` degrade, fenced-JSON stripping, and, load-bearing here, the\n * `servedModel` echo that `assertServedModel` and `assertCrossFamilyServed`\n * read. A hand-written transport that omits `servedModel` makes both identity\n * checks read `unreported`, so the two-vendor judge rule they enforce silently\n * measures nothing. Measured motive: agent-eval 0.172.1 exported no such\n * transport, so a two-model judge panel in discovery-lab reached\n * `createChatClient({ transport: 'custom', baseUrl, apiKey })` — fields that\n * exist on no transport option — and every call threw\n * `TypeError: opts.chat is not a function`, which surfaced as\n * `aggregateJudgeVerdicts: all 2 judges failed`.\n *\n * The credential still never comes from agent-eval's environment. `baseUrl`\n * and the bearer are required arguments with no default and no fallback, so a\n * misconfigured caller gets a refusal at construction, never a call to an\n * endpoint it did not name.\n */\n\nimport {\n type LlmCallRequest,\n type LlmCallResult,\n LlmClient,\n type LlmClientOptions,\n} from '../llm-client'\n\n/**\n * Unified chat interface using the package's canonical LLM request and result.\n */\nexport interface ChatClient {\n /** Display name of the bound transport, included in telemetry. */\n readonly transport: ChatTransport\n /** Default model when the caller omits one. */\n readonly defaultModel?: string\n /** Total provider attempts this transport can make for one chat call. */\n readonly maximumAttempts?: number\n\n /** Implementations must enforce `req.maxTokens` when it is present. */\n chat(req: ChatRequest, opts?: ChatCallOpts): Promise<ChatResponse>\n}\n\nexport type ChatTransport =\n | 'sandbox-sdk' // box.streamPrompt() — chat completion via sandbox SDK\n | 'custom' // caller-adapted SDK or transport\n | 'openai-compatible' // caller-named /v1 endpoint, driven by this package\n | 'mock' // test-time injection\n\nexport interface ChatRequest extends Omit<LlmCallRequest, 'model'> {\n /** Optional — falls back to ChatClient.defaultModel. */\n model?: string\n}\n\nexport type ChatResponse = LlmCallResult\n\nexport interface ChatCallOpts {\n /** Cancel the in-flight request. */\n signal?: AbortSignal\n /** Hard USD ceiling for this single call (informational; the underlying transport may not enforce). */\n maxCostUsd?: number\n /** Correlation tag carried into request headers when the transport allows. */\n correlationId?: string\n /** Stable provider idempotency key for retries/redrives of one paid call. */\n idempotencyKey?: string\n}\n\n// ── Factory ─────────────────────────────────────────────────────────\n\nexport type CreateChatClientOpts =\n | SandboxSdkTransportOpts\n | CustomTransportOpts\n | OpenAiCompatibleTransportOpts\n | MockTransportOpts\n\ninterface BaseTransportOpts {\n defaultModel?: string\n /** Total provider attempts. Required for opaque transports used in capped runs. */\n maximumAttempts?: number\n}\n\n/**\n * Sandbox-SDK transport. The caller supplies a canonical chat function for an\n * already-configured Sandbox handle, so agent-eval does not import the SDK.\n */\nexport interface SandboxSdkTransportOpts extends BaseTransportOpts {\n transport: 'sandbox-sdk'\n chat: (req: ChatRequest, opts?: ChatCallOpts) => Promise<ChatResponse>\n}\n\n/** Caller-adapted SDK or transport returning the canonical ChatResponse shape. */\nexport interface CustomTransportOpts extends BaseTransportOpts {\n transport: 'custom'\n chat: (req: ChatRequest, opts?: ChatCallOpts) => Promise<ChatResponse>\n}\n\n/**\n * OpenAI-compatible HTTP transport: the caller names a `/v1` endpoint and\n * hands over a bearer, and this package drives `POST {baseUrl}/chat/completions`.\n *\n * Use this instead of hand-rolling a `custom` transport around `fetch`. The\n * result carries `servedModel` — the model id the provider echoed, verbatim —\n * which is the only field `assertServedModel` and `assertCrossFamilyServed`\n * can read to witness a gateway answering from a different model than the one\n * requested.\n *\n * `baseUrl` ends at the `/v1` prefix; the `/chat/completions` path is this\n * package's to append. A `baseUrl` that already carries the path is a\n * construction error, not a request to a doubled URL.\n *\n * Exactly one credential form is required — `apiKey`, `bearer`, or\n * `authHeader`. There is no environment fallback: agent-eval never goes\n * looking for a key.\n */\nexport interface OpenAiCompatibleTransportOpts\n extends BaseTransportOpts,\n Pick<\n LlmClientOptions,\n | 'assertServedModel'\n | 'customTokenPricing'\n | 'deadlineMs'\n | 'defaultTimeoutMs'\n | 'fetch'\n | 'jsonPayloadMode'\n | 'jsonSchemaTransport'\n | 'minIntervalMs'\n | 'provider'\n | 'rawSink'\n | 'signal'\n | 'thinking'\n > {\n transport: 'openai-compatible'\n /** Endpoint ending at the `/v1` prefix. Required — there is no default endpoint. */\n baseUrl: string\n /** Bearer credential. One of `apiKey`, `bearer`, or `authHeader` is required. */\n apiKey?: string\n /** Bearer credential, alternate spelling. */\n bearer?: string\n /** Non-bearer authorization header, for endpoints that want their own scheme. */\n authHeader?: { name: string; value: string }\n}\n\n/**\n * Mock transport for tests. The handler receives the request and returns\n * whatever the test wants. No retries, no JSON-schema degrade.\n */\nexport interface MockTransportOpts extends BaseTransportOpts {\n transport: 'mock'\n handler: (req: ChatRequest, opts?: ChatCallOpts) => Promise<ChatResponse>\n}\n\n/**\n * Build a ChatClient bound to a specific transport. The returned client\n * is safe to share across analysts in a single registry run.\n */\nexport function createChatClient(opts: CreateChatClientOpts): ChatClient {\n switch (opts.transport) {\n case 'sandbox-sdk':\n return {\n transport: 'sandbox-sdk',\n defaultModel: opts.defaultModel,\n maximumAttempts: opts.maximumAttempts,\n chat: async (req, callOpts) => opts.chat(resolveModel(req, opts.defaultModel), callOpts),\n }\n case 'custom':\n return {\n transport: 'custom',\n defaultModel: opts.defaultModel,\n maximumAttempts: opts.maximumAttempts,\n chat: async (req, callOpts) => opts.chat(resolveModel(req, opts.defaultModel), callOpts),\n }\n case 'openai-compatible':\n return openAiCompatibleClient(opts)\n case 'mock':\n return {\n transport: 'mock',\n defaultModel: opts.defaultModel,\n maximumAttempts: 1,\n chat: async (req, callOpts) => opts.handler(resolveModel(req, opts.defaultModel), callOpts),\n }\n }\n}\n\nfunction resolveModel(req: ChatRequest, defaultModel: string | undefined): ChatRequest {\n if (req.model) return req\n if (!defaultModel) {\n throw new Error(\n 'ChatClient.chat: no model on request and no defaultModel on the client. ' +\n 'Either pass req.model or bind defaultModel at createChatClient().',\n )\n }\n return { ...req, model: defaultModel }\n}\n\n/**\n * Build the OpenAI-compatible client, refusing a half-configured one first.\n *\n * Both refusals are construction-time on purpose. A missing credential or a\n * doubled path is a caller mistake that a request would turn into a 401 or a\n * 404 from an endpoint the caller did not intend to reach — the failure then\n * reads as a provider problem instead of a configuration one.\n */\nfunction openAiCompatibleClient(opts: OpenAiCompatibleTransportOpts): ChatClient {\n const baseUrl = opts.baseUrl?.trim().replace(/\\/+$/, '') ?? ''\n if (!baseUrl) {\n throw new Error(\n \"createChatClient({ transport: 'openai-compatible' }): baseUrl is required and has no default.\",\n )\n }\n if (/\\/chat\\/completions$/.test(baseUrl)) {\n throw new Error(\n \"createChatClient({ transport: 'openai-compatible' }): baseUrl ends at the /v1 prefix; \" +\n `this package appends /chat/completions. Got ${baseUrl}`,\n )\n }\n if (!opts.apiKey?.trim() && !opts.bearer?.trim() && !opts.authHeader) {\n throw new Error(\n \"createChatClient({ transport: 'openai-compatible' }): one of apiKey, bearer, or authHeader \" +\n 'is required. agent-eval reads no environment variable for a credential.',\n )\n }\n\n const clientOptions: LlmClientOptions = {\n baseUrl,\n ...(opts.apiKey ? { apiKey: opts.apiKey } : {}),\n ...(opts.bearer ? { bearer: opts.bearer } : {}),\n ...(opts.authHeader ? { authHeader: opts.authHeader } : {}),\n ...(opts.maximumAttempts === undefined ? {} : { maximumAttempts: opts.maximumAttempts }),\n ...(opts.assertServedModel === undefined ? {} : { assertServedModel: opts.assertServedModel }),\n ...(opts.customTokenPricing === undefined\n ? {}\n : { customTokenPricing: opts.customTokenPricing }),\n ...(opts.deadlineMs === undefined ? {} : { deadlineMs: opts.deadlineMs }),\n ...(opts.defaultTimeoutMs === undefined ? {} : { defaultTimeoutMs: opts.defaultTimeoutMs }),\n ...(opts.fetch === undefined ? {} : { fetch: opts.fetch }),\n ...(opts.jsonPayloadMode === undefined ? {} : { jsonPayloadMode: opts.jsonPayloadMode }),\n ...(opts.jsonSchemaTransport === undefined\n ? {}\n : { jsonSchemaTransport: opts.jsonSchemaTransport }),\n ...(opts.minIntervalMs === undefined ? {} : { minIntervalMs: opts.minIntervalMs }),\n ...(opts.provider === undefined ? {} : { provider: opts.provider }),\n ...(opts.rawSink === undefined ? {} : { rawSink: opts.rawSink }),\n ...(opts.signal === undefined ? {} : { signal: opts.signal }),\n ...(opts.thinking === undefined ? {} : { thinking: opts.thinking }),\n }\n const client = new LlmClient(clientOptions)\n\n return {\n transport: 'openai-compatible',\n ...(opts.defaultModel ? { defaultModel: opts.defaultModel } : {}),\n maximumAttempts: client.maximumAttempts,\n chat: async (req, callOpts) => {\n const resolved = resolveModel(req, opts.defaultModel)\n return client.call(resolved as LlmCallRequest, {\n ...(callOpts?.signal ? { signal: callOpts.signal } : {}),\n ...(callOpts?.idempotencyKey ? { idempotencyKey: callOpts.idempotencyKey } : {}),\n })\n },\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"completion-verifier-DFyYFezn.js","names":[],"sources":["../src/completion-verifier.ts"],"sourcesContent":["/**\n * Completion verifier — the task-completion oracle.\n *\n * Answers the only eval question that is not a proxy: did the agent actually\n * COMPLETE the task — produce every required deliverable, persisted and\n * correct — rather than describe what should be done. A fluent transcript\n * that never produces the artifact scores zero here.\n *\n * Per requirement, a two-stage check:\n * 1. Structural — a produced item (vault artifact / approved proposal /\n * tool call) of the right kind is matched against the requirement and\n * carries non-empty content. Deterministic; no LLM.\n * 2. Correctness — only if structurally present AND the matched item\n * carries content, one targeted check decides whether that item\n * actually fulfils the requirement. A hallucinated artifact fails here;\n * an absent one already failed stage 1.\n *\n * `completionRate` is satisfied / MEASURABLE requirements (unmeasured rows —\n * checker failures — are excluded from the denominator, never scored as\n * zeros). Quality dimensions are meaningless on an incomplete task — callers\n * gate on `fullyComplete` / `completionRate` before scoring quality.\n */\n\nimport { randomUUID } from 'node:crypto'\nimport type { ChatClient, ChatRequest } from './analyst/chat-client'\nimport type { ValidatedArtifact } from './artifact-validator'\nimport { CostLedger, type CostLedgerHandle } from './cost-ledger'\nimport { assertServedModel, ModelSubstitutionError } from './integrity/served-model'\nimport { recoverTruncatedJson } from './json-recovery'\nimport { JudgeParseError } from './judges'\nimport {\n costReceiptFromLlm,\n costReceiptFromLlmError,\n maximumChargeForLlmRequest,\n} from './llm-client'\nimport type { RawProviderEvent, RawProviderSink } from './trace/raw-provider-sink'\nimport {\n certificationEvidenceDigest,\n type DefaultVerdict,\n type VerdictCertification,\n} from './verdict'\nimport type { CheckerIdentity, VerificationStrategySource } from './verification-strategy'\n\n/** What kind of produced state can satisfy a requirement structurally. */\nexport type SatisfiedBy = 'artifact' | 'proposal' | 'tool-call' | 'any'\n\nexport interface CompletionRequirement {\n /** Stable id from the task gold (e.g. a persona's `expected_requirements[].req_id`). */\n reqId: string\n /** Human-readable description of the required deliverable. */\n title: string\n /** Optional kind/category hint, matched against a produced item's kind. */\n category?: string\n /** What produced state satisfies this requirement. Defaults to 'any'. */\n satisfiedBy?: SatisfiedBy\n}\n\nexport interface TaskGold {\n taskId: string\n requirements: CompletionRequirement[]\n}\n\nexport interface ProducedProposal {\n id: string\n title: string\n status: 'pending' | 'approved' | 'rejected'\n /** Optional persisted body — when present, enables a correctness check. */\n content?: string\n}\n\n/** Everything observable about what a run actually produced. */\nexport interface ProducedState {\n /** Persisted vault artifacts. Reuses the shared `ValidatedArtifact` shape. */\n artifacts: ValidatedArtifact[]\n /** Proposals / filings the agent created. */\n proposals: ProducedProposal[]\n /** Names of tools the agent invoked. */\n toolCalls: string[]\n}\n\nexport interface RequirementCheck {\n reqId: string\n title: string\n /** A produced item of the right kind matched the requirement, non-empty. */\n structurallyPresent: boolean\n /**\n * Whether the matched item actually fulfils the requirement. `null` when\n * not structurally present, when the matched item carries no content\n * to assess, or when the correctness check itself failed (`unmeasured`).\n */\n correct: boolean | null\n /** structurallyPresent && !unmeasured && correct !== false. */\n satisfied: boolean\n /**\n * Set when the correctness check itself errored (LLM call failure or an\n * unparseable response after retry). The requirement's fulfilment is\n * UNKNOWN — `correct` stays null, `satisfied` is false, and\n * `completionVerdict` excludes the row from `completionRate`'s\n * denominator. Never folded into a zero: a synthetic zero is\n * indistinguishable from a real failure (see `JudgeParseError`).\n */\n unmeasured?: true\n /** Why the correctness check could not be measured (present iff `unmeasured`). */\n unmeasuredReason?: string\n /** Human-readable evidence for the verdict. */\n evidence: string[]\n}\n\n/** Extends the substrate verdict spine: `valid` = `fullyComplete` and\n * `score` = `completionRate` — derived in `completionVerdict()`, the one\n * place those equalities hold by construction. */\nexport interface CompletionVerdict extends DefaultVerdict {\n taskId: string\n requirements: RequirementCheck[]\n /** satisfied / MEASURABLE requirements (unmeasured rows leave the denominator). */\n completionRate: number\n /** Every measurable requirement satisfied (false when anything is unmeasured). */\n fullyComplete: boolean\n /** Requirements whose correctness check errored — reported, never scored as zero. */\n unmeasuredCount: number\n}\n\n/**\n * Construct a `CompletionVerdict` from the per-requirement checks, deriving\n * `completionRate` / `fullyComplete` and the spine fields (`valid` =\n * `fullyComplete`, `score` = `completionRate`) in one place. Throws on zero\n * requirements — a verdict over nothing is a misconfiguration, mirroring\n * `verifyCompletion`'s gold-spec guard.\n */\nexport function completionVerdict(input: {\n taskId: string\n requirements: RequirementCheck[]\n /** What certified the correctness stage, when anything did. Omitted =\n * an uncertified verdict — the honest default for a bare checker. */\n certification?: VerdictCertification\n}): CompletionVerdict {\n if (input.requirements.length === 0) {\n throw new Error(\n `completionVerdict: task '${input.taskId}' has no requirement checks — nothing to derive a verdict from`,\n )\n }\n const measurable = input.requirements.filter((r) => !r.unmeasured)\n const unmeasuredCount = input.requirements.length - measurable.length\n if (measurable.length === 0) {\n // Every check errored: this is an infrastructure failure, not a scored\n // run. A 0-rate verdict here would be a fabricated measurement.\n throw new Error(\n `completionVerdict: task '${input.taskId}' has no measurable requirements — all ${input.requirements.length} correctness checks failed (${input.requirements[0]?.unmeasuredReason ?? 'unknown reason'})`,\n )\n }\n const satisfiedCount = measurable.filter((r) => r.satisfied).length\n const completionRate = satisfiedCount / measurable.length\n // A run with unmeasured rows can still report a rate over what WAS\n // measured, but must not claim full completion.\n const fullyComplete = unmeasuredCount === 0 && satisfiedCount === measurable.length\n return {\n taskId: input.taskId,\n requirements: input.requirements,\n completionRate,\n fullyComplete,\n unmeasuredCount,\n valid: fullyComplete,\n score: completionRate,\n ...(input.certification === undefined ? {} : { certification: input.certification }),\n }\n}\n\n/**\n * What a correctness checker declares about itself so the completion\n * verdict can carry a certification: which strategy member it discharges,\n * its exact identity, and the steps its answers rest on unverified.\n */\nexport interface CorrectnessCheckerAttestation {\n strategy: VerificationStrategySource\n checker: CheckerIdentity\n assumptions: string[]\n}\n\n/**\n * Decides whether a produced item's content actually fulfils a requirement.\n * Injected so the structural verifier stays pure and unit-testable; the\n * production implementation is `createLlmCorrectnessChecker`.\n *\n * `attestation` is optional metadata on the function value: a checker that\n * carries one yields certified completion verdicts; a bare function yields\n * the same verdict uncertified. A plain arrow function remains a valid\n * checker.\n */\nexport interface CorrectnessChecker {\n (\n requirement: CompletionRequirement,\n content: string,\n ): Promise<{ correct: boolean; reason: string }>\n attestation?: CorrectnessCheckerAttestation\n}\n\nconst STOPWORDS = new Set([\n 'the',\n 'a',\n 'an',\n 'of',\n 'for',\n 'and',\n 'or',\n 'to',\n 'in',\n 'on',\n 'with',\n 'by',\n])\n\n// Deliverable-FORM vocabulary — words that name the SHAPE of an output, not its\n// domain content. A correct \"swap-comparison view persisted as a ui/** artifact\"\n// is an OpenUI JSON whose body says nothing about \"artifact\" / \"persisted\" /\n// \"view\"; the discriminative tokens are the domain nouns (swap, comparison).\n// Stripped from the REQUIREMENT side of structural recall so a deliverable is\n// matched on what it IS about, not on the boilerplate describing its form. The\n// correctness checker strips the same class via TITLE_STOPWORDS. Anti-game holds:\n// the distinctive domain tokens remain, so an off-topic item still fails.\nconst REQUIREMENT_FORM_STOPWORDS = new Set([\n 'generated',\n 'generate',\n 'view',\n 'render',\n 'rendered',\n 'persisted',\n 'persist',\n 'artifact',\n 'file',\n 'document',\n 'note',\n 'proposal',\n 'deliverable',\n 'output',\n 'created',\n 'create',\n 'produce',\n 'produced',\n 'flag',\n])\n\nconst MATCH_THRESHOLD = 0.5\nconst MIN_CONTENT_CHARS = 50\n\nfunction tokens(s: string, extraStop?: Set<string>): Set<string> {\n return new Set(\n s\n .toLowerCase()\n .split(/[^a-z0-9]+/)\n .filter((t) => t.length > 1 && !STOPWORDS.has(t) && !extraStop?.has(t)),\n )\n}\n\n/**\n * Recall of the requirement's tokens within a candidate's identifying text.\n * Recall, not Jaccard — a candidate's path/id legitimately carries extra\n * tokens the requirement does not name. The requirement side drops\n * deliverable-FORM vocabulary so recall keys on the distinctive domain tokens.\n */\nfunction tokenRecall(requirementText: string, candidateText: string): number {\n const req = tokens(requirementText, REQUIREMENT_FORM_STOPWORDS)\n if (req.size === 0) return 0\n const cand = tokens(candidateText)\n let hit = 0\n for (const t of req) if (cand.has(t)) hit++\n return hit / req.size\n}\n\ninterface Candidate {\n reqIndex: number\n /** Unique key for a produced item — each item satisfies at most one requirement. */\n itemKey: string\n score: number\n evidence: string\n /** Content to correctness-check, or null when the matched item has none. */\n content: string | null\n}\n\nfunction artifactCandidates(\n req: CompletionRequirement,\n reqIndex: number,\n artifacts: ValidatedArtifact[],\n): Candidate[] {\n const reqText = `${req.title} ${req.category ?? ''}`\n const out: Candidate[] = []\n artifacts.forEach((a, i) => {\n if ((a.content ?? '').trim().length < MIN_CONTENT_CHARS) return\n // Match against the artifact CONTENT too, not just its path + kind — a\n // generated view / note whose path is generic still satisfies a requirement\n // when its body covers it (e.g. an OpenUI comparison grounded in the on-file\n // figures). Bounded slice keeps the recall text cheap; MATCH_THRESHOLD holds.\n let score = tokenRecall(\n reqText,\n `${a.path ?? ''} ${a.kind} ${(a.content ?? '').slice(0, 4000)}`,\n )\n if (req.category && a.kind && req.category.toLowerCase() === a.kind.toLowerCase()) {\n score = Math.max(score, 1)\n }\n if (score < MATCH_THRESHOLD) return\n out.push({\n reqIndex,\n itemKey: `artifact:${i}`,\n score,\n evidence: `artifact '${a.path ?? a.kind}' matched (token recall ${score.toFixed(2)})`,\n content: a.content ?? null,\n })\n })\n return out\n}\n\nfunction proposalCandidates(\n req: CompletionRequirement,\n reqIndex: number,\n proposals: ProducedProposal[],\n): Candidate[] {\n const reqText = `${req.title} ${req.category ?? ''}`\n const out: Candidate[] = []\n for (const p of proposals) {\n // Pending or rejected work is not a completed deliverable.\n if (p.status !== 'approved') continue\n // A proposal needs an assessable BODY to be a deliverable. A bare title is\n // not completion: correctness cannot be judged on it, so a title-only match\n // would auto-pass the oracle (structurallyPresent && correct===null →\n // satisfied) with no verifiable content. Tool calls are the only\n // legitimately content-less deliverable (`toolCallCandidates`).\n const body = (p.content ?? '').trim()\n if (body.length < MIN_CONTENT_CHARS) continue\n // Match against the body as well as the (often short) title — a refusal /\n // flag / analysis proposal whose title is a label still satisfies a\n // descriptively-worded requirement when its content covers it. MATCH_THRESHOLD\n // + the requirement's distinctive tokens keep an off-topic proposal out;\n // correctness (a SEMANTIC checker, NOT this lexical pass) then judges\n // polarity/fulfilment, so a negation that merely contains the tokens fails.\n // Structural and correctness must use different evidence or the two-stage\n // check collapses to one lexical gate.\n const score = tokenRecall(reqText, `${p.title} ${body}`)\n if (score < MATCH_THRESHOLD) continue\n out.push({\n reqIndex,\n itemKey: `proposal:${p.id}`,\n score,\n evidence: `approved proposal '${p.title}' matched (token recall ${score.toFixed(2)})`,\n content: body,\n })\n }\n return out\n}\n\nfunction toolCallCandidates(\n req: CompletionRequirement,\n reqIndex: number,\n toolCalls: string[],\n): Candidate[] {\n const out: Candidate[] = []\n toolCalls.forEach((name, i) => {\n const score = tokenRecall(req.title, name)\n if (score < MATCH_THRESHOLD) return\n out.push({\n reqIndex,\n itemKey: `tool:${i}`,\n score,\n evidence: `tool call '${name}' matched (token recall ${score.toFixed(2)})`,\n content: null,\n })\n })\n return out\n}\n\n/**\n * Verify whether a run completed the task. `checkCorrectness` is injected —\n * `createLlmCorrectnessChecker` for production, a deterministic stub in tests.\n *\n * Throws on a gold spec with no requirements: an eval task that requires\n * nothing is a misconfiguration, not a vacuously-complete task.\n */\nexport async function verifyCompletion(\n gold: TaskGold,\n state: ProducedState,\n checkCorrectness: CorrectnessChecker,\n): Promise<CompletionVerdict> {\n if (gold.requirements.length === 0) {\n throw new Error(\n `verifyCompletion: task '${gold.taskId}' has no requirements — malformed gold spec`,\n )\n }\n\n // Collect every above-threshold (requirement, produced-item) candidate, then\n // assign greedily by descending score: each requirement and each produced\n // item is used at most once. One deliverable fulfils one requirement.\n const candidates: Candidate[] = []\n gold.requirements.forEach((req, i) => {\n const by = req.satisfiedBy ?? 'any'\n if (by === 'artifact' || by === 'any') {\n candidates.push(...artifactCandidates(req, i, state.artifacts))\n }\n if (by === 'proposal' || by === 'any') {\n candidates.push(...proposalCandidates(req, i, state.proposals))\n }\n if (by === 'tool-call' || by === 'any') {\n candidates.push(...toolCallCandidates(req, i, state.toolCalls))\n }\n })\n candidates.sort((a, b) => b.score - a.score)\n\n const assigned = new Map<number, Candidate>()\n const itemTaken = new Set<string>()\n for (const c of candidates) {\n if (assigned.has(c.reqIndex) || itemTaken.has(c.itemKey)) continue\n assigned.set(c.reqIndex, c)\n itemTaken.add(c.itemKey)\n }\n\n const requirements: RequirementCheck[] = []\n for (let i = 0; i < gold.requirements.length; i++) {\n const req = gold.requirements[i]!\n const match = assigned.get(i)\n const evidence: string[] = []\n let correct: boolean | null = null\n let unmeasuredReason: string | undefined\n\n if (match) {\n evidence.push(match.evidence)\n if (match.content !== null) {\n try {\n const r = await checkCorrectness(req, match.content)\n correct = r.correct\n evidence.push(`correctness: ${r.correct ? 'pass' : 'fail'} — ${r.reason}`)\n } catch (err) {\n // The CHECKER failed, not the requirement. Recording this as a\n // zero would fabricate a model failure out of an infrastructure\n // one; the requirement is unmeasured and leaves the denominator.\n unmeasuredReason =\n err instanceof JudgeParseError\n ? `checker response unparseable after retry: ${err.raw.slice(0, 200)}`\n : `checker call failed: ${err instanceof Error ? err.message : String(err)}`\n evidence.push(`correctness: UNMEASURED — ${unmeasuredReason}`)\n }\n } else {\n evidence.push('correctness: not assessed — matched item carries no content')\n }\n } else {\n const by = req.satisfiedBy ?? 'any'\n const kind = by === 'any' ? 'artifact/proposal/tool-call' : by\n evidence.push(`no produced ${kind} matched this requirement`)\n }\n\n const structurallyPresent = match !== undefined\n const unmeasured = unmeasuredReason !== undefined\n const satisfied = structurallyPresent && !unmeasured && correct !== false\n requirements.push({\n reqId: req.reqId,\n title: req.title,\n structurallyPresent,\n correct,\n satisfied,\n ...(unmeasured ? { unmeasured: true as const, unmeasuredReason } : {}),\n evidence,\n })\n }\n\n // The verdict blends the deterministic structural stage with the injected\n // correctness stage, so the certification names the checker's own member\n // and carries the structural stage's lexical nature as an assumption. A\n // checker without an attestation yields an uncertified verdict.\n const attestation = checkCorrectness.attestation\n const certification: VerdictCertification | undefined = attestation\n ? {\n strategy: attestation.strategy,\n checker: attestation.checker,\n assumptions: [\n 'structural matching is lexical token recall over produced items — the correctness stage only sees items it matched',\n ...attestation.assumptions,\n ],\n evidenceDigest: certificationEvidenceDigest({ taskId: gold.taskId, requirements }),\n }\n : undefined\n\n return completionVerdict({\n taskId: gold.taskId,\n requirements,\n ...(certification === undefined ? {} : { certification }),\n })\n}\n\nexport interface LlmCorrectnessCheckerOpts {\n model?: string\n /** Optional ledger for direct use. */\n costLedger?: CostLedgerHandle\n costPhase?: string\n costTags?: Record<string, string>\n signal?: AbortSignal\n /** Max chars of artifact content sent to the checker. */\n maxContentChars?: number\n /**\n * Checker LLM calls per requirement before giving up (parse failures and\n * call errors both consume attempts). The failure then surfaces as an\n * `unmeasured` requirement, never a zero.\n */\n maxAttempts?: number\n /**\n * Forensic capture of every checker request/response/error — without it a\n * checker failure is unauditable (the agent-turn raws never contain the\n * checker's own calls). Same sink contract as `LlmClient`.\n */\n rawSink?: RawProviderSink\n}\n\n/**\n * Parse the correctness checker's model response. Tolerates a response\n * truncated mid-JSON (max_tokens cap) by auto-closing the prefix — the\n * verdict boolean usually lands in the first few tokens, so a recovered\n * prefix with a boolean `correct` is a real measurement, not a guess.\n * Fails loud (JudgeParseError) when no boolean verdict is recoverable.\n */\nfunction parseCorrectnessResponse(raw: string): { correct: boolean; reason: string } {\n const readVerdict = (candidate: unknown): { correct: boolean; reason: string } | null => {\n if (candidate === null || typeof candidate !== 'object') return null\n const { correct, reason } = candidate as { correct?: unknown; reason?: unknown }\n if (typeof correct !== 'boolean') return null\n return { correct, reason: typeof reason === 'string' ? reason : '' }\n }\n\n const match = raw.match(/\\{[\\s\\S]*\\}/)\n if (match) {\n try {\n const strict = readVerdict(JSON.parse(match[0]))\n if (strict) return strict\n } catch {\n // fall through to truncation recovery\n }\n }\n // The strict path needs a closing `}`; a cap-hit response has none. Take\n // everything from the first `{` and auto-close it.\n const start = raw.indexOf('{')\n if (start !== -1) {\n const recovered = readVerdict(recoverTruncatedJson(raw.slice(start)))\n if (recovered) return recovered\n }\n throw new JudgeParseError('correctness-checker', raw)\n}\n\n/**\n * Production `CorrectnessChecker` — one LLM call per matched artifact,\n * deterministic (temperature 0), structured JSON out. Judges fulfilment\n * only: a plan, a gesture, or a description of what should be done does not\n * fulfil a requirement — the artifact must BE the deliverable.\n */\nexport function createLlmCorrectnessChecker(\n chat: ChatClient,\n opts: LlmCorrectnessCheckerOpts = {},\n): CorrectnessChecker {\n const model = opts.model ?? 'claude-sonnet-4-6'\n const maxContentChars = opts.maxContentChars ?? 8000\n const maxAttempts = opts.maxAttempts ?? 2\n const costLedger = opts.costLedger ?? new CostLedger()\n const sink = opts.rawSink\n const record = async (event: RawProviderEvent): Promise<void> => {\n // Forensic capture is best-effort; the verdict is the system of record.\n try {\n await sink?.record(event)\n } catch {\n // Intentionally swallowed.\n }\n }\n const checker: CorrectnessChecker = async (requirement, content) => {\n const request = {\n model,\n messages: [\n {\n role: 'system' as const,\n content:\n 'You verify whether a produced work artifact actually fulfils a stated requirement. Judge fulfilment only — is the deliverable substantively present and on-point — not polish. A plan to do it later, a vague gesture, or a description of what should be done does NOT fulfil a requirement; the artifact must BE the deliverable. Respond with a single JSON object: {\"correct\": boolean, \"reason\": string (<= 30 words)}.',\n },\n {\n role: 'user' as const,\n content: `Requirement: ${requirement.title}\\n${\n requirement.category ? `Category: ${requirement.category}\\n` : ''\n }\\nProduced artifact:\\n${content.slice(0, maxContentChars)}`,\n },\n ],\n temperature: 0,\n maxTokens: 200,\n } satisfies ChatRequest\n let lastErr: unknown\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const started = Date.now()\n await record({\n eventId: randomUUID(),\n provider: chat.transport,\n model,\n endpoint: '/chat',\n baseUrl: '',\n attemptIndex: attempt,\n direction: 'request',\n timestamp: started,\n requestBody: request,\n redactedFields: [],\n })\n try {\n const paid = await costLedger.runPaidCall({\n channel: 'verifier',\n phase: opts.costPhase ?? 'completion.correctness',\n actor: 'correctness-checker',\n model,\n maximumCharge:\n chat.maximumAttempts === undefined\n ? undefined\n : maximumChargeForLlmRequest(request, { maximumAttempts: chat.maximumAttempts }),\n tags: {\n ...opts.costTags,\n requirementId: requirement.reqId,\n attempt: String(attempt),\n },\n signal: opts.signal,\n execute: (signal, callId) => chat.chat(request, { signal, idempotencyKey: callId }),\n receipt: costReceiptFromLlm,\n receiptFromError: costReceiptFromLlmError,\n })\n if (!paid.succeeded) throw paid.error\n const resp = paid.value\n // Hold the transport to its own word: a verdict produced by a model\n // other than the one requested is not this model's verdict. A\n // transport that echoes no id cannot be made to prove identity here —\n // callers needing that proof enable it at the client\n // (`LlmClientOptions.assertServedModel`) or gate on `assertModelsServed`.\n assertServedModel(model, resp.servedModel, {\n allowUnreported: true,\n context: `correctness checker for requirement ${requirement.reqId}`,\n })\n const raw = resp.content\n await record({\n eventId: randomUUID(),\n provider: chat.transport,\n model,\n endpoint: '/chat',\n baseUrl: '',\n attemptIndex: attempt,\n direction: 'response',\n timestamp: Date.now(),\n durationMs: Date.now() - started,\n responseBody: resp,\n redactedFields: [],\n })\n return parseCorrectnessResponse(raw)\n } catch (err) {\n lastErr = err\n await record({\n eventId: randomUUID(),\n provider: chat.transport,\n model,\n endpoint: '/chat',\n baseUrl: '',\n attemptIndex: attempt,\n direction: 'error',\n timestamp: Date.now(),\n durationMs: Date.now() - started,\n errorMessage: err instanceof Error ? err.message : String(err),\n redactedFields: [],\n })\n // Substitution is a verdict about identity, not a transient fault:\n // another attempt reaches the same wrong model and spends more tokens.\n if (err instanceof ModelSubstitutionError) throw err\n }\n }\n throw lastErr instanceof Error ? lastErr : new Error(String(lastErr))\n }\n checker.attestation = {\n strategy: 'judge',\n checker: { name: 'llm-correctness-checker', version: model },\n assumptions: [\n 'served-model identity is accepted when the transport reports none (assertServedModel allowUnreported)',\n ],\n }\n return checker\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cost-ledger-DfhStGcZ.js","names":[],"sources":["../src/cost-ledger/validation.ts","../src/cost-ledger/pricing.ts","../src/cost-ledger/receipts.ts","../src/cost-ledger/errors.ts","../src/cost-ledger/journal.ts","../src/cost-ledger/summary.ts","../src/cost-ledger.ts"],"sourcesContent":["/** Validate cost and usage primitives without admitting work or consulting pricing. */\nimport { z } from 'zod'\nimport { ValidationError } from '../errors'\nimport type { CostUsage } from './contract'\n\nexport function toError(value: unknown): Error {\n return value instanceof Error ? value : new Error(String(value))\n}\n\nexport function validationMessage(cause: unknown): string {\n return cause instanceof z.ZodError ? z.prettifyError(cause) : toError(cause).message\n}\n\nexport function assertUsage(usage: CostUsage): void {\n assertTokenCount(usage.inputTokens, 'inputTokens')\n assertTokenCount(usage.outputTokens, 'outputTokens')\n if (usage.reasoningTokens !== undefined) {\n assertTokenCount(usage.reasoningTokens, 'reasoningTokens')\n if (usage.reasoningTokens > usage.outputTokens) {\n throw new ValidationError('CostLedger: reasoningTokens must not exceed outputTokens')\n }\n }\n if (usage.cachedTokens !== undefined) assertTokenCount(usage.cachedTokens, 'cachedTokens')\n if (usage.cacheWriteTokens !== undefined) {\n assertTokenCount(usage.cacheWriteTokens, 'cacheWriteTokens')\n }\n}\n\nexport function assertTokenCount(value: unknown, name: string): asserts value is number {\n if (typeof value !== 'number' || !Number.isInteger(value) || value < 0) {\n throw new ValidationError(\n `CostLedger: ${name} must be a non-negative integer, got ${String(value)}`,\n )\n }\n}\n\nexport function assertNonNegative(value: unknown, name: string): asserts value is number {\n if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {\n throw new ValidationError(\n `CostLedger: ${name} must be a non-negative finite number, got ${String(value)}`,\n )\n }\n}\n\nexport function assertTimeout(value: unknown, name: string): asserts value is number {\n if (\n typeof value !== 'number' ||\n !Number.isSafeInteger(value) ||\n value < 0 ||\n value > 2_147_483_647\n ) {\n throw new ValidationError(\n `CostLedger: ${name} must be a non-negative safe integer no greater than 2147483647, got ${String(value)}`,\n )\n }\n}\n\nexport function assertString(value: unknown, name: string): asserts value is string {\n if (typeof value !== 'string' || value.trim().length === 0) {\n throw new ValidationError(`CostLedger: ${name} must be a non-empty string`)\n }\n}\n","/** Model-price lookup and caller-supplied token pricing, including receipt snapshots. */\nimport { estimateCost, resolveModelPricing } from '../metrics'\nimport type { CostReceipt, CostUsage, CustomTokenPricing } from './contract'\nimport { assertNonNegative, assertTokenCount, assertUsage } from './validation'\n\n\n\nexport interface CostResult {\n costUsd: number\n costUnknown: boolean\n}\n\nexport function costForUsage(model: string, usage: CostUsage): CostResult {\n assertUsage(usage)\n if (!resolveModelPricing(model)) return { costUsd: 0, costUnknown: true }\n return {\n costUsd: estimateCost(\n usage.inputTokens + (usage.cachedTokens ?? 0) + (usage.cacheWriteTokens ?? 0),\n usage.outputTokens,\n model,\n ),\n costUnknown: false,\n }\n}\n\n/** Price token counts with caller-supplied per-million rates. */\nexport function costForTokenPricing(\n pricing: CustomTokenPricing,\n usage: Pick<CostUsage, 'inputTokens' | 'outputTokens' | 'cachedTokens' | 'cacheWriteTokens'>,\n): number {\n assertTokenCount(usage.inputTokens, 'usage.inputTokens')\n assertTokenCount(usage.outputTokens, 'usage.outputTokens')\n if (usage.cachedTokens !== undefined) {\n assertTokenCount(usage.cachedTokens, 'usage.cachedTokens')\n }\n if (usage.cacheWriteTokens !== undefined) {\n assertTokenCount(usage.cacheWriteTokens, 'usage.cacheWriteTokens')\n }\n assertNonNegative(pricing.inputUsdPerMillion, 'pricing.inputUsdPerMillion')\n if (pricing.cachedInputUsdPerMillion !== undefined) {\n assertNonNegative(pricing.cachedInputUsdPerMillion, 'pricing.cachedInputUsdPerMillion')\n }\n if (pricing.cacheWriteUsdPerMillion !== undefined) {\n assertNonNegative(pricing.cacheWriteUsdPerMillion, 'pricing.cacheWriteUsdPerMillion')\n }\n assertNonNegative(pricing.outputUsdPerMillion, 'pricing.outputUsdPerMillion')\n const cachedInputRate = pricing.cachedInputUsdPerMillion ?? pricing.inputUsdPerMillion\n const cacheWriteRate = pricing.cacheWriteUsdPerMillion ?? pricing.inputUsdPerMillion\n return (\n (usage.inputTokens / 1_000_000) * pricing.inputUsdPerMillion +\n ((usage.cachedTokens ?? 0) / 1_000_000) * cachedInputRate +\n ((usage.cacheWriteTokens ?? 0) / 1_000_000) * cacheWriteRate +\n (usage.outputTokens / 1_000_000) * pricing.outputUsdPerMillion\n )\n}\n\nexport function costFromPricing(\n usage: CostUsage,\n pricing: NonNullable<CostReceipt['pricing']>,\n): number {\n const cachedInputRate = pricing.cachedInputUsdPerThousand ?? pricing.inputUsdPerThousand\n const cacheWriteRate = pricing.cacheWriteUsdPerThousand ?? pricing.inputUsdPerThousand\n return (\n (usage.inputTokens / 1000) * pricing.inputUsdPerThousand +\n ((usage.cachedTokens ?? 0) / 1000) * cachedInputRate +\n ((usage.cacheWriteTokens ?? 0) / 1000) * cacheWriteRate +\n (usage.outputTokens / 1000) * pricing.outputUsdPerThousand\n )\n}\n\nexport function pricingSnapshot(pricing: CustomTokenPricing): NonNullable<CostReceipt['pricing']> {\n costForTokenPricing(pricing, { inputTokens: 0, outputTokens: 0 })\n return {\n inputUsdPerThousand: pricing.inputUsdPerMillion / 1000,\n ...(pricing.cachedInputUsdPerMillion === undefined\n ? {}\n : { cachedInputUsdPerThousand: pricing.cachedInputUsdPerMillion / 1000 }),\n ...(pricing.cacheWriteUsdPerMillion === undefined\n ? {}\n : { cacheWriteUsdPerThousand: pricing.cacheWriteUsdPerMillion / 1000 }),\n outputUsdPerThousand: pricing.outputUsdPerMillion / 1000,\n }\n}\n","/** Create, validate, filter, and detach the receipts stored by a cost ledger. */\nimport { z } from 'zod'\nimport { ValidationError } from '../errors'\nimport { resolveModelPricing } from '../metrics'\nimport type {\n CostCallBase,\n CostLedgerFilter,\n CostLedgerRecord,\n CostReceipt,\n CostReceiptInput,\n CostUsage,\n PendingCostCall,\n RunPaidCallInput,\n} from './contract'\nimport { costForUsage, costFromPricing, pricingSnapshot } from './pricing'\nimport { assertNonNegative, assertString, assertUsage, validationMessage } from './validation'\n\nconst NonEmptyString = z.string().refine((value) => value.trim().length > 0, 'must be non-empty')\nexport const TokenCount = z.number().int().nonnegative().finite()\nexport const NonNegative = z.number().nonnegative().finite()\nconst Tags = z.record(NonEmptyString, z.string())\nconst CostPricingSchema = z.strictObject({\n inputUsdPerThousand: NonNegative,\n cachedInputUsdPerThousand: NonNegative.optional(),\n cacheWriteUsdPerThousand: NonNegative.optional(),\n outputUsdPerThousand: NonNegative,\n})\nconst CostCallBaseShape = {\n callId: NonEmptyString,\n channel: NonEmptyString,\n phase: NonEmptyString,\n actor: NonEmptyString,\n model: NonEmptyString,\n maximumCostUsd: NonNegative.optional(),\n tags: Tags.optional(),\n timestamp: NonNegative,\n}\nexport const PendingCostCallSchema = z.strictObject({\n status: z.literal('pending'),\n ...CostCallBaseShape,\n})\nconst CostProvenanceSchema = z.discriminatedUnion('kind', [\n z.strictObject({ kind: z.literal('observed'), usd: NonNegative }),\n z.strictObject({ kind: z.literal('estimated'), usd: NonNegative }),\n z.strictObject({ kind: z.literal('uncaptured'), usd: z.null() }),\n])\nconst CostBreakdownSchema = z.strictObject({\n router: CostProvenanceSchema,\n sandbox: CostProvenanceSchema,\n seatCredits: z.discriminatedUnion('kind', [\n z.strictObject({ kind: z.literal('estimated'), credits: NonNegative }),\n z.strictObject({ kind: z.literal('uncaptured'), credits: z.null(), reason: NonEmptyString }),\n ]),\n sources: z.array(\n z.strictObject({\n url: z.string().url(),\n readAt: z.string().datetime(),\n sha256: z.string().regex(/^[a-f0-9]{64}$/u),\n rates: z.record(NonEmptyString, NonNegative),\n }),\n ),\n})\nconst CostReceiptBaseShape = {\n costBreakdown: CostBreakdownSchema.optional(),\n status: z.literal('settled'),\n ...CostCallBaseShape,\n inputTokens: TokenCount,\n outputTokens: TokenCount,\n cachedTokens: TokenCount.optional(),\n costUsd: NonNegative,\n costUnknown: z.boolean(),\n usageUnknown: z.boolean().default(false),\n pricing: CostPricingSchema.optional(),\n actualCostUsd: NonNegative.optional(),\n estimatedCostUsd: NonNegative.optional(),\n error: NonEmptyString.optional(),\n}\nexport const CostReceiptSchema = z\n .strictObject({\n ...CostReceiptBaseShape,\n reasoningTokens: TokenCount.optional(),\n cacheWriteTokens: TokenCount.optional(),\n })\n .superRefine((receipt, ctx) => validateCostReceipt(receipt, ctx))\n\nfunction validateCostReceipt(\n receipt: CostUsage & {\n costUsd: number\n costUnknown: boolean\n usageUnknown: boolean\n costBreakdown?: CostReceipt['costBreakdown']\n pricing?: NonNullable<CostReceipt['pricing']>\n actualCostUsd?: number\n estimatedCostUsd?: number\n },\n ctx: z.RefinementCtx,\n): void {\n const split = receipt.costBreakdown\n if (split) {\n if (\n split.router.kind === 'estimated' ||\n (split.router.kind === 'observed' &&\n (receipt.actualCostUsd === undefined ||\n !costAmountsMatch(split.router.usd, receipt.actualCostUsd)))\n ) {\n ctx.addIssue({\n code: 'custom',\n message: 'Router breakdown must match the observed USD receipt or remain uncaptured',\n })\n }\n if (split.sandbox.kind === 'observed') {\n ctx.addIssue({\n code: 'custom',\n message: 'Sandbox breakdown is an estimate, not observed billing',\n })\n }\n }\n\n if (receipt.reasoningTokens !== undefined && receipt.reasoningTokens > receipt.outputTokens) {\n ctx.addIssue({ code: 'custom', message: 'reasoningTokens must not exceed outputTokens' })\n }\n\n if (receipt.actualCostUsd !== undefined && receipt.estimatedCostUsd !== undefined) {\n ctx.addIssue({\n code: 'custom',\n message: 'actual and external estimated costs cannot both be present',\n })\n }\n\n if (receipt.actualCostUsd !== undefined) {\n if (receipt.costUnknown || receipt.costUsd !== receipt.actualCostUsd) {\n ctx.addIssue({ code: 'custom', message: 'actual cost must be known and equal costUsd' })\n }\n if (receipt.pricing !== undefined) {\n ctx.addIssue({ code: 'custom', message: 'actual cost must not include estimated pricing' })\n }\n return\n }\n\n if (receipt.estimatedCostUsd !== undefined) {\n if (receipt.costUnknown || receipt.costUsd !== receipt.estimatedCostUsd) {\n ctx.addIssue({ code: 'custom', message: 'external estimate must be known and equal costUsd' })\n }\n if (receipt.pricing !== undefined) {\n ctx.addIssue({ code: 'custom', message: 'external estimate must not include token pricing' })\n }\n return\n }\n\n if (receipt.costUnknown) {\n if (receipt.costUsd !== 0) {\n ctx.addIssue({ code: 'custom', message: 'unknown cost must have costUsd 0' })\n }\n if (receipt.pricing !== undefined) {\n ctx.addIssue({ code: 'custom', message: 'unknown cost must not include estimated pricing' })\n }\n return\n }\n\n if (receipt.usageUnknown) {\n ctx.addIssue({ code: 'custom', message: 'known estimated cost requires known usage' })\n }\n if (!receipt.pricing) {\n ctx.addIssue({ code: 'custom', message: 'known estimated cost requires a pricing snapshot' })\n return\n }\n\n const expected = costFromPricing(receipt, receipt.pricing)\n if (!costAmountsMatch(receipt.costUsd, expected)) {\n ctx.addIssue({\n code: 'custom',\n message: `estimated cost ${receipt.costUsd} does not match pricing snapshot ${expected}`,\n })\n }\n}\n\nfunction costAmountsMatch(left: number, right: number): boolean {\n const scale = Math.max(1, Math.abs(left), Math.abs(right))\n return Math.abs(left - right) <= Number.EPSILON * scale * 8\n}\n\nexport function buildReceipt(\n pending: PendingCostCall,\n observed: CostReceiptInput,\n failed = false,\n error?: string,\n): CostReceipt {\n assertUsage(observed)\n assertString(observed.model, 'receipt.model')\n const suppliedAmounts = [\n observed.actualCostUsd,\n observed.estimatedCostUsd,\n observed.customTokenPricing,\n ].filter((value) => value !== undefined)\n if (suppliedAmounts.length > 1) {\n throw new ValidationError(\n 'CostLedger: a receipt can have only one of actualCostUsd, estimatedCostUsd, or customTokenPricing',\n )\n }\n const customPricingSnapshot =\n observed.customTokenPricing === undefined\n ? undefined\n : pricingSnapshot(observed.customTokenPricing)\n const estimated = customPricingSnapshot\n ? {\n costUsd: costFromPricing(observed, customPricingSnapshot),\n costUnknown: false,\n }\n : costForUsage(observed.model, observed)\n const hasActual = observed.actualCostUsd !== undefined\n const hasExternalEstimate = observed.estimatedCostUsd !== undefined\n if (hasActual && observed.costUnknown === true) {\n throw new ValidationError(\n 'CostLedger: a receipt cannot have both actualCostUsd and costUnknown=true',\n )\n }\n if (hasActual) assertNonNegative(observed.actualCostUsd!, 'actualCostUsd')\n if (hasExternalEstimate) assertNonNegative(observed.estimatedCostUsd!, 'estimatedCostUsd')\n if (hasExternalEstimate && observed.costUnknown === true) {\n throw new ValidationError(\n 'CostLedger: a receipt cannot have both estimatedCostUsd and costUnknown=true',\n )\n }\n const usageUnknown = observed.usageUnknown === true\n const costUnknown =\n observed.costUnknown === true ||\n (!hasActual && !hasExternalEstimate && (usageUnknown || estimated.costUnknown))\n const resolvedModelPricing =\n !customPricingSnapshot && !hasActual && !hasExternalEstimate && !costUnknown\n ? resolveModelPricing(observed.model)\n : null\n const receiptPricing =\n !hasActual && !hasExternalEstimate && !costUnknown\n ? (customPricingSnapshot ??\n (resolvedModelPricing\n ? {\n inputUsdPerThousand: resolvedModelPricing.input,\n outputUsdPerThousand: resolvedModelPricing.output,\n }\n : undefined))\n : undefined\n return parseReceipt(\n {\n ...(observed.costBreakdown ? { costBreakdown: observed.costBreakdown } : {}),\n status: 'settled',\n callId: pending.callId,\n channel: pending.channel,\n phase: pending.phase,\n actor: pending.actor,\n model: observed.model,\n inputTokens: observed.inputTokens,\n outputTokens: observed.outputTokens,\n ...(observed.reasoningTokens === undefined\n ? {}\n : { reasoningTokens: observed.reasoningTokens }),\n ...(observed.cachedTokens === undefined ? {} : { cachedTokens: observed.cachedTokens }),\n ...(observed.cacheWriteTokens === undefined\n ? {}\n : { cacheWriteTokens: observed.cacheWriteTokens }),\n costUsd: costUnknown\n ? 0\n : hasActual\n ? observed.actualCostUsd!\n : hasExternalEstimate\n ? observed.estimatedCostUsd!\n : estimated.costUsd,\n costUnknown,\n usageUnknown,\n ...(receiptPricing ? { pricing: receiptPricing } : {}),\n ...(hasActual ? { actualCostUsd: observed.actualCostUsd } : {}),\n ...(hasExternalEstimate ? { estimatedCostUsd: observed.estimatedCostUsd } : {}),\n ...(pending.maximumCostUsd === undefined ? {} : { maximumCostUsd: pending.maximumCostUsd }),\n ...(failed ? { error: error ?? 'paid-call-failed' } : {}),\n ...(pending.tags ? { tags: { ...pending.tags } } : {}),\n timestamp: pending.timestamp,\n },\n 'provider receipt',\n )\n}\n\nfunction parseReceipt(value: unknown, path: string): CostReceipt {\n try {\n return CostReceiptSchema.parse(value) as CostReceipt\n } catch (cause) {\n throw new ValidationError(`CostLedger: invalid ${path}: ${validationMessage(cause)}`, { cause })\n }\n}\n\nexport function parseImportedReceipt(value: unknown, path: string): CostReceipt {\n if (typeof value !== 'object' || value === null) return parseReceipt(value, path)\n const candidate = { ...value } as Record<string, unknown>\n if (\n candidate.status === 'settled' &&\n candidate.actualCostUsd === undefined &&\n candidate.estimatedCostUsd === undefined &&\n candidate.costUnknown === false &&\n candidate.pricing === undefined &&\n typeof candidate.model === 'string'\n ) {\n const pricing = resolveModelPricing(candidate.model)\n if (pricing) {\n candidate.pricing = {\n inputUsdPerThousand: pricing.input,\n outputUsdPerThousand: pricing.output,\n }\n }\n }\n return parseReceipt(candidate, path)\n}\n\nexport function validateAttribution(\n input: Pick<RunPaidCallInput<unknown>, 'channel' | 'phase' | 'actor' | 'model' | 'tags'>,\n): void {\n assertString(input.channel, 'channel')\n assertString(input.phase, 'phase')\n assertString(input.actor, 'actor')\n if (input.model !== undefined) assertString(input.model, 'model')\n if (input.tags !== undefined) {\n const parsed = Tags.safeParse(input.tags)\n if (!parsed.success)\n throw new ValidationError(`CostLedger: invalid tags: ${parsed.error.message}`)\n }\n}\n\nexport function matches(record: CostCallBase, filter: CostLedgerFilter | undefined): boolean {\n if (!filter) return true\n if (filter.channel !== undefined && record.channel !== filter.channel) return false\n if (filter.phase !== undefined && record.phase !== filter.phase) return false\n return Object.entries(filter.tags ?? {}).every(([key, value]) => record.tags?.[key] === value)\n}\n\nexport function cloneRecord(record: CostLedgerRecord): CostLedgerRecord {\n if (record.status === 'settled') return cloneReceipt(record)\n return clonePendingCall(record)\n}\n\nexport function clonePendingCall(record: PendingCostCall): PendingCostCall {\n const { tags, ...rest } = record\n return { ...rest, ...(tags ? { tags: { ...tags } } : {}) }\n}\n\nexport function cloneReceipt(receipt: CostReceipt): CostReceipt {\n const { pricing, tags, costBreakdown, ...rest } = receipt\n return {\n ...rest,\n ...(costBreakdown ? { costBreakdown: structuredClone(costBreakdown) } : {}),\n ...(tags ? { tags: { ...tags } } : {}),\n ...(pricing ? { pricing: { ...pricing } } : {}),\n }\n}\n","/** Typed cost-accounting failures retain detached receipt evidence. */\nimport { ValidationError } from '../errors'\nimport type { CostReceipt } from './contract'\nimport { cloneReceipt } from './receipts'\nimport { toError } from './validation'\n\nexport class CostCeilingReachedError extends ValidationError {\n constructor(\n ceilingUsd: number,\n committedUsd: number,\n requestedUsd: number,\n phase: string,\n actor: string,\n ) {\n super(\n `CostLedger: reserving ${requestedUsd} for '${actor}' during '${phase}' would exceed ceiling ${ceilingUsd} with ${committedUsd} already committed`,\n )\n }\n}\n\nexport class CostAccountingIncompleteError extends ValidationError {}\n\nexport class CostReservationExceededError extends ValidationError {\n constructor(actor: string, actualUsd: number, maximumUsd: number) {\n super(\n `CostLedger: '${actor}' charged ${actualUsd}, exceeding its enforced maximum ${maximumUsd}`,\n )\n }\n}\n\nexport class CostCallConflictError extends ValidationError {\n readonly callId?: string\n readonly receipt?: CostReceipt\n\n constructor(\n message: string,\n options: { callId?: string; receipt?: CostReceipt; cause?: unknown } = {},\n ) {\n super(message, options.cause === undefined ? undefined : { cause: options.cause })\n this.callId = options.callId\n this.receipt = options.receipt ? cloneReceipt(options.receipt) : undefined\n }\n}\n\nexport class CostLedgerPersistenceError extends ValidationError {\n readonly callId?: string\n readonly receipt?: CostReceipt\n\n constructor(cause: unknown, callId?: string, receipt?: CostReceipt) {\n super(\n `CostLedger: failed to persist${callId ? ` call '${callId}'` : ''}: ${toError(cause).message}`,\n { cause },\n )\n this.callId = callId\n this.receipt = receipt ? cloneReceipt(receipt) : undefined\n }\n}\n\nexport class CostReceiptCaptureError extends ValidationError {\n readonly callId: string\n readonly receipt?: CostReceipt\n readonly receiptError: Error\n\n constructor(callId: string, cause: unknown, receiptError: unknown, receipt?: CostReceipt) {\n super(`CostLedger: could not capture the provider receipt for call '${callId}'`, { cause })\n this.callId = callId\n this.receipt = receipt ? cloneReceipt(receipt) : undefined\n this.receiptError = toError(receiptError)\n }\n}\n","/** Parse the append-only journal and enforce immutable pending-to-settled transitions. */\nimport { z } from 'zod'\nimport { ValidationError } from '../errors'\nimport type { CostCallBase, CostLedgerRecord, CostReceipt, PendingCostCall } from './contract'\nimport { CostCallConflictError } from './errors'\nimport {\n CostReceiptSchema,\n cloneRecord,\n NonNegative,\n PendingCostCallSchema,\n TokenCount,\n} from './receipts'\nimport { validationMessage } from './validation'\n\ninterface PendingCostCallEvent {\n version: 1\n record: PendingCostCall\n}\n\ninterface SettledCostCallEvent {\n version: 2\n record: CostReceipt\n}\n\ninterface CompletedTasksEvent {\n version: 1\n completedTasks: number\n}\n\ninterface CostLimitEvent {\n version: 1\n costCeilingUsd: number\n}\n\nexport type CostCallEvent = PendingCostCallEvent | SettledCostCallEvent\nexport type CostLedgerEvent = CostCallEvent | CompletedTasksEvent | CostLimitEvent\n\nconst CostLedgerEventSchema = z.union([\n z.strictObject({\n version: z.literal(1),\n record: PendingCostCallSchema,\n }),\n z.strictObject({\n version: z.literal(2),\n record: CostReceiptSchema,\n }),\n z.strictObject({\n version: z.literal(1),\n completedTasks: TokenCount,\n }),\n z.strictObject({\n version: z.literal(1),\n costCeilingUsd: NonNegative,\n }),\n])\n\nexport function parseEvents(serialized: string): {\n records: CostLedgerRecord[]\n completedTasks: number\n costCeilingUsd?: number\n} {\n const records = new Map<string, CostLedgerRecord>()\n let completedTasks = 0\n let costCeilingUsd: number | undefined\n let lineNumber = 0\n try {\n for (const line of completeJournalPrefix(serialized).split('\\n')) {\n if (!line.trim()) continue\n lineNumber += 1\n const event = CostLedgerEventSchema.parse(JSON.parse(line)) as CostLedgerEvent\n if ('record' in event) {\n const record = event.record\n validateTransition(records, record)\n records.set(record.callId, cloneRecord(record))\n } else if ('completedTasks' in event) {\n completedTasks += event.completedTasks\n if (!Number.isSafeInteger(completedTasks)) {\n throw new ValidationError('CostLedger: completed task count exceeds safe integer range')\n }\n } else {\n if (costCeilingUsd !== undefined) {\n throw new ValidationError('CostLedger: duplicate persisted cost ceiling')\n }\n costCeilingUsd = event.costCeilingUsd\n }\n }\n return {\n records: [...records.values()],\n completedTasks,\n ...(costCeilingUsd === undefined ? {} : { costCeilingUsd }),\n }\n } catch (cause) {\n throw new ValidationError(\n `CostLedger: invalid persisted event ${lineNumber || 1}: ${validationMessage(cause)}`,\n { cause },\n )\n }\n}\n\nfunction completeJournalPrefix(serialized: string): string {\n if (!serialized || serialized.endsWith('\\n')) return serialized\n const finalNewline = serialized.lastIndexOf('\\n')\n const tail = serialized.slice(finalNewline + 1)\n try {\n JSON.parse(tail)\n } catch {\n return finalNewline < 0 ? '' : serialized.slice(0, finalNewline + 1)\n }\n throw new ValidationError(\n 'CostLedger: complete final persisted event is missing its newline terminator',\n )\n}\n\nexport function validateTransition(\n records: ReadonlyMap<string, CostLedgerRecord>,\n record: CostLedgerRecord,\n): void {\n const current = records.get(record.callId)\n if (!current) return\n if (record.status === 'pending' || current.status === 'settled') {\n throw new CostCallConflictError(`CostLedger: duplicate callId '${record.callId}'`)\n }\n if (!sameAttribution(current, record)) {\n throw new ValidationError(`CostLedger: receipt attribution changed for call '${record.callId}'`)\n }\n}\n\nfunction sameAttribution(before: CostCallBase, after: CostCallBase): boolean {\n return (\n before.channel === after.channel &&\n before.phase === after.phase &&\n before.actor === after.actor &&\n before.maximumCostUsd === after.maximumCostUsd &&\n before.timestamp === after.timestamp &&\n sameTags(before.tags, after.tags)\n )\n}\n\nfunction sameTags(\n left: Readonly<Record<string, string>> | undefined,\n right: Readonly<Record<string, string>> | undefined,\n): boolean {\n const leftEntries = Object.entries(left ?? {}).sort(([a], [b]) => a.localeCompare(b))\n const rightEntries = Object.entries(right ?? {}).sort(([a], [b]) => a.localeCompare(b))\n return JSON.stringify(leftEntries) === JSON.stringify(rightEntries)\n}\n","/** Derive attribution rollups and accounting completeness from one snapshot of ledger records. */\nimport type {\n ChannelRollup,\n CostBreakdown,\n CostChannel,\n CostLedgerRecord,\n CostLedgerSummary,\n CostProvenance,\n CostReceipt,\n PendingCostCall,\n} from './contract'\n\nexport function summarizeCostLedger(\n records: readonly CostLedgerRecord[],\n activeCallIds: ReadonlySet<string>,\n lateCallIds: ReadonlySet<string>,\n): CostLedgerSummary {\n const pending = records.filter((record): record is PendingCostCall => record.status === 'pending')\n const receipts = records.filter((record): record is CostReceipt => record.status === 'settled')\n const byChannel = new Map<string, ChannelRollup>()\n const unpriced = new Set<string>()\n const incompleteReasons: string[] = pending.map(\n (record) => `call '${record.callId}' for '${record.actor}' is pending`,\n )\n let inputTokens = 0\n let outputTokens = 0\n let reasoningTokens = 0\n let cachedTokens = 0\n let cacheWriteTokens = 0\n let totalCostUsd = 0\n\n for (const receipt of receipts) {\n inputTokens += receipt.inputTokens\n outputTokens += receipt.outputTokens\n reasoningTokens += receipt.reasoningTokens ?? 0\n cachedTokens += receipt.cachedTokens ?? 0\n cacheWriteTokens += receipt.cacheWriteTokens ?? 0\n totalCostUsd += receipt.costUsd\n if (receipt.costUnknown) {\n unpriced.add(receipt.model)\n incompleteReasons.push(\n receipt.error ?? `cost unknown for '${receipt.actor}' using '${receipt.model}'`,\n )\n }\n if (receipt.usageUnknown) {\n incompleteReasons.push(`token usage unknown for '${receipt.actor}' using '${receipt.model}'`)\n }\n if (receipt.maximumCostUsd !== undefined && receipt.costUsd > receipt.maximumCostUsd) {\n incompleteReasons.push(\n `'${receipt.actor}' charged ${receipt.costUsd}, exceeding its enforced maximum ${receipt.maximumCostUsd}`,\n )\n }\n const rollup = byChannel.get(receipt.channel) ?? emptyRollup(receipt.channel)\n rollup.calls += 1\n rollup.inputTokens += receipt.inputTokens\n rollup.outputTokens += receipt.outputTokens\n rollup.reasoningTokens = (rollup.reasoningTokens ?? 0) + (receipt.reasoningTokens ?? 0)\n rollup.cachedTokens += receipt.cachedTokens ?? 0\n rollup.cacheWriteTokens = (rollup.cacheWriteTokens ?? 0) + (receipt.cacheWriteTokens ?? 0)\n rollup.costUsd += receipt.costUsd\n if (receipt.costUnknown) rollup.unpricedCalls += 1\n if (receipt.usageUnknown) rollup.unknownUsageCalls += 1\n byChannel.set(receipt.channel, rollup)\n }\n\n return {\n ...(receipts.some((r) => r.costBreakdown)\n ? { costBreakdown: summarizeBreakdown(records) }\n : {}),\n totalCalls: receipts.length,\n pendingCalls: pending.length,\n unresolvedCalls: pending.filter(\n (record) => !activeCallIds.has(record.callId) || lateCallIds.has(record.callId),\n ).length,\n reservedCostUsd: pending.reduce((sum, record) => sum + (record.maximumCostUsd ?? 0), 0),\n inputTokens,\n outputTokens,\n reasoningTokens,\n cachedTokens,\n cacheWriteTokens,\n totalCostUsd,\n costProvenance:\n pending.length > 0 || receipts.some((receipt) => receipt.costUnknown)\n ? { kind: 'uncaptured', usd: null }\n : receipts.every((receipt) => receipt.actualCostUsd !== undefined)\n ? { kind: 'observed', usd: totalCostUsd }\n : { kind: 'estimated', usd: totalCostUsd },\n byChannel: [...byChannel.values()].sort((a, b) => a.channel.localeCompare(b.channel)),\n unpricedModels: [...unpriced].sort(),\n fullyPriced: unpriced.size === 0,\n usageComplete: pending.length === 0 && receipts.every((receipt) => !receipt.usageUnknown),\n accountingComplete: incompleteReasons.length === 0,\n incompleteReasons: [...new Set(incompleteReasons)],\n }\n}\n\nfunction emptyRollup(channel: CostChannel): ChannelRollup {\n return {\n channel,\n calls: 0,\n inputTokens: 0,\n outputTokens: 0,\n reasoningTokens: 0,\n cachedTokens: 0,\n cacheWriteTokens: 0,\n costUsd: 0,\n unpricedCalls: 0,\n unknownUsageCalls: 0,\n }\n}\n\nfunction summarizeBreakdown(records: readonly CostLedgerRecord[]): CostBreakdown {\n const details = records.map((r) => (r.status === 'settled' ? r.costBreakdown : undefined))\n const money = (key: 'router' | 'sandbox'): CostProvenance => {\n if (details.some((d) => !d || d[key].kind === 'uncaptured'))\n return { kind: 'uncaptured', usd: null }\n const values = details.map((d) => d![key])\n return {\n kind: values.every((v) => v.kind === 'observed') ? 'observed' : 'estimated',\n usd: values.reduce((sum, v) => sum + (v.usd ?? 0), 0),\n }\n }\n return {\n router: money('router'),\n sandbox: money('sandbox'),\n seatCredits: details.some((d) => !d || d.seatCredits.kind === 'uncaptured')\n ? {\n kind: 'uncaptured',\n credits: null,\n reason: 'One or more calls lack captured standard model credits',\n }\n : {\n kind: 'estimated',\n credits: details.reduce((sum, d) => sum + (d!.seatCredits.credits ?? 0), 0),\n },\n sources: structuredClone(details.flatMap((d) => d?.sources ?? [])),\n }\n}\n","/** Run-wide paid-call admission and durable call state. */\n\nimport type {\n CostLedgerFilter,\n CostLedgerOptions,\n CostLedgerPersistence,\n CostLedgerRecord,\n CostLedgerSummary,\n CostLedgerWaitOptions,\n CostReceipt,\n CostReceiptInput,\n MaximumCharge,\n PaidCallResult,\n PendingCostCall,\n PendingCostCallView,\n RunPaidCallInput,\n} from './cost-ledger/contract'\nimport {\n CostAccountingIncompleteError,\n CostCallConflictError,\n CostCeilingReachedError,\n CostLedgerPersistenceError,\n CostReceiptCaptureError,\n CostReservationExceededError,\n} from './cost-ledger/errors'\nimport type { CostCallEvent, CostLedgerEvent } from './cost-ledger/journal'\nimport { parseEvents, validateTransition } from './cost-ledger/journal'\nimport { costForTokenPricing, costForUsage } from './cost-ledger/pricing'\nimport {\n buildReceipt,\n clonePendingCall,\n cloneReceipt,\n cloneRecord,\n matches,\n parseImportedReceipt,\n validateAttribution,\n} from './cost-ledger/receipts'\nimport { summarizeCostLedger } from './cost-ledger/summary'\nimport { assertNonNegative, assertString, assertTimeout, toError } from './cost-ledger/validation'\nimport { ValidationError } from './errors'\n\nexport type {\n ChannelRollup,\n CostBreakdown,\n CostChannel,\n CostLedgerFilter,\n CostLedgerHandle,\n CostLedgerOptions,\n CostLedgerPersistence,\n CostLedgerRecord,\n CostLedgerSummary,\n CostLedgerWaitOptions,\n CostProvenance,\n CostReceipt,\n CostReceiptInput,\n CostUsage,\n CustomTokenPricing,\n MaximumCharge,\n PaidCallResult,\n PendingCostCall,\n PendingCostCallView,\n RunPaidCallInput,\n} from './cost-ledger/contract'\nexport {\n CostAccountingIncompleteError,\n CostCallConflictError,\n CostCeilingReachedError,\n CostLedgerPersistenceError,\n CostReceiptCaptureError,\n CostReservationExceededError,\n} from './cost-ledger/errors'\nexport type { CostResult } from './cost-ledger/pricing'\nexport { costForTokenPricing, costForUsage } from './cost-ledger/pricing'\n\n/** Run-wide paid-call admission, durable call state, receipts, and summaries. */\nexport class CostLedger {\n private readonly records = new Map<string, CostLedgerRecord>()\n private readonly activeCallIds = new Set<string>()\n private readonly lateCallIds = new Set<string>()\n private readonly idleWaiters = new Set<() => void>()\n private completedTasks = 0\n private revision = 'memory'\n private costLimitPersisted = false\n readonly costCeilingUsd?: number\n private readonly persistence?: CostLedgerPersistence\n\n constructor(input?: number | CostLedgerOptions) {\n const options = typeof input === 'number' ? { costCeilingUsd: input } : (input ?? {})\n this.persistence = options.persistence\n if (options.costCeilingUsd !== undefined) {\n assertNonNegative(options.costCeilingUsd, 'costCeilingUsd')\n }\n\n let persistedCostCeilingUsd: number | undefined\n if (this.persistence) {\n let stored: ReturnType<CostLedgerPersistence['read']>\n try {\n stored = this.persistence.read()\n } catch (cause) {\n throw new CostLedgerPersistenceError(cause)\n }\n assertString(stored.revision, 'persistence revision')\n this.revision = stored.revision\n const restored = parseEvents(stored.events)\n for (const record of restored.records) this.records.set(record.callId, record)\n this.completedTasks = restored.completedTasks\n persistedCostCeilingUsd = restored.costCeilingUsd\n }\n\n if (\n options.costCeilingUsd !== undefined &&\n persistedCostCeilingUsd !== undefined &&\n options.costCeilingUsd !== persistedCostCeilingUsd\n ) {\n throw new ValidationError(\n `CostLedger: requested cost ceiling ${options.costCeilingUsd} does not match persisted ceiling ${persistedCostCeilingUsd}`,\n )\n }\n this.costCeilingUsd = persistedCostCeilingUsd ?? options.costCeilingUsd\n this.costLimitPersisted =\n !this.persistence ||\n this.costCeilingUsd === undefined ||\n persistedCostCeilingUsd !== undefined\n\n if (\n this.costCeilingUsd !== undefined &&\n [...this.records.values()].some(\n (record) => record.status === 'pending' && record.maximumCostUsd === undefined,\n )\n ) {\n throw new ValidationError('CostLedger: capped event log contains an unbounded pending call')\n }\n\n if (options.receipts?.length) {\n const imported = options.receipts.map((receipt, index) =>\n parseImportedReceipt(receipt, `imported receipt ${index + 1}`),\n )\n this.ensureCostLimitPersisted()\n for (const receipt of imported) this.appendRecord(receipt)\n }\n }\n\n async runPaidCall<T>(input: RunPaidCallInput<T>): Promise<PaidCallResult<T>> {\n let callId: string | undefined\n let pending: PendingCostCall | undefined\n try {\n callId = resolveCallId(input.callId)\n validateAttribution(input)\n if (input.signal?.aborted) {\n return { succeeded: false, callId, error: abortError(input.signal) }\n }\n this.ensureCostLimitPersisted(callId)\n\n const maximumCostUsd = this.resolveMaximum(input.maximumCharge)\n const existing = this.records.get(callId)\n if (existing) {\n return {\n succeeded: false,\n callId,\n error: new CostCallConflictError(\n existing.status === 'pending'\n ? `CostLedger: callId '${callId}' is unresolved and must be reconciled before retry`\n : `CostLedger: callId '${callId}' already exists`,\n { callId },\n ),\n }\n }\n\n if (!pending) {\n while (true) {\n if (this.records.has(callId)) {\n return {\n succeeded: false,\n callId,\n error: new CostCallConflictError(`CostLedger: callId '${callId}' already exists`),\n }\n }\n const admission = this.admissionState()\n if (admission.unresolvedCalls > 0) {\n return {\n succeeded: false,\n callId,\n error: new CostAccountingIncompleteError(\n `CostLedger: ${admission.unresolvedCalls} unresolved call(s) must be reconciled before new paid work`,\n ),\n }\n }\n if (this.costCeilingUsd === undefined) break\n if (admission.budgetBreached) {\n return {\n succeeded: false,\n callId,\n error: new CostAccountingIncompleteError(\n `CostLedger: a settled call exceeded its enforced maximum; refusing paid call '${input.actor}' during '${input.phase}'`,\n ),\n }\n }\n // A settled call whose cost the provider left unknown is charged its\n // reserved maximum here, so the ceiling is enforced against a real\n // upper bound and one under-reported response cannot let later calls\n // silently exceed the budget — while still permitting them.\n const { committedCostUsd } = admission\n if (committedCostUsd + maximumCostUsd! > this.costCeilingUsd) {\n return {\n succeeded: false,\n callId,\n error: new CostCeilingReachedError(\n this.costCeilingUsd,\n committedCostUsd,\n maximumCostUsd!,\n input.phase,\n input.actor,\n ),\n }\n }\n if (\n committedCostUsd + admission.reservedCostUsd + maximumCostUsd! <=\n this.costCeilingUsd\n ) {\n break\n }\n await this.waitForReservationRelease(input.signal)\n }\n\n pending = {\n status: 'pending',\n callId,\n channel: input.channel,\n phase: input.phase,\n actor: input.actor,\n model: pendingModel(input),\n ...(maximumCostUsd === undefined ? {} : { maximumCostUsd }),\n ...(input.tags ? { tags: { ...input.tags } } : {}),\n timestamp: Date.now(),\n }\n this.appendRecord(pending)\n this.activeCallIds.add(callId)\n }\n } catch (error) {\n return { succeeded: false, ...(callId ? { callId } : {}), error: toError(error) }\n }\n\n try {\n return await this.execute(input, pending)\n } catch (error) {\n return { succeeded: false, callId: pending.callId, error: toError(error) }\n } finally {\n if (!this.lateCallIds.has(pending.callId)) this.releaseActiveCall(pending.callId)\n }\n }\n\n /** Wait until every call started by this ledger has produced a durable outcome. */\n async waitForIdle(options: CostLedgerWaitOptions = {}): Promise<boolean> {\n const hasActiveMatch = (): boolean =>\n [...this.activeCallIds].some((callId) => {\n const record = this.records.get(callId)\n return record !== undefined && matches(record, options.filter)\n })\n if (!hasActiveMatch()) return true\n const timeoutMs = options.timeoutMs ?? 5_000\n assertTimeout(timeoutMs, 'waitForIdle.timeoutMs')\n return new Promise<boolean>((resolve) => {\n let timer: ReturnType<typeof setTimeout> | undefined\n const finish = (settled: boolean): void => {\n this.idleWaiters.delete(onIdle)\n if (timer !== undefined) clearTimeout(timer)\n resolve(settled)\n }\n const onIdle = (): void => {\n if (!hasActiveMatch()) finish(true)\n }\n this.idleWaiters.add(onIdle)\n timer = setTimeout(() => finish(false), timeoutMs)\n onIdle()\n })\n }\n\n /** Settle a call left pending by a crashed process after reconciling with the provider. */\n reconcile(\n callId: string,\n observed: CostReceiptInput,\n options: { failed?: boolean; error?: string } = {},\n ): CostReceipt {\n const pending = this.records.get(callId)\n if (pending?.status !== 'pending') {\n throw new CostCallConflictError(`CostLedger: no pending call '${callId}'`)\n }\n if (this.activeCallIds.has(callId)) {\n throw new CostCallConflictError(`CostLedger: call '${callId}' is still active`)\n }\n this.ensureCostLimitPersisted(callId)\n return this.commitReceipt(\n pending,\n observed,\n options.failed === true || options.error !== undefined,\n options.error,\n )\n }\n\n list(filter?: CostLedgerFilter): CostReceipt[] {\n return [...this.records.values()]\n .filter((record): record is CostReceipt => record.status === 'settled')\n .filter((receipt) => matches(receipt, filter))\n .map(cloneReceipt)\n }\n\n /** Read pending calls without exposing mutable ledger state. */\n listPending(filter?: CostLedgerFilter): PendingCostCallView[] {\n return [...this.records.values()]\n .filter((record): record is PendingCostCall => record.status === 'pending')\n .filter((record) => matches(record, filter))\n .map((record) => ({\n ...clonePendingCall(record),\n state: this.lateCallIds.has(record.callId)\n ? 'late'\n : this.activeCallIds.has(record.callId)\n ? 'active'\n : 'interrupted',\n }))\n }\n\n summary(filter?: CostLedgerFilter): CostLedgerSummary {\n const records = [...this.records.values()].filter((record) => matches(record, filter))\n return summarizeCostLedger(records, this.activeCallIds, this.lateCallIds)\n }\n markCompleted(count = 1): void {\n if (!Number.isInteger(count) || count < 0) {\n throw new ValidationError(\n `CostLedger.markCompleted: count must be a non-negative integer, got ${count}`,\n )\n }\n if (count === 0) return\n this.ensureCostLimitPersisted()\n this.appendEvent({ version: 1, completedTasks: count })\n this.completedTasks += count\n }\n\n costPerCompletedTask(): number | null {\n return this.completedTasks === 0 ? null : this.summary().totalCostUsd / this.completedTasks\n }\n\n private async execute<T>(\n input: RunPaidCallInput<T>,\n pending: PendingCostCall,\n ): Promise<PaidCallResult<T>> {\n const signal = input.signal ?? new AbortController().signal\n if (signal.aborted) {\n return this.commitOutcome(pending, abortError(signal), {\n model: pending.model,\n inputTokens: 0,\n outputTokens: 0,\n actualCostUsd: 0,\n })\n }\n\n const operation = Promise.resolve().then(() => input.execute(signal, pending.callId))\n const settled = await settle(operation, signal)\n if (settled.kind === 'aborted') {\n this.lateCallIds.add(pending.callId)\n this.captureLateOutcome(input, pending, operation)\n return paidFailure(pending.callId, abortError(signal))\n }\n if (settled.kind === 'error') {\n let observed: CostReceiptInput | undefined\n try {\n observed = input.receiptFromError?.(settled.error)\n } catch (receiptError) {\n return this.captureFailure(pending, settled.error, receiptError)\n }\n return this.commitOutcome(pending, settled.error, observed ?? unknownReceipt(pending.model))\n }\n\n try {\n const receipt = this.commitReceipt(pending, input.receipt(settled.value))\n if (receipt.maximumCostUsd !== undefined && receipt.costUsd > receipt.maximumCostUsd) {\n return paidFailure(\n pending.callId,\n new CostReservationExceededError(pending.actor, receipt.costUsd, receipt.maximumCostUsd),\n receipt,\n )\n }\n return { succeeded: true, callId: pending.callId, value: settled.value, receipt }\n } catch (receiptError) {\n if (\n receiptError instanceof CostLedgerPersistenceError ||\n receiptError instanceof CostCallConflictError\n ) {\n return paidFailure(pending.callId, receiptError)\n }\n return this.captureFailure(pending, receiptError, receiptError)\n }\n }\n\n private captureLateOutcome<T>(\n input: RunPaidCallInput<T>,\n pending: PendingCostCall,\n operation: Promise<T>,\n ): void {\n void operation\n .then(\n (value) => {\n if (this.records.get(pending.callId)?.status !== 'pending') return\n try {\n this.commitReceipt(pending, input.receipt(value))\n } catch {\n // A failed durable settlement leaves the reservation pending and blocks new paid work.\n }\n },\n (cause) => {\n if (this.records.get(pending.callId)?.status !== 'pending') return\n const error = toError(cause)\n try {\n const observed = input.receiptFromError?.(error)\n this.commitReceipt(pending, observed ?? unknownReceipt(pending.model), true)\n } catch (receiptError) {\n if (\n receiptError instanceof CostLedgerPersistenceError ||\n receiptError instanceof CostCallConflictError\n ) {\n return\n }\n this.captureFailure(pending, error, receiptError)\n }\n },\n )\n .finally(() => {\n this.lateCallIds.delete(pending.callId)\n this.releaseActiveCall(pending.callId)\n })\n }\n\n private releaseActiveCall(callId: string): void {\n this.activeCallIds.delete(callId)\n for (const resolve of [...this.idleWaiters]) resolve()\n }\n\n private async waitForReservationRelease(signal?: AbortSignal): Promise<void> {\n if (signal?.aborted) throw abortError(signal)\n await new Promise<void>((resolve, reject) => {\n let finished = false\n const finish = (error?: Error): void => {\n if (finished) return\n finished = true\n this.idleWaiters.delete(onRelease)\n signal?.removeEventListener('abort', onAbort)\n if (error) reject(error)\n else resolve()\n }\n const onRelease = (): void => finish()\n const onAbort = (): void => finish(abortError(signal!))\n this.idleWaiters.add(onRelease)\n signal?.addEventListener('abort', onAbort, { once: true })\n if (this.activeCallIds.size === 0) onRelease()\n })\n }\n\n private commitOutcome<T>(\n pending: PendingCostCall,\n error: Error,\n observed: CostReceiptInput,\n ): PaidCallResult<T> {\n try {\n const receipt = this.commitReceipt(pending, observed, true)\n return paidFailure(pending.callId, error, receipt)\n } catch (receiptError) {\n if (\n receiptError instanceof CostLedgerPersistenceError ||\n receiptError instanceof CostCallConflictError\n ) {\n return paidFailure(pending.callId, receiptError)\n }\n return this.captureFailure(pending, error, receiptError)\n }\n }\n\n private captureFailure<T>(\n pending: PendingCostCall,\n cause: unknown,\n receiptError: unknown,\n ): PaidCallResult<T> {\n try {\n const receipt = this.commitReceipt(pending, unknownReceipt(pending.model), true)\n return paidFailure(\n pending.callId,\n new CostReceiptCaptureError(pending.callId, cause, receiptError, receipt),\n receipt,\n )\n } catch (error) {\n const typed = error instanceof Error ? error : toError(error)\n return paidFailure(pending.callId, typed)\n }\n }\n\n private commitReceipt(\n pending: PendingCostCall,\n observed: CostReceiptInput,\n failed = false,\n error?: string,\n ): CostReceipt {\n const receipt = buildReceipt(pending, observed, failed, error)\n if (this.records.get(pending.callId)?.status !== 'pending') {\n throw new CostCallConflictError(`CostLedger: call '${pending.callId}' is not pending`)\n }\n this.appendRecord(receipt)\n return cloneReceipt(receipt)\n }\n\n private resolveMaximum(maximum: MaximumCharge | undefined): number | undefined {\n if (!maximum) {\n if (this.costCeilingUsd !== undefined) {\n throw new CostAccountingIncompleteError(\n 'CostLedger: capped paid calls require a hard maximumCharge before execution',\n )\n }\n return undefined\n }\n if ('externallyEnforcedMaximumUsd' in maximum) {\n assertNonNegative(\n maximum.externallyEnforcedMaximumUsd,\n 'maximumCharge.externallyEnforcedMaximumUsd',\n )\n return maximum.externallyEnforcedMaximumUsd\n }\n if ('customTokenPricing' in maximum) {\n return costForTokenPricing(maximum.customTokenPricing, maximum)\n }\n const priced = costForUsage(maximum.model, maximum)\n if (priced.costUnknown) {\n if (this.costCeilingUsd !== undefined) {\n throw new CostAccountingIncompleteError(\n `CostLedger: cannot reserve unpriced model '${maximum.model}' in a capped run`,\n )\n }\n return undefined\n }\n return priced.costUsd\n }\n\n /** Compute admission totals in record order without building reporting rollups. */\n private admissionState() {\n let unresolvedCalls = 0\n let reservedCostUsd = 0\n let committedCostUsd = 0\n let budgetBreached = false\n for (const record of this.records.values()) {\n if (record.status === 'pending') {\n if (!this.activeCallIds.has(record.callId) || this.lateCallIds.has(record.callId)) {\n unresolvedCalls += 1\n }\n reservedCostUsd += record.maximumCostUsd ?? 0\n } else {\n if (record.maximumCostUsd !== undefined && record.costUsd > record.maximumCostUsd) {\n budgetBreached = true\n }\n // Unknown settled costs consume their reserved maximum for admission.\n committedCostUsd += record.costUnknown\n ? (record.maximumCostUsd ?? record.costUsd)\n : record.costUsd\n }\n }\n return { unresolvedCalls, reservedCostUsd, committedCostUsd, budgetBreached }\n }\n\n private appendRecord(record: CostLedgerRecord): void {\n const callId = record.callId\n const receipt = record.status === 'settled' ? record : undefined\n validateTransition(this.records, record)\n const event: CostCallEvent =\n record.status === 'settled'\n ? { version: 2, record: cloneReceipt(record) }\n : { version: 1, record: clonePendingCall(record) }\n this.appendEvent(event, callId, receipt)\n this.records.set(callId, cloneRecord(record))\n }\n\n private ensureCostLimitPersisted(callId?: string): void {\n if (this.costLimitPersisted || this.costCeilingUsd === undefined) return\n this.appendEvent({ version: 1, costCeilingUsd: this.costCeilingUsd }, callId)\n this.costLimitPersisted = true\n }\n\n private appendEvent(event: CostLedgerEvent, callId?: string, receipt?: CostReceipt): void {\n try {\n if (this.persistence) {\n const nextRevision = this.persistence.append(this.revision, `${JSON.stringify(event)}\\n`)\n if (nextRevision === undefined) {\n throw new CostCallConflictError(\n `CostLedger: persisted revision changed while writing call '${callId}'`,\n { callId, receipt },\n )\n }\n assertString(nextRevision, 'persistence revision')\n this.revision = nextRevision\n }\n } catch (cause) {\n if (cause instanceof CostCallConflictError) throw cause\n throw new CostLedgerPersistenceError(cause, callId, receipt)\n }\n }\n}\n\ntype Settled<T> =\n | { kind: 'value'; value: T }\n | { kind: 'error'; error: Error }\n | { kind: 'aborted' }\n\nasync function settle<T>(promise: Promise<T>, signal: AbortSignal): Promise<Settled<T>> {\n return await new Promise((resolve) => {\n let done = false\n const finish = (value: Settled<T>): void => {\n if (done) return\n done = true\n signal.removeEventListener('abort', onAbort)\n resolve(value)\n }\n const onAbort = () => finish({ kind: 'aborted' })\n signal.addEventListener('abort', onAbort, { once: true })\n if (signal.aborted) onAbort()\n promise.then(\n (value) => finish({ kind: 'value', value }),\n (error) => finish({ kind: 'error', error: toError(error) }),\n )\n })\n}\n\nfunction pendingModel(input: RunPaidCallInput<unknown>): string {\n if (input.model) return input.model\n if (input.maximumCharge && 'model' in input.maximumCharge) return input.maximumCharge.model\n return 'unknown'\n}\n\nfunction unknownReceipt(model: string): CostReceiptInput {\n return { model, inputTokens: 0, outputTokens: 0, costUnknown: true, usageUnknown: true }\n}\n\nfunction resolveCallId(input: string | undefined): string {\n if (input !== undefined) {\n assertString(input, 'callId')\n return input\n }\n if (typeof globalThis.crypto?.randomUUID !== 'function') {\n throw new ValidationError('CostLedger: crypto.randomUUID is required when callId is omitted')\n }\n return globalThis.crypto.randomUUID()\n}\n\nfunction abortError(signal: AbortSignal): Error {\n const reason = (signal as { reason?: unknown }).reason\n if (reason instanceof Error) return reason\n const error = new Error('CostLedger: paid call aborted')\n error.name = 'AbortError'\n return error\n}\n\nfunction paidFailure<T>(callId: string, error: Error, receipt?: CostReceipt): PaidCallResult<T> {\n return {\n succeeded: false,\n callId,\n error,\n ...(receipt ? { receipt: cloneReceipt(receipt) } : {}),\n }\n}\n"],"mappings":"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"}