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,50 +1,50 @@
1
1
  import { t as __exportAll } from "../chunk-DEq-mXcV.js";
2
- import { C as getEnvFloat, D as getMaxEvalTimeMs, E as getEvalTimeoutMs, O as isCI, S as getEnvBool, T as getEnvString, a as logger, b as summarizeEvaluateResultForLogging, f as sanitizeObject, g as getAjv, h as extractJsonObjects, k as state, m as extractFirstJsonObject, n as globalLogCallback, o as setLogCallback, r as isDebugEnabled, s as setLogLevel, t as getLogLevel, v as orderKeys, w as getEnvInt, y as safeJsonStringify } from "../logger-KD8JjCRJ.js";
3
- import { F as getDefaultShareViewBaseUrl, I as getShareApiBaseUrl, L as getShareViewBaseUrl, N as TERMINAL_MAX_WIDTH, P as getDefaultPort, R as FILE_METADATA_KEY, S as isPromptfooSampleTarget, T as parseChatPrompt, c as CloudConfig, l as cloudConfig, m as sleep, n as fetchWithRetries, p as getCurrentTimestamp, r as fetchWithTimeout, t as fetchWithProxy, v as REQUEST_TIMEOUT_MS, z as HUMAN_ASSERTION_TYPE } from "../fetch-BufrQtvR.js";
4
- import { n as VERSION } from "../version-BK20a4sw.js";
2
+ import { C as getEnvBool, D as getEvalTimeoutMs, E as getEnvString, O as getMaxEvalTimeMs, S as state, T as getEnvInt, a as logger, b as summarizeEvaluateResultForLogging, f as sanitizeObject, g as getAjv, h as extractJsonObjects, k as isCI, m as extractFirstJsonObject, n as globalLogCallback, o as setLogCallback, r as isDebugEnabled, s as setLogLevel, t as getLogLevel, v as orderKeys, w as getEnvFloat, y as safeJsonStringify } from "../logger-BjYLHvGm.js";
3
+ import { F as getDefaultShareViewBaseUrl, I as getShareApiBaseUrl, L as getShareViewBaseUrl, N as TERMINAL_MAX_WIDTH, P as getDefaultPort, R as FILE_METADATA_KEY, S as isPromptfooSampleTarget, T as parseChatPrompt, c as CloudConfig, l as cloudConfig, m as sleep, n as fetchWithRetries, p as getCurrentTimestamp, r as fetchWithTimeout, t as fetchWithProxy, y as getRequestTimeoutMs, z as HUMAN_ASSERTION_TYPE } from "../fetch-CBe8pU8Q.js";
4
+ import { n as VERSION } from "../version-BGiEZvX0.js";
5
5
  import { t as invariant } from "../invariant-DIYf9sP1.js";
6
- import { a as getAuthor, c as isLoggedIntoCloud, l as promptForEmailUnverified, n as checkEmailStatusAndMaybeExit, o as getUserEmail, r as clearUserEmail, s as getUserId, t as checkEmailStatus, u as setUserEmail } from "../accounts-DanM1wq_.js";
7
- import { a as safeJoin, r as importModule, t as getDirectory } from "../esm-B6whoAcf.js";
8
- import { a as extractVariablesFromTemplates, i as extractVariablesFromTemplate, n as renderVarsInObject, o as getNunjucksEngine, r as analyzeTemplateReference, t as renderEnvOnlyInObject } from "../render-_6ur1fhE.js";
9
- import { t as providerRegistry } from "../providerRegistry-1gB5vtzQ.js";
10
- import { a as getRemoteHealthUrl, l as shouldGenerateRemote, n as getRemoteGenerationExplicitlyDisabledError, r as getRemoteGenerationUrl, s as neverGenerateRemote } from "../remoteGeneration-COpWcmWd.js";
11
- import { a as openBrowser, i as checkServerRunning, n as BrowserBehaviorNames, s as promptYesNo, t as BrowserBehavior } from "../server-Ddp8GNMp.js";
12
- import { a as evalResultsTable, c as evalsToPromptsTable, d as promptsTable, f as spansTable, g as getDbSignalPath, h as getDb, i as datasetsTable, l as evalsToTagsTable, m as tracesTable, n as blobReferencesTable, o as evalsTable, p as tagsTable, r as configsTable, s as evalsToDatasetsTable, t as blobAssetsTable, u as modelAuditsTable } from "../tables-CxjU7bBd.js";
13
- import { $ as MULTI_INPUT_EXCLUDED_PLUGINS, A as STRATEGY_COLLECTIONS, B as ALIASED_PLUGIN_MAPPINGS, E as ALL_STRATEGIES, F as isMultiTurnStrategy, G as DEFAULT_PLUGINS, H as BIAS_PLUGINS, I as Severity, J as HARM_PLUGINS, K as FINANCIAL_PLUGINS, L as categoryAliases, M as getDefaultNFanout, N as isCustomStrategy, O as DEFAULT_STRATEGIES, P as isFanoutStrategy, Q as MEDICAL_PLUGINS, S as StrategyConfigSchema, T as AGENTIC_STRATEGIES, U as CANARY_BREAKING_STRATEGY_IDS, V as ALL_PLUGINS, W as DATASET_EXEMPT_PLUGINS, X as LLAMA_GUARD_ENABLED_CATEGORIES, Y as INSURANCE_PLUGINS, Z as LLAMA_GUARD_REPLICATE_PROVIDER, _ as ProvidersSchema, a as EvaluateOptionsSchema, at as REDTEAM_PROVIDER_HARM_PLUGINS, b as PluginConfigSchema, c as TestSuiteConfigSchema, ct as TEEN_SAFETY_PLUGINS, d as isGradingResult, dt as CODING_AGENT_CORE_PLUGINS, et as MULTI_INPUT_VAR, f as isResultFailureReason, ft as CODING_AGENT_PLUGINS, g as ProviderOptionsSchema, h as RedteamConfigSchema, ht as PromptSchema, i as EvalResultsFilterMode, it as REDTEAM_MODEL, j as STRATEGY_COLLECTION_MAPPINGS, k as MULTI_TURN_STRATEGIES, l as TestSuiteSchema, lt as TELECOM_PLUGINS, m as isProviderOptions, n as BaseAssertionTypesSchema, nt as PII_PLUGINS, ot as REMOTE_ONLY_PLUGIN_IDS, p as isApiProvider, q as FOUNDATION_PLUGINS, r as CommandLineOptionsSchema, rt as PLUGIN_CATEGORIES, s as ResultFailureReason, st as STRATEGY_EXEMPT_PLUGINS, t as AssertionOrSetSchema, tt as PHARMACY_PLUGINS, u as UnifiedConfigSchema, ut as UNALIGNED_PROVIDER_HARM_PLUGINS, v as ConversationMessageSchema, w as isUuid, y as PartialGenerationError, z as riskCategorySeverityMap } from "../types-BJQBBPTP.js";
6
+ import { c as isLoggedIntoCloud, i as getAuthor, l as promptForEmailUnverified, n as checkEmailStatusAndMaybeExit, o as getUserEmail, r as clearUserEmail, s as getUserId, t as checkEmailStatus, u as setUserEmail } from "../accounts-BAajbKSh.js";
7
+ import { a as safeJoin, r as importModule, t as getDirectory } from "../esm-CGER3lko.js";
8
+ import { a as extractVariablesFromTemplates, i as extractVariablesFromTemplate, n as renderVarsInObject, o as getNunjucksEngine, r as analyzeTemplateReference, t as renderEnvOnlyInObject } from "../render-BoxrvB84.js";
9
+ import { t as providerRegistry } from "../providerRegistry-v8Wa3f9z.js";
10
+ import { a as getRemoteHealthUrl, l as shouldGenerateRemote, n as getRemoteGenerationExplicitlyDisabledError, r as getRemoteGenerationUrl, s as neverGenerateRemote } from "../remoteGeneration-CoxtxLvB.js";
11
+ import { a as openBrowser, i as checkServerRunning, n as BrowserBehaviorNames, s as promptYesNo, t as BrowserBehavior } from "../server-8in_Vrrf.js";
12
+ import { a as evalResultsTable, c as evalsToPromptsTable, d as promptsTable, f as spansTable, g as getDbSignalPath, h as getDb, i as datasetsTable, l as evalsToTagsTable, m as tracesTable, n as blobReferencesTable, o as evalsTable, p as tagsTable, r as configsTable, s as evalsToDatasetsTable, t as blobAssetsTable, u as modelAuditsTable } from "../tables-PWOqfbI_.js";
13
+ import { $ as MULTI_INPUT_EXCLUDED_PLUGINS, A as STRATEGY_COLLECTIONS, B as ALIASED_PLUGIN_MAPPINGS, E as ALL_STRATEGIES, F as isMultiTurnStrategy, G as DEFAULT_PLUGINS, H as BIAS_PLUGINS, I as Severity, J as HARM_PLUGINS, K as FINANCIAL_PLUGINS, L as categoryAliases, M as getDefaultNFanout, N as isCustomStrategy, O as DEFAULT_STRATEGIES, P as isFanoutStrategy, Q as MEDICAL_PLUGINS, S as StrategyConfigSchema, T as AGENTIC_STRATEGIES, U as CANARY_BREAKING_STRATEGY_IDS, V as ALL_PLUGINS, W as DATASET_EXEMPT_PLUGINS, X as LLAMA_GUARD_ENABLED_CATEGORIES, Y as INSURANCE_PLUGINS, Z as LLAMA_GUARD_REPLICATE_PROVIDER, _ as ProvidersSchema, a as EvaluateOptionsSchema, at as REDTEAM_PROVIDER_HARM_PLUGINS, b as PluginConfigSchema, c as TestSuiteConfigSchema, ct as TEEN_SAFETY_PLUGINS, d as isGradingResult, dt as CODING_AGENT_CORE_PLUGINS, et as MULTI_INPUT_VAR, f as isResultFailureReason, ft as CODING_AGENT_PLUGINS, g as ProviderOptionsSchema, h as RedteamConfigSchema, ht as PromptSchema, i as EvalResultsFilterMode, it as REDTEAM_MODEL, j as STRATEGY_COLLECTION_MAPPINGS, k as MULTI_TURN_STRATEGIES, l as TestSuiteSchema, lt as TELECOM_PLUGINS, m as isProviderOptions, n as BaseAssertionTypesSchema, nt as PII_PLUGINS, ot as REMOTE_ONLY_PLUGIN_IDS, p as isApiProvider, q as FOUNDATION_PLUGINS, r as CommandLineOptionsSchema, rt as PLUGIN_CATEGORIES, s as ResultFailureReason, st as STRATEGY_EXEMPT_PLUGINS, t as AssertionOrSetSchema, tt as PHARMACY_PLUGINS, u as UnifiedConfigSchema, ut as UNALIGNED_PROVIDER_HARM_PLUGINS, v as ConversationMessageSchema, w as isUuid, y as PartialGenerationError, z as riskCategorySeverityMap } from "../types-uLCKnRiK.js";
14
14
  import { a as isImageFile, i as isAudioFile, o as isJavascriptFile, s as isVideoFile } from "../shared-BoG7qLMv.js";
