promptfoo 0.121.7 → 0.121.9

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 (399) hide show
  1. package/dist/src/{accounts-Ca7WIoPY.js → accounts-4Xa5fcHy.js} +17 -18
  2. package/dist/src/{accounts-DanM1wq_.js → accounts-BAajbKSh.js} +17 -18
  3. package/dist/src/{accounts-CjFnOPmb.js → accounts-Bw2qPqE-.js} +18 -19
  4. package/dist/src/{accounts-CmWzeD2d.cjs → accounts-DAcQXPwE.cjs} +20 -21
  5. package/dist/src/{agentic-utils-DvPWSUpb.cjs → agentic-utils-C8eEgGG-.cjs} +3 -3
  6. package/dist/src/{agentic-utils-TxUEMPYS.js → agentic-utils-CP1IXFz3.js} +3 -3
  7. package/dist/src/{agentic-utils-DDEGRV9v.js → agentic-utils-CUwa3AE9.js} +3 -3
  8. package/dist/src/{agentic-utils-CJ0j3fBi.js → agentic-utils-DYr-aM6d.js} +3 -3
  9. package/dist/src/{agents-CBgJvRkB.js → agents-Bb00M6i5.js} +5 -5
  10. package/dist/src/{agents-D-vDNFx4.js → agents-CASf5zRj.js} +5 -5
  11. package/dist/src/{agents-B4sRuXg3.cjs → agents-CD1wH9bm.cjs} +5 -5
  12. package/dist/src/{agents-CYn2n3QP.js → agents-CZOHU7Q8.js} +5 -5
  13. package/dist/src/{agents-LrHuQqr1.js → agents-D539zhHr.js} +5 -5
  14. package/dist/src/{agents-B8q7h_ek.js → agents-DpRJdGBZ.js} +5 -5
  15. package/dist/src/{agents-QGg76OF-.js → agents-gZTW-8nu.js} +5 -5
  16. package/dist/src/{agents-eHZ9nlgA.cjs → agents-hix6c0Sh.cjs} +5 -5
  17. package/dist/src/{aimlapi-eYv3a_DK.js → aimlapi-DRQSL-Z4.js} +7 -7
  18. package/dist/src/{aimlapi-CJEbQ0o6.js → aimlapi-Dc3LW5zI.js} +7 -7
  19. package/dist/src/{aimlapi-D5HXzZ0s.js → aimlapi-KNYnjjU6.js} +7 -7
  20. package/dist/src/{aimlapi-T6HGNxNe.cjs → aimlapi-gnrgd_Ej.cjs} +7 -7
  21. package/dist/src/app/assets/Report-Clw_YCp-.js +1 -0
  22. package/dist/src/app/assets/index-BQHaquKk.css +1 -0
  23. package/dist/src/app/assets/{index-BnT6P6sF.js → index-CW3XcQK7.js} +6 -6
  24. package/dist/src/app/index.html +2 -2
  25. package/dist/src/{audio-FnxbEnSE.cjs → audio-BgFTqfMO.cjs} +5 -5
  26. package/dist/src/{audio-CPMtV1yR.js → audio-Cslbgd4l.js} +5 -5
  27. package/dist/src/{audio-DyiebVB3.js → audio-DOI8kth4.js} +5 -5
  28. package/dist/src/{audio-BqnRvcWG.js → audio-hewMOCUU.js} +5 -5
  29. package/dist/src/{authoritativeMarkupInjection-DyAXAsSr.js → authoritativeMarkupInjection-DgE4u_Rl.js} +8 -8
  30. package/dist/src/{authoritativeMarkupInjection-QEQmFS83.js → authoritativeMarkupInjection-gpm2K-Rp.js} +8 -8
  31. package/dist/src/{authoritativeMarkupInjection-BZIywVjG.js → authoritativeMarkupInjection-nrC4mSPQ.js} +7 -7
  32. package/dist/src/{authoritativeMarkupInjection-F2gBw0lN.cjs → authoritativeMarkupInjection-wG4x0yP2.cjs} +8 -8
  33. package/dist/src/{base-CKLo890h.js → base-0yya4DsM.js} +3 -3
  34. package/dist/src/{base-Co80MMCi.js → base-BARAIJmp.js} +3 -3
  35. package/dist/src/{base-DGJW48uz.cjs → base-BE_pY-r5.cjs} +3 -3
  36. package/dist/src/{base-E9I8zXjz.js → base-CTWzNAH9.js} +3 -3
  37. package/dist/src/{bestOfN-BBsO41z4.js → bestOfN-CV7ZKPw2.js} +8 -8
  38. package/dist/src/{bestOfN-_kTi8Bxe.js → bestOfN-DeucA4QS.js} +9 -9
  39. package/dist/src/{bestOfN-CAwmg5UL.cjs → bestOfN-DxcpVUvj.cjs} +9 -9
  40. package/dist/src/{bestOfN-B3wNzjSB.js → bestOfN-Ilxc2hMv.js} +9 -9
  41. package/dist/src/{blobs-B0977K1O.cjs → blobs-5wbW7TbH.cjs} +3 -3
  42. package/dist/src/{blobs-Dwef1Ao1.js → blobs-BfIMflt0.js} +3 -3
  43. package/dist/src/{blobs-DODuTK-a.js → blobs-CA4gXarv.js} +3 -3
  44. package/dist/src/{blobs-CeFdPn_T.js → blobs-ikh75MtF.js} +3 -3
  45. package/dist/src/{cache-DpPWrkTE.js → cache-BuudGL4I.js} +5 -5
  46. package/dist/src/{cache-DIXbtkNO.js → cache-CT5D7d_A.js} +4 -4
  47. package/dist/src/cache-CrL5EYgi.js +3 -0
  48. package/dist/src/{cache-CPGUA4Yl.cjs → cache-WuIsgzMA.cjs} +4 -4
  49. package/dist/src/{cache-roFAE0cI.js → cache-x9llZxbx.js} +5 -5
  50. package/dist/src/{chat-GmlolEwo.js → chat-B5NqvkS_.js} +3 -3
  51. package/dist/src/{chat-DqUFcWI0.js → chat-B8lsx0A0.js} +11 -11
  52. package/dist/src/{chat-DG1wG4w0.cjs → chat-BBlR1h8c.cjs} +3 -3
  53. package/dist/src/{chat-Dabu84Br.js → chat-CCtIXezK.js} +11 -11
  54. package/dist/src/{chat-TP8Qifkh.js → chat-CZOhFlzV.js} +3 -3
  55. package/dist/src/{chat-CUCorGiL.js → chat-CvQMD-mp.js} +11 -11
  56. package/dist/src/{chat-iwaM5UTQ.js → chat-Dh6mb5OL.js} +3 -3
  57. package/dist/src/{chat-DxTDQ83C.cjs → chat-DkitQHdt.cjs} +11 -11
  58. package/dist/src/{chatkit-fARZwEfV.js → chatkit-55cAEQb2.js} +4 -4
  59. package/dist/src/{chatkit-lb6FK02w.js → chatkit-B-uz3x63.js} +4 -4
  60. package/dist/src/{chatkit-B6DWi70Q.js → chatkit-Dxp6KO70.js} +4 -4
  61. package/dist/src/{chatkit-BYveR48_.cjs → chatkit-jEtokOVZ.cjs} +4 -4
  62. package/dist/src/{claude-agent-sdk-D5Jl0SDh.js → claude-agent-sdk-BVfdeahc.js} +9 -7
  63. package/dist/src/{claude-agent-sdk-DH416NBD.cjs → claude-agent-sdk-C0p-RhcW.cjs} +9 -7
  64. package/dist/src/{claude-agent-sdk-x1XJ1-pU.js → claude-agent-sdk-DB99Npst.js} +9 -7
  65. package/dist/src/{claude-agent-sdk-BQNp_y-F.js → claude-agent-sdk-DHyrhDUu.js} +9 -7
  66. package/dist/src/cloud-BA4aLhk0.js +3 -0
  67. package/dist/src/{cloud-D3DiFqH6.js → cloud-BbAl8dyj.js} +3 -3
  68. package/dist/src/{cloudflare-ai-RFSojyXG.js → cloudflare-ai-ChBxkojW.js} +5 -5
  69. package/dist/src/{cloudflare-ai-r4tbYmWU.js → cloudflare-ai-DDmTDys_.js} +5 -5
  70. package/dist/src/{cloudflare-ai-CEAW-xQa.cjs → cloudflare-ai-DPlNiC6I.cjs} +5 -5
  71. package/dist/src/{cloudflare-ai-B6NVI3ax.js → cloudflare-ai-UsZe6ndv.js} +5 -5
  72. package/dist/src/{cloudflare-gateway-TJMLBj6I.cjs → cloudflare-gateway-7b-lEtrb.cjs} +4 -4
  73. package/dist/src/{cloudflare-gateway-BaZ4insB.js → cloudflare-gateway-Bq5cqiV8.js} +4 -4
  74. package/dist/src/{cloudflare-gateway-CF-Vb-2Z.js → cloudflare-gateway-C0N-5s62.js} +4 -4
  75. package/dist/src/{cloudflare-gateway-BCkLouto.js → cloudflare-gateway-D5fm-QvC.js} +4 -4
  76. package/dist/src/{codex-app-server-DIXZ230V.js → codex-app-server-BG5Aphvl.js} +20 -5
  77. package/dist/src/{codex-app-server-B8KHEiF4.js → codex-app-server-BnPMlcjl.js} +20 -5
  78. package/dist/src/{codex-app-server-Dd22dC_N.js → codex-app-server-D6gbvJFw.js} +20 -5
  79. package/dist/src/{codex-app-server-CnrLBCeA.cjs → codex-app-server-Dl6BLKJn.cjs} +20 -5
  80. package/dist/src/{codex-sdk-B6Wah8Pa.js → codex-sdk-BnRTWAhS.js} +20 -8
  81. package/dist/src/codex-sdk-CChw5CYU.js +3 -0
  82. package/dist/src/{codex-sdk-CFF6gUyi.cjs → codex-sdk-Cy1pEjsQ.cjs} +20 -8
  83. package/dist/src/{codex-sdk-CmQABzV3.js → codex-sdk-D86dT4XV.js} +20 -8
  84. package/dist/src/{codex-sdk-D2d54RL8.js → codex-sdk-mgUqOG2C.js} +20 -8
  85. package/dist/src/{cometapi-CtzNCHKu.js → cometapi-CkOfr271.js} +8 -8
  86. package/dist/src/{cometapi-DHCDlQUI.cjs → cometapi-EB-Is7jj.cjs} +8 -8
  87. package/dist/src/{cometapi-OBILPLlu.js → cometapi-gvPhrXNM.js} +8 -8
  88. package/dist/src/{cometapi-Bu9B8NUY.js → cometapi-sBbQmdfk.js} +8 -8
  89. package/dist/src/{completion-DZNxcyfG.js → completion-BoWiFP-D.js} +7 -7
  90. package/dist/src/{completion-CO2e1_62.js → completion-C99GFqQE.js} +7 -7
  91. package/dist/src/{completion-sNvCLTAP.js → completion-CUtdijfr.js} +7 -7
  92. package/dist/src/{completion-CSYfl2cd.cjs → completion-CkRVjadz.cjs} +7 -7
  93. package/dist/src/{crescendo-QiaSLW0d.js → crescendo-B4EiUJ-M.js} +43 -22
  94. package/dist/src/{crescendo-BXEJK_bi.cjs → crescendo-BAN6NuWV.cjs} +45 -24
  95. package/dist/src/{crescendo-CU_Y2i-m.js → crescendo-CYzxmaSJ.js} +45 -24
  96. package/dist/src/{crescendo-J1Xx4_zb.js → crescendo-CrsXyaL0.js} +45 -24
  97. package/dist/src/{custom-BJfP00Bh.js → custom-C5K9QFs1.js} +13 -13
  98. package/dist/src/{custom-Cqia7M0D.cjs → custom-D1UjT5I5.cjs} +13 -13
  99. package/dist/src/{custom-CZVn-1-r.js → custom-DnMZvgB6.js} +13 -13
  100. package/dist/src/{custom-notggYVl.js → custom-EWterxkb.js} +11 -11
  101. package/dist/src/{docker-DdJQBxK9.js → docker-BFQc9ccU.js} +6 -6
  102. package/dist/src/{docker-D06JUoe2.cjs → docker-BMfsGXyn.cjs} +6 -6
  103. package/dist/src/{docker-4D1eL6Gq.js → docker-ChD4-eri.js} +6 -6
  104. package/dist/src/{docker-BBv1WUDu.js → docker-mZF5j6cW.js} +6 -6
  105. package/dist/src/{embedding-BbrwopfX.cjs → embedding-BMqFDnLI.cjs} +7 -7
  106. package/dist/src/{embedding--UZVe4_7.js → embedding-BQBXSWgy.js} +7 -7
  107. package/dist/src/{embedding-Bi3rxrZF.js → embedding-BwTB3YDt.js} +7 -7
  108. package/dist/src/{embedding-C251p1-8.js → embedding-cd5oPBkX.js} +7 -7
  109. package/dist/src/{esm-B6whoAcf.js → esm-CGER3lko.js} +2 -2
  110. package/dist/src/{esm-Bexx2PFc.js → esm-CYMWMaSj.js} +2 -2
  111. package/dist/src/{esm-BTK1W7lG.js → esm-C_yrt93A.js} +2 -2
  112. package/dist/src/{esm-BIKakvNa.cjs → esm-vv4rR-Dp.cjs} +2 -2
  113. package/dist/src/{eval-0VRANImH.js → eval-DmGWplIN.js} +10 -10
  114. package/dist/src/{eval-DscR5iOM.js → eval-N_VV5NZg.js} +1 -1
  115. package/dist/src/{evalResult-CvtS8h8u.cjs → evalResult-BZld6I3I.cjs} +6 -6
  116. package/dist/src/{evalResult-eUkJv9Ko.js → evalResult-ByGP9zuP.js} +7 -7
  117. package/dist/src/evalResult-CPPINYHK.js +3 -0
  118. package/dist/src/{evalResult-2RRJvFyB.js → evalResult-gEmQRANj.js} +6 -6
  119. package/dist/src/evaluator-B01pCdUY.js +3 -0
  120. package/dist/src/{evaluator-DRoiYB2q.js → evaluator-BpaUYhLY.js} +37 -37
  121. package/dist/src/{evaluatorHelpers-CRqTvSux.cjs → evaluatorHelpers-2gpZ9Q_f.cjs} +10 -10
  122. package/dist/src/{evaluatorHelpers-DuqFFfq7.js → evaluatorHelpers-C8C8WQTv.js} +10 -10
  123. package/dist/src/{evaluatorHelpers-BsYP_muT.js → evaluatorHelpers-DDG44JeI.js} +10 -10
  124. package/dist/src/{extractor-CxRtnaHl.js → extractor-Bjz9sdTQ.js} +6 -6
  125. package/dist/src/{extractor-CIW3iN-b.js → extractor-CtadTcJm.js} +6 -6
  126. package/dist/src/{extractor-BR7XAzAL.js → extractor-DAnauX2V.js} +6 -6
  127. package/dist/src/{extractor-BdxEtt3J.cjs → extractor-nyUwvU2U.cjs} +6 -6
  128. package/dist/src/{fetch-Dw4XZHjj.cjs → fetch-B2HvaVUc.cjs} +14 -12
  129. package/dist/src/{fetch-DXUnXkVU.js → fetch-C59QM4cf.js} +10 -8
  130. package/dist/src/{fetch-BufrQtvR.js → fetch-CBe8pU8Q.js} +10 -8
  131. package/dist/src/{fetch-It34O8Ur.js → fetch-CHJu2KON.js} +9 -7
  132. package/dist/src/fetch-D_XnRfBV.js +3 -0
  133. package/dist/src/{goat-Ckd3q3AY.js → goat-0HwO0EB2.js} +22 -21
  134. package/dist/src/{goat-una6pZGP.cjs → goat-7wQgRcT4.cjs} +22 -21
  135. package/dist/src/{goat-ghadEDdy.js → goat-BNX0lOFx.js} +20 -19
  136. package/dist/src/{goat-Qgurm-NP.js → goat-BOVnOl5S.js} +22 -21
  137. package/dist/src/{graders-BGP99PdK.js → graders-BnO-xoa-.js} +30 -30
  138. package/dist/src/{graders-ClrU2fnd.cjs → graders-CQv1GT5Q.cjs} +29 -29
  139. package/dist/src/graders-D4vc1PFi.js +3 -0
  140. package/dist/src/{graders-BX0f2tvS.js → graders-GNRQ1357.js} +29 -29
  141. package/dist/src/{graders-C0nXU_ZP.js → graders-k8qmhrPu.js} +31 -31
  142. package/dist/src/{hydra-BSNZZm2M.js → hydra-BrgGALmB.js} +38 -20
  143. package/dist/src/{hydra-BxdG4nkg.js → hydra-C38LOovb.js} +36 -18
  144. package/dist/src/{hydra-DE4xWwyc.js → hydra-CXc0p63W.js} +38 -20
  145. package/dist/src/{hydra-DrJttnvw.cjs → hydra-Hdj65j0k.cjs} +38 -20
  146. package/dist/src/{image-B_fPIwdg.js → image-6u3WZ_7H.js} +5 -5
  147. package/dist/src/{image-BN-hjLL9.js → image-B6hCz0z3.js} +5 -5
  148. package/dist/src/{image-BvUAW344.js → image-CgmaPlV_.js} +7 -7
  149. package/dist/src/{image-QzmydkiG.js → image-DXbwwL-r.js} +5 -5
  150. package/dist/src/{image-X0oY4350.cjs → image-Daa_X_YB.cjs} +7 -7
  151. package/dist/src/{image-Cvjwx1uY.js → image-DmC5qwQx.js} +7 -7
  152. package/dist/src/{image-DfVCGPbI.cjs → image-TY6FsHmn.cjs} +5 -5
  153. package/dist/src/{image-B4oBtu6J.js → image-V0-pYiBI.js} +7 -7
  154. package/dist/src/index.cjs +137 -140
  155. package/dist/src/index.d.cts +13 -0
  156. package/dist/src/index.d.ts +13 -0
  157. package/dist/src/index.js +137 -140
  158. package/dist/src/{indirectWebPwn-BJ22AbQa.cjs → indirectWebPwn-04ziKbly.cjs} +5 -5
  159. package/dist/src/{indirectWebPwn-tNx9OZ35.js → indirectWebPwn-1gHqaL91.js} +5 -5
  160. package/dist/src/{indirectWebPwn-DBQhOjoD.js → indirectWebPwn-B0CAtvZJ.js} +6 -6
  161. package/dist/src/{indirectWebPwn-uyWdHx04.js → indirectWebPwn-BXUoJl4I.js} +5 -5
  162. package/dist/src/{indirectWebPwn-02ZIghCS.js → indirectWebPwn-Biy9I52D.js} +6 -6
  163. package/dist/src/{indirectWebPwn-OsXnKejv.js → indirectWebPwn-BoPqjm9W.js} +6 -6
  164. package/dist/src/{indirectWebPwn-CbjUG0rh.js → indirectWebPwn-DRYpRTx6.js} +5 -5
  165. package/dist/src/{indirectWebPwn-CfQJt3gk.cjs → indirectWebPwn-MiCFTfzI.cjs} +6 -6
  166. package/dist/src/{inputVariables-DUGMb9Ka.js → inputVariables-B7cylqzM.js} +2 -2
  167. package/dist/src/{inputVariables-Dq9W-Z3a.cjs → inputVariables-D5K2vTp4.cjs} +2 -2
  168. package/dist/src/{inputVariables-B0qUChbV.js → inputVariables-DpOsOnzU.js} +3 -3
  169. package/dist/src/{inputVariables-DXFdi7AI.js → inputVariables-qJmuSN5i.js} +3 -3
  170. package/dist/src/{interactiveCheck-C4QlIuoR.js → interactiveCheck-BLnDrfjg.js} +2 -2
  171. package/dist/src/{iterative-FTS4Bz67.js → iterative-BDRx_noa.js} +29 -19
  172. package/dist/src/{iterative-CpU6i2As.js → iterative-BZxrxnoh.js} +27 -17
  173. package/dist/src/{iterative-DQBuWM-j.cjs → iterative-KSovqu_j.cjs} +29 -19
  174. package/dist/src/{iterative-DJQEQpG3.js → iterative-vxBU1IPs.js} +29 -19
  175. package/dist/src/{iterativeImage-Doz8mgxF.js → iterativeImage-BZuMd4x3.js} +7 -7
  176. package/dist/src/{iterativeImage-BUABMVOA.js → iterativeImage-DUWLmyVM.js} +6 -6
  177. package/dist/src/{iterativeImage-ByFWkxax.cjs → iterativeImage-DqNKoaIl.cjs} +7 -7
  178. package/dist/src/{iterativeImage-BzUapOUi.js → iterativeImage-DwIp1WGB.js} +7 -7
  179. package/dist/src/{iterativeMeta-CSS8M6Ds.cjs → iterativeMeta-9gsvnsl1.cjs} +39 -19
  180. package/dist/src/{iterativeMeta-B3YiAOc8.js → iterativeMeta-AgI6UEh6.js} +39 -19
  181. package/dist/src/{iterativeMeta-C7APE_P1.js → iterativeMeta-BbcVN5nQ.js} +39 -19
  182. package/dist/src/{iterativeMeta-DgoQ7bLh.js → iterativeMeta-BcF8LsFk.js} +37 -17
  183. package/dist/src/{iterativeTree-B5zxBBSW.js → iterativeTree-5TLHU9Kx.js} +81 -31
  184. package/dist/src/{iterativeTree-CPMF10ve.cjs → iterativeTree-7XyY_zdo.cjs} +81 -31
  185. package/dist/src/{iterativeTree-DvZ7GBwt.js → iterativeTree-CnHx_kPu.js} +81 -31
  186. package/dist/src/{iterativeTree-CNyIk0Yn.js → iterativeTree-D9I3UJ0P.js} +79 -29
  187. package/dist/src/{knowledgeBase-CkMljjdg.js → knowledgeBase-BGbDBwr5.js} +5 -5
  188. package/dist/src/{knowledgeBase-Bi_8sV-H.js → knowledgeBase-BzfBwPyQ.js} +5 -5
  189. package/dist/src/{knowledgeBase-BadkINlJ.js → knowledgeBase-C_MSTwDt.js} +5 -5
  190. package/dist/src/{knowledgeBase-DUh34xba.cjs → knowledgeBase-DSVK_YTi.cjs} +5 -5
  191. package/dist/src/{litellm-BXyn5kZK.js → litellm-CRTmskqC.js} +5 -5
  192. package/dist/src/{litellm-BKBo0jpC.js → litellm-Ch4E-r4b.js} +5 -5
  193. package/dist/src/{litellm-CNcfbCfa.js → litellm-DNnk7802.js} +5 -5
  194. package/dist/src/{litellm-CtAr7bKG.cjs → litellm-jA4_p8mv.cjs} +5 -5
  195. package/dist/src/{logger-KD8JjCRJ.js → logger-BjYLHvGm.js} +56 -25
  196. package/dist/src/{logger-cfNpzI4o.cjs → logger-Cm0Nb8YX.cjs} +34 -3
  197. package/dist/src/{logger-Ct2S6Yx-.js → logger-Cs0I2v_y.js} +34 -3
  198. package/dist/src/{logger-BbY6ypFL.js → logger-h-eiS4iv.js} +34 -3
  199. package/dist/src/{luma-ray-D3FUc2K3.cjs → luma-ray-BCkN79tz.cjs} +5 -5
  200. package/dist/src/{luma-ray-CR5TSpp4.js → luma-ray-BqVizUQY.js} +5 -5
  201. package/dist/src/{luma-ray-BMX1iEB6.js → luma-ray-CD7rd6KW.js} +5 -5
  202. package/dist/src/{luma-ray-OEMmS1RB.js → luma-ray-DLWLjDCa.js} +5 -5
  203. package/dist/src/main.js +143 -146
  204. package/dist/src/{memoryPoisoning-Dp-btinn.cjs → memoryPoisoning-BXDi4XCK.cjs} +8 -8
  205. package/dist/src/{memoryPoisoning-CM83NWYl.js → memoryPoisoning-D-V4yXjj.js} +8 -8
  206. package/dist/src/{memoryPoisoning-D8h9gXJF.js → memoryPoisoning-PrsT7Zh2.js} +8 -8
  207. package/dist/src/{memoryPoisoning-cLuCoTuJ.js → memoryPoisoning-ZUwCLvEn.js} +8 -8
  208. package/dist/src/{messages-DBPir0TQ.cjs → messages-BSFLFXIO.cjs} +8 -8
  209. package/dist/src/{messages-BabO-cX8.js → messages-C5qBfONg.js} +8 -8
  210. package/dist/src/{messages-DGUlSNU7.js → messages-CQoK4jHx.js} +8 -8
  211. package/dist/src/{messages-vsE_-Lv0.js → messages-Dy5vvc3H.js} +8 -8
  212. package/dist/src/{mischievousUser-olGgHIVR.cjs → mischievousUser-B4_YRWqu.cjs} +5 -5
  213. package/dist/src/{mischievousUser-frFYKxu6.js → mischievousUser-BoZy3Fry.js} +5 -5
  214. package/dist/src/{mischievousUser-BUOP9W5r.js → mischievousUser-CjJ9ZEuw.js} +5 -5
  215. package/dist/src/{mischievousUser-0l8GD7Dp.js → mischievousUser-CrMXlOUj.js} +5 -5
  216. package/dist/src/{modelslab-EyDczZ5A.js → modelslab-B72XbAlR.js} +8 -8
  217. package/dist/src/{modelslab-Dzst7VTU.js → modelslab-Bw-46LmW.js} +8 -8
  218. package/dist/src/{modelslab-Cogmu4mG.js → modelslab-CJ0zQdDH.js} +8 -8
  219. package/dist/src/{modelslab-CNV5bMSk.cjs → modelslab-LXFLCD-O.cjs} +8 -8
  220. package/dist/src/{nova-reel-CjJRxI1X.cjs → nova-reel-D0k0-k8Y.cjs} +5 -5
  221. package/dist/src/{nova-reel-C4eUJGse.js → nova-reel-DItvBa6z.js} +5 -5
  222. package/dist/src/{nova-reel-BGPNBOMS.js → nova-reel-DN7gTJzd.js} +5 -5
  223. package/dist/src/{nova-reel-B_5NKFu1.js → nova-reel-DRLvlFOH.js} +5 -5
  224. package/dist/src/{nova-sonic-BNGmgfFz.js → nova-sonic-BeAjEzkG.js} +3 -3
  225. package/dist/src/{nova-sonic-CrV0iaY_.js → nova-sonic-DB7LzcCY.js} +3 -3
  226. package/dist/src/{nova-sonic-DuOG9Aun.cjs → nova-sonic-DfLkPbkF.cjs} +3 -3
  227. package/dist/src/{nova-sonic-ChPlh5na.js → nova-sonic-kzIVxZDb.js} +3 -3
  228. package/dist/src/{openai-BMHD2Huo.js → openai-Bfbg6L4c.js} +2 -2
  229. package/dist/src/{openai-C3uXv8wS.cjs → openai-CCaz18I4.cjs} +2 -2
  230. package/dist/src/{openai-CJrsh9n4.js → openai-CJOpg_dA.js} +2 -2
  231. package/dist/src/{openai-zgwBb4Ff.js → openai-uRacy72N.js} +2 -2
  232. package/dist/src/{openclaw-zIJAsz3P.js → openclaw-2Y9Ukt9Y.js} +9 -9
  233. package/dist/src/{openclaw-CF7fMido.js → openclaw-BdnuiqBG.js} +9 -9
  234. package/dist/src/{openclaw-Dphc01BY.cjs → openclaw-D54hA9Fe.cjs} +9 -9
  235. package/dist/src/{openclaw-BIHlu_36.js → openclaw-DRjsDCSS.js} +9 -9
  236. package/dist/src/{opencode-sdk-B3vlPLsp.js → opencode-sdk-2su-bzyz.js} +38 -9
  237. package/dist/src/{opencode-sdk-DoY6GbWw.cjs → opencode-sdk-BRkqgOOQ.cjs} +38 -9
  238. package/dist/src/{opencode-sdk-D05JSgMQ.js → opencode-sdk-CFY-1bkH.js} +38 -9
  239. package/dist/src/{opencode-sdk-sRKYHGoI.js → opencode-sdk-D-tRQJ9s.js} +38 -9
  240. package/dist/src/{otlpReceiver-B2eaKC8C.js → otlpReceiver-BkB7tsTT.js} +3 -3
  241. package/dist/src/{otlpReceiver--gTpSagc.js → otlpReceiver-BqJYGC-M.js} +4 -4
  242. package/dist/src/{otlpReceiver-BXjcRqAM.js → otlpReceiver-CRwU2egH.js} +4 -4
  243. package/dist/src/{otlpReceiver-CvJdBGSc.cjs → otlpReceiver-DOl5S07u.cjs} +4 -4
  244. package/dist/src/{packageParser--MWTSrPW.js → packageParser-B3bpKHK4.js} +2 -2
  245. package/dist/src/{packageParser-hwwSGnAZ.js → packageParser-CZdMKLBh.js} +2 -2
  246. package/dist/src/{packageParser-CgE-ziRo.js → packageParser-D7YWfcSe.js} +2 -2
  247. package/dist/src/{packageParser-QoCS1FMl.cjs → packageParser-DR054ceU.cjs} +2 -2
  248. package/dist/src/{promptLength-B9nZEfO6.js → promptLength-5B4_P93z.js} +2 -2
  249. package/dist/src/{promptLength-BbBbDHNj.cjs → promptLength-CAcg7BmO.cjs} +2 -2
  250. package/dist/src/{promptLength-4X-Wd8PG.js → promptLength-PkjlYFx0.js} +2 -2
  251. package/dist/src/{promptLength-0qIHyhA5.js → promptLength-ho3wbst6.js} +2 -2
  252. package/dist/src/{promptfoo-BDrfT30-.js → promptfoo-CEsoPlBa.js} +67 -10
  253. package/dist/src/{promptfoo-b-baRMj-.cjs → promptfoo-DAXBmrE6.cjs} +96 -9
  254. package/dist/src/{promptfoo-Cm4hiy1Y.js → promptfoo-DVKqidd8.js} +67 -10
  255. package/dist/src/{promptfoo-Rjp-MeBb.js → promptfoo-wxe28-q9.js} +67 -10
  256. package/dist/src/{providerRegistry-DHcFiVWX.js → providerRegistry-Bf4tRLgu.js} +2 -2
  257. package/dist/src/{providerRegistry-CZO_w7ue.cjs → providerRegistry-DKbi2EbP.cjs} +2 -2
  258. package/dist/src/{providerRegistry-ReCd0sFa.js → providerRegistry-DLeG-xXn.js} +2 -2
  259. package/dist/src/{providerRegistry-1gB5vtzQ.js → providerRegistry-v8Wa3f9z.js} +2 -2
  260. package/dist/src/{providers-B9KzWxAX.js → providers-CYBHjFEg.js} +178 -126
  261. package/dist/src/{providers-BCCz6_IX.js → providers-DDLQc0tl.js} +177 -125
  262. package/dist/src/{providers-BDVVIQM6.cjs → providers-DP1CDgd5.cjs} +176 -124
  263. package/dist/src/{providers-DVYRZP4E.js → providers-DTPwadhk.js} +176 -124
  264. package/dist/src/{providers-BYAn82cf.js → providers-DvBFcsXi.js} +1 -1
  265. package/dist/src/{pythonUtils-Cokhluq3.cjs → pythonUtils-BjuymNdM.cjs} +3 -3
  266. package/dist/src/{pythonUtils-D0BYebvX.js → pythonUtils-C4Wnz6Q7.js} +3 -3
  267. package/dist/src/{pythonUtils-CLCgQ9tt.js → pythonUtils-CBe7VV6f.js} +3 -3
  268. package/dist/src/{pythonUtils-CgYxeSmO.js → pythonUtils-CLAoc6jg.js} +3 -3
  269. package/dist/src/{quiverai-CdTWPe-A.js → quiverai-B6ebiUKf.js} +6 -6
  270. package/dist/src/{quiverai-Cv7rJKDz.js → quiverai-BG7dvOQc.js} +6 -6
  271. package/dist/src/{quiverai-BAp6iTZD.cjs → quiverai-DH6SMaxD.cjs} +6 -6
  272. package/dist/src/{quiverai-BvIhI_0l.js → quiverai-DHNIAUfS.js} +6 -6
  273. package/dist/src/{registry-BUJrgjwv.js → registry-BKlwRYvr.js} +14 -14
  274. package/dist/src/{registry-KCVF1CFC.cjs → registry-CQHRTGYs.cjs} +14 -14
  275. package/dist/src/{registry-Dp5EqoXc.js → registry-Eiv-QeUm.js} +14 -14
  276. package/dist/src/{registry-DXm1t_x0.js → registry-qNoxbVEb.js} +14 -14
  277. package/dist/src/{remoteGeneration-DS9N3pgB.cjs → remoteGeneration-CD3c_rzc.cjs} +6 -6
  278. package/dist/src/{remoteGeneration-DsaSwmG2.js → remoteGeneration-CoxtxLvB.js} +6 -6
  279. package/dist/src/{remoteGeneration-B1_XsKXU.js → remoteGeneration-DW6mPZnO.js} +6 -6
  280. package/dist/src/{remoteGeneration-COpWcmWd.js → remoteGeneration-DvWEm3yi.js} +6 -6
  281. package/dist/src/{render-_6ur1fhE.js → render-BoxrvB84.js} +2 -2
  282. package/dist/src/{render-DFfDeYUK.js → render-CTZQAINJ.js} +2 -2
  283. package/dist/src/{render-BNTrbmBw.cjs → render-DJ4yipCD.cjs} +2 -2
  284. package/dist/src/{render-DznWrxGO.js → render-MiyTvDY4.js} +2 -2
  285. package/dist/src/{render-CSP99NLm.js → render-jE6RKVgk.js} +2 -2
  286. package/dist/src/{responses-1UFFF9N_.cjs → responses-Bs2_3zyr.cjs} +14 -10
  287. package/dist/src/{responses-B3W2JvOQ.js → responses-C0yU3fO6.js} +14 -10
  288. package/dist/src/{responses-URRzV8qE.js → responses-C2vhwf8F.js} +14 -10
  289. package/dist/src/{responses-B6ktc3Ra.js → responses-pvlY3oYx.js} +14 -10
  290. package/dist/src/{rubyUtils-CnlW8AYb.js → rubyUtils-AvgsD_QH.js} +3 -3
  291. package/dist/src/{rubyUtils-CqUWBZAt.cjs → rubyUtils-BEqeZynS.cjs} +3 -3
  292. package/dist/src/{rubyUtils-CXlFM2rR.js → rubyUtils-C-sxXgGT.js} +3 -3
  293. package/dist/src/{rubyUtils-DdGojpfv.js → rubyUtils-DFzPvVD4.js} +3 -3
  294. package/dist/src/rubyUtils-DfYaGbxe.js +3 -0
  295. package/dist/src/{runtimeTransform-DigbjU1r.js → runtimeTransform-BmhEztlx.js} +2 -2
  296. package/dist/src/{runtimeTransform-BJOpL9Yc.js → runtimeTransform-Bw9Tttpp.js} +2 -2
  297. package/dist/src/{runtimeTransform-ON3YYILw.cjs → runtimeTransform-DJEknTZQ.cjs} +2 -2
  298. package/dist/src/{runtimeTransform-Dgh_D7DU.js → runtimeTransform-s14J7yxm.js} +2 -2
  299. package/dist/src/{sagemaker-yr1QKeBs.js → sagemaker-C8NJAT8D.js} +11 -11
  300. package/dist/src/{sagemaker-vhtSV7JI.js → sagemaker-DlajLLgJ.js} +11 -11
  301. package/dist/src/{sagemaker-CujrzP1a.js → sagemaker-PgIzjxMt.js} +11 -11
  302. package/dist/src/{sagemaker-DzffAqo_.cjs → sagemaker-hwPXLGI4.cjs} +11 -11
  303. package/dist/src/{scanner-DS0109SS.js → scanner-B3DPvw5u.js} +6 -6
  304. package/dist/src/server/index.js +145 -148
  305. package/dist/src/{server-DhMHosWj.js → server-4wx571OM.js} +6 -6
  306. package/dist/src/{server-Ddp8GNMp.js → server-8in_Vrrf.js} +6 -6
  307. package/dist/src/server-BHd6SQYX.js +3 -0
  308. package/dist/src/{server-CMJD10J4.js → server-pMTgWs3M.js} +4 -4
  309. package/dist/src/{server-B8rqV126.cjs → server-yHhoBx98.cjs} +4 -4
  310. package/dist/src/{shared-D6IjElRI.js → shared-BF25a7ms.js} +12 -12
  311. package/dist/src/{shared-WkgnDkcg.cjs → shared-DlmtkptR.cjs} +12 -12
  312. package/dist/src/{shared-9WHQ1oNE.js → shared-DsbObxvy.js} +12 -12
  313. package/dist/src/{shared-7pmVZLNO.js → shared-yBQATkD5.js} +13 -13
  314. package/dist/src/{signal-CSurUUyV.js → signal-CRrWj2xI.js} +3 -3
  315. package/dist/src/{simulatedUser-Cu601Dd4.cjs → simulatedUser-9A3YPDh2.cjs} +7 -7
  316. package/dist/src/{simulatedUser-C9aQObBI.js → simulatedUser-CbZZV7UQ.js} +7 -7
  317. package/dist/src/{simulatedUser-U_qAHnuB.js → simulatedUser-DdcsTBuS.js} +7 -7
  318. package/dist/src/{simulatedUser-p3tACcmw.js → simulatedUser-LKk31Iov.js} +7 -7
  319. package/dist/src/{slack-Bapo-7_8.js → slack-CWxUAo6N.js} +2 -2
  320. package/dist/src/{slack-DMC1QVEg.cjs → slack-CtMQnlyy.cjs} +2 -2
  321. package/dist/src/{slack-DTEFhrMn.js → slack-DrcMAkvd.js} +2 -2
  322. package/dist/src/{slack-k-_CP84Q.js → slack-chzmaYU3.js} +2 -2
  323. package/dist/src/{storage-BU4qcnOb.js → storage-B9lg2RCL.js} +6 -6
  324. package/dist/src/{storage-QdU-SmvD.js → storage-BC9TzmHh.js} +5 -5
  325. package/dist/src/{storage-CA-v9V2v.cjs → storage-Cv7QYUPO.cjs} +4 -4
  326. package/dist/src/{storage-CD-GWAdx.js → storage-fbHNSuZ9.js} +4 -4
  327. package/dist/src/{store-B2NDDooM.cjs → store-BKN4VD-m.cjs} +3 -3
  328. package/dist/src/{store-HpopRVzl.js → store-C4eo8Kyv.js} +3 -3
  329. package/dist/src/store-mJpYYA7W.js +3 -0
  330. package/dist/src/{store-DKd5592Q.js → store-u1XNK3e8.js} +3 -3
  331. package/dist/src/{strategies-CiSeroPH.js → strategies-4Nnr_9xt.js} +18 -18
  332. package/dist/src/{strategies-7CS3Alao.cjs → strategies-BD7US9WB.cjs} +18 -18
  333. package/dist/src/{strategies-DRJjGTIY.js → strategies-Ptz_P4P4.js} +20 -20
  334. package/dist/src/{tables-CRSXQ2Ke.js → tables-Bn3_8sxV.js} +2 -2
  335. package/dist/src/{tables-DafUHOeh.js → tables-D_ZGKiGc.js} +3 -3
  336. package/dist/src/{tables-DBIJU0WE.cjs → tables-D_s2HMPP.cjs} +2 -2
  337. package/dist/src/{tables-CxjU7bBd.js → tables-PWOqfbI_.js} +3 -3
  338. package/dist/src/{telemetry-DwX9XUN5.js → telemetry-BTIhfopq.js} +21 -16
  339. package/dist/src/{telemetry-00ezXr_t.js → telemetry-BU80NveV.js} +21 -16
  340. package/dist/src/telemetry-CVHVhMOI.js +3 -0
  341. package/dist/src/{telemetry-DmXYcJNV.js → telemetry-D3yQCekN.js} +21 -16
  342. package/dist/src/{telemetry-CJ7FnCsc.cjs → telemetry-DvzmDrSM.cjs} +21 -16
  343. package/dist/src/{tracingOptions-BnwKCkSB.js → tracingOptions-D2F0D7es.js} +4 -4
  344. package/dist/src/{tracingOptions-Chi74lOD.js → tracingOptions-PLePpCmo.js} +3 -3
  345. package/dist/src/{tracingOptions-ji2OuXbT.js → tracingOptions-WpE9IqC8.js} +4 -4
  346. package/dist/src/{tracingOptions-DrbSFaKy.cjs → tracingOptions-eqmq5sA2.cjs} +4 -4
  347. package/dist/src/{transcription-mzuf18Mq.cjs → transcription-CKLxdMxm.cjs} +7 -7
  348. package/dist/src/{transcription-B8uIgCYX.js → transcription-CmlDorqD.js} +7 -7
  349. package/dist/src/{transcription-CfU5loSq.js → transcription-Cupf4JNw.js} +7 -7
  350. package/dist/src/{transcription-Dkd22_4K.js → transcription-sOgdGxM6.js} +7 -7
  351. package/dist/src/{transform-BnSXWmU_2.cjs → transform-0wnBYYaL2.cjs} +4 -4
  352. package/dist/src/{transform-EtD4jAWi.js → transform-AfC8gqCB.js} +5 -5
  353. package/dist/src/{transform-CGt7Kt3y2.js → transform-BDSnWRNv2.js} +4 -4
  354. package/dist/src/{transform-BnSTnFlp.js → transform-C5pxvKUV.js} +4 -4
  355. package/dist/src/{transform-CrPGTsij.js → transform-C5rpIuDz.js} +4 -4
  356. package/dist/src/{transform-DmvYBRll.js → transform-D7QlmswG.js} +5 -5
  357. package/dist/src/{transform-DhNkAUs8.cjs → transform-DKw2FNwg.cjs} +5 -5
  358. package/dist/src/{transform-BIMynQsA.js → transform-R1PnNdLv.js} +5 -5
  359. package/dist/src/{types-BFevViUY.js → types-C_e_SykX.js} +2 -2
  360. package/dist/src/{types-BJQBBPTP.js → types-uLCKnRiK.js} +2 -2
  361. package/dist/src/{util-CN8om2rz.cjs → util-3BRss2KA.cjs} +7 -7
  362. package/dist/src/{util-efByNxcr.js → util-B2Nt2Oy7.js} +25 -7
  363. package/dist/src/{util-I-Rf-KaD.js → util-BGfk7zh7.js} +8 -8
  364. package/dist/src/{util-5WnCSb0h.js → util-BLSQ_7Ky.js} +25 -7
  365. package/dist/src/{util-IYzs5Y04.cjs → util-BSZPCmvm.cjs} +4 -3
  366. package/dist/src/{util-SPsvFONY.cjs → util-BuYzkbEz.cjs} +7 -7
  367. package/dist/src/{util-LKTmNsMQ.js → util-C6d3eV0A.js} +25 -7
  368. package/dist/src/{util-DURocbYR.js → util-CES4qWd7.js} +8 -8
  369. package/dist/src/{util-Df8YMvS1.js → util-CKZReNsz.js} +8 -8
  370. package/dist/src/{util-BSIuSLVK.cjs → util-Cs372i1_.cjs} +25 -7
  371. package/dist/src/{util-CoQWM76y.js → util-Cw9nJJWm.js} +4 -3
  372. package/dist/src/{util-DNl96nNs.js → util-D1NKMz55.js} +7 -7
  373. package/dist/src/{util-kDURhgJW.js → util-D9grslJP.js} +8 -8
  374. package/dist/src/{util--WMgw7wM.js → util-SNUDkWJ8.js} +4 -3
  375. package/dist/src/{util-Bx677_k2.js → util-vaCPFatZ.js} +7 -7
  376. package/dist/src/{util-DiQ3QvBB.js → util-weQgMdSy.js} +4 -3
  377. package/dist/src/{utils-Ve6kuJsa.cjs → utils-B_HCobst.cjs} +2 -2
  378. package/dist/src/{utils-BGY69tk_.js → utils-C3qMBhJT.js} +2 -2
  379. package/dist/src/{utils-BFOh20Gb.js → utils-Cdx3ZJr7.js} +2 -2
  380. package/dist/src/{utils-B0lzitHZ.js → utils-DMWnIu_V.js} +2 -2
  381. package/dist/src/{version-BK20a4sw.js → version-BGiEZvX0.js} +2 -2
  382. package/dist/src/{version-lpHV_53E.js → version-BNhpIb2U.js} +2 -2
  383. package/dist/src/{version-eRkNuGv8.js → version-CnYqmWbz.js} +2 -2
  384. package/dist/src/{version-BWCSaByA.cjs → version-XjGPawtU.cjs} +2 -2
  385. package/dist/tsconfig.tsbuildinfo +1 -1
  386. package/package.json +17 -17
  387. package/dist/src/app/assets/Report-BNHJKN35.js +0 -1
  388. package/dist/src/app/assets/index-yhM8y1PP.css +0 -1
  389. package/dist/src/cache-Cf7b4pWE.js +0 -3
  390. package/dist/src/cloud-p96PA4MH.js +0 -3
  391. package/dist/src/codex-sdk-BGjVAk23.js +0 -3
  392. package/dist/src/evalResult-DqzsS6_W.js +0 -3
  393. package/dist/src/evaluator-DNdJF1Gv.js +0 -3
  394. package/dist/src/fetch-_YgGd2qv.js +0 -3
  395. package/dist/src/graders-BDT7dif6.js +0 -3
  396. package/dist/src/rubyUtils-BYVlQ94c.js +0 -3
  397. package/dist/src/server-BaLytskk.js +0 -3
  398. package/dist/src/store-IbiRIF3k.js +0 -3
  399. package/dist/src/telemetry-ByPqDcKC.js +0 -3
