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
@@ -6,47 +6,47 @@ const require_rolldown_runtime = require("./rolldown-runtime-D_mwlA32.cjs");
6
6
  const require_logger = require("./logger-cfNpzI4o.cjs");
7
7
  const require_invariant = require("./invariant-QtnLD03y.cjs");
8
8
  const require_types = require("./types-CxJvaY2S.cjs");
9
- const require_fetch = require("./fetch-Dw4XZHjj.cjs");
10
- const require_version = require("./version-BWCSaByA.cjs");
9
+ const require_fetch = require("./fetch-Cfm4EuOB.cjs");
10
+ const require_version = require("./version-VzUqOBZk.cjs");
11
11
  const require_fileExtensions = require("./fileExtensions-BhdwzYaD.cjs");
12
- const require_accounts = require("./accounts-CmWzeD2d.cjs");
12
+ const require_accounts = require("./accounts-BVz5gHLK.cjs");
13
13
  const require_esm = require("./esm-BIKakvNa.cjs");
14
14
  const require_render = require("./render-BNTrbmBw.cjs");
15
15
  const require_providerRegistry = require("./providerRegistry-CZO_w7ue.cjs");
16
- const require_remoteGeneration = require("./remoteGeneration-DS9N3pgB.cjs");
17
- const require_server = require("./server-B8rqV126.cjs");
18
- const require_storage = require("./storage-CA-v9V2v.cjs");
16
+ const require_remoteGeneration = require("./remoteGeneration-BpIYlb_O.cjs");
17
+ const require_server = require("./server-BHOEL8p8.cjs");
18
+ const require_storage = require("./storage-A4WnAeN3.cjs");
19
19
  const require_pythonUtils = require("./pythonUtils-Cokhluq3.cjs");
20
- const require_util = require("./util-SPsvFONY.cjs");
20
+ const require_util = require("./util-COnzevXE.cjs");
21
21
  const require_createHash = require("./createHash-CSiqnK5P.cjs");
22
- const require_cache = require("./cache-CPGUA4Yl.cjs");
23
- const require_chat = require("./chat-DxTDQ83C.cjs");
24
- const require_transform = require("./transform-DhNkAUs8.cjs");
25
- const require_util$1 = require("./util-BSIuSLVK.cjs");
26
- const require_providers = require("./providers-BDVVIQM6.cjs");
22
+ const require_cache = require("./cache-h5MWOBZI.cjs");
23
+ const require_chat = require("./chat-DSyYuTYT.cjs");
24
+ const require_transform = require("./transform-DJkt81VY.cjs");
25
+ const require_util$1 = require("./util-NYQvo1C7.cjs");
26
+ const require_providers = require("./providers-V6RBuieY.cjs");
27
27
  const require_tokenUsageUtils = require("./tokenUsageUtils-_B-P8IAi.cjs");
28
28
  const require_text = require("./text-nywWsRBM.cjs");
29
- const require_telemetry = require("./telemetry-CJ7FnCsc.cjs");
29
+ const require_telemetry = require("./telemetry-C_ImlCOk.cjs");
30
30
  const require_tables = require("./tables-DBIJU0WE.cjs");
31
31
  const require_blobs = require("./blobs-B0977K1O.cjs");
32
32
  const require_processShim = require("./processShim-DSY9BV2T.cjs");
33
33
  const require_packageParser = require("./packageParser-QoCS1FMl.cjs");
34
34
  const require_rubyUtils = require("./rubyUtils-CqUWBZAt.cjs");
35
35
  const require_inputVariables = require("./inputVariables-Dq9W-Z3a.cjs");
36
- const require_util$2 = require("./util-CN8om2rz.cjs");
37
- const require_promptfoo = require("./promptfoo-b-baRMj-.cjs");
38
- const require_graders = require("./graders-ClrU2fnd.cjs");
39
- const require_shared = require("./shared-WkgnDkcg.cjs");
36
+ const require_util$2 = require("./util-DNtUsus_.cjs");
37
+ const require_promptfoo = require("./promptfoo-ClChwT74.cjs");
38
+ const require_graders = require("./graders-CBQ2s6gz.cjs");
39
+ const require_shared = require("./shared-aHWko3P1.cjs");
40
40
  const require_utils = require("./utils-Ve6kuJsa.cjs");
