@tangle-network/agent-eval 0.129.0 → 0.130.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +1 -0
  3. package/dist/active-curriculum-C4mk67HP.js +214 -0
  4. package/dist/active-curriculum-C4mk67HP.js.map +1 -0
  5. package/dist/adversarial-smnADNFS.d.ts +21 -0
  6. package/dist/adversarial-smnADNFS.d.ts.map +1 -0
  7. package/dist/analyst/index.d.ts +81 -2872
  8. package/dist/analyst/index.d.ts.map +1 -0
  9. package/dist/analyst/index.js +319 -360
  10. package/dist/analyst/index.js.map +1 -1
  11. package/dist/analyst-BkTS3C58.d.ts +89 -0
  12. package/dist/analyst-BkTS3C58.d.ts.map +1 -0
  13. package/dist/analyst-LsnNpSkm.js +152 -0
  14. package/dist/analyst-LsnNpSkm.js.map +1 -0
  15. package/dist/analyze-runs-C1CavBMk.js +1067 -0
  16. package/dist/analyze-runs-C1CavBMk.js.map +1 -0
  17. package/dist/analyze-runs-FsgYCinh.d.ts +72 -0
  18. package/dist/analyze-runs-FsgYCinh.d.ts.map +1 -0
  19. package/dist/attribute-vocabulary-DLJ6303h.d.ts +54 -0
  20. package/dist/attribute-vocabulary-DLJ6303h.d.ts.map +1 -0
  21. package/dist/authenticity/index.d.ts +81 -79
  22. package/dist/authenticity/index.d.ts.map +1 -0
  23. package/dist/authenticity/index.js +209 -193
  24. package/dist/authenticity/index.js.map +1 -1
  25. package/dist/baseline-HsBvw_dk.js +550 -0
  26. package/dist/baseline-HsBvw_dk.js.map +1 -0
  27. package/dist/baseline-hG3K85h4.d.ts +125 -0
  28. package/dist/baseline-hG3K85h4.d.ts.map +1 -0
  29. package/dist/belief-state/index.d.ts +448 -1188
  30. package/dist/belief-state/index.d.ts.map +1 -0
  31. package/dist/belief-state/index.js +1617 -1709
  32. package/dist/belief-state/index.js.map +1 -1
  33. package/dist/benchmarks/index.d.ts +2 -891
  34. package/dist/benchmarks/index.js +2 -60
  35. package/dist/benchmarks-DviOvUNr.js +754 -0
  36. package/dist/benchmarks-DviOvUNr.js.map +1 -0
  37. package/dist/builder-eval/index.d.ts +150 -662
  38. package/dist/builder-eval/index.d.ts.map +1 -0
  39. package/dist/builder-eval/index.js +356 -345
  40. package/dist/builder-eval/index.js.map +1 -1
  41. package/dist/calibration-CNWWA6K8.js +94 -0
  42. package/dist/calibration-CNWWA6K8.js.map +1 -0
  43. package/dist/campaign/index.d.ts +5 -6381
  44. package/dist/campaign/index.js +3 -213
  45. package/dist/campaign-CBKZvQ1H.js +3885 -0
  46. package/dist/campaign-CBKZvQ1H.js.map +1 -0
  47. package/dist/cli.d.ts +1 -1
  48. package/dist/cli.js +164 -175
  49. package/dist/cli.js.map +1 -1
  50. package/dist/client-C97NMzqi.d.ts +581 -0
  51. package/dist/client-C97NMzqi.d.ts.map +1 -0
  52. package/dist/client-CYzbdJOZ.js +637 -0
  53. package/dist/client-CYzbdJOZ.js.map +1 -0
  54. package/dist/code-agent-session-BjkMTQ7H.js +1390 -0
  55. package/dist/code-agent-session-BjkMTQ7H.js.map +1 -0
  56. package/dist/code-agent-session-DqqgOJaz.d.ts +143 -0
  57. package/dist/code-agent-session-DqqgOJaz.d.ts.map +1 -0
  58. package/dist/concurrency-DIxRZF_J.js +85 -0
  59. package/dist/concurrency-DIxRZF_J.js.map +1 -0
  60. package/dist/contract/index.d.ts +645 -5565
  61. package/dist/contract/index.d.ts.map +1 -0
  62. package/dist/contract/index.js +1730 -1938
  63. package/dist/contract/index.js.map +1 -1
  64. package/dist/control.d.ts +3 -1030
  65. package/dist/control.js +2 -33
  66. package/dist/cost-ledger-DIgQUFZZ.js +801 -0
  67. package/dist/cost-ledger-DIgQUFZZ.js.map +1 -0
  68. package/dist/cost-ledger-Dye6jCgg.d.ts +236 -0
  69. package/dist/cost-ledger-Dye6jCgg.d.ts.map +1 -0
  70. package/dist/dataset-BvtnC8Dc.d.ts +115 -0
  71. package/dist/dataset-BvtnC8Dc.d.ts.map +1 -0
  72. package/dist/default-registry-C-vFCSEc.js +2579 -0
  73. package/dist/default-registry-C-vFCSEc.js.map +1 -0
  74. package/dist/default-registry-CNPo-Vsb.d.ts +540 -0
  75. package/dist/default-registry-CNPo-Vsb.d.ts.map +1 -0
  76. package/dist/emitter-CPBAhxum.js +266 -0
  77. package/dist/emitter-CPBAhxum.js.map +1 -0
  78. package/dist/emitter-DGQGoLyj.d.ts +113 -0
  79. package/dist/emitter-DGQGoLyj.d.ts.map +1 -0
  80. package/dist/errors-8YnH8WlF.js +64 -0
  81. package/dist/errors-8YnH8WlF.js.map +1 -0
  82. package/dist/errors-CEk209JS.d.ts +76 -0
  83. package/dist/errors-CEk209JS.d.ts.map +1 -0
  84. package/dist/eval-campaign-DEm6c8ru.js +349 -0
  85. package/dist/eval-campaign-DEm6c8ru.js.map +1 -0
  86. package/dist/execution-tracks-CpgFPpS5.js +93 -0
  87. package/dist/execution-tracks-CpgFPpS5.js.map +1 -0
  88. package/dist/exporters-q9iL-2Jf.js +148 -0
  89. package/dist/exporters-q9iL-2Jf.js.map +1 -0
  90. package/dist/extract-usage-BrQ8mCLX.js +155 -0
  91. package/dist/extract-usage-BrQ8mCLX.js.map +1 -0
  92. package/dist/failure-cluster-CqcvCcdR.d.ts +59 -0
  93. package/dist/failure-cluster-CqcvCcdR.d.ts.map +1 -0
  94. package/dist/feedback-trajectory-CVaeREXV.d.ts +340 -0
  95. package/dist/feedback-trajectory-CVaeREXV.d.ts.map +1 -0
  96. package/dist/fuzz.d.ts +320 -646
  97. package/dist/fuzz.d.ts.map +1 -0
  98. package/dist/fuzz.js +670 -618
  99. package/dist/fuzz.js.map +1 -1
  100. package/dist/hf-dataset-DBJXXoY1.js +763 -0
  101. package/dist/hf-dataset-DBJXXoY1.js.map +1 -0
  102. package/dist/hosted/index.d.ts +11 -831
  103. package/dist/hosted/index.d.ts.map +1 -0
  104. package/dist/hosted/index.js +2 -37
  105. package/dist/index-2JJSA6-r2.d.ts +926 -0
  106. package/dist/index-2JJSA6-r2.d.ts.map +1 -0
  107. package/dist/index-6N0aYmpW.d.ts +217 -0
  108. package/dist/index-6N0aYmpW.d.ts.map +1 -0
  109. package/dist/index-BAvgST_9.d.ts +131 -0
  110. package/dist/index-BAvgST_9.d.ts.map +1 -0
  111. package/dist/index-BvnJuTGD.d.ts +68 -0
  112. package/dist/index-BvnJuTGD.d.ts.map +1 -0
  113. package/dist/index-C61Wi7yg.d.ts +547 -0
  114. package/dist/index-C61Wi7yg.d.ts.map +1 -0
  115. package/dist/index-CAPUUKaM.d.ts +335 -0
  116. package/dist/index-CAPUUKaM.d.ts.map +1 -0
  117. package/dist/index-DE5fb3EC.d.ts +2244 -0
  118. package/dist/index-DE5fb3EC.d.ts.map +1 -0
  119. package/dist/index-DSC51roc.d.ts +102 -0
  120. package/dist/index-DSC51roc.d.ts.map +1 -0
  121. package/dist/index.d.ts +3755 -15555
  122. package/dist/index.d.ts.map +1 -0
  123. package/dist/index.js +11182 -11216
  124. package/dist/index.js.map +1 -1
  125. package/dist/integrity-BzRbCHzi.js +424 -0
  126. package/dist/integrity-BzRbCHzi.js.map +1 -0
  127. package/dist/integrity-rmVhXWA7.d.ts +61 -0
  128. package/dist/integrity-rmVhXWA7.d.ts.map +1 -0
  129. package/dist/judge-calibration-DFtEMlde.d.ts +146 -0
  130. package/dist/judge-calibration-DFtEMlde.d.ts.map +1 -0
  131. package/dist/ledger-core/index.d.ts +2 -0
  132. package/dist/ledger-core/index.js +2 -0
  133. package/dist/ledger-core-DtZz1RG0.js +388 -0
  134. package/dist/ledger-core-DtZz1RG0.js.map +1 -0
  135. package/dist/llm-client--GR4JbZE.js +687 -0
  136. package/dist/llm-client--GR4JbZE.js.map +1 -0
  137. package/dist/llm-client-B_nIBlYo.d.ts +290 -0
  138. package/dist/llm-client-B_nIBlYo.d.ts.map +1 -0
  139. package/dist/matrix/index.d.ts +3 -155
  140. package/dist/matrix/index.js +2 -8
  141. package/dist/matrix-BzQnu2S6.js +270 -0
  142. package/dist/matrix-BzQnu2S6.js.map +1 -0
  143. package/dist/meta-eval/index.d.ts +4 -1027
  144. package/dist/meta-eval/index.js +393 -390
  145. package/dist/meta-eval/index.js.map +1 -1
  146. package/dist/metrics-C9YY1OcL.js +239 -0
  147. package/dist/metrics-C9YY1OcL.js.map +1 -0
  148. package/dist/mint-yN2M2eh0.js +201 -0
  149. package/dist/mint-yN2M2eh0.js.map +1 -0
  150. package/dist/multi-layer-verifier-BHY1gWAc.d.ts +138 -0
  151. package/dist/multi-layer-verifier-BHY1gWAc.d.ts.map +1 -0
  152. package/dist/multishot/index.d.ts +273 -480
  153. package/dist/multishot/index.d.ts.map +1 -0
  154. package/dist/multishot/index.js +595 -548
  155. package/dist/multishot/index.js.map +1 -1
  156. package/dist/off-policy-DvgzvtIx.js +220 -0
  157. package/dist/off-policy-DvgzvtIx.js.map +1 -0
  158. package/dist/off-policy-mskQw8Mb.d.ts +153 -0
  159. package/dist/off-policy-mskQw8Mb.d.ts.map +1 -0
  160. package/dist/openapi.json +1 -1
  161. package/dist/opencode-sqlite-BGrHeDu3.js +318 -0
  162. package/dist/opencode-sqlite-BGrHeDu3.js.map +1 -0
  163. package/dist/outcome-store-BYHIuO0e.d.ts +65 -0
  164. package/dist/outcome-store-BYHIuO0e.d.ts.map +1 -0
  165. package/dist/outcome-store-ChBKlTd_.js +75 -0
  166. package/dist/outcome-store-ChBKlTd_.js.map +1 -0
  167. package/dist/paired-arms-D9D0wXj2.js +260 -0
  168. package/dist/paired-arms-D9D0wXj2.js.map +1 -0
  169. package/dist/pipelines/index.d.ts +95 -532
  170. package/dist/pipelines/index.d.ts.map +1 -0
  171. package/dist/pipelines/index.js +497 -478
  172. package/dist/pipelines/index.js.map +1 -1
  173. package/dist/pre-registration-DakwTRXk.js +96 -0
  174. package/dist/pre-registration-DakwTRXk.js.map +1 -0
  175. package/dist/propose-review-control-LhIWGzHl.js +1458 -0
  176. package/dist/propose-review-control-LhIWGzHl.js.map +1 -0
  177. package/dist/query-CJ_DX8vl.d.ts +28 -0
  178. package/dist/query-CJ_DX8vl.d.ts.map +1 -0
  179. package/dist/query-Di7eEQ79.js +83 -0
  180. package/dist/query-Di7eEQ79.js.map +1 -0
  181. package/dist/raw-provider-sink-BQd7mzyT.js +201 -0
  182. package/dist/raw-provider-sink-BQd7mzyT.js.map +1 -0
  183. package/dist/raw-provider-sink-BU29Sh8h.d.ts +134 -0
  184. package/dist/raw-provider-sink-BU29Sh8h.d.ts.map +1 -0
  185. package/dist/redact-7Aq1ukl-.js +107 -0
  186. package/dist/redact-7Aq1ukl-.js.map +1 -0
  187. package/dist/release-report-Cz9NKH39.js +603 -0
  188. package/dist/release-report-Cz9NKH39.js.map +1 -0
  189. package/dist/release-report-mvB2G4_J.d.ts +244 -0
  190. package/dist/release-report-mvB2G4_J.d.ts.map +1 -0
  191. package/dist/replay-GnyotH0J.js +1741 -0
  192. package/dist/replay-GnyotH0J.js.map +1 -0
  193. package/dist/replay-OoidtG1E.d.ts +749 -0
  194. package/dist/replay-OoidtG1E.d.ts.map +1 -0
  195. package/dist/reporting.d.ts +6 -1312
  196. package/dist/reporting.js +6 -51
  197. package/dist/researcher-CwTdwXG1.d.ts +314 -0
  198. package/dist/researcher-CwTdwXG1.d.ts.map +1 -0
  199. package/dist/reward-hacking-eAnOsynk.d.ts +224 -0
  200. package/dist/reward-hacking-eAnOsynk.d.ts.map +1 -0
  201. package/dist/reward-hacking-qipEpKvY.js +596 -0
  202. package/dist/reward-hacking-qipEpKvY.js.map +1 -0
  203. package/dist/reward-nw2xZGZG.js +137 -0
  204. package/dist/reward-nw2xZGZG.js.map +1 -0
  205. package/dist/rl.d.ts +760 -4010
  206. package/dist/rl.d.ts.map +1 -0
  207. package/dist/rl.js +2325 -1958
  208. package/dist/rl.js.map +1 -1
  209. package/dist/rolldown-runtime-8H4AJuhK.js +14 -0
  210. package/dist/rollout/index.d.ts +3 -2087
  211. package/dist/rollout/index.js +8 -168
  212. package/dist/rollout-BOYjemfR.js +624 -0
  213. package/dist/rollout-BOYjemfR.js.map +1 -0
  214. package/dist/rubric-predictive-validity-B3xmbmS1.js +141 -0
  215. package/dist/rubric-predictive-validity-B3xmbmS1.js.map +1 -0
  216. package/dist/rubric-predictive-validity-Ku_clp_1.d.ts +74 -0
  217. package/dist/rubric-predictive-validity-Ku_clp_1.d.ts.map +1 -0
  218. package/dist/run-evidence-ClRX_8A9.d.ts +225 -0
  219. package/dist/run-evidence-ClRX_8A9.d.ts.map +1 -0
  220. package/dist/run-record-BuoE80Dq.js +467 -0
  221. package/dist/{chunk-56TAVBOK.js.map → run-record-BuoE80Dq.js.map} +1 -1
  222. package/dist/run-record-CnZu_gjl.d.ts +357 -0
  223. package/dist/run-record-CnZu_gjl.d.ts.map +1 -0
  224. package/dist/run-score-iEEAWiBY.js +41 -0
  225. package/dist/run-score-iEEAWiBY.js.map +1 -0
  226. package/dist/runtime-trajectory-1gyaTOoC.js +93 -0
  227. package/dist/runtime-trajectory-1gyaTOoC.js.map +1 -0
  228. package/dist/runtime-trajectory-BvSZcCHD.d.ts +50 -0
  229. package/dist/runtime-trajectory-BvSZcCHD.d.ts.map +1 -0
  230. package/dist/schema-BtVldJ3T.d.ts +206 -0
  231. package/dist/schema-BtVldJ3T.d.ts.map +1 -0
  232. package/dist/schema-C6DW4ZHR.js +821 -0
  233. package/dist/schema-C6DW4ZHR.js.map +1 -0
  234. package/dist/schema-CRhEY1SO.js +69 -0
  235. package/dist/schema-CRhEY1SO.js.map +1 -0
  236. package/dist/schema-Cef2cFmb.d.ts +408 -0
  237. package/dist/schema-Cef2cFmb.d.ts.map +1 -0
  238. package/dist/semantic-concept-judge-B6cWNJ2K.js +725 -0
  239. package/dist/semantic-concept-judge-B6cWNJ2K.js.map +1 -0
  240. package/dist/sequential-Br0mAPHA.js +148 -0
  241. package/dist/sequential-Br0mAPHA.js.map +1 -0
  242. package/dist/sequential-CYwq6Ff_.d.ts +141 -0
  243. package/dist/sequential-CYwq6Ff_.d.ts.map +1 -0
  244. package/dist/series-convergence-CjO2QdRW.js +43 -0
  245. package/dist/series-convergence-CjO2QdRW.js.map +1 -0
  246. package/dist/series-convergence-ofsqPWhs.d.ts +35 -0
  247. package/dist/series-convergence-ofsqPWhs.d.ts.map +1 -0
  248. package/dist/server-m5D9cvnG.js +1040 -0
  249. package/dist/server-m5D9cvnG.js.map +1 -0
  250. package/dist/skill-usage-C_pXm7lP.d.ts +534 -0
  251. package/dist/skill-usage-C_pXm7lP.d.ts.map +1 -0
  252. package/dist/skillopt-optimization-method-B7wX7XkF.d.ts +1739 -0
  253. package/dist/skillopt-optimization-method-B7wX7XkF.d.ts.map +1 -0
  254. package/dist/skillopt-optimization-method-D4ODwFVV.js +7712 -0
  255. package/dist/skillopt-optimization-method-D4ODwFVV.js.map +1 -0
  256. package/dist/statistics-Cmj6nynr.d.ts +514 -0
  257. package/dist/statistics-Cmj6nynr.d.ts.map +1 -0
  258. package/dist/statistics-CnnxdpOg.js +1437 -0
  259. package/dist/statistics-CnnxdpOg.js.map +1 -0
  260. package/dist/store-CT9YIIve.d.ts +117 -0
  261. package/dist/store-CT9YIIve.d.ts.map +1 -0
  262. package/dist/store-CxJry_cs.d.ts +229 -0
  263. package/dist/store-CxJry_cs.d.ts.map +1 -0
  264. package/dist/storyboard/index.d.ts +84 -203
  265. package/dist/storyboard/index.d.ts.map +1 -0
  266. package/dist/storyboard/index.js +609 -542
  267. package/dist/storyboard/index.js.map +1 -1
  268. package/dist/summary-report-BNs5nmXI.js +862 -0
  269. package/dist/summary-report-BNs5nmXI.js.map +1 -0
  270. package/dist/summary-report-Cj9gdw4i.d.ts +407 -0
  271. package/dist/summary-report-Cj9gdw4i.d.ts.map +1 -0
  272. package/dist/supervisor-run/index.d.ts +2 -959
  273. package/dist/supervisor-run/index.js +2 -65
  274. package/dist/supervisor-run-_lnTLM3z.js +1679 -0
  275. package/dist/supervisor-run-_lnTLM3z.js.map +1 -0
  276. package/dist/task-failure-attributes-CQZlB3et.js +311 -0
  277. package/dist/task-failure-attributes-CQZlB3et.js.map +1 -0
  278. package/dist/test-graded-scenario-BsqWLmPt.js +318 -0
  279. package/dist/test-graded-scenario-BsqWLmPt.js.map +1 -0
  280. package/dist/test-graded-scenario-D1TaI2va.d.ts +141 -0
  281. package/dist/test-graded-scenario-D1TaI2va.d.ts.map +1 -0
  282. package/dist/tools-BmuN627J.js +1085 -0
  283. package/dist/tools-BmuN627J.js.map +1 -0
  284. package/dist/trace-attributes.d.ts +2 -52
  285. package/dist/trace-attributes.js +131 -61
  286. package/dist/trace-attributes.js.map +1 -1
  287. package/dist/traces.d.ts +12 -2365
  288. package/dist/traces.js +12 -252
  289. package/dist/trajectory-D_7rLrvE.js +56 -0
  290. package/dist/trajectory-D_7rLrvE.js.map +1 -0
  291. package/dist/types-DGsxbAEd.d.ts +387 -0
  292. package/dist/types-DGsxbAEd.d.ts.map +1 -0
  293. package/dist/types-k9tZGKUg.d.ts +640 -0
  294. package/dist/types-k9tZGKUg.d.ts.map +1 -0
  295. package/dist/verdict-Dps8_okt.d.ts +37 -0
  296. package/dist/verdict-Dps8_okt.d.ts.map +1 -0
  297. package/dist/wire/index.d.ts +702 -1173
  298. package/dist/wire/index.d.ts.map +1 -0
  299. package/dist/wire/index.js +2 -81
  300. package/package.json +17 -9
  301. package/dist/benchmarks/index.js.map +0 -1
  302. package/dist/campaign/index.js.map +0 -1
  303. package/dist/chunk-2QU3YOPR.js +0 -7374
  304. package/dist/chunk-2QU3YOPR.js.map +0 -1
  305. package/dist/chunk-3OCR4R5I.js +0 -728
  306. package/dist/chunk-3OCR4R5I.js.map +0 -1
  307. package/dist/chunk-3RF76KTD.js +0 -84
  308. package/dist/chunk-3RF76KTD.js.map +0 -1
  309. package/dist/chunk-56TAVBOK.js +0 -698
  310. package/dist/chunk-5DTSBUL2.js +0 -159
  311. package/dist/chunk-5DTSBUL2.js.map +0 -1
  312. package/dist/chunk-7FO3TNPI.js +0 -232
  313. package/dist/chunk-7FO3TNPI.js.map +0 -1
  314. package/dist/chunk-7ZZMD7UK.js +0 -386
  315. package/dist/chunk-7ZZMD7UK.js.map +0 -1
  316. package/dist/chunk-BOD4O7OF.js +0 -40
  317. package/dist/chunk-BOD4O7OF.js.map +0 -1
  318. package/dist/chunk-BSO5JDQH.js +0 -2335
  319. package/dist/chunk-BSO5JDQH.js.map +0 -1
  320. package/dist/chunk-C6LXANRU.js +0 -1550
  321. package/dist/chunk-C6LXANRU.js.map +0 -1
  322. package/dist/chunk-DODXQREJ.js +0 -752
  323. package/dist/chunk-DODXQREJ.js.map +0 -1
  324. package/dist/chunk-DRYIUNWY.js +0 -622
  325. package/dist/chunk-DRYIUNWY.js.map +0 -1
  326. package/dist/chunk-E7QXT7SX.js +0 -183
  327. package/dist/chunk-E7QXT7SX.js.map +0 -1
  328. package/dist/chunk-EG66UGL4.js +0 -341
  329. package/dist/chunk-EG66UGL4.js.map +0 -1
  330. package/dist/chunk-FXTVJPYD.js +0 -576
  331. package/dist/chunk-FXTVJPYD.js.map +0 -1
  332. package/dist/chunk-G7MGMCZD.js +0 -153
  333. package/dist/chunk-G7MGMCZD.js.map +0 -1
  334. package/dist/chunk-GGE4NNQT.js +0 -65
  335. package/dist/chunk-GGE4NNQT.js.map +0 -1
  336. package/dist/chunk-H23X7XKK.js +0 -181
  337. package/dist/chunk-H23X7XKK.js.map +0 -1
  338. package/dist/chunk-HHWE3POT.js +0 -94
  339. package/dist/chunk-HHWE3POT.js.map +0 -1
  340. package/dist/chunk-HPWUNB47.js +0 -289
  341. package/dist/chunk-HPWUNB47.js.map +0 -1
  342. package/dist/chunk-IYCLP2N2.js +0 -766
  343. package/dist/chunk-IYCLP2N2.js.map +0 -1
  344. package/dist/chunk-JHCHEVET.js +0 -274
  345. package/dist/chunk-JHCHEVET.js.map +0 -1
  346. package/dist/chunk-JQSF5DQT.js +0 -701
  347. package/dist/chunk-JQSF5DQT.js.map +0 -1
  348. package/dist/chunk-K4DBDHLK.js +0 -158
  349. package/dist/chunk-K4DBDHLK.js.map +0 -1
  350. package/dist/chunk-K6N6XJJX.js +0 -306
  351. package/dist/chunk-K6N6XJJX.js.map +0 -1
  352. package/dist/chunk-M4YBQKIJ.js +0 -1040
  353. package/dist/chunk-M4YBQKIJ.js.map +0 -1
  354. package/dist/chunk-MA6HLL3S.js +0 -65
  355. package/dist/chunk-MA6HLL3S.js.map +0 -1
  356. package/dist/chunk-MAZ26DC7.js +0 -99
  357. package/dist/chunk-MAZ26DC7.js.map +0 -1
  358. package/dist/chunk-NPCTHQIO.js +0 -91
  359. package/dist/chunk-NPCTHQIO.js.map +0 -1
  360. package/dist/chunk-NY44NC4A.js +0 -1056
  361. package/dist/chunk-NY44NC4A.js.map +0 -1
  362. package/dist/chunk-OIUOT4QD.js +0 -44
  363. package/dist/chunk-OIUOT4QD.js.map +0 -1
  364. package/dist/chunk-ONWEPEDO.js +0 -57
  365. package/dist/chunk-ONWEPEDO.js.map +0 -1
  366. package/dist/chunk-OWN5NPMC.js +0 -152
  367. package/dist/chunk-OWN5NPMC.js.map +0 -1
  368. package/dist/chunk-P6FYH6K4.js +0 -1161
  369. package/dist/chunk-P6FYH6K4.js.map +0 -1
  370. package/dist/chunk-PC4UYEBM.js +0 -166
  371. package/dist/chunk-PC4UYEBM.js.map +0 -1
  372. package/dist/chunk-PC5DOSM7.js +0 -579
  373. package/dist/chunk-PC5DOSM7.js.map +0 -1
  374. package/dist/chunk-PXE2VKMX.js +0 -140
  375. package/dist/chunk-PXE2VKMX.js.map +0 -1
  376. package/dist/chunk-PZ5AY32C.js +0 -10
  377. package/dist/chunk-PZ5AY32C.js.map +0 -1
  378. package/dist/chunk-QB6BDBP2.js +0 -4464
  379. package/dist/chunk-QB6BDBP2.js.map +0 -1
  380. package/dist/chunk-RXHCETDZ.js +0 -536
  381. package/dist/chunk-RXHCETDZ.js.map +0 -1
  382. package/dist/chunk-RZTMDUO7.js +0 -49
  383. package/dist/chunk-RZTMDUO7.js.map +0 -1
  384. package/dist/chunk-SFLLL76A.js +0 -669
  385. package/dist/chunk-SFLLL76A.js.map +0 -1
  386. package/dist/chunk-SZLVEKMJ.js +0 -1446
  387. package/dist/chunk-SZLVEKMJ.js.map +0 -1
  388. package/dist/chunk-T4SQEITX.js +0 -95
  389. package/dist/chunk-T4SQEITX.js.map +0 -1
  390. package/dist/chunk-T6RLYGAD.js +0 -158
  391. package/dist/chunk-T6RLYGAD.js.map +0 -1
  392. package/dist/chunk-TJVT4QFF.js +0 -911
  393. package/dist/chunk-TJVT4QFF.js.map +0 -1
  394. package/dist/chunk-TQ7LNKZ3.js +0 -136
  395. package/dist/chunk-TQ7LNKZ3.js.map +0 -1
  396. package/dist/chunk-U4L7JRPZ.js +0 -1706
  397. package/dist/chunk-U4L7JRPZ.js.map +0 -1
  398. package/dist/chunk-U4PHLT2N.js +0 -419
  399. package/dist/chunk-U4PHLT2N.js.map +0 -1
  400. package/dist/chunk-VCZ5FQYW.js +0 -928
  401. package/dist/chunk-VCZ5FQYW.js.map +0 -1
  402. package/dist/chunk-VI2UW6B6.js +0 -162
  403. package/dist/chunk-VI2UW6B6.js.map +0 -1
  404. package/dist/chunk-VQMK5FMP.js +0 -247
  405. package/dist/chunk-VQMK5FMP.js.map +0 -1
  406. package/dist/chunk-WGXIEX7P.js +0 -116
  407. package/dist/chunk-WGXIEX7P.js.map +0 -1
  408. package/dist/chunk-WVATSFCP.js +0 -1553
  409. package/dist/chunk-WVATSFCP.js.map +0 -1
  410. package/dist/chunk-X4YIBDER.js +0 -1662
  411. package/dist/chunk-X4YIBDER.js.map +0 -1
  412. package/dist/chunk-YQN4ICPP.js +0 -355
  413. package/dist/chunk-YQN4ICPP.js.map +0 -1
  414. package/dist/chunk-ZET2UAYW.js +0 -89
  415. package/dist/chunk-ZET2UAYW.js.map +0 -1
  416. package/dist/chunk-ZHTZ4EYI.js +0 -1212
  417. package/dist/chunk-ZHTZ4EYI.js.map +0 -1
  418. package/dist/control.js.map +0 -1
  419. package/dist/hosted/index.js.map +0 -1
  420. package/dist/matrix/index.js.map +0 -1
  421. package/dist/reporting.js.map +0 -1
  422. package/dist/rollout/index.js.map +0 -1
  423. package/dist/run-campaign-OJJ7CZF4.js +0 -18
  424. package/dist/run-campaign-OJJ7CZF4.js.map +0 -1
  425. package/dist/supervisor-run/index.js.map +0 -1
  426. package/dist/traces.js.map +0 -1
  427. package/dist/wire/index.js.map +0 -1