@@ -1,37 +1,37 @@
1
1
  import { t as __exportAll } from "./chunk-DEq-mXcV.js";
2
- import { C as getEnvFloat, T as getEnvString, _ as isValidJson, a as logger, c as REDACTED, f as sanitizeObject, k as state, l as isSecretField, p as sanitizeUrl, u as looksLikeSecret, w as getEnvInt, x as getConfigDirectoryPath, y as safeJsonStringify } from "./logger-KD8JjCRJ.js";
3
- import { C as openaiToolChoiceToBedrock, D as transformToolChoice, E as toTitleCase, O as transformTools, T as parseChatPrompt, _ as LONG_RUNNING_MODEL_TIMEOUT_MS, b as isOpenAIToolArray, l as cloudConfig, m as sleep, r as fetchWithTimeout, t as fetchWithProxy, v as REQUEST_TIMEOUT_MS$1, w as openaiToolsToBedrock, x as isOpenAIToolChoice, y as calculateCost } from "./fetch-BufrQtvR.js";
2
+ import { E as getEnvString, S as state, T as getEnvInt, _ as isValidJson, a as logger, c as REDACTED, f as sanitizeObject, l as isSecretField, p as sanitizeUrl, u as looksLikeSecret, w as getEnvFloat, x as getConfigDirectoryPath, y as safeJsonStringify } from "./logger-BjYLHvGm.js";
3
+ import { C as openaiToolChoiceToBedrock, D as transformToolChoice, E as toTitleCase, O as transformTools, T as parseChatPrompt, _ as LONG_RUNNING_MODEL_TIMEOUT_MS, b as isOpenAIToolArray, l as cloudConfig, m as sleep, r as fetchWithTimeout, t as fetchWithProxy, v as calculateCost, w as openaiToolsToBedrock, x as isOpenAIToolChoice, y as getRequestTimeoutMs } from "./fetch-CBe8pU8Q.js";
4
4
  import { t as invariant } from "./invariant-DIYf9sP1.js";
