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,1161 @@
1
+ const require_rolldown_runtime = require("./rolldown-runtime-C0BPl7ul.cjs");
2
+ const require_logger = require("./logger-DXUHJBHJ.cjs");
3
+ require("./dataUrl-BdHUey2l.cjs");
4
+ const require_shared = require("./shared-D9Bf3UgD.cjs");
5
+ const require_file = require("./file-CPfaem7U.cjs");
6
+ const require_credentials = require("./credentials-CFfK32uY.cjs");
7
+ const require_genaiTracer = require("./genaiTracer-C32xFIB8.cjs");
8
+ const require_cache = require("./cache-iG87oYan.cjs");
9
+ const require_util = require("./util-ClJRjlQA.cjs");
10
+ const require_tokenUsageUtils = require("./tokenUsageUtils-DMF9uhT9.cjs");
11
+ const require_finishReason = require("./finishReason-CqEQMOZJ.cjs");
12
+ const require_transform = require("./transform-CPQu05u6.cjs");
13
+ const require_session = require("./session-BksXvRH_.cjs");
14
+ const require_util$1 = require("./util-CICwIpmu.cjs");
15
+ let node_fs = require("node:fs");
16
+ node_fs = require_rolldown_runtime.__toESM(node_fs, 1);
17
+ let node_os = require("node:os");
18
+ node_os = require_rolldown_runtime.__toESM(node_os, 1);
19
+ let node_path = require("node:path");
20
+ node_path = require_rolldown_runtime.__toESM(node_path, 1);
21
+ let node_crypto = require("node:crypto");
22
+ let crypto = require("crypto");
23
+ let node_child_process = require("node:child_process");
24
+ let _anthropic_ai_sdk = require("@anthropic-ai/sdk");
25
+ _anthropic_ai_sdk = require_rolldown_runtime.__toESM(_anthropic_ai_sdk, 1);
26
+ //#region src/providers/anthropic/claudeCodeAuth.ts
27
+ /**
28
+ * Claude Code prepends this identity block as the first `system` message when
29
+ * calling the Anthropic Messages API with an OAuth token. As of 2025-Q4 the
30
+ * API returns HTTP 400 `invalid_request_error` when an OAuth-authenticated
31
+ * request's first system block is not this exact string, so any caller
32
+ * reusing a Claude Code OAuth token must inject this block before the
33
+ * user-provided system prompt. Re-verify if Anthropic ships an OAuth-native
34
+ * `/v1/messages` path that drops the requirement.
35
+ */
36
+ const CLAUDE_CODE_IDENTITY_PROMPT = "You are Claude Code, Anthropic's official CLI for Claude.";
37
+ /**
38
+ * Anthropic beta headers required when authenticating the Messages API with a
39
+ * Claude Code OAuth token (e.g. a Claude Max subscription access token, or a
40
+ * long-lived token minted by `claude setup-token`).
41
+ *
42
+ * - `oauth-2025-04-20` enables OAuth bearer tokens on `/v1/messages`.
43
+ * - `claude-code-20250219` enables the Claude Code tool-use surface area the
44
+ * OAuth token is scoped to.
45
+ *
46
+ * Revisit if Anthropic ships an OAuth-native Messages path that no longer
47
+ * requires these betas.
48
+ */
49
+ const CLAUDE_CODE_OAUTH_BETA_FEATURES = Object.freeze(["claude-code-20250219", "oauth-2025-04-20"]);
50
+ /**
51
+ * The `user-agent` value Claude Code CLI sends on OAuth-authenticated
52
+ * Messages requests. Anthropic's API gates OAuth tokens to the Claude Code
53
+ * app identity, so requests that use a different user-agent fail with 401.
54
+ *
55
+ * The semver is load-bearing too: newer models reject OAuth requests whose
56
+ * `claude-cli` version predates the model's minimum client with 400
57
+ * `invalid_request_error` (e.g. claude-opus-5-5 requires 2.1.280 or newer).
58
+ * Keep this at a current CLI release and bump it alongside CLI updates.
59
+ */
60
+ const CLAUDE_CODE_USER_AGENT = "claude-cli/2.1.285 (external, promptfoo)";
61
+ const CLAUDE_CODE_KEYCHAIN_SERVICE = "Claude Code-credentials";
62
+ const CLAUDE_CODE_CREDENTIALS_FILENAME = ".credentials.json";
63
+ /**
64
+ * Returns the `CLAUDE_CONFIG_DIR` override when one is set, or `undefined`
65
+ * for the default `~/.claude` layout. A provider-scoped `env` override takes
66
+ * precedence over the root config / process environment, matching how other
67
+ * provider env vars resolve (see `AnthropicGenericProvider.getApiKey`).
68
+ *
69
+ * The raw configured value is returned without path normalization on
70
+ * purpose: the Claude Code CLI derives its macOS keychain service name from
71
+ * the exact string (see {@link resolveKeychainService}), so normalizing here
72
+ * would break keychain lookups for values with e.g. a trailing slash.
73
+ */
74
+ function resolveConfiguredDir(env) {
75
+ return env?.CLAUDE_CONFIG_DIR || require_logger.getEnvString("CLAUDE_CONFIG_DIR") || void 0;
76
+ }
77
+ /**
78
+ * Resolves the directory Claude Code stores its config (including
79
+ * `.credentials.json`) in. Honors `CLAUDE_CONFIG_DIR`, the same environment
80
+ * variable the Claude Code CLI itself uses to relocate `~/.claude`, so
81
+ * Promptfoo finds the credential file when a user has customized their
82
+ * Claude Code config location.
83
+ */
84
+ function resolveConfigDir(env) {
85
+ return resolveConfiguredDir(env) ?? node_path.default.join(node_os.default.homedir(), ".claude");
86
+ }
87
+ function resolveCredentialsPath(env) {
88
+ return node_path.default.join(resolveConfigDir(env), CLAUDE_CODE_CREDENTIALS_FILENAME);
89
+ }
90
+ /**
91
+ * Resolves the macOS keychain service name for the Claude Code credential,
92
+ * mirroring the Claude Code CLI: with the default config dir it is
93
+ * `Claude Code-credentials`, but whenever `CLAUDE_CONFIG_DIR` is set — even
94
+ * to the default `~/.claude` — the CLI appends `-` plus the first 8 hex
95
+ * chars of sha256 of the *raw* configured value (no path normalization; a
96
+ * trailing slash produces a different hash). Empirically verified against
97
+ * claude v2.1.204 by tracing its `security find-generic-password` calls;
98
+ * this is an internal CLI detail that may drift, in which case the lookup
99
+ * misses and falls through to the credentials-file path, then to the
100
+ * caller's "no credential found" warning.
101
+ */
102
+ function resolveKeychainService(env) {
103
+ const configuredDir = resolveConfiguredDir(env);
104
+ if (!configuredDir) return CLAUDE_CODE_KEYCHAIN_SERVICE;
105
+ const suffix = (0, node_crypto.createHash)("sha256").update(configuredDir).digest("hex").slice(0, 8);
106
+ return `${CLAUDE_CODE_KEYCHAIN_SERVICE}-${suffix}`;
107
+ }
108
+ /**
109
+ * `security` exits with status 44 when the requested generic-password entry
110
+ * does not exist. Any other non-zero exit (or throw) indicates a real failure
111
+ * — ACL denial, corrupted entry, missing binary, timeout — and is worth a
112
+ * `warn` log rather than silently falling through.
113
+ */
114
+ const SECURITY_ENTRY_NOT_FOUND = 44;
115
+ function parseCredential(raw) {
116
+ if (!raw || typeof raw !== "object") return {
117
+ ok: false,
118
+ reason: "credential JSON is not an object"
119
+ };
120
+ const claudeAiOauth = raw.claudeAiOauth;
121
+ if (!claudeAiOauth || typeof claudeAiOauth !== "object") return {
122
+ ok: false,
123
+ reason: "missing `claudeAiOauth` object"
124
+ };
125
+ const inner = claudeAiOauth;
126
+ const accessToken = inner.accessToken;
127
+ if (typeof accessToken !== "string" || !accessToken) return {
128
+ ok: false,
129
+ reason: "missing `claudeAiOauth.accessToken` string"
130
+ };
131
+ const credential = { accessToken };
132
+ if (typeof inner.refreshToken === "string" && inner.refreshToken) credential.refreshToken = inner.refreshToken;
133
+ if (typeof inner.expiresAt === "number" && Number.isFinite(inner.expiresAt)) credential.expiresAt = inner.expiresAt;
134
+ if (typeof inner.subscriptionType === "string") credential.subscriptionType = inner.subscriptionType;
135
+ return {
136
+ ok: true,
137
+ credential
138
+ };
139
+ }
140
+ function parseJsonBlob(blob) {
141
+ let parsed;
142
+ try {
143
+ parsed = JSON.parse(blob);
144
+ } catch (err) {
145
+ return {
146
+ ok: false,
147
+ reason: `invalid JSON: ${err instanceof Error ? err.message : String(err)}`
148
+ };
149
+ }
150
+ return parseCredential(parsed);
151
+ }
152
+ function readFromMacosKeychain(env) {
153
+ if (process.platform !== "darwin") return null;
154
+ let out;
155
+ try {
156
+ out = (0, node_child_process.execFileSync)("security", [
157
+ "find-generic-password",
158
+ "-s",
159
+ resolveKeychainService(env),
160
+ "-w"
161
+ ], {
162
+ encoding: "utf-8",
163
+ stdio: [
164
+ "ignore",
165
+ "pipe",
166
+ "ignore"
167
+ ],
168
+ timeout: 5e3
169
+ });
170
+ } catch (err) {
171
+ if (err?.status === SECURITY_ENTRY_NOT_FOUND) {
172
+ require_logger.logger.debug("[anthropic] No Claude Code credential entry in the macOS keychain; trying file fallback.");
173
+ return null;
174
+ }
175
+ require_logger.logger.warn("[anthropic] Failed to read Claude Code credential from macOS keychain; falling back to file lookup.", { error: err instanceof Error ? err.message : String(err) });
176
+ return null;
177
+ }
178
+ const trimmed = out.trim();
179
+ if (!trimmed) {
180
+ require_logger.logger.warn("[anthropic] Claude Code macOS keychain entry is empty. Run `claude /login` to refresh it.");
181
+ return null;
182
+ }
183
+ const result = parseJsonBlob(trimmed);
184
+ if (!result.ok) {
185
+ require_logger.logger.warn(`[anthropic] Claude Code macOS keychain entry is malformed (${result.reason}). Run \`claude /login\` to refresh it.`);
186
+ return null;
187
+ }
188
+ return result.credential;
189
+ }
190
+ function readFromFile(env) {
191
+ const filePath = resolveCredentialsPath(env);
192
+ if (!node_fs.default.existsSync(filePath)) return null;
193
+ let raw;
194
+ try {
195
+ raw = node_fs.default.readFileSync(filePath, "utf-8");
196
+ } catch (err) {
197
+ require_logger.logger.warn(`[anthropic] Claude Code credentials file at ${filePath} exists but could not be read. Run \`claude /login\` to refresh it.`, { error: err instanceof Error ? err.message : String(err) });
198
+ return null;
199
+ }
200
+ const result = parseJsonBlob(raw);
201
+ if (!result.ok) {
202
+ require_logger.logger.warn(`[anthropic] Claude Code credentials file at ${filePath} is malformed (${result.reason}). Run \`claude /login\` to refresh it.`);
203
+ return null;
204
+ }
205
+ return result.credential;
206
+ }
207
+ /**
208
+ * Loads a Claude Code OAuth credential from the local environment.
209
+ *
210
+ * Resolution order:
211
+ * 1. macOS keychain — only attempted on darwin. The service name mirrors the
212
+ * Claude Code CLI: `Claude Code-credentials` for the default config dir,
213
+ * or `Claude Code-credentials-<sha256(CLAUDE_CONFIG_DIR)[:8]>` when
214
+ * `CLAUDE_CONFIG_DIR` is set (see {@link resolveKeychainService}), so each
215
+ * Claude Code profile resolves to its own credential.
216
+ * 2. `$HOME/.claude/.credentials.json` — the Linux/Windows default used by
217
+ * Claude Code, and a fallback on macOS when the keychain entry is missing.
218
+ * On Windows this resolves to `%USERPROFILE%\.claude\.credentials.json`.
219
+ * Set `CLAUDE_CONFIG_DIR` to read from a different directory instead —
220
+ * the same environment variable the Claude Code CLI itself uses to
221
+ * relocate `~/.claude`. It resolves from the provider-scoped `env`
222
+ * override first, then the root config / process environment.
223
+ *
224
+ * Returns `null` when no credential is available. Callers should check
225
+ * {@link isCredentialExpired} on a non-null return before using it — this
226
+ * function does not filter out expired credentials so callers can decide
227
+ * whether to warn, refuse, or surface a 401 to the user.
228
+ *
229
+ * Never throws. Missing credentials fall through silently; corrupted or
230
+ * unreadable credentials are logged at `warn` level with a reason so broken
231
+ * setups are diagnosable without enabling debug logging.
232
+ */
233
+ function loadClaudeCodeCredential(env) {
234
+ return readFromMacosKeychain(env) ?? readFromFile(env);
235
+ }
236
+ /**
237
+ * Returns `true` when the credential's `expiresAt` (ms since epoch) is in the
238
+ * past. Credentials without an `expiresAt` are treated as non-expired — the
239
+ * Anthropic API will reject them with a 401 if the token is actually invalid.
240
+ */
241
+ function isCredentialExpired(credential) {
242
+ if (credential.expiresAt == null) return false;
243
+ return Date.now() >= credential.expiresAt;
244
+ }
245
+ //#endregion
246
+ //#region src/providers/anthropic/generic.ts
247
+ function getScopedCustomHeaders(env) {
248
+ return require_logger.getExplicitProviderEnv(env)?.ANTHROPIC_CUSTOM_HEADERS ?? require_logger.getEnvOverrides("provider")?.ANTHROPIC_CUSTOM_HEADERS ?? env?.ANTHROPIC_CUSTOM_HEADERS ?? require_logger.getEnvOverrides()?.ANTHROPIC_CUSTOM_HEADERS ?? require_logger.getEnvOverrides("file")?.ANTHROPIC_CUSTOM_HEADERS;
249
+ }
250
+ /**
251
+ * Parse ANTHROPIC_CUSTOM_HEADERS the same way the Anthropic SDK does
252
+ * (newline-separated `Name: value` lines) and map each header name to null so
253
+ * the SDK omits it. Providers that reuse the SDK against Anthropic-compatible
254
+ * third-party endpoints use this to keep Anthropic-scoped headers (often
255
+ * gateway/proxy secrets) off foreign hosts.
256
+ */
257
+ function getAnthropicEnvHeaderSuppressions(env) {
258
+ const scopedHeaders = getScopedCustomHeaders(env);
259
+ return Object.fromEntries(Object.keys({
260
+ ...parseAnthropicCustomHeaders(process.env.ANTHROPIC_CUSTOM_HEADERS),
261
+ ...parseAnthropicCustomHeaders(scopedHeaders)
262
+ }).map((name) => [name, null]));
263
+ }
264
+ /**
265
+ * Client options for an Anthropic-compatible endpoint that is *not* Anthropic
266
+ * (Bedrock's mantle host, a Cloudflare AI Gateway).
267
+ *
268
+ * `ANTHROPIC_CUSTOM_HEADERS` is scoped to api.anthropic.com, so anything it
269
+ * defines — an Authorization bearer, a proxy secret, an Anthropic `x-api-key` —
270
+ * must never ride along to a third-party host. Drop every name it defines, in
271
+ * every case variant (HTTP header names are case-insensitive, so `X-Api-Key`
272
+ * and `x-api-key` are the same header and both have to go), then re-assert this
273
+ * provider's own credential.
274
+ */
275
+ function buildIsolatedAnthropicClientOptions(options, env, apiKey) {
276
+ const suppressedEnvHeaders = getAnthropicEnvHeaderSuppressions(env);
277
+ const suppressedNames = new Set(Object.keys(suppressedEnvHeaders).map((name) => name.toLowerCase()));
278
+ const safeDefaultHeaders = Object.fromEntries(Object.entries(options.defaultHeaders ?? {}).filter(([name]) => !suppressedNames.has(name.toLowerCase())));
279
+ const apiKeyHeaders = Object.fromEntries(Object.keys(suppressedEnvHeaders).filter((name) => name.toLowerCase() === "x-api-key").map((name) => [name, apiKey]));
280
+ return {
281
+ ...options,
282
+ defaultHeaders: {
283
+ ...safeDefaultHeaders,
284
+ ...suppressedEnvHeaders,
285
+ ...apiKey ? {
286
+ "x-api-key": apiKey,
287
+ ...apiKeyHeaders
288
+ } : {}
289
+ }
290
+ };
291
+ }
292
+ function parseAnthropicCustomHeaders(value) {
293
+ const headers = {};
294
+ for (const line of value?.split("\n") ?? []) {
295
+ const colon = line.indexOf(":");
296
+ if (colon >= 0) {
297
+ const name = line.substring(0, colon).trim();
298
+ if (name) headers[name] = line.substring(colon + 1).trim();
299
+ }
300
+ }
301
+ return headers;
302
+ }
303
+ function setCaseInsensitiveHeaderValue(headers, headerName, value) {
304
+ headers[headerName] = value;
305
+ for (const name of Object.keys(headers)) if (name.toLowerCase() === headerName.toLowerCase()) headers[name] = value;
306
+ }
307
+ function getAnthropicCustomHeaderOverrides(env) {
308
+ const customHeaders = getScopedCustomHeaders(env);
309
+ if (customHeaders === void 0) return {};
310
+ return {
311
+ ...getAnthropicEnvHeaderSuppressions(env),
312
+ ...parseAnthropicCustomHeaders(customHeaders)
313
+ };
314
+ }
315
+ const ANTHROPIC_CACHE_HASH_CONTEXT = "promptfoo:anthropic:cache-key:v1";
316
+ const MAX_EPHEMERAL_RESPONSE_CACHE_ENTRIES = 512;
317
+ function isPlainObject(value) {
318
+ if (value === null || typeof value !== "object") return false;
319
+ const proto = Object.getPrototypeOf(value);
320
+ return proto === Object.prototype || proto === null;
321
+ }
322
+ function canonicalize(value) {
323
+ if (Array.isArray(value)) return value.map(canonicalize);
324
+ if (isPlainObject(value)) {
325
+ const entries = Object.keys(value).sort().map((k) => [k, canonicalize(value[k])]);
326
+ return Object.fromEntries(entries);
327
+ }
328
+ return value;
329
+ }
330
+ function hashAnthropicCacheValue(value) {
331
+ const canonical = canonicalize(value);
332
+ const serialized = typeof canonical === "string" ? canonical : JSON.stringify(canonical) ?? String(canonical);
333
+ return (0, crypto.createHash)("sha256").update(ANTHROPIC_CACHE_HASH_CONTEXT).update("\0").update(serialized).digest("hex");
334
+ }
335
+ /**
336
+ * Generic provider class for Anthropic APIs.
337
+ *
338
+ * Serves as a base class with shared functionality for all Anthropic
339
+ * subclass providers. Handles API key resolution and, for subclasses that
340
+ * opt in via {@link AnthropicGenericProvider.SUPPORTS_CLAUDE_CODE_OAUTH},
341
+ * falls back to an OAuth token loaded from a local Claude Code session so
342
+ * Claude.ai subscribers can run evals without a separate console API key.
343
+ *
344
+ * The OAuth fallback is opt-in so it only affects
345
+ * `AnthropicMessagesProvider`. Claude Code OAuth tokens are gated to the
346
+ * Messages API (`/v1/messages`) — forwarding them to the legacy
347
+ * text-completion endpoint would fail at request time, which would cause
348
+ * `anthropic:completion:*` configs to bypass promptfoo's upfront preflight
349
+ * check and then produce a less useful error for every test case.
350
+ */
351
+ var AnthropicGenericProvider = class {
352
+ /**
353
+ * Subclasses that can authenticate via a Claude Code OAuth session
354
+ * should override this to `true`. The base class's constructor reads the
355
+ * flag from `this.constructor` so only OAuth-capable subclasses attempt
356
+ * the credential lookup (and only they honor `apiKeyRequired: false`).
357
+ */
358
+ static SUPPORTS_CLAUDE_CODE_OAUTH = false;
359
+ modelName;
360
+ config;
361
+ env;
362
+ apiKey;
363
+ /**
364
+ * `true` when this provider is authenticating via a Claude Code OAuth token
365
+ * rather than a standard `ANTHROPIC_API_KEY`. Subclasses use this to inject
366
+ * the Claude Code identity system block that Anthropic's API requires for
367
+ * OAuth-authenticated Messages requests.
368
+ */
369
+ usingClaudeCodeOAuth;
370
+ /**
371
+ * The Claude Code credential used to authenticate, when
372
+ * `usingClaudeCodeOAuth` is `true`. Kept so subclasses can re-check expiry
373
+ * at request time and surface a "run `claude /login`" error instead of a
374
+ * raw 401 from the SDK.
375
+ */
376
+ claudeCodeCredential;
377
+ anthropic;
378
+ label;
379
+ clientHasCustomHeaders;
380
+ ephemeralCacheNamespace = (0, crypto.randomUUID)();
381
+ ephemeralResponseCache = /* @__PURE__ */ new Map();
382
+ ephemeralCacheClearGeneration = 0;
383
+ constructor(modelName, options = {}) {
384
+ const { config, id, label, env } = options;
385
+ this.env = env;
386
+ this.modelName = modelName;
387
+ this.config = config || {};
388
+ this.label = label;
389
+ const customHeaders = getScopedCustomHeaders(this.env) ?? require_logger.getEnvString("ANTHROPIC_CUSTOM_HEADERS");
390
+ this.clientHasCustomHeaders = Object.keys(this.config.headers ?? {}).length > 0 || Object.keys(parseAnthropicCustomHeaders(customHeaders)).length > 0;
391
+ this.apiKey = this.getApiKey();
392
+ this.usingClaudeCodeOAuth = false;
393
+ let authToken;
394
+ const defaultHeaders = {};
395
+ const subclass = this.constructor;
396
+ if (!this.apiKey && this.config.apiKeyRequired === false && subclass.SUPPORTS_CLAUDE_CODE_OAUTH) {
397
+ const credential = loadClaudeCodeCredential(this.env);
398
+ if (credential) {
399
+ if (isCredentialExpired(credential)) require_logger.logger.warn("[anthropic] Claude Code OAuth credential is expired. Run `claude /login` to refresh it.");
400
+ else require_logger.logger.debug("[anthropic] Authenticating with Claude Code OAuth credential from local session.");
401
+ authToken = credential.accessToken;
402
+ this.usingClaudeCodeOAuth = true;
403
+ this.claudeCodeCredential = credential;
404
+ defaultHeaders["anthropic-beta"] = CLAUDE_CODE_OAUTH_BETA_FEATURES.join(",");
405
+ defaultHeaders["user-agent"] = CLAUDE_CODE_USER_AGENT;
406
+ defaultHeaders["x-app"] = "cli";
407
+ } else require_logger.logger.warn("[anthropic] apiKeyRequired is false but no Claude Code credential was found. Run `claude /login` to create one, or set ANTHROPIC_API_KEY.");
408
+ }
409
+ const clientDefaultHeaders = {
410
+ ...getAnthropicCustomHeaderOverrides(this.env),
411
+ ...defaultHeaders
412
+ };
413
+ const scopedCustomHeaderValue = getScopedCustomHeaders(this.env);
414
+ const scopedCustomHeaders = parseAnthropicCustomHeaders(scopedCustomHeaderValue);
415
+ const scopedAuthHeaders = new Set(Object.keys(scopedCustomHeaders).map((name) => name.toLowerCase()));
416
+ if (scopedCustomHeaderValue !== void 0 && this.apiKey && !scopedAuthHeaders.has("x-api-key")) setCaseInsensitiveHeaderValue(clientDefaultHeaders, "x-api-key", this.apiKey);
417
+ if (scopedCustomHeaderValue !== void 0 && authToken && !scopedAuthHeaders.has("authorization")) setCaseInsensitiveHeaderValue(clientDefaultHeaders, "authorization", `Bearer ${authToken}`);
418
+ this.anthropic = new _anthropic_ai_sdk.default(this.buildAnthropicClientOptions({
419
+ apiKey: this.apiKey ?? null,
420
+ authToken: authToken ?? null,
421
+ baseURL: this.getApiBaseUrl(),
422
+ ...Object.keys(clientDefaultHeaders).length > 0 ? { defaultHeaders: clientDefaultHeaders } : {}
423
+ }));
424
+ this.id = id ? () => id : this.id;
425
+ }
426
+ /**
427
+ * Options for the Anthropic SDK client built during construction.
428
+ * Subclasses that point the SDK at an Anthropic-compatible third-party
429
+ * endpoint can override this to adjust auth or headers (e.g. bearer-token
430
+ * services). Called from the constructor, so overrides may only rely on
431
+ * `config`, `env`, and `apiKey`, which are set before the client is built.
432
+ */
433
+ buildAnthropicClientOptions(options) {
434
+ return options;
435
+ }
436
+ id() {
437
+ return `anthropic:${this.modelName}`;
438
+ }
439
+ toString() {
440
+ return `[Anthropic Provider ${this.modelName}]`;
441
+ }
442
+ /**
443
+ * Whether promptfoo's preflight check should require an API key before
444
+ * dispatching requests to this provider. Returns `false` only for
445
+ * OAuth-capable subclasses (see {@link SUPPORTS_CLAUDE_CODE_OAUTH}) when
446
+ * the user has opted in via `apiKeyRequired: false`. All other subclasses
447
+ * keep the preflight check so missing-credential errors surface upfront
448
+ * rather than at per-request call time.
449
+ */
450
+ requiresApiKey() {
451
+ if (this.constructor.SUPPORTS_CLAUDE_CODE_OAUTH && this.config.apiKeyRequired === false) return false;
452
+ return true;
453
+ }
454
+ getApiKey() {
455
+ return require_credentials.resolveProviderApiKey(this.config, this.env, ["ANTHROPIC_API_KEY"]);
456
+ }
457
+ getApiBaseUrl() {
458
+ const envUrl = require_logger.getProviderEnvString(this.env, "ANTHROPIC_BASE_URL") ?? require_logger.getEnvString("ANTHROPIC_BASE_URL");
459
+ return this.config?.apiBaseUrl || (envUrl === "" ? "https://api.anthropic.com" : envUrl);
460
+ }
461
+ getCacheIdentityHash() {
462
+ return hashAnthropicCacheValue({ apiBaseUrl: this.getApiBaseUrl() });
463
+ }
464
+ hasCustomHeaders() {
465
+ const customHeaders = getScopedCustomHeaders(this.env) ?? require_logger.getEnvString("ANTHROPIC_CUSTOM_HEADERS");
466
+ return this.clientHasCustomHeaders || Object.keys(parseAnthropicCustomHeaders(customHeaders)).length > 0;
467
+ }
468
+ getCacheNamespace() {
469
+ return hashAnthropicCacheValue({
470
+ providerId: this.id(),
471
+ providerLabel: this.label || this.ephemeralCacheNamespace
472
+ });
473
+ }
474
+ async getCachedResponse(cache, cacheKey, ephemeralCacheKey, clearGeneration) {
475
+ if (this.label) return cache.get(cacheKey);
476
+ this.syncEphemeralCache(clearGeneration);
477
+ const entry = this.ephemeralResponseCache.get(ephemeralCacheKey);
478
+ if (!entry) return;
479
+ if (entry.expiresAt <= Date.now()) {
480
+ this.ephemeralResponseCache.delete(ephemeralCacheKey);
481
+ return;
482
+ }
483
+ return entry.response;
484
+ }
485
+ async setCachedResponse(cache, cacheKey, ephemeralCacheKey, clearGeneration, ttlMs, response) {
486
+ if (this.label) {
487
+ await cache.set(cacheKey, response);
488
+ return;
489
+ }
490
+ this.syncEphemeralCache(clearGeneration);
491
+ if (!this.ephemeralResponseCache.has(ephemeralCacheKey) && this.ephemeralResponseCache.size >= MAX_EPHEMERAL_RESPONSE_CACHE_ENTRIES) {
492
+ const oldestKey = this.ephemeralResponseCache.keys().next().value;
493
+ if (oldestKey !== void 0) this.ephemeralResponseCache.delete(oldestKey);
494
+ }
495
+ this.ephemeralResponseCache.set(ephemeralCacheKey, {
496
+ response,
497
+ expiresAt: ttlMs <= 0 ? Number.POSITIVE_INFINITY : Date.now() + ttlMs
498
+ });
499
+ }
500
+ syncEphemeralCache(clearGeneration) {
501
+ if (this.ephemeralCacheClearGeneration !== clearGeneration) {
502
+ this.ephemeralResponseCache.clear();
503
+ this.ephemeralCacheClearGeneration = clearGeneration;
504
+ }
505
+ }
506
+ /**
507
+ * Base implementation - should be overridden by specific provider implementations
508
+ */
509
+ async callApi(_prompt, _context) {
510
+ throw new Error("Not implemented: callApi must be implemented by subclasses");
511
+ }
512
+ };
513
+ //#endregion
514
+ //#region src/providers/anthropic/messages.ts
515
+ const DEFAULT_MAX_MCP_TOOL_CALLS = 8;
516
+ const MAX_PAUSE_TURN_RESUMES = 5;
517
+ async function finalMessageWithStreamedStopDetails(stream) {
518
+ let streamedStopDetails;
519
+ stream.on?.("streamEvent", (event) => {
520
+ if (event.type === "message_delta" && event.delta.stop_details != null) streamedStopDetails = event.delta.stop_details;
521
+ });
522
+ const finalMessage = await stream.finalMessage();
523
+ return finalMessage.stop_details == null && streamedStopDetails != null ? {
524
+ ...finalMessage,
525
+ stop_details: streamedStopDetails
526
+ } : finalMessage;
527
+ }
528
+ function normalizeHeadersForCacheKey(headers) {
529
+ if (Object.keys(headers).length === 0) return;
530
+ return Object.entries(headers).map(([name, value]) => ({
531
+ name: name.toLowerCase(),
532
+ valueHash: hashAnthropicCacheValue(value)
533
+ })).sort((headerA, headerB) => {
534
+ const nameComparison = headerA.name.localeCompare(headerB.name);
535
+ return nameComparison === 0 ? headerA.valueHash.localeCompare(headerB.valueHash) : nameComparison;
536
+ });
537
+ }
538
+ function getMessagesRequestMetadata(params) {
539
+ const mcpServers = params.mcp_servers;
540
+ return {
541
+ model: params.model,
542
+ max_tokens: params.max_tokens,
543
+ messageCount: params.messages.length,
544
+ stream: params.stream,
545
+ temperature: params.temperature,
546
+ hasSystem: params.system !== void 0,
547
+ stopSequenceCount: Array.isArray(params.stop_sequences) ? params.stop_sequences.length : void 0,
548
+ thinkingEnabled: require_util$1.isClaudeThinkingEnabled(params.thinking),
549
+ toolCount: Array.isArray(params.tools) ? params.tools.length : void 0,
550
+ hasToolChoice: params.tool_choice !== void 0,
551
+ hasMetadata: params.metadata !== void 0,
552
+ hasMcpServers: Array.isArray(mcpServers) && mcpServers.length > 0,
553
+ hasOutputConfig: params.output_config !== void 0
554
+ };
555
+ }
556
+ function getMessagesResponseMetadata(response) {
557
+ return {
558
+ model: response.model,
559
+ type: response.type,
560
+ contentBlockCount: Array.isArray(response.content) ? response.content.length : void 0,
561
+ stopReason: response.stop_reason,
562
+ inputTokens: response.usage?.input_tokens,
563
+ outputTokens: response.usage?.output_tokens,
564
+ cacheReadInputTokens: response.usage?.cache_read_input_tokens,
565
+ cacheCreationInputTokens: response.usage?.cache_creation_input_tokens
566
+ };
567
+ }
568
+ function getMaxMcpToolCalls(config) {
569
+ if (config.max_tool_calls == null) return DEFAULT_MAX_MCP_TOOL_CALLS;
570
+ if (!Number.isFinite(config.max_tool_calls) || config.max_tool_calls < 0) return DEFAULT_MAX_MCP_TOOL_CALLS;
571
+ return Math.floor(config.max_tool_calls);
572
+ }
573
+ function getMcpContinuationParams(params, messages) {
574
+ if (params.tool_choice?.type === "any" || params.tool_choice?.type === "tool") {
575
+ const { tool_choice: _toolChoice, ...continuationParams } = params;
576
+ return {
577
+ ...continuationParams,
578
+ messages
579
+ };
580
+ }
581
+ return {
582
+ ...params,
583
+ messages
584
+ };
585
+ }
586
+ /** Reuse the turn's container unless the caller pinned a different one. */
587
+ function withTurnContainer(params, responses) {
588
+ const requested = params.container;
589
+ if (typeof requested === "string" || requested?.id != null) return params;
590
+ for (let i = responses.length - 1; i >= 0; i--) {
591
+ const container = responses[i].container;
592
+ if (container) return {
593
+ ...params,
594
+ container: requested ? {
595
+ ...requested,
596
+ id: container.id
597
+ } : container.id
598
+ };
599
+ }
600
+ return params;
601
+ }
602
+ function coerceMcpToolInput(input) {
603
+ if (input == null || input === "") return {};
604
+ if (typeof input === "string") {
605
+ const parsed = JSON.parse(input);
606
+ return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed) ? parsed : {};
607
+ }
608
+ return typeof input === "object" && !Array.isArray(input) ? input : {};
609
+ }
610
+ function mergeAnthropicUsage(messages) {
611
+ const usageEntries = messages.map((message) => message.usage).filter((usage) => usage != null);
612
+ if (usageEntries.length === 0) return;
613
+ const [firstUsage, ...remainingUsageEntries] = usageEntries;
614
+ return remainingUsageEntries.reduce((acc, usage) => ({
615
+ ...usage,
616
+ input_tokens: acc.input_tokens + (usage.input_tokens ?? 0),
617
+ output_tokens: acc.output_tokens + (usage.output_tokens ?? 0),
618
+ cache_creation_input_tokens: (acc.cache_creation_input_tokens ?? 0) + (usage.cache_creation_input_tokens ?? 0),
619
+ cache_creation: acc.cache_creation || usage.cache_creation ? {
620
+ ephemeral_5m_input_tokens: (acc.cache_creation?.ephemeral_5m_input_tokens ?? 0) + (usage.cache_creation?.ephemeral_5m_input_tokens ?? 0),
621
+ ephemeral_1h_input_tokens: (acc.cache_creation?.ephemeral_1h_input_tokens ?? 0) + (usage.cache_creation?.ephemeral_1h_input_tokens ?? 0)
622
+ } : null,
623
+ cache_read_input_tokens: (acc.cache_read_input_tokens ?? 0) + (usage.cache_read_input_tokens ?? 0),
624
+ output_tokens_details: acc.output_tokens_details || usage.output_tokens_details ? { thinking_tokens: (acc.output_tokens_details?.thinking_tokens ?? 0) + (usage.output_tokens_details?.thinking_tokens ?? 0) } : null
625
+ }), firstUsage);
626
+ }
627
+ function withMergedAnthropicUsage(response, responses) {
628
+ const usage = mergeAnthropicUsage(responses);
629
+ return usage ? {
630
+ ...response,
631
+ usage
632
+ } : response;
633
+ }
634
+ function toCachedMessage(message, responses) {
635
+ if (responses.length === 1) return message;
636
+ return {
637
+ ...message,
638
+ fileReferences: responses.flatMap((response) => response.content.flatMap(require_util$1.getFileReferences)),
639
+ finalText: responses[responses.length - 1].content.filter((block) => block.type === "text").map((block) => block.text).join(""),
640
+ billedCalls: responses.map(({ stop_details, stop_reason, usage }) => ({
641
+ stop_details,
642
+ stop_reason,
643
+ usage
644
+ }))
645
+ };
646
+ }
647
+ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends AnthropicGenericProvider {
648
+ calculateMessageCost(config, message, modelName = this.modelName) {
649
+ if (message.stop_reason === "refusal" && message.usage?.output_tokens === 0 && ![
650
+ "bio",
651
+ "frontier_llm",
652
+ "reasoning_extraction"
653
+ ].includes(message.stop_details?.category ?? "")) return 0;
654
+ return require_util$1.calculateAnthropicCost(modelName, config, message.usage?.input_tokens, message.usage?.output_tokens, message.usage?.cache_read_input_tokens ?? void 0, message.usage?.cache_creation_input_tokens ?? void 0, message.usage?.cache_creation?.ephemeral_1h_input_tokens ?? void 0, message.usage?.inference_geo);
655
+ }
656
+ calculateMessageCosts(config, calls) {
657
+ return calls.reduce((total, call) => {
658
+ const callCost = this.calculateMessageCost(config, call);
659
+ return total != null && callCost != null ? total + callCost : void 0;
660
+ }, 0);
661
+ }
662
+ mcpClient = null;
663
+ mcpSession;
664
+ samplingParamsDeprecationWarned = false;
665
+ manualThinkingConversionWarned = false;
666
+ disabledThinkingRemovalWarned = false;
667
+ static SUPPORTS_CLAUDE_CODE_OAUTH = true;
668
+ static ANTHROPIC_MODELS = require_util$1.ANTHROPIC_MODELS;
669
+ static ANTHROPIC_MODELS_NAMES = require_util$1.ANTHROPIC_MODELS.map((model) => model.id);
670
+ static WARNS_ON_UNKNOWN_MODEL = true;
671
+ constructor(modelName, options = {}) {
672
+ super(modelName, options);
673
+ if (this.constructor.WARNS_ON_UNKNOWN_MODEL && !AnthropicMessagesProvider.ANTHROPIC_MODELS_NAMES.includes(require_util$1.normalizeAnthropicModelName(modelName))) require_logger.logger.warn(`Using unknown Anthropic model: ${modelName}`);
674
+ const { id } = options;
675
+ this.id = id ? () => id : this.id;
676
+ this.initializeMCP().catch(() => void 0);
677
+ }
678
+ async initializeMCP(signal) {
679
+ if (!this.config.mcp?.enabled) return;
680
+ this.mcpSession ??= new require_session.McpClientSession(this.config.mcp);
681
+ this.mcpClient = await this.mcpSession.initialize(signal);
682
+ }
683
+ async cleanup() {
684
+ try {
685
+ await this.mcpSession?.cleanup();
686
+ } finally {
687
+ this.mcpClient = this.mcpSession?.client ?? null;
688
+ }
689
+ }
690
+ /** Resume paused server-tool turns, retaining each request for usage and cost. */
691
+ async sendMessage(params, headers, shouldStream, responses, signal) {
692
+ const requestOptions = {
693
+ ...Object.keys(headers).length > 0 && { headers },
694
+ ...signal && { signal }
695
+ };
696
+ const send = async (requestParams) => {
697
+ signal?.throwIfAborted();
698
+ requestParams = withTurnContainer(requestParams, responses);
699
+ const message = shouldStream ? await finalMessageWithStreamedStopDetails(await this.anthropic.messages.stream(requestParams, requestOptions)) : await this.anthropic.messages.create(requestParams, requestOptions);
700
+ require_logger.logger.debug("Anthropic Messages API response", { response: getMessagesResponseMetadata(message) });
701
+ responses.push(message);
702
+ return message;
703
+ };
704
+ let message = await send(params);
705
+ if (message.stop_reason !== "pause_turn") return message;
706
+ let turnContent = message.content;
707
+ for (let resumes = 0; message.stop_reason === "pause_turn"; resumes++) {
708
+ if (resumes === MAX_PAUSE_TURN_RESUMES) {
709
+ require_logger.logger.warn(`Claude's turn was still paused (stop_reason: pause_turn) after ${MAX_PAUSE_TURN_RESUMES} resumes, so the output may be incomplete. Lower the tool max_uses or split the task.`);
710
+ break;
711
+ }
712
+ try {
713
+ message = await send({
714
+ ...params,
715
+ messages: [...params.messages, {
716
+ role: "assistant",
717
+ content: turnContent
718
+ }]
719
+ });
720
+ } catch (err) {
721
+ signal?.throwIfAborted();
722
+ require_logger.logger.warn(`Could not resume a paused Claude turn, so the output may be incomplete: ${err instanceof Error ? err.message : String(err)}`);
723
+ break;
724
+ }
725
+ turnContent = [...turnContent, ...message.content];
726
+ }
727
+ return {
728
+ ...message,
729
+ content: turnContent
730
+ };
731
+ }
732
+ async resolveMcpToolUse({ config, headers, initialResponse, params, responses, shouldStream, signal }) {
733
+ const toolCalls = [];
734
+ const unchanged = () => ({
735
+ response: withMergedAnthropicUsage(initialResponse, responses),
736
+ responses,
737
+ toolCalls
738
+ });
739
+ if (!this.mcpClient) return unchanged();
740
+ const mcpToolNames = new Set(this.mcpClient.getAllTools().map((tool) => tool.name));
741
+ if (mcpToolNames.size === 0) return unchanged();
742
+ const maxToolCalls = getMaxMcpToolCalls(config);
743
+ if (maxToolCalls === 0) return unchanged();
744
+ let response = initialResponse;
745
+ let messages = params.messages;
746
+ let executedMcpToolCalls = 0;
747
+ for (let iteration = 0; iteration < maxToolCalls; iteration++) {
748
+ signal?.throwIfAborted();
749
+ const responseToolUses = response.content.filter((block) => block.type === "tool_use");
750
+ const toolUses = responseToolUses.filter((block) => mcpToolNames.has(block.name));
751
+ if (toolUses.length === 0) return {
752
+ response: withMergedAnthropicUsage(response, responses),
753
+ responses,
754
+ toolCalls
755
+ };
756
+ if (toolUses.length !== responseToolUses.length) {
757
+ require_logger.logger.warn("Skipping Anthropic MCP continuation because the response mixes MCP and non-MCP tool_use blocks.");
758
+ return {
759
+ response: withMergedAnthropicUsage(response, responses),
760
+ responses,
761
+ toolCalls
762
+ };
763
+ }
764
+ if (executedMcpToolCalls + toolUses.length > maxToolCalls) return {
765
+ response: withMergedAnthropicUsage(response, responses),
766
+ responses,
767
+ error: `Anthropic MCP tool execution exceeded max_tool_calls=${maxToolCalls}. Increase provider config.max_tool_calls if this evaluation legitimately needs more tool calls.`,
768
+ toolCalls
769
+ };
770
+ executedMcpToolCalls += toolUses.length;
771
+ const toolResultBlocks = await Promise.all(toolUses.map((toolUse) => this.callMcpToolForAnthropic(toolUse)));
772
+ toolUses.forEach((toolUse, index) => {
773
+ const resultBlock = toolResultBlocks[index];
774
+ toolCalls.push({
775
+ id: toolUse.id,
776
+ name: toolUse.name,
777
+ input: coerceMcpToolInput(toolUse.input),
778
+ output: resultBlock.content,
779
+ is_error: resultBlock.is_error ?? false
780
+ });
781
+ });
782
+ messages = [
783
+ ...messages,
784
+ {
785
+ role: "assistant",
786
+ content: response.content
787
+ },
788
+ {
789
+ role: "user",
790
+ content: toolResultBlocks
791
+ }
792
+ ];
793
+ response = await this.sendMessage(getMcpContinuationParams(params, messages), headers, shouldStream, responses, signal);
794
+ }
795
+ const unresolvedToolUses = response.content.filter((block) => block.type === "tool_use" && mcpToolNames.has(block.name));
796
+ return {
797
+ response: withMergedAnthropicUsage(response, responses),
798
+ responses,
799
+ toolCalls,
800
+ ...unresolvedToolUses.length > 0 ? { error: `Anthropic MCP tool execution exceeded max_tool_calls=${maxToolCalls}. Increase provider config.max_tool_calls if this evaluation legitimately needs more tool calls.` } : {}
801
+ };
802
+ }
803
+ async callMcpToolForAnthropic(toolUse) {
804
+ try {
805
+ const result = await this.mcpClient.callTool(toolUse.name, coerceMcpToolInput(toolUse.input));
806
+ if (require_util.isMcpErrorResult(result)) return {
807
+ type: "tool_result",
808
+ tool_use_id: toolUse.id,
809
+ content: `MCP Tool Error (${toolUse.name}): ${require_util.getMcpErrorMessage(result)}`,
810
+ is_error: true
811
+ };
812
+ return {
813
+ type: "tool_result",
814
+ tool_use_id: toolUse.id,
815
+ content: require_util.normalizeMcpToolContent(result.content)
816
+ };
817
+ } catch (error) {
818
+ return {
819
+ type: "tool_result",
820
+ tool_use_id: toolUse.id,
821
+ content: `MCP Tool Error (${toolUse.name}): ${error instanceof Error ? error.message : String(error)}`,
822
+ is_error: true
823
+ };
824
+ }
825
+ }
826
+ toString() {
827
+ if (!this.modelName) throw new Error("Anthropic model name is not set. Please provide a valid model name.");
828
+ return `[Anthropic Messages Provider ${this.modelName}]`;
829
+ }
830
+ getGenAISystem() {
831
+ return "anthropic";
832
+ }
833
+ sanitizeRequestHeaders(headers) {
834
+ return headers;
835
+ }
836
+ allowsClaudeGenerationFallback() {
837
+ return URL.canParse(this.anthropic.baseURL) && new URL(this.anthropic.baseURL).hostname.toLowerCase() === "api.anthropic.com";
838
+ }
839
+ /** Adapters with transport-managed authentication can defer validation to HTTP dispatch. */
840
+ validateAuthentication() {
841
+ if (!this.apiKey && !this.usingClaudeCodeOAuth) throw new Error("Anthropic API key is not set. Set the ANTHROPIC_API_KEY environment variable or add `apiKey` to the provider config. Alternatively, if you have an active Claude Code session, set `apiKeyRequired: false` in the provider config to authenticate via Claude Code.");
842
+ }
843
+ /** Independent of authentication: adapters decide whether their response cache is safe. */
844
+ shouldCacheResponses() {
845
+ return true;
846
+ }
847
+ async callApi(prompt, context, options) {
848
+ if (options?.abortSignal?.aborted) return { error: "Operation aborted" };
849
+ await this.initializeMCP(options?.abortSignal);
850
+ this.validateAuthentication();
851
+ if (this.usingClaudeCodeOAuth && this.claudeCodeCredential && isCredentialExpired(this.claudeCodeCredential)) throw new Error("Claude Code OAuth credential is expired. Run `claude /login` to refresh it, then re-run the eval.");
852
+ if (!this.modelName) throw new Error("Anthropic model name is not set. Please provide a valid model name.");
853
+ const spanContext = {
854
+ system: this.getGenAISystem(),
855
+ operationName: "chat",
856
+ model: this.modelName,
857
+ providerId: this.id(),
858
+ maxTokens: this.config.max_tokens,
859
+ temperature: this.config.temperature,
860
+ testIndex: context?.testIdx ?? context?.test?.vars?.__testIdx,
861
+ promptLabel: context?.prompt?.label,
862
+ traceparent: context?.traceparent,
863
+ requestBody: prompt
864
+ };
865
+ const resultExtractor = (response) => {
866
+ const result = {};
867
+ if (response.tokenUsage) result.tokenUsage = {
868
+ prompt: response.tokenUsage.prompt,
869
+ completion: response.tokenUsage.completion,
870
+ total: response.tokenUsage.total,
871
+ cached: response.tokenUsage.cached,
872
+ completionDetails: response.tokenUsage.completionDetails
873
+ };
874
+ if (response.finishReason) result.finishReasons = [response.finishReason];
875
+ if (response.cached !== void 0) result.cacheHit = response.cached;
876
+ if (response.output !== void 0) result.responseBody = typeof response.output === "string" ? response.output : JSON.stringify(response.output);
877
+ return result;
878
+ };
879
+ return require_genaiTracer.withGenAISpan(spanContext, () => this.callApiInternal(prompt, context, options), resultExtractor);
880
+ }
881
+ /**
882
+ * Reconcile a requested thinking config with what the target model actually accepts, and
883
+ * report whether the request will end up thinking.
884
+ *
885
+ * Three model-level rules apply, each verified against the live API:
886
+ * - Manual budget thinking (`type: 'enabled'`) is rejected on adaptive-only models and is
887
+ * converted to `type: 'adaptive'`.
888
+ * - `type: 'disabled'` is rejected outright on always-on models, and on
889
+ * Opus 5 when `effort` is `xhigh`/`max`. In both cases it is dropped rather than sent.
890
+ * - On Opus 5 and Sonnet 5 an *omitted* thinking config still runs adaptive thinking, so it
891
+ * consumes output tokens — callers size the default `max_tokens` off this, and treating it
892
+ * as disabled truncates responses mid-answer.
893
+ *
894
+ * Warnings are emitted at most once per provider instance.
895
+ */
896
+ resolveModelThinking(requested, effort, flags) {
897
+ const { samplingParamsDeprecated, alwaysOnAdaptiveThinking, modelWarningName } = flags;
898
+ if ((samplingParamsDeprecated || alwaysOnAdaptiveThinking) && requested?.type === "enabled") {
899
+ if (!this.manualThinkingConversionWarned) {
900
+ require_logger.logger.warn(alwaysOnAdaptiveThinking ? `Adaptive thinking is always on for ${modelWarningName}. Manual thinking budgets have been removed; use effort to control reasoning depth.` : `Manual extended thinking (thinking.type "enabled") is not supported on ${modelWarningName} and has been converted to adaptive thinking. Use thinking: { type: "adaptive" } with effort to control reasoning depth.`);
901
+ this.manualThinkingConversionWarned = true;
902
+ }
903
+ } else if (requested?.type === "disabled" && !this.disabledThinkingRemovalWarned) {
904
+ const betweenTools = require_util$1.isBetweenToolsLowestThinkingClaudeModel(this.modelName);
905
+ if (alwaysOnAdaptiveThinking) {
906
+ require_logger.logger.warn(`Adaptive thinking is always on for ${modelWarningName}. thinking.type "disabled" has been omitted.`);
907
+ this.disabledThinkingRemovalWarned = true;
908
+ } else if (require_util$1.isDisabledThinkingRejectedAtEffort(this.modelName, effort)) {
909
+ require_logger.logger.warn(`${modelWarningName} only accepts thinking.type "${betweenTools ? "between_tools" : "disabled"}" at effort "high" or below (got "${effort}"), so thinking.type "disabled" has been omitted. Lower effort to "high" if you need thinking off.`);
910
+ this.disabledThinkingRemovalWarned = true;
911
+ } else if (betweenTools) {
912
+ require_logger.logger.warn(`${modelWarningName} does not accept thinking.type "disabled", so it has been sent as "between_tools", the model's lowest setting, which turns off up-front thinking. Set thinking.type "between_tools" to silence this warning.`);
913
+ this.disabledThinkingRemovalWarned = true;
914
+ }
915
+ } else if (requested?.type === "between_tools" && !this.disabledThinkingRemovalWarned && require_util$1.isBetweenToolsLowestThinkingClaudeModel(this.modelName) && require_util$1.isDisabledThinkingRejectedAtEffort(this.modelName, effort)) {
916
+ require_logger.logger.warn(`${modelWarningName} only accepts thinking.type "between_tools" at effort "high" or below (got "${effort}"), so it has been omitted and the model thinks adaptively. Lower effort to "high" to turn off up-front thinking.`);
917
+ this.disabledThinkingRemovalWarned = true;
918
+ }
919
+ const resolved = require_util$1.normalizeClaudeThinkingConfig(this.modelName, requested, effort, { allowGenerationFallback: samplingParamsDeprecated });
920
+ return {
921
+ thinking: resolved,
922
+ thinkingEnabled: alwaysOnAdaptiveThinking || require_util$1.isClaudeThinkingEnabled(resolved),
923
+ thinkingConsumesTokens: require_util$1.claudeThinkingConsumesTokens(this.modelName, resolved)
924
+ };
925
+ }
926
+ /**
927
+ * Build the ProviderResponse for a completed Anthropic message.
928
+ *
929
+ * Shared by the cache-hit and fresh-call paths, which are otherwise identical. `cached`
930
+ * drives the only three differences: token usage is attributed to the cache, the refusal
931
+ * warning is suppressed (it was already logged when the response was first fetched), and
932
+ * the `cached` marker is set. Keeping one builder is what stops the two paths drifting —
933
+ * they have diverged before, which is why the cached-refusal regression test exists.
934
+ */
935
+ buildMessageResponse(message, config, processedOutputFormat, cached) {
936
+ const finishReason = require_finishReason.normalizeFinishReason(message.stop_reason);
937
+ let output = require_util$1.outputFromMessage(message, config.showThinking ?? true);
938
+ const isStructuredOutput = processedOutputFormat?.type === "json_schema";
939
+ const fileReferences = message.fileReferences ?? message.content.flatMap(require_util$1.getFileReferences);
940
+ if (isStructuredOutput) {
941
+ const text = message.stop_reason === "pause_turn" || message.content.some((block) => block.type === "tool_use") ? "" : message.finalText ?? message.content.filter((block) => block.type === "text").map((block) => block.text).join("");
942
+ try {
943
+ output = JSON.parse(text || output);
944
+ } catch (error) {
945
+ require_logger.logger.error(`Failed to parse JSON output from structured outputs: ${error}`);
946
+ }
947
+ }
948
+ const refusalDetails = require_util$1.getRefusalDetails(message);
949
+ if (refusalDetails && !cached) require_logger.logger.warn(refusalDetails);
950
+ return {
951
+ output,
952
+ ...fileReferences.length > 0 && { metadata: { fileReferences } },
953
+ tokenUsage: require_util$1.getTokenUsage(message, cached),
954
+ ...finishReason && { finishReason },
955
+ ...refusalDetails && { guardrails: {
956
+ flagged: true,
957
+ reason: refusalDetails
958
+ } },
959
+ cost: this.calculateMessageCosts(config, message.billedCalls ?? [message]),
960
+ ...cached && { cached: true }
961
+ };
962
+ }
963
+ /**
964
+ * Internal implementation of callApi without tracing wrapper.
965
+ */
966
+ async callApiInternal(prompt, context, options) {
967
+ const config = {
968
+ ...this.config,
969
+ ...context?.prompt?.config
970
+ };
971
+ const { system, extractedMessages, thinking } = require_util$1.parseMessages(prompt);
972
+ let mcpTools = [];
973
+ if (this.mcpClient) mcpTools = require_transform.transformMCPToolsToAnthropic(this.mcpClient.getAllTools());
974
+ const loadedTools = await require_file.maybeLoadToolsFromExternalFile(config.tools, context?.vars) || [];
975
+ const configTools = require_shared.transformTools(loadedTools, "anthropic");
976
+ const { processedTools: processedConfigTools, requiredBetaFeatures } = require_util$1.processAnthropicTools(configTools);
977
+ const allTools = [...mcpTools, ...processedConfigTools];
978
+ const processedOutputFormat = require_file.maybeLoadResponseFormatFromExternalFile(config.output_format, context?.vars);
979
+ const samplingParamsDeprecated = require_util$1.isSamplingParamsDeprecatedClaudeModel(this.modelName, { allowGenerationFallback: this.allowsClaudeGenerationFallback() });
980
+ const alwaysOnAdaptiveThinking = require_util$1.isAlwaysOnAdaptiveThinkingClaudeModel(this.modelName);
981
+ const modelWarningName = require_util$1.getClaudeModelWarningName(this.modelName) ?? "this Claude model";
982
+ const { thinking: resolvedThinking, thinkingEnabled, thinkingConsumesTokens } = this.resolveModelThinking(config.thinking ?? thinking, config.effort, {
983
+ samplingParamsDeprecated,
984
+ alwaysOnAdaptiveThinking,
985
+ modelWarningName
986
+ });
987
+ const modelRejectsForcedToolChoice = require_util$1.isForcedToolChoiceUnsupportedClaudeModel(this.modelName);
988
+ const forcedToolChoiceRejected = resolvedThinking?.type === "enabled" || modelRejectsForcedToolChoice;
989
+ let resolvedToolChoice;
990
+ if (config.tool_choice) {
991
+ const transformed = require_shared.transformToolChoice(config.tool_choice, "anthropic");
992
+ if (forcedToolChoiceRejected && (transformed.type === "any" || transformed.type === "tool")) require_logger.logger.warn(modelRejectsForcedToolChoice ? `tool_choice type '${transformed.type}' (forced tool use) is not supported on ${modelWarningName} and will be omitted. Use 'auto' or 'none' instead.` : `tool_choice type '${transformed.type}' (forced tool use) is incompatible with extended thinking and will be omitted. Use 'auto' or remove tool_choice.`);
993
+ else resolvedToolChoice = transformed;
994
+ }
995
+ const envTemperature = require_logger.parseEnvFloat(this.env?.ANTHROPIC_TEMPERATURE ?? require_logger.getEnvString("ANTHROPIC_TEMPERATURE"));
996
+ const { sampling, warnings: samplingWarnings } = require_util$1.resolveClaudeSamplingParams(config, {
997
+ thinkingEnabled,
998
+ samplingParamsDeprecated,
999
+ defaultTemperature: envTemperature ?? 0
1000
+ });
1001
+ for (const warning of samplingWarnings) require_logger.logger.warn(warning);
1002
+ const explicitSamplingParam = config.temperature != null || config.top_p != null || config.top_k != null || envTemperature != null;
1003
+ if (samplingParamsDeprecated && explicitSamplingParam && !this.samplingParamsDeprecationWarned) {
1004
+ require_logger.logger.warn(alwaysOnAdaptiveThinking ? `temperature, top_p, and top_k are not supported on ${modelWarningName} and will be omitted. Remove these sampling parameters from your config (or unset ANTHROPIC_TEMPERATURE) to silence this warning.` : `temperature is deprecated on ${modelWarningName} and will be omitted (along with top_p and top_k). Remove these sampling parameters from your config (or unset ANTHROPIC_TEMPERATURE) to silence this warning.`);
1005
+ this.samplingParamsDeprecationWarned = true;
1006
+ }
1007
+ const resolvedSystem = this.usingClaudeCodeOAuth ? [{
1008
+ type: "text",
1009
+ text: CLAUDE_CODE_IDENTITY_PROMPT
1010
+ }, ...system ?? []] : system;
1011
+ const shouldStream = config.stream ?? false;
1012
+ const params = {
1013
+ model: this.modelName,
1014
+ ...resolvedSystem && resolvedSystem.length > 0 ? { system: resolvedSystem } : {},
1015
+ max_tokens: require_util$1.clampMaxTokensForThinkingBudget(config.max_tokens ?? require_logger.getEnvInt("ANTHROPIC_MAX_TOKENS", thinkingConsumesTokens ? 2048 : 1024), resolvedThinking),
1016
+ messages: extractedMessages,
1017
+ stream: shouldStream,
1018
+ ...sampling,
1019
+ ...config.cache_control ? { cache_control: config.cache_control } : {},
1020
+ ...config.service_tier ? { service_tier: config.service_tier } : {},
1021
+ ...config.stop_sequences?.length ? { stop_sequences: config.stop_sequences } : {},
1022
+ ...config.metadata ? { metadata: config.metadata } : {},
1023
+ ...allTools.length > 0 ? { tools: allTools } : {},
1024
+ ...resolvedToolChoice ? { tool_choice: resolvedToolChoice } : {},
1025
+ ...resolvedThinking ? { thinking: resolvedThinking } : {},
1026
+ ...processedOutputFormat || config.effort ? { output_config: {
1027
+ ...processedOutputFormat ? { format: processedOutputFormat } : {},
1028
+ ...config.effort ? { effort: config.effort } : {}
1029
+ } } : {},
1030
+ ...typeof config?.extra_body === "object" && config.extra_body ? config.extra_body : {}
1031
+ };
1032
+ require_logger.logger.debug("Calling Anthropic Messages API", { params: getMessagesRequestMetadata(params) });
1033
+ const headers = this.sanitizeRequestHeaders({ ...config.headers || {} });
1034
+ let allBetaFeatures = [...config.beta || [], ...requiredBetaFeatures];
1035
+ const userBetaHeader = config.headers?.["anthropic-beta"];
1036
+ if (typeof userBetaHeader === "string" && userBetaHeader.length > 0) allBetaFeatures.push(...userBetaHeader.split(",").map((entry) => entry.trim()).filter((entry) => entry.length > 0));
1037
+ if (processedOutputFormat && !allBetaFeatures.includes("structured-outputs-2025-11-13")) allBetaFeatures.push("structured-outputs-2025-11-13");
1038
+ if (this.usingClaudeCodeOAuth) allBetaFeatures.push(...CLAUDE_CODE_OAUTH_BETA_FEATURES);
1039
+ allBetaFeatures = [...new Set(allBetaFeatures)];
1040
+ if (allBetaFeatures.length > 0) headers["anthropic-beta"] = allBetaFeatures.join(",");
1041
+ if (this.usingClaudeCodeOAuth) {
1042
+ headers["user-agent"] = CLAUDE_CODE_USER_AGENT;
1043
+ headers["x-app"] = "cli";
1044
+ }
1045
+ const shouldUseResponseCache = require_cache.isCacheEnabled() && config.mcp?.enabled !== true && this.shouldCacheResponses() && !this.hasCustomHeaders() && Object.keys(config.headers ?? {}).length === 0;
1046
+ const cache = shouldUseResponseCache ? await require_cache.getCache() : void 0;
1047
+ const { metadata: _metadata, ...cacheKeyParams } = params;
1048
+ const cacheKeyHeaders = normalizeHeadersForCacheKey(headers);
1049
+ const cacheKey = shouldUseResponseCache ? `anthropic:messages:${this.modelName}:${this.getCacheIdentityHash()}:${this.getCacheNamespace()}:${hashAnthropicCacheValue({
1050
+ ...cacheKeyParams,
1051
+ ...cacheKeyHeaders ? { headers: cacheKeyHeaders } : {}
1052
+ })}` : void 0;
1053
+ const ephemeralCacheKey = cacheKey ? require_cache.getScopedCacheKey(cacheKey) : void 0;
1054
+ const cacheClearGeneration = require_cache.getCacheClearGeneration();
1055
+ if (cache && cacheKey && ephemeralCacheKey) {
1056
+ const cachedResponse = await this.getCachedResponse(cache, cacheKey, ephemeralCacheKey, cacheClearGeneration);
1057
+ if (cachedResponse) try {
1058
+ const cachedMessage = JSON.parse(cachedResponse);
1059
+ if (cachedMessage.stop_reason !== "pause_turn") {
1060
+ require_logger.logger.debug("Returning cached Anthropic Messages response", { model: this.modelName });
1061
+ return this.buildMessageResponse(cachedMessage, config, processedOutputFormat, true);
1062
+ }
1063
+ } catch {
1064
+ return {
1065
+ output: cachedResponse,
1066
+ cached: true,
1067
+ tokenUsage: require_tokenUsageUtils.createEmptyTokenUsage()
1068
+ };
1069
+ }
1070
+ }
1071
+ const responses = [];
1072
+ try {
1073
+ const signal = options?.abortSignal;
1074
+ const initialMessage = await this.sendMessage(params, headers, shouldStream, responses, signal);
1075
+ signal?.throwIfAborted();
1076
+ const { error, response: resolvedMessage, toolCalls } = await this.resolveMcpToolUse({
1077
+ config,
1078
+ headers,
1079
+ initialResponse: initialMessage,
1080
+ params,
1081
+ responses,
1082
+ shouldStream,
1083
+ signal
1084
+ });
1085
+ const cost = this.calculateMessageCosts(config, responses);
1086
+ const mcpMetadata = toolCalls.length > 0 ? { toolCalls } : void 0;
1087
+ if (error) return {
1088
+ error,
1089
+ tokenUsage: require_util$1.getTokenUsage(resolvedMessage, false),
1090
+ cost,
1091
+ ...mcpMetadata ? { metadata: mcpMetadata } : {}
1092
+ };
1093
+ const message = toCachedMessage(resolvedMessage, responses);
1094
+ if (cache && cacheKey && ephemeralCacheKey && message.stop_reason !== "pause_turn") try {
1095
+ await this.setCachedResponse(cache, cacheKey, ephemeralCacheKey, cacheClearGeneration, require_cache.getCacheTtlMs(), JSON.stringify(message));
1096
+ } catch (err) {
1097
+ require_logger.logger.error(`Failed to cache response: ${String(err)}`);
1098
+ }
1099
+ const outputMessage = require_util$1.isClaudeSonnet55Model(this.modelName) ? {
1100
+ ...message,
1101
+ content: [...responses.slice(0, -1).flatMap((turn) => turn.content.filter((block) => block.type === "thinking" && !message.content.includes(block))), ...message.content]
1102
+ } : message;
1103
+ const response = this.buildMessageResponse(outputMessage, config, processedOutputFormat, false);
1104
+ return mcpMetadata ? {
1105
+ ...response,
1106
+ metadata: {
1107
+ ...response.metadata,
1108
+ ...mcpMetadata
1109
+ }
1110
+ } : response;
1111
+ } catch (err) {
1112
+ require_logger.logger.error(`Anthropic Messages API call error: ${err instanceof Error ? err.message : String(err)}`);
1113
+ let error = `API call error: ${err instanceof Error ? err.message : String(err)}`;
1114
+ if (err instanceof _anthropic_ai_sdk.APIError && err.error) {
1115
+ const errorDetails = err.error;
1116
+ error = `API call error: ${errorDetails.error.message}, status ${err.status}, type ${errorDetails.error.type}`;
1117
+ }
1118
+ const lastResponse = responses[responses.length - 1];
1119
+ return {
1120
+ error,
1121
+ ...lastResponse ? {
1122
+ tokenUsage: require_util$1.getTokenUsage(withMergedAnthropicUsage(lastResponse, responses), false),
1123
+ cost: this.calculateMessageCosts(config, responses)
1124
+ } : {}
1125
+ };
1126
+ }
1127
+ }
1128
+ };
1129
+ //#endregion
1130
+ Object.defineProperty(exports, "AnthropicGenericProvider", {
1131
+ enumerable: true,
1132
+ get: function() {
1133
+ return AnthropicGenericProvider;
1134
+ }
1135
+ });
1136
+ Object.defineProperty(exports, "AnthropicMessagesProvider", {
1137
+ enumerable: true,
1138
+ get: function() {
1139
+ return AnthropicMessagesProvider;
1140
+ }
1141
+ });
1142
+ Object.defineProperty(exports, "buildIsolatedAnthropicClientOptions", {
1143
+ enumerable: true,
1144
+ get: function() {
1145
+ return buildIsolatedAnthropicClientOptions;
1146
+ }
1147
+ });
1148
+ Object.defineProperty(exports, "getAnthropicEnvHeaderSuppressions", {
1149
+ enumerable: true,
1150
+ get: function() {
1151
+ return getAnthropicEnvHeaderSuppressions;
1152
+ }
1153
+ });
1154
+ Object.defineProperty(exports, "hashAnthropicCacheValue", {
1155
+ enumerable: true,
1156
+ get: function() {
1157
+ return hashAnthropicCacheValue;
1158
+ }
1159
+ });
1160
+
1161
+ //# sourceMappingURL=messages-Cv_m6kYs.cjs.map