promptfoo 0.121.7 → 0.121.8

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 (313) hide show
  1. package/dist/src/{accounts-CmWzeD2d.cjs → accounts-BVz5gHLK.cjs} +4 -4
  2. package/dist/src/{accounts-DanM1wq_.js → accounts-BWjqwsrf.js} +4 -4
  3. package/dist/src/{accounts-CjFnOPmb.js → accounts-D6IBfEE0.js} +5 -5
  4. package/dist/src/{accounts-Ca7WIoPY.js → accounts-DAv_0iE7.js} +4 -4
  5. package/dist/src/{agentic-utils-DDEGRV9v.js → agentic-utils-BJKAkz2e.js} +2 -2
  6. package/dist/src/{agentic-utils-DvPWSUpb.cjs → agentic-utils-C-A92xhn.cjs} +2 -2
  7. package/dist/src/{agentic-utils-TxUEMPYS.js → agentic-utils-DmoS_S4B.js} +2 -2
  8. package/dist/src/{agentic-utils-CJ0j3fBi.js → agentic-utils-GdToujHu.js} +2 -2
  9. package/dist/src/{agents-CBgJvRkB.js → agents-2C8NN6I1.js} +4 -4
  10. package/dist/src/{agents-CYn2n3QP.js → agents-BMAiSR2o.js} +2 -2
  11. package/dist/src/{agents-LrHuQqr1.js → agents-C-PGaxwj.js} +4 -4
  12. package/dist/src/{agents-D-vDNFx4.js → agents-C98cz5pl.js} +4 -4
  13. package/dist/src/{agents-B4sRuXg3.cjs → agents-DB8Ub2Ld.cjs} +2 -2
  14. package/dist/src/{agents-B8q7h_ek.js → agents-Dwshy2H8.js} +2 -2
  15. package/dist/src/{agents-QGg76OF-.js → agents-mlKjx-cK.js} +2 -2
  16. package/dist/src/{agents-eHZ9nlgA.cjs → agents-n2ej-c4H.cjs} +4 -4
  17. package/dist/src/{aimlapi-D5HXzZ0s.js → aimlapi-Bi-laUlp.js} +6 -6
  18. package/dist/src/{aimlapi-T6HGNxNe.cjs → aimlapi-D0OFV4Vj.cjs} +6 -6
  19. package/dist/src/{aimlapi-eYv3a_DK.js → aimlapi-WyUK0wYy.js} +6 -6
  20. package/dist/src/{aimlapi-CJEbQ0o6.js → aimlapi-v-63ZjEI.js} +6 -6
  21. package/dist/src/app/assets/Report-sCXUfaWo.js +1 -0
  22. package/dist/src/app/assets/{index-BnT6P6sF.js → index-BopgkZEh.js} +2 -2
  23. package/dist/src/app/index.html +1 -1
  24. package/dist/src/{audio-DyiebVB3.js → audio-DnEIHWZR.js} +3 -3
  25. package/dist/src/{audio-BqnRvcWG.js → audio-heR0mu0n.js} +3 -3
  26. package/dist/src/{audio-CPMtV1yR.js → audio-wafFO1wn.js} +3 -3
  27. package/dist/src/{audio-FnxbEnSE.cjs → audio-x44tsxIo.cjs} +3 -3
  28. package/dist/src/{authoritativeMarkupInjection-F2gBw0lN.cjs → authoritativeMarkupInjection-2G3Be6oL.cjs} +6 -6
  29. package/dist/src/{authoritativeMarkupInjection-DyAXAsSr.js → authoritativeMarkupInjection-81PPynHR.js} +6 -6
  30. package/dist/src/{authoritativeMarkupInjection-QEQmFS83.js → authoritativeMarkupInjection-D9O70HPi.js} +6 -6
  31. package/dist/src/{authoritativeMarkupInjection-BZIywVjG.js → authoritativeMarkupInjection-PxSf3Rh8.js} +5 -5
  32. package/dist/src/{base-E9I8zXjz.js → base-0Gzzue9Z.js} +2 -2
  33. package/dist/src/{base-Co80MMCi.js → base-Bp4c52YZ.js} +2 -2
  34. package/dist/src/{base-CKLo890h.js → base-BuNn-YBX.js} +2 -2
  35. package/dist/src/{base-DGJW48uz.cjs → base-BzdS8tod.cjs} +2 -2
  36. package/dist/src/{bestOfN-_kTi8Bxe.js → bestOfN-BHiOjeaq.js} +7 -7
  37. package/dist/src/{bestOfN-BBsO41z4.js → bestOfN-CdkNPPbX.js} +6 -6
  38. package/dist/src/{bestOfN-B3wNzjSB.js → bestOfN-ClUSOhN0.js} +7 -7
  39. package/dist/src/{bestOfN-CAwmg5UL.cjs → bestOfN-DWwXEg1h.cjs} +7 -7
  40. package/dist/src/cache-BKYi3kAA.js +3 -0
  41. package/dist/src/{cache-DpPWrkTE.js → cache-BR77mdIR.js} +3 -3
  42. package/dist/src/{cache-roFAE0cI.js → cache-CrioYnaa.js} +2 -2
  43. package/dist/src/{cache-DIXbtkNO.js → cache-DdriHsNX.js} +2 -2
  44. package/dist/src/{cache-CPGUA4Yl.cjs → cache-h5MWOBZI.cjs} +2 -2
  45. package/dist/src/{chat-Dabu84Br.js → chat-BBEnnpQk.js} +6 -6
  46. package/dist/src/{chat-CUCorGiL.js → chat-BSos6PvZ.js} +6 -6
  47. package/dist/src/{chat-TP8Qifkh.js → chat-Bnt7ieO0.js} +2 -2
  48. package/dist/src/{chat-DxTDQ83C.cjs → chat-DSyYuTYT.cjs} +6 -6
  49. package/dist/src/{chat-DqUFcWI0.js → chat-DTdf-J5Q.js} +6 -6
  50. package/dist/src/{chat-DG1wG4w0.cjs → chat-Dq3DomYU.cjs} +2 -2
  51. package/dist/src/{chat-GmlolEwo.js → chat-g5QLeLOo.js} +2 -2
  52. package/dist/src/{chat-iwaM5UTQ.js → chat-mTTuUAYb.js} +2 -2
  53. package/dist/src/{claude-agent-sdk-x1XJ1-pU.js → claude-agent-sdk-BGUac_kS.js} +7 -5
  54. package/dist/src/{claude-agent-sdk-D5Jl0SDh.js → claude-agent-sdk-BP__YGfK.js} +7 -5
  55. package/dist/src/{claude-agent-sdk-BQNp_y-F.js → claude-agent-sdk-Ddgx5BIQ.js} +7 -5
  56. package/dist/src/{claude-agent-sdk-DH416NBD.cjs → claude-agent-sdk-n2XcEclh.cjs} +7 -5
  57. package/dist/src/cloud-DiWbUiVP.js +3 -0
  58. package/dist/src/{cloud-D3DiFqH6.js → cloud-DqF5N1aJ.js} +2 -2
  59. package/dist/src/{cloudflare-ai-B6NVI3ax.js → cloudflare-ai-BGamMotN.js} +4 -4
  60. package/dist/src/{cloudflare-ai-r4tbYmWU.js → cloudflare-ai-BwW8W-w7.js} +4 -4
  61. package/dist/src/{cloudflare-ai-CEAW-xQa.cjs → cloudflare-ai-DCRGnsyL.cjs} +4 -4
  62. package/dist/src/{cloudflare-ai-RFSojyXG.js → cloudflare-ai-sD26nP6V.js} +4 -4
  63. package/dist/src/{cloudflare-gateway-BaZ4insB.js → cloudflare-gateway-2lnOT4qM.js} +3 -3
  64. package/dist/src/{cloudflare-gateway-BCkLouto.js → cloudflare-gateway-B1-8KNCt.js} +3 -3
  65. package/dist/src/{cloudflare-gateway-TJMLBj6I.cjs → cloudflare-gateway-CCC1DFrC.cjs} +3 -3
  66. package/dist/src/{cloudflare-gateway-CF-Vb-2Z.js → cloudflare-gateway-DOghiU6r.js} +3 -3
  67. package/dist/src/{codex-app-server-DIXZ230V.js → codex-app-server-BWeWamEb.js} +17 -2
  68. package/dist/src/{codex-app-server-B8KHEiF4.js → codex-app-server-DyQB1P0p.js} +17 -2
  69. package/dist/src/{codex-app-server-CnrLBCeA.cjs → codex-app-server-R9u_G7W9.cjs} +17 -2
  70. package/dist/src/{codex-app-server-Dd22dC_N.js → codex-app-server-ZQRJSJjU.js} +17 -2
  71. package/dist/src/{codex-sdk-CmQABzV3.js → codex-sdk-B62H0fe7.js} +14 -3
  72. package/dist/src/{codex-sdk-CFF6gUyi.cjs → codex-sdk-BRPUvJG8.cjs} +14 -3
  73. package/dist/src/{codex-sdk-B6Wah8Pa.js → codex-sdk-Dio1zJBS.js} +14 -3
  74. package/dist/src/codex-sdk-DxukZs_K.js +3 -0
  75. package/dist/src/{codex-sdk-D2d54RL8.js → codex-sdk-iEmW1eS2.js} +14 -3
  76. package/dist/src/{cometapi-Bu9B8NUY.js → cometapi--hh7dESS.js} +7 -7
  77. package/dist/src/{cometapi-OBILPLlu.js → cometapi-C7yWNGqt.js} +7 -7
  78. package/dist/src/{cometapi-CtzNCHKu.js → cometapi-CSIi16a0.js} +7 -7
  79. package/dist/src/{cometapi-DHCDlQUI.cjs → cometapi-sZgBZtbU.cjs} +7 -7
  80. package/dist/src/{completion-CSYfl2cd.cjs → completion-CWtqdn3z.cjs} +4 -4
  81. package/dist/src/{completion-CO2e1_62.js → completion-DT8cxo9T.js} +4 -4
  82. package/dist/src/{completion-DZNxcyfG.js → completion-DUScduXp.js} +4 -4
  83. package/dist/src/{completion-sNvCLTAP.js → completion-D_2IOAoS.js} +4 -4
  84. package/dist/src/{crescendo-QiaSLW0d.js → crescendo-B41TwUHM.js} +39 -18
  85. package/dist/src/{crescendo-J1Xx4_zb.js → crescendo-Bfic7KC4.js} +41 -20
  86. package/dist/src/{crescendo-BXEJK_bi.cjs → crescendo-DXFB7rHP.cjs} +41 -20
  87. package/dist/src/{crescendo-CU_Y2i-m.js → crescendo-DvvYxMLA.js} +41 -20
  88. package/dist/src/{custom-BJfP00Bh.js → custom-BdzuqFTN.js} +10 -10
  89. package/dist/src/{custom-notggYVl.js → custom-Cf5Q6r-P.js} +8 -8
  90. package/dist/src/{custom-CZVn-1-r.js → custom-DLgufezC.js} +10 -10
  91. package/dist/src/{custom-Cqia7M0D.cjs → custom-LEXHCRe3.cjs} +10 -10
  92. package/dist/src/{docker-4D1eL6Gq.js → docker-BOSO_6hK.js} +5 -5
  93. package/dist/src/{docker-D06JUoe2.cjs → docker-D0h2vFrc.cjs} +5 -5
  94. package/dist/src/{docker-DdJQBxK9.js → docker-D2TWGyTP.js} +5 -5
  95. package/dist/src/{docker-BBv1WUDu.js → docker-Vj_4_cPg.js} +5 -5
  96. package/dist/src/{embedding-BbrwopfX.cjs → embedding-BQIApR18.cjs} +4 -4
  97. package/dist/src/{embedding-Bi3rxrZF.js → embedding-CStK0TV6.js} +4 -4
  98. package/dist/src/{embedding--UZVe4_7.js → embedding-CU78FMnw.js} +4 -4
  99. package/dist/src/{embedding-C251p1-8.js → embedding-CV8lmCnU.js} +4 -4
  100. package/dist/src/{eval-0VRANImH.js → eval-B3BaNBbO.js} +4 -4
  101. package/dist/src/{eval-DscR5iOM.js → eval-DfR9885C.js} +1 -1
  102. package/dist/src/evalResult-BtZSUgQv.js +3 -0
  103. package/dist/src/{evalResult-eUkJv9Ko.js → evalResult-CcSqNl_Y.js} +3 -3
  104. package/dist/src/{evalResult-CvtS8h8u.cjs → evalResult-DHXs-9TL.cjs} +3 -3
  105. package/dist/src/{evalResult-2RRJvFyB.js → evalResult-PGqEbasb.js} +3 -3
  106. package/dist/src/evaluator-B9LGbKI8.js +3 -0
  107. package/dist/src/{evaluator-DRoiYB2q.js → evaluator-n_dEb00o.js} +20 -20
  108. package/dist/src/{evaluatorHelpers-DuqFFfq7.js → evaluatorHelpers-CrRObe2z.js} +4 -4
  109. package/dist/src/{evaluatorHelpers-CRqTvSux.cjs → evaluatorHelpers-D06I9WFL.cjs} +4 -4
  110. package/dist/src/{evaluatorHelpers-BsYP_muT.js → evaluatorHelpers-D1_kwvyp.js} +4 -4
  111. package/dist/src/{extractor-CIW3iN-b.js → extractor-BVkZtk4R.js} +4 -4
  112. package/dist/src/{extractor-CxRtnaHl.js → extractor-D3Fv_Tdh.js} +4 -4
  113. package/dist/src/{extractor-BR7XAzAL.js → extractor-Jp53vs-6.js} +4 -4
  114. package/dist/src/{extractor-BdxEtt3J.cjs → extractor-bV_NOoaz.cjs} +4 -4
  115. package/dist/src/{fetch-BufrQtvR.js → fetch-BSSAcMxf.js} +2 -2
  116. package/dist/src/fetch-BodQTrMU.js +3 -0
  117. package/dist/src/{fetch-Dw4XZHjj.cjs → fetch-Cfm4EuOB.cjs} +2 -2
  118. package/dist/src/{fetch-DXUnXkVU.js → fetch-Cpf1U1nO.js} +3 -3
  119. package/dist/src/{fetch-It34O8Ur.js → fetch-Doks14zQ.js} +2 -2
  120. package/dist/src/{goat-Qgurm-NP.js → goat-Ba7Gznzq.js} +18 -17
  121. package/dist/src/{goat-Ckd3q3AY.js → goat-CJngS-WU.js} +18 -17
  122. package/dist/src/{goat-ghadEDdy.js → goat-CwsbfQeu.js} +16 -15
  123. package/dist/src/{goat-una6pZGP.cjs → goat-DOMbozoX.cjs} +18 -17
  124. package/dist/src/graders-B3D7kCcD.js +3 -0
  125. package/dist/src/{graders-BGP99PdK.js → graders-BQt1BaQe.js} +18 -18
  126. package/dist/src/{graders-ClrU2fnd.cjs → graders-CBQ2s6gz.cjs} +18 -18
  127. package/dist/src/{graders-C0nXU_ZP.js → graders-DaRU98zs.js} +18 -18
  128. package/dist/src/{graders-BX0f2tvS.js → graders-KXzjnIim.js} +18 -18
  129. package/dist/src/{hydra-DE4xWwyc.js → hydra-BU6GjYoQ.js} +35 -17
  130. package/dist/src/{hydra-BxdG4nkg.js → hydra-BmXHxlyl.js} +33 -15
  131. package/dist/src/{hydra-BSNZZm2M.js → hydra-CR0KyYDb.js} +35 -17
  132. package/dist/src/{hydra-DrJttnvw.cjs → hydra-RO9jBks7.cjs} +35 -17
  133. package/dist/src/{image-B_fPIwdg.js → image-BBmZdKO3.js} +3 -3
  134. package/dist/src/{image-QzmydkiG.js → image-B_PFG7IG.js} +3 -3
  135. package/dist/src/{image-BvUAW344.js → image-BtODOZjh.js} +4 -4
  136. package/dist/src/{image-Cvjwx1uY.js → image-CYuNJIqd.js} +4 -4
  137. package/dist/src/{image-DfVCGPbI.cjs → image-E00WFZkq.cjs} +3 -3
  138. package/dist/src/{image-X0oY4350.cjs → image-HK2Cfqb1.cjs} +4 -4
  139. package/dist/src/{image-BN-hjLL9.js → image-LGj8dTcr.js} +3 -3
  140. package/dist/src/{image-B4oBtu6J.js → image-YMKejC0r.js} +4 -4
  141. package/dist/src/index.cjs +112 -115
  142. package/dist/src/index.d.cts +13 -0
  143. package/dist/src/index.d.ts +13 -0
  144. package/dist/src/index.js +113 -116
  145. package/dist/src/{indirectWebPwn-DBQhOjoD.js → indirectWebPwn-B80dLlFC.js} +5 -5
  146. package/dist/src/{indirectWebPwn-uyWdHx04.js → indirectWebPwn-BMTXXznx.js} +4 -4
  147. package/dist/src/{indirectWebPwn-tNx9OZ35.js → indirectWebPwn-BZFPV7Q9.js} +4 -4
  148. package/dist/src/{indirectWebPwn-CfQJt3gk.cjs → indirectWebPwn-BaEQEOIO.cjs} +5 -5
  149. package/dist/src/{indirectWebPwn-OsXnKejv.js → indirectWebPwn-BzpyMnFS.js} +5 -5
  150. package/dist/src/{indirectWebPwn-CbjUG0rh.js → indirectWebPwn-CiWB-vVH.js} +4 -4
  151. package/dist/src/{indirectWebPwn-BJ22AbQa.cjs → indirectWebPwn-D7NA9Nsv.cjs} +4 -4
  152. package/dist/src/{indirectWebPwn-02ZIghCS.js → indirectWebPwn-o_bEFMjP.js} +5 -5
  153. package/dist/src/{iterative-DJQEQpG3.js → iterative-B-l0syBV.js} +25 -15
  154. package/dist/src/{iterative-DQBuWM-j.cjs → iterative-BACUeCCz.cjs} +25 -15
  155. package/dist/src/{iterative-FTS4Bz67.js → iterative-CVwoExo8.js} +25 -15
  156. package/dist/src/{iterative-CpU6i2As.js → iterative-QDrGSyss.js} +23 -13
  157. package/dist/src/{iterativeImage-BUABMVOA.js → iterativeImage-BQg2OwA6.js} +3 -3
  158. package/dist/src/{iterativeImage-Doz8mgxF.js → iterativeImage-Bwn0fM75.js} +4 -4
  159. package/dist/src/{iterativeImage-ByFWkxax.cjs → iterativeImage-CcgVyASo.cjs} +4 -4
  160. package/dist/src/{iterativeImage-BzUapOUi.js → iterativeImage-D_UbQXg4.js} +4 -4
  161. package/dist/src/{iterativeMeta-C7APE_P1.js → iterativeMeta-CIu-CHRS.js} +36 -16
  162. package/dist/src/{iterativeMeta-B3YiAOc8.js → iterativeMeta-CN8CNjFA.js} +36 -16
  163. package/dist/src/{iterativeMeta-DgoQ7bLh.js → iterativeMeta-DN6BTjpq.js} +34 -14
  164. package/dist/src/{iterativeMeta-CSS8M6Ds.cjs → iterativeMeta-DlqY3BsS.cjs} +36 -16
  165. package/dist/src/{iterativeTree-DvZ7GBwt.js → iterativeTree-CJ8a8G9T.js} +78 -28
  166. package/dist/src/{iterativeTree-B5zxBBSW.js → iterativeTree-DcuFXnjL.js} +78 -28
  167. package/dist/src/{iterativeTree-CNyIk0Yn.js → iterativeTree-FrDDYAN0.js} +76 -26
  168. package/dist/src/{iterativeTree-CPMF10ve.cjs → iterativeTree-LOgAi0nU.cjs} +78 -28
  169. package/dist/src/{knowledgeBase-DUh34xba.cjs → knowledgeBase-CdbcGBZF.cjs} +4 -4
  170. package/dist/src/{knowledgeBase-Bi_8sV-H.js → knowledgeBase-CjOXp6Lr.js} +4 -4
  171. package/dist/src/{knowledgeBase-BadkINlJ.js → knowledgeBase-DxAq4n4z.js} +4 -4
  172. package/dist/src/{knowledgeBase-CkMljjdg.js → knowledgeBase-o_wTLzrt.js} +4 -4
  173. package/dist/src/{litellm-BKBo0jpC.js → litellm-B2gHwya_.js} +4 -4
  174. package/dist/src/{litellm-CtAr7bKG.cjs → litellm-CPpdlO7n.cjs} +4 -4
  175. package/dist/src/{litellm-BXyn5kZK.js → litellm-CYfgxLrM.js} +4 -4
  176. package/dist/src/{litellm-CNcfbCfa.js → litellm-ojWBKU3C.js} +4 -4
  177. package/dist/src/{luma-ray-D3FUc2K3.cjs → luma-ray-BCCO9XXG.cjs} +3 -3
  178. package/dist/src/{luma-ray-BMX1iEB6.js → luma-ray-BPrdihAb.js} +3 -3
  179. package/dist/src/{luma-ray-CR5TSpp4.js → luma-ray-DP5N79lB.js} +3 -3
  180. package/dist/src/{luma-ray-OEMmS1RB.js → luma-ray-DTDyoAlM.js} +3 -3
  181. package/dist/src/main.js +116 -119
  182. package/dist/src/{memoryPoisoning-Dp-btinn.cjs → memoryPoisoning-B6N3us35.cjs} +6 -6
  183. package/dist/src/{memoryPoisoning-D8h9gXJF.js → memoryPoisoning-Bc_BK_k2.js} +6 -6
  184. package/dist/src/{memoryPoisoning-CM83NWYl.js → memoryPoisoning-D375zwSX.js} +6 -6
  185. package/dist/src/{memoryPoisoning-cLuCoTuJ.js → memoryPoisoning-DJA0YjJT.js} +6 -6
  186. package/dist/src/{messages-BabO-cX8.js → messages-Bg29Nbit.js} +7 -7
  187. package/dist/src/{messages-DBPir0TQ.cjs → messages-BrZEnHsV.cjs} +7 -7
  188. package/dist/src/{messages-vsE_-Lv0.js → messages-CBulRaud.js} +7 -7
  189. package/dist/src/{messages-DGUlSNU7.js → messages-K9A8RxBM.js} +7 -7
  190. package/dist/src/{mischievousUser-0l8GD7Dp.js → mischievousUser-BDLwSGN0.js} +5 -5
  191. package/dist/src/{mischievousUser-frFYKxu6.js → mischievousUser-Blx-OtT3.js} +5 -5
  192. package/dist/src/{mischievousUser-BUOP9W5r.js → mischievousUser-CHuTTvBg.js} +5 -5
  193. package/dist/src/{mischievousUser-olGgHIVR.cjs → mischievousUser-CSUrH3fq.cjs} +5 -5
  194. package/dist/src/{modelslab-Cogmu4mG.js → modelslab-BjEk7yCP.js} +4 -4
  195. package/dist/src/{modelslab-EyDczZ5A.js → modelslab-CBCrdIBc.js} +4 -4
  196. package/dist/src/{modelslab-Dzst7VTU.js → modelslab-CrGpXuhv.js} +4 -4
  197. package/dist/src/{modelslab-CNV5bMSk.cjs → modelslab-Cvh0klQx.cjs} +4 -4
  198. package/dist/src/{nova-reel-BGPNBOMS.js → nova-reel-CUDDZcSA.js} +3 -3
  199. package/dist/src/{nova-reel-B_5NKFu1.js → nova-reel-CyDESu5J.js} +3 -3
  200. package/dist/src/{nova-reel-CjJRxI1X.cjs → nova-reel-DH_Ksu6X.cjs} +3 -3
  201. package/dist/src/{nova-reel-C4eUJGse.js → nova-reel-YQAqUYJY.js} +3 -3
  202. package/dist/src/{nova-sonic-ChPlh5na.js → nova-sonic-BVFFB7JZ.js} +2 -2
  203. package/dist/src/{nova-sonic-DuOG9Aun.cjs → nova-sonic-Bg3cxMMu.cjs} +2 -2
  204. package/dist/src/{nova-sonic-CrV0iaY_.js → nova-sonic-BhmnRGyh.js} +2 -2
  205. package/dist/src/{nova-sonic-BNGmgfFz.js → nova-sonic-DxmK95c1.js} +2 -2
  206. package/dist/src/{openclaw-Dphc01BY.cjs → openclaw-CHQaZi_-.cjs} +6 -6
  207. package/dist/src/{openclaw-zIJAsz3P.js → openclaw-CWOm2eOr.js} +6 -6
  208. package/dist/src/{openclaw-CF7fMido.js → openclaw-Cdk9JKfY.js} +6 -6
  209. package/dist/src/{openclaw-BIHlu_36.js → openclaw-DhF8rUpI.js} +6 -6
  210. package/dist/src/{opencode-sdk-B3vlPLsp.js → opencode-sdk-BRjiPV-g.js} +2 -2
  211. package/dist/src/{opencode-sdk-DoY6GbWw.cjs → opencode-sdk-CPFMw0ed.cjs} +2 -2
  212. package/dist/src/{opencode-sdk-sRKYHGoI.js → opencode-sdk-CaSOCsBA.js} +2 -2
  213. package/dist/src/{opencode-sdk-D05JSgMQ.js → opencode-sdk-CqkyG8De.js} +2 -2
  214. package/dist/src/{promptfoo-Rjp-MeBb.js → promptfoo-BU4_0J85.js} +64 -7
  215. package/dist/src/{promptfoo-BDrfT30-.js → promptfoo-CReYAtfb.js} +64 -7
  216. package/dist/src/{promptfoo-b-baRMj-.cjs → promptfoo-ClChwT74.cjs} +93 -6
  217. package/dist/src/{promptfoo-Cm4hiy1Y.js → promptfoo-CqEpj6Sr.js} +64 -7
  218. package/dist/src/{providers-B9KzWxAX.js → providers-B7TyByfj.js} +94 -50
  219. package/dist/src/{providers-DVYRZP4E.js → providers-BGc7tDtQ.js} +93 -49
  220. package/dist/src/{providers-BYAn82cf.js → providers-CSOp-bCm.js} +1 -1
  221. package/dist/src/{providers-BDVVIQM6.cjs → providers-V6RBuieY.cjs} +93 -49
  222. package/dist/src/{providers-BCCz6_IX.js → providers-iH3Sw1yo.js} +93 -49
  223. package/dist/src/{quiverai-BvIhI_0l.js → quiverai-58BtRRet.js} +3 -3
  224. package/dist/src/{quiverai-Cv7rJKDz.js → quiverai-C1dYu5MW.js} +3 -3
  225. package/dist/src/{quiverai-CdTWPe-A.js → quiverai-CNMIpZQg.js} +3 -3
  226. package/dist/src/{quiverai-BAp6iTZD.cjs → quiverai-fmSfU43k.cjs} +3 -3
  227. package/dist/src/{registry-KCVF1CFC.cjs → registry-6Jw6ebor.cjs} +14 -14
  228. package/dist/src/{registry-BUJrgjwv.js → registry-BTGk2ZkB.js} +14 -14
  229. package/dist/src/{registry-DXm1t_x0.js → registry-BTNqmP5o.js} +14 -14
  230. package/dist/src/{registry-Dp5EqoXc.js → registry-NGnOG2xa.js} +14 -14
  231. package/dist/src/{remoteGeneration-COpWcmWd.js → remoteGeneration--D6WjzUm.js} +4 -4
  232. package/dist/src/{remoteGeneration-DS9N3pgB.cjs → remoteGeneration-BpIYlb_O.cjs} +4 -4
  233. package/dist/src/{remoteGeneration-DsaSwmG2.js → remoteGeneration-CJC3E0aW.js} +4 -4
  234. package/dist/src/{remoteGeneration-B1_XsKXU.js → remoteGeneration-D6UjE2JT.js} +4 -4
  235. package/dist/src/{responses-B6ktc3Ra.js → responses-5Gf5HNOi.js} +9 -5
  236. package/dist/src/{responses-URRzV8qE.js → responses-BVi7xIdv.js} +9 -5
  237. package/dist/src/{responses-1UFFF9N_.cjs → responses-CUARGrhY.cjs} +9 -5
  238. package/dist/src/{responses-B3W2JvOQ.js → responses-CrmWv6iz.js} +9 -5
  239. package/dist/src/{sagemaker-DzffAqo_.cjs → sagemaker-BeVTKfrv.cjs} +9 -9
  240. package/dist/src/{sagemaker-yr1QKeBs.js → sagemaker-BwbV5U7_.js} +9 -9
  241. package/dist/src/{sagemaker-vhtSV7JI.js → sagemaker-ClAZ6Qwc.js} +9 -9
  242. package/dist/src/{sagemaker-CujrzP1a.js → sagemaker-DY2qrOpq.js} +9 -9
  243. package/dist/src/{scanner-DS0109SS.js → scanner-BS-iFIp3.js} +5 -5
  244. package/dist/src/server/index.js +111 -114
  245. package/dist/src/{server-B8rqV126.cjs → server-BHOEL8p8.cjs} +3 -3
  246. package/dist/src/{server-CMJD10J4.js → server-CbiJppij.js} +3 -3
  247. package/dist/src/server-D18AAlAc.js +3 -0
  248. package/dist/src/{server-DhMHosWj.js → server-DLYjSFm2.js} +5 -5
  249. package/dist/src/{server-Ddp8GNMp.js → server-JQYD_Nws.js} +5 -5
  250. package/dist/src/{shared-7pmVZLNO.js → shared-CRq0gGVf.js} +8 -8
  251. package/dist/src/{shared-D6IjElRI.js → shared-CSIGeGLl.js} +8 -8
  252. package/dist/src/{shared-9WHQ1oNE.js → shared-DNvim54U.js} +7 -7
  253. package/dist/src/{shared-WkgnDkcg.cjs → shared-aHWko3P1.cjs} +8 -8
  254. package/dist/src/{simulatedUser-U_qAHnuB.js → simulatedUser-C7sOFSF6.js} +5 -5
  255. package/dist/src/{simulatedUser-C9aQObBI.js → simulatedUser-DH_7RzEQ.js} +5 -5
  256. package/dist/src/{simulatedUser-p3tACcmw.js → simulatedUser-lgMMmniD.js} +5 -5
  257. package/dist/src/{simulatedUser-Cu601Dd4.cjs → simulatedUser-mnCUS9Bm.cjs} +5 -5
  258. package/dist/src/{storage-QdU-SmvD.js → storage-95htjpLs.js} +3 -3
  259. package/dist/src/{storage-CA-v9V2v.cjs → storage-A4WnAeN3.cjs} +3 -3
  260. package/dist/src/{storage-CD-GWAdx.js → storage-B2Ql_oq4.js} +3 -3
  261. package/dist/src/{storage-BU4qcnOb.js → storage-EKVWZBNY.js} +4 -4
  262. package/dist/src/{strategies-DRJjGTIY.js → strategies-CBI1brSy.js} +10 -10
  263. package/dist/src/{strategies-7CS3Alao.cjs → strategies-CCcnEbFO.cjs} +9 -9
  264. package/dist/src/{strategies-CiSeroPH.js → strategies-CD1gHeeQ.js} +9 -9
  265. package/dist/src/telemetry-BUm_krVX.js +3 -0
  266. package/dist/src/{telemetry-DmXYcJNV.js → telemetry-BbpmrenM.js} +4 -4
  267. package/dist/src/{telemetry-DwX9XUN5.js → telemetry-C4bX-6Sr.js} +4 -4
  268. package/dist/src/{telemetry-CJ7FnCsc.cjs → telemetry-C_ImlCOk.cjs} +4 -4
  269. package/dist/src/{telemetry-00ezXr_t.js → telemetry-DOE567Wj.js} +4 -4
  270. package/dist/src/{tracingOptions-ji2OuXbT.js → tracingOptions-BOP1FsRt.js} +2 -2
  271. package/dist/src/{tracingOptions-Chi74lOD.js → tracingOptions-BvmDa_jH.js} +2 -2
  272. package/dist/src/{tracingOptions-DrbSFaKy.cjs → tracingOptions-DFBoE8O0.cjs} +2 -2
  273. package/dist/src/{tracingOptions-BnwKCkSB.js → tracingOptions-xhjOg2b1.js} +2 -2
  274. package/dist/src/{transcription-Dkd22_4K.js → transcription-BOXDoehT.js} +4 -4
  275. package/dist/src/{transcription-CfU5loSq.js → transcription-CpVdKc4P.js} +4 -4
  276. package/dist/src/{transcription-mzuf18Mq.cjs → transcription-D8kkPXg_.cjs} +4 -4
  277. package/dist/src/{transcription-B8uIgCYX.js → transcription-Z94eV9LR.js} +4 -4
  278. package/dist/src/{transform-BIMynQsA.js → transform-BufxPIQL.js} +3 -3
  279. package/dist/src/{transform-DhNkAUs8.cjs → transform-DJkt81VY.cjs} +3 -3
  280. package/dist/src/{transform-EtD4jAWi.js → transform-DtTfiGoh.js} +3 -3
  281. package/dist/src/{transform-DmvYBRll.js → transform-Wp6s_5QE.js} +3 -3
  282. package/dist/src/{util-IYzs5Y04.cjs → util-BHCAeuXx.cjs} +3 -3
  283. package/dist/src/{util--WMgw7wM.js → util-CMrHV35u.js} +3 -3
  284. package/dist/src/{util-SPsvFONY.cjs → util-COnzevXE.cjs} +3 -3
  285. package/dist/src/{util-LKTmNsMQ.js → util-CYev3d-r.js} +16 -3
  286. package/dist/src/{util-Df8YMvS1.js → util-DGqkTb2-.js} +4 -4
  287. package/dist/src/{util-CN8om2rz.cjs → util-DNtUsus_.cjs} +4 -4
  288. package/dist/src/{util-Bx677_k2.js → util-DRfqa4xz.js} +3 -3
  289. package/dist/src/{util-DiQ3QvBB.js → util-DTq3jq2z.js} +3 -3
  290. package/dist/src/{util-5WnCSb0h.js → util-DeY58psG.js} +16 -3
  291. package/dist/src/{util-DNl96nNs.js → util-DpV6KT5i.js} +4 -4
  292. package/dist/src/{util-I-Rf-KaD.js → util-DwNJzqOV.js} +3 -3
  293. package/dist/src/{util-kDURhgJW.js → util-ETfU_sS9.js} +4 -4
  294. package/dist/src/{util-BSIuSLVK.cjs → util-NYQvo1C7.cjs} +16 -3
  295. package/dist/src/{util-CoQWM76y.js → util-X4KQgyVD.js} +3 -3
  296. package/dist/src/{util-DURocbYR.js → util-jZRrXe1P.js} +3 -3
  297. package/dist/src/{util-efByNxcr.js → util-o2Qg5rZv.js} +16 -3
  298. package/dist/src/{version-BK20a4sw.js → version-CHR-EFec.js} +2 -2
  299. package/dist/src/{version-eRkNuGv8.js → version-F0YDgb7J.js} +2 -2
  300. package/dist/src/{version-BWCSaByA.cjs → version-VzUqOBZk.cjs} +2 -2
  301. package/dist/src/{version-lpHV_53E.js → version-qVEN5qCm.js} +2 -2
  302. package/dist/tsconfig.tsbuildinfo +1 -1
  303. package/package.json +5 -5
  304. package/dist/src/app/assets/Report-BNHJKN35.js +0 -1
  305. package/dist/src/cache-Cf7b4pWE.js +0 -3
  306. package/dist/src/cloud-p96PA4MH.js +0 -3
  307. package/dist/src/codex-sdk-BGjVAk23.js +0 -3
  308. package/dist/src/evalResult-DqzsS6_W.js +0 -3
  309. package/dist/src/evaluator-DNdJF1Gv.js +0 -3
  310. package/dist/src/fetch-_YgGd2qv.js +0 -3
  311. package/dist/src/graders-BDT7dif6.js +0 -3
  312. package/dist/src/server-BaLytskk.js +0 -3
  313. package/dist/src/telemetry-ByPqDcKC.js +0 -3