5
- import { n as getWrapperDir, o as safeResolve, r as importModule } from "./esm-B6whoAcf.js";
5
+ import { n as getWrapperDir, o as safeResolve, r as importModule } from "./esm-CGER3lko.js";
6
6
  import { i as withGenAISpan } from "./genaiTracer-jJKYsnjc.js";
7
- import { n as renderVarsInObject, o as getNunjucksEngine, t as renderEnvOnlyInObject } from "./render-_6ur1fhE.js";
8
- import { t as providerRegistry } from "./providerRegistry-1gB5vtzQ.js";
9
- import { p as isApiProvider } from "./types-BJQBBPTP.js";
7
+ import { n as renderVarsInObject, o as getNunjucksEngine, t as renderEnvOnlyInObject } from "./render-BoxrvB84.js";
8
+ import { t as providerRegistry } from "./providerRegistry-v8Wa3f9z.js";
9
+ import { p as isApiProvider } from "./types-uLCKnRiK.js";
10
10
  import { o as isJavascriptFile } from "./shared-BoG7qLMv.js";
11
11
  import { n as sha256 } from "./createHash-CGVzWdjj.js";
12
- import { a as getScopedCacheKey, i as getCache, o as isCacheEnabled, r as fetchWithCache } from "./cache-roFAE0cI.js";
12
+ import { a as getScopedCacheKey, i as getCache, o as isCacheEnabled, r as fetchWithCache } from "./cache-x9llZxbx.js";
13
13
  import { a as createEmptyTokenUsage, n as accumulateResponseTokenUsage } from "./tokenUsageUtils-BjVkdk18.js";