41
41
  const require_transform$1 = require("./transform-BnSXWmU_2.cjs");
42
42
  const require_store = require("./store-B2NDDooM.cjs");
43
- const require_extractor = require("./extractor-BdxEtt3J.cjs");
43
+ const require_extractor = require("./extractor-bV_NOoaz.cjs");
44
44
  const require_promptLength = require("./promptLength-BbBbDHNj.cjs");
45
- const require_indirectWebPwn = require("./indirectWebPwn-BJ22AbQa.cjs");
45
+ const require_indirectWebPwn = require("./indirectWebPwn-D7NA9Nsv.cjs");
46
46
  const require_toolAttributes = require("./toolAttributes-BAjwcBf0.cjs");
47
- const require_evaluatorHelpers = require("./evaluatorHelpers-CRqTvSux.cjs");
48
- const require_evalResult = require("./evalResult-CvtS8h8u.cjs");
49
- const require_strategies = require("./strategies-7CS3Alao.cjs");
47
+ const require_evaluatorHelpers = require("./evaluatorHelpers-D06I9WFL.cjs");
48
+ const require_evalResult = require("./evalResult-DHXs-9TL.cjs");
49
+ const require_strategies = require("./strategies-CCcnEbFO.cjs");
50
50
  let fs = require("fs");
51
51
  fs = require_rolldown_runtime.__toESM(fs, 1);
52
52
  let path = require("path");