15
15
  import { n as sha256, t as randomSequence } from "../createHash-CGVzWdjj.js";
16
- import { a as generateIdFromPrompt, t as hashPrompt } from "../utils-B0lzitHZ.js";
17
- import { c as NON_TRANSIENT_HTTP_STATUSES, i as getCache, l as isNonTransientHttpStatus, n as disableCache, r as fetchWithCache, s as withCacheNamespace, t as cache_exports } from "../cache-roFAE0cI.js";
16
+ import { a as generateIdFromPrompt, t as hashPrompt } from "../utils-DMWnIu_V.js";
17
+ import { c as NON_TRANSIENT_HTTP_STATUSES, i as getCache, l as isNonTransientHttpStatus, n as disableCache, r as fetchWithCache, s as withCacheNamespace, t as cache_exports } from "../cache-x9llZxbx.js";
18
18
  import { a as createEmptyTokenUsage, i as createEmptyAssertions, n as accumulateResponseTokenUsage, o as normalizeTokenUsage, r as accumulateTokenUsage, t as accumulateAssertionTokenUsage } from "../tokenUsageUtils-BjVkdk18.js";
19
- import { n as getBlobUrl, t as getBlobByHash } from "../blobs-CeFdPn_T.js";
20
- import { n as isBlobStorageEnabled, t as extractAndStoreBinaryData } from "../extractor-BR7XAzAL.js";
21
- import { a as storeMedia, c as getEvalConfigFromCloud, h as resolveTeamId, i as retrieveMedia, l as getOrgContext, m as makeRequest$1, n as isMediaStorageEnabled, o as checkCloudPermissions, p as isCloudProvider, r as mediaExists, s as getCloudDatabaseId, t as getMediaStorage, u as getPluginSeverityOverridesFromCloud } from "../storage-QdU-SmvD.js";
22
- import { n as telemetry, t as TelemetryEventSchema } from "../telemetry-DmXYcJNV.js";
23
- import { r as runPython } from "../pythonUtils-CLCgQ9tt.js";
24
- import { A as maybeLoadConfigFromExternalFile, C as isProviderAllowed, E as normalizeProviderRef, I as readFilters, L as readOutput, P as maybeLoadToolsFromExternalFile, R as loadFunction, S as isOpenAiProvider, _ as checkProviderApiKeys, a as evalTableToJson, b as isAnthropicProvider, c as getEvalTablePromptStrippedPayload, d as setupEnv, f as deduplicateTestCases, g as resultIsForTestCase, h as getTestCaseDeduplicationKey, i as ComparisonEvalNotFoundError, j as maybeLoadFromExternalFile, l as mergeComparisonTables, m as filterRuntimeVars, n as writeMultipleOutputs, o as generateEvalCsv, p as extractRuntimeVars, r as writeOutput, s as getEvalTableOutputPromptLocationsBySize, t as printBorder, u as fetchCsvFromGoogleSheet, v as doesProviderRefMatch, x as isGoogleProvider, y as getProviderDescription, z as parseFileUrl } from "../util-I-Rf-KaD.js";
25
- import { t as OpenAiChatCompletionProvider } from "../chat-CUCorGiL.js";
26
- import { h as validateFunctionCall } from "../transform-BIMynQsA.js";
27
- import { $ as SUGGEST_PROMPTS_SYSTEM_MESSAGE, A as ExcessiveAgencyPlugin, At as DEFAULT_ANTHROPIC_MODEL, B as isGraderFailure, C as PlinyPlugin, Ct as getGradingProvider, D as ImitationPlugin, Dt as retryWithDeduplication, E as IntentPlugin, Et as getCustomPolicies, F as BeavertailsPlugin, G as matchesPiScore, H as matchesFactuality, I as AegisPlugin, J as processPrompts, K as matchesTrajectoryGoalSuccess, L as RedteamGraderBase, M as DebugAccessPlugin, N as CrossSessionLeakPlugin, O as HarmbenchPlugin, Ot as sampleArray, P as ContractPlugin, Q as SELECT_BEST_PROMPT, R as RedteamPluginBase, S as makeInlinePolicyIdSync, St as getAndCheckProvider, T as OverreliancePlugin, Tt as withProviderCallExecutionContext, U as matchesGEval, V as matchesClosedQa, W as matchesLlmRubric, X as readProviderPromptMap, Y as readPrompts, Z as DEFAULT_WEB_SEARCH_PROMPT, _ as PromptExtractionPlugin, _t as coerceString, a as VLGuardPlugin, at as CONTEXT_RECALL_NOT_ATTRIBUTED_TOKEN, b as determinePolicyTypeFromId, bt as processFileReference, c as ToxicChatPlugin, ct as loadRubricPrompt, d as TeenSafetyDangerousRoleplayPlugin, dt as dotProduct, et as ANSWER_RELEVANCY_GENERATE, f as TeenSafetyDangerousContentPlugin, ft as euclideanDistance, g as RbacPlugin, gt as tryParse, h as ShellInjectionPlugin, ht as splitIntoSentences, i as VLSUPlugin, it as CONTEXT_RECALL_ATTRIBUTED_TOKEN, j as DivergentRepetitionPlugin, k as HallucinationPlugin, kt as getDefaultProviders, l as ToolDiscoveryPlugin, lt as renderLlmRubricPrompt, m as SqlInjectionPlugin, mt as normalizeMatcherTokenUsage, n as getGraderById, nt as CONTEXT_FAITHFULNESS_NLI_STATEMENTS, o as UnverifiableClaimsPlugin, ot as CONTEXT_RELEVANCE, p as TeenSafetyAgeRestrictedGoodsAndServicesPlugin, pt as fail, q as doRemoteGrading, rt as CONTEXT_RECALL, s as UnsafeBenchPlugin, st as CONTEXT_RELEVANCE_BAD, t as GRADERS, tt as CONTEXT_FAITHFULNESS_LONGFORM, u as TeenSafetyHarmfulBodyIdealsPlugin, ut as cosineSimilarity, v as PoliticsPlugin, vt as getFinalTest, w as getPiiLeakTestsForCategory, wt as getProviderCallExecutionContext, x as isValidPolicyObject, xt as callProviderWithContext, y as PolicyPlugin, yt as loadFromJavaScriptFile, z as fetchHuggingFaceDataset } from "../graders-C0nXU_ZP.js";
28
- import { a as resolveProvider, b as AIStudioChatProvider, d as createTransformRequest, f as createTransformResponse, l as MCPProvider, n as loadApiProvider, o as resolveProviderConfigs, p as GoogleLiveProvider, r as loadApiProviders, t as getProviderIds, u as HttpProvider, y as VertexChatProvider } from "../providers-BCCz6_IX.js";
29
- import { l as validateFunctionCall$1 } from "../util-efByNxcr.js";
19
+ import { n as getBlobUrl, t as getBlobByHash } from "../blobs-ikh75MtF.js";
20
+ import { n as isBlobStorageEnabled, t as extractAndStoreBinaryData } from "../extractor-DAnauX2V.js";
21
+ import { a as storeMedia, c as getEvalConfigFromCloud, h as resolveTeamId, i as retrieveMedia, l as getOrgContext, m as makeRequest$1, n as isMediaStorageEnabled, o as checkCloudPermissions, p as isCloudProvider, r as mediaExists, s as getCloudDatabaseId, t as getMediaStorage, u as getPluginSeverityOverridesFromCloud } from "../storage-BC9TzmHh.js";
22
+ import { n as telemetry, t as TelemetryEventSchema } from "../telemetry-D3yQCekN.js";
23
+ import { r as runPython } from "../pythonUtils-CBe7VV6f.js";
24
+ import { A as maybeLoadConfigFromExternalFile, C as isProviderAllowed, E as normalizeProviderRef, I as readFilters, L as readOutput, P as maybeLoadToolsFromExternalFile, R as loadFunction, S as isOpenAiProvider, _ as checkProviderApiKeys, a as evalTableToJson, b as isAnthropicProvider, c as getEvalTablePromptStrippedPayload, d as setupEnv, f as deduplicateTestCases, g as resultIsForTestCase, h as getTestCaseDeduplicationKey, i as ComparisonEvalNotFoundError, j as maybeLoadFromExternalFile, l as mergeComparisonTables, m as filterRuntimeVars, n as writeMultipleOutputs, o as generateEvalCsv, p as extractRuntimeVars, r as writeOutput, s as getEvalTableOutputPromptLocationsBySize, t as printBorder, u as fetchCsvFromGoogleSheet, v as doesProviderRefMatch, x as isGoogleProvider, y as getProviderDescription, z as parseFileUrl } from "../util-BGfk7zh7.js";
25
+ import { t as OpenAiChatCompletionProvider } from "../chat-CvQMD-mp.js";
26
+ import { h as validateFunctionCall } from "../transform-D7QlmswG.js";
27
+ import { $ as SUGGEST_PROMPTS_SYSTEM_MESSAGE, A as ExcessiveAgencyPlugin, At as DEFAULT_ANTHROPIC_MODEL, B as isGraderFailure, C as PlinyPlugin, Ct as getGradingProvider, D as ImitationPlugin, Dt as retryWithDeduplication, E as IntentPlugin, Et as getCustomPolicies, F as BeavertailsPlugin, G as matchesPiScore, H as matchesFactuality, I as AegisPlugin, J as processPrompts, K as matchesTrajectoryGoalSuccess, L as RedteamGraderBase, M as DebugAccessPlugin, N as CrossSessionLeakPlugin, O as HarmbenchPlugin, Ot as sampleArray, P as ContractPlugin, Q as SELECT_BEST_PROMPT, R as RedteamPluginBase, S as makeInlinePolicyIdSync, St as getAndCheckProvider, T as OverreliancePlugin, Tt as withProviderCallExecutionContext, U as matchesGEval, V as matchesClosedQa, W as matchesLlmRubric, X as readProviderPromptMap, Y as readPrompts, Z as DEFAULT_WEB_SEARCH_PROMPT, _ as PromptExtractionPlugin, _t as coerceString, a as VLGuardPlugin, at as CONTEXT_RECALL_NOT_ATTRIBUTED_TOKEN, b as determinePolicyTypeFromId, bt as processFileReference, c as ToxicChatPlugin, ct as loadRubricPrompt, d as TeenSafetyDangerousRoleplayPlugin, dt as dotProduct, et as ANSWER_RELEVANCY_GENERATE, f as TeenSafetyDangerousContentPlugin, ft as euclideanDistance, g as RbacPlugin, gt as tryParse, h as ShellInjectionPlugin, ht as splitIntoSentences, i as VLSUPlugin, it as CONTEXT_RECALL_ATTRIBUTED_TOKEN, j as DivergentRepetitionPlugin, k as HallucinationPlugin, kt as getDefaultProviders, l as ToolDiscoveryPlugin, lt as renderLlmRubricPrompt, m as SqlInjectionPlugin, mt as normalizeMatcherTokenUsage, n as getGraderById, nt as CONTEXT_FAITHFULNESS_NLI_STATEMENTS, o as UnverifiableClaimsPlugin, ot as CONTEXT_RELEVANCE, p as TeenSafetyAgeRestrictedGoodsAndServicesPlugin, pt as fail, q as doRemoteGrading, rt as CONTEXT_RECALL, s as UnsafeBenchPlugin, st as CONTEXT_RELEVANCE_BAD, t as GRADERS, tt as CONTEXT_FAITHFULNESS_LONGFORM, u as TeenSafetyHarmfulBodyIdealsPlugin, ut as cosineSimilarity, v as PoliticsPlugin, vt as getFinalTest, w as getPiiLeakTestsForCategory, wt as getProviderCallExecutionContext, x as isValidPolicyObject, xt as callProviderWithContext, y as PolicyPlugin, yt as loadFromJavaScriptFile, z as fetchHuggingFaceDataset } from "../graders-k8qmhrPu.js";
28
+ import { a as resolveProvider, b as AIStudioChatProvider, d as createTransformRequest, f as createTransformResponse, l as MCPProvider, n as loadApiProvider, o as resolveProviderConfigs, p as GoogleLiveProvider, r as loadApiProviders, t as getProviderIds, u as HttpProvider, y as VertexChatProvider } from "../providers-DDLQc0tl.js";
29
+ import { l as validateFunctionCall$1 } from "../util-C6d3eV0A.js";
30
30
  import { t as ellipsize } from "../text-CZr46tp_.js";