14
- import { i as storeBlob } from "./blobs-CeFdPn_T.js";
15
- import { a as storeMedia, f as getProviderFromCloud, g as validateLinkedTargetId, p as isCloudProvider, s as getCloudDatabaseId, t as getMediaStorage } from "./storage-QdU-SmvD.js";
16
- import { n as telemetry } from "./telemetry-DmXYcJNV.js";
17
- import { i as validatePythonPath, n as getEnvInt$1, r as runPython, t as getConfiguredPythonPath } from "./pythonUtils-CLCgQ9tt.js";
18
- import { A as maybeLoadConfigFromExternalFile, D as readProviderConfigFile, E as normalizeProviderRef, F as parsePathOrGlob, M as maybeLoadFromExternalFileWithVars, N as maybeLoadResponseFormatFromExternalFile, P as maybeLoadToolsFromExternalFile, R as loadFunction, T as loadProviderConfigsFromFile, j as maybeLoadFromExternalFile, k as getResolvedRelativePath, w as isProviderConfigFileReference, z as parseFileUrl } from "./util-I-Rf-KaD.js";
19
- import { i as normalizeFinishReason, n as MCPClient, r as FINISH_REASON_MAP, t as OpenAiChatCompletionProvider } from "./chat-CUCorGiL.js";
20
- import { C as resolveProjectId, S as loadCredentials, T as toDataUri, _ as GoogleAuthManager, a as calculateGoogleCost, b as getGoogleClient, c as geminiFormatAndSystemInstructions, d as mergeParts, f as normalizeSafetySettings, g as CHAT_MODELS, i as transformMCPToolsToOpenAi, j as TOKEN_REFRESH_BUFFER_MS, l as getCandidate, m as parseConfigSystemInstruction, o as createAuthCacheDiscriminator, p as normalizeTools, r as transformMCPToolsToGoogle, s as formatCandidateContents, u as getGoogleAccessToken, v as determineGoogleVertexMode, y as getGoogleApiKey } from "./transform-BIMynQsA.js";
21
- import { n as AnthropicGenericProvider, t as AnthropicMessagesProvider } from "./messages-BabO-cX8.js";
22
- import { a as isClaudeOpus47Model, i as getTokenUsage$2, n as calculateAnthropicCost, o as outputFromMessage, s as parseMessages, t as ANTHROPIC_MODELS } from "./util-DiQ3QvBB.js";
23
- import { n as ResponsesProcessor, r as FunctionCallbackHandler, t as OpenAiResponsesProvider } from "./responses-B6ktc3Ra.js";
24
- import { t as OpenAiGenericProvider } from "./openai-BMHD2Huo.js";
25
- import { a as calculateOpenAICost, c as getTokenUsage$3, o as failApiCall, r as OPENAI_REALTIME_MODELS, s as formatOpenAiError } from "./util-efByNxcr.js";
26
- import { t as OpenAiEmbeddingProvider } from "./embedding-C251p1-8.js";
14
+ import { i as storeBlob } from "./blobs-ikh75MtF.js";
15
+ import { a as storeMedia, f as getProviderFromCloud, g as validateLinkedTargetId, p as isCloudProvider, s as getCloudDatabaseId, t as getMediaStorage } from "./storage-BC9TzmHh.js";
16
+ import { n as telemetry } from "./telemetry-D3yQCekN.js";
17
+ import { i as validatePythonPath, n as getEnvInt$1, r as runPython, t as getConfiguredPythonPath } from "./pythonUtils-CBe7VV6f.js";
18
+ import { A as maybeLoadConfigFromExternalFile, D as readProviderConfigFile, E as normalizeProviderRef, F as parsePathOrGlob, M as maybeLoadFromExternalFileWithVars, N as maybeLoadResponseFormatFromExternalFile, P as maybeLoadToolsFromExternalFile, R as loadFunction, T as loadProviderConfigsFromFile, j as maybeLoadFromExternalFile, k as getResolvedRelativePath, w as isProviderConfigFileReference, z as parseFileUrl } from "./util-BGfk7zh7.js";
19
+ import { i as normalizeFinishReason, n as MCPClient, r as FINISH_REASON_MAP, t as OpenAiChatCompletionProvider } from "./chat-CvQMD-mp.js";
20
+ import { C as resolveProjectId, S as loadCredentials, T as toDataUri, _ as GoogleAuthManager, a as calculateGoogleCost, b as getGoogleClient, c as geminiFormatAndSystemInstructions, d as mergeParts, f as normalizeSafetySettings, g as CHAT_MODELS, i as transformMCPToolsToOpenAi, j as TOKEN_REFRESH_BUFFER_MS, l as getCandidate, m as parseConfigSystemInstruction, o as createAuthCacheDiscriminator, p as normalizeTools, r as transformMCPToolsToGoogle, s as formatCandidateContents, u as getGoogleAccessToken, v as determineGoogleVertexMode, y as getGoogleApiKey } from "./transform-D7QlmswG.js";
21
+ import { n as AnthropicGenericProvider, t as AnthropicMessagesProvider } from "./messages-C5qBfONg.js";
22
+ import { a as isClaudeOpus47Model, i as getTokenUsage$2, n as calculateAnthropicCost, o as outputFromMessage, s as parseMessages, t as ANTHROPIC_MODELS } from "./util-weQgMdSy.js";
23
+ import { n as ResponsesProcessor, r as FunctionCallbackHandler, t as OpenAiResponsesProvider } from "./responses-pvlY3oYx.js";
24
+ import { t as OpenAiGenericProvider } from "./openai-uRacy72N.js";
25
+ import { a as calculateOpenAICost, c as getTokenUsage$3, o as failApiCall, r as OPENAI_REALTIME_MODELS, s as formatOpenAiError } from "./util-C6d3eV0A.js";
26
+ import { t as OpenAiEmbeddingProvider } from "./embedding-BwTB3YDt.js";
27
27
  import { t as ellipsize } from "./text-CZr46tp_.js";
28
- import { a as novaParseMessages, i as novaOutputFromMessage, t as AwsBedrockGenericProvider } from "./base-E9I8zXjz.js";
28
+ import { a as novaParseMessages, i as novaOutputFromMessage, t as AwsBedrockGenericProvider } from "./base-CTWzNAH9.js";
29
29
  import { t as getProcessShim } from "./processShim-C_z3aRvF.js";
30
- import { i as formatOutput, n as buildStructuredImageOutputs, r as callOpenAiImageApi, t as OpenAiImageProvider } from "./image-Cvjwx1uY.js";
31
- import { t as OpenAiCompletionProvider } from "./completion-CO2e1_62.js";
32
- import { r as parsePackageProvider } from "./packageParser-hwwSGnAZ.js";
33
- import { n as runRuby } from "./rubyUtils-DdGojpfv.js";
34
- import { t as SimulatedUser } from "./simulatedUser-C9aQObBI.js";
30
+ import { i as formatOutput, n as buildStructuredImageOutputs, r as callOpenAiImageApi, t as OpenAiImageProvider } from "./image-DmC5qwQx.js";
31
+ import { t as OpenAiCompletionProvider } from "./completion-C99GFqQE.js";
32
+ import { r as parsePackageProvider } from "./packageParser-D7YWfcSe.js";
33
+ import { n as runRuby } from "./rubyUtils-DFzPvVD4.js";
34
+ import { t as SimulatedUser } from "./simulatedUser-CbZZV7UQ.js";
35
35
  import fs, { promises } from "fs";
36
36
  import path from "path";
37
37
  import chalk from "chalk";
@@ -1631,7 +1631,7 @@ var AzureChatCompletionProvider = class extends AzureGenericProvider {
1631
1631
  ...this.config.headers
1632
1632
  },
1633
1633
  body: JSON.stringify(body)
1634
- }, REQUEST_TIMEOUT_MS$1, "json", context?.bustCache ?? context?.debug);
1634
+ }, getRequestTimeoutMs(), "json", context?.bustCache ?? context?.debug);
1635
1635
  cached = isCached;
1636
1636
  latencyMs = fetchLatencyMs;
1637
1637
  if (typeof responseData === "string") try {
@@ -1731,7 +1731,7 @@ var AzureEmbeddingProvider = class extends AzureGenericProvider {
1731
1731
  ...this.config.headers
1732
1732
  },
1733
1733
  body: JSON.stringify(body)
1734
- }, REQUEST_TIMEOUT_MS$1));
1734
+ }, getRequestTimeoutMs()));
1735
1735
  } catch (err) {
1736
1736
  return {
1737
1737
  error: `API call error: ${String(err)}`,
@@ -1915,7 +1915,7 @@ var AzureModerationProvider = class AzureModerationProvider extends AzureGeneric
1915
1915
  ...this.configWithHeaders.passthrough || {}
1916
1916
  };
1917
1917
  const controller = new AbortController();
1918
- const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS$1);
1918
+ const timeoutId = setTimeout(() => controller.abort(), getRequestTimeoutMs());
1919
1919
  const response = await fetchWithProxy(url, {
1920
1920
  method: "POST",
1921
1921
  headers,
@@ -2166,7 +2166,7 @@ var GoogleGenericProvider = class {
2166
2166
  * Get the request timeout in milliseconds.
2167
2167
  */
2168
2168
  getTimeout() {
2169
- return this.config.timeoutMs || REQUEST_TIMEOUT_MS$1;
2169
+ return this.config.timeoutMs || getRequestTimeoutMs();
2170
2170
  }
2171
2171
  };
2172
2172
  //#endregion
@@ -2320,7 +2320,7 @@ var AIStudioChatProvider = class extends GoogleGenericProvider {
2320
2320
  headers,
2321
2321
  body: JSON.stringify(body),
2322
2322
  ...authDiscriminator && { _authHash: authDiscriminator }
2323
- }, REQUEST_TIMEOUT_MS$1, "json", shouldBustCache(context)));
2323
+ }, getRequestTimeoutMs(), "json", shouldBustCache(context)));
2324
2324
  } catch (err) {
2325
2325
  return { error: `API call error: ${String(err)}` };
2326
2326
  }
@@ -2402,7 +2402,7 @@ var AIStudioChatProvider = class extends GoogleGenericProvider {
2402
2402
  headers,
2403
2403
  body: JSON.stringify(body),
2404
2404
  ...authDiscriminator && { _authHash: authDiscriminator }
2405
- }, REQUEST_TIMEOUT_MS$1, "json", shouldBustCache(context)));
2405
+ }, getRequestTimeoutMs(), "json", shouldBustCache(context)));
2406
2406
  } catch (err) {
2407
2407
  return { error: `API call error: ${String(err)}` };
2408
2408
  }
