@tangle-network/agent-eval 0.216.1 → 0.218.1

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 (532) hide show
  1. package/CHANGELOG.md +137 -57
  2. package/README.md +2 -2
  3. package/dist/adapters/http.d.ts +2 -2
  4. package/dist/{agent-profile-VFcQncbW.d.ts → agent-profile-DTt8uGP9.d.ts} +4 -17
  5. package/dist/agent-profile-DTt8uGP9.d.ts.map +1 -0
  6. package/dist/{agent-profile-cell-BK8mlqlq.js → agent-profile-cell-B1V1gUZs.js} +4 -53
  7. package/dist/agent-profile-cell-B1V1gUZs.js.map +1 -0
  8. package/dist/{agent-profile-cell-BNp-Js9F.d.ts → agent-profile-cell-BcpFbNd5.d.ts} +2 -22
  9. package/dist/agent-profile-cell-BcpFbNd5.d.ts.map +1 -0
  10. package/dist/{agreement-irr-BEWLIF3_.js → agreement-irr-BhAqjluA.js} +5 -5
  11. package/dist/agreement-irr-BhAqjluA.js.map +1 -0
  12. package/dist/analyst/index.d.ts +36 -169
  13. package/dist/analyst/index.d.ts.map +1 -1
  14. package/dist/analyst/index.js +17 -192
  15. package/dist/analyst/index.js.map +1 -1
  16. package/dist/{analyze-runs-D68fd-su.d.ts → analyze-runs-DjlZOVXx.d.ts} +5 -5
  17. package/dist/{analyze-runs-D68fd-su.d.ts.map → analyze-runs-DjlZOVXx.d.ts.map} +1 -1
  18. package/dist/{analyze-runs-C84irm4i.js → analyze-runs-DqPJaJ4X.js} +225 -21
  19. package/dist/analyze-runs-DqPJaJ4X.js.map +1 -0
  20. package/dist/authenticity/index.d.ts +0 -23
  21. package/dist/authenticity/index.d.ts.map +1 -1
  22. package/dist/authenticity/index.js +1 -34
  23. package/dist/authenticity/index.js.map +1 -1
  24. package/dist/{benchmark-command-By0vh8q7.js → benchmark-command-BupdHRyf.js} +1225 -661
  25. package/dist/benchmark-command-BupdHRyf.js.map +1 -0
  26. package/dist/benchmarks/index.d.ts +5 -6
  27. package/dist/benchmarks/index.d.ts.map +1 -1
  28. package/dist/benchmarks/index.js +4 -4
  29. package/dist/benchmarks/index.js.map +1 -1
  30. package/dist/builder-eval/index.d.ts +3 -3
  31. package/dist/builder-eval/index.js +2 -2
  32. package/dist/builder-eval/index.js.map +1 -1
  33. package/dist/campaign/index.d.ts +7 -7
  34. package/dist/campaign/index.js +15 -15
  35. package/dist/{campaign-BudZ70zo.js → campaign-CGvUTnmc.js} +324 -800
  36. package/dist/campaign-CGvUTnmc.js.map +1 -0
  37. package/dist/{campaign-evidence-Clrn4hBV.js → campaign-evidence-DunzcJGv.js} +10 -18
  38. package/dist/{campaign-evidence-Clrn4hBV.js.map → campaign-evidence-DunzcJGv.js.map} +1 -1
  39. package/dist/{canonical-B2RqLofv.js → canonical-Dq2hOQ8L.js} +2 -2
  40. package/dist/{canonical-B2RqLofv.js.map → canonical-Dq2hOQ8L.js.map} +1 -1
  41. package/dist/cell-spend-DEWR3nj-.js +90 -0
  42. package/dist/cell-spend-DEWR3nj-.js.map +1 -0
  43. package/dist/{chat-client-l-MVDlDk.js → chat-client-B2pXlPdx.js} +2 -2
  44. package/dist/{chat-client-l-MVDlDk.js.map → chat-client-B2pXlPdx.js.map} +1 -1
  45. package/dist/{chat-json-call-puMArmtW.js → chat-json-call-Dm9c-b41.js} +3 -2
  46. package/dist/chat-json-call-Dm9c-b41.js.map +1 -0
  47. package/dist/{claim-q4HQhK1G.js → claim-BPVuyHuy.js} +3 -3
  48. package/dist/{claim-q4HQhK1G.js.map → claim-BPVuyHuy.js.map} +1 -1
  49. package/dist/cli.js +113 -12
  50. package/dist/cli.js.map +1 -1
  51. package/dist/{client-BzL9niqi.d.ts → client-hwo3cJjR.d.ts} +3 -16
  52. package/dist/client-hwo3cJjR.d.ts.map +1 -0
  53. package/dist/{cluster-bootstrap-qcUWYFl-.js → cluster-bootstrap-DEwwhl0C.js} +3 -3
  54. package/dist/{cluster-bootstrap-qcUWYFl-.js.map → cluster-bootstrap-DEwwhl0C.js.map} +1 -1
  55. package/dist/{produced-state-BsDmnwxc.js → completion-verifier-DbLVf3i8.js} +9 -64
  56. package/dist/completion-verifier-DbLVf3i8.js.map +1 -0
  57. package/dist/contract/index.d.ts +12 -12
  58. package/dist/contract/index.js +107 -403
  59. package/dist/contract/index.js.map +1 -1
  60. package/dist/{cost-ledger-BP8V4kUQ.js → cost-ledger-D0352Z4d.js} +4 -8
  61. package/dist/cost-ledger-D0352Z4d.js.map +1 -0
  62. package/dist/dataset-DQqhOCPt.d.ts.map +1 -1
  63. package/dist/{default-registry-COhk9g36.js → default-registry-BJ-Pq6yL.js} +314 -285
  64. package/dist/default-registry-BJ-Pq6yL.js.map +1 -0
  65. package/dist/{default-registry-DzHiGruW.d.ts → default-registry-DXgLmoDI.d.ts} +7 -50
  66. package/dist/default-registry-DXgLmoDI.d.ts.map +1 -0
  67. package/dist/{define-agent-eval-CNTPzIkp.js → define-agent-eval-BGdFKlrc.js} +170 -110
  68. package/dist/define-agent-eval-BGdFKlrc.js.map +1 -0
  69. package/dist/{define-agent-eval-WSck0CZJ.d.ts → define-agent-eval-BlH10zEw.d.ts} +8 -8
  70. package/dist/define-agent-eval-BlH10zEw.d.ts.map +1 -0
  71. package/dist/{descriptive-DboxPZrG.js → descriptive-CVNy48rR.js} +2 -2
  72. package/dist/{descriptive-DboxPZrG.js.map → descriptive-CVNy48rR.js.map} +1 -1
  73. package/dist/diagnosis/index.d.ts +4 -14
  74. package/dist/diagnosis/index.d.ts.map +1 -1
  75. package/dist/diagnosis/index.js +67 -28
  76. package/dist/diagnosis/index.js.map +1 -1
  77. package/dist/{dspy-rlm-engine-LRCu61m5.js → dspy-rlm-engine-CSMwudLO.js} +5 -10
  78. package/dist/dspy-rlm-engine-CSMwudLO.js.map +1 -0
  79. package/dist/{emitter-HcCmFQl_.d.ts → emitter-DABYYTcH.d.ts} +5 -5
  80. package/dist/emitter-DABYYTcH.d.ts.map +1 -0
  81. package/dist/emitter-DbMXUIVP.js.map +1 -1
  82. package/dist/{engine-3A_4jOlI.d.ts → engine-BvZ0R-36.d.ts} +17 -21
  83. package/dist/engine-BvZ0R-36.d.ts.map +1 -0
  84. package/dist/{equal-terms-BtdXayCJ.js → equal-terms-DbPGcVtI.js} +2 -2
  85. package/dist/equal-terms-DbPGcVtI.js.map +1 -0
  86. package/dist/{errors-DVZiqS7K.js → errors-BcOs5MKW.js} +2 -8
  87. package/dist/{errors-DVZiqS7K.js.map → errors-BcOs5MKW.js.map} +1 -1
  88. package/dist/eval-campaign-BUMIxKTE.js +393 -0
  89. package/dist/eval-campaign-BUMIxKTE.js.map +1 -0
  90. package/dist/{evaluation-6Yoi74gM.d.ts → evaluation-BOZ38vOH.d.ts} +7 -7
  91. package/dist/evaluation-BOZ38vOH.d.ts.map +1 -0
  92. package/dist/evaluation.d.ts +2 -2
  93. package/dist/evaluation.js +1 -1
  94. package/dist/evaluation.js.map +1 -1
  95. package/dist/{exact-types-ClugMJfI.d.ts → exact-types-CflbJ9f3.d.ts} +2 -2
  96. package/dist/{exact-types-ClugMJfI.d.ts.map → exact-types-CflbJ9f3.d.ts.map} +1 -1
  97. package/dist/{exec-ChJ6d5if.js → exec-CpbtOXVt.js} +2 -24
  98. package/dist/{exec-ChJ6d5if.js.map → exec-CpbtOXVt.js.map} +1 -1
  99. package/dist/execution-tracks-CpgFPpS5.js.map +1 -1
  100. package/dist/experiment/index.d.ts +9 -112
  101. package/dist/experiment/index.d.ts.map +1 -1
  102. package/dist/experiment/index.js +258 -311
  103. package/dist/experiment/index.js.map +1 -1
  104. package/dist/{exporters-X4xwla8A.js → exporters-DWvM16LE.js} +3 -3
  105. package/dist/exporters-DWvM16LE.js.map +1 -0
  106. package/dist/{exporters-ChTnR90l.d.ts → exporters-Dk3oEbK_.d.ts} +2 -4
  107. package/dist/{exporters-ChTnR90l.d.ts.map → exporters-Dk3oEbK_.d.ts.map} +1 -1
  108. package/dist/{external-optimizer-process-BjMGUuds.js → external-optimizer-process-C3Wm7Vhn.js} +4 -3
  109. package/dist/external-optimizer-process-C3Wm7Vhn.js.map +1 -0
  110. package/dist/{external-optimizer-subprocess-BqW0hHcI.js → external-optimizer-subprocess-B5gdLRZv.js} +9 -11
  111. package/dist/external-optimizer-subprocess-B5gdLRZv.js.map +1 -0
  112. package/dist/{extract-usage-BrnzRJ6H.js → extract-usage-BZLU01kR.js} +2 -23
  113. package/dist/{extract-usage-BrnzRJ6H.js.map → extract-usage-BZLU01kR.js.map} +1 -1
  114. package/dist/{failure-cluster-CbgEDcFJ.d.ts → failure-cluster-DN0t63Z0.d.ts} +4 -43
  115. package/dist/failure-cluster-DN0t63Z0.d.ts.map +1 -0
  116. package/dist/{failure-taxonomy-CjabTATj.js → failure-taxonomy-Bx5oWqaW.js} +2 -19
  117. package/dist/{failure-taxonomy-CjabTATj.js.map → failure-taxonomy-Bx5oWqaW.js.map} +1 -1
  118. package/dist/{feedback-trajectory-C4EG0nNH.d.ts → feedback-trajectory-BWmhRBGu.d.ts} +7 -9
  119. package/dist/feedback-trajectory-BWmhRBGu.d.ts.map +1 -0
  120. package/dist/{semantic-concept-judge-BQF8te0T.js → findings-store-BtTzPL0d.js} +9 -249
  121. package/dist/findings-store-BtTzPL0d.js.map +1 -0
  122. package/dist/fuzz.d.ts +19 -62
  123. package/dist/fuzz.d.ts.map +1 -1
  124. package/dist/fuzz.js +62 -108
  125. package/dist/fuzz.js.map +1 -1
  126. package/dist/{hf-dataset-BR2yhuNn.js → hf-dataset-CKxIJQba.js} +4 -24
  127. package/dist/hf-dataset-CKxIJQba.js.map +1 -0
  128. package/dist/hosted/index.d.ts +2 -2
  129. package/dist/hosted/index.js +2 -2
  130. package/dist/{index-CyszSg4O.d.ts → index-B16FNdW5.d.ts} +145 -360
  131. package/dist/index-B16FNdW5.d.ts.map +1 -0
  132. package/dist/{index-DV-jSzxF.d.ts → index-BLGqZ81N.d.ts} +10 -15
  133. package/dist/{index-DV-jSzxF.d.ts.map → index-BLGqZ81N.d.ts.map} +1 -1
  134. package/dist/{index-BO41eGj5.d.ts → index-CX-GAUpw.d.ts} +3 -7
  135. package/dist/index-CX-GAUpw.d.ts.map +1 -0
  136. package/dist/{index-DHKEAv3s.d.ts → index-CalAsXMR.d.ts} +8 -68
  137. package/dist/index-CalAsXMR.d.ts.map +1 -0
  138. package/dist/{index-BFRO6chs.d.ts → index-CiRwLv2R.d.ts} +5 -69
  139. package/dist/index-CiRwLv2R.d.ts.map +1 -0
  140. package/dist/{index-DPcngtwt.d.ts → index-DbMOXYnP.d.ts} +11 -36
  141. package/dist/index-DbMOXYnP.d.ts.map +1 -0
  142. package/dist/index.d.ts +211 -218
  143. package/dist/index.d.ts.map +1 -1
  144. package/dist/index.js +999 -1714
  145. package/dist/index.js.map +1 -1
  146. package/dist/{integrity-dLiDe2kD.js → integrity-C8oUeB0g.js} +326 -203
  147. package/dist/integrity-C8oUeB0g.js.map +1 -0
  148. package/dist/{integrity-BXOsAb3i.js → integrity-W4CADcFc.js} +3 -7
  149. package/dist/{integrity-BXOsAb3i.js.map → integrity-W4CADcFc.js.map} +1 -1
  150. package/dist/{integrity-DAMEDFaC.d.ts → integrity-_qgZLA5p.d.ts} +4 -6
  151. package/dist/{integrity-DAMEDFaC.d.ts.map → integrity-_qgZLA5p.d.ts.map} +1 -1
  152. package/dist/{internal-Epl-YBZW.js → internal-BTK91Bqt.js} +3 -3
  153. package/dist/{internal-Epl-YBZW.js.map → internal-BTK91Bqt.js.map} +1 -1
  154. package/dist/{interval-CELpye1n.js → interval-Dq9gt7jx.js} +3 -3
  155. package/dist/{interval-CELpye1n.js.map → interval-Dq9gt7jx.js.map} +1 -1
  156. package/dist/{journal-DfRz9kps.js → journal-C7om8Gum.js} +157 -147
  157. package/dist/journal-C7om8Gum.js.map +1 -0
  158. package/dist/json-BhdsJaOQ.js +111 -0
  159. package/dist/json-BhdsJaOQ.js.map +1 -0
  160. package/dist/{judge-calibration-BpCy5XQl.js → judge-calibration-BkXMIWA4.js} +3 -3
  161. package/dist/{judge-calibration-BpCy5XQl.js.map → judge-calibration-BkXMIWA4.js.map} +1 -1
  162. package/dist/{judge-gate-iY9s4L44.js → judge-gate-Co5tuh57.js} +4 -27
  163. package/dist/{judge-gate-iY9s4L44.js.map → judge-gate-Co5tuh57.js.map} +1 -1
  164. package/dist/{judge-gate-CE7CQAgt.d.ts → judge-gate-DsL0yFcb.d.ts} +8 -9
  165. package/dist/judge-gate-DsL0yFcb.d.ts.map +1 -0
  166. package/dist/{kind-factory-BobI5Jy3.js → kind-factory-Gy4fXixd.js} +88 -17
  167. package/dist/kind-factory-Gy4fXixd.js.map +1 -0
  168. package/dist/ledger-core/index.d.ts +2 -2
  169. package/dist/ledger-core/index.js +4 -4
  170. package/dist/ledger-core/lock-holder.d.ts +2 -0
  171. package/dist/ledger-core/lock-holder.js +181 -0
  172. package/dist/ledger-core/lock-holder.js.map +1 -0
  173. package/dist/{ledger-core-Gq7yp8lP.js → ledger-core-CAxUdDk0.js} +5 -84
  174. package/dist/ledger-core-CAxUdDk0.js.map +1 -0
  175. package/dist/{llm-client-CyBAoYiX.js → llm-client-_Y6ic-tf.js} +243 -355
  176. package/dist/llm-client-_Y6ic-tf.js.map +1 -0
  177. package/dist/{llm-judge-CG12SQJq.js → llm-judge-Djxh-Uhs.js} +662 -482
  178. package/dist/llm-judge-Djxh-Uhs.js.map +1 -0
  179. package/dist/lock-holder-DaJbfpci.d.ts +86 -0
  180. package/dist/lock-holder-DaJbfpci.d.ts.map +1 -0
  181. package/dist/matrix/index.d.ts +3 -3
  182. package/dist/matrix/index.js +3 -2
  183. package/dist/{matrix-Dm0BQW7U.js → matrix-B8l-Nsxd.js} +3 -88
  184. package/dist/matrix-B8l-Nsxd.js.map +1 -0
  185. package/dist/{matrix-DSrSxjjy.d.ts → matrix-CCSBna4q.d.ts} +9 -18
  186. package/dist/matrix-CCSBna4q.d.ts.map +1 -0
  187. package/dist/{mean-DHoMiudD.js → mean-BbA_JCzW.js} +39 -5
  188. package/dist/mean-BbA_JCzW.js.map +1 -0
  189. package/dist/meta-eval/index.d.ts +5 -5
  190. package/dist/meta-eval/index.js +10 -10
  191. package/dist/metrics-BKaPBtIG.js.map +1 -1
  192. package/dist/{mint-DNU8QPG4.d.ts → mint-BRZXuwRi.d.ts} +4 -4
  193. package/dist/{mint-DNU8QPG4.d.ts.map → mint-BRZXuwRi.d.ts.map} +1 -1
  194. package/dist/{mint-QaD5cA0u.js → mint-CbdwjTPW.js} +4 -4
  195. package/dist/{mint-QaD5cA0u.js.map → mint-CbdwjTPW.js.map} +1 -1
  196. package/dist/{multi-layer-verifier-BUaQ4C17.d.ts → multi-layer-verifier-DEgMUk6v.d.ts} +2 -2
  197. package/dist/{multi-layer-verifier-BUaQ4C17.d.ts.map → multi-layer-verifier-DEgMUk6v.d.ts.map} +1 -1
  198. package/dist/{multiplicity-DQUFcbW4.js → multiplicity-Sg0U7h8j.js} +2 -2
  199. package/dist/{multiplicity-DQUFcbW4.js.map → multiplicity-Sg0U7h8j.js.map} +1 -1
  200. package/dist/multishot/golden/index.d.ts +1 -23
  201. package/dist/multishot/golden/index.d.ts.map +1 -1
  202. package/dist/multishot/golden/index.js +3 -3
  203. package/dist/multishot/golden/index.js.map +1 -1
  204. package/dist/multishot/index.d.ts +3 -12
  205. package/dist/multishot/index.d.ts.map +1 -1
  206. package/dist/multishot/index.js +4 -3
  207. package/dist/multishot/index.js.map +1 -1
  208. package/dist/openapi.json +114 -10
  209. package/dist/{otel-spans-B9tUXRHF.js → otel-spans-CdN909k1.js} +3 -3
  210. package/dist/{otel-spans-B9tUXRHF.js.map → otel-spans-CdN909k1.js.map} +1 -1
  211. package/dist/{paired-arms-CwMGJsrS.js → paired-arms-Ct4LTKc1.js} +32 -9
  212. package/dist/paired-arms-Ct4LTKc1.js.map +1 -0
  213. package/dist/{paired-binary-CvpFHfKZ.js → paired-binary-B_nejA44.js} +3 -36
  214. package/dist/paired-binary-B_nejA44.js.map +1 -0
  215. package/dist/{paired-promotion-decision-DPKz8ZnF.d.ts → paired-promotion-decision-CQMJ5xGN.d.ts} +2 -34
  216. package/dist/paired-promotion-decision-CQMJ5xGN.d.ts.map +1 -0
  217. package/dist/{paired-promotion-decision-DsAPYGCm.js → paired-promotion-decision-D0SHb-ZL.js} +3 -3
  218. package/dist/{paired-promotion-decision-DsAPYGCm.js.map → paired-promotion-decision-D0SHb-ZL.js.map} +1 -1
  219. package/dist/{pareto-Cm6ndrWN.js → pareto-CTv8vozZ.js} +11 -11
  220. package/dist/pareto-CTv8vozZ.js.map +1 -0
  221. package/dist/pipelines/index.d.ts +16 -19
  222. package/dist/pipelines/index.d.ts.map +1 -1
  223. package/dist/pipelines/index.js +4 -68
  224. package/dist/pipelines/index.js.map +1 -1
  225. package/dist/{power-and-mde-Hj2ubb4B.js → power-and-mde-N5nU4_Ly.js} +3 -3
  226. package/dist/{power-and-mde-Hj2ubb4B.js.map → power-and-mde-N5nU4_Ly.js.map} +1 -1
  227. package/dist/{prime-protocol-CHKgA3a6.js → prime-protocol-BFgGrEMP.js} +3 -3
  228. package/dist/prime-protocol-BFgGrEMP.js.map +1 -0
  229. package/dist/{prime-protocol-HiB9HX7E.d.ts → prime-protocol-BWG2DQIk.d.ts} +3 -21
  230. package/dist/prime-protocol-BWG2DQIk.d.ts.map +1 -0
  231. package/dist/profile-cell.d.ts +2 -2
  232. package/dist/profile-cell.js +2 -2
  233. package/dist/{promotion-gate-BawrdPYr.d.ts → promotion-gate-CxEHRsZW.d.ts} +7 -8
  234. package/dist/{promotion-gate-BawrdPYr.d.ts.map → promotion-gate-CxEHRsZW.d.ts.map} +1 -1
  235. package/dist/{promotion-policy-KO57gbyV.js → promotion-policy-6A8osGr_.js} +4 -4
  236. package/dist/{promotion-policy-KO57gbyV.js.map → promotion-policy-6A8osGr_.js.map} +1 -1
  237. package/dist/{proposal-findings-CY1xKn_a.js → proposal-findings-n-5WBbEx.js} +3 -3
  238. package/dist/proposal-findings-n-5WBbEx.js.map +1 -0
  239. package/dist/{query-BUCZCK7F.js → query-B_RZ36an.js} +5 -5
  240. package/dist/query-B_RZ36an.js.map +1 -0
  241. package/dist/{query-DK1nWcmp.d.ts → query-Cmv_U8vf.d.ts} +4 -24
  242. package/dist/{query-DK1nWcmp.d.ts.map → query-Cmv_U8vf.d.ts.map} +1 -1
  243. package/dist/{random-ByUSnV9w.js → random-DDDcC7YU.js} +2 -2
  244. package/dist/{random-ByUSnV9w.js.map → random-DDDcC7YU.js.map} +1 -1
  245. package/dist/{raw-provider-sink-DoHz4JNG.js → raw-provider-sink-75w4FWBj.js} +2 -2
  246. package/dist/{raw-provider-sink-DoHz4JNG.js.map → raw-provider-sink-75w4FWBj.js.map} +1 -1
  247. package/dist/{redact-mtCCcT8z.d.ts → redact-DXdlFb_U.d.ts} +2 -3
  248. package/dist/redact-DXdlFb_U.d.ts.map +1 -0
  249. package/dist/{redact-B5xXKqQ3.js → redact-mtkTiJVk.js} +2 -7
  250. package/dist/{redact-B5xXKqQ3.js.map → redact-mtkTiJVk.js.map} +1 -1
  251. package/dist/{registry-D7_hm2fK.d.ts → registry-ssNoHzwD.d.ts} +4 -4
  252. package/dist/{registry-D7_hm2fK.d.ts.map → registry-ssNoHzwD.d.ts.map} +1 -1
  253. package/dist/{release-confidence-CpuP65S5.js → release-confidence-CYIFH-fp.js} +6 -11
  254. package/dist/release-confidence-CYIFH-fp.js.map +1 -0
  255. package/dist/{report-command-SC9nqb4M.js → render-Cs34y0iX.js} +625 -587
  256. package/dist/render-Cs34y0iX.js.map +1 -0
  257. package/dist/reporting.d.ts +6 -6
  258. package/dist/reporting.js +8 -8
  259. package/dist/{researcher-CEcfku-T.d.ts → researcher-GU1tV4dn.d.ts} +9 -9
  260. package/dist/{researcher-CEcfku-T.d.ts.map → researcher-GU1tV4dn.d.ts.map} +1 -1
  261. package/dist/{reward-CpCmAM8L.d.ts → reward-DrZ71vnf.d.ts} +3 -26
  262. package/dist/reward-DrZ71vnf.d.ts.map +1 -0
  263. package/dist/{reward-hacking-E0d-WVcP.js → reward-hacking-ByuETaIb.js} +3 -3
  264. package/dist/{reward-hacking-E0d-WVcP.js.map → reward-hacking-ByuETaIb.js.map} +1 -1
  265. package/dist/{reward-hacking-RVdZ6Kkt.d.ts → reward-hacking-E52wq86n.d.ts} +5 -18
  266. package/dist/reward-hacking-E52wq86n.d.ts.map +1 -0
  267. package/dist/reward-nw2xZGZG.js.map +1 -1
  268. package/dist/rl.d.ts +117 -295
  269. package/dist/rl.d.ts.map +1 -1
  270. package/dist/rl.js +27 -747
  271. package/dist/rl.js.map +1 -1
  272. package/dist/rollout/index.d.ts +5 -5
  273. package/dist/rollout/index.js +7 -8
  274. package/dist/{rollout-DZV1t2Wg.js → rollout-Dd1ucT_M.js} +88 -13
  275. package/dist/rollout-Dd1ucT_M.js.map +1 -0
  276. package/dist/{rubric-predictive-validity-DaFW70y9.js → rubric-predictive-validity-D3_oI72N.js} +3 -3
  277. package/dist/{rubric-predictive-validity-DaFW70y9.js.map → rubric-predictive-validity-D3_oI72N.js.map} +1 -1
  278. package/dist/{rubric-predictive-validity-C03EC7ZE.d.ts → rubric-predictive-validity-DiwT8PbL.d.ts} +2 -2
  279. package/dist/{rubric-predictive-validity-C03EC7ZE.d.ts.map → rubric-predictive-validity-DiwT8PbL.d.ts.map} +1 -1
  280. package/dist/{run-record-C1E24G2A.d.ts → run-record-CaxbLq6Y.d.ts} +4 -10
  281. package/dist/run-record-CaxbLq6Y.d.ts.map +1 -0
  282. package/dist/{run-record-C5e7FjhJ.js → run-record-CysKLB93.js} +3 -3
  283. package/dist/run-record-CysKLB93.js.map +1 -0
  284. package/dist/{run-record-Boc5IUTp.js → run-record-DhEJgoPz.js} +4 -4
  285. package/dist/{run-record-Boc5IUTp.js.map → run-record-DhEJgoPz.js.map} +1 -1
  286. package/dist/sandbox-harness-BlSOu4LX.d.ts.map +1 -1
  287. package/dist/{schema-CSf6qWgZ.js → schema-Bt2vLFm3.js} +2 -14
  288. package/dist/schema-Bt2vLFm3.js.map +1 -0
  289. package/dist/schema-C-ziyJD7.d.ts.map +1 -1
  290. package/dist/{schema-BuiujZ-g.js → schema-CvhfLjtZ.js} +78 -48
  291. package/dist/schema-CvhfLjtZ.js.map +1 -0
  292. package/dist/{schema-2g7trUwH.d.ts → schema-D6EVKzTB.d.ts} +4 -5
  293. package/dist/schema-D6EVKzTB.d.ts.map +1 -0
  294. package/dist/search/index.d.ts +3 -31
  295. package/dist/search/index.d.ts.map +1 -1
  296. package/dist/search/index.js +4 -4
  297. package/dist/{search-kernel-DyNEa6IU.d.ts → search-kernel-p9JB3SmL.d.ts} +10 -27
  298. package/dist/search-kernel-p9JB3SmL.d.ts.map +1 -0
  299. package/dist/{search-ledger-CVUGLDZp.js → search-ledger-ClpN4I3e.js} +7 -7
  300. package/dist/{search-ledger-CVUGLDZp.js.map → search-ledger-ClpN4I3e.js.map} +1 -1
  301. package/dist/{search-ledger-file-DDQUgvCg.js → search-ledger-file-Bd5Tioq6.js} +4 -4
  302. package/dist/search-ledger-file-Bd5Tioq6.js.map +1 -0
  303. package/dist/{search-shipper-BOSD46qv.js → search-shipper-Bg2HW3Uv.js} +4 -4
  304. package/dist/search-shipper-Bg2HW3Uv.js.map +1 -0
  305. package/dist/{search-summary-BQCSWf1g.js → search-summary-CrBuvVnf.js} +5 -5
  306. package/dist/{search-summary-BQCSWf1g.js.map → search-summary-CrBuvVnf.js.map} +1 -1
  307. package/dist/{sequential-CzK5DarL.js → sequential-BVv1sjsw.js} +2 -32
  308. package/dist/{sequential-CzK5DarL.js.map → sequential-BVv1sjsw.js.map} +1 -1
  309. package/dist/{sequential-Bf_pbE50.js → sequential-CimQrbjv.js} +5 -5
  310. package/dist/sequential-CimQrbjv.js.map +1 -0
  311. package/dist/{sequential-BhsrMupG.d.ts → sequential-KwGspfeR.d.ts} +2 -9
  312. package/dist/{sequential-BhsrMupG.d.ts.map → sequential-KwGspfeR.d.ts.map} +1 -1
  313. package/dist/{sequential-eprocess-DM_qENCl.js → sequential-eprocess-DodI6RoF.js} +2 -2
  314. package/dist/{sequential-eprocess-DM_qENCl.js.map → sequential-eprocess-DodI6RoF.js.map} +1 -1
  315. package/dist/{server-e9oWO_bN.js → server-C6M0qR8h.js} +101 -101
  316. package/dist/server-C6M0qR8h.js.map +1 -0
  317. package/dist/{single-run-lock-CV9Eyd_q.js → single-run-lock-Dekd8_Wv.js} +7 -7
  318. package/dist/single-run-lock-Dekd8_Wv.js.map +1 -0
  319. package/dist/{skillopt-optimization-method-BiwA8nfX.js → skillopt-optimization-method-5dlex7MJ.js} +1386 -1184
  320. package/dist/skillopt-optimization-method-5dlex7MJ.js.map +1 -0
  321. package/dist/{spans-BHAUXMGN.d.ts → spans-CVngGij3.d.ts} +2 -2
  322. package/dist/{spans-BHAUXMGN.d.ts.map → spans-CVngGij3.d.ts.map} +1 -1
  323. package/dist/{statistical-heldout-CYpGaoDH.d.ts → statistical-heldout-BHfLZHrm.d.ts} +8 -67
  324. package/dist/statistical-heldout-BHfLZHrm.d.ts.map +1 -0
  325. package/dist/{statistical-heldout-42NlCNDe.js → statistical-heldout-Bksv92Th.js} +3 -3
  326. package/dist/statistical-heldout-Bksv92Th.js.map +1 -0
  327. package/dist/{steps-Bg5-KVx1.d.ts → steps-DlepJPwD.d.ts} +2 -56
  328. package/dist/steps-DlepJPwD.d.ts.map +1 -0
  329. package/dist/{store-C4avFjIi.d.ts → store-B3nWRy3B.d.ts} +2 -2
  330. package/dist/{store-C4avFjIi.d.ts.map → store-B3nWRy3B.d.ts.map} +1 -1
  331. package/dist/{store-otlp-DJ9dtA5x.js → store-otlp-BteDAbHK.js} +3 -3
  332. package/dist/{store-otlp-DJ9dtA5x.js.map → store-otlp-BteDAbHK.js.map} +1 -1
  333. package/dist/{store-tool-spans-CIX5arAG.js → store-tool-spans-D5l_OfTJ.js} +8 -8
  334. package/dist/store-tool-spans-D5l_OfTJ.js.map +1 -0
  335. package/dist/{store-tool-spans-DdCSPa7C.d.ts → store-tool-spans-DZS0HWVf.d.ts} +9 -18
  336. package/dist/store-tool-spans-DZS0HWVf.d.ts.map +1 -0
  337. package/dist/storyboard/index.d.ts +4 -11
  338. package/dist/storyboard/index.d.ts.map +1 -1
  339. package/dist/storyboard/index.js +1 -16
  340. package/dist/storyboard/index.js.map +1 -1
  341. package/dist/{summary-report-V_JACR4Y.js → summary-report-BsXJoYX5.js} +88 -10
  342. package/dist/summary-report-BsXJoYX5.js.map +1 -0
  343. package/dist/{summary-report-bdFDXq0b.d.ts → summary-report-CkbRcSuu.d.ts} +25 -19
  344. package/dist/summary-report-CkbRcSuu.d.ts.map +1 -0
  345. package/dist/supervisor-run/index.d.ts +60 -28
  346. package/dist/supervisor-run/index.d.ts.map +1 -1
  347. package/dist/supervisor-run/index.js +4 -458
  348. package/dist/supervisor-run/index.js.map +1 -1
  349. package/dist/{systemone-BomhHr2c.d.ts → systemone-BMzDJb1i.d.ts} +5 -5
  350. package/dist/{systemone-BomhHr2c.d.ts.map → systemone-BMzDJb1i.d.ts.map} +1 -1
  351. package/dist/systemone-protocol.js +1 -1
  352. package/dist/{systemone-review-CUVcQJu6.d.ts → systemone-review-CwE6JGIp.d.ts} +2 -2
  353. package/dist/{systemone-review-CUVcQJu6.d.ts.map → systemone-review-CwE6JGIp.d.ts.map} +1 -1
  354. package/dist/{systemone-review-D7sXwsqq.js → systemone-review-DzdOJ8I6.js} +3 -3
  355. package/dist/{systemone-review-D7sXwsqq.js.map → systemone-review-DzdOJ8I6.js.map} +1 -1
  356. package/dist/systemone.d.ts +5 -5
  357. package/dist/systemone.js +5 -5
  358. package/dist/systemone.js.map +1 -1
  359. package/dist/{task-failure-attributes-hEmASjix.js → task-failure-attributes-BMsblaDh.js} +3 -3
  360. package/dist/task-failure-attributes-BMsblaDh.js.map +1 -0
  361. package/dist/{terminal-record-DZyQZ3pz.js → terminal-record-D4Rv-j1W.js} +244 -196
  362. package/dist/terminal-record-D4Rv-j1W.js.map +1 -0
  363. package/dist/{tool-groups-C3NEcdCM.d.ts → tool-groups-DyNz2JZ_.d.ts} +3 -3
  364. package/dist/tool-groups-DyNz2JZ_.d.ts.map +1 -0
  365. package/dist/{tool-waste-BKgvd-TP.d.ts → tool-waste-CkjzWmeY.d.ts} +25 -28
  366. package/dist/tool-waste-CkjzWmeY.d.ts.map +1 -0
  367. package/dist/{tool-waste-BlesqTqW.js → tool-waste-DLsjS_p-.js} +5 -5
  368. package/dist/{tool-waste-BlesqTqW.js.map → tool-waste-DLsjS_p-.js.map} +1 -1
  369. package/dist/{trace-questions-CM2CAocU.d.ts → trace-questions-xxwgsuMi.d.ts} +4 -9
  370. package/dist/{trace-questions-CM2CAocU.d.ts.map → trace-questions-xxwgsuMi.d.ts.map} +1 -1
  371. package/dist/trace-repair/index.d.ts +14 -211
  372. package/dist/trace-repair/index.d.ts.map +1 -1
  373. package/dist/trace-repair/index.js +865 -981
  374. package/dist/trace-repair/index.js.map +1 -1
  375. package/dist/traces.d.ts +18 -46
  376. package/dist/traces.d.ts.map +1 -1
  377. package/dist/traces.js +13 -13
  378. package/dist/traces.js.map +1 -1
  379. package/dist/trajectory-replay/index.d.ts +7 -118
  380. package/dist/trajectory-replay/index.d.ts.map +1 -1
  381. package/dist/trajectory-replay/index.js +921 -869
  382. package/dist/trajectory-replay/index.js.map +1 -1
  383. package/dist/{tree-C1XYeXvy.js → tree-B5e1uAeL.js} +132 -21
  384. package/dist/tree-B5e1uAeL.js.map +1 -0
  385. package/dist/{types-Cbe2fWBa.d.ts → types-BKCzzmit.d.ts} +3 -3
  386. package/dist/{types-Cbe2fWBa.d.ts.map → types-BKCzzmit.d.ts.map} +1 -1
  387. package/dist/{types-B3jzCp0p.js → types-BXgASBCL.js} +2 -2
  388. package/dist/{types-B3jzCp0p.js.map → types-BXgASBCL.js.map} +1 -1
  389. package/dist/{types-C1tnkEgM.d.ts → types-CW8ewATZ.d.ts} +4 -113
  390. package/dist/types-CW8ewATZ.d.ts.map +1 -0
  391. package/dist/{types-BqkVmHfv.d.ts → types-CmXY0PQf.d.ts} +2 -4
  392. package/dist/types-CmXY0PQf.d.ts.map +1 -0
  393. package/dist/{types-C02qtnG8.d.ts → types-D-mgRzlh.d.ts} +7 -28
  394. package/dist/types-D-mgRzlh.d.ts.map +1 -0
  395. package/dist/{types-IXD2HJzu.js → types-DqFMNTgK.js} +2 -4
  396. package/dist/types-DqFMNTgK.js.map +1 -0
  397. package/dist/{types-Cq8mSbq8.d.ts → types-DtkO1G9L.d.ts} +7 -9
  398. package/dist/{types-Cq8mSbq8.d.ts.map → types-DtkO1G9L.d.ts.map} +1 -1
  399. package/dist/{verdict-Dl0tiT1X.js → verdict-BGQmxQ8A.js} +3 -3
  400. package/dist/verdict-BGQmxQ8A.js.map +1 -0
  401. package/dist/{verdict-E4eRNf7-.d.ts → verdict-C24NELtN.d.ts} +2 -15
  402. package/dist/{verdict-E4eRNf7-.d.ts.map → verdict-C24NELtN.d.ts.map} +1 -1
  403. package/dist/{verdict-cache-Bm8EKL2s.js → verdict-cache-CL_7tePD.js} +2 -2
  404. package/dist/verdict-cache-CL_7tePD.js.map +1 -0
  405. package/dist/wire/index.d.ts +31 -410
  406. package/dist/wire/index.d.ts.map +1 -1
  407. package/dist/wire/index.js +2 -2
  408. package/docs/changes/jev-evidence-review.md +1 -1
  409. package/docs/changes/jev-product-adoption.md +1 -1
  410. package/docs/changes/jev-recorded-evidence.md +1 -1
  411. package/docs/design/statistics-decisions.md +18 -18
  412. package/docs/design.md +1 -1
  413. package/docs/eval-surface-map.md +1 -0
  414. package/docs/evaluation-integrity.md +1 -1
  415. package/docs/profile-json-identity.md +1 -2
  416. package/docs/proofs/campaign-attempt-retention-20261001/README.md +2 -2
  417. package/docs/public-api.md +158 -538
  418. package/docs/rollout.md +1 -1
  419. package/docs/trace-repair-admission.md +1 -1
  420. package/docs/wire-protocol.md +1 -1
  421. package/package.json +7 -2
  422. package/dist/active-curriculum-B_Lc9kfO.js +0 -61
  423. package/dist/active-curriculum-B_Lc9kfO.js.map +0 -1
  424. package/dist/agent-profile-VFcQncbW.d.ts.map +0 -1
  425. package/dist/agent-profile-cell-BK8mlqlq.js.map +0 -1
  426. package/dist/agent-profile-cell-BNp-Js9F.d.ts.map +0 -1
  427. package/dist/agreement-irr-BEWLIF3_.js.map +0 -1
  428. package/dist/analyze-runs-C84irm4i.js.map +0 -1
  429. package/dist/baseline-Udi_PLuT.js +0 -259
  430. package/dist/baseline-Udi_PLuT.js.map +0 -1
  431. package/dist/benchmark-CXmVVHH2.js +0 -562
  432. package/dist/benchmark-CXmVVHH2.js.map +0 -1
  433. package/dist/benchmark-command-By0vh8q7.js.map +0 -1
  434. package/dist/campaign-BudZ70zo.js.map +0 -1
  435. package/dist/chat-json-call-puMArmtW.js.map +0 -1
  436. package/dist/claude-jsonl-dZir12m6.js +0 -86
  437. package/dist/claude-jsonl-dZir12m6.js.map +0 -1
  438. package/dist/client-BzL9niqi.d.ts.map +0 -1
  439. package/dist/cost-ledger-BP8V4kUQ.js.map +0 -1
  440. package/dist/counterfactual-CPaWN99-.d.ts +0 -60
  441. package/dist/counterfactual-CPaWN99-.d.ts.map +0 -1
  442. package/dist/counterfactual-Dn3veueY.js +0 -98
  443. package/dist/counterfactual-Dn3veueY.js.map +0 -1
  444. package/dist/default-registry-COhk9g36.js.map +0 -1
  445. package/dist/default-registry-DzHiGruW.d.ts.map +0 -1
  446. package/dist/define-agent-eval-CNTPzIkp.js.map +0 -1
  447. package/dist/define-agent-eval-WSck0CZJ.d.ts.map +0 -1
  448. package/dist/dspy-rlm-engine-LRCu61m5.js.map +0 -1
  449. package/dist/effect-sizes-BhzEpXMc.js +0 -82
  450. package/dist/effect-sizes-BhzEpXMc.js.map +0 -1
  451. package/dist/emitter-HcCmFQl_.d.ts.map +0 -1
  452. package/dist/engine-3A_4jOlI.d.ts.map +0 -1
  453. package/dist/equal-terms-BtdXayCJ.js.map +0 -1
  454. package/dist/eval-campaign-90jeaCAI.js +0 -343
  455. package/dist/eval-campaign-90jeaCAI.js.map +0 -1
  456. package/dist/evaluation-6Yoi74gM.d.ts.map +0 -1
  457. package/dist/exporters-X4xwla8A.js.map +0 -1
  458. package/dist/external-optimizer-process-BjMGUuds.js.map +0 -1
  459. package/dist/external-optimizer-subprocess-BqW0hHcI.js.map +0 -1
  460. package/dist/failure-cluster-CbgEDcFJ.d.ts.map +0 -1
  461. package/dist/feedback-trajectory-C4EG0nNH.d.ts.map +0 -1
  462. package/dist/hf-dataset-BR2yhuNn.js.map +0 -1
  463. package/dist/index-BFRO6chs.d.ts.map +0 -1
  464. package/dist/index-BO41eGj5.d.ts.map +0 -1
  465. package/dist/index-CyszSg4O.d.ts.map +0 -1
  466. package/dist/index-DHKEAv3s.d.ts.map +0 -1
  467. package/dist/index-DPcngtwt.d.ts.map +0 -1
  468. package/dist/integrity-dLiDe2kD.js.map +0 -1
  469. package/dist/journal-DfRz9kps.js.map +0 -1
  470. package/dist/judge-gate-CE7CQAgt.d.ts.map +0 -1
  471. package/dist/kind-factory-BobI5Jy3.js.map +0 -1
  472. package/dist/ledger-core-Gq7yp8lP.js.map +0 -1
  473. package/dist/llm-client-CyBAoYiX.js.map +0 -1
  474. package/dist/llm-judge-CG12SQJq.js.map +0 -1
  475. package/dist/matrix-DSrSxjjy.d.ts.map +0 -1
  476. package/dist/matrix-Dm0BQW7U.js.map +0 -1
  477. package/dist/mean-DHoMiudD.js.map +0 -1
  478. package/dist/normal-DsJZtrJc.js +0 -25
  479. package/dist/normal-DsJZtrJc.js.map +0 -1
  480. package/dist/paired-arms-CwMGJsrS.js.map +0 -1
  481. package/dist/paired-binary-CvpFHfKZ.js.map +0 -1
  482. package/dist/paired-promotion-decision-DPKz8ZnF.d.ts.map +0 -1
  483. package/dist/pareto-Cm6ndrWN.js.map +0 -1
  484. package/dist/prime-protocol-CHKgA3a6.js.map +0 -1
  485. package/dist/prime-protocol-HiB9HX7E.d.ts.map +0 -1
  486. package/dist/produced-state-BsDmnwxc.js.map +0 -1
  487. package/dist/proposal-findings-CY1xKn_a.js.map +0 -1
  488. package/dist/query-BUCZCK7F.js.map +0 -1
  489. package/dist/redact-mtCCcT8z.d.ts.map +0 -1
  490. package/dist/release-confidence-CpuP65S5.js.map +0 -1
  491. package/dist/report-command-SC9nqb4M.js.map +0 -1
  492. package/dist/reward-CpCmAM8L.d.ts.map +0 -1
  493. package/dist/reward-hacking-RVdZ6Kkt.d.ts.map +0 -1
  494. package/dist/rollout-DZV1t2Wg.js.map +0 -1
  495. package/dist/run-record-C1E24G2A.d.ts.map +0 -1
  496. package/dist/run-record-C5e7FjhJ.js.map +0 -1
  497. package/dist/schema-2g7trUwH.d.ts.map +0 -1
  498. package/dist/schema-BuiujZ-g.js.map +0 -1
  499. package/dist/schema-CSf6qWgZ.js.map +0 -1
  500. package/dist/search-kernel-DyNEa6IU.d.ts.map +0 -1
  501. package/dist/search-ledger-file-DDQUgvCg.js.map +0 -1
  502. package/dist/search-shipper-BOSD46qv.js.map +0 -1
  503. package/dist/semantic-concept-judge-BQF8te0T.js.map +0 -1
  504. package/dist/sequential-Bf_pbE50.js.map +0 -1
  505. package/dist/server-e9oWO_bN.js.map +0 -1
  506. package/dist/single-run-lock-CV9Eyd_q.js.map +0 -1
  507. package/dist/skillopt-optimization-method-BiwA8nfX.js.map +0 -1
  508. package/dist/statistical-heldout-42NlCNDe.js.map +0 -1
  509. package/dist/statistical-heldout-CYpGaoDH.d.ts.map +0 -1
  510. package/dist/steps-Bg5-KVx1.d.ts.map +0 -1
  511. package/dist/store-tool-spans-CIX5arAG.js.map +0 -1
  512. package/dist/store-tool-spans-DdCSPa7C.d.ts.map +0 -1
  513. package/dist/student-t-DVPW7CdL.js +0 -39
  514. package/dist/student-t-DVPW7CdL.js.map +0 -1
  515. package/dist/summary-report-V_JACR4Y.js.map +0 -1
  516. package/dist/summary-report-bdFDXq0b.d.ts.map +0 -1
  517. package/dist/task-failure-attributes-hEmASjix.js.map +0 -1
  518. package/dist/terminal-record-DZyQZ3pz.js.map +0 -1
  519. package/dist/tool-groups-C3NEcdCM.d.ts.map +0 -1
  520. package/dist/tool-waste-BKgvd-TP.d.ts.map +0 -1
  521. package/dist/trajectory-Y1fmdlw7.d.ts +0 -24
  522. package/dist/trajectory-Y1fmdlw7.d.ts.map +0 -1
  523. package/dist/tree-C1XYeXvy.js.map +0 -1
  524. package/dist/types-BqkVmHfv.d.ts.map +0 -1
  525. package/dist/types-C02qtnG8.d.ts.map +0 -1
  526. package/dist/types-C1tnkEgM.d.ts.map +0 -1
  527. package/dist/types-IXD2HJzu.js.map +0 -1
  528. package/dist/usage-receipt-Cx3xNeyB.js +0 -76
  529. package/dist/usage-receipt-Cx3xNeyB.js.map +0 -1
  530. package/dist/verdict-Dl0tiT1X.js.map +0 -1
  531. package/dist/verdict-cache-Bm8EKL2s.js.map +0 -1
  532. package/docs/design/self-improvement-evidence-audit.md +0 -263
