promptfoo 0.121.7 → 0.121.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/dist/src/{accounts-Ca7WIoPY.js → accounts-4Xa5fcHy.js} +17 -18
  2. package/dist/src/{accounts-DanM1wq_.js → accounts-BAajbKSh.js} +17 -18
  3. package/dist/src/{accounts-CjFnOPmb.js → accounts-Bw2qPqE-.js} +18 -19
  4. package/dist/src/{accounts-CmWzeD2d.cjs → accounts-DAcQXPwE.cjs} +20 -21
  5. package/dist/src/{agentic-utils-DvPWSUpb.cjs → agentic-utils-C8eEgGG-.cjs} +3 -3
  6. package/dist/src/{agentic-utils-TxUEMPYS.js → agentic-utils-CP1IXFz3.js} +3 -3
  7. package/dist/src/{agentic-utils-DDEGRV9v.js → agentic-utils-CUwa3AE9.js} +3 -3
  8. package/dist/src/{agentic-utils-CJ0j3fBi.js → agentic-utils-DYr-aM6d.js} +3 -3
  9. package/dist/src/{agents-CBgJvRkB.js → agents-Bb00M6i5.js} +5 -5
  10. package/dist/src/{agents-D-vDNFx4.js → agents-CASf5zRj.js} +5 -5
  11. package/dist/src/{agents-B4sRuXg3.cjs → agents-CD1wH9bm.cjs} +5 -5
  12. package/dist/src/{agents-CYn2n3QP.js → agents-CZOHU7Q8.js} +5 -5
  13. package/dist/src/{agents-LrHuQqr1.js → agents-D539zhHr.js} +5 -5
  14. package/dist/src/{agents-B8q7h_ek.js → agents-DpRJdGBZ.js} +5 -5
  15. package/dist/src/{agents-QGg76OF-.js → agents-gZTW-8nu.js} +5 -5
  16. package/dist/src/{agents-eHZ9nlgA.cjs → agents-hix6c0Sh.cjs} +5 -5
  17. package/dist/src/{aimlapi-eYv3a_DK.js → aimlapi-DRQSL-Z4.js} +7 -7
  18. package/dist/src/{aimlapi-CJEbQ0o6.js → aimlapi-Dc3LW5zI.js} +7 -7
  19. package/dist/src/{aimlapi-D5HXzZ0s.js → aimlapi-KNYnjjU6.js} +7 -7
  20. package/dist/src/{aimlapi-T6HGNxNe.cjs → aimlapi-gnrgd_Ej.cjs} +7 -7
  21. package/dist/src/app/assets/Report-Clw_YCp-.js +1 -0
  22. package/dist/src/app/assets/index-BQHaquKk.css +1 -0
  23. package/dist/src/app/assets/{index-BnT6P6sF.js → index-CW3XcQK7.js} +6 -6
  24. package/dist/src/app/index.html +2 -2
  25. package/dist/src/{audio-FnxbEnSE.cjs → audio-BgFTqfMO.cjs} +5 -5
  26. package/dist/src/{audio-CPMtV1yR.js → audio-Cslbgd4l.js} +5 -5
  27. package/dist/src/{audio-DyiebVB3.js → audio-DOI8kth4.js} +5 -5
  28. package/dist/src/{audio-BqnRvcWG.js → audio-hewMOCUU.js} +5 -5
  29. package/dist/src/{authoritativeMarkupInjection-DyAXAsSr.js → authoritativeMarkupInjection-DgE4u_Rl.js} +8 -8
  30. package/dist/src/{authoritativeMarkupInjection-QEQmFS83.js → authoritativeMarkupInjection-gpm2K-Rp.js} +8 -8
  31. package/dist/src/{authoritativeMarkupInjection-BZIywVjG.js → authoritativeMarkupInjection-nrC4mSPQ.js} +7 -7
  32. package/dist/src/{authoritativeMarkupInjection-F2gBw0lN.cjs → authoritativeMarkupInjection-wG4x0yP2.cjs} +8 -8
  33. package/dist/src/{base-CKLo890h.js → base-0yya4DsM.js} +3 -3
  34. package/dist/src/{base-Co80MMCi.js → base-BARAIJmp.js} +3 -3
  35. package/dist/src/{base-DGJW48uz.cjs → base-BE_pY-r5.cjs} +3 -3
  36. package/dist/src/{base-E9I8zXjz.js → base-CTWzNAH9.js} +3 -3
  37. package/dist/src/{bestOfN-BBsO41z4.js → bestOfN-CV7ZKPw2.js} +8 -8
  38. package/dist/src/{bestOfN-_kTi8Bxe.js → bestOfN-DeucA4QS.js} +9 -9
  39. package/dist/src/{bestOfN-CAwmg5UL.cjs → bestOfN-DxcpVUvj.cjs} +9 -9
  40. package/dist/src/{bestOfN-B3wNzjSB.js → bestOfN-Ilxc2hMv.js} +9 -9
  41. package/dist/src/{blobs-B0977K1O.cjs → blobs-5wbW7TbH.cjs} +3 -3
  42. package/dist/src/{blobs-Dwef1Ao1.js → blobs-BfIMflt0.js} +3 -3
  43. package/dist/src/{blobs-DODuTK-a.js → blobs-CA4gXarv.js} +3 -3
  44. package/dist/src/{blobs-CeFdPn_T.js → blobs-ikh75MtF.js} +3 -3
  45. package/dist/src/{cache-DpPWrkTE.js → cache-BuudGL4I.js} +5 -5
  46. package/dist/src/{cache-DIXbtkNO.js → cache-CT5D7d_A.js} +4 -4
  47. package/dist/src/cache-CrL5EYgi.js +3 -0
  48. package/dist/src/{cache-CPGUA4Yl.cjs → cache-WuIsgzMA.cjs} +4 -4
  49. package/dist/src/{cache-roFAE0cI.js → cache-x9llZxbx.js} +5 -5
  50. package/dist/src/{chat-GmlolEwo.js → chat-B5NqvkS_.js} +3 -3
  51. package/dist/src/{chat-DqUFcWI0.js → chat-B8lsx0A0.js} +11 -11
  52. package/dist/src/{chat-DG1wG4w0.cjs → chat-BBlR1h8c.cjs} +3 -3
  53. package/dist/src/{chat-Dabu84Br.js → chat-CCtIXezK.js} +11 -11
  54. package/dist/src/{chat-TP8Qifkh.js → chat-CZOhFlzV.js} +3 -3
  55. package/dist/src/{chat-CUCorGiL.js → chat-CvQMD-mp.js} +11 -11
  56. package/dist/src/{chat-iwaM5UTQ.js → chat-Dh6mb5OL.js} +3 -3
  57. package/dist/src/{chat-DxTDQ83C.cjs → chat-DkitQHdt.cjs} +11 -11
  58. package/dist/src/{chatkit-fARZwEfV.js → chatkit-55cAEQb2.js} +4 -4
  59. package/dist/src/{chatkit-lb6FK02w.js → chatkit-B-uz3x63.js} +4 -4
  60. package/dist/src/{chatkit-B6DWi70Q.js → chatkit-Dxp6KO70.js} +4 -4
  61. package/dist/src/{chatkit-BYveR48_.cjs → chatkit-jEtokOVZ.cjs} +4 -4
  62. package/dist/src/{claude-agent-sdk-D5Jl0SDh.js → claude-agent-sdk-BVfdeahc.js} +9 -7
  63. package/dist/src/{claude-agent-sdk-DH416NBD.cjs → claude-agent-sdk-C0p-RhcW.cjs} +9 -7
  64. package/dist/src/{claude-agent-sdk-x1XJ1-pU.js → claude-agent-sdk-DB99Npst.js} +9 -7
  65. package/dist/src/{claude-agent-sdk-BQNp_y-F.js → claude-agent-sdk-DHyrhDUu.js} +9 -7
  66. package/dist/src/cloud-BA4aLhk0.js +3 -0
  67. package/dist/src/{cloud-D3DiFqH6.js → cloud-BbAl8dyj.js} +3 -3
  68. package/dist/src/{cloudflare-ai-RFSojyXG.js → cloudflare-ai-ChBxkojW.js} +5 -5
  69. package/dist/src/{cloudflare-ai-r4tbYmWU.js → cloudflare-ai-DDmTDys_.js} +5 -5
  70. package/dist/src/{cloudflare-ai-CEAW-xQa.cjs → cloudflare-ai-DPlNiC6I.cjs} +5 -5
  71. package/dist/src/{cloudflare-ai-B6NVI3ax.js → cloudflare-ai-UsZe6ndv.js} +5 -5
  72. package/dist/src/{cloudflare-gateway-TJMLBj6I.cjs → cloudflare-gateway-7b-lEtrb.cjs} +4 -4
  73. package/dist/src/{cloudflare-gateway-BaZ4insB.js → cloudflare-gateway-Bq5cqiV8.js} +4 -4
  74. package/dist/src/{cloudflare-gateway-CF-Vb-2Z.js → cloudflare-gateway-C0N-5s62.js} +4 -4
  75. package/dist/src/{cloudflare-gateway-BCkLouto.js → cloudflare-gateway-D5fm-QvC.js} +4 -4
  76. package/dist/src/{codex-app-server-DIXZ230V.js → codex-app-server-BG5Aphvl.js} +20 -5
  77. package/dist/src/{codex-app-server-B8KHEiF4.js → codex-app-server-BnPMlcjl.js} +20 -5
  78. package/dist/src/{codex-app-server-Dd22dC_N.js → codex-app-server-D6gbvJFw.js} +20 -5
  79. package/dist/src/{codex-app-server-CnrLBCeA.cjs → codex-app-server-Dl6BLKJn.cjs} +20 -5
  80. package/dist/src/{codex-sdk-B6Wah8Pa.js → codex-sdk-BnRTWAhS.js} +20 -8
  81. package/dist/src/codex-sdk-CChw5CYU.js +3 -0
  82. package/dist/src/{codex-sdk-CFF6gUyi.cjs → codex-sdk-Cy1pEjsQ.cjs} +20 -8
  83. package/dist/src/{codex-sdk-CmQABzV3.js → codex-sdk-D86dT4XV.js} +20 -8
  84. package/dist/src/{codex-sdk-D2d54RL8.js → codex-sdk-mgUqOG2C.js} +20 -8
  85. package/dist/src/{cometapi-CtzNCHKu.js → cometapi-CkOfr271.js} +8 -8
  86. package/dist/src/{cometapi-DHCDlQUI.cjs → cometapi-EB-Is7jj.cjs} +8 -8
  87. package/dist/src/{cometapi-OBILPLlu.js → cometapi-gvPhrXNM.js} +8 -8
  88. package/dist/src/{cometapi-Bu9B8NUY.js → cometapi-sBbQmdfk.js} +8 -8
  89. package/dist/src/{completion-DZNxcyfG.js → completion-BoWiFP-D.js} +7 -7
  90. package/dist/src/{completion-CO2e1_62.js → completion-C99GFqQE.js} +7 -7
  91. package/dist/src/{completion-sNvCLTAP.js → completion-CUtdijfr.js} +7 -7
  92. package/dist/src/{completion-CSYfl2cd.cjs → completion-CkRVjadz.cjs} +7 -7
  93. package/dist/src/{crescendo-QiaSLW0d.js → crescendo-B4EiUJ-M.js} +43 -22
  94. package/dist/src/{crescendo-BXEJK_bi.cjs → crescendo-BAN6NuWV.cjs} +45 -24
  95. package/dist/src/{crescendo-CU_Y2i-m.js → crescendo-CYzxmaSJ.js} +45 -24
  96. package/dist/src/{crescendo-J1Xx4_zb.js → crescendo-CrsXyaL0.js} +45 -24
  97. package/dist/src/{custom-BJfP00Bh.js → custom-C5K9QFs1.js} +13 -13
  98. package/dist/src/{custom-Cqia7M0D.cjs → custom-D1UjT5I5.cjs} +13 -13
  99. package/dist/src/{custom-CZVn-1-r.js → custom-DnMZvgB6.js} +13 -13
  100. package/dist/src/{custom-notggYVl.js → custom-EWterxkb.js} +11 -11
  101. package/dist/src/{docker-DdJQBxK9.js → docker-BFQc9ccU.js} +6 -6
  102. package/dist/src/{docker-D06JUoe2.cjs → docker-BMfsGXyn.cjs} +6 -6
  103. package/dist/src/{docker-4D1eL6Gq.js → docker-ChD4-eri.js} +6 -6
  104. package/dist/src/{docker-BBv1WUDu.js → docker-mZF5j6cW.js} +6 -6
  105. package/dist/src/{embedding-BbrwopfX.cjs → embedding-BMqFDnLI.cjs} +7 -7
  106. package/dist/src/{embedding--UZVe4_7.js → embedding-BQBXSWgy.js} +7 -7
  107. package/dist/src/{embedding-Bi3rxrZF.js → embedding-BwTB3YDt.js} +7 -7
  108. package/dist/src/{embedding-C251p1-8.js → embedding-cd5oPBkX.js} +7 -7
  109. package/dist/src/{esm-B6whoAcf.js → esm-CGER3lko.js} +2 -2
  110. package/dist/src/{esm-Bexx2PFc.js → esm-CYMWMaSj.js} +2 -2
  111. package/dist/src/{esm-BTK1W7lG.js → esm-C_yrt93A.js} +2 -2
  112. package/dist/src/{esm-BIKakvNa.cjs → esm-vv4rR-Dp.cjs} +2 -2
  113. package/dist/src/{eval-0VRANImH.js → eval-DmGWplIN.js} +10 -10
  114. package/dist/src/{eval-DscR5iOM.js → eval-N_VV5NZg.js} +1 -1
  115. package/dist/src/{evalResult-CvtS8h8u.cjs → evalResult-BZld6I3I.cjs} +6 -6
  116. package/dist/src/{evalResult-eUkJv9Ko.js → evalResult-ByGP9zuP.js} +7 -7
  117. package/dist/src/evalResult-CPPINYHK.js +3 -0
  118. package/dist/src/{evalResult-2RRJvFyB.js → evalResult-gEmQRANj.js} +6 -6
  119. package/dist/src/evaluator-B01pCdUY.js +3 -0
  120. package/dist/src/{evaluator-DRoiYB2q.js → evaluator-BpaUYhLY.js} +37 -37
  121. package/dist/src/{evaluatorHelpers-CRqTvSux.cjs → evaluatorHelpers-2gpZ9Q_f.cjs} +10 -10
  122. package/dist/src/{evaluatorHelpers-DuqFFfq7.js → evaluatorHelpers-C8C8WQTv.js} +10 -10
  123. package/dist/src/{evaluatorHelpers-BsYP_muT.js → evaluatorHelpers-DDG44JeI.js} +10 -10
  124. package/dist/src/{extractor-CxRtnaHl.js → extractor-Bjz9sdTQ.js} +6 -6
  125. package/dist/src/{extractor-CIW3iN-b.js → extractor-CtadTcJm.js} +6 -6
  126. package/dist/src/{extractor-BR7XAzAL.js → extractor-DAnauX2V.js} +6 -6
  127. package/dist/src/{extractor-BdxEtt3J.cjs → extractor-nyUwvU2U.cjs} +6 -6
  128. package/dist/src/{fetch-Dw4XZHjj.cjs → fetch-B2HvaVUc.cjs} +14 -12
  129. package/dist/src/{fetch-DXUnXkVU.js → fetch-C59QM4cf.js} +10 -8
  130. package/dist/src/{fetch-BufrQtvR.js → fetch-CBe8pU8Q.js} +10 -8
  131. package/dist/src/{fetch-It34O8Ur.js → fetch-CHJu2KON.js} +9 -7
  132. package/dist/src/fetch-D_XnRfBV.js +3 -0
  133. package/dist/src/{goat-Ckd3q3AY.js → goat-0HwO0EB2.js} +22 -21
  134. package/dist/src/{goat-una6pZGP.cjs → goat-7wQgRcT4.cjs} +22 -21
  135. package/dist/src/{goat-ghadEDdy.js → goat-BNX0lOFx.js} +20 -19
  136. package/dist/src/{goat-Qgurm-NP.js → goat-BOVnOl5S.js} +22 -21
  137. package/dist/src/{graders-BGP99PdK.js → graders-BnO-xoa-.js} +30 -30
  138. package/dist/src/{graders-ClrU2fnd.cjs → graders-CQv1GT5Q.cjs} +29 -29
  139. package/dist/src/graders-D4vc1PFi.js +3 -0
  140. package/dist/src/{graders-BX0f2tvS.js → graders-GNRQ1357.js} +29 -29
  141. package/dist/src/{graders-C0nXU_ZP.js → graders-k8qmhrPu.js} +31 -31
  142. package/dist/src/{hydra-BSNZZm2M.js → hydra-BrgGALmB.js} +38 -20
  143. package/dist/src/{hydra-BxdG4nkg.js → hydra-C38LOovb.js} +36 -18
  144. package/dist/src/{hydra-DE4xWwyc.js → hydra-CXc0p63W.js} +38 -20
  145. package/dist/src/{hydra-DrJttnvw.cjs → hydra-Hdj65j0k.cjs} +38 -20
  146. package/dist/src/{image-B_fPIwdg.js → image-6u3WZ_7H.js} +5 -5
  147. package/dist/src/{image-BN-hjLL9.js → image-B6hCz0z3.js} +5 -5
  148. package/dist/src/{image-BvUAW344.js → image-CgmaPlV_.js} +7 -7
  149. package/dist/src/{image-QzmydkiG.js → image-DXbwwL-r.js} +5 -5
  150. package/dist/src/{image-X0oY4350.cjs → image-Daa_X_YB.cjs} +7 -7
  151. package/dist/src/{image-Cvjwx1uY.js → image-DmC5qwQx.js} +7 -7
  152. package/dist/src/{image-DfVCGPbI.cjs → image-TY6FsHmn.cjs} +5 -5
  153. package/dist/src/{image-B4oBtu6J.js → image-V0-pYiBI.js} +7 -7
  154. package/dist/src/index.cjs +137 -140
  155. package/dist/src/index.d.cts +13 -0
  156. package/dist/src/index.d.ts +13 -0
  157. package/dist/src/index.js +137 -140
  158. package/dist/src/{indirectWebPwn-BJ22AbQa.cjs → indirectWebPwn-04ziKbly.cjs} +5 -5
  159. package/dist/src/{indirectWebPwn-tNx9OZ35.js → indirectWebPwn-1gHqaL91.js} +5 -5
  160. package/dist/src/{indirectWebPwn-DBQhOjoD.js → indirectWebPwn-B0CAtvZJ.js} +6 -6
  161. package/dist/src/{indirectWebPwn-uyWdHx04.js → indirectWebPwn-BXUoJl4I.js} +5 -5
  162. package/dist/src/{indirectWebPwn-02ZIghCS.js → indirectWebPwn-Biy9I52D.js} +6 -6
  163. package/dist/src/{indirectWebPwn-OsXnKejv.js → indirectWebPwn-BoPqjm9W.js} +6 -6
  164. package/dist/src/{indirectWebPwn-CbjUG0rh.js → indirectWebPwn-DRYpRTx6.js} +5 -5
  165. package/dist/src/{indirectWebPwn-CfQJt3gk.cjs → indirectWebPwn-MiCFTfzI.cjs} +6 -6
  166. package/dist/src/{inputVariables-DUGMb9Ka.js → inputVariables-B7cylqzM.js} +2 -2
  167. package/dist/src/{inputVariables-Dq9W-Z3a.cjs → inputVariables-D5K2vTp4.cjs} +2 -2
  168. package/dist/src/{inputVariables-B0qUChbV.js → inputVariables-DpOsOnzU.js} +3 -3
  169. package/dist/src/{inputVariables-DXFdi7AI.js → inputVariables-qJmuSN5i.js} +3 -3
  170. package/dist/src/{interactiveCheck-C4QlIuoR.js → interactiveCheck-BLnDrfjg.js} +2 -2
  171. package/dist/src/{iterative-FTS4Bz67.js → iterative-BDRx_noa.js} +29 -19
  172. package/dist/src/{iterative-CpU6i2As.js → iterative-BZxrxnoh.js} +27 -17
  173. package/dist/src/{iterative-DQBuWM-j.cjs → iterative-KSovqu_j.cjs} +29 -19
  174. package/dist/src/{iterative-DJQEQpG3.js → iterative-vxBU1IPs.js} +29 -19
  175. package/dist/src/{iterativeImage-Doz8mgxF.js → iterativeImage-BZuMd4x3.js} +7 -7
  176. package/dist/src/{iterativeImage-BUABMVOA.js → iterativeImage-DUWLmyVM.js} +6 -6
  177. package/dist/src/{iterativeImage-ByFWkxax.cjs → iterativeImage-DqNKoaIl.cjs} +7 -7
  178. package/dist/src/{iterativeImage-BzUapOUi.js → iterativeImage-DwIp1WGB.js} +7 -7
  179. package/dist/src/{iterativeMeta-CSS8M6Ds.cjs → iterativeMeta-9gsvnsl1.cjs} +39 -19
  180. package/dist/src/{iterativeMeta-B3YiAOc8.js → iterativeMeta-AgI6UEh6.js} +39 -19
  181. package/dist/src/{iterativeMeta-C7APE_P1.js → iterativeMeta-BbcVN5nQ.js} +39 -19
  182. package/dist/src/{iterativeMeta-DgoQ7bLh.js → iterativeMeta-BcF8LsFk.js} +37 -17
  183. package/dist/src/{iterativeTree-B5zxBBSW.js → iterativeTree-5TLHU9Kx.js} +81 -31
  184. package/dist/src/{iterativeTree-CPMF10ve.cjs → iterativeTree-7XyY_zdo.cjs} +81 -31
  185. package/dist/src/{iterativeTree-DvZ7GBwt.js → iterativeTree-CnHx_kPu.js} +81 -31
  186. package/dist/src/{iterativeTree-CNyIk0Yn.js → iterativeTree-D9I3UJ0P.js} +79 -29
  187. package/dist/src/{knowledgeBase-CkMljjdg.js → knowledgeBase-BGbDBwr5.js} +5 -5
  188. package/dist/src/{knowledgeBase-Bi_8sV-H.js → knowledgeBase-BzfBwPyQ.js} +5 -5
  189. package/dist/src/{knowledgeBase-BadkINlJ.js → knowledgeBase-C_MSTwDt.js} +5 -5
  190. package/dist/src/{knowledgeBase-DUh34xba.cjs → knowledgeBase-DSVK_YTi.cjs} +5 -5
  191. package/dist/src/{litellm-BXyn5kZK.js → litellm-CRTmskqC.js} +5 -5
  192. package/dist/src/{litellm-BKBo0jpC.js → litellm-Ch4E-r4b.js} +5 -5
  193. package/dist/src/{litellm-CNcfbCfa.js → litellm-DNnk7802.js} +5 -5
  194. package/dist/src/{litellm-CtAr7bKG.cjs → litellm-jA4_p8mv.cjs} +5 -5
  195. package/dist/src/{logger-KD8JjCRJ.js → logger-BjYLHvGm.js} +56 -25
  196. package/dist/src/{logger-cfNpzI4o.cjs → logger-Cm0Nb8YX.cjs} +34 -3
  197. package/dist/src/{logger-Ct2S6Yx-.js → logger-Cs0I2v_y.js} +34 -3
  198. package/dist/src/{logger-BbY6ypFL.js → logger-h-eiS4iv.js} +34 -3
  199. package/dist/src/{luma-ray-D3FUc2K3.cjs → luma-ray-BCkN79tz.cjs} +5 -5
  200. package/dist/src/{luma-ray-CR5TSpp4.js → luma-ray-BqVizUQY.js} +5 -5
  201. package/dist/src/{luma-ray-BMX1iEB6.js → luma-ray-CD7rd6KW.js} +5 -5
  202. package/dist/src/{luma-ray-OEMmS1RB.js → luma-ray-DLWLjDCa.js} +5 -5
  203. package/dist/src/main.js +143 -146
  204. package/dist/src/{memoryPoisoning-Dp-btinn.cjs → memoryPoisoning-BXDi4XCK.cjs} +8 -8
  205. package/dist/src/{memoryPoisoning-CM83NWYl.js → memoryPoisoning-D-V4yXjj.js} +8 -8
  206. package/dist/src/{memoryPoisoning-D8h9gXJF.js → memoryPoisoning-PrsT7Zh2.js} +8 -8
  207. package/dist/src/{memoryPoisoning-cLuCoTuJ.js → memoryPoisoning-ZUwCLvEn.js} +8 -8
  208. package/dist/src/{messages-DBPir0TQ.cjs → messages-BSFLFXIO.cjs} +8 -8
  209. package/dist/src/{messages-BabO-cX8.js → messages-C5qBfONg.js} +8 -8
  210. package/dist/src/{messages-DGUlSNU7.js → messages-CQoK4jHx.js} +8 -8
  211. package/dist/src/{messages-vsE_-Lv0.js → messages-Dy5vvc3H.js} +8 -8
  212. package/dist/src/{mischievousUser-olGgHIVR.cjs → mischievousUser-B4_YRWqu.cjs} +5 -5
  213. package/dist/src/{mischievousUser-frFYKxu6.js → mischievousUser-BoZy3Fry.js} +5 -5
  214. package/dist/src/{mischievousUser-BUOP9W5r.js → mischievousUser-CjJ9ZEuw.js} +5 -5
  215. package/dist/src/{mischievousUser-0l8GD7Dp.js → mischievousUser-CrMXlOUj.js} +5 -5
  216. package/dist/src/{modelslab-EyDczZ5A.js → modelslab-B72XbAlR.js} +8 -8
  217. package/dist/src/{modelslab-Dzst7VTU.js → modelslab-Bw-46LmW.js} +8 -8
  218. package/dist/src/{modelslab-Cogmu4mG.js → modelslab-CJ0zQdDH.js} +8 -8
  219. package/dist/src/{modelslab-CNV5bMSk.cjs → modelslab-LXFLCD-O.cjs} +8 -8
  220. package/dist/src/{nova-reel-CjJRxI1X.cjs → nova-reel-D0k0-k8Y.cjs} +5 -5
  221. package/dist/src/{nova-reel-C4eUJGse.js → nova-reel-DItvBa6z.js} +5 -5
  222. package/dist/src/{nova-reel-BGPNBOMS.js → nova-reel-DN7gTJzd.js} +5 -5
  223. package/dist/src/{nova-reel-B_5NKFu1.js → nova-reel-DRLvlFOH.js} +5 -5
  224. package/dist/src/{nova-sonic-BNGmgfFz.js → nova-sonic-BeAjEzkG.js} +3 -3
  225. package/dist/src/{nova-sonic-CrV0iaY_.js → nova-sonic-DB7LzcCY.js} +3 -3
  226. package/dist/src/{nova-sonic-DuOG9Aun.cjs → nova-sonic-DfLkPbkF.cjs} +3 -3
  227. package/dist/src/{nova-sonic-ChPlh5na.js → nova-sonic-kzIVxZDb.js} +3 -3
  228. package/dist/src/{openai-BMHD2Huo.js → openai-Bfbg6L4c.js} +2 -2
  229. package/dist/src/{openai-C3uXv8wS.cjs → openai-CCaz18I4.cjs} +2 -2
  230. package/dist/src/{openai-CJrsh9n4.js → openai-CJOpg_dA.js} +2 -2
  231. package/dist/src/{openai-zgwBb4Ff.js → openai-uRacy72N.js} +2 -2
  232. package/dist/src/{openclaw-zIJAsz3P.js → openclaw-2Y9Ukt9Y.js} +9 -9
  233. package/dist/src/{openclaw-CF7fMido.js → openclaw-BdnuiqBG.js} +9 -9
  234. package/dist/src/{openclaw-Dphc01BY.cjs → openclaw-D54hA9Fe.cjs} +9 -9
  235. package/dist/src/{openclaw-BIHlu_36.js → openclaw-DRjsDCSS.js} +9 -9
  236. package/dist/src/{opencode-sdk-B3vlPLsp.js → opencode-sdk-2su-bzyz.js} +38 -9
  237. package/dist/src/{opencode-sdk-DoY6GbWw.cjs → opencode-sdk-BRkqgOOQ.cjs} +38 -9
  238. package/dist/src/{opencode-sdk-D05JSgMQ.js → opencode-sdk-CFY-1bkH.js} +38 -9
  239. package/dist/src/{opencode-sdk-sRKYHGoI.js → opencode-sdk-D-tRQJ9s.js} +38 -9
  240. package/dist/src/{otlpReceiver-B2eaKC8C.js → otlpReceiver-BkB7tsTT.js} +3 -3
  241. package/dist/src/{otlpReceiver--gTpSagc.js → otlpReceiver-BqJYGC-M.js} +4 -4
  242. package/dist/src/{otlpReceiver-BXjcRqAM.js → otlpReceiver-CRwU2egH.js} +4 -4
  243. package/dist/src/{otlpReceiver-CvJdBGSc.cjs → otlpReceiver-DOl5S07u.cjs} +4 -4
  244. package/dist/src/{packageParser--MWTSrPW.js → packageParser-B3bpKHK4.js} +2 -2
  245. package/dist/src/{packageParser-hwwSGnAZ.js → packageParser-CZdMKLBh.js} +2 -2
  246. package/dist/src/{packageParser-CgE-ziRo.js → packageParser-D7YWfcSe.js} +2 -2
  247. package/dist/src/{packageParser-QoCS1FMl.cjs → packageParser-DR054ceU.cjs} +2 -2
  248. package/dist/src/{promptLength-B9nZEfO6.js → promptLength-5B4_P93z.js} +2 -2
  249. package/dist/src/{promptLength-BbBbDHNj.cjs → promptLength-CAcg7BmO.cjs} +2 -2
  250. package/dist/src/{promptLength-4X-Wd8PG.js → promptLength-PkjlYFx0.js} +2 -2
  251. package/dist/src/{promptLength-0qIHyhA5.js → promptLength-ho3wbst6.js} +2 -2
  252. package/dist/src/{promptfoo-BDrfT30-.js → promptfoo-CEsoPlBa.js} +67 -10
  253. package/dist/src/{promptfoo-b-baRMj-.cjs → promptfoo-DAXBmrE6.cjs} +96 -9
  254. package/dist/src/{promptfoo-Cm4hiy1Y.js → promptfoo-DVKqidd8.js} +67 -10
  255. package/dist/src/{promptfoo-Rjp-MeBb.js → promptfoo-wxe28-q9.js} +67 -10
  256. package/dist/src/{providerRegistry-DHcFiVWX.js → providerRegistry-Bf4tRLgu.js} +2 -2
  257. package/dist/src/{providerRegistry-CZO_w7ue.cjs → providerRegistry-DKbi2EbP.cjs} +2 -2
  258. package/dist/src/{providerRegistry-ReCd0sFa.js → providerRegistry-DLeG-xXn.js} +2 -2
  259. package/dist/src/{providerRegistry-1gB5vtzQ.js → providerRegistry-v8Wa3f9z.js} +2 -2
  260. package/dist/src/{providers-B9KzWxAX.js → providers-CYBHjFEg.js} +178 -126
  261. package/dist/src/{providers-BCCz6_IX.js → providers-DDLQc0tl.js} +177 -125
  262. package/dist/src/{providers-BDVVIQM6.cjs → providers-DP1CDgd5.cjs} +176 -124
  263. package/dist/src/{providers-DVYRZP4E.js → providers-DTPwadhk.js} +176 -124
  264. package/dist/src/{providers-BYAn82cf.js → providers-DvBFcsXi.js} +1 -1
  265. package/dist/src/{pythonUtils-Cokhluq3.cjs → pythonUtils-BjuymNdM.cjs} +3 -3
  266. package/dist/src/{pythonUtils-D0BYebvX.js → pythonUtils-C4Wnz6Q7.js} +3 -3
  267. package/dist/src/{pythonUtils-CLCgQ9tt.js → pythonUtils-CBe7VV6f.js} +3 -3
  268. package/dist/src/{pythonUtils-CgYxeSmO.js → pythonUtils-CLAoc6jg.js} +3 -3
  269. package/dist/src/{quiverai-CdTWPe-A.js → quiverai-B6ebiUKf.js} +6 -6
  270. package/dist/src/{quiverai-Cv7rJKDz.js → quiverai-BG7dvOQc.js} +6 -6
  271. package/dist/src/{quiverai-BAp6iTZD.cjs → quiverai-DH6SMaxD.cjs} +6 -6
  272. package/dist/src/{quiverai-BvIhI_0l.js → quiverai-DHNIAUfS.js} +6 -6
  273. package/dist/src/{registry-BUJrgjwv.js → registry-BKlwRYvr.js} +14 -14
  274. package/dist/src/{registry-KCVF1CFC.cjs → registry-CQHRTGYs.cjs} +14 -14
  275. package/dist/src/{registry-Dp5EqoXc.js → registry-Eiv-QeUm.js} +14 -14
  276. package/dist/src/{registry-DXm1t_x0.js → registry-qNoxbVEb.js} +14 -14
  277. package/dist/src/{remoteGeneration-DS9N3pgB.cjs → remoteGeneration-CD3c_rzc.cjs} +6 -6
  278. package/dist/src/{remoteGeneration-DsaSwmG2.js → remoteGeneration-CoxtxLvB.js} +6 -6
  279. package/dist/src/{remoteGeneration-B1_XsKXU.js → remoteGeneration-DW6mPZnO.js} +6 -6
  280. package/dist/src/{remoteGeneration-COpWcmWd.js → remoteGeneration-DvWEm3yi.js} +6 -6
  281. package/dist/src/{render-_6ur1fhE.js → render-BoxrvB84.js} +2 -2
  282. package/dist/src/{render-DFfDeYUK.js → render-CTZQAINJ.js} +2 -2
  283. package/dist/src/{render-BNTrbmBw.cjs → render-DJ4yipCD.cjs} +2 -2
  284. package/dist/src/{render-DznWrxGO.js → render-MiyTvDY4.js} +2 -2
  285. package/dist/src/{render-CSP99NLm.js → render-jE6RKVgk.js} +2 -2
  286. package/dist/src/{responses-1UFFF9N_.cjs → responses-Bs2_3zyr.cjs} +14 -10
  287. package/dist/src/{responses-B3W2JvOQ.js → responses-C0yU3fO6.js} +14 -10
  288. package/dist/src/{responses-URRzV8qE.js → responses-C2vhwf8F.js} +14 -10
  289. package/dist/src/{responses-B6ktc3Ra.js → responses-pvlY3oYx.js} +14 -10
  290. package/dist/src/{rubyUtils-CnlW8AYb.js → rubyUtils-AvgsD_QH.js} +3 -3
  291. package/dist/src/{rubyUtils-CqUWBZAt.cjs → rubyUtils-BEqeZynS.cjs} +3 -3
  292. package/dist/src/{rubyUtils-CXlFM2rR.js → rubyUtils-C-sxXgGT.js} +3 -3
  293. package/dist/src/{rubyUtils-DdGojpfv.js → rubyUtils-DFzPvVD4.js} +3 -3
  294. package/dist/src/rubyUtils-DfYaGbxe.js +3 -0
  295. package/dist/src/{runtimeTransform-DigbjU1r.js → runtimeTransform-BmhEztlx.js} +2 -2
  296. package/dist/src/{runtimeTransform-BJOpL9Yc.js → runtimeTransform-Bw9Tttpp.js} +2 -2
  297. package/dist/src/{runtimeTransform-ON3YYILw.cjs → runtimeTransform-DJEknTZQ.cjs} +2 -2
  298. package/dist/src/{runtimeTransform-Dgh_D7DU.js → runtimeTransform-s14J7yxm.js} +2 -2
  299. package/dist/src/{sagemaker-yr1QKeBs.js → sagemaker-C8NJAT8D.js} +11 -11
  300. package/dist/src/{sagemaker-vhtSV7JI.js → sagemaker-DlajLLgJ.js} +11 -11
  301. package/dist/src/{sagemaker-CujrzP1a.js → sagemaker-PgIzjxMt.js} +11 -11
  302. package/dist/src/{sagemaker-DzffAqo_.cjs → sagemaker-hwPXLGI4.cjs} +11 -11
  303. package/dist/src/{scanner-DS0109SS.js → scanner-B3DPvw5u.js} +6 -6
  304. package/dist/src/server/index.js +145 -148
  305. package/dist/src/{server-DhMHosWj.js → server-4wx571OM.js} +6 -6
  306. package/dist/src/{server-Ddp8GNMp.js → server-8in_Vrrf.js} +6 -6
  307. package/dist/src/server-BHd6SQYX.js +3 -0
  308. package/dist/src/{server-CMJD10J4.js → server-pMTgWs3M.js} +4 -4
  309. package/dist/src/{server-B8rqV126.cjs → server-yHhoBx98.cjs} +4 -4
  310. package/dist/src/{shared-D6IjElRI.js → shared-BF25a7ms.js} +12 -12
  311. package/dist/src/{shared-WkgnDkcg.cjs → shared-DlmtkptR.cjs} +12 -12
  312. package/dist/src/{shared-9WHQ1oNE.js → shared-DsbObxvy.js} +12 -12
  313. package/dist/src/{shared-7pmVZLNO.js → shared-yBQATkD5.js} +13 -13
  314. package/dist/src/{signal-CSurUUyV.js → signal-CRrWj2xI.js} +3 -3
  315. package/dist/src/{simulatedUser-Cu601Dd4.cjs → simulatedUser-9A3YPDh2.cjs} +7 -7
  316. package/dist/src/{simulatedUser-C9aQObBI.js → simulatedUser-CbZZV7UQ.js} +7 -7
  317. package/dist/src/{simulatedUser-U_qAHnuB.js → simulatedUser-DdcsTBuS.js} +7 -7
  318. package/dist/src/{simulatedUser-p3tACcmw.js → simulatedUser-LKk31Iov.js} +7 -7
  319. package/dist/src/{slack-Bapo-7_8.js → slack-CWxUAo6N.js} +2 -2
  320. package/dist/src/{slack-DMC1QVEg.cjs → slack-CtMQnlyy.cjs} +2 -2
  321. package/dist/src/{slack-DTEFhrMn.js → slack-DrcMAkvd.js} +2 -2
  322. package/dist/src/{slack-k-_CP84Q.js → slack-chzmaYU3.js} +2 -2
  323. package/dist/src/{storage-BU4qcnOb.js → storage-B9lg2RCL.js} +6 -6
  324. package/dist/src/{storage-QdU-SmvD.js → storage-BC9TzmHh.js} +5 -5
  325. package/dist/src/{storage-CA-v9V2v.cjs → storage-Cv7QYUPO.cjs} +4 -4
  326. package/dist/src/{storage-CD-GWAdx.js → storage-fbHNSuZ9.js} +4 -4
  327. package/dist/src/{store-B2NDDooM.cjs → store-BKN4VD-m.cjs} +3 -3
  328. package/dist/src/{store-HpopRVzl.js → store-C4eo8Kyv.js} +3 -3
  329. package/dist/src/store-mJpYYA7W.js +3 -0
  330. package/dist/src/{store-DKd5592Q.js → store-u1XNK3e8.js} +3 -3
  331. package/dist/src/{strategies-CiSeroPH.js → strategies-4Nnr_9xt.js} +18 -18
  332. package/dist/src/{strategies-7CS3Alao.cjs → strategies-BD7US9WB.cjs} +18 -18
  333. package/dist/src/{strategies-DRJjGTIY.js → strategies-Ptz_P4P4.js} +20 -20
  334. package/dist/src/{tables-CRSXQ2Ke.js → tables-Bn3_8sxV.js} +2 -2
  335. package/dist/src/{tables-DafUHOeh.js → tables-D_ZGKiGc.js} +3 -3
  336. package/dist/src/{tables-DBIJU0WE.cjs → tables-D_s2HMPP.cjs} +2 -2
  337. package/dist/src/{tables-CxjU7bBd.js → tables-PWOqfbI_.js} +3 -3
  338. package/dist/src/{telemetry-DwX9XUN5.js → telemetry-BTIhfopq.js} +21 -16
  339. package/dist/src/{telemetry-00ezXr_t.js → telemetry-BU80NveV.js} +21 -16
  340. package/dist/src/telemetry-CVHVhMOI.js +3 -0
  341. package/dist/src/{telemetry-DmXYcJNV.js → telemetry-D3yQCekN.js} +21 -16
  342. package/dist/src/{telemetry-CJ7FnCsc.cjs → telemetry-DvzmDrSM.cjs} +21 -16
  343. package/dist/src/{tracingOptions-BnwKCkSB.js → tracingOptions-D2F0D7es.js} +4 -4
  344. package/dist/src/{tracingOptions-Chi74lOD.js → tracingOptions-PLePpCmo.js} +3 -3
  345. package/dist/src/{tracingOptions-ji2OuXbT.js → tracingOptions-WpE9IqC8.js} +4 -4
  346. package/dist/src/{tracingOptions-DrbSFaKy.cjs → tracingOptions-eqmq5sA2.cjs} +4 -4
  347. package/dist/src/{transcription-mzuf18Mq.cjs → transcription-CKLxdMxm.cjs} +7 -7
  348. package/dist/src/{transcription-B8uIgCYX.js → transcription-CmlDorqD.js} +7 -7
  349. package/dist/src/{transcription-CfU5loSq.js → transcription-Cupf4JNw.js} +7 -7
  350. package/dist/src/{transcription-Dkd22_4K.js → transcription-sOgdGxM6.js} +7 -7
  351. package/dist/src/{transform-BnSXWmU_2.cjs → transform-0wnBYYaL2.cjs} +4 -4
  352. package/dist/src/{transform-EtD4jAWi.js → transform-AfC8gqCB.js} +5 -5
  353. package/dist/src/{transform-CGt7Kt3y2.js → transform-BDSnWRNv2.js} +4 -4
  354. package/dist/src/{transform-BnSTnFlp.js → transform-C5pxvKUV.js} +4 -4
  355. package/dist/src/{transform-CrPGTsij.js → transform-C5rpIuDz.js} +4 -4
  356. package/dist/src/{transform-DmvYBRll.js → transform-D7QlmswG.js} +5 -5
  357. package/dist/src/{transform-DhNkAUs8.cjs → transform-DKw2FNwg.cjs} +5 -5
  358. package/dist/src/{transform-BIMynQsA.js → transform-R1PnNdLv.js} +5 -5
  359. package/dist/src/{types-BFevViUY.js → types-C_e_SykX.js} +2 -2
  360. package/dist/src/{types-BJQBBPTP.js → types-uLCKnRiK.js} +2 -2
  361. package/dist/src/{util-CN8om2rz.cjs → util-3BRss2KA.cjs} +7 -7
  362. package/dist/src/{util-efByNxcr.js → util-B2Nt2Oy7.js} +25 -7
  363. package/dist/src/{util-I-Rf-KaD.js → util-BGfk7zh7.js} +8 -8
  364. package/dist/src/{util-5WnCSb0h.js → util-BLSQ_7Ky.js} +25 -7
  365. package/dist/src/{util-IYzs5Y04.cjs → util-BSZPCmvm.cjs} +4 -3
  366. package/dist/src/{util-SPsvFONY.cjs → util-BuYzkbEz.cjs} +7 -7
  367. package/dist/src/{util-LKTmNsMQ.js → util-C6d3eV0A.js} +25 -7
  368. package/dist/src/{util-DURocbYR.js → util-CES4qWd7.js} +8 -8
  369. package/dist/src/{util-Df8YMvS1.js → util-CKZReNsz.js} +8 -8
  370. package/dist/src/{util-BSIuSLVK.cjs → util-Cs372i1_.cjs} +25 -7
  371. package/dist/src/{util-CoQWM76y.js → util-Cw9nJJWm.js} +4 -3
  372. package/dist/src/{util-DNl96nNs.js → util-D1NKMz55.js} +7 -7
  373. package/dist/src/{util-kDURhgJW.js → util-D9grslJP.js} +8 -8
  374. package/dist/src/{util--WMgw7wM.js → util-SNUDkWJ8.js} +4 -3
  375. package/dist/src/{util-Bx677_k2.js → util-vaCPFatZ.js} +7 -7
  376. package/dist/src/{util-DiQ3QvBB.js → util-weQgMdSy.js} +4 -3
  377. package/dist/src/{utils-Ve6kuJsa.cjs → utils-B_HCobst.cjs} +2 -2
  378. package/dist/src/{utils-BGY69tk_.js → utils-C3qMBhJT.js} +2 -2
  379. package/dist/src/{utils-BFOh20Gb.js → utils-Cdx3ZJr7.js} +2 -2
  380. package/dist/src/{utils-B0lzitHZ.js → utils-DMWnIu_V.js} +2 -2
  381. package/dist/src/{version-BK20a4sw.js → version-BGiEZvX0.js} +2 -2
  382. package/dist/src/{version-lpHV_53E.js → version-BNhpIb2U.js} +2 -2
  383. package/dist/src/{version-eRkNuGv8.js → version-CnYqmWbz.js} +2 -2
  384. package/dist/src/{version-BWCSaByA.cjs → version-XjGPawtU.cjs} +2 -2
  385. package/dist/tsconfig.tsbuildinfo +1 -1
  386. package/package.json +17 -17
  387. package/dist/src/app/assets/Report-BNHJKN35.js +0 -1
  388. package/dist/src/app/assets/index-yhM8y1PP.css +0 -1
  389. package/dist/src/cache-Cf7b4pWE.js +0 -3
  390. package/dist/src/cloud-p96PA4MH.js +0 -3
  391. package/dist/src/codex-sdk-BGjVAk23.js +0 -3
  392. package/dist/src/evalResult-DqzsS6_W.js +0 -3
  393. package/dist/src/evaluator-DNdJF1Gv.js +0 -3
  394. package/dist/src/fetch-_YgGd2qv.js +0 -3
  395. package/dist/src/graders-BDT7dif6.js +0 -3
  396. package/dist/src/rubyUtils-BYVlQ94c.js +0 -3
  397. package/dist/src/server-BaLytskk.js +0 -3
  398. package/dist/src/store-IbiRIF3k.js +0 -3
  399. package/dist/src/telemetry-ByPqDcKC.js +0 -3
