promptfoo 0.125.0 → 0.125.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 (869) hide show
  1. package/README.md +3 -3
  2. package/dist/src/accounts-BOxNYxVN.js +229 -0
  3. package/dist/src/accounts-BezXLdAW.cjs +276 -0
  4. package/dist/src/accounts-CPISMNlh.js +227 -0
  5. package/dist/src/accounts-vJBPs89d.js +222 -0
  6. package/dist/src/agentWorkspace-Bom7SpF2.js +592 -0
  7. package/dist/src/agentWorkspace-CEomAcws.cjs +619 -0
  8. package/dist/src/agentWorkspace-DPtMLrlI.js +593 -0
  9. package/dist/src/agentWorkspace-DkAeEYLz.js +592 -0
  10. package/dist/src/agentic-utils-121v7mJo.js +197 -0
  11. package/dist/src/agentic-utils-CBWD_rcd.cjs +237 -0
  12. package/dist/src/agentic-utils-D8wyQwPG.js +198 -0
  13. package/dist/src/agentic-utils-EP1QkQCs.js +197 -0
  14. package/dist/src/agents-Br3ah8iA.js +778 -0
  15. package/dist/src/agents-C5wj_UTv.js +777 -0
  16. package/dist/src/agents-C9Efp4mC.js +266 -0
  17. package/dist/src/agents-CQYwaVCO.js +267 -0
  18. package/dist/src/agents-CjCd4Vo8.js +777 -0
  19. package/dist/src/agents-DRWiCHYz.js +266 -0
  20. package/dist/src/agents-F2rhx0iL.cjs +266 -0
  21. package/dist/src/agents-RTYyy69h.cjs +777 -0
  22. package/dist/src/agents-api-CY72O86e.js +711 -0
  23. package/dist/src/agents-api-CsSsC21b.js +710 -0
  24. package/dist/src/agents-api-DN-ibDc8.js +710 -0
  25. package/dist/src/agents-api-cNDsCCv1.cjs +710 -0
  26. package/dist/src/ai.studio-Bj6Dyi6o.js +2 -0
  27. package/dist/src/ai.studio-C-e0LzyW.js +369 -0
  28. package/dist/src/ai.studio-CR8M6Aqf.cjs +391 -0
  29. package/dist/src/ai.studio-YKk7F0tv.js +374 -0
  30. package/dist/src/aimlapi-BGunsuTu.js +30 -0
  31. package/dist/src/aimlapi-BkzcfBsL.js +29 -0
  32. package/dist/src/aimlapi-DXFcEdP8.js +28 -0
  33. package/dist/src/aimlapi-r-8iCcAw.cjs +29 -0
  34. package/dist/src/anthropicMessages-7-YNRgQR.js +114 -0
  35. package/dist/src/anthropicMessages-C8m9Whrd.cjs +114 -0
  36. package/dist/src/anthropicMessages-DS1vXD0f.js +115 -0
  37. package/dist/src/anthropicMessages-DmvGkz-0.js +114 -0
  38. package/dist/src/app/assets/index-CrdXWTXm.js +392 -0
  39. package/dist/src/app/browser-inventory.json +4 -4
  40. package/dist/src/app/index.html +1 -1
  41. package/dist/src/audio-BLgFgyw-.cjs +104 -0
  42. package/dist/src/audio-C2sibT7Q.js +104 -0
  43. package/dist/src/audio-DXEXb03H.js +104 -0
  44. package/dist/src/audio-TkvojpwO.js +105 -0
  45. package/dist/src/authoritativeMarkupInjection-BAT9B-Wj.js +79 -0
  46. package/dist/src/authoritativeMarkupInjection-B_yHETKT.js +78 -0
  47. package/dist/src/authoritativeMarkupInjection-BfjecQ3Q.cjs +78 -0
  48. package/dist/src/authoritativeMarkupInjection-D-hDKrhD.js +78 -0
  49. package/dist/src/aws-B_9unI_-.js +1149 -0
  50. package/dist/src/aws-D0FY3qkc.js +2433 -0
  51. package/dist/src/aws-Dh1-a90n.js +2433 -0
  52. package/dist/src/aws-qskKGczY.cjs +2454 -0
  53. package/dist/src/base-CaWlBkVz.js +462 -0
  54. package/dist/src/base-CcViNwVs.js +255 -0
  55. package/dist/src/base-CsVbPJkU.cjs +467 -0
  56. package/dist/src/base-DNK9py25.js +255 -0
  57. package/dist/src/base-DlH5tjEZ.js +463 -0
  58. package/dist/src/base-DyLOZ_iX.js +256 -0
  59. package/dist/src/base-RRYXfG7l.cjs +305 -0
  60. package/dist/src/base-oXVgvtVn.js +462 -0
  61. package/dist/src/bedrock-BP17ZXbR.cjs +2 -0
  62. package/dist/src/bedrock-CsjM1dOt.js +1300 -0
  63. package/dist/src/bedrock-CzPwj8GO.js +1 -0
  64. package/dist/src/bedrock-eGXZw8oh.js +1 -0
  65. package/dist/src/bedrock-tSWjmXdj.js +2 -0
  66. package/dist/src/bestOfN-BQ93nUKV.js +160 -0
  67. package/dist/src/bestOfN-ByGGwlcb.cjs +161 -0
  68. package/dist/src/bestOfN-CbP7csHr.js +159 -0
  69. package/dist/src/bestOfN-xn6i2Xs2.js +159 -0
  70. package/dist/src/cache-CHq9hPz9.js +2 -0
  71. package/dist/src/cache-D-9eZN3I.js +754 -0
  72. package/dist/src/cache-DSm6t1MZ.js +741 -0
  73. package/dist/src/cache-DeF5zIEN.js +782 -0
  74. package/dist/src/cache-iG87oYan.cjs +856 -0
  75. package/dist/src/cerebras-CTtM4yMH.js +98 -0
  76. package/dist/src/cerebras-CogcJ3ce.cjs +97 -0
  77. package/dist/src/cerebras-DmkRypTh.js +97 -0
  78. package/dist/src/cerebras-GUp0B8JY.js +97 -0
  79. package/dist/src/chat-B4ihd3fw.js +226 -0
  80. package/dist/src/chat-B9cAQ_rS.js +227 -0
  81. package/dist/src/chat-BU7EB4R-.cjs +76 -0
  82. package/dist/src/chat-C8yxJ2-s.cjs +226 -0
  83. package/dist/src/chat-ClTFM3qq.js +934 -0
  84. package/dist/src/chat-Cnq0Is68.js +123 -0
  85. package/dist/src/chat-CwrurR57.cjs +987 -0
  86. package/dist/src/chat-D0lsojPv.js +124 -0
  87. package/dist/src/chat-D7_8yFIx.js +76 -0
  88. package/dist/src/chat-DCoETlLG.js +226 -0
  89. package/dist/src/chat-DHE7xaTR.js +76 -0
  90. package/dist/src/chat-DmhT6rz2.cjs +123 -0
  91. package/dist/src/chat-DvfMe8KI.js +123 -0
  92. package/dist/src/chat-DwP5kVnl.js +935 -0
  93. package/dist/src/chat-MB7U-QE2.js +77 -0
  94. package/dist/src/chat-zCWuBKAj.js +934 -0
  95. package/dist/src/claude-agent-sdk-23bIVI75.js +999 -0
  96. package/dist/src/claude-agent-sdk-BACpnIJi.cjs +1005 -0
  97. package/dist/src/claude-agent-sdk-BlYlmcEr.js +999 -0
  98. package/dist/src/claude-agent-sdk-Cr-jqJZl.js +1000 -0
  99. package/dist/src/client-BktbiPx9.cjs +357 -0
  100. package/dist/src/client-CjztEBmW.js +351 -0
  101. package/dist/src/client-mRs2UvH9.js +351 -0
  102. package/dist/src/client-uCz0ydjC.js +352 -0
  103. package/dist/src/cloud-BtYF555L.js +2 -0
  104. package/dist/src/cloud-CVSUEmAy.js +287 -0
  105. package/dist/src/cloud-D7Ifb-Fl.js +599 -0
  106. package/dist/src/cloud-DB5oK5NX.cjs +666 -0
  107. package/dist/src/cloud-ecu989Em.js +657 -0
  108. package/dist/src/cloud-ramjGURF.js +599 -0
  109. package/dist/src/cloudflare-ai-BfDkIjO8.js +133 -0
  110. package/dist/src/cloudflare-ai-D9HaXz1M.js +134 -0
  111. package/dist/src/cloudflare-ai-HrD5WUK8.js +132 -0
  112. package/dist/src/cloudflare-ai-Qdj8aKP2.cjs +133 -0
  113. package/dist/src/cloudflare-gateway-C81uKETQ.js +276 -0
  114. package/dist/src/cloudflare-gateway-CX5Z9X0k.js +276 -0
  115. package/dist/src/cloudflare-gateway-DW-og8gb.js +277 -0
  116. package/dist/src/cloudflare-gateway-iRyXo9n2.cjs +276 -0
  117. package/dist/src/codex-app-server-BFIrSgdy.js +2155 -0
  118. package/dist/src/codex-app-server-By1eDVD4.js +2 -0
  119. package/dist/src/codex-app-server-DKsF4qmY.js +2156 -0
  120. package/dist/src/codex-app-server-n7n4uZzC.cjs +2162 -0
  121. package/dist/src/codex-app-server-xAoELVxu.js +2155 -0
  122. package/dist/src/codex-sdk-C2ZLxa6r.js +1552 -0
  123. package/dist/src/codex-sdk-CzG02tQt.cjs +1588 -0
  124. package/dist/src/codex-sdk-DNxAOhiV.js +2 -0
  125. package/dist/src/codex-sdk-DT3aQezK.js +1557 -0
  126. package/dist/src/codex-sdk-pw9DpcJP.js +1557 -0
  127. package/dist/src/codex-security-B0bLmXJF.js +406 -0
  128. package/dist/src/codex-security-BhYs-3iY.js +406 -0
  129. package/dist/src/codex-security-DQcOfxYW.js +407 -0
  130. package/dist/src/codex-security-DsCWr6GZ.cjs +411 -0
  131. package/dist/src/cometapi-B16asPLX.cjs +55 -0
  132. package/dist/src/cometapi-MgTbZA_H.js +53 -0
  133. package/dist/src/cometapi-i33vKzPV.js +55 -0
  134. package/dist/src/cometapi-wK2UWK0X.js +56 -0
  135. package/dist/src/compatible-COj8ZCy9.js +24 -0
  136. package/dist/src/compatible-CRSsIUGb.cjs +24 -0
  137. package/dist/src/compatible-Dy1vCcNF.js +25 -0
  138. package/dist/src/compatible-aUItQrpk.js +24 -0
  139. package/dist/src/completion-Bn7COFMk.js +119 -0
  140. package/dist/src/completion-Bub2N48b.js +118 -0
  141. package/dist/src/completion-Cf2G9OlM.cjs +123 -0
  142. package/dist/src/conversationScoring-BiTYJ9MD.js +374 -0
  143. package/dist/src/conversationScoring-CKL47uIu.js +373 -0
  144. package/dist/src/conversationScoring-DCvQKp6k.cjs +398 -0
  145. package/dist/src/conversationScoring-DLNJtDZI.js +373 -0
  146. package/dist/src/crescendo-5iLk9WiJ.cjs +734 -0
  147. package/dist/src/crescendo-B5ylG7kW.js +733 -0
  148. package/dist/src/crescendo-BD7k6TIx.js +730 -0
  149. package/dist/src/crescendo-DqO2Ch0P.js +732 -0
  150. package/dist/src/custom-8rv_aG2K.js +617 -0
  151. package/dist/src/custom-BOtrIHFN.js +619 -0
  152. package/dist/src/custom-BvN8seCs.cjs +620 -0
  153. package/dist/src/custom-Cld9v_Y4.js +618 -0
  154. package/dist/src/dataUrl-BdHUey2l.cjs +3187 -0
  155. package/dist/src/dataUrl-DBMifX6C.js +3133 -0
  156. package/dist/src/dataUrl-DUSr-ZvI.js +2868 -0
  157. package/dist/src/decisions-CLazADTw.js +516 -0
  158. package/dist/src/decisions-D5X93awq.js +515 -0
  159. package/dist/src/decisions-DmaeArEn.js +515 -0
  160. package/dist/src/decisions-DyQJyHJz.cjs +514 -0
  161. package/dist/src/docker-C9NYQFeu.js +94 -0
  162. package/dist/src/docker-CGq3mMol.cjs +94 -0
  163. package/dist/src/docker-DOm7nmpl.js +95 -0
  164. package/dist/src/docker-skFN-Kfo.js +93 -0
  165. package/dist/src/embedding-0UbzkTk9.js +82 -0
  166. package/dist/src/embedding-DTrSDt7k.cjs +86 -0
  167. package/dist/src/embedding-j2ORNl5H.js +81 -0
  168. package/dist/src/envoy-BvS8XTQO.js +60 -0
  169. package/dist/src/envoy-Cn6Hzw0e.js +60 -0
  170. package/dist/src/envoy-DC3KWcUY.cjs +60 -0
  171. package/dist/src/envoy-DetHjo5B.js +61 -0
  172. package/dist/src/eval-Cer9dPe9.js +1920 -0
  173. package/dist/src/eval-CytYmI2Z.js +2 -0
  174. package/dist/src/evalResult-DzOq5wt9.js +1300 -0
  175. package/dist/src/evaluator-BxCmvGtv.js +10578 -0
  176. package/dist/src/evaluator-Ct7YDELm.js +2 -0
  177. package/dist/src/evaluatorHelpers-B_AwIrsl.js +600 -0
  178. package/dist/src/evaluatorHelpers-D1Tpc7gd.js +601 -0
  179. package/dist/src/evaluatorHelpers-DRR3rLq0.cjs +622 -0
  180. package/dist/src/fetch-B5KxZuKu.js +1559 -0
  181. package/dist/src/fetch-BG_Jl7ty.js +1556 -0
  182. package/dist/src/fetch-BKlgUg08.cjs +1853 -0
  183. package/dist/src/fetch-C9Fsja0R.js +2 -0
  184. package/dist/src/fetch-CM7P8KWA.cjs +14 -0
  185. package/dist/src/fetch-D0FkIB3G.js +9 -0
  186. package/dist/src/fetch-RXHsZF-J.js +1280 -0
  187. package/dist/src/fetch-rSECy8jR.js +10 -0
  188. package/dist/src/functionCallbackUtils-BB9tmf6a.cjs +262 -0
  189. package/dist/src/functionCallbackUtils-BXk2iY01.js +246 -0
  190. package/dist/src/functionCallbackUtils-B_cYp7P5.js +245 -0
  191. package/dist/src/functionCallbackUtils-BfXnPo0o.js +245 -0
  192. package/dist/src/gemini-image-BXLMADDz.js +471 -0
  193. package/dist/src/gemini-image-BYUZyEUx.js +472 -0
  194. package/dist/src/gemini-image-DSt1QubZ.cjs +471 -0
  195. package/dist/src/gemini-image-DdNDMiZ_.js +471 -0
  196. package/dist/src/goat-9b-uU_k6.js +514 -0
  197. package/dist/src/goat-BCJuiDd0.js +515 -0
  198. package/dist/src/goat-CmAHbemm.js +512 -0
  199. package/dist/src/goat-DdOTdyoS.cjs +515 -0
  200. package/dist/src/goblin-Bp5C5lyb.js +22 -0
  201. package/dist/src/goblin-Dmr7GItI.js +23 -0
  202. package/dist/src/goblin-DpM8wxlf.cjs +22 -0
  203. package/dist/src/goblin-cJyH6Pq-.js +22 -0
  204. package/dist/src/google-B6eaPAbE.js +142 -0
  205. package/dist/src/google-D-FStdN6.cjs +142 -0
  206. package/dist/src/google-DAC7BsCW.js +142 -0
  207. package/dist/src/google-Id18H0Va.js +143 -0
  208. package/dist/src/graders-BjNQWkaB.js +2 -0
  209. package/dist/src/graders-CqdIp_vl.js +15470 -0
  210. package/dist/src/hydra-6Ouh74DE.js +610 -0
  211. package/dist/src/hydra-BHjhZnLB.cjs +612 -0
  212. package/dist/src/hydra-BL6k2REV.js +2 -0
  213. package/dist/src/hydra-BWUc0o67.js +613 -0
  214. package/dist/src/hydra-CUkEOLKw.js +612 -0
  215. package/dist/src/image-B6hG_xhb.js +481 -0
  216. package/dist/src/image-BFaq7Krd.cjs +209 -0
  217. package/dist/src/image-Bql5C0N9.cjs +504 -0
  218. package/dist/src/image-BtZfI2pT.js +163 -0
  219. package/dist/src/image-CIM4oN7Z.cjs +163 -0
  220. package/dist/src/image-CbAl7Jpu.js +209 -0
  221. package/dist/src/image-CiYm_yFw.js +209 -0
  222. package/dist/src/image-DCMNvBiV.js +163 -0
  223. package/dist/src/image-DL7pIuUZ.js +210 -0
  224. package/dist/src/image-ey0kxF8o.js +164 -0
  225. package/dist/src/image-smgIk3rE.js +482 -0
  226. package/dist/src/index.cjs +27 -27
  227. package/dist/src/index.d.cts +8 -8
  228. package/dist/src/index.js +27 -27
  229. package/dist/src/indirectWebPwn-B_-UpWY5.js +285 -0
  230. package/dist/src/indirectWebPwn-Cz3SLiEq.js +434 -0
  231. package/dist/src/indirectWebPwn-D2s8zGiM.cjs +463 -0
  232. package/dist/src/indirectWebPwn-DXbj2wGu.cjs +285 -0
  233. package/dist/src/indirectWebPwn-D_4H44E6.js +285 -0
  234. package/dist/src/indirectWebPwn-L044SrpV.js +434 -0
  235. package/dist/src/indirectWebPwn-cnmvdavH.js +435 -0
  236. package/dist/src/indirectWebPwn-zUBzsqTt.js +286 -0
  237. package/dist/src/interactions-Bu3oVQ-j.js +850 -0
  238. package/dist/src/interactions-CND010Lh.cjs +850 -0
  239. package/dist/src/interactions-DAx7tqUz.js +851 -0
  240. package/dist/src/interactions-DPkIumeh.js +850 -0
  241. package/dist/src/iterative-BO4JRnpG.js +545 -0
  242. package/dist/src/iterative-CAK-k9rz.js +548 -0
  243. package/dist/src/iterative-CDgHc0xO.cjs +549 -0
  244. package/dist/src/iterative-CXJlHLl9.js +547 -0
  245. package/dist/src/iterativeImage-BEdGKSmh.cjs +419 -0
  246. package/dist/src/iterativeImage-BfL0QZw5.js +417 -0
  247. package/dist/src/iterativeImage-C9KhnibC.js +417 -0
  248. package/dist/src/iterativeImage-btjkOfWG.js +418 -0
  249. package/dist/src/iterativeMeta-B5Bdw6QA.js +437 -0
  250. package/dist/src/iterativeMeta-C3mI4gpT.js +440 -0
  251. package/dist/src/iterativeMeta-Co2BKyqS.cjs +439 -0
  252. package/dist/src/iterativeMeta-DD8ihRWD.js +439 -0
  253. package/dist/src/iterativeTree-AMi4GV2O.js +878 -0
  254. package/dist/src/iterativeTree-C8FJOEje.cjs +879 -0
  255. package/dist/src/iterativeTree-CvrY1f2Z.js +877 -0
  256. package/dist/src/iterativeTree-bPtESmaD.js +876 -0
  257. package/dist/src/knowledgeBase-Cf5871e3.js +163 -0
  258. package/dist/src/knowledgeBase-D2PQhqLH.js +164 -0
  259. package/dist/src/knowledgeBase-DpoMw1IH.cjs +163 -0
  260. package/dist/src/knowledgeBase-npGFl763.js +163 -0
  261. package/dist/src/litellm-BBB5DQdt.cjs +146 -0
  262. package/dist/src/litellm-Bo43ow7r.js +145 -0
  263. package/dist/src/litellm-CaU8CMLS.js +146 -0
  264. package/dist/src/litellm-wY7Unh8o.js +147 -0
  265. package/dist/src/live-5g2w-M-E.js +891 -0
  266. package/dist/src/live-BfaXsDyD.cjs +891 -0
  267. package/dist/src/live-C1xewnGD.js +2 -0
  268. package/dist/src/live-DaF7nYy5.js +892 -0
  269. package/dist/src/live-lp3urLUw.js +891 -0
  270. package/dist/src/luma-ray-B7zvKGVG.js +309 -0
  271. package/dist/src/luma-ray-DCf5fnrz.cjs +309 -0
  272. package/dist/src/luma-ray-DepBcn6z.js +309 -0
  273. package/dist/src/luma-ray-XQC4M1pt.js +310 -0
  274. package/dist/src/main.js +26 -26
  275. package/dist/src/mantleChat-7xm95vSV.js +154 -0
  276. package/dist/src/mantleChat-CXhAs5RD.js +155 -0
  277. package/dist/src/mantleChat-CcE-zjfj.cjs +154 -0
  278. package/dist/src/mantleChat-Cpefl7Zm.js +154 -0
  279. package/dist/src/mcp-B0V0ikdM.js +84 -0
  280. package/dist/src/mcp-CV2k2gwj.js +85 -0
  281. package/dist/src/memoryPoisoning-BC5FQQWZ.js +111 -0
  282. package/dist/src/memoryPoisoning-BDwrtZKX.js +111 -0
  283. package/dist/src/memoryPoisoning-BFemS_FF.js +112 -0
  284. package/dist/src/memoryPoisoning-DRs2rbVV.cjs +111 -0
  285. package/dist/src/messages-Bc5oZoAJ.js +1128 -0
  286. package/dist/src/messages-BkaH8fRW.js +1127 -0
  287. package/dist/src/messages-CoHlziS5.js +1127 -0
  288. package/dist/src/messages-Cv_m6kYs.cjs +1161 -0
  289. package/dist/src/mischievousUser-BcyFxrqJ.js +51 -0
  290. package/dist/src/mischievousUser-BlhOQSd2.js +52 -0
  291. package/dist/src/mischievousUser-BuQiKE8D.js +51 -0
  292. package/dist/src/mischievousUser-ChIOk6cT.cjs +51 -0
  293. package/dist/src/modelslab-BXIWBTgX.js +171 -0
  294. package/dist/src/modelslab-ChVsUiaJ.js +170 -0
  295. package/dist/src/modelslab-DZ6BFlDv.js +170 -0
  296. package/dist/src/modelslab-DhRr-vyo.cjs +170 -0
  297. package/dist/src/nova-reel-BL8DrN4_.js +272 -0
  298. package/dist/src/nova-reel-BiOMUm5q.cjs +272 -0
  299. package/dist/src/nova-reel-CTsya1hV.js +273 -0
  300. package/dist/src/nova-reel-kgBY4Svd.js +272 -0
  301. package/dist/src/nova-sonic-CaSSA3Jq.cjs +374 -0
  302. package/dist/src/nova-sonic-DLpmoGsR.js +375 -0
  303. package/dist/src/nova-sonic-DwWc4SoN.js +374 -0
  304. package/dist/src/nova-sonic-qnReTaXm.js +374 -0
  305. package/dist/src/novita-B5mAt3Ui.js +114 -0
  306. package/dist/src/novita-D57vCjDD.js +116 -0
  307. package/dist/src/novita-ITRtG8IJ.js +115 -0
  308. package/dist/src/novita-Rh3T13YO.cjs +115 -0
  309. package/dist/src/nscale-8V7iZ_pI.js +210 -0
  310. package/dist/src/nscale-BQnMv4pH.cjs +209 -0
  311. package/dist/src/nscale-BWZXHZVF.js +209 -0
  312. package/dist/src/nscale-BqrHiUqU.js +207 -0
  313. package/dist/src/openaiResponses-BMtGTu8R.js +317 -0
  314. package/dist/src/openaiResponses-CvcI_viE.js +318 -0
  315. package/dist/src/openaiResponses-DYPZEMX1.cjs +318 -0
  316. package/dist/src/openaiResponses-DZTg1-kb.js +319 -0
  317. package/dist/src/openclaw-BeKuig4g.js +1338 -0
  318. package/dist/src/openclaw-COkdQ83y.js +1337 -0
  319. package/dist/src/openclaw-CSoX_HQ5.cjs +1344 -0
  320. package/dist/src/openclaw-DJlhPGCb.js +1336 -0
  321. package/dist/src/opencode-sdk-BEJftEs6.cjs +1018 -0
  322. package/dist/src/opencode-sdk-DMvBB3V7.js +1013 -0
  323. package/dist/src/opencode-sdk-Df7hMjLO.js +1012 -0
  324. package/dist/src/opencode-sdk-bQp5Xf3W.js +1012 -0
  325. package/dist/src/openinterpreter-B3GgVZjK.js +431 -0
  326. package/dist/src/openinterpreter-BiGcU-HN.cjs +435 -0
  327. package/dist/src/openinterpreter-Buj2l3Eh.js +432 -0
  328. package/dist/src/openinterpreter-C3_Cg5b_.js +431 -0
  329. package/dist/src/pricing-0Pampf0q.cjs +999 -0
  330. package/dist/src/pricing-B8VdhEhY.js +976 -0
  331. package/dist/src/pricing-CtLA-rKA.js +976 -0
  332. package/dist/src/promptfoo-4OkHtH9P.cjs +341 -0
  333. package/dist/src/promptfoo-Bhpm7sH6.js +286 -0
  334. package/dist/src/promptfoo-BqV8ogVA.js +285 -0
  335. package/dist/src/promptfoo-S1Q9OHk_.js +286 -0
  336. package/dist/src/providers-B5zs1ZRv.js +24437 -0
  337. package/dist/src/providers-Cd6CJh6m.js +2 -0
  338. package/dist/src/providers-CpJlgHET.js +24039 -0
  339. package/dist/src/providers-CzvLvK6G.cjs +24180 -0
  340. package/dist/src/quiverai-1E_IvLHn.js +325 -0
  341. package/dist/src/quiverai-BXH004Vv.js +325 -0
  342. package/dist/src/quiverai-Ccya2z8Y.cjs +325 -0
  343. package/dist/src/quiverai-Cez57oe-.js +326 -0
  344. package/dist/src/registry-3zX_M9Ik.js +131 -0
  345. package/dist/src/registry-AuCrKTvS.js +132 -0
  346. package/dist/src/registry-CxXWKtQG.js +131 -0
  347. package/dist/src/registry-DG3o66JQ.cjs +131 -0
  348. package/dist/src/remoteGeneration-CAtvamG6.js +370 -0
  349. package/dist/src/remoteGeneration-CF225pDl.cjs +482 -0
  350. package/dist/src/remoteGeneration-DtnqocnL.js +370 -0
  351. package/dist/src/remoteGeneration-g3KvW-sP.js +371 -0
  352. package/dist/src/responses-BMbaUXQI.js +1098 -0
  353. package/dist/src/responses-B_TOSof-.js +1099 -0
  354. package/dist/src/responses-v-yANwTA.cjs +1109 -0
  355. package/dist/src/runtimeTransform-BBZv-oUZ.js +156 -0
  356. package/dist/src/runtimeTransform-DT2v5ovW.js +156 -0
  357. package/dist/src/runtimeTransform-GXXEIXdS.cjs +161 -0
  358. package/dist/src/runtimeTransform-JTwBQc-P.js +157 -0
  359. package/dist/src/sagemaker-B8D0L4rj.cjs +716 -0
  360. package/dist/src/sagemaker-CR2_AGdB.js +713 -0
  361. package/dist/src/sagemaker-Cd9qSQUV.js +714 -0
  362. package/dist/src/sagemaker-mKlltN4p.js +713 -0
  363. package/dist/src/scanner-PG_8lh8r.js +1971 -0
  364. package/dist/src/server/index.js +55 -55
  365. package/dist/src/server-Bmh7sd9F.js +155 -0
  366. package/dist/src/server-C7b8z6aC.js +63 -0
  367. package/dist/src/server-CAcovgtL.js +2 -0
  368. package/dist/src/server-CuuMfKlh.cjs +74 -0
  369. package/dist/src/server-DMPCj9jy.js +189 -0
  370. package/dist/src/session-BksXvRH_.cjs +69 -0
  371. package/dist/src/session-DOxUjqGQ.js +63 -0
  372. package/dist/src/session-Dujsc-b9.js +62 -0
  373. package/dist/src/session-VjtIxREd.js +62 -0
  374. package/dist/src/shared-Bkyz_7e5.cjs +2185 -0
  375. package/dist/src/shared-DDJg8ycC.js +1929 -0
  376. package/dist/src/shared-Dh3yfRBd.js +1927 -0
  377. package/dist/src/shared-tfPT8Tna.js +1928 -0
  378. package/dist/src/simulatedUser-6JdkyL3k.cjs +252 -0
  379. package/dist/src/simulatedUser-CFr2mr3M.js +248 -0
  380. package/dist/src/simulatedUser-DjwwUqx-.js +247 -0
  381. package/dist/src/slack-C_gIYiUs.js +144 -0
  382. package/dist/src/slack-DhNbz9CM.cjs +144 -0
  383. package/dist/src/slack-Dm2iI1zu.js +145 -0
  384. package/dist/src/strategies-BIY-bNul.js +2248 -0
  385. package/dist/src/strategies-C1KQQj9G.cjs +2420 -0
  386. package/dist/src/strategies-DM_3mReG.js +2385 -0
  387. package/dist/src/telemetry-BhMTibZO.js +2 -0
  388. package/dist/src/telemetry-C04d25BM.cjs +216 -0
  389. package/dist/src/telemetry-CIqy4fSC.js +201 -0
  390. package/dist/src/telemetry-CXozp_6C.js +205 -0
  391. package/dist/src/telemetry-g7PkBxmY.js +205 -0
  392. package/dist/src/togetherai-BvCim68-.js +50 -0
  393. package/dist/src/togetherai-CWyDCA9m.cjs +49 -0
  394. package/dist/src/togetherai-CeSE31vK.js +49 -0
  395. package/dist/src/togetherai-_2W0URf8.js +48 -0
  396. package/dist/src/traceContext-Brw3Oe41.js +1016 -0
  397. package/dist/src/traceContext-DpAYv27G.js +1015 -0
  398. package/dist/src/traceContext-KSqhzZI2.cjs +1032 -0
  399. package/dist/src/transcription-BySopazW.js +175 -0
  400. package/dist/src/transcription-DO4UPkRI.cjs +178 -0
  401. package/dist/src/transcription-RJGBa-pC.js +176 -0
  402. package/dist/src/transcription-fZenF3G5.js +175 -0
  403. package/dist/src/transform-BzhRc5z2.js +125 -0
  404. package/dist/src/transform-CPQu05u6.cjs +154 -0
  405. package/dist/src/transform-DAED8imp.js +126 -0
  406. package/dist/src/transform-DIOIQDmM.js +125 -0
  407. package/dist/src/typesafe-ByE0Kxfg.js +253 -0
  408. package/dist/src/typesafe-CFqGFY34.js +253 -0
  409. package/dist/src/typesafe-DCWIw-CP.cjs +253 -0
  410. package/dist/src/typesafe-DyHFV5Qk.js +254 -0
  411. package/dist/src/util-BHkj9joz.js +2049 -0
  412. package/dist/src/util-CICwIpmu.cjs +934 -0
  413. package/dist/src/util-CePiY2xZ.js +286 -0
  414. package/dist/src/util-CgT3uf4p.js +743 -0
  415. package/dist/src/util-Cj9drvOY.js +1770 -0
  416. package/dist/src/util-ClJRjlQA.cjs +357 -0
  417. package/dist/src/util-Cxf8VF2M.js +395 -0
  418. package/dist/src/util-D7RdV7rS.js +395 -0
  419. package/dist/src/util-DMNFhk47.js +351 -0
  420. package/dist/src/util-DNzh3M0z.js +396 -0
  421. package/dist/src/util-Df7rfMGb.cjs +2305 -0
  422. package/dist/src/util-Kf0KnG_6.js +2051 -0
  423. package/dist/src/util-LEbeiYw_.js +743 -0
  424. package/dist/src/util-WH8CgVs4.js +352 -0
  425. package/dist/src/util-cx6Xw8Lw.cjs +478 -0
  426. package/dist/src/util-qzBqirBH.js +2050 -0
  427. package/dist/src/vertex-CBAMfRz3.js +854 -0
  428. package/dist/src/vertex-CMP2IpN9.js +2 -0
  429. package/dist/src/vertex-CZ5YOotT.js +848 -0
  430. package/dist/src/vertex-DNsh1F1M.cjs +871 -0
  431. package/dist/src/vertexLive-BTXYj3-F.js +55 -0
  432. package/dist/src/vertexLive-Ba_LAqEF.cjs +55 -0
  433. package/dist/src/vertexLive-DM4sFaaj.js +56 -0
  434. package/dist/src/vertexLive-JqZOw7HC.js +55 -0
  435. package/dist/src/video-BY7Q2Gii.cjs +706 -0
  436. package/dist/src/video-CYElP-CK.js +703 -0
  437. package/dist/src/video-C_AdEDH0.js +702 -0
  438. package/dist/src/video-DGvjQ_4j.js +702 -0
  439. package/package.json +1 -1
  440. package/dist/src/accounts-Dpb43yde.cjs +0 -276
  441. package/dist/src/accounts-GKrO1olH.js +0 -229
  442. package/dist/src/accounts-e4FGOsji.js +0 -227
  443. package/dist/src/accounts-sUiEJfkB.js +0 -222
  444. package/dist/src/agentWorkspace-B8A_wuMR.cjs +0 -619
  445. package/dist/src/agentWorkspace-DSPIscXR.js +0 -593
  446. package/dist/src/agentWorkspace-DxUqd-XK.js +0 -592
  447. package/dist/src/agentWorkspace-n0uOJXhD.js +0 -592
  448. package/dist/src/agentic-utils-9bCj4twQ.js +0 -197
  449. package/dist/src/agentic-utils-CyCLuLoj.js +0 -197
  450. package/dist/src/agentic-utils-D23qtOlx.cjs +0 -237
  451. package/dist/src/agentic-utils-DuBMMNCw.js +0 -198
  452. package/dist/src/agents-6hDRNoYD.js +0 -777
  453. package/dist/src/agents-B8w2o7Sc.cjs +0 -777
  454. package/dist/src/agents-Ck0NXl7v.js +0 -777
  455. package/dist/src/agents-CwT3B1qB.js +0 -778
  456. package/dist/src/agents-DOLjfOEq.js +0 -266
  457. package/dist/src/agents-OcF9hq--.js +0 -267
  458. package/dist/src/agents-api-CnZZt8bn.cjs +0 -710
  459. package/dist/src/agents-api-D04u3bmL.js +0 -711
  460. package/dist/src/agents-api-DWw0_Vio.js +0 -710
  461. package/dist/src/agents-api-IWHEwp8i.js +0 -710
  462. package/dist/src/agents-mHt2Mh9O.cjs +0 -266
  463. package/dist/src/agents-sICccZCA.js +0 -266
  464. package/dist/src/ai.studio-Ci4rypDT.js +0 -2
  465. package/dist/src/ai.studio-KkQ6KaHa.js +0 -369
  466. package/dist/src/ai.studio-gSXK2cGI.js +0 -374
  467. package/dist/src/ai.studio-nQF_B4DH.cjs +0 -391
  468. package/dist/src/aimlapi-BeSk5BDV.js +0 -30
  469. package/dist/src/aimlapi-CzNUhdKu.cjs +0 -29
  470. package/dist/src/aimlapi-DCkazDPI.js +0 -29
  471. package/dist/src/aimlapi-WeH5B6K1.js +0 -28
  472. package/dist/src/anthropicMessages-AcNWTpYO.js +0 -115
  473. package/dist/src/anthropicMessages-BUtvzbpL.js +0 -114
  474. package/dist/src/anthropicMessages-DTWhZDCd.js +0 -114
  475. package/dist/src/anthropicMessages-lGVnSgyx.cjs +0 -114
  476. package/dist/src/app/assets/index-CyEI5aDN.js +0 -392
  477. package/dist/src/audio-BE_Duiu1.js +0 -104
  478. package/dist/src/audio-CiUd00k2.cjs +0 -104
  479. package/dist/src/audio-Dop6omna.js +0 -105
  480. package/dist/src/audio-EZNTInr_.js +0 -104
  481. package/dist/src/authoritativeMarkupInjection-BUqH6hNk.js +0 -78
  482. package/dist/src/authoritativeMarkupInjection-BmbJdJO0.cjs +0 -78
  483. package/dist/src/authoritativeMarkupInjection-Cpz12Y3w.js +0 -78
  484. package/dist/src/authoritativeMarkupInjection-W4XfcH91.js +0 -79
  485. package/dist/src/aws-B2Jqbnet.js +0 -2433
  486. package/dist/src/aws-DHtuUIzQ.js +0 -1149
  487. package/dist/src/aws-DLqXP6wY.js +0 -2433
  488. package/dist/src/aws-DfduhmwL.cjs +0 -2454
  489. package/dist/src/base-B9L2Xvpc.js +0 -255
  490. package/dist/src/base-BTZnIsuH.cjs +0 -305
  491. package/dist/src/base-BhaWNQPJ.js +0 -462
  492. package/dist/src/base-Br-G_Xou.js +0 -256
  493. package/dist/src/base-Bzo8hiUS.cjs +0 -467
  494. package/dist/src/base-C82fd2jq.js +0 -463
  495. package/dist/src/base-CRdQwC1W.js +0 -462
  496. package/dist/src/base-CjGwZNOQ.js +0 -255
  497. package/dist/src/bedrock-BdMru_ro.js +0 -1300
  498. package/dist/src/bedrock-CBUmfLX1.cjs +0 -2
  499. package/dist/src/bedrock-DBDxBaF9.js +0 -2
  500. package/dist/src/bedrock-DDrECM21.js +0 -1
  501. package/dist/src/bedrock-DVwkgvRS.js +0 -1
  502. package/dist/src/bestOfN-AKF5beq4.js +0 -159
  503. package/dist/src/bestOfN-C1UIVGJV.js +0 -160
  504. package/dist/src/bestOfN-DlkETbXy.cjs +0 -161
  505. package/dist/src/bestOfN-XIfEgU-g.js +0 -159
  506. package/dist/src/cache-BZaVoKaA.js +0 -2
  507. package/dist/src/cache-CEYhFUsH.js +0 -741
  508. package/dist/src/cache-Cbw1zH6q.js +0 -782
  509. package/dist/src/cache-CdaZNb75.js +0 -754
  510. package/dist/src/cache-DpuIzPxh.cjs +0 -856
  511. package/dist/src/cerebras-Bpn6FPkJ.js +0 -97
  512. package/dist/src/cerebras-CqJ0BRCJ.cjs +0 -97
  513. package/dist/src/cerebras-D4ILa_TY.js +0 -97
  514. package/dist/src/cerebras-DR8uc7ee.js +0 -98
  515. package/dist/src/chat-B7PZfaYp.cjs +0 -987
  516. package/dist/src/chat-BVuSjdEb.js +0 -227
  517. package/dist/src/chat-BsaZRjXN.js +0 -76
  518. package/dist/src/chat-C5liqe3Y.js +0 -226
  519. package/dist/src/chat-C9hyHf5B.js +0 -124
  520. package/dist/src/chat-CFLalAck.js +0 -226
  521. package/dist/src/chat-CN8JGrHu.js +0 -76
  522. package/dist/src/chat-CaHBBpCb.js +0 -123
  523. package/dist/src/chat-CcbLSghx.js +0 -123
  524. package/dist/src/chat-CoSN6sr2.js +0 -934
  525. package/dist/src/chat-CsJRFX8a.cjs +0 -226
  526. package/dist/src/chat-DFoZLvO_.js +0 -934
  527. package/dist/src/chat-DiLQvL7r.js +0 -77
  528. package/dist/src/chat-F6qVSDk3.cjs +0 -123
  529. package/dist/src/chat-Oq4FaJgI.cjs +0 -76
  530. package/dist/src/chat-knMfQUKz.js +0 -935
  531. package/dist/src/claude-agent-sdk-CJkOLpnI.js +0 -999
  532. package/dist/src/claude-agent-sdk-Ckn76PRD.js +0 -999
  533. package/dist/src/claude-agent-sdk-DX0gTr11.cjs +0 -1005
  534. package/dist/src/claude-agent-sdk-LMeikxoR.js +0 -1000
  535. package/dist/src/client-BFf1r6Z8.js +0 -352
  536. package/dist/src/client-CdXyDdDi.js +0 -351
  537. package/dist/src/client-DV8XMu7i.js +0 -351
  538. package/dist/src/client-iEXtOBKW.cjs +0 -357
  539. package/dist/src/cloud-B02qcpjf.js +0 -2
  540. package/dist/src/cloud-BlHP-g1v.cjs +0 -666
  541. package/dist/src/cloud-C9BI4isF.js +0 -287
  542. package/dist/src/cloud-CTTLNdvj.js +0 -657
  543. package/dist/src/cloud-D5X5yQ_d.js +0 -599
  544. package/dist/src/cloud-QxPkpsHA.js +0 -599
  545. package/dist/src/cloudflare-ai-DRTRT1fc.js +0 -132
  546. package/dist/src/cloudflare-ai-DgaXapAV.cjs +0 -133
  547. package/dist/src/cloudflare-ai-DkuJXijS.js +0 -134
  548. package/dist/src/cloudflare-ai-wy9QCHku.js +0 -133
  549. package/dist/src/cloudflare-gateway-9cAN8g29.cjs +0 -276
  550. package/dist/src/cloudflare-gateway-BVFMD292.js +0 -277
  551. package/dist/src/cloudflare-gateway-BuUI4p6I.js +0 -276
  552. package/dist/src/cloudflare-gateway-TlYHizbW.js +0 -276
  553. package/dist/src/codex-app-server-BPz_feug.cjs +0 -2162
  554. package/dist/src/codex-app-server-C9noXM9C.js +0 -2155
  555. package/dist/src/codex-app-server-CEmD-Y5U.js +0 -2
  556. package/dist/src/codex-app-server-DZolc18r.js +0 -2156
  557. package/dist/src/codex-app-server-Dd0A37nO.js +0 -2155
  558. package/dist/src/codex-sdk-BbxjBvBk.cjs +0 -1588
  559. package/dist/src/codex-sdk-BpXeIs-_.js +0 -1557
  560. package/dist/src/codex-sdk-BtQp5X0f.js +0 -1552
  561. package/dist/src/codex-sdk-CH0v9Bk1.js +0 -2
  562. package/dist/src/codex-sdk-CgrN7JB8.js +0 -1557
  563. package/dist/src/codex-security-B5fENNUr.js +0 -406
  564. package/dist/src/codex-security-C6uuJx-y.cjs +0 -411
  565. package/dist/src/codex-security-CifWtZR_.js +0 -407
  566. package/dist/src/codex-security-Kg2bOEKy.js +0 -406
  567. package/dist/src/cometapi-BFpIDLIx.js +0 -55
  568. package/dist/src/cometapi-C6O2PIrN.js +0 -56
  569. package/dist/src/cometapi-D5Yupc6F.js +0 -53
  570. package/dist/src/cometapi-DzgIwJzJ.cjs +0 -55
  571. package/dist/src/compatible-0jhmVfOp.js +0 -25
  572. package/dist/src/compatible-DdtwWdJi.cjs +0 -24
  573. package/dist/src/compatible-Di4nR3sU.js +0 -24
  574. package/dist/src/compatible-iJKLWdnf.js +0 -24
  575. package/dist/src/completion-B0_hVUDG.js +0 -119
  576. package/dist/src/completion-BdI6v0-Q.cjs +0 -123
  577. package/dist/src/completion-CWcJscwv.js +0 -118
  578. package/dist/src/conversationScoring-99EOPJRa.js +0 -373
  579. package/dist/src/conversationScoring-BIq4J0Cq.js +0 -374
  580. package/dist/src/conversationScoring-DARyeATr.cjs +0 -398
  581. package/dist/src/conversationScoring-DS48t4Hb.js +0 -373
  582. package/dist/src/crescendo-CebvXIu4.js +0 -730
  583. package/dist/src/crescendo-CxrLS0oo.js +0 -732
  584. package/dist/src/crescendo-DZQXBSkj.js +0 -733
  585. package/dist/src/crescendo-wjEx68uD.cjs +0 -734
  586. package/dist/src/custom-BiQ-aUNw.cjs +0 -620
  587. package/dist/src/custom-ByyB5Z93.js +0 -619
  588. package/dist/src/custom-C5jOevNb.js +0 -617
  589. package/dist/src/custom-CCrsCz8o.js +0 -618
  590. package/dist/src/dataUrl-C9J7wz9H.js +0 -3133
  591. package/dist/src/dataUrl-CGsBT7UZ.cjs +0 -3187
  592. package/dist/src/dataUrl-CzKvvWNO.js +0 -2868
  593. package/dist/src/decisions-BTusXCUx.cjs +0 -514
  594. package/dist/src/decisions-BYtL9edD.js +0 -515
  595. package/dist/src/decisions-jYix_gCF.js +0 -515
  596. package/dist/src/decisions-nxxfHRAN.js +0 -516
  597. package/dist/src/docker-DDIv4zkg.js +0 -93
  598. package/dist/src/docker-DVLp_5OG.js +0 -94
  599. package/dist/src/docker-INm9w0SY.cjs +0 -94
  600. package/dist/src/docker-sGuoCul_.js +0 -95
  601. package/dist/src/embedding-CAhqLLrR.js +0 -82
  602. package/dist/src/embedding-D94GAsti.cjs +0 -86
  603. package/dist/src/embedding-zb4MAzQy.js +0 -81
  604. package/dist/src/envoy-BMPszwEa.cjs +0 -60
  605. package/dist/src/envoy-Bp-s39_8.js +0 -60
  606. package/dist/src/envoy-BswDt-Ou.js +0 -61
  607. package/dist/src/envoy-rVbYcV80.js +0 -60
  608. package/dist/src/eval-B1-XfrC7.js +0 -2
  609. package/dist/src/eval-pC4qCvLw.js +0 -1920
  610. package/dist/src/evalResult-CzjCb5bd.js +0 -1300
  611. package/dist/src/evaluator-CNq2K7J_.js +0 -10578
  612. package/dist/src/evaluator-LtfxdxEu.js +0 -2
  613. package/dist/src/evaluatorHelpers-C5J0NYpQ.js +0 -601
  614. package/dist/src/evaluatorHelpers-DcdCglCs.cjs +0 -622
  615. package/dist/src/evaluatorHelpers-Rvb88W6B.js +0 -600
  616. package/dist/src/fetch-5HtnNhHg.js +0 -1556
  617. package/dist/src/fetch-BCwjoIFd.js +0 -1559
  618. package/dist/src/fetch-BhfUnKen.js +0 -1280
  619. package/dist/src/fetch-C08w4vVl.js +0 -9
  620. package/dist/src/fetch-DBxy8Tlb.cjs +0 -14
  621. package/dist/src/fetch-DYte6oQX.cjs +0 -1853
  622. package/dist/src/fetch-ElpfcAVG.js +0 -10
  623. package/dist/src/fetch-lM1OIaSt.js +0 -2
  624. package/dist/src/functionCallbackUtils-BCAdWfHO.js +0 -246
  625. package/dist/src/functionCallbackUtils-BYq9qOhG.js +0 -245
  626. package/dist/src/functionCallbackUtils-ByWkmVud.cjs +0 -262
  627. package/dist/src/functionCallbackUtils-D_C_JaFd.js +0 -245
  628. package/dist/src/gemini-image-CAlwaJhZ.js +0 -471
  629. package/dist/src/gemini-image-DJoVoOnZ.cjs +0 -471
  630. package/dist/src/gemini-image-Waio-9Xx.js +0 -472
  631. package/dist/src/gemini-image-vbY6Ftbf.js +0 -471
  632. package/dist/src/goat-BWbtyY9c.js +0 -512
  633. package/dist/src/goat-CXzzeCOQ.cjs +0 -515
  634. package/dist/src/goat-CfgvzSgZ.js +0 -514
  635. package/dist/src/goat-DLeoIHBp.js +0 -515
  636. package/dist/src/goblin-CmfCfwqk.cjs +0 -22
  637. package/dist/src/goblin-CtcaORRH.js +0 -22
  638. package/dist/src/goblin-DF6DDhM-.js +0 -22
  639. package/dist/src/goblin-Nai0xxBV.js +0 -23
  640. package/dist/src/google-ClpkLtKL.cjs +0 -142
  641. package/dist/src/google-CrFgKu9k.js +0 -143
  642. package/dist/src/google-Dj_EIBqS.js +0 -142
  643. package/dist/src/google-e4-vARv6.js +0 -142
  644. package/dist/src/graders-BN1IIa71.js +0 -15470
  645. package/dist/src/graders-C5sCfSP5.js +0 -2
  646. package/dist/src/hydra-B7RfXVBK.js +0 -2
  647. package/dist/src/hydra-C1cFN-Jg.js +0 -613
  648. package/dist/src/hydra-CK6Uc1ia.js +0 -612
  649. package/dist/src/hydra-Dg65rAP_.js +0 -610
  650. package/dist/src/hydra-Fqx8l_Xu.cjs +0 -612
  651. package/dist/src/image-BdlUDAtp.js +0 -163
  652. package/dist/src/image-C-KwEhwt.cjs +0 -163
  653. package/dist/src/image-C76fp6NK.cjs +0 -209
  654. package/dist/src/image-D75ehv3D.js +0 -482
  655. package/dist/src/image-DKtc5v5W.js +0 -209
  656. package/dist/src/image-DT_xOkJY.js +0 -163
  657. package/dist/src/image-DVpdllEE.js +0 -209
  658. package/dist/src/image-DXZ8AzMf.js +0 -481
  659. package/dist/src/image-DZl_1mvy.js +0 -164
  660. package/dist/src/image-DcTD7Ak0.cjs +0 -504
  661. package/dist/src/image-ndxEvBKB.js +0 -210
  662. package/dist/src/indirectWebPwn-70WA5x_q.js +0 -435
  663. package/dist/src/indirectWebPwn-BRVyd3qV.cjs +0 -463
  664. package/dist/src/indirectWebPwn-BsJVsu0q.js +0 -285
  665. package/dist/src/indirectWebPwn-Cw6yJu0i.js +0 -285
  666. package/dist/src/indirectWebPwn-D-PhJzo4.js +0 -286
  667. package/dist/src/indirectWebPwn-DRPHt2I8.js +0 -434
  668. package/dist/src/indirectWebPwn-DXtfFhd9.cjs +0 -285
  669. package/dist/src/indirectWebPwn-DvpNouzc.js +0 -434
  670. package/dist/src/interactions-5ixfW7Cl.js +0 -850
  671. package/dist/src/interactions-BOUzfmg1.cjs +0 -850
  672. package/dist/src/interactions-CSSXcGNc.js +0 -851
  673. package/dist/src/interactions-WB_sgkN0.js +0 -850
  674. package/dist/src/iterative-BShRNqjC.cjs +0 -549
  675. package/dist/src/iterative-BcW_ELtB.js +0 -548
  676. package/dist/src/iterative-BpHbHz8B.js +0 -547
  677. package/dist/src/iterative-YcchP12d.js +0 -545
  678. package/dist/src/iterativeImage-BMFE5Hl7.cjs +0 -419
  679. package/dist/src/iterativeImage-CkSaYLMY.js +0 -417
  680. package/dist/src/iterativeImage-DAEUlQX_.js +0 -418
  681. package/dist/src/iterativeImage-DeUSkEnj.js +0 -417
  682. package/dist/src/iterativeMeta-DbdaKdEO.cjs +0 -439
  683. package/dist/src/iterativeMeta-DcF9JWEK.js +0 -437
  684. package/dist/src/iterativeMeta-DkfPqWIC.js +0 -439
  685. package/dist/src/iterativeMeta-DkrpnVSs.js +0 -440
  686. package/dist/src/iterativeTree-CEMY1FhE.cjs +0 -879
  687. package/dist/src/iterativeTree-Cv5W4tX9.js +0 -877
  688. package/dist/src/iterativeTree-DGvomd3M.js +0 -876
  689. package/dist/src/iterativeTree-KbtC2Mkz.js +0 -878
  690. package/dist/src/knowledgeBase-AYRXn4wO.js +0 -163
  691. package/dist/src/knowledgeBase-BNqQfx01.js +0 -163
  692. package/dist/src/knowledgeBase-C0IaCCVs.js +0 -164
  693. package/dist/src/knowledgeBase-C2uj6wK4.cjs +0 -163
  694. package/dist/src/litellm-CN1ScAwZ.js +0 -147
  695. package/dist/src/litellm-CTjwiKSa.js +0 -146
  696. package/dist/src/litellm-Cd4Nj5ue.js +0 -145
  697. package/dist/src/litellm-DMqLpEBg.cjs +0 -146
  698. package/dist/src/live-Bt50-InO.cjs +0 -891
  699. package/dist/src/live-Bu2ujadG.js +0 -2
  700. package/dist/src/live-C3M52i3p.js +0 -891
  701. package/dist/src/live-CRfHMO3B.js +0 -892
  702. package/dist/src/live-iCIpO14m.js +0 -891
  703. package/dist/src/luma-ray-B8eHC4c8.cjs +0 -309
  704. package/dist/src/luma-ray-BIvkPw0s.js +0 -309
  705. package/dist/src/luma-ray-ChsiBxMA.js +0 -309
  706. package/dist/src/luma-ray-DAvKrInz.js +0 -310
  707. package/dist/src/mantleChat-5YeEXAZI.js +0 -154
  708. package/dist/src/mantleChat-D--mW3hl.js +0 -154
  709. package/dist/src/mantleChat-DHP3siNg.cjs +0 -154
  710. package/dist/src/mantleChat-wBfAX46o.js +0 -155
  711. package/dist/src/mcp-49jlEcTQ.js +0 -85
  712. package/dist/src/mcp-__PIz81I.js +0 -84
  713. package/dist/src/memoryPoisoning-Chxge74M.js +0 -111
  714. package/dist/src/memoryPoisoning-QH6NCUVE.js +0 -112
  715. package/dist/src/memoryPoisoning-tCxZt8Nz.js +0 -111
  716. package/dist/src/memoryPoisoning-ymrRItRR.cjs +0 -111
  717. package/dist/src/messages-BE_eZ7NA.js +0 -1127
  718. package/dist/src/messages-Bo638ShI.js +0 -1127
  719. package/dist/src/messages-BzR0-NQ1.js +0 -1128
  720. package/dist/src/messages-Cbg5Pfd0.cjs +0 -1161
  721. package/dist/src/mischievousUser-BtED2Z5Z.cjs +0 -51
  722. package/dist/src/mischievousUser-KqSOjrDJ.js +0 -51
  723. package/dist/src/mischievousUser-YMD41YNZ.js +0 -51
  724. package/dist/src/mischievousUser-zBxlNdCu.js +0 -52
  725. package/dist/src/modelslab-B8gZxtfE.js +0 -171
  726. package/dist/src/modelslab-C7bmVpTB.js +0 -170
  727. package/dist/src/modelslab-CCeQCTZg.js +0 -170
  728. package/dist/src/modelslab-CvBJGv7y.cjs +0 -170
  729. package/dist/src/nova-reel-BOEWsEKA.cjs +0 -272
  730. package/dist/src/nova-reel-BtyBXq5M.js +0 -273
  731. package/dist/src/nova-reel-C1eF3-EE.js +0 -272
  732. package/dist/src/nova-reel-YhgrxEKT.js +0 -272
  733. package/dist/src/nova-sonic-BaERP20w.js +0 -374
  734. package/dist/src/nova-sonic-CxgM3O-P.cjs +0 -374
  735. package/dist/src/nova-sonic-DJS22fC3.js +0 -375
  736. package/dist/src/nova-sonic-DwvwHyRX.js +0 -374
  737. package/dist/src/novita-D1l2tG0O.js +0 -116
  738. package/dist/src/novita-D84VM3v0.cjs +0 -115
  739. package/dist/src/novita-DGInvwfR.js +0 -115
  740. package/dist/src/novita-vXHkXhTg.js +0 -114
  741. package/dist/src/nscale-CU0Ldr00.js +0 -209
  742. package/dist/src/nscale-ClfKlQeM.cjs +0 -209
  743. package/dist/src/nscale-DxaVnF0x.js +0 -210
  744. package/dist/src/nscale-_poVxIrO.js +0 -207
  745. package/dist/src/openaiResponses-CJGsneNj.js +0 -317
  746. package/dist/src/openaiResponses-CKSl5Sdg.js +0 -319
  747. package/dist/src/openaiResponses-DC8rzFUc.js +0 -318
  748. package/dist/src/openaiResponses-rMHIA3dV.cjs +0 -318
  749. package/dist/src/openclaw-CCbvsNFW.cjs +0 -1344
  750. package/dist/src/openclaw-CZw1lCDZ.js +0 -1336
  751. package/dist/src/openclaw-ChFLgC-a.js +0 -1338
  752. package/dist/src/openclaw-DrPMoRrH.js +0 -1337
  753. package/dist/src/opencode-sdk-2EfIDhFp.cjs +0 -1018
  754. package/dist/src/opencode-sdk-CHw3F845.js +0 -1013
  755. package/dist/src/opencode-sdk-D0EGGxvy.js +0 -1012
  756. package/dist/src/opencode-sdk-jSS7NI2Q.js +0 -1012
  757. package/dist/src/openinterpreter-CY622xHC.js +0 -431
  758. package/dist/src/openinterpreter-DATyhuhP.js +0 -432
  759. package/dist/src/openinterpreter-DDUMyIf1.js +0 -431
  760. package/dist/src/openinterpreter-s5Tz6Lid.cjs +0 -435
  761. package/dist/src/pricing-C498twd2.js +0 -976
  762. package/dist/src/pricing-DBd_bMIh.cjs +0 -999
  763. package/dist/src/pricing-ISrMCskv.js +0 -976
  764. package/dist/src/promptfoo-6p0WG2ih.js +0 -286
  765. package/dist/src/promptfoo-BQRfgNs_.js +0 -285
  766. package/dist/src/promptfoo-Bqo88z20.cjs +0 -341
  767. package/dist/src/promptfoo-Cq5AVI3I.js +0 -286
  768. package/dist/src/providers-ATbeMX5E.cjs +0 -24180
  769. package/dist/src/providers-B7F1FiNI.js +0 -2
  770. package/dist/src/providers-DazIw8mI.js +0 -24039
  771. package/dist/src/providers-QvGlNAD0.js +0 -24437
  772. package/dist/src/quiverai-BPlNcLkV.cjs +0 -325
  773. package/dist/src/quiverai-By99-YmJ.js +0 -325
  774. package/dist/src/quiverai-CmmByDqo.js +0 -325
  775. package/dist/src/quiverai-HZkoJJqw.js +0 -326
  776. package/dist/src/registry-BLTnTfjT.cjs +0 -131
  777. package/dist/src/registry-BMC-COHT.js +0 -132
  778. package/dist/src/registry-C8UZtmBp.js +0 -131
  779. package/dist/src/registry-CfwEUYXG.js +0 -131
  780. package/dist/src/remoteGeneration-Bgg6kC5V.js +0 -370
  781. package/dist/src/remoteGeneration-CKJFE960.cjs +0 -482
  782. package/dist/src/remoteGeneration-DaxwJDKv.js +0 -370
  783. package/dist/src/remoteGeneration-vHMGVKr1.js +0 -371
  784. package/dist/src/responses-BvnyIHrq.js +0 -1099
  785. package/dist/src/responses-CERAgvf-.js +0 -1098
  786. package/dist/src/responses-CwgjeuOg.cjs +0 -1109
  787. package/dist/src/runtimeTransform-3RF9Avyg.cjs +0 -161
  788. package/dist/src/runtimeTransform-C51Z5j4H.js +0 -156
  789. package/dist/src/runtimeTransform-CKE_Iyv8.js +0 -157
  790. package/dist/src/runtimeTransform-Cs11xJpj.js +0 -156
  791. package/dist/src/sagemaker-BJ4dOCxE.js +0 -713
  792. package/dist/src/sagemaker-Bt3JUAWq.js +0 -714
  793. package/dist/src/sagemaker-QVKyLgLF.cjs +0 -716
  794. package/dist/src/sagemaker-l3IB8iTs.js +0 -713
  795. package/dist/src/scanner-DGjIiTZ1.js +0 -1971
  796. package/dist/src/server-BNaLZH6u.js +0 -63
  797. package/dist/src/server-CBMuQul3.js +0 -189
  798. package/dist/src/server-CMKKIzKv.cjs +0 -74
  799. package/dist/src/server-CN2IS9Cs.js +0 -155
  800. package/dist/src/server-ua4cqbjC.js +0 -2
  801. package/dist/src/session-CQIjq_HZ.cjs +0 -69
  802. package/dist/src/session-FTlg8sEu.js +0 -62
  803. package/dist/src/session-GBQXtPWp.js +0 -63
  804. package/dist/src/session-_0-rTdwY.js +0 -62
  805. package/dist/src/shared-BtuO-OAM.js +0 -1927
  806. package/dist/src/shared-Ci78wTZX.js +0 -1928
  807. package/dist/src/shared-Dd3rimdM.js +0 -1929
  808. package/dist/src/shared-KAjFxRre.cjs +0 -2185
  809. package/dist/src/simulatedUser--OjW6xCx.js +0 -247
  810. package/dist/src/simulatedUser-D0-slRye.cjs +0 -252
  811. package/dist/src/simulatedUser-D1Kh_cwA.js +0 -248
  812. package/dist/src/slack-BX0FUevO.js +0 -144
  813. package/dist/src/slack-CcwXFiJE.cjs +0 -144
  814. package/dist/src/slack-CnfqKfXp.js +0 -145
  815. package/dist/src/strategies-2ntcK4tN.js +0 -2248
  816. package/dist/src/strategies-DZIW7Zcs.js +0 -2385
  817. package/dist/src/strategies-YRDF2j-N.cjs +0 -2420
  818. package/dist/src/telemetry-CL8CVA4p.js +0 -205
  819. package/dist/src/telemetry-Cix90qqz.js +0 -201
  820. package/dist/src/telemetry-CkmlqTjV.js +0 -205
  821. package/dist/src/telemetry-DQH7l5bb.js +0 -2
  822. package/dist/src/telemetry-DUCXc1-r.cjs +0 -216
  823. package/dist/src/togetherai-3yUt5Ck7.js +0 -49
  824. package/dist/src/togetherai-BJUByLwt.cjs +0 -49
  825. package/dist/src/togetherai-Bh6KZkmd.js +0 -50
  826. package/dist/src/togetherai-DDl9yk3b.js +0 -48
  827. package/dist/src/traceContext-BiJVppjT.cjs +0 -1032
  828. package/dist/src/traceContext-CKKluULP.js +0 -1016
  829. package/dist/src/traceContext-D3Sk8fO-.js +0 -1015
  830. package/dist/src/transcription-BoVQKIVz.js +0 -175
  831. package/dist/src/transcription-Bs5u8780.js +0 -175
  832. package/dist/src/transcription-Dl654d1p.cjs +0 -178
  833. package/dist/src/transcription-VEvhM1Fu.js +0 -176
  834. package/dist/src/transform-BAbkGpvl.js +0 -125
  835. package/dist/src/transform-C_j4hUH8.js +0 -126
  836. package/dist/src/transform-Da86hs4M.cjs +0 -154
  837. package/dist/src/transform-_i1raQNo.js +0 -125
  838. package/dist/src/typesafe-CKXBeh82.cjs +0 -253
  839. package/dist/src/typesafe-D3VaGeNm.js +0 -253
  840. package/dist/src/typesafe-DYM-SFNH.js +0 -253
  841. package/dist/src/typesafe-LXmSbw8F.js +0 -254
  842. package/dist/src/util-41rb0XHX.js +0 -743
  843. package/dist/src/util-B0WlHYFM.js +0 -2049
  844. package/dist/src/util-BD1R_PsR.js +0 -1770
  845. package/dist/src/util-BLbM_ItC.js +0 -395
  846. package/dist/src/util-C72P0iIa.js +0 -352
  847. package/dist/src/util-C7MpGlJ6.cjs +0 -2305
  848. package/dist/src/util-CCtqagKc.js +0 -286
  849. package/dist/src/util-CM2Ec_uY.js +0 -2051
  850. package/dist/src/util-CSSAWO8v.js +0 -351
  851. package/dist/src/util-CkQc-fx3.cjs +0 -934
  852. package/dist/src/util-DcOlFTFa.cjs +0 -478
  853. package/dist/src/util-DluGTGVB.js +0 -395
  854. package/dist/src/util-PfQ60chz.js +0 -743
  855. package/dist/src/util-f14-CPij.js +0 -396
  856. package/dist/src/util-l9pXX3Eu.cjs +0 -357
  857. package/dist/src/util-o_BnlYqS.js +0 -2050
  858. package/dist/src/vertex-B_-gQgzc.js +0 -2
  859. package/dist/src/vertex-CU4gqoYa.js +0 -854
  860. package/dist/src/vertex-DZ42UHb3.js +0 -848
  861. package/dist/src/vertex-DsYQJA0T.cjs +0 -871
  862. package/dist/src/vertexLive-BvIaHKGB.js +0 -55
  863. package/dist/src/vertexLive-CTULqNx7.js +0 -56
  864. package/dist/src/vertexLive-DjJ_YQBe.cjs +0 -55
  865. package/dist/src/vertexLive-STUGcteB.js +0 -55
  866. package/dist/src/video-CAQGmtEV.js +0 -703
  867. package/dist/src/video-_FSTWlwX.js +0 -702
  868. package/dist/src/video-aBPJPWdt.js +0 -702
  869. package/dist/src/video-gDjkWv5m.cjs +0 -706