package/dist/src/index.js CHANGED
@@ -1,47 +1,47 @@
1
1
  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, 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-Ct2S6Yx-.js";
2
2
  import { t as invariant } from "./invariant-Ddh24eXh.js";
3
3
  import { $ as riskCategorySeverityMap, A as RedteamConfigSchema, At as DocumentMediaInjectionPlacementValues, B as isUuid, Bt as getInputDescription, C as TestGeneratorConfigSchema, Ct as CODING_AGENT_CORE_PLUGINS, D as VarsSchema, Dt as BaseTokenUsageSchema, E as UnifiedConfigSchema, F as PartialGenerationError, Ft as InputDefinitionSchema, G as STRATEGY_COLLECTIONS, Gt as isProviderOptions, Ht as normalizeInputDefinition, I as PluginConfigSchema, It as InputTypeSchema, K as STRATEGY_COLLECTION_MAPPINGS, L as PolicyObjectSchema, Lt as InputTypeValues, Mt as DocxInjectionPlacementValues, N as ProvidersSchema, Nt as InputConfigSchema, O as isGradingResult, Ot as CompletionTokenDetailsSchema, P as ConversationMessageSchema, Pt as InputDefinitionObjectSchema, R as StrategyConfigSchema, Rt as InputsSchema, S as TestCasesWithMetadataSchema, St as UNALIGNED_PROVIDER_HARM_PLUGINS, T as TestSuiteSchema, U as DEFAULT_STRATEGIES, Ut as normalizeInputs, Vt as getInputType, Wt as isApiProvider, X as Severity, Y as isFanoutStrategy, Z as categoryAliases, _ as ScenarioSchema, _t as REDTEAM_PROVIDER_HARM_PLUGINS, a as AtomicTestCaseSchema, at as FINANCIAL_PLUGINS, b as TestCaseWithVarsFileSchema, bt as TEEN_SAFETY_PLUGINS, c as CompletedPromptSchema, ct as INSURANCE_PLUGINS, d as EvaluateOptionsSchema, dt as MEDICAL_PLUGINS, et as ALIASED_PLUGIN_MAPPINGS, f as GradingConfigSchema, ft as MULTI_INPUT_EXCLUDED_PLUGINS, g as ResultFailureReason, gt as PLUGIN_CATEGORIES, h as OutputFileExtension, ht as PII_PLUGINS, i as AssertionTypeSchema, it as DEFAULT_PLUGINS, j as PromptSchema, jt as DocxInjectionPlacementSchema, k as isResultFailureReason, kt as DocumentMediaInjectionPlacementSchema, l as DerivedMetricSchema, lt as LLAMA_GUARD_ENABLED_CATEGORIES, m as OutputConfigSchema, mt as PHARMACY_PLUGINS, n as AssertionSchema, nt as CANARY_BREAKING_STRATEGY_IDS, o as BaseAssertionTypesSchema, ot as FOUNDATION_PLUGINS, p as NotPrefixedAssertionTypesSchema, pt as MULTI_INPUT_VAR, q as getDefaultNFanout, r as AssertionSetSchema, rt as DATASET_EXEMPT_PLUGINS, s as CommandLineOptionsSchema, st as HARM_PLUGINS, t as AssertionOrSetSchema, tt as BIAS_PLUGINS, u as EvalResultsFilterMode, ut as LLAMA_GUARD_REPLICATE_PROVIDER, v as SpecialAssertionTypesSchema, vt as REMOTE_ONLY_PLUGIN_IDS, w as TestSuiteConfigSchema, wt as CODING_AGENT_PLUGINS, x as TestCasesWithMetadataPromptSchema, xt as TELECOM_PLUGINS, y as TestCaseSchema, zt as buildInputPromptDescription } from "./types-D6glLbdF.js";
