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.
- package/dist/src/{accounts-Ca7WIoPY.js → accounts-4Xa5fcHy.js} +17 -18
- package/dist/src/{accounts-DanM1wq_.js → accounts-BAajbKSh.js} +17 -18
- package/dist/src/{accounts-CjFnOPmb.js → accounts-Bw2qPqE-.js} +18 -19
- package/dist/src/{accounts-CmWzeD2d.cjs → accounts-DAcQXPwE.cjs} +20 -21
- package/dist/src/{agentic-utils-DvPWSUpb.cjs → agentic-utils-C8eEgGG-.cjs} +3 -3
- package/dist/src/{agentic-utils-TxUEMPYS.js → agentic-utils-CP1IXFz3.js} +3 -3
- package/dist/src/{agentic-utils-DDEGRV9v.js → agentic-utils-CUwa3AE9.js} +3 -3
- package/dist/src/{agentic-utils-CJ0j3fBi.js → agentic-utils-DYr-aM6d.js} +3 -3
- package/dist/src/{agents-CBgJvRkB.js → agents-Bb00M6i5.js} +5 -5
- package/dist/src/{agents-D-vDNFx4.js → agents-CASf5zRj.js} +5 -5
- package/dist/src/{agents-B4sRuXg3.cjs → agents-CD1wH9bm.cjs} +5 -5
- package/dist/src/{agents-CYn2n3QP.js → agents-CZOHU7Q8.js} +5 -5
- package/dist/src/{agents-LrHuQqr1.js → agents-D539zhHr.js} +5 -5
- package/dist/src/{agents-B8q7h_ek.js → agents-DpRJdGBZ.js} +5 -5
- package/dist/src/{agents-QGg76OF-.js → agents-gZTW-8nu.js} +5 -5
- package/dist/src/{agents-eHZ9nlgA.cjs → agents-hix6c0Sh.cjs} +5 -5
- package/dist/src/{aimlapi-eYv3a_DK.js → aimlapi-DRQSL-Z4.js} +7 -7
- package/dist/src/{aimlapi-CJEbQ0o6.js → aimlapi-Dc3LW5zI.js} +7 -7
- package/dist/src/{aimlapi-D5HXzZ0s.js → aimlapi-KNYnjjU6.js} +7 -7
- package/dist/src/{aimlapi-T6HGNxNe.cjs → aimlapi-gnrgd_Ej.cjs} +7 -7
- package/dist/src/app/assets/Report-Clw_YCp-.js +1 -0
- package/dist/src/app/assets/index-BQHaquKk.css +1 -0
- package/dist/src/app/assets/{index-BnT6P6sF.js → index-CW3XcQK7.js} +6 -6
- package/dist/src/app/index.html +2 -2
- package/dist/src/{audio-FnxbEnSE.cjs → audio-BgFTqfMO.cjs} +5 -5
- package/dist/src/{audio-CPMtV1yR.js → audio-Cslbgd4l.js} +5 -5
- package/dist/src/{audio-DyiebVB3.js → audio-DOI8kth4.js} +5 -5
- package/dist/src/{audio-BqnRvcWG.js → audio-hewMOCUU.js} +5 -5
- package/dist/src/{authoritativeMarkupInjection-DyAXAsSr.js → authoritativeMarkupInjection-DgE4u_Rl.js} +8 -8
- package/dist/src/{authoritativeMarkupInjection-QEQmFS83.js → authoritativeMarkupInjection-gpm2K-Rp.js} +8 -8
- package/dist/src/{authoritativeMarkupInjection-BZIywVjG.js → authoritativeMarkupInjection-nrC4mSPQ.js} +7 -7
- package/dist/src/{authoritativeMarkupInjection-F2gBw0lN.cjs → authoritativeMarkupInjection-wG4x0yP2.cjs} +8 -8
- package/dist/src/{base-CKLo890h.js → base-0yya4DsM.js} +3 -3
- package/dist/src/{base-Co80MMCi.js → base-BARAIJmp.js} +3 -3
- package/dist/src/{base-DGJW48uz.cjs → base-BE_pY-r5.cjs} +3 -3
- package/dist/src/{base-E9I8zXjz.js → base-CTWzNAH9.js} +3 -3
- package/dist/src/{bestOfN-BBsO41z4.js → bestOfN-CV7ZKPw2.js} +8 -8
- package/dist/src/{bestOfN-_kTi8Bxe.js → bestOfN-DeucA4QS.js} +9 -9
- package/dist/src/{bestOfN-CAwmg5UL.cjs → bestOfN-DxcpVUvj.cjs} +9 -9
- package/dist/src/{bestOfN-B3wNzjSB.js → bestOfN-Ilxc2hMv.js} +9 -9
- package/dist/src/{blobs-B0977K1O.cjs → blobs-5wbW7TbH.cjs} +3 -3
- package/dist/src/{blobs-Dwef1Ao1.js → blobs-BfIMflt0.js} +3 -3
- package/dist/src/{blobs-DODuTK-a.js → blobs-CA4gXarv.js} +3 -3
- package/dist/src/{blobs-CeFdPn_T.js → blobs-ikh75MtF.js} +3 -3
- package/dist/src/{cache-DpPWrkTE.js → cache-BuudGL4I.js} +5 -5
- package/dist/src/{cache-DIXbtkNO.js → cache-CT5D7d_A.js} +4 -4
- package/dist/src/cache-CrL5EYgi.js +3 -0
- package/dist/src/{cache-CPGUA4Yl.cjs → cache-WuIsgzMA.cjs} +4 -4
- package/dist/src/{cache-roFAE0cI.js → cache-x9llZxbx.js} +5 -5
- package/dist/src/{chat-GmlolEwo.js → chat-B5NqvkS_.js} +3 -3
- package/dist/src/{chat-DqUFcWI0.js → chat-B8lsx0A0.js} +11 -11
- package/dist/src/{chat-DG1wG4w0.cjs → chat-BBlR1h8c.cjs} +3 -3
- package/dist/src/{chat-Dabu84Br.js → chat-CCtIXezK.js} +11 -11
- package/dist/src/{chat-TP8Qifkh.js → chat-CZOhFlzV.js} +3 -3
- package/dist/src/{chat-CUCorGiL.js → chat-CvQMD-mp.js} +11 -11
- package/dist/src/{chat-iwaM5UTQ.js → chat-Dh6mb5OL.js} +3 -3
- package/dist/src/{chat-DxTDQ83C.cjs → chat-DkitQHdt.cjs} +11 -11
- package/dist/src/{chatkit-fARZwEfV.js → chatkit-55cAEQb2.js} +4 -4
- package/dist/src/{chatkit-lb6FK02w.js → chatkit-B-uz3x63.js} +4 -4
- package/dist/src/{chatkit-B6DWi70Q.js → chatkit-Dxp6KO70.js} +4 -4
- package/dist/src/{chatkit-BYveR48_.cjs → chatkit-jEtokOVZ.cjs} +4 -4
- package/dist/src/{claude-agent-sdk-D5Jl0SDh.js → claude-agent-sdk-BVfdeahc.js} +9 -7
- package/dist/src/{claude-agent-sdk-DH416NBD.cjs → claude-agent-sdk-C0p-RhcW.cjs} +9 -7
- package/dist/src/{claude-agent-sdk-x1XJ1-pU.js → claude-agent-sdk-DB99Npst.js} +9 -7
- package/dist/src/{claude-agent-sdk-BQNp_y-F.js → claude-agent-sdk-DHyrhDUu.js} +9 -7
- package/dist/src/cloud-BA4aLhk0.js +3 -0
- package/dist/src/{cloud-D3DiFqH6.js → cloud-BbAl8dyj.js} +3 -3
- package/dist/src/{cloudflare-ai-RFSojyXG.js → cloudflare-ai-ChBxkojW.js} +5 -5
- package/dist/src/{cloudflare-ai-r4tbYmWU.js → cloudflare-ai-DDmTDys_.js} +5 -5
- package/dist/src/{cloudflare-ai-CEAW-xQa.cjs → cloudflare-ai-DPlNiC6I.cjs} +5 -5
- package/dist/src/{cloudflare-ai-B6NVI3ax.js → cloudflare-ai-UsZe6ndv.js} +5 -5
- package/dist/src/{cloudflare-gateway-TJMLBj6I.cjs → cloudflare-gateway-7b-lEtrb.cjs} +4 -4
- package/dist/src/{cloudflare-gateway-BaZ4insB.js → cloudflare-gateway-Bq5cqiV8.js} +4 -4
- package/dist/src/{cloudflare-gateway-CF-Vb-2Z.js → cloudflare-gateway-C0N-5s62.js} +4 -4
- package/dist/src/{cloudflare-gateway-BCkLouto.js → cloudflare-gateway-D5fm-QvC.js} +4 -4
- package/dist/src/{codex-app-server-DIXZ230V.js → codex-app-server-BG5Aphvl.js} +20 -5
- package/dist/src/{codex-app-server-B8KHEiF4.js → codex-app-server-BnPMlcjl.js} +20 -5
- package/dist/src/{codex-app-server-Dd22dC_N.js → codex-app-server-D6gbvJFw.js} +20 -5
- package/dist/src/{codex-app-server-CnrLBCeA.cjs → codex-app-server-Dl6BLKJn.cjs} +20 -5
- package/dist/src/{codex-sdk-B6Wah8Pa.js → codex-sdk-BnRTWAhS.js} +20 -8
- package/dist/src/codex-sdk-CChw5CYU.js +3 -0
- package/dist/src/{codex-sdk-CFF6gUyi.cjs → codex-sdk-Cy1pEjsQ.cjs} +20 -8
- package/dist/src/{codex-sdk-CmQABzV3.js → codex-sdk-D86dT4XV.js} +20 -8
- package/dist/src/{codex-sdk-D2d54RL8.js → codex-sdk-mgUqOG2C.js} +20 -8
- package/dist/src/{cometapi-CtzNCHKu.js → cometapi-CkOfr271.js} +8 -8
- package/dist/src/{cometapi-DHCDlQUI.cjs → cometapi-EB-Is7jj.cjs} +8 -8
- package/dist/src/{cometapi-OBILPLlu.js → cometapi-gvPhrXNM.js} +8 -8
- package/dist/src/{cometapi-Bu9B8NUY.js → cometapi-sBbQmdfk.js} +8 -8
- package/dist/src/{completion-DZNxcyfG.js → completion-BoWiFP-D.js} +7 -7
- package/dist/src/{completion-CO2e1_62.js → completion-C99GFqQE.js} +7 -7
- package/dist/src/{completion-sNvCLTAP.js → completion-CUtdijfr.js} +7 -7
- package/dist/src/{completion-CSYfl2cd.cjs → completion-CkRVjadz.cjs} +7 -7
- package/dist/src/{crescendo-QiaSLW0d.js → crescendo-B4EiUJ-M.js} +43 -22
- package/dist/src/{crescendo-BXEJK_bi.cjs → crescendo-BAN6NuWV.cjs} +45 -24
- package/dist/src/{crescendo-CU_Y2i-m.js → crescendo-CYzxmaSJ.js} +45 -24
- package/dist/src/{crescendo-J1Xx4_zb.js → crescendo-CrsXyaL0.js} +45 -24
- package/dist/src/{custom-BJfP00Bh.js → custom-C5K9QFs1.js} +13 -13
- package/dist/src/{custom-Cqia7M0D.cjs → custom-D1UjT5I5.cjs} +13 -13
- package/dist/src/{custom-CZVn-1-r.js → custom-DnMZvgB6.js} +13 -13
- package/dist/src/{custom-notggYVl.js → custom-EWterxkb.js} +11 -11
- package/dist/src/{docker-DdJQBxK9.js → docker-BFQc9ccU.js} +6 -6
- package/dist/src/{docker-D06JUoe2.cjs → docker-BMfsGXyn.cjs} +6 -6
- package/dist/src/{docker-4D1eL6Gq.js → docker-ChD4-eri.js} +6 -6
- package/dist/src/{docker-BBv1WUDu.js → docker-mZF5j6cW.js} +6 -6
- package/dist/src/{embedding-BbrwopfX.cjs → embedding-BMqFDnLI.cjs} +7 -7
- package/dist/src/{embedding--UZVe4_7.js → embedding-BQBXSWgy.js} +7 -7
- package/dist/src/{embedding-Bi3rxrZF.js → embedding-BwTB3YDt.js} +7 -7
- package/dist/src/{embedding-C251p1-8.js → embedding-cd5oPBkX.js} +7 -7
- package/dist/src/{esm-B6whoAcf.js → esm-CGER3lko.js} +2 -2
- package/dist/src/{esm-Bexx2PFc.js → esm-CYMWMaSj.js} +2 -2
- package/dist/src/{esm-BTK1W7lG.js → esm-C_yrt93A.js} +2 -2
- package/dist/src/{esm-BIKakvNa.cjs → esm-vv4rR-Dp.cjs} +2 -2
- package/dist/src/{eval-0VRANImH.js → eval-DmGWplIN.js} +10 -10
- package/dist/src/{eval-DscR5iOM.js → eval-N_VV5NZg.js} +1 -1
- package/dist/src/{evalResult-CvtS8h8u.cjs → evalResult-BZld6I3I.cjs} +6 -6
- package/dist/src/{evalResult-eUkJv9Ko.js → evalResult-ByGP9zuP.js} +7 -7
- package/dist/src/evalResult-CPPINYHK.js +3 -0
- package/dist/src/{evalResult-2RRJvFyB.js → evalResult-gEmQRANj.js} +6 -6
- package/dist/src/evaluator-B01pCdUY.js +3 -0
- package/dist/src/{evaluator-DRoiYB2q.js → evaluator-BpaUYhLY.js} +37 -37
- package/dist/src/{evaluatorHelpers-CRqTvSux.cjs → evaluatorHelpers-2gpZ9Q_f.cjs} +10 -10
- package/dist/src/{evaluatorHelpers-DuqFFfq7.js → evaluatorHelpers-C8C8WQTv.js} +10 -10
- package/dist/src/{evaluatorHelpers-BsYP_muT.js → evaluatorHelpers-DDG44JeI.js} +10 -10
- package/dist/src/{extractor-CxRtnaHl.js → extractor-Bjz9sdTQ.js} +6 -6
- package/dist/src/{extractor-CIW3iN-b.js → extractor-CtadTcJm.js} +6 -6
- package/dist/src/{extractor-BR7XAzAL.js → extractor-DAnauX2V.js} +6 -6
- package/dist/src/{extractor-BdxEtt3J.cjs → extractor-nyUwvU2U.cjs} +6 -6
- package/dist/src/{fetch-Dw4XZHjj.cjs → fetch-B2HvaVUc.cjs} +14 -12
- package/dist/src/{fetch-DXUnXkVU.js → fetch-C59QM4cf.js} +10 -8
- package/dist/src/{fetch-BufrQtvR.js → fetch-CBe8pU8Q.js} +10 -8
- package/dist/src/{fetch-It34O8Ur.js → fetch-CHJu2KON.js} +9 -7
- package/dist/src/fetch-D_XnRfBV.js +3 -0
- package/dist/src/{goat-Ckd3q3AY.js → goat-0HwO0EB2.js} +22 -21
- package/dist/src/{goat-una6pZGP.cjs → goat-7wQgRcT4.cjs} +22 -21
- package/dist/src/{goat-ghadEDdy.js → goat-BNX0lOFx.js} +20 -19
- package/dist/src/{goat-Qgurm-NP.js → goat-BOVnOl5S.js} +22 -21
- package/dist/src/{graders-BGP99PdK.js → graders-BnO-xoa-.js} +30 -30
- package/dist/src/{graders-ClrU2fnd.cjs → graders-CQv1GT5Q.cjs} +29 -29
- package/dist/src/graders-D4vc1PFi.js +3 -0
- package/dist/src/{graders-BX0f2tvS.js → graders-GNRQ1357.js} +29 -29
- package/dist/src/{graders-C0nXU_ZP.js → graders-k8qmhrPu.js} +31 -31
- package/dist/src/{hydra-BSNZZm2M.js → hydra-BrgGALmB.js} +38 -20
- package/dist/src/{hydra-BxdG4nkg.js → hydra-C38LOovb.js} +36 -18
- package/dist/src/{hydra-DE4xWwyc.js → hydra-CXc0p63W.js} +38 -20
- package/dist/src/{hydra-DrJttnvw.cjs → hydra-Hdj65j0k.cjs} +38 -20
- package/dist/src/{image-B_fPIwdg.js → image-6u3WZ_7H.js} +5 -5
- package/dist/src/{image-BN-hjLL9.js → image-B6hCz0z3.js} +5 -5
- package/dist/src/{image-BvUAW344.js → image-CgmaPlV_.js} +7 -7
- package/dist/src/{image-QzmydkiG.js → image-DXbwwL-r.js} +5 -5
- package/dist/src/{image-X0oY4350.cjs → image-Daa_X_YB.cjs} +7 -7
- package/dist/src/{image-Cvjwx1uY.js → image-DmC5qwQx.js} +7 -7
- package/dist/src/{image-DfVCGPbI.cjs → image-TY6FsHmn.cjs} +5 -5
- package/dist/src/{image-B4oBtu6J.js → image-V0-pYiBI.js} +7 -7
- package/dist/src/index.cjs +137 -140
- package/dist/src/index.d.cts +13 -0
- package/dist/src/index.d.ts +13 -0
- package/dist/src/index.js +137 -140
- package/dist/src/{indirectWebPwn-BJ22AbQa.cjs → indirectWebPwn-04ziKbly.cjs} +5 -5
- package/dist/src/{indirectWebPwn-tNx9OZ35.js → indirectWebPwn-1gHqaL91.js} +5 -5
- package/dist/src/{indirectWebPwn-DBQhOjoD.js → indirectWebPwn-B0CAtvZJ.js} +6 -6
- package/dist/src/{indirectWebPwn-uyWdHx04.js → indirectWebPwn-BXUoJl4I.js} +5 -5
- package/dist/src/{indirectWebPwn-02ZIghCS.js → indirectWebPwn-Biy9I52D.js} +6 -6
- package/dist/src/{indirectWebPwn-OsXnKejv.js → indirectWebPwn-BoPqjm9W.js} +6 -6
- package/dist/src/{indirectWebPwn-CbjUG0rh.js → indirectWebPwn-DRYpRTx6.js} +5 -5
- package/dist/src/{indirectWebPwn-CfQJt3gk.cjs → indirectWebPwn-MiCFTfzI.cjs} +6 -6
- package/dist/src/{inputVariables-DUGMb9Ka.js → inputVariables-B7cylqzM.js} +2 -2
- package/dist/src/{inputVariables-Dq9W-Z3a.cjs → inputVariables-D5K2vTp4.cjs} +2 -2
- package/dist/src/{inputVariables-B0qUChbV.js → inputVariables-DpOsOnzU.js} +3 -3
- package/dist/src/{inputVariables-DXFdi7AI.js → inputVariables-qJmuSN5i.js} +3 -3
- package/dist/src/{interactiveCheck-C4QlIuoR.js → interactiveCheck-BLnDrfjg.js} +2 -2
- package/dist/src/{iterative-FTS4Bz67.js → iterative-BDRx_noa.js} +29 -19
- package/dist/src/{iterative-CpU6i2As.js → iterative-BZxrxnoh.js} +27 -17
- package/dist/src/{iterative-DQBuWM-j.cjs → iterative-KSovqu_j.cjs} +29 -19
- package/dist/src/{iterative-DJQEQpG3.js → iterative-vxBU1IPs.js} +29 -19
- package/dist/src/{iterativeImage-Doz8mgxF.js → iterativeImage-BZuMd4x3.js} +7 -7
- package/dist/src/{iterativeImage-BUABMVOA.js → iterativeImage-DUWLmyVM.js} +6 -6
- package/dist/src/{iterativeImage-ByFWkxax.cjs → iterativeImage-DqNKoaIl.cjs} +7 -7
- package/dist/src/{iterativeImage-BzUapOUi.js → iterativeImage-DwIp1WGB.js} +7 -7
- package/dist/src/{iterativeMeta-CSS8M6Ds.cjs → iterativeMeta-9gsvnsl1.cjs} +39 -19
- package/dist/src/{iterativeMeta-B3YiAOc8.js → iterativeMeta-AgI6UEh6.js} +39 -19
- package/dist/src/{iterativeMeta-C7APE_P1.js → iterativeMeta-BbcVN5nQ.js} +39 -19
- package/dist/src/{iterativeMeta-DgoQ7bLh.js → iterativeMeta-BcF8LsFk.js} +37 -17
- package/dist/src/{iterativeTree-B5zxBBSW.js → iterativeTree-5TLHU9Kx.js} +81 -31
- package/dist/src/{iterativeTree-CPMF10ve.cjs → iterativeTree-7XyY_zdo.cjs} +81 -31
- package/dist/src/{iterativeTree-DvZ7GBwt.js → iterativeTree-CnHx_kPu.js} +81 -31
- package/dist/src/{iterativeTree-CNyIk0Yn.js → iterativeTree-D9I3UJ0P.js} +79 -29
- package/dist/src/{knowledgeBase-CkMljjdg.js → knowledgeBase-BGbDBwr5.js} +5 -5
- package/dist/src/{knowledgeBase-Bi_8sV-H.js → knowledgeBase-BzfBwPyQ.js} +5 -5
- package/dist/src/{knowledgeBase-BadkINlJ.js → knowledgeBase-C_MSTwDt.js} +5 -5
- package/dist/src/{knowledgeBase-DUh34xba.cjs → knowledgeBase-DSVK_YTi.cjs} +5 -5
- package/dist/src/{litellm-BXyn5kZK.js → litellm-CRTmskqC.js} +5 -5
- package/dist/src/{litellm-BKBo0jpC.js → litellm-Ch4E-r4b.js} +5 -5
- package/dist/src/{litellm-CNcfbCfa.js → litellm-DNnk7802.js} +5 -5
- package/dist/src/{litellm-CtAr7bKG.cjs → litellm-jA4_p8mv.cjs} +5 -5
- package/dist/src/{logger-KD8JjCRJ.js → logger-BjYLHvGm.js} +56 -25
- package/dist/src/{logger-cfNpzI4o.cjs → logger-Cm0Nb8YX.cjs} +34 -3
- package/dist/src/{logger-Ct2S6Yx-.js → logger-Cs0I2v_y.js} +34 -3
- package/dist/src/{logger-BbY6ypFL.js → logger-h-eiS4iv.js} +34 -3
- package/dist/src/{luma-ray-D3FUc2K3.cjs → luma-ray-BCkN79tz.cjs} +5 -5
- package/dist/src/{luma-ray-CR5TSpp4.js → luma-ray-BqVizUQY.js} +5 -5
- package/dist/src/{luma-ray-BMX1iEB6.js → luma-ray-CD7rd6KW.js} +5 -5
- package/dist/src/{luma-ray-OEMmS1RB.js → luma-ray-DLWLjDCa.js} +5 -5
- package/dist/src/main.js +143 -146
- package/dist/src/{memoryPoisoning-Dp-btinn.cjs → memoryPoisoning-BXDi4XCK.cjs} +8 -8
- package/dist/src/{memoryPoisoning-CM83NWYl.js → memoryPoisoning-D-V4yXjj.js} +8 -8
- package/dist/src/{memoryPoisoning-D8h9gXJF.js → memoryPoisoning-PrsT7Zh2.js} +8 -8
- package/dist/src/{memoryPoisoning-cLuCoTuJ.js → memoryPoisoning-ZUwCLvEn.js} +8 -8
- package/dist/src/{messages-DBPir0TQ.cjs → messages-BSFLFXIO.cjs} +8 -8
- package/dist/src/{messages-BabO-cX8.js → messages-C5qBfONg.js} +8 -8
- package/dist/src/{messages-DGUlSNU7.js → messages-CQoK4jHx.js} +8 -8
- package/dist/src/{messages-vsE_-Lv0.js → messages-Dy5vvc3H.js} +8 -8
- package/dist/src/{mischievousUser-olGgHIVR.cjs → mischievousUser-B4_YRWqu.cjs} +5 -5
- package/dist/src/{mischievousUser-frFYKxu6.js → mischievousUser-BoZy3Fry.js} +5 -5
- package/dist/src/{mischievousUser-BUOP9W5r.js → mischievousUser-CjJ9ZEuw.js} +5 -5
- package/dist/src/{mischievousUser-0l8GD7Dp.js → mischievousUser-CrMXlOUj.js} +5 -5
- package/dist/src/{modelslab-EyDczZ5A.js → modelslab-B72XbAlR.js} +8 -8
- package/dist/src/{modelslab-Dzst7VTU.js → modelslab-Bw-46LmW.js} +8 -8
- package/dist/src/{modelslab-Cogmu4mG.js → modelslab-CJ0zQdDH.js} +8 -8
- package/dist/src/{modelslab-CNV5bMSk.cjs → modelslab-LXFLCD-O.cjs} +8 -8
- package/dist/src/{nova-reel-CjJRxI1X.cjs → nova-reel-D0k0-k8Y.cjs} +5 -5
- package/dist/src/{nova-reel-C4eUJGse.js → nova-reel-DItvBa6z.js} +5 -5
- package/dist/src/{nova-reel-BGPNBOMS.js → nova-reel-DN7gTJzd.js} +5 -5
- package/dist/src/{nova-reel-B_5NKFu1.js → nova-reel-DRLvlFOH.js} +5 -5
- package/dist/src/{nova-sonic-BNGmgfFz.js → nova-sonic-BeAjEzkG.js} +3 -3
- package/dist/src/{nova-sonic-CrV0iaY_.js → nova-sonic-DB7LzcCY.js} +3 -3
- package/dist/src/{nova-sonic-DuOG9Aun.cjs → nova-sonic-DfLkPbkF.cjs} +3 -3
- package/dist/src/{nova-sonic-ChPlh5na.js → nova-sonic-kzIVxZDb.js} +3 -3
- package/dist/src/{openai-BMHD2Huo.js → openai-Bfbg6L4c.js} +2 -2
- package/dist/src/{openai-C3uXv8wS.cjs → openai-CCaz18I4.cjs} +2 -2
- package/dist/src/{openai-CJrsh9n4.js → openai-CJOpg_dA.js} +2 -2
- package/dist/src/{openai-zgwBb4Ff.js → openai-uRacy72N.js} +2 -2
- package/dist/src/{openclaw-zIJAsz3P.js → openclaw-2Y9Ukt9Y.js} +9 -9
- package/dist/src/{openclaw-CF7fMido.js → openclaw-BdnuiqBG.js} +9 -9
- package/dist/src/{openclaw-Dphc01BY.cjs → openclaw-D54hA9Fe.cjs} +9 -9
- package/dist/src/{openclaw-BIHlu_36.js → openclaw-DRjsDCSS.js} +9 -9
- package/dist/src/{opencode-sdk-B3vlPLsp.js → opencode-sdk-2su-bzyz.js} +38 -9
- package/dist/src/{opencode-sdk-DoY6GbWw.cjs → opencode-sdk-BRkqgOOQ.cjs} +38 -9
- package/dist/src/{opencode-sdk-D05JSgMQ.js → opencode-sdk-CFY-1bkH.js} +38 -9
- package/dist/src/{opencode-sdk-sRKYHGoI.js → opencode-sdk-D-tRQJ9s.js} +38 -9
- package/dist/src/{otlpReceiver-B2eaKC8C.js → otlpReceiver-BkB7tsTT.js} +3 -3
- package/dist/src/{otlpReceiver--gTpSagc.js → otlpReceiver-BqJYGC-M.js} +4 -4
- package/dist/src/{otlpReceiver-BXjcRqAM.js → otlpReceiver-CRwU2egH.js} +4 -4
- package/dist/src/{otlpReceiver-CvJdBGSc.cjs → otlpReceiver-DOl5S07u.cjs} +4 -4
- package/dist/src/{packageParser--MWTSrPW.js → packageParser-B3bpKHK4.js} +2 -2
- package/dist/src/{packageParser-hwwSGnAZ.js → packageParser-CZdMKLBh.js} +2 -2
- package/dist/src/{packageParser-CgE-ziRo.js → packageParser-D7YWfcSe.js} +2 -2
- package/dist/src/{packageParser-QoCS1FMl.cjs → packageParser-DR054ceU.cjs} +2 -2
- package/dist/src/{promptLength-B9nZEfO6.js → promptLength-5B4_P93z.js} +2 -2
- package/dist/src/{promptLength-BbBbDHNj.cjs → promptLength-CAcg7BmO.cjs} +2 -2
- package/dist/src/{promptLength-4X-Wd8PG.js → promptLength-PkjlYFx0.js} +2 -2
- package/dist/src/{promptLength-0qIHyhA5.js → promptLength-ho3wbst6.js} +2 -2
- package/dist/src/{promptfoo-BDrfT30-.js → promptfoo-CEsoPlBa.js} +67 -10
- package/dist/src/{promptfoo-b-baRMj-.cjs → promptfoo-DAXBmrE6.cjs} +96 -9
- package/dist/src/{promptfoo-Cm4hiy1Y.js → promptfoo-DVKqidd8.js} +67 -10
- package/dist/src/{promptfoo-Rjp-MeBb.js → promptfoo-wxe28-q9.js} +67 -10
- package/dist/src/{providerRegistry-DHcFiVWX.js → providerRegistry-Bf4tRLgu.js} +2 -2
- package/dist/src/{providerRegistry-CZO_w7ue.cjs → providerRegistry-DKbi2EbP.cjs} +2 -2
- package/dist/src/{providerRegistry-ReCd0sFa.js → providerRegistry-DLeG-xXn.js} +2 -2
- package/dist/src/{providerRegistry-1gB5vtzQ.js → providerRegistry-v8Wa3f9z.js} +2 -2
- package/dist/src/{providers-B9KzWxAX.js → providers-CYBHjFEg.js} +178 -126
- package/dist/src/{providers-BCCz6_IX.js → providers-DDLQc0tl.js} +177 -125
- package/dist/src/{providers-BDVVIQM6.cjs → providers-DP1CDgd5.cjs} +176 -124
- package/dist/src/{providers-DVYRZP4E.js → providers-DTPwadhk.js} +176 -124
- package/dist/src/{providers-BYAn82cf.js → providers-DvBFcsXi.js} +1 -1
- package/dist/src/{pythonUtils-Cokhluq3.cjs → pythonUtils-BjuymNdM.cjs} +3 -3
- package/dist/src/{pythonUtils-D0BYebvX.js → pythonUtils-C4Wnz6Q7.js} +3 -3
- package/dist/src/{pythonUtils-CLCgQ9tt.js → pythonUtils-CBe7VV6f.js} +3 -3
- package/dist/src/{pythonUtils-CgYxeSmO.js → pythonUtils-CLAoc6jg.js} +3 -3
- package/dist/src/{quiverai-CdTWPe-A.js → quiverai-B6ebiUKf.js} +6 -6
- package/dist/src/{quiverai-Cv7rJKDz.js → quiverai-BG7dvOQc.js} +6 -6
- package/dist/src/{quiverai-BAp6iTZD.cjs → quiverai-DH6SMaxD.cjs} +6 -6
- package/dist/src/{quiverai-BvIhI_0l.js → quiverai-DHNIAUfS.js} +6 -6
- package/dist/src/{registry-BUJrgjwv.js → registry-BKlwRYvr.js} +14 -14
- package/dist/src/{registry-KCVF1CFC.cjs → registry-CQHRTGYs.cjs} +14 -14
- package/dist/src/{registry-Dp5EqoXc.js → registry-Eiv-QeUm.js} +14 -14
- package/dist/src/{registry-DXm1t_x0.js → registry-qNoxbVEb.js} +14 -14
- package/dist/src/{remoteGeneration-DS9N3pgB.cjs → remoteGeneration-CD3c_rzc.cjs} +6 -6
- package/dist/src/{remoteGeneration-DsaSwmG2.js → remoteGeneration-CoxtxLvB.js} +6 -6
- package/dist/src/{remoteGeneration-B1_XsKXU.js → remoteGeneration-DW6mPZnO.js} +6 -6
- package/dist/src/{remoteGeneration-COpWcmWd.js → remoteGeneration-DvWEm3yi.js} +6 -6
- package/dist/src/{render-_6ur1fhE.js → render-BoxrvB84.js} +2 -2
- package/dist/src/{render-DFfDeYUK.js → render-CTZQAINJ.js} +2 -2
- package/dist/src/{render-BNTrbmBw.cjs → render-DJ4yipCD.cjs} +2 -2
- package/dist/src/{render-DznWrxGO.js → render-MiyTvDY4.js} +2 -2
- package/dist/src/{render-CSP99NLm.js → render-jE6RKVgk.js} +2 -2
- package/dist/src/{responses-1UFFF9N_.cjs → responses-Bs2_3zyr.cjs} +14 -10
- package/dist/src/{responses-B3W2JvOQ.js → responses-C0yU3fO6.js} +14 -10
- package/dist/src/{responses-URRzV8qE.js → responses-C2vhwf8F.js} +14 -10
- package/dist/src/{responses-B6ktc3Ra.js → responses-pvlY3oYx.js} +14 -10
- package/dist/src/{rubyUtils-CnlW8AYb.js → rubyUtils-AvgsD_QH.js} +3 -3
- package/dist/src/{rubyUtils-CqUWBZAt.cjs → rubyUtils-BEqeZynS.cjs} +3 -3
- package/dist/src/{rubyUtils-CXlFM2rR.js → rubyUtils-C-sxXgGT.js} +3 -3
- package/dist/src/{rubyUtils-DdGojpfv.js → rubyUtils-DFzPvVD4.js} +3 -3
- package/dist/src/rubyUtils-DfYaGbxe.js +3 -0
- package/dist/src/{runtimeTransform-DigbjU1r.js → runtimeTransform-BmhEztlx.js} +2 -2
- package/dist/src/{runtimeTransform-BJOpL9Yc.js → runtimeTransform-Bw9Tttpp.js} +2 -2
- package/dist/src/{runtimeTransform-ON3YYILw.cjs → runtimeTransform-DJEknTZQ.cjs} +2 -2
- package/dist/src/{runtimeTransform-Dgh_D7DU.js → runtimeTransform-s14J7yxm.js} +2 -2
- package/dist/src/{sagemaker-yr1QKeBs.js → sagemaker-C8NJAT8D.js} +11 -11
- package/dist/src/{sagemaker-vhtSV7JI.js → sagemaker-DlajLLgJ.js} +11 -11
- package/dist/src/{sagemaker-CujrzP1a.js → sagemaker-PgIzjxMt.js} +11 -11
- package/dist/src/{sagemaker-DzffAqo_.cjs → sagemaker-hwPXLGI4.cjs} +11 -11
- package/dist/src/{scanner-DS0109SS.js → scanner-B3DPvw5u.js} +6 -6
- package/dist/src/server/index.js +145 -148
- package/dist/src/{server-DhMHosWj.js → server-4wx571OM.js} +6 -6
- package/dist/src/{server-Ddp8GNMp.js → server-8in_Vrrf.js} +6 -6
- package/dist/src/server-BHd6SQYX.js +3 -0
- package/dist/src/{server-CMJD10J4.js → server-pMTgWs3M.js} +4 -4
- package/dist/src/{server-B8rqV126.cjs → server-yHhoBx98.cjs} +4 -4
- package/dist/src/{shared-D6IjElRI.js → shared-BF25a7ms.js} +12 -12
- package/dist/src/{shared-WkgnDkcg.cjs → shared-DlmtkptR.cjs} +12 -12
- package/dist/src/{shared-9WHQ1oNE.js → shared-DsbObxvy.js} +12 -12
- package/dist/src/{shared-7pmVZLNO.js → shared-yBQATkD5.js} +13 -13
- package/dist/src/{signal-CSurUUyV.js → signal-CRrWj2xI.js} +3 -3
- package/dist/src/{simulatedUser-Cu601Dd4.cjs → simulatedUser-9A3YPDh2.cjs} +7 -7
- package/dist/src/{simulatedUser-C9aQObBI.js → simulatedUser-CbZZV7UQ.js} +7 -7
- package/dist/src/{simulatedUser-U_qAHnuB.js → simulatedUser-DdcsTBuS.js} +7 -7
- package/dist/src/{simulatedUser-p3tACcmw.js → simulatedUser-LKk31Iov.js} +7 -7
- package/dist/src/{slack-Bapo-7_8.js → slack-CWxUAo6N.js} +2 -2
- package/dist/src/{slack-DMC1QVEg.cjs → slack-CtMQnlyy.cjs} +2 -2
- package/dist/src/{slack-DTEFhrMn.js → slack-DrcMAkvd.js} +2 -2
- package/dist/src/{slack-k-_CP84Q.js → slack-chzmaYU3.js} +2 -2
- package/dist/src/{storage-BU4qcnOb.js → storage-B9lg2RCL.js} +6 -6
- package/dist/src/{storage-QdU-SmvD.js → storage-BC9TzmHh.js} +5 -5
- package/dist/src/{storage-CA-v9V2v.cjs → storage-Cv7QYUPO.cjs} +4 -4
- package/dist/src/{storage-CD-GWAdx.js → storage-fbHNSuZ9.js} +4 -4
- package/dist/src/{store-B2NDDooM.cjs → store-BKN4VD-m.cjs} +3 -3
- package/dist/src/{store-HpopRVzl.js → store-C4eo8Kyv.js} +3 -3
- package/dist/src/store-mJpYYA7W.js +3 -0
- package/dist/src/{store-DKd5592Q.js → store-u1XNK3e8.js} +3 -3
- package/dist/src/{strategies-CiSeroPH.js → strategies-4Nnr_9xt.js} +18 -18
- package/dist/src/{strategies-7CS3Alao.cjs → strategies-BD7US9WB.cjs} +18 -18
- package/dist/src/{strategies-DRJjGTIY.js → strategies-Ptz_P4P4.js} +20 -20
- package/dist/src/{tables-CRSXQ2Ke.js → tables-Bn3_8sxV.js} +2 -2
- package/dist/src/{tables-DafUHOeh.js → tables-D_ZGKiGc.js} +3 -3
- package/dist/src/{tables-DBIJU0WE.cjs → tables-D_s2HMPP.cjs} +2 -2
- package/dist/src/{tables-CxjU7bBd.js → tables-PWOqfbI_.js} +3 -3
- package/dist/src/{telemetry-DwX9XUN5.js → telemetry-BTIhfopq.js} +21 -16
- package/dist/src/{telemetry-00ezXr_t.js → telemetry-BU80NveV.js} +21 -16
- package/dist/src/telemetry-CVHVhMOI.js +3 -0
- package/dist/src/{telemetry-DmXYcJNV.js → telemetry-D3yQCekN.js} +21 -16
- package/dist/src/{telemetry-CJ7FnCsc.cjs → telemetry-DvzmDrSM.cjs} +21 -16
- package/dist/src/{tracingOptions-BnwKCkSB.js → tracingOptions-D2F0D7es.js} +4 -4
- package/dist/src/{tracingOptions-Chi74lOD.js → tracingOptions-PLePpCmo.js} +3 -3
- package/dist/src/{tracingOptions-ji2OuXbT.js → tracingOptions-WpE9IqC8.js} +4 -4
- package/dist/src/{tracingOptions-DrbSFaKy.cjs → tracingOptions-eqmq5sA2.cjs} +4 -4
- package/dist/src/{transcription-mzuf18Mq.cjs → transcription-CKLxdMxm.cjs} +7 -7
- package/dist/src/{transcription-B8uIgCYX.js → transcription-CmlDorqD.js} +7 -7
- package/dist/src/{transcription-CfU5loSq.js → transcription-Cupf4JNw.js} +7 -7
- package/dist/src/{transcription-Dkd22_4K.js → transcription-sOgdGxM6.js} +7 -7
- package/dist/src/{transform-BnSXWmU_2.cjs → transform-0wnBYYaL2.cjs} +4 -4
- package/dist/src/{transform-EtD4jAWi.js → transform-AfC8gqCB.js} +5 -5
- package/dist/src/{transform-CGt7Kt3y2.js → transform-BDSnWRNv2.js} +4 -4
- package/dist/src/{transform-BnSTnFlp.js → transform-C5pxvKUV.js} +4 -4
- package/dist/src/{transform-CrPGTsij.js → transform-C5rpIuDz.js} +4 -4
- package/dist/src/{transform-DmvYBRll.js → transform-D7QlmswG.js} +5 -5
- package/dist/src/{transform-DhNkAUs8.cjs → transform-DKw2FNwg.cjs} +5 -5
- package/dist/src/{transform-BIMynQsA.js → transform-R1PnNdLv.js} +5 -5
- package/dist/src/{types-BFevViUY.js → types-C_e_SykX.js} +2 -2
- package/dist/src/{types-BJQBBPTP.js → types-uLCKnRiK.js} +2 -2
- package/dist/src/{util-CN8om2rz.cjs → util-3BRss2KA.cjs} +7 -7
- package/dist/src/{util-efByNxcr.js → util-B2Nt2Oy7.js} +25 -7
- package/dist/src/{util-I-Rf-KaD.js → util-BGfk7zh7.js} +8 -8
- package/dist/src/{util-5WnCSb0h.js → util-BLSQ_7Ky.js} +25 -7
- package/dist/src/{util-IYzs5Y04.cjs → util-BSZPCmvm.cjs} +4 -3
- package/dist/src/{util-SPsvFONY.cjs → util-BuYzkbEz.cjs} +7 -7
- package/dist/src/{util-LKTmNsMQ.js → util-C6d3eV0A.js} +25 -7
- package/dist/src/{util-DURocbYR.js → util-CES4qWd7.js} +8 -8
- package/dist/src/{util-Df8YMvS1.js → util-CKZReNsz.js} +8 -8
- package/dist/src/{util-BSIuSLVK.cjs → util-Cs372i1_.cjs} +25 -7
- package/dist/src/{util-CoQWM76y.js → util-Cw9nJJWm.js} +4 -3
- package/dist/src/{util-DNl96nNs.js → util-D1NKMz55.js} +7 -7
- package/dist/src/{util-kDURhgJW.js → util-D9grslJP.js} +8 -8
- package/dist/src/{util--WMgw7wM.js → util-SNUDkWJ8.js} +4 -3
- package/dist/src/{util-Bx677_k2.js → util-vaCPFatZ.js} +7 -7
- package/dist/src/{util-DiQ3QvBB.js → util-weQgMdSy.js} +4 -3
- package/dist/src/{utils-Ve6kuJsa.cjs → utils-B_HCobst.cjs} +2 -2
- package/dist/src/{utils-BGY69tk_.js → utils-C3qMBhJT.js} +2 -2
- package/dist/src/{utils-BFOh20Gb.js → utils-Cdx3ZJr7.js} +2 -2
- package/dist/src/{utils-B0lzitHZ.js → utils-DMWnIu_V.js} +2 -2
- package/dist/src/{version-BK20a4sw.js → version-BGiEZvX0.js} +2 -2
- package/dist/src/{version-lpHV_53E.js → version-BNhpIb2U.js} +2 -2
- package/dist/src/{version-eRkNuGv8.js → version-CnYqmWbz.js} +2 -2
- package/dist/src/{version-BWCSaByA.cjs → version-XjGPawtU.cjs} +2 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +17 -17
- package/dist/src/app/assets/Report-BNHJKN35.js +0 -1
- package/dist/src/app/assets/index-yhM8y1PP.css +0 -1
- package/dist/src/cache-Cf7b4pWE.js +0 -3
- package/dist/src/cloud-p96PA4MH.js +0 -3
- package/dist/src/codex-sdk-BGjVAk23.js +0 -3
- package/dist/src/evalResult-DqzsS6_W.js +0 -3
- package/dist/src/evaluator-DNdJF1Gv.js +0 -3
- package/dist/src/fetch-_YgGd2qv.js +0 -3
- package/dist/src/graders-BDT7dif6.js +0 -3
- package/dist/src/rubyUtils-BYVlQ94c.js +0 -3
- package/dist/src/server-BaLytskk.js +0 -3
- package/dist/src/store-IbiRIF3k.js +0 -3
- package/dist/src/telemetry-ByPqDcKC.js +0 -3
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { a as logger, m as extractFirstJsonObject } from "./logger-
|
|
1
|
+
import { a as logger, m as extractFirstJsonObject } from "./logger-Cs0I2v_y.js";
|
|
2
2
|
import { t as invariant } from "./invariant-Ddh24eXh.js";
|
|
3
|
-
import { l as sleep } from "./fetch-
|
|
4
|
-
import { o as isLoggedIntoCloud } from "./accounts-
|
|
5
|
-
import { o as getNunjucksEngine } from "./render-
|
|
6
|
-
import { l as shouldGenerateRemote } from "./remoteGeneration-
|
|
3
|
+
import { l as sleep } from "./fetch-CHJu2KON.js";
|
|
4
|
+
import { o as isLoggedIntoCloud } from "./accounts-4Xa5fcHy.js";
|
|
5
|
+
import { o as getNunjucksEngine } from "./render-CTZQAINJ.js";
|
|
6
|
+
import { l as shouldGenerateRemote } from "./remoteGeneration-DvWEm3yi.js";
|
|
7
7
|
import { a as createEmptyTokenUsage, n as accumulateResponseTokenUsage } from "./tokenUsageUtils-CmnQ0G2m.js";
|
|
8
|
-
import { a as extractPromptFromTags, i as extractMaterializedVariablesFromJsonWithMetadata, o as getSessionId } from "./util-
|
|
9
|
-
import { t as PromptfooChatCompletionProvider } from "./promptfoo-
|
|
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-
|
|
11
|
-
import { n as checkExfilTracking } from "./indirectWebPwn-
|
|
12
|
-
import { n as renderPrompt } from "./evaluatorHelpers-
|
|
13
|
-
import { t as Strategies } from "./strategies-
|
|
14
|
-
import { t as applyRuntimeTransforms } from "./runtimeTransform-
|
|
8
|
+
import { a as extractPromptFromTags, i as extractMaterializedVariablesFromJsonWithMetadata, o as getSessionId } from "./util-D1NKMz55.js";
|
|
9
|
+
import { a as assertRemoteMaterializationHandled, o as buildRemoteMaterializationContextVars, s as buildRemoteMaterializedInputVariables, t as PromptfooChatCompletionProvider } from "./promptfoo-CEsoPlBa.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-BF25a7ms.js";
|
|
11
|
+
import { n as checkExfilTracking } from "./indirectWebPwn-1gHqaL91.js";
|
|
12
|
+
import { n as renderPrompt } from "./evaluatorHelpers-C8C8WQTv.js";
|
|
13
|
+
import { t as Strategies } from "./strategies-4Nnr_9xt.js";
|
|
14
|
+
import { t as applyRuntimeTransforms } from "./runtimeTransform-Bw9Tttpp.js";
|
|
15
15
|
import { n as CLOUD_ATTACKER_SYSTEM_PROMPT, r as JUDGE_SYSTEM_PROMPT, t as ATTACKER_SYSTEM_PROMPT } from "./prompts-DHhQsANy.js";
|
|
16
16
|
import dedent from "dedent";
|
|
17
17
|
//#region src/redteam/providers/iterativeTree.ts
|
|
@@ -155,14 +155,20 @@ async function evaluateResponse(provider, judgeSystemPrompt, targetResponse, pre
|
|
|
155
155
|
* @param redteamHistory - The conversation history of the red team.
|
|
156
156
|
* @returns A promise that resolves to an object containing the improvement and new prompt.
|
|
157
157
|
*/
|
|
158
|
-
async function getNewPrompt(redteamProvider, redteamHistory) {
|
|
158
|
+
async function getNewPrompt(redteamProvider, redteamHistory, materializationContext) {
|
|
159
159
|
const redteamBody = JSON.stringify(redteamHistory);
|
|
160
160
|
const redteamResp = await redteamProvider.callApi(redteamBody, {
|
|
161
161
|
prompt: {
|
|
162
162
|
raw: redteamBody,
|
|
163
163
|
label: "history"
|
|
164
164
|
},
|
|
165
|
-
vars: {
|
|
165
|
+
vars: materializationContext ? buildRemoteMaterializationContextVars({
|
|
166
|
+
injectVar: void 0,
|
|
167
|
+
inputs: materializationContext.inputs,
|
|
168
|
+
materializationIndex: materializationContext.materializationIndex,
|
|
169
|
+
pluginId: materializationContext.pluginId,
|
|
170
|
+
purpose: materializationContext.purpose
|
|
171
|
+
}) : {}
|
|
166
172
|
});
|
|
167
173
|
if (redteamProvider.delay) {
|
|
168
174
|
logger.debug(`[IterativeTree] Sleeping for ${redteamProvider.delay}ms`);
|
|
@@ -185,6 +191,9 @@ async function getNewPrompt(redteamProvider, redteamHistory) {
|
|
|
185
191
|
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)}"`);
|
|
186
192
|
return {
|
|
187
193
|
improvement: "parse failure – skipping turn",
|
|
194
|
+
inputMaterialization: redteamResp.inputMaterialization,
|
|
195
|
+
materializationHandled: redteamResp.materializationHandled,
|
|
196
|
+
materializedVars: redteamResp.materializedVars,
|
|
188
197
|
prompt: "",
|
|
189
198
|
tokenUsage: redteamResp.tokenUsage
|
|
190
199
|
};
|
|
@@ -193,6 +202,9 @@ async function getNewPrompt(redteamProvider, redteamHistory) {
|
|
|
193
202
|
else retObj = redteamResp.output;
|
|
194
203
|
return {
|
|
195
204
|
...retObj,
|
|
205
|
+
inputMaterialization: redteamResp.inputMaterialization,
|
|
206
|
+
materializationHandled: redteamResp.materializationHandled,
|
|
207
|
+
materializedVars: redteamResp.materializedVars,
|
|
196
208
|
tokenUsage: redteamResp.tokenUsage
|
|
197
209
|
};
|
|
198
210
|
}
|
|
@@ -231,13 +243,16 @@ function updateRedteamHistory(targetResponse, goal, score, containsPenalizedPhra
|
|
|
231
243
|
* @param id - Optional custom UUID for the node. If not provided, a new UUID will be generated.
|
|
232
244
|
* @returns A new TreeNode object.
|
|
233
245
|
*/
|
|
234
|
-
function createTreeNode(prompt, score, depth, id) {
|
|
246
|
+
function createTreeNode(prompt, score, depth, id, options) {
|
|
235
247
|
return {
|
|
236
248
|
id: id || crypto.randomUUID(),
|
|
237
249
|
prompt,
|
|
238
250
|
score,
|
|
239
251
|
children: [],
|
|
240
|
-
depth
|
|
252
|
+
depth,
|
|
253
|
+
inputMaterialization: options?.inputMaterialization,
|
|
254
|
+
materializationHandled: options?.materializationHandled,
|
|
255
|
+
materializedVars: options?.materializedVars
|
|
241
256
|
};
|
|
242
257
|
}
|
|
243
258
|
/**
|
|
@@ -314,10 +329,20 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
|
|
|
314
329
|
loggerTag: "[IterativeTree]"
|
|
315
330
|
});
|
|
316
331
|
const iterationVars = iterationContext?.vars || {};
|
|
317
|
-
let { improvement, prompt: newInjectVar } = await getNewPrompt(redteamProvider, [...redteamHistory, {
|
|
332
|
+
let { improvement, inputMaterialization, materializationHandled, materializedVars, prompt: newInjectVar } = await getNewPrompt(redteamProvider, [...redteamHistory, {
|
|
318
333
|
role: "assistant",
|
|
319
334
|
content: node.prompt
|
|
320
|
-
}])
|
|
335
|
+
}], shouldGenerateRemote() ? {
|
|
336
|
+
inputs,
|
|
337
|
+
materializationIndex: attempts,
|
|
338
|
+
pluginId: String(test?.metadata?.pluginId || "unknown-plugin"),
|
|
339
|
+
purpose: test?.metadata?.purpose
|
|
340
|
+
} : void 0);
|
|
341
|
+
if (inputs && shouldGenerateRemote()) assertRemoteMaterializationHandled({
|
|
342
|
+
inputMaterialization,
|
|
343
|
+
materializationHandled,
|
|
344
|
+
materializedVars
|
|
345
|
+
}, "Iterative Tree multi-input generation");
|
|
321
346
|
attempts++;
|
|
322
347
|
const extractedPrompt = extractPromptFromTags(newInjectVar);
|
|
323
348
|
if (extractedPrompt) newInjectVar = extractedPrompt;
|
|
@@ -360,14 +385,22 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
|
|
|
360
385
|
...iterationVars,
|
|
361
386
|
[injectVar]: finalInjectVar
|
|
362
387
|
};
|
|
363
|
-
if (inputs && Object.keys(inputs).length > 0) try {
|
|
364
|
-
const
|
|
388
|
+
if (inputs && Object.keys(inputs).length > 0) if (shouldGenerateRemote()) try {
|
|
389
|
+
const parsed = JSON.parse(newInjectVar);
|
|
390
|
+
Object.assign(updatedVars, buildRemoteMaterializedInputVariables({
|
|
391
|
+
inputMaterialization,
|
|
392
|
+
materializationHandled,
|
|
393
|
+
materializedVars
|
|
394
|
+
}, parsed, inputs).vars);
|
|
395
|
+
} catch {}
|
|
396
|
+
else try {
|
|
397
|
+
const { vars: localMaterializedVars } = await extractMaterializedVariablesFromJsonWithMetadata(JSON.parse(newInjectVar), inputs, {
|
|
365
398
|
materializationIndex: attempts - 1,
|
|
366
399
|
pluginId: String(test?.metadata?.pluginId || "unknown-plugin"),
|
|
367
400
|
provider: redteamProvider,
|
|
368
401
|
purpose: test?.metadata?.purpose
|
|
369
402
|
});
|
|
370
|
-
Object.assign(updatedVars,
|
|
403
|
+
Object.assign(updatedVars, localMaterializedVars);
|
|
371
404
|
} catch {}
|
|
372
405
|
const targetPrompt = await renderPrompt(prompt, updatedVars, filters, targetProvider, [injectVar]);
|
|
373
406
|
let targetResponse = await getTargetResponse(targetProvider, targetPrompt, iterationContext, options);
|
|
@@ -404,11 +437,18 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
|
|
|
404
437
|
const containsPenalizedPhrase = checkPenalizedPhrases(targetResponse.output);
|
|
405
438
|
const { score, explanation } = await evaluateResponse(gradingProvider, judgeSystemPrompt, targetResponse.output, bestResponse, containsPenalizedPhrase);
|
|
406
439
|
logger.debug(`[Depth ${depth}, Attempt ${attempts}] Evaluation: score=${score}, penalized=${containsPenalizedPhrase}. Max score so far: ${maxScore}`);
|
|
407
|
-
nextLevelNodes.push(createTreeNode(newInjectVar, score, depth + 1
|
|
440
|
+
nextLevelNodes.push(createTreeNode(newInjectVar, score, depth + 1, void 0, {
|
|
441
|
+
inputMaterialization,
|
|
442
|
+
materializationHandled,
|
|
443
|
+
materializedVars
|
|
444
|
+
}));
|
|
408
445
|
if (score > maxScore) {
|
|
409
446
|
maxScore = score;
|
|
410
447
|
bestResponse = targetResponse.output;
|
|
411
448
|
bestNode.prompt = newInjectVar;
|
|
449
|
+
bestNode.inputMaterialization = inputMaterialization;
|
|
450
|
+
bestNode.materializationHandled = materializationHandled;
|
|
451
|
+
bestNode.materializedVars = materializedVars;
|
|
412
452
|
bestFinalAttackPrompt = finalInjectVar;
|
|
413
453
|
bestTransformDisplayVars = lastTransformDisplayVars;
|
|
414
454
|
logger.debug(`[Depth ${depth}, Attempt ${attempts}] New max score: ${maxScore}`);
|
|
@@ -420,7 +460,7 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
|
|
|
420
460
|
noImprovementCount++;
|
|
421
461
|
if (noImprovementCount % 5 === 0) logger.debug(`[Depth ${depth}, Attempt ${attempts}] No improvement for ${noImprovementCount} consecutive iterations. Max score: ${maxScore}`);
|
|
422
462
|
}
|
|
423
|
-
const { getGraderById } = await import("./graders-
|
|
463
|
+
const { getGraderById } = await import("./graders-GNRQ1357.js").then((n) => n.r);
|
|
424
464
|
let graderPassed;
|
|
425
465
|
let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
|
|
426
466
|
if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
|
|
@@ -619,13 +659,23 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
|
|
|
619
659
|
[injectVar]: bestPrompt
|
|
620
660
|
};
|
|
621
661
|
if (inputs && Object.keys(inputs).length > 0) try {
|
|
622
|
-
const
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
662
|
+
const parsed = JSON.parse(bestPrompt);
|
|
663
|
+
if (shouldGenerateRemote()) {
|
|
664
|
+
const remoteBestNodeMaterialization = {
|
|
665
|
+
inputMaterialization: bestNode.inputMaterialization,
|
|
666
|
+
materializationHandled: bestNode.materializationHandled,
|
|
667
|
+
materializedVars: bestNode.materializedVars
|
|
668
|
+
};
|
|
669
|
+
if (remoteBestNodeMaterialization.materializationHandled) Object.assign(finalUpdatedVars, buildRemoteMaterializedInputVariables(remoteBestNodeMaterialization, parsed, inputs).vars);
|
|
670
|
+
} else {
|
|
671
|
+
const { vars: materializedVars } = await extractMaterializedVariablesFromJsonWithMetadata(parsed, inputs, {
|
|
672
|
+
materializationIndex: attempts,
|
|
673
|
+
pluginId: String(test?.metadata?.pluginId || "unknown-plugin"),
|
|
674
|
+
provider: redteamProvider,
|
|
675
|
+
purpose: test?.metadata?.purpose
|
|
676
|
+
});
|
|
677
|
+
Object.assign(finalUpdatedVars, materializedVars);
|
|
678
|
+
}
|
|
629
679
|
} catch {}
|
|
630
680
|
const finalTargetPrompt = await renderPrompt(prompt, finalUpdatedVars, filters, targetProvider, [injectVar]);
|
|
631
681
|
const finalTargetResponse = await getTargetResponse(targetProvider, finalTargetPrompt, context, options);
|
|
@@ -766,4 +816,4 @@ var RedteamIterativeTreeProvider = class {
|
|
|
766
816
|
//#endregion
|
|
767
817
|
export { RedteamIterativeTreeProvider as default };
|
|
768
818
|
|
|
769
|
-
//# sourceMappingURL=iterativeTree-
|
|
819
|
+
//# sourceMappingURL=iterativeTree-5TLHU9Kx.js.map
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
const require_rolldown_runtime = require("./rolldown-runtime-D_mwlA32.cjs");
|
|
2
|
-
const require_logger = require("./logger-
|
|
2
|
+
const require_logger = require("./logger-Cm0Nb8YX.cjs");
|
|
3
3
|
const require_invariant = require("./invariant-QtnLD03y.cjs");
|
|
4
|
-
const require_fetch = require("./fetch-
|
|
5
|
-
const require_accounts = require("./accounts-
|
|
6
|
-
const require_render = require("./render-
|
|
7
|
-
const require_remoteGeneration = require("./remoteGeneration-
|
|
4
|
+
const require_fetch = require("./fetch-B2HvaVUc.cjs");
|
|
5
|
+
const require_accounts = require("./accounts-DAcQXPwE.cjs");
|
|
6
|
+
const require_render = require("./render-DJ4yipCD.cjs");
|
|
7
|
+
const require_remoteGeneration = require("./remoteGeneration-CD3c_rzc.cjs");
|
|
8
8
|
const require_tokenUsageUtils = require("./tokenUsageUtils-_B-P8IAi.cjs");
|
|
9
|
-
const require_util = require("./util-
|
|
10
|
-
const require_promptfoo = require("./promptfoo-
|
|
11
|
-
const require_shared = require("./shared-
|
|
12
|
-
const require_indirectWebPwn = require("./indirectWebPwn-
|
|
13
|
-
const require_evaluatorHelpers = require("./evaluatorHelpers-
|
|
14
|
-
const require_strategies = require("./strategies-
|
|
15
|
-
const require_runtimeTransform = require("./runtimeTransform-
|
|
9
|
+
const require_util = require("./util-3BRss2KA.cjs");
|
|
10
|
+
const require_promptfoo = require("./promptfoo-DAXBmrE6.cjs");
|
|
11
|
+
const require_shared = require("./shared-DlmtkptR.cjs");
|
|
12
|
+
const require_indirectWebPwn = require("./indirectWebPwn-04ziKbly.cjs");
|
|
13
|
+
const require_evaluatorHelpers = require("./evaluatorHelpers-2gpZ9Q_f.cjs");
|
|
14
|
+
const require_strategies = require("./strategies-BD7US9WB.cjs");
|
|
15
|
+
const require_runtimeTransform = require("./runtimeTransform-DJEknTZQ.cjs");
|
|
16
16
|
const require_prompts = require("./prompts-hNvWBD3z.cjs");
|
|
17
17
|
let dedent = require("dedent");
|
|
18
18
|
dedent = require_rolldown_runtime.__toESM(dedent, 1);
|
|
@@ -157,14 +157,20 @@ async function evaluateResponse(provider, judgeSystemPrompt, targetResponse, pre
|
|
|
157
157
|
* @param redteamHistory - The conversation history of the red team.
|
|
158
158
|
* @returns A promise that resolves to an object containing the improvement and new prompt.
|
|
159
159
|
*/
|
|
160
|
-
async function getNewPrompt(redteamProvider, redteamHistory) {
|
|
160
|
+
async function getNewPrompt(redteamProvider, redteamHistory, materializationContext) {
|
|
161
161
|
const redteamBody = JSON.stringify(redteamHistory);
|
|
162
162
|
const redteamResp = await redteamProvider.callApi(redteamBody, {
|
|
163
163
|
prompt: {
|
|
164
164
|
raw: redteamBody,
|
|
165
165
|
label: "history"
|
|
166
166
|
},
|
|
167
|
-
vars: {
|
|
167
|
+
vars: materializationContext ? require_promptfoo.buildRemoteMaterializationContextVars({
|
|
168
|
+
injectVar: void 0,
|
|
169
|
+
inputs: materializationContext.inputs,
|
|
170
|
+
materializationIndex: materializationContext.materializationIndex,
|
|
171
|
+
pluginId: materializationContext.pluginId,
|
|
172
|
+
purpose: materializationContext.purpose
|
|
173
|
+
}) : {}
|
|
168
174
|
});
|
|
169
175
|
if (redteamProvider.delay) {
|
|
170
176
|
require_logger.logger.debug(`[IterativeTree] Sleeping for ${redteamProvider.delay}ms`);
|
|
@@ -187,6 +193,9 @@ async function getNewPrompt(redteamProvider, redteamHistory) {
|
|
|
187
193
|
require_logger.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)}"`);
|
|
188
194
|
return {
|
|
189
195
|
improvement: "parse failure – skipping turn",
|
|
196
|
+
inputMaterialization: redteamResp.inputMaterialization,
|
|
197
|
+
materializationHandled: redteamResp.materializationHandled,
|
|
198
|
+
materializedVars: redteamResp.materializedVars,
|
|
190
199
|
prompt: "",
|
|
191
200
|
tokenUsage: redteamResp.tokenUsage
|
|
192
201
|
};
|
|
@@ -195,6 +204,9 @@ async function getNewPrompt(redteamProvider, redteamHistory) {
|
|
|
195
204
|
else retObj = redteamResp.output;
|
|
196
205
|
return {
|
|
197
206
|
...retObj,
|
|
207
|
+
inputMaterialization: redteamResp.inputMaterialization,
|
|
208
|
+
materializationHandled: redteamResp.materializationHandled,
|
|
209
|
+
materializedVars: redteamResp.materializedVars,
|
|
198
210
|
tokenUsage: redteamResp.tokenUsage
|
|
199
211
|
};
|
|
200
212
|
}
|
|
@@ -233,13 +245,16 @@ function updateRedteamHistory(targetResponse, goal, score, containsPenalizedPhra
|
|
|
233
245
|
* @param id - Optional custom UUID for the node. If not provided, a new UUID will be generated.
|
|
234
246
|
* @returns A new TreeNode object.
|
|
235
247
|
*/
|
|
236
|
-
function createTreeNode(prompt, score, depth, id) {
|
|
248
|
+
function createTreeNode(prompt, score, depth, id, options) {
|
|
237
249
|
return {
|
|
238
250
|
id: id || crypto.randomUUID(),
|
|
239
251
|
prompt,
|
|
240
252
|
score,
|
|
241
253
|
children: [],
|
|
242
|
-
depth
|
|
254
|
+
depth,
|
|
255
|
+
inputMaterialization: options?.inputMaterialization,
|
|
256
|
+
materializationHandled: options?.materializationHandled,
|
|
257
|
+
materializedVars: options?.materializedVars
|
|
243
258
|
};
|
|
244
259
|
}
|
|
245
260
|
/**
|
|
@@ -316,10 +331,20 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
|
|
|
316
331
|
loggerTag: "[IterativeTree]"
|
|
317
332
|
});
|
|
318
333
|
const iterationVars = iterationContext?.vars || {};
|
|
319
|
-
let { improvement, prompt: newInjectVar } = await getNewPrompt(redteamProvider, [...redteamHistory, {
|
|
334
|
+
let { improvement, inputMaterialization, materializationHandled, materializedVars, prompt: newInjectVar } = await getNewPrompt(redteamProvider, [...redteamHistory, {
|
|
320
335
|
role: "assistant",
|
|
321
336
|
content: node.prompt
|
|
322
|
-
}])
|
|
337
|
+
}], require_remoteGeneration.shouldGenerateRemote() ? {
|
|
338
|
+
inputs,
|
|
339
|
+
materializationIndex: attempts,
|
|
340
|
+
pluginId: String(test?.metadata?.pluginId || "unknown-plugin"),
|
|
341
|
+
purpose: test?.metadata?.purpose
|
|
342
|
+
} : void 0);
|
|
343
|
+
if (inputs && require_remoteGeneration.shouldGenerateRemote()) require_promptfoo.assertRemoteMaterializationHandled({
|
|
344
|
+
inputMaterialization,
|
|
345
|
+
materializationHandled,
|
|
346
|
+
materializedVars
|
|
347
|
+
}, "Iterative Tree multi-input generation");
|
|
323
348
|
attempts++;
|
|
324
349
|
const extractedPrompt = require_util.extractPromptFromTags(newInjectVar);
|
|
325
350
|
if (extractedPrompt) newInjectVar = extractedPrompt;
|
|
@@ -362,14 +387,22 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
|
|
|
362
387
|
...iterationVars,
|
|
363
388
|
[injectVar]: finalInjectVar
|
|
364
389
|
};
|
|
365
|
-
if (inputs && Object.keys(inputs).length > 0) try {
|
|
366
|
-
const
|
|
390
|
+
if (inputs && Object.keys(inputs).length > 0) if (require_remoteGeneration.shouldGenerateRemote()) try {
|
|
391
|
+
const parsed = JSON.parse(newInjectVar);
|
|
392
|
+
Object.assign(updatedVars, require_promptfoo.buildRemoteMaterializedInputVariables({
|
|
393
|
+
inputMaterialization,
|
|
394
|
+
materializationHandled,
|
|
395
|
+
materializedVars
|
|
396
|
+
}, parsed, inputs).vars);
|
|
397
|
+
} catch {}
|
|
398
|
+
else try {
|
|
399
|
+
const { vars: localMaterializedVars } = await require_util.extractMaterializedVariablesFromJsonWithMetadata(JSON.parse(newInjectVar), inputs, {
|
|
367
400
|
materializationIndex: attempts - 1,
|
|
368
401
|
pluginId: String(test?.metadata?.pluginId || "unknown-plugin"),
|
|
369
402
|
provider: redteamProvider,
|
|
370
403
|
purpose: test?.metadata?.purpose
|
|
371
404
|
});
|
|
372
|
-
Object.assign(updatedVars,
|
|
405
|
+
Object.assign(updatedVars, localMaterializedVars);
|
|
373
406
|
} catch {}
|
|
374
407
|
const targetPrompt = await require_evaluatorHelpers.renderPrompt(prompt, updatedVars, filters, targetProvider, [injectVar]);
|
|
375
408
|
let targetResponse = await require_shared.getTargetResponse(targetProvider, targetPrompt, iterationContext, options);
|
|
@@ -406,11 +439,18 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
|
|
|
406
439
|
const containsPenalizedPhrase = require_shared.checkPenalizedPhrases(targetResponse.output);
|
|
407
440
|
const { score, explanation } = await evaluateResponse(gradingProvider, judgeSystemPrompt, targetResponse.output, bestResponse, containsPenalizedPhrase);
|
|
408
441
|
require_logger.logger.debug(`[Depth ${depth}, Attempt ${attempts}] Evaluation: score=${score}, penalized=${containsPenalizedPhrase}. Max score so far: ${maxScore}`);
|
|
409
|
-
nextLevelNodes.push(createTreeNode(newInjectVar, score, depth + 1
|
|
442
|
+
nextLevelNodes.push(createTreeNode(newInjectVar, score, depth + 1, void 0, {
|
|
443
|
+
inputMaterialization,
|
|
444
|
+
materializationHandled,
|
|
445
|
+
materializedVars
|
|
446
|
+
}));
|
|
410
447
|
if (score > maxScore) {
|
|
411
448
|
maxScore = score;
|
|
412
449
|
bestResponse = targetResponse.output;
|
|
413
450
|
bestNode.prompt = newInjectVar;
|
|
451
|
+
bestNode.inputMaterialization = inputMaterialization;
|
|
452
|
+
bestNode.materializationHandled = materializationHandled;
|
|
453
|
+
bestNode.materializedVars = materializedVars;
|
|
414
454
|
bestFinalAttackPrompt = finalInjectVar;
|
|
415
455
|
bestTransformDisplayVars = lastTransformDisplayVars;
|
|
416
456
|
require_logger.logger.debug(`[Depth ${depth}, Attempt ${attempts}] New max score: ${maxScore}`);
|
|
@@ -422,7 +462,7 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
|
|
|
422
462
|
noImprovementCount++;
|
|
423
463
|
if (noImprovementCount % 5 === 0) require_logger.logger.debug(`[Depth ${depth}, Attempt ${attempts}] No improvement for ${noImprovementCount} consecutive iterations. Max score: ${maxScore}`);
|
|
424
464
|
}
|
|
425
|
-
const { getGraderById } = await Promise.resolve().then(() => require("./graders-
|
|
465
|
+
const { getGraderById } = await Promise.resolve().then(() => require("./graders-CQv1GT5Q.cjs")).then((n) => n.graders_exports);
|
|
426
466
|
let graderPassed;
|
|
427
467
|
let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
|
|
428
468
|
if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
|
|
@@ -621,13 +661,23 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
|
|
|
621
661
|
[injectVar]: bestPrompt
|
|
622
662
|
};
|
|
623
663
|
if (inputs && Object.keys(inputs).length > 0) try {
|
|
624
|
-
const
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
664
|
+
const parsed = JSON.parse(bestPrompt);
|
|
665
|
+
if (require_remoteGeneration.shouldGenerateRemote()) {
|
|
666
|
+
const remoteBestNodeMaterialization = {
|
|
667
|
+
inputMaterialization: bestNode.inputMaterialization,
|
|
668
|
+
materializationHandled: bestNode.materializationHandled,
|
|
669
|
+
materializedVars: bestNode.materializedVars
|
|
670
|
+
};
|
|
671
|
+
if (remoteBestNodeMaterialization.materializationHandled) Object.assign(finalUpdatedVars, require_promptfoo.buildRemoteMaterializedInputVariables(remoteBestNodeMaterialization, parsed, inputs).vars);
|
|
672
|
+
} else {
|
|
673
|
+
const { vars: materializedVars } = await require_util.extractMaterializedVariablesFromJsonWithMetadata(parsed, inputs, {
|
|
674
|
+
materializationIndex: attempts,
|
|
675
|
+
pluginId: String(test?.metadata?.pluginId || "unknown-plugin"),
|
|
676
|
+
provider: redteamProvider,
|
|
677
|
+
purpose: test?.metadata?.purpose
|
|
678
|
+
});
|
|
679
|
+
Object.assign(finalUpdatedVars, materializedVars);
|
|
680
|
+
}
|
|
631
681
|
} catch {}
|
|
632
682
|
const finalTargetPrompt = await require_evaluatorHelpers.renderPrompt(prompt, finalUpdatedVars, filters, targetProvider, [injectVar]);
|
|
633
683
|
const finalTargetResponse = await require_shared.getTargetResponse(targetProvider, finalTargetPrompt, context, options);
|
|
@@ -768,4 +818,4 @@ var RedteamIterativeTreeProvider = class {
|
|
|
768
818
|
//#endregion
|
|
769
819
|
exports.default = RedteamIterativeTreeProvider;
|
|
770
820
|
|
|
771
|
-
//# sourceMappingURL=iterativeTree-
|
|
821
|
+
//# sourceMappingURL=iterativeTree-7XyY_zdo.cjs.map
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { g as extractFirstJsonObject, s as logger } from "./logger-
|
|
3
|
-
import { f as sleep } from "./fetch-
|
|
2
|
+
import { g as extractFirstJsonObject, s as logger } from "./logger-h-eiS4iv.js";
|
|
3
|
+
import { f as sleep } from "./fetch-C59QM4cf.js";
|
|
4
4
|
import { t as invariant } from "./invariant-B2Rf6avk.js";
|
|
5
|
-
import { c as isLoggedIntoCloud } from "./accounts-
|
|
6
|
-
import { o as getNunjucksEngine } from "./render-
|
|
7
|
-
import { l as shouldGenerateRemote } from "./remoteGeneration-
|
|
5
|
+
import { c as isLoggedIntoCloud } from "./accounts-Bw2qPqE-.js";
|
|
6
|
+
import { o as getNunjucksEngine } from "./render-jE6RKVgk.js";
|
|
7
|
+
import { l as shouldGenerateRemote } from "./remoteGeneration-DW6mPZnO.js";
|
|
8
8
|
import { a as createEmptyTokenUsage, n as accumulateResponseTokenUsage } from "./tokenUsageUtils-CDet74yk.js";
|
|
9
|
-
import { a as extractPromptFromTags, i as extractMaterializedVariablesFromJsonWithMetadata, o as getSessionId } from "./util-
|
|
10
|
-
import { t as PromptfooChatCompletionProvider } from "./promptfoo-
|
|
11
|
-
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-
|
|
12
|
-
import { n as checkExfilTracking } from "./indirectWebPwn-
|
|
13
|
-
import { n as renderPrompt } from "./evaluatorHelpers-
|
|
14
|
-
import { t as Strategies } from "./strategies-
|
|
15
|
-
import { t as applyRuntimeTransforms } from "./runtimeTransform-
|
|
9
|
+
import { a as extractPromptFromTags, i as extractMaterializedVariablesFromJsonWithMetadata, o as getSessionId } from "./util-D9grslJP.js";
|
|
10
|
+
import { a as assertRemoteMaterializationHandled, o as buildRemoteMaterializationContextVars, s as buildRemoteMaterializedInputVariables, t as PromptfooChatCompletionProvider } from "./promptfoo-wxe28-q9.js";
|
|
11
|
+
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-DsbObxvy.js";
|
|
12
|
+
import { n as checkExfilTracking } from "./indirectWebPwn-BXUoJl4I.js";
|
|
13
|
+
import { n as renderPrompt } from "./evaluatorHelpers-DDG44JeI.js";
|
|
14
|
+
import { t as Strategies } from "./strategies-Ptz_P4P4.js";
|
|
15
|
+
import { t as applyRuntimeTransforms } from "./runtimeTransform-s14J7yxm.js";
|
|
16
16
|
import { n as CLOUD_ATTACKER_SYSTEM_PROMPT, r as JUDGE_SYSTEM_PROMPT, t as ATTACKER_SYSTEM_PROMPT } from "./prompts-C-bqE1Yp.js";
|
|
17
17
|
import dedent from "dedent";
|
|
18
18
|
//#region src/redteam/providers/iterativeTree.ts
|
|
@@ -156,14 +156,20 @@ async function evaluateResponse(provider, judgeSystemPrompt, targetResponse, pre
|
|
|
156
156
|
* @param redteamHistory - The conversation history of the red team.
|
|
157
157
|
* @returns A promise that resolves to an object containing the improvement and new prompt.
|
|
158
158
|
*/
|
|
159
|
-
async function getNewPrompt(redteamProvider, redteamHistory) {
|
|
159
|
+
async function getNewPrompt(redteamProvider, redteamHistory, materializationContext) {
|
|
160
160
|
const redteamBody = JSON.stringify(redteamHistory);
|
|
161
161
|
const redteamResp = await redteamProvider.callApi(redteamBody, {
|
|
162
162
|
prompt: {
|
|
163
163
|
raw: redteamBody,
|
|
164
164
|
label: "history"
|
|
165
165
|
},
|
|
166
|
-
vars: {
|
|
166
|
+
vars: materializationContext ? buildRemoteMaterializationContextVars({
|
|
167
|
+
injectVar: void 0,
|
|
168
|
+
inputs: materializationContext.inputs,
|
|
169
|
+
materializationIndex: materializationContext.materializationIndex,
|
|
170
|
+
pluginId: materializationContext.pluginId,
|
|
171
|
+
purpose: materializationContext.purpose
|
|
172
|
+
}) : {}
|
|
167
173
|
});
|
|
168
174
|
if (redteamProvider.delay) {
|
|
169
175
|
logger.debug(`[IterativeTree] Sleeping for ${redteamProvider.delay}ms`);
|
|
@@ -186,6 +192,9 @@ async function getNewPrompt(redteamProvider, redteamHistory) {
|
|
|
186
192
|
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)}"`);
|
|
187
193
|
return {
|
|
188
194
|
improvement: "parse failure – skipping turn",
|
|
195
|
+
inputMaterialization: redteamResp.inputMaterialization,
|
|
196
|
+
materializationHandled: redteamResp.materializationHandled,
|
|
197
|
+
materializedVars: redteamResp.materializedVars,
|
|
189
198
|
prompt: "",
|
|
190
199
|
tokenUsage: redteamResp.tokenUsage
|
|
191
200
|
};
|
|
@@ -194,6 +203,9 @@ async function getNewPrompt(redteamProvider, redteamHistory) {
|
|
|
194
203
|
else retObj = redteamResp.output;
|
|
195
204
|
return {
|
|
196
205
|
...retObj,
|
|
206
|
+
inputMaterialization: redteamResp.inputMaterialization,
|
|
207
|
+
materializationHandled: redteamResp.materializationHandled,
|
|
208
|
+
materializedVars: redteamResp.materializedVars,
|
|
197
209
|
tokenUsage: redteamResp.tokenUsage
|
|
198
210
|
};
|
|
199
211
|
}
|
|
@@ -232,13 +244,16 @@ function updateRedteamHistory(targetResponse, goal, score, containsPenalizedPhra
|
|
|
232
244
|
* @param id - Optional custom UUID for the node. If not provided, a new UUID will be generated.
|
|
233
245
|
* @returns A new TreeNode object.
|
|
234
246
|
*/
|
|
235
|
-
function createTreeNode(prompt, score, depth, id) {
|
|
247
|
+
function createTreeNode(prompt, score, depth, id, options) {
|
|
236
248
|
return {
|
|
237
249
|
id: id || crypto.randomUUID(),
|
|
238
250
|
prompt,
|
|
239
251
|
score,
|
|
240
252
|
children: [],
|
|
241
|
-
depth
|
|
253
|
+
depth,
|
|
254
|
+
inputMaterialization: options?.inputMaterialization,
|
|
255
|
+
materializationHandled: options?.materializationHandled,
|
|
256
|
+
materializedVars: options?.materializedVars
|
|
242
257
|
};
|
|
243
258
|
}
|
|
244
259
|
/**
|
|
@@ -315,10 +330,20 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
|
|
|
315
330
|
loggerTag: "[IterativeTree]"
|
|
316
331
|
});
|
|
317
332
|
const iterationVars = iterationContext?.vars || {};
|
|
318
|
-
let { improvement, prompt: newInjectVar } = await getNewPrompt(redteamProvider, [...redteamHistory, {
|
|
333
|
+
let { improvement, inputMaterialization, materializationHandled, materializedVars, prompt: newInjectVar } = await getNewPrompt(redteamProvider, [...redteamHistory, {
|
|
319
334
|
role: "assistant",
|
|
320
335
|
content: node.prompt
|
|
321
|
-
}])
|
|
336
|
+
}], shouldGenerateRemote() ? {
|
|
337
|
+
inputs,
|
|
338
|
+
materializationIndex: attempts,
|
|
339
|
+
pluginId: String(test?.metadata?.pluginId || "unknown-plugin"),
|
|
340
|
+
purpose: test?.metadata?.purpose
|
|
341
|
+
} : void 0);
|
|
342
|
+
if (inputs && shouldGenerateRemote()) assertRemoteMaterializationHandled({
|
|
343
|
+
inputMaterialization,
|
|
344
|
+
materializationHandled,
|
|
345
|
+
materializedVars
|
|
346
|
+
}, "Iterative Tree multi-input generation");
|
|
322
347
|
attempts++;
|
|
323
348
|
const extractedPrompt = extractPromptFromTags(newInjectVar);
|
|
324
349
|
if (extractedPrompt) newInjectVar = extractedPrompt;
|
|
@@ -361,14 +386,22 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
|
|
|
361
386
|
...iterationVars,
|
|
362
387
|
[injectVar]: finalInjectVar
|
|
363
388
|
};
|
|
364
|
-
if (inputs && Object.keys(inputs).length > 0) try {
|
|
365
|
-
const
|
|
389
|
+
if (inputs && Object.keys(inputs).length > 0) if (shouldGenerateRemote()) try {
|
|
390
|
+
const parsed = JSON.parse(newInjectVar);
|
|
391
|
+
Object.assign(updatedVars, buildRemoteMaterializedInputVariables({
|
|
392
|
+
inputMaterialization,
|
|
393
|
+
materializationHandled,
|
|
394
|
+
materializedVars
|
|
395
|
+
}, parsed, inputs).vars);
|
|
396
|
+
} catch {}
|
|
397
|
+
else try {
|
|
398
|
+
const { vars: localMaterializedVars } = await extractMaterializedVariablesFromJsonWithMetadata(JSON.parse(newInjectVar), inputs, {
|
|
366
399
|
materializationIndex: attempts - 1,
|
|
367
400
|
pluginId: String(test?.metadata?.pluginId || "unknown-plugin"),
|
|
368
401
|
provider: redteamProvider,
|
|
369
402
|
purpose: test?.metadata?.purpose
|
|
370
403
|
});
|
|
371
|
-
Object.assign(updatedVars,
|
|
404
|
+
Object.assign(updatedVars, localMaterializedVars);
|
|
372
405
|
} catch {}
|
|
373
406
|
const targetPrompt = await renderPrompt(prompt, updatedVars, filters, targetProvider, [injectVar]);
|
|
374
407
|
let targetResponse = await getTargetResponse(targetProvider, targetPrompt, iterationContext, options);
|
|
@@ -405,11 +438,18 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
|
|
|
405
438
|
const containsPenalizedPhrase = checkPenalizedPhrases(targetResponse.output);
|
|
406
439
|
const { score, explanation } = await evaluateResponse(gradingProvider, judgeSystemPrompt, targetResponse.output, bestResponse, containsPenalizedPhrase);
|
|
407
440
|
logger.debug(`[Depth ${depth}, Attempt ${attempts}] Evaluation: score=${score}, penalized=${containsPenalizedPhrase}. Max score so far: ${maxScore}`);
|
|
408
|
-
nextLevelNodes.push(createTreeNode(newInjectVar, score, depth + 1
|
|
441
|
+
nextLevelNodes.push(createTreeNode(newInjectVar, score, depth + 1, void 0, {
|
|
442
|
+
inputMaterialization,
|
|
443
|
+
materializationHandled,
|
|
444
|
+
materializedVars
|
|
445
|
+
}));
|
|
409
446
|
if (score > maxScore) {
|
|
410
447
|
maxScore = score;
|
|
411
448
|
bestResponse = targetResponse.output;
|
|
412
449
|
bestNode.prompt = newInjectVar;
|
|
450
|
+
bestNode.inputMaterialization = inputMaterialization;
|
|
451
|
+
bestNode.materializationHandled = materializationHandled;
|
|
452
|
+
bestNode.materializedVars = materializedVars;
|
|
413
453
|
bestFinalAttackPrompt = finalInjectVar;
|
|
414
454
|
bestTransformDisplayVars = lastTransformDisplayVars;
|
|
415
455
|
logger.debug(`[Depth ${depth}, Attempt ${attempts}] New max score: ${maxScore}`);
|
|
@@ -421,7 +461,7 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
|
|
|
421
461
|
noImprovementCount++;
|
|
422
462
|
if (noImprovementCount % 5 === 0) logger.debug(`[Depth ${depth}, Attempt ${attempts}] No improvement for ${noImprovementCount} consecutive iterations. Max score: ${maxScore}`);
|
|
423
463
|
}
|
|
424
|
-
const { getGraderById } = await import("./graders-
|
|
464
|
+
const { getGraderById } = await import("./graders-D4vc1PFi.js");
|
|
425
465
|
let graderPassed;
|
|
426
466
|
let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
|
|
427
467
|
if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
|
|
@@ -620,13 +660,23 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
|
|
|
620
660
|
[injectVar]: bestPrompt
|
|
621
661
|
};
|
|
622
662
|
if (inputs && Object.keys(inputs).length > 0) try {
|
|
623
|
-
const
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
663
|
+
const parsed = JSON.parse(bestPrompt);
|
|
664
|
+
if (shouldGenerateRemote()) {
|
|
665
|
+
const remoteBestNodeMaterialization = {
|
|
666
|
+
inputMaterialization: bestNode.inputMaterialization,
|
|
667
|
+
materializationHandled: bestNode.materializationHandled,
|
|
668
|
+
materializedVars: bestNode.materializedVars
|
|
669
|
+
};
|
|
670
|
+
if (remoteBestNodeMaterialization.materializationHandled) Object.assign(finalUpdatedVars, buildRemoteMaterializedInputVariables(remoteBestNodeMaterialization, parsed, inputs).vars);
|
|
671
|
+
} else {
|
|
672
|
+
const { vars: materializedVars } = await extractMaterializedVariablesFromJsonWithMetadata(parsed, inputs, {
|
|
673
|
+
materializationIndex: attempts,
|
|
674
|
+
pluginId: String(test?.metadata?.pluginId || "unknown-plugin"),
|
|
675
|
+
provider: redteamProvider,
|
|
676
|
+
purpose: test?.metadata?.purpose
|
|
677
|
+
});
|
|
678
|
+
Object.assign(finalUpdatedVars, materializedVars);
|
|
679
|
+
}
|
|
630
680
|
} catch {}
|
|
631
681
|
const finalTargetPrompt = await renderPrompt(prompt, finalUpdatedVars, filters, targetProvider, [injectVar]);
|
|
632
682
|
const finalTargetResponse = await getTargetResponse(targetProvider, finalTargetPrompt, context, options);
|
|
@@ -767,4 +817,4 @@ var RedteamIterativeTreeProvider = class {
|
|
|
767
817
|
//#endregion
|
|
768
818
|
export { RedteamIterativeTreeProvider as default };
|
|
769
819
|
|
|
770
|
-
//# sourceMappingURL=iterativeTree-
|
|
820
|
+
//# sourceMappingURL=iterativeTree-CnHx_kPu.js.map
|