@@ -1,16 +1,16 @@
1
- import { a as logger, m as extractFirstJsonObject } from "./logger-KD8JjCRJ.js";
2
- import { m as sleep } from "./fetch-BufrQtvR.js";
1
+ import { a as logger, m as extractFirstJsonObject } from "./logger-BjYLHvGm.js";
2
+ import { m as sleep } from "./fetch-CBe8pU8Q.js";
3
3
  import { t as invariant } from "./invariant-DIYf9sP1.js";
4
- import { c as isLoggedIntoCloud } from "./accounts-DanM1wq_.js";
5
- import { o as getNunjucksEngine } from "./render-_6ur1fhE.js";
6
- import { l as shouldGenerateRemote } from "./remoteGeneration-COpWcmWd.js";
4
+ import { c as isLoggedIntoCloud } from "./accounts-BAajbKSh.js";
5
+ import { o as getNunjucksEngine } from "./render-BoxrvB84.js";
6
+ import { l as shouldGenerateRemote } from "./remoteGeneration-CoxtxLvB.js";
7
7
  import { a as createEmptyTokenUsage, n as accumulateResponseTokenUsage } from "./tokenUsageUtils-BjVkdk18.js";
8
- import { a as extractPromptFromTags, i as extractMaterializedVariablesFromJsonWithMetadata, o as getSessionId } from "./util-Df8YMvS1.js";
9
- import { t as PromptfooChatCompletionProvider } from "./promptfoo-BDrfT30-.js";
10
- import { c as getTargetResponse, f as redteamProviderManager, i as externalizeResponseForRedteamHistory, m as TokenUsageTracker, n as checkPenalizedPhrases, o as getGraderAssertionValue, r as createIterationContext, t as buildGraderResultAssertion } from "./shared-7pmVZLNO.js";
11
- import { n as checkExfilTracking } from "./indirectWebPwn-tNx9OZ35.js";
8
+ import { a as extractPromptFromTags, i as extractMaterializedVariablesFromJsonWithMetadata, o as getSessionId } from "./util-CKZReNsz.js";
9
+ import { a as assertRemoteMaterializationHandled, o as buildRemoteMaterializationContextVars, s as buildRemoteMaterializedInputVariables, t as PromptfooChatCompletionProvider } from "./promptfoo-DVKqidd8.js";
10
+ import { c as getTargetResponse, f as redteamProviderManager, i as externalizeResponseForRedteamHistory, m as TokenUsageTracker, n as checkPenalizedPhrases, o as getGraderAssertionValue, r as createIterationContext, t as buildGraderResultAssertion } from "./shared-yBQATkD5.js";
11
+ import { n as checkExfilTracking } from "./indirectWebPwn-DRYpRTx6.js";
12
12
  import { n as renderPrompt, t as Strategies } from "./server/index.js";