4
- import { F as getShareApiBaseUrl, I as getShareViewBaseUrl, L as FILE_METADATA_KEY, N as TERMINAL_MAX_WIDTH, P as getDefaultShareViewBaseUrl, R as HUMAN_ASSERTION_TYPE, T as cloudConfig, _ as isPromptfooSampleTarget, b as parseChatPrompt, c as getCurrentTimestamp, l as sleep, n as fetchWithRetries, p as REQUEST_TIMEOUT_MS, r as fetchWithTimeout, t as fetchWithProxy, w as CloudConfig } from "./fetch-It34O8Ur.js";
5
- import { n as VERSION } from "./version-lpHV_53E.js";
4
+ import { F as getShareApiBaseUrl, I as getShareViewBaseUrl, L as FILE_METADATA_KEY, N as TERMINAL_MAX_WIDTH, P as getDefaultShareViewBaseUrl, R as HUMAN_ASSERTION_TYPE, T as cloudConfig, _ as isPromptfooSampleTarget, b as parseChatPrompt, c as getCurrentTimestamp, l as sleep, n as fetchWithRetries, p as REQUEST_TIMEOUT_MS, r as fetchWithTimeout, t as fetchWithProxy, w as CloudConfig } from "./fetch-Doks14zQ.js";
5
+ import { n as VERSION } from "./version-qVEN5qCm.js";
6
6
  import { i as isJavascriptFile } from "./fileExtensions-CXRfY3Ss.js";