@@ -2508,7 +2508,7 @@ var AIStudioEmbeddingProvider = class extends AIStudioChatProvider {
2508
2508
  headers,
2509
2509
  body: JSON.stringify(body),
2510
2510
  ...authDiscriminator && { _authHash: authDiscriminator }
2511
- }, REQUEST_TIMEOUT_MS$1, "json"));
2511
+ }, getRequestTimeoutMs(), "json"));
2512
2512
  } catch (err) {
2513
2513
  logger.error(`Google AI Studio embedding API call error: ${String(err)}`);
2514
2514
  return { error: `API call error: ${String(err)}` };
@@ -2706,7 +2706,7 @@ var VertexChatProvider = class extends GoogleGenericProvider {
2706
2706
  method: "POST",
2707
2707
  headers: { "Content-Type": "application/json; charset=utf-8" },
2708
2708
  data: body,
2709
- timeout: REQUEST_TIMEOUT_MS$1
2709
+ timeout: getRequestTimeoutMs()
2710
2710
  })).data;
2711
2711
  } catch (err) {
2712
2712
  const error = err;
@@ -2820,7 +2820,7 @@ var VertexChatProvider = class extends GoogleGenericProvider {
2820
2820
  method: "POST",
2821
2821
  headers: await this.getAuthHeaders(),
2822
2822
  body: JSON.stringify(body),
2823
- signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS$1)
2823
+ signal: AbortSignal.timeout(getRequestTimeoutMs())
2824
2824
  });
2825
2825
  if (!res.ok) {
2826
2826
  const errorData = await res.json().catch(() => null);
@@ -2836,7 +2836,7 @@ var VertexChatProvider = class extends GoogleGenericProvider {
2836
2836
  url,
2837
2837
  method: "POST",
2838
2838
  data: body,
2839
- timeout: REQUEST_TIMEOUT_MS$1
2839
+ timeout: getRequestTimeoutMs()
2840
2840
  })).data;
2841
2841
  }
2842
2842
  } catch (err) {
@@ -3026,7 +3026,7 @@ var VertexChatProvider = class extends GoogleGenericProvider {
3026
3026
  method: "POST",
3027
3027
  headers: { "Content-Type": "application/json" },
3028
3028
  data: body,
3029
- timeout: REQUEST_TIMEOUT_MS$1
3029
+ timeout: getRequestTimeoutMs()
3030
3030
  })).data;
3031
3031
  } catch (err) {
3032
3032
  return { error: `API call error: ${JSON.stringify(err)}` };
@@ -3095,7 +3095,7 @@ var VertexChatProvider = class extends GoogleGenericProvider {
3095
3095
  method: "POST",
3096
3096
  headers: { "Content-Type": "application/json; charset=utf-8" },
3097
3097
  data: body,
3098
- timeout: REQUEST_TIMEOUT_MS$1
3098
+ timeout: getRequestTimeoutMs()
3099
3099
  })).data;
3100
3100
  logger.debug(`Llama API response: ${JSON.stringify(data)}`);
3101
3101
  } catch (err) {
@@ -3571,7 +3571,7 @@ var MistralChatCompletionProvider = class MistralChatCompletionProvider {
3571
3571
  Authorization: `Bearer ${apiKey}`
3572
3572
  },
3573
3573
  body: JSON.stringify(params)
3574
- }, REQUEST_TIMEOUT_MS$1, "json", true);
3574
+ }, getRequestTimeoutMs(), "json", true);
3575
3575
  }));
3576
3576
  } catch (err) {
3577
3577
  return { error: `API call error: ${String(err)}` };
@@ -3686,7 +3686,7 @@ var MistralEmbeddingProvider = class {
3686
3686
  Authorization: `Bearer ${apiKey}`
3687
3687
  },
3688
3688
  body: JSON.stringify(body)
3689
- }, REQUEST_TIMEOUT_MS$1, "json", true);
3689
+ }, getRequestTimeoutMs(), "json", true);
3690
3690
  }));
3691
3691
  } catch (err) {
3692
3692
  logger.error(`API call error: ${err}`);
@@ -3866,7 +3866,7 @@ var OpenAiModerationProvider = class OpenAiModerationProvider extends OpenAiGene
3866
3866
  method: "POST",
3867
3867
  headers,
3868
3868
  body: requestBody
3869
- }, REQUEST_TIMEOUT_MS$1, "json", true, this.config.maxRetries));
3869
+ }, getRequestTimeoutMs(), "json", true, this.config.maxRetries));
3870
3870
  if (status < 200 || status >= 300) return handleApiError$1(`${status} ${statusText}`, typeof data === "string" ? data : JSON.stringify(data));
3871
3871
  logger.debug(`\tOpenAI moderation API response: ${JSON.stringify(data)}`);
3872
3872
  const response = parseOpenAIModerationResponse(data);
@@ -4023,7 +4023,7 @@ var AI21ChatCompletionProvider = class AI21ChatCompletionProvider {
4023
4023
  Authorization: `Bearer ${this.getApiKey()}`
4024
4024
  },
4025
4025
  body: JSON.stringify(body)
4026
- }, REQUEST_TIMEOUT_MS$1));
4026
+ }, getRequestTimeoutMs()));
4027
4027
  } catch (err) {
4028
4028
  return { error: `API call error: ${String(err)}` };
4029
4029
  }
@@ -4231,6 +4231,45 @@ var AnthropicCompletionProvider = class extends AnthropicGenericProvider {
4231
4231
  };
4232
4232
  //#endregion
4233
4233
  //#region src/providers/azure/assistant.ts