@@ -1,110 +1,8 @@
1
- import { t as AgentEvalError } from "./errors-DVZiqS7K.js";
2
- import { c as costForTokenPricing } from "./cost-ledger-BP8V4kUQ.js";
1
+ import { t as AgentEvalError } from "./errors-BcOs5MKW.js";
2
+ import { c as costForTokenPricing } from "./cost-ledger-D0352Z4d.js";
3
+ import { a as LlmCallError, o as LlmResponseError, r as parseJsonResult } from "./json-BhdsJaOQ.js";
4
+ import { a as providerFromBaseUrl, i as defaultProviderRedactor } from "./raw-provider-sink-75w4FWBj.js";
3
5
  import { t as newRecordId } from "./record-id-DUgsK5qp.js";
4
- import { a as providerFromBaseUrl, i as defaultProviderRedactor } from "./raw-provider-sink-DoHz4JNG.js";
5
- //#region src/llm-client/errors.ts
6
- var LlmCallError = class extends AgentEvalError {
7
- status;
8
- body;
9
- model;
10
- constructor(message, status, body, model) {
11
- super("judge", message);
12
- this.status = status;
13
- this.body = body;
14
- this.model = model;
15
- }
16
- };
17
- /** A provider response completed and incurred measurable usage, but its content
18
- * could not satisfy the caller's response contract. The response envelope is
19
- * retained so accounting can commit the receipt before the error propagates. */
20
- var LlmResponseError = class extends AgentEvalError {
21
- result;
22
- constructor(message, result, options) {
23
- super("judge", message, options);
24
- this.result = result;
25
- }
26
- };
27
- //#endregion
28
- //#region src/llm-client/json.ts
29
- /**
30
- * Strip a ```json / ``` code fence if the model emitted one.
31
- * Idempotent for naked JSON. Some models (claude-code via router, certain
32
- * deepseek models) wrap output even under json_object.
33
- */
34
- function stripFencedJson(raw) {
35
- const trimmed = raw.trim();
36
- const m = trimmed.match(/^```(?:json)?\s*\n?([\s\S]*?)\n?```\s*$/);
37
- return m ? m[1].trim() : trimmed;
38
- }
39
- function extractJsonPayload(raw) {
40
- const stripped = stripFencedJson(raw);
41
- try {
42
- JSON.parse(stripped);
43
- return stripped;
44
- } catch {
45
- if (stripped.startsWith("{") || stripped.startsWith("[")) return stripped;
46
- }
47
- const starts = [...stripped.matchAll(/[[{]/g)].map((match) => match.index).filter((index) => index != null);
48
- for (const start of starts) {
49
- const candidate = extractBalancedJson(stripped, start);
50
- if (!candidate) continue;
51
- try {
52
- JSON.parse(candidate);
53
- return candidate;
54
- } catch {}
55
- }
56
- return stripped;
57
- }
58
- function extractBalancedJson(input, start) {
59
- const opener = input[start];
60
- const closer = opener === "{" ? "}" : opener === "[" ? "]" : null;
61
- if (!closer) return null;
62
- const stack = [closer];
63
- let isInString = false;
64
- let isEscaped = false;
65
- for (let i = start + 1; i < input.length; i++) {
66
- const char = input[i];
67
- if (isEscaped) {
68
- isEscaped = false;
69
- continue;
70
- }
71
- if (char === "\\") {
72
- isEscaped = isInString;
73
- continue;
74
- }
75
- if (char === "\"") {
76
- isInString = !isInString;
77
- continue;
78
- }
79
- if (isInString) continue;
80
- if (char === "{") stack.push("}");
81
- else if (char === "[") stack.push("]");
82
- else if (char === stack[stack.length - 1]) {
83
- stack.pop();
84
- if (stack.length === 0) return input.slice(start, i + 1);
85
- }
86
- }
87
- return null;
88
- }
89
- function parseJsonResult(result, jsonPayloadMode) {
90
- try {
91
- if (result.finishReason === "length") throw new Error(`LLM returned truncated JSON content (model=${result.model}, finishReason=length)`);
92
- return parseJsonSafely(result.content, result.model, jsonPayloadMode);
93
- } catch (error) {
94
- if (error instanceof LlmResponseError) throw error;
95
- const cause = error instanceof Error ? error : new Error(String(error));
96
- throw new LlmResponseError(cause.message, result, { cause });
97
- }
98
- }
99
- function parseJsonSafely(content, model, jsonPayloadMode) {
100
- const payload = jsonPayloadMode === "exact" ? content : extractJsonPayload(content);
101
- try {
102
- return JSON.parse(payload);
103
- } catch {
104
- throw new Error(`LLM returned non-JSON content (model=${model})`);
105
- }
106
- }
107
- //#endregion
108
6
  //#region src/abort-signal.ts
109
7
  /** Combine active cancellation sources without wrapping a single source. */
110
8
  function combineAbortSignals(...signals) {
@@ -690,269 +588,259 @@ function costReceiptFromLlmError(error, customTokenPricing) {
690
588
  async function callLlm(req, opts = {}) {
691
589
  return callLlmAttempts(req, opts, false);
692
590
  }
693
- /** One retry owner for raw and structured calls. Fallback changes the next
694
- * request, not the attempt allowance, deadline origin, or raw-event sequence. */
695
- async function callLlmAttempts(req, opts, allowSchemaFallback) {
591
+ const ENDPOINT = "/chat/completions";
592
+ function startAttemptRun(req, opts, allowSchemaFallback) {
696
593
  if (!opts.baseUrl) throw new Error("callLlm: opts.baseUrl is required");
697
594
  const baseUrl = opts.baseUrl.replace(/\/+$/, "");
698
- const url = `${baseUrl}/chat/completions`;
699
- const endpoint = "/chat/completions";
700
- const timeoutMs = req.timeoutMs ?? opts.defaultTimeoutMs ?? DEFAULT_TIMEOUT_MS;
701
- const maximumAttempts = resolveMaximumAttempts(opts.maximumAttempts);
702
- const minIntervalMs = resolveMinIntervalMs(opts.minIntervalMs);
703
- const pacing = pacingStateFor(opts);
704
- const fetchFn = opts.fetch ?? globalThis.fetch;
705
- const headers = buildHeaders(opts);
706
- const provider = opts.provider ?? providerFromBaseUrl(baseUrl);
707
- const sink = opts.rawSink;
708
- const redactor = opts.redactor ?? defaultProviderRedactor;
709
- const traceContext = opts.traceContext;
710
- const callerSignal = opts.signal;
711
595
  const deadlineMs = opts.deadlineMs;
712
596
  const deadlineStart = Date.now();
597
+ const remainingMs = () => deadlineMs === void 0 ? Infinity : Math.max(0, deadlineMs - (Date.now() - deadlineStart));
598
+ const run = {
599
+ req,
600
+ opts,
601
+ allowSchemaFallback,
602
+ baseUrl,
603
+ url: `${baseUrl}${ENDPOINT}`,
604
+ timeoutMs: req.timeoutMs ?? opts.defaultTimeoutMs ?? DEFAULT_TIMEOUT_MS,
605
+ maximumAttempts: resolveMaximumAttempts(opts.maximumAttempts),
606
+ minIntervalMs: resolveMinIntervalMs(opts.minIntervalMs),
607
+ pacing: pacingStateFor(opts),
608
+ headers: buildHeaders(opts),
609
+ provider: opts.provider ?? providerFromBaseUrl(baseUrl),
610
+ deadlineStart,
611
+ remainingMs,
612
+ retryDelay: (ms) => sleep(Math.min(ms, remainingMs()), opts.signal),
613
+ effectiveRequest: req,
614
+ lastErr: void 0
615
+ };
713
616
  if (opts.customTokenPricing) costForTokenPricing(opts.customTokenPricing, {
714
617
  inputTokens: 0,
715
618
  outputTokens: 0
716
619
  });
717
- let lastErr;
718
- let effectiveRequest = req;
719
- const remainingMs = () => deadlineMs === void 0 ? Infinity : Math.max(0, deadlineMs - (Date.now() - deadlineStart));
720
- const retryDelay = (ms) => sleep(Math.min(ms, remainingMs()), callerSignal);
721
- for (let attempt = 0; attempt < maximumAttempts; attempt++) {
722
- if (callerSignal?.aborted) throw new DOMException("callLlm aborted by caller signal", "AbortError");
723
- if (deadlineExceeded(deadlineStart, deadlineMs)) throw lastErr instanceof Error ? lastErr : new DOMException("callLlm deadline exceeded", "TimeoutError");
724
- const requestBody = buildBody(effectiveRequest, opts.jsonSchemaTransport === "json-object", opts.thinking);
725
- const controller = new AbortController();
726
- const attemptSignal = combineAbortSignals(controller.signal, callerSignal);
727
- let timeoutHandle;
728
- let started = Date.now();
729
- let dispatched = false;
730
- let attemptErrorRecorded = false;
731
- try {
732
- if (minIntervalMs > 0) {
733
- while (true) {
734
- callerSignal?.throwIfAborted();
735
- if (deadlineExceeded(deadlineStart, deadlineMs)) throw lastErr instanceof Error ? lastErr : new DOMException("callLlm deadline exceeded", "TimeoutError");
736
- const waitMs = pacing.lastStartedAt === void 0 ? 0 : pacing.lastStartedAt + minIntervalMs - Date.now();
737
- if (waitMs <= 0) break;
738
- await retryDelay(waitMs);
739
- }
740
- started = Date.now();
741
- }
620
+ return run;
621
+ }
622
+ function deadlineError(run) {
623
+ return run.lastErr instanceof Error ? run.lastErr : new DOMException("callLlm deadline exceeded", "TimeoutError");
624
+ }
625
+ /** Write one raw provider event for this attempt. Does nothing without a sink. */
626
+ async function recordAttemptEvent(run, attempt, fields) {
627
+ const { opts } = run;
628
+ if (!opts.rawSink) return;
629
+ await recordRaw(opts.rawSink, opts.redactor ?? defaultProviderRedactor, {
630
+ eventId: newRecordId(),
631
+ runId: opts.traceContext?.runId,
632
+ spanId: opts.traceContext?.spanId,
633
+ provider: run.provider,
634
+ model: run.req.model,
635
+ endpoint: ENDPOINT,
636
+ baseUrl: run.baseUrl,
637
+ attemptIndex: attempt,
638
+ ...fields,
639
+ redactedFields: []
640
+ });
641
+ }
642
+ /**
643
+ * Wait for this client's pacing slot, and claim it. Every wake rechecks, so concurrent waiters
644
+ * cannot dispatch a catch-up burst; the claim is made in the same synchronous step that finds the
645
+ * slot free, so no other waiter can slip in between the check and the claim.
646
+ */
647
+ async function awaitPacingSlot(run) {
648
+ const { opts, pacing, minIntervalMs } = run;
649
+ while (true) {
650
+ opts.signal?.throwIfAborted();
651
+ if (deadlineExceeded(run.deadlineStart, opts.deadlineMs)) throw deadlineError(run);
652
+ const waitMs = pacing.lastStartedAt === void 0 ? 0 : pacing.lastStartedAt + minIntervalMs - Date.now();
653
+ if (waitMs <= 0) {
654
+ const started = Date.now();
742
655
  pacing.lastStartedAt = started;
743
- dispatched = true;
744
- timeoutHandle = setTimeout(() => controller.abort(), Math.min(timeoutMs, remainingMs()));
745
- if (sink) await recordRaw(sink, redactor, {
746
- eventId: newRecordId(),
747
- runId: traceContext?.runId,
748
- spanId: traceContext?.spanId,
749
- provider,
750
- model: req.model,
751
- endpoint,
752
- baseUrl,
753
- attemptIndex: attempt,
754
- direction: "request",
755
- timestamp: started,
756
- requestHeaders: headers,
757
- requestBody,
758
- redactedFields: []
759
- });
760
- attemptSignal.throwIfAborted();
761
- const res = await fetchFn(url, {
762
- method: "POST",
763
- headers,
764
- body: JSON.stringify(requestBody),
765
- signal: attemptSignal
766
- });
767
- const responseHeaders = sink ? headersToObject(res.headers) : void 0;
768
- const text = await res.text();
769
- attemptSignal.throwIfAborted();
770
- clearTimeout(timeoutHandle);
771
- if (!res.ok) {
772
- const body = text;
773
- if (sink) {
774
- await recordRaw(sink, redactor, {
775
- eventId: newRecordId(),
776
- runId: traceContext?.runId,
777
- spanId: traceContext?.spanId,
778
- provider,
779
- model: req.model,
780
- endpoint,
781
- baseUrl,
782
- attemptIndex: attempt,
783
- direction: "error",
784
- timestamp: Date.now(),
785
- durationMs: Date.now() - started,
786
- statusCode: res.status,
787
- responseHeaders,
788
- responseBody: body,
789
- errorMessage: `HTTP ${res.status}`,
790
- redactedFields: []
791
- });
792
- attemptErrorRecorded = true;
793
- }
794
- const err = new LlmCallError(`LLM call failed with HTTP ${res.status}`, res.status, body, req.model);
795
- if (isTemperatureOneRejection(res.status, body) && effectiveRequest.temperature !== 1 && attempt < maximumAttempts - 1 && !deadlineExceeded(deadlineStart, deadlineMs)) {
796
- lastErr = err;
797
- effectiveRequest = {
798
- ...effectiveRequest,
799
- temperature: 1
800
- };
801
- continue;
802
- }
803
- if (allowSchemaFallback && opts.jsonSchemaTransport !== "json-object" && effectiveRequest.jsonSchema && isSchemaRejection(res.status, body) && attempt < maximumAttempts - 1 && !deadlineExceeded(deadlineStart, deadlineMs)) {
804
- lastErr = err;
805
- effectiveRequest = {
806
- ...effectiveRequest,
807
- jsonMode: true,
808
- jsonSchema: void 0
809
- };
810
- continue;
811
- }
812
- if (RETRYABLE_STATUS.has(res.status) && attempt < maximumAttempts - 1 && !deadlineExceeded(deadlineStart, deadlineMs)) {
813
- lastErr = err;
814
- const wait = parseRetryAfter(res.headers) ?? backoffMs(attempt);
815
- if (wait >= remainingMs()) {
816
- callerSignal?.throwIfAborted();
817
- break;
818
- }
819
- await retryDelay(wait);
820
- continue;
821
- }
822
- throw err;
823
- }
824
- let json;
825
- try {
826
- json = JSON.parse(text);
827
- } catch (parseErr) {
828
- if (sink) {
829
- await recordRaw(sink, redactor, {
830
- eventId: newRecordId(),
831
- runId: traceContext?.runId,
832
- spanId: traceContext?.spanId,
833
- provider,
834
- model: req.model,
835
- endpoint,
836
- baseUrl,
837
- attemptIndex: attempt,
838
- direction: "error",
839
- timestamp: Date.now(),
840
- durationMs: Date.now() - started,
841
- statusCode: res.status,
842
- responseHeaders,
843
- responseBody: text,
844
- errorMessage: `non-JSON response: ${parseErr instanceof Error ? parseErr.message : String(parseErr)}`,
845
- redactedFields: []
846
- });
847
- attemptErrorRecorded = true;
848
- }
849
- throw parseErr;
850
- }
851
- if (sink) await recordRaw(sink, redactor, {
852
- eventId: newRecordId(),
853
- runId: traceContext?.runId,
854
- spanId: traceContext?.spanId,
855
- provider,
856
- model: req.model,
857
- endpoint,
858
- baseUrl,
859
- attemptIndex: attempt,
860
- direction: "response",
656
+ return started;
657
+ }
658
+ await run.retryDelay(waitMs);
659
+ }
660
+ }
661
+ /** Answer a non-2xx response: retry with an adjusted request or after a wait, give up, or throw its error. */
662
+ async function handleHttpFailure(run, attempt, res, body, responseHeaders, started, state) {
663
+ const { req, opts, maximumAttempts, deadlineStart } = run;
664
+ await recordAttemptEvent(run, attempt, {
665
+ direction: "error",
666
+ timestamp: Date.now(),
667
+ durationMs: Date.now() - started,
668
+ statusCode: res.status,
669
+ responseHeaders,
670
+ responseBody: body,
671
+ errorMessage: `HTTP ${res.status}`
672
+ });
673
+ if (opts.rawSink) state.errorRecorded = true;
674
+ const err = new LlmCallError(`LLM call failed with HTTP ${res.status}`, res.status, body, req.model);
675
+ const canRetry = attempt < maximumAttempts - 1 && !deadlineExceeded(deadlineStart, opts.deadlineMs);
676
+ if (isTemperatureOneRejection(res.status, body) && run.effectiveRequest.temperature !== 1 && canRetry) {
677
+ run.lastErr = err;
678
+ run.effectiveRequest = {
679
+ ...run.effectiveRequest,
680
+ temperature: 1
681
+ };
682
+ return { kind: "retry" };
683
+ }
684
+ if (run.allowSchemaFallback && opts.jsonSchemaTransport !== "json-object" && run.effectiveRequest.jsonSchema && isSchemaRejection(res.status, body) && canRetry) {
685
+ run.lastErr = err;
686
+ run.effectiveRequest = {
687
+ ...run.effectiveRequest,
688
+ jsonMode: true,
689
+ jsonSchema: void 0
690
+ };
691
+ return { kind: "retry" };
692
+ }
693
+ if (RETRYABLE_STATUS.has(res.status) && canRetry) {
694
+ run.lastErr = err;
695
+ const wait = parseRetryAfter(res.headers) ?? backoffMs(attempt);
696
+ if (wait >= run.remainingMs()) {
697
+ opts.signal?.throwIfAborted();
698
+ return { kind: "exhausted" };
699
+ }
700
+ await run.retryDelay(wait);
701
+ return { kind: "retry" };
702
+ }
703
+ throw err;
704
+ }
705
+ /** Turn a parsed completion into the call result: content, tool calls, usage with its completeness, and cost. */
706
+ function parseCompletion(run, json, started) {
707
+ const { req, opts } = run;
708
+ const choice = json.choices?.[0];
709
+ const toolCalls = parseWireToolCalls(choice?.message?.tool_calls, req.model);
710
+ const usageRaw = json.usage && typeof json.usage === "object" && !Array.isArray(json.usage) ? json.usage : void 0;
711
+ const promptTokens = providerTokenCount(usageRaw?.prompt_tokens);
712
+ const completionTokens = providerTokenCount(usageRaw?.completion_tokens);
713
+ const totalTokens = providerTokenCount(usageRaw?.total_tokens);
714
+ const reasoningRaw = (usageRaw?.completion_tokens_details && typeof usageRaw.completion_tokens_details === "object" && !Array.isArray(usageRaw.completion_tokens_details) ? usageRaw.completion_tokens_details : void 0)?.reasoning_tokens;
715
+ const reasoningTokens = reasoningRaw === void 0 ? void 0 : providerTokenCount(reasoningRaw);
716
+ const cachedRaw = usageRaw?.prompt_tokens_details && typeof usageRaw.prompt_tokens_details === "object" && !Array.isArray(usageRaw.prompt_tokens_details) ? usageRaw.prompt_tokens_details.cached_tokens : void 0;
717
+ const cachedPromptTokens = cachedRaw === void 0 ? void 0 : providerTokenCount(cachedRaw);
718
+ const usageCaptured = promptTokens !== void 0 && completionTokens !== void 0 && (reasoningRaw === void 0 || reasoningTokens !== void 0 && reasoningTokens <= completionTokens) && (cachedRaw === void 0 || cachedPromptTokens !== void 0 && cachedPromptTokens <= promptTokens) && (totalTokens === void 0 || totalTokens === promptTokens + completionTokens);
719
+ const costFromProxy = providerReportedCost(json);
720
+ const content = choice?.message?.content ?? "";
721
+ const configuredCost = typeof costFromProxy !== "number" && usageCaptured && opts.customTokenPricing ? costForTokenPricing(opts.customTokenPricing, {
722
+ inputTokens: promptTokens - (cachedPromptTokens ?? 0),
723
+ ...cachedPromptTokens ? { cachedTokens: cachedPromptTokens } : {},
724
+ outputTokens: completionTokens
725
+ }) : void 0;
726
+ const servedModel = typeof json.model === "string" && json.model.trim() !== "" ? json.model : null;
727
+ if (opts.assertServedModel) assertServedModel(req.model, servedModel, opts.assertServedModel === true ? {} : opts.assertServedModel);
728
+ return {
729
+ content,
730
+ ...toolCalls === void 0 ? {} : { toolCalls },
731
+ ...req.logprobs === void 0 ? {} : { logprobs: parseWireLogprobs(choice?.logprobs?.content, req.model) },
732
+ finishReason: choice?.finish_reason ?? null,
733
+ contentEmpty: content.trim().length === 0,
734
+ usage: {
735
+ promptTokens: promptTokens ?? 0,
736
+ completionTokens: completionTokens ?? 0,
737
+ totalTokens: totalTokens ?? (promptTokens ?? 0) + (completionTokens ?? 0),
738
+ captured: usageCaptured,
739
+ reasoningTokens,
740
+ cachedPromptTokens
741
+ },
742
+ costUsd: typeof costFromProxy === "number" ? costFromProxy : configuredCost ?? null,
743
+ model: servedModel ?? req.model,
744
+ servedModel,
745
+ durationMs: Date.now() - started,
746
+ raw: json
747
+ };
748
+ }
749
+ /** One attempt: pace, dispatch, read the answer. A failure either becomes a retry outcome or is thrown. */
750
+ async function runAttempt(run, attempt) {
751
+ const { opts } = run;
752
+ const callerSignal = opts.signal;
753
+ if (callerSignal?.aborted) throw new DOMException("callLlm aborted by caller signal", "AbortError");
754
+ if (deadlineExceeded(run.deadlineStart, opts.deadlineMs)) throw deadlineError(run);
755
+ const requestBody = buildBody(run.effectiveRequest, opts.jsonSchemaTransport === "json-object", opts.thinking);
756
+ const controller = new AbortController();
757
+ const attemptSignal = combineAbortSignals(controller.signal, callerSignal);
758
+ let timeoutHandle;
759
+ let started = Date.now();
760
+ const state = {
761
+ dispatched: false,
762
+ errorRecorded: false
763
+ };
764
+ try {
765
+ if (run.minIntervalMs > 0) started = await awaitPacingSlot(run);
766
+ else run.pacing.lastStartedAt = started;
767
+ state.dispatched = true;
768
+ timeoutHandle = setTimeout(() => controller.abort(), Math.min(run.timeoutMs, run.remainingMs()));
769
+ await recordAttemptEvent(run, attempt, {
770
+ direction: "request",
771
+ timestamp: started,
772
+ requestHeaders: run.headers,
773
+ requestBody
774
+ });
775
+ attemptSignal.throwIfAborted();
776
+ const res = await (opts.fetch ?? globalThis.fetch)(run.url, {
777
+ method: "POST",
778
+ headers: run.headers,
779
+ body: JSON.stringify(requestBody),
780
+ signal: attemptSignal
781
+ });
782
+ const responseHeaders = opts.rawSink ? headersToObject(res.headers) : void 0;
783
+ const text = await res.text();
784
+ attemptSignal.throwIfAborted();
785
+ clearTimeout(timeoutHandle);
786
+ if (!res.ok) return await handleHttpFailure(run, attempt, res, text, responseHeaders, started, state);
787
+ let json;
788
+ try {
789
+ json = JSON.parse(text);
790
+ } catch (parseErr) {
791
+ await recordAttemptEvent(run, attempt, {
792
+ direction: "error",
861
793
  timestamp: Date.now(),
862
794
  durationMs: Date.now() - started,
863
795
  statusCode: res.status,
864
796
  responseHeaders,
865
- responseBody: json,
866
- redactedFields: []
867
- });
868
- const choice = json.choices?.[0];
869
- const toolCalls = parseWireToolCalls(choice?.message?.tool_calls, req.model);
870
- const usageRaw = json.usage && typeof json.usage === "object" && !Array.isArray(json.usage) ? json.usage : void 0;
871
- const promptTokens = providerTokenCount(usageRaw?.prompt_tokens);
872
- const completionTokens = providerTokenCount(usageRaw?.completion_tokens);
873
- const totalTokens = providerTokenCount(usageRaw?.total_tokens);
874
- const reasoningRaw = (usageRaw?.completion_tokens_details && typeof usageRaw.completion_tokens_details === "object" && !Array.isArray(usageRaw.completion_tokens_details) ? usageRaw.completion_tokens_details : void 0)?.reasoning_tokens;
875
- const reasoningTokens = reasoningRaw === void 0 ? void 0 : providerTokenCount(reasoningRaw);
876
- const cachedRaw = usageRaw?.prompt_tokens_details && typeof usageRaw.prompt_tokens_details === "object" && !Array.isArray(usageRaw.prompt_tokens_details) ? usageRaw.prompt_tokens_details.cached_tokens : void 0;
877
- const cachedPromptTokens = cachedRaw === void 0 ? void 0 : providerTokenCount(cachedRaw);
878
- const usageCaptured = promptTokens !== void 0 && completionTokens !== void 0 && (reasoningRaw === void 0 || reasoningTokens !== void 0 && reasoningTokens <= completionTokens) && (cachedRaw === void 0 || cachedPromptTokens !== void 0 && cachedPromptTokens <= promptTokens) && (totalTokens === void 0 || totalTokens === promptTokens + completionTokens);
879
- const costFromProxy = providerReportedCost(json);
880
- const content = choice?.message?.content ?? "";
881
- const configuredCost = typeof costFromProxy !== "number" && usageCaptured && opts.customTokenPricing ? costForTokenPricing(opts.customTokenPricing, {
882
- inputTokens: promptTokens - (cachedPromptTokens ?? 0),
883
- ...cachedPromptTokens ? { cachedTokens: cachedPromptTokens } : {},
884
- outputTokens: completionTokens
885
- }) : void 0;
886
- const servedModel = typeof json.model === "string" && json.model.trim() !== "" ? json.model : null;
887
- if (opts.assertServedModel) assertServedModel(req.model, servedModel, opts.assertServedModel === true ? {} : opts.assertServedModel);
888
- return {
889
- content,
890
- ...toolCalls === void 0 ? {} : { toolCalls },
891
- ...req.logprobs === void 0 ? {} : { logprobs: parseWireLogprobs(choice?.logprobs?.content, req.model) },
892
- finishReason: choice?.finish_reason ?? null,
893
- contentEmpty: content.trim().length === 0,
894
- usage: {
895
- promptTokens: promptTokens ?? 0,
896
- completionTokens: completionTokens ?? 0,
897
- totalTokens: totalTokens ?? (promptTokens ?? 0) + (completionTokens ?? 0),
898
- captured: usageCaptured,
899
- reasoningTokens,
900
- cachedPromptTokens
901
- },
902
- costUsd: typeof costFromProxy === "number" ? costFromProxy : configuredCost ?? null,
903
- model: servedModel ?? req.model,
904
- servedModel,
905
- durationMs: Date.now() - started,
906
- raw: json
907
- };
908
- } catch (err) {
909
- clearTimeout(timeoutHandle);
910
- lastErr = err;
911
- if (callerSignal?.aborted) {
912
- if (sink && dispatched && !attemptErrorRecorded) await recordRaw(sink, redactor, {
913
- eventId: newRecordId(),
914
- runId: traceContext?.runId,
915
- spanId: traceContext?.spanId,
916
- provider,
917
- model: req.model,
918
- endpoint,
919
- baseUrl,
920
- attemptIndex: attempt,
921
- direction: "error",
922
- timestamp: Date.now(),
923
- durationMs: Date.now() - started,
924
- errorMessage: err instanceof Error ? err.message : String(err),
925
- redactedFields: []
926
- });
927
- throw err;
928
- }
929
- if (sink && dispatched && !attemptErrorRecorded) await recordRaw(sink, redactor, {
930
- eventId: newRecordId(),
931
- runId: traceContext?.runId,
932
- spanId: traceContext?.spanId,
933
- provider,
934
- model: req.model,
935
- endpoint,
936
- baseUrl,
937
- attemptIndex: attempt,
938
- direction: "error",
939
- timestamp: Date.now(),
940
- durationMs: Date.now() - started,
941
- errorMessage: err instanceof Error ? err.message : String(err),
942
- redactedFields: []
797
+ responseBody: text,
798
+ errorMessage: `non-JSON response: ${parseErr instanceof Error ? parseErr.message : String(parseErr)}`
943
799
  });
944
- const wait = backoffMs(attempt);
945
- if (attempt < maximumAttempts - 1 && isTransientLlmError(err) && !deadlineExceeded(deadlineStart, deadlineMs) && wait < remainingMs()) {
946
- await retryDelay(wait);
947
- continue;
948
- }
949
- callerSignal?.throwIfAborted();
950
- throw err;
951
- } finally {
952
- clearTimeout(timeoutHandle);
800
+ if (opts.rawSink) state.errorRecorded = true;
801
+ throw parseErr;
953
802
  }
803
+ await recordAttemptEvent(run, attempt, {
804
+ direction: "response",
805
+ timestamp: Date.now(),
806
+ durationMs: Date.now() - started,
807
+ statusCode: res.status,
808
+ responseHeaders,
809
+ responseBody: json
810
+ });
811
+ return {
812
+ kind: "result",
813
+ result: parseCompletion(run, json, started)
814
+ };
815
+ } catch (err) {
816
+ clearTimeout(timeoutHandle);
817
+ run.lastErr = err;
818
+ if (state.dispatched && !state.errorRecorded) await recordAttemptEvent(run, attempt, {
819
+ direction: "error",
820
+ timestamp: Date.now(),
821
+ durationMs: Date.now() - started,
822
+ errorMessage: err instanceof Error ? err.message : String(err)
823
+ });
824
+ if (callerSignal?.aborted) throw err;
825
+ const wait = backoffMs(attempt);
826
+ if (attempt < run.maximumAttempts - 1 && isTransientLlmError(err) && !deadlineExceeded(run.deadlineStart, opts.deadlineMs) && wait < run.remainingMs()) {
827
+ await run.retryDelay(wait);
828
+ return { kind: "retry" };
829
+ }
830
+ callerSignal?.throwIfAborted();
831
+ throw err;
832
+ } finally {
833
+ clearTimeout(timeoutHandle);
834
+ }
835
+ }
836
+ async function callLlmAttempts(req, opts, allowSchemaFallback) {
837
+ const run = startAttemptRun(req, opts, allowSchemaFallback);
838
+ for (let attempt = 0; attempt < run.maximumAttempts; attempt++) {
839
+ const outcome = await runAttempt(run, attempt);
840
+ if (outcome.kind === "result") return outcome.result;
841
+ if (outcome.kind === "exhausted") break;
954
842
  }
955
- throw lastErr instanceof Error ? lastErr : new Error(String(lastErr));
843
+ throw run.lastErr instanceof Error ? run.lastErr : new Error(String(run.lastErr));
956
844
  }
957
845
  async function recordRaw(sink, redactor, event) {
958
846
  try {
@@ -1018,6 +906,6 @@ var LlmClient = class {
1018
906
  }
1019
907
  };
1020
908
  //#endregion
1021
- export { LlmResponseError as C, LlmCallError as S, assertCrossFamily as _, maximumChargeForLlmRequest as a, extractJsonPayload as b, ModelSubstitutionError as c, assertServedModel as d, assertServedModelPolicy as f, CrossFamilyError as g, servedModelAcceptable as h, costReceiptFromLlmError as i, ServedCrossFamilyError as l, checkServedModel as m, callLlmJson as n, backoffMs as o, assertServedModels as p, costReceiptFromLlm as r, isTransientLlmError as s, LlmClient as t, assertCrossFamilyServed as u, judgeFamily as v, stripFencedJson as x, combineAbortSignals as y };
909
+ export { combineAbortSignals as _, maximumChargeForLlmRequest as a, ModelSubstitutionError as c, assertServedModelPolicy as d, assertServedModels as f, judgeFamily as g, assertCrossFamily as h, costReceiptFromLlmError as i, assertCrossFamilyServed as l, CrossFamilyError as m, callLlmJson as n, backoffMs as o, checkServedModel as p, costReceiptFromLlm as r, isTransientLlmError as s, LlmClient as t, assertServedModel as u };
1022
910
 
1023
- //# sourceMappingURL=llm-client-CyBAoYiX.js.map
911
+ //# sourceMappingURL=llm-client-_Y6ic-tf.js.map