7
- import { c as setUserEmail, i as getUserEmail, o as isLoggedIntoCloud, r as getAuthor, s as promptForEmailUnverified, t as checkEmailStatusAndMaybeExit } from "./accounts-Ca7WIoPY.js";
7
+ import { c as setUserEmail, i as getUserEmail, o as isLoggedIntoCloud, r as getAuthor, s as promptForEmailUnverified, t as checkEmailStatusAndMaybeExit } from "./accounts-DAv_0iE7.js";
8
8
  import { r as importModule, t as getDirectory } from "./esm-BTK1W7lG.js";
9
9
  import { a as extractVariablesFromTemplates, i as extractVariablesFromTemplate, o as getNunjucksEngine, r as analyzeTemplateReference, t as renderEnvOnlyInObject } from "./render-DFfDeYUK.js";
10
10
  import { t as providerRegistry } from "./providerRegistry-DHcFiVWX.js";
11
- import { a as getRemoteHealthUrl, l as shouldGenerateRemote, n as getRemoteGenerationExplicitlyDisabledError, r as getRemoteGenerationUrl, s as neverGenerateRemote } from "./remoteGeneration-DsaSwmG2.js";
12
- import { r as promptYesNo } from "./server-CMJD10J4.js";
13
- import { a as getCloudDatabaseId, c as getPluginSeverityOverridesFromCloud, d as isCloudProvider, i as checkCloudPermissions, o as getEvalConfigFromCloud, p as resolveTeamId, s as getOrgContext } from "./storage-CD-GWAdx.js";
11
+ import { a as getRemoteHealthUrl, l as shouldGenerateRemote, n as getRemoteGenerationExplicitlyDisabledError, r as getRemoteGenerationUrl, s as neverGenerateRemote } from "./remoteGeneration-CJC3E0aW.js";
12
+ import { r as promptYesNo } from "./server-CbiJppij.js";
13
+ import { a as getCloudDatabaseId, c as getPluginSeverityOverridesFromCloud, d as isCloudProvider, i as checkCloudPermissions, o as getEvalConfigFromCloud, p as resolveTeamId, s as getOrgContext } from "./storage-B2Ql_oq4.js";
14
14
  import { r as runPython } from "./pythonUtils-D0BYebvX.js";
