promptfoo 0.121.4 → 0.121.7
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/{ListApp-DQkFNqE9.js → ListApp-DLmM02JS.js} +1 -1
- package/dist/src/{accounts-DhMYUUbu.js → accounts-Ca7WIoPY.js} +12 -7
- package/dist/src/{accounts-F9d_5sMC.js → accounts-CjFnOPmb.js} +14 -9
- package/dist/src/{accounts-Dy17bs4D.cjs → accounts-CmWzeD2d.cjs} +16 -10
- package/dist/src/{accounts-DdJ2pHMI.js → accounts-DanM1wq_.js} +13 -8
- package/dist/src/{agentic-utils-qFlm6zes.js → agentic-utils-CJ0j3fBi.js} +3 -3
- package/dist/src/{agentic-utils-w68v6_Dz.js → agentic-utils-DDEGRV9v.js} +3 -3
- package/dist/src/{agentic-utils-BpX5b23w.cjs → agentic-utils-DvPWSUpb.cjs} +8 -7
- package/dist/src/{agentic-utils-P172hM8B.js → agentic-utils-TxUEMPYS.js} +2 -2
- package/dist/src/{agents-BahDpe5G.cjs → agents-B4sRuXg3.cjs} +7 -6
- package/dist/src/{agents-pQeBEXMm.js → agents-B8q7h_ek.js} +5 -5
- package/dist/src/{agents-CgaMXvLM.js → agents-CBgJvRkB.js} +21 -10
- package/dist/src/{agents-C-R_jfzI.js → agents-CYn2n3QP.js} +4 -4
- package/dist/src/{agents-8FDnTriG.js → agents-D-vDNFx4.js} +21 -10
- package/dist/src/{agents-aYPQLf8W.js → agents-LrHuQqr1.js} +20 -9
- package/dist/src/{agents-DJ35I3Nt.js → agents-QGg76OF-.js} +5 -5
- package/dist/src/{agents-D7-HGxUj.cjs → agents-eHZ9nlgA.cjs} +21 -10
- package/dist/src/{aimlapi-sgYnkE54.js → aimlapi-CJEbQ0o6.js} +7 -7
- package/dist/src/{aimlapi-BD6J9oKt.js → aimlapi-D5HXzZ0s.js} +6 -6
- package/dist/src/{aimlapi-qcK4OT55.cjs → aimlapi-T6HGNxNe.cjs} +7 -7
- package/dist/src/{aimlapi-BCq3MHeL.js → aimlapi-eYv3a_DK.js} +7 -7
- package/dist/src/app/app/tsconfig.app.tsbuildinfo +1 -1
- package/dist/src/app/assets/Report-BNHJKN35.js +1 -0
- package/dist/src/app/assets/index-BnT6P6sF.js +388 -0
- package/dist/src/app/assets/index-yhM8y1PP.css +1 -0
- package/dist/src/app/assets/{scroll-timeline-D9IT_e8Z.js → scroll-timeline-RpeTwOvs.js} +1 -1
- package/dist/src/app/assets/sync-5gq6fmG4.js +4 -0
- package/dist/src/app/assets/vendor-charts-BL9OMNU7.js +36 -0
- package/dist/src/app/assets/{vendor-markdown-Ch00wnNI.js → vendor-markdown-BYsQqn7Z.js} +10 -10
- package/dist/src/app/assets/{vendor-react-CVvmk1UB.js → vendor-react-CqWgVW6T.js} +2 -2
- package/dist/src/app/assets/{vendor-utils-BnEYbx2Q.js → vendor-utils-BHPO71pu.js} +1 -1
- package/dist/src/app/index.html +31 -6
- package/dist/src/{audio-COrn8rM6.js → audio-BqnRvcWG.js} +3 -3
- package/dist/src/{audio-DcVKoInv.js → audio-CPMtV1yR.js} +4 -4
- package/dist/src/{audio-B7izf48x.js → audio-DyiebVB3.js} +4 -4
- package/dist/src/{audio-BQtNuYBj.cjs → audio-FnxbEnSE.cjs} +4 -4
- package/dist/src/authoritativeMarkupInjection-BZIywVjG.js +74 -0
- package/dist/src/authoritativeMarkupInjection-DyAXAsSr.js +75 -0
- package/dist/src/authoritativeMarkupInjection-F2gBw0lN.cjs +74 -0
- package/dist/src/authoritativeMarkupInjection-QEQmFS83.js +74 -0
- package/dist/src/{base-PYJvBE1i.js → base-CKLo890h.js} +4 -3
- package/dist/src/{base-fZ9wgg50.js → base-Co80MMCi.js} +5 -4
- package/dist/src/{base-D-670DX8.cjs → base-DGJW48uz.cjs} +5 -4
- package/dist/src/{base-yrI1Yal4.js → base-E9I8zXjz.js} +5 -4
- package/dist/src/bestOfN-B3wNzjSB.js +137 -0
- package/dist/src/bestOfN-BBsO41z4.js +136 -0
- package/dist/src/bestOfN-CAwmg5UL.cjs +140 -0
- package/dist/src/bestOfN-_kTi8Bxe.js +136 -0
- package/dist/src/{blobs-D2FAd1Q5.cjs → blobs-B0977K1O.cjs} +7 -6
- package/dist/src/{blobs-BCZavS8s.js → blobs-CeFdPn_T.js} +3 -3
- package/dist/src/{blobs-BQWqnnvL.js → blobs-DODuTK-a.js} +3 -3
- package/dist/src/{blobs-C-F78Kfn.js → blobs-Dwef1Ao1.js} +2 -2
- package/dist/src/{cache-BIyPcp5v.cjs → cache-CPGUA4Yl.cjs} +135 -25
- package/dist/src/cache-Cf7b4pWE.js +3 -0
- package/dist/src/{cache-D5NZmMiT.js → cache-DIXbtkNO.js} +125 -10
- package/dist/src/{cache-mb7c8hbp.js → cache-DpPWrkTE.js} +128 -12
- package/dist/src/{cache-C4Xb-hNb.js → cache-roFAE0cI.js} +126 -11
- package/dist/src/{chat-I9izLm49.js → chat-CUCorGiL.js} +12 -12
- package/dist/src/{chat-BPXSW8Bv.cjs → chat-DG1wG4w0.cjs} +6 -6
- package/dist/src/{chat-BfPaS15_.js → chat-Dabu84Br.js} +12 -12
- package/dist/src/{chat-Dr3DUQ0D.js → chat-DqUFcWI0.js} +12 -12
- package/dist/src/{chat-CclRbxGf.cjs → chat-DxTDQ83C.cjs} +14 -13
- package/dist/src/{chat-MKxMnZJZ.js → chat-GmlolEwo.js} +4 -4
- package/dist/src/{chat-0bwXjVP0.js → chat-TP8Qifkh.js} +6 -6
- package/dist/src/{chat-mW0ORo8G.js → chat-iwaM5UTQ.js} +6 -6
- package/dist/src/{chatkit-zUIVoDos.js → chatkit-B6DWi70Q.js} +4 -4
- package/dist/src/{chatkit-BoWoSgXl.cjs → chatkit-BYveR48_.cjs} +6 -5
- package/dist/src/{chatkit-Cv6AhukM.js → chatkit-fARZwEfV.js} +3 -3
- package/dist/src/{chatkit-CJnHRRMM.js → chatkit-lb6FK02w.js} +4 -4
- package/dist/src/{claude-agent-sdk-Dtq_L-Sc.js → claude-agent-sdk-BQNp_y-F.js} +212 -67
- package/dist/src/{claude-agent-sdk-BQNuLaAK.js → claude-agent-sdk-D5Jl0SDh.js} +212 -67
- package/dist/src/{claude-agent-sdk-CPJo3dBQ.cjs → claude-agent-sdk-DH416NBD.cjs} +218 -72
- package/dist/src/{claude-agent-sdk-nfAIcxNf.js → claude-agent-sdk-x1XJ1-pU.js} +212 -67
- package/dist/src/{cloud-DQZ5sVjW.js → cloud-D3DiFqH6.js} +3 -3
- package/dist/src/cloud-p96PA4MH.js +3 -0
- package/dist/src/{cloudflare-ai-BIB567w6.js → cloudflare-ai-B6NVI3ax.js} +4 -4
- package/dist/src/{cloudflare-ai-Dl3N9OVD.cjs → cloudflare-ai-CEAW-xQa.cjs} +6 -6
- package/dist/src/{cloudflare-ai-DlKr0rY7.js → cloudflare-ai-RFSojyXG.js} +6 -6
- package/dist/src/{cloudflare-ai-DGLte7Py.js → cloudflare-ai-r4tbYmWU.js} +6 -6
- package/dist/src/{cloudflare-gateway-CiIZHU0Q.js → cloudflare-gateway-BCkLouto.js} +5 -5
- package/dist/src/{cloudflare-gateway-DI1HNP5F.js → cloudflare-gateway-BaZ4insB.js} +3 -3
- package/dist/src/{cloudflare-gateway-BDZrYydE.js → cloudflare-gateway-CF-Vb-2Z.js} +5 -5
- package/dist/src/{cloudflare-gateway-BYDp495F.cjs → cloudflare-gateway-TJMLBj6I.cjs} +5 -5
- package/dist/src/codex-app-server-B8KHEiF4.js +1915 -0
- package/dist/src/codex-app-server-CnrLBCeA.cjs +1921 -0
- package/dist/src/codex-app-server-DIXZ230V.js +1915 -0
- package/dist/src/codex-app-server-Dd22dC_N.js +1916 -0
- package/dist/src/{codex-sdk-CpqiOqDO.js → codex-sdk-B6Wah8Pa.js} +6 -6
- package/dist/src/codex-sdk-BGjVAk23.js +3 -0
- package/dist/src/{codex-sdk-C2_M2pl_.cjs → codex-sdk-CFF6gUyi.cjs} +18 -10
- package/dist/src/{codex-sdk-Rtky3M4I.js → codex-sdk-CmQABzV3.js} +6 -6
- package/dist/src/{codex-sdk-CErXn7qh.js → codex-sdk-D2d54RL8.js} +5 -5
- package/dist/src/{cometapi-CtJ-mS8R.js → cometapi-Bu9B8NUY.js} +8 -8
- package/dist/src/{cometapi-DT-jlVCB.js → cometapi-CtzNCHKu.js} +7 -7
- package/dist/src/{cometapi-UVOryo4W.cjs → cometapi-DHCDlQUI.cjs} +8 -8
- package/dist/src/{cometapi-BUlt_ELa.js → cometapi-OBILPLlu.js} +8 -8
- package/dist/src/{completion-HUe8wDhZ.js → completion-CO2e1_62.js} +6 -6
- package/dist/src/{completion-BozdoXba.cjs → completion-CSYfl2cd.cjs} +6 -6
- package/dist/src/{completion-x0a_c2y1.js → completion-DZNxcyfG.js} +6 -6
- package/dist/src/{completion-Dnxn7E-j.js → completion-sNvCLTAP.js} +5 -5
- package/dist/src/constants-BjJV0cRr.js +6 -0
- package/dist/src/constants-DH5XYLKZ.js +7 -0
- package/dist/src/constants-DZGEFLsu.js +6 -0
- package/dist/src/constants-a2kYssQk.cjs +11 -0
- package/dist/src/{createHash-4gFQpDDv.js → createHash-BtbSX3mj.js} +1 -1
- package/dist/src/{createHash-CwDVU5xr.js → createHash-CGVzWdjj.js} +1 -1
- package/dist/src/{createHash-B7KvgoOD.cjs → createHash-CSiqnK5P.cjs} +2 -2
- package/dist/src/{createHash-ChI45QR1.js → createHash-CgRvs4Fn.js} +1 -1
- package/dist/src/crescendo-BXEJK_bi.cjs +704 -0
- package/dist/src/crescendo-CU_Y2i-m.js +702 -0
- package/dist/src/crescendo-J1Xx4_zb.js +703 -0
- package/dist/src/crescendo-QiaSLW0d.js +701 -0
- package/dist/src/custom-BJfP00Bh.js +619 -0
- package/dist/src/custom-CZVn-1-r.js +620 -0
- package/dist/src/custom-Cqia7M0D.cjs +621 -0
- package/dist/src/custom-notggYVl.js +618 -0
- package/dist/src/{docker-DCgsveLD.js → docker-4D1eL6Gq.js} +6 -6
- package/dist/src/{docker-ClnmCf1Z.js → docker-BBv1WUDu.js} +5 -5
- package/dist/src/{docker-DS4_Osau.cjs → docker-D06JUoe2.cjs} +6 -6
- package/dist/src/{docker-CQmlA2NU.js → docker-DdJQBxK9.js} +6 -6
- package/dist/src/{embedding-D3xTseo7.js → embedding--UZVe4_7.js} +6 -6
- package/dist/src/{embedding-I45KG3o7.cjs → embedding-BbrwopfX.cjs} +6 -6
- package/dist/src/{embedding-nFbumxcv.js → embedding-Bi3rxrZF.js} +5 -5
- package/dist/src/{embedding-DD9wa3ae.js → embedding-C251p1-8.js} +6 -6
- package/dist/src/{errors-Cw810C93.js → errors-9PcUL8BC.js} +1 -1
- package/dist/src/{esm-Dh4dOLlt.js → esm-B6whoAcf.js} +2 -2
- package/dist/src/{esm-CtEPLdAj.cjs → esm-BIKakvNa.cjs} +8 -7
- package/dist/src/{esm-C7PnfdF8.js → esm-BTK1W7lG.js} +1 -1
- package/dist/src/{esm-tVgYPY-f.js → esm-Bexx2PFc.js} +2 -2
- package/dist/src/{eval-u4UVafl6.js → eval-0VRANImH.js} +21 -21
- package/dist/src/{eval-CzJFfFO9.js → eval-DscR5iOM.js} +1 -1
- package/dist/src/{evalResult-Bgm9ZH31.js → evalResult-2RRJvFyB.js} +41 -16
- package/dist/src/{evalResult-KZqXl4XP.cjs → evalResult-CvtS8h8u.cjs} +51 -15
- package/dist/src/evalResult-DqzsS6_W.js +3 -0
- package/dist/src/{evalResult-D3hVYFis.js → evalResult-eUkJv9Ko.js} +40 -15
- package/dist/src/evaluator-DNdJF1Gv.js +3 -0
- package/dist/src/{evaluator-IvuDYSvQ.js → evaluator-DRoiYB2q.js} +1060 -187
- package/dist/src/evaluatorHelpers-BsYP_muT.js +511 -0
- package/dist/src/evaluatorHelpers-CRqTvSux.cjs +537 -0
- package/dist/src/evaluatorHelpers-DuqFFfq7.js +510 -0
- package/dist/src/{extractor-CAfTSraf.js → extractor-BR7XAzAL.js} +6 -6
- package/dist/src/{extractor-WVPOrH43.cjs → extractor-BdxEtt3J.cjs} +6 -6
- package/dist/src/{extractor-DNSeBVOJ.js → extractor-CIW3iN-b.js} +6 -6
- package/dist/src/{extractor-Dk6bRWkv.js → extractor-CxRtnaHl.js} +5 -5
- package/dist/src/{fetch-B0Z3Oe4k.js → fetch-BufrQtvR.js} +93 -40
- package/dist/src/{fetch-BEWnXrrG.js → fetch-DXUnXkVU.js} +89 -40
- package/dist/src/{fetch-CJU5ELPa.cjs → fetch-Dw4XZHjj.cjs} +330 -270
- package/dist/src/{fetch-Di00EQrc.js → fetch-It34O8Ur.js} +305 -252
- package/dist/src/fetch-_YgGd2qv.js +3 -0
- package/dist/src/{fileExtensions-bYh77CN8.cjs → fileExtensions-BhdwzYaD.cjs} +24 -1
- package/dist/src/{fileExtensions-DnqA1y9x.js → fileExtensions-CXRfY3Ss.js} +12 -2
- package/dist/src/{fileExtensions-AWa2ZML4.js → fileExtensions-D4GCJ67J.js} +12 -2
- package/dist/src/{formatDuration-DZzPsexs.js → formatDuration-CMVNrYvE.js} +1 -1
- package/dist/src/{genaiTracer-yRuxj9-L.cjs → genaiTracer-14nugQQx.cjs} +14 -2
- package/dist/src/{genaiTracer-DWdZ28hY.js → genaiTracer-BPVvltoW.js} +2 -2
- package/dist/src/{genaiTracer-XnrcgDCe.js → genaiTracer-D18lYzhB.js} +2 -2
- package/dist/src/{genaiTracer-COYDi-tC.js → genaiTracer-jJKYsnjc.js} +2 -2
- package/dist/src/goat-Ckd3q3AY.js +467 -0
- package/dist/src/goat-Qgurm-NP.js +466 -0
- package/dist/src/goat-ghadEDdy.js +465 -0
- package/dist/src/goat-una6pZGP.cjs +469 -0
- package/dist/src/graders-BDT7dif6.js +3 -0
- package/dist/src/{graders-eIHhRqoC.js → graders-BGP99PdK.js} +2416 -2224
- package/dist/src/{graders-Zy3x0zqX.js → graders-BX0f2tvS.js} +2423 -2226
- package/dist/src/{graders-pvbReLLn.js → graders-C0nXU_ZP.js} +1806 -1609
- package/dist/src/{graders--zknU_uk.cjs → graders-ClrU2fnd.cjs} +2219 -1949
- package/dist/src/hydra-BSNZZm2M.js +543 -0
- package/dist/src/hydra-BxdG4nkg.js +541 -0
- package/dist/src/hydra-DE4xWwyc.js +542 -0
- package/dist/src/hydra-DrJttnvw.cjs +542 -0
- package/dist/src/image-B4oBtu6J.js +443 -0
- package/dist/src/{image-dnoUgPrC.js → image-BN-hjLL9.js} +4 -4
- package/dist/src/{image-9302QVqR.js → image-B_fPIwdg.js} +3 -3
- package/dist/src/image-BvUAW344.js +442 -0
- package/dist/src/image-Cvjwx1uY.js +442 -0
- package/dist/src/{image-De2FBmYV.cjs → image-DfVCGPbI.cjs} +4 -4
- package/dist/src/{image-u7-rKnYU.js → image-QzmydkiG.js} +4 -4
- package/dist/src/image-X0oY4350.cjs +465 -0
- package/dist/src/index.cjs +1689 -558
- package/dist/src/index.d.cts +3270 -1624
- package/dist/src/index.d.ts +3270 -1624
- package/dist/src/index.js +1553 -438
- package/dist/src/indirectWebPwn-02ZIghCS.js +259 -0
- package/dist/src/indirectWebPwn-BJ22AbQa.cjs +397 -0
- package/dist/src/indirectWebPwn-CbjUG0rh.js +385 -0
- package/dist/src/indirectWebPwn-CfQJt3gk.cjs +260 -0
- package/dist/src/indirectWebPwn-DBQhOjoD.js +260 -0
- package/dist/src/indirectWebPwn-OsXnKejv.js +259 -0
- package/dist/src/indirectWebPwn-tNx9OZ35.js +385 -0
- package/dist/src/indirectWebPwn-uyWdHx04.js +386 -0
- package/dist/src/inputVariables-B0qUChbV.js +467 -0
- package/dist/src/inputVariables-DUGMb9Ka.js +464 -0
- package/dist/src/inputVariables-DXFdi7AI.js +468 -0
- package/dist/src/inputVariables-Dq9W-Z3a.cjs +475 -0
- package/dist/src/{interactiveCheck-CLERUB0c.js → interactiveCheck-C4QlIuoR.js} +2 -2
- package/dist/src/{invariant-BtWWVVhl.js → invariant-B2Rf6avk.js} +1 -1
- package/dist/src/{invariant-vgHWClmd.js → invariant-DIYf9sP1.js} +1 -1
- package/dist/src/{invariant-kfQ8Bu82.cjs → invariant-QtnLD03y.cjs} +1 -1
- package/dist/src/iterative-CpU6i2As.js +490 -0
- package/dist/src/iterative-DJQEQpG3.js +491 -0
- package/dist/src/iterative-DQBuWM-j.cjs +493 -0
- package/dist/src/iterative-FTS4Bz67.js +492 -0
- package/dist/src/iterativeImage-BUABMVOA.js +413 -0
- package/dist/src/iterativeImage-ByFWkxax.cjs +415 -0
- package/dist/src/iterativeImage-BzUapOUi.js +414 -0
- package/dist/src/iterativeImage-Doz8mgxF.js +413 -0
- package/dist/src/iterativeMeta-B3YiAOc8.js +386 -0
- package/dist/src/iterativeMeta-C7APE_P1.js +385 -0
- package/dist/src/iterativeMeta-CSS8M6Ds.cjs +385 -0
- package/dist/src/iterativeMeta-DgoQ7bLh.js +384 -0
- package/dist/src/iterativeTree-B5zxBBSW.js +769 -0
- package/dist/src/iterativeTree-CNyIk0Yn.js +768 -0
- package/dist/src/iterativeTree-CPMF10ve.cjs +771 -0
- package/dist/src/iterativeTree-DvZ7GBwt.js +770 -0
- package/dist/src/{knowledgeBase-Dgc7CBWF.js → knowledgeBase-BadkINlJ.js} +24 -10
- package/dist/src/{knowledgeBase-RhFPGWDc.js → knowledgeBase-Bi_8sV-H.js} +25 -11
- package/dist/src/{knowledgeBase-lm9RXSAm.js → knowledgeBase-CkMljjdg.js} +25 -11
- package/dist/src/{knowledgeBase-Bpoe_nLu.cjs → knowledgeBase-DUh34xba.cjs} +25 -11
- package/dist/src/{litellm-DRjpcSa7.js → litellm-BKBo0jpC.js} +5 -5
- package/dist/src/{litellm-C2kqjxqp.js → litellm-BXyn5kZK.js} +5 -5
- package/dist/src/{litellm-p37R1dzQ.js → litellm-CNcfbCfa.js} +4 -4
- package/dist/src/{litellm-CoyI4IAl.cjs → litellm-CtAr7bKG.cjs} +5 -5
- package/dist/src/{logger-DksKw1Qc.js → logger-BbY6ypFL.js} +2 -2
- package/dist/src/{logger-B88EkIn6.js → logger-KD8JjCRJ.js} +2 -2
- package/dist/src/{logger-COuQb2xB.cjs → logger-cfNpzI4o.cjs} +13 -55
- package/dist/src/{luma-ray-KgTCXrZC.js → luma-ray-BMX1iEB6.js} +5 -5
- package/dist/src/{luma-ray-B863CmuZ.js → luma-ray-CR5TSpp4.js} +5 -5
- package/dist/src/{luma-ray-BxVKaW2a.cjs → luma-ray-D3FUc2K3.cjs} +9 -8
- package/dist/src/{luma-ray-BTTLtqQ8.js → luma-ray-OEMmS1RB.js} +6 -6
- package/dist/src/main.js +909 -369
- package/dist/src/memoryPoisoning-CM83NWYl.js +107 -0
- package/dist/src/memoryPoisoning-D8h9gXJF.js +106 -0
- package/dist/src/memoryPoisoning-Dp-btinn.cjs +106 -0
- package/dist/src/memoryPoisoning-cLuCoTuJ.js +106 -0
- package/dist/src/{messages-BTQz42fn.js → messages-BabO-cX8.js} +273 -17
- package/dist/src/{messages-811uVVW5.cjs → messages-DBPir0TQ.cjs} +278 -18
- package/dist/src/{messages-zWbkLLHz.js → messages-DGUlSNU7.js} +273 -17
- package/dist/src/{messages-MYTQ2TWp.js → messages-vsE_-Lv0.js} +273 -17
- package/dist/src/{meteor-DHdzY1Ss.js → meteor--TZYICTI.js} +2 -2
- package/dist/src/{meteor-Co1VQ1u5.cjs → meteor-CR226f7Z.cjs} +2 -2
- package/dist/src/{meteor-CU5UAE-H.js → meteor-Cl_yd7rJ.js} +2 -2
- package/dist/src/{meteor-DuAFv6gF.js → meteor-Dce-_zGQ.js} +1 -1
- package/dist/src/mischievousUser-0l8GD7Dp.js +46 -0
- package/dist/src/mischievousUser-BUOP9W5r.js +46 -0
- package/dist/src/mischievousUser-frFYKxu6.js +47 -0
- package/dist/src/mischievousUser-olGgHIVR.cjs +46 -0
- package/dist/src/{modelslab-Dk1JAtVo.cjs → modelslab-CNV5bMSk.cjs} +7 -7
- package/dist/src/{modelslab-D0erNWKe.js → modelslab-Cogmu4mG.js} +6 -6
- package/dist/src/{modelslab-DIq-6y7x.js → modelslab-Dzst7VTU.js} +6 -6
- package/dist/src/{modelslab-wu9yi5GE.js → modelslab-EyDczZ5A.js} +7 -7
- package/dist/src/{nova-reel-CCFRfeRb.js → nova-reel-BGPNBOMS.js} +6 -6
- package/dist/src/{nova-reel-DQrm74ng.js → nova-reel-B_5NKFu1.js} +5 -5
- package/dist/src/{nova-reel-gr11WG7f.js → nova-reel-C4eUJGse.js} +5 -5
- package/dist/src/{nova-reel-CrLXVKQf.cjs → nova-reel-CjJRxI1X.cjs} +9 -8
- package/dist/src/{nova-sonic-BYdp-QLs.js → nova-sonic-BNGmgfFz.js} +4 -4
- package/dist/src/{nova-sonic-TDgrlTk7.js → nova-sonic-ChPlh5na.js} +4 -4
- package/dist/src/{nova-sonic-B_ZXcUJB.js → nova-sonic-CrV0iaY_.js} +3 -3
- package/dist/src/{nova-sonic-i5tUvXKn.cjs → nova-sonic-DuOG9Aun.cjs} +5 -4
- package/dist/src/{openai-DhVEmgeZ.js → openai-BMHD2Huo.js} +2 -2
- package/dist/src/{openai-URNyItar.cjs → openai-C3uXv8wS.cjs} +2 -2
- package/dist/src/{openai-Qsvz25mV.js → openai-CJrsh9n4.js} +2 -2
- package/dist/src/{openai-iYtrXzOX.js → openai-zgwBb4Ff.js} +1 -1
- package/dist/src/{openclaw-CnQ363Wi.js → openclaw-BIHlu_36.js} +10 -8
- package/dist/src/{openclaw-CwzlQSQX.js → openclaw-CF7fMido.js} +9 -7
- package/dist/src/{openclaw-wX9rtfke.cjs → openclaw-Dphc01BY.cjs} +18 -15
- package/dist/src/{openclaw-CLWrW03k.js → openclaw-zIJAsz3P.js} +10 -8
- package/dist/src/{opencode-sdk-BUu5Nevv.js → opencode-sdk-B3vlPLsp.js} +40 -5
- package/dist/src/{opencode-sdk-BxD8vXp_.js → opencode-sdk-D05JSgMQ.js} +40 -5
- package/dist/src/{opencode-sdk-BZ2idgYA.cjs → opencode-sdk-DoY6GbWw.cjs} +46 -10
- package/dist/src/{opencode-sdk-GI2KaAXq.js → opencode-sdk-sRKYHGoI.js} +39 -4
- package/dist/src/{otlpReceiver-BntK801g.js → otlpReceiver--gTpSagc.js} +120 -4
- package/dist/src/{otlpReceiver-DmVulbhC.js → otlpReceiver-B2eaKC8C.js} +120 -4
- package/dist/src/{otlpReceiver-B2z58l4e.js → otlpReceiver-BXjcRqAM.js} +119 -3
- package/dist/src/{otlpReceiver-BfcVq2Nq.cjs → otlpReceiver-CvJdBGSc.cjs} +125 -7
- package/dist/src/packageParser--MWTSrPW.js +36 -0
- package/dist/src/packageParser-CgE-ziRo.js +35 -0
- package/dist/src/packageParser-QoCS1FMl.cjs +54 -0
- package/dist/src/packageParser-hwwSGnAZ.js +35 -0
- package/dist/src/processShim-BBxt7LKO.js +95 -0
- package/dist/src/processShim-BcGzU8fY.js +94 -0
- package/dist/src/processShim-C_z3aRvF.js +94 -0
- package/dist/src/processShim-DSY9BV2T.cjs +98 -0
- package/dist/src/promptLength-0qIHyhA5.js +71 -0
- package/dist/src/promptLength-4X-Wd8PG.js +72 -0
- package/dist/src/promptLength-B9nZEfO6.js +71 -0
- package/dist/src/promptLength-BbBbDHNj.cjs +94 -0
- package/dist/src/promptfoo-BDrfT30-.js +180 -0
- package/dist/src/promptfoo-Cm4hiy1Y.js +180 -0
- package/dist/src/promptfoo-Rjp-MeBb.js +181 -0
- package/dist/src/promptfoo-b-baRMj-.cjs +205 -0
- package/dist/src/prompts-BYMtqPCw.js +259 -0
- package/dist/src/prompts-C-bqE1Yp.js +260 -0
- package/dist/src/prompts-Cp_Qx5Ml.js +270 -0
- package/dist/src/prompts-DHhQsANy.js +259 -0
- package/dist/src/prompts-D_QpZ2Dm.js +271 -0
- package/dist/src/prompts-hNvWBD3z.cjs +284 -0
- package/dist/src/prompts-huDVH2CI.js +270 -0
- package/dist/src/prompts-p78Hul5i.cjs +289 -0
- package/dist/src/{providerRegistry-CPQ_CmVO.js → providerRegistry-1gB5vtzQ.js} +2 -2
- package/dist/src/{providerRegistry-CQMdTmHP.cjs → providerRegistry-CZO_w7ue.cjs} +2 -2
- package/dist/src/{providerRegistry-Bvh8mv85.js → providerRegistry-DHcFiVWX.js} +1 -1
- package/dist/src/{providerRegistry-CWoPjKFZ.js → providerRegistry-ReCd0sFa.js} +2 -2
- package/dist/src/{providers-BV_KMZje.js → providers-B9KzWxAX.js} +10558 -21587
- package/dist/src/{providers-DruaQfwu.js → providers-BCCz6_IX.js} +1228 -12196
- package/dist/src/{providers-1eKkXBKp.cjs → providers-BDVVIQM6.cjs} +10649 -21843
- package/dist/src/{providers-iUt5fbAN.js → providers-BYAn82cf.js} +1 -1
- package/dist/src/{providers-Domz_llv.js → providers-DVYRZP4E.js} +10589 -21570
- package/dist/src/{pythonUtils-Cldx7huE.js → pythonUtils-CLCgQ9tt.js} +3 -3
- package/dist/src/{pythonUtils-CnndUbW-.js → pythonUtils-CgYxeSmO.js} +3 -3
- package/dist/src/{pythonUtils-tAJvvpS-.cjs → pythonUtils-Cokhluq3.cjs} +8 -7
- package/dist/src/{pythonUtils-C2UQ30Rz.js → pythonUtils-D0BYebvX.js} +3 -3
- package/dist/src/{quiverai-DFotyafY.cjs → quiverai-BAp6iTZD.cjs} +4 -4
- package/dist/src/{quiverai-aPPvXOgn.js → quiverai-BvIhI_0l.js} +4 -4
- package/dist/src/{quiverai-DR0SnIQV.js → quiverai-CdTWPe-A.js} +3 -3
- package/dist/src/{quiverai-CtWi6x_g.js → quiverai-Cv7rJKDz.js} +4 -4
- package/dist/src/registry-BUJrgjwv.js +124 -0
- package/dist/src/registry-DXm1t_x0.js +125 -0
- package/dist/src/registry-Dp5EqoXc.js +124 -0
- package/dist/src/registry-KCVF1CFC.cjs +124 -0
- package/dist/src/{server-D6Il2Sob.js → remoteGeneration-B1_XsKXU.js} +16 -108
- package/dist/src/{server-BSB45Nt9.js → remoteGeneration-COpWcmWd.js} +15 -146
- package/dist/src/{server-Dx2TyCH2.cjs → remoteGeneration-DS9N3pgB.cjs} +30 -119
- package/dist/src/remoteGeneration-DsaSwmG2.js +217 -0
- package/dist/src/render-BNTrbmBw.cjs +384 -0
- package/dist/src/render-CSP99NLm.js +348 -0
- package/dist/src/render-DFfDeYUK.js +347 -0
- package/dist/src/{render-CgVDrJmM.js → render-DznWrxGO.js} +2 -2
- package/dist/src/render-_6ur1fhE.js +347 -0
- package/dist/src/resourceAttributes-D1jP3kL5.js +17 -0
- package/dist/src/resourceAttributes-DQbBB--2.js +16 -0
- package/dist/src/resourceAttributes-ephgOvdR.cjs +27 -0
- package/dist/src/resourceAttributes-v6-I67fn.js +16 -0
- package/dist/src/{responses-Bi9vBuW_.cjs → responses-1UFFF9N_.cjs} +51 -16
- package/dist/src/{responses-DL9m8CyY.js → responses-B3W2JvOQ.js} +49 -15
- package/dist/src/{responses--OsX2aYW.js → responses-B6ktc3Ra.js} +49 -15
- package/dist/src/{responses-C-flexAY.js → responses-URRzV8qE.js} +49 -15
- package/dist/src/rolldown-runtime-D_mwlA32.cjs +43 -0
- package/dist/src/rubyUtils-BYVlQ94c.js +3 -0
- package/dist/src/{rubyUtils-DsGrTx8R.js → rubyUtils-CXlFM2rR.js} +3 -3
- package/dist/src/{rubyUtils-DVLeA2jg.js → rubyUtils-CnlW8AYb.js} +3 -3
- package/dist/src/{rubyUtils-B6eljPuh.cjs → rubyUtils-CqUWBZAt.cjs} +18 -27
- package/dist/src/{rubyUtils-CYSQEG4a.js → rubyUtils-DdGojpfv.js} +3 -3
- package/dist/src/runtimeTransform-BJOpL9Yc.js +142 -0
- package/dist/src/runtimeTransform-Dgh_D7DU.js +143 -0
- package/dist/src/runtimeTransform-DigbjU1r.js +142 -0
- package/dist/src/runtimeTransform-ON3YYILw.cjs +147 -0
- package/dist/src/{sagemaker-BVkaG2-l.js → sagemaker-CujrzP1a.js} +62 -51
- package/dist/src/{sagemaker-XnfhheQv.cjs → sagemaker-DzffAqo_.cjs} +65 -53
- package/dist/src/{sagemaker-D67yzMzs.js → sagemaker-vhtSV7JI.js} +62 -51
- package/dist/src/{sagemaker-BveBvuxm.js → sagemaker-yr1QKeBs.js} +61 -50
- package/dist/src/{scanner-1DqWi1Ej.js → scanner-DS0109SS.js} +7 -7
- package/dist/src/server/index.js +5105 -605
- package/dist/src/server-B8rqV126.cjs +126 -0
- package/dist/src/server-BaLytskk.js +3 -0
- package/dist/src/server-CMJD10J4.js +107 -0
- package/dist/src/server-Ddp8GNMp.js +146 -0
- package/dist/src/server-DhMHosWj.js +182 -0
- package/dist/src/shared-7pmVZLNO.js +1334 -0
- package/dist/src/shared-9WHQ1oNE.js +1335 -0
- package/dist/src/{fileExtensions-BArZuxsI.js → shared-BoG7qLMv.js} +12 -2
- package/dist/src/shared-D6IjElRI.js +1334 -0
- package/dist/src/shared-WkgnDkcg.cjs +1436 -0
- package/dist/src/{signal-CE5G3a7x.js → signal-CSurUUyV.js} +3 -3
- package/dist/src/simulatedUser-C9aQObBI.js +222 -0
- package/dist/src/simulatedUser-Cu601Dd4.cjs +227 -0
- package/dist/src/simulatedUser-U_qAHnuB.js +222 -0
- package/dist/src/simulatedUser-p3tACcmw.js +223 -0
- package/dist/src/{slack-DDUe-5MC.js → slack-Bapo-7_8.js} +2 -2
- package/dist/src/{slack-1Rhq0EoV.cjs → slack-DMC1QVEg.cjs} +3 -2
- package/dist/src/{slack-D5Wpy8LM.js → slack-DTEFhrMn.js} +2 -2
- package/dist/src/{slack-acRb0IqQ.js → slack-k-_CP84Q.js} +1 -1
- package/dist/src/storage-BU4qcnOb.js +875 -0
- package/dist/src/storage-CA-v9V2v.cjs +911 -0
- package/dist/src/storage-CD-GWAdx.js +822 -0
- package/dist/src/storage-QdU-SmvD.js +834 -0
- package/dist/src/{store-DAAyxcy6.cjs → store-B2NDDooM.cjs} +60 -24
- package/dist/src/{store-CYEy5J2D.js → store-DKd5592Q.js} +51 -20
- package/dist/src/{store-M0b1WfYb.js → store-HpopRVzl.js} +50 -19
- package/dist/src/store-IbiRIF3k.js +3 -0
- package/dist/src/strategies-7CS3Alao.cjs +2360 -0
- package/dist/src/strategies-CiSeroPH.js +2331 -0
- package/dist/src/strategies-DRJjGTIY.js +2333 -0
- package/dist/src/{tables-DQ4WU5tX.js → tables-CRSXQ2Ke.js} +2 -2
- package/dist/src/{tables-CsWou1Bx.js → tables-CxjU7bBd.js} +3 -3
- package/dist/src/{tables-DUfh1F7Z.cjs → tables-DBIJU0WE.cjs} +6 -5
- package/dist/src/{tables-C4CH3zRr.js → tables-DafUHOeh.js} +3 -3
- package/dist/src/{telemetry-CQPez_Jp.js → telemetry-00ezXr_t.js} +5 -4
- package/dist/src/telemetry-ByPqDcKC.js +3 -0
- package/dist/src/{telemetry-Dsw_faFj.cjs → telemetry-CJ7FnCsc.cjs} +18 -11
- package/dist/src/{telemetry-dbaJ0E98.js → telemetry-DmXYcJNV.js} +5 -4
- package/dist/src/{telemetry-Dvqxv3YC.js → telemetry-DwX9XUN5.js} +4 -3
- package/dist/src/{text-KvuD2Iko.js → text-Db-Wt2u2.js} +1 -1
- package/dist/src/{text-DHxdyQqT.js → text-DwYK5EBn.js} +1 -1
- package/dist/src/{text-BVi-cLPJ.cjs → text-nywWsRBM.cjs} +1 -1
- package/dist/src/{tokenUsageUtils-C-bmyHoE.js → tokenUsageUtils-BjVkdk18.js} +1 -1
- package/dist/src/{tokenUsageUtils-CXrvO-wA.js → tokenUsageUtils-CDet74yk.js} +1 -1
- package/dist/src/tokenUsageUtils-CmnQ0G2m.js +142 -0
- package/dist/src/{tokenUsageUtils-Bb7DkZPz.cjs → tokenUsageUtils-_B-P8IAi.cjs} +1 -1
- package/dist/src/toolAttributes-BAjwcBf0.cjs +103 -0
- package/dist/src/toolAttributes-COVgDrBG.js +87 -0
- package/dist/src/toolAttributes-DJ9ZEKXD.js +86 -0
- package/dist/src/tracingOptions-BnwKCkSB.js +221 -0
- package/dist/src/tracingOptions-Chi74lOD.js +219 -0
- package/dist/src/tracingOptions-DrbSFaKy.cjs +249 -0
- package/dist/src/tracingOptions-ji2OuXbT.js +220 -0
- package/dist/src/{transcription-DuWDupG7.js → transcription-B8uIgCYX.js} +5 -5
- package/dist/src/{transcription-CJspiD2c.js → transcription-CfU5loSq.js} +6 -6
- package/dist/src/{transcription-V2HaAmy2.js → transcription-Dkd22_4K.js} +6 -6
- package/dist/src/{transcription-BvjmiYB1.cjs → transcription-mzuf18Mq.cjs} +9 -8
- package/dist/src/{transform-lQrDE1BQ.js → transform-BIMynQsA.js} +9 -9
- package/dist/src/transform-BnSTnFlp.js +187 -0
- package/dist/src/transform-BnSXWmU_2.cjs +221 -0
- package/dist/src/transform-CGt7Kt3y2.js +186 -0
- package/dist/src/transform-CrPGTsij.js +186 -0
- package/dist/src/{transform-CTeuTR3S.cjs → transform-DhNkAUs8.cjs} +13 -12
- package/dist/src/{transform-CG0ehZNG.js → transform-DmvYBRll.js} +9 -9
- package/dist/src/{transform-zDhMmzwX.js → transform-EtD4jAWi.js} +9 -9
- package/dist/src/{transformersAvailability-CcHusyhw.js → transformersAvailability-0ThtPved.js} +1 -1
- package/dist/src/transformersAvailability-BYydDE5U.js +35 -0
- package/dist/src/{transformersAvailability-DLlROWhg.js → transformersAvailability-BvyU9vDD.js} +1 -1
- package/dist/src/{transformersAvailability-Cju9mHgR.cjs → transformersAvailability-BytPvKUW.cjs} +1 -1
- package/dist/src/{types-Dm9JM6Vb.js → types-BFevViUY.js} +115 -19
- package/dist/src/{types-Bgh5SOn6.js → types-BJQBBPTP.js} +115 -19
- package/dist/src/{types-CeaeaZdP.cjs → types-CxJvaY2S.cjs} +357 -172
- package/dist/src/{types-BGQDAP8i.js → types-D6glLbdF.js} +271 -170
- package/dist/src/{util-BYvQUPp7.js → util--WMgw7wM.js} +28 -8
- package/dist/src/{util-C9J8ahRn.js → util-5WnCSb0h.js} +72 -48
- package/dist/src/{util-CN3SrLT4.cjs → util-BSIuSLVK.cjs} +74 -49
- package/dist/src/{util-C8e5uydV.js → util-Bx677_k2.js} +154 -147
- package/dist/src/util-CN8om2rz.cjs +386 -0
- package/dist/src/{util-DDs-7g6-.js → util-CoQWM76y.js} +28 -8
- package/dist/src/util-DNl96nNs.js +327 -0
- package/dist/src/{util-DxWpWjhc.js → util-DURocbYR.js} +667 -507
- package/dist/src/util-Df8YMvS1.js +327 -0
- package/dist/src/{util-DvU2Pw8c.js → util-DiQ3QvBB.js} +28 -8
- package/dist/src/{util-oGMLA7vc.js → util-I-Rf-KaD.js} +862 -577
- package/dist/src/{util-olYL5C6N.cjs → util-IYzs5Y04.cjs} +33 -7
- package/dist/src/{util-D9TisOyk.js → util-LKTmNsMQ.js} +71 -47
- package/dist/src/{util-Bxn8emtE.cjs → util-SPsvFONY.cjs} +738 -582
- package/dist/src/{util-D3q0WQ-0.js → util-efByNxcr.js} +72 -48
- package/dist/src/util-kDURhgJW.js +328 -0
- package/dist/src/{utils-DJfvjyMj.js → utils-B0lzitHZ.js} +3 -3
- package/dist/src/{utils-BLJKfv0y.js → utils-BFOh20Gb.js} +3 -3
- package/dist/src/{utils-hXtCYanr.js → utils-BGY69tk_.js} +2 -2
- package/dist/src/{utils-B05gLxER.cjs → utils-Ve6kuJsa.cjs} +3 -3
- package/dist/src/version-BK20a4sw.js +16 -0
- package/dist/src/version-BWCSaByA.cjs +27 -0
- package/dist/src/version-eRkNuGv8.js +17 -0
- package/dist/src/version-lpHV_53E.js +16 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +56 -28
- package/dist/src/app/assets/Report-CQYFezYu.js +0 -1
- package/dist/src/app/assets/index-BXGkeMwh.css +0 -1
- package/dist/src/app/assets/index-BzJt18Jz.js +0 -385
- package/dist/src/app/assets/sync-IjzpWrOE.js +0 -4
- package/dist/src/app/assets/vendor-charts-BNdH8TCw.js +0 -36
- package/dist/src/cache-Cr9oLMUa.js +0 -3
- package/dist/src/cache-DbLsVWB2.cjs +0 -3
- package/dist/src/cloud-Hphvo8kr.js +0 -3
- package/dist/src/codex-sdk-BAmYE7qy.js +0 -3
- package/dist/src/codex-sdk-CWEnH70W.cjs +0 -2
- package/dist/src/evalResult-D8MT9p0s.js +0 -3
- package/dist/src/evalResult-DElBuddX.js +0 -2
- package/dist/src/evalResult-Dvc-iucu.cjs +0 -2
- package/dist/src/evaluator-CVessDWe.js +0 -3
- package/dist/src/fetch-C7bGKDlQ.js +0 -3
- package/dist/src/graders-BOAzQEUe.cjs +0 -2
- package/dist/src/graders-D4BTsZdG2.js +0 -3
- package/dist/src/graders-DOJK1XpV.js +0 -2
- package/dist/src/graders-NAv9LcBn.js +0 -2
- package/dist/src/image-B5Mv-Z3h.js +0 -257
- package/dist/src/image-DVz2RiMF.js +0 -258
- package/dist/src/image-qUpPvmNZ.js +0 -257
- package/dist/src/image-x6KqLQl4.cjs +0 -280
- package/dist/src/providers-Bp4S-FvO.js +0 -2
- package/dist/src/providers-DV3ax9e_.cjs +0 -3
- package/dist/src/providers-u9Enmfok.js +0 -2
- package/dist/src/render-CH-62LbA.js +0 -135
- package/dist/src/render-CMEpfLaO.js +0 -136
- package/dist/src/render-DHIZ6_k8.js +0 -135
- package/dist/src/render-DfQSFxGE.cjs +0 -165
- package/dist/src/rubyUtils-D1L2d3jb.js +0 -3
- package/dist/src/rubyUtils-DUbq4tff.cjs +0 -2
- package/dist/src/server-BNYztJkh.js +0 -385
- package/dist/src/server-DCtHUqlp.js +0 -3
- package/dist/src/server-DaA2eR26.cjs +0 -2
- package/dist/src/store-CWOSz6D_.cjs +0 -2
- package/dist/src/store-DCDBhv7B.js +0 -3
- package/dist/src/store-Dn9HUkdW.js +0 -240
- package/dist/src/telemetry-C1IqxcdW.js +0 -3
- package/dist/src/telemetry-C4ZEa_es.cjs +0 -2
- package/dist/src/transform-Bbg6A8Jk.js +0 -216
- package/dist/src/transform-CUnzlsbn.cjs +0 -228
- package/dist/src/transform-DYX1_Xnh.js +0 -216
- package/dist/src/transform-DgKlRr73.cjs +0 -2
- package/dist/src/transform-M6ITAESf.js +0 -3
- package/dist/src/transform-UN5UGu8U.js +0 -213
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
//#region src/util/processShim.ts
|
|
2
|
+
/**
|
|
3
|
+
* Browser-safe process shim module.
|
|
4
|
+
*
|
|
5
|
+
* This module provides a shimmed process object that works in both Node.js and browser
|
|
6
|
+
* environments. In Node.js, it provides full functionality including process.mainModule.require.
|
|
7
|
+
* In browsers, it returns a minimal shim that throws helpful errors when Node.js-specific
|
|
8
|
+
* features are accessed.
|
|
9
|
+
*
|
|
10
|
+
* This separation is necessary because:
|
|
11
|
+
* 1. The promptfoo webui imports httpTransforms.ts which needs getProcessShim()
|
|
12
|
+
* 2. httpTransforms.ts is designed to be frontend-importable for testing transforms in the UI
|
|
13
|
+
* 3. The Node.js implementation uses createRequire from 'node:module' which doesn't exist in browsers
|
|
14
|
+
*
|
|
15
|
+
* By using runtime environment detection and dynamic imports, we can:
|
|
16
|
+
* - Avoid top-level imports of Node.js-only modules that would break browser bundling
|
|
17
|
+
* - Provide appropriate functionality for each environment
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Detects if the current environment is a browser or web worker.
|
|
21
|
+
* Handles test environments (jsdom/happy-dom) that define window in Node.js.
|
|
22
|
+
*/
|
|
23
|
+
function isBrowserEnvironment() {
|
|
24
|
+
if (typeof process !== "undefined" && typeof process.versions?.node === "string") return false;
|
|
25
|
+
return typeof window !== "undefined" || typeof self !== "undefined" && typeof self.importScripts === "function";
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Creates a minimal process shim for browser environments.
|
|
29
|
+
* This shim provides helpful error messages when Node.js-specific features are accessed.
|
|
30
|
+
*/
|
|
31
|
+
function createBrowserProcessShim() {
|
|
32
|
+
return {
|
|
33
|
+
env: {},
|
|
34
|
+
mainModule: {
|
|
35
|
+
require: () => {
|
|
36
|
+
throw new Error("require() is not available in browser transforms. Use standard JavaScript instead.");
|
|
37
|
+
},
|
|
38
|
+
exports: {},
|
|
39
|
+
id: ".",
|
|
40
|
+
filename: "",
|
|
41
|
+
loaded: true,
|
|
42
|
+
children: [],
|
|
43
|
+
paths: []
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
let cachedNodeProcessShim = null;
|
|
48
|
+
/**
|
|
49
|
+
* Returns a shimmed process object that works in both Node.js and browser environments.
|
|
50
|
+
*
|
|
51
|
+
* In Node.js:
|
|
52
|
+
* - Returns a proxy with process.mainModule.require shimmed for ESM compatibility
|
|
53
|
+
* - Allows inline transforms to use require() even in ESM context
|
|
54
|
+
*
|
|
55
|
+
* In browsers:
|
|
56
|
+
* - Returns a minimal shim with helpful error messages
|
|
57
|
+
* - Allows simple transforms that don't use require() to work
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* // In Node.js - can use require
|
|
61
|
+
* const fn = new Function('data', 'process', `return process.mainModule.require('fs')`);
|
|
62
|
+
* fn(data, getProcessShim());
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* // In browser - simple transforms work
|
|
66
|
+
* const fn = new Function('data', 'process', `return data.toUpperCase()`);
|
|
67
|
+
* fn(data, getProcessShim());
|
|
68
|
+
*/
|
|
69
|
+
function getProcessShim() {
|
|
70
|
+
if (isBrowserEnvironment()) return createBrowserProcessShim();
|
|
71
|
+
if (!cachedNodeProcessShim) try {
|
|
72
|
+
const esmRequire = require("node:module").createRequire(require("url").pathToFileURL(__filename).href);
|
|
73
|
+
cachedNodeProcessShim = new Proxy(process, { get(target, prop) {
|
|
74
|
+
if (prop === "mainModule") return {
|
|
75
|
+
require: esmRequire,
|
|
76
|
+
exports: {},
|
|
77
|
+
id: ".",
|
|
78
|
+
filename: "",
|
|
79
|
+
loaded: true,
|
|
80
|
+
children: [],
|
|
81
|
+
paths: []
|
|
82
|
+
};
|
|
83
|
+
return Reflect.get(target, prop);
|
|
84
|
+
} });
|
|
85
|
+
} catch {
|
|
86
|
+
return createBrowserProcessShim();
|
|
87
|
+
}
|
|
88
|
+
return cachedNodeProcessShim;
|
|
89
|
+
}
|
|
90
|
+
//#endregion
|
|
91
|
+
Object.defineProperty(exports, "getProcessShim", {
|
|
92
|
+
enumerable: true,
|
|
93
|
+
get: function() {
|
|
94
|
+
return getProcessShim;
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
//# sourceMappingURL=processShim-DSY9BV2T.cjs.map
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { k as state } from "./logger-KD8JjCRJ.js";
|
|
2
|
+
//#region src/redteam/shared/promptLength.ts
|
|
3
|
+
const MAX_CHARS_PER_MESSAGE_MODIFIER_KEY = "maxCharsPerMessage";
|
|
4
|
+
function isRecord(value) {
|
|
5
|
+
return typeof value === "object" && value !== null;
|
|
6
|
+
}
|
|
7
|
+
function getMaxCharsPerMessage(limit) {
|
|
8
|
+
const maxCharsPerMessage = limit ?? state.config?.redteam?.maxCharsPerMessage;
|
|
9
|
+
if (typeof maxCharsPerMessage !== "number" || !Number.isInteger(maxCharsPerMessage) || maxCharsPerMessage <= 0) return;
|
|
10
|
+
return maxCharsPerMessage;
|
|
11
|
+
}
|
|
12
|
+
function parseChatMessages(prompt) {
|
|
13
|
+
try {
|
|
14
|
+
const parsed = JSON.parse(prompt);
|
|
15
|
+
if (Array.isArray(parsed) && parsed.every((item) => isRecord(item) && typeof item.role === "string" && typeof item.content === "string")) return parsed.map((message, index) => ({
|
|
16
|
+
content: message.content,
|
|
17
|
+
path: `[${index}].content`,
|
|
18
|
+
role: message.role
|
|
19
|
+
}));
|
|
20
|
+
if (isRecord(parsed) && parsed._promptfoo_audio_hybrid === true && (parsed.history === void 0 || Array.isArray(parsed.history)) && isRecord(parsed.currentTurn) && typeof parsed.currentTurn.role === "string" && typeof parsed.currentTurn.transcript === "string" && (parsed.history === void 0 || parsed.history.every((item) => isRecord(item) && typeof item.role === "string" && typeof item.content === "string"))) return [...(parsed.history ?? []).map((message, index) => ({
|
|
21
|
+
content: message.content,
|
|
22
|
+
path: `history[${index}].content`,
|
|
23
|
+
role: message.role
|
|
24
|
+
})), {
|
|
25
|
+
content: parsed.currentTurn.transcript,
|
|
26
|
+
path: "currentTurn.transcript",
|
|
27
|
+
role: parsed.currentTurn.role
|
|
28
|
+
}];
|
|
29
|
+
} catch {}
|
|
30
|
+
}
|
|
31
|
+
function getPromptLengthViolation(prompt, limit) {
|
|
32
|
+
const maxCharsPerMessage = getMaxCharsPerMessage(limit);
|
|
33
|
+
if (!maxCharsPerMessage) return;
|
|
34
|
+
const messages = parseChatMessages(prompt);
|
|
35
|
+
if (messages) {
|
|
36
|
+
const oversizedMessage = messages.find((message) => message.role === "user" && message.content.length > maxCharsPerMessage);
|
|
37
|
+
return oversizedMessage ? {
|
|
38
|
+
length: oversizedMessage.content.length,
|
|
39
|
+
limit: maxCharsPerMessage,
|
|
40
|
+
path: oversizedMessage.path
|
|
41
|
+
} : void 0;
|
|
42
|
+
}
|
|
43
|
+
if (prompt.length <= maxCharsPerMessage) return;
|
|
44
|
+
return {
|
|
45
|
+
length: prompt.length,
|
|
46
|
+
limit: maxCharsPerMessage,
|
|
47
|
+
path: "prompt"
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function getMaxCharsPerMessageModifierValue(limit) {
|
|
51
|
+
const maxCharsPerMessage = getMaxCharsPerMessage(limit);
|
|
52
|
+
if (!maxCharsPerMessage) return;
|
|
53
|
+
return `Each generated user message must be ${maxCharsPerMessage} characters or fewer.`;
|
|
54
|
+
}
|
|
55
|
+
function getGeneratedPromptOverLimit(prompt, limit) {
|
|
56
|
+
const violation = getPromptLengthViolation(prompt, limit);
|
|
57
|
+
if (!violation) return;
|
|
58
|
+
return {
|
|
59
|
+
length: violation.length,
|
|
60
|
+
limit: violation.limit
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function throwIfTargetPromptExceedsMaxChars(prompt, limit) {
|
|
64
|
+
const violation = getPromptLengthViolation(prompt, limit);
|
|
65
|
+
if (!violation) return;
|
|
66
|
+
throw new Error(`Target prompt message at ${violation.path} exceeds maxCharsPerMessage=${violation.limit}: ${violation.length} characters.`);
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
export { throwIfTargetPromptExceedsMaxChars as i, getGeneratedPromptOverLimit as n, getMaxCharsPerMessageModifierValue as r, MAX_CHARS_PER_MESSAGE_MODIFIER_KEY as t };
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=promptLength-0qIHyhA5.js.map
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { N as state } from "./logger-BbY6ypFL.js";
|
|
3
|
+
//#region src/redteam/shared/promptLength.ts
|
|
4
|
+
const MAX_CHARS_PER_MESSAGE_MODIFIER_KEY = "maxCharsPerMessage";
|
|
5
|
+
function isRecord(value) {
|
|
6
|
+
return typeof value === "object" && value !== null;
|
|
7
|
+
}
|
|
8
|
+
function getMaxCharsPerMessage(limit) {
|
|
9
|
+
const maxCharsPerMessage = limit ?? state.config?.redteam?.maxCharsPerMessage;
|
|
10
|
+
if (typeof maxCharsPerMessage !== "number" || !Number.isInteger(maxCharsPerMessage) || maxCharsPerMessage <= 0) return;
|
|
11
|
+
return maxCharsPerMessage;
|
|
12
|
+
}
|
|
13
|
+
function parseChatMessages(prompt) {
|
|
14
|
+
try {
|
|
15
|
+
const parsed = JSON.parse(prompt);
|
|
16
|
+
if (Array.isArray(parsed) && parsed.every((item) => isRecord(item) && typeof item.role === "string" && typeof item.content === "string")) return parsed.map((message, index) => ({
|
|
17
|
+
content: message.content,
|
|
18
|
+
path: `[${index}].content`,
|
|
19
|
+
role: message.role
|
|
20
|
+
}));
|
|
21
|
+
if (isRecord(parsed) && parsed._promptfoo_audio_hybrid === true && (parsed.history === void 0 || Array.isArray(parsed.history)) && isRecord(parsed.currentTurn) && typeof parsed.currentTurn.role === "string" && typeof parsed.currentTurn.transcript === "string" && (parsed.history === void 0 || parsed.history.every((item) => isRecord(item) && typeof item.role === "string" && typeof item.content === "string"))) return [...(parsed.history ?? []).map((message, index) => ({
|
|
22
|
+
content: message.content,
|
|
23
|
+
path: `history[${index}].content`,
|
|
24
|
+
role: message.role
|
|
25
|
+
})), {
|
|
26
|
+
content: parsed.currentTurn.transcript,
|
|
27
|
+
path: "currentTurn.transcript",
|
|
28
|
+
role: parsed.currentTurn.role
|
|
29
|
+
}];
|
|
30
|
+
} catch {}
|
|
31
|
+
}
|
|
32
|
+
function getPromptLengthViolation(prompt, limit) {
|
|
33
|
+
const maxCharsPerMessage = getMaxCharsPerMessage(limit);
|
|
34
|
+
if (!maxCharsPerMessage) return;
|
|
35
|
+
const messages = parseChatMessages(prompt);
|
|
36
|
+
if (messages) {
|
|
37
|
+
const oversizedMessage = messages.find((message) => message.role === "user" && message.content.length > maxCharsPerMessage);
|
|
38
|
+
return oversizedMessage ? {
|
|
39
|
+
length: oversizedMessage.content.length,
|
|
40
|
+
limit: maxCharsPerMessage,
|
|
41
|
+
path: oversizedMessage.path
|
|
42
|
+
} : void 0;
|
|
43
|
+
}
|
|
44
|
+
if (prompt.length <= maxCharsPerMessage) return;
|
|
45
|
+
return {
|
|
46
|
+
length: prompt.length,
|
|
47
|
+
limit: maxCharsPerMessage,
|
|
48
|
+
path: "prompt"
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function getMaxCharsPerMessageModifierValue(limit) {
|
|
52
|
+
const maxCharsPerMessage = getMaxCharsPerMessage(limit);
|
|
53
|
+
if (!maxCharsPerMessage) return;
|
|
54
|
+
return `Each generated user message must be ${maxCharsPerMessage} characters or fewer.`;
|
|
55
|
+
}
|
|
56
|
+
function getGeneratedPromptOverLimit(prompt, limit) {
|
|
57
|
+
const violation = getPromptLengthViolation(prompt, limit);
|
|
58
|
+
if (!violation) return;
|
|
59
|
+
return {
|
|
60
|
+
length: violation.length,
|
|
61
|
+
limit: violation.limit
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function throwIfTargetPromptExceedsMaxChars(prompt, limit) {
|
|
65
|
+
const violation = getPromptLengthViolation(prompt, limit);
|
|
66
|
+
if (!violation) return;
|
|
67
|
+
throw new Error(`Target prompt message at ${violation.path} exceeds maxCharsPerMessage=${violation.limit}: ${violation.length} characters.`);
|
|
68
|
+
}
|
|
69
|
+
//#endregion
|
|
70
|
+
export { throwIfTargetPromptExceedsMaxChars as i, getGeneratedPromptOverLimit as n, getMaxCharsPerMessageModifierValue as r, MAX_CHARS_PER_MESSAGE_MODIFIER_KEY as t };
|
|
71
|
+
|
|
72
|
+
//# sourceMappingURL=promptLength-4X-Wd8PG.js.map
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { k as state } from "./logger-Ct2S6Yx-.js";
|
|
2
|
+
//#region src/redteam/shared/promptLength.ts
|
|
3
|
+
const MAX_CHARS_PER_MESSAGE_MODIFIER_KEY = "maxCharsPerMessage";
|
|
4
|
+
function isRecord(value) {
|
|
5
|
+
return typeof value === "object" && value !== null;
|
|
6
|
+
}
|
|
7
|
+
function getMaxCharsPerMessage(limit) {
|
|
8
|
+
const maxCharsPerMessage = limit ?? state.config?.redteam?.maxCharsPerMessage;
|
|
9
|
+
if (typeof maxCharsPerMessage !== "number" || !Number.isInteger(maxCharsPerMessage) || maxCharsPerMessage <= 0) return;
|
|
10
|
+
return maxCharsPerMessage;
|
|
11
|
+
}
|
|
12
|
+
function parseChatMessages(prompt) {
|
|
13
|
+
try {
|
|
14
|
+
const parsed = JSON.parse(prompt);
|
|
15
|
+
if (Array.isArray(parsed) && parsed.every((item) => isRecord(item) && typeof item.role === "string" && typeof item.content === "string")) return parsed.map((message, index) => ({
|
|
16
|
+
content: message.content,
|
|
17
|
+
path: `[${index}].content`,
|
|
18
|
+
role: message.role
|
|
19
|
+
}));
|
|
20
|
+
if (isRecord(parsed) && parsed._promptfoo_audio_hybrid === true && (parsed.history === void 0 || Array.isArray(parsed.history)) && isRecord(parsed.currentTurn) && typeof parsed.currentTurn.role === "string" && typeof parsed.currentTurn.transcript === "string" && (parsed.history === void 0 || parsed.history.every((item) => isRecord(item) && typeof item.role === "string" && typeof item.content === "string"))) return [...(parsed.history ?? []).map((message, index) => ({
|
|
21
|
+
content: message.content,
|
|
22
|
+
path: `history[${index}].content`,
|
|
23
|
+
role: message.role
|
|
24
|
+
})), {
|
|
25
|
+
content: parsed.currentTurn.transcript,
|
|
26
|
+
path: "currentTurn.transcript",
|
|
27
|
+
role: parsed.currentTurn.role
|
|
28
|
+
}];
|
|
29
|
+
} catch {}
|
|
30
|
+
}
|
|
31
|
+
function getPromptLengthViolation(prompt, limit) {
|
|
32
|
+
const maxCharsPerMessage = getMaxCharsPerMessage(limit);
|
|
33
|
+
if (!maxCharsPerMessage) return;
|
|
34
|
+
const messages = parseChatMessages(prompt);
|
|
35
|
+
if (messages) {
|
|
36
|
+
const oversizedMessage = messages.find((message) => message.role === "user" && message.content.length > maxCharsPerMessage);
|
|
37
|
+
return oversizedMessage ? {
|
|
38
|
+
length: oversizedMessage.content.length,
|
|
39
|
+
limit: maxCharsPerMessage,
|
|
40
|
+
path: oversizedMessage.path
|
|
41
|
+
} : void 0;
|
|
42
|
+
}
|
|
43
|
+
if (prompt.length <= maxCharsPerMessage) return;
|
|
44
|
+
return {
|
|
45
|
+
length: prompt.length,
|
|
46
|
+
limit: maxCharsPerMessage,
|
|
47
|
+
path: "prompt"
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function getMaxCharsPerMessageModifierValue(limit) {
|
|
51
|
+
const maxCharsPerMessage = getMaxCharsPerMessage(limit);
|
|
52
|
+
if (!maxCharsPerMessage) return;
|
|
53
|
+
return `Each generated user message must be ${maxCharsPerMessage} characters or fewer.`;
|
|
54
|
+
}
|
|
55
|
+
function getGeneratedPromptOverLimit(prompt, limit) {
|
|
56
|
+
const violation = getPromptLengthViolation(prompt, limit);
|
|
57
|
+
if (!violation) return;
|
|
58
|
+
return {
|
|
59
|
+
length: violation.length,
|
|
60
|
+
limit: violation.limit
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function throwIfTargetPromptExceedsMaxChars(prompt, limit) {
|
|
64
|
+
const violation = getPromptLengthViolation(prompt, limit);
|
|
65
|
+
if (!violation) return;
|
|
66
|
+
throw new Error(`Target prompt message at ${violation.path} exceeds maxCharsPerMessage=${violation.limit}: ${violation.length} characters.`);
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
export { throwIfTargetPromptExceedsMaxChars as i, getGeneratedPromptOverLimit as n, getMaxCharsPerMessageModifierValue as r, MAX_CHARS_PER_MESSAGE_MODIFIER_KEY as t };
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=promptLength-B9nZEfO6.js.map
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
const require_logger = require("./logger-cfNpzI4o.cjs");
|
|
2
|
+
//#region src/redteam/shared/promptLength.ts
|
|
3
|
+
const MAX_CHARS_PER_MESSAGE_MODIFIER_KEY = "maxCharsPerMessage";
|
|
4
|
+
function isRecord(value) {
|
|
5
|
+
return typeof value === "object" && value !== null;
|
|
6
|
+
}
|
|
7
|
+
function getMaxCharsPerMessage(limit) {
|
|
8
|
+
const maxCharsPerMessage = limit ?? require_logger.state.config?.redteam?.maxCharsPerMessage;
|
|
9
|
+
if (typeof maxCharsPerMessage !== "number" || !Number.isInteger(maxCharsPerMessage) || maxCharsPerMessage <= 0) return;
|
|
10
|
+
return maxCharsPerMessage;
|
|
11
|
+
}
|
|
12
|
+
function parseChatMessages(prompt) {
|
|
13
|
+
try {
|
|
14
|
+
const parsed = JSON.parse(prompt);
|
|
15
|
+
if (Array.isArray(parsed) && parsed.every((item) => isRecord(item) && typeof item.role === "string" && typeof item.content === "string")) return parsed.map((message, index) => ({
|
|
16
|
+
content: message.content,
|
|
17
|
+
path: `[${index}].content`,
|
|
18
|
+
role: message.role
|
|
19
|
+
}));
|
|
20
|
+
if (isRecord(parsed) && parsed._promptfoo_audio_hybrid === true && (parsed.history === void 0 || Array.isArray(parsed.history)) && isRecord(parsed.currentTurn) && typeof parsed.currentTurn.role === "string" && typeof parsed.currentTurn.transcript === "string" && (parsed.history === void 0 || parsed.history.every((item) => isRecord(item) && typeof item.role === "string" && typeof item.content === "string"))) return [...(parsed.history ?? []).map((message, index) => ({
|
|
21
|
+
content: message.content,
|
|
22
|
+
path: `history[${index}].content`,
|
|
23
|
+
role: message.role
|
|
24
|
+
})), {
|
|
25
|
+
content: parsed.currentTurn.transcript,
|
|
26
|
+
path: "currentTurn.transcript",
|
|
27
|
+
role: parsed.currentTurn.role
|
|
28
|
+
}];
|
|
29
|
+
} catch {}
|
|
30
|
+
}
|
|
31
|
+
function getPromptLengthViolation(prompt, limit) {
|
|
32
|
+
const maxCharsPerMessage = getMaxCharsPerMessage(limit);
|
|
33
|
+
if (!maxCharsPerMessage) return;
|
|
34
|
+
const messages = parseChatMessages(prompt);
|
|
35
|
+
if (messages) {
|
|
36
|
+
const oversizedMessage = messages.find((message) => message.role === "user" && message.content.length > maxCharsPerMessage);
|
|
37
|
+
return oversizedMessage ? {
|
|
38
|
+
length: oversizedMessage.content.length,
|
|
39
|
+
limit: maxCharsPerMessage,
|
|
40
|
+
path: oversizedMessage.path
|
|
41
|
+
} : void 0;
|
|
42
|
+
}
|
|
43
|
+
if (prompt.length <= maxCharsPerMessage) return;
|
|
44
|
+
return {
|
|
45
|
+
length: prompt.length,
|
|
46
|
+
limit: maxCharsPerMessage,
|
|
47
|
+
path: "prompt"
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function getMaxCharsPerMessageModifierValue(limit) {
|
|
51
|
+
const maxCharsPerMessage = getMaxCharsPerMessage(limit);
|
|
52
|
+
if (!maxCharsPerMessage) return;
|
|
53
|
+
return `Each generated user message must be ${maxCharsPerMessage} characters or fewer.`;
|
|
54
|
+
}
|
|
55
|
+
function getGeneratedPromptOverLimit(prompt, limit) {
|
|
56
|
+
const violation = getPromptLengthViolation(prompt, limit);
|
|
57
|
+
if (!violation) return;
|
|
58
|
+
return {
|
|
59
|
+
length: violation.length,
|
|
60
|
+
limit: violation.limit
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function throwIfTargetPromptExceedsMaxChars(prompt, limit) {
|
|
64
|
+
const violation = getPromptLengthViolation(prompt, limit);
|
|
65
|
+
if (!violation) return;
|
|
66
|
+
throw new Error(`Target prompt message at ${violation.path} exceeds maxCharsPerMessage=${violation.limit}: ${violation.length} characters.`);
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
Object.defineProperty(exports, "MAX_CHARS_PER_MESSAGE_MODIFIER_KEY", {
|
|
70
|
+
enumerable: true,
|
|
71
|
+
get: function() {
|
|
72
|
+
return MAX_CHARS_PER_MESSAGE_MODIFIER_KEY;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
Object.defineProperty(exports, "getGeneratedPromptOverLimit", {
|
|
76
|
+
enumerable: true,
|
|
77
|
+
get: function() {
|
|
78
|
+
return getGeneratedPromptOverLimit;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
Object.defineProperty(exports, "getMaxCharsPerMessageModifierValue", {
|
|
82
|
+
enumerable: true,
|
|
83
|
+
get: function() {
|
|
84
|
+
return getMaxCharsPerMessageModifierValue;
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
Object.defineProperty(exports, "throwIfTargetPromptExceedsMaxChars", {
|
|
88
|
+
enumerable: true,
|
|
89
|
+
get: function() {
|
|
90
|
+
return throwIfTargetPromptExceedsMaxChars;
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
//# sourceMappingURL=promptLength-BbBbDHNj.cjs.map
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { a as logger } from "./logger-KD8JjCRJ.js";
|
|
2
|
+
import { n as fetchWithRetries, v as REQUEST_TIMEOUT_MS } from "./fetch-BufrQtvR.js";
|
|
3
|
+
import { n as VERSION } from "./version-BK20a4sw.js";
|
|
4
|
+
import { o as getUserEmail } from "./accounts-DanM1wq_.js";
|
|
5
|
+
import { c as neverGenerateRemoteForRegularEvals, i as getRemoteGenerationUrlForUnaligned, r as getRemoteGenerationUrl, s as neverGenerateRemote } from "./remoteGeneration-COpWcmWd.js";
|
|
6
|
+
import dedent from "dedent";
|
|
7
|
+
//#region src/providers/promptfoo.ts
|
|
8
|
+
/**
|
|
9
|
+
* Provider for generating harmful/adversarial content using Promptfoo's unaligned models.
|
|
10
|
+
* Used by red team plugins to generate test cases for harmful content categories.
|
|
11
|
+
*/
|
|
12
|
+
var PromptfooHarmfulCompletionProvider = class {
|
|
13
|
+
harmCategory;
|
|
14
|
+
n;
|
|
15
|
+
purpose;
|
|
16
|
+
config;
|
|
17
|
+
constructor(options) {
|
|
18
|
+
this.harmCategory = options.harmCategory;
|
|
19
|
+
this.n = options.n;
|
|
20
|
+
this.purpose = options.purpose;
|
|
21
|
+
this.config = options.config;
|
|
22
|
+
}
|
|
23
|
+
id() {
|
|
24
|
+
return `promptfoo:redteam:${this.harmCategory}`;
|
|
25
|
+
}
|
|
26
|
+
toString() {
|
|
27
|
+
return `[Promptfoo Harmful Completion Provider ${this.purpose} - ${this.harmCategory}]`;
|
|
28
|
+
}
|
|
29
|
+
async callApi(_prompt, _context, callApiOptions) {
|
|
30
|
+
if (neverGenerateRemote()) return { error: dedent`
|
|
31
|
+
Remote generation is disabled. Harmful content generation requires Promptfoo's unaligned models.
|
|
32
|
+
|
|
33
|
+
To enable:
|
|
34
|
+
- Remove PROMPTFOO_DISABLE_REMOTE_GENERATION (or PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION)
|
|
35
|
+
- Or configure an alternative unaligned model provider
|
|
36
|
+
|
|
37
|
+
Learn more: https://www.promptfoo.dev/docs/red-team/configuration#remote-generation
|
|
38
|
+
` };
|
|
39
|
+
const body = {
|
|
40
|
+
email: getUserEmail(),
|
|
41
|
+
harmCategory: this.harmCategory,
|
|
42
|
+
n: this.n,
|
|
43
|
+
purpose: this.purpose,
|
|
44
|
+
version: VERSION,
|
|
45
|
+
config: this.config
|
|
46
|
+
};
|
|
47
|
+
try {
|
|
48
|
+
logger.debug(`[HarmfulCompletionProvider] Calling generate harmful API (${getRemoteGenerationUrlForUnaligned()}) with body: ${JSON.stringify(body)}`);
|
|
49
|
+
const response = await fetchWithRetries(getRemoteGenerationUrlForUnaligned(), {
|
|
50
|
+
method: "POST",
|
|
51
|
+
headers: { "Content-Type": "application/json" },
|
|
52
|
+
body: JSON.stringify(body),
|
|
53
|
+
...callApiOptions?.abortSignal && { signal: callApiOptions.abortSignal }
|
|
54
|
+
}, 58e4, 2);
|
|
55
|
+
if (!response.ok) throw new Error(`API call failed with status ${response.status}: ${await response.text()}`);
|
|
56
|
+
const data = await response.json();
|
|
57
|
+
return { output: (Array.isArray(data.output) ? data.output : [data.output]).filter((item) => typeof item === "string" && item.length > 0) };
|
|
58
|
+
} catch (err) {
|
|
59
|
+
if (err instanceof Error && err.name === "AbortError") throw err;
|
|
60
|
+
logger.info(`[HarmfulCompletionProvider] ${err}`);
|
|
61
|
+
return { error: `[HarmfulCompletionProvider] ${err}` };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Provider for red team adversarial strategies using Promptfoo's task-specific models.
|
|
67
|
+
* Supports multi-turn attack strategies like crescendo, goat, and iterative attacks.
|
|
68
|
+
*/
|
|
69
|
+
var PromptfooChatCompletionProvider = class {
|
|
70
|
+
options;
|
|
71
|
+
constructor(options) {
|
|
72
|
+
this.options = options;
|
|
73
|
+
}
|
|
74
|
+
id() {
|
|
75
|
+
return this.options.id || "promptfoo:chatcompletion";
|
|
76
|
+
}
|
|
77
|
+
toString() {
|
|
78
|
+
return `[Promptfoo Chat Completion Provider]`;
|
|
79
|
+
}
|
|
80
|
+
async callApi(prompt, context, callApiOptions) {
|
|
81
|
+
if (neverGenerateRemote()) return { error: dedent`
|
|
82
|
+
Remote generation is disabled. This red team strategy requires Promptfoo's task-specific models.
|
|
83
|
+
|
|
84
|
+
To enable:
|
|
85
|
+
- Remove PROMPTFOO_DISABLE_REMOTE_GENERATION (or PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION)
|
|
86
|
+
- Or provide OPENAI_API_KEY for local generation (may have lower quality)
|
|
87
|
+
|
|
88
|
+
Learn more: https://www.promptfoo.dev/docs/red-team/configuration#remote-generation
|
|
89
|
+
` };
|
|
90
|
+
const body = {
|
|
91
|
+
jsonOnly: this.options.jsonOnly,
|
|
92
|
+
preferSmallModel: this.options.preferSmallModel,
|
|
93
|
+
prompt,
|
|
94
|
+
step: context?.prompt.label,
|
|
95
|
+
task: this.options.task,
|
|
96
|
+
email: getUserEmail(),
|
|
97
|
+
...this.options.inputs && { inputs: this.options.inputs }
|
|
98
|
+
};
|
|
99
|
+
try {
|
|
100
|
+
const response = await fetchWithRetries(getRemoteGenerationUrl(), {
|
|
101
|
+
method: "POST",
|
|
102
|
+
headers: { "Content-Type": "application/json" },
|
|
103
|
+
body: JSON.stringify(body),
|
|
104
|
+
...callApiOptions?.abortSignal && { signal: callApiOptions.abortSignal }
|
|
105
|
+
}, REQUEST_TIMEOUT_MS);
|
|
106
|
+
const data = await response.json();
|
|
107
|
+
if (!data.result) {
|
|
108
|
+
logger.debug(`Error from promptfoo completion provider. Status: ${response.status} ${response.statusText} ${JSON.stringify(data)} `);
|
|
109
|
+
return { error: "LLM did not return a result, likely refusal" };
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
output: data.result,
|
|
113
|
+
tokenUsage: data.tokenUsage
|
|
114
|
+
};
|
|
115
|
+
} catch (err) {
|
|
116
|
+
if (err instanceof Error && err.name === "AbortError") throw err;
|
|
117
|
+
return { error: `API call error: ${String(err)}` };
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
const REDTEAM_SIMULATED_USER_TASK_ID = "mischievous-user-redteam";
|
|
122
|
+
/**
|
|
123
|
+
* Provider for simulating realistic user conversations using Promptfoo's conversation models.
|
|
124
|
+
* Supports both regular simulated users and adversarial red team users.
|
|
125
|
+
*/
|
|
126
|
+
var PromptfooSimulatedUserProvider = class {
|
|
127
|
+
options;
|
|
128
|
+
taskId;
|
|
129
|
+
constructor(options = {}, taskId) {
|
|
130
|
+
this.options = options;
|
|
131
|
+
this.taskId = taskId;
|
|
132
|
+
}
|
|
133
|
+
id() {
|
|
134
|
+
return this.options.id || "promptfoo:agent";
|
|
135
|
+
}
|
|
136
|
+
toString() {
|
|
137
|
+
return "[Promptfoo Agent Provider]";
|
|
138
|
+
}
|
|
139
|
+
async callApi(prompt, _context, callApiOptions) {
|
|
140
|
+
const isRedteamTask = this.taskId === REDTEAM_SIMULATED_USER_TASK_ID;
|
|
141
|
+
if (isRedteamTask ? neverGenerateRemote() : neverGenerateRemoteForRegularEvals()) return { error: dedent`
|
|
142
|
+
Remote generation is disabled.
|
|
143
|
+
|
|
144
|
+
SimulatedUser requires Promptfoo's conversation simulation models.
|
|
145
|
+
|
|
146
|
+
To enable, remove ${isRedteamTask ? "PROMPTFOO_DISABLE_REMOTE_GENERATION or PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION" : "PROMPTFOO_DISABLE_REMOTE_GENERATION"}
|
|
147
|
+
|
|
148
|
+
Learn more: ${isRedteamTask ? "https://www.promptfoo.dev/docs/red-team/configuration#remote-generation" : "https://www.promptfoo.dev/docs/providers/simulated-user#remote-generation"}
|
|
149
|
+
` };
|
|
150
|
+
const messages = JSON.parse(prompt);
|
|
151
|
+
const body = {
|
|
152
|
+
task: this.taskId,
|
|
153
|
+
instructions: this.options.instructions,
|
|
154
|
+
history: messages,
|
|
155
|
+
email: getUserEmail(),
|
|
156
|
+
version: VERSION
|
|
157
|
+
};
|
|
158
|
+
try {
|
|
159
|
+
const response = await fetchWithRetries(getRemoteGenerationUrl(), {
|
|
160
|
+
method: "POST",
|
|
161
|
+
headers: { "Content-Type": "application/json" },
|
|
162
|
+
body: JSON.stringify(body),
|
|
163
|
+
...callApiOptions?.abortSignal && { signal: callApiOptions.abortSignal }
|
|
164
|
+
}, REQUEST_TIMEOUT_MS);
|
|
165
|
+
if (!response.ok) throw new Error(`API call failed with status ${response.status}: ${await response.text()}`);
|
|
166
|
+
const data = await response.json();
|
|
167
|
+
return {
|
|
168
|
+
output: data.result,
|
|
169
|
+
tokenUsage: data.tokenUsage
|
|
170
|
+
};
|
|
171
|
+
} catch (err) {
|
|
172
|
+
if (err instanceof Error && err.name === "AbortError") throw err;
|
|
173
|
+
return { error: `API call error: ${String(err)}` };
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
//#endregion
|
|
178
|
+
export { REDTEAM_SIMULATED_USER_TASK_ID as i, PromptfooHarmfulCompletionProvider as n, PromptfooSimulatedUserProvider as r, PromptfooChatCompletionProvider as t };
|
|
179
|
+
|
|
180
|
+
//# sourceMappingURL=promptfoo-BDrfT30-.js.map
|