13
- import { t as applyRuntimeTransforms } from "./runtimeTransform-BJOpL9Yc.js";
13
+ import { t as applyRuntimeTransforms } from "./runtimeTransform-BmhEztlx.js";
14
14
  import { n as CLOUD_ATTACKER_SYSTEM_PROMPT, r as JUDGE_SYSTEM_PROMPT, t as ATTACKER_SYSTEM_PROMPT } from "./prompts-BYMtqPCw.js";
15
15
  import dedent from "dedent";
16
16
  //#region src/redteam/providers/iterativeTree.ts
@@ -154,14 +154,20 @@ async function evaluateResponse(provider, judgeSystemPrompt, targetResponse, pre
154
154
  * @param redteamHistory - The conversation history of the red team.
155
155
  * @returns A promise that resolves to an object containing the improvement and new prompt.
156
156
  */
157
- async function getNewPrompt(redteamProvider, redteamHistory) {
157
+ async function getNewPrompt(redteamProvider, redteamHistory, materializationContext) {
158
158
  const redteamBody = JSON.stringify(redteamHistory);
159
159
  const redteamResp = await redteamProvider.callApi(redteamBody, {
160
160
  prompt: {
161
161
  raw: redteamBody,
162
162
  label: "history"
163
163
  },
164
- vars: {}
164
+ vars: materializationContext ? buildRemoteMaterializationContextVars({
165
+ injectVar: void 0,
166
+ inputs: materializationContext.inputs,
167
+ materializationIndex: materializationContext.materializationIndex,
168
+ pluginId: materializationContext.pluginId,
169
+ purpose: materializationContext.purpose
170
+ }) : {}
165
171
  });
166
172
  if (redteamProvider.delay) {
167
173
  logger.debug(`[IterativeTree] Sleeping for ${redteamProvider.delay}ms`);
@@ -184,6 +190,9 @@ async function getNewPrompt(redteamProvider, redteamHistory) {
184
190
  logger.info(`[IterativeTree] Failed to parse attacker response as JSON (primary and fallback). Skipping this turn. primary=${String(primaryErr)} fallback=${String(fallbackErr)} outputPreview="${redteamResp.output.slice(0, 200)}"`);
185
191
  return {
186
192
  improvement: "parse failure – skipping turn",
193
+ inputMaterialization: redteamResp.inputMaterialization,
194
+ materializationHandled: redteamResp.materializationHandled,
195
+ materializedVars: redteamResp.materializedVars,
187
196
  prompt: "",
188
197
  tokenUsage: redteamResp.tokenUsage
189
198
  };
@@ -192,6 +201,9 @@ async function getNewPrompt(redteamProvider, redteamHistory) {
192
201
  else retObj = redteamResp.output;
193
202
  return {
194
203
  ...retObj,
204
+ inputMaterialization: redteamResp.inputMaterialization,
205
+ materializationHandled: redteamResp.materializationHandled,
206
+ materializedVars: redteamResp.materializedVars,
195
207
  tokenUsage: redteamResp.tokenUsage
196
208
  };
197
209
  }
@@ -230,13 +242,16 @@ function updateRedteamHistory(targetResponse, goal, score, containsPenalizedPhra
230
242
  * @param id - Optional custom UUID for the node. If not provided, a new UUID will be generated.
231
243
  * @returns A new TreeNode object.
232
244
  */
233
- function createTreeNode(prompt, score, depth, id) {
245
+ function createTreeNode(prompt, score, depth, id, options) {
234
246
  return {
235
247
  id: id || crypto.randomUUID(),
236
248
  prompt,
237
249
  score,
238
250
  children: [],
239
- depth
251
+ depth,
252
+ inputMaterialization: options?.inputMaterialization,
253
+ materializationHandled: options?.materializationHandled,
254
+ materializedVars: options?.materializedVars
240
255
  };
241
256
  }
242
257
  /**
@@ -313,10 +328,20 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
313
328
  loggerTag: "[IterativeTree]"
314
329
  });
315
330
  const iterationVars = iterationContext?.vars || {};
316
- let { improvement, prompt: newInjectVar } = await getNewPrompt(redteamProvider, [...redteamHistory, {
331
+ let { improvement, inputMaterialization, materializationHandled, materializedVars, prompt: newInjectVar } = await getNewPrompt(redteamProvider, [...redteamHistory, {
317
332
  role: "assistant",
318
333
  content: node.prompt
319
- }]);
334
+ }], shouldGenerateRemote() ? {
335
+ inputs,
336
+ materializationIndex: attempts,
337
+ pluginId: String(test?.metadata?.pluginId || "unknown-plugin"),
338
+ purpose: test?.metadata?.purpose
339
+ } : void 0);
340
+ if (inputs && shouldGenerateRemote()) assertRemoteMaterializationHandled({
341
+ inputMaterialization,
342
+ materializationHandled,
343
+ materializedVars
344
+ }, "Iterative Tree multi-input generation");
320
345
  attempts++;
321
346
  const extractedPrompt = extractPromptFromTags(newInjectVar);
322
347
  if (extractedPrompt) newInjectVar = extractedPrompt;
@@ -359,14 +384,22 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
359
384
  ...iterationVars,
360
385
  [injectVar]: finalInjectVar
361
386
  };
362
- if (inputs && Object.keys(inputs).length > 0) try {
363
- const { vars: materializedVars } = await extractMaterializedVariablesFromJsonWithMetadata(JSON.parse(newInjectVar), inputs, {
387
+ if (inputs && Object.keys(inputs).length > 0) if (shouldGenerateRemote()) try {
388
+ const parsed = JSON.parse(newInjectVar);
389
+ Object.assign(updatedVars, buildRemoteMaterializedInputVariables({
390
+ inputMaterialization,
391
+ materializationHandled,
392
+ materializedVars
393
+ }, parsed, inputs).vars);
394
+ } catch {}
395
+ else try {
396
+ const { vars: localMaterializedVars } = await extractMaterializedVariablesFromJsonWithMetadata(JSON.parse(newInjectVar), inputs, {
364
397
  materializationIndex: attempts - 1,
365
398
  pluginId: String(test?.metadata?.pluginId || "unknown-plugin"),
366
399
  provider: redteamProvider,
367
400
  purpose: test?.metadata?.purpose
368
401
  });
369
- Object.assign(updatedVars, materializedVars);
402
+ Object.assign(updatedVars, localMaterializedVars);
370
403
  } catch {}
371
404
  const targetPrompt = await renderPrompt(prompt, updatedVars, filters, targetProvider, [injectVar]);
372
405
  let targetResponse = await getTargetResponse(targetProvider, targetPrompt, iterationContext, options);
@@ -403,11 +436,18 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
403
436
  const containsPenalizedPhrase = checkPenalizedPhrases(targetResponse.output);
404
437
  const { score, explanation } = await evaluateResponse(gradingProvider, judgeSystemPrompt, targetResponse.output, bestResponse, containsPenalizedPhrase);
405
438
  logger.debug(`[Depth ${depth}, Attempt ${attempts}] Evaluation: score=${score}, penalized=${containsPenalizedPhrase}. Max score so far: ${maxScore}`);
406
- nextLevelNodes.push(createTreeNode(newInjectVar, score, depth + 1));
439
+ nextLevelNodes.push(createTreeNode(newInjectVar, score, depth + 1, void 0, {
440
+ inputMaterialization,
441
+ materializationHandled,
442
+ materializedVars
443
+ }));
407
444
  if (score > maxScore) {
408
445
  maxScore = score;
409
446
  bestResponse = targetResponse.output;
410
447
  bestNode.prompt = newInjectVar;
448
+ bestNode.inputMaterialization = inputMaterialization;
449
+ bestNode.materializationHandled = materializationHandled;
450
+ bestNode.materializedVars = materializedVars;
411
451
  bestFinalAttackPrompt = finalInjectVar;
412
452
  bestTransformDisplayVars = lastTransformDisplayVars;
413
453
  logger.debug(`[Depth ${depth}, Attempt ${attempts}] New max score: ${maxScore}`);
@@ -419,7 +459,7 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
419
459
  noImprovementCount++;
420
460
  if (noImprovementCount % 5 === 0) logger.debug(`[Depth ${depth}, Attempt ${attempts}] No improvement for ${noImprovementCount} consecutive iterations. Max score: ${maxScore}`);
421
461
  }
422
- const { getGraderById } = await import("./graders-C0nXU_ZP.js").then((n) => n.r);
462
+ const { getGraderById } = await import("./graders-k8qmhrPu.js").then((n) => n.r);
423
463
  let graderPassed;
424
464
  let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
425
465
  if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
@@ -618,13 +658,23 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
618
658
  [injectVar]: bestPrompt
619
659
  };
620
660
  if (inputs && Object.keys(inputs).length > 0) try {
621
- const { vars: materializedVars } = await extractMaterializedVariablesFromJsonWithMetadata(JSON.parse(bestPrompt), inputs, {
622
- materializationIndex: attempts,
623
- pluginId: String(test?.metadata?.pluginId || "unknown-plugin"),
624
- provider: redteamProvider,
625
- purpose: test?.metadata?.purpose
626
- });
627
- Object.assign(finalUpdatedVars, materializedVars);
661
+ const parsed = JSON.parse(bestPrompt);
662
+ if (shouldGenerateRemote()) {
663
+ const remoteBestNodeMaterialization = {
664
+ inputMaterialization: bestNode.inputMaterialization,
665
+ materializationHandled: bestNode.materializationHandled,
666
+ materializedVars: bestNode.materializedVars
667
+ };
668
+ if (remoteBestNodeMaterialization.materializationHandled) Object.assign(finalUpdatedVars, buildRemoteMaterializedInputVariables(remoteBestNodeMaterialization, parsed, inputs).vars);
669
+ } else {
670
+ const { vars: materializedVars } = await extractMaterializedVariablesFromJsonWithMetadata(parsed, inputs, {
671
+ materializationIndex: attempts,
672
+ pluginId: String(test?.metadata?.pluginId || "unknown-plugin"),
673
+ provider: redteamProvider,
674
+ purpose: test?.metadata?.purpose
675
+ });
676
+ Object.assign(finalUpdatedVars, materializedVars);
677
+ }
628
678
  } catch {}
629
679
  const finalTargetPrompt = await renderPrompt(prompt, finalUpdatedVars, filters, targetProvider, [injectVar]);
630
680
  const finalTargetResponse = await getTargetResponse(targetProvider, finalTargetPrompt, context, options);
@@ -765,4 +815,4 @@ var RedteamIterativeTreeProvider = class {
765
815
  //#endregion
766
816
  export { RedteamIterativeTreeProvider as default };
767
817
 
768
- //# sourceMappingURL=iterativeTree-CNyIk0Yn.js.map
818
+ //# sourceMappingURL=iterativeTree-D9I3UJ0P.js.map
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import { D as getEnvInt, s as logger } from "./logger-BbY6ypFL.js";
3
- import { r as telemetry } from "./telemetry-00ezXr_t.js";
2
+ import { D as getEnvInt, s as logger } from "./logger-h-eiS4iv.js";
3
+ import { r as telemetry } from "./telemetry-BU80NveV.js";
4
4
  import { n as sha256 } from "./createHash-CgRvs4Fn.js";
5
- import { c as isCacheEnabled, o as getCache } from "./cache-DpPWrkTE.js";
5
+ import { c as isCacheEnabled, o as getCache } from "./cache-BuudGL4I.js";
6
6
  import { a as createEmptyTokenUsage } from "./tokenUsageUtils-CDet74yk.js";
7
- import { n as createBedrockRequestHandler, r as hasProxyEnv, t as AwsBedrockGenericProvider } from "./base-Co80MMCi.js";
7
+ import { n as createBedrockRequestHandler, r as hasProxyEnv, t as AwsBedrockGenericProvider } from "./base-BARAIJmp.js";
8
8
  //#region src/providers/bedrock/knowledgeBase.ts
9
9
  /**
10
10
  * AWS Bedrock Knowledge Base provider for RAG (Retrieval Augmented Generation).
@@ -134,4 +134,4 @@ var AwsBedrockKnowledgeBaseProvider = class extends AwsBedrockGenericProvider {
134
134
  //#endregion
135
135
  export { AwsBedrockKnowledgeBaseProvider };
136
136
 
137
- //# sourceMappingURL=knowledgeBase-CkMljjdg.js.map
137
+ //# sourceMappingURL=knowledgeBase-BGbDBwr5.js.map
@@ -1,9 +1,9 @@
1
- import { a as logger, w as getEnvInt } from "./logger-KD8JjCRJ.js";
1
+ import { T as getEnvInt, a as logger } from "./logger-BjYLHvGm.js";
2
2
  import { n as sha256 } from "./createHash-CGVzWdjj.js";
3
- import { i as getCache, o as isCacheEnabled } from "./cache-roFAE0cI.js";
3
+ import { i as getCache, o as isCacheEnabled } from "./cache-x9llZxbx.js";
4
4
  import { a as createEmptyTokenUsage } from "./tokenUsageUtils-BjVkdk18.js";
5
- import { n as telemetry } from "./telemetry-DmXYcJNV.js";
6
- import { n as createBedrockRequestHandler, r as hasProxyEnv, t as AwsBedrockGenericProvider } from "./base-E9I8zXjz.js";
5
+ import { n as telemetry } from "./telemetry-D3yQCekN.js";
6
+ import { n as createBedrockRequestHandler, r as hasProxyEnv, t as AwsBedrockGenericProvider } from "./base-CTWzNAH9.js";
7
7
  //#region src/providers/bedrock/knowledgeBase.ts
8
8
  /**
9
9
  * AWS Bedrock Knowledge Base provider for RAG (Retrieval Augmented Generation).
@@ -133,4 +133,4 @@ var AwsBedrockKnowledgeBaseProvider = class extends AwsBedrockGenericProvider {
133
133
  //#endregion
134
134
  export { AwsBedrockKnowledgeBaseProvider };
135
135
 
136
- //# sourceMappingURL=knowledgeBase-Bi_8sV-H.js.map
136
+ //# sourceMappingURL=knowledgeBase-BzfBwPyQ.js.map
@@ -1,9 +1,9 @@
1
- import { a as logger, w as getEnvInt } from "./logger-Ct2S6Yx-.js";
1
+ import { a as logger, w as getEnvInt } from "./logger-Cs0I2v_y.js";
2
2
  import { n as sha256 } from "./createHash-BtbSX3mj.js";
3
- import { i as getCache, o as isCacheEnabled } from "./cache-DIXbtkNO.js";
3
+ import { i as getCache, o as isCacheEnabled } from "./cache-CT5D7d_A.js";
4
4
  import { a as createEmptyTokenUsage } from "./tokenUsageUtils-CmnQ0G2m.js";
5
- import { t as telemetry } from "./telemetry-DwX9XUN5.js";
6
- import { n as createBedrockRequestHandler, r as hasProxyEnv, t as AwsBedrockGenericProvider } from "./base-CKLo890h.js";
5
+ import { t as telemetry } from "./telemetry-BTIhfopq.js";
6
+ import { n as createBedrockRequestHandler, r as hasProxyEnv, t as AwsBedrockGenericProvider } from "./base-0yya4DsM.js";
7
7
  //#region src/providers/bedrock/knowledgeBase.ts
8
8
  /**
9
9
  * AWS Bedrock Knowledge Base provider for RAG (Retrieval Augmented Generation).
@@ -133,4 +133,4 @@ var AwsBedrockKnowledgeBaseProvider = class extends AwsBedrockGenericProvider {
133
133
  //#endregion
134
134
  export { AwsBedrockKnowledgeBaseProvider };
135
135
 
136
- //# sourceMappingURL=knowledgeBase-BadkINlJ.js.map
136
+ //# sourceMappingURL=knowledgeBase-C_MSTwDt.js.map
@@ -1,9 +1,9 @@
1
- const require_logger = require("./logger-cfNpzI4o.cjs");
1
+ const require_logger = require("./logger-Cm0Nb8YX.cjs");
2
2
  const require_createHash = require("./createHash-CSiqnK5P.cjs");
3
- const require_cache = require("./cache-CPGUA4Yl.cjs");
3
+ const require_cache = require("./cache-WuIsgzMA.cjs");
4
4
  const require_tokenUsageUtils = require("./tokenUsageUtils-_B-P8IAi.cjs");
5
- const require_telemetry = require("./telemetry-CJ7FnCsc.cjs");
6
- const require_base = require("./base-DGJW48uz.cjs");
5
+ const require_telemetry = require("./telemetry-DvzmDrSM.cjs");
6
+ const require_base = require("./base-BE_pY-r5.cjs");
7
7
  //#region src/providers/bedrock/knowledgeBase.ts
8
8
  /**
9
9
  * AWS Bedrock Knowledge Base provider for RAG (Retrieval Augmented Generation).
@@ -133,4 +133,4 @@ var AwsBedrockKnowledgeBaseProvider = class extends require_base.AwsBedrockGener
133
133
  //#endregion
134
134
  exports.AwsBedrockKnowledgeBaseProvider = AwsBedrockKnowledgeBaseProvider;
135
135
 
136
- //# sourceMappingURL=knowledgeBase-DUh34xba.cjs.map
136
+ //# sourceMappingURL=knowledgeBase-DSVK_YTi.cjs.map
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import { O as getEnvString } from "./logger-BbY6ypFL.js";
3
- import { t as OpenAiChatCompletionProvider } from "./chat-DqUFcWI0.js";
4
- import { t as OpenAiEmbeddingProvider } from "./embedding--UZVe4_7.js";
5
- import { t as OpenAiCompletionProvider } from "./completion-DZNxcyfG.js";
2
+ import { O as getEnvString } from "./logger-h-eiS4iv.js";
3
+ import { t as OpenAiChatCompletionProvider } from "./chat-B8lsx0A0.js";
4
+ import { t as OpenAiEmbeddingProvider } from "./embedding-BQBXSWgy.js";
5
+ import { t as OpenAiCompletionProvider } from "./completion-BoWiFP-D.js";
6
6
  //#region src/providers/litellm.ts
7
7
  /**
8
8
  * Base class for LiteLLM providers that maintains LiteLLM identity
@@ -134,4 +134,4 @@ function createLiteLLMProvider(providerPath, options = {}) {
134
134
  //#endregion
135
135
  export { createLiteLLMProvider };
136
136
 
137
- //# sourceMappingURL=litellm-BXyn5kZK.js.map
137
+ //# sourceMappingURL=litellm-CRTmskqC.js.map
@@ -1,7 +1,7 @@
1
- import { T as getEnvString } from "./logger-KD8JjCRJ.js";
2
- import { t as OpenAiChatCompletionProvider } from "./chat-CUCorGiL.js";
3
- import { t as OpenAiEmbeddingProvider } from "./embedding-C251p1-8.js";
4
- import { t as OpenAiCompletionProvider } from "./completion-CO2e1_62.js";
1
+ import { E as getEnvString } from "./logger-BjYLHvGm.js";
2
+ import { t as OpenAiChatCompletionProvider } from "./chat-CvQMD-mp.js";
3
+ import { t as OpenAiEmbeddingProvider } from "./embedding-BwTB3YDt.js";
4
+ import { t as OpenAiCompletionProvider } from "./completion-C99GFqQE.js";
5
5
  //#region src/providers/litellm.ts
6
6
  /**
7
7
  * Base class for LiteLLM providers that maintains LiteLLM identity
@@ -133,4 +133,4 @@ function createLiteLLMProvider(providerPath, options = {}) {
133
133
  //#endregion
134
134
  export { createLiteLLMProvider };
135
135
 
136
- //# sourceMappingURL=litellm-BKBo0jpC.js.map
136
+ //# sourceMappingURL=litellm-Ch4E-r4b.js.map
@@ -1,7 +1,7 @@
1
- import { T as getEnvString } from "./logger-Ct2S6Yx-.js";
2
- import { t as OpenAiChatCompletionProvider } from "./chat-Dabu84Br.js";
3
- import { t as OpenAiEmbeddingProvider } from "./embedding-Bi3rxrZF.js";
4
- import { t as OpenAiCompletionProvider } from "./completion-sNvCLTAP.js";
1
+ import { T as getEnvString } from "./logger-Cs0I2v_y.js";
2
+ import { t as OpenAiChatCompletionProvider } from "./chat-CCtIXezK.js";
3
+ import { t as OpenAiEmbeddingProvider } from "./embedding-cd5oPBkX.js";
4
+ import { t as OpenAiCompletionProvider } from "./completion-CUtdijfr.js";
5
5
  //#region src/providers/litellm.ts
6
6
  /**
7
7
  * Base class for LiteLLM providers that maintains LiteLLM identity
@@ -133,4 +133,4 @@ function createLiteLLMProvider(providerPath, options = {}) {
133
133
  //#endregion
134
134
  export { createLiteLLMProvider };
135
135
 
136
- //# sourceMappingURL=litellm-CNcfbCfa.js.map
136
+ //# sourceMappingURL=litellm-DNnk7802.js.map
@@ -1,7 +1,7 @@
1
- const require_logger = require("./logger-cfNpzI4o.cjs");
2
- const require_chat = require("./chat-DxTDQ83C.cjs");
3
- const require_embedding = require("./embedding-BbrwopfX.cjs");
4
- const require_completion = require("./completion-CSYfl2cd.cjs");
1
+ const require_logger = require("./logger-Cm0Nb8YX.cjs");
2
+ const require_chat = require("./chat-DkitQHdt.cjs");
3
+ const require_embedding = require("./embedding-BMqFDnLI.cjs");
4
+ const require_completion = require("./completion-CkRVjadz.cjs");
5
5
  //#region src/providers/litellm.ts
6
6
  /**
7
7
  * Base class for LiteLLM providers that maintains LiteLLM identity
@@ -133,4 +133,4 @@ function createLiteLLMProvider(providerPath, options = {}) {
133
133
  //#endregion
134
134
  exports.createLiteLLMProvider = createLiteLLMProvider;
135
135
 
136
- //# sourceMappingURL=litellm-CtAr7bKG.cjs.map
136
+ //# sourceMappingURL=litellm-jA4_p8mv.cjs.map
@@ -1,43 +1,51 @@
1
1
  import { t as invariant } from "./invariant-DIYf9sP1.js";
2
2
  import dotenv from "dotenv";
3
- import { AsyncLocalStorage } from "node:async_hooks";
4
3
  import fs from "fs";
5
4
  import * as path$1 from "path";
6
5
  import path from "path";
7
6
  import chalk from "chalk";
8
7
  import winston from "winston";
8
+ import { AsyncLocalStorage } from "node:async_hooks";
9
9
  import * as os$1 from "os";
10
10
  import Ajv from "ajv";
11
11
  import addFormats from "ajv-formats";
12
12
  import yaml from "js-yaml";
13
13
  import safeStringify from "fast-safe-stringify";
14
- //#region src/cliState.ts
15
- const maxConcurrencyContext = new AsyncLocalStorage();
16
- let globalMaxConcurrency;
17
- const state = {
18
- get maxConcurrency() {
19
- const store = maxConcurrencyContext.getStore();
20
- if (store) return store.maxConcurrency;
21
- return globalMaxConcurrency;
22
- },
23
- set maxConcurrency(value) {
24
- const store = maxConcurrencyContext.getStore();
25
- if (store) {
26
- store.maxConcurrency = value;
27
- return;
28
- }
29
- globalMaxConcurrency = value;
30
- },
31
- withMaxConcurrency(maxConcurrency, fn) {
32
- return maxConcurrencyContext.run({ maxConcurrency }, fn);
14
+ //#region src/envOverrides.ts
15
+ /**
16
+ * Module-level singleton; last-writer-wins. Scoped to the current process —
17
+ * not propagated to `worker_threads` or child processes, which must register
18
+ * their own provider (typically by importing `./cliState`).
19
+ *
20
+ * Kept dependency-free on purpose: this module is reachable from the bottom
21
+ * of the import graph (via `envars`), so adding imports here risks circular
22
+ * cycles with logger / cliState.
23
+ */
24
+ let envOverridesProvider;
25
+ function setEnvOverridesProvider(provider) {
26
+ envOverridesProvider = provider;
27
+ }
28
+ /**
29
+ * Returns the current env overrides snapshot, or `undefined` if no provider is
30
+ * registered. Swallows provider exceptions to preserve the invariant that
31
+ * `getEnvString` (and its delegates `getEnvBool` / `getEnvInt` / etc.) never
32
+ * throw on environment access — relied on by ~148 call sites.
33
+ */
34
+ function getEnvOverrides() {
35
+ if (!envOverridesProvider) return;
36
+ try {
37
+ return envOverridesProvider();
38
+ } catch {
39
+ return;
33
40
  }
34
- };
41
+ }
35
42
  //#endregion
36
43
  //#region src/envars.ts
37
44
  dotenv.config({ quiet: true });
38
45
  function getEnvString(key, defaultValue) {
39
- if (state.config?.env && typeof state.config.env === "object") {
40
- const envValue = state.config.env[key];
46
+ const envOverrides = getEnvOverrides();
47
+ if (envOverrides) {
48
+ const envValue = envOverrides[key];
41
49
  if (envValue !== void 0) return String(envValue);
42
50
  }
43
51
  const value = process.env[key];
@@ -102,6 +110,29 @@ function isCI() {
102
110
  return getEnvBool("CI") || getEnvBool("GITHUB_ACTIONS") || getEnvBool("TRAVIS") || getEnvBool("CIRCLECI") || getEnvBool("JENKINS") || getEnvBool("GITLAB_CI") || getEnvBool("APPVEYOR") || getEnvBool("CODEBUILD_BUILD_ID") || getEnvBool("TF_BUILD") || getEnvBool("BITBUCKET_COMMIT") || getEnvBool("BUDDY") || getEnvBool("BUILDKITE") || getEnvBool("TEAMCITY_VERSION");
103
111
  }
104
112
  //#endregion
113
+ //#region src/cliState.ts
114
+ const maxConcurrencyContext = new AsyncLocalStorage();
115
+ let globalMaxConcurrency;
116
+ const state = {
117
+ get maxConcurrency() {
118
+ const store = maxConcurrencyContext.getStore();
119
+ if (store) return store.maxConcurrency;
120
+ return globalMaxConcurrency;
121
+ },
122
+ set maxConcurrency(value) {
123
+ const store = maxConcurrencyContext.getStore();
124
+ if (store) {
125
+ store.maxConcurrency = value;
126
+ return;
127
+ }
128
+ globalMaxConcurrency = value;
129
+ },
130
+ withMaxConcurrency(maxConcurrency, fn) {
131
+ return maxConcurrencyContext.run({ maxConcurrency }, fn);
132
+ }
133
+ };
134
+ setEnvOverridesProvider(() => state.config?.env);
135
+ //#endregion
105
136
  //#region src/util/config/manage.ts
106
137
  let configDirectoryPath = getEnvString("PROMPTFOO_CONFIG_DIR");
107
138
  const isNodeEnvironment = typeof process !== "undefined" && process.versions && process.versions.node;
@@ -733,6 +764,6 @@ async function logRequestResponse(options) {
733
764
  }
734
765
  if (getEnvString("LOG_LEVEL", "info") === "debug") initializeSourceMapSupport();
735
766
  //#endregion
736
- export { getEnvFloat as C, getMaxEvalTimeMs as D, getEvalTimeoutMs as E, isCI as O, getEnvBool as S, getEnvString as T, isValidJson as _, logger as a, summarizeEvaluateResultForLogging as b, REDACTED as c, normalizeFieldName as d, sanitizeObject as f, getAjv as g, extractJsonObjects as h, logRequestResponse as i, state as k, isSecretField as l, extractFirstJsonObject as m, globalLogCallback as n, setLogCallback as o, sanitizeUrl as p, isDebugEnabled as r, setLogLevel as s, getLogLevel as t, looksLikeSecret as u, orderKeys as v, getEnvInt as w, getConfigDirectoryPath as x, safeJsonStringify as y };
767
+ export { getEnvBool as C, getEvalTimeoutMs as D, getEnvString as E, getMaxEvalTimeMs as O, state as S, getEnvInt as T, isValidJson as _, logger as a, summarizeEvaluateResultForLogging as b, REDACTED as c, normalizeFieldName as d, sanitizeObject as f, getAjv as g, extractJsonObjects as h, logRequestResponse as i, isCI as k, isSecretField as l, extractFirstJsonObject as m, globalLogCallback as n, setLogCallback as o, sanitizeUrl as p, isDebugEnabled as r, setLogLevel as s, getLogLevel as t, looksLikeSecret as u, orderKeys as v, getEnvFloat as w, getConfigDirectoryPath as x, safeJsonStringify as y };
737
768
 
738
- //# sourceMappingURL=logger-KD8JjCRJ.js.map
769
+ //# sourceMappingURL=logger-BjYLHvGm.js.map
@@ -21,6 +21,35 @@ let ajv_formats = require("ajv-formats");
21
21
  ajv_formats = require_rolldown_runtime.__toESM(ajv_formats, 1);
22
22
  let fast_safe_stringify = require("fast-safe-stringify");
23
23
  fast_safe_stringify = require_rolldown_runtime.__toESM(fast_safe_stringify, 1);
24
+ //#region src/envOverrides.ts
25
+ /**
26
+ * Module-level singleton; last-writer-wins. Scoped to the current process —
27
+ * not propagated to `worker_threads` or child processes, which must register
28
+ * their own provider (typically by importing `./cliState`).
29
+ *
30
+ * Kept dependency-free on purpose: this module is reachable from the bottom
31
+ * of the import graph (via `envars`), so adding imports here risks circular
32
+ * cycles with logger / cliState.
33
+ */
34
+ let envOverridesProvider;
35
+ function setEnvOverridesProvider(provider) {
36
+ envOverridesProvider = provider;
37
+ }
38
+ /**
39
+ * Returns the current env overrides snapshot, or `undefined` if no provider is
40
+ * registered. Swallows provider exceptions to preserve the invariant that
41
+ * `getEnvString` (and its delegates `getEnvBool` / `getEnvInt` / etc.) never
42
+ * throw on environment access — relied on by ~148 call sites.
43
+ */
44
+ function getEnvOverrides() {
45
+ if (!envOverridesProvider) return;
46
+ try {
47
+ return envOverridesProvider();
48
+ } catch {
49
+ return;
50
+ }
51
+ }
52
+ //#endregion
24
53
  //#region src/cliState.ts
25
54
  const maxConcurrencyContext = new node_async_hooks.AsyncLocalStorage();
26
55
  let globalMaxConcurrency;
@@ -42,12 +71,14 @@ const state = {
42
71
  return maxConcurrencyContext.run({ maxConcurrency }, fn);
43
72
  }
44
73
  };
74
+ setEnvOverridesProvider(() => state.config?.env);
45
75
  //#endregion
46
76
  //#region src/envars.ts
47
77
  dotenv.default.config({ quiet: true });
48
78
  function getEnvString(key, defaultValue) {
49
- if (state.config?.env && typeof state.config.env === "object") {
50
- const envValue = state.config.env[key];
79
+ const envOverrides = getEnvOverrides();
80
+ if (envOverrides) {
81
+ const envValue = envOverrides[key];
51
82
  if (envValue !== void 0) return String(envValue);
52
83
  }
53
84
  const value = process.env[key];
@@ -918,4 +949,4 @@ Object.defineProperty(exports, "summarizeEvaluateResultForLogging", {
918
949
  }
919
950
  });
920
951
 
921
- //# sourceMappingURL=logger-cfNpzI4o.cjs.map
952
+ //# sourceMappingURL=logger-Cm0Nb8YX.cjs.map
@@ -11,6 +11,35 @@ import * as os$1 from "os";
11
11
  import Ajv from "ajv";
12
12
  import addFormats from "ajv-formats";
13
13
  import safeStringify from "fast-safe-stringify";
14
+ //#region src/envOverrides.ts
15
+ /**
16
+ * Module-level singleton; last-writer-wins. Scoped to the current process —
17
+ * not propagated to `worker_threads` or child processes, which must register
18
+ * their own provider (typically by importing `./cliState`).
19
+ *
20
+ * Kept dependency-free on purpose: this module is reachable from the bottom
21
+ * of the import graph (via `envars`), so adding imports here risks circular
22
+ * cycles with logger / cliState.
23
+ */
24
+ let envOverridesProvider;
25
+ function setEnvOverridesProvider(provider) {
26
+ envOverridesProvider = provider;
27
+ }
28
+ /**
29
+ * Returns the current env overrides snapshot, or `undefined` if no provider is
30
+ * registered. Swallows provider exceptions to preserve the invariant that
31
+ * `getEnvString` (and its delegates `getEnvBool` / `getEnvInt` / etc.) never
32
+ * throw on environment access — relied on by ~148 call sites.
33
+ */
34
+ function getEnvOverrides() {
35
+ if (!envOverridesProvider) return;
36
+ try {
37
+ return envOverridesProvider();
38
+ } catch {
39
+ return;
40
+ }
41
+ }
42
+ //#endregion
14
43
  //#region src/cliState.ts
15
44
  const maxConcurrencyContext = new AsyncLocalStorage();
16
45
  let globalMaxConcurrency;
@@ -32,12 +61,14 @@ const state = {
32
61
  return maxConcurrencyContext.run({ maxConcurrency }, fn);
33
62
  }
34
63
  };
64
+ setEnvOverridesProvider(() => state.config?.env);
35
65
  //#endregion
36
66
  //#region src/envars.ts
37
67
  dotenv.config({ quiet: true });
38
68
  function getEnvString(key, defaultValue) {
39
- if (state.config?.env && typeof state.config.env === "object") {
40
- const envValue = state.config.env[key];
69
+ const envOverrides = getEnvOverrides();
70
+ if (envOverrides) {
71
+ const envValue = envOverrides[key];
41
72
  if (envValue !== void 0) return String(envValue);
42
73
  }
43
74
  const value = process.env[key];
@@ -735,4 +766,4 @@ if (getEnvString("LOG_LEVEL", "info") === "debug") initializeSourceMapSupport();
735
766
  //#endregion
736
767
  export { getEnvFloat as C, getMaxEvalTimeMs as D, getEvalTimeoutMs as E, isCI as O, getEnvBool as S, getEnvString as T, isValidJson as _, logger as a, summarizeEvaluateResultForLogging as b, REDACTED as c, normalizeFieldName as d, sanitizeObject as f, getAjv as g, extractJsonObjects as h, logRequestResponse as i, state as k, isSecretField as l, extractFirstJsonObject as m, globalLogCallback as n, setLogCallback as o, sanitizeUrl as p, isDebugEnabled as r, setLogLevel as s, getLogLevel as t, looksLikeSecret as u, orderKeys as v, getEnvInt as w, getConfigDirectoryPath as x, safeJsonStringify as y };
737
768
 
738
- //# sourceMappingURL=logger-Ct2S6Yx-.js.map
769
+ //# sourceMappingURL=logger-Cs0I2v_y.js.map