15
- import { A as readFilters, M as loadFunction, N as parseFileUrl, O as maybeLoadToolsFromExternalFile, T as maybeLoadFromExternalFile, _ as isProviderAllowed, a as setupEnv, b as normalizeProviderRef, c as filterRuntimeVars, d as checkProviderApiKeys, f as doesProviderRefMatch, g as isOpenAiProvider, h as isGoogleProvider, i as fetchCsvFromGoogleSheet, j as readOutput, l as getTestCaseDeduplicationKey, m as isAnthropicProvider, n as writeMultipleOutputs, o as deduplicateTestCases, p as getProviderDescription, r as writeOutput, s as extractRuntimeVars, t as printBorder, u as resultIsForTestCase, w as maybeLoadConfigFromExternalFile } from "./util-Bx677_k2.js";
15
+ import { A as readFilters, M as loadFunction, N as parseFileUrl, O as maybeLoadToolsFromExternalFile, T as maybeLoadFromExternalFile, _ as isProviderAllowed, a as setupEnv, b as normalizeProviderRef, c as filterRuntimeVars, d as checkProviderApiKeys, f as doesProviderRefMatch, g as isOpenAiProvider, h as isGoogleProvider, i as fetchCsvFromGoogleSheet, j as readOutput, l as getTestCaseDeduplicationKey, m as isAnthropicProvider, n as writeMultipleOutputs, o as deduplicateTestCases, p as getProviderDescription, r as writeOutput, s as extractRuntimeVars, t as printBorder, u as resultIsForTestCase, w as maybeLoadConfigFromExternalFile } from "./util-DRfqa4xz.js";
16
16
  import { n as sha256, t as randomSequence } from "./createHash-BtbSX3mj.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-DIXbtkNO.js";
18
- import { t as OpenAiChatCompletionProvider } from "./chat-Dabu84Br.js";
19
- import { h as validateFunctionCall } from "./transform-DmvYBRll.js";
20
- import { l as validateFunctionCall$1 } from "./util-LKTmNsMQ.js";
21
- import { _ as AIStudioChatProvider, a as resolveProvider, f as MCPProvider, g as GoogleLiveProvider, h as VertexChatProvider, n as loadApiProvider, o as resolveProviderConfigs, r as loadApiProviders, t as getProviderIds } from "./providers-DVYRZP4E.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-DdriHsNX.js";
18
+ import { t as OpenAiChatCompletionProvider } from "./chat-BBEnnpQk.js";
19
+ import { h as validateFunctionCall } from "./transform-Wp6s_5QE.js";
20
+ import { l as validateFunctionCall$1 } from "./util-CYev3d-r.js";
21
+ import { _ as AIStudioChatProvider, a as resolveProvider, f as MCPProvider, g as GoogleLiveProvider, h as VertexChatProvider, n as loadApiProvider, o as resolveProviderConfigs, r as loadApiProviders, t as getProviderIds } from "./providers-BGc7tDtQ.js";
22
22
  import { a as createEmptyTokenUsage, i as createEmptyAssertions, n as accumulateResponseTokenUsage, o as normalizeTokenUsage, r as accumulateTokenUsage, t as accumulateAssertionTokenUsage } from "./tokenUsageUtils-CmnQ0G2m.js";
23
23
  import { t as ellipsize } from "./text-DwYK5EBn.js";
24
- import { t as telemetry } from "./telemetry-DwX9XUN5.js";
24
+ import { t as telemetry } from "./telemetry-C4bX-6Sr.js";
25
25
  import { a as evalsTable, c as evalsToTagsTable, d as tagsTable, i as evalResultsTable, l as promptsTable, m as getDbSignalPath, o as evalsToDatasetsTable, p as getDb, r as datasetsTable, s as evalsToPromptsTable } from "./tables-CRSXQ2Ke.js";
26
26
  import { t as getBlobByHash } from "./blobs-Dwef1Ao1.js";
27
27
  import { t as getProcessShim } from "./processShim-BcGzU8fY.js";
28
28
  import { n as loadFromPackage, t as isPackagePath } from "./packageParser-CgE-ziRo.js";
29
29
  import { n as runRuby } from "./rubyUtils-CnlW8AYb.js";
30
- import { n as materializeInputVariablesWithMetadata, t as buildPromptInputDescriptions } from "./inputVariables-DUGMb9Ka.js";
31
- import { a as extractPromptFromTags, c as isBasicRefusal, i as extractMaterializedVariablesFromJsonWithMetadata, n as extractGoalFromPrompt, o as getSessionId, r as extractInputVarsFromPrompt, s as getShortPluginId } from "./util-DNl96nNs.js";
32
- import { n as PromptfooHarmfulCompletionProvider } from "./promptfoo-Cm4hiy1Y.js";
33
- import { $ as readProviderPromptMap, A as ExcessiveAgencyPlugin, At as withProviderCallExecutionContext, B as retryWithDeduplication, C as PlinyPlugin, Ct as processFileReference, D as ImitationPlugin, Dt as getAndCheckProvider, E as IntentPlugin, Et as callProviderWithContext, F as BeavertailsPlugin, G as matchesFactuality, H as fetchHuggingFaceDataset, I as AegisPlugin, J as matchesPiScore, K as matchesGEval, L as RedteamGraderBase, M as DebugAccessPlugin, N as CrossSessionLeakPlugin, O as HarmbenchPlugin, Ot as getGradingProvider, P as ContractPlugin, Q as readPrompts, R as RedteamPluginBase, S as makeInlinePolicyIdSync, St as loadFromJavaScriptFile, T as OverreliancePlugin, Tt as DEFAULT_ANTHROPIC_MODEL, U as isGraderFailure, V as sampleArray, W as matchesClosedQa, X as doRemoteGrading, Y as matchesTrajectoryGoalSuccess, Z as processPrompts, _ as PromptExtractionPlugin, _t as normalizeMatcherTokenUsage, a as VLGuardPlugin, at as CONTEXT_FAITHFULNESS_NLI_STATEMENTS, b as determinePolicyTypeFromId, bt as coerceString, c as ToxicChatPlugin, ct as CONTEXT_RECALL_NOT_ATTRIBUTED_TOKEN, d as TeenSafetyDangerousRoleplayPlugin, dt as loadRubricPrompt, et as DEFAULT_WEB_SEARCH_PROMPT, f as TeenSafetyDangerousContentPlugin, ft as renderLlmRubricPrompt, g as RbacPlugin, gt as fail, h as ShellInjectionPlugin, ht as euclideanDistance, i as VLSUPlugin, it as CONTEXT_FAITHFULNESS_LONGFORM, j as DivergentRepetitionPlugin, k as HallucinationPlugin, kt as getProviderCallExecutionContext, l as ToolDiscoveryPlugin, lt as CONTEXT_RELEVANCE, m as SqlInjectionPlugin, mt as dotProduct, n as getGraderById, nt as SUGGEST_PROMPTS_SYSTEM_MESSAGE, o as UnverifiableClaimsPlugin, ot as CONTEXT_RECALL, p as TeenSafetyAgeRestrictedGoodsAndServicesPlugin, pt as cosineSimilarity, q as matchesLlmRubric, rt as ANSWER_RELEVANCY_GENERATE, s as UnsafeBenchPlugin, st as CONTEXT_RECALL_ATTRIBUTED_TOKEN, t as GRADERS, tt as SELECT_BEST_PROMPT, u as TeenSafetyHarmfulBodyIdealsPlugin, ut as CONTEXT_RELEVANCE_BAD, v as PoliticsPlugin, vt as splitIntoSentences, w as getPiiLeakTestsForCategory, wt as getDefaultProviders, x as isValidPolicyObject, xt as getFinalTest, y as PolicyPlugin, yt as tryParse, z as getCustomPolicies } from "./graders-BX0f2tvS.js";
34
- import { f as redteamProviderManager, g as createProviderRateLimitOptions, h as createRateLimitRegistry, m as TokenUsageTracker } from "./shared-D6IjElRI.js";
30
+ import { t as buildPromptInputDescriptions } from "./inputVariables-DUGMb9Ka.js";
31
+ import { a as extractPromptFromTags, c as isBasicRefusal, i as extractMaterializedVariablesFromJsonWithMetadata, n as extractGoalFromPrompt, o as getSessionId, s as getShortPluginId } from "./util-DpV6KT5i.js";
32
+ import { a as assertRemoteMaterializationHandled, l as requiresRemoteMaterialization, n as PromptfooHarmfulCompletionProvider } from "./promptfoo-CqEpj6Sr.js";
33
+ import { $ as readProviderPromptMap, A as ExcessiveAgencyPlugin, At as withProviderCallExecutionContext, B as retryWithDeduplication, C as PlinyPlugin, Ct as processFileReference, D as ImitationPlugin, Dt as getAndCheckProvider, E as IntentPlugin, Et as callProviderWithContext, F as BeavertailsPlugin, G as matchesFactuality, H as fetchHuggingFaceDataset, I as AegisPlugin, J as matchesPiScore, K as matchesGEval, L as RedteamGraderBase, M as DebugAccessPlugin, N as CrossSessionLeakPlugin, O as HarmbenchPlugin, Ot as getGradingProvider, P as ContractPlugin, Q as readPrompts, R as RedteamPluginBase, S as makeInlinePolicyIdSync, St as loadFromJavaScriptFile, T as OverreliancePlugin, Tt as DEFAULT_ANTHROPIC_MODEL, U as isGraderFailure, V as sampleArray, W as matchesClosedQa, X as doRemoteGrading, Y as matchesTrajectoryGoalSuccess, Z as processPrompts, _ as PromptExtractionPlugin, _t as normalizeMatcherTokenUsage, a as VLGuardPlugin, at as CONTEXT_FAITHFULNESS_NLI_STATEMENTS, b as determinePolicyTypeFromId, bt as coerceString, c as ToxicChatPlugin, ct as CONTEXT_RECALL_NOT_ATTRIBUTED_TOKEN, d as TeenSafetyDangerousRoleplayPlugin, dt as loadRubricPrompt, et as DEFAULT_WEB_SEARCH_PROMPT, f as TeenSafetyDangerousContentPlugin, ft as renderLlmRubricPrompt, g as RbacPlugin, gt as fail, h as ShellInjectionPlugin, ht as euclideanDistance, i as VLSUPlugin, it as CONTEXT_FAITHFULNESS_LONGFORM, j as DivergentRepetitionPlugin, k as HallucinationPlugin, kt as getProviderCallExecutionContext, l as ToolDiscoveryPlugin, lt as CONTEXT_RELEVANCE, m as SqlInjectionPlugin, mt as dotProduct, n as getGraderById, nt as SUGGEST_PROMPTS_SYSTEM_MESSAGE, o as UnverifiableClaimsPlugin, ot as CONTEXT_RECALL, p as TeenSafetyAgeRestrictedGoodsAndServicesPlugin, pt as cosineSimilarity, q as matchesLlmRubric, rt as ANSWER_RELEVANCY_GENERATE, s as UnsafeBenchPlugin, st as CONTEXT_RECALL_ATTRIBUTED_TOKEN, t as GRADERS, tt as SELECT_BEST_PROMPT, u as TeenSafetyHarmfulBodyIdealsPlugin, ut as CONTEXT_RELEVANCE_BAD, v as PoliticsPlugin, vt as splitIntoSentences, w as getPiiLeakTestsForCategory, wt as getDefaultProviders, x as isValidPolicyObject, xt as getFinalTest, y as PolicyPlugin, yt as tryParse, z as getCustomPolicies } from "./graders-KXzjnIim.js";
34
+ import { f as redteamProviderManager, g as createProviderRateLimitOptions, h as createRateLimitRegistry, m as TokenUsageTracker } from "./shared-CSIGeGLl.js";
35
35
  import { i as generateIdFromPrompt, t as hashPrompt } from "./utils-BGY69tk_.js";
