promptfoo 0.120.25 → 0.120.26

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 (237) hide show
  1. package/README.md +35 -22
  2. package/dist/src/{ListApp-CYTAaS6A.js → ListApp-D3DG0F8h.js} +1 -1
  3. package/dist/src/{accounts-CwqY22lU.cjs → accounts-BzEY8H3v.cjs} +4 -4
  4. package/dist/src/{accounts-Bzx8GnL6.js → accounts-DHHiXsy6.js} +5 -5
  5. package/dist/src/{accounts-BSwMxhY3.js → accounts-R3gfCR_g.js} +4 -4
  6. package/dist/src/{agentic-utils-5K7LzooV.js → agentic-utils-D6_gzOUF.js} +2 -2
  7. package/dist/src/{agents-B8RWrA68.cjs → agents-C7BiinFI.cjs} +6 -6
  8. package/dist/src/{agents-zHyWnnQ2.js → agents-Cao4i7AX.js} +7 -7
  9. package/dist/src/{agents-KZxXwlyn.cjs → agents-CwM7re15.cjs} +2 -2
  10. package/dist/src/{agents-DleC7rb4.js → agents-DETIQHqF.js} +6 -6
  11. package/dist/src/{agents-CkA9l77-.js → agents-DYIT-hQy.js} +5 -5
  12. package/dist/src/{agents-B20gl7hH.js → agents-GiUianme.js} +2 -2
  13. package/dist/src/{aimlapi-DgbFGPTX.js → aimlapi-CMJpKK-B.js} +9 -9
  14. package/dist/src/{aimlapi-DILJovhN.js → aimlapi-DMF6v_vb.js} +14 -14
  15. package/dist/src/{aimlapi-DIdWBHtH.cjs → aimlapi-DoGLcQW_.cjs} +9 -9
  16. package/dist/src/app/assets/index-BOgkICuY.css +1 -0
  17. package/dist/src/app/assets/index-CSgqn_Vd.js +428 -0
  18. package/dist/src/app/assets/{vendor-charts-DnwydkkY.js → vendor-charts-CYyo8R8v.js} +1 -1
  19. package/dist/src/app/assets/{vendor-markdown-DjKAU15k.js → vendor-markdown-DSmzq4Jh.js} +1 -1
  20. package/dist/src/app/assets/vendor-react-AtKqiNEf.js +4 -0
  21. package/dist/src/app/assets/{vendor-syntax-Dc86c4Bu.js → vendor-syntax-D06x6TQF.js} +1 -1
  22. package/dist/src/app/index.html +6 -6
  23. package/dist/src/app/tsconfig.app.tsbuildinfo +1 -1
  24. package/dist/src/{audio-BoR9KZV8.cjs → audio-BWjyvHn9.cjs} +3 -3
  25. package/dist/src/{audio-nUSOpXY7.js → audio-BrJBFN2b.js} +3 -3
  26. package/dist/src/{audio-BDrAkpVc.js → audio-DUH4q0Xq.js} +4 -4
  27. package/dist/src/{base-DumUXbOH.js → base-BaXmtXYp.js} +2 -2
  28. package/dist/src/{base-CwCV0t8r.js → base-Dtp8b4_N.js} +2 -2
  29. package/dist/src/{base-D8VQYhNQ.cjs → base-f71xxWai.cjs} +2 -2
  30. package/dist/src/{blobs-_kNRY6vU.cjs → blobs-673H0jCl.cjs} +2 -2
  31. package/dist/src/{blobs-Dnt2rxpc.js → blobs-C9J2mVgo.js} +2 -2
  32. package/dist/src/{blobs-DlB5fwyF.js → blobs-kt8v3UyH.js} +2 -2
  33. package/dist/src/{cache-S9MAoF9H.cjs → cache-7xULbvt3.cjs} +34 -7
  34. package/dist/src/{cache-C4A4H4Xb.js → cache-BLLayYEN.js} +23 -8
  35. package/dist/src/{cache-B2oIvf92.js → cache-BUPcq0Ad.js} +2 -2
  36. package/dist/src/cache-CVfRb-HD.cjs +6 -0
  37. package/dist/src/{cache-DofebEnH.js → cache-O4EuX2JV.js} +3 -3
  38. package/dist/src/{cache-Bg1Wpvzq.js → cache-mIszOnuz.js} +4 -21
  39. package/dist/src/{chat-DTCPbuld.cjs → chat-C4zqjObh.cjs} +6 -6
  40. package/dist/src/{chat-noXtEAh5.js → chat-C8Ei4f87.js} +6 -6
  41. package/dist/src/{chat-BiImdLJf.js → chat-CgyGj2hC.js} +8 -8
  42. package/dist/src/{chat-DQ6Z5Cbn.js → chat-Cpz3O-Xl.js} +13 -13
  43. package/dist/src/{chat-D_cro0wd.js → chat-DIywASPG.js} +10 -10
  44. package/dist/src/{chat-BR2x1dG_.cjs → chat-Fl6TZJRS.cjs} +8 -8
  45. package/dist/src/{chatkit-TnC1YoVi.js → chatkit-DEls11hE.js} +3 -3
  46. package/dist/src/{claude-agent-sdk-CBpAZV5h.js → claude-agent-sdk-6-xTaLwM.js} +45 -16
  47. package/dist/src/{claude-agent-sdk-uHLgAUZj.cjs → claude-agent-sdk-BzxF6NIJ.cjs} +45 -16
  48. package/dist/src/{claude-agent-sdk-qxE5mGVi.js → claude-agent-sdk-CmkTnKGH.js} +48 -19
  49. package/dist/src/{claude-agent-sdk-DyPvrj-1.js → claude-agent-sdk-rXCBLK_o.js} +38 -9
  50. package/dist/src/{cloud-lRosK6Nk.js → cloud-BMbRVJFw.js} +2 -2
  51. package/dist/src/{cloud-DHWE-9nj.js → cloud-CZ4hytdm.js} +1 -1
  52. package/dist/src/{cloudflare-ai-D0OtFY6g.cjs → cloudflare-ai-BAQ0u_dg.cjs} +9 -9
  53. package/dist/src/{cloudflare-ai-BprwSD6d.js → cloudflare-ai-CUg4BTcj.js} +9 -9
  54. package/dist/src/{cloudflare-ai-CB7OWRAP.js → cloudflare-ai-CobxMTR4.js} +14 -14
  55. package/dist/src/{cloudflare-gateway-C29gWj5O.cjs → cloudflare-gateway-C0sgfr_z.cjs} +10 -10
  56. package/dist/src/{cloudflare-gateway-BaVwoBjE.js → cloudflare-gateway-D2_yi-Fh.js} +15 -15
  57. package/dist/src/{cloudflare-gateway-BjoxwqUw.js → cloudflare-gateway-_itGuXry.js} +10 -10
  58. package/dist/src/{codex-sdk-DNkCbb7c.js → codex-sdk-dSnGdgIp.js} +3 -3
  59. package/dist/src/{cometapi-BGxGZ7VA.js → cometapi-B01btbfb.js} +15 -15
  60. package/dist/src/{cometapi-xiTQZp8R.js → cometapi-ChAaRjg5.js} +10 -10
  61. package/dist/src/{cometapi-DalITP94.cjs → cometapi-JbvOJSCO.cjs} +10 -10
  62. package/dist/src/{completion-BTbouQDz.js → completion-BBJ6zmG3.js} +5 -5
  63. package/dist/src/{completion-HYrX5gEL.js → completion-D9_MDlnd.js} +4 -4
  64. package/dist/src/{completion-DV0Ys99K.cjs → completion-DDyL3Cb2.cjs} +4 -4
  65. package/dist/src/{docker-Dx_FN1ag.js → docker-BuButc4D.js} +14 -14
  66. package/dist/src/{docker-zUAnbYTM.cjs → docker-Ckw-j7Rr.cjs} +9 -9
  67. package/dist/src/{docker-BAYnlbAW.js → docker-JAAubMw3.js} +9 -9
  68. package/dist/src/errors-DnGCbnx8.js +36 -0
  69. package/dist/src/{esm-79BpbQzg.js → esm-CYhseqj4.js} +1 -1
  70. package/dist/src/eval-CKHWqG9f.js +16 -0
  71. package/dist/src/{eval-Cxb9alW8.js → eval-CYrbG57o.js} +45 -13
  72. package/dist/src/{evalResult-B8LbgWMA.js → evalResult-6JaUIStC.js} +6 -6
  73. package/dist/src/{evalResult-CJNSpa3q.js → evalResult-COsVttMA.js} +6 -6
  74. package/dist/src/evalResult-CxTP-LMm.cjs +11 -0
  75. package/dist/src/evalResult-CzLURDcP.js +13 -0
  76. package/dist/src/{evalResult-hI1mhi_g.cjs → evalResult-DlRfu_Rq.cjs} +6 -6
  77. package/dist/src/evalResult-DyttNQ_G.js +11 -0
  78. package/dist/src/evaluator-0PvfeBYh.js +38 -0
  79. package/dist/src/{evaluator-1Tkdu8MK.js → evaluator-3EJCMTs0.js} +74 -48
  80. package/dist/src/{extractor-BPBlLyOn.cjs → extractor-DbhlYEeo.cjs} +22 -5
  81. package/dist/src/{extractor-CuUWqwrE.js → extractor-Hs7la_19.js} +22 -5
  82. package/dist/src/{extractor-BFoThUOa.js → extractor-LSYjrhK0.js} +22 -5
  83. package/dist/src/{fetch-zJuFPxN1.js → fetch-18MuNu9i.js} +4 -4
  84. package/dist/src/{fetch-BdiCecAv.js → fetch-Bi0o-fdp.js} +1 -1
  85. package/dist/src/fetch-CMptBDVg.cjs +4 -0
  86. package/dist/src/{fetch-BQgz6x7S.js → fetch-DAZkv3gV.js} +2 -2
  87. package/dist/src/{fetch-BuP-gm0E.js → fetch-SRsE6Ctl.js} +4 -4
  88. package/dist/src/{fetch-Dy2YML9G.cjs → fetch-ZMn_oemb.cjs} +4 -4
  89. package/dist/src/{fileExtensions-CzcPkiKZ.js → fileExtensions-BpuMmaFL.js} +1 -1
  90. package/dist/src/{formatDuration-CGa0ZDQ8.js → formatDuration-Doo0xq-z.js} +1 -1
  91. package/dist/src/{genaiTracer-foKtbVa2.js → genaiTracer-CqNnnXrE.js} +1 -1
  92. package/dist/src/graders-BCytzXrb.js +34 -0
  93. package/dist/src/{graders-DMAzEgEF.js → graders-BaMCwIKp.js} +211 -91
  94. package/dist/src/graders-CGZQShfJ.cjs +33 -0
  95. package/dist/src/{graders-NBsuYeMx.cjs → graders-DzUUnUjC.cjs} +206 -86
  96. package/dist/src/{graders-CtvuaC8D.js → graders-QsALpIdy.js} +206 -86
  97. package/dist/src/graders-spkuVC-E.js +36 -0
  98. package/dist/src/{image-Bf8RiJ2g.js → image-BXt_7u0v.js} +3 -3
  99. package/dist/src/{image-LhLO5KCW.js → image-BiEVdpdP.js} +4 -4
  100. package/dist/src/{image-CaVWfZub.cjs → image-C3BjJUAU.cjs} +4 -4
  101. package/dist/src/{image-BnF25Osq.cjs → image-D10zEe1f.cjs} +3 -3
  102. package/dist/src/{image-DIn_AW1Z.js → image-DB4sHxdJ.js} +4 -4
  103. package/dist/src/{image-DFwp1aAV.js → image-mhAGP07h.js} +6 -6
  104. package/dist/src/index.cjs +152 -69
  105. package/dist/src/index.d.cts +20 -3
  106. package/dist/src/index.d.ts +20 -3
  107. package/dist/src/index.js +152 -69
  108. package/dist/src/{interactiveCheck-Dmm9vjpx.js → interactiveCheck-DU-MAhp5.js} +1 -1
  109. package/dist/src/{knowledgeBase-Bf57PI7g.cjs → knowledgeBase-Bnb00xKs.cjs} +6 -6
  110. package/dist/src/{knowledgeBase-DZw2L9kf.js → knowledgeBase-CMvMlLZR.js} +8 -8
  111. package/dist/src/{knowledgeBase-CfOvyF2s.js → knowledgeBase-XJQ0Qyez.js} +6 -6
  112. package/dist/src/{litellm-Ds8YmO1b.js → litellm-BECdjOTx.js} +3 -3
  113. package/dist/src/{litellm-ByNRN2Vh.cjs → litellm-BrnZhMcL.cjs} +11 -11
  114. package/dist/src/{litellm-fU-xV6T4.js → litellm-CHrRmPAe.js} +16 -16
  115. package/dist/src/{litellm-DexU8FFp.js → litellm-CrLJrPIm.js} +11 -11
  116. package/dist/src/{luma-ray-y26EHFO8.js → luma-ray-BOeX-h0M.js} +8 -8
  117. package/dist/src/{luma-ray-BIe5ctI4.cjs → luma-ray-C0RkI3lt.cjs} +8 -8
  118. package/dist/src/{luma-ray-vvE-O9EA.js → luma-ray-DgKLS0BF.js} +10 -10
  119. package/dist/src/main.js +1011 -404
  120. package/dist/src/{messages-Bg2ekFPc.js → messages-CDZYGNlS.js} +7 -7
  121. package/dist/src/{messages-DpoCLD_8.js → messages-D61tPFQo.js} +9 -9
  122. package/dist/src/{messages-16jb9LP7.cjs → messages-DXV3Qh8_.cjs} +7 -7
  123. package/dist/src/{meteor-DLCdreag.js → meteor-P2rUE-Uz.js} +1 -1
  124. package/dist/src/{nova-reel-BM0snD2m.js → nova-reel-Bk5npr2q.js} +10 -10
  125. package/dist/src/{nova-reel-CvXCVn3f.cjs → nova-reel-D9FXq3Mt.cjs} +8 -8
  126. package/dist/src/{nova-reel-CJLpBKSI.js → nova-reel-DtCjbD5O.js} +8 -8
  127. package/dist/src/{nova-sonic-CklvraBd.js → nova-sonic-BXRfQyF-.js} +7 -7
  128. package/dist/src/{nova-sonic-DEx_FdFW.cjs → nova-sonic-BoRSY_U6.cjs} +5 -5
  129. package/dist/src/{nova-sonic-Cjh_qopr.js → nova-sonic-CgaWLDM1.js} +5 -5
  130. package/dist/src/{openai-jNIREoAW.js → openai-CT5fwbve.js} +1 -1
  131. package/dist/src/{openclaw-CnAwBfPO.js → openclaw-B6XY2kUf.js} +14 -14
  132. package/dist/src/{openclaw-DBSSY4SP.js → openclaw-CpPrXwf6.js} +9 -9
  133. package/dist/src/{openclaw-CbHtt3B8.cjs → openclaw-DDSfq5fp.cjs} +9 -9
  134. package/dist/src/{opencode-sdk-CqxTHrk0.js → opencode-sdk-CImWVqy9.js} +6 -6
  135. package/dist/src/{opencode-sdk-xUrRk5Jx.js → opencode-sdk-CuCztr4P.js} +4 -4
  136. package/dist/src/{opencode-sdk-DdmtRB6D.cjs → opencode-sdk-mqF-Oj3f.cjs} +4 -4
  137. package/dist/src/{otlpReceiver-th2zHwjZ.cjs → otlpReceiver-B6Xo4KZM.cjs} +4 -4
  138. package/dist/src/{otlpReceiver-uytrRKdo.js → otlpReceiver-BO0rbDzh.js} +4 -4
  139. package/dist/src/{otlpReceiver-C-1cdVDr.js → otlpReceiver-Dg817agV.js} +5 -5
  140. package/dist/src/{providerRegistry-DAZoFmGv.js → providerRegistry-Xf0qdqGQ.js} +1 -1
  141. package/dist/src/providers-BMZZmPBJ.cjs +32 -0
  142. package/dist/src/{providers-CpUrPa8s.cjs → providers-BNKVY53V.cjs} +94 -64
  143. package/dist/src/{providers-D3lk_R7Q.js → providers-BiNq_Iyc.js} +94 -64
  144. package/dist/src/{providers-BOvl9qv5.js → providers-BlEhY5mi.js} +110 -79
  145. package/dist/src/providers-CQQrNaJk.js +32 -0
  146. package/dist/src/providers-Ck8HyrC-.js +34 -0
  147. package/dist/src/{pythonUtils-CUPlf1H0.js → pythonUtils-r1uBuA0n.js} +2 -2
  148. package/dist/src/{quiverai-BNGJOQym.cjs → quiverai-BNfIwKCO.cjs} +8 -8
  149. package/dist/src/{quiverai-Y7Is4wah.js → quiverai-BQigKdIH.js} +13 -13
  150. package/dist/src/{quiverai-DthRqZs9.js → quiverai-Bfy2WnE2.js} +8 -8
  151. package/dist/src/{render-kFatbqG6.js → render-CAZvKKkB.js} +3 -3
  152. package/dist/src/{responses-BtU_i-R0.js → responses-DLLjADw5.js} +5 -5
  153. package/dist/src/{responses-B85halqh.js → responses-TsdODUpm.js} +8 -8
  154. package/dist/src/{responses-CXJACENh.cjs → responses-zOtKtnY_.cjs} +5 -5
  155. package/dist/src/{rubyUtils-DYKoa7Ze.js → rubyUtils-BtjlqyXt.js} +2 -2
  156. package/dist/src/{rubyUtils-BA4D4gMX.js → rubyUtils-D7--T12C.js} +2 -2
  157. package/dist/src/{sagemaker-hRS_Jj3-.js → sagemaker-BcgLu0U4.js} +17 -17
  158. package/dist/src/{sagemaker-DI6IOTjT.js → sagemaker-CLdUAv5z.js} +11 -11
  159. package/dist/src/{sagemaker-BUagsrJ-.cjs → sagemaker-DwNnEVYt.cjs} +11 -11
  160. package/dist/src/{scanner-C6QXA9Pn.js → scanner-Dyw21Wg_.js} +10 -10
  161. package/dist/src/server/index.js +1376 -486
  162. package/dist/src/server-BUbS0Qfh.js +6 -0
  163. package/dist/src/{server-BPC37wlX.js → server-CbMTRQkg.js} +3 -3
  164. package/dist/src/{server-C_O6-VE4.cjs → server-CgUQ25qW.cjs} +3 -3
  165. package/dist/src/{server-HQtz_gUy.js → server-DWmZLfCy.js} +4 -4
  166. package/dist/src/server-XpGXFHkS.cjs +6 -0
  167. package/dist/src/server-gfOx5Zrk.js +8 -0
  168. package/dist/src/{signal-D4VhSJOY.js → signal-Bl32q42d.js} +2 -2
  169. package/dist/src/{slack-DTUSadx4.js → slack-BfdBx2tO.js} +1 -1
  170. package/dist/src/{store-BTdkdmK9.js → store-2ocbYY9D.js} +2 -2
  171. package/dist/src/store-5u2yriTV.js +7 -0
  172. package/dist/src/{store-F-KTiqfb.cjs → store-BqwfFEyF.cjs} +2 -2
  173. package/dist/src/{store-rueRdzcm.js → store-D4gdn9ih.js} +2 -2
  174. package/dist/src/store-D_lq_8oQ.js +6 -0
  175. package/dist/src/store-m5KT6Ly7.cjs +6 -0
  176. package/dist/src/{tables-w-r-abWq.cjs → tables-B9E1kRp-.cjs} +2 -2
  177. package/dist/src/{tables-ChjAuVAR.js → tables-C7TT2XVn.js} +2 -2
  178. package/dist/src/{tables-dNaVPyDr.js → tables-D-NSwNIb.js} +2 -2
  179. package/dist/src/telemetry-5RHFoCJh.js +6 -0
  180. package/dist/src/{telemetry-wXyCQ1Nz.js → telemetry-BXyVqyAg.js} +3 -3
  181. package/dist/src/{telemetry-Y1esJM0v.cjs → telemetry-D0_yFdtU.cjs} +3 -3
  182. package/dist/src/{telemetry-Dai7PdlR.js → telemetry-DZ_7PaVq.js} +3 -3
  183. package/dist/src/telemetry-Do8wMnA-.js +8 -0
  184. package/dist/src/telemetry-LojxPoFq.cjs +6 -0
  185. package/dist/src/{text-C1cXk9ij.js → text-DgMr_tiM.js} +1 -1
  186. package/dist/src/{tokenUsageUtils-D2ko2eFQ.js → tokenUsageUtils-DmZSD2eU.js} +1 -1
  187. package/dist/src/{transcription-i6EfSMie.js → transcription-CYuY5sFO.js} +6 -6
  188. package/dist/src/{transcription-CcYTL4wi.js → transcription-Ch7S-LWw.js} +10 -10
  189. package/dist/src/{transcription-C-K2hDJX.cjs → transcription-FNIz3YOe.cjs} +6 -6
  190. package/dist/src/{transform-gpzlPrwG.js → transform-CoP2bJ7P.js} +43 -4
  191. package/dist/src/{transform-B86_0IIb.js → transform-CqTFr7KR.js} +4 -4
  192. package/dist/src/{transform-DosdxVdh.js → transform-DMaxQwDx.js} +43 -4
  193. package/dist/src/{transform-DwsntMEQ.js → transform-GybT0X0u.js} +3 -3
  194. package/dist/src/{transform-CCSNqTI-.cjs → transform-ivxEY4f7.cjs} +54 -3
  195. package/dist/src/{transformersAvailability-DM54tWzt.js → transformersAvailability-DwmezkVe.js} +1 -1
  196. package/dist/src/{types-Brw5kggg.cjs → types-BIfttHrT.cjs} +13 -1
  197. package/dist/src/{types-CslP2TyG.js → types-DMVjYLpx.js} +13 -1
  198. package/dist/src/{types-CMDs7Kzu.js → types-t52w-XsS.js} +16 -2
  199. package/dist/src/{util-BECSJ0T_.js → util-BSh4a_Q8.js} +6 -6
  200. package/dist/src/{util-D8z5QOy8.cjs → util-C08Kns6-.cjs} +3 -3
  201. package/dist/src/{util-CttPoePn.js → util-CUEt0Vum.js} +3 -3
  202. package/dist/src/{util-CfPdWQJX.js → util-Cl0zfT3V.js} +3 -3
  203. package/dist/src/{util-Dab5xp2E.cjs → util-DUYOvxAy.cjs} +3 -3
  204. package/dist/src/{util-CY_XguB9.js → util-DiCePfDu.js} +3 -3
  205. package/dist/src/{util-CBAXTxfy.cjs → util-DkFTvieG.cjs} +3 -3
  206. package/dist/src/{util-Dft1RxsL.js → util-mJ58qbbw.js} +3 -3
  207. package/dist/src/{util-Ba18wQ8e.js → util-vjscpUzy.js} +3 -3
  208. package/dist/src/{utils-BTeLHwiH.js → utils-CVzb4YiI.js} +2 -2
  209. package/dist/src/{utils-Db5KwiXp.cjs → utils-DFaZa6Rf.cjs} +2 -2
  210. package/dist/src/{utils-ICP7kLcY.js → utils-JaY9veb5.js} +2 -2
  211. package/dist/tsconfig.tsbuildinfo +1 -1
  212. package/package.json +43 -42
  213. package/dist/src/app/assets/index-COIipVf1.css +0 -1
  214. package/dist/src/app/assets/index-ClD64gUa.js +0 -428
  215. package/dist/src/app/assets/vendor-react-DHoaNLma.js +0 -4
  216. package/dist/src/cache-BJ31KhNT.cjs +0 -6
  217. package/dist/src/eval-DgiEH2xe.js +0 -16
  218. package/dist/src/evalResult-Boel8xoS.js +0 -13
  219. package/dist/src/evalResult-DGx1-Ela.js +0 -11
  220. package/dist/src/evalResult-DzRxYLDH.cjs +0 -11
  221. package/dist/src/evaluator-B4qKt437.js +0 -38
  222. package/dist/src/fetch-DwhKew9e.cjs +0 -4
  223. package/dist/src/graders-BpEqZT2Q.js +0 -34
  224. package/dist/src/graders-DTGI-hHE.cjs +0 -33
  225. package/dist/src/graders-DgMr-E4I.js +0 -36
  226. package/dist/src/providers-DVsoSup2.js +0 -34
  227. package/dist/src/providers-D_tJatIk.js +0 -32
  228. package/dist/src/providers-wpMPsMZ7.cjs +0 -32
  229. package/dist/src/server-BeqUuSvj.js +0 -6
  230. package/dist/src/server-CwQsQ6dl.cjs +0 -6
  231. package/dist/src/server-Dhbq83-d.js +0 -8
  232. package/dist/src/store-C7U17qcu.js +0 -6
  233. package/dist/src/store-CuDU_jDN.js +0 -7
  234. package/dist/src/store-awdDxuiD.cjs +0 -6
  235. package/dist/src/telemetry-ClcYTCOG.js +0 -8
  236. package/dist/src/telemetry-DEWuLu_s.js +0 -6
  237. package/dist/src/telemetry-tADmeX6E.cjs +0 -6