31
31
  import { t as getProcessShim } from "../processShim-C_z3aRvF.js";
32
- import { n as loadFromPackage, t as isPackagePath } from "../packageParser-hwwSGnAZ.js";
33
- import { n as runRuby } from "../rubyUtils-DdGojpfv.js";
34
- import { n as createPlaceholderInputValue, r as materializeInputVariablesWithMetadata, t as buildPromptInputDescriptions } from "../inputVariables-B0qUChbV.js";
35
- import { a as extractPromptFromTags, c as isBasicRefusal, i as extractMaterializedVariablesFromJsonWithMetadata, n as extractGoalFromPrompt, o as getSessionId, r as extractInputVarsFromPrompt, s as getShortPluginId } from "../util-Df8YMvS1.js";
36
- import { n as PromptfooHarmfulCompletionProvider } from "../promptfoo-BDrfT30-.js";
37
- import { f as redteamProviderManager, g as createProviderRateLimitOptions, h as createRateLimitRegistry, m as TokenUsageTracker } from "../shared-7pmVZLNO.js";
38
- import { a as getTransformLabel, i as getTransformErrorMessage, n as TRANSFORM_KEYS, o as transform, r as TransformInputType, t as INLINE_FUNCTION_LABEL } from "../transform-CrPGTsij.js";
39
- import { i as throwIfTargetPromptExceedsMaxChars, n as getGeneratedPromptOverLimit, r as getMaxCharsPerMessageModifierValue, t as MAX_CHARS_PER_MESSAGE_MODIFIER_KEY } from "../promptLength-0qIHyhA5.js";
40
- import { n as checkExfilTracking, t as addIndirectWebPwnTestCases } from "../indirectWebPwn-tNx9OZ35.js";
32
+ import { n as loadFromPackage, t as isPackagePath } from "../packageParser-D7YWfcSe.js";
33
+ import { n as runRuby } from "../rubyUtils-DFzPvVD4.js";
34
+ import { n as createPlaceholderInputValue, t as buildPromptInputDescriptions } from "../inputVariables-DpOsOnzU.js";
35
+ import { a as extractPromptFromTags, c as isBasicRefusal, i as extractMaterializedVariablesFromJsonWithMetadata, n as extractGoalFromPrompt, o as getSessionId, s as getShortPluginId } from "../util-CKZReNsz.js";
36
+ import { a as assertRemoteMaterializationHandled, l as requiresRemoteMaterialization, n as PromptfooHarmfulCompletionProvider } from "../promptfoo-DVKqidd8.js";
37
+ import { f as redteamProviderManager, g as createProviderRateLimitOptions, h as createRateLimitRegistry, m as TokenUsageTracker } from "../shared-yBQATkD5.js";
38
+ import { a as getTransformLabel, i as getTransformErrorMessage, n as TRANSFORM_KEYS, o as transform, r as TransformInputType, t as INLINE_FUNCTION_LABEL } from "../transform-C5rpIuDz.js";
39
+ import { i as throwIfTargetPromptExceedsMaxChars, n as getGeneratedPromptOverLimit, r as getMaxCharsPerMessageModifierValue, t as MAX_CHARS_PER_MESSAGE_MODIFIER_KEY } from "../promptLength-5B4_P93z.js";
40
+ import { n as checkExfilTracking, t as addIndirectWebPwnTestCases } from "../indirectWebPwn-DRYpRTx6.js";
41
41
  import dotenv from "dotenv";
