promptfoo 0.121.4 → 0.121.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/{ListApp-DQkFNqE9.js → ListApp-BRUsT43Y.js} +1 -1
- package/dist/src/{accounts-Dy17bs4D.cjs → accounts-BIFntVWB.cjs} +4 -4
- package/dist/src/{accounts-F9d_5sMC.js → accounts-CLJHCDDb.js} +6 -6
- package/dist/src/{accounts-DhMYUUbu.js → accounts-CaLNYnf7.js} +4 -4
- package/dist/src/{accounts-DdJ2pHMI.js → accounts-bnyHT7Ju.js} +5 -5
- package/dist/src/{agentic-utils-w68v6_Dz.js → agentic-utils-B5krlibj.js} +3 -3
- package/dist/src/{agentic-utils-P172hM8B.js → agentic-utils-Ba67xmgs.js} +2 -2
- package/dist/src/{agentic-utils-qFlm6zes.js → agentic-utils-BclbiXiq.js} +3 -3
- package/dist/src/{agentic-utils-BpX5b23w.cjs → agentic-utils-D2x0wGhB.cjs} +2 -2
- package/dist/src/{agents-CgaMXvLM.js → agents-BGqaTDnr.js} +5 -5
- package/dist/src/{agents-8FDnTriG.js → agents-BV9yFpXX.js} +5 -5
- package/dist/src/{agents-aYPQLf8W.js → agents-BYdMl1UE.js} +4 -4
- package/dist/src/{agents-pQeBEXMm.js → agents-DhxWMCtH.js} +5 -5
- package/dist/src/{agents-D7-HGxUj.cjs → agents-DiWmQYH9.cjs} +4 -4
- package/dist/src/{agents-BahDpe5G.cjs → agents-WULPVjbH.cjs} +4 -4
- package/dist/src/{agents-DJ35I3Nt.js → agents-emVcx3yh.js} +5 -5
- package/dist/src/{agents-C-R_jfzI.js → agents-n6vPqV3i.js} +4 -4
- package/dist/src/{aimlapi-BCq3MHeL.js → aimlapi-BxqK9HF_.js} +7 -7
- package/dist/src/{aimlapi-qcK4OT55.cjs → aimlapi-BzLjZI_m.cjs} +6 -6
- package/dist/src/{aimlapi-BD6J9oKt.js → aimlapi-DR4pgeiC.js} +6 -6
- package/dist/src/{aimlapi-sgYnkE54.js → aimlapi-uPGp0Zdo.js} +7 -7
- package/dist/src/app/app/tsconfig.app.tsbuildinfo +1 -1
- package/dist/src/app/assets/Report-vjzrbgce.js +1 -0
- package/dist/src/app/assets/index-B3NQ8HTd.js +385 -0
- package/dist/src/app/assets/{index-BXGkeMwh.css → index-Cli2yAXv.css} +1 -1
- package/dist/src/app/index.html +27 -2
- package/dist/src/{audio-DcVKoInv.js → audio-BvpTOArF.js} +4 -4
- package/dist/src/{audio-BQtNuYBj.cjs → audio-C0vDeS0j.cjs} +3 -3
- package/dist/src/{audio-B7izf48x.js → audio-CScmnmEB.js} +4 -4
- package/dist/src/{audio-COrn8rM6.js → audio-Da8U9IS5.js} +3 -3
- package/dist/src/{base-fZ9wgg50.js → base-BOMaNEes.js} +3 -3
- package/dist/src/{base-PYJvBE1i.js → base-BTux96b1.js} +2 -2
- package/dist/src/{base-D-670DX8.cjs → base-Tw6uhH8K.cjs} +2 -2
- package/dist/src/{base-yrI1Yal4.js → base-dYsl2hmL.js} +3 -3
- package/dist/src/{blobs-D2FAd1Q5.cjs → blobs-B95F_7vE.cjs} +2 -2
- package/dist/src/{blobs-C-F78Kfn.js → blobs-BW4U31ue.js} +2 -2
- package/dist/src/{blobs-BCZavS8s.js → blobs-D_gg8nbm.js} +3 -3
- package/dist/src/{blobs-BQWqnnvL.js → blobs-DjLby-uP.js} +3 -3
- package/dist/src/{cache-mb7c8hbp.js → cache-BI5BY7ey.js} +4 -4
- package/dist/src/{cache-DbLsVWB2.cjs → cache-BRkhlH3k.cjs} +1 -1
- package/dist/src/cache-BlC6aeJ0.js +3 -0
- package/dist/src/{cache-D5NZmMiT.js → cache-Bzttsk0X.js} +2 -2
- package/dist/src/{cache-C4Xb-hNb.js → cache-Cr-qWIbP.js} +3 -3
- package/dist/src/{cache-BIyPcp5v.cjs → cache-DGg-yTZG.cjs} +2 -2
- package/dist/src/{chat-Dr3DUQ0D.js → chat-BLOdH60v.js} +12 -12
- package/dist/src/{chat-BfPaS15_.js → chat-Cx_LkwvZ.js} +12 -12
- package/dist/src/{chat-mW0ORo8G.js → chat-D9nudO9b.js} +4 -4
- package/dist/src/{chat-I9izLm49.js → chat-DChSH_Es.js} +12 -12
- package/dist/src/{chat-MKxMnZJZ.js → chat-DG2LkwLq.js} +2 -2
- package/dist/src/{chat-BPXSW8Bv.cjs → chat-DH97tVV9.cjs} +2 -2
- package/dist/src/{chat-0bwXjVP0.js → chat-aMQZw6R7.js} +4 -4
- package/dist/src/{chat-CclRbxGf.cjs → chat-vYqqv1gP.cjs} +11 -11
- package/dist/src/{chatkit-zUIVoDos.js → chatkit-B8X34dQc.js} +4 -4
- package/dist/src/{chatkit-Cv6AhukM.js → chatkit-BXu42Qwt.js} +3 -3
- package/dist/src/{chatkit-CJnHRRMM.js → chatkit-CbMRoeYw.js} +4 -4
- package/dist/src/{chatkit-BoWoSgXl.cjs → chatkit-D44VyUyB.cjs} +3 -3
- package/dist/src/{claude-agent-sdk-CPJo3dBQ.cjs → claude-agent-sdk-BRq0bbIK.cjs} +8 -8
- package/dist/src/{claude-agent-sdk-BQNuLaAK.js → claude-agent-sdk-BjriSVRZ.js} +7 -7
- package/dist/src/{claude-agent-sdk-Dtq_L-Sc.js → claude-agent-sdk-BzNZeZ0N.js} +7 -7
- package/dist/src/{claude-agent-sdk-nfAIcxNf.js → claude-agent-sdk-DYv_AJ8u.js} +7 -7
- package/dist/src/cloud-CoD5OacT.js +3 -0
- package/dist/src/{cloud-DQZ5sVjW.js → cloud-Da0bofJd.js} +3 -3
- package/dist/src/{cloudflare-ai-BIB567w6.js → cloudflare-ai-CXC4b1EU.js} +4 -4
- package/dist/src/{cloudflare-ai-DlKr0rY7.js → cloudflare-ai-CyBoIs1Q.js} +6 -6
- package/dist/src/{cloudflare-ai-DGLte7Py.js → cloudflare-ai-DGOwgexC.js} +6 -6
- package/dist/src/{cloudflare-ai-Dl3N9OVD.cjs → cloudflare-ai-DJv5qnyb.cjs} +4 -4
- package/dist/src/{cloudflare-gateway-BDZrYydE.js → cloudflare-gateway-1sAoOyft.js} +5 -5
- package/dist/src/{cloudflare-gateway-CiIZHU0Q.js → cloudflare-gateway-D-dnkzCF.js} +5 -5
- package/dist/src/{cloudflare-gateway-BYDp495F.cjs → cloudflare-gateway-DKVjkDav.cjs} +3 -3
- package/dist/src/{cloudflare-gateway-DI1HNP5F.js → cloudflare-gateway-TJkVrZlB.js} +3 -3
- package/dist/src/codex-app-server-CCLjqCh9.js +1915 -0
- package/dist/src/codex-app-server-CCe0TiDc.js +1915 -0
- package/dist/src/codex-app-server-CPW1LFwh.js +1916 -0
- package/dist/src/codex-app-server-VMRnjZ68.cjs +1920 -0
- package/dist/src/codex-sdk-1jm_qPHf.js +3 -0
- package/dist/src/{codex-sdk-C2_M2pl_.cjs → codex-sdk-Bd8UbO9q.cjs} +5 -5
- package/dist/src/{codex-sdk-CpqiOqDO.js → codex-sdk-BgEFQ70r.js} +6 -6
- package/dist/src/{codex-sdk-Rtky3M4I.js → codex-sdk-Bzb_TqX9.js} +6 -6
- package/dist/src/{codex-sdk-CWEnH70W.cjs → codex-sdk-Danroptg.cjs} +1 -1
- package/dist/src/{codex-sdk-CErXn7qh.js → codex-sdk-DfvDTN33.js} +5 -5
- package/dist/src/{cometapi-CtJ-mS8R.js → cometapi-B5ImDlSm.js} +8 -8
- package/dist/src/{cometapi-UVOryo4W.cjs → cometapi-BgAkuYCw.cjs} +7 -7
- package/dist/src/{cometapi-BUlt_ELa.js → cometapi-CC7hWxmX.js} +8 -8
- package/dist/src/{cometapi-DT-jlVCB.js → cometapi-CCbpHkuF.js} +7 -7
- package/dist/src/{completion-x0a_c2y1.js → completion-2iuYVxwi.js} +6 -6
- package/dist/src/{completion-Dnxn7E-j.js → completion-CrD6MQ93.js} +5 -5
- package/dist/src/{completion-BozdoXba.cjs → completion-DtQ72Bm3.cjs} +5 -5
- package/dist/src/{completion-HUe8wDhZ.js → completion-Vq_ad618.js} +6 -6
- package/dist/src/{createHash-ChI45QR1.js → createHash-DPpsZgFF.js} +1 -1
- package/dist/src/{createHash-CwDVU5xr.js → createHash-Un4Q_huE.js} +1 -1
- package/dist/src/{createHash-B7KvgoOD.cjs → createHash-VvBIc-AW.cjs} +1 -1
- package/dist/src/{docker-DCgsveLD.js → docker--3qzPa-6.js} +6 -6
- package/dist/src/{docker-DS4_Osau.cjs → docker-D3AY-5F5.cjs} +5 -5
- package/dist/src/{docker-CQmlA2NU.js → docker-DCsCDvwM.js} +6 -6
- package/dist/src/{docker-ClnmCf1Z.js → docker-Dorv4_Dg.js} +5 -5
- package/dist/src/{embedding-I45KG3o7.cjs → embedding-BXhN5lCH.cjs} +5 -5
- package/dist/src/{embedding-nFbumxcv.js → embedding-ChS1ivFS.js} +5 -5
- package/dist/src/{embedding-D3xTseo7.js → embedding-DNRvZwRN.js} +6 -6
- package/dist/src/{embedding-DD9wa3ae.js → embedding-D_bI4NDq.js} +6 -6
- package/dist/src/{errors-Cw810C93.js → errors-DFHe4L-n.js} +1 -1
- package/dist/src/{esm-Dh4dOLlt.js → esm-B6whoAcf.js} +2 -2
- package/dist/src/{esm-C7PnfdF8.js → esm-BRkfNsYs.js} +1 -1
- package/dist/src/{esm-tVgYPY-f.js → esm-BX8fwlAO.js} +2 -2
- package/dist/src/{esm-CtEPLdAj.cjs → esm-B_rGuPTo.cjs} +1 -1
- package/dist/src/{eval-CzJFfFO9.js → eval-BQPLBJbw.js} +1 -1
- package/dist/src/{eval-u4UVafl6.js → eval-DJ_4A-tr.js} +14 -14
- package/dist/src/evalResult-BBJAHAtw.cjs +2 -0
- package/dist/src/evalResult-BBK58h2B.js +3 -0
- package/dist/src/{evalResult-KZqXl4XP.cjs → evalResult-Cx-8OWkb.cjs} +28 -10
- package/dist/src/{evalResult-D3hVYFis.js → evalResult-D6P5I5il.js} +29 -11
- package/dist/src/{evalResult-Bgm9ZH31.js → evalResult-pSvGWFMo.js} +29 -11
- package/dist/src/{evaluator-IvuDYSvQ.js → evaluator-D-UIbbYq.js} +845 -98
- package/dist/src/evaluator-DgLKaZk8.js +3 -0
- package/dist/src/{extractor-Dk6bRWkv.js → extractor-BM3jRERL.js} +5 -5
- package/dist/src/{extractor-WVPOrH43.cjs → extractor-Dxr2J_wK.cjs} +5 -5
- package/dist/src/{extractor-DNSeBVOJ.js → extractor-DxyiFhPk.js} +6 -6
- package/dist/src/{extractor-CAfTSraf.js → extractor-YlZbUMsL.js} +6 -6
- package/dist/src/fetch-8viavNv8.js +3 -0
- package/dist/src/{fetch-BEWnXrrG.js → fetch-B6ch2nU2.js} +9 -20
- package/dist/src/{fetch-Di00EQrc.js → fetch-D9xxyC1p.js} +221 -232
- package/dist/src/{fetch-CJU5ELPa.cjs → fetch-NuqXW1Xb.cjs} +221 -244
- package/dist/src/{fetch-B0Z3Oe4k.js → fetch-Y5qX_kST.js} +8 -19
- package/dist/src/{fileExtensions-BArZuxsI.js → fileExtensions-8CjoL7vB.js} +1 -1
- package/dist/src/{fileExtensions-DnqA1y9x.js → fileExtensions-BGh-W-HT.js} +1 -1
- package/dist/src/{fileExtensions-bYh77CN8.cjs → fileExtensions-D9h-8Wxg.cjs} +1 -1
- package/dist/src/{fileExtensions-AWa2ZML4.js → fileExtensions-DysCsxNG.js} +1 -1
- package/dist/src/{formatDuration-DZzPsexs.js → formatDuration-Ch4A7G3o.js} +1 -1
- package/dist/src/{genaiTracer-yRuxj9-L.cjs → genaiTracer-BokHC-MW.cjs} +1 -1
- package/dist/src/{genaiTracer-DWdZ28hY.js → genaiTracer-C3ZPQU60.js} +1 -1
- package/dist/src/{genaiTracer-XnrcgDCe.js → genaiTracer-CFny3gOy.js} +1 -1
- package/dist/src/{genaiTracer-COYDi-tC.js → genaiTracer-DxODqT9e.js} +1 -1
- package/dist/src/{graders-Zy3x0zqX.js → graders-BoUqsCEm.js} +1303 -2044
- package/dist/src/{graders--zknU_uk.cjs → graders-Bw1wk_21.cjs} +1553 -2240
- package/dist/src/graders-C84JI-m5.js +2 -0
- package/dist/src/graders-CBbd0K0Q.cjs +2 -0
- package/dist/src/graders-CbQqpHSN.js +3 -0
- package/dist/src/{graders-eIHhRqoC.js → graders-CgPn32yp.js} +1300 -2041
- package/dist/src/{graders-pvbReLLn.js → graders-CwrbifOo.js} +747 -1488
- package/dist/src/graders-DS42d3ZG.js +2 -0
- package/dist/src/{image-9302QVqR.js → image-BeWaInPF.js} +3 -3
- package/dist/src/{image-DVz2RiMF.js → image-BmilRNqO.js} +7 -7
- package/dist/src/{image-x6KqLQl4.cjs → image-CxJoa3aW.cjs} +6 -6
- package/dist/src/{image-De2FBmYV.cjs → image-D10dNAav.cjs} +3 -3
- package/dist/src/{image-dnoUgPrC.js → image-Dr_3I3nK.js} +4 -4
- package/dist/src/{image-B5Mv-Z3h.js → image-DsGRlkh7.js} +7 -7
- package/dist/src/{image-qUpPvmNZ.js → image-a_SGUobh.js} +6 -6
- package/dist/src/{image-u7-rKnYU.js → image-qjO6FWPs.js} +4 -4
- package/dist/src/index.cjs +1052 -296
- package/dist/src/index.d.cts +124 -13
- package/dist/src/index.d.ts +125 -14
- package/dist/src/index.js +1018 -262
- package/dist/src/{interactiveCheck-CLERUB0c.js → interactiveCheck-CCICw2cy.js} +2 -2
- package/dist/src/{invariant-BtWWVVhl.js → invariant-B2Rf6avk.js} +1 -1
- package/dist/src/{invariant-vgHWClmd.js → invariant-DIYf9sP1.js} +1 -1
- package/dist/src/{knowledgeBase-RhFPGWDc.js → knowledgeBase-BBETc5-S.js} +6 -6
- package/dist/src/{knowledgeBase-Bpoe_nLu.cjs → knowledgeBase-C8qOo26M.cjs} +5 -5
- package/dist/src/{knowledgeBase-lm9RXSAm.js → knowledgeBase-CzAi2rUI.js} +6 -6
- package/dist/src/{knowledgeBase-Dgc7CBWF.js → knowledgeBase-Dr3Kib7F.js} +5 -5
- package/dist/src/{litellm-C2kqjxqp.js → litellm-BLSiANhk.js} +5 -5
- package/dist/src/{litellm-CoyI4IAl.cjs → litellm-CaUmV7Mk.cjs} +4 -4
- package/dist/src/{litellm-p37R1dzQ.js → litellm-DQGo_juI.js} +4 -4
- package/dist/src/{litellm-DRjpcSa7.js → litellm-DRc4qWfc.js} +5 -5
- package/dist/src/{logger-DksKw1Qc.js → logger-BbY6ypFL.js} +2 -2
- package/dist/src/{logger-B88EkIn6.js → logger-KD8JjCRJ.js} +2 -2
- package/dist/src/{luma-ray-KgTCXrZC.js → luma-ray-B-tNZzqW.js} +6 -6
- package/dist/src/{luma-ray-B863CmuZ.js → luma-ray-CtS3OlGq.js} +5 -5
- package/dist/src/{luma-ray-BTTLtqQ8.js → luma-ray-PJJgUjOc.js} +6 -6
- package/dist/src/{luma-ray-BxVKaW2a.cjs → luma-ray-if-Ml4R9.cjs} +5 -5
- package/dist/src/main.js +242 -198
- package/dist/src/{messages-zWbkLLHz.js → messages-B9dSjrNf.js} +264 -16
- package/dist/src/{messages-811uVVW5.cjs → messages-BnsVHUnm.cjs} +266 -15
- package/dist/src/{messages-MYTQ2TWp.js → messages-CI69Lasb.js} +264 -16
- package/dist/src/{messages-BTQz42fn.js → messages-CewuNcNS.js} +264 -16
- package/dist/src/{meteor-Co1VQ1u5.cjs → meteor-BBGcGeCa.cjs} +1 -1
- package/dist/src/{meteor-DuAFv6gF.js → meteor-BKTM-7KS.js} +1 -1
- package/dist/src/{meteor-DHdzY1Ss.js → meteor-CeGo0Lu2.js} +2 -2
- package/dist/src/{meteor-CU5UAE-H.js → meteor-Wc_aUVvu.js} +2 -2
- package/dist/src/{modelslab-wu9yi5GE.js → modelslab-BCLOtfek.js} +7 -7
- package/dist/src/{modelslab-Dk1JAtVo.cjs → modelslab-BkapYJhh.cjs} +6 -6
- package/dist/src/{modelslab-DIq-6y7x.js → modelslab-D73OnKSx.js} +6 -6
- package/dist/src/{modelslab-D0erNWKe.js → modelslab-zpz9JcK0.js} +7 -7
- package/dist/src/{nova-reel-CCFRfeRb.js → nova-reel-B8F_TK5w.js} +6 -6
- package/dist/src/{nova-reel-DQrm74ng.js → nova-reel-Bx0NFV2f.js} +5 -5
- package/dist/src/{nova-reel-gr11WG7f.js → nova-reel-CNGJTLtG.js} +6 -6
- package/dist/src/{nova-reel-CrLXVKQf.cjs → nova-reel-DkT7tnoB.cjs} +5 -5
- package/dist/src/{nova-sonic-BYdp-QLs.js → nova-sonic-BaXRN1cr.js} +4 -4
- package/dist/src/{nova-sonic-TDgrlTk7.js → nova-sonic-BeTRaFOh.js} +4 -4
- package/dist/src/{nova-sonic-B_ZXcUJB.js → nova-sonic-CL7Zqv0G.js} +3 -3
- package/dist/src/{nova-sonic-i5tUvXKn.cjs → nova-sonic-YT426juD.cjs} +3 -3
- package/dist/src/{openai-DhVEmgeZ.js → openai-BMHD2Huo.js} +2 -2
- package/dist/src/{openai-Qsvz25mV.js → openai-BT-JvDse.js} +2 -2
- package/dist/src/{openai-URNyItar.cjs → openai-Cy1XLs0c.cjs} +1 -1
- package/dist/src/{openai-iYtrXzOX.js → openai-D4fxGvRx.js} +1 -1
- package/dist/src/{openclaw-CwzlQSQX.js → openclaw-Bq7RVR3k.js} +7 -6
- package/dist/src/{openclaw-CLWrW03k.js → openclaw-DA8U4DsD.js} +8 -7
- package/dist/src/{openclaw-CnQ363Wi.js → openclaw-DObVgpjC.js} +8 -7
- package/dist/src/{openclaw-wX9rtfke.cjs → openclaw-DUBZP3GL.cjs} +8 -7
- package/dist/src/{opencode-sdk-BUu5Nevv.js → opencode-sdk-BB40Wir1.js} +4 -4
- package/dist/src/{opencode-sdk-GI2KaAXq.js → opencode-sdk-BM1UAIv1.js} +3 -3
- package/dist/src/{opencode-sdk-BZ2idgYA.cjs → opencode-sdk-CeqiOcOU.cjs} +4 -4
- package/dist/src/{opencode-sdk-BxD8vXp_.js → opencode-sdk-ChdK7F7z.js} +4 -4
- package/dist/src/{otlpReceiver-DmVulbhC.js → otlpReceiver-C6thJRXi.js} +4 -4
- package/dist/src/{otlpReceiver-B2z58l4e.js → otlpReceiver-CcdIikOu.js} +3 -3
- package/dist/src/{otlpReceiver-BfcVq2Nq.cjs → otlpReceiver-DNSQj6bf.cjs} +3 -3
- package/dist/src/{otlpReceiver-BntK801g.js → otlpReceiver-UYMQx3sy.js} +4 -4
- package/dist/src/{providerRegistry-CPQ_CmVO.js → providerRegistry-1gB5vtzQ.js} +2 -2
- package/dist/src/{providerRegistry-CQMdTmHP.cjs → providerRegistry-BESeALrr.cjs} +1 -1
- package/dist/src/{providerRegistry-Bvh8mv85.js → providerRegistry-DoACwqhD.js} +1 -1
- package/dist/src/{providerRegistry-CWoPjKFZ.js → providerRegistry-PMsleEzs.js} +2 -2
- package/dist/src/{providers-Bp4S-FvO.js → providers-BuyzKt7C.js} +1 -1
- package/dist/src/{providers-DV3ax9e_.cjs → providers-C7lNVBjX.cjs} +1 -1
- package/dist/src/{providers-u9Enmfok.js → providers-CCE2COJi2.js} +1 -1
- package/dist/src/{providers-DruaQfwu.js → providers-CJh7iriU.js} +18103 -17952
- package/dist/src/{providers-iUt5fbAN.js → providers-Ctcc592x.js} +1 -1
- package/dist/src/{providers-Domz_llv.js → providers-DRrerKra.js} +432 -281
- package/dist/src/{providers-BV_KMZje.js → providers-DT-GtF2t.js} +19094 -18943
- package/dist/src/{providers-1eKkXBKp.cjs → providers-eDShy16E.cjs} +17946 -17795
- package/dist/src/{pythonUtils-Cldx7huE.js → pythonUtils-C4tltmIn.js} +3 -3
- package/dist/src/{pythonUtils-tAJvvpS-.cjs → pythonUtils-CoLaCwNY.cjs} +3 -3
- package/dist/src/{pythonUtils-C2UQ30Rz.js → pythonUtils-DMO68Jg7.js} +3 -3
- package/dist/src/{pythonUtils-CnndUbW-.js → pythonUtils-DNqbnRdx.js} +3 -3
- package/dist/src/{quiverai-DR0SnIQV.js → quiverai-BSS9a7wV.js} +3 -3
- package/dist/src/{quiverai-CtWi6x_g.js → quiverai-Bk1KrvL6.js} +4 -4
- package/dist/src/{quiverai-DFotyafY.cjs → quiverai-Bpx6MZ7T.cjs} +3 -3
- package/dist/src/{quiverai-aPPvXOgn.js → quiverai-CPKhWgaT.js} +4 -4
- package/dist/src/{render-DHIZ6_k8.js → render-7uNJ2V14.js} +2 -2
- package/dist/src/{render-CH-62LbA.js → render-DlscvAUJ.js} +1 -1
- package/dist/src/{render-CMEpfLaO.js → render-eui5p5mL.js} +2 -2
- package/dist/src/{render-CgVDrJmM.js → render-nj-UaPdn.js} +2 -2
- package/dist/src/{render-DfQSFxGE.cjs → render-tG6ir9_g.cjs} +1 -1
- package/dist/src/{responses--OsX2aYW.js → responses-1ztiVYsx.js} +49 -15
- package/dist/src/{responses-DL9m8CyY.js → responses-B8haB-mD.js} +49 -15
- package/dist/src/{responses-C-flexAY.js → responses-BiaBguAu.js} +49 -15
- package/dist/src/{responses-Bi9vBuW_.cjs → responses-CF-ayauu.cjs} +48 -14
- package/dist/src/rubyUtils-4hjGxvju.js +3 -0
- package/dist/src/{rubyUtils-DVLeA2jg.js → rubyUtils-BI0p46eZ.js} +3 -3
- package/dist/src/{rubyUtils-DsGrTx8R.js → rubyUtils-CIQFnVz4.js} +3 -3
- package/dist/src/rubyUtils-CO-tuszQ.cjs +2 -0
- package/dist/src/{rubyUtils-CYSQEG4a.js → rubyUtils-DGnoCYL2.js} +3 -3
- package/dist/src/{rubyUtils-B6eljPuh.cjs → rubyUtils-DoifqkiA.cjs} +4 -3
- package/dist/src/{sagemaker-BveBvuxm.js → sagemaker-BDLeW29y.js} +12 -12
- package/dist/src/{sagemaker-D67yzMzs.js → sagemaker-C5T60MKf.js} +13 -13
- package/dist/src/{sagemaker-BVkaG2-l.js → sagemaker-ClS_NB07.js} +13 -13
- package/dist/src/{sagemaker-XnfhheQv.cjs → sagemaker-ljtY12VM.cjs} +12 -12
- package/dist/src/{scanner-1DqWi1Ej.js → scanner-nOCWNIXa.js} +7 -7
- package/dist/src/server/index.js +1067 -265
- package/dist/src/{server-Dx2TyCH2.cjs → server-BEECpeGG.cjs} +5 -5
- package/dist/src/{server-BNYztJkh.js → server-ByiF3qlg.js} +9 -8
- package/dist/src/{server-BSB45Nt9.js → server-ByxbqAcQ.js} +8 -7
- package/dist/src/{server-DaA2eR26.cjs → server-C0XKRNB_.cjs} +1 -1
- package/dist/src/server-C_15p79-.js +3 -0
- package/dist/src/{server-D6Il2Sob.js → server-gyd6d4Hc.js} +5 -5
- package/dist/src/{signal-CE5G3a7x.js → signal-DTtUuU3l.js} +3 -3
- package/dist/src/{slack-acRb0IqQ.js → slack-4zZX1OKP.js} +1 -1
- package/dist/src/{slack-1Rhq0EoV.cjs → slack-BLlsDpfG.cjs} +1 -1
- package/dist/src/{slack-D5Wpy8LM.js → slack-BPYLQLgb.js} +2 -2
- package/dist/src/{slack-DDUe-5MC.js → slack-Bamy_7te.js} +2 -2
- package/dist/src/{store-DAAyxcy6.cjs → store-2K0kDi80.cjs} +2 -2
- package/dist/src/{store-Dn9HUkdW.js → store-2OXm_eBY.js} +3 -3
- package/dist/src/store-BELqNwvz.js +3 -0
- package/dist/src/{store-M0b1WfYb.js → store-BPkzEyFM.js} +2 -2
- package/dist/src/{store-CYEy5J2D.js → store-CPh25336.js} +3 -3
- package/dist/src/store-uQZ4AjPe.cjs +2 -0
- package/dist/src/{tables-CsWou1Bx.js → tables-BMSOS2Gg.js} +3 -3
- package/dist/src/{tables-DUfh1F7Z.cjs → tables-CXbaZ9y1.cjs} +2 -2
- package/dist/src/{tables-C4CH3zRr.js → tables-NlvH23ky.js} +3 -3
- package/dist/src/{tables-DQ4WU5tX.js → tables-WgdUZ8Ck.js} +2 -2
- package/dist/src/{telemetry-dbaJ0E98.js → telemetry--iqaGyaS.js} +5 -4
- package/dist/src/{telemetry-Dsw_faFj.cjs → telemetry-CEQxGnMZ.cjs} +7 -6
- package/dist/src/{telemetry-Dvqxv3YC.js → telemetry-CgdVGV8N.js} +4 -3
- package/dist/src/{telemetry-CQPez_Jp.js → telemetry-DWdGHvEf.js} +5 -4
- package/dist/src/telemetry-DjNoC_n3.cjs +2 -0
- package/dist/src/telemetry-ZdPZc0fm.js +3 -0
- package/dist/src/{text-BVi-cLPJ.cjs → text-BiNME7QG.cjs} +1 -1
- package/dist/src/{text-KvuD2Iko.js → text-D4lz-Jg_.js} +1 -1
- package/dist/src/{text-DHxdyQqT.js → text-DDQP0tuQ.js} +1 -1
- package/dist/src/{text-CZr46tp_.js → text-NWvfMfkF.js} +1 -1
- package/dist/src/{tokenUsageUtils-CXrvO-wA.js → tokenUsageUtils-2wIvAhB3.js} +1 -1
- package/dist/src/{tokenUsageUtils-C-bmyHoE.js → tokenUsageUtils-4c780gFd.js} +1 -1
- package/dist/src/tokenUsageUtils-BjVkdk18.js +142 -0
- package/dist/src/{tokenUsageUtils-Bb7DkZPz.cjs → tokenUsageUtils-C9odhsbW.cjs} +1 -1
- package/dist/src/{transcription-DuWDupG7.js → transcription-84t4ALo2.js} +5 -5
- package/dist/src/{transcription-CJspiD2c.js → transcription-Bm2emLmJ.js} +6 -6
- package/dist/src/{transcription-BvjmiYB1.cjs → transcription-CZ4LG5hQ.cjs} +5 -5
- package/dist/src/{transcription-V2HaAmy2.js → transcription-D7Q0vJsh.js} +6 -6
- package/dist/src/{transform-zDhMmzwX.js → transform-B-b6Cq-q.js} +5 -5
- package/dist/src/transform-BQt0BeAW.js +3 -0
- package/dist/src/{transform-DgKlRr73.cjs → transform-Bq5oqC0s.cjs} +1 -1
- package/dist/src/{transform-CUnzlsbn.cjs → transform-C9izGX54.cjs} +4 -4
- package/dist/src/{transform-DYX1_Xnh.js → transform-CwbAZ84V.js} +5 -5
- package/dist/src/{transform-CTeuTR3S.cjs → transform-Dg4LcO1Y.cjs} +6 -6
- package/dist/src/{transform-CG0ehZNG.js → transform-DtooZqYY.js} +6 -6
- package/dist/src/{transform-UN5UGu8U.js → transform-DzCF-wqV.js} +5 -5
- package/dist/src/{transform-lQrDE1BQ.js → transform-_DpNB4qp.js} +5 -5
- package/dist/src/{transform-Bbg6A8Jk.js → transform-eGiUAv86.js} +4 -4
- package/dist/src/{transformersAvailability-Cju9mHgR.cjs → transformersAvailability-B22swDxr.cjs} +1 -1
- package/dist/src/{transformersAvailability-CcHusyhw.js → transformersAvailability-lvCCvuPT.js} +1 -1
- package/dist/src/{transformersAvailability-DLlROWhg.js → transformersAvailability-rJGPccjr.js} +1 -1
- package/dist/src/{types-Bgh5SOn6.js → types-BDjGOq4E.js} +4 -2
- package/dist/src/{types-Dm9JM6Vb.js → types-BVH9hjgW.js} +4 -2
- package/dist/src/{types-CeaeaZdP.cjs → types-CgG2rKiW.cjs} +151 -149
- package/dist/src/{types-BGQDAP8i.js → types-DNRZVOue.js} +152 -150
- package/dist/src/{util-C8e5uydV.js → util-3pBZZb_H.js} +142 -17
- package/dist/src/{util-CN3SrLT4.cjs → util-A5_ZsQUn.cjs} +65 -43
- package/dist/src/{util-D3q0WQ-0.js → util-B9CNhyac.js} +66 -44
- package/dist/src/{util-DxWpWjhc.js → util-BQOCAHQC.js} +700 -575
- package/dist/src/{util-BYvQUPp7.js → util-BVXcTwXu.js} +3 -3
- package/dist/src/{util-D9TisOyk.js → util-BlFVL0UF.js} +65 -43
- package/dist/src/{util-C9J8ahRn.js → util-C-kmRosx.js} +66 -44
- package/dist/src/{util-DvU2Pw8c.js → util-DFPeFkiV.js} +3 -3
- package/dist/src/{util-DDs-7g6-.js → util-DN0-b81k.js} +3 -3
- package/dist/src/{util-olYL5C6N.cjs → util-Dpmm_dAI.cjs} +3 -3
- package/dist/src/{util-oGMLA7vc.js → util-Dub0f_ej.js} +700 -575
- package/dist/src/{util-Bxn8emtE.cjs → util-DvpHnLt0.cjs} +718 -570
- package/dist/src/{utils-DJfvjyMj.js → utils-BUMN8orw.js} +3 -3
- package/dist/src/{utils-B05gLxER.cjs → utils-DkVeShIB.cjs} +2 -2
- package/dist/src/{utils-BLJKfv0y.js → utils-kt7lv30R.js} +3 -3
- package/dist/src/{utils-hXtCYanr.js → utils-o8S5huU2.js} +2 -2
- package/dist/src/version-0frU0UTr.js +16 -0
- package/dist/src/version-CbpiUINz.js +17 -0
- package/dist/src/version-CbuBKu2U.js +16 -0
- package/dist/src/version-D9zu9FWB.cjs +27 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +22 -20
- package/dist/src/app/assets/Report-CQYFezYu.js +0 -1
- package/dist/src/app/assets/index-BzJt18Jz.js +0 -385
- package/dist/src/cache-Cr9oLMUa.js +0 -3
- package/dist/src/cloud-Hphvo8kr.js +0 -3
- package/dist/src/codex-sdk-BAmYE7qy.js +0 -3
- package/dist/src/evalResult-D8MT9p0s.js +0 -3
- package/dist/src/evalResult-Dvc-iucu.cjs +0 -2
- package/dist/src/evaluator-CVessDWe.js +0 -3
- package/dist/src/fetch-C7bGKDlQ.js +0 -3
- package/dist/src/graders-BOAzQEUe.cjs +0 -2
- package/dist/src/graders-D4BTsZdG2.js +0 -3
- package/dist/src/graders-DOJK1XpV.js +0 -2
- package/dist/src/graders-NAv9LcBn.js +0 -2
- package/dist/src/rubyUtils-D1L2d3jb.js +0 -3
- package/dist/src/rubyUtils-DUbq4tff.cjs +0 -2
- package/dist/src/server-DCtHUqlp.js +0 -3
- package/dist/src/store-CWOSz6D_.cjs +0 -2
- package/dist/src/store-DCDBhv7B.js +0 -3
- package/dist/src/telemetry-C1IqxcdW.js +0 -3
- package/dist/src/telemetry-C4ZEa_es.cjs +0 -2
- package/dist/src/transform-M6ITAESf.js +0 -3
- /package/dist/src/{evalResult-DElBuddX.js → evalResult-spPqh1G_.js} +0 -0
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
const require_logger = require("./logger-COuQb2xB.cjs");
|
|
2
2
|
const require_invariant = require("./invariant-kfQ8Bu82.cjs");
|
|
3
|
+
const require_version = require("./version-D9zu9FWB.cjs");
|
|
3
4
|
let fs = require("fs");
|
|
4
5
|
fs = require_logger.__toESM(fs);
|
|
5
6
|
let path = require("path");
|
|
6
7
|
path = require_logger.__toESM(path);
|
|
7
8
|
let js_yaml = require("js-yaml");
|
|
8
9
|
js_yaml = require_logger.__toESM(js_yaml);
|
|
9
|
-
let util = require("util");
|
|
10
10
|
let fs_promises = require("fs/promises");
|
|
11
11
|
fs_promises = require_logger.__toESM(fs_promises);
|
|
12
12
|
let proxy_from_env = require("proxy-from-env");
|
|
13
13
|
let undici = require("undici");
|
|
14
|
+
let util = require("util");
|
|
14
15
|
let zlib = require("zlib");
|
|
15
16
|
//#region src/providers/constants.ts
|
|
16
17
|
const FILE_METADATA_KEY = "_promptfooFileMetadata";
|
|
@@ -19,19 +20,6 @@ const FILE_METADATA_KEY = "_promptfooFileMetadata";
|
|
|
19
20
|
* Used to distinguish human ratings from automated assertions.
|
|
20
21
|
*/
|
|
21
22
|
const HUMAN_ASSERTION_TYPE = "human";
|
|
22
|
-
//#endregion
|
|
23
|
-
//#region src/version.ts
|
|
24
|
-
/**
|
|
25
|
-
* Application version from package.json.
|
|
26
|
-
* Injected at build time, or read from npm environment in development.
|
|
27
|
-
*/
|
|
28
|
-
const VERSION = "0.121.4";
|
|
29
|
-
/**
|
|
30
|
-
* PostHog analytics key.
|
|
31
|
-
* Only populated during production builds via PROMPTFOO_POSTHOG_KEY env var.
|
|
32
|
-
* Empty string in development/test.
|
|
33
|
-
*/
|
|
34
|
-
const POSTHOG_KEY = "phc_E5n5uHnDo2eREJL1uqX1cIlbkoRby4yFWt3V94HqRRg";
|
|
35
23
|
function getShareApiBaseUrl() {
|
|
36
24
|
return require_logger.getEnvString("PROMPTFOO_REMOTE_API_BASE_URL") || "https://api.promptfoo.app";
|
|
37
25
|
}
|
|
@@ -47,6 +35,220 @@ const CONSENT_ENDPOINT = "https://api.promptfoo.dev/consent";
|
|
|
47
35
|
const EVENTS_ENDPOINT = "https://a.promptfoo.app";
|
|
48
36
|
const R_ENDPOINT = "https://r.promptfoo.app/";
|
|
49
37
|
//#endregion
|
|
38
|
+
//#region src/globalConfig/globalConfig.ts
|
|
39
|
+
/**
|
|
40
|
+
* Functions for manipulating the global configuration file, which lives at
|
|
41
|
+
* ~/.promptfoo/promptfoo.yaml by default.
|
|
42
|
+
*/
|
|
43
|
+
function writeGlobalConfig(config) {
|
|
44
|
+
fs.writeFileSync(path.join(require_logger.getConfigDirectoryPath(true), "promptfoo.yaml"), js_yaml.default.dump(config));
|
|
45
|
+
}
|
|
46
|
+
function readGlobalConfig() {
|
|
47
|
+
const configDir = require_logger.getConfigDirectoryPath();
|
|
48
|
+
const configFilePath = path.join(configDir, "promptfoo.yaml");
|
|
49
|
+
let globalConfig = { id: crypto.randomUUID() };
|
|
50
|
+
if (fs.existsSync(configFilePath)) {
|
|
51
|
+
globalConfig = js_yaml.default.load(fs.readFileSync(configFilePath, "utf-8")) || {};
|
|
52
|
+
if (!globalConfig?.id) {
|
|
53
|
+
globalConfig = {
|
|
54
|
+
...globalConfig,
|
|
55
|
+
id: crypto.randomUUID()
|
|
56
|
+
};
|
|
57
|
+
writeGlobalConfig(globalConfig);
|
|
58
|
+
}
|
|
59
|
+
} else {
|
|
60
|
+
if (!fs.existsSync(configDir)) fs.mkdirSync(configDir, { recursive: true });
|
|
61
|
+
fs.writeFileSync(configFilePath, js_yaml.default.dump(globalConfig));
|
|
62
|
+
}
|
|
63
|
+
return globalConfig;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Merges the top-level keys into existing config.
|
|
67
|
+
* @param partialConfig New keys to merge into the existing config.
|
|
68
|
+
*/
|
|
69
|
+
function writeGlobalConfigPartial(partialConfig) {
|
|
70
|
+
const updatedConfig = { ...readGlobalConfig() };
|
|
71
|
+
Object.entries(partialConfig).forEach(([key, value]) => {
|
|
72
|
+
if (value !== void 0 && value !== null) updatedConfig[key] = value;
|
|
73
|
+
else delete updatedConfig[key];
|
|
74
|
+
});
|
|
75
|
+
writeGlobalConfig(updatedConfig);
|
|
76
|
+
}
|
|
77
|
+
const API_HOST = require_logger.getEnvString("API_HOST", "https://api.promptfoo.app");
|
|
78
|
+
const SHARING_CUTOFF_DATE = /* @__PURE__ */ new Date("2026-03-09T00:00:00Z");
|
|
79
|
+
var CloudConfig = class {
|
|
80
|
+
config;
|
|
81
|
+
constructor() {
|
|
82
|
+
const savedConfig = readGlobalConfig()?.cloud || {};
|
|
83
|
+
this.config = {
|
|
84
|
+
appUrl: savedConfig.appUrl || "https://www.promptfoo.app",
|
|
85
|
+
apiHost: savedConfig.apiHost,
|
|
86
|
+
apiKey: savedConfig.apiKey,
|
|
87
|
+
sharing: savedConfig.sharing,
|
|
88
|
+
currentOrganizationId: savedConfig.currentOrganizationId,
|
|
89
|
+
currentTeamId: savedConfig.currentTeamId,
|
|
90
|
+
teams: savedConfig.teams
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Returns the API key from config file or PROMPTFOO_API_KEY environment variable.
|
|
95
|
+
* Config file takes precedence over environment variable.
|
|
96
|
+
*/
|
|
97
|
+
resolveApiKey() {
|
|
98
|
+
return this.config.apiKey || process.env.PROMPTFOO_API_KEY;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Returns the API host from config file, PROMPTFOO_CLOUD_API_URL environment variable,
|
|
102
|
+
* or defaults to the standard cloud API host.
|
|
103
|
+
* Config file takes precedence over environment variable.
|
|
104
|
+
*/
|
|
105
|
+
resolveApiHost() {
|
|
106
|
+
return this.config.apiHost || process.env.PROMPTFOO_CLOUD_API_URL || API_HOST;
|
|
107
|
+
}
|
|
108
|
+
isEnabled() {
|
|
109
|
+
return !!this.resolveApiKey();
|
|
110
|
+
}
|
|
111
|
+
setApiHost(apiHost) {
|
|
112
|
+
this.config.apiHost = apiHost;
|
|
113
|
+
this.saveConfig();
|
|
114
|
+
}
|
|
115
|
+
setApiKey(apiKey) {
|
|
116
|
+
this.config.apiKey = apiKey;
|
|
117
|
+
this.saveConfig();
|
|
118
|
+
}
|
|
119
|
+
getApiKey() {
|
|
120
|
+
return this.resolveApiKey();
|
|
121
|
+
}
|
|
122
|
+
getApiHost() {
|
|
123
|
+
return this.resolveApiHost();
|
|
124
|
+
}
|
|
125
|
+
setAppUrl(appUrl) {
|
|
126
|
+
this.config.appUrl = appUrl;
|
|
127
|
+
this.saveConfig();
|
|
128
|
+
}
|
|
129
|
+
getAppUrl() {
|
|
130
|
+
return this.config.appUrl;
|
|
131
|
+
}
|
|
132
|
+
getSharing() {
|
|
133
|
+
return this.config.sharing;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Sets the sharing preference. Note: this value is only updated at authentication time
|
|
137
|
+
* (via `validateAndSetApiToken`) and may become stale if the user's license status
|
|
138
|
+
* changes between re-authentications.
|
|
139
|
+
*/
|
|
140
|
+
setSharing(sharing) {
|
|
141
|
+
this.config.sharing = sharing;
|
|
142
|
+
this.saveConfig();
|
|
143
|
+
}
|
|
144
|
+
delete() {
|
|
145
|
+
writeGlobalConfigPartial({ cloud: {} });
|
|
146
|
+
this.reload();
|
|
147
|
+
}
|
|
148
|
+
saveConfig() {
|
|
149
|
+
writeGlobalConfigPartial({ cloud: this.config });
|
|
150
|
+
this.reload();
|
|
151
|
+
}
|
|
152
|
+
reload() {
|
|
153
|
+
const savedConfig = readGlobalConfig()?.cloud || {};
|
|
154
|
+
this.config = {
|
|
155
|
+
appUrl: savedConfig.appUrl || "https://www.promptfoo.app",
|
|
156
|
+
apiHost: savedConfig.apiHost,
|
|
157
|
+
apiKey: savedConfig.apiKey,
|
|
158
|
+
sharing: savedConfig.sharing,
|
|
159
|
+
currentOrganizationId: savedConfig.currentOrganizationId,
|
|
160
|
+
currentTeamId: savedConfig.currentTeamId,
|
|
161
|
+
teams: savedConfig.teams
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
saveValidatedApiToken(token, apiHost, user, app, hasActiveLicense) {
|
|
165
|
+
this.setApiKey(token);
|
|
166
|
+
this.setApiHost(apiHost);
|
|
167
|
+
this.setAppUrl(app.url);
|
|
168
|
+
if (typeof hasActiveLicense === "boolean") {
|
|
169
|
+
const createdAt = user?.createdAt ? new Date(user.createdAt) : null;
|
|
170
|
+
const isGrandfathered = createdAt != null && createdAt < SHARING_CUTOFF_DATE;
|
|
171
|
+
this.setSharing(hasActiveLicense || isGrandfathered);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
async validateApiToken(token, apiHost) {
|
|
175
|
+
try {
|
|
176
|
+
const { fetchWithProxy } = await Promise.resolve().then(() => fetch_exports);
|
|
177
|
+
const response = await fetchWithProxy(`${apiHost}/api/v1/users/me`, { headers: { Authorization: `Bearer ${token}` } });
|
|
178
|
+
if (!response.ok) {
|
|
179
|
+
const errorMessage = await response.text();
|
|
180
|
+
require_logger.logger.error(`[Cloud] Failed to validate API token: ${errorMessage}. HTTP Status: ${response.status} - ${response.statusText}.`);
|
|
181
|
+
throw new Error("Failed to validate API token: " + response.statusText);
|
|
182
|
+
}
|
|
183
|
+
const { user, organization, app, hasActiveLicense } = await response.json();
|
|
184
|
+
return {
|
|
185
|
+
user,
|
|
186
|
+
organization,
|
|
187
|
+
app,
|
|
188
|
+
...typeof hasActiveLicense === "boolean" ? { hasActiveLicense } : {}
|
|
189
|
+
};
|
|
190
|
+
} catch (err) {
|
|
191
|
+
const error = err;
|
|
192
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
193
|
+
require_logger.logger.error(`[Cloud] Failed to validate API token with host ${apiHost}: ${errorMessage}`);
|
|
194
|
+
if (error.cause) require_logger.logger.error(`Cause: ${error.cause}`);
|
|
195
|
+
throw error;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
async validateAndSetApiToken(token, apiHost) {
|
|
199
|
+
const { user, organization, app, hasActiveLicense } = await this.validateApiToken(token, apiHost);
|
|
200
|
+
this.saveValidatedApiToken(token, apiHost, user, app, hasActiveLicense);
|
|
201
|
+
return {
|
|
202
|
+
user,
|
|
203
|
+
organization,
|
|
204
|
+
app,
|
|
205
|
+
hasActiveLicense: typeof hasActiveLicense === "boolean" ? hasActiveLicense : false
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
getCurrentOrganizationId() {
|
|
209
|
+
return this.config.currentOrganizationId;
|
|
210
|
+
}
|
|
211
|
+
setCurrentOrganization(organizationId) {
|
|
212
|
+
this.config.currentOrganizationId = organizationId;
|
|
213
|
+
this.saveConfig();
|
|
214
|
+
}
|
|
215
|
+
getCurrentTeamId(organizationId) {
|
|
216
|
+
if (organizationId) return this.config.teams?.[organizationId]?.currentTeamId;
|
|
217
|
+
return this.config.currentTeamId;
|
|
218
|
+
}
|
|
219
|
+
setCurrentTeamId(teamId, organizationId) {
|
|
220
|
+
if (organizationId) {
|
|
221
|
+
if (!this.config.teams) this.config.teams = {};
|
|
222
|
+
if (!this.config.teams[organizationId]) this.config.teams[organizationId] = {};
|
|
223
|
+
this.config.teams[organizationId].currentTeamId = teamId;
|
|
224
|
+
} else this.config.currentTeamId = teamId;
|
|
225
|
+
this.saveConfig();
|
|
226
|
+
}
|
|
227
|
+
clearCurrentTeamId(organizationId) {
|
|
228
|
+
if (organizationId) {
|
|
229
|
+
if (this.config.teams?.[organizationId]) delete this.config.teams[organizationId].currentTeamId;
|
|
230
|
+
} else delete this.config.currentTeamId;
|
|
231
|
+
this.saveConfig();
|
|
232
|
+
}
|
|
233
|
+
cacheTeams(teams, organizationId) {
|
|
234
|
+
if (organizationId) {
|
|
235
|
+
if (!this.config.teams) this.config.teams = {};
|
|
236
|
+
if (!this.config.teams[organizationId]) this.config.teams[organizationId] = {};
|
|
237
|
+
this.config.teams[organizationId].cache = teams.map((t) => ({
|
|
238
|
+
id: t.id,
|
|
239
|
+
name: t.name,
|
|
240
|
+
slug: t.slug,
|
|
241
|
+
lastFetched: (/* @__PURE__ */ new Date()).toISOString()
|
|
242
|
+
}));
|
|
243
|
+
}
|
|
244
|
+
this.saveConfig();
|
|
245
|
+
}
|
|
246
|
+
getCachedTeams(organizationId) {
|
|
247
|
+
if (organizationId) return this.config.teams?.[organizationId]?.cache;
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
const cloudConfig = new CloudConfig();
|
|
251
|
+
//#endregion
|
|
50
252
|
//#region src/providers/shared.ts
|
|
51
253
|
/**
|
|
52
254
|
* The default timeout for API requests in milliseconds.
|
|
@@ -71,8 +273,9 @@ function calculateCost(modelName, config, promptTokens, completionTokens, models
|
|
|
71
273
|
if (!Number.isFinite(promptTokens) || !Number.isFinite(completionTokens) || typeof promptTokens === "undefined" || typeof completionTokens === "undefined") return;
|
|
72
274
|
const model = models.find((m) => m.id === modelName);
|
|
73
275
|
if (!model || !model.cost) return;
|
|
74
|
-
const
|
|
75
|
-
const
|
|
276
|
+
const longContextCost = model.cost.longContext && promptTokens > model.cost.longContext.threshold ? model.cost.longContext : void 0;
|
|
277
|
+
const inputCost = config.cost ?? longContextCost?.input ?? model.cost.input;
|
|
278
|
+
const outputCost = config.cost ?? longContextCost?.output ?? model.cost.output;
|
|
76
279
|
return inputCost * promptTokens + outputCost * completionTokens;
|
|
77
280
|
}
|
|
78
281
|
/**
|
|
@@ -440,220 +643,6 @@ function getCurrentTimestamp() {
|
|
|
440
643
|
}
|
|
441
644
|
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
442
645
|
//#endregion
|
|
443
|
-
//#region src/globalConfig/globalConfig.ts
|
|
444
|
-
/**
|
|
445
|
-
* Functions for manipulating the global configuration file, which lives at
|
|
446
|
-
* ~/.promptfoo/promptfoo.yaml by default.
|
|
447
|
-
*/
|
|
448
|
-
function writeGlobalConfig(config) {
|
|
449
|
-
fs.writeFileSync(path.join(require_logger.getConfigDirectoryPath(true), "promptfoo.yaml"), js_yaml.default.dump(config));
|
|
450
|
-
}
|
|
451
|
-
function readGlobalConfig() {
|
|
452
|
-
const configDir = require_logger.getConfigDirectoryPath();
|
|
453
|
-
const configFilePath = path.join(configDir, "promptfoo.yaml");
|
|
454
|
-
let globalConfig = { id: crypto.randomUUID() };
|
|
455
|
-
if (fs.existsSync(configFilePath)) {
|
|
456
|
-
globalConfig = js_yaml.default.load(fs.readFileSync(configFilePath, "utf-8")) || {};
|
|
457
|
-
if (!globalConfig?.id) {
|
|
458
|
-
globalConfig = {
|
|
459
|
-
...globalConfig,
|
|
460
|
-
id: crypto.randomUUID()
|
|
461
|
-
};
|
|
462
|
-
writeGlobalConfig(globalConfig);
|
|
463
|
-
}
|
|
464
|
-
} else {
|
|
465
|
-
if (!fs.existsSync(configDir)) fs.mkdirSync(configDir, { recursive: true });
|
|
466
|
-
fs.writeFileSync(configFilePath, js_yaml.default.dump(globalConfig));
|
|
467
|
-
}
|
|
468
|
-
return globalConfig;
|
|
469
|
-
}
|
|
470
|
-
/**
|
|
471
|
-
* Merges the top-level keys into existing config.
|
|
472
|
-
* @param partialConfig New keys to merge into the existing config.
|
|
473
|
-
*/
|
|
474
|
-
function writeGlobalConfigPartial(partialConfig) {
|
|
475
|
-
const updatedConfig = { ...readGlobalConfig() };
|
|
476
|
-
Object.entries(partialConfig).forEach(([key, value]) => {
|
|
477
|
-
if (value !== void 0 && value !== null) updatedConfig[key] = value;
|
|
478
|
-
else delete updatedConfig[key];
|
|
479
|
-
});
|
|
480
|
-
writeGlobalConfig(updatedConfig);
|
|
481
|
-
}
|
|
482
|
-
const API_HOST = require_logger.getEnvString("API_HOST", "https://api.promptfoo.app");
|
|
483
|
-
const SHARING_CUTOFF_DATE = /* @__PURE__ */ new Date("2026-03-09T00:00:00Z");
|
|
484
|
-
var CloudConfig = class {
|
|
485
|
-
config;
|
|
486
|
-
constructor() {
|
|
487
|
-
const savedConfig = readGlobalConfig()?.cloud || {};
|
|
488
|
-
this.config = {
|
|
489
|
-
appUrl: savedConfig.appUrl || "https://www.promptfoo.app",
|
|
490
|
-
apiHost: savedConfig.apiHost,
|
|
491
|
-
apiKey: savedConfig.apiKey,
|
|
492
|
-
sharing: savedConfig.sharing,
|
|
493
|
-
currentOrganizationId: savedConfig.currentOrganizationId,
|
|
494
|
-
currentTeamId: savedConfig.currentTeamId,
|
|
495
|
-
teams: savedConfig.teams
|
|
496
|
-
};
|
|
497
|
-
}
|
|
498
|
-
/**
|
|
499
|
-
* Returns the API key from config file or PROMPTFOO_API_KEY environment variable.
|
|
500
|
-
* Config file takes precedence over environment variable.
|
|
501
|
-
*/
|
|
502
|
-
resolveApiKey() {
|
|
503
|
-
return this.config.apiKey || process.env.PROMPTFOO_API_KEY;
|
|
504
|
-
}
|
|
505
|
-
/**
|
|
506
|
-
* Returns the API host from config file, PROMPTFOO_CLOUD_API_URL environment variable,
|
|
507
|
-
* or defaults to the standard cloud API host.
|
|
508
|
-
* Config file takes precedence over environment variable.
|
|
509
|
-
*/
|
|
510
|
-
resolveApiHost() {
|
|
511
|
-
return this.config.apiHost || process.env.PROMPTFOO_CLOUD_API_URL || API_HOST;
|
|
512
|
-
}
|
|
513
|
-
isEnabled() {
|
|
514
|
-
return !!this.resolveApiKey();
|
|
515
|
-
}
|
|
516
|
-
setApiHost(apiHost) {
|
|
517
|
-
this.config.apiHost = apiHost;
|
|
518
|
-
this.saveConfig();
|
|
519
|
-
}
|
|
520
|
-
setApiKey(apiKey) {
|
|
521
|
-
this.config.apiKey = apiKey;
|
|
522
|
-
this.saveConfig();
|
|
523
|
-
}
|
|
524
|
-
getApiKey() {
|
|
525
|
-
return this.resolveApiKey();
|
|
526
|
-
}
|
|
527
|
-
getApiHost() {
|
|
528
|
-
return this.resolveApiHost();
|
|
529
|
-
}
|
|
530
|
-
setAppUrl(appUrl) {
|
|
531
|
-
this.config.appUrl = appUrl;
|
|
532
|
-
this.saveConfig();
|
|
533
|
-
}
|
|
534
|
-
getAppUrl() {
|
|
535
|
-
return this.config.appUrl;
|
|
536
|
-
}
|
|
537
|
-
getSharing() {
|
|
538
|
-
return this.config.sharing;
|
|
539
|
-
}
|
|
540
|
-
/**
|
|
541
|
-
* Sets the sharing preference. Note: this value is only updated at authentication time
|
|
542
|
-
* (via `validateAndSetApiToken`) and may become stale if the user's license status
|
|
543
|
-
* changes between re-authentications.
|
|
544
|
-
*/
|
|
545
|
-
setSharing(sharing) {
|
|
546
|
-
this.config.sharing = sharing;
|
|
547
|
-
this.saveConfig();
|
|
548
|
-
}
|
|
549
|
-
delete() {
|
|
550
|
-
writeGlobalConfigPartial({ cloud: {} });
|
|
551
|
-
this.reload();
|
|
552
|
-
}
|
|
553
|
-
saveConfig() {
|
|
554
|
-
writeGlobalConfigPartial({ cloud: this.config });
|
|
555
|
-
this.reload();
|
|
556
|
-
}
|
|
557
|
-
reload() {
|
|
558
|
-
const savedConfig = readGlobalConfig()?.cloud || {};
|
|
559
|
-
this.config = {
|
|
560
|
-
appUrl: savedConfig.appUrl || "https://www.promptfoo.app",
|
|
561
|
-
apiHost: savedConfig.apiHost,
|
|
562
|
-
apiKey: savedConfig.apiKey,
|
|
563
|
-
sharing: savedConfig.sharing,
|
|
564
|
-
currentOrganizationId: savedConfig.currentOrganizationId,
|
|
565
|
-
currentTeamId: savedConfig.currentTeamId,
|
|
566
|
-
teams: savedConfig.teams
|
|
567
|
-
};
|
|
568
|
-
}
|
|
569
|
-
saveValidatedApiToken(token, apiHost, user, app, hasActiveLicense) {
|
|
570
|
-
this.setApiKey(token);
|
|
571
|
-
this.setApiHost(apiHost);
|
|
572
|
-
this.setAppUrl(app.url);
|
|
573
|
-
if (typeof hasActiveLicense === "boolean") {
|
|
574
|
-
const createdAt = user?.createdAt ? new Date(user.createdAt) : null;
|
|
575
|
-
const isGrandfathered = createdAt != null && createdAt < SHARING_CUTOFF_DATE;
|
|
576
|
-
this.setSharing(hasActiveLicense || isGrandfathered);
|
|
577
|
-
}
|
|
578
|
-
}
|
|
579
|
-
async validateApiToken(token, apiHost) {
|
|
580
|
-
try {
|
|
581
|
-
const { fetchWithProxy } = await Promise.resolve().then(() => fetch_exports);
|
|
582
|
-
const response = await fetchWithProxy(`${apiHost}/api/v1/users/me`, { headers: { Authorization: `Bearer ${token}` } });
|
|
583
|
-
if (!response.ok) {
|
|
584
|
-
const errorMessage = await response.text();
|
|
585
|
-
require_logger.logger.error(`[Cloud] Failed to validate API token: ${errorMessage}. HTTP Status: ${response.status} - ${response.statusText}.`);
|
|
586
|
-
throw new Error("Failed to validate API token: " + response.statusText);
|
|
587
|
-
}
|
|
588
|
-
const { user, organization, app, hasActiveLicense } = await response.json();
|
|
589
|
-
return {
|
|
590
|
-
user,
|
|
591
|
-
organization,
|
|
592
|
-
app,
|
|
593
|
-
...typeof hasActiveLicense === "boolean" ? { hasActiveLicense } : {}
|
|
594
|
-
};
|
|
595
|
-
} catch (err) {
|
|
596
|
-
const error = err;
|
|
597
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
598
|
-
require_logger.logger.error(`[Cloud] Failed to validate API token with host ${apiHost}: ${errorMessage}`);
|
|
599
|
-
if (error.cause) require_logger.logger.error(`Cause: ${error.cause}`);
|
|
600
|
-
throw error;
|
|
601
|
-
}
|
|
602
|
-
}
|
|
603
|
-
async validateAndSetApiToken(token, apiHost) {
|
|
604
|
-
const { user, organization, app, hasActiveLicense } = await this.validateApiToken(token, apiHost);
|
|
605
|
-
this.saveValidatedApiToken(token, apiHost, user, app, hasActiveLicense);
|
|
606
|
-
return {
|
|
607
|
-
user,
|
|
608
|
-
organization,
|
|
609
|
-
app,
|
|
610
|
-
hasActiveLicense: typeof hasActiveLicense === "boolean" ? hasActiveLicense : false
|
|
611
|
-
};
|
|
612
|
-
}
|
|
613
|
-
getCurrentOrganizationId() {
|
|
614
|
-
return this.config.currentOrganizationId;
|
|
615
|
-
}
|
|
616
|
-
setCurrentOrganization(organizationId) {
|
|
617
|
-
this.config.currentOrganizationId = organizationId;
|
|
618
|
-
this.saveConfig();
|
|
619
|
-
}
|
|
620
|
-
getCurrentTeamId(organizationId) {
|
|
621
|
-
if (organizationId) return this.config.teams?.[organizationId]?.currentTeamId;
|
|
622
|
-
return this.config.currentTeamId;
|
|
623
|
-
}
|
|
624
|
-
setCurrentTeamId(teamId, organizationId) {
|
|
625
|
-
if (organizationId) {
|
|
626
|
-
if (!this.config.teams) this.config.teams = {};
|
|
627
|
-
if (!this.config.teams[organizationId]) this.config.teams[organizationId] = {};
|
|
628
|
-
this.config.teams[organizationId].currentTeamId = teamId;
|
|
629
|
-
} else this.config.currentTeamId = teamId;
|
|
630
|
-
this.saveConfig();
|
|
631
|
-
}
|
|
632
|
-
clearCurrentTeamId(organizationId) {
|
|
633
|
-
if (organizationId) {
|
|
634
|
-
if (this.config.teams?.[organizationId]) delete this.config.teams[organizationId].currentTeamId;
|
|
635
|
-
} else delete this.config.currentTeamId;
|
|
636
|
-
this.saveConfig();
|
|
637
|
-
}
|
|
638
|
-
cacheTeams(teams, organizationId) {
|
|
639
|
-
if (organizationId) {
|
|
640
|
-
if (!this.config.teams) this.config.teams = {};
|
|
641
|
-
if (!this.config.teams[organizationId]) this.config.teams[organizationId] = {};
|
|
642
|
-
this.config.teams[organizationId].cache = teams.map((t) => ({
|
|
643
|
-
id: t.id,
|
|
644
|
-
name: t.name,
|
|
645
|
-
slug: t.slug,
|
|
646
|
-
lastFetched: (/* @__PURE__ */ new Date()).toISOString()
|
|
647
|
-
}));
|
|
648
|
-
}
|
|
649
|
-
this.saveConfig();
|
|
650
|
-
}
|
|
651
|
-
getCachedTeams(organizationId) {
|
|
652
|
-
if (organizationId) return this.config.teams?.[organizationId]?.cache;
|
|
653
|
-
}
|
|
654
|
-
};
|
|
655
|
-
const cloudConfig = new CloudConfig();
|
|
656
|
-
//#endregion
|
|
657
646
|
//#region src/util/fetch/monkeyPatchFetch.ts
|
|
658
647
|
const gzipAsync = (0, util.promisify)(zlib.gzip);
|
|
659
648
|
function isConnectionError(error) {
|
|
@@ -786,7 +775,7 @@ async function fetchWithProxy(url, options = {}, abortSignal) {
|
|
|
786
775
|
...options,
|
|
787
776
|
headers: {
|
|
788
777
|
...options.headers,
|
|
789
|
-
"x-promptfoo-version": VERSION
|
|
778
|
+
"x-promptfoo-version": require_version.VERSION
|
|
790
779
|
},
|
|
791
780
|
signal: combinedSignal
|
|
792
781
|
};
|
|
@@ -979,12 +968,6 @@ Object.defineProperty(exports, "LONG_RUNNING_MODEL_TIMEOUT_MS", {
|
|
|
979
968
|
return LONG_RUNNING_MODEL_TIMEOUT_MS;
|
|
980
969
|
}
|
|
981
970
|
});
|
|
982
|
-
Object.defineProperty(exports, "POSTHOG_KEY", {
|
|
983
|
-
enumerable: true,
|
|
984
|
-
get: function() {
|
|
985
|
-
return POSTHOG_KEY;
|
|
986
|
-
}
|
|
987
|
-
});
|
|
988
971
|
Object.defineProperty(exports, "REQUEST_TIMEOUT_MS", {
|
|
989
972
|
enumerable: true,
|
|
990
973
|
get: function() {
|
|
@@ -1003,12 +986,6 @@ Object.defineProperty(exports, "TERMINAL_MAX_WIDTH", {
|
|
|
1003
986
|
return TERMINAL_MAX_WIDTH;
|
|
1004
987
|
}
|
|
1005
988
|
});
|
|
1006
|
-
Object.defineProperty(exports, "VERSION", {
|
|
1007
|
-
enumerable: true,
|
|
1008
|
-
get: function() {
|
|
1009
|
-
return VERSION;
|
|
1010
|
-
}
|
|
1011
|
-
});
|
|
1012
989
|
Object.defineProperty(exports, "calculateCost", {
|
|
1013
990
|
enumerable: true,
|
|
1014
991
|
get: function() {
|
|
@@ -1160,4 +1137,4 @@ Object.defineProperty(exports, "writeGlobalConfigPartial", {
|
|
|
1160
1137
|
}
|
|
1161
1138
|
});
|
|
1162
1139
|
|
|
1163
|
-
//# sourceMappingURL=fetch-
|
|
1140
|
+
//# sourceMappingURL=fetch-NuqXW1Xb.cjs.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./chunk-DEq-mXcV.js";
|
|
2
|
-
import { S as getEnvBool, T as getEnvString, a as logger, i as logRequestResponse, k as state, p as sanitizeUrl, w as getEnvInt, x as getConfigDirectoryPath } from "./logger-
|
|
3
|
-
import {
|
|
2
|
+
import { S as getEnvBool, T as getEnvString, a as logger, i as logRequestResponse, k as state, p as sanitizeUrl, w as getEnvInt, x as getConfigDirectoryPath } from "./logger-KD8JjCRJ.js";
|
|
3
|
+
import { n as VERSION } from "./version-0frU0UTr.js";
|
|
4
|
+
import { t as invariant } from "./invariant-DIYf9sP1.js";
|
|
4
5
|
import * as fs$2 from "fs";
|
|
5
6
|
import * as path$1 from "path";
|
|
6
7
|
import path from "path";
|
|
@@ -17,19 +18,6 @@ const FILE_METADATA_KEY = "_promptfooFileMetadata";
|
|
|
17
18
|
* Used to distinguish human ratings from automated assertions.
|
|
18
19
|
*/
|
|
19
20
|
const HUMAN_ASSERTION_TYPE = "human";
|
|
20
|
-
//#endregion
|
|
21
|
-
//#region src/version.ts
|
|
22
|
-
/**
|
|
23
|
-
* Application version from package.json.
|
|
24
|
-
* Injected at build time, or read from npm environment in development.
|
|
25
|
-
*/
|
|
26
|
-
const VERSION = "0.121.4";
|
|
27
|
-
/**
|
|
28
|
-
* PostHog analytics key.
|
|
29
|
-
* Only populated during production builds via PROMPTFOO_POSTHOG_KEY env var.
|
|
30
|
-
* Empty string in development/test.
|
|
31
|
-
*/
|
|
32
|
-
const POSTHOG_KEY = "phc_E5n5uHnDo2eREJL1uqX1cIlbkoRby4yFWt3V94HqRRg";
|
|
33
21
|
function getShareApiBaseUrl() {
|
|
34
22
|
return getEnvString("PROMPTFOO_REMOTE_API_BASE_URL") || "https://api.promptfoo.app";
|
|
35
23
|
}
|
|
@@ -72,8 +60,9 @@ function calculateCost(modelName, config, promptTokens, completionTokens, models
|
|
|
72
60
|
if (!Number.isFinite(promptTokens) || !Number.isFinite(completionTokens) || typeof promptTokens === "undefined" || typeof completionTokens === "undefined") return;
|
|
73
61
|
const model = models.find((m) => m.id === modelName);
|
|
74
62
|
if (!model || !model.cost) return;
|
|
75
|
-
const
|
|
76
|
-
const
|
|
63
|
+
const longContextCost = model.cost.longContext && promptTokens > model.cost.longContext.threshold ? model.cost.longContext : void 0;
|
|
64
|
+
const inputCost = config.cost ?? longContextCost?.input ?? model.cost.input;
|
|
65
|
+
const outputCost = config.cost ?? longContextCost?.output ?? model.cost.output;
|
|
77
66
|
return inputCost * promptTokens + outputCost * completionTokens;
|
|
78
67
|
}
|
|
79
68
|
/**
|
|
@@ -938,6 +927,6 @@ async function fetchWithRetries(url, options = {}, timeout, maxRetries) {
|
|
|
938
927
|
throw new Error(`Request failed after ${maxRetries} retries: ${lastErrorMessage}`);
|
|
939
928
|
}
|
|
940
929
|
//#endregion
|
|
941
|
-
export { TERMINAL_MAX_WIDTH as A, toTitleCase as C, CONSENT_ENDPOINT as D, CLOUD_PROVIDER_PREFIX as E,
|
|
930
|
+
export { TERMINAL_MAX_WIDTH as A, toTitleCase as C, CONSENT_ENDPOINT as D, CLOUD_PROVIDER_PREFIX as E, FILE_METADATA_KEY as F, HUMAN_ASSERTION_TYPE as I, getDefaultShareViewBaseUrl as M, getShareApiBaseUrl as N, EVENTS_ENDPOINT as O, getShareViewBaseUrl as P, parseChatPrompt as S, transformTools as T, isOpenAIToolArray as _, CloudConfig as a, openaiToolChoiceToBedrock as b, writeGlobalConfig as c, sleep as d, parseRateLimitHeaders as f, calculateCost as g, REQUEST_TIMEOUT_MS as h, fetch_exports as i, getDefaultPort as j, R_ENDPOINT as k, writeGlobalConfigPartial as l, LONG_RUNNING_MODEL_TIMEOUT_MS as m, fetchWithRetries as n, cloudConfig as o, parseRetryAfter as p, fetchWithTimeout as r, readGlobalConfig as s, fetchWithProxy as t, getCurrentTimestamp as u, isOpenAIToolChoice as v, transformToolChoice as w, openaiToolsToBedrock as x, isPromptfooSampleTarget as y };
|
|
942
931
|
|
|
943
|
-
//# sourceMappingURL=fetch-
|
|
932
|
+
//# sourceMappingURL=fetch-Y5qX_kST.js.map
|
|
@@ -82,4 +82,4 @@ function isAudioFile(filePath) {
|
|
|
82
82
|
//#endregion
|
|
83
83
|
export { isVideoFile as a, isJavascriptFile as i, isAudioFile as n, isImageFile as r, JAVASCRIPT_EXTENSIONS as t };
|
|
84
84
|
|
|
85
|
-
//# sourceMappingURL=fileExtensions-
|
|
85
|
+
//# sourceMappingURL=fileExtensions-8CjoL7vB.js.map
|
|
@@ -82,4 +82,4 @@ function isAudioFile(filePath) {
|
|
|
82
82
|
//#endregion
|
|
83
83
|
export { isVideoFile as a, isJavascriptFile as i, isAudioFile as n, isImageFile as r, JAVASCRIPT_EXTENSIONS as t };
|
|
84
84
|
|
|
85
|
-
//# sourceMappingURL=fileExtensions-
|
|
85
|
+
//# sourceMappingURL=fileExtensions-BGh-W-HT.js.map
|
|
@@ -83,4 +83,4 @@ function isAudioFile(filePath) {
|
|
|
83
83
|
//#endregion
|
|
84
84
|
export { isVideoFile as a, isJavascriptFile as i, isAudioFile as n, isImageFile as r, JAVASCRIPT_EXTENSIONS as t };
|
|
85
85
|
|
|
86
|
-
//# sourceMappingURL=fileExtensions-
|
|
86
|
+
//# sourceMappingURL=fileExtensions-DysCsxNG.js.map
|