@@ -0,0 +1,1032 @@
1
+ const require_logger = require("./logger-DXUHJBHJ.cjs");
2
+ const require_fetch = require("./fetch-BKlgUg08.cjs");
3
+ const require_tables = require("./tables-CNr3LyS7.cjs");
4
+ const require_store = require("./store-D8Q5EmyP.cjs");
5
+ //#region src/tracing/providers/types.ts
6
+ var TraceProviderError = class extends Error {
7
+ statusCode;
8
+ retryable;
9
+ constructor(message, options = {}) {
10
+ super(message);
11
+ this.name = "TraceProviderError";
12
+ this.statusCode = options.statusCode;
13
+ this.retryable = options.retryable ?? false;
14
+ }
15
+ };
16
+ //#endregion
17
+ //#region src/tracing/providers/fetch.ts
18
+ const MAX_TRACE_RESPONSE_BYTES = 10485760;
19
+ function validateTraceProviderEndpoint(endpoint, providerName) {
20
+ let url;
21
+ try {
22
+ url = new URL(endpoint);
23
+ } catch {
24
+ throw new Error(`${providerName} provider endpoint must be a valid HTTP or HTTPS URL`);
25
+ }
26
+ const hasCredentialPath = require_tables.hasTraceCredentialPath(url.pathname);
27
+ if (!["http:", "https:"].includes(url.protocol) || url.username || url.password || url.search || url.hash || hasCredentialPath) throw new Error(`${providerName} provider endpoint must be an HTTP or HTTPS URL without credentials, query parameters, or fragments`);
28
+ }
29
+ async function releaseResponse(response, providerName) {
30
+ try {
31
+ await response.body?.cancel();
32
+ } catch (error) {
33
+ require_logger.logger.debug(`[${providerName}Provider] Failed to release response body: ${error}`);
34
+ }
35
+ }
36
+ async function readLimitedResponse(response, providerName, maxResponseBytes = MAX_TRACE_RESPONSE_BYTES) {
37
+ const reader = response.body?.getReader();
38
+ if (!reader) return "";
39
+ const decoder = new TextDecoder();
40
+ let byteLength = 0;
41
+ let body = "";
42
+ while (true) {
43
+ const { done, value } = await reader.read();
44
+ if (done) return body + decoder.decode();
45
+ byteLength += value.byteLength;
46
+ if (byteLength > maxResponseBytes) {
47
+ await reader.cancel();
48
+ throw new TraceProviderError(`${providerName} trace exceeds the maximum response size`);
49
+ }
50
+ body += decoder.decode(value, { stream: true });
51
+ }
52
+ }
53
+ //#endregion
54
+ //#region src/tracing/providers/braintrust.ts
55
+ const MAX_SPANS$2 = 1e4;
56
+ const TRACE_ID_PATTERN$2 = /^[0-9a-f]{32}$/i;
57
+ const PROJECT_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
58
+ function timestampMs(value) {
59
+ if (typeof value === "number" && Number.isFinite(value)) return value < 1e10 ? Math.round(value * 1e3) : Math.round(value);
60
+ if (typeof value === "string") {
61
+ const parsed = Date.parse(value);
62
+ return Number.isNaN(parsed) ? void 0 : parsed;
63
+ }
64
+ }
65
+ function transformSpan$1(row, options) {
66
+ const spanId = row.span_id || row.id;
67
+ const startTime = timestampMs(row.metrics?.start) ?? timestampMs(row.created);
68
+ if (!spanId || startTime === void 0) return null;
69
+ if (options?.earliestStartTime !== void 0 && startTime < options.earliestStartTime) return null;
70
+ const parentSpanId = row.span_parents?.slice().reverse().find((parent) => parent && parent !== spanId);
71
+ const name = typeof row.span_attributes?.name === "string" ? row.span_attributes.name : "braintrust.span";
72
+ const isToolSpan = row.span_attributes?.type === "tool";
73
+ const attributes = {
74
+ ...row.metadata,
75
+ ...row.span_attributes,
76
+ ...row.metrics && { "braintrust.metrics": row.metrics },
77
+ ...row.input !== void 0 && { "braintrust.input": row.input },
78
+ ...row.output !== void 0 && { "braintrust.output": row.output },
79
+ ...typeof row.span_attributes?.type === "string" && { "braintrust.span.type": row.span_attributes.type },
80
+ ...isToolSpan && require_store.getNormalizedToolAttributes(name, row.input)
81
+ };
82
+ return {
83
+ spanId,
84
+ ...parentSpanId && { parentSpanId },
85
+ name,
86
+ startTime,
87
+ ...timestampMs(row.metrics?.end) !== void 0 && { endTime: timestampMs(row.metrics?.end) },
88
+ attributes,
89
+ statusCode: row.error ? 2 : 1,
90
+ ...row.error ? { statusMessage: String(row.error) } : {}
91
+ };
92
+ }
93
+ /** Retrieve Braintrust project traces correlated with an OpenTelemetry trace ID. */
94
+ var BraintrustProvider = class {
95
+ config;
96
+ id = "braintrust";
97
+ baseUrl;
98
+ projectId;
99
+ token;
100
+ constructor(config) {
101
+ this.config = config;
102
+ if (!config.endpoint) throw new Error("Braintrust provider requires endpoint configuration");
103
+ if (!config.projectId || !PROJECT_ID_PATTERN.test(config.projectId)) throw new Error("Braintrust provider requires a valid projectId");
104
+ if (!config.auth?.token) throw new Error("Braintrust provider requires an auth token");
105
+ validateTraceProviderEndpoint(config.endpoint, "Braintrust");
106
+ if (config.timeout !== void 0 && (!Number.isSafeInteger(config.timeout) || config.timeout <= 0)) throw new Error("Braintrust provider timeout must be a positive integer");
107
+ this.baseUrl = config.endpoint.replace(/\/$/, "");
108
+ this.projectId = config.projectId;
109
+ this.token = config.auth.token;
110
+ }
111
+ buildHeaders() {
112
+ const headers = { ...this.config.headers };
113
+ for (const header of Object.keys(headers)) if ([
114
+ "accept",
115
+ "authorization",
116
+ "content-type"
117
+ ].includes(header.toLowerCase())) delete headers[header];
118
+ return {
119
+ ...headers,
120
+ Accept: "application/json",
121
+ "Content-Type": "application/json",
122
+ Authorization: `Bearer ${this.token}`
123
+ };
124
+ }
125
+ async fetchTrace(traceId, options) {
126
+ if (!TRACE_ID_PATTERN$2.test(traceId) || /^0+$/.test(traceId)) throw new TraceProviderError("Trace ID must contain 32 hexadecimal characters");
127
+ const normalizedTraceId = traceId.toLowerCase();
128
+ const maxSpans = Math.min(options?.maxSpans ?? MAX_SPANS$2, MAX_SPANS$2);
129
+ const query = [
130
+ "SELECT id, span_id, root_span_id, span_parents, created, input, output,",
131
+ " error, metadata, metrics, span_attributes",
132
+ `FROM project_logs('${this.projectId}', shape => 'traces')`,
133
+ "WHERE created >= now() - INTERVAL 1 DAY",
134
+ ` AND (metadata.trace_id = '${normalizedTraceId}'`,
135
+ ` OR metadata.promptfoo_trace_id = '${normalizedTraceId}'`,
136
+ ` OR metadata."promptfoo.trace_id" = '${normalizedTraceId}'`,
137
+ ` OR root_span_id = '${normalizedTraceId}')`,
138
+ `LIMIT ${maxSpans}`
139
+ ].join("\n");
140
+ const timeoutSignal = AbortSignal.timeout(this.config.timeout ?? 1e4);
141
+ const signal = options?.abortSignal ? AbortSignal.any([timeoutSignal, options.abortSignal]) : timeoutSignal;
142
+ const response = await require_fetch.fetchWithProxy(`${this.baseUrl}/btql`, {
143
+ disableTransientRetries: true,
144
+ method: "POST",
145
+ headers: this.buildHeaders(),
146
+ body: JSON.stringify({
147
+ query,
148
+ fmt: "json"
149
+ }),
150
+ redirect: "error",
151
+ signal
152
+ });
153
+ if (response.status === 404) {
154
+ await releaseResponse(response, "Braintrust");
155
+ throw new TraceProviderError("Braintrust BTQL endpoint returned HTTP 404; check the endpoint and project configuration", { statusCode: response.status });
156
+ }
157
+ if (!response.ok) {
158
+ await releaseResponse(response, "Braintrust");
159
+ throw new TraceProviderError(`Braintrust returned HTTP ${response.status}`, {
160
+ statusCode: response.status,
161
+ retryable: response.status === 408 || response.status === 429 || response.status >= 500
162
+ });
163
+ }
164
+ if (Number(response.headers.get("content-length")) > 10485760) {
165
+ await releaseResponse(response, "Braintrust");
166
+ throw new TraceProviderError("Braintrust trace exceeds the maximum response size");
167
+ }
168
+ const body = await readLimitedResponse(response, "Braintrust");
169
+ const result = JSON.parse(body);
170
+ const rows = result.rows ?? result.data;
171
+ if (!Array.isArray(rows)) throw new TraceProviderError("Braintrust returned an invalid query response");
172
+ if (rows.length === 0) return null;
173
+ const spans = [];
174
+ for (const row of rows) {
175
+ if (spans.length >= maxSpans) break;
176
+ const span = transformSpan$1(row, options);
177
+ if (!span) {
178
+ require_logger.logger.warn("[BraintrustProvider] Skipping malformed span");
179
+ continue;
180
+ }
181
+ spans.push(span);
182
+ }
183
+ return spans.length > 0 ? {
184
+ spans,
185
+ fetchedAt: Date.now()
186
+ } : null;
187
+ }
188
+ };
189
+ //#endregion
190
+ //#region src/tracing/providers/langfuse.ts
191
+ const MAX_SPANS$1 = 1e4;
192
+ const MAX_PAGE_SIZE = 1e3;
193
+ const TRACE_ID_PATTERN$1 = /^[0-9a-f]{32}$/i;
194
+ const RESERVED_ATTRIBUTE_KEY_SEGMENTS = /* @__PURE__ */ new Set([
195
+ "__proto__",
196
+ "constructor",
197
+ "prototype"
198
+ ]);
199
+ const GEN_AI_OPERATION_NAMES = {
200
+ AGENT: "invoke_agent",
201
+ CHAIN: "invoke_workflow",
202
+ EMBEDDING: "embeddings",
203
+ GENERATION: "chat",
204
+ RETRIEVER: "retrieval",
205
+ TOOL: "execute_tool"
206
+ };
207
+ const GEN_AI_MODEL_PARAMETER_NAMES = {
208
+ frequency_penalty: "gen_ai.request.frequency_penalty",
209
+ frequencyPenalty: "gen_ai.request.frequency_penalty",
210
+ max_tokens: "gen_ai.request.max_tokens",
211
+ maxTokens: "gen_ai.request.max_tokens",
212
+ presence_penalty: "gen_ai.request.presence_penalty",
213
+ presencePenalty: "gen_ai.request.presence_penalty",
214
+ seed: "gen_ai.request.seed",
215
+ temperature: "gen_ai.request.temperature",
216
+ top_k: "gen_ai.request.top_k",
217
+ top_p: "gen_ai.request.top_p",
218
+ topK: "gen_ai.request.top_k",
219
+ topP: "gen_ai.request.top_p"
220
+ };
221
+ function parseJsonValue(value) {
222
+ if (typeof value !== "string") return value;
223
+ try {
224
+ return JSON.parse(value);
225
+ } catch {
226
+ return value;
227
+ }
228
+ }
229
+ function safeAttributes(value) {
230
+ if (!value || typeof value !== "object" || Array.isArray(value)) return {};
231
+ return Object.fromEntries(Object.entries(value).filter(([key]) => !key.split(".").some((segment) => RESERVED_ATTRIBUTE_KEY_SEGMENTS.has(segment))));
232
+ }
233
+ function firstNumericValue(...values) {
234
+ return values.find((value) => typeof value === "number" && Number.isFinite(value));
235
+ }
236
+ function normalizedModelParameters(value) {
237
+ const attributes = {};
238
+ for (const [name, parameter] of Object.entries(safeAttributes(value))) if (Object.prototype.hasOwnProperty.call(GEN_AI_MODEL_PARAMETER_NAMES, name) && typeof parameter === "number" && Number.isFinite(parameter)) attributes[GEN_AI_MODEL_PARAMETER_NAMES[name]] = parameter;
239
+ return attributes;
240
+ }
241
+ function observationOperationName(observation, attributes) {
242
+ const originalOperation = attributes["gen_ai.operation.name"];
243
+ if (typeof originalOperation === "string" && originalOperation.trim()) return originalOperation;
244
+ if (typeof observation.type !== "string") return;
245
+ if (observation.type === "GENERATION" && typeof observation.name === "string") {
246
+ const normalizedName = observation.name.trim().toLowerCase();
247
+ if (/^text[ _-]completion(?:\b|$)/.test(normalizedName)) return "text_completion";
248
+ if (/^generate[ _-]content(?:\b|$)/.test(normalizedName)) return "generate_content";
249
+ }
250
+ return GEN_AI_OPERATION_NAMES[observation.type];
251
+ }
252
+ function observationAttributes(observation) {
253
+ const metadata = safeAttributes(observation.metadata);
254
+ const resourceAttributes = safeAttributes(metadata.resourceAttributes);
255
+ const telemetryAttributes = safeAttributes(metadata.attributes);
256
+ const usageDetails = safeAttributes(observation.usageDetails);
257
+ const costDetails = safeAttributes(observation.costDetails);
258
+ const inputCost = costDetails.input ?? observation.calculatedInputCost ?? observation.inputCost;
259
+ const outputCost = costDetails.output ?? observation.calculatedOutputCost ?? observation.outputCost;
260
+ const totalCost = costDetails.total ?? observation.calculatedTotalCost ?? observation.totalCost;
261
+ const inputTokens = firstNumericValue(observation.inputUsage, usageDetails.input, usageDetails.input_tokens, usageDetails.prompt_tokens);
262
+ const outputTokens = firstNumericValue(observation.outputUsage, usageDetails.output, usageDetails.output_tokens, usageDetails.completion_tokens);
263
+ const totalTokens = firstNumericValue(observation.totalUsage, usageDetails.total, usageDetails.total_tokens);
264
+ const reasoningTokens = firstNumericValue(usageDetails.reasoning, usageDetails.reasoning_tokens);
265
+ const cacheReadTokens = firstNumericValue(usageDetails.cache_read_input_tokens, usageDetails.cached_tokens);
266
+ const cacheCreationTokens = firstNumericValue(usageDetails.cache_creation_input_tokens);
267
+ const operationName = observationOperationName(observation, {
268
+ ...metadata,
269
+ ...telemetryAttributes
270
+ });
271
+ const parsedInput = parseJsonValue(observation.input);
272
+ const parsedOutput = parseJsonValue(observation.output);
273
+ const observationName = typeof observation.name === "string" && observation.name.trim() ? observation.name : void 0;
274
+ return {
275
+ ...resourceAttributes,
276
+ ...metadata,
277
+ ...normalizedModelParameters(observation.modelParameters),
278
+ ...operationName && { "gen_ai.operation.name": operationName },
279
+ ...typeof observation.type === "string" && { "langfuse.observation.type": observation.type },
280
+ ...observation.input !== void 0 && { "langfuse.input": parsedInput },
281
+ ...observation.type === "TOOL" && observationName && {
282
+ ...require_store.getNormalizedToolAttributes(observationName, parsedInput),
283
+ ...observation.input !== void 0 && { "gen_ai.tool.call.arguments": parsedInput },
284
+ ...observation.output !== void 0 && { "gen_ai.tool.call.result": parsedOutput }
285
+ },
286
+ ...observation.type === "AGENT" && observationName && { "gen_ai.agent.name": observationName },
287
+ ...observation.type === "CHAIN" && observationName && { "gen_ai.workflow.name": observationName },
288
+ ...observation.type === "EVALUATOR" && observationName && { "gen_ai.evaluation.name": observationName },
289
+ ...observation.type === "GUARDRAIL" && observationName && { "guardrail.name": observationName },
290
+ ...observation.output !== void 0 && { "langfuse.output": parsedOutput },
291
+ ...typeof observation.providedModelName === "string" && { "gen_ai.request.model": observation.providedModelName },
292
+ ...observation.modelParameters !== void 0 && observation.modelParameters !== null && { "langfuse.model.parameters": observation.modelParameters },
293
+ ...observation.usageDetails !== void 0 && observation.usageDetails !== null && { "langfuse.usage": observation.usageDetails },
294
+ ...inputTokens !== void 0 && { "gen_ai.usage.input_tokens": inputTokens },
295
+ ...outputTokens !== void 0 && { "gen_ai.usage.output_tokens": outputTokens },
296
+ ...totalTokens !== void 0 && {
297
+ "langfuse.usage.total_tokens": totalTokens,
298
+ "promptfoo.usage.total_tokens": totalTokens
299
+ },
300
+ ...reasoningTokens !== void 0 && { "gen_ai.usage.reasoning.output_tokens": reasoningTokens },
301
+ ...cacheReadTokens !== void 0 && { "gen_ai.usage.cache_read.input_tokens": cacheReadTokens },
302
+ ...cacheCreationTokens !== void 0 && { "gen_ai.usage.cache_creation.input_tokens": cacheCreationTokens },
303
+ ...typeof inputCost === "number" && { "langfuse.cost.input": inputCost },
304
+ ...typeof outputCost === "number" && { "langfuse.cost.output": outputCost },
305
+ ...typeof totalCost === "number" && { "langfuse.cost.total": totalCost },
306
+ ...telemetryAttributes
307
+ };
308
+ }
309
+ function transformObservation(observation, traceId, options) {
310
+ if (typeof observation.id !== "string" || !observation.id || typeof observation.traceId !== "string" || observation.traceId.toLowerCase() !== traceId || typeof observation.startTime !== "string") return null;
311
+ const startTime = Date.parse(observation.startTime);
312
+ if (Number.isNaN(startTime) || options?.earliestStartTime !== void 0 && startTime < options.earliestStartTime) return null;
313
+ const endTime = typeof observation.endTime === "string" ? Date.parse(observation.endTime) : NaN;
314
+ if (observation.endTime != null && (Number.isNaN(endTime) || endTime < startTime)) return null;
315
+ if (observation.parentObservationId != null && (typeof observation.parentObservationId !== "string" || !observation.parentObservationId || observation.parentObservationId === observation.id)) return null;
316
+ return {
317
+ spanId: observation.id,
318
+ ...typeof observation.parentObservationId === "string" && { parentSpanId: observation.parentObservationId },
319
+ name: typeof observation.name === "string" && observation.name.trim() ? observation.name : "langfuse.observation",
320
+ startTime,
321
+ ...Number.isFinite(endTime) && { endTime },
322
+ attributes: observationAttributes(observation),
323
+ statusCode: observation.level === "ERROR" ? 2 : 1,
324
+ ...typeof observation.statusMessage === "string" && observation.statusMessage && { statusMessage: observation.statusMessage }
325
+ };
326
+ }
327
+ function addObservations(observations, spans, seenSpanIds, traceId, maxSpans, options) {
328
+ for (const observation of observations) {
329
+ if (!observation || typeof observation !== "object" || Array.isArray(observation)) {
330
+ require_logger.logger.warn("[LangfuseProvider] Skipping malformed observation");
331
+ continue;
332
+ }
333
+ const span = transformObservation(observation, traceId, options);
334
+ if (!span) {
335
+ require_logger.logger.warn("[LangfuseProvider] Skipping malformed or unrelated observation");
336
+ continue;
337
+ }
338
+ if (!seenSpanIds.has(span.spanId)) {
339
+ seenSpanIds.add(span.spanId);
340
+ spans.push(span);
341
+ }
342
+ if (spans.length >= maxSpans) return;
343
+ }
344
+ }
345
+ function getNextCursor(response, seenCursors) {
346
+ const cursor = response.meta?.cursor;
347
+ if (cursor == null) return;
348
+ if (typeof cursor !== "string" || !cursor) throw new TraceProviderError("Langfuse returned an invalid pagination cursor");
349
+ if (seenCursors.has(cursor)) throw new TraceProviderError("Langfuse returned a repeated pagination cursor");
350
+ seenCursors.add(cursor);
351
+ return cursor;
352
+ }
353
+ function getNextPage(response) {
354
+ const { page, totalPages } = response.meta ?? {};
355
+ if (page == null && totalPages == null) return;
356
+ if (page === 1 && totalPages === 0 && Array.isArray(response.data) && response.data.length === 0) return;
357
+ if (typeof page !== "number" || !Number.isSafeInteger(page) || page < 1 || typeof totalPages !== "number" || !Number.isSafeInteger(totalPages) || totalPages < page) throw new TraceProviderError("Langfuse returned invalid pagination metadata");
358
+ return page < totalPages ? page + 1 : void 0;
359
+ }
360
+ /** Retrieve trace observations from Langfuse's public v2 Observations API. */
361
+ var LangfuseProvider = class {
362
+ config;
363
+ id = "langfuse";
364
+ baseUrl;
365
+ authorization;
366
+ constructor(config) {
367
+ this.config = config;
368
+ if (!config.endpoint) throw new Error("Langfuse provider requires endpoint configuration");
369
+ if (!config.auth?.username || !config.auth.password || config.auth.token) throw new Error("Langfuse provider requires public and secret keys as basic-auth credentials");
370
+ validateTraceProviderEndpoint(config.endpoint, "Langfuse");
371
+ if (config.timeout !== void 0 && (!Number.isSafeInteger(config.timeout) || config.timeout <= 0)) throw new Error("Langfuse provider timeout must be a positive integer");
372
+ this.baseUrl = config.endpoint.replace(/\/$/, "");
373
+ this.authorization = `Basic ${Buffer.from(`${config.auth.username}:${config.auth.password}`).toString("base64")}`;
374
+ }
375
+ buildHeaders() {
376
+ return {
377
+ ...Object.fromEntries(Object.entries(this.config.headers ?? {}).filter(([name]) => !["accept", "authorization"].includes(name.toLowerCase()))),
378
+ Accept: "application/json",
379
+ Authorization: this.authorization
380
+ };
381
+ }
382
+ async fetchTrace(traceId, options) {
383
+ if (!TRACE_ID_PATTERN$1.test(traceId) || /^0+$/.test(traceId)) throw new TraceProviderError("Trace ID must contain 32 hexadecimal characters");
384
+ const normalizedTraceId = traceId.toLowerCase();
385
+ const maxSpans = Math.min(Math.max(options?.maxSpans ?? MAX_SPANS$1, 1), MAX_SPANS$1);
386
+ const pageSize = Math.min(maxSpans, MAX_PAGE_SIZE);
387
+ const timeoutSignal = AbortSignal.timeout(this.config.timeout ?? 1e4);
388
+ const signal = options?.abortSignal ? AbortSignal.any([timeoutSignal, options.abortSignal]) : timeoutSignal;
389
+ const spans = [];
390
+ const seenSpanIds = /* @__PURE__ */ new Set();
391
+ const seenCursors = /* @__PURE__ */ new Set();
392
+ let page;
393
+ let cursor;
394
+ let remainingBytes = MAX_TRACE_RESPONSE_BYTES;
395
+ do {
396
+ const url = new URL(`${this.baseUrl}/api/public/v2/observations`);
397
+ url.searchParams.set("traceId", normalizedTraceId);
398
+ url.searchParams.set("fields", "core,basic,io,metadata,model,usage");
399
+ url.searchParams.set("limit", String(pageSize));
400
+ if (options?.earliestStartTime !== void 0) url.searchParams.set("fromStartTime", new Date(options.earliestStartTime).toISOString());
401
+ if (cursor) url.searchParams.set("cursor", cursor);
402
+ if (page) url.searchParams.set("page", String(page));
403
+ const response = await require_fetch.fetchWithProxy(url.toString(), {
404
+ disableTransientRetries: true,
405
+ method: "GET",
406
+ headers: this.buildHeaders(),
407
+ redirect: "error",
408
+ signal
409
+ });
410
+ if (response.status === 404) {
411
+ await releaseResponse(response, "Langfuse");
412
+ return null;
413
+ }
414
+ if (!response.ok) {
415
+ await releaseResponse(response, "Langfuse");
416
+ throw new TraceProviderError(`Langfuse returned HTTP ${response.status}`, {
417
+ statusCode: response.status,
418
+ retryable: response.status === 408 || response.status === 429 || response.status >= 500
419
+ });
420
+ }
421
+ if (Number(response.headers.get("content-length")) > remainingBytes) {
422
+ await releaseResponse(response, "Langfuse");
423
+ throw new TraceProviderError("Langfuse trace exceeds the maximum response size");
424
+ }
425
+ const body = await readLimitedResponse(response, "Langfuse", remainingBytes);
426
+ remainingBytes -= new TextEncoder().encode(body).byteLength;
427
+ const result = JSON.parse(body);
428
+ if (!Array.isArray(result.data)) throw new TraceProviderError("Langfuse returned an invalid observations response");
429
+ addObservations(result.data, spans, seenSpanIds, normalizedTraceId, maxSpans, options);
430
+ page = getNextPage(result);
431
+ cursor = page ? void 0 : getNextCursor(result, seenCursors);
432
+ } while ((page || cursor) && spans.length < maxSpans);
433
+ if (spans.length === 0) return null;
434
+ return {
435
+ spans,
436
+ fetchedAt: Date.now()
437
+ };
438
+ }
439
+ };
440
+ //#endregion
441
+ //#region src/tracing/providers/tempo.ts
442
+ const MAX_SPANS = 1e4;
443
+ const SPAN_KIND_NAMES = [
444
+ "unspecified",
445
+ "internal",
446
+ "server",
447
+ "client",
448
+ "producer",
449
+ "consumer"
450
+ ];
451
+ const TRACE_ID_PATTERN = /^[0-9a-f]{32}$/i;
452
+ const BASE64_TRACE_ID_PATTERN = /^[A-Za-z0-9+/]{22}(?:==)?$/;
453
+ const SPAN_ID_PATTERN = /^[0-9a-f]{16}$/i;
454
+ const BASE64_SPAN_ID_PATTERN = /^[A-Za-z0-9+/]{11}=?$/;
455
+ function nanoToMs(value) {
456
+ const milliseconds = BigInt(value) / 1000000n;
457
+ if (milliseconds < 0n || milliseconds > BigInt(Number.MAX_SAFE_INTEGER)) throw new Error("Span timestamp is outside the supported range");
458
+ return Number.parseInt(milliseconds.toString(), 10);
459
+ }
460
+ function extractAttributeValue(value) {
461
+ if (value.stringValue !== void 0) return value.stringValue;
462
+ if (value.intValue !== void 0) {
463
+ const number = Number(value.intValue);
464
+ return Number.isSafeInteger(number) ? number : value.intValue;
465
+ }
466
+ if (value.doubleValue !== void 0) return value.doubleValue;
467
+ if (value.boolValue !== void 0) return value.boolValue;
468
+ if (value.bytesValue !== void 0) return value.bytesValue;
469
+ if (value.arrayValue) return (value.arrayValue.values ?? []).map(extractAttributeValue);
470
+ if (value.kvlistValue) return attributesToRecord(value.kvlistValue.values);
471
+ }
472
+ function attributesToRecord(attributes) {
473
+ return Object.fromEntries((attributes ?? []).map(({ key, value }) => [key, extractAttributeValue(value)]));
474
+ }
475
+ function decodeId(id, hexPattern, base64Pattern, byteLength) {
476
+ if (!id) return;
477
+ if (hexPattern.test(id)) return /^0+$/.test(id) ? void 0 : id.toLowerCase();
478
+ if (!base64Pattern.test(id)) return;
479
+ const decoded = Buffer.from(id, "base64");
480
+ if (decoded.length !== byteLength || decoded.toString("base64").replace(/=+$/, "") !== id.replace(/=+$/, "")) return;
481
+ const hexId = decoded.toString("hex");
482
+ return /^0+$/.test(hexId) ? void 0 : hexId;
483
+ }
484
+ function normalizeStatusCode(code) {
485
+ if (typeof code === "number") return code;
486
+ if (!code) return;
487
+ const numeric = Number(code);
488
+ if (!Number.isNaN(numeric)) return numeric;
489
+ switch (code.toUpperCase()) {
490
+ case "STATUS_CODE_OK":
491
+ case "OK": return 1;
492
+ case "STATUS_CODE_ERROR":
493
+ case "ERROR": return 2;
494
+ case "STATUS_CODE_UNSET":
495
+ case "UNSET": return 0;
496
+ default: return;
497
+ }
498
+ }
499
+ function transformSpan(span, traceId, resourceAttributes, scopeName) {
500
+ if (decodeId(span.traceId, TRACE_ID_PATTERN, BASE64_TRACE_ID_PATTERN, 16) !== traceId.toLowerCase()) throw new Error("Span trace ID must match the requested trace");
501
+ const spanId = decodeId(span.spanId, SPAN_ID_PATTERN, BASE64_SPAN_ID_PATTERN, 8);
502
+ if (!spanId) throw new Error("Span ID must be a valid nonzero eight-byte identifier");
503
+ const parentSpanId = decodeId(span.parentSpanId, SPAN_ID_PATTERN, BASE64_SPAN_ID_PATTERN, 8);
504
+ if (span.parentSpanId && !parentSpanId) throw new Error("Parent span ID must be a valid nonzero eight-byte identifier");
505
+ if (typeof span.name !== "string" || span.name.trim().length === 0) throw new Error("Span name must be a nonempty string");
506
+ if (span.status?.message !== void 0 && typeof span.status.message !== "string") throw new Error("Span status message must be a string");
507
+ const startTime = nanoToMs(span.startTimeUnixNano);
508
+ const endTimeUnixNano = span.endTimeUnixNano;
509
+ const endTime = endTimeUnixNano ? nanoToMs(endTimeUnixNano) : void 0;
510
+ if (endTimeUnixNano && BigInt(endTimeUnixNano) < BigInt(span.startTimeUnixNano)) throw new Error("Span end time must not precede its start time");
511
+ return {
512
+ spanId,
513
+ parentSpanId,
514
+ name: span.name,
515
+ startTime,
516
+ endTime,
517
+ attributes: {
518
+ ...resourceAttributes,
519
+ ...attributesToRecord(span.attributes),
520
+ ...scopeName && { "otel.scope.name": scopeName },
521
+ ...typeof span.kind === "number" && {
522
+ "otel.span.kind": SPAN_KIND_NAMES[span.kind] ?? "unspecified",
523
+ "otel.span.kind_code": span.kind
524
+ },
525
+ ...typeof span.kind === "string" && { "otel.span.kind": span.kind.replace(/^SPAN_KIND_/i, "").toLowerCase() }
526
+ },
527
+ statusCode: normalizeStatusCode(span.status?.code),
528
+ statusMessage: span.status?.message
529
+ };
530
+ }
531
+ var TempoProvider = class {
532
+ config;
533
+ id = "tempo";
534
+ baseUrl;
535
+ constructor(config) {
536
+ this.config = config;
537
+ if (!config.endpoint) throw new Error("Tempo provider requires endpoint configuration");
538
+ validateTraceProviderEndpoint(config.endpoint, "Tempo");
539
+ if (config.timeout !== void 0 && (!Number.isSafeInteger(config.timeout) || config.timeout <= 0)) throw new Error("Tempo provider timeout must be a positive integer");
540
+ this.baseUrl = config.endpoint.replace(/\/$/, "");
541
+ }
542
+ buildHeaders() {
543
+ const headers = { ...this.config.headers };
544
+ const hasConfiguredAuthentication = Boolean(this.config.auth?.token || this.config.auth?.username && this.config.auth?.password);
545
+ for (const header of Object.keys(headers)) {
546
+ const normalizedHeader = header.toLowerCase();
547
+ if (normalizedHeader === "accept" || hasConfiguredAuthentication && normalizedHeader === "authorization") delete headers[header];
548
+ }
549
+ headers.Accept = "application/json";
550
+ if (this.config.auth?.token) headers.Authorization = `Bearer ${this.config.auth.token}`;
551
+ else if (this.config.auth?.username && this.config.auth?.password) headers.Authorization = `Basic ${Buffer.from(`${this.config.auth.username}:${this.config.auth.password}`).toString("base64")}`;
552
+ return headers;
553
+ }
554
+ transformSpans(data, traceId) {
555
+ const spans = [];
556
+ const seenSpanIds = /* @__PURE__ */ new Set();
557
+ let malformedSpans = 0;
558
+ for (const batch of data.batches ?? []) {
559
+ if (!batch || !Array.isArray(batch.scopeSpans)) {
560
+ malformedSpans++;
561
+ continue;
562
+ }
563
+ const resourceAttributes = attributesToRecord(batch.resource?.attributes);
564
+ for (const scopeSpan of batch.scopeSpans) {
565
+ if (!scopeSpan || !Array.isArray(scopeSpan.spans)) {
566
+ malformedSpans++;
567
+ continue;
568
+ }
569
+ for (const span of scopeSpan.spans) {
570
+ if (spans.length >= MAX_SPANS) return spans;
571
+ try {
572
+ const normalizedSpan = transformSpan(span, traceId, resourceAttributes, scopeSpan.scope?.name);
573
+ if (normalizedSpan && !seenSpanIds.has(normalizedSpan.spanId)) {
574
+ seenSpanIds.add(normalizedSpan.spanId);
575
+ spans.push(normalizedSpan);
576
+ }
577
+ } catch {
578
+ malformedSpans++;
579
+ }
580
+ }
581
+ }
582
+ }
583
+ if (malformedSpans > 0) require_logger.logger.warn(`[TempoProvider] Skipped ${malformedSpans} malformed spans`);
584
+ return spans;
585
+ }
586
+ async fetchTrace(traceId, options) {
587
+ if (!TRACE_ID_PATTERN.test(traceId) || /^0+$/.test(traceId)) throw new TraceProviderError("Trace ID must contain 32 hexadecimal characters");
588
+ const timeoutSignal = AbortSignal.timeout(this.config.timeout ?? 1e4);
589
+ const signal = options?.abortSignal ? AbortSignal.any([timeoutSignal, options.abortSignal]) : timeoutSignal;
590
+ const response = await require_fetch.fetchWithProxy(`${this.baseUrl}/api/traces/${traceId}`, {
591
+ disableTransientRetries: true,
592
+ method: "GET",
593
+ headers: this.buildHeaders(),
594
+ redirect: "error",
595
+ signal
596
+ });
597
+ if (response.status === 404) {
598
+ await releaseResponse(response, "Tempo");
599
+ return null;
600
+ }
601
+ if (!response.ok) {
602
+ await releaseResponse(response, "Tempo");
603
+ throw new TraceProviderError(`Tempo returned HTTP ${response.status}`, {
604
+ statusCode: response.status,
605
+ retryable: response.status === 408 || response.status === 429 || response.status >= 500
606
+ });
607
+ }
608
+ if (Number(response.headers.get("content-length")) > 10485760) {
609
+ await releaseResponse(response, "Tempo");
610
+ throw new TraceProviderError("Tempo trace exceeds the maximum response size");
611
+ }
612
+ const body = await readLimitedResponse(response, "Tempo");
613
+ const data = JSON.parse(body);
614
+ if (!Array.isArray(data.batches)) throw new TraceProviderError("Tempo returned an invalid trace response");
615
+ return {
616
+ spans: this.transformSpans(data, traceId),
617
+ fetchedAt: Date.now()
618
+ };
619
+ }
620
+ };
621
+ //#endregion
622
+ //#region src/tracing/providers/index.ts
623
+ /**
624
+ * Create a trace provider instance based on configuration.
625
+ *
626
+ * @param config - Provider configuration specifying type and connection details
627
+ * @returns A TraceProvider instance for the specified backend
628
+ * @throws Error if the provider type is not supported or misconfigured
629
+ */
630
+ function createTraceProvider(config) {
631
+ switch (config.id) {
632
+ case "braintrust": return new BraintrustProvider(config);
633
+ case "langfuse": return new LangfuseProvider(config);
634
+ case "tempo": return new TempoProvider(config);
635
+ case "local": throw new Error("Local provider id should use TraceStore directly, not createTraceProvider()");
636
+ default: throw new Error(`Unknown trace provider id: ${config.id}`);
637
+ }
638
+ }
639
+ /**
640
+ * Check if a provider configuration specifies an external backend.
641
+ * Returns true if the config has an id other than 'local' and has an endpoint.
642
+ *
643
+ * @param config - Optional provider configuration
644
+ * @returns true if this is an external provider (Tempo, Jaeger, etc.)
645
+ */
646
+ function isExternalTraceProvider(config) {
647
+ return !!config && config.id !== "local" && !!config.endpoint;
648
+ }
649
+ //#endregion
650
+ //#region src/tracing/traceContext.ts
651
+ const DEFAULT_MAX_RETRIES = 3;
652
+ const DEFAULT_RETRY_DELAY_MS = 500;
653
+ const DEFAULT_QUERY_DELAY_MS = 3e3;
654
+ const EXTERNAL_SPAN_BATCH_SIZE = 500;
655
+ const inFlightExternalFetches = /* @__PURE__ */ new WeakMap();
656
+ const SPAN_KIND_MAP = {
657
+ 0: "unspecified",
658
+ 1: "internal",
659
+ 2: "server",
660
+ 3: "client",
661
+ 4: "producer",
662
+ 5: "consumer"
663
+ };
664
+ function resolveSpanKind(span) {
665
+ const attributes = span.attributes || {};
666
+ const attributeKind = attributes["span.kind"] || attributes["otel.span.kind"] || attributes["spanKind"] || attributes["kind"];
667
+ if (attributeKind) return `${attributeKind}`.toLowerCase();
668
+ const numericKind = attributes["otel.span.kind_code"];
669
+ if (typeof numericKind === "number" && numericKind in SPAN_KIND_MAP) return SPAN_KIND_MAP[numericKind];
670
+ return "unspecified";
671
+ }
672
+ function mapStatusCode(span) {
673
+ switch (span.statusCode) {
674
+ case 1: return "ok";
675
+ case 2: return "error";
676
+ default: return "unset";
677
+ }
678
+ }
679
+ function createTraceSpans(spans) {
680
+ const spansById = new Map(spans.map((span) => [span.spanId, span]));
681
+ const depthMap = /* @__PURE__ */ new Map();
682
+ return spans.map((span) => {
683
+ const durationMs = Math.max(0, (span.endTime ?? span.startTime) - span.startTime);
684
+ return {
685
+ spanId: span.spanId,
686
+ parentSpanId: span.parentSpanId,
687
+ name: span.name,
688
+ kind: resolveSpanKind(span),
689
+ startTime: span.startTime,
690
+ endTime: span.endTime,
691
+ durationMs,
692
+ attributes: span.attributes || {},
693
+ status: {
694
+ code: mapStatusCode(span),
695
+ message: span.statusMessage
696
+ },
697
+ depth: computeSpanDepth(span, spansById, depthMap) ?? 0,
698
+ events: []
699
+ };
700
+ });
701
+ }
702
+ function deriveInsights(traceSpans) {
703
+ if (traceSpans.length === 0) return [];
704
+ const insights = [];
705
+ traceSpans.filter((span) => span.status.code === "error").forEach((span) => {
706
+ const statusMessage = span.status.message ? `: ${span.status.message}` : "";
707
+ insights.push(`Error span "${span.name}" (${span.spanId.slice(0, 8)})${statusMessage}`);
708
+ });
709
+ traceSpans.map((span) => ({
710
+ span,
711
+ toolName: require_store.getToolNameFromAttributes(span.attributes)
712
+ })).filter((entry) => entry.toolName).forEach(({ span, toolName }) => {
713
+ insights.push(`Tool call ${toolName} via "${span.name}" (duration ${span.durationMs ?? 0}ms)`);
714
+ });
715
+ traceSpans.filter((span) => span.attributes["guardrail.name"] || span.attributes["guardrails.decision"]).forEach((span) => {
716
+ const decision = span.attributes["guardrails.decision"] ?? span.attributes["guardrail.decision"];
717
+ insights.push(`Guardrail ${span.attributes["guardrail.name"] ?? span.name} decision: ${decision ?? "unknown"}`);
718
+ });
719
+ return insights.slice(0, 20);
720
+ }
721
+ function extractTraceIdFromTraceparent(traceparent) {
722
+ if (!traceparent) return null;
723
+ const parts = traceparent.split("-");
724
+ const [version, traceId, parentSpanId, flags] = parts;
725
+ const validPartCount = version?.toLowerCase() === "00" ? parts.length === 4 : parts.length >= 4;
726
+ if (!/^[0-9a-f]{2}$/i.test(version) || version.toLowerCase() === "ff" || !validPartCount || !/^[0-9a-f]{32}$/i.test(traceId) || /^0+$/.test(traceId) || !/^[0-9a-f]{16}$/i.test(parentSpanId) || /^0+$/.test(parentSpanId) || !/^[0-9a-f]{2}$/i.test(flags)) return null;
727
+ return traceId.toLowerCase();
728
+ }
729
+ /**
730
+ * Compute the depth of a span in the span tree, rejecting cyclic parent chains.
731
+ */
732
+ function computeSpanDepth(span, spanMap, depthCache) {
733
+ const ancestors = [];
734
+ const visited = /* @__PURE__ */ new Set();
735
+ let current = span;
736
+ let depth = -1;
737
+ while (current) {
738
+ const cachedDepth = depthCache.get(current.spanId);
739
+ if (cachedDepth !== void 0) {
740
+ if (cachedDepth === null) {
741
+ for (const ancestor of ancestors) depthCache.set(ancestor.spanId, null);
742
+ return null;
743
+ }
744
+ depth = cachedDepth;
745
+ break;
746
+ }
747
+ if (visited.has(current.spanId)) {
748
+ for (const ancestor of ancestors) depthCache.set(ancestor.spanId, null);
749
+ return null;
750
+ }
751
+ visited.add(current.spanId);
752
+ ancestors.push(current);
753
+ current = current.parentSpanId ? spanMap.get(current.parentSpanId) : void 0;
754
+ }
755
+ for (let index = ancestors.length - 1; index >= 0; index--) {
756
+ depth += 1;
757
+ depthCache.set(ancestors[index].spanId, depth);
758
+ }
759
+ return depth;
760
+ }
761
+ /**
762
+ * Drop malformed parent cycles before persisting or processing external spans.
763
+ */
764
+ function discardCyclicExternalSpans(spans) {
765
+ const spanMap = new Map(spans.map((span) => [span.spanId, span]));
766
+ const depthCache = /* @__PURE__ */ new Map();
767
+ const cyclicSpanIds = /* @__PURE__ */ new Set();
768
+ const validSpans = spans.filter((span) => {
769
+ if (computeSpanDepth(span, spanMap, depthCache) === null) {
770
+ cyclicSpanIds.add(span.spanId);
771
+ return false;
772
+ }
773
+ return true;
774
+ });
775
+ if (cyclicSpanIds.size > 0) require_logger.logger.warn(`[TraceContext] Skipping ${cyclicSpanIds.size} spans with cyclic parent relationships`);
776
+ return validSpans;
777
+ }
778
+ /**
779
+ * Store spans fetched from an external provider in the local database.
780
+ * This allows the spans to be displayed in the UI and persisted.
781
+ */
782
+ async function storeExternalSpans(traceId, spans) {
783
+ try {
784
+ const traceStore = require_store.getTraceStore();
785
+ for (let index = 0; index < spans.length; index += EXTERNAL_SPAN_BATCH_SIZE) if (!(await traceStore.addSpans(traceId, spans.slice(index, index + EXTERNAL_SPAN_BATCH_SIZE), {
786
+ warnIfMissingTrace: false,
787
+ ...index > 0 && { skipTraceCheck: true }
788
+ })).stored) return false;
789
+ require_logger.logger.debug(`[TraceContext] Stored ${spans.length} spans from external provider`);
790
+ return true;
791
+ } catch (error) {
792
+ require_logger.logger.warn(`[TraceContext] Failed to store external spans: ${error}`);
793
+ return false;
794
+ }
795
+ }
796
+ function redactExternalSpan(span, redactAttributes) {
797
+ const attributes = span.attributes ?? {};
798
+ const sanitizedAttributes = require_store.sanitizeTraceAttributes(attributes, {
799
+ redactAttributes,
800
+ sanitizeSensitiveAttributes: false,
801
+ truncateValues: false
802
+ });
803
+ const redactedValues = /* @__PURE__ */ new Set();
804
+ const pendingValues = [{
805
+ original: attributes,
806
+ sanitized: sanitizedAttributes
807
+ }];
808
+ while (pendingValues.length > 0) {
809
+ const { original, sanitized } = pendingValues.pop();
810
+ if (typeof original !== "object") {
811
+ if (original !== void 0 && sanitized === "[REDACTED]") {
812
+ const value = String(original);
813
+ if (value.length > 0) redactedValues.add(value);
814
+ }
815
+ continue;
816
+ }
817
+ if (!original) continue;
818
+ if (Array.isArray(original)) {
819
+ for (let index = 0; index < original.length; index++) pendingValues.push({
820
+ original: original[index],
821
+ sanitized: sanitized === "[REDACTED]" ? sanitized : sanitized?.[index]
822
+ });
823
+ continue;
824
+ }
825
+ for (const [key, value] of Object.entries(original)) pendingValues.push({
826
+ original: value,
827
+ sanitized: sanitized === "[REDACTED]" ? sanitized : sanitized?.[key]
828
+ });
829
+ }
830
+ const orderedRedactedValues = [...redactedValues].sort((left, right) => right.length - left.length);
831
+ const scrubEcho = (value) => {
832
+ if (typeof value !== "string") return value;
833
+ let sanitizedValue = value;
834
+ for (const redactedValue of orderedRedactedValues) sanitizedValue = sanitizedValue.split(redactedValue).join("[REDACTED]");
835
+ return sanitizedValue;
836
+ };
837
+ return {
838
+ ...span,
839
+ name: scrubEcho(span.name),
840
+ statusMessage: scrubEcho(span.statusMessage),
841
+ attributes: sanitizedAttributes
842
+ };
843
+ }
844
+ function getProviderFetchOptions(spanOptions, abortSignal) {
845
+ const requiresPostFetchFiltering = spanOptions.includeInternalSpans === false || Boolean(spanOptions.spanFilter?.length);
846
+ const providerOptions = {
847
+ ...spanOptions.earliestStartTime !== void 0 && { earliestStartTime: spanOptions.earliestStartTime },
848
+ ...spanOptions.maxSpans !== void 0 && !requiresPostFetchFiltering && { maxSpans: spanOptions.maxSpans },
849
+ ...abortSignal && { abortSignal }
850
+ };
851
+ return Object.keys(providerOptions).length > 0 ? providerOptions : void 0;
852
+ }
853
+ /**
854
+ * Fetch trace context from an external provider (Tempo, Jaeger, etc.)
855
+ */
856
+ async function fetchFromExternalProvider(traceId, providerConfig, options) {
857
+ const { queryDelay, maxRetries, retryDelayMs, redactAttributes, abortSignal, ...spanOptions } = options;
858
+ const providerFetchOptions = getProviderFetchOptions(spanOptions, abortSignal);
859
+ let provider;
860
+ try {
861
+ provider = createTraceProvider(providerConfig);
862
+ } catch (error) {
863
+ require_logger.logger.warn(`[TraceContext] Failed to initialize trace provider: ${error}`);
864
+ return null;
865
+ }
866
+ if (queryDelay > 0) {
867
+ require_logger.logger.debug(`[TraceContext] Waiting ${queryDelay}ms for spans to arrive at external backend`);
868
+ await waitForRetry(queryDelay, abortSignal);
869
+ }
870
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
871
+ if (abortSignal?.aborted) throw createTraceAbortError(abortSignal);
872
+ try {
873
+ const result = await provider.fetchTrace(traceId, providerFetchOptions);
874
+ const validSpans = result ? discardCyclicExternalSpans(result.spans) : [];
875
+ if (!result || validSpans.length === 0) {
876
+ if (attempt === maxRetries) {
877
+ require_logger.logger.debug(`[TraceContext] No spans found for trace ${traceId} from ${provider.id} after ${attempt + 1} attempts`);
878
+ return null;
879
+ }
880
+ require_logger.logger.debug(`[TraceContext] No spans yet for trace ${traceId} from ${provider.id}, retrying in ${retryDelayMs}ms (attempt ${attempt + 1}/${maxRetries})`);
881
+ await waitForRetry(retryDelayMs, abortSignal);
882
+ continue;
883
+ }
884
+ if (!await storeExternalSpans(traceId, redactAttributes?.length ? validSpans.map((span) => redactExternalSpan(span, redactAttributes)) : validSpans)) return null;
885
+ const spans = await require_store.getTraceStore().getSpans(traceId, spanOptions);
886
+ if (spans.length === 0) return null;
887
+ const traceSpans = createTraceSpans(spans);
888
+ const insights = deriveInsights(traceSpans);
889
+ require_logger.logger.debug(`[TraceContext] Resolved ${traceSpans.length} spans for trace ${traceId} from ${provider.id} with ${insights.length} insights`);
890
+ return {
891
+ traceId,
892
+ spans: traceSpans,
893
+ insights,
894
+ fetchedAt: result.fetchedAt
895
+ };
896
+ } catch (error) {
897
+ if (abortSignal?.aborted) throw createTraceAbortError(abortSignal);
898
+ require_logger.logger.error(`[TraceContext] Failed to fetch from ${provider.id}: ${error}`);
899
+ if (attempt === maxRetries || error instanceof TraceProviderError && !error.retryable) return null;
900
+ await waitForRetry(retryDelayMs, abortSignal);
901
+ }
902
+ }
903
+ return null;
904
+ }
905
+ function createTraceAbortError(signal) {
906
+ const error = /* @__PURE__ */ new Error("cancelled by user");
907
+ error.cause = signal?.reason;
908
+ error.name = "AbortError";
909
+ return error;
910
+ }
911
+ async function waitForRetry(delay, signal) {
912
+ if (signal?.aborted) throw createTraceAbortError(signal);
913
+ await new Promise((resolve, reject) => {
914
+ const onAbort = () => {
915
+ clearTimeout(timeout);
916
+ reject(createTraceAbortError(signal));
917
+ };
918
+ const timeout = setTimeout(() => {
919
+ signal?.removeEventListener("abort", onAbort);
920
+ resolve();
921
+ }, delay);
922
+ signal?.addEventListener("abort", onAbort, { once: true });
923
+ });
924
+ }
925
+ /**
926
+ * Fetch trace context from local TraceStore (SQLite)
927
+ */
928
+ async function fetchFromLocalStore(traceId, options) {
929
+ const { maxRetries, retryDelayMs, abortSignal, redactAttributes, ...spanOptions } = options;
930
+ const traceStore = require_store.getTraceStore();
931
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
932
+ if (abortSignal?.aborted) throw createTraceAbortError(abortSignal);
933
+ try {
934
+ const spans = await traceStore.getSpans(traceId, spanOptions);
935
+ if (spans.length === 0) {
936
+ if (attempt === maxRetries) {
937
+ require_logger.logger.debug(`[TraceContext] No spans found for trace ${traceId} after ${attempt + 1} attempts`);
938
+ return null;
939
+ }
940
+ require_logger.logger.debug(`[TraceContext] No spans yet for trace ${traceId}, retrying in ${retryDelayMs}ms (attempt ${attempt + 1}/${maxRetries})`);
941
+ await waitForRetry(retryDelayMs, abortSignal);
942
+ continue;
943
+ }
944
+ const traceSpans = createTraceSpans(redactAttributes?.length ? spans.map((span) => ({
945
+ ...span,
946
+ attributes: require_store.sanitizeTraceAttributes(span.attributes, {
947
+ redactAttributes,
948
+ sanitizeSensitiveAttributes: spanOptions.sanitizeAttributes
949
+ })
950
+ })) : spans);
951
+ const insights = deriveInsights(traceSpans);
952
+ const context = {
953
+ traceId,
954
+ spans: traceSpans,
955
+ insights,
956
+ fetchedAt: Date.now()
957
+ };
958
+ require_logger.logger.debug(`[TraceContext] Resolved ${traceSpans.length} spans for trace ${traceId} with ${insights.length} insights`);
959
+ return context;
960
+ } catch (error) {
961
+ if (abortSignal?.aborted) throw createTraceAbortError(abortSignal);
962
+ require_logger.logger.error(`[TraceContext] Failed to fetch spans for trace ${traceId}: ${error}`);
963
+ if (attempt === maxRetries) return null;
964
+ await waitForRetry(retryDelayMs, abortSignal);
965
+ }
966
+ }
967
+ return null;
968
+ }
969
+ /**
970
+ * Fetch trace context for a given trace ID.
971
+ *
972
+ * If an external provider is configured (Tempo, Jaeger, etc.), fetches from that backend.
973
+ * Otherwise, fetches from the local TraceStore (SQLite).
974
+ *
975
+ * @param traceId - The W3C trace ID (32 hex chars)
976
+ * @param options - Fetch options including provider config
977
+ * @returns TraceContextData or null if not found
978
+ */
979
+ async function fetchTraceContext(traceId, options = {}) {
980
+ const { includeInternalSpans = true, sanitizeAttributes = true, maxRetries = DEFAULT_MAX_RETRIES, retryDelayMs = DEFAULT_RETRY_DELAY_MS, providerConfig, queryDelay = DEFAULT_QUERY_DELAY_MS, ...spanOptions } = options;
981
+ const fetchOptions = {
982
+ maxRetries,
983
+ retryDelayMs,
984
+ includeInternalSpans,
985
+ sanitizeAttributes,
986
+ ...spanOptions
987
+ };
988
+ if (isExternalTraceProvider(providerConfig)) {
989
+ const externalConfig = providerConfig;
990
+ const requestOptions = {
991
+ queryDelay,
992
+ ...fetchOptions
993
+ };
994
+ if (requestOptions.abortSignal) return fetchFromExternalProvider(traceId, externalConfig, requestOptions);
995
+ const key = JSON.stringify({
996
+ traceId,
997
+ ...requestOptions
998
+ });
999
+ let pending = inFlightExternalFetches.get(externalConfig);
1000
+ if (!pending) {
1001
+ pending = /* @__PURE__ */ new Map();
1002
+ inFlightExternalFetches.set(externalConfig, pending);
1003
+ }
1004
+ const existing = pending.get(key);
1005
+ if (existing) return existing;
1006
+ const request = fetchFromExternalProvider(traceId, externalConfig, requestOptions).finally(() => pending.delete(key));
1007
+ pending.set(key, request);
1008
+ return request;
1009
+ }
1010
+ return fetchFromLocalStore(traceId, fetchOptions);
1011
+ }
1012
+ //#endregion
1013
+ Object.defineProperty(exports, "extractTraceIdFromTraceparent", {
1014
+ enumerable: true,
1015
+ get: function() {
1016
+ return extractTraceIdFromTraceparent;
1017
+ }
1018
+ });
1019
+ Object.defineProperty(exports, "fetchTraceContext", {
1020
+ enumerable: true,
1021
+ get: function() {
1022
+ return fetchTraceContext;
1023
+ }
1024
+ });
1025
+ Object.defineProperty(exports, "isExternalTraceProvider", {
1026
+ enumerable: true,
1027
+ get: function() {
1028
+ return isExternalTraceProvider;
1029
+ }
1030
+ });
1031
+
1032
+ //# sourceMappingURL=traceContext-KSqhzZI2.cjs.map