36
36
  import { a as getTransformLabel, i as getTransformErrorMessage, n as TRANSFORM_KEYS, o as transform, r as TransformInputType, t as INLINE_FUNCTION_LABEL } from "./transform-CGt7Kt3y2.js";
37
37
  import { t as getTraceStore } from "./store-HpopRVzl.js";
38
- import { n as isBlobStorageEnabled, t as extractAndStoreBinaryData } from "./extractor-CxRtnaHl.js";
38
+ import { n as isBlobStorageEnabled, t as extractAndStoreBinaryData } from "./extractor-D3Fv_Tdh.js";
39
39
  import { i as throwIfTargetPromptExceedsMaxChars, n as getGeneratedPromptOverLimit, r as getMaxCharsPerMessageModifierValue, t as MAX_CHARS_PER_MESSAGE_MODIFIER_KEY } from "./promptLength-B9nZEfO6.js";
40
- import { n as checkExfilTracking } from "./indirectWebPwn-CbjUG0rh.js";
40
+ import { n as checkExfilTracking } from "./indirectWebPwn-CiWB-vVH.js";
41
41
  import { n as getFirstStringAttribute, r as getToolNameFromAttributes, t as TOOL_ARGUMENT_ATTRIBUTE_KEYS } from "./toolAttributes-DJ9ZEKXD.js";
42
- import { i as filterFiniteScores, n as renderPrompt, r as runExtensionHook, t as collectFileMetadata } from "./evaluatorHelpers-DuqFFfq7.js";
43
- import { r as sanitizeProvider, t as EvalResult } from "./evalResult-2RRJvFyB.js";
44
- import { i as pluginMatchesStrategyTargets, n as loadStrategy, r as validateStrategies, t as Strategies } from "./strategies-CiSeroPH.js";
42
+ import { i as filterFiniteScores, n as renderPrompt, r as runExtensionHook, t as collectFileMetadata } from "./evaluatorHelpers-CrRObe2z.js";
43
+ import { r as sanitizeProvider, t as EvalResult } from "./evalResult-PGqEbasb.js";
44
+ import { i as pluginMatchesStrategyTargets, n as loadStrategy, r as validateStrategies, t as Strategies } from "./strategies-CD1gHeeQ.js";
45
45
  import * as fs$2 from "fs";
46
46
  import fs, { createWriteStream } from "fs";
47
47
  import * as path$2 from "path";