4234
+ const AZURE_ASSISTANT_CACHE_KEY_HMAC_KEY = "promptfoo-azure-assistant-cache-key-v1";
4235
+ function normalizeAzureAssistantCacheValue(value, seen = /* @__PURE__ */ new WeakSet()) {
4236
+ if (Array.isArray(value)) {
4237
+ if (seen.has(value)) return "[Circular]";
4238
+ seen.add(value);
4239
+ const normalized = value.map((item) => normalizeAzureAssistantCacheValue(item, seen));
4240
+ seen.delete(value);
4241
+ return normalized;
4242
+ }
4243
+ if (value && typeof value === "object") {
4244
+ if (seen.has(value)) return "[Circular]";
4245
+ const prototype = Object.getPrototypeOf(value);
4246
+ if (prototype !== Object.prototype && prototype !== null) return value;
4247
+ seen.add(value);
4248
+ const normalized = Object.keys(value).sort().reduce((acc, key) => {
4249
+ acc[key] = normalizeAzureAssistantCacheValue(value[key], seen);
4250
+ return acc;
4251
+ }, {});
4252
+ seen.delete(value);
4253
+ return normalized;
4254
+ }
4255
+ return value;
4256
+ }
4257
+ function hmacAzureAssistantCacheValue(value) {
4258
+ const serialized = safeJsonStringify(normalizeAzureAssistantCacheValue(value));
4259
+ invariant(serialized !== void 0, "Azure Assistant cache key input contains values that cannot be serialized");
4260
+ return createHmac("sha256", AZURE_ASSISTANT_CACHE_KEY_HMAC_KEY).update(serialized).digest("hex");
4261
+ }
4262
+ function getAuthHeadersCacheIdentity(authHeaders) {
4263
+ const entries = Object.entries(authHeaders).sort(([nameA], [nameB]) => nameA.localeCompare(nameB));
4264
+ if (entries.length === 0) return {
4265
+ headerNames: [],
4266
+ namespace: "no-auth"
4267
+ };
4268
+ return {
4269
+ headerNames: entries.map(([name]) => name),
4270
+ namespace: hmacAzureAssistantCacheValue(["auth", entries])
4271
+ };
4272
+ }
4234
4273
  var AzureAssistantProvider = class extends AzureGenericProvider {
4235
4274
  assistantConfig;
4236
4275
  functionCallbackHandler = new FunctionCallbackHandler();
@@ -4245,8 +4284,11 @@ var AzureAssistantProvider = class extends AzureGenericProvider {
4245
4284
  if (!apiBaseUrl) throw new Error("Azure API host must be set.");
4246
4285
  if (!this.authHeaders["api-key"] && !this.authHeaders.Authorization) throw new Error("Azure API authentication failed. Set AZURE_API_KEY environment variable or configure apiKey in provider config.\nYou can also use Microsoft Entra ID authentication.");
4247
4286
  const apiVersion = this.assistantConfig.apiVersion || "2024-04-01-preview";
4248
- const cacheKey = `azure_assistant:${this.deploymentName}:${JSON.stringify({
4287
+ const loadedTools = await maybeLoadToolsFromExternalFile(this.assistantConfig.tools, context?.vars);
4288
+ const cacheKey = `azure_assistant:${this.deploymentName}:${hmacAzureAssistantCacheValue({
4289
+ apiBaseUrl,
4249
4290
  apiVersion,
4291
+ auth: getAuthHeadersCacheIdentity(this.authHeaders),
4250
4292
  instructions: this.assistantConfig.instructions,
4251
4293
  max_tokens: this.assistantConfig.max_tokens,
4252
4294
  model: this.assistantConfig.modelName,
@@ -4255,13 +4297,13 @@ var AzureAssistantProvider = class extends AzureGenericProvider {
4255
4297
  temperature: this.assistantConfig.temperature,
4256
4298
  tool_choice: this.assistantConfig.tool_choice,
4257
4299
  tool_resources: this.assistantConfig.tool_resources,
4258
- tools: JSON.stringify(await maybeLoadToolsFromExternalFile(this.assistantConfig.tools, context?.vars)),
4300
+ tools: loadedTools,
4259
4301
  top_p: this.assistantConfig.top_p
4260
4302
  })}`;
4261
4303
  if (isCacheEnabled()) try {
4262
4304
  const cachedResult = await (await getCache()).get(cacheKey);
4263
4305
  if (cachedResult) {
4264
- logger.debug(`Cache hit for assistant prompt: ${prompt.substring(0, 50)}...`);
4306
+ logger.debug("Cache hit for assistant prompt", { promptLength: prompt.length });
4265
4307
  return {
4266
4308
  ...cachedResult,
4267
4309
  cached: true
@@ -4276,7 +4318,10 @@ var AzureAssistantProvider = class extends AzureGenericProvider {
4276
4318
  headers: await this.getHeaders(),
4277
4319
  body: JSON.stringify({})
4278
4320
  });
4279
- logger.debug(`Created thread ${threadResponse.id} for prompt: ${prompt.substring(0, 30)}...`);
4321
+ logger.debug("Created thread for assistant prompt", {
4322
+ threadId: threadResponse.id,
4323
+ promptLength: prompt.length
4324
+ });
4280
4325
  await this.makeRequest(`${apiBaseUrl}/openai/threads/${threadResponse.id}/messages?api-version=${apiVersion}`, {
4281
4326
  method: "POST",
4282
4327
  headers: await this.getHeaders(),
@@ -4291,7 +4336,6 @@ var AzureAssistantProvider = class extends AzureGenericProvider {
4291
4336
  if (this.assistantConfig.tool_resources) runOptions.tool_resources = this.assistantConfig.tool_resources;
4292
4337
  if (this.assistantConfig.tool_choice) runOptions.tool_choice = this.assistantConfig.tool_choice;
4293
4338
  if (this.assistantConfig.tools) {
4294
- const loadedTools = await maybeLoadToolsFromExternalFile(this.assistantConfig.tools, context?.vars);
4295
4339
  if (loadedTools !== void 0) runOptions.tools = loadedTools;
4296
4340
  }
4297
4341
  if (this.assistantConfig.modelName) runOptions.model = this.assistantConfig.modelName;
@@ -4326,7 +4370,7 @@ var AzureAssistantProvider = class extends AzureGenericProvider {
4326
4370
  }
4327
4371
  if (isCacheEnabled() && !result.error) try {
4328
4372
  await (await getCache()).set(cacheKey, result);
4329
- logger.debug(`Cached assistant response for prompt: ${prompt.substring(0, 50)}...`);
4373
+ logger.debug("Cached assistant response for prompt", { promptLength: prompt.length });
4330
4374
  } catch (err) {
4331
4375
  logger.warn(`Error caching result: ${err}`);
4332
4376
  }
@@ -4363,7 +4407,7 @@ var AzureAssistantProvider = class extends AzureGenericProvider {
4363
4407
  * Helper method to make HTTP requests using fetchWithCache
4364
4408
  */
4365
4409
  async makeRequest(url, options) {
4366
- const timeoutMs = this.assistantConfig.timeoutMs ?? REQUEST_TIMEOUT_MS$1;
4410
+ const timeoutMs = this.assistantConfig.timeoutMs ?? getRequestTimeoutMs();
4367
4411
  const retries = this.assistantConfig.retryOptions?.maxRetries ?? 4;
4368
4412
  const shouldBustCache = url.includes("/runs/") && options.method === "GET" || url.includes("/threads") && options.method === "POST" && !url.includes("/messages") && !url.includes("submit_tool_outputs");
4369
4413
  try {
@@ -4661,7 +4705,7 @@ var AzureCompletionProvider = class extends AzureGenericProvider {
4661
4705
  ...this.config.headers
4662
4706
  },
4663
4707
  body: JSON.stringify(body)
4664
- }, REQUEST_TIMEOUT_MS$1, "json", context?.bustCache ?? context?.debug));
4708
+ }, getRequestTimeoutMs(), "json", context?.bustCache ?? context?.debug));
4665
4709
  } catch (err) {
4666
4710
  return { error: `API call error: ${String(err)}` };
4667
4711
  }
@@ -5129,7 +5173,7 @@ var AzureResponsesProvider = class extends AzureGenericProvider {
5129
5173
  }
5130
5174
  const body = await this.getAzureResponsesBody(prompt, context, callApiOptions);
5131
5175
  const isDeepResearchModel = this.deploymentName.includes("deep-research");
5132
- let timeout = REQUEST_TIMEOUT_MS$1;
5176
+ let timeout = getRequestTimeoutMs();
5133
5177
  if (isDeepResearchModel) {
5134
5178
  const evalTimeout = getEnvInt("PROMPTFOO_EVAL_TIMEOUT_MS", 0);
5135
5179
  timeout = evalTimeout > 0 ? evalTimeout : LONG_RUNNING_MODEL_TIMEOUT_MS;
@@ -8151,7 +8195,7 @@ var CohereChatCompletionProvider = class CohereChatCompletionProvider {
8151
8195
  "X-Client-Name": getEnvString("COHERE_CLIENT_NAME") || "promptfoo"
8152
8196
  },
8153
8197
  body: JSON.stringify(body)
8154
- }, REQUEST_TIMEOUT_MS$1));
8198
+ }, getRequestTimeoutMs()));
8155
8199
  if (data.message) return { error: data.message };
8156
8200
  const tokenUsage = {
8157
8201
  cached: cached ? data.token_count?.total_tokens || 0 : 0,
@@ -8213,7 +8257,7 @@ var CohereEmbeddingProvider = class {
8213
8257
  "X-Client-Name": getEnvString("COHERE_CLIENT_NAME") || "promptfoo"
8214
8258
  },
8215
8259
  body: JSON.stringify(body)
8216
- }, REQUEST_TIMEOUT_MS$1));
8260
+ }, getRequestTimeoutMs()));
8217
8261
  } catch (err) {
8218
8262
  logger.error(`API call error: ${err}`);
8219
8263
  throw err;
@@ -10858,6 +10902,10 @@ function omitFalSecretConfigFields(config) {
10858
10902
  const { apiKey, ...rest } = config;
10859
10903
  return rest;
10860
10904
  }
10905
+ function getFalModelInput(config) {
10906
+ const { apiKey, client, ...input } = config;
10907
+ return input;
10908
+ }
10861
10909
  function generateConfigHash$1(config) {
10862
10910
  const sortedConfig = sortObject$1(omitFalSecretConfigFields(config));
10863
10911
  return createHmac("sha256", FAL_CACHE_KEY_HMAC_KEY).update(JSON.stringify(sortedConfig)).digest("hex");
@@ -10874,6 +10922,7 @@ var FalProvider = class {
10874
10922
  modelType;
10875
10923
  apiKey;
10876
10924
  config;
10925
+ clientConfig;
10877
10926
  input;
10878
10927
  fal = null;
10879
10928
  constructor(modelType, modelName, options = {}) {
@@ -10882,9 +10931,10 @@ var FalProvider = class {
10882
10931
  const { config, id, env } = options;
10883
10932
  this.id = id ? () => id : this.id;
10884
10933
  this.config = config ?? {};
10885
- const { apiKey, ...input } = this.config;
10934
+ const { apiKey, client } = this.config;
10886
10935
  this.apiKey = apiKey ?? env?.FAL_KEY ?? getEnvString("FAL_KEY");
10887
- this.input = input;
10936
+ this.clientConfig = client ?? {};
10937
+ this.input = getFalModelInput(this.config);
10888
10938
  }
10889
10939
  id() {
10890
10940
  return `fal:${this.modelType}:${this.modelName}`;
@@ -10906,7 +10956,7 @@ var FalProvider = class {
10906
10956
  const input = {
10907
10957
  prompt,
10908
10958
  ...this.input,
10909
- ...context?.prompt?.config ?? {}
10959
+ ...getFalModelInput(context?.prompt?.config ?? {})
10910
10960
  };
10911
10961
  const cacheEnabled = isCacheEnabled();
10912
10962
  let cacheKey;
@@ -10923,7 +10973,10 @@ var FalProvider = class {
10923
10973
  logger.error(`Error loading @fal-ai/client: ${err}`);
10924
10974
  throw new Error("The @fal-ai/client package is required. Please install it with: npm install @fal-ai/client");
10925
10975
  }
10926
- this.fal.fal.config({ credentials: this.apiKey });
10976
+ this.fal.fal.config({
10977
+ credentials: this.apiKey,
10978
+ ...this.clientConfig
10979
+ });
10927
10980
  if (!response) response = await this.runInference(input);
10928
10981
  if (!cached && cacheEnabled && cache && cacheKey) try {
10929
10982
  await cache.set(cacheKey, JSON.stringify(response));
@@ -11164,7 +11217,7 @@ var GeminiImageProvider = class {
11164
11217
  headers,
11165
11218
  body: JSON.stringify(body),
11166
11219
  ...authDiscriminator && { _authHash: authDiscriminator }
11167
- }, REQUEST_TIMEOUT_MS$1, "json", false);
11220
+ }, getRequestTimeoutMs(), "json", false);
11168
11221
  const latencyMs = Date.now() - startTime;
11169
11222
  return this.processResponse(data, cached, latencyMs);
11170
11223
  } catch (err) {
@@ -11192,7 +11245,7 @@ var GeminiImageProvider = class {
11192
11245
  ...this.config.headers || {}
11193
11246
  },
11194
11247
  data: body,
11195
- timeout: REQUEST_TIMEOUT_MS$1
11248
+ timeout: getRequestTimeoutMs()
11196
11249
  });
11197
11250
  const latencyMs = Date.now() - startTime;
11198
11251
  return this.processResponse(response.data, false, latencyMs);
@@ -11353,7 +11406,7 @@ var GoogleImageProvider = class {
11353
11406
  ...this.config.headers || {}
11354
11407
  },
11355
11408
  data: body,
11356
- timeout: REQUEST_TIMEOUT_MS$1
11409
+ timeout: getRequestTimeoutMs()
11357
11410
  }), "Vertex AI API call");
11358
11411
  const latencyMs = Date.now() - startTime;
11359
11412
  return this.processResponse(response.data, false, latencyMs);
@@ -11390,7 +11443,7 @@ var GoogleImageProvider = class {
11390
11443
  headers,
11391
11444
  body: JSON.stringify(body),
11392
11445
  ...authDiscriminator && { _authHash: authDiscriminator }
11393
- }, REQUEST_TIMEOUT_MS$1, "json"), "Google AI Studio API call");
11446
+ }, getRequestTimeoutMs(), "json"), "Google AI Studio API call");
11394
11447
  return this.processResponse(response.data, response.cached, response.latencyMs);
11395
11448
  } catch (err) {
11396
11449
  return { error: `API call error: ${String(err)}` };
@@ -13762,7 +13815,7 @@ var HttpProvider = class {
13762
13815
  body: tokenRequestBody.toString()
13763
13816
  };
13764
13817
  if (httpsAgent) fetchOptions.dispatcher = httpsAgent;
13765
- const response = await fetchWithCache(oauthConfig.tokenUrl, fetchOptions, REQUEST_TIMEOUT_MS$1, "text", true, 0);
13818
+ const response = await fetchWithCache(oauthConfig.tokenUrl, fetchOptions, getRequestTimeoutMs(), "text", true, 0);
13766
13819
  if (response.status < 200 || response.status >= 300) throw new Error(`OAuth token request failed with status ${response.status} ${response.statusText}: ${response.data}`);
13767
13820
  const tokenData = JSON.parse(response.data);
13768
13821
  if (!tokenData.access_token) throw new Error("OAuth token response missing access_token");
@@ -13929,7 +13982,7 @@ var HttpProvider = class {
13929
13982
  };
13930
13983
  if (body) fetchOptions.body = body;
13931
13984
  if (httpsAgent) fetchOptions.dispatcher = httpsAgent;
13932
- const response = await fetchWithCache(url, fetchOptions, REQUEST_TIMEOUT_MS$1, "text", true, this.config.maxRetries);
13985
+ const response = await fetchWithCache(url, fetchOptions, getRequestTimeoutMs(), "text", true, this.config.maxRetries);
13933
13986
  if (response.status < 200 || response.status >= 300) throw new Error(`Session endpoint request failed with status ${response.status} ${response.statusText}: ${response.data}`);
13934
13987
  const rawText = response.data;
13935
13988
  let parsedData;
@@ -14122,7 +14175,7 @@ var HttpProvider = class {
14122
14175
  }
14123
14176
  let data, cached = false, status, statusText, responseHeaders, latencyMs;
14124
14177
  try {
14125
- ({data, cached, status, statusText, headers: responseHeaders, latencyMs} = await fetchWithCache(url, fetchOptions, REQUEST_TIMEOUT_MS$1, "text", multipartBody ? true : context?.bustCache ?? context?.debug, this.config.maxRetries));
14178
+ ({data, cached, status, statusText, headers: responseHeaders, latencyMs} = await fetchWithCache(url, fetchOptions, getRequestTimeoutMs(), "text", multipartBody ? true : context?.bustCache ?? context?.debug, this.config.maxRetries));
14126
14179
  } catch (err) {
14127
14180
  throw err;
14128
14181
  }
@@ -14244,7 +14297,7 @@ var HttpProvider = class {
14244
14297
  }
14245
14298
  let data, cached = false, status, statusText, responseHeaders, latencyMs;
14246
14299
  try {
14247
- ({data, cached, status, statusText, headers: responseHeaders, latencyMs} = await fetchWithCache(url, fetchOptions, REQUEST_TIMEOUT_MS$1, "text", context?.bustCache ?? context?.debug, this.config.maxRetries));
14300
+ ({data, cached, status, statusText, headers: responseHeaders, latencyMs} = await fetchWithCache(url, fetchOptions, getRequestTimeoutMs(), "text", context?.bustCache ?? context?.debug, this.config.maxRetries));
14248
14301
  } catch (err) {
14249
14302
  throw err;
14250
14303
  }
@@ -14491,7 +14544,7 @@ var HuggingfaceTextGenerationProvider = class {
14491
14544
  ...this.getApiKey() ? { Authorization: `Bearer ${this.getApiKey()}` } : {}
14492
14545
  },
14493
14546
  body: JSON.stringify(params)
14494
- }, REQUEST_TIMEOUT_MS$1);
14547
+ }, getRequestTimeoutMs());
14495
14548
  logger.debug("Huggingface Inference API response", { data: response.data });
14496
14549
  if (response.data.error) return { error: `API call error: ${response.data.error}` };
14497
14550
  if (!response.data[0] && !response.data.generated_text) return { error: `Malformed response data: ${response.data}` };
@@ -14533,7 +14586,7 @@ var HuggingfaceTextClassificationProvider = class {
14533
14586
  ...this.getApiKey() ? { Authorization: `Bearer ${this.getApiKey()}` } : {}
14534
14587
  },
14535
14588
  body: JSON.stringify(params)
14536
- }, REQUEST_TIMEOUT_MS$1);
14589
+ }, getRequestTimeoutMs());
14537
14590
  if (response.data.error) return { error: `API call error: ${response.data.error}` };
14538
14591
  if (!response.data[0] || !Array.isArray(response.data[0])) return { error: `Malformed response data: ${response.data}` };
14539
14592
  const scores = {};
@@ -14596,7 +14649,7 @@ var HuggingfaceFeatureExtractionProvider = class {
14596
14649
  ...this.getApiKey() ? { Authorization: `Bearer ${this.getApiKey()}` } : {}
14597
14650
  },
14598
14651
  body: JSON.stringify(params)
14599
- }, REQUEST_TIMEOUT_MS$1);
14652
+ }, getRequestTimeoutMs());
14600
14653
  if (typeof response.data === "object" && "error" in response.data) return { error: `API call error: ${response.data.error}` };
14601
14654
  if (!Array.isArray(response.data)) return { error: `Malformed response data: ${response.data}` };
14602
14655
  return { embedding: response.data };
@@ -14646,7 +14699,7 @@ var HuggingfaceSentenceSimilarityProvider = class {
14646
14699
  ...this.getApiKey() ? { Authorization: `Bearer ${this.getApiKey()}` } : {}
14647
14700
  },
14648
14701
  body: JSON.stringify(params)
14649
- }, REQUEST_TIMEOUT_MS$1);
14702
+ }, getRequestTimeoutMs());
14650
14703
  if (typeof response.data === "object" && "error" in response.data) return { error: `API call error: ${response.data.error}` };
14651
14704
  if (!Array.isArray(response.data)) return { error: `Malformed response data: ${response.data}` };
14652
14705
  return { similarity: response.data[0] };
@@ -14688,7 +14741,7 @@ var HuggingfaceTokenExtractionProvider = class {
14688
14741
  ...this.getApiKey() ? { Authorization: `Bearer ${this.getApiKey()}` } : {}
14689
14742
  },
14690
14743
  body: JSON.stringify(params)
14691
- }, REQUEST_TIMEOUT_MS$1);
14744
+ }, getRequestTimeoutMs());
14692
14745
  if (typeof response.data === "object" && "error" in response.data) return { error: `API call error: ${response.data.error}` };
14693
14746
  if (!Array.isArray(response.data)) return { error: `Malformed response data: ${response.data}` };
14694
14747
  const classification = {};
@@ -14767,7 +14820,7 @@ var LlamaProvider = class {
14767
14820
  method: "POST",
14768
14821
  headers: { "Content-Type": "application/json" },
14769
14822
  body: JSON.stringify(body)
14770
- }, REQUEST_TIMEOUT_MS$1));
14823
+ }, getRequestTimeoutMs()));
14771
14824
  } catch (err) {
14772
14825
  return { error: `API call error: ${String(err)}` };
14773
14826
  }
@@ -14938,7 +14991,7 @@ var LocalAiChatProvider = class extends LocalAiGenericProvider {
14938
14991
  method: "POST",
14939
14992
  headers: { "Content-Type": "application/json" },
14940
14993
  body: JSON.stringify(body)
14941
- }, REQUEST_TIMEOUT_MS$1));
14994
+ }, getRequestTimeoutMs()));
14942
14995
  } catch (err) {
14943
14996
  return { error: `API call error: ${String(err)}` };
14944
14997
  }
@@ -14961,7 +15014,7 @@ var LocalAiEmbeddingProvider = class extends LocalAiGenericProvider {
14961
15014
  method: "POST",
14962
15015
  headers: { "Content-Type": "application/json" },
14963
15016
  body: JSON.stringify(body)
14964
- }, REQUEST_TIMEOUT_MS$1));
15017
+ }, getRequestTimeoutMs()));
14965
15018
  } catch (err) {
14966
15019
  return { error: `API call error: ${String(err)}` };
14967
15020
  }
@@ -14987,7 +15040,7 @@ var LocalAiCompletionProvider = class extends LocalAiGenericProvider {
14987
15040
  method: "POST",
14988
15041
  headers: { "Content-Type": "application/json" },
14989
15042
  body: JSON.stringify(body)
14990
- }, REQUEST_TIMEOUT_MS$1));
15043
+ }, getRequestTimeoutMs()));
14991
15044
  } catch (err) {
14992
15045
  return { error: `API call error: ${String(err)}` };
14993
15046
  }
@@ -15229,7 +15282,7 @@ var NscaleImageProvider = class NscaleImageProvider extends OpenAiImageProvider
15229
15282
  let data, status, statusText;
15230
15283
  let cached = false;
15231
15284
  try {
15232
- ({data, cached, status, statusText} = await callOpenAiImageApi(`${this.getApiUrl()}${endpoint}`, body, headers, REQUEST_TIMEOUT_MS$1));
15285
+ ({data, cached, status, statusText} = await callOpenAiImageApi(`${this.getApiUrl()}${endpoint}`, body, headers, getRequestTimeoutMs()));
15233
15286
  if (status < 200 || status >= 300) return { error: `API error: ${status} ${statusText}\n${typeof data === "string" ? data : JSON.stringify(data)}` };
15234
15287
  } catch (err) {
15235
15288
  logger.error(`API call error: ${String(err)}`);
@@ -15411,7 +15464,7 @@ var OllamaCompletionProvider = class {
15411
15464
  ...getEnvString("OLLAMA_API_KEY") ? { Authorization: `Bearer ${getEnvString("OLLAMA_API_KEY")}` } : {}
15412
15465
  },
15413
15466
  body: JSON.stringify(params)
15414
- }, REQUEST_TIMEOUT_MS$1, "text");
15467
+ }, getRequestTimeoutMs(), "text");
15415
15468
  } catch (err) {
15416
15469
  return { error: `API call error: ${String(err)}. Output:\n${response?.data}` };
15417
15470
  }
@@ -15513,7 +15566,7 @@ var OllamaChatProvider = class {
15513
15566
  ...getEnvString("OLLAMA_API_KEY") ? { Authorization: `Bearer ${getEnvString("OLLAMA_API_KEY")}` } : {}
15514
15567
  },
15515
15568
  body: JSON.stringify(params)
15516
- }, REQUEST_TIMEOUT_MS$1, "text", context?.bustCache ?? context?.debug);
15569
+ }, getRequestTimeoutMs(), "text", context?.bustCache ?? context?.debug);
15517
15570
  } catch (err) {
15518
15571
  return { error: `API call error: ${String(err)}. Output:\n${response?.data}` };
15519
15572
  }
@@ -15581,7 +15634,7 @@ var OllamaEmbeddingProvider = class extends OllamaCompletionProvider {
15581
15634
  ...getEnvString("OLLAMA_API_KEY") ? { Authorization: `Bearer ${getEnvString("OLLAMA_API_KEY")}` } : {}
15582
15635
  },
15583
15636
  body: JSON.stringify(params)
15584
- }, REQUEST_TIMEOUT_MS$1, "json");
15637
+ }, getRequestTimeoutMs(), "json");
15585
15638
  } catch (err) {
15586
15639
  return { error: `API call error: ${String(err)}` };
15587
15640
  }
@@ -15705,7 +15758,7 @@ var OpenAiAssistantProvider = class extends OpenAiGenericProvider {
15705
15758
  organization: this.getOrganization(),
15706
15759
  baseURL: this.getApiUrl(),
15707
15760
  maxRetries: 3,
15708
- timeout: REQUEST_TIMEOUT_MS$1,
15761
+ timeout: getRequestTimeoutMs(),
15709
15762
  defaultHeaders: this.assistantConfig.headers
15710
15763
  });
15711
15764
  const messages = parseChatPrompt(prompt, [{
@@ -17250,7 +17303,7 @@ var OpenRouterProvider = class extends OpenAiChatCompletionProvider {
17250
17303
  ...config.headers
17251
17304
  },
17252
17305
  body: JSON.stringify(body)
17253
- }, REQUEST_TIMEOUT_MS$1, "json", context?.bustCache ?? context?.debug));
17306
+ }, getRequestTimeoutMs(), "json", context?.bustCache ?? context?.debug));
17254
17307
  if (status < 200 || status >= 300) return { error: `API error: ${status} ${statusText}\n${typeof data === "string" ? data : JSON.stringify(data)}` };
17255
17308
  } catch (err) {
17256
17309
  logger.error(`API call error: ${String(err)}`);
@@ -17521,7 +17574,7 @@ var PythonWorker = class {
17521
17574
  maxCrashes = 3;
17522
17575
  pendingRequest = null;
17523
17576
  requestTimeout = null;
17524
- constructor(scriptPath, functionName, pythonPath, timeout = REQUEST_TIMEOUT_MS$1, onReady) {
17577
+ constructor(scriptPath, functionName, pythonPath, timeout = getRequestTimeoutMs(), onReady) {
17525
17578
  this.scriptPath = scriptPath;
17526
17579
  this.functionName = functionName;
17527
17580
  this.pythonPath = pythonPath;
@@ -18225,7 +18278,7 @@ var ReplicateProvider = class {
18225
18278
  Prefer: "wait=60"
18226
18279
  },
18227
18280
  body: JSON.stringify(data)
18228
- }, REQUEST_TIMEOUT_MS$1, "json")).data;
18281
+ }, getRequestTimeoutMs(), "json")).data;
18229
18282
  if (response.status === "starting" || response.status === "processing") response = await this.pollForCompletion(response.id);
18230
18283
  if (response.status === "failed") throw new Error(response.error || "Prediction failed");
18231
18284
  response = response.output;
@@ -18271,7 +18324,7 @@ var ReplicateProvider = class {
18271
18324
  const prediction = (await fetchWithCache(`https://api.replicate.com/v1/predictions/${predictionId}`, {
18272
18325
  method: "GET",
18273
18326
  headers: { Authorization: `Bearer ${this.apiKey}` }
18274
- }, REQUEST_TIMEOUT_MS$1, "json", false)).data;
18327
+ }, getRequestTimeoutMs(), "json", false)).data;
18275
18328
  if (prediction.status === "succeeded" || prediction.status === "failed" || prediction.status === "canceled") return prediction;
