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
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { t as OpenAICodexSDKProvider } from "./codex-sdk-Bzb_TqX9.js";
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { N as state, O as getEnvString, T as getEnvBool } from "./logger-BbY6ypFL.js";
|
|
3
|
+
import { c as isLoggedIntoCloud } from "./accounts-CjFnOPmb.js";
|
|
4
|
+
import { r as CloudConfig } from "./cloud-D3DiFqH6.js";
|
|
5
|
+
import { i as resolvePackageEntryPoint, t as getDirectory } from "./esm-Bexx2PFc.js";
|
|
6
|
+
import { t as OpenAICodexSDKProvider } from "./codex-sdk-B6Wah8Pa.js";
|
|
8
7
|
import fs from "fs";
|
|
9
8
|
import path from "path";
|
|
10
|
-
import "chalk";
|
|
11
9
|
import os from "os";
|
|
12
|
-
import opener from "opener";
|
|
13
|
-
import readline from "readline";
|
|
14
10
|
//#region src/providers/openai/codexDefaults.ts
|
|
15
11
|
const CODEX_AUTH_FILENAME = "auth.json";
|
|
16
12
|
const CODEX_SDK_PACKAGE_NAME = "@openai/codex-sdk";
|
|
@@ -187,12 +183,20 @@ function getRemoteHealthUrl() {
|
|
|
187
183
|
function getRemoteVersionUrl() {
|
|
188
184
|
return buildRemoteUrl("/version", "https://api.promptfoo.app/version");
|
|
189
185
|
}
|
|
186
|
+
function getRemoteGenerationDisabledError(strategyName) {
|
|
187
|
+
return `${strategyName} requires remote generation, which is currently disabled for this configuration. To enable it, run with --remote, set PROMPTFOO_REMOTE_GENERATION_URL to a self-hosted endpoint, or log into Promptfoo Cloud with \`promptfoo auth login\`.`;
|
|
188
|
+
}
|
|
189
|
+
function getRemoteGenerationExplicitlyDisabledError(strategyName) {
|
|
190
|
+
const activeFlags = ["PROMPTFOO_DISABLE_REMOTE_GENERATION", "PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION"].filter((flag) => getEnvBool(flag));
|
|
191
|
+
return `${strategyName} requires remote generation, which has been explicitly disabled. To enable it, ${activeFlags.length > 0 ? `unset ${activeFlags.join(" and ")}` : "unset PROMPTFOO_DISABLE_REMOTE_GENERATION or PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION (whichever is set)"}. Once re-enabled, you can point at a self-hosted endpoint with PROMPTFOO_REMOTE_GENERATION_URL or use Promptfoo Cloud via \`promptfoo auth login\`.`;
|
|
192
|
+
}
|
|
190
193
|
/**
|
|
191
194
|
* Determines if remote generation should be used based on configuration.
|
|
192
195
|
* @returns true if remote generation should be used
|
|
193
196
|
*/
|
|
194
197
|
function shouldGenerateRemote(options) {
|
|
195
198
|
if (neverGenerateRemote()) return false;
|
|
199
|
+
if (getEnvString("PROMPTFOO_REMOTE_GENERATION_URL")) return true;
|
|
196
200
|
if (isLoggedIntoCloud()) return true;
|
|
197
201
|
return !(Boolean(getEnvString("OPENAI_API_KEY")) || options?.canUseCodexDefaultProvider && !options?.requireEmbeddingProvider && hasCodexDefaultCredentials()) || (state.remote ?? false);
|
|
198
202
|
}
|
|
@@ -209,141 +213,6 @@ function getRemoteGenerationUrlForUnaligned() {
|
|
|
209
213
|
return "https://api.promptfoo.app/api/v1/task/harmful";
|
|
210
214
|
}
|
|
211
215
|
//#endregion
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* Factory function for creating readline interface.
|
|
215
|
-
* This abstraction makes it easier to mock in tests and prevents open handles.
|
|
216
|
-
*/
|
|
217
|
-
function createReadlineInterface() {
|
|
218
|
-
return readline.createInterface({
|
|
219
|
-
input: process.stdin,
|
|
220
|
-
output: process.stdout
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Prompts the user with a question and returns their answer.
|
|
225
|
-
* Automatically handles cleanup of the readline interface.
|
|
226
|
-
*/
|
|
227
|
-
async function promptUser(question) {
|
|
228
|
-
return new Promise((resolve, reject) => {
|
|
229
|
-
let rl = null;
|
|
230
|
-
try {
|
|
231
|
-
rl = createReadlineInterface();
|
|
232
|
-
rl.on("error", (err) => {
|
|
233
|
-
if (rl) rl.close();
|
|
234
|
-
reject(err);
|
|
235
|
-
});
|
|
236
|
-
rl.question(question, (answer) => {
|
|
237
|
-
if (rl) rl.close();
|
|
238
|
-
resolve(answer);
|
|
239
|
-
});
|
|
240
|
-
} catch (err) {
|
|
241
|
-
if (rl) rl.close();
|
|
242
|
-
reject(err);
|
|
243
|
-
}
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Prompts the user with a yes/no question and returns a boolean.
|
|
248
|
-
* @param question The question to ask
|
|
249
|
-
* @param defaultYes If true, empty response defaults to yes. If false, defaults to no.
|
|
250
|
-
*/
|
|
251
|
-
async function promptYesNo(question, defaultYes = false) {
|
|
252
|
-
const answer = await promptUser(`${question} ${defaultYes ? "(Y/n): " : "(y/N): "}`);
|
|
253
|
-
if (defaultYes) return !answer.trim().toLowerCase().startsWith("n");
|
|
254
|
-
return answer.trim().toLowerCase().startsWith("y");
|
|
255
|
-
}
|
|
256
|
-
//#endregion
|
|
257
|
-
//#region src/util/server.ts
|
|
258
|
-
var server_exports = /* @__PURE__ */ __exportAll({
|
|
259
|
-
BrowserBehavior: () => BrowserBehavior,
|
|
260
|
-
BrowserBehaviorNames: () => BrowserBehaviorNames,
|
|
261
|
-
checkServerFeatureSupport: () => checkServerFeatureSupport,
|
|
262
|
-
checkServerRunning: () => checkServerRunning,
|
|
263
|
-
openBrowser: () => openBrowser
|
|
264
|
-
});
|
|
265
|
-
const BrowserBehavior = {
|
|
266
|
-
ASK: 0,
|
|
267
|
-
OPEN: 1,
|
|
268
|
-
SKIP: 2,
|
|
269
|
-
OPEN_TO_REPORT: 3,
|
|
270
|
-
OPEN_TO_REDTEAM_CREATE: 4,
|
|
271
|
-
OPEN_TO_EVAL_SETUP: 5
|
|
272
|
-
};
|
|
273
|
-
const BrowserBehaviorNames = {
|
|
274
|
-
[BrowserBehavior.ASK]: "ASK",
|
|
275
|
-
[BrowserBehavior.OPEN]: "OPEN",
|
|
276
|
-
[BrowserBehavior.SKIP]: "SKIP",
|
|
277
|
-
[BrowserBehavior.OPEN_TO_REPORT]: "OPEN_TO_REPORT",
|
|
278
|
-
[BrowserBehavior.OPEN_TO_REDTEAM_CREATE]: "OPEN_TO_REDTEAM_CREATE",
|
|
279
|
-
[BrowserBehavior.OPEN_TO_EVAL_SETUP]: "OPEN_TO_EVAL_SETUP"
|
|
280
|
-
};
|
|
281
|
-
const featureCache = /* @__PURE__ */ new Map();
|
|
282
|
-
/**
|
|
283
|
-
* Checks if a server supports a specific feature based on build date
|
|
284
|
-
* @param featureName - Name of the feature (for caching and logging)
|
|
285
|
-
* @param requiredBuildDate - Minimum build date when feature was added (ISO string)
|
|
286
|
-
* @returns Promise<boolean> - true if server supports the feature
|
|
287
|
-
*/
|
|
288
|
-
async function checkServerFeatureSupport(featureName, requiredBuildDate) {
|
|
289
|
-
const cacheKey = `${featureName}`;
|
|
290
|
-
if (featureCache.has(cacheKey)) return featureCache.get(cacheKey);
|
|
291
|
-
let supported = false;
|
|
292
|
-
try {
|
|
293
|
-
logger.debug(`[Feature Detection] Checking server support for feature: ${featureName}`);
|
|
294
|
-
const versionUrl = getRemoteVersionUrl();
|
|
295
|
-
if (versionUrl) {
|
|
296
|
-
const data = await (await fetchWithProxy(versionUrl, {
|
|
297
|
-
method: "GET",
|
|
298
|
-
headers: { "Content-Type": "application/json" }
|
|
299
|
-
})).json();
|
|
300
|
-
if (data.buildDate) {
|
|
301
|
-
supported = new Date(data.buildDate) >= new Date(requiredBuildDate);
|
|
302
|
-
logger.debug(`[Feature Detection] ${featureName}: buildDate=${data.buildDate}, required=${requiredBuildDate}, supported=${supported}`);
|
|
303
|
-
} else {
|
|
304
|
-
logger.debug(`[Feature Detection] ${featureName}: no version info, assuming not supported`);
|
|
305
|
-
supported = false;
|
|
306
|
-
}
|
|
307
|
-
} else {
|
|
308
|
-
logger.debug(`[Feature Detection] No remote URL available for ${featureName}, assuming local server supports it`);
|
|
309
|
-
supported = true;
|
|
310
|
-
}
|
|
311
|
-
} catch (error) {
|
|
312
|
-
logger.debug(`[Feature Detection] Version check failed for ${featureName}, assuming not supported: ${error}`);
|
|
313
|
-
supported = false;
|
|
314
|
-
}
|
|
315
|
-
featureCache.set(cacheKey, supported);
|
|
316
|
-
return supported;
|
|
317
|
-
}
|
|
318
|
-
async function checkServerRunning(port = getDefaultPort()) {
|
|
319
|
-
logger.debug(`Checking for existing server on port ${port}...`);
|
|
320
|
-
try {
|
|
321
|
-
const data = await (await fetchWithProxy(`http://localhost:${port}/health`, { headers: { "x-promptfoo-silent": "true" } })).json();
|
|
322
|
-
return data.status === "OK" && data.version === "0.121.5";
|
|
323
|
-
} catch (err) {
|
|
324
|
-
logger.debug(`No existing server found - this is expected on first startup. ${String(err)}`);
|
|
325
|
-
return false;
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
async function openBrowser(browserBehavior, port = getDefaultPort()) {
|
|
329
|
-
const baseUrl = `http://localhost:${port}`;
|
|
330
|
-
let url = baseUrl;
|
|
331
|
-
if (browserBehavior === BrowserBehavior.OPEN_TO_REPORT) url = `${baseUrl}/report`;
|
|
332
|
-
else if (browserBehavior === BrowserBehavior.OPEN_TO_REDTEAM_CREATE) url = `${baseUrl}/redteam/setup`;
|
|
333
|
-
else if (browserBehavior === BrowserBehavior.OPEN_TO_EVAL_SETUP) url = `${baseUrl}/setup`;
|
|
334
|
-
const doOpen = async () => {
|
|
335
|
-
try {
|
|
336
|
-
logger.info("Press Ctrl+C to stop the server");
|
|
337
|
-
await opener(url);
|
|
338
|
-
} catch (err) {
|
|
339
|
-
logger.error(`Failed to open browser: ${String(err)}`);
|
|
340
|
-
}
|
|
341
|
-
};
|
|
342
|
-
if (browserBehavior === BrowserBehavior.ASK) {
|
|
343
|
-
if (await promptYesNo("Open URL in browser?", false)) await doOpen();
|
|
344
|
-
} else if (browserBehavior !== BrowserBehavior.SKIP) await doOpen();
|
|
345
|
-
}
|
|
346
|
-
//#endregion
|
|
347
|
-
export { openBrowser as a, getRemoteGenerationUrl as c, neverGenerateRemote as d, neverGenerateRemoteForRegularEvals as f, hasCodexDefaultCredentials as h, checkServerRunning as i, getRemoteGenerationUrlForUnaligned as l, getCodexDefaultProviders as m, BrowserBehaviorNames as n, server_exports as o, shouldGenerateRemote as p, checkServerFeatureSupport as r, promptYesNo as s, BrowserBehavior as t, getRemoteHealthUrl as u };
|
|
216
|
+
export { getRemoteHealthUrl as a, neverGenerateRemoteForRegularEvals as c, hasCodexDefaultCredentials as d, getRemoteGenerationUrlForUnaligned as i, shouldGenerateRemote as l, getRemoteGenerationExplicitlyDisabledError as n, getRemoteVersionUrl as o, getRemoteGenerationUrl as r, neverGenerateRemote as s, getRemoteGenerationDisabledError as t, getCodexDefaultProviders as u };
|
|
348
217
|
|
|
349
|
-
//# sourceMappingURL=
|
|
218
|
+
//# sourceMappingURL=remoteGeneration-B1_XsKXU.js.map
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { t as OpenAICodexSDKProvider } from "./codex-sdk-DfvDTN33.js";
|
|
1
|
+
import { S as getEnvBool, T as getEnvString, k as state } from "./logger-KD8JjCRJ.js";
|
|
2
|
+
import { c as CloudConfig } from "./fetch-BufrQtvR.js";
|
|
3
|
+
import { c as isLoggedIntoCloud } from "./accounts-DanM1wq_.js";
|
|
4
|
+
import { i as resolvePackageEntryPoint, t as getDirectory } from "./esm-B6whoAcf.js";
|
|
5
|
+
import { t as OpenAICodexSDKProvider } from "./codex-sdk-CmQABzV3.js";
|
|
7
6
|
import fs from "fs";
|
|
8
7
|
import path from "path";
|
|
9
|
-
import "chalk";
|
|
10
8
|
import os from "os";
|
|
11
|
-
import "opener";
|
|
12
|
-
import readline from "readline";
|
|
13
9
|
//#region src/providers/openai/codexDefaults.ts
|
|
14
10
|
const CODEX_AUTH_FILENAME = "auth.json";
|
|
15
11
|
const CODEX_SDK_PACKAGE_NAME = "@openai/codex-sdk";
|
|
@@ -186,12 +182,20 @@ function getRemoteHealthUrl() {
|
|
|
186
182
|
function getRemoteVersionUrl() {
|
|
187
183
|
return buildRemoteUrl("/version", "https://api.promptfoo.app/version");
|
|
188
184
|
}
|
|
185
|
+
function getRemoteGenerationDisabledError(strategyName) {
|
|
186
|
+
return `${strategyName} requires remote generation, which is currently disabled for this configuration. To enable it, run with --remote, set PROMPTFOO_REMOTE_GENERATION_URL to a self-hosted endpoint, or log into Promptfoo Cloud with \`promptfoo auth login\`.`;
|
|
187
|
+
}
|
|
188
|
+
function getRemoteGenerationExplicitlyDisabledError(strategyName) {
|
|
189
|
+
const activeFlags = ["PROMPTFOO_DISABLE_REMOTE_GENERATION", "PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION"].filter((flag) => getEnvBool(flag));
|
|
190
|
+
return `${strategyName} requires remote generation, which has been explicitly disabled. To enable it, ${activeFlags.length > 0 ? `unset ${activeFlags.join(" and ")}` : "unset PROMPTFOO_DISABLE_REMOTE_GENERATION or PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION (whichever is set)"}. Once re-enabled, you can point at a self-hosted endpoint with PROMPTFOO_REMOTE_GENERATION_URL or use Promptfoo Cloud via \`promptfoo auth login\`.`;
|
|
191
|
+
}
|
|
189
192
|
/**
|
|
190
193
|
* Determines if remote generation should be used based on configuration.
|
|
191
194
|
* @returns true if remote generation should be used
|
|
192
195
|
*/
|
|
193
196
|
function shouldGenerateRemote(options) {
|
|
194
197
|
if (neverGenerateRemote()) return false;
|
|
198
|
+
if (getEnvString("PROMPTFOO_REMOTE_GENERATION_URL")) return true;
|
|
195
199
|
if (isLoggedIntoCloud()) return true;
|
|
196
200
|
return !(Boolean(getEnvString("OPENAI_API_KEY")) || options?.canUseCodexDefaultProvider && !options?.requireEmbeddingProvider && hasCodexDefaultCredentials()) || (state.remote ?? false);
|
|
197
201
|
}
|
|
@@ -208,103 +212,6 @@ function getRemoteGenerationUrlForUnaligned() {
|
|
|
208
212
|
return "https://api.promptfoo.app/api/v1/task/harmful";
|
|
209
213
|
}
|
|
210
214
|
//#endregion
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* Factory function for creating readline interface.
|
|
214
|
-
* This abstraction makes it easier to mock in tests and prevents open handles.
|
|
215
|
-
*/
|
|
216
|
-
function createReadlineInterface() {
|
|
217
|
-
return readline.createInterface({
|
|
218
|
-
input: process.stdin,
|
|
219
|
-
output: process.stdout
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Prompts the user with a question and returns their answer.
|
|
224
|
-
* Automatically handles cleanup of the readline interface.
|
|
225
|
-
*/
|
|
226
|
-
async function promptUser(question) {
|
|
227
|
-
return new Promise((resolve, reject) => {
|
|
228
|
-
let rl = null;
|
|
229
|
-
try {
|
|
230
|
-
rl = createReadlineInterface();
|
|
231
|
-
rl.on("error", (err) => {
|
|
232
|
-
if (rl) rl.close();
|
|
233
|
-
reject(err);
|
|
234
|
-
});
|
|
235
|
-
rl.question(question, (answer) => {
|
|
236
|
-
if (rl) rl.close();
|
|
237
|
-
resolve(answer);
|
|
238
|
-
});
|
|
239
|
-
} catch (err) {
|
|
240
|
-
if (rl) rl.close();
|
|
241
|
-
reject(err);
|
|
242
|
-
}
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Prompts the user with a yes/no question and returns a boolean.
|
|
247
|
-
* @param question The question to ask
|
|
248
|
-
* @param defaultYes If true, empty response defaults to yes. If false, defaults to no.
|
|
249
|
-
*/
|
|
250
|
-
async function promptYesNo(question, defaultYes = false) {
|
|
251
|
-
const answer = await promptUser(`${question} ${defaultYes ? "(Y/n): " : "(y/N): "}`);
|
|
252
|
-
if (defaultYes) return !answer.trim().toLowerCase().startsWith("n");
|
|
253
|
-
return answer.trim().toLowerCase().startsWith("y");
|
|
254
|
-
}
|
|
255
|
-
//#endregion
|
|
256
|
-
//#region src/util/server.ts
|
|
257
|
-
var server_exports = /* @__PURE__ */ __exportAll({
|
|
258
|
-
BrowserBehavior: () => BrowserBehavior,
|
|
259
|
-
checkServerFeatureSupport: () => checkServerFeatureSupport
|
|
260
|
-
});
|
|
261
|
-
const BrowserBehavior = {
|
|
262
|
-
ASK: 0,
|
|
263
|
-
OPEN: 1,
|
|
264
|
-
SKIP: 2,
|
|
265
|
-
OPEN_TO_REPORT: 3,
|
|
266
|
-
OPEN_TO_REDTEAM_CREATE: 4,
|
|
267
|
-
OPEN_TO_EVAL_SETUP: 5
|
|
268
|
-
};
|
|
269
|
-
BrowserBehavior.ASK, BrowserBehavior.OPEN, BrowserBehavior.SKIP, BrowserBehavior.OPEN_TO_REPORT, BrowserBehavior.OPEN_TO_REDTEAM_CREATE, BrowserBehavior.OPEN_TO_EVAL_SETUP;
|
|
270
|
-
const featureCache = /* @__PURE__ */ new Map();
|
|
271
|
-
/**
|
|
272
|
-
* Checks if a server supports a specific feature based on build date
|
|
273
|
-
* @param featureName - Name of the feature (for caching and logging)
|
|
274
|
-
* @param requiredBuildDate - Minimum build date when feature was added (ISO string)
|
|
275
|
-
* @returns Promise<boolean> - true if server supports the feature
|
|
276
|
-
*/
|
|
277
|
-
async function checkServerFeatureSupport(featureName, requiredBuildDate) {
|
|
278
|
-
const cacheKey = `${featureName}`;
|
|
279
|
-
if (featureCache.has(cacheKey)) return featureCache.get(cacheKey);
|
|
280
|
-
let supported = false;
|
|
281
|
-
try {
|
|
282
|
-
logger.debug(`[Feature Detection] Checking server support for feature: ${featureName}`);
|
|
283
|
-
const versionUrl = getRemoteVersionUrl();
|
|
284
|
-
if (versionUrl) {
|
|
285
|
-
const data = await (await fetchWithProxy(versionUrl, {
|
|
286
|
-
method: "GET",
|
|
287
|
-
headers: { "Content-Type": "application/json" }
|
|
288
|
-
})).json();
|
|
289
|
-
if (data.buildDate) {
|
|
290
|
-
supported = new Date(data.buildDate) >= new Date(requiredBuildDate);
|
|
291
|
-
logger.debug(`[Feature Detection] ${featureName}: buildDate=${data.buildDate}, required=${requiredBuildDate}, supported=${supported}`);
|
|
292
|
-
} else {
|
|
293
|
-
logger.debug(`[Feature Detection] ${featureName}: no version info, assuming not supported`);
|
|
294
|
-
supported = false;
|
|
295
|
-
}
|
|
296
|
-
} else {
|
|
297
|
-
logger.debug(`[Feature Detection] No remote URL available for ${featureName}, assuming local server supports it`);
|
|
298
|
-
supported = true;
|
|
299
|
-
}
|
|
300
|
-
} catch (error) {
|
|
301
|
-
logger.debug(`[Feature Detection] Version check failed for ${featureName}, assuming not supported: ${error}`);
|
|
302
|
-
supported = false;
|
|
303
|
-
}
|
|
304
|
-
featureCache.set(cacheKey, supported);
|
|
305
|
-
return supported;
|
|
306
|
-
}
|
|
307
|
-
//#endregion
|
|
308
|
-
export { getRemoteGenerationUrlForUnaligned as a, neverGenerateRemoteForRegularEvals as c, hasCodexDefaultCredentials as d, getRemoteGenerationUrl as i, shouldGenerateRemote as l, server_exports as n, getRemoteHealthUrl as o, promptYesNo as r, neverGenerateRemote as s, checkServerFeatureSupport as t, getCodexDefaultProviders as u };
|
|
215
|
+
export { getRemoteHealthUrl as a, neverGenerateRemoteForRegularEvals as c, hasCodexDefaultCredentials as d, getRemoteGenerationUrlForUnaligned as i, shouldGenerateRemote as l, getRemoteGenerationExplicitlyDisabledError as n, getRemoteVersionUrl as o, getRemoteGenerationUrl as r, neverGenerateRemote as s, getRemoteGenerationDisabledError as t, getCodexDefaultProviders as u };
|
|
309
216
|
|
|
310
|
-
//# sourceMappingURL=
|
|
217
|
+
//# sourceMappingURL=remoteGeneration-COpWcmWd.js.map
|
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
1
|
+
const require_rolldown_runtime = require("./rolldown-runtime-D_mwlA32.cjs");
|
|
2
|
+
const require_logger = require("./logger-cfNpzI4o.cjs");
|
|
3
|
+
const require_fetch = require("./fetch-Dw4XZHjj.cjs");
|
|
4
|
+
const require_accounts = require("./accounts-CmWzeD2d.cjs");
|
|
5
|
+
const require_esm = require("./esm-BIKakvNa.cjs");
|
|
6
|
+
const require_codex_sdk = require("./codex-sdk-CFF6gUyi.cjs");
|
|
6
7
|
let fs = require("fs");
|
|
7
|
-
fs =
|
|
8
|
+
fs = require_rolldown_runtime.__toESM(fs, 1);
|
|
8
9
|
let path = require("path");
|
|
9
|
-
path =
|
|
10
|
-
let chalk = require("chalk");
|
|
11
|
-
chalk = require_logger.__toESM(chalk);
|
|
10
|
+
path = require_rolldown_runtime.__toESM(path, 1);
|
|
12
11
|
let os = require("os");
|
|
13
|
-
os =
|
|
14
|
-
require("opener");
|
|
15
|
-
let readline = require("readline");
|
|
16
|
-
readline = require_logger.__toESM(readline);
|
|
12
|
+
os = require_rolldown_runtime.__toESM(os, 1);
|
|
17
13
|
//#region src/providers/openai/codexDefaults.ts
|
|
18
14
|
const CODEX_AUTH_FILENAME = "auth.json";
|
|
19
15
|
const CODEX_SDK_PACKAGE_NAME = "@openai/codex-sdk";
|
|
@@ -190,12 +186,20 @@ function getRemoteHealthUrl() {
|
|
|
190
186
|
function getRemoteVersionUrl() {
|
|
191
187
|
return buildRemoteUrl("/version", "https://api.promptfoo.app/version");
|
|
192
188
|
}
|
|
189
|
+
function getRemoteGenerationDisabledError(strategyName) {
|
|
190
|
+
return `${strategyName} requires remote generation, which is currently disabled for this configuration. To enable it, run with --remote, set PROMPTFOO_REMOTE_GENERATION_URL to a self-hosted endpoint, or log into Promptfoo Cloud with \`promptfoo auth login\`.`;
|
|
191
|
+
}
|
|
192
|
+
function getRemoteGenerationExplicitlyDisabledError(strategyName) {
|
|
193
|
+
const activeFlags = ["PROMPTFOO_DISABLE_REMOTE_GENERATION", "PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION"].filter((flag) => require_logger.getEnvBool(flag));
|
|
194
|
+
return `${strategyName} requires remote generation, which has been explicitly disabled. To enable it, ${activeFlags.length > 0 ? `unset ${activeFlags.join(" and ")}` : "unset PROMPTFOO_DISABLE_REMOTE_GENERATION or PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION (whichever is set)"}. Once re-enabled, you can point at a self-hosted endpoint with PROMPTFOO_REMOTE_GENERATION_URL or use Promptfoo Cloud via \`promptfoo auth login\`.`;
|
|
195
|
+
}
|
|
193
196
|
/**
|
|
194
197
|
* Determines if remote generation should be used based on configuration.
|
|
195
198
|
* @returns true if remote generation should be used
|
|
196
199
|
*/
|
|
197
200
|
function shouldGenerateRemote(options) {
|
|
198
201
|
if (neverGenerateRemote()) return false;
|
|
202
|
+
if (require_logger.getEnvString("PROMPTFOO_REMOTE_GENERATION_URL")) return true;
|
|
199
203
|
if (require_accounts.isLoggedIntoCloud()) return true;
|
|
200
204
|
return !(Boolean(require_logger.getEnvString("OPENAI_API_KEY")) || options?.canUseCodexDefaultProvider && !options?.requireEmbeddingProvider && hasCodexDefaultCredentials()) || (require_logger.state.remote ?? false);
|
|
201
205
|
}
|
|
@@ -212,115 +216,22 @@ function getRemoteGenerationUrlForUnaligned() {
|
|
|
212
216
|
return "https://api.promptfoo.app/api/v1/task/harmful";
|
|
213
217
|
}
|
|
214
218
|
//#endregion
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
* Factory function for creating readline interface.
|
|
218
|
-
* This abstraction makes it easier to mock in tests and prevents open handles.
|
|
219
|
-
*/
|
|
220
|
-
function createReadlineInterface() {
|
|
221
|
-
return readline.default.createInterface({
|
|
222
|
-
input: process.stdin,
|
|
223
|
-
output: process.stdout
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Prompts the user with a question and returns their answer.
|
|
228
|
-
* Automatically handles cleanup of the readline interface.
|
|
229
|
-
*/
|
|
230
|
-
async function promptUser(question) {
|
|
231
|
-
return new Promise((resolve, reject) => {
|
|
232
|
-
let rl = null;
|
|
233
|
-
try {
|
|
234
|
-
rl = createReadlineInterface();
|
|
235
|
-
rl.on("error", (err) => {
|
|
236
|
-
if (rl) rl.close();
|
|
237
|
-
reject(err);
|
|
238
|
-
});
|
|
239
|
-
rl.question(question, (answer) => {
|
|
240
|
-
if (rl) rl.close();
|
|
241
|
-
resolve(answer);
|
|
242
|
-
});
|
|
243
|
-
} catch (err) {
|
|
244
|
-
if (rl) rl.close();
|
|
245
|
-
reject(err);
|
|
246
|
-
}
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Prompts the user with a yes/no question and returns a boolean.
|
|
251
|
-
* @param question The question to ask
|
|
252
|
-
* @param defaultYes If true, empty response defaults to yes. If false, defaults to no.
|
|
253
|
-
*/
|
|
254
|
-
async function promptYesNo(question, defaultYes = false) {
|
|
255
|
-
const answer = await promptUser(`${question} ${defaultYes ? "(Y/n): " : "(y/N): "}`);
|
|
256
|
-
if (defaultYes) return !answer.trim().toLowerCase().startsWith("n");
|
|
257
|
-
return answer.trim().toLowerCase().startsWith("y");
|
|
258
|
-
}
|
|
259
|
-
//#endregion
|
|
260
|
-
//#region src/util/server.ts
|
|
261
|
-
const BrowserBehavior = {
|
|
262
|
-
ASK: 0,
|
|
263
|
-
OPEN: 1,
|
|
264
|
-
SKIP: 2,
|
|
265
|
-
OPEN_TO_REPORT: 3,
|
|
266
|
-
OPEN_TO_REDTEAM_CREATE: 4,
|
|
267
|
-
OPEN_TO_EVAL_SETUP: 5
|
|
268
|
-
};
|
|
269
|
-
BrowserBehavior.ASK, BrowserBehavior.OPEN, BrowserBehavior.SKIP, BrowserBehavior.OPEN_TO_REPORT, BrowserBehavior.OPEN_TO_REDTEAM_CREATE, BrowserBehavior.OPEN_TO_EVAL_SETUP;
|
|
270
|
-
const featureCache = /* @__PURE__ */ new Map();
|
|
271
|
-
/**
|
|
272
|
-
* Checks if a server supports a specific feature based on build date
|
|
273
|
-
* @param featureName - Name of the feature (for caching and logging)
|
|
274
|
-
* @param requiredBuildDate - Minimum build date when feature was added (ISO string)
|
|
275
|
-
* @returns Promise<boolean> - true if server supports the feature
|
|
276
|
-
*/
|
|
277
|
-
async function checkServerFeatureSupport(featureName, requiredBuildDate) {
|
|
278
|
-
const cacheKey = `${featureName}`;
|
|
279
|
-
if (featureCache.has(cacheKey)) return featureCache.get(cacheKey);
|
|
280
|
-
let supported = false;
|
|
281
|
-
try {
|
|
282
|
-
require_logger.logger.debug(`[Feature Detection] Checking server support for feature: ${featureName}`);
|
|
283
|
-
const versionUrl = getRemoteVersionUrl();
|
|
284
|
-
if (versionUrl) {
|
|
285
|
-
const data = await (await require_fetch.fetchWithProxy(versionUrl, {
|
|
286
|
-
method: "GET",
|
|
287
|
-
headers: { "Content-Type": "application/json" }
|
|
288
|
-
})).json();
|
|
289
|
-
if (data.buildDate) {
|
|
290
|
-
supported = new Date(data.buildDate) >= new Date(requiredBuildDate);
|
|
291
|
-
require_logger.logger.debug(`[Feature Detection] ${featureName}: buildDate=${data.buildDate}, required=${requiredBuildDate}, supported=${supported}`);
|
|
292
|
-
} else {
|
|
293
|
-
require_logger.logger.debug(`[Feature Detection] ${featureName}: no version info, assuming not supported`);
|
|
294
|
-
supported = false;
|
|
295
|
-
}
|
|
296
|
-
} else {
|
|
297
|
-
require_logger.logger.debug(`[Feature Detection] No remote URL available for ${featureName}, assuming local server supports it`);
|
|
298
|
-
supported = true;
|
|
299
|
-
}
|
|
300
|
-
} catch (error) {
|
|
301
|
-
require_logger.logger.debug(`[Feature Detection] Version check failed for ${featureName}, assuming not supported: ${error}`);
|
|
302
|
-
supported = false;
|
|
303
|
-
}
|
|
304
|
-
featureCache.set(cacheKey, supported);
|
|
305
|
-
return supported;
|
|
306
|
-
}
|
|
307
|
-
//#endregion
|
|
308
|
-
Object.defineProperty(exports, "BrowserBehavior", {
|
|
219
|
+
Object.defineProperty(exports, "getCodexDefaultProviders", {
|
|
309
220
|
enumerable: true,
|
|
310
221
|
get: function() {
|
|
311
|
-
return
|
|
222
|
+
return getCodexDefaultProviders;
|
|
312
223
|
}
|
|
313
224
|
});
|
|
314
|
-
Object.defineProperty(exports, "
|
|
225
|
+
Object.defineProperty(exports, "getRemoteGenerationDisabledError", {
|
|
315
226
|
enumerable: true,
|
|
316
227
|
get: function() {
|
|
317
|
-
return
|
|
228
|
+
return getRemoteGenerationDisabledError;
|
|
318
229
|
}
|
|
319
230
|
});
|
|
320
|
-
Object.defineProperty(exports, "
|
|
231
|
+
Object.defineProperty(exports, "getRemoteGenerationExplicitlyDisabledError", {
|
|
321
232
|
enumerable: true,
|
|
322
233
|
get: function() {
|
|
323
|
-
return
|
|
234
|
+
return getRemoteGenerationExplicitlyDisabledError;
|
|
324
235
|
}
|
|
325
236
|
});
|
|
326
237
|
Object.defineProperty(exports, "getRemoteGenerationUrl", {
|
|
@@ -341,6 +252,12 @@ Object.defineProperty(exports, "getRemoteHealthUrl", {
|
|
|
341
252
|
return getRemoteHealthUrl;
|
|
342
253
|
}
|
|
343
254
|
});
|
|
255
|
+
Object.defineProperty(exports, "getRemoteVersionUrl", {
|
|
256
|
+
enumerable: true,
|
|
257
|
+
get: function() {
|
|
258
|
+
return getRemoteVersionUrl;
|
|
259
|
+
}
|
|
260
|
+
});
|
|
344
261
|
Object.defineProperty(exports, "hasCodexDefaultCredentials", {
|
|
345
262
|
enumerable: true,
|
|
346
263
|
get: function() {
|
|
@@ -359,12 +276,6 @@ Object.defineProperty(exports, "neverGenerateRemoteForRegularEvals", {
|
|
|
359
276
|
return neverGenerateRemoteForRegularEvals;
|
|
360
277
|
}
|
|
361
278
|
});
|
|
362
|
-
Object.defineProperty(exports, "promptYesNo", {
|
|
363
|
-
enumerable: true,
|
|
364
|
-
get: function() {
|
|
365
|
-
return promptYesNo;
|
|
366
|
-
}
|
|
367
|
-
});
|
|
368
279
|
Object.defineProperty(exports, "shouldGenerateRemote", {
|
|
369
280
|
enumerable: true,
|
|
370
281
|
get: function() {
|
|
@@ -372,4 +283,4 @@ Object.defineProperty(exports, "shouldGenerateRemote", {
|
|
|
372
283
|
}
|
|
373
284
|
});
|
|
374
285
|
|
|
375
|
-
//# sourceMappingURL=
|
|
286
|
+
//# sourceMappingURL=remoteGeneration-DS9N3pgB.cjs.map
|