promptfoo 0.121.5 → 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-BRUsT43Y.js → ListApp-DLmM02JS.js} +1 -1
- package/dist/src/{accounts-CaLNYnf7.js → accounts-Ca7WIoPY.js} +12 -7
- package/dist/src/{accounts-CLJHCDDb.js → accounts-CjFnOPmb.js} +13 -8
- package/dist/src/{accounts-BIFntVWB.cjs → accounts-CmWzeD2d.cjs} +16 -10
- package/dist/src/{accounts-bnyHT7Ju.js → accounts-DanM1wq_.js} +12 -7
- package/dist/src/{agentic-utils-BclbiXiq.js → agentic-utils-CJ0j3fBi.js} +2 -2
- package/dist/src/{agentic-utils-B5krlibj.js → agentic-utils-DDEGRV9v.js} +2 -2
- package/dist/src/{agentic-utils-D2x0wGhB.cjs → agentic-utils-DvPWSUpb.cjs} +8 -7
- package/dist/src/{agentic-utils-Ba67xmgs.js → agentic-utils-TxUEMPYS.js} +2 -2
- package/dist/src/{agents-WULPVjbH.cjs → agents-B4sRuXg3.cjs} +7 -6
- package/dist/src/{agents-DhxWMCtH.js → agents-B8q7h_ek.js} +4 -4
- package/dist/src/{agents-BGqaTDnr.js → agents-CBgJvRkB.js} +20 -9
- package/dist/src/{agents-n6vPqV3i.js → agents-CYn2n3QP.js} +4 -4
- package/dist/src/{agents-BV9yFpXX.js → agents-D-vDNFx4.js} +20 -9
- package/dist/src/{agents-BYdMl1UE.js → agents-LrHuQqr1.js} +20 -9
- package/dist/src/{agents-emVcx3yh.js → agents-QGg76OF-.js} +2 -2
- package/dist/src/{agents-DiWmQYH9.cjs → agents-eHZ9nlgA.cjs} +21 -10
- package/dist/src/{aimlapi-uPGp0Zdo.js → aimlapi-CJEbQ0o6.js} +6 -6
- package/dist/src/{aimlapi-DR4pgeiC.js → aimlapi-D5HXzZ0s.js} +6 -6
- package/dist/src/{aimlapi-BzLjZI_m.cjs → aimlapi-T6HGNxNe.cjs} +7 -7
- package/dist/src/{aimlapi-BxqK9HF_.js → aimlapi-eYv3a_DK.js} +6 -6
- 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 +6 -6
- package/dist/src/{audio-Da8U9IS5.js → audio-BqnRvcWG.js} +3 -3
- package/dist/src/{audio-BvpTOArF.js → audio-CPMtV1yR.js} +3 -3
- package/dist/src/{audio-CScmnmEB.js → audio-DyiebVB3.js} +3 -3
- package/dist/src/{audio-C0vDeS0j.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-BTux96b1.js → base-CKLo890h.js} +4 -3
- package/dist/src/{base-BOMaNEes.js → base-Co80MMCi.js} +4 -3
- package/dist/src/{base-Tw6uhH8K.cjs → base-DGJW48uz.cjs} +5 -4
- package/dist/src/{base-dYsl2hmL.js → base-E9I8zXjz.js} +4 -3
- 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-B95F_7vE.cjs → blobs-B0977K1O.cjs} +7 -6
- package/dist/src/{blobs-D_gg8nbm.js → blobs-CeFdPn_T.js} +2 -2
- package/dist/src/{blobs-DjLby-uP.js → blobs-DODuTK-a.js} +2 -2
- package/dist/src/{blobs-BW4U31ue.js → blobs-Dwef1Ao1.js} +2 -2
- package/dist/src/{cache-DGg-yTZG.cjs → cache-CPGUA4Yl.cjs} +135 -25
- package/dist/src/cache-Cf7b4pWE.js +3 -0
- package/dist/src/{cache-Bzttsk0X.js → cache-DIXbtkNO.js} +125 -10
- package/dist/src/{cache-BI5BY7ey.js → cache-DpPWrkTE.js} +127 -11
- package/dist/src/{cache-Cr-qWIbP.js → cache-roFAE0cI.js} +125 -10
- package/dist/src/{chat-DChSH_Es.js → chat-CUCorGiL.js} +9 -9
- package/dist/src/{chat-DH97tVV9.cjs → chat-DG1wG4w0.cjs} +6 -6
- package/dist/src/{chat-Cx_LkwvZ.js → chat-Dabu84Br.js} +11 -11
- package/dist/src/{chat-BLOdH60v.js → chat-DqUFcWI0.js} +11 -11
- package/dist/src/{chat-vYqqv1gP.cjs → chat-DxTDQ83C.cjs} +14 -13
- package/dist/src/{chat-DG2LkwLq.js → chat-GmlolEwo.js} +4 -4
- package/dist/src/{chat-aMQZw6R7.js → chat-TP8Qifkh.js} +4 -4
- package/dist/src/{chat-D9nudO9b.js → chat-iwaM5UTQ.js} +4 -4
- package/dist/src/{chatkit-B8X34dQc.js → chatkit-B6DWi70Q.js} +3 -3
- package/dist/src/{chatkit-D44VyUyB.cjs → chatkit-BYveR48_.cjs} +6 -5
- package/dist/src/{chatkit-BXu42Qwt.js → chatkit-fARZwEfV.js} +3 -3
- package/dist/src/{chatkit-CbMRoeYw.js → chatkit-lb6FK02w.js} +1 -1
- package/dist/src/{claude-agent-sdk-BzNZeZ0N.js → claude-agent-sdk-BQNp_y-F.js} +209 -64
- package/dist/src/{claude-agent-sdk-BjriSVRZ.js → claude-agent-sdk-D5Jl0SDh.js} +210 -65
- package/dist/src/{claude-agent-sdk-BRq0bbIK.cjs → claude-agent-sdk-DH416NBD.cjs} +216 -70
- package/dist/src/{claude-agent-sdk-DYv_AJ8u.js → claude-agent-sdk-x1XJ1-pU.js} +210 -65
- package/dist/src/{cloud-Da0bofJd.js → cloud-D3DiFqH6.js} +2 -2
- package/dist/src/cloud-p96PA4MH.js +3 -0
- package/dist/src/{cloudflare-ai-CXC4b1EU.js → cloudflare-ai-B6NVI3ax.js} +4 -4
- package/dist/src/{cloudflare-ai-DJv5qnyb.cjs → cloudflare-ai-CEAW-xQa.cjs} +6 -6
- package/dist/src/{cloudflare-ai-CyBoIs1Q.js → cloudflare-ai-RFSojyXG.js} +4 -4
- package/dist/src/{cloudflare-ai-DGOwgexC.js → cloudflare-ai-r4tbYmWU.js} +4 -4
- package/dist/src/{cloudflare-gateway-D-dnkzCF.js → cloudflare-gateway-BCkLouto.js} +3 -3
- package/dist/src/{cloudflare-gateway-TJkVrZlB.js → cloudflare-gateway-BaZ4insB.js} +3 -3
- package/dist/src/{cloudflare-gateway-1sAoOyft.js → cloudflare-gateway-CF-Vb-2Z.js} +3 -3
- package/dist/src/{cloudflare-gateway-DKVjkDav.cjs → cloudflare-gateway-TJMLBj6I.cjs} +5 -5
- package/dist/src/{codex-app-server-CCe0TiDc.js → codex-app-server-B8KHEiF4.js} +5 -5
- package/dist/src/{codex-app-server-VMRnjZ68.cjs → codex-app-server-CnrLBCeA.cjs} +12 -11
- package/dist/src/{codex-app-server-CCLjqCh9.js → codex-app-server-DIXZ230V.js} +4 -4
- package/dist/src/{codex-app-server-CPW1LFwh.js → codex-app-server-Dd22dC_N.js} +5 -5
- package/dist/src/{codex-sdk-BgEFQ70r.js → codex-sdk-B6Wah8Pa.js} +5 -5
- package/dist/src/codex-sdk-BGjVAk23.js +3 -0
- package/dist/src/{codex-sdk-Bd8UbO9q.cjs → codex-sdk-CFF6gUyi.cjs} +18 -10
- package/dist/src/{codex-sdk-Bzb_TqX9.js → codex-sdk-CmQABzV3.js} +3 -3
- package/dist/src/{codex-sdk-DfvDTN33.js → codex-sdk-D2d54RL8.js} +5 -5
- package/dist/src/{cometapi-B5ImDlSm.js → cometapi-Bu9B8NUY.js} +7 -7
- package/dist/src/{cometapi-CCbpHkuF.js → cometapi-CtzNCHKu.js} +7 -7
- package/dist/src/{cometapi-BgAkuYCw.cjs → cometapi-DHCDlQUI.cjs} +8 -8
- package/dist/src/{cometapi-CC7hWxmX.js → cometapi-OBILPLlu.js} +7 -7
- package/dist/src/{completion-Vq_ad618.js → completion-CO2e1_62.js} +4 -4
- package/dist/src/{completion-DtQ72Bm3.cjs → completion-CSYfl2cd.cjs} +6 -6
- package/dist/src/{completion-2iuYVxwi.js → completion-DZNxcyfG.js} +5 -5
- package/dist/src/{completion-CrD6MQ93.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-Un4Q_huE.js → createHash-CGVzWdjj.js} +1 -1
- package/dist/src/{createHash-VvBIc-AW.cjs → createHash-CSiqnK5P.cjs} +2 -2
- package/dist/src/{createHash-DPpsZgFF.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--3qzPa-6.js → docker-4D1eL6Gq.js} +5 -5
- package/dist/src/{docker-Dorv4_Dg.js → docker-BBv1WUDu.js} +5 -5
- package/dist/src/{docker-D3AY-5F5.cjs → docker-D06JUoe2.cjs} +6 -6
- package/dist/src/{docker-DCsCDvwM.js → docker-DdJQBxK9.js} +5 -5
- package/dist/src/{embedding-DNRvZwRN.js → embedding--UZVe4_7.js} +5 -5
- package/dist/src/{embedding-BXhN5lCH.cjs → embedding-BbrwopfX.cjs} +6 -6
- package/dist/src/{embedding-ChS1ivFS.js → embedding-Bi3rxrZF.js} +5 -5
- package/dist/src/{embedding-D_bI4NDq.js → embedding-C251p1-8.js} +4 -4
- package/dist/src/{errors-DFHe4L-n.js → errors-9PcUL8BC.js} +1 -1
- package/dist/src/{esm-B_rGuPTo.cjs → esm-BIKakvNa.cjs} +8 -7
- package/dist/src/{esm-BRkfNsYs.js → esm-BTK1W7lG.js} +1 -1
- package/dist/src/{esm-BX8fwlAO.js → esm-Bexx2PFc.js} +1 -1
- package/dist/src/{eval-DJ_4A-tr.js → eval-0VRANImH.js} +19 -19
- package/dist/src/{eval-BQPLBJbw.js → eval-DscR5iOM.js} +1 -1
- package/dist/src/{evalResult-pSvGWFMo.js → evalResult-2RRJvFyB.js} +18 -11
- package/dist/src/{evalResult-Cx-8OWkb.cjs → evalResult-CvtS8h8u.cjs} +29 -11
- package/dist/src/evalResult-DqzsS6_W.js +3 -0
- package/dist/src/{evalResult-D6P5I5il.js → evalResult-eUkJv9Ko.js} +17 -10
- package/dist/src/evaluator-DNdJF1Gv.js +3 -0
- package/dist/src/{evaluator-D-UIbbYq.js → evaluator-DRoiYB2q.js} +258 -132
- 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-YlZbUMsL.js → extractor-BR7XAzAL.js} +5 -5
- package/dist/src/{extractor-Dxr2J_wK.cjs → extractor-BdxEtt3J.cjs} +6 -6
- package/dist/src/{extractor-DxyiFhPk.js → extractor-CIW3iN-b.js} +5 -5
- package/dist/src/{extractor-BM3jRERL.js → extractor-CxRtnaHl.js} +5 -5
- package/dist/src/{fetch-Y5qX_kST.js → fetch-BufrQtvR.js} +90 -26
- package/dist/src/{fetch-B6ch2nU2.js → fetch-DXUnXkVU.js} +86 -26
- package/dist/src/{fetch-NuqXW1Xb.cjs → fetch-Dw4XZHjj.cjs} +115 -32
- package/dist/src/{fetch-D9xxyC1p.js → fetch-It34O8Ur.js} +90 -26
- package/dist/src/fetch-_YgGd2qv.js +3 -0
- package/dist/src/{fileExtensions-D9h-8Wxg.cjs → fileExtensions-BhdwzYaD.cjs} +24 -1
- package/dist/src/{fileExtensions-BGh-W-HT.js → fileExtensions-CXRfY3Ss.js} +12 -2
- package/dist/src/{fileExtensions-DysCsxNG.js → fileExtensions-D4GCJ67J.js} +12 -2
- package/dist/src/{formatDuration-Ch4A7G3o.js → formatDuration-CMVNrYvE.js} +1 -1
- package/dist/src/{genaiTracer-BokHC-MW.cjs → genaiTracer-14nugQQx.cjs} +14 -2
- package/dist/src/{genaiTracer-C3ZPQU60.js → genaiTracer-BPVvltoW.js} +2 -2
- package/dist/src/{genaiTracer-DxODqT9e.js → genaiTracer-D18lYzhB.js} +2 -2
- package/dist/src/{genaiTracer-CFny3gOy.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-CgPn32yp.js → graders-BGP99PdK.js} +1017 -84
- package/dist/src/{graders-BoUqsCEm.js → graders-BX0f2tvS.js} +1022 -84
- package/dist/src/{graders-CwrbifOo.js → graders-C0nXU_ZP.js} +1020 -82
- package/dist/src/{graders-Bw1wk_21.cjs → graders-ClrU2fnd.cjs} +1085 -128
- 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-Dr_3I3nK.js → image-BN-hjLL9.js} +3 -3
- package/dist/src/{image-BeWaInPF.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-D10dNAav.cjs → image-DfVCGPbI.cjs} +4 -4
- package/dist/src/{image-qjO6FWPs.js → image-QzmydkiG.js} +3 -3
- package/dist/src/image-X0oY4350.cjs +465 -0
- package/dist/src/index.cjs +688 -313
- package/dist/src/index.d.cts +3152 -1617
- package/dist/src/index.d.ts +3151 -1616
- package/dist/src/index.js +582 -223
- 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-CCICw2cy.js → interactiveCheck-C4QlIuoR.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-Dr3Kib7F.js → knowledgeBase-BadkINlJ.js} +24 -10
- package/dist/src/{knowledgeBase-BBETc5-S.js → knowledgeBase-Bi_8sV-H.js} +23 -9
- package/dist/src/{knowledgeBase-CzAi2rUI.js → knowledgeBase-CkMljjdg.js} +24 -10
- package/dist/src/{knowledgeBase-C8qOo26M.cjs → knowledgeBase-DUh34xba.cjs} +25 -11
- package/dist/src/{litellm-DRc4qWfc.js → litellm-BKBo0jpC.js} +4 -4
- package/dist/src/{litellm-BLSiANhk.js → litellm-BXyn5kZK.js} +4 -4
- package/dist/src/{litellm-DQGo_juI.js → litellm-CNcfbCfa.js} +4 -4
- package/dist/src/{litellm-CaUmV7Mk.cjs → litellm-CtAr7bKG.cjs} +5 -5
- package/dist/src/{logger-COuQb2xB.cjs → logger-cfNpzI4o.cjs} +13 -55
- package/dist/src/{luma-ray-B-tNZzqW.js → luma-ray-BMX1iEB6.js} +5 -5
- package/dist/src/{luma-ray-CtS3OlGq.js → luma-ray-CR5TSpp4.js} +5 -5
- package/dist/src/{luma-ray-if-Ml4R9.cjs → luma-ray-D3FUc2K3.cjs} +9 -8
- package/dist/src/{luma-ray-PJJgUjOc.js → luma-ray-OEMmS1RB.js} +5 -5
- package/dist/src/main.js +704 -208
- 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-CewuNcNS.js → messages-BabO-cX8.js} +17 -9
- package/dist/src/{messages-BnsVHUnm.cjs → messages-DBPir0TQ.cjs} +24 -15
- package/dist/src/{messages-B9dSjrNf.js → messages-DGUlSNU7.js} +18 -10
- package/dist/src/{messages-CI69Lasb.js → messages-vsE_-Lv0.js} +18 -10
- package/dist/src/{meteor-CeGo0Lu2.js → meteor--TZYICTI.js} +1 -1
- package/dist/src/{meteor-BBGcGeCa.cjs → meteor-CR226f7Z.cjs} +2 -2
- package/dist/src/{meteor-Wc_aUVvu.js → meteor-Cl_yd7rJ.js} +1 -1
- package/dist/src/{meteor-BKTM-7KS.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-BkapYJhh.cjs → modelslab-CNV5bMSk.cjs} +7 -7
- package/dist/src/{modelslab-zpz9JcK0.js → modelslab-Cogmu4mG.js} +6 -6
- package/dist/src/{modelslab-D73OnKSx.js → modelslab-Dzst7VTU.js} +6 -6
- package/dist/src/{modelslab-BCLOtfek.js → modelslab-EyDczZ5A.js} +6 -6
- package/dist/src/{nova-reel-B8F_TK5w.js → nova-reel-BGPNBOMS.js} +5 -5
- package/dist/src/{nova-reel-Bx0NFV2f.js → nova-reel-B_5NKFu1.js} +5 -5
- package/dist/src/{nova-reel-CNGJTLtG.js → nova-reel-C4eUJGse.js} +5 -5
- package/dist/src/{nova-reel-DkT7tnoB.cjs → nova-reel-CjJRxI1X.cjs} +9 -8
- package/dist/src/{nova-sonic-BaXRN1cr.js → nova-sonic-BNGmgfFz.js} +3 -3
- package/dist/src/{nova-sonic-BeTRaFOh.js → nova-sonic-ChPlh5na.js} +2 -2
- package/dist/src/{nova-sonic-CL7Zqv0G.js → nova-sonic-CrV0iaY_.js} +3 -3
- package/dist/src/{nova-sonic-YT426juD.cjs → nova-sonic-DuOG9Aun.cjs} +5 -4
- package/dist/src/{openai-Cy1XLs0c.cjs → openai-C3uXv8wS.cjs} +2 -2
- package/dist/src/{openai-BT-JvDse.js → openai-CJrsh9n4.js} +1 -1
- package/dist/src/{openai-D4fxGvRx.js → openai-zgwBb4Ff.js} +1 -1
- package/dist/src/{openclaw-Bq7RVR3k.js → openclaw-BIHlu_36.js} +9 -8
- package/dist/src/{openclaw-DObVgpjC.js → openclaw-CF7fMido.js} +9 -8
- package/dist/src/{openclaw-DUBZP3GL.cjs → openclaw-Dphc01BY.cjs} +17 -15
- package/dist/src/{openclaw-DA8U4DsD.js → openclaw-zIJAsz3P.js} +9 -8
- package/dist/src/{opencode-sdk-BB40Wir1.js → opencode-sdk-B3vlPLsp.js} +38 -3
- package/dist/src/{opencode-sdk-ChdK7F7z.js → opencode-sdk-D05JSgMQ.js} +39 -4
- package/dist/src/{opencode-sdk-CeqiOcOU.cjs → opencode-sdk-DoY6GbWw.cjs} +45 -9
- package/dist/src/{opencode-sdk-BM1UAIv1.js → opencode-sdk-sRKYHGoI.js} +39 -4
- package/dist/src/{otlpReceiver-UYMQx3sy.js → otlpReceiver--gTpSagc.js} +119 -3
- package/dist/src/{otlpReceiver-C6thJRXi.js → otlpReceiver-B2eaKC8C.js} +118 -2
- package/dist/src/{otlpReceiver-CcdIikOu.js → otlpReceiver-BXjcRqAM.js} +119 -3
- package/dist/src/{otlpReceiver-DNSQj6bf.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-BESeALrr.cjs → providerRegistry-CZO_w7ue.cjs} +2 -2
- package/dist/src/{providerRegistry-DoACwqhD.js → providerRegistry-DHcFiVWX.js} +1 -1
- package/dist/src/{providerRegistry-PMsleEzs.js → providerRegistry-ReCd0sFa.js} +1 -1
- package/dist/src/{providers-DT-GtF2t.js → providers-B9KzWxAX.js} +739 -11919
- package/dist/src/{providers-DRrerKra.js → providers-BCCz6_IX.js} +813 -11944
- package/dist/src/{providers-eDShy16E.cjs → providers-BDVVIQM6.cjs} +787 -12132
- package/dist/src/{providers-Ctcc592x.js → providers-BYAn82cf.js} +1 -1
- package/dist/src/{providers-CJh7iriU.js → providers-DVYRZP4E.js} +746 -11866
- package/dist/src/{pythonUtils-C4tltmIn.js → pythonUtils-CLCgQ9tt.js} +1 -1
- package/dist/src/{pythonUtils-DNqbnRdx.js → pythonUtils-CgYxeSmO.js} +2 -2
- package/dist/src/{pythonUtils-CoLaCwNY.cjs → pythonUtils-Cokhluq3.cjs} +7 -6
- package/dist/src/{pythonUtils-DMO68Jg7.js → pythonUtils-D0BYebvX.js} +2 -2
- package/dist/src/{quiverai-Bpx6MZ7T.cjs → quiverai-BAp6iTZD.cjs} +4 -4
- package/dist/src/{quiverai-CPKhWgaT.js → quiverai-BvIhI_0l.js} +3 -3
- package/dist/src/{quiverai-BSS9a7wV.js → quiverai-CdTWPe-A.js} +3 -3
- package/dist/src/{quiverai-Bk1KrvL6.js → quiverai-Cv7rJKDz.js} +3 -3
- 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-ByxbqAcQ.js → remoteGeneration-B1_XsKXU.js} +16 -147
- package/dist/src/{server-gyd6d4Hc.js → remoteGeneration-COpWcmWd.js} +15 -108
- package/dist/src/{server-BEECpeGG.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-nj-UaPdn.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-CF-ayauu.cjs → responses-1UFFF9N_.cjs} +12 -11
- package/dist/src/{responses-B8haB-mD.js → responses-B3W2JvOQ.js} +9 -9
- package/dist/src/{responses-1ztiVYsx.js → responses-B6ktc3Ra.js} +7 -7
- package/dist/src/{responses-BiaBguAu.js → responses-URRzV8qE.js} +9 -9
- package/dist/src/rolldown-runtime-D_mwlA32.cjs +43 -0
- package/dist/src/rubyUtils-BYVlQ94c.js +3 -0
- package/dist/src/{rubyUtils-CIQFnVz4.js → rubyUtils-CXlFM2rR.js} +2 -2
- package/dist/src/{rubyUtils-BI0p46eZ.js → rubyUtils-CnlW8AYb.js} +2 -2
- package/dist/src/{rubyUtils-DoifqkiA.cjs → rubyUtils-CqUWBZAt.cjs} +16 -26
- package/dist/src/{rubyUtils-DGnoCYL2.js → rubyUtils-DdGojpfv.js} +1 -1
- 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-ClS_NB07.js → sagemaker-CujrzP1a.js} +61 -50
- package/dist/src/{sagemaker-ljtY12VM.cjs → sagemaker-DzffAqo_.cjs} +65 -53
- package/dist/src/{sagemaker-C5T60MKf.js → sagemaker-vhtSV7JI.js} +61 -50
- package/dist/src/{sagemaker-BDLeW29y.js → sagemaker-yr1QKeBs.js} +61 -50
- package/dist/src/{scanner-nOCWNIXa.js → scanner-DS0109SS.js} +6 -6
- package/dist/src/server/index.js +4147 -449
- 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-8CjoL7vB.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-DTtUuU3l.js → signal-CSurUUyV.js} +2 -2
- 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-Bamy_7te.js → slack-Bapo-7_8.js} +1 -1
- package/dist/src/{slack-BLlsDpfG.cjs → slack-DMC1QVEg.cjs} +3 -2
- package/dist/src/{slack-BPYLQLgb.js → slack-DTEFhrMn.js} +1 -1
- package/dist/src/{slack-4zZX1OKP.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-2K0kDi80.cjs → store-B2NDDooM.cjs} +60 -24
- package/dist/src/{store-CPh25336.js → store-DKd5592Q.js} +50 -19
- package/dist/src/{store-BPkzEyFM.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-WgdUZ8Ck.js → tables-CRSXQ2Ke.js} +2 -2
- package/dist/src/{tables-BMSOS2Gg.js → tables-CxjU7bBd.js} +2 -2
- package/dist/src/{tables-CXbaZ9y1.cjs → tables-DBIJU0WE.cjs} +6 -5
- package/dist/src/{tables-NlvH23ky.js → tables-DafUHOeh.js} +2 -2
- package/dist/src/{telemetry-DWdGHvEf.js → telemetry-00ezXr_t.js} +4 -4
- package/dist/src/telemetry-ByPqDcKC.js +3 -0
- package/dist/src/{telemetry-CEQxGnMZ.cjs → telemetry-CJ7FnCsc.cjs} +15 -9
- package/dist/src/{telemetry--iqaGyaS.js → telemetry-DmXYcJNV.js} +4 -4
- package/dist/src/{telemetry-CgdVGV8N.js → telemetry-DwX9XUN5.js} +4 -4
- package/dist/src/{text-DDQP0tuQ.js → text-CZr46tp_.js} +1 -1
- package/dist/src/{text-D4lz-Jg_.js → text-Db-Wt2u2.js} +1 -1
- package/dist/src/{text-NWvfMfkF.js → text-DwYK5EBn.js} +1 -1
- package/dist/src/{text-BiNME7QG.cjs → text-nywWsRBM.cjs} +1 -1
- package/dist/src/{tokenUsageUtils-2wIvAhB3.js → tokenUsageUtils-CDet74yk.js} +1 -1
- package/dist/src/{tokenUsageUtils-4c780gFd.js → tokenUsageUtils-CmnQ0G2m.js} +1 -1
- package/dist/src/{tokenUsageUtils-C9odhsbW.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-84t4ALo2.js → transcription-B8uIgCYX.js} +5 -5
- package/dist/src/{transcription-Bm2emLmJ.js → transcription-CfU5loSq.js} +5 -5
- package/dist/src/{transcription-D7Q0vJsh.js → transcription-Dkd22_4K.js} +4 -4
- package/dist/src/{transcription-CZ4LG5hQ.cjs → transcription-mzuf18Mq.cjs} +9 -8
- package/dist/src/{transform-DtooZqYY.js → transform-BIMynQsA.js} +8 -8
- 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-Dg4LcO1Y.cjs → transform-DhNkAUs8.cjs} +12 -11
- package/dist/src/{transform-_DpNB4qp.js → transform-DmvYBRll.js} +8 -8
- package/dist/src/{transform-B-b6Cq-q.js → transform-EtD4jAWi.js} +8 -8
- package/dist/src/{transformersAvailability-lvCCvuPT.js → transformersAvailability-0ThtPved.js} +1 -1
- package/dist/src/transformersAvailability-BYydDE5U.js +35 -0
- package/dist/src/{transformersAvailability-rJGPccjr.js → transformersAvailability-BvyU9vDD.js} +1 -1
- package/dist/src/{transformersAvailability-B22swDxr.cjs → transformersAvailability-BytPvKUW.cjs} +1 -1
- package/dist/src/{types-BVH9hjgW.js → types-BFevViUY.js} +113 -19
- package/dist/src/{types-BDjGOq4E.js → types-BJQBBPTP.js} +113 -19
- package/dist/src/{types-CgG2rKiW.cjs → types-CxJvaY2S.cjs} +211 -28
- package/dist/src/{types-DNRZVOue.js → types-D6glLbdF.js} +125 -26
- package/dist/src/{util-DFPeFkiV.js → util--WMgw7wM.js} +28 -8
- package/dist/src/{util-C-kmRosx.js → util-5WnCSb0h.js} +9 -7
- package/dist/src/{util-A5_ZsQUn.cjs → util-BSIuSLVK.cjs} +12 -9
- package/dist/src/{util-Dub0f_ej.js → util-Bx677_k2.js} +17 -10
- package/dist/src/util-CN8om2rz.cjs +386 -0
- package/dist/src/{util-DN0-b81k.js → util-CoQWM76y.js} +28 -8
- package/dist/src/util-DNl96nNs.js +327 -0
- package/dist/src/{util-BQOCAHQC.js → util-DURocbYR.js} +46 -11
- package/dist/src/util-Df8YMvS1.js +327 -0
- package/dist/src/{util-BVXcTwXu.js → util-DiQ3QvBB.js} +28 -8
- package/dist/src/{util-3pBZZb_H.js → util-I-Rf-KaD.js} +45 -10
- package/dist/src/{util-Dpmm_dAI.cjs → util-IYzs5Y04.cjs} +33 -7
- package/dist/src/{util-BlFVL0UF.js → util-LKTmNsMQ.js} +9 -7
- package/dist/src/{util-DvpHnLt0.cjs → util-SPsvFONY.cjs} +29 -21
- package/dist/src/{util-B9CNhyac.js → util-efByNxcr.js} +9 -7
- package/dist/src/util-kDURhgJW.js +328 -0
- package/dist/src/{utils-BUMN8orw.js → utils-B0lzitHZ.js} +2 -2
- package/dist/src/{utils-kt7lv30R.js → utils-BFOh20Gb.js} +2 -2
- package/dist/src/{utils-o8S5huU2.js → utils-BGY69tk_.js} +2 -2
- package/dist/src/{utils-DkVeShIB.cjs → utils-Ve6kuJsa.cjs} +3 -3
- package/dist/src/{version-CbuBKu2U.js → version-BK20a4sw.js} +2 -2
- package/dist/src/{version-D9zu9FWB.cjs → version-BWCSaByA.cjs} +2 -2
- package/dist/src/{version-CbpiUINz.js → version-eRkNuGv8.js} +2 -2
- package/dist/src/{version-0frU0UTr.js → version-lpHV_53E.js} +2 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +48 -22
- package/dist/src/app/assets/Report-vjzrbgce.js +0 -1
- package/dist/src/app/assets/index-B3NQ8HTd.js +0 -385
- package/dist/src/app/assets/index-Cli2yAXv.css +0 -1
- 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-BRkhlH3k.cjs +0 -3
- package/dist/src/cache-BlC6aeJ0.js +0 -3
- package/dist/src/cloud-CoD5OacT.js +0 -3
- package/dist/src/codex-sdk-1jm_qPHf.js +0 -3
- package/dist/src/codex-sdk-Danroptg.cjs +0 -2
- package/dist/src/evalResult-BBJAHAtw.cjs +0 -2
- package/dist/src/evalResult-BBK58h2B.js +0 -3
- package/dist/src/evalResult-spPqh1G_.js +0 -2
- package/dist/src/evaluator-DgLKaZk8.js +0 -3
- package/dist/src/fetch-8viavNv8.js +0 -3
- package/dist/src/graders-C84JI-m5.js +0 -2
- package/dist/src/graders-CBbd0K0Q.cjs +0 -2
- package/dist/src/graders-CbQqpHSN.js +0 -3
- package/dist/src/graders-DS42d3ZG.js +0 -2
- package/dist/src/image-BmilRNqO.js +0 -258
- package/dist/src/image-CxJoa3aW.cjs +0 -280
- package/dist/src/image-DsGRlkh7.js +0 -257
- package/dist/src/image-a_SGUobh.js +0 -257
- package/dist/src/providers-BuyzKt7C.js +0 -2
- package/dist/src/providers-C7lNVBjX.cjs +0 -3
- package/dist/src/providers-CCE2COJi2.js +0 -2
- package/dist/src/render-7uNJ2V14.js +0 -135
- package/dist/src/render-DlscvAUJ.js +0 -135
- package/dist/src/render-eui5p5mL.js +0 -136
- package/dist/src/render-tG6ir9_g.cjs +0 -165
- package/dist/src/rubyUtils-4hjGxvju.js +0 -3
- package/dist/src/rubyUtils-CO-tuszQ.cjs +0 -2
- package/dist/src/server-ByiF3qlg.js +0 -386
- package/dist/src/server-C0XKRNB_.cjs +0 -2
- package/dist/src/server-C_15p79-.js +0 -3
- package/dist/src/store-2OXm_eBY.js +0 -240
- package/dist/src/store-BELqNwvz.js +0 -3
- package/dist/src/store-uQZ4AjPe.cjs +0 -2
- package/dist/src/telemetry-DjNoC_n3.cjs +0 -2
- package/dist/src/telemetry-ZdPZc0fm.js +0 -3
- package/dist/src/transform-BQt0BeAW.js +0 -3
- package/dist/src/transform-Bq5oqC0s.cjs +0 -2
- package/dist/src/transform-C9izGX54.cjs +0 -228
- package/dist/src/transform-CwbAZ84V.js +0 -216
- package/dist/src/transform-DzCF-wqV.js +0 -213
- package/dist/src/transform-eGiUAv86.js +0 -216
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { n as __require } from "./chunk-DRamLcfz.js";
|
|
3
|
+
//#region src/util/processShim.ts
|
|
4
|
+
/**
|
|
5
|
+
* Browser-safe process shim module.
|
|
6
|
+
*
|
|
7
|
+
* This module provides a shimmed process object that works in both Node.js and browser
|
|
8
|
+
* environments. In Node.js, it provides full functionality including process.mainModule.require.
|
|
9
|
+
* In browsers, it returns a minimal shim that throws helpful errors when Node.js-specific
|
|
10
|
+
* features are accessed.
|
|
11
|
+
*
|
|
12
|
+
* This separation is necessary because:
|
|
13
|
+
* 1. The promptfoo webui imports httpTransforms.ts which needs getProcessShim()
|
|
14
|
+
* 2. httpTransforms.ts is designed to be frontend-importable for testing transforms in the UI
|
|
15
|
+
* 3. The Node.js implementation uses createRequire from 'node:module' which doesn't exist in browsers
|
|
16
|
+
*
|
|
17
|
+
* By using runtime environment detection and dynamic imports, we can:
|
|
18
|
+
* - Avoid top-level imports of Node.js-only modules that would break browser bundling
|
|
19
|
+
* - Provide appropriate functionality for each environment
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Detects if the current environment is a browser or web worker.
|
|
23
|
+
* Handles test environments (jsdom/happy-dom) that define window in Node.js.
|
|
24
|
+
*/
|
|
25
|
+
function isBrowserEnvironment() {
|
|
26
|
+
if (typeof process !== "undefined" && typeof process.versions?.node === "string") return false;
|
|
27
|
+
return typeof window !== "undefined" || typeof self !== "undefined" && typeof self.importScripts === "function";
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Creates a minimal process shim for browser environments.
|
|
31
|
+
* This shim provides helpful error messages when Node.js-specific features are accessed.
|
|
32
|
+
*/
|
|
33
|
+
function createBrowserProcessShim() {
|
|
34
|
+
return {
|
|
35
|
+
env: {},
|
|
36
|
+
mainModule: {
|
|
37
|
+
require: () => {
|
|
38
|
+
throw new Error("require() is not available in browser transforms. Use standard JavaScript instead.");
|
|
39
|
+
},
|
|
40
|
+
exports: {},
|
|
41
|
+
id: ".",
|
|
42
|
+
filename: "",
|
|
43
|
+
loaded: true,
|
|
44
|
+
children: [],
|
|
45
|
+
paths: []
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
let cachedNodeProcessShim = null;
|
|
50
|
+
/**
|
|
51
|
+
* Returns a shimmed process object that works in both Node.js and browser environments.
|
|
52
|
+
*
|
|
53
|
+
* In Node.js:
|
|
54
|
+
* - Returns a proxy with process.mainModule.require shimmed for ESM compatibility
|
|
55
|
+
* - Allows inline transforms to use require() even in ESM context
|
|
56
|
+
*
|
|
57
|
+
* In browsers:
|
|
58
|
+
* - Returns a minimal shim with helpful error messages
|
|
59
|
+
* - Allows simple transforms that don't use require() to work
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* // In Node.js - can use require
|
|
63
|
+
* const fn = new Function('data', 'process', `return process.mainModule.require('fs')`);
|
|
64
|
+
* fn(data, getProcessShim());
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* // In browser - simple transforms work
|
|
68
|
+
* const fn = new Function('data', 'process', `return data.toUpperCase()`);
|
|
69
|
+
* fn(data, getProcessShim());
|
|
70
|
+
*/
|
|
71
|
+
function getProcessShim() {
|
|
72
|
+
if (isBrowserEnvironment()) return createBrowserProcessShim();
|
|
73
|
+
if (!cachedNodeProcessShim) try {
|
|
74
|
+
const esmRequire = __require("node:module").createRequire(import.meta.url);
|
|
75
|
+
cachedNodeProcessShim = new Proxy(process, { get(target, prop) {
|
|
76
|
+
if (prop === "mainModule") return {
|
|
77
|
+
require: esmRequire,
|
|
78
|
+
exports: {},
|
|
79
|
+
id: ".",
|
|
80
|
+
filename: "",
|
|
81
|
+
loaded: true,
|
|
82
|
+
children: [],
|
|
83
|
+
paths: []
|
|
84
|
+
};
|
|
85
|
+
return Reflect.get(target, prop);
|
|
86
|
+
} });
|
|
87
|
+
} catch {
|
|
88
|
+
return createBrowserProcessShim();
|
|
89
|
+
}
|
|
90
|
+
return cachedNodeProcessShim;
|
|
91
|
+
}
|
|
92
|
+
//#endregion
|
|
93
|
+
export { getProcessShim as t };
|
|
94
|
+
|
|
95
|
+
//# sourceMappingURL=processShim-BBxt7LKO.js.map
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { n as __require } from "./chunk-DEq-mXcV.js";
|
|
2
|
+
//#region src/util/processShim.ts
|
|
3
|
+
/**
|
|
4
|
+
* Browser-safe process shim module.
|
|
5
|
+
*
|
|
6
|
+
* This module provides a shimmed process object that works in both Node.js and browser
|
|
7
|
+
* environments. In Node.js, it provides full functionality including process.mainModule.require.
|
|
8
|
+
* In browsers, it returns a minimal shim that throws helpful errors when Node.js-specific
|
|
9
|
+
* features are accessed.
|
|
10
|
+
*
|
|
11
|
+
* This separation is necessary because:
|
|
12
|
+
* 1. The promptfoo webui imports httpTransforms.ts which needs getProcessShim()
|
|
13
|
+
* 2. httpTransforms.ts is designed to be frontend-importable for testing transforms in the UI
|
|
14
|
+
* 3. The Node.js implementation uses createRequire from 'node:module' which doesn't exist in browsers
|
|
15
|
+
*
|
|
16
|
+
* By using runtime environment detection and dynamic imports, we can:
|
|
17
|
+
* - Avoid top-level imports of Node.js-only modules that would break browser bundling
|
|
18
|
+
* - Provide appropriate functionality for each environment
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Detects if the current environment is a browser or web worker.
|
|
22
|
+
* Handles test environments (jsdom/happy-dom) that define window in Node.js.
|
|
23
|
+
*/
|
|
24
|
+
function isBrowserEnvironment() {
|
|
25
|
+
if (typeof process !== "undefined" && typeof process.versions?.node === "string") return false;
|
|
26
|
+
return typeof window !== "undefined" || typeof self !== "undefined" && typeof self.importScripts === "function";
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Creates a minimal process shim for browser environments.
|
|
30
|
+
* This shim provides helpful error messages when Node.js-specific features are accessed.
|
|
31
|
+
*/
|
|
32
|
+
function createBrowserProcessShim() {
|
|
33
|
+
return {
|
|
34
|
+
env: {},
|
|
35
|
+
mainModule: {
|
|
36
|
+
require: () => {
|
|
37
|
+
throw new Error("require() is not available in browser transforms. Use standard JavaScript instead.");
|
|
38
|
+
},
|
|
39
|
+
exports: {},
|
|
40
|
+
id: ".",
|
|
41
|
+
filename: "",
|
|
42
|
+
loaded: true,
|
|
43
|
+
children: [],
|
|
44
|
+
paths: []
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
let cachedNodeProcessShim = null;
|
|
49
|
+
/**
|
|
50
|
+
* Returns a shimmed process object that works in both Node.js and browser environments.
|
|
51
|
+
*
|
|
52
|
+
* In Node.js:
|
|
53
|
+
* - Returns a proxy with process.mainModule.require shimmed for ESM compatibility
|
|
54
|
+
* - Allows inline transforms to use require() even in ESM context
|
|
55
|
+
*
|
|
56
|
+
* In browsers:
|
|
57
|
+
* - Returns a minimal shim with helpful error messages
|
|
58
|
+
* - Allows simple transforms that don't use require() to work
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* // In Node.js - can use require
|
|
62
|
+
* const fn = new Function('data', 'process', `return process.mainModule.require('fs')`);
|
|
63
|
+
* fn(data, getProcessShim());
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* // In browser - simple transforms work
|
|
67
|
+
* const fn = new Function('data', 'process', `return data.toUpperCase()`);
|
|
68
|
+
* fn(data, getProcessShim());
|
|
69
|
+
*/
|
|
70
|
+
function getProcessShim() {
|
|
71
|
+
if (isBrowserEnvironment()) return createBrowserProcessShim();
|
|
72
|
+
if (!cachedNodeProcessShim) try {
|
|
73
|
+
const esmRequire = __require("node:module").createRequire(import.meta.url);
|
|
74
|
+
cachedNodeProcessShim = new Proxy(process, { get(target, prop) {
|
|
75
|
+
if (prop === "mainModule") return {
|
|
76
|
+
require: esmRequire,
|
|
77
|
+
exports: {},
|
|
78
|
+
id: ".",
|
|
79
|
+
filename: "",
|
|
80
|
+
loaded: true,
|
|
81
|
+
children: [],
|
|
82
|
+
paths: []
|
|
83
|
+
};
|
|
84
|
+
return Reflect.get(target, prop);
|
|
85
|
+
} });
|
|
86
|
+
} catch {
|
|
87
|
+
return createBrowserProcessShim();
|
|
88
|
+
}
|
|
89
|
+
return cachedNodeProcessShim;
|
|
90
|
+
}
|
|
91
|
+
//#endregion
|
|
92
|
+
export { getProcessShim as t };
|
|
93
|
+
|
|
94
|
+
//# sourceMappingURL=processShim-BcGzU8fY.js.map
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { n as __require } from "./chunk-DEq-mXcV.js";
|
|
2
|
+
//#region src/util/processShim.ts
|
|
3
|
+
/**
|
|
4
|
+
* Browser-safe process shim module.
|
|
5
|
+
*
|
|
6
|
+
* This module provides a shimmed process object that works in both Node.js and browser
|
|
7
|
+
* environments. In Node.js, it provides full functionality including process.mainModule.require.
|
|
8
|
+
* In browsers, it returns a minimal shim that throws helpful errors when Node.js-specific
|
|
9
|
+
* features are accessed.
|
|
10
|
+
*
|
|
11
|
+
* This separation is necessary because:
|
|
12
|
+
* 1. The promptfoo webui imports httpTransforms.ts which needs getProcessShim()
|
|
13
|
+
* 2. httpTransforms.ts is designed to be frontend-importable for testing transforms in the UI
|
|
14
|
+
* 3. The Node.js implementation uses createRequire from 'node:module' which doesn't exist in browsers
|
|
15
|
+
*
|
|
16
|
+
* By using runtime environment detection and dynamic imports, we can:
|
|
17
|
+
* - Avoid top-level imports of Node.js-only modules that would break browser bundling
|
|
18
|
+
* - Provide appropriate functionality for each environment
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Detects if the current environment is a browser or web worker.
|
|
22
|
+
* Handles test environments (jsdom/happy-dom) that define window in Node.js.
|
|
23
|
+
*/
|
|
24
|
+
function isBrowserEnvironment() {
|
|
25
|
+
if (typeof process !== "undefined" && typeof process.versions?.node === "string") return false;
|
|
26
|
+
return typeof window !== "undefined" || typeof self !== "undefined" && typeof self.importScripts === "function";
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Creates a minimal process shim for browser environments.
|
|
30
|
+
* This shim provides helpful error messages when Node.js-specific features are accessed.
|
|
31
|
+
*/
|
|
32
|
+
function createBrowserProcessShim() {
|
|
33
|
+
return {
|
|
34
|
+
env: {},
|
|
35
|
+
mainModule: {
|
|
36
|
+
require: () => {
|
|
37
|
+
throw new Error("require() is not available in browser transforms. Use standard JavaScript instead.");
|
|
38
|
+
},
|
|
39
|
+
exports: {},
|
|
40
|
+
id: ".",
|
|
41
|
+
filename: "",
|
|
42
|
+
loaded: true,
|
|
43
|
+
children: [],
|
|
44
|
+
paths: []
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
let cachedNodeProcessShim = null;
|
|
49
|
+
/**
|
|
50
|
+
* Returns a shimmed process object that works in both Node.js and browser environments.
|
|
51
|
+
*
|
|
52
|
+
* In Node.js:
|
|
53
|
+
* - Returns a proxy with process.mainModule.require shimmed for ESM compatibility
|
|
54
|
+
* - Allows inline transforms to use require() even in ESM context
|
|
55
|
+
*
|
|
56
|
+
* In browsers:
|
|
57
|
+
* - Returns a minimal shim with helpful error messages
|
|
58
|
+
* - Allows simple transforms that don't use require() to work
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* // In Node.js - can use require
|
|
62
|
+
* const fn = new Function('data', 'process', `return process.mainModule.require('fs')`);
|
|
63
|
+
* fn(data, getProcessShim());
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* // In browser - simple transforms work
|
|
67
|
+
* const fn = new Function('data', 'process', `return data.toUpperCase()`);
|
|
68
|
+
* fn(data, getProcessShim());
|
|
69
|
+
*/
|
|
70
|
+
function getProcessShim() {
|
|
71
|
+
if (isBrowserEnvironment()) return createBrowserProcessShim();
|
|
72
|
+
if (!cachedNodeProcessShim) try {
|
|
73
|
+
const esmRequire = __require("node:module").createRequire(import.meta.url);
|
|
74
|
+
cachedNodeProcessShim = new Proxy(process, { get(target, prop) {
|
|
75
|
+
if (prop === "mainModule") return {
|
|
76
|
+
require: esmRequire,
|
|
77
|
+
exports: {},
|
|
78
|
+
id: ".",
|
|
79
|
+
filename: "",
|
|
80
|
+
loaded: true,
|
|
81
|
+
children: [],
|
|
82
|
+
paths: []
|
|
83
|
+
};
|
|
84
|
+
return Reflect.get(target, prop);
|
|
85
|
+
} });
|
|
86
|
+
} catch {
|
|
87
|
+
return createBrowserProcessShim();
|
|
88
|
+
}
|
|
89
|
+
return cachedNodeProcessShim;
|
|
90
|
+
}
|
|
91
|
+
//#endregion
|
|
92
|
+
export { getProcessShim as t };
|
|
93
|
+
|
|
94
|
+
//# sourceMappingURL=processShim-C_z3aRvF.js.map
|
|
@@ -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
|