@@ -4,30 +4,30 @@ import { a as safeJoin, i as resolvePackageEntryPoint, n as getWrapperDir, o as
4
4
  import { i as validatePythonPath, n as getEnvInt$1, r as runPython, t as getConfiguredPythonPath } from "./pythonUtils-vMlk9Qp5.js";
5
5
  import { a as isVideoFile, i as isJavascriptFile, n as isAudioFile, r as isImageFile } from "./fileExtensions-ePDqouxn.js";
6
6
  import { n as transform, r as getProcessShim, t as TransformInputType } from "./transform-D8dILpfZ.js";
7
- import { $ as pluginDescriptions, A as isApiProvider, G as MULTI_TURN_STRATEGIES, H as AGENTIC_STRATEGIES, N as ProviderOptionsSchema, U as DATASET_PLUGINS, V as isUuid, Y as isCustomStrategy, j as isProviderOptions, yt as STRATEGY_EXEMPT_PLUGINS } from "./types-CslP2TyG.js";
8
- import { c as maybeLoadFromExternalFile, d as maybeLoadToolsFromExternalFile, f as parsePathOrGlob, g as renderVarsInObject, h as renderEnvOnlyInObject, l as maybeLoadFromExternalFileWithVars, o as getResolvedRelativePath, s as maybeLoadConfigFromExternalFile, u as maybeLoadResponseFormatFromExternalFile, v as extractVariablesFromTemplates, x as parseFileUrl, y as getNunjucksEngine } from "./util-CY_XguB9.js";
9
- import { C as toTitleCase, E as CLOUD_PROVIDER_PREFIX, L as VERSION, S as parseChatPrompt, T as transformTools, _ as isOpenAIToolArray, b as openaiToolChoiceToBedrock, c as cloudConfig, g as calculateCost, h as REQUEST_TIMEOUT_MS, m as LONG_RUNNING_MODEL_TIMEOUT_MS, n as fetchWithRetries, p as sleep, r as fetchWithTimeout, t as fetchWithProxy, v as isOpenAIToolChoice, w as transformToolChoice, x as openaiToolsToBedrock } from "./fetch-zJuFPxN1.js";
10
- import { a as fetchWithCache, c as isTransientConnectionError, o as getCache, s as isCacheEnabled } from "./cache-C4A4H4Xb.js";
11
- import { a as sha256, n as isBlobStorageEnabled, r as shouldAttemptRemoteBlobUpload, t as extractAndStoreBinaryData } from "./extractor-CuUWqwrE.js";
7
+ import { $ as pluginDescriptions, A as isApiProvider, G as MULTI_TURN_STRATEGIES, H as AGENTIC_STRATEGIES, N as ProviderOptionsSchema, U as DATASET_PLUGINS, V as isUuid, Y as isCustomStrategy, j as isProviderOptions, yt as STRATEGY_EXEMPT_PLUGINS } from "./types-DMVjYLpx.js";
8
+ import { c as maybeLoadFromExternalFile, d as maybeLoadToolsFromExternalFile, f as parsePathOrGlob, g as renderVarsInObject, h as renderEnvOnlyInObject, l as maybeLoadFromExternalFileWithVars, o as getResolvedRelativePath, s as maybeLoadConfigFromExternalFile, u as maybeLoadResponseFormatFromExternalFile, v as extractVariablesFromTemplates, x as parseFileUrl, y as getNunjucksEngine } from "./util-DiCePfDu.js";
9
+ import { C as toTitleCase, E as CLOUD_PROVIDER_PREFIX, L as VERSION, S as parseChatPrompt, T as transformTools, _ as isOpenAIToolArray, b as openaiToolChoiceToBedrock, c as cloudConfig, g as calculateCost, h as REQUEST_TIMEOUT_MS, m as LONG_RUNNING_MODEL_TIMEOUT_MS, n as fetchWithRetries, p as sleep, r as fetchWithTimeout, t as fetchWithProxy, v as isOpenAIToolChoice, w as transformToolChoice, x as openaiToolsToBedrock } from "./fetch-18MuNu9i.js";
10
+ import { a as fetchWithCache, o as getCache, s as isCacheEnabled, u as isTransientConnectionError } from "./cache-BLLayYEN.js";
11
+ import { a as sha256, n as isBlobStorageEnabled, r as shouldAttemptRemoteBlobUpload, t as extractAndStoreBinaryData } from "./extractor-Hs7la_19.js";
12
12
  import { n as withGenAISpan } from "./genaiTracer-Ce19n68P.js";
13
- import { i as normalizeFinishReason, n as MCPClient, r as FINISH_REASON_MAP, t as OpenAiChatCompletionProvider } from "./chat-noXtEAh5.js";
13
+ import { i as normalizeFinishReason, n as MCPClient, r as FINISH_REASON_MAP, t as OpenAiChatCompletionProvider } from "./chat-C8Ei4f87.js";
14
14
  import { a as createEmptyTokenUsage, n as accumulateResponseTokenUsage, r as accumulateTokenUsage } from "./tokenUsageUtils-FZd5O_4A.js";
15
- import { E as TOKEN_REFRESH_BUFFER_MS, a as calculateGoogleCost, c as geminiFormatAndSystemInstructions, d as mergeParts, f as normalizeTools, g as getGoogleClient, h as GoogleAuthManager, i as transformMCPToolsToOpenAi, l as getCandidate, m as CHAT_MODELS, o as createAuthCacheDiscriminator, r as transformMCPToolsToGoogle, s as formatCandidateContents, u as getGoogleAccessToken, v as loadCredentials, y as resolveProjectId } from "./transform-DosdxVdh.js";
16
- import { n as AnthropicGenericProvider, t as AnthropicMessagesProvider } from "./messages-Bg2ekFPc.js";
17
- import { a as parseMessages, i as outputFromMessage, t as ANTHROPIC_MODELS } from "./util-Dft1RxsL.js";
18
- import { n as ResponsesProcessor, r as FunctionCallbackHandler, t as OpenAiResponsesProvider } from "./responses-BtU_i-R0.js";
15
+ import { O as TOKEN_REFRESH_BUFFER_MS, S as toDataUri, _ as getGoogleClient, a as calculateGoogleCost, b as resolveProjectId, c as geminiFormatAndSystemInstructions, d as mergeParts, f as normalizeSafetySettings, g as GoogleAuthManager, h as CHAT_MODELS, i as transformMCPToolsToOpenAi, l as getCandidate, o as createAuthCacheDiscriminator, p as normalizeTools, r as transformMCPToolsToGoogle, s as formatCandidateContents, u as getGoogleAccessToken, y as loadCredentials } from "./transform-DMaxQwDx.js";
16
+ import { n as AnthropicGenericProvider, t as AnthropicMessagesProvider } from "./messages-CDZYGNlS.js";
17
+ import { a as parseMessages, i as outputFromMessage, t as ANTHROPIC_MODELS } from "./util-mJ58qbbw.js";
18
+ import { n as ResponsesProcessor, r as FunctionCallbackHandler, t as OpenAiResponsesProvider } from "./responses-DLLjADw5.js";
19
19
  import { t as OpenAiGenericProvider } from "./openai-Dz3surb_.js";
20
- import { a as calculateOpenAICost, c as getTokenUsage$2, o as failApiCall, r as OPENAI_REALTIME_MODELS, s as formatOpenAiError } from "./util-CfPdWQJX.js";
21
- import { n as OpenAiEmbeddingProvider, t as OpenAiCompletionProvider } from "./completion-HYrX5gEL.js";
22
- import { i as getUserEmail } from "./accounts-BSwMxhY3.js";
23
- import { a as getRemoteGenerationUrlForUnaligned, c as neverGenerateRemoteForRegularEvals, i as getRemoteGenerationUrl, l as shouldGenerateRemote, n as checkServerFeatureSupport, s as neverGenerateRemote } from "./server-BPC37wlX.js";
24
- import { r as storeBlob } from "./blobs-Dnt2rxpc.js";
25
- import { i as evalResultsTable, p as getDb } from "./tables-dNaVPyDr.js";
26
- import { n as telemetry_default } from "./telemetry-Dai7PdlR.js";
20
+ import { a as calculateOpenAICost, c as getTokenUsage$2, o as failApiCall, r as OPENAI_REALTIME_MODELS, s as formatOpenAiError } from "./util-Cl0zfT3V.js";
21
+ import { n as OpenAiEmbeddingProvider, t as OpenAiCompletionProvider } from "./completion-D9_MDlnd.js";
22
+ import { i as getUserEmail } from "./accounts-R3gfCR_g.js";
23
+ import { a as getRemoteGenerationUrlForUnaligned, c as neverGenerateRemoteForRegularEvals, i as getRemoteGenerationUrl, l as shouldGenerateRemote, n as checkServerFeatureSupport, s as neverGenerateRemote } from "./server-CbMTRQkg.js";
24
+ import { r as storeBlob } from "./blobs-C9J2mVgo.js";
25
+ import { i as evalResultsTable, p as getDb } from "./tables-D-NSwNIb.js";
26
+ import { n as telemetry_default } from "./telemetry-DZ_7PaVq.js";
27
27
  import { n as escapeRegExp, t as ellipsize } from "./text-Dm78AVGG.js";
28
- import { n as getTraceStore } from "./store-BTdkdmK9.js";
29
- import { t as AwsBedrockGenericProvider } from "./base-CwCV0t8r.js";
30
- import { n as callOpenAiImageApi, r as formatOutput, t as OpenAiImageProvider } from "./image-LhLO5KCW.js";
28
+ import { n as getTraceStore } from "./store-2ocbYY9D.js";
29
+ import { t as AwsBedrockGenericProvider } from "./base-Dtp8b4_N.js";
30
+ import { n as callOpenAiImageApi, r as formatOutput, t as OpenAiImageProvider } from "./image-BiEVdpdP.js";
31
31
  import { t as providerRegistry } from "./providerRegistry-wCWd7sKQ.js";
32
32
  import { n as runRuby } from "./rubyUtils-Cs35SDYa.js";
33
33
  import * as fs$1 from "fs";
@@ -2290,7 +2290,7 @@ var AIStudioChatProvider = class extends GoogleGenericProvider {
2290
2290
  temperature: config.temperature,
2291
2291
  topP: config.topP,
2292
2292
  topK: config.topK,
2293
- safetySettings: config.safetySettings,
2293
+ safetySettings: normalizeSafetySettings(config.safetySettings),
2294
2294
  stopSequences: config.stopSequences,
2295
2295
  maxOutputTokens: config.maxOutputTokens
2296
2296
  };
@@ -2364,7 +2364,7 @@ var AIStudioChatProvider = class extends GoogleGenericProvider {
2364
2364
  ...config.maxOutputTokens !== void 0 && { maxOutputTokens: config.maxOutputTokens },
2365
2365
  ...config.generationConfig
2366
2366
  },
2367
- safetySettings: config.safetySettings,
2367
+ safetySettings: normalizeSafetySettings(config.safetySettings),
2368
2368
  ...config.toolConfig ? { toolConfig: config.toolConfig } : {},
2369
2369
  ...allTools.length > 0 ? { tools: allTools } : {},
2370
2370
  ...systemInstruction ? { system_instruction: systemInstruction } : {}
@@ -2683,7 +2683,7 @@ var VertexChatProvider = class extends GoogleGenericProvider {
2683
2683
  topK: config.topK,
2684
2684
  ...config.generationConfig
2685
2685
  },
2686
- ...config.safetySettings ? { safetySettings: config.safetySettings } : {},
2686
+ ...config.safetySettings ? { safetySettings: normalizeSafetySettings(config.safetySettings) } : {},
2687
2687
  ...config.toolConfig ? { toolConfig: config.toolConfig } : {},
2688
2688
  ...allTools.length > 0 ? { tools: allTools } : {},
2689
2689
  ...systemInstruction ? { systemInstruction } : {},
@@ -2897,7 +2897,7 @@ var VertexChatProvider = class extends GoogleGenericProvider {
2897
2897
  parameters: {
2898
2898
  context: this.config.context,
2899
2899
  examples: this.config.examples,
2900
- safetySettings: this.config.safetySettings,
2900
+ safetySettings: normalizeSafetySettings(this.config.safetySettings),
2901
2901
  stopSequences: this.config.stopSequences,
2902
2902
  temperature: this.config.temperature,
2903
2903
  maxOutputTokens: this.config.maxOutputTokens,
@@ -5355,7 +5355,7 @@ async function loadRedteamProvider({ provider, jsonOnly = false, preferSmallMode
5355
5355
  ret = redteamProvider;
5356
5356
  } else if (typeof redteamProvider === "string" || isProviderOptions(redteamProvider)) {
5357
5357
  logger_default.debug(`Loading ${purpose} provider`, { provider: redteamProvider });
5358
- ret = (await (await import("./providers-D_tJatIk.js")).loadApiProviders([redteamProvider]))[0];
5358
+ ret = (await (await import("./providers-CQQrNaJk.js")).loadApiProviders([redteamProvider]))[0];
5359
5359
  } else {
5360
5360
  const defaultModel = preferSmallModel ? ATTACKER_MODEL_SMALL : ATTACKER_MODEL;
5361
5361
  logger_default.debug(`Using default ${purpose} provider: ${defaultModel}`);
@@ -5634,7 +5634,7 @@ async function externalizeResponseForRedteamHistory(response, context) {
5634
5634
  */
5635
5635
  async function tryUnblocking({ messages, lastResponse, goal, purpose }) {
5636
5636
  try {
5637
- const { checkServerFeatureSupport } = await import("./server-BeqUuSvj.js");
5637
+ const { checkServerFeatureSupport } = await import("./server-BUbS0Qfh.js");
5638
5638
  const supportsUnblocking = await checkServerFeatureSupport("blocking-question-analysis", "2025-06-16T14:49:11-07:00");
5639
5639
  if (!getEnvBool("PROMPTFOO_ENABLE_UNBLOCKING")) {
5640
5640
  logger_default.debug("[Unblocking] Disabled by default (set PROMPTFOO_ENABLE_UNBLOCKING=true to enable)");
@@ -9692,6 +9692,7 @@ const Strategies = [
9692
9692
  },
9693
9693
  {
9694
9694
  id: "crescendo",
9695
+ requiresGoalExtraction: true,
9695
9696
  action: async (testCases, injectVar, config) => {
9696
9697
  logger_default.debug(`Adding Crescendo to ${testCases.length} test cases`);
9697
9698
  const newTestCases = addCrescendo(testCases, injectVar, config);
@@ -9701,6 +9702,7 @@ const Strategies = [
9701
9702
  },
9702
9703
  {
9703
9704
  id: "custom",
9705
+ requiresGoalExtraction: true,
9704
9706
  action: async (testCases, injectVar, config, strategyId = "custom") => {
9705
9707
  logger_default.debug(`Adding Custom to ${testCases.length} test cases`);
9706
9708
  const newTestCases = addCustom(testCases, injectVar, config, strategyId);
@@ -9719,6 +9721,7 @@ const Strategies = [
9719
9721
  },
9720
9722
  {
9721
9723
  id: "goat",
9724
+ requiresGoalExtraction: true,
9722
9725
  action: async (testCases, injectVar, config) => {
9723
9726
  logger_default.debug(`Adding GOAT to ${testCases.length} test cases`);
9724
9727
  const newTestCases = await addGoatTestCases(testCases, injectVar, config);
@@ -9728,6 +9731,7 @@ const Strategies = [
9728
9731
  },
9729
9732
  {
9730
9733
  id: "indirect-web-pwn",
9734
+ requiresGoalExtraction: true,
9731
9735
  action: async (testCases, injectVar, config) => {
9732
9736
  logger_default.debug(`Adding Indirect Web Pwn to ${testCases.length} test cases`);
9733
9737
  const newTestCases = await addIndirectWebPwnTestCases(testCases, injectVar, config);
@@ -9764,6 +9768,7 @@ const Strategies = [
9764
9768
  },
9765
9769
  {
9766
9770
  id: "jailbreak",
9771
+ requiresGoalExtraction: true,
9767
9772
  action: async (testCases, injectVar, config) => {
9768
9773
  logger_default.warn("Strategy \"jailbreak\" is deprecated. Use \"jailbreak:meta\" instead. The \"jailbreak\" strategy used outdated single-shot optimization techniques.");
9769
9774
  logger_default.debug(`Adding meta-agent jailbreaks to ${testCases.length} test cases`);
@@ -9792,6 +9797,7 @@ const Strategies = [
9792
9797
  },
9793
9798
  {
9794
9799
  id: "jailbreak:tree",
9800
+ requiresGoalExtraction: true,
9795
9801
  action: async (testCases, injectVar, config) => {
9796
9802
  logger_default.debug(`Adding experimental tree jailbreaks to ${testCases.length} test cases`);
9797
9803
  const newTestCases = addIterativeJailbreaks(testCases, injectVar, "iterative:tree", config);
@@ -9801,6 +9807,7 @@ const Strategies = [
9801
9807
  },
9802
9808
  {
9803
9809
  id: "jailbreak:meta",
9810
+ requiresGoalExtraction: true,
9804
9811
  action: async (testCases, injectVar, config) => {
9805
9812
  logger_default.debug(`Adding meta-agent jailbreaks to ${testCases.length} test cases`);
9806
9813
  const newTestCases = addIterativeJailbreaks(testCases, injectVar, "iterative:meta", config);
@@ -9810,6 +9817,7 @@ const Strategies = [
9810
9817
  },
9811
9818
  {
9812
9819
  id: "jailbreak:hydra",
9820
+ requiresGoalExtraction: true,
9813
9821
  action: async (testCases, injectVar, config) => {
9814
9822
  logger_default.debug(`Adding hydra multi-turn jailbreaks to ${testCases.length} test cases`);
9815
9823
  const newTestCases = addHydra(testCases, injectVar, config);
@@ -10713,7 +10721,7 @@ var CrescendoProvider = class {
10713
10721
  });
10714
10722
  let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
10715
10723
  if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
10716
- const { getGraderById } = await import("./graders-BpEqZT2Q.js");
10724
+ const { getGraderById } = await import("./graders-BCytzXrb.js");
10717
10725
  let graderPassed;
10718
10726
  const additionalRubric = getGoalRubric(this.userGoal);
10719
10727
  while (roundNum < this.maxTurns) try {
@@ -11388,7 +11396,7 @@ var CustomProvider = class {
11388
11396
  let lastTransformResult;
11389
11397
  let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
11390
11398
  if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
11391
- const { getGraderById } = await import("./graders-BpEqZT2Q.js");
11399
+ const { getGraderById } = await import("./graders-BCytzXrb.js");
11392
11400
  let graderPassed;
11393
11401
  let storedGraderResult;
11394
11402
  const additionalRubric = getGoalRubric(this.userGoal);
@@ -11870,7 +11878,7 @@ var GoatProvider = class {
11870
11878
  let assertToUse;
11871
11879
  let graderPassed;
11872
11880
  let storedGraderResult;
11873
- const { getGraderById } = await import("./graders-BpEqZT2Q.js");
11881
+ const { getGraderById } = await import("./graders-BCytzXrb.js");
11874
11882
  let test;
11875
11883
  if (context?.test) {
11876
11884
  test = context?.test;
@@ -12311,7 +12319,7 @@ var HydraProvider = class {
12311
12319
  let lastTransformResult;
12312
12320
  let lastTransformDisplayVars;
12313
12321
  let lastFinalAttackPrompt;
12314
- const { getGraderById } = await import("./graders-BpEqZT2Q.js");
12322
+ const { getGraderById } = await import("./graders-BCytzXrb.js");
12315
12323
  let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
12316
12324
  if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
12317
12325
  let previousTraceSummary;
@@ -13150,7 +13158,7 @@ async function runRedteamConversation$2({ context, filters, injectVar, numIterat
13150
13158
  if (sessionId) sessionIds.push(sessionId);
13151
13159
  let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
13152
13160
  if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
13153
- const { getGraderById } = await import("./graders-BpEqZT2Q.js");
13161
+ const { getGraderById } = await import("./graders-BCytzXrb.js");
13154
13162
  if (test && assertToUse) {
13155
13163
  const grader = getGraderById(assertToUse.type);
13156
13164
  if (grader) {
@@ -13980,7 +13988,7 @@ async function runMetaAgentRedteam({ context, filters, injectVar, numIterations,
13980
13988
  previousTraceSummary = attackTraceSummary;
13981
13989
  let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
13982
13990
  if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
13983
- const { getGraderById } = await import("./graders-BpEqZT2Q.js");
13991
+ const { getGraderById } = await import("./graders-BCytzXrb.js");
13984
13992
  if (test && assertToUse) {
13985
13993
  const grader = getGraderById(assertToUse.type);
13986
13994
  if (grader) {
@@ -14557,7 +14565,7 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
14557
14565
  noImprovementCount++;
14558
14566
  if (noImprovementCount % 5 === 0) logger_default.debug(`[Depth ${depth}, Attempt ${attempts}] No improvement for ${noImprovementCount} consecutive iterations. Max score: ${maxScore}`);
14559
14567
  }
14560
- const { getGraderById } = await import("./graders-BpEqZT2Q.js");
14568
+ const { getGraderById } = await import("./graders-BCytzXrb.js");
14561
14569
  let graderPassed;
14562
14570
  let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
14563
14571
  if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
@@ -22542,7 +22550,7 @@ var GeminiImageProvider = class {
22542
22550
  ...this.config.imageAspectRatio && { aspectRatio: this.config.imageAspectRatio },
22543
22551
  ...this.config.imageSize && isGemini3 && { imageSize: this.config.imageSize }
22544
22552
  };
22545
- if (this.config.safetySettings) body.safetySettings = this.config.safetySettings;
22553
+ if (this.config.safetySettings) body.safetySettings = normalizeSafetySettings(this.config.safetySettings);
22546
22554
  return body;
22547
22555
  }
22548
22556
  processResponse(data, cached, latencyMs) {
@@ -22563,16 +22571,20 @@ var GeminiImageProvider = class {
22563
22571
  "SPII"
22564
22572
  ].includes(candidate.finishReason)) return { error: `Response was blocked with finish reason: ${candidate.finishReason}` };
22565
22573
  if (!candidate.content?.parts) return { error: "No content parts in response" };
22566
- const outputParts = [];
22574
+ const textParts = [];
22575
+ const imageParts = [];
22567
22576
  let totalCost = 0;
22568
- for (const part of candidate.content.parts) if (part.text) outputParts.push(part.text);
22577
+ for (const part of candidate.content.parts) if (part.text) textParts.push(part.text);
22569
22578
  else if (part.inlineData) {
22570
22579
  const mimeType = part.inlineData.mimeType || "image/png";
22571
22580
  const base64Data = part.inlineData.data;
22572
- outputParts.push(`![Generated Image](data:${mimeType};base64,${base64Data})`);
22581
+ imageParts.push({
22582
+ mimeType,
22583
+ base64Data
22584
+ });
22573
22585
  totalCost += this.getCostPerImage();
22574
22586
  }
22575
- if (outputParts.length === 0) return { error: "No valid content generated" };
22587
+ if (imageParts.length === 0 && textParts.length === 0) return { error: "No valid content generated" };
22576
22588
  const tokenUsage = cached ? {
22577
22589
  cached: data.usageMetadata?.totalTokenCount,
22578
22590
  total: data.usageMetadata?.totalTokenCount,
@@ -22583,8 +22595,13 @@ var GeminiImageProvider = class {
22583
22595
  total: data.usageMetadata?.totalTokenCount,
22584
22596
  numRequests: 1
22585
22597
  };
22598
+ const images = imageParts.length > 0 ? imageParts.map((img) => ({
22599
+ data: toDataUri(img.mimeType, img.base64Data),
22600
+ mimeType: img.mimeType
22601
+ })) : void 0;
22586
22602
  return {
22587
- output: outputParts.join("\n\n"),
22603
+ output: imageParts.length > 0 && textParts.length === 0 ? images[0].data : textParts.join("\n\n"),
22604
+ images,
22588
22605
  cached,
22589
22606
  latencyMs,
22590
22607
  cost: totalCost > 0 ? totalCost : void 0,
@@ -22722,13 +22739,17 @@ var GoogleImageProvider = class {
22722
22739
  const base64Image = imageData.bytesBase64Encoded;
22723
22740
  const mimeType = imageData.mimeType || "image/png";
22724
22741
  if (base64Image) {
22725
- imageOutputs.push(`![Generated Image](data:${mimeType};base64,${base64Image})`);
22742
+ imageOutputs.push({
22743
+ data: toDataUri(mimeType, base64Image),
22744
+ mimeType
22745
+ });
22726
22746
  totalCost += costPerImage;
22727
22747
  }
22728
22748
  }
22729
22749
  if (imageOutputs.length === 0) return { error: "No valid images generated" };
22730
22750
  return {
22731
- output: imageOutputs.join("\n\n"),
22751
+ output: imageOutputs[0].data,
22752
+ images: imageOutputs,
22732
22753
  cached,
22733
22754
  latencyMs,
22734
22755
  cost: totalCost
@@ -24884,6 +24905,7 @@ var HttpProvider = class {
24884
24905
  const vars = {
24885
24906
  ...context?.vars || {},
24886
24907
  prompt,
24908
+ ...context?.evaluationId ? { evaluationId: context.evaluationId } : {},
24887
24909
  ...transformedTools !== void 0 ? { tools: serializeForTemplate(transformedTools) } : {},
24888
24910
  ...transformedToolChoice !== void 0 ? { tool_choice: serializeForTemplate(transformedToolChoice) } : {}
24889
24911
  };
@@ -25107,9 +25129,17 @@ var HttpProvider = class {
25107
25129
  logger_default.error(`Error parsing session ID: ${String(err)}. Got headers: ${safeJsonStringify(sanitizeObject(responseHeaders, { context: "response headers" }))} and parsed body: ${safeJsonStringify(sanitizeObject(parsedData, { context: "response body" }))}`);
25108
25130
  throw err;
25109
25131
  }
25132
+ ret.metadata = {
25133
+ ...ret.metadata,
25134
+ http: {
25135
+ status,
25136
+ statusText
25137
+ }
25138
+ };
25110
25139
  if (context?.debug) {
25111
25140
  ret.raw = data;
25112
25141
  ret.metadata = {
25142
+ ...ret.metadata,
25113
25143
  headers: sanitizeObject(responseHeaders, { context: "response headers" }),
25114
25144
  transformedRequest: this.config.transformRequest ? transformedPrompt : parsedRequest.body?.text || renderedRequest.trim(),
25115
25145
  finalRequestBody: parsedRequest.body?.text,
@@ -32144,7 +32174,7 @@ const providerMap = [
32144
32174
  {
32145
32175
  test: (providerPath) => providerPath.startsWith("opencode:") || providerPath === "opencode",
32146
32176
  create: async (providerPath, providerOptions, context) => {
32147
- const { OpenCodeSDKProvider } = await import("./opencode-sdk-xUrRk5Jx.js");
32177
+ const { OpenCodeSDKProvider } = await import("./opencode-sdk-CuCztr4P.js");
32148
32178
  return new OpenCodeSDKProvider({
32149
32179
  ...providerOptions,
32150
32180
  id: providerPath,
@@ -32156,14 +32186,14 @@ const providerMap = [
32156
32186
  {
32157
32187
  test: (providerPath) => providerPath.startsWith("openclaw:") || providerPath === "openclaw",
32158
32188
  create: async (providerPath, providerOptions, context) => {
32159
- const { createOpenClawProvider } = await import("./openclaw-DBSSY4SP.js");
32189
+ const { createOpenClawProvider } = await import("./openclaw-CpPrXwf6.js");
32160
32190
  return createOpenClawProvider(providerPath, providerOptions, context.env);
32161
32191
  }
32162
32192
  },
32163
32193
  {
32164
32194
  test: (providerPath) => providerPath.startsWith("anthropic:claude-agent-sdk") || providerPath.startsWith("anthropic:claude-code"),
32165
32195
  create: async (_providerPath, providerOptions, context) => {
32166
- const { ClaudeCodeSDKProvider } = await import("./claude-agent-sdk-CBpAZV5h.js");
32196
+ const { ClaudeCodeSDKProvider } = await import("./claude-agent-sdk-6-xTaLwM.js");
32167
32197
  return new ClaudeCodeSDKProvider({
32168
32198
  ...providerOptions,
32169
32199
  env: context.env
@@ -32220,25 +32250,25 @@ const providerMap = [
32220
32250
  const modelName = splits.slice(2).join(":");
32221
32251
  if (modelType === "converse") return new AwsBedrockConverseProvider(modelName, providerOptions);
32222
32252
  if (modelType === "nova-sonic" || modelType.includes("amazon.nova-sonic")) {
32223
- const { NovaSonicProvider } = await import("./nova-sonic-Cjh_qopr.js");
32253
+ const { NovaSonicProvider } = await import("./nova-sonic-CgaWLDM1.js");
32224
32254
  return new NovaSonicProvider("amazon.nova-sonic-v1:0", providerOptions);
32225
32255
  }
32226
32256
  if (modelType.includes("luma.ray") || modelName.includes("luma.ray")) {
32227
- const { LumaRayVideoProvider } = await import("./luma-ray-y26EHFO8.js");
32257
+ const { LumaRayVideoProvider } = await import("./luma-ray-BOeX-h0M.js");
32228
32258
  return new LumaRayVideoProvider(modelName.includes("luma.ray") ? modelName : splits.slice(1).join(":") || "luma.ray-v2:0", providerOptions);
32229
32259
  }
32230
32260
  if (modelType.includes("amazon.nova-reel") || modelType === "video" && (modelName.includes("amazon.nova-reel") || modelName === "")) {
32231
- const { NovaReelVideoProvider } = await import("./nova-reel-CJLpBKSI.js");
32261
+ const { NovaReelVideoProvider } = await import("./nova-reel-DtCjbD5O.js");
32232
32262
  return new NovaReelVideoProvider(modelName || "amazon.nova-reel-v1:1", providerOptions);
32233
32263
  }
32234
32264
  if (modelType === "agents") {
32235
- const { AwsBedrockAgentsProvider } = await import("./agents-DleC7rb4.js");
32265
+ const { AwsBedrockAgentsProvider } = await import("./agents-DETIQHqF.js");
32236
32266
  return new AwsBedrockAgentsProvider(modelName, providerOptions);
32237
32267
  }
32238
32268
  if (modelType === "completion") return new AwsBedrockCompletionProvider(modelName, providerOptions);
32239
32269
  if (modelType === "embeddings" || modelType === "embedding") return new AwsBedrockEmbeddingProvider(modelName, providerOptions);
32240
32270
  if (modelType === "kb" || modelType === "knowledge-base") {
32241
- const { AwsBedrockKnowledgeBaseProvider } = await import("./knowledgeBase-CfOvyF2s.js");
32271
+ const { AwsBedrockKnowledgeBaseProvider } = await import("./knowledgeBase-XJQ0Qyez.js");
32242
32272
  return new AwsBedrockKnowledgeBaseProvider(modelName, providerOptions);
32243
32273
  }
32244
32274
  return new AwsBedrockCompletionProvider(splits.slice(1).join(":"), providerOptions);
@@ -32248,7 +32278,7 @@ const providerMap = [
32248
32278
  test: (providerPath) => providerPath.startsWith("bedrock-agent:"),
32249
32279
  create: async (providerPath, providerOptions, _context) => {
32250
32280
  const agentId = providerPath.substring(14);
32251
- const { AwsBedrockAgentsProvider } = await import("./agents-DleC7rb4.js");
32281
+ const { AwsBedrockAgentsProvider } = await import("./agents-DETIQHqF.js");
32252
32282
  return new AwsBedrockAgentsProvider(agentId, providerOptions);
32253
32283
  }
32254
32284
  },
@@ -32258,7 +32288,7 @@ const providerMap = [
32258
32288
  const splits = providerPath.split(":");
32259
32289
  const modelType = splits[1];
32260
32290
  const endpointName = splits.slice(2).join(":");
32261
- const { SageMakerCompletionProvider, SageMakerEmbeddingProvider } = await import("./sagemaker-DI6IOTjT.js");
32291
+ const { SageMakerCompletionProvider, SageMakerEmbeddingProvider } = await import("./sagemaker-CLdUAv5z.js");
32262
32292
  if (modelType === "embedding" || modelType === "embeddings") return new SageMakerEmbeddingProvider(endpointName || modelType, providerOptions);
32263
32293
  if (splits.length === 2) return new SageMakerCompletionProvider(modelType, providerOptions);
32264
32294
  if (endpointName.includes("jumpstart") || modelType === "jumpstart") return new SageMakerCompletionProvider(endpointName, {
@@ -32299,7 +32329,7 @@ const providerMap = [
32299
32329
  {
32300
32330
  test: (providerPath) => providerPath.startsWith("cloudflare-ai:"),
32301
32331
  create: async (providerPath, providerOptions, context) => {
32302
- const { createCloudflareAiProvider } = await import("./cloudflare-ai-BprwSD6d.js");
32332
+ const { createCloudflareAiProvider } = await import("./cloudflare-ai-CUg4BTcj.js");
32303
32333
  return createCloudflareAiProvider(providerPath, {
32304
32334
  ...providerOptions,
32305
32335
  env: context.env
@@ -32309,7 +32339,7 @@ const providerMap = [
32309
32339
  {
32310
32340
  test: (providerPath) => providerPath.startsWith("cloudflare-gateway:"),
32311
32341
  create: async (providerPath, providerOptions, context) => {
32312
- const { createCloudflareGatewayProvider } = await import("./cloudflare-gateway-BjoxwqUw.js");
32342
+ const { createCloudflareGatewayProvider } = await import("./cloudflare-gateway-_itGuXry.js");
32313
32343
  return createCloudflareGatewayProvider(providerPath, {
32314
32344
  ...providerOptions,
32315
32345
  env: context.env
@@ -32461,27 +32491,27 @@ const providerMap = [
32461
32491
  create: async (providerPath, providerOptions, context) => {
32462
32492
  const modelType = providerPath.split(":")[1];
32463
32493
  if (modelType === "image") {
32464
- const { createHyperbolicImageProvider } = await import("./image-Bf8RiJ2g.js");
32494
+ const { createHyperbolicImageProvider } = await import("./image-BXt_7u0v.js");
32465
32495
  return createHyperbolicImageProvider(providerPath, {
32466
32496
  ...providerOptions,
32467
32497
  env: context.env
32468
32498
  });
32469
32499
  }
32470
32500
  if (modelType === "audio") {
32471
- const { createHyperbolicAudioProvider } = await import("./audio-nUSOpXY7.js");
32501
+ const { createHyperbolicAudioProvider } = await import("./audio-BrJBFN2b.js");
32472
32502
  return createHyperbolicAudioProvider(providerPath, {
32473
32503
  ...providerOptions,
32474
32504
  env: context.env
32475
32505
  });
32476
32506
  }
32477
- const { createHyperbolicProvider } = await import("./chat-BiImdLJf.js");
32507
+ const { createHyperbolicProvider } = await import("./chat-CgyGj2hC.js");
32478
32508
  return createHyperbolicProvider(providerPath, providerOptions);
32479
32509
  }
32480
32510
  },
32481
32511
  {
32482
32512
  test: (providerPath) => providerPath.startsWith("litellm:"),
32483
32513
  create: async (providerPath, providerOptions, context) => {
32484
- const { createLiteLLMProvider } = await import("./litellm-DexU8FFp.js");
32514
+ const { createLiteLLMProvider } = await import("./litellm-CrLJrPIm.js");
32485
32515
  return createLiteLLMProvider(providerPath, {
32486
32516
  config: providerOptions,
32487
32517
  env: context.env
@@ -32550,7 +32580,7 @@ const providerMap = [
32550
32580
  if (modelType === "realtime") return new OpenAiRealtimeProvider(modelName || "gpt-4o-realtime-preview-2024-12-17", providerOptions);
32551
32581
  if (modelType === "responses") return new OpenAiResponsesProvider(modelName || "gpt-4.1-2025-04-14", providerOptions);
32552
32582
  if (modelType === "transcription") {
32553
- const { OpenAiTranscriptionProvider } = await import("./transcription-i6EfSMie.js");
32583
+ const { OpenAiTranscriptionProvider } = await import("./transcription-CYuY5sFO.js");
32554
32584
  return new OpenAiTranscriptionProvider(modelName || "gpt-4o-transcribe-diarize", providerOptions);
32555
32585
  }
32556
32586
  if (OpenAiChatCompletionProvider.OPENAI_CHAT_MODEL_NAMES.includes(modelType)) return new OpenAiChatCompletionProvider(modelType, providerOptions);
@@ -32558,7 +32588,7 @@ const providerMap = [
32558
32588
  if (OpenAiRealtimeProvider.OPENAI_REALTIME_MODEL_NAMES.includes(modelType)) return new OpenAiRealtimeProvider(modelType, providerOptions);
32559
32589
  if (OpenAiResponsesProvider.OPENAI_RESPONSES_MODEL_NAMES.includes(modelType)) return new OpenAiResponsesProvider(modelType, providerOptions);
32560
32590
  if (modelType === "agents") {
32561
- const { OpenAiAgentsProvider } = await import("./agents-B20gl7hH.js");
32591
+ const { OpenAiAgentsProvider } = await import("./agents-GiUianme.js");
32562
32592
  return new OpenAiAgentsProvider(modelName || "default-agent", providerOptions);
32563
32593
  }
32564
32594
  if (modelType === "chatkit") {
@@ -32605,7 +32635,7 @@ const providerMap = [
32605
32635
  {
32606
32636
  test: (providerPath) => providerPath.startsWith("quiverai:"),
32607
32637
  create: async (providerPath, providerOptions, context) => {
32608
- const { createQuiverAiProvider } = await import("./quiverai-DthRqZs9.js");
32638
+ const { createQuiverAiProvider } = await import("./quiverai-Bfy2WnE2.js");
32609
32639
  return createQuiverAiProvider(providerPath, providerOptions, context.env);
32610
32640
  }
32611
32641
  },
@@ -32650,7 +32680,7 @@ const providerMap = [
32650
32680
  {
32651
32681
  test: (providerPath) => providerPath.startsWith("aimlapi:"),
32652
32682
  create: async (providerPath, providerOptions, context) => {
32653
- const { createAimlApiProvider } = await import("./aimlapi-DgbFGPTX.js");
32683
+ const { createAimlApiProvider } = await import("./aimlapi-CMJpKK-B.js");
32654
32684
  return createAimlApiProvider(providerPath, {
32655
32685
  ...providerOptions,
32656
32686
  env: context.env
@@ -32660,7 +32690,7 @@ const providerMap = [
32660
32690
  {
32661
32691
  test: (providerPath) => providerPath.startsWith("cometapi:"),
32662
32692
  create: async (providerPath, providerOptions, context) => {
32663
- const { createCometApiProvider } = await import("./cometapi-xiTQZp8R.js");
32693
+ const { createCometApiProvider } = await import("./cometapi-ChAaRjg5.js");
32664
32694
  return createCometApiProvider(providerPath, {
32665
32695
  ...providerOptions,
32666
32696
  env: context.env
@@ -32670,7 +32700,7 @@ const providerMap = [
32670
32700
  {
32671
32701
  test: (providerPath) => providerPath.startsWith("docker:"),
32672
32702
  create: async (providerPath, providerOptions, context) => {
32673
- const { createDockerProvider } = await import("./docker-BAYnlbAW.js");
32703
+ const { createDockerProvider } = await import("./docker-JAAubMw3.js");
32674
32704
  return createDockerProvider(providerPath, {
32675
32705
  ...providerOptions,
32676
32706
  env: context.env
@@ -33253,4 +33283,4 @@ function getProviderIds(providerPaths) {
33253
33283
 
33254
33284
  //#endregion
33255
33285
  export { DefaultSynthesizeProvider as $, createRateLimitRegistry as A, isCloudProvider as B, collectFileMetadata as C, loadFromPackage as D, isPackagePath as E, getCloudDatabaseId as F, DefaultEmbeddingProvider as G, OpenAiModerationProvider as H, getEvalConfigFromCloud as I, AIStudioChatProvider as J, DefaultGradingProvider as K, getOrgContext as L, PromptfooHarmfulCompletionProvider as M, REDTEAM_MEMORY_POISONING_PLUGIN_ID as N, redteamProviderManager as O, checkCloudPermissions as P, DefaultSuggestionsProvider as Q, getPluginSeverityOverridesFromCloud as R, removePrefix as S, runExtensionHook as T, MistralChatCompletionProvider as U, resolveTeamId as V, MistralEmbeddingProvider as W, DefaultGradingProvider$1 as X, DefaultGradingJsonProvider as Y, DefaultLlmRubricProvider as Z, extractVariablesFromJson as _, resolveProviderConfigs as a, isBasicRefusal as b, Strategies as c, pluginMatchesStrategyTargets as d, AzureModerationProvider as et, checkExfilTracking as f, extractPromptFromTags as g, extractInputVarsFromPrompt as h, resolveProvider as i, parseScriptParts as it, createProviderRateLimitOptions as j, TokenUsageTracker as k, loadStrategy as l, extractGoalFromPrompt as m, loadApiProvider as n, AzureChatCompletionProvider as nt, MCPProvider as o, extractAllPromptsFromTags as p, VertexChatProvider as q, loadApiProviders as r, getFileHashes as rt, GoogleLiveProvider as s, getProviderIds as t, AzureEmbeddingProvider as tt, validateStrategies as u, getSessionId as v, renderPrompt as w, isEmptyResponse as x, getShortPluginId as y, getPoliciesFromCloud as z };
33256
- //# sourceMappingURL=providers-D3lk_R7Q.js.map
33286
+ //# sourceMappingURL=providers-BiNq_Iyc.js.map