18276
18329
  await new Promise((resolve) => setTimeout(resolve, pollInterval));
18277
18330
  }
@@ -18363,7 +18416,7 @@ var ReplicateImageProvider = class extends ReplicateProvider {
18363
18416
  Prefer: "wait=60"
18364
18417
  },
18365
18418
  body: JSON.stringify(data)
18366
- }, REQUEST_TIMEOUT_MS$1, "json")).data;
18419
+ }, getRequestTimeoutMs(), "json")).data;
18367
18420
  logger.debug(`Initial prediction status: ${prediction.status}, ID: ${prediction.id}`);
18368
18421
  if (prediction.status === "starting" || prediction.status === "processing") prediction = await this.pollForCompletion(prediction.id);
18369
18422
  logger.debug("Final Replicate prediction status", {
@@ -18811,7 +18864,7 @@ var SnowflakeCortexProvider = class extends OpenAiChatCompletionProvider {
18811
18864
  ...config.headers
18812
18865
  },
18813
18866
  body: JSON.stringify(body)
18814
- }, REQUEST_TIMEOUT_MS$1, "json", context?.bustCache ?? context?.debug));
18867
+ }, getRequestTimeoutMs(), "json", context?.bustCache ?? context?.debug));
18815
18868
  if (status < 200 || status >= 300) return { error: `API error: ${status} ${statusText}\n${typeof data === "string" ? data : JSON.stringify(data)}` };
18816
18869
  } catch (err) {
18817
18870
  logger.error(`[Snowflake Cortex] API call error: ${String(err)}`);
@@ -19228,7 +19281,6 @@ function createTrueFoundryProvider(providerPath, options = {}) {
19228
19281
  }
19229
19282
  //#endregion
19230
19283
  //#region src/providers/vercel.ts
19231
- const DEFAULT_TIMEOUT_MS = REQUEST_TIMEOUT_MS$1;
19232
19284
  /**
19233
19285
  * Resolves the API key from config, environment variables, or defaults.
19234
19286
  */
@@ -19364,7 +19416,7 @@ var VercelAiProvider = class {
19364
19416
  * Handles streaming API calls using streamText().
19365
19417
  */
19366
19418
  async callApiStreaming(messages) {
19367
- const timeout = this.config.timeout ?? DEFAULT_TIMEOUT_MS;
19419
+ const timeout = this.config.timeout ?? getRequestTimeoutMs();
19368
19420
  const { signal, cleanup } = createTimeoutController(timeout);
19369
19421
  try {
19370
19422
  const gateway = await createGatewayInstance(this.config, this.env);
@@ -19405,7 +19457,7 @@ var VercelAiProvider = class {
19405
19457
  * Handles structured output API calls using generateObject().
19406
19458
  */
19407
19459
  async callApiStructured(messages) {
19408
- const timeout = this.config.timeout ?? DEFAULT_TIMEOUT_MS;
19460
+ const timeout = this.config.timeout ?? getRequestTimeoutMs();
19409
19461
  const { signal, cleanup } = createTimeoutController(timeout);
19410
19462
  try {
19411
19463
  const gateway = await createGatewayInstance(this.config, this.env);
@@ -19481,7 +19533,7 @@ var VercelAiProvider = class {
19481
19533
  * Handles non-streaming API calls using generateText().
19482
19534
  */
19483
19535
  async callApiNonStreaming(messages) {
19484
- const timeout = this.config.timeout ?? DEFAULT_TIMEOUT_MS;
19536
+ const timeout = this.config.timeout ?? getRequestTimeoutMs();
19485
19537
  const { signal, cleanup } = createTimeoutController(timeout);
19486
19538
  try {
19487
19539
  const gateway = await createGatewayInstance(this.config, this.env);
@@ -19559,7 +19611,7 @@ var VercelAiEmbeddingProvider = class {
19559
19611
  }
19560
19612
  }
19561
19613
  }
19562
- const timeout = this.config.timeout ?? DEFAULT_TIMEOUT_MS;
19614
+ const timeout = this.config.timeout ?? getRequestTimeoutMs();
19563
19615
  const { signal, cleanup } = createTimeoutController(timeout);
19564
19616
  try {
19565
19617
  const gateway = await createGatewayInstance(this.config, this.env);
@@ -19650,7 +19702,7 @@ var VoyageEmbeddingProvider = class {
19650
19702
  ...this.config.headers
19651
19703
  },
19652
19704
  body: JSON.stringify(body)
19653
- }, REQUEST_TIMEOUT_MS$1));
19705
+ }, getRequestTimeoutMs()));
19654
19706
  } catch (err) {
19655
19707
  logger.error(`API call error: ${err}`);
19656
19708
  throw err;
@@ -19790,7 +19842,7 @@ function createWatsonXAuthCacheHash(authSelection) {
19790
19842
  }
19791
19843
  async function fetchModelSpecs() {
19792
19844
  try {
19793
- const { data, cached: _cached, latencyMs: _latencyMs } = await fetchWithCache("https://us-south.ml.cloud.ibm.com/ml/v1/foundation_model_specs?version=2023-09-30", { headers: { "Content-Type": "application/json" } }, REQUEST_TIMEOUT_MS$1);
19845
+ const { data, cached: _cached, latencyMs: _latencyMs } = await fetchWithCache("https://us-south.ml.cloud.ibm.com/ml/v1/foundation_model_specs?version=2023-09-30", { headers: { "Content-Type": "application/json" } }, getRequestTimeoutMs());
19794
19846
  return (typeof data === "string" ? JSON.parse(data) : data)?.resources || [];
19795
19847
  } catch (error) {
19796
19848
  logger.error(`Failed to fetch model specs: ${error}`);
@@ -20133,7 +20185,7 @@ var WebhookProvider = class {
20133
20185
  method: "POST",
20134
20186
  headers: { "Content-Type": "application/json" },
20135
20187
  body: JSON.stringify(params)
20136
- }, REQUEST_TIMEOUT_MS$1, "json"));
20188
+ }, getRequestTimeoutMs(), "json"));
20137
20189
  } catch (err) {
20138
20190
  return { error: `Webhook call error: ${String(err)}` };
20139
20191
  }
@@ -20211,7 +20263,7 @@ var WebSocketProvider = class {
20211
20263
  constructor(url, options) {
20212
20264
  this.config = options.config;
20213
20265
  this.url = this.config.url || url;
20214
- this.timeoutMs = this.config.timeoutMs || REQUEST_TIMEOUT_MS$1;
20266
+ this.timeoutMs = this.config.timeoutMs || getRequestTimeoutMs();
20215
20267
  this.transformResponse = createTransformResponse(this.config.transformResponse || this.config.responseParser);
20216
20268
  this.streamResponse = this.config.streamResponse ? createStreamResponse(this.config.streamResponse) : void 0;
20217
20269
  invariant(this.config.messageTemplate, `Expected WebSocket provider ${this.url} to have a config containing {messageTemplate}, but got ${safeJsonStringify(this.config)}`);
@@ -20666,7 +20718,7 @@ var XAIImageProvider = class extends OpenAiImageProvider {
20666
20718
  let cached = false;
20667
20719
  let latencyMs;
20668
20720
  try {
20669
- ({data, cached, status, statusText, latencyMs} = await callOpenAiImageApi(`${this.getApiUrl()}${endpoint}`, body, headers, REQUEST_TIMEOUT_MS$1));
20721
+ ({data, cached, status, statusText, latencyMs} = await callOpenAiImageApi(`${this.getApiUrl()}${endpoint}`, body, headers, getRequestTimeoutMs()));
20670
20722
  if (status < 200 || status >= 300) return { error: `API error: ${status} ${statusText}\n${typeof data === "string" ? data : JSON.stringify(data)}` };
20671
20723
  } catch (err) {
20672
20724
  logger.error(`API call error: ${String(err)}`);
@@ -20839,7 +20891,7 @@ var XAIResponsesProvider = class {
20839
20891
  ...config.headers
20840
20892
  },
20841
20893
  body: JSON.stringify(body)
20842
- }, REQUEST_TIMEOUT_MS$1, "json", context?.bustCache ?? context?.debug, this.config.maxRetries);
20894
+ }, getRequestTimeoutMs(), "json", context?.bustCache ?? context?.debug, this.config.maxRetries);
20843
20895
  data = response.data;
20844
20896
  cached = response.cached;
20845
20897
  status = response.status;