@@ -6313,7 +6313,7 @@ async function resolveDefaultTestProvider(defaultTest, testCase) {
6313
6313
  const defaultProvider = defaultTest.provider;
6314
6314
  if (isApiProvider(defaultProvider)) return defaultProvider;
6315
6315
  if (typeof defaultProvider === "object" && defaultProvider.id) {
6316
- const { loadApiProvider } = await import("./providers-DVYRZP4E.js").then((n) => n.i);
6316
+ const { loadApiProvider } = await import("./providers-BGc7tDtQ.js").then((n) => n.i);
6317
6317
  return loadApiProvider(typeof defaultProvider.id === "function" ? defaultProvider.id() : defaultProvider.id, { options: defaultProvider });
6318
6318
  }
6319
6319
  return defaultProvider;
@@ -6473,7 +6473,7 @@ function buildRepeatCacheContextByTestIdx(runEvalOptions) {
6473
6473
  async function filterCompletedResumeSteps(runEvalOptions, evalRecord) {
6474
6474
  if (!state.resume || !evalRecord.persisted) return;
6475
6475
  try {
6476
- const { default: EvalResult } = await import("./evalResult-2RRJvFyB.js").then((n) => n.n);
6476
+ const { default: EvalResult } = await import("./evalResult-PGqEbasb.js").then((n) => n.n);
6477
6477
  const completedPairs = await EvalResult.getCompletedIndexPairs(evalRecord.id, { excludeErrors: state.retryMode });
6478
6478
  const originalCount = runEvalOptions.length;
6479
6479
  for (let i = runEvalOptions.length - 1; i >= 0; i--) {
@@ -12118,6 +12118,7 @@ async function fetchRemoteTestCases(key, purpose, injectVar, n, config) {
12118
12118
  logger.error(`Error generating test cases for ${key}: ${statusText} ${JSON.stringify(data)}`);
12119
12119
  return [];
12120
12120
  }
12121
+ if (requiresRemoteMaterialization(config?.inputs)) assertRemoteMaterializationHandled(data, `Remote plugin generation for ${key}`);
12121
12122
  const ret = data.result;
12122
12123
  logger.debug(`Received remote generation for ${key}:\n${JSON.stringify(ret)}`);
12123
12124
  return ret;
@@ -12126,31 +12127,6 @@ async function fetchRemoteTestCases(key, purpose, injectVar, n, config) {
12126
12127
  return [];
12127
12128
  }
12128
12129
  }
12129
- async function materializeRemoteTestCaseInputs({ config, injectVar, pluginId, provider, purpose, testCases }) {
12130
- const inputs = config.inputs;
12131
- if (!inputs || Object.keys(inputs).length === 0) return testCases;
12132
- return Promise.all(testCases.map(async (testCase, materializationIndex) => {
12133
- const inputVars = extractInputVarsFromPrompt(String(testCase.vars?.[injectVar] ?? ""), inputs);
12134
- if (!inputVars) return testCase;
12135
- const materializedVars = await materializeInputVariablesWithMetadata(inputVars, inputs, {
12136
- materializationIndex,
12137
- pluginId,
12138
- provider,
12139
- purpose
12140
- });
12141
- return {
12142
- ...testCase,
12143
- vars: {
12144
- ...testCase.vars || {},
12145
- ...materializedVars.vars
12146
- },
12147
- metadata: {
12148
- ...testCase.metadata || {},
12149
- ...materializedVars.metadata ? { inputMaterialization: materializedVars.metadata } : {}
12150
- }
12151
- };
12152
- }));
12153
- }
12154
12130
  function createPluginFactory(PluginClass, key, validate) {
12155
12131
  return {
12156
12132
  key,
@@ -12162,14 +12138,7 @@ function createPluginFactory(PluginClass, key, validate) {
12162
12138
  return new PluginClass(provider, purpose, injectVar, configWithDefaults).generateTests(n, delayMs);
12163
12139
  }
12164
12140
  const pluginId = getShortPluginId(key);
12165
- const testCases = await materializeRemoteTestCaseInputs({
12166
- config: configWithDefaults ?? {},
12167
- injectVar,
12168
- pluginId,
12169
- provider,
12170
- purpose,
12171
- testCases: await fetchRemoteTestCases(key, purpose, injectVar, n, configWithDefaults ?? {})
12172
- });
12141
+ const testCases = await fetchRemoteTestCases(key, purpose, injectVar, n, configWithDefaults ?? {});
12173
12142
  const computedModifiers = computeModifiersFromConfig(configWithDefaults);
12174
12143
  return testCases.map((testCase) => ({
12175
12144
  ...testCase,
@@ -12256,14 +12225,7 @@ const piiPlugins = PII_PLUGINS.map((category) => ({
12256
12225
  action: async (params) => {
12257
12226
  if (shouldGenerateRemote()) {
12258
12227
  const pluginId = getShortPluginId(category);
12259
- const testCases = await materializeRemoteTestCaseInputs({
12260
- config: params.config ?? {},
12261
- injectVar: params.injectVar,
12262
- pluginId,
12263
- provider: params.provider,
12264
- purpose: params.purpose,
12265
- testCases: await fetchRemoteTestCases(category, params.purpose, params.injectVar, params.n, params.config ?? {})
12266
- });
12228
+ const testCases = await fetchRemoteTestCases(category, params.purpose, params.injectVar, params.n, params.config ?? {});
12267
12229
  const computedModifiers = computeModifiersFromConfig(params.config);
12268
12230
  return testCases.map((testCase) => ({
12269
12231
  ...testCase,
@@ -12295,14 +12257,7 @@ const biasPlugins = BIAS_PLUGINS.map((category) => ({
12295
12257
  return [];
12296
12258
  }
12297
12259
  const pluginId = getShortPluginId(category);
12298
- const testCases = await materializeRemoteTestCaseInputs({
12299
- config: params.config ?? {},
12300
- injectVar: params.injectVar,
12301
- pluginId,
12302
- provider: params.provider,
12303
- purpose: params.purpose,
12304
- testCases: await fetchRemoteTestCases(category, params.purpose, params.injectVar, params.n, params.config ?? {})
12305
- });
12260
+ const testCases = await fetchRemoteTestCases(category, params.purpose, params.injectVar, params.n, params.config ?? {});
12306
12261
  const computedModifiers = computeModifiersFromConfig(params.config);
12307
12262
  return testCases.map((testCase) => ({
12308
12263
  ...testCase,
@@ -12321,21 +12276,14 @@ function createRemotePlugin(key, validate) {
12321
12276
  return {
12322
12277
  key,
12323
12278
  validate,
12324
- action: async ({ provider, purpose, injectVar, n, config }) => {
12279
+ action: async ({ purpose, injectVar, n, config }) => {
12325
12280
  const configWithDefaults = applyDefaultRemotePluginConfig(key, config);
12326
12281
  if (neverGenerateRemote()) {
12327
12282
  logger.error(getRemoteGenerationExplicitlyDisabledError(`${key} plugin`));
12328
12283
  return [];
12329
12284
  }
12330
12285
  const pluginId = getShortPluginId(key);
12331
- const testCases = await materializeRemoteTestCaseInputs({
12332
- config: configWithDefaults ?? {},
12333
- injectVar,
12334
- pluginId,
12335
- provider,
12336
- purpose,
12337
- testCases: await fetchRemoteTestCases(key, purpose, injectVar, n, configWithDefaults ?? {})
12338
- });
12286
+ const testCases = await fetchRemoteTestCases(key, purpose, injectVar, n, configWithDefaults ?? {});
12339
12287
  const computedModifiers = computeModifiersFromConfig(configWithDefaults);
12340
12288
  const testsWithMetadata = testCases.map((testCase) => ({
12341
12289
  ...testCase,
@@ -12402,6 +12350,15 @@ async function validateSharpDependency(strategies, plugins, checkSharp = isSharp
12402
12350
  }
12403
12351
  //#endregion
12404
12352
  //#region src/redteam/index.ts
12353
+ const MATERIALIZED_MULTI_INPUT_PROMPT_METADATA_KEY = "__promptfooMaterializedMultiInputPrompt";
12354
+ function getMaterializedMultiInputPromptSnapshot(metadata) {
12355
+ const snapshot = metadata?.[MATERIALIZED_MULTI_INPUT_PROMPT_METADATA_KEY];
12356
+ return typeof snapshot === "string" ? snapshot : void 0;
12357
+ }
12358
+ function getMaterializedMultiInputPromptMetadata(vars) {
12359
+ const prompt = vars?.[MULTI_INPUT_VAR];
12360
+ return typeof prompt === "string" ? { [MATERIALIZED_MULTI_INPUT_PROMPT_METADATA_KEY]: prompt } : void 0;
12361
+ }
12405
12362
  function getPolicyText(metadata) {
12406
12363
  if (!metadata || metadata.policy === void 0 || metadata.policy === null) return;
12407
12364
  const policyValue = metadata.policy;
@@ -12414,12 +12371,19 @@ function getPolicyText(metadata) {
12414
12371
  async function rematerializeStrategyInputVars(testCase, injectVar, provider, purpose, materializationIndex) {
12415
12372
  const inputs = testCase.metadata?.pluginConfig?.inputs;
12416
12373
  const inputMaterialization = testCase.metadata?.inputMaterialization;
12417
- if (!inputs || Object.keys(inputs).length === 0 || !testCase.vars?.[injectVar]) return {
12374
+ const materializedPromptSnapshot = getMaterializedMultiInputPromptSnapshot(testCase.metadata);
12375
+ const currentInjectVar = testCase.vars?.[injectVar];
12376
+ if (!inputs || Object.keys(inputs).length === 0 || !currentInjectVar) return {
12377
+ inputMaterialization,
12378
+ vars: testCase.vars
12379
+ };
12380
+ const promptChangedSinceMaterialization = typeof currentInjectVar === "string" && typeof materializedPromptSnapshot === "string" && currentInjectVar !== materializedPromptSnapshot;
12381
+ if (Boolean(inputMaterialization) && Object.keys(inputs).every((key) => Object.prototype.hasOwnProperty.call(testCase.vars ?? {}, key)) && !promptChangedSinceMaterialization) return {
12418
12382
  inputMaterialization,
12419
12383
  vars: testCase.vars
12420
12384
  };
12421
12385
  try {
12422
- const materializedVars = await extractMaterializedVariablesFromJsonWithMetadata(JSON.parse(String(testCase.vars[injectVar])), inputs, {
12386
+ const materializedVars = await extractMaterializedVariablesFromJsonWithMetadata(JSON.parse(String(currentInjectVar)), inputs, {
12423
12387
  materializationIndex,
12424
12388
  pluginId: String(testCase.metadata?.pluginId || "unknown-plugin"),
12425
12389
  provider,
@@ -12651,7 +12615,8 @@ function addLanguageToPluginMetadata(test, lang, plugin, maxCharsPerMessage, tes
12651
12615
  ...test.metadata?.modifiers,
12652
12616
  ...languageToAdd
12653
12617
  },
12654
- ...languageToAdd
12618
+ ...languageToAdd,
12619
+ ...getMaterializedMultiInputPromptMetadata(test.vars)
12655
12620
  }
12656
12621
  };
12657
12622
  }
@@ -12750,7 +12715,8 @@ async function applyStrategies(testCases, strategies, injectVar, provider, purpo
12750
12715
  ...t?.metadata?.pluginId && { pluginId: t.metadata.pluginId },
12751
12716
  ...t?.metadata?.pluginConfig && { pluginConfig: t.metadata.pluginConfig },
12752
12717
  ...inputMaterialization && { inputMaterialization },
12753
- ...Object.keys(strategyConfig).length > 0 && { strategyConfig }
12718
+ ...Object.keys(strategyConfig).length > 0 && { strategyConfig },
12719
+ ...getMaterializedMultiInputPromptMetadata(vars)
12754
12720
  }
12755
12721
  };
12756
12722
  })));
@@ -13096,14 +13062,21 @@ async function synthesize({ abortSignal, delay, entities: entitiesOverride, inje
13096
13062
  }
13097
13063
  });
13098
13064
  const languageResults = await Promise.allSettled(languagePromises);
13099
- for (const result of languageResults) if (result.status === "fulfilled") {
13065
+ for (const [index, result] of languageResults.entries()) if (result.status === "fulfilled") {
13100
13066
  const { lang, tests, requested, generated } = result.value;
13101
13067
  allPluginTests.push(...tests);
13102
13068
  resultsPerLanguage[lang || "default"] = {
13103
13069
  requested,
13104
13070
  generated
13105
13071
  };
13106
- } else logger.warn(`[Language Processing] Error generating tests for ${plugin.id}: ${result.reason}`);
13072
+ } else {
13073
+ const lang = languages[index];
13074
+ logger.warn(`[Language Processing] Error generating tests for ${plugin.id}: ${result.reason}`);
13075
+ resultsPerLanguage[lang || "default"] = {
13076
+ requested: plugin.numTests,
13077
+ generated: 0
13078
+ };
13079
+ }
13107
13080
  logger.debug(`[Language Processing] Total tests generated for ${plugin.id}: ${allPluginTests.length} (across ${languages.length} language(s))`);
13108
13081
  if (!Array.isArray(allPluginTests) || allPluginTests.length === 0) logger.warn(`Failed to generate tests for ${plugin.id}`);
13109
13082
  else {
@@ -13137,35 +13110,51 @@ async function synthesize({ abortSignal, delay, entities: entitiesOverride, inje
13137
13110
  generated: allPluginTests.length
13138
13111
  };
13139
13112
  } else if (plugin.id.startsWith("file://")) try {
13140
- const customTests = await new CustomPlugin(redteamProvider, purpose, injectVar, plugin.id, resolvePluginConfigWithMaxChars(plugin.config, maxCharsPerMessage)).generateTests(plugin.numTests, delay);
13141
- const testCasesWithMetadata = filterOversizedTestCases(customTests.map((t) => {
13142
- const includePluginConfig = !(t.metadata && Object.hasOwn(t.metadata, "pluginConfig") && t.metadata.pluginConfig === void 0);
13143
- const pluginConfigWithMaxChars = {
13113
+ const languageConfig = plugin.config?.language ?? language;
13114
+ const languages = Array.isArray(languageConfig) ? languageConfig : languageConfig ? [languageConfig] : [void 0];
13115
+ const allCustomTests = [];
13116
+ const resultsPerLanguage = {};
13117
+ const languagePromises = languages.map(async (lang) => {
13118
+ const resolvedConfig = {
13144
13119
  ...resolvePluginConfigWithMaxChars(plugin.config, maxCharsPerMessage),
13145
- ...t.metadata?.pluginConfig ?? {}
13120
+ ...lang ? { language: lang } : {},
13121
+ ...hasMultipleInputs ? { inputs } : {}
13146
13122
  };
13147
- const modifiers = {
13148
- ...buildRedteamModifiers({
13123
+ const customPluginConfig = {
13124
+ ...resolvedConfig,
13125
+ modifiers: buildRedteamModifiers({
13149
13126
  maxCharsPerMessage,
13150
- pluginConfig: pluginConfigWithMaxChars,
13127
+ pluginConfig: resolvedConfig,
13151
13128
  testGenerationInstructions
13152
- }),
13153
- ...t.metadata?.modifiers
13129
+ })
13154
13130
  };
13131
+ 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);
13155
13132
  return {
13156
- ...t,
13157
- metadata: {
13158
- ...t.metadata || {},
13159
- pluginId: plugin.id,
13160
- ...includePluginConfig && { pluginConfig: pluginConfigWithMaxChars },
13161
- severity: plugin.severity || getPluginSeverity(plugin.id, resolvePluginConfig(plugin.config)),
13162
- modifiers
13163
- }
13133
+ lang,
13134
+ tests: testCasesWithMetadata,
13135
+ requested: plugin.numTests,
13136
+ generated: testCasesWithMetadata.length
13137
+ };
13138
+ });
13139
+ const languageResults = await Promise.allSettled(languagePromises);
13140
+ for (const [index, result] of languageResults.entries()) if (result.status === "fulfilled") {
13141
+ const { lang, tests, requested, generated } = result.value;
13142
+ allCustomTests.push(...tests);
13143
+ resultsPerLanguage[lang || "default"] = {
13144
+ requested,
13145
+ generated
13164
13146
  };
13165
- }), injectVar, `Custom plugin ${plugin.id}`, maxCharsPerMessage);
13147
+ } else {
13148
+ const lang = languages[index];
13149
+ logger.warn(`[Language Processing] Error generating tests for custom plugin ${plugin.id}: ${result.reason}`);
13150
+ resultsPerLanguage[lang || "default"] = {
13151
+ requested: plugin.numTests,
13152
+ generated: 0
13153
+ };
13154
+ }
13166
13155
  if (needsGoalExtraction) {
13167
- logger.debug(`Extracting goal for ${testCasesWithMetadata.length} custom tests from ${plugin.id}...`);
13168
- for (const testCase of testCasesWithMetadata) {
13156
+ logger.debug(`Extracting goal for ${allCustomTests.length} custom tests from ${plugin.id}...`);
13157
+ for (const testCase of allCustomTests) {
13169
13158
  const promptVar = testCase.vars?.[injectVar];
13170
13159
  const prompt = Array.isArray(promptVar) ? promptVar[0] : String(promptVar);
13171
13160
  const policy = getPolicyText(testCase.metadata);
@@ -13173,13 +13162,21 @@ async function synthesize({ abortSignal, delay, entities: entitiesOverride, inje
13173
13162
  testCase.metadata.goal = extractedGoal;
13174
13163
  }
13175
13164
  }
13176
- testCases.push(...testCasesWithMetadata);
13177
- logger.debug(`Added ${customTests.length} custom test cases from ${plugin.id}`);
13178
- const displayId = getPluginDisplayId(plugin);
13179
- pluginResults[displayId] = {
13180
- requested: plugin.numTests,
13181
- generated: testCasesWithMetadata.length
13165
+ testCases.push(...allCustomTests);
13166
+ logger.debug(`Added ${allCustomTests.length} custom test cases from ${plugin.id}`);
13167
+ const baseDisplayId = getPluginDisplayId(plugin);
13168
+ if (languages.filter((lang) => lang !== void 0).length > 1) for (const [langKey, result] of Object.entries(resultsPerLanguage)) {
13169
+ const displayId = langKey === "en" ? baseDisplayId : `(${langKey}) ${baseDisplayId}`;
13170
+ pluginResults[displayId] = {
13171
+ requested: result.requested,
13172
+ generated: result.generated
13173
+ };
13174
+ }
13175
+ else pluginResults[baseDisplayId] = {
13176
+ requested: plugin.numTests * languages.length,
13177
+ generated: allCustomTests.length
13182
13178
  };
13179
+ progressBar?.increment(plugin.numTests * languages.length);
13183
13180
  } catch (e) {
13184
13181
  logger.error(`Error generating tests for custom plugin ${plugin.id}: ${e}`);
13185
13182
  const displayId = getPluginDisplayId(plugin);
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { s as logger } from "./logger-BbY6ypFL.js";
3
- import { r as fetchWithRetries } from "./fetch-DXUnXkVU.js";
3
+ import { r as fetchWithRetries } from "./fetch-Cpf1U1nO.js";
4
4
  import { t as invariant } from "./invariant-B2Rf6avk.js";
5
- import { o as getUserEmail } from "./accounts-CjFnOPmb.js";
6
- import { r as getRemoteGenerationUrl } from "./remoteGeneration-B1_XsKXU.js";
5
+ import { o as getUserEmail } from "./accounts-D6IBfEE0.js";
6
+ import { r as getRemoteGenerationUrl } from "./remoteGeneration-D6UjE2JT.js";
7
7
  import { a as createEmptyTokenUsage, n as accumulateResponseTokenUsage } from "./tokenUsageUtils-CDet74yk.js";
8
- import { c as getTargetResponse } from "./shared-9WHQ1oNE.js";
8
+ import { c as getTargetResponse } from "./shared-DNvim54U.js";
9
9
  import { randomUUID } from "node:crypto";
10
10
  //#region src/redteam/providers/indirectWebPwn.ts
11
11
  /**
@@ -257,4 +257,4 @@ var IndirectWebPwnProvider = class {
257
257
  //#endregion
258
258
  export { IndirectWebPwnProvider as default };
259
259
 
260
- //# sourceMappingURL=indirectWebPwn-DBQhOjoD.js.map
260
+ //# sourceMappingURL=indirectWebPwn-B80dLlFC.js.map
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { s as logger } from "./logger-BbY6ypFL.js";
3
- import { r as fetchWithRetries } from "./fetch-DXUnXkVU.js";
4
- import { o as getUserEmail } from "./accounts-CjFnOPmb.js";
5
- import { r as getRemoteGenerationUrl } from "./remoteGeneration-B1_XsKXU.js";
3
+ import { r as fetchWithRetries } from "./fetch-Cpf1U1nO.js";
4
+ import { o as getUserEmail } from "./accounts-D6IBfEE0.js";
5
+ import { r as getRemoteGenerationUrl } from "./remoteGeneration-D6UjE2JT.js";
6
6
  import { createHash, randomUUID } from "node:crypto";
7
7
  //#region src/redteam/strategies/indirectWebPwn.ts
8
8
  /**
@@ -383,4 +383,4 @@ async function transformForPerTurnLayer(testCases, injectVar, config) {
383
383
  //#endregion
384
384
  export { checkExfilTracking as n, addIndirectWebPwnTestCases as t };
385
385
 
386
- //# sourceMappingURL=indirectWebPwn-uyWdHx04.js.map
386
+ //# sourceMappingURL=indirectWebPwn-BMTXXznx.js.map
@@ -1,7 +1,7 @@
1
1
  import { a as logger } from "./logger-KD8JjCRJ.js";
2
- import { n as fetchWithRetries } from "./fetch-BufrQtvR.js";
3
- import { o as getUserEmail } from "./accounts-DanM1wq_.js";
4
- import { r as getRemoteGenerationUrl } from "./remoteGeneration-COpWcmWd.js";
2
+ import { n as fetchWithRetries } from "./fetch-BSSAcMxf.js";
3
+ import { o as getUserEmail } from "./accounts-BWjqwsrf.js";
4
+ import { r as getRemoteGenerationUrl } from "./remoteGeneration--D6WjzUm.js";
5
5
  import { createHash, randomUUID } from "node:crypto";
6
6
  //#region src/redteam/strategies/indirectWebPwn.ts
7
7
  /**
@@ -382,4 +382,4 @@ async function transformForPerTurnLayer(testCases, injectVar, config) {
382
382
  //#endregion
383
383
  export { checkExfilTracking as n, addIndirectWebPwnTestCases as t };
384
384
 
385
- //# sourceMappingURL=indirectWebPwn-tNx9OZ35.js.map
385
+ //# sourceMappingURL=indirectWebPwn-BZFPV7Q9.js.map
@@ -1,11 +1,11 @@
1
1
  require("./rolldown-runtime-D_mwlA32.cjs");
2
2
  const require_logger = require("./logger-cfNpzI4o.cjs");
3
3
  const require_invariant = require("./invariant-QtnLD03y.cjs");
4
- const require_fetch = require("./fetch-Dw4XZHjj.cjs");
5
- const require_accounts = require("./accounts-CmWzeD2d.cjs");
6
- const require_remoteGeneration = require("./remoteGeneration-DS9N3pgB.cjs");
4
+ const require_fetch = require("./fetch-Cfm4EuOB.cjs");
5
+ const require_accounts = require("./accounts-BVz5gHLK.cjs");
6
+ const require_remoteGeneration = require("./remoteGeneration-BpIYlb_O.cjs");
7
7
  const require_tokenUsageUtils = require("./tokenUsageUtils-_B-P8IAi.cjs");
8
- const require_shared = require("./shared-WkgnDkcg.cjs");
8
+ const require_shared = require("./shared-aHWko3P1.cjs");
9
9
  let node_crypto = require("node:crypto");
10
10
  //#region src/redteam/providers/indirectWebPwn.ts
11
11
  /**
@@ -257,4 +257,4 @@ var IndirectWebPwnProvider = class {
257
257
  //#endregion
258
258
  exports.default = IndirectWebPwnProvider;
259
259
 
260
- //# sourceMappingURL=indirectWebPwn-CfQJt3gk.cjs.map
260
+ //# sourceMappingURL=indirectWebPwn-BaEQEOIO.cjs.map
@@ -1,10 +1,10 @@
1
1
  import { a as logger } from "./logger-Ct2S6Yx-.js";
2
2
  import { t as invariant } from "./invariant-Ddh24eXh.js";
3
- import { n as fetchWithRetries } from "./fetch-It34O8Ur.js";
4
- import { i as getUserEmail } from "./accounts-Ca7WIoPY.js";
5
- import { r as getRemoteGenerationUrl } from "./remoteGeneration-DsaSwmG2.js";
3
+ import { n as fetchWithRetries } from "./fetch-Doks14zQ.js";
4
+ import { i as getUserEmail } from "./accounts-DAv_0iE7.js";
5
+ import { r as getRemoteGenerationUrl } from "./remoteGeneration-CJC3E0aW.js";
6
6
  import { a as createEmptyTokenUsage, n as accumulateResponseTokenUsage } from "./tokenUsageUtils-CmnQ0G2m.js";
7
- import { c as getTargetResponse } from "./shared-D6IjElRI.js";
7
+ import { c as getTargetResponse } from "./shared-CSIGeGLl.js";
8
8
  import { randomUUID } from "node:crypto";
9
9
  //#region src/redteam/providers/indirectWebPwn.ts
10
10
  /**
@@ -256,4 +256,4 @@ var IndirectWebPwnProvider = class {
256
256
  //#endregion
257
257
  export { IndirectWebPwnProvider as default };
258
258
 
259
- //# sourceMappingURL=indirectWebPwn-OsXnKejv.js.map
259
+ //# sourceMappingURL=indirectWebPwn-BzpyMnFS.js.map
@@ -1,7 +1,7 @@
1
1
  import { a as logger } from "./logger-Ct2S6Yx-.js";
2
- import { n as fetchWithRetries } from "./fetch-It34O8Ur.js";
3
- import { i as getUserEmail } from "./accounts-Ca7WIoPY.js";
4
- import { r as getRemoteGenerationUrl } from "./remoteGeneration-DsaSwmG2.js";
2
+ import { n as fetchWithRetries } from "./fetch-Doks14zQ.js";
3
+ import { i as getUserEmail } from "./accounts-DAv_0iE7.js";
4
+ import { r as getRemoteGenerationUrl } from "./remoteGeneration-CJC3E0aW.js";
5
5
  import { createHash, randomUUID } from "node:crypto";
6
6
  //#region src/redteam/strategies/indirectWebPwn.ts
7
7
  /**
@@ -382,4 +382,4 @@ async function transformForPerTurnLayer(testCases, injectVar, config) {
382
382
  //#endregion
383
383
  export { checkExfilTracking as n, addIndirectWebPwnTestCases as t };
384
384
 
385
- //# sourceMappingURL=indirectWebPwn-CbjUG0rh.js.map
385
+ //# sourceMappingURL=indirectWebPwn-CiWB-vVH.js.map
@@ -1,8 +1,8 @@
1
1
  require("./rolldown-runtime-D_mwlA32.cjs");
2
2
  const require_logger = require("./logger-cfNpzI4o.cjs");
3
- const require_fetch = require("./fetch-Dw4XZHjj.cjs");
4
- const require_accounts = require("./accounts-CmWzeD2d.cjs");
5
- const require_remoteGeneration = require("./remoteGeneration-DS9N3pgB.cjs");
3
+ const require_fetch = require("./fetch-Cfm4EuOB.cjs");
4
+ const require_accounts = require("./accounts-BVz5gHLK.cjs");
5
+ const require_remoteGeneration = require("./remoteGeneration-BpIYlb_O.cjs");
6
6
  let node_crypto = require("node:crypto");
7
7
  //#region src/redteam/strategies/indirectWebPwn.ts
8
8
  /**
@@ -394,4 +394,4 @@ Object.defineProperty(exports, "checkExfilTracking", {
394
394
  }
395
395
  });
396
396
 
397
- //# sourceMappingURL=indirectWebPwn-BJ22AbQa.cjs.map
397
+ //# sourceMappingURL=indirectWebPwn-D7NA9Nsv.cjs.map
@@ -1,10 +1,10 @@
1
1
  import { a as logger } from "./logger-KD8JjCRJ.js";
2
- import { n as fetchWithRetries } from "./fetch-BufrQtvR.js";
2
+ import { n as fetchWithRetries } from "./fetch-BSSAcMxf.js";
3
3
  import { t as invariant } from "./invariant-DIYf9sP1.js";
4
- import { o as getUserEmail } from "./accounts-DanM1wq_.js";
5
- import { r as getRemoteGenerationUrl } from "./remoteGeneration-COpWcmWd.js";
4
+ import { o as getUserEmail } from "./accounts-BWjqwsrf.js";
5
+ import { r as getRemoteGenerationUrl } from "./remoteGeneration--D6WjzUm.js";
6
6
  import { a as createEmptyTokenUsage, n as accumulateResponseTokenUsage } from "./tokenUsageUtils-BjVkdk18.js";
7
- import { c as getTargetResponse } from "./shared-7pmVZLNO.js";
7
+ import { c as getTargetResponse } from "./shared-CRq0gGVf.js";
8
8
  import { randomUUID } from "node:crypto";
9
9
  //#region src/redteam/providers/indirectWebPwn.ts
10
10
  /**
@@ -256,4 +256,4 @@ var IndirectWebPwnProvider = class {
256
256
  //#endregion
257
257
  export { IndirectWebPwnProvider as default };
258
258
 
259
- //# sourceMappingURL=indirectWebPwn-02ZIghCS.js.map
259
+ //# sourceMappingURL=indirectWebPwn-o_bEFMjP.js.map