@@ -6334,7 +6334,7 @@ async function resolveDefaultTestProvider(defaultTest, testCase) {
6334
6334
  const defaultProvider = defaultTest.provider;
6335
6335
  if (require_types.isApiProvider(defaultProvider)) return defaultProvider;
6336
6336
  if (typeof defaultProvider === "object" && defaultProvider.id) {
6337
- const { loadApiProvider } = await Promise.resolve().then(() => require("./providers-BDVVIQM6.cjs")).then((n) => n.providers_exports);
6337
+ const { loadApiProvider } = await Promise.resolve().then(() => require("./providers-V6RBuieY.cjs")).then((n) => n.providers_exports);
6338
6338
  return loadApiProvider(typeof defaultProvider.id === "function" ? defaultProvider.id() : defaultProvider.id, { options: defaultProvider });
6339
6339
  }
6340
6340
  return defaultProvider;
@@ -6494,7 +6494,7 @@ function buildRepeatCacheContextByTestIdx(runEvalOptions) {
6494
6494
  async function filterCompletedResumeSteps(runEvalOptions, evalRecord) {
6495
6495
  if (!require_logger.state.resume || !evalRecord.persisted) return;
6496
6496
  try {
6497
- const { default: EvalResult } = await Promise.resolve().then(() => require("./evalResult-CvtS8h8u.cjs")).then((n) => n.evalResult_exports);
6497
+ const { default: EvalResult } = await Promise.resolve().then(() => require("./evalResult-DHXs-9TL.cjs")).then((n) => n.evalResult_exports);
6498
6498
  const completedPairs = await EvalResult.getCompletedIndexPairs(evalRecord.id, { excludeErrors: require_logger.state.retryMode });
6499
6499
  const originalCount = runEvalOptions.length;
6500
6500
  for (let i = runEvalOptions.length - 1; i >= 0; i--) {
@@ -12135,6 +12135,7 @@ async function fetchRemoteTestCases(key, purpose, injectVar, n, config) {
12135
12135
  require_logger.logger.error(`Error generating test cases for ${key}: ${statusText} ${JSON.stringify(data)}`);
12136
12136
  return [];
12137
12137
  }
12138
+ if (require_promptfoo.requiresRemoteMaterialization(config?.inputs)) require_promptfoo.assertRemoteMaterializationHandled(data, `Remote plugin generation for ${key}`);
12138
12139
  const ret = data.result;
12139
12140
  require_logger.logger.debug(`Received remote generation for ${key}:\n${JSON.stringify(ret)}`);
12140
12141
  return ret;
@@ -12143,31 +12144,6 @@ async function fetchRemoteTestCases(key, purpose, injectVar, n, config) {
12143
12144
  return [];
12144
12145
  }
12145
12146
  }
12146
- async function materializeRemoteTestCaseInputs({ config, injectVar, pluginId, provider, purpose, testCases }) {
12147
- const inputs = config.inputs;
12148
- if (!inputs || Object.keys(inputs).length === 0) return testCases;
12149
- return Promise.all(testCases.map(async (testCase, materializationIndex) => {
12150
- const inputVars = require_util$2.extractInputVarsFromPrompt(String(testCase.vars?.[injectVar] ?? ""), inputs);
12151
- if (!inputVars) return testCase;
12152
- const materializedVars = await require_inputVariables.materializeInputVariablesWithMetadata(inputVars, inputs, {
12153
- materializationIndex,
12154
- pluginId,
12155
- provider,
12156
- purpose
12157
- });
12158
- return {
12159
- ...testCase,
12160
- vars: {
12161
- ...testCase.vars || {},
12162
- ...materializedVars.vars
12163
- },
12164
- metadata: {
12165
- ...testCase.metadata || {},
12166
- ...materializedVars.metadata ? { inputMaterialization: materializedVars.metadata } : {}
12167
- }
12168
- };
12169
- }));
12170
- }
12171
12147
  function createPluginFactory(PluginClass, key, validate) {
12172
12148
  return {
12173
12149
  key,
@@ -12179,14 +12155,7 @@ function createPluginFactory(PluginClass, key, validate) {
12179
12155
  return new PluginClass(provider, purpose, injectVar, configWithDefaults).generateTests(n, delayMs);
12180
12156
  }
12181
12157
  const pluginId = require_util$2.getShortPluginId(key);
12182
- const testCases = await materializeRemoteTestCaseInputs({
12183
- config: configWithDefaults ?? {},
12184
- injectVar,
12185
- pluginId,
12186
- provider,
12187
- purpose,
12188
- testCases: await fetchRemoteTestCases(key, purpose, injectVar, n, configWithDefaults ?? {})
12189
- });
12158
+ const testCases = await fetchRemoteTestCases(key, purpose, injectVar, n, configWithDefaults ?? {});
12190
12159
  const computedModifiers = computeModifiersFromConfig(configWithDefaults);
12191
12160
  return testCases.map((testCase) => ({
12192
12161
  ...testCase,
@@ -12273,14 +12242,7 @@ const piiPlugins = require_types.PII_PLUGINS.map((category) => ({
12273
12242
  action: async (params) => {
12274
12243
  if (require_remoteGeneration.shouldGenerateRemote()) {
12275
12244
  const pluginId = require_util$2.getShortPluginId(category);
12276
- const testCases = await materializeRemoteTestCaseInputs({
12277
- config: params.config ?? {},
12278
- injectVar: params.injectVar,
12279
- pluginId,
12280
- provider: params.provider,
12281
- purpose: params.purpose,
12282
- testCases: await fetchRemoteTestCases(category, params.purpose, params.injectVar, params.n, params.config ?? {})
12283
- });
12245
+ const testCases = await fetchRemoteTestCases(category, params.purpose, params.injectVar, params.n, params.config ?? {});
12284
12246
  const computedModifiers = computeModifiersFromConfig(params.config);
12285
12247
  return testCases.map((testCase) => ({
12286
12248
  ...testCase,
@@ -12312,14 +12274,7 @@ const biasPlugins = require_types.BIAS_PLUGINS.map((category) => ({
12312
12274
  return [];
12313
12275
  }
12314
12276
  const pluginId = require_util$2.getShortPluginId(category);
12315
- const testCases = await materializeRemoteTestCaseInputs({
12316
- config: params.config ?? {},
12317
- injectVar: params.injectVar,
12318
- pluginId,
12319
- provider: params.provider,
12320
- purpose: params.purpose,
12321
- testCases: await fetchRemoteTestCases(category, params.purpose, params.injectVar, params.n, params.config ?? {})
12322
- });
12277
+ const testCases = await fetchRemoteTestCases(category, params.purpose, params.injectVar, params.n, params.config ?? {});
12323
12278
  const computedModifiers = computeModifiersFromConfig(params.config);
12324
12279
  return testCases.map((testCase) => ({
12325
12280
  ...testCase,
@@ -12338,21 +12293,14 @@ function createRemotePlugin(key, validate) {
12338
12293
  return {
12339
12294
  key,
12340
12295
  validate,
12341
- action: async ({ provider, purpose, injectVar, n, config }) => {
12296
+ action: async ({ purpose, injectVar, n, config }) => {
12342
12297
  const configWithDefaults = applyDefaultRemotePluginConfig(key, config);
12343
12298
  if (require_remoteGeneration.neverGenerateRemote()) {
12344
12299
  require_logger.logger.error(require_remoteGeneration.getRemoteGenerationExplicitlyDisabledError(`${key} plugin`));
12345
12300
  return [];
12346
12301
  }
12347
12302
  const pluginId = require_util$2.getShortPluginId(key);
12348
- const testCases = await materializeRemoteTestCaseInputs({
12349
- config: configWithDefaults ?? {},
12350
- injectVar,
12351
- pluginId,
12352
- provider,
12353
- purpose,
12354
- testCases: await fetchRemoteTestCases(key, purpose, injectVar, n, configWithDefaults ?? {})
12355
- });
12303
+ const testCases = await fetchRemoteTestCases(key, purpose, injectVar, n, configWithDefaults ?? {});
12356
12304
  const computedModifiers = computeModifiersFromConfig(configWithDefaults);
12357
12305
  const testsWithMetadata = testCases.map((testCase) => ({
12358
12306
  ...testCase,
@@ -12419,6 +12367,15 @@ async function validateSharpDependency(strategies, plugins, checkSharp = isSharp
12419
12367
  }
12420
12368
  //#endregion
12421
12369
  //#region src/redteam/index.ts
12370
+ const MATERIALIZED_MULTI_INPUT_PROMPT_METADATA_KEY = "__promptfooMaterializedMultiInputPrompt";
12371
+ function getMaterializedMultiInputPromptSnapshot(metadata) {
12372
+ const snapshot = metadata?.[MATERIALIZED_MULTI_INPUT_PROMPT_METADATA_KEY];
12373
+ return typeof snapshot === "string" ? snapshot : void 0;
12374
+ }
12375
+ function getMaterializedMultiInputPromptMetadata(vars) {
12376
+ const prompt = vars?.[require_types.MULTI_INPUT_VAR];
12377
+ return typeof prompt === "string" ? { [MATERIALIZED_MULTI_INPUT_PROMPT_METADATA_KEY]: prompt } : void 0;
12378
+ }
12422
12379
  function getPolicyText(metadata) {
12423
12380
  if (!metadata || metadata.policy === void 0 || metadata.policy === null) return;
12424
12381
  const policyValue = metadata.policy;
@@ -12431,12 +12388,19 @@ function getPolicyText(metadata) {
12431
12388
  async function rematerializeStrategyInputVars(testCase, injectVar, provider, purpose, materializationIndex) {
12432
12389
  const inputs = testCase.metadata?.pluginConfig?.inputs;
12433
12390
  const inputMaterialization = testCase.metadata?.inputMaterialization;
12434
- if (!inputs || Object.keys(inputs).length === 0 || !testCase.vars?.[injectVar]) return {
12391
+ const materializedPromptSnapshot = getMaterializedMultiInputPromptSnapshot(testCase.metadata);
12392
+ const currentInjectVar = testCase.vars?.[injectVar];
12393
+ if (!inputs || Object.keys(inputs).length === 0 || !currentInjectVar) return {
12394
+ inputMaterialization,
12395
+ vars: testCase.vars
12396
+ };
12397
+ const promptChangedSinceMaterialization = typeof currentInjectVar === "string" && typeof materializedPromptSnapshot === "string" && currentInjectVar !== materializedPromptSnapshot;
12398
+ if (Boolean(inputMaterialization) && Object.keys(inputs).every((key) => Object.prototype.hasOwnProperty.call(testCase.vars ?? {}, key)) && !promptChangedSinceMaterialization) return {
12435
12399
  inputMaterialization,
12436
12400
  vars: testCase.vars
12437
12401
  };
12438
12402
  try {
12439
- const materializedVars = await require_util$2.extractMaterializedVariablesFromJsonWithMetadata(JSON.parse(String(testCase.vars[injectVar])), inputs, {
12403
+ const materializedVars = await require_util$2.extractMaterializedVariablesFromJsonWithMetadata(JSON.parse(String(currentInjectVar)), inputs, {
12440
12404
  materializationIndex,
12441
12405
  pluginId: String(testCase.metadata?.pluginId || "unknown-plugin"),
12442
12406
  provider,
@@ -12668,7 +12632,8 @@ function addLanguageToPluginMetadata(test, lang, plugin, maxCharsPerMessage, tes
12668
12632
  ...test.metadata?.modifiers,
12669
12633
  ...languageToAdd
12670
12634
  },
12671
- ...languageToAdd
12635
+ ...languageToAdd,
12636
+ ...getMaterializedMultiInputPromptMetadata(test.vars)
12672
12637
  }
12673
12638
  };
12674
12639
  }
@@ -12767,7 +12732,8 @@ async function applyStrategies(testCases, strategies, injectVar, provider, purpo
12767
12732
  ...t?.metadata?.pluginId && { pluginId: t.metadata.pluginId },
12768
12733
  ...t?.metadata?.pluginConfig && { pluginConfig: t.metadata.pluginConfig },
12769
12734
  ...inputMaterialization && { inputMaterialization },
12770
- ...Object.keys(strategyConfig).length > 0 && { strategyConfig }
12735
+ ...Object.keys(strategyConfig).length > 0 && { strategyConfig },
12736
+ ...getMaterializedMultiInputPromptMetadata(vars)
12771
12737
  }
12772
12738
  };
12773
12739
  })));
@@ -13113,14 +13079,21 @@ async function synthesize({ abortSignal, delay, entities: entitiesOverride, inje
13113
13079
  }
13114
13080
  });
13115
13081
  const languageResults = await Promise.allSettled(languagePromises);
13116
- for (const result of languageResults) if (result.status === "fulfilled") {
13082
+ for (const [index, result] of languageResults.entries()) if (result.status === "fulfilled") {
13117
13083
  const { lang, tests, requested, generated } = result.value;
13118
13084
  allPluginTests.push(...tests);
13119
13085
  resultsPerLanguage[lang || "default"] = {
13120
13086
  requested,
13121
13087
  generated
13122
13088
  };
13123
- } else require_logger.logger.warn(`[Language Processing] Error generating tests for ${plugin.id}: ${result.reason}`);
13089
+ } else {
13090
+ const lang = languages[index];
13091
+ require_logger.logger.warn(`[Language Processing] Error generating tests for ${plugin.id}: ${result.reason}`);
13092
+ resultsPerLanguage[lang || "default"] = {
13093
+ requested: plugin.numTests,
13094
+ generated: 0
13095
+ };
13096
+ }
13124
13097
  require_logger.logger.debug(`[Language Processing] Total tests generated for ${plugin.id}: ${allPluginTests.length} (across ${languages.length} language(s))`);
13125
13098
  if (!Array.isArray(allPluginTests) || allPluginTests.length === 0) require_logger.logger.warn(`Failed to generate tests for ${plugin.id}`);
13126
13099
  else {
@@ -13154,35 +13127,51 @@ async function synthesize({ abortSignal, delay, entities: entitiesOverride, inje
13154
13127
  generated: allPluginTests.length
13155
13128
  };
13156
13129
  } else if (plugin.id.startsWith("file://")) try {
13157
- const customTests = await new CustomPlugin(redteamProvider, purpose, injectVar, plugin.id, resolvePluginConfigWithMaxChars(plugin.config, maxCharsPerMessage)).generateTests(plugin.numTests, delay);
13158
- const testCasesWithMetadata = filterOversizedTestCases(customTests.map((t) => {
13159
- const includePluginConfig = !(t.metadata && Object.hasOwn(t.metadata, "pluginConfig") && t.metadata.pluginConfig === void 0);
13160
- const pluginConfigWithMaxChars = {
13130
+ const languageConfig = plugin.config?.language ?? language;
13131
+ const languages = Array.isArray(languageConfig) ? languageConfig : languageConfig ? [languageConfig] : [void 0];
13132
+ const allCustomTests = [];
13133
+ const resultsPerLanguage = {};
13134
+ const languagePromises = languages.map(async (lang) => {
13135
+ const resolvedConfig = {
13161
13136
  ...resolvePluginConfigWithMaxChars(plugin.config, maxCharsPerMessage),
13162
- ...t.metadata?.pluginConfig ?? {}
13137
+ ...lang ? { language: lang } : {},
13138
+ ...hasMultipleInputs ? { inputs } : {}
13163
13139
  };
13164
- const modifiers = {
13165
- ...buildRedteamModifiers({
13140
+ const customPluginConfig = {
13141
+ ...resolvedConfig,
13142
+ modifiers: buildRedteamModifiers({
13166
13143
  maxCharsPerMessage,
13167
- pluginConfig: pluginConfigWithMaxChars,
13144
+ pluginConfig: resolvedConfig,
13168
13145
  testGenerationInstructions
13169
- }),
13170
- ...t.metadata?.modifiers
13146
+ })
13171
13147
  };
13148
+ 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);
13172
13149
  return {
13173
- ...t,
13174
- metadata: {
13175
- ...t.metadata || {},
13176
- pluginId: plugin.id,
13177
- ...includePluginConfig && { pluginConfig: pluginConfigWithMaxChars },
13178
- severity: plugin.severity || getPluginSeverity(plugin.id, resolvePluginConfig(plugin.config)),
13179
- modifiers
13180
- }
13150
+ lang,
13151
+ tests: testCasesWithMetadata,
13152
+ requested: plugin.numTests,
13153
+ generated: testCasesWithMetadata.length
13154
+ };
13155
+ });
13156
+ const languageResults = await Promise.allSettled(languagePromises);
13157
+ for (const [index, result] of languageResults.entries()) if (result.status === "fulfilled") {
13158
+ const { lang, tests, requested, generated } = result.value;
13159
+ allCustomTests.push(...tests);
13160
+ resultsPerLanguage[lang || "default"] = {
13161
+ requested,
13162
+ generated
13181
13163
  };
13182
- }), injectVar, `Custom plugin ${plugin.id}`, maxCharsPerMessage);
13164
+ } else {
13165
+ const lang = languages[index];
13166
+ require_logger.logger.warn(`[Language Processing] Error generating tests for custom plugin ${plugin.id}: ${result.reason}`);
13167
+ resultsPerLanguage[lang || "default"] = {
13168
+ requested: plugin.numTests,
13169
+ generated: 0
13170
+ };
13171
+ }
13183
13172
  if (needsGoalExtraction) {
13184
- require_logger.logger.debug(`Extracting goal for ${testCasesWithMetadata.length} custom tests from ${plugin.id}...`);
13185
- for (const testCase of testCasesWithMetadata) {
13173
+ require_logger.logger.debug(`Extracting goal for ${allCustomTests.length} custom tests from ${plugin.id}...`);
13174
+ for (const testCase of allCustomTests) {
13186
13175
  const promptVar = testCase.vars?.[injectVar];
13187
13176
  const prompt = Array.isArray(promptVar) ? promptVar[0] : String(promptVar);
13188
13177
  const policy = getPolicyText(testCase.metadata);
@@ -13190,13 +13179,21 @@ async function synthesize({ abortSignal, delay, entities: entitiesOverride, inje
13190
13179
  testCase.metadata.goal = extractedGoal;
13191
13180
  }
13192
13181
  }
13193
- testCases.push(...testCasesWithMetadata);
13194
- require_logger.logger.debug(`Added ${customTests.length} custom test cases from ${plugin.id}`);
13195
- const displayId = getPluginDisplayId(plugin);
13196
- pluginResults[displayId] = {
13197
- requested: plugin.numTests,
13198
- generated: testCasesWithMetadata.length
13182
+ testCases.push(...allCustomTests);
13183
+ require_logger.logger.debug(`Added ${allCustomTests.length} custom test cases from ${plugin.id}`);
13184
+ const baseDisplayId = getPluginDisplayId(plugin);
13185
+ if (languages.filter((lang) => lang !== void 0).length > 1) for (const [langKey, result] of Object.entries(resultsPerLanguage)) {
13186
+ const displayId = langKey === "en" ? baseDisplayId : `(${langKey}) ${baseDisplayId}`;
13187
+ pluginResults[displayId] = {
13188
+ requested: result.requested,
13189
+ generated: result.generated
13190
+ };
13191
+ }
13192
+ else pluginResults[baseDisplayId] = {
13193
+ requested: plugin.numTests * languages.length,
13194
+ generated: allCustomTests.length
13199
13195
  };
13196
+ progressBar?.increment(plugin.numTests * languages.length);
13200
13197
  } catch (e) {
13201
13198
  require_logger.logger.error(`Error generating tests for custom plugin ${plugin.id}: ${e}`);
13202
13199
  const displayId = getPluginDisplayId(plugin);
@@ -480,6 +480,15 @@ interface ProviderResponse {
480
480
  cached?: boolean;
481
481
  cost?: number;
482
482
  error?: string;
483
+ /**
484
+ * Indicates that a remote Promptfoo server already materialized multi-input vars
485
+ * for this response. When true, callers must not re-materialize locally.
486
+ */
487
+ materializationHandled?: boolean;
488
+ /**
489
+ * Materialized per-input vars returned by a remote Promptfoo server.
490
+ */
491
+ materializedVars?: Record<string, string>;
483
492
  /**
484
493
  * Indicates that `output` contains base64-encoded binary data (often as JSON like OpenAI `b64_json`).
485
494
  * Used to enable blob externalization and avoid token bloat in downstream grading/agentic strategies.
@@ -513,6 +522,10 @@ interface ProviderResponse {
513
522
  prompt?: string | ChatMessage[];
514
523
  raw?: string | any;
515
524
  output?: string | any;
525
+ /**
526
+ * Input materialization metadata returned by a remote Promptfoo server.
527
+ */
528
+ inputMaterialization?: Record<string, unknown>;
516
529
  /**
517
530
  * Output after provider-level transform. Used by contextTransform to ensure
518
531
  * it operates on provider-normalized output, independent of test transforms.
@@ -481,6 +481,15 @@ interface ProviderResponse {
481
481
  cached?: boolean;
482
482
  cost?: number;
483
483
  error?: string;
484
+ /**
485
+ * Indicates that a remote Promptfoo server already materialized multi-input vars
486
+ * for this response. When true, callers must not re-materialize locally.
487
+ */
488
+ materializationHandled?: boolean;
489
+ /**
490
+ * Materialized per-input vars returned by a remote Promptfoo server.
491
+ */
492
+ materializedVars?: Record<string, string>;
484
493
  /**
485
494
  * Indicates that `output` contains base64-encoded binary data (often as JSON like OpenAI `b64_json`).
486
495
  * Used to enable blob externalization and avoid token bloat in downstream grading/agentic strategies.
@@ -514,6 +523,10 @@ interface ProviderResponse {
514
523
  prompt?: string | ChatMessage[];
515
524
  raw?: string | any;
516
525
  output?: string | any;
526
+ /**
527
+ * Input materialization metadata returned by a remote Promptfoo server.
528
+ */
529
+ inputMaterialization?: Record<string, unknown>;
517
530
  /**
518
531
  * Output after provider-level transform. Used by contextTransform to ensure
519
532
  * it operates on provider-normalized output, independent of test transforms.