@@ -21619,7 +21671,7 @@ const providerMap = [
21619
21671
  {
21620
21672
  test: (providerPath) => providerPath.startsWith("opencode:") || providerPath === "opencode",
21621
21673
  create: async (providerPath, providerOptions, context) => {
21622
- const { OpenCodeSDKProvider } = await import("./opencode-sdk-B3vlPLsp.js");
21674
+ const { OpenCodeSDKProvider } = await import("./opencode-sdk-2su-bzyz.js");
21623
21675
  return new OpenCodeSDKProvider({
21624
21676
  ...providerOptions,
21625
21677
  id: providerPath,
@@ -21631,14 +21683,14 @@ const providerMap = [
21631
21683
  {
21632
21684
  test: (providerPath) => providerPath.startsWith("openclaw:") || providerPath === "openclaw",
21633
21685
  create: async (providerPath, providerOptions, context) => {
21634
- const { createOpenClawProvider } = await import("./openclaw-BIHlu_36.js");
21686
+ const { createOpenClawProvider } = await import("./openclaw-DRjsDCSS.js");
21635
21687
  return createOpenClawProvider(providerPath, providerOptions, context.env);
21636
21688
  }
21637
21689
  },
21638
21690
  {
21639
21691
  test: (providerPath) => providerPath.startsWith("anthropic:claude-agent-sdk") || providerPath.startsWith("anthropic:claude-code"),
21640
21692
  create: async (_providerPath, providerOptions, _context) => {
21641
- const { ClaudeCodeSDKProvider } = await import("./claude-agent-sdk-BQNp_y-F.js");
21693
+ const { ClaudeCodeSDKProvider } = await import("./claude-agent-sdk-DHyrhDUu.js");
21642
21694
  return new ClaudeCodeSDKProvider({ ...providerOptions });
21643
21695
  }
21644
21696
  },
@@ -21694,25 +21746,25 @@ const providerMap = [
21694
21746
  const modelName = splits.slice(2).join(":");
21695
21747
  if (modelType === "converse") return new AwsBedrockConverseProvider(modelName, providerOptions);
21696
21748
  if (modelType === "nova-sonic" || modelType.includes("amazon.nova-sonic")) {
21697
- const { NovaSonicProvider } = await import("./nova-sonic-ChPlh5na.js");
21749
+ const { NovaSonicProvider } = await import("./nova-sonic-kzIVxZDb.js");
21698
21750
  return new NovaSonicProvider("amazon.nova-sonic-v1:0", providerOptions);
21699
21751
  }
21700
21752
  if (modelType.includes("luma.ray") || modelName.includes("luma.ray")) {
21701
- const { LumaRayVideoProvider } = await import("./luma-ray-BMX1iEB6.js");
21753
+ const { LumaRayVideoProvider } = await import("./luma-ray-CD7rd6KW.js");
21702
21754
  return new LumaRayVideoProvider(modelName.includes("luma.ray") ? modelName : splits.slice(1).join(":") || "luma.ray-v2:0", providerOptions);
21703
21755
  }
21704
21756
  if (modelType.includes("amazon.nova-reel") || modelType === "video" && (modelName.includes("amazon.nova-reel") || modelName === "")) {
21705
- const { NovaReelVideoProvider } = await import("./nova-reel-C4eUJGse.js");
21757
+ const { NovaReelVideoProvider } = await import("./nova-reel-DItvBa6z.js");
21706
21758
  return new NovaReelVideoProvider(modelName || "amazon.nova-reel-v1:1", providerOptions);
21707
21759
  }
21708
21760
  if (modelType === "agents") {
21709
- const { AwsBedrockAgentsProvider } = await import("./agents-CBgJvRkB.js");
21761
+ const { AwsBedrockAgentsProvider } = await import("./agents-Bb00M6i5.js");
21710
21762
  return new AwsBedrockAgentsProvider(modelName, providerOptions);
21711
21763
  }
21712
21764
  if (modelType === "completion") return new AwsBedrockCompletionProvider(modelName, providerOptions);
21713
21765
  if (modelType === "embeddings" || modelType === "embedding") return new AwsBedrockEmbeddingProvider(modelName, providerOptions);
21714
21766
  if (modelType === "kb" || modelType === "knowledge-base") {
21715
- const { AwsBedrockKnowledgeBaseProvider } = await import("./knowledgeBase-Bi_8sV-H.js");
21767
+ const { AwsBedrockKnowledgeBaseProvider } = await import("./knowledgeBase-BzfBwPyQ.js");
21716
21768
  return new AwsBedrockKnowledgeBaseProvider(modelName, providerOptions);
21717
21769
  }
21718
21770
  return new AwsBedrockCompletionProvider(splits.slice(1).join(":"), providerOptions);
@@ -21722,7 +21774,7 @@ const providerMap = [
21722
21774
  test: (providerPath) => providerPath.startsWith("bedrock-agent:"),
21723
21775
  create: async (providerPath, providerOptions, _context) => {
21724
21776
  const agentId = providerPath.substring(14);
21725
- const { AwsBedrockAgentsProvider } = await import("./agents-CBgJvRkB.js");
21777
+ const { AwsBedrockAgentsProvider } = await import("./agents-Bb00M6i5.js");
21726
21778
  return new AwsBedrockAgentsProvider(agentId, providerOptions);
21727
21779
  }
21728
21780
  },
@@ -21732,7 +21784,7 @@ const providerMap = [
21732
21784
  const splits = providerPath.split(":");
21733
21785
  const modelType = splits[1];
21734
21786
  const endpointName = splits.slice(2).join(":");
21735
- const { SageMakerCompletionProvider, SageMakerEmbeddingProvider } = await import("./sagemaker-CujrzP1a.js");
21787
+ const { SageMakerCompletionProvider, SageMakerEmbeddingProvider } = await import("./sagemaker-PgIzjxMt.js");
21736
21788
  if (modelType === "embedding" || modelType === "embeddings") return new SageMakerEmbeddingProvider(endpointName || modelType, providerOptions);
21737
21789
  if (splits.length === 2) return new SageMakerCompletionProvider(modelType, providerOptions);
21738
21790
  if (endpointName.includes("jumpstart") || modelType === "jumpstart") return new SageMakerCompletionProvider(endpointName, {
@@ -21773,7 +21825,7 @@ const providerMap = [
21773
21825
  {
21774
21826
  test: (providerPath) => providerPath.startsWith("cloudflare-ai:"),
21775
21827
  create: async (providerPath, providerOptions, context) => {
21776
- const { createCloudflareAiProvider } = await import("./cloudflare-ai-r4tbYmWU.js");
21828
+ const { createCloudflareAiProvider } = await import("./cloudflare-ai-DDmTDys_.js");
21777
21829
  return createCloudflareAiProvider(providerPath, {
21778
21830
  ...providerOptions,
21779
21831
  env: context.env
@@ -21783,7 +21835,7 @@ const providerMap = [
21783
21835
  {
21784
21836
  test: (providerPath) => providerPath.startsWith("cloudflare-gateway:"),
21785
21837
  create: async (providerPath, providerOptions, context) => {
21786
- const { createCloudflareGatewayProvider } = await import("./cloudflare-gateway-BCkLouto.js");
21838
+ const { createCloudflareGatewayProvider } = await import("./cloudflare-gateway-D5fm-QvC.js");
21787
21839
  return createCloudflareGatewayProvider(providerPath, {
21788
21840
  ...providerOptions,
21789
21841
  env: context.env
@@ -21935,27 +21987,27 @@ const providerMap = [
21935
21987
  create: async (providerPath, providerOptions, context) => {
21936
21988
  const modelType = providerPath.split(":")[1];
21937
21989
  if (modelType === "image") {
21938
- const { createHyperbolicImageProvider } = await import("./image-QzmydkiG.js");
21990
+ const { createHyperbolicImageProvider } = await import("./image-DXbwwL-r.js");
21939
21991
  return createHyperbolicImageProvider(providerPath, {
21940
21992
  ...providerOptions,
21941
21993
  env: context.env
21942
21994
  });
21943
21995
  }
21944
21996
  if (modelType === "audio") {
21945
- const { createHyperbolicAudioProvider } = await import("./audio-CPMtV1yR.js");
21997
+ const { createHyperbolicAudioProvider } = await import("./audio-Cslbgd4l.js");
21946
21998
  return createHyperbolicAudioProvider(providerPath, {
21947
21999
  ...providerOptions,
21948
22000
  env: context.env
21949
22001
  });
21950
22002
  }
21951
- const { createHyperbolicProvider } = await import("./chat-TP8Qifkh.js");
22003
+ const { createHyperbolicProvider } = await import("./chat-CZOhFlzV.js");
21952
22004
  return createHyperbolicProvider(providerPath, providerOptions);
21953
22005
  }
21954
22006
  },
21955
22007
  {
21956
22008
  test: (providerPath) => providerPath.startsWith("litellm:"),
21957
22009
  create: async (providerPath, providerOptions, context) => {
21958
- const { createLiteLLMProvider } = await import("./litellm-BKBo0jpC.js");
22010
+ const { createLiteLLMProvider } = await import("./litellm-Ch4E-r4b.js");
21959
22011
  return createLiteLLMProvider(providerPath, {
21960
22012
  config: providerOptions,
21961
22013
  env: context.env
@@ -22012,7 +22064,7 @@ const providerMap = [
22012
22064
  const modelName = splits.slice(2).join(":");
22013
22065
  const configuredModel = getConfiguredOpenAiModel(providerOptions);
22014
22066
  if (modelType === "codex-app-server" || modelType === "codex-desktop") {
22015
- const { OpenAICodexAppServerProvider } = await import("./codex-app-server-DIXZ230V.js");
22067
+ const { OpenAICodexAppServerProvider } = await import("./codex-app-server-BG5Aphvl.js");
22016
22068
  const codexModel = modelName || configuredModel;
22017
22069
  const codexProviderId = providerOptions.id ?? providerPath;
22018
22070
  return new OpenAICodexAppServerProvider({
@@ -22029,7 +22081,7 @@ const providerMap = [
22029
22081
  });
22030
22082
  }
22031
22083
  if (modelType === "codex-sdk" || modelType === "codex") {
22032
- const { OpenAICodexSDKProvider } = await import("./codex-sdk-CmQABzV3.js").then((n) => n.n);
22084
+ const { OpenAICodexSDKProvider } = await import("./codex-sdk-D86dT4XV.js").then((n) => n.n);
22033
22085
  const codexModel = modelName || configuredModel;
22034
22086
  const codexProviderId = providerOptions.id ?? providerPath;
22035
22087
  return new OpenAICodexSDKProvider({
@@ -22049,7 +22101,7 @@ const providerMap = [
22049
22101
  if (modelType === "realtime") return new OpenAiRealtimeProvider(modelName || configuredModel || "gpt-4o-realtime-preview-2024-12-17", providerOptions);
22050
22102
  if (modelType === "responses") return new OpenAiResponsesProvider(modelName || configuredModel || "gpt-4.1-2025-04-14", providerOptions);
22051
22103
  if (modelType === "transcription") {
22052
- const { OpenAiTranscriptionProvider } = await import("./transcription-Dkd22_4K.js");
22104
+ const { OpenAiTranscriptionProvider } = await import("./transcription-CmlDorqD.js");
22053
22105
  return new OpenAiTranscriptionProvider(modelName || configuredModel || "gpt-4o-transcribe-diarize", providerOptions);
22054
22106
  }
22055
22107
  if (OpenAiChatCompletionProvider.OPENAI_CHAT_MODEL_NAMES.includes(modelType)) return new OpenAiChatCompletionProvider(modelType, providerOptions);
@@ -22057,11 +22109,11 @@ const providerMap = [
22057
22109
  if (OpenAiRealtimeProvider.OPENAI_REALTIME_MODEL_NAMES.includes(modelType)) return new OpenAiRealtimeProvider(modelType, providerOptions);
22058
22110
  if (OpenAiResponsesProvider.OPENAI_RESPONSES_MODEL_NAMES.includes(modelType)) return new OpenAiResponsesProvider(modelType, providerOptions);
22059
22111
  if (modelType === "agents") {
22060
- const { OpenAiAgentsProvider } = await import("./agents-QGg76OF-.js");
22112
+ const { OpenAiAgentsProvider } = await import("./agents-CZOHU7Q8.js");
22061
22113
  return new OpenAiAgentsProvider(modelName || "default-agent", providerOptions);
22062
22114
  }
22063
22115
  if (modelType === "chatkit") {
22064
- const { OpenAiChatKitProvider } = await import("./chatkit-lb6FK02w.js");
22116
+ const { OpenAiChatKitProvider } = await import("./chatkit-55cAEQb2.js");
22065
22117
  return new OpenAiChatKitProvider(modelName || "", providerOptions);
22066
22118
  }
22067
22119
  if (modelType === "assistant") return new OpenAiAssistantProvider(modelName, providerOptions);
@@ -22104,7 +22156,7 @@ const providerMap = [
22104
22156
  {
22105
22157
  test: (providerPath) => providerPath.startsWith("quiverai:"),
22106
22158
  create: async (providerPath, providerOptions, context) => {
22107
- const { createQuiverAiProvider } = await import("./quiverai-Cv7rJKDz.js");
22159
+ const { createQuiverAiProvider } = await import("./quiverai-BG7dvOQc.js");
22108
22160
  return createQuiverAiProvider(providerPath, providerOptions, context.env);
22109
22161
  }
22110
22162
  },
@@ -22122,7 +22174,7 @@ const providerMap = [
22122
22174
  {
22123
22175
  test: (providerPath) => providerPath.startsWith("modelslab:"),
22124
22176
  create: async (providerPath, providerOptions, context) => {
22125
- const { ModelsLabImageProvider } = await import("./modelslab-Cogmu4mG.js");
22177
+ const { ModelsLabImageProvider } = await import("./modelslab-CJ0zQdDH.js");
22126
22178
  const splits = providerPath.split(":");
22127
22179
  const modelType = splits[1];
22128
22180
  const modelName = splits.slice(2).join(":");
@@ -22166,7 +22218,7 @@ const providerMap = [
22166
22218
  {
22167
22219
  test: (providerPath) => providerPath.startsWith("aimlapi:"),
22168
22220
  create: async (providerPath, providerOptions, context) => {
22169
- const { createAimlApiProvider } = await import("./aimlapi-CJEbQ0o6.js");
22221
+ const { createAimlApiProvider } = await import("./aimlapi-Dc3LW5zI.js");
22170
22222
  return createAimlApiProvider(providerPath, {
22171
22223
  ...providerOptions,
22172
22224
  env: context.env
@@ -22176,7 +22228,7 @@ const providerMap = [
22176
22228
  {
22177
22229
  test: (providerPath) => providerPath.startsWith("cometapi:"),
22178
22230
  create: async (providerPath, providerOptions, context) => {
22179
- const { createCometApiProvider } = await import("./cometapi-OBILPLlu.js");
22231
+ const { createCometApiProvider } = await import("./cometapi-gvPhrXNM.js");
22180
22232
  return createCometApiProvider(providerPath, {
22181
22233
  ...providerOptions,
22182
22234
  env: context.env
@@ -22186,7 +22238,7 @@ const providerMap = [
22186
22238
  {
22187
22239
  test: (providerPath) => providerPath.startsWith("docker:"),
22188
22240
  create: async (providerPath, providerOptions, context) => {
22189
- const { createDockerProvider } = await import("./docker-4D1eL6Gq.js");
22241
+ const { createDockerProvider } = await import("./docker-ChD4-eri.js");
22190
22242
  return createDockerProvider(providerPath, {
22191
22243
  ...providerOptions,
22192
22244
  env: context.env
@@ -22415,7 +22467,7 @@ Example: transformers:feature-extraction:Xenova/all-MiniLM-L6-v2`);
22415
22467
  test: (providerPath) => providerPath === "slack" || providerPath.startsWith("slack:"),
22416
22468
  create: async (providerPath, providerOptions, _context) => {
22417
22469
  try {
22418
- const { SlackProvider } = await import("./slack-Bapo-7_8.js");
22470
+ const { SlackProvider } = await import("./slack-CWxUAo6N.js");
22419
22471
  if (providerPath === "slack") return new SlackProvider(providerOptions);
22420
22472
  const splits = providerPath.split(":");
22421
22473
  if (splits.length < 2) throw new Error("Invalid Slack provider path. Use slack:<channel_id> or slack:channel:<channel_id>");
@@ -22458,7 +22510,7 @@ function isRedteamProviderPath(providerPath) {
22458
22510
  const providerFamilies = [{
22459
22511
  canHandle: isRedteamProviderPath,
22460
22512
  factories: async () => {
22461
- const { redteamProviderFactories } = await import("./registry-BUJrgjwv.js");
22513
+ const { redteamProviderFactories } = await import("./registry-BKlwRYvr.js");
22462
22514
  return redteamProviderFactories;
22463
22515
  }
22464
22516
  }];
@@ -22738,4 +22790,4 @@ function getProviderIds(providerPaths) {
22738
22790
  //#endregion
22739
22791
  export { DefaultLlmRubricProvider as C, AzureEmbeddingProvider as D, AzureModerationProvider as E, AzureChatCompletionProvider as O, DefaultGradingProvider$1 as S, DefaultSynthesizeProvider as T, DefaultEmbeddingProvider as _, resolveProvider as a, AIStudioChatProvider as b, parseScriptParts as c, createTransformRequest as d, createTransformResponse$1 as f, MistralEmbeddingProvider as g, MistralChatCompletionProvider as h, providers_exports as i, MCPProvider as l, OpenAiModerationProvider as m, loadApiProvider as n, resolveProviderConfigs as o, GoogleLiveProvider as p, loadApiProviders as r, getFileHashes as s, getProviderIds as t, HttpProvider as u, DefaultGradingProvider as v, DefaultSuggestionsProvider as w, DefaultGradingJsonProvider as x, VertexChatProvider as y };
22740
22792
 
22741
- //# sourceMappingURL=providers-BCCz6_IX.js.map
22793
+ //# sourceMappingURL=providers-DDLQc0tl.js.map