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,1000 @@
1
+ #!/usr/bin/env node
2
+ import { Q as getEnvString, c as logger, lt as state, tt as getProcessEnv } from "./logger-pCNnmVuz.js";
3
+ import { a as importModule, c as safeResolve, o as resolvePackageEntryPoint, r as getDirectory } from "./esm-B4NX_h4K.js";
4
+ import { t as getPackageVersion } from "./packageVersion-CVhzH1IZ.js";
5
+ import { n as PROMPTFOO_RESOURCE_ATTR_TRACE_ID, t as PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID } from "./resourceAttributes-Cixq2go1.js";
6
+ import { h as withGenAISpan, l as getGenAITracer, o as emitTurnMarkerSpan, p as sanitizeBody, r as addActiveSpanRoleAttribute, t as GenAIAttributes, u as getTraceparent } from "./genaiTracer-j8OXa5Va.js";
7
+ import { i as initializeAgenticCache, o as resolveAgenticWorkingDir, r as getCachedResponse, t as cacheResponse } from "./agentic-utils-D8wyQwPG.js";
8
+ import { n as clearRepositoryEnv, t as assertIsolatedWorkingDir } from "./agentWorkspace-DPtMLrlI.js";
9
+ import { a as isActiveTracingExport, o as waitForNativeTraceExport, t as getConfiguredTracingExport } from "./tracing-Eev_7A4e.js";
10
+ import { a as validateMCPConfigForClaudeCode, t as transformMCPConfigToClaudeCode } from "./transform-DAED8imp.js";
11
+ import { t as ANTHROPIC_MODELS } from "./util-TfpE49TI.js";
12
+ import path from "node:path";
13
+ import os from "node:os";
14
+ import fsPromises from "node:fs/promises";
15
+ import dedent from "dedent";
16
+ import { SpanStatusCode, trace } from "@opentelemetry/api";
17
+ import semverSatisfies from "semver/functions/satisfies.js";
18
+ //#region src/providers/claude-agent-sdk.ts
19
+ /** Hard cap for attribute body length on synthesized tool spans. */
20
+ const TOOL_SPAN_BODY_LIMIT = 4096;
21
+ const REDACTED_SUBAGENT_TRANSCRIPT = "[Subagent transcript omitted; set forward_subagent_text: true to include it]";
22
+ /** Returned when cancellation is observed at any checkpoint before the SDK query starts. */
23
+ const ABORTED_BEFORE_START_ERROR = "Claude Agent SDK call aborted before it started";
24
+ const USAGE_BASELINE_TIMEOUT_MS = 5e3;
25
+ const MODEL_USAGE_COUNTERS = [
26
+ "inputTokens",
27
+ "outputTokens",
28
+ "thinkingTokens",
29
+ "cacheReadInputTokens",
30
+ "cacheCreationInputTokens",
31
+ "webSearchRequests",
32
+ "costUSD"
33
+ ];
34
+ function subtractSessionUsage(current, baseline) {
35
+ return Object.fromEntries(Object.entries(current).map(([model, usage]) => {
36
+ const delta = { ...usage };
37
+ for (const key of MODEL_USAGE_COUNTERS) if (typeof usage[key] === "number") delta[key] = Math.max(0, usage[key] - (baseline[model]?.[key] ?? 0));
38
+ return [model, delta];
39
+ }));
40
+ }
41
+ /**
42
+ * Append promptfoo-specific resource-attribute kvs to a W3C-style
43
+ * `OTEL_RESOURCE_ATTRIBUTES` string, removing trailing whitespace/commas from
44
+ * the existing value and stripping any previous occurrence of our keys so the
45
+ * producer can't double-up. Returns the new string. Exported for tests.
46
+ */
47
+ function appendPromptfooResourceAttrs(existing, traceId, parentSpanId) {
48
+ const incoming = `${PROMPTFOO_RESOURCE_ATTR_TRACE_ID}=${traceId},${PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID}=${parentSpanId}`;
49
+ if (!existing) return incoming;
50
+ const cleaned = existing.split(",").map((pair) => pair.trim()).filter((pair) => pair.length > 0 && !pair.startsWith(`promptfoo.trace_id=`) && !pair.startsWith(`promptfoo.parent_span_id=`)).join(",");
51
+ return cleaned.length > 0 ? `${cleaned},${incoming}` : incoming;
52
+ }
53
+ function stringifyForSpan(value) {
54
+ if (value === void 0 || value === null) return;
55
+ let raw;
56
+ if (typeof value === "string") raw = value;
57
+ else try {
58
+ raw = JSON.stringify(value);
59
+ } catch {
60
+ return "<unserializable>";
61
+ }
62
+ if (raw === void 0) return;
63
+ const sanitized = sanitizeBody(raw);
64
+ return sanitized.length > TOOL_SPAN_BODY_LIMIT ? `${sanitized.slice(0, 4081)}... [truncated]` : sanitized;
65
+ }
66
+ /**
67
+ * Emit a child span for a single tool call. Parents to the currently active
68
+ * span (the provider's GenAI wrapper) so the UI shows an agent → tool hierarchy
69
+ * similar to the OpenAI Agents SDK.
70
+ *
71
+ * When `incomplete` is true the call never produced a matching `tool_result`
72
+ * (aborted run, stop hook, or the stream ended mid-tool). Such spans are
73
+ * flagged via `tool.incomplete` and marked ERROR so traces surface the gap
74
+ * instead of silently dropping the tool.
75
+ */
76
+ function emitToolSpan(entry, startTimeMs, endTimeMs, isError, incomplete = false, turnIndex) {
77
+ try {
78
+ const tracer = getGenAITracer();
79
+ const attributes = {
80
+ "gen_ai.operation.name": "execute_tool",
81
+ "gen_ai.tool.call.id": entry.id,
82
+ "gen_ai.tool.name": entry.name,
83
+ "tool.name": entry.name,
84
+ "tool.is_error": isError
85
+ };
86
+ if (incomplete) attributes["tool.incomplete"] = true;
87
+ const input = stringifyForSpan(entry.input);
88
+ if (input !== void 0) attributes["tool.input"] = input;
89
+ const output = stringifyForSpan(entry.output);
90
+ if (output !== void 0) attributes["tool.output"] = output;
91
+ if (entry.parentToolUseId) attributes["tool.parent_id"] = entry.parentToolUseId;
92
+ if (typeof turnIndex === "number") attributes["gen_ai.turn.index"] = turnIndex;
93
+ const span = tracer.startSpan(`tool ${entry.name}`, {
94
+ startTime: startTimeMs,
95
+ attributes: addActiveSpanRoleAttribute(attributes)
96
+ });
97
+ span.setStatus({ code: isError || incomplete ? SpanStatusCode.ERROR : SpanStatusCode.OK });
98
+ span.end(endTimeMs);
99
+ } catch (err) {
100
+ logger.warn(`[ClaudeAgentSDK] Failed to emit tool span for ${entry.name}: ${err}`);
101
+ }
102
+ }
103
+ function isRawSubagentTranscript(result) {
104
+ if (typeof result !== "object" || result === null) return false;
105
+ if ("content" in result && "_meta" in result) return isRawSubagentTranscript(result.content);
106
+ if ("isRawTranscript" in result && result.isRawTranscript === true) return true;
107
+ return "task" in result && typeof result.task === "object" && result.task !== null && "isRawTranscript" in result.task && result.task.isRawTranscript === true;
108
+ }
109
+ function redactRawSubagentToolOutput(result) {
110
+ if (!isRawSubagentTranscript(result)) return result;
111
+ const output = result;
112
+ if ("content" in output && "_meta" in output) return {
113
+ ...output,
114
+ content: redactRawSubagentToolOutput(output.content)
115
+ };
116
+ const nestedTask = "task" in output && typeof output.task === "object" && output.task !== null;
117
+ const task = nestedTask ? output.task : output;
118
+ const redactedTask = {
119
+ ...task,
120
+ output: REDACTED_SUBAGENT_TRANSCRIPT,
121
+ ..."result" in task ? { result: REDACTED_SUBAGENT_TRANSCRIPT } : {},
122
+ isRawTranscript: false
123
+ };
124
+ return nestedTask ? {
125
+ ...output,
126
+ task: redactedTask
127
+ } : redactedTask;
128
+ }
129
+ function createTaskOutputTranscriptRedactionHook() {
130
+ return {
131
+ matcher: "TaskOutput",
132
+ hooks: [async (input) => {
133
+ if (input.hook_event_name !== "PostToolUse" || input.tool_name !== "TaskOutput" || !isRawSubagentTranscript(input.tool_response)) return {};
134
+ return { hookSpecificOutput: {
135
+ hookEventName: "PostToolUse",
136
+ updatedToolOutput: redactRawSubagentToolOutput(input.tool_response)
137
+ } };
138
+ }]
139
+ };
140
+ }
141
+ function deriveSkillCalls(toolCalls) {
142
+ return toolCalls.filter((toolCall) => toolCall.name === "Skill").flatMap((toolCall) => {
143
+ const skillName = toolCall.input && typeof toolCall.input === "object" && typeof toolCall.input.skill === "string" ? toolCall.input.skill.trim() : "";
144
+ if (!skillName) return [];
145
+ return [{
146
+ name: skillName,
147
+ input: toolCall.input,
148
+ is_error: toolCall.is_error,
149
+ source: "tool"
150
+ }];
151
+ });
152
+ }
153
+ /**
154
+ * Claude Agent SDK Provider
155
+ *
156
+ * This provider requires the @anthropic-ai/claude-agent-sdk package to be installed separately:
157
+ * npm install promptfoo @anthropic-ai/claude-agent-sdk@^0.3.273
158
+ *
159
+ * Two default configurations:
160
+ * - No working_dir: Runs in temp directory with no tools - behaves like plain chat API
161
+ * - With working_dir: Runs in specified directory with read-only file tools (Read/Grep/Glob/LS)
162
+ *
163
+ * User can override tool permissions with 'custom_allowed_tools', 'append_allowed_tools', 'disallowed_tools', and 'permission_mode'.
164
+ *
165
+ * For side effects (file writes, system calls, etc.), user can override permissions and use a custom working directory. They're then responsible for setup/teardown and security considerations.
166
+ *
167
+ * MCP server connection details are passed through from config. strict_mcp_config is true by default to only allow explicitly configured MCP servers.
168
+ */
169
+ const FS_READONLY_ALLOWED_TOOLS = [
170
+ "Read",
171
+ "Grep",
172
+ "Glob",
173
+ "LS"
174
+ ].sort();
175
+ const CLAUDE_CODE_MODEL_ALIASES = [
176
+ "default",
177
+ "best",
178
+ "fable",
179
+ "fable[1m]",
180
+ "sonnet",
181
+ "opus",
182
+ "haiku",
183
+ "sonnet[1m]",
184
+ "opus[1m]",
185
+ "opusplan",
186
+ "opusplan[1m]"
187
+ ];
188
+ const CLAUDE_AGENT_SDK_RANGE = "^0.3.273";
189
+ /**
190
+ * Helper to load the Claude Agent SDK ESM module
191
+ * Uses resolvePackageEntryPoint to handle ESM-only packages with restrictive exports
192
+ */
193
+ async function loadClaudeCodeSDK() {
194
+ const basePath = state.basePath && path.isAbsolute(state.basePath) ? state.basePath : process.cwd();
195
+ const basePaths = /* @__PURE__ */ new Set([
196
+ basePath,
197
+ process.cwd(),
198
+ path.resolve(getDirectory(), ".."),
199
+ path.resolve(getDirectory(), "../..")
200
+ ]);
201
+ let claudeCodePath = null;
202
+ for (const candidate of basePaths) {
203
+ claudeCodePath = resolvePackageEntryPoint("@anthropic-ai/claude-agent-sdk", candidate);
204
+ if (claudeCodePath) break;
205
+ }
206
+ if (!claudeCodePath) throw new Error(dedent`The @anthropic-ai/claude-agent-sdk package could not be resolved from ${basePath}.
207
+
208
+ To use the Claude Agent SDK provider, install it with:
209
+ npm install promptfoo @anthropic-ai/claude-agent-sdk@${CLAUDE_AGENT_SDK_RANGE}
210
+
211
+ If the package is already installed elsewhere, run promptfoo from the
212
+ project root (or point the config at that root) so node_modules is on
213
+ the resolution path.
214
+
215
+ For more information, see: https://www.promptfoo.dev/docs/providers/claude-agent-sdk/`);
216
+ const version = getPackageVersion("@anthropic-ai/claude-agent-sdk", claudeCodePath);
217
+ if (!version || !semverSatisfies(version, CLAUDE_AGENT_SDK_RANGE)) throw new Error(`The Claude Agent SDK provider requires @anthropic-ai/claude-agent-sdk@${CLAUDE_AGENT_SDK_RANGE} (found ${version ?? "unknown"}). Install it with: npm install promptfoo @anthropic-ai/claude-agent-sdk@${CLAUDE_AGENT_SDK_RANGE}`);
218
+ try {
219
+ return await importModule(claudeCodePath);
220
+ } catch (err) {
221
+ logger.error(`Failed to load Claude Agent SDK: ${err}`);
222
+ if (err.stack) logger.error(err.stack);
223
+ throw new Error(dedent`Failed to load @anthropic-ai/claude-agent-sdk.
224
+
225
+ The package was found but could not be loaded. This may be due to:
226
+ - Incompatible Node.js version (requires Node.js >=22.22.0)
227
+ - Corrupted installation
228
+
229
+ Try reinstalling:
230
+ npm install promptfoo @anthropic-ai/claude-agent-sdk@${CLAUDE_AGENT_SDK_RANGE}
231
+
232
+ For more information, see: https://www.promptfoo.dev/docs/providers/claude-agent-sdk/`);
233
+ }
234
+ }
235
+ /**
236
+ * Creates a canUseTool callback for handling AskUserQuestion tool in automated evaluations.
237
+ * This provides automated responses to questions that would normally require user input.
238
+ *
239
+ * The callback wraps an optional user-provided canUseTool and handles AskUserQuestion specifically,
240
+ * deferring to the wrapped callback for all other tools.
241
+ */
242
+ function createAskUserQuestionCanUseTool(behavior = "first_option", wrappedCanUseTool) {
243
+ return async (toolName, input, options) => {
244
+ if (toolName !== "AskUserQuestion") {
245
+ if (wrappedCanUseTool) return wrappedCanUseTool(toolName, input, options);
246
+ return {
247
+ behavior: "deny",
248
+ message: "Tool permission request is not handled by ask_user_question automation"
249
+ };
250
+ }
251
+ if (behavior === "deny") return {
252
+ behavior: "deny",
253
+ message: "AskUserQuestion is disabled in automated evaluation mode"
254
+ };
255
+ if (!isAskUserQuestionToolInput(input)) return {
256
+ behavior: "deny",
257
+ message: "AskUserQuestion received malformed question input"
258
+ };
259
+ const toolInput = input;
260
+ const answers = Object.create(null);
261
+ for (const question of toolInput.questions) {
262
+ if (!question.options || question.options.length === 0) continue;
263
+ let selectedLabels;
264
+ if (behavior === "random") {
265
+ const randomIndex = Math.floor(Math.random() * question.options.length);
266
+ selectedLabels = [question.options[randomIndex].label];
267
+ } else selectedLabels = [question.options[0].label];
268
+ answers[question.question] = selectedLabels.join(", ");
269
+ }
270
+ return {
271
+ behavior: "allow",
272
+ updatedInput: {
273
+ questions: toolInput.questions,
274
+ answers
275
+ }
276
+ };
277
+ };
278
+ }
279
+ /**
280
+ * Assemble the hook set actually handed to the SDK.
281
+ *
282
+ * Two independent concerns layer here, on different hook events, so both apply:
283
+ * a PostToolUse hook that redacts raw background-agent transcripts, and a
284
+ * PreToolUse hook that answers AskUserQuestion under `dontAsk`. In both cases
285
+ * promptfoo's hook goes first and the user's configured matchers stay installed
286
+ * behind it, so an explicit user denial still wins.
287
+ */
288
+ function buildClaudeHooks(config) {
289
+ let hooks = config.hooks;
290
+ if (!config.forward_subagent_text) hooks = {
291
+ ...hooks,
292
+ PostToolUse: [createTaskOutputTranscriptRedactionHook(), ...hooks?.PostToolUse ?? []]
293
+ };
294
+ if (config.permission_mode !== "dontAsk" || !config.ask_user_question) return hooks;
295
+ const questionHandler = createAskUserQuestionCanUseTool(config.ask_user_question.behavior);
296
+ const askUserQuestionHook = {
297
+ matcher: "AskUserQuestion",
298
+ hooks: [async (input, toolUseID, { signal }) => {
299
+ if (input.hook_event_name !== "PreToolUse" || input.tool_name !== "AskUserQuestion") return {};
300
+ const resolvedToolUseID = toolUseID ?? input.tool_use_id;
301
+ const result = await questionHandler(input.tool_name, input.tool_input, {
302
+ signal,
303
+ toolUseID: resolvedToolUseID,
304
+ requestId: resolvedToolUseID
305
+ });
306
+ if (result?.behavior !== "allow") return { hookSpecificOutput: {
307
+ hookEventName: "PreToolUse",
308
+ permissionDecision: "deny",
309
+ permissionDecisionReason: result?.message ?? "ask_user_question automation returned no decision"
310
+ } };
311
+ return { hookSpecificOutput: {
312
+ hookEventName: "PreToolUse",
313
+ permissionDecision: "allow",
314
+ updatedInput: result.updatedInput
315
+ } };
316
+ }]
317
+ };
318
+ return {
319
+ ...hooks,
320
+ PreToolUse: [askUserQuestionHook, ...hooks?.PreToolUse ?? []]
321
+ };
322
+ }
323
+ function validateAskUserQuestionConfig(config) {
324
+ if (!config || typeof config !== "object" || Array.isArray(config)) throw new Error("ask_user_question must be an object");
325
+ const behavior = config.behavior;
326
+ if (behavior !== void 0 && behavior !== "first_option" && behavior !== "random" && behavior !== "deny") throw new Error("ask_user_question.behavior must be first_option, random, or deny");
327
+ }
328
+ const RESERVED_POLICY_EXTRA_ARGS = /* @__PURE__ */ new Set([
329
+ "adddir",
330
+ "agent",
331
+ "agents",
332
+ "allowdangerouslyskippermissions",
333
+ "allowedtools",
334
+ "bare",
335
+ "brief",
336
+ "chrome",
337
+ "dangerouslyskippermissions",
338
+ "disallowedtools",
339
+ "ide",
340
+ "managedsettings",
341
+ "mcpconfig",
342
+ "permissionmode",
343
+ "permissionprompttool",
344
+ "plugindir",
345
+ "plugindirnomcp",
346
+ "pluginurl",
347
+ "remotecontrol",
348
+ "safemode",
349
+ "settings",
350
+ "settingsources",
351
+ "strictmcpconfig",
352
+ "tools"
353
+ ]);
354
+ function normalizeClaudeCliArgumentName(name) {
355
+ return name.split(/[=:]/, 1)[0].replace(/^--/, "").replace(/[-_]/g, "").toLowerCase();
356
+ }
357
+ function validateClaudeToolPolicyConfig(config) {
358
+ for (const option of ["allow_all_tools", "allow_dangerously_skip_permissions"]) if (config[option] !== void 0 && typeof config[option] !== "boolean") throw new Error(`${option} must be a boolean`);
359
+ for (const option of [
360
+ "custom_allowed_tools",
361
+ "append_allowed_tools",
362
+ "disallowed_tools"
363
+ ]) {
364
+ const value = config[option];
365
+ if (value !== void 0 && (!Array.isArray(value) || value.some((tool) => typeof tool !== "string"))) throw new Error(`${option} must be an array of tool-name strings`);
366
+ }
367
+ const permissionModes = [
368
+ "default",
369
+ "plan",
370
+ "acceptEdits",
371
+ "bypassPermissions",
372
+ "dontAsk",
373
+ "auto",
374
+ "manual"
375
+ ];
376
+ if (config.permission_mode !== void 0 && !permissionModes.includes(config.permission_mode)) throw new Error(`permission_mode must be one of ${permissionModes.join(", ")}`);
377
+ if (config.tools !== void 0) {
378
+ const validArray = Array.isArray(config.tools) && config.tools.every((tool) => typeof tool === "string");
379
+ const validPreset = !!config.tools && typeof config.tools === "object" && !Array.isArray(config.tools) && config.tools.type === "preset" && config.tools.preset === "claude_code";
380
+ if (!validArray && !validPreset) throw new Error("tools must be an array of tool-name strings or the claude_code preset");
381
+ }
382
+ if (config.extra_args !== void 0 && (!config.extra_args || typeof config.extra_args !== "object" || Array.isArray(config.extra_args) || Object.values(config.extra_args).some((value) => value !== null && typeof value !== "string"))) throw new Error("extra_args must be an object with string or null values");
383
+ const reservedExtraArg = Object.keys(config.extra_args ?? {}).find((name) => RESERVED_POLICY_EXTRA_ARGS.has(normalizeClaudeCliArgumentName(name)));
384
+ if (reservedExtraArg) throw new Error(`extra_args cannot override Claude runtime policy (${reservedExtraArg}); use supported structured provider options instead`);
385
+ }
386
+ function mcpServerContainsCacheSensitiveData(server) {
387
+ if (server.auth || Object.keys(server.headers ?? {}).length > 0 || Object.keys(server.env ?? {}).length > 0 || (server.args?.length ?? 0) > 0) return true;
388
+ if (!server.url) return false;
389
+ try {
390
+ const url = new URL(server.url);
391
+ return Boolean(url.username || url.password || url.search);
392
+ } catch {
393
+ return server.url.includes("?") || server.url.includes("@");
394
+ }
395
+ }
396
+ function mcpConfigContainsCacheSensitiveData(config) {
397
+ if (!config || config.enabled === false) return false;
398
+ return [...config.servers ?? [], ...config.server ? [config.server] : []].some(mcpServerContainsCacheSensitiveData);
399
+ }
400
+ function isAskUserQuestionToolInput(input) {
401
+ if (!input || typeof input !== "object" || !Array.isArray(input.questions)) return false;
402
+ return input.questions.every((question) => !!question && typeof question === "object" && typeof question.question === "string" && typeof question.header === "string" && typeof question.multiSelect === "boolean" && Array.isArray(question.options) && question.options.every((option) => !!option && typeof option === "object" && typeof option.label === "string" && typeof option.description === "string"));
403
+ }
404
+ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
405
+ static ANTHROPIC_MODELS = ANTHROPIC_MODELS;
406
+ static ANTHROPIC_MODELS_NAMES = ANTHROPIC_MODELS.map((model) => model.id);
407
+ config;
408
+ env;
409
+ apiKey;
410
+ providerId = "anthropic:claude-agent-sdk";
411
+ claudeCodeModule;
412
+ credentialCacheScope = crypto.randomUUID();
413
+ constructor(options = {}) {
414
+ const { config, env, id } = options;
415
+ this.config = config ?? {};
416
+ this.env = env;
417
+ this.apiKey = this.getApiKey();
418
+ this.providerId = id ?? this.providerId;
419
+ if (this.config.model && !ClaudeCodeSDKProvider.ANTHROPIC_MODELS_NAMES.includes(this.config.model) && !CLAUDE_CODE_MODEL_ALIASES.includes(this.config.model)) logger.warn(`Using unknown model for Claude Agent SDK: ${this.config.model}`);
420
+ for (const fallbackModel of (this.config.fallback_model ?? "").split(",").map((m) => m.trim()).filter(Boolean)) if (!ClaudeCodeSDKProvider.ANTHROPIC_MODELS_NAMES.includes(fallbackModel) && !CLAUDE_CODE_MODEL_ALIASES.includes(fallbackModel)) logger.warn(`Using unknown model for Claude Agent SDK fallback: ${fallbackModel}`);
421
+ }
422
+ id() {
423
+ return this.providerId;
424
+ }
425
+ async callApi(prompt, context, callOptions) {
426
+ if (callOptions?.abortSignal?.aborted) return { error: ABORTED_BEFORE_START_ERROR };
427
+ const config = {
428
+ ...this.config,
429
+ ...context?.prompt?.config
430
+ };
431
+ const inIsolatedWorkspace = assertIsolatedWorkingDir(config);
432
+ if (config.ask_user_question !== void 0) validateAskUserQuestionConfig(config.ask_user_question);
433
+ if (config.mcp !== void 0) validateMCPConfigForClaudeCode(config.mcp);
434
+ validateClaudeToolPolicyConfig(config);
435
+ const env = {};
436
+ const processEnv = getProcessEnv();
437
+ for (const key of Object.keys(processEnv).sort()) if (processEnv[key] !== void 0) env[key] = processEnv[key];
438
+ if (config.env) for (const key of Object.keys(config.env).sort()) {
439
+ const value = config.env[key];
440
+ if (value !== void 0) env[key] = value;
441
+ }
442
+ if (this.env) for (const key of Object.keys(this.env).sort()) {
443
+ const value = this.env[key];
444
+ if (value !== void 0) env[key] = value;
445
+ }
446
+ if (inIsolatedWorkspace) clearRepositoryEnv(env);
447
+ if (config.deep_tracing) {
448
+ const receiverExport = getConfiguredTracingExport();
449
+ env.CLAUDE_CODE_ENABLE_TELEMETRY ??= "1";
450
+ env.CLAUDE_CODE_ENHANCED_TELEMETRY_BETA ??= "1";
451
+ env.OTEL_TRACES_EXPORTER ??= "otlp";
452
+ env.OTEL_EXPORTER_OTLP_ENDPOINT ??= receiverExport?.endpoint ?? "http://127.0.0.1:4318";
453
+ env.OTEL_EXPORTER_OTLP_PROTOCOL ??= receiverExport?.format === "json" ? "http/json" : "http/protobuf";
454
+ env.OTEL_TRACES_EXPORT_INTERVAL ??= "1000";
455
+ }
456
+ const sdkExportsNativeSpans = env.CLAUDE_CODE_ENABLE_TELEMETRY === "1" && (env.CLAUDE_CODE_ENHANCED_TELEMETRY_BETA === "1" || env.ENABLE_ENHANCED_TELEMETRY_BETA === "1") && env.OTEL_TRACES_EXPORTER?.split(",").some((exporter) => exporter.trim() === "otlp") && isActiveTracingExport(env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT ?? env.OTEL_EXPORTER_OTLP_ENDPOINT, env.OTEL_EXPORTER_OTLP_TRACES_PROTOCOL ?? env.OTEL_EXPORTER_OTLP_PROTOCOL);
457
+ for (const [option, environmentVariable] of [["max_subagent_spawn_depth", "CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH"], ["max_concurrent_subagents", "CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS"]]) {
458
+ const value = config[option];
459
+ if (value === void 0) continue;
460
+ if (!Number.isSafeInteger(value) || value < 1) throw new Error(`${option} must be a positive safe integer`);
461
+ env[environmentVariable] = String(value);
462
+ }
463
+ env.CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH ??= "5";
464
+ if (config.allow_all_tools) env.CLAUDE_CODE_ENABLE_TODO_TOOLS ??= "1";
465
+ const effectiveApiKey = config.apiKey || this.apiKey;
466
+ if (effectiveApiKey) env.ANTHROPIC_API_KEY = effectiveApiKey;
467
+ const credentialCacheScope = this.credentialCacheScope;
468
+ if (!effectiveApiKey && !(config.apiKeyRequired === false || env.CLAUDE_CODE_USE_BEDROCK || env.CLAUDE_CODE_USE_VERTEX)) throw new Error(dedent`Anthropic API key is not set. Set the ANTHROPIC_API_KEY environment variable or add "apiKey" to the provider config.
469
+
470
+ Use CLAUDE_CODE_USE_BEDROCK or CLAUDE_CODE_USE_VERTEX environment variables to use Bedrock or Vertex instead.`);
471
+ if (config.allow_all_tools === true && ("custom_allowed_tools" in config || "append_allowed_tools" in config || config.tools !== void 0)) throw new Error("Cannot specify allow_all_tools together with tools, custom_allowed_tools, or append_allowed_tools");
472
+ if ("custom_allowed_tools" in config && "append_allowed_tools" in config) throw new Error("Cannot specify both custom_allowed_tools and append_allowed_tools");
473
+ if (config.permission_mode === "bypassPermissions" && config.allow_dangerously_skip_permissions !== true) throw new Error("permission_mode 'bypassPermissions' requires allow_dangerously_skip_permissions: true as a safety measure");
474
+ if (config.title && (config.resume || config.continue)) logger.warn("[ClaudeAgentSDK] `title` is ignored when `resume` or `continue` is set; the persisted session title is used instead.");
475
+ const defaultAllowedTools = config.working_dir ? FS_READONLY_ALLOWED_TOOLS : [];
476
+ let allowedTools = config.allow_all_tools ? void 0 : defaultAllowedTools;
477
+ if ("custom_allowed_tools" in config) allowedTools = Array.from(new Set(config.custom_allowed_tools ?? [])).sort();
478
+ else if (config.append_allowed_tools) allowedTools = Array.from(/* @__PURE__ */ new Set([...defaultAllowedTools, ...config.append_allowed_tools])).sort();
479
+ if (config.ask_user_question) allowedTools = allowedTools?.filter((tool) => tool !== "AskUserQuestion");
480
+ const disallowedTools = config.disallowed_tools ? Array.from(new Set(config.disallowed_tools)).sort() : void 0;
481
+ let tools = config.tools;
482
+ if (tools === void 0) {
483
+ if (config.allow_all_tools === true) tools = {
484
+ type: "preset",
485
+ preset: "claude_code"
486
+ };
487
+ else {
488
+ const derivedTools = new Set(allowedTools);
489
+ if (config.ask_user_question) derivedTools.add("AskUserQuestion");
490
+ if (config.skills === "all" || Array.isArray(config.skills) && config.skills.length > 0) derivedTools.add("Skill");
491
+ if (config.agents && Object.keys(config.agents).length > 0) derivedTools.add("Task");
492
+ if (config.permission_mode === "plan") derivedTools.add("ExitPlanMode");
493
+ tools = Array.from(derivedTools).sort();
494
+ }
495
+ }
496
+ const basePath = state.basePath ? path.resolve(state.basePath) : process.cwd();
497
+ let isTempDir = false;
498
+ let workingDir;
499
+ if (config.working_dir) workingDir = resolveAgenticWorkingDir(config.working_dir, basePath);
500
+ else isTempDir = true;
501
+ let canUseTool = config.can_use_tool;
502
+ if (config.ask_user_question) canUseTool = createAskUserQuestionCanUseTool(config.ask_user_question.behavior, config.can_use_tool);
503
+ const hooks = buildClaudeHooks(config);
504
+ const cacheKeyQueryOptions = {
505
+ maxTurns: config.max_turns,
506
+ model: config.model,
507
+ fallbackModel: config.fallback_model,
508
+ strictMcpConfig: config.strict_mcp_config ?? true,
509
+ permissionMode: config.permission_mode === "manual" ? "default" : config.permission_mode ?? "default",
510
+ planModeInstructions: config.plan_mode_instructions,
511
+ systemPrompt: config.custom_system_prompt == null ? {
512
+ type: "preset",
513
+ preset: "claude_code",
514
+ append: config.append_system_prompt,
515
+ snapshot: false,
516
+ ...config.exclude_dynamic_sections ? { excludeDynamicSections: true } : {}
517
+ } : {
518
+ type: "custom",
519
+ prompt: config.custom_system_prompt,
520
+ snapshot: false
521
+ },
522
+ maxThinkingTokens: config.max_thinking_tokens,
523
+ allowedTools,
524
+ disallowedTools,
525
+ plugins: config.plugins?.map((plugin) => ({
526
+ ...plugin,
527
+ path: safeResolve(basePath, plugin.path)
528
+ })),
529
+ skills: config.skills,
530
+ maxBudgetUsd: config.max_budget_usd,
531
+ additionalDirectories: config.additional_directories?.map((dir) => safeResolve(basePath, dir)),
532
+ resume: config.resume,
533
+ forkSession: config.fork_session,
534
+ resumeSessionAt: config.resume_session_at,
535
+ continue: config.continue,
536
+ agents: config.agents,
537
+ outputFormat: config.output_format,
538
+ hooks,
539
+ includePartialMessages: config.include_partial_messages,
540
+ includeHookEvents: config.include_hook_events,
541
+ forwardSubagentText: config.forward_subagent_text,
542
+ toolConfig: config.tool_config,
543
+ promptSuggestions: config.prompt_suggestions,
544
+ agentProgressSummaries: config.agent_progress_summaries,
545
+ settings: typeof config.settings === "string" && config.settings ? safeResolve(basePath, config.settings) : config.settings,
546
+ managedSettings: config.managed_settings,
547
+ betas: config.betas,
548
+ thinking: config.thinking,
549
+ effort: config.effort,
550
+ agent: config.agent,
551
+ sessionId: config.session_id,
552
+ debug: config.debug,
553
+ debugFile: config.debug_file ? safeResolve(basePath, config.debug_file) : void 0,
554
+ sandbox: config.sandbox,
555
+ allowDangerouslySkipPermissions: config.allow_dangerously_skip_permissions,
556
+ permissionPromptToolName: config.permission_prompt_tool_name,
557
+ executable: config.executable,
558
+ executableArgs: config.executable_args,
559
+ extraArgs: config.extra_args,
560
+ pathToClaudeCodeExecutable: config.path_to_claude_code_executable ? safeResolve(basePath, config.path_to_claude_code_executable) : void 0,
561
+ settingSources: config.setting_sources ?? [],
562
+ tools,
563
+ enableFileCheckpointing: config.enable_file_checkpointing,
564
+ persistSession: config.persist_session,
565
+ taskBudget: config.task_budget,
566
+ env: {}
567
+ };
568
+ const runtimeCallbackBypassesCache = Boolean(config.can_use_tool) || Boolean(config.on_elicitation) || Boolean(config.hooks) || Boolean(config.spawn_claude_code_process) || config.ask_user_question?.behavior === "random";
569
+ const activeMcpConfig = config.mcp?.enabled !== false && (config.mcp?.server || (config.mcp?.servers?.length ?? 0) > 0) ? config.mcp : void 0;
570
+ const sensitiveMcpBypassesCache = mcpConfigContainsCacheSensitiveData(activeMcpConfig);
571
+ const settingsConfigurationBypassesCache = config.settings !== void 0 || config.managed_settings !== void 0;
572
+ const extraArgsBypassCache = Object.keys(config.extra_args ?? {}).length > 0;
573
+ const promptCredentialOverrideBypassesCache = config.env !== this.config.env || config.apiKey !== this.config.apiKey;
574
+ const statefulSessionBypassesCache = Boolean(config.continue || config.resume || config.session_id);
575
+ const externalCredentialProviderBypassesCache = config.apiKeyRequired === false || Boolean(env.CLAUDE_CODE_USE_BEDROCK || env.CLAUDE_CODE_USE_VERTEX);
576
+ if (runtimeCallbackBypassesCache) logger.debug("[ClaudeCodeSDKProvider] Bypassing cache: runtime callback is not cache-stable");
577
+ if (sensitiveMcpBypassesCache) logger.debug("[ClaudeCodeSDKProvider] Bypassing cache: MCP configuration contains secrets");
578
+ if (credentialCacheScope) logger.debug("[ClaudeCodeSDKProvider] Scoping cache to in-memory credential identity");
579
+ if (settingsConfigurationBypassesCache) logger.debug("[ClaudeCodeSDKProvider] Bypassing cache: SDK settings are externally mutable");
580
+ if (extraArgsBypassCache) logger.debug("[ClaudeCodeSDKProvider] Bypassing cache: extra_args is open-ended");
581
+ if (promptCredentialOverrideBypassesCache) logger.debug("[ClaudeCodeSDKProvider] Bypassing cache: prompt config overrides credentials or environment");
582
+ if (statefulSessionBypassesCache) logger.debug("[ClaudeCodeSDKProvider] Bypassing cache: session history is mutable");
583
+ if (externalCredentialProviderBypassesCache) logger.debug("[ClaudeCodeSDKProvider] Bypassing cache: external credential identity is not cache-stable");
584
+ const cacheResult = inIsolatedWorkspace || runtimeCallbackBypassesCache || sensitiveMcpBypassesCache || settingsConfigurationBypassesCache || extraArgsBypassCache || promptCredentialOverrideBypassesCache || statefulSessionBypassesCache || externalCredentialProviderBypassesCache ? {
585
+ shouldReadCache: false,
586
+ shouldWriteCache: false
587
+ } : await initializeAgenticCache({
588
+ cacheKeyPrefix: "anthropic:claude-agent-sdk",
589
+ workingDir,
590
+ bustCache: context?.bustCache,
591
+ mcp: activeMcpConfig,
592
+ cacheMcp: config.cache_mcp
593
+ }, {
594
+ prompt,
595
+ cacheKeyQueryOptions,
596
+ ...credentialCacheScope ? { credentialCacheScope } : {},
597
+ ...config.ask_user_question ? { ask_user_question: config.ask_user_question } : {}
598
+ });
599
+ const cachedResponse = await getCachedResponse(cacheResult, "Claude Agent SDK");
600
+ if (callOptions?.abortSignal?.aborted) return { error: ABORTED_BEFORE_START_ERROR };
601
+ if (cachedResponse) return cachedResponse;
602
+ const mcpServers = config.mcp ? await transformMCPConfigToClaudeCode(config.mcp) : {};
603
+ if (workingDir) {
604
+ let stats;
605
+ try {
606
+ stats = await fsPromises.stat(workingDir);
607
+ } catch (err) {
608
+ throw new Error(`Working dir ${config.working_dir} does not exist or isn't accessible: ${err.message}`);
609
+ }
610
+ if (!stats.isDirectory()) throw new Error(`Working dir ${config.working_dir} is not a directory`);
611
+ } else if (isTempDir) workingDir = await fsPromises.mkdtemp(path.join(os.tmpdir(), "promptfoo-claude-agent-sdk-"));
612
+ if (callOptions?.abortSignal?.aborted) {
613
+ if (isTempDir && workingDir) await fsPromises.rm(workingDir, {
614
+ recursive: true,
615
+ force: true
616
+ });
617
+ return { error: ABORTED_BEFORE_START_ERROR };
618
+ }
619
+ const abortController = new AbortController();
620
+ let abortHandler;
621
+ if (callOptions?.abortSignal) {
622
+ abortHandler = () => {
623
+ abortController.abort(callOptions.abortSignal.reason);
624
+ };
625
+ callOptions.abortSignal.addEventListener("abort", abortHandler);
626
+ }
627
+ const options = {
628
+ ...cacheKeyQueryOptions,
629
+ env,
630
+ abortController,
631
+ mcpServers,
632
+ cwd: workingDir,
633
+ stderr: config.stderr,
634
+ spawnClaudeCodeProcess: config.spawn_claude_code_process,
635
+ canUseTool,
636
+ hooks,
637
+ onElicitation: config.on_elicitation,
638
+ title: config.title
639
+ };
640
+ const queryParams = {
641
+ prompt,
642
+ options
643
+ };
644
+ const needsUsageBaseline = Boolean(config.resume || config.continue || config.fork_session || [
645
+ "resume",
646
+ "r",
647
+ "continue",
648
+ "c",
649
+ "fork-session"
650
+ ].some((key) => Object.prototype.hasOwnProperty.call(config.extra_args ?? {}, key)));
651
+ let query;
652
+ let usageBaseline;
653
+ let captureUsageBaseline;
654
+ if (needsUsageBaseline) options.hooks = {
655
+ ...hooks,
656
+ UserPromptSubmit: [{ hooks: [async () => {
657
+ captureUsageBaseline ??= (async () => {
658
+ let timer;
659
+ let cancelSnapshot;
660
+ try {
661
+ const snapshot = query?.usage_EXPERIMENTAL_MAY_CHANGE_DO_NOT_RELY_ON_THIS_API_YET;
662
+ if (!snapshot) return;
663
+ const session = (await Promise.race([snapshot.call(query, { skipBehaviors: true }), new Promise((_, reject) => {
664
+ cancelSnapshot = () => reject(/* @__PURE__ */ new Error("Usage baseline cancelled"));
665
+ if (abortController.signal.aborted) {
666
+ cancelSnapshot();
667
+ return;
668
+ }
669
+ abortController.signal.addEventListener("abort", cancelSnapshot, { once: true });
670
+ timer = setTimeout(() => reject(/* @__PURE__ */ new Error("Usage baseline timed out")), USAGE_BASELINE_TIMEOUT_MS);
671
+ })]))?.session;
672
+ if (session && Number.isFinite(session.total_cost_usd) && session.total_cost_usd >= 0 && session.model_usage && typeof session.model_usage === "object" && !Array.isArray(session.model_usage) && Object.values(session.model_usage).every((usage) => usage && typeof usage === "object" && MODEL_USAGE_COUNTERS.every((key) => usage[key] === void 0 || Number.isFinite(usage[key]) && usage[key] >= 0))) usageBaseline = session;
673
+ } catch {} finally {
674
+ clearTimeout(timer);
675
+ if (cancelSnapshot) abortController.signal.removeEventListener("abort", cancelSnapshot);
676
+ }
677
+ })();
678
+ await captureUsageBaseline;
679
+ return {};
680
+ }] }, ...hooks?.UserPromptSubmit ?? []]
681
+ };
682
+ logger.debug(`Calling Claude Agent SDK: ${JSON.stringify({
683
+ prompt,
684
+ options: {
685
+ ...options,
686
+ mcpServers: options.mcpServers ? Object.keys(options.mcpServers) : void 0,
687
+ env: Object.keys(env).length > 0 ? Object.keys(env) : void 0
688
+ }
689
+ })}`);
690
+ try {
691
+ return await withGenAISpan({
692
+ system: "anthropic",
693
+ operationName: "invoke_agent",
694
+ model: config.model || "Claude Code",
695
+ agentName: "Claude Code",
696
+ providerId: this.providerId,
697
+ traceparent: context?.traceparent,
698
+ maxTokens: config.max_thinking_tokens,
699
+ requestBody: prompt
700
+ }, async () => {
701
+ const ZERO_TRACE_ID = "00000000000000000000000000000000";
702
+ const active = getTraceparent();
703
+ const traceparent = (active && !active.includes(ZERO_TRACE_ID) ? active : void 0) ?? context?.traceparent;
704
+ if (traceparent && !env.TRACEPARENT) env.TRACEPARENT = traceparent;
705
+ const [, tpTraceId, tpSpanId] = traceparent ? traceparent.split("-") : [];
706
+ if (tpTraceId && tpSpanId) env.OTEL_RESOURCE_ATTRIBUTES = appendPromptfooResourceAttrs(env.OTEL_RESOURCE_ATTRIBUTES, tpTraceId, tpSpanId);
707
+ if (!this.claudeCodeModule) this.claudeCodeModule = await loadClaudeCodeSDK();
708
+ const res = await this.claudeCodeModule.query(queryParams);
709
+ query = res;
710
+ const toolCallsMap = /* @__PURE__ */ new Map();
711
+ const assistantErrors = [];
712
+ const toolStartTimes = /* @__PURE__ */ new Map();
713
+ let turnCount = 0;
714
+ const toolTurnIndex = /* @__PURE__ */ new Map();
715
+ const deferredSyntheticSpans = [];
716
+ const emitOrDeferSyntheticSpan = (emit) => {
717
+ if (sdkExportsNativeSpans) deferredSyntheticSpans.push(emit);
718
+ else emit();
719
+ };
720
+ const emitTurnSpan = (msg) => {
721
+ const index = turnCount + 1;
722
+ turnCount = index;
723
+ const attributes = {
724
+ "gen_ai.turn.index": index,
725
+ [GenAIAttributes.PROVIDER_NAME]: "anthropic"
726
+ };
727
+ if (msg.parent_tool_use_id) {
728
+ attributes["gen_ai.turn.parent_tool_use_id"] = msg.parent_tool_use_id;
729
+ attributes["gen_ai.turn.is_subagent"] = true;
730
+ }
731
+ if (msg.subagent_type) attributes["gen_ai.turn.subagent_type"] = msg.subagent_type;
732
+ if (msg.message?.model) attributes["gen_ai.response.model"] = msg.message.model;
733
+ const usage = msg.message?.usage;
734
+ if (usage) {
735
+ if (typeof usage.input_tokens === "number") attributes["gen_ai.usage.input_tokens"] = usage.input_tokens;
736
+ if (typeof usage.output_tokens === "number") attributes["gen_ai.usage.output_tokens"] = usage.output_tokens;
737
+ }
738
+ if (msg.error) attributes["gen_ai.turn.error"] = msg.error;
739
+ const now = Date.now();
740
+ emitOrDeferSyntheticSpan(() => {
741
+ emitTurnMarkerSpan({
742
+ tracer: getGenAITracer(),
743
+ index,
744
+ startTime: now,
745
+ endTime: now,
746
+ attributes,
747
+ errorMessage: msg.error,
748
+ logLabel: "ClaudeAgentSDK"
749
+ });
750
+ });
751
+ return index;
752
+ };
753
+ const drainOrphans = () => {
754
+ if (toolStartTimes.size === 0) return;
755
+ const endedAt = Date.now();
756
+ for (const [toolUseId, startMs] of toolStartTimes) {
757
+ const entry = toolCallsMap.get(toolUseId);
758
+ if (entry) {
759
+ const turnIndex = toolTurnIndex.get(toolUseId);
760
+ emitOrDeferSyntheticSpan(() => {
761
+ emitToolSpan(entry, startMs, endedAt, false, true, turnIndex);
762
+ });
763
+ }
764
+ }
765
+ toolStartTimes.clear();
766
+ toolTurnIndex.clear();
767
+ };
768
+ let lastResultMsg;
769
+ let lastMainResultMsg;
770
+ let resultMsgCount = 0;
771
+ for await (const msg of res) if (msg.type === "assistant") {
772
+ const turnIndex = emitTurnSpan(msg);
773
+ for (const block of msg.message.content) if (block.type === "tool_use") {
774
+ toolCallsMap.set(block.id, {
775
+ id: block.id,
776
+ name: block.name,
777
+ input: block.input,
778
+ output: void 0,
779
+ is_error: false,
780
+ parentToolUseId: msg.parent_tool_use_id
781
+ });
782
+ toolStartTimes.set(block.id, Date.now());
783
+ toolTurnIndex.set(block.id, turnIndex);
784
+ }
785
+ if (msg.error) assistantErrors.push({
786
+ error: msg.error,
787
+ uuid: msg.uuid,
788
+ parentToolUseId: msg.parent_tool_use_id,
789
+ ...msg.request_id ? { request_id: msg.request_id } : {},
790
+ ...msg.subagent_type ? { subagent_type: msg.subagent_type } : {},
791
+ ...msg.task_description ? { task_description: msg.task_description } : {}
792
+ });
793
+ } else if (msg.type === "user") {
794
+ const content = msg.message?.content;
795
+ if (Array.isArray(content)) {
796
+ for (const block of content) if (block.type === "tool_result") {
797
+ const entry = toolCallsMap.get(block.tool_use_id);
798
+ if (entry) {
799
+ entry.output = entry.name === "TaskOutput" && isRawSubagentTranscript(msg.tool_use_result) && !config.forward_subagent_text ? REDACTED_SUBAGENT_TRANSCRIPT : block.content;
800
+ entry.is_error = block.is_error ?? false;
801
+ const startMs = toolStartTimes.get(block.tool_use_id);
802
+ if (startMs !== void 0) {
803
+ const endedAt = Date.now();
804
+ const turnIndex = toolTurnIndex.get(block.tool_use_id);
805
+ emitOrDeferSyntheticSpan(() => {
806
+ emitToolSpan(entry, startMs, endedAt, entry.is_error, false, turnIndex);
807
+ });
808
+ toolStartTimes.delete(block.tool_use_id);
809
+ toolTurnIndex.delete(block.tool_use_id);
810
+ }
811
+ }
812
+ }
813
+ }
814
+ } else if (msg.type === "result") {
815
+ lastResultMsg = msg;
816
+ resultMsgCount++;
817
+ if (!(msg.origin?.kind === "task-notification" && !("subkind" in msg.origin && msg.origin.subkind === "scheduled-trigger"))) lastMainResultMsg = msg;
818
+ }
819
+ drainOrphans();
820
+ const finalMsg = lastMainResultMsg ?? lastResultMsg;
821
+ if (!finalMsg) return { error: "Claude Agent SDK call didn't return a result" };
822
+ if (sdkExportsNativeSpans && tpTraceId && tpSpanId) {
823
+ let nativeSpansArrived = false;
824
+ try {
825
+ nativeSpansArrived = await waitForNativeTraceExport(tpTraceId, tpSpanId, env, callOptions?.abortSignal);
826
+ } catch (error) {
827
+ logger.debug("[ClaudeAgentSDK] Unable to inspect native trace export", { error: error instanceof Error ? error.message : String(error) });
828
+ }
829
+ if (!nativeSpansArrived && !callOptions?.abortSignal?.aborted) {
830
+ logger.warn("[ClaudeAgentSDK] Native trace spans did not reach the receiver before grading; emitting synthetic turn and tool spans.");
831
+ for (const emit of deferredSyntheticSpans) emit();
832
+ }
833
+ }
834
+ if ((!lastMainResultMsg || lastMainResultMsg.origin === void 0) && resultMsgCount > 1 && finalMsg.subtype === "success" && finalMsg.terminal_reason === void 0) {
835
+ logger.warn(`[ClaudeAgentSDK] Stream produced ${resultMsgCount} result messages and the last had no terminal_reason; returning it as the main-agent result, but the stream may have been truncated.`);
836
+ trace.getActiveSpan()?.setStatus({
837
+ code: SpanStatusCode.ERROR,
838
+ message: "stream closed without terminal_reason after multiple result messages"
839
+ });
840
+ }
841
+ const raw = JSON.stringify(finalMsg);
842
+ const usageUnavailable = needsUsageBaseline && !usageBaseline;
843
+ if (usageUnavailable) logger.warn("[ClaudeAgentSDK] Could not measure resumed-session usage before inference; per-call cost and token usage are unavailable. Raw session totals are preserved.");
844
+ const counterReset = usageBaseline && (finalMsg.total_cost_usd < usageBaseline.total_cost_usd || Object.entries(finalMsg.modelUsage ?? {}).some(([model, usage]) => MODEL_USAGE_COUNTERS.some((key) => typeof usage[key] === "number" && usage[key] < (usageBaseline?.model_usage[model]?.[key] ?? 0))));
845
+ const modelUsage = usageUnavailable ? void 0 : usageBaseline && !counterReset ? subtractSessionUsage(finalMsg.modelUsage ?? {}, usageBaseline.model_usage) : finalMsg.modelUsage;
846
+ const usageSources = Object.values(modelUsage ?? {});
847
+ if (!usageUnavailable && usageSources.length === 0 && finalMsg.usage) usageSources.push({
848
+ inputTokens: finalMsg.usage.input_tokens,
849
+ outputTokens: finalMsg.usage.output_tokens,
850
+ thinkingTokens: finalMsg.usage.output_tokens_details?.thinking_tokens,
851
+ cacheReadInputTokens: finalMsg.usage.cache_read_input_tokens,
852
+ cacheCreationInputTokens: finalMsg.usage.cache_creation_input_tokens
853
+ });
854
+ const usage = usageSources.reduce((total, source) => ({
855
+ inputTokens: total.inputTokens + (source.inputTokens ?? 0),
856
+ outputTokens: total.outputTokens + (source.outputTokens ?? 0),
857
+ thinkingTokens: source.thinkingTokens == null ? total.thinkingTokens : (total.thinkingTokens ?? 0) + source.thinkingTokens,
858
+ cacheReadInputTokens: total.cacheReadInputTokens + (source.cacheReadInputTokens ?? 0),
859
+ cacheCreationInputTokens: total.cacheCreationInputTokens + (source.cacheCreationInputTokens ?? 0)
860
+ }), {
861
+ inputTokens: 0,
862
+ outputTokens: 0,
863
+ cacheReadInputTokens: 0,
864
+ cacheCreationInputTokens: 0
865
+ });
866
+ const promptTokens = usage.inputTokens + usage.cacheReadInputTokens + usage.cacheCreationInputTokens;
867
+ const tokenUsage = usageSources.length ? {
868
+ prompt: promptTokens,
869
+ completion: usage.outputTokens,
870
+ total: promptTokens + usage.outputTokens,
871
+ ...usage.thinkingTokens != null || usage.cacheReadInputTokens > 0 || usage.cacheCreationInputTokens > 0 ? { completionDetails: {
872
+ ...usage.thinkingTokens != null && { reasoning: usage.thinkingTokens },
873
+ cacheReadInputTokens: usage.cacheReadInputTokens,
874
+ cacheCreationInputTokens: usage.cacheCreationInputTokens
875
+ } } : {}
876
+ } : {};
877
+ const cost = usageUnavailable ? void 0 : Math.max(0, (finalMsg.total_cost_usd ?? 0) - (counterReset ? 0 : usageBaseline?.total_cost_usd ?? 0));
878
+ const usageMetadata = needsUsageBaseline ? {
879
+ usageAccounting: usageUnavailable ? "unavailable" : "query",
880
+ sessionCost: finalMsg.total_cost_usd,
881
+ sessionModelUsage: finalMsg.modelUsage
882
+ } : {};
883
+ const sessionId = finalMsg.session_id;
884
+ const toolCallsArray = Array.from(toolCallsMap.values());
885
+ const skillCalls = deriveSkillCalls(toolCallsArray);
886
+ const abortedTerminalReason = typeof finalMsg.terminal_reason === "string" && (finalMsg.terminal_reason.startsWith("aborted_") || finalMsg.terminal_reason === "hook_stopped") ? finalMsg.terminal_reason : void 0;
887
+ if (abortedTerminalReason) trace.getActiveSpan()?.setStatus({
888
+ code: SpanStatusCode.ERROR,
889
+ message: `aborted: ${abortedTerminalReason}`
890
+ });
891
+ const apiErrorStatus = "api_error_status" in finalMsg ? finalMsg.api_error_status : void 0;
892
+ if (finalMsg.subtype === "success") {
893
+ logger.debug(`Claude Agent SDK response: ${raw}`);
894
+ const response = {
895
+ output: finalMsg.structured_output === void 0 ? finalMsg.result : finalMsg.structured_output,
896
+ tokenUsage,
897
+ cost,
898
+ raw,
899
+ sessionId,
900
+ metadata: {
901
+ skillCalls,
902
+ toolCalls: toolCallsArray,
903
+ numTurns: finalMsg.num_turns,
904
+ durationMs: finalMsg.duration_ms,
905
+ durationApiMs: finalMsg.duration_api_ms,
906
+ modelUsage,
907
+ ...usageMetadata,
908
+ permissionDenials: finalMsg.permission_denials,
909
+ ...finalMsg.terminal_reason === void 0 ? {} : { terminalReason: finalMsg.terminal_reason },
910
+ ...finalMsg.structured_output === void 0 ? {} : { structuredOutput: finalMsg.structured_output },
911
+ ...apiErrorStatus === void 0 || apiErrorStatus === null ? {} : { apiErrorStatus },
912
+ ...assistantErrors.length > 0 ? { assistantErrors } : {}
913
+ }
914
+ };
915
+ await cacheResponse(cacheResult, response, "Claude Agent SDK");
916
+ return response;
917
+ }
918
+ const lastAssistantError = assistantErrors.length > 0 ? assistantErrors[assistantErrors.length - 1].error : void 0;
919
+ return {
920
+ error: lastAssistantError ? `Claude Agent SDK call failed: ${finalMsg.subtype} (${lastAssistantError})` : `Claude Agent SDK call failed: ${finalMsg.subtype}`,
921
+ tokenUsage,
922
+ cost,
923
+ raw,
924
+ sessionId,
925
+ metadata: {
926
+ skillCalls,
927
+ toolCalls: toolCallsArray,
928
+ numTurns: finalMsg.num_turns,
929
+ durationMs: finalMsg.duration_ms,
930
+ durationApiMs: finalMsg.duration_api_ms,
931
+ modelUsage,
932
+ ...usageMetadata,
933
+ permissionDenials: finalMsg.permission_denials,
934
+ ...finalMsg.terminal_reason === void 0 ? {} : { terminalReason: finalMsg.terminal_reason },
935
+ ...apiErrorStatus === void 0 || apiErrorStatus === null ? {} : { apiErrorStatus },
936
+ ...assistantErrors.length > 0 ? { assistantErrors } : {}
937
+ }
938
+ };
939
+ }, (response) => {
940
+ const metadata = response.metadata ?? {};
941
+ const additional = {};
942
+ if (typeof metadata.numTurns === "number") additional["promptfoo.agent.num_turns"] = metadata.numTurns;
943
+ if (typeof metadata.durationApiMs === "number") additional["promptfoo.agent.duration_api_ms"] = metadata.durationApiMs;
944
+ if (typeof response.cost === "number" && response.cost > 0) additional["promptfoo.agent.cost_usd"] = response.cost;
945
+ const toolCalls = metadata.toolCalls;
946
+ if (Array.isArray(toolCalls) && toolCalls.length > 0) additional["promptfoo.agent.tool_call_count"] = toolCalls.length;
947
+ let responseModel;
948
+ const modelUsage = metadata.modelUsage;
949
+ if (modelUsage && typeof modelUsage === "object" && !Array.isArray(modelUsage)) {
950
+ let topUsage = -1;
951
+ for (const [key, usage] of Object.entries(modelUsage)) {
952
+ if (typeof key !== "string" || key.length === 0 || key === "undefined") continue;
953
+ const total = (usage?.inputTokens ?? 0) + (usage?.outputTokens ?? 0);
954
+ if (total > topUsage) {
955
+ topUsage = total;
956
+ responseModel = key;
957
+ }
958
+ }
959
+ }
960
+ const finishReasons = typeof metadata.terminalReason === "string" ? [metadata.terminalReason] : void 0;
961
+ return {
962
+ tokenUsage: response.tokenUsage,
963
+ responseModel,
964
+ responseId: response.sessionId,
965
+ finishReasons,
966
+ cacheHit: response.cached,
967
+ responseBody: typeof response.output === "string" ? response.output : response.output === void 0 ? void 0 : JSON.stringify(response.output),
968
+ additionalAttributes: Object.keys(additional).length > 0 ? additional : void 0
969
+ };
970
+ });
971
+ } catch (error) {
972
+ if (error?.name === "AbortError" || callOptions?.abortSignal?.aborted) {
973
+ logger.warn("Claude Agent SDK call aborted");
974
+ return { error: "Claude Agent SDK call aborted" };
975
+ }
976
+ logger.error(`Error calling Claude Agent SDK: ${error}`);
977
+ return { error: `Error calling Claude Agent SDK: ${error}` };
978
+ } finally {
979
+ if (isTempDir && workingDir) await fsPromises.rm(workingDir, {
980
+ recursive: true,
981
+ force: true
982
+ });
983
+ if (callOptions?.abortSignal && abortHandler) callOptions.abortSignal.removeEventListener("abort", abortHandler);
984
+ }
985
+ }
986
+ toString() {
987
+ return "[Anthropic Claude Agent SDK Provider]";
988
+ }
989
+ requiresApiKey() {
990
+ return false;
991
+ }
992
+ getApiKey() {
993
+ return this.config?.apiKey || this.env?.ANTHROPIC_API_KEY || getEnvString("ANTHROPIC_API_KEY");
994
+ }
995
+ async cleanup() {}
996
+ };
997
+ //#endregion
998
+ export { ClaudeCodeSDKProvider };
999
+
1000
+ //# sourceMappingURL=claude-agent-sdk-Cr-jqJZl.js.map