42
- import { AsyncResource } from "node:async_hooks";
43
42
  import * as fs$3 from "fs";
44
43
  import fs, { createWriteStream, existsSync, readFileSync } from "fs";
45
44
  import * as path$2 from "path";
46
45
  import path, { join, parse } from "path";
47
46
  import chalk from "chalk";
47
+ import { AsyncResource } from "node:async_hooks";
48
48
  import * as os$1 from "os";
49
49
  import os, { homedir } from "os";
50
50
  import yaml from "js-yaml";
@@ -4691,7 +4691,7 @@ async function startOtlpReceiverIfNeeded(testSuite) {
4691
4691
  telemetry.record("feature_used", { feature: "tracing" });
4692
4692
  try {
4693
4693
  logger.debug("[EvaluatorTracing] Tracing configuration detected, starting OTLP receiver");
4694
- const { startOTLPReceiver } = await import("../otlpReceiver-B2eaKC8C.js");
4694
+ const { startOTLPReceiver } = await import("../otlpReceiver-BkB7tsTT.js");
4695
4695
  const port = testSuite.tracing.otlp.http.port || 4318;
4696
4696
  const host = testSuite.tracing.otlp.http.host || "127.0.0.1";
4697
4697
  const acceptFormats = normalizeOtlpAcceptFormats(testSuite.tracing.otlp.http.acceptFormats);
@@ -4715,7 +4715,7 @@ async function startOtlpReceiverIfNeeded(testSuite) {
4715
4715
  async function stopOtlpReceiverIfNeeded() {
4716
4716
  if (otlpReceiverStarted) try {
4717
4717
  logger.debug("[EvaluatorTracing] Stopping OTLP receiver");
4718
- const { stopOTLPReceiver } = await import("../otlpReceiver-B2eaKC8C.js");
4718
+ const { stopOTLPReceiver } = await import("../otlpReceiver-BkB7tsTT.js");
4719
4719
  await stopOTLPReceiver();
4720
4720
  otlpReceiverStarted = false;
4721
4721
  logger.info("[EvaluatorTracing] OTLP receiver stopped successfully");
@@ -7045,7 +7045,7 @@ async function loadWebSearchProvider(preferAnthropic = false) {
7045
7045
  };
7046
7046
  const loadOpenAIWebSearch = async () => {
7047
7047
  try {
7048
- return await loadApiProvider("openai:responses:gpt-5.4-2026-03-05", { options: { config: { tools: [{ type: "web_search_preview" }] } } });
7048
+ return await loadApiProvider("openai:responses:gpt-5.5-2026-04-23", { options: { config: { tools: [{ type: "web_search_preview" }] } } });
7049
7049
  } catch (err) {
7050
7050
  logger.debug(`Failed to load OpenAI web search provider: ${err}`);
7051
7051
  return null;
@@ -8396,7 +8396,7 @@ async function runAssertion({ prompt, provider, assertion, test, vars, latencyMs
8396
8396
  };
8397
8397
  }
8398
8398
  else if (filePath.endsWith(".rb")) try {
8399
- const { runRuby } = await import("../rubyUtils-DdGojpfv.js").then((n) => n.t);
8399
+ const { runRuby } = await import("../rubyUtils-DFzPvVD4.js").then((n) => n.t);
8400
8400
  valueFromScript = await runRuby(filePath, functionName || "get_assert", [output, context]);
8401
8401
  logger.debug(`Ruby script ${filePath} output: ${valueFromScript}`);
8402
8402
  } catch (error) {
@@ -10722,7 +10722,7 @@ async function resolveDefaultTestProvider(defaultTest, testCase) {
10722
10722
  const defaultProvider = defaultTest.provider;
10723
10723
  if (isApiProvider(defaultProvider)) return defaultProvider;
10724
10724
  if (typeof defaultProvider === "object" && defaultProvider.id) {
10725
- const { loadApiProvider } = await import("../providers-BCCz6_IX.js").then((n) => n.i);
10725
+ const { loadApiProvider } = await import("../providers-DDLQc0tl.js").then((n) => n.i);
10726
10726
  return loadApiProvider(typeof defaultProvider.id === "function" ? defaultProvider.id() : defaultProvider.id, { options: defaultProvider });
10727
10727
  }
10728
10728
  return defaultProvider;
@@ -13813,7 +13813,7 @@ async function fetchRemoteGeneration(task, prompts) {
13813
13813
  method: "POST",
13814
13814
  headers: { "Content-Type": "application/json" },
13815
13815
  body: JSON.stringify(body)
13816
- }, REQUEST_TIMEOUT_MS, "json");
13816
+ }, getRequestTimeoutMs(), "json");
13817
13817
  return RedTeamGenerationResponse.parse(response.data).result;
13818
13818
  } catch (error) {
13819
13819
  logger.warn(`Error using remote generation for task '${task}': ${error}`);
@@ -13986,7 +13986,7 @@ const DATASET_URL$2 = `https://raw.githubusercontent.com/promptfoo/promptfoo/ref
13986
13986
  const DATASET_URL_MULTILINGUAL = `https://raw.githubusercontent.com/promptfoo/promptfoo/refs/tags/${DATASET_VERSION}/examples/cyberseceval/prompt_injection_multilingual.json`;
13987
13987
  async function fetchDataset$2(limit, isMultilingual) {
13988
13988
  try {
13989
- const response = await fetchWithTimeout(isMultilingual ? DATASET_URL_MULTILINGUAL : DATASET_URL$2, {}, REQUEST_TIMEOUT_MS);
13989
+ const response = await fetchWithTimeout(isMultilingual ? DATASET_URL_MULTILINGUAL : DATASET_URL$2, {}, getRequestTimeoutMs());
13990
13990
  if (!response.ok) throw new Error(`[CyberSecEval] HTTP status: ${response.status} ${response.statusText}`);
13991
13991
  const data = await response.json();
13992
13992
  if (!data || !Array.isArray(data)) throw new Error(`[CyberSecEval] Invalid response from ${DATASET_URL$2}`);
@@ -14054,7 +14054,7 @@ async function fetchDataset$1(limit) {
14054
14054
  logger.debug(`[DoNotAnswer] Fetching dataset from ${DATASET_URL$1}`);
14055
14055
  let csvData;
14056
14056
  if (DATASET_URL$1.startsWith("http")) {
14057
- const response = await fetchWithTimeout(DATASET_URL$1, {}, REQUEST_TIMEOUT_MS);
14057
+ const response = await fetchWithTimeout(DATASET_URL$1, {}, getRequestTimeoutMs());
14058
14058
  if (!response.ok) throw new Error(`[DoNotAnswer] HTTP status: ${response.status} ${response.statusText}`);
14059
14059
  csvData = await response.text();
14060
14060
  } else try {
@@ -14589,7 +14589,7 @@ async function fetchDataset(limit) {
14589
14589
  logger.debug(`[XSTest] Fetching dataset from ${DATASET_URL}`);
14590
14590
  let csvData;
14591
14591
  if (DATASET_URL.startsWith("http")) {
14592
- const response = await fetchWithTimeout(DATASET_URL, {}, REQUEST_TIMEOUT_MS);
14592
+ const response = await fetchWithTimeout(DATASET_URL, {}, getRequestTimeoutMs());
14593
14593
  if (!response.ok) throw new Error(`[XSTest] HTTP status: ${response.status} ${response.statusText}`);
14594
14594
  csvData = await response.text();
14595
14595
  } else try {
@@ -14867,11 +14867,12 @@ async function fetchRemoteTestCases(key, purpose, injectVar, n, config) {
14867
14867
  method: "POST",
14868
14868
  headers: { "Content-Type": "application/json" },
14869
14869
  body
14870
- }, REQUEST_TIMEOUT_MS);
14870
+ }, getRequestTimeoutMs());
14871
14871
  if (status !== 200 || !data || !data.result || !Array.isArray(data.result)) {
14872
14872
  logger.error(`Error generating test cases for ${key}: ${statusText} ${JSON.stringify(data)}`);
14873
14873
  return [];
14874
14874
  }
14875
+ if (requiresRemoteMaterialization(config?.inputs)) assertRemoteMaterializationHandled(data, `Remote plugin generation for ${key}`);
14875
14876
  const ret = data.result;
14876
14877
  logger.debug(`Received remote generation for ${key}:\n${JSON.stringify(ret)}`);
14877
14878
  return ret;
@@ -14880,31 +14881,6 @@ async function fetchRemoteTestCases(key, purpose, injectVar, n, config) {
14880
14881
  return [];
14881
14882
  }
14882
14883
  }
14883
- async function materializeRemoteTestCaseInputs({ config, injectVar, pluginId, provider, purpose, testCases }) {
14884
- const inputs = config.inputs;
14885
- if (!inputs || Object.keys(inputs).length === 0) return testCases;
14886
- return Promise.all(testCases.map(async (testCase, materializationIndex) => {
14887
- const inputVars = extractInputVarsFromPrompt(String(testCase.vars?.[injectVar] ?? ""), inputs);
14888
- if (!inputVars) return testCase;
14889
- const materializedVars = await materializeInputVariablesWithMetadata(inputVars, inputs, {
14890
- materializationIndex,
14891
- pluginId,
14892
- provider,
14893
- purpose
14894
- });
14895
- return {
14896
- ...testCase,
14897
- vars: {
14898
- ...testCase.vars || {},
14899
- ...materializedVars.vars
14900
- },
14901
- metadata: {
14902
- ...testCase.metadata || {},
14903
- ...materializedVars.metadata ? { inputMaterialization: materializedVars.metadata } : {}
14904
- }
14905
- };
14906
- }));
14907
- }
14908
14884
  function createPluginFactory(PluginClass, key, validate) {
14909
14885
  return {
14910
14886
  key,
@@ -14916,14 +14892,7 @@ function createPluginFactory(PluginClass, key, validate) {
14916
14892
  return new PluginClass(provider, purpose, injectVar, configWithDefaults).generateTests(n, delayMs);
14917
14893
  }
14918
14894
  const pluginId = getShortPluginId(key);
14919
- const testCases = await materializeRemoteTestCaseInputs({
14920
- config: configWithDefaults ?? {},
14921
- injectVar,
14922
- pluginId,
14923
- provider,
14924
- purpose,
14925
- testCases: await fetchRemoteTestCases(key, purpose, injectVar, n, configWithDefaults ?? {})
14926
- });
14895
+ const testCases = await fetchRemoteTestCases(key, purpose, injectVar, n, configWithDefaults ?? {});
14927
14896
  const computedModifiers = computeModifiersFromConfig(configWithDefaults);
14928
14897
  return testCases.map((testCase) => ({
14929
14898
  ...testCase,
@@ -15010,14 +14979,7 @@ const piiPlugins = PII_PLUGINS.map((category) => ({
15010
14979
  action: async (params) => {
15011
14980
  if (shouldGenerateRemote()) {
15012
14981
  const pluginId = getShortPluginId(category);
15013
- const testCases = await materializeRemoteTestCaseInputs({
15014
- config: params.config ?? {},
15015
- injectVar: params.injectVar,
15016
- pluginId,
15017
- provider: params.provider,
15018
- purpose: params.purpose,
15019
- testCases: await fetchRemoteTestCases(category, params.purpose, params.injectVar, params.n, params.config ?? {})
15020
- });
14982
+ const testCases = await fetchRemoteTestCases(category, params.purpose, params.injectVar, params.n, params.config ?? {});
15021
14983
  const computedModifiers = computeModifiersFromConfig(params.config);
15022
14984
  return testCases.map((testCase) => ({
15023
14985
  ...testCase,
@@ -15049,14 +15011,7 @@ const biasPlugins = BIAS_PLUGINS.map((category) => ({
15049
15011
  return [];
15050
15012
  }
15051
15013
  const pluginId = getShortPluginId(category);
15052
- const testCases = await materializeRemoteTestCaseInputs({
15053
- config: params.config ?? {},
15054
- injectVar: params.injectVar,
15055
- pluginId,
15056
- provider: params.provider,
15057
- purpose: params.purpose,
15058
- testCases: await fetchRemoteTestCases(category, params.purpose, params.injectVar, params.n, params.config ?? {})
15059
- });
15014
+ const testCases = await fetchRemoteTestCases(category, params.purpose, params.injectVar, params.n, params.config ?? {});
15060
15015
  const computedModifiers = computeModifiersFromConfig(params.config);
15061
15016
  return testCases.map((testCase) => ({
15062
15017
  ...testCase,
@@ -15075,21 +15030,14 @@ function createRemotePlugin(key, validate) {
15075
15030
  return {
15076
15031
  key,
15077
15032
  validate,
15078
- action: async ({ provider, purpose, injectVar, n, config }) => {
15033
+ action: async ({ purpose, injectVar, n, config }) => {
15079
15034
  const configWithDefaults = applyDefaultRemotePluginConfig(key, config);
15080
15035
  if (neverGenerateRemote()) {
15081
15036
  logger.error(getRemoteGenerationExplicitlyDisabledError(`${key} plugin`));
15082
15037
  return [];
15083
15038
  }
15084
15039
  const pluginId = getShortPluginId(key);
15085
- const testCases = await materializeRemoteTestCaseInputs({
15086
- config: configWithDefaults ?? {},
15087
- injectVar,
15088
- pluginId,
15089
- provider,
15090
- purpose,
15091
- testCases: await fetchRemoteTestCases(key, purpose, injectVar, n, configWithDefaults ?? {})
15092
- });
15040
+ const testCases = await fetchRemoteTestCases(key, purpose, injectVar, n, configWithDefaults ?? {});
15093
15041
  const computedModifiers = computeModifiersFromConfig(configWithDefaults);
15094
15042
  const testsWithMetadata = testCases.map((testCase) => ({
15095
15043
  ...testCase,
@@ -15264,7 +15212,7 @@ async function generateCitations(testCases, injectVar, config) {
15264
15212
  method: "POST",
15265
15213
  headers: { "Content-Type": "application/json" },
15266
15214
  body: JSON.stringify(payload)
15267
- }, REQUEST_TIMEOUT_MS);
15215
+ }, getRequestTimeoutMs());
15268
15216
  logger.debug(`Got remote citation generation result for case ${Number(index) + 1}: ${JSON.stringify(data)}`);
15269
15217
  if (data.error) {
15270
15218
  logger.error(`[Citation] Error in citation generation: ${data.error}`);
@@ -15412,7 +15360,7 @@ async function generateGcgPrompts(testCases, injectVar, config) {
15412
15360
  "x-promptfoo-silent": "true"
15413
15361
  },
15414
15362
  body: JSON.stringify(payload)
15415
- }, REQUEST_TIMEOUT_MS, "json", true);
15363
+ }, getRequestTimeoutMs(), "json", true);
15416
15364
  logger.debug("[GCG] Got generation result", {
15417
15365
  caseNumber,
15418
15366
  hasError: Boolean(data.error),
@@ -15974,7 +15922,7 @@ async function generateLikertPrompts(testCases, injectVar, config) {
15974
15922
  method: "POST",
15975
15923
  headers: { "Content-Type": "application/json" },
15976
15924
  body: JSON.stringify(payload)
15977
- }, REQUEST_TIMEOUT_MS);
15925
+ }, getRequestTimeoutMs());
15978
15926
  logger.debug(`Got Likert jailbreak generation result for case ${Number(index) + 1}: ${JSON.stringify(data)}`);
15979
15927
  if (data.error || !data.modifiedPrompts) {
15980
15928
  logger.error(`[jailbreak:likert] Error in Likert generation: ${data.error}}`);
@@ -16059,7 +16007,7 @@ async function generateMathPrompt(testCases, injectVar, config) {
16059
16007
  method: "POST",
16060
16008
  headers: { "Content-Type": "application/json" },
16061
16009
  body: JSON.stringify(payload)
16062
- }, REQUEST_TIMEOUT_MS);
16010
+ }, getRequestTimeoutMs());
16063
16011
  logger.debug(`Got remote MathPrompt generation result for batch ${Number(index) + 1}: ${JSON.stringify(data)}`);
16064
16012
  allResults = allResults.concat(data.result);
16065
16013
  processedBatches++;
@@ -16643,7 +16591,7 @@ async function textToAudio(text, language = "en", options) {
16643
16591
  method: "POST",
16644
16592
  headers: { "Content-Type": "application/json" },
16645
16593
  body: JSON.stringify(payload)
16646
- }, REQUEST_TIMEOUT_MS);
16594
+ }, getRequestTimeoutMs());
16647
16595
  if (data.error || !data.audioBase64) throw new Error(`Error in remote audio generation: ${data.error || "No audio data returned"}`);
16648
16596
  logger.debug(`Received audio base64 from remote API (${data.audioBase64.length} chars)`);
16649
16597
  const base64Audio = data.audioBase64;
@@ -17073,7 +17021,7 @@ async function generateCompositePrompts(testCases, injectVar, config) {
17073
17021
  method: "POST",
17074
17022
  headers: { "Content-Type": "application/json" },
17075
17023
  body: JSON.stringify(payload)
17076
- }, REQUEST_TIMEOUT_MS);
17024
+ }, getRequestTimeoutMs());
17077
17025
  logger.debug(`Got composite jailbreak generation result for case ${Number(index) + 1}: ${JSON.stringify(data)}`);
17078
17026
  if (data.error || !data.modifiedPrompts) {
17079
17027
  logger.error(`[jailbreak:composite] Error in composite generation: ${data.error}}`);
@@ -17462,6 +17410,15 @@ async function loadStrategy(strategyPath) {
17462
17410
  }
17463
17411
  //#endregion
17464
17412
  //#region src/redteam/index.ts
17413
+ const MATERIALIZED_MULTI_INPUT_PROMPT_METADATA_KEY = "__promptfooMaterializedMultiInputPrompt";
17414
+ function getMaterializedMultiInputPromptSnapshot(metadata) {
17415
+ const snapshot = metadata?.[MATERIALIZED_MULTI_INPUT_PROMPT_METADATA_KEY];
17416
+ return typeof snapshot === "string" ? snapshot : void 0;
17417
+ }
17418
+ function getMaterializedMultiInputPromptMetadata(vars) {
17419
+ const prompt = vars?.[MULTI_INPUT_VAR];
17420
+ return typeof prompt === "string" ? { [MATERIALIZED_MULTI_INPUT_PROMPT_METADATA_KEY]: prompt } : void 0;
17421
+ }
17465
17422
  function getPolicyText(metadata) {
17466
17423
  if (!metadata || metadata.policy === void 0 || metadata.policy === null) return;
17467
17424
  const policyValue = metadata.policy;
@@ -17474,12 +17431,19 @@ function getPolicyText(metadata) {
17474
17431
  async function rematerializeStrategyInputVars(testCase, injectVar, provider, purpose, materializationIndex) {
17475
17432
  const inputs = testCase.metadata?.pluginConfig?.inputs;
17476
17433
  const inputMaterialization = testCase.metadata?.inputMaterialization;
17477
- if (!inputs || Object.keys(inputs).length === 0 || !testCase.vars?.[injectVar]) return {
17434
+ const materializedPromptSnapshot = getMaterializedMultiInputPromptSnapshot(testCase.metadata);
17435
+ const currentInjectVar = testCase.vars?.[injectVar];
17436
+ if (!inputs || Object.keys(inputs).length === 0 || !currentInjectVar) return {
17437
+ inputMaterialization,
17438
+ vars: testCase.vars
17439
+ };
17440
+ const promptChangedSinceMaterialization = typeof currentInjectVar === "string" && typeof materializedPromptSnapshot === "string" && currentInjectVar !== materializedPromptSnapshot;
17441
+ if (Boolean(inputMaterialization) && Object.keys(inputs).every((key) => Object.prototype.hasOwnProperty.call(testCase.vars ?? {}, key)) && !promptChangedSinceMaterialization) return {
17478
17442
  inputMaterialization,
17479
17443
  vars: testCase.vars
17480
17444
  };
17481
17445
  try {
17482
- const materializedVars = await extractMaterializedVariablesFromJsonWithMetadata(JSON.parse(String(testCase.vars[injectVar])), inputs, {
17446
+ const materializedVars = await extractMaterializedVariablesFromJsonWithMetadata(JSON.parse(String(currentInjectVar)), inputs, {
17483
17447
  materializationIndex,
17484
17448
  pluginId: String(testCase.metadata?.pluginId || "unknown-plugin"),
17485
17449
  provider,
@@ -17711,7 +17675,8 @@ function addLanguageToPluginMetadata(test, lang, plugin, maxCharsPerMessage, tes
17711
17675
  ...test.metadata?.modifiers,
17712
17676
  ...languageToAdd
17713
17677
  },
17714
- ...languageToAdd
17678
+ ...languageToAdd,
17679
+ ...getMaterializedMultiInputPromptMetadata(test.vars)
17715
17680
  }
17716
17681
  };
17717
17682
  }
@@ -17810,7 +17775,8 @@ async function applyStrategies(testCases, strategies, injectVar, provider, purpo
17810
17775
  ...t?.metadata?.pluginId && { pluginId: t.metadata.pluginId },
17811
17776
  ...t?.metadata?.pluginConfig && { pluginConfig: t.metadata.pluginConfig },
17812
17777
  ...inputMaterialization && { inputMaterialization },
17813
- ...Object.keys(strategyConfig).length > 0 && { strategyConfig }
17778
+ ...Object.keys(strategyConfig).length > 0 && { strategyConfig },
17779
+ ...getMaterializedMultiInputPromptMetadata(vars)
17814
17780
  }
17815
17781
  };
17816
17782
  })));
@@ -18156,14 +18122,21 @@ async function synthesize({ abortSignal, delay, entities: entitiesOverride, inje
18156
18122
  }
18157
18123
  });
18158
18124
  const languageResults = await Promise.allSettled(languagePromises);
18159
- for (const result of languageResults) if (result.status === "fulfilled") {
18125
+ for (const [index, result] of languageResults.entries()) if (result.status === "fulfilled") {
18160
18126
  const { lang, tests, requested, generated } = result.value;
18161
18127
  allPluginTests.push(...tests);
18162
18128
  resultsPerLanguage[lang || "default"] = {
18163
18129
  requested,
18164
18130
  generated
18165
18131
  };
18166
- } else logger.warn(`[Language Processing] Error generating tests for ${plugin.id}: ${result.reason}`);
18132
+ } else {
18133
+ const lang = languages[index];
18134
+ logger.warn(`[Language Processing] Error generating tests for ${plugin.id}: ${result.reason}`);
18135
+ resultsPerLanguage[lang || "default"] = {
18136
+ requested: plugin.numTests,
18137
+ generated: 0
18138
+ };
18139
+ }
18167
18140
  logger.debug(`[Language Processing] Total tests generated for ${plugin.id}: ${allPluginTests.length} (across ${languages.length} language(s))`);
18168
18141
  if (!Array.isArray(allPluginTests) || allPluginTests.length === 0) logger.warn(`Failed to generate tests for ${plugin.id}`);
18169
18142
  else {
@@ -18197,35 +18170,51 @@ async function synthesize({ abortSignal, delay, entities: entitiesOverride, inje
18197
18170
  generated: allPluginTests.length
18198
18171
  };
18199
18172
  } else if (plugin.id.startsWith("file://")) try {
18200
- const customTests = await new CustomPlugin(redteamProvider, purpose, injectVar, plugin.id, resolvePluginConfigWithMaxChars(plugin.config, maxCharsPerMessage)).generateTests(plugin.numTests, delay);
18201
- const testCasesWithMetadata = filterOversizedTestCases(customTests.map((t) => {
18202
- const includePluginConfig = !(t.metadata && Object.hasOwn(t.metadata, "pluginConfig") && t.metadata.pluginConfig === void 0);
18203
- const pluginConfigWithMaxChars = {
18173
+ const languageConfig = plugin.config?.language ?? language;
18174
+ const languages = Array.isArray(languageConfig) ? languageConfig : languageConfig ? [languageConfig] : [void 0];
18175
+ const allCustomTests = [];
18176
+ const resultsPerLanguage = {};
18177
+ const languagePromises = languages.map(async (lang) => {
18178
+ const resolvedConfig = {
18204
18179
  ...resolvePluginConfigWithMaxChars(plugin.config, maxCharsPerMessage),
18205
- ...t.metadata?.pluginConfig ?? {}
18180
+ ...lang ? { language: lang } : {},
18181
+ ...hasMultipleInputs ? { inputs } : {}
18206
18182
  };
18207
- const modifiers = {
18208
- ...buildRedteamModifiers({
18183
+ const customPluginConfig = {
18184
+ ...resolvedConfig,
18185
+ modifiers: buildRedteamModifiers({
18209
18186
  maxCharsPerMessage,
18210
- pluginConfig: pluginConfigWithMaxChars,
18187
+ pluginConfig: resolvedConfig,
18211
18188
  testGenerationInstructions
18212
- }),
18213
- ...t.metadata?.modifiers
18189
+ })
18214
18190
  };
18191
+ const testCasesWithMetadata = filterOversizedTestCases((await new CustomPlugin(redteamProvider, purpose, injectVar, plugin.id, customPluginConfig).generateTests(plugin.numTests, delay)).map((t) => addLanguageToPluginMetadata(t, lang, plugin, maxCharsPerMessage, testGenerationInstructions)), injectVar, `Custom plugin ${plugin.id}`, maxCharsPerMessage);
18215
18192
  return {
18216
- ...t,
18217
- metadata: {
18218
- ...t.metadata || {},
18219
- pluginId: plugin.id,
18220
- ...includePluginConfig && { pluginConfig: pluginConfigWithMaxChars },
18221
- severity: plugin.severity || getPluginSeverity(plugin.id, resolvePluginConfig(plugin.config)),
18222
- modifiers
18223
- }
18193
+ lang,
18194
+ tests: testCasesWithMetadata,
18195
+ requested: plugin.numTests,
18196
+ generated: testCasesWithMetadata.length
18224
18197
  };
18225
- }), injectVar, `Custom plugin ${plugin.id}`, maxCharsPerMessage);
18198
+ });
18199
+ const languageResults = await Promise.allSettled(languagePromises);
18200
+ for (const [index, result] of languageResults.entries()) if (result.status === "fulfilled") {
18201
+ const { lang, tests, requested, generated } = result.value;
18202
+ allCustomTests.push(...tests);
18203
+ resultsPerLanguage[lang || "default"] = {
18204
+ requested,
18205
+ generated
18206
+ };
18207
+ } else {
18208
+ const lang = languages[index];
18209
+ logger.warn(`[Language Processing] Error generating tests for custom plugin ${plugin.id}: ${result.reason}`);
18210
+ resultsPerLanguage[lang || "default"] = {
18211
+ requested: plugin.numTests,
18212
+ generated: 0
18213
+ };
18214
+ }
18226
18215
  if (needsGoalExtraction) {
18227
- logger.debug(`Extracting goal for ${testCasesWithMetadata.length} custom tests from ${plugin.id}...`);
18228
- for (const testCase of testCasesWithMetadata) {
18216
+ logger.debug(`Extracting goal for ${allCustomTests.length} custom tests from ${plugin.id}...`);
18217
+ for (const testCase of allCustomTests) {
18229
18218
  const promptVar = testCase.vars?.[injectVar];
18230
18219
  const prompt = Array.isArray(promptVar) ? promptVar[0] : String(promptVar);
18231
18220
  const policy = getPolicyText(testCase.metadata);
@@ -18233,13 +18222,21 @@ async function synthesize({ abortSignal, delay, entities: entitiesOverride, inje
18233
18222
  testCase.metadata.goal = extractedGoal;
18234
18223
  }
18235
18224
  }
18236
- testCases.push(...testCasesWithMetadata);
18237
- logger.debug(`Added ${customTests.length} custom test cases from ${plugin.id}`);
18238
- const displayId = getPluginDisplayId(plugin);
18239
- pluginResults[displayId] = {
18240
- requested: plugin.numTests,
18241
- generated: testCasesWithMetadata.length
18225
+ testCases.push(...allCustomTests);
18226
+ logger.debug(`Added ${allCustomTests.length} custom test cases from ${plugin.id}`);
18227
+ const baseDisplayId = getPluginDisplayId(plugin);
18228
+ if (languages.filter((lang) => lang !== void 0).length > 1) for (const [langKey, result] of Object.entries(resultsPerLanguage)) {
18229
+ const displayId = langKey === "en" ? baseDisplayId : `(${langKey}) ${baseDisplayId}`;
18230
+ pluginResults[displayId] = {
18231
+ requested: result.requested,
18232
+ generated: result.generated
18233
+ };
18234
+ }
18235
+ else pluginResults[baseDisplayId] = {
18236
+ requested: plugin.numTests * languages.length,
18237
+ generated: allCustomTests.length
18242
18238
  };
18239
+ progressBar?.increment(plugin.numTests * languages.length);
18243
18240
  } catch (e) {
18244
18241
  logger.error(`Error generating tests for custom plugin ${plugin.id}: ${e}`);
18245
18242
  const displayId = getPluginDisplayId(plugin);
@@ -19793,7 +19790,7 @@ async function doEval(cmdObj, defaultConfig, defaultConfigPath, evaluateOptions)
19793
19790
  const passRate = successes / totalTests * 100;
19794
19791
  if (cmdObj.table && getLogLevel() !== "debug" && totalTests < 500) {
19795
19792
  const table = await evalRecord.getTable();
19796
- const outputTable = generateTable(table);
19793
+ const outputTable = generateTable(table, cmdObj.tableCellMaxLength ?? commandLineOptions?.tableCellMaxLength);
19797
19794
  logger.info("\n" + outputTable.toString());
19798
19795
  if (table.body.length > 25) {
19799
19796
  const rowsLeft = table.body.length - 25;
@@ -23267,7 +23264,7 @@ async function handleGoatStrategy(ctx) {
23267
23264
  method: "POST",
23268
23265
  headers: { "Content-Type": "application/json" },
23269
23266
  body: JSON.stringify(goatBody)
23270
- }, REQUEST_TIMEOUT_MS);
23267
+ }, getRequestTimeoutMs());
23271
23268
  if (!response.ok) throw new Error(`GOAT task failed with status ${response.status}: ${await response.text()}`);
23272
23269
  const data = await response.json();
23273
23270
  const attackerMessage = data?.message;
@@ -23298,7 +23295,7 @@ async function handleMischievousUserStrategy(ctx) {
23298
23295
  method: "POST",
23299
23296
  headers: { "Content-Type": "application/json" },
23300
23297
  body: JSON.stringify(mischievousBody)
23301
- }, REQUEST_TIMEOUT_MS);
23298
+ }, getRequestTimeoutMs());
23302
23299
  if (!response.ok) throw new Error(`Mischievous User task failed with status ${response.status}: ${await response.text()}`);
23303
23300
  const data = await response.json();
23304
23301
  const result = data?.result;
@@ -23355,7 +23352,7 @@ async function handleHydraStrategy(ctx) {
23355
23352
  method: "POST",
23356
23353
  headers: { "Content-Type": "application/json" },
23357
23354
  body: JSON.stringify(hydraBody)
23358
- }, REQUEST_TIMEOUT_MS);
23355
+ }, getRequestTimeoutMs());
23359
23356
  if (!response.ok) throw new Error(`Hydra task failed with status ${response.status}: ${await response.text()}`);
23360
23357
  const data = await response.json();
23361
23358
  const rawResult = data?.result;
@@ -23406,7 +23403,7 @@ async function handleCrescendoLikeStrategy(ctx) {
23406
23403
  method: "POST",
23407
23404
  headers: { "Content-Type": "application/json" },
23408
23405
  body: JSON.stringify(providerRequest)
23409
- }, REQUEST_TIMEOUT_MS);
23406
+ }, getRequestTimeoutMs());
23410
23407
  if (!response.ok) throw new Error(`Crescendo task failed with status ${response.status}: ${await response.text()}`);
23411
23408
  const data = await response.json();
23412
23409
  const rawResult = data?.result;
@@ -24054,7 +24051,7 @@ router.get("/", async (_req, res) => {
24054
24051
  };
24055
24052
  } catch (error) {
24056
24053
  logger.debug(`Failed to fetch latest version: ${error}`);
24057
- latestVersion = versionCache.latestVersion ?? "0.121.7";
24054
+ latestVersion = versionCache.latestVersion ?? "0.121.9";
24058
24055
  }
24059
24056
  }
24060
24057
  const selfHosted = getEnvBool("PROMPTFOO_SELF_HOSTED");
@@ -24063,7 +24060,7 @@ router.get("/", async (_req, res) => {
24063
24060
  selfHosted,
24064
24061
  isNpx
24065
24062
  });
24066
- const resolvedLatestVersion = latestVersion ?? "0.121.7";
24063
+ const resolvedLatestVersion = latestVersion ?? "0.121.9";
24067
24064
  const response = {
24068
24065
  currentVersion: VERSION,
24069
24066
  latestVersion: resolvedLatestVersion,
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import { s as logger } from "./logger-BbY6ypFL.js";
3
- import { N as getDefaultPort, n as fetchWithProxy } from "./fetch-DXUnXkVU.js";
4
- import "./version-eRkNuGv8.js";
5
- import { o as getRemoteVersionUrl } from "./remoteGeneration-B1_XsKXU.js";
2
+ import { s as logger } from "./logger-h-eiS4iv.js";
3
+ import { N as getDefaultPort, n as fetchWithProxy } from "./fetch-C59QM4cf.js";
4
+ import "./version-CnYqmWbz.js";
5
+ import { o as getRemoteVersionUrl } from "./remoteGeneration-DW6mPZnO.js";
6
6
  import chalk from "chalk";
7
7
  import opener from "opener";
8
8
  import readline from "readline";
@@ -109,7 +109,7 @@ async function checkServerRunning(port = getDefaultPort()) {
109
109
  logger.debug(`Checking for existing server on port ${port}...`);
110
110
  try {
111
111
  const data = await (await fetchWithProxy(`http://localhost:${port}/health`, { headers: { "x-promptfoo-silent": "true" } })).json();
112
- return data.status === "OK" && data.version === "0.121.7";
112
+ return data.status === "OK" && data.version === "0.121.9";
113
113
  } catch (err) {
114
114
  logger.debug(`No existing server found - this is expected on first startup. ${String(err)}`);
115
115
  return false;
@@ -179,4 +179,4 @@ async function openAuthBrowser(authUrl, welcomeUrl, browserBehavior) {
179
179
  //#endregion
180
180
  export { openAuthBrowser as a, promptYesNo as c, checkServerRunning as i, BrowserBehaviorNames as n, openBrowser as o, checkServerFeatureSupport as r, promptUser as s, BrowserBehavior as t };
181
181
 
182
- //# sourceMappingURL=server-DhMHosWj.js.map
182
+ //# sourceMappingURL=server-4wx571OM.js.map