@@ -1,669 +0,0 @@
1
- import {
2
- costForTokenPricing
3
- } from "./chunk-VCZ5FQYW.js";
4
- import {
5
- defaultProviderRedactor,
6
- providerFromBaseUrl
7
- } from "./chunk-PC4UYEBM.js";
8
- import {
9
- AgentEvalError,
10
- CaptureIntegrityError
11
- } from "./chunk-ONWEPEDO.js";
12
-
13
- // src/llm-client.ts
14
- function maximumChargeForLlmRequest(request, options = {}) {
15
- if (request.maxTokens === void 0) return void 0;
16
- if (!Number.isInteger(request.maxTokens) || request.maxTokens <= 0) {
17
- throw new RangeError(`maximumChargeForLlmRequest: maxTokens must be a positive integer`);
18
- }
19
- if (request.messages.some(
20
- (message) => Array.isArray(message.content) && message.content.some((part) => part.type === "image_url")
21
- )) {
22
- return void 0;
23
- }
24
- const attempts = resolveMaximumAttempts(options.maximumAttempts);
25
- const forceJsonObject = options.jsonSchemaTransport === "json-object";
26
- const requestBytes = new TextEncoder().encode(
27
- JSON.stringify(buildBody(request, forceJsonObject, options.thinking))
28
- ).byteLength;
29
- const batches = request.jsonSchema && !forceJsonObject ? 2 : 1;
30
- const usage = {
31
- inputTokens: requestBytes * attempts * batches,
32
- outputTokens: request.maxTokens * attempts * batches
33
- };
34
- return options.customTokenPricing ? { customTokenPricing: options.customTokenPricing, ...usage } : { model: request.model, ...usage };
35
- }
36
- function costReceiptFromLlm(result, customTokenPricing) {
37
- const cachedTokens = result.usage.cachedPromptTokens ?? 0;
38
- const inputTokens = Math.max(0, result.usage.promptTokens - cachedTokens);
39
- const configuredCostUsd = result.costUsd === null && customTokenPricing && result.usage.captured !== false ? costForTokenPricing(customTokenPricing, {
40
- inputTokens,
41
- ...cachedTokens > 0 ? { cachedTokens } : {},
42
- outputTokens: result.usage.completionTokens
43
- }) : void 0;
44
- return {
45
- model: result.model,
46
- inputTokens,
47
- outputTokens: result.usage.completionTokens,
48
- reasoningTokens: result.usage.reasoningTokens,
49
- cachedTokens: cachedTokens > 0 ? cachedTokens : void 0,
50
- actualCostUsd: result.costUsd ?? configuredCostUsd,
51
- usageUnknown: result.usage.captured === false
52
- };
53
- }
54
- function costReceiptFromLlmError(error, customTokenPricing) {
55
- return error instanceof LlmResponseError ? costReceiptFromLlm(error.result, customTokenPricing) : void 0;
56
- }
57
- var LlmCallError = class extends AgentEvalError {
58
- constructor(message, status, body, model) {
59
- super("judge", message);
60
- this.status = status;
61
- this.body = body;
62
- this.model = model;
63
- }
64
- status;
65
- body;
66
- model;
67
- };
68
- var LlmResponseError = class extends AgentEvalError {
69
- constructor(message, result, options) {
70
- super("judge", message, options);
71
- this.result = result;
72
- }
73
- result;
74
- };
75
- var DEFAULT_BASE_URL = "https://router.tangle.tools/v1";
76
- var DEFAULT_TIMEOUT_MS = Number(process.env.TANGLE_LLM_TIMEOUT_MS) || 3e5;
77
- var DEFAULT_MAXIMUM_ATTEMPTS = process.env.TANGLE_LLM_MAXIMUM_ATTEMPTS === void 0 ? 3 : Number(process.env.TANGLE_LLM_MAXIMUM_ATTEMPTS);
78
- function resolveMaximumAttempts(configured) {
79
- const attempts = configured ?? DEFAULT_MAXIMUM_ATTEMPTS;
80
- if (!Number.isInteger(attempts) || attempts <= 0) {
81
- throw new RangeError("LLM maximum attempts must be a positive integer");
82
- }
83
- return attempts;
84
- }
85
- function providerTokenCount(value) {
86
- return typeof value === "number" && Number.isSafeInteger(value) && value >= 0 ? value : void 0;
87
- }
88
- var RETRYABLE_STATUS = /* @__PURE__ */ new Set([429, 502, 503, 504]);
89
- var TRANSIENT_ERROR_PATTERNS = [
90
- /AbortError/i,
91
- /TimeoutError/i,
92
- /this operation was aborted/i,
93
- /fetch failed/i,
94
- /ECONNRESET/i,
95
- /ETIMEDOUT/i,
96
- /EAI_AGAIN/i,
97
- /socket hang up/i,
98
- /stream.*ended.*unexpectedly/i,
99
- /terminated/i,
100
- /other side closed/i,
101
- /NGHTTP2/i,
102
- /UND_ERR/i
103
- ];
104
- function isTransientLlmError(err) {
105
- return classifyTransient(err, 0);
106
- }
107
- function classifyTransient(err, depth) {
108
- if (err instanceof LlmCallError) return RETRYABLE_STATUS.has(err.status);
109
- if (!(err instanceof Error)) return false;
110
- const status = err.status;
111
- if (typeof status === "number" && RETRYABLE_STATUS.has(status)) return true;
112
- const code = err.code;
113
- const haystack = `${err.name}
114
- ${err.message}
115
- ${typeof code === "string" ? code : ""}`;
116
- if (TRANSIENT_ERROR_PATTERNS.some((p) => p.test(haystack))) return true;
117
- const cause = err.cause;
118
- if (depth < 4 && cause instanceof Error && cause !== err) {
119
- return classifyTransient(cause, depth + 1);
120
- }
121
- return false;
122
- }
123
- function parseRetryAfter(headers) {
124
- const h = headers.get("retry-after");
125
- if (!h) return null;
126
- const asNumber = Number(h);
127
- if (Number.isFinite(asNumber) && asNumber > 0) return asNumber * 1e3;
128
- const asDate = Date.parse(h);
129
- if (Number.isFinite(asDate)) return Math.max(0, asDate - Date.now());
130
- return null;
131
- }
132
- function backoffMs(attempt) {
133
- return Math.min(500 * 2 ** attempt, 16e3);
134
- }
135
- function buildHeaders(opts) {
136
- const headers = {
137
- "Content-Type": "application/json",
138
- Accept: "application/json"
139
- };
140
- if (opts.authHeader) {
141
- headers[opts.authHeader.name] = opts.authHeader.value;
142
- } else if (opts.bearer || opts.apiKey) {
143
- headers.Authorization = `Bearer ${opts.bearer ?? opts.apiKey}`;
144
- }
145
- if (opts.idempotencyKey) headers["Idempotency-Key"] = opts.idempotencyKey;
146
- return headers;
147
- }
148
- function isSchemaRejection(status, body) {
149
- if (status !== 400) return false;
150
- const lower = body.toLowerCase();
151
- return lower.includes("response_format") || lower.includes("json_schema") || lower.includes("is unavailable") || lower.includes("not supported");
152
- }
153
- function isTemperatureOneRejection(status, body) {
154
- if (status !== 400 || !/temperature/i.test(body)) return false;
155
- return /temperature[^.\n]{0,120}\b(?:only|must|should|required|requires?)\b[^.\n]{0,40}\b1(?:\.0+)?\b/i.test(
156
- body
157
- ) || /\bonly\s+1(?:\.0+)?\s+is\s+allowed\b[^.\n]{0,120}\btemperature\b/i.test(body);
158
- }
159
- function buildBody(req, forceJsonObject, defaultThinking) {
160
- const body = {
161
- model: req.model,
162
- messages: req.messages,
163
- temperature: req.temperature ?? 0
164
- };
165
- if (req.maxTokens != null) {
166
- if (usesMaxCompletionTokens(req.model)) body.max_completion_tokens = req.maxTokens;
167
- else body.max_tokens = req.maxTokens;
168
- }
169
- const thinking = req.thinking ?? defaultThinking;
170
- if (thinking !== void 0) {
171
- body.thinking = { type: thinking };
172
- }
173
- if (req.jsonSchema && !forceJsonObject) {
174
- body.response_format = {
175
- type: "json_schema",
176
- json_schema: { name: req.jsonSchema.name, schema: req.jsonSchema.schema, strict: true }
177
- };
178
- } else if (req.jsonMode || req.jsonSchema) {
179
- body.response_format = { type: "json_object" };
180
- }
181
- return body;
182
- }
183
- function usesMaxCompletionTokens(model) {
184
- return /^gpt-5(?:[.-]|$)/i.test(model);
185
- }
186
- async function sleep(ms) {
187
- return new Promise((resolve) => setTimeout(resolve, ms));
188
- }
189
- function linkSignals(timeoutController, caller) {
190
- if (!caller) return timeoutController.signal;
191
- if (typeof AbortSignal.any === "function") {
192
- return AbortSignal.any([timeoutController.signal, caller]);
193
- }
194
- if (caller.aborted) {
195
- timeoutController.abort();
196
- } else {
197
- caller.addEventListener("abort", () => timeoutController.abort(), { once: true });
198
- }
199
- return timeoutController.signal;
200
- }
201
- function deadlineExceeded(start, deadlineMs) {
202
- return deadlineMs != null && Date.now() - start >= deadlineMs;
203
- }
204
- function stripFencedJson(raw) {
205
- const trimmed = raw.trim();
206
- const m = trimmed.match(/^```(?:json)?\s*\n?([\s\S]*?)\n?```\s*$/);
207
- return m ? m[1].trim() : trimmed;
208
- }
209
- function extractJsonPayload(raw) {
210
- const stripped = stripFencedJson(raw);
211
- try {
212
- JSON.parse(stripped);
213
- return stripped;
214
- } catch {
215
- if (stripped.startsWith("{") || stripped.startsWith("[")) return stripped;
216
- }
217
- const starts = [...stripped.matchAll(/[[{]/g)].map((match) => match.index).filter((index) => index != null);
218
- for (const start of starts) {
219
- const candidate = extractBalancedJson(stripped, start);
220
- if (!candidate) continue;
221
- try {
222
- JSON.parse(candidate);
223
- return candidate;
224
- } catch {
225
- }
226
- }
227
- return stripped;
228
- }
229
- function extractBalancedJson(input, start) {
230
- const opener = input[start];
231
- const closer = opener === "{" ? "}" : opener === "[" ? "]" : null;
232
- if (!closer) return null;
233
- const stack = [closer];
234
- let isInString = false;
235
- let isEscaped = false;
236
- for (let i = start + 1; i < input.length; i++) {
237
- const char = input[i];
238
- if (isEscaped) {
239
- isEscaped = false;
240
- continue;
241
- }
242
- if (char === "\\") {
243
- isEscaped = isInString;
244
- continue;
245
- }
246
- if (char === '"') {
247
- isInString = !isInString;
248
- continue;
249
- }
250
- if (isInString) continue;
251
- if (char === "{") stack.push("}");
252
- else if (char === "[") stack.push("]");
253
- else if (char === stack[stack.length - 1]) {
254
- stack.pop();
255
- if (stack.length === 0) return input.slice(start, i + 1);
256
- }
257
- }
258
- return null;
259
- }
260
- async function callLlm(req, opts = {}) {
261
- const baseUrl = (opts.baseUrl ?? DEFAULT_BASE_URL).replace(/\/+$/, "");
262
- const url = `${baseUrl}/chat/completions`;
263
- const endpoint = "/chat/completions";
264
- const timeoutMs = req.timeoutMs ?? opts.defaultTimeoutMs ?? DEFAULT_TIMEOUT_MS;
265
- const maximumAttempts = resolveMaximumAttempts(opts.maximumAttempts);
266
- const fetchFn = opts.fetch ?? globalThis.fetch;
267
- const headers = buildHeaders(opts);
268
- const provider = opts.provider ?? providerFromBaseUrl(baseUrl);
269
- const sink = opts.rawSink;
270
- const redactor = opts.redactor ?? defaultProviderRedactor;
271
- const traceContext = opts.traceContext;
272
- const callerSignal = opts.signal;
273
- const deadlineMs = opts.deadlineMs;
274
- const deadlineStart = Date.now();
275
- if (opts.customTokenPricing) {
276
- costForTokenPricing(opts.customTokenPricing, { inputTokens: 0, outputTokens: 0 });
277
- }
278
- let lastErr;
279
- let effectiveRequest = req;
280
- for (let attempt = 0; attempt < maximumAttempts; attempt++) {
281
- if (callerSignal?.aborted) {
282
- throw new DOMException("callLlm aborted by caller signal", "AbortError");
283
- }
284
- if (attempt > 0 && deadlineExceeded(deadlineStart, deadlineMs)) {
285
- throw lastErr instanceof Error ? lastErr : new Error(String(lastErr));
286
- }
287
- const controller = new AbortController();
288
- const attemptSignal = linkSignals(controller, callerSignal);
289
- const timeoutHandle = setTimeout(() => controller.abort(), timeoutMs);
290
- const started = Date.now();
291
- const requestBody = buildBody(
292
- effectiveRequest,
293
- opts.jsonSchemaTransport === "json-object",
294
- opts.thinking
295
- );
296
- let attemptErrorRecorded = false;
297
- if (sink) {
298
- await recordRaw(sink, redactor, {
299
- eventId: cryptoEventId(),
300
- runId: traceContext?.runId,
301
- spanId: traceContext?.spanId,
302
- provider,
303
- model: req.model,
304
- endpoint,
305
- baseUrl,
306
- attemptIndex: attempt,
307
- direction: "request",
308
- timestamp: started,
309
- requestHeaders: headers,
310
- requestBody,
311
- redactedFields: []
312
- });
313
- }
314
- try {
315
- const res = await fetchFn(url, {
316
- method: "POST",
317
- headers,
318
- body: JSON.stringify(requestBody),
319
- signal: attemptSignal
320
- });
321
- clearTimeout(timeoutHandle);
322
- const responseHeaders = sink ? headersToObject(res.headers) : void 0;
323
- if (!res.ok) {
324
- const body = await res.text();
325
- if (sink) {
326
- await recordRaw(sink, redactor, {
327
- eventId: cryptoEventId(),
328
- runId: traceContext?.runId,
329
- spanId: traceContext?.spanId,
330
- provider,
331
- model: req.model,
332
- endpoint,
333
- baseUrl,
334
- attemptIndex: attempt,
335
- direction: "error",
336
- timestamp: Date.now(),
337
- durationMs: Date.now() - started,
338
- statusCode: res.status,
339
- responseHeaders,
340
- responseBody: body,
341
- errorMessage: `HTTP ${res.status}`,
342
- redactedFields: []
343
- });
344
- attemptErrorRecorded = true;
345
- }
346
- const err = new LlmCallError(
347
- `LLM call ${res.status}: ${body.slice(0, 300)}`,
348
- res.status,
349
- body,
350
- req.model
351
- );
352
- if (isTemperatureOneRejection(res.status, body) && effectiveRequest.temperature !== 1 && attempt < maximumAttempts - 1 && !deadlineExceeded(deadlineStart, deadlineMs)) {
353
- lastErr = err;
354
- effectiveRequest = { ...effectiveRequest, temperature: 1 };
355
- continue;
356
- }
357
- if (RETRYABLE_STATUS.has(res.status) && attempt < maximumAttempts - 1 && !deadlineExceeded(deadlineStart, deadlineMs)) {
358
- lastErr = err;
359
- const retryAfter = parseRetryAfter(res.headers);
360
- await sleep(retryAfter ?? backoffMs(attempt));
361
- continue;
362
- }
363
- throw err;
364
- }
365
- const text = await res.text();
366
- let json;
367
- try {
368
- json = JSON.parse(text);
369
- } catch (parseErr) {
370
- if (sink) {
371
- await recordRaw(sink, redactor, {
372
- eventId: cryptoEventId(),
373
- runId: traceContext?.runId,
374
- spanId: traceContext?.spanId,
375
- provider,
376
- model: req.model,
377
- endpoint,
378
- baseUrl,
379
- attemptIndex: attempt,
380
- direction: "error",
381
- timestamp: Date.now(),
382
- durationMs: Date.now() - started,
383
- statusCode: res.status,
384
- responseHeaders,
385
- responseBody: text,
386
- errorMessage: `non-JSON response: ${parseErr instanceof Error ? parseErr.message : String(parseErr)}`,
387
- redactedFields: []
388
- });
389
- attemptErrorRecorded = true;
390
- }
391
- throw parseErr;
392
- }
393
- if (sink) {
394
- await recordRaw(sink, redactor, {
395
- eventId: cryptoEventId(),
396
- runId: traceContext?.runId,
397
- spanId: traceContext?.spanId,
398
- provider,
399
- model: req.model,
400
- endpoint,
401
- baseUrl,
402
- attemptIndex: attempt,
403
- direction: "response",
404
- timestamp: Date.now(),
405
- durationMs: Date.now() - started,
406
- statusCode: res.status,
407
- responseHeaders,
408
- responseBody: json,
409
- redactedFields: []
410
- });
411
- }
412
- const choice = json.choices?.[0];
413
- const usageRaw = json.usage && typeof json.usage === "object" && !Array.isArray(json.usage) ? json.usage : void 0;
414
- const promptTokens = providerTokenCount(usageRaw?.prompt_tokens);
415
- const completionTokens = providerTokenCount(usageRaw?.completion_tokens);
416
- const totalTokens = providerTokenCount(usageRaw?.total_tokens);
417
- const completionDetails = usageRaw?.completion_tokens_details && typeof usageRaw.completion_tokens_details === "object" && !Array.isArray(usageRaw.completion_tokens_details) ? usageRaw.completion_tokens_details : void 0;
418
- const reasoningRaw = completionDetails?.reasoning_tokens;
419
- const reasoningTokens = reasoningRaw === void 0 ? void 0 : providerTokenCount(reasoningRaw);
420
- 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;
421
- const cachedPromptTokens = cachedRaw === void 0 ? void 0 : providerTokenCount(cachedRaw);
422
- 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);
423
- const costFromProxy = json._response_cost ?? json.cost_usd;
424
- const content = choice?.message?.content ?? "";
425
- const configuredCost = typeof costFromProxy !== "number" && usageCaptured && opts.customTokenPricing ? costForTokenPricing(opts.customTokenPricing, {
426
- inputTokens: promptTokens - (cachedPromptTokens ?? 0),
427
- ...cachedPromptTokens ? { cachedTokens: cachedPromptTokens } : {},
428
- outputTokens: completionTokens
429
- }) : void 0;
430
- return {
431
- content,
432
- finishReason: choice?.finish_reason ?? null,
433
- contentEmpty: content.trim().length === 0,
434
- usage: {
435
- promptTokens: promptTokens ?? 0,
436
- completionTokens: completionTokens ?? 0,
437
- totalTokens: totalTokens ?? (promptTokens ?? 0) + (completionTokens ?? 0),
438
- captured: usageCaptured,
439
- reasoningTokens,
440
- cachedPromptTokens
441
- },
442
- costUsd: typeof costFromProxy === "number" ? costFromProxy : configuredCost ?? null,
443
- model: json.model ?? req.model,
444
- durationMs: Date.now() - started,
445
- raw: json
446
- };
447
- } catch (err) {
448
- clearTimeout(timeoutHandle);
449
- lastErr = err;
450
- if (callerSignal?.aborted) {
451
- if (sink && !attemptErrorRecorded) {
452
- await recordRaw(sink, redactor, {
453
- eventId: cryptoEventId(),
454
- runId: traceContext?.runId,
455
- spanId: traceContext?.spanId,
456
- provider,
457
- model: req.model,
458
- endpoint,
459
- baseUrl,
460
- attemptIndex: attempt,
461
- direction: "error",
462
- timestamp: Date.now(),
463
- durationMs: Date.now() - started,
464
- errorMessage: err instanceof Error ? err.message : String(err),
465
- redactedFields: []
466
- });
467
- }
468
- throw err;
469
- }
470
- if (sink && !attemptErrorRecorded) {
471
- await recordRaw(sink, redactor, {
472
- eventId: cryptoEventId(),
473
- runId: traceContext?.runId,
474
- spanId: traceContext?.spanId,
475
- provider,
476
- model: req.model,
477
- endpoint,
478
- baseUrl,
479
- attemptIndex: attempt,
480
- direction: "error",
481
- timestamp: Date.now(),
482
- durationMs: Date.now() - started,
483
- errorMessage: err instanceof Error ? err.message : String(err),
484
- redactedFields: []
485
- });
486
- }
487
- if (attempt < maximumAttempts - 1 && isTransientLlmError(err) && !deadlineExceeded(deadlineStart, deadlineMs)) {
488
- await sleep(backoffMs(attempt));
489
- continue;
490
- }
491
- throw err;
492
- }
493
- }
494
- throw lastErr instanceof Error ? lastErr : new Error(String(lastErr));
495
- }
496
- async function recordRaw(sink, redactor, event) {
497
- try {
498
- await sink.record(redactor(event));
499
- } catch {
500
- }
501
- }
502
- function headersToObject(h) {
503
- const out = {};
504
- h.forEach((value, key) => {
505
- out[key] = value;
506
- });
507
- return out;
508
- }
509
- function cryptoEventId() {
510
- if (typeof globalThis.crypto?.randomUUID === "function") return globalThis.crypto.randomUUID();
511
- return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
512
- }
513
- async function callLlmJson(req, opts = {}) {
514
- const result = await callLlmStructured(req, opts);
515
- const value = parseJsonResult(result, opts.jsonPayloadMode ?? "extract");
516
- return { value, result };
517
- }
518
- async function callLlmStructured(req, opts = {}) {
519
- try {
520
- return await callLlm({ ...req, jsonMode: req.jsonMode ?? !req.jsonSchema }, opts);
521
- } catch (err) {
522
- if (opts.jsonSchemaTransport !== "json-object" && err instanceof LlmCallError && isSchemaRejection(err.status, err.body) && req.jsonSchema) {
523
- const degradedReq = { ...req, jsonMode: true, jsonSchema: void 0 };
524
- return await callLlm(degradedReq, opts);
525
- }
526
- throw err;
527
- }
528
- }
529
- function parseJsonResult(result, jsonPayloadMode) {
530
- try {
531
- if (result.finishReason === "length") {
532
- throw new Error(
533
- `LLM returned truncated JSON content (model=${result.model}, finishReason=length)`
534
- );
535
- }
536
- return parseJsonSafely(result.content, result.model, jsonPayloadMode);
537
- } catch (error) {
538
- if (error instanceof LlmResponseError) throw error;
539
- const cause = error instanceof Error ? error : new Error(String(error));
540
- throw new LlmResponseError(cause.message, result, { cause });
541
- }
542
- }
543
- function parseJsonSafely(content, model, jsonPayloadMode) {
544
- const payload = jsonPayloadMode === "exact" ? content : extractJsonPayload(content);
545
- try {
546
- return JSON.parse(payload);
547
- } catch (err) {
548
- throw new Error(
549
- `LLM returned non-JSON content (model=${model}): ${err instanceof Error ? err.message : String(err)}
550
- --- raw content ---
551
- ${content.slice(0, 800)}`
552
- );
553
- }
554
- }
555
- var LlmRouteAssertionError = class extends CaptureIntegrityError {
556
- constructor(message, reason, baseUrl) {
557
- super(message);
558
- this.reason = reason;
559
- this.baseUrl = baseUrl;
560
- }
561
- reason;
562
- baseUrl;
563
- };
564
- function assertLlmRoute(opts, req = {}) {
565
- const baseUrlExplicit = opts.baseUrl !== void 0;
566
- const baseUrl = (opts.baseUrl ?? DEFAULT_BASE_URL).replace(/\/+$/, "");
567
- if (req.requireExplicitBaseUrl && !baseUrlExplicit) {
568
- throw new LlmRouteAssertionError(
569
- `assertLlmRoute: requireExplicitBaseUrl set but opts.baseUrl is undefined; would fall back to ${DEFAULT_BASE_URL}.`,
570
- "no_explicit_base_url",
571
- baseUrl
572
- );
573
- }
574
- if (req.blockedBaseUrls?.some((p) => matchUrl(baseUrl, p))) {
575
- throw new LlmRouteAssertionError(
576
- `assertLlmRoute: baseUrl ${baseUrl} matches a blocked pattern.`,
577
- "base_url_blocked",
578
- baseUrl
579
- );
580
- }
581
- if (req.allowedBaseUrls && req.allowedBaseUrls.length > 0) {
582
- const ok = req.allowedBaseUrls.some((p) => matchUrl(baseUrl, p));
583
- if (!ok) {
584
- throw new LlmRouteAssertionError(
585
- `assertLlmRoute: baseUrl ${baseUrl} is not in the allowed list (${req.allowedBaseUrls.map(describePattern).join(", ")}).`,
586
- "base_url_not_allowed",
587
- baseUrl
588
- );
589
- }
590
- }
591
- if (req.requireAuth && !opts.apiKey && !opts.bearer && !opts.authHeader) {
592
- throw new LlmRouteAssertionError(
593
- `assertLlmRoute: requireAuth set but no apiKey, bearer, or authHeader was supplied.`,
594
- "no_auth",
595
- baseUrl
596
- );
597
- }
598
- if (req.expectedProvider) {
599
- const actual = opts.provider ?? providerFromBaseUrl(baseUrl);
600
- if (actual !== req.expectedProvider) {
601
- throw new LlmRouteAssertionError(
602
- `assertLlmRoute: expected provider ${req.expectedProvider} but baseUrl ${baseUrl} resolves to ${actual}.`,
603
- "wrong_provider",
604
- baseUrl
605
- );
606
- }
607
- }
608
- }
609
- function matchUrl(url, pattern) {
610
- if (pattern instanceof RegExp) return pattern.test(url);
611
- return url.toLowerCase().startsWith(pattern.toLowerCase());
612
- }
613
- function describePattern(p) {
614
- return p instanceof RegExp ? p.source : p;
615
- }
616
- async function probeLlm(model, opts = {}) {
617
- const start = Date.now();
618
- try {
619
- await callLlm(
620
- {
621
- model,
622
- messages: [{ role: "user", content: "ping" }],
623
- maxTokens: 64,
624
- timeoutMs: opts.timeoutMs ?? 3e4
625
- },
626
- opts
627
- );
628
- return { ok: true, latencyMs: Date.now() - start, error: null };
629
- } catch (err) {
630
- return {
631
- ok: false,
632
- latencyMs: Date.now() - start,
633
- error: err instanceof Error ? err.message : String(err)
634
- };
635
- }
636
- }
637
- var LlmClient = class {
638
- maximumAttempts;
639
- opts;
640
- constructor(opts = {}) {
641
- this.opts = opts;
642
- this.maximumAttempts = resolveMaximumAttempts(opts.maximumAttempts);
643
- }
644
- call(req, per) {
645
- const options = { ...this.opts, ...per };
646
- return req.jsonSchema ? callLlmStructured(req, options) : callLlm(req, options);
647
- }
648
- callJson(req, per) {
649
- return callLlmJson(req, { ...this.opts, ...per });
650
- }
651
- };
652
-
653
- export {
654
- maximumChargeForLlmRequest,
655
- costReceiptFromLlm,
656
- costReceiptFromLlmError,
657
- LlmCallError,
658
- LlmResponseError,
659
- isTransientLlmError,
660
- backoffMs,
661
- stripFencedJson,
662
- callLlm,
663
- callLlmJson,
664
- LlmRouteAssertionError,
665
- assertLlmRoute,
666
- probeLlm,
667
- LlmClient
668
- };
669
- //# sourceMappingURL=chunk-SFLLL76A.js.map