promptfoo 0.125.0 → 0.125.1
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/README.md +3 -3
- package/dist/src/accounts-BOxNYxVN.js +229 -0
- package/dist/src/accounts-BezXLdAW.cjs +276 -0
- package/dist/src/accounts-CPISMNlh.js +227 -0
- package/dist/src/accounts-vJBPs89d.js +222 -0
- package/dist/src/agentWorkspace-Bom7SpF2.js +592 -0
- package/dist/src/agentWorkspace-CEomAcws.cjs +619 -0
- package/dist/src/agentWorkspace-DPtMLrlI.js +593 -0
- package/dist/src/agentWorkspace-DkAeEYLz.js +592 -0
- package/dist/src/agentic-utils-121v7mJo.js +197 -0
- package/dist/src/agentic-utils-CBWD_rcd.cjs +237 -0
- package/dist/src/agentic-utils-D8wyQwPG.js +198 -0
- package/dist/src/agentic-utils-EP1QkQCs.js +197 -0
- package/dist/src/agents-Br3ah8iA.js +778 -0
- package/dist/src/agents-C5wj_UTv.js +777 -0
- package/dist/src/agents-C9Efp4mC.js +266 -0
- package/dist/src/agents-CQYwaVCO.js +267 -0
- package/dist/src/agents-CjCd4Vo8.js +777 -0
- package/dist/src/agents-DRWiCHYz.js +266 -0
- package/dist/src/agents-F2rhx0iL.cjs +266 -0
- package/dist/src/agents-RTYyy69h.cjs +777 -0
- package/dist/src/agents-api-CY72O86e.js +711 -0
- package/dist/src/agents-api-CsSsC21b.js +710 -0
- package/dist/src/agents-api-DN-ibDc8.js +710 -0
- package/dist/src/agents-api-cNDsCCv1.cjs +710 -0
- package/dist/src/ai.studio-Bj6Dyi6o.js +2 -0
- package/dist/src/ai.studio-C-e0LzyW.js +369 -0
- package/dist/src/ai.studio-CR8M6Aqf.cjs +391 -0
- package/dist/src/ai.studio-YKk7F0tv.js +374 -0
- package/dist/src/aimlapi-BGunsuTu.js +30 -0
- package/dist/src/aimlapi-BkzcfBsL.js +29 -0
- package/dist/src/aimlapi-DXFcEdP8.js +28 -0
- package/dist/src/aimlapi-r-8iCcAw.cjs +29 -0
- package/dist/src/anthropicMessages-7-YNRgQR.js +114 -0
- package/dist/src/anthropicMessages-C8m9Whrd.cjs +114 -0
- package/dist/src/anthropicMessages-DS1vXD0f.js +115 -0
- package/dist/src/anthropicMessages-DmvGkz-0.js +114 -0
- package/dist/src/app/assets/index-CrdXWTXm.js +392 -0
- package/dist/src/app/browser-inventory.json +4 -4
- package/dist/src/app/index.html +1 -1
- package/dist/src/audio-BLgFgyw-.cjs +104 -0
- package/dist/src/audio-C2sibT7Q.js +104 -0
- package/dist/src/audio-DXEXb03H.js +104 -0
- package/dist/src/audio-TkvojpwO.js +105 -0
- package/dist/src/authoritativeMarkupInjection-BAT9B-Wj.js +79 -0
- package/dist/src/authoritativeMarkupInjection-B_yHETKT.js +78 -0
- package/dist/src/authoritativeMarkupInjection-BfjecQ3Q.cjs +78 -0
- package/dist/src/authoritativeMarkupInjection-D-hDKrhD.js +78 -0
- package/dist/src/aws-B_9unI_-.js +1149 -0
- package/dist/src/aws-D0FY3qkc.js +2433 -0
- package/dist/src/aws-Dh1-a90n.js +2433 -0
- package/dist/src/aws-qskKGczY.cjs +2454 -0
- package/dist/src/base-CaWlBkVz.js +462 -0
- package/dist/src/base-CcViNwVs.js +255 -0
- package/dist/src/base-CsVbPJkU.cjs +467 -0
- package/dist/src/base-DNK9py25.js +255 -0
- package/dist/src/base-DlH5tjEZ.js +463 -0
- package/dist/src/base-DyLOZ_iX.js +256 -0
- package/dist/src/base-RRYXfG7l.cjs +305 -0
- package/dist/src/base-oXVgvtVn.js +462 -0
- package/dist/src/bedrock-BP17ZXbR.cjs +2 -0
- package/dist/src/bedrock-CsjM1dOt.js +1300 -0
- package/dist/src/bedrock-CzPwj8GO.js +1 -0
- package/dist/src/bedrock-eGXZw8oh.js +1 -0
- package/dist/src/bedrock-tSWjmXdj.js +2 -0
- package/dist/src/bestOfN-BQ93nUKV.js +160 -0
- package/dist/src/bestOfN-ByGGwlcb.cjs +161 -0
- package/dist/src/bestOfN-CbP7csHr.js +159 -0
- package/dist/src/bestOfN-xn6i2Xs2.js +159 -0
- package/dist/src/cache-CHq9hPz9.js +2 -0
- package/dist/src/cache-D-9eZN3I.js +754 -0
- package/dist/src/cache-DSm6t1MZ.js +741 -0
- package/dist/src/cache-DeF5zIEN.js +782 -0
- package/dist/src/cache-iG87oYan.cjs +856 -0
- package/dist/src/cerebras-CTtM4yMH.js +98 -0
- package/dist/src/cerebras-CogcJ3ce.cjs +97 -0
- package/dist/src/cerebras-DmkRypTh.js +97 -0
- package/dist/src/cerebras-GUp0B8JY.js +97 -0
- package/dist/src/chat-B4ihd3fw.js +226 -0
- package/dist/src/chat-B9cAQ_rS.js +227 -0
- package/dist/src/chat-BU7EB4R-.cjs +76 -0
- package/dist/src/chat-C8yxJ2-s.cjs +226 -0
- package/dist/src/chat-ClTFM3qq.js +934 -0
- package/dist/src/chat-Cnq0Is68.js +123 -0
- package/dist/src/chat-CwrurR57.cjs +987 -0
- package/dist/src/chat-D0lsojPv.js +124 -0
- package/dist/src/chat-D7_8yFIx.js +76 -0
- package/dist/src/chat-DCoETlLG.js +226 -0
- package/dist/src/chat-DHE7xaTR.js +76 -0
- package/dist/src/chat-DmhT6rz2.cjs +123 -0
- package/dist/src/chat-DvfMe8KI.js +123 -0
- package/dist/src/chat-DwP5kVnl.js +935 -0
- package/dist/src/chat-MB7U-QE2.js +77 -0
- package/dist/src/chat-zCWuBKAj.js +934 -0
- package/dist/src/claude-agent-sdk-23bIVI75.js +999 -0
- package/dist/src/claude-agent-sdk-BACpnIJi.cjs +1005 -0
- package/dist/src/claude-agent-sdk-BlYlmcEr.js +999 -0
- package/dist/src/claude-agent-sdk-Cr-jqJZl.js +1000 -0
- package/dist/src/client-BktbiPx9.cjs +357 -0
- package/dist/src/client-CjztEBmW.js +351 -0
- package/dist/src/client-mRs2UvH9.js +351 -0
- package/dist/src/client-uCz0ydjC.js +352 -0
- package/dist/src/cloud-BtYF555L.js +2 -0
- package/dist/src/cloud-CVSUEmAy.js +287 -0
- package/dist/src/cloud-D7Ifb-Fl.js +599 -0
- package/dist/src/cloud-DB5oK5NX.cjs +666 -0
- package/dist/src/cloud-ecu989Em.js +657 -0
- package/dist/src/cloud-ramjGURF.js +599 -0
- package/dist/src/cloudflare-ai-BfDkIjO8.js +133 -0
- package/dist/src/cloudflare-ai-D9HaXz1M.js +134 -0
- package/dist/src/cloudflare-ai-HrD5WUK8.js +132 -0
- package/dist/src/cloudflare-ai-Qdj8aKP2.cjs +133 -0
- package/dist/src/cloudflare-gateway-C81uKETQ.js +276 -0
- package/dist/src/cloudflare-gateway-CX5Z9X0k.js +276 -0
- package/dist/src/cloudflare-gateway-DW-og8gb.js +277 -0
- package/dist/src/cloudflare-gateway-iRyXo9n2.cjs +276 -0
- package/dist/src/codex-app-server-BFIrSgdy.js +2155 -0
- package/dist/src/codex-app-server-By1eDVD4.js +2 -0
- package/dist/src/codex-app-server-DKsF4qmY.js +2156 -0
- package/dist/src/codex-app-server-n7n4uZzC.cjs +2162 -0
- package/dist/src/codex-app-server-xAoELVxu.js +2155 -0
- package/dist/src/codex-sdk-C2ZLxa6r.js +1552 -0
- package/dist/src/codex-sdk-CzG02tQt.cjs +1588 -0
- package/dist/src/codex-sdk-DNxAOhiV.js +2 -0
- package/dist/src/codex-sdk-DT3aQezK.js +1557 -0
- package/dist/src/codex-sdk-pw9DpcJP.js +1557 -0
- package/dist/src/codex-security-B0bLmXJF.js +406 -0
- package/dist/src/codex-security-BhYs-3iY.js +406 -0
- package/dist/src/codex-security-DQcOfxYW.js +407 -0
- package/dist/src/codex-security-DsCWr6GZ.cjs +411 -0
- package/dist/src/cometapi-B16asPLX.cjs +55 -0
- package/dist/src/cometapi-MgTbZA_H.js +53 -0
- package/dist/src/cometapi-i33vKzPV.js +55 -0
- package/dist/src/cometapi-wK2UWK0X.js +56 -0
- package/dist/src/compatible-COj8ZCy9.js +24 -0
- package/dist/src/compatible-CRSsIUGb.cjs +24 -0
- package/dist/src/compatible-Dy1vCcNF.js +25 -0
- package/dist/src/compatible-aUItQrpk.js +24 -0
- package/dist/src/completion-Bn7COFMk.js +119 -0
- package/dist/src/completion-Bub2N48b.js +118 -0
- package/dist/src/completion-Cf2G9OlM.cjs +123 -0
- package/dist/src/conversationScoring-BiTYJ9MD.js +374 -0
- package/dist/src/conversationScoring-CKL47uIu.js +373 -0
- package/dist/src/conversationScoring-DCvQKp6k.cjs +398 -0
- package/dist/src/conversationScoring-DLNJtDZI.js +373 -0
- package/dist/src/crescendo-5iLk9WiJ.cjs +734 -0
- package/dist/src/crescendo-B5ylG7kW.js +733 -0
- package/dist/src/crescendo-BD7k6TIx.js +730 -0
- package/dist/src/crescendo-DqO2Ch0P.js +732 -0
- package/dist/src/custom-8rv_aG2K.js +617 -0
- package/dist/src/custom-BOtrIHFN.js +619 -0
- package/dist/src/custom-BvN8seCs.cjs +620 -0
- package/dist/src/custom-Cld9v_Y4.js +618 -0
- package/dist/src/dataUrl-BdHUey2l.cjs +3187 -0
- package/dist/src/dataUrl-DBMifX6C.js +3133 -0
- package/dist/src/dataUrl-DUSr-ZvI.js +2868 -0
- package/dist/src/decisions-CLazADTw.js +516 -0
- package/dist/src/decisions-D5X93awq.js +515 -0
- package/dist/src/decisions-DmaeArEn.js +515 -0
- package/dist/src/decisions-DyQJyHJz.cjs +514 -0
- package/dist/src/docker-C9NYQFeu.js +94 -0
- package/dist/src/docker-CGq3mMol.cjs +94 -0
- package/dist/src/docker-DOm7nmpl.js +95 -0
- package/dist/src/docker-skFN-Kfo.js +93 -0
- package/dist/src/embedding-0UbzkTk9.js +82 -0
- package/dist/src/embedding-DTrSDt7k.cjs +86 -0
- package/dist/src/embedding-j2ORNl5H.js +81 -0
- package/dist/src/envoy-BvS8XTQO.js +60 -0
- package/dist/src/envoy-Cn6Hzw0e.js +60 -0
- package/dist/src/envoy-DC3KWcUY.cjs +60 -0
- package/dist/src/envoy-DetHjo5B.js +61 -0
- package/dist/src/eval-Cer9dPe9.js +1920 -0
- package/dist/src/eval-CytYmI2Z.js +2 -0
- package/dist/src/evalResult-DzOq5wt9.js +1300 -0
- package/dist/src/evaluator-BxCmvGtv.js +10578 -0
- package/dist/src/evaluator-Ct7YDELm.js +2 -0
- package/dist/src/evaluatorHelpers-B_AwIrsl.js +600 -0
- package/dist/src/evaluatorHelpers-D1Tpc7gd.js +601 -0
- package/dist/src/evaluatorHelpers-DRR3rLq0.cjs +622 -0
- package/dist/src/fetch-B5KxZuKu.js +1559 -0
- package/dist/src/fetch-BG_Jl7ty.js +1556 -0
- package/dist/src/fetch-BKlgUg08.cjs +1853 -0
- package/dist/src/fetch-C9Fsja0R.js +2 -0
- package/dist/src/fetch-CM7P8KWA.cjs +14 -0
- package/dist/src/fetch-D0FkIB3G.js +9 -0
- package/dist/src/fetch-RXHsZF-J.js +1280 -0
- package/dist/src/fetch-rSECy8jR.js +10 -0
- package/dist/src/functionCallbackUtils-BB9tmf6a.cjs +262 -0
- package/dist/src/functionCallbackUtils-BXk2iY01.js +246 -0
- package/dist/src/functionCallbackUtils-B_cYp7P5.js +245 -0
- package/dist/src/functionCallbackUtils-BfXnPo0o.js +245 -0
- package/dist/src/gemini-image-BXLMADDz.js +471 -0
- package/dist/src/gemini-image-BYUZyEUx.js +472 -0
- package/dist/src/gemini-image-DSt1QubZ.cjs +471 -0
- package/dist/src/gemini-image-DdNDMiZ_.js +471 -0
- package/dist/src/goat-9b-uU_k6.js +514 -0
- package/dist/src/goat-BCJuiDd0.js +515 -0
- package/dist/src/goat-CmAHbemm.js +512 -0
- package/dist/src/goat-DdOTdyoS.cjs +515 -0
- package/dist/src/goblin-Bp5C5lyb.js +22 -0
- package/dist/src/goblin-Dmr7GItI.js +23 -0
- package/dist/src/goblin-DpM8wxlf.cjs +22 -0
- package/dist/src/goblin-cJyH6Pq-.js +22 -0
- package/dist/src/google-B6eaPAbE.js +142 -0
- package/dist/src/google-D-FStdN6.cjs +142 -0
- package/dist/src/google-DAC7BsCW.js +142 -0
- package/dist/src/google-Id18H0Va.js +143 -0
- package/dist/src/graders-BjNQWkaB.js +2 -0
- package/dist/src/graders-CqdIp_vl.js +15470 -0
- package/dist/src/hydra-6Ouh74DE.js +610 -0
- package/dist/src/hydra-BHjhZnLB.cjs +612 -0
- package/dist/src/hydra-BL6k2REV.js +2 -0
- package/dist/src/hydra-BWUc0o67.js +613 -0
- package/dist/src/hydra-CUkEOLKw.js +612 -0
- package/dist/src/image-B6hG_xhb.js +481 -0
- package/dist/src/image-BFaq7Krd.cjs +209 -0
- package/dist/src/image-Bql5C0N9.cjs +504 -0
- package/dist/src/image-BtZfI2pT.js +163 -0
- package/dist/src/image-CIM4oN7Z.cjs +163 -0
- package/dist/src/image-CbAl7Jpu.js +209 -0
- package/dist/src/image-CiYm_yFw.js +209 -0
- package/dist/src/image-DCMNvBiV.js +163 -0
- package/dist/src/image-DL7pIuUZ.js +210 -0
- package/dist/src/image-ey0kxF8o.js +164 -0
- package/dist/src/image-smgIk3rE.js +482 -0
- package/dist/src/index.cjs +27 -27
- package/dist/src/index.d.cts +8 -8
- package/dist/src/index.js +27 -27
- package/dist/src/indirectWebPwn-B_-UpWY5.js +285 -0
- package/dist/src/indirectWebPwn-Cz3SLiEq.js +434 -0
- package/dist/src/indirectWebPwn-D2s8zGiM.cjs +463 -0
- package/dist/src/indirectWebPwn-DXbj2wGu.cjs +285 -0
- package/dist/src/indirectWebPwn-D_4H44E6.js +285 -0
- package/dist/src/indirectWebPwn-L044SrpV.js +434 -0
- package/dist/src/indirectWebPwn-cnmvdavH.js +435 -0
- package/dist/src/indirectWebPwn-zUBzsqTt.js +286 -0
- package/dist/src/interactions-Bu3oVQ-j.js +850 -0
- package/dist/src/interactions-CND010Lh.cjs +850 -0
- package/dist/src/interactions-DAx7tqUz.js +851 -0
- package/dist/src/interactions-DPkIumeh.js +850 -0
- package/dist/src/iterative-BO4JRnpG.js +545 -0
- package/dist/src/iterative-CAK-k9rz.js +548 -0
- package/dist/src/iterative-CDgHc0xO.cjs +549 -0
- package/dist/src/iterative-CXJlHLl9.js +547 -0
- package/dist/src/iterativeImage-BEdGKSmh.cjs +419 -0
- package/dist/src/iterativeImage-BfL0QZw5.js +417 -0
- package/dist/src/iterativeImage-C9KhnibC.js +417 -0
- package/dist/src/iterativeImage-btjkOfWG.js +418 -0
- package/dist/src/iterativeMeta-B5Bdw6QA.js +437 -0
- package/dist/src/iterativeMeta-C3mI4gpT.js +440 -0
- package/dist/src/iterativeMeta-Co2BKyqS.cjs +439 -0
- package/dist/src/iterativeMeta-DD8ihRWD.js +439 -0
- package/dist/src/iterativeTree-AMi4GV2O.js +878 -0
- package/dist/src/iterativeTree-C8FJOEje.cjs +879 -0
- package/dist/src/iterativeTree-CvrY1f2Z.js +877 -0
- package/dist/src/iterativeTree-bPtESmaD.js +876 -0
- package/dist/src/knowledgeBase-Cf5871e3.js +163 -0
- package/dist/src/knowledgeBase-D2PQhqLH.js +164 -0
- package/dist/src/knowledgeBase-DpoMw1IH.cjs +163 -0
- package/dist/src/knowledgeBase-npGFl763.js +163 -0
- package/dist/src/litellm-BBB5DQdt.cjs +146 -0
- package/dist/src/litellm-Bo43ow7r.js +145 -0
- package/dist/src/litellm-CaU8CMLS.js +146 -0
- package/dist/src/litellm-wY7Unh8o.js +147 -0
- package/dist/src/live-5g2w-M-E.js +891 -0
- package/dist/src/live-BfaXsDyD.cjs +891 -0
- package/dist/src/live-C1xewnGD.js +2 -0
- package/dist/src/live-DaF7nYy5.js +892 -0
- package/dist/src/live-lp3urLUw.js +891 -0
- package/dist/src/luma-ray-B7zvKGVG.js +309 -0
- package/dist/src/luma-ray-DCf5fnrz.cjs +309 -0
- package/dist/src/luma-ray-DepBcn6z.js +309 -0
- package/dist/src/luma-ray-XQC4M1pt.js +310 -0
- package/dist/src/main.js +26 -26
- package/dist/src/mantleChat-7xm95vSV.js +154 -0
- package/dist/src/mantleChat-CXhAs5RD.js +155 -0
- package/dist/src/mantleChat-CcE-zjfj.cjs +154 -0
- package/dist/src/mantleChat-Cpefl7Zm.js +154 -0
- package/dist/src/mcp-B0V0ikdM.js +84 -0
- package/dist/src/mcp-CV2k2gwj.js +85 -0
- package/dist/src/memoryPoisoning-BC5FQQWZ.js +111 -0
- package/dist/src/memoryPoisoning-BDwrtZKX.js +111 -0
- package/dist/src/memoryPoisoning-BFemS_FF.js +112 -0
- package/dist/src/memoryPoisoning-DRs2rbVV.cjs +111 -0
- package/dist/src/messages-Bc5oZoAJ.js +1128 -0
- package/dist/src/messages-BkaH8fRW.js +1127 -0
- package/dist/src/messages-CoHlziS5.js +1127 -0
- package/dist/src/messages-Cv_m6kYs.cjs +1161 -0
- package/dist/src/mischievousUser-BcyFxrqJ.js +51 -0
- package/dist/src/mischievousUser-BlhOQSd2.js +52 -0
- package/dist/src/mischievousUser-BuQiKE8D.js +51 -0
- package/dist/src/mischievousUser-ChIOk6cT.cjs +51 -0
- package/dist/src/modelslab-BXIWBTgX.js +171 -0
- package/dist/src/modelslab-ChVsUiaJ.js +170 -0
- package/dist/src/modelslab-DZ6BFlDv.js +170 -0
- package/dist/src/modelslab-DhRr-vyo.cjs +170 -0
- package/dist/src/nova-reel-BL8DrN4_.js +272 -0
- package/dist/src/nova-reel-BiOMUm5q.cjs +272 -0
- package/dist/src/nova-reel-CTsya1hV.js +273 -0
- package/dist/src/nova-reel-kgBY4Svd.js +272 -0
- package/dist/src/nova-sonic-CaSSA3Jq.cjs +374 -0
- package/dist/src/nova-sonic-DLpmoGsR.js +375 -0
- package/dist/src/nova-sonic-DwWc4SoN.js +374 -0
- package/dist/src/nova-sonic-qnReTaXm.js +374 -0
- package/dist/src/novita-B5mAt3Ui.js +114 -0
- package/dist/src/novita-D57vCjDD.js +116 -0
- package/dist/src/novita-ITRtG8IJ.js +115 -0
- package/dist/src/novita-Rh3T13YO.cjs +115 -0
- package/dist/src/nscale-8V7iZ_pI.js +210 -0
- package/dist/src/nscale-BQnMv4pH.cjs +209 -0
- package/dist/src/nscale-BWZXHZVF.js +209 -0
- package/dist/src/nscale-BqrHiUqU.js +207 -0
- package/dist/src/openaiResponses-BMtGTu8R.js +317 -0
- package/dist/src/openaiResponses-CvcI_viE.js +318 -0
- package/dist/src/openaiResponses-DYPZEMX1.cjs +318 -0
- package/dist/src/openaiResponses-DZTg1-kb.js +319 -0
- package/dist/src/openclaw-BeKuig4g.js +1338 -0
- package/dist/src/openclaw-COkdQ83y.js +1337 -0
- package/dist/src/openclaw-CSoX_HQ5.cjs +1344 -0
- package/dist/src/openclaw-DJlhPGCb.js +1336 -0
- package/dist/src/opencode-sdk-BEJftEs6.cjs +1018 -0
- package/dist/src/opencode-sdk-DMvBB3V7.js +1013 -0
- package/dist/src/opencode-sdk-Df7hMjLO.js +1012 -0
- package/dist/src/opencode-sdk-bQp5Xf3W.js +1012 -0
- package/dist/src/openinterpreter-B3GgVZjK.js +431 -0
- package/dist/src/openinterpreter-BiGcU-HN.cjs +435 -0
- package/dist/src/openinterpreter-Buj2l3Eh.js +432 -0
- package/dist/src/openinterpreter-C3_Cg5b_.js +431 -0
- package/dist/src/pricing-0Pampf0q.cjs +999 -0
- package/dist/src/pricing-B8VdhEhY.js +976 -0
- package/dist/src/pricing-CtLA-rKA.js +976 -0
- package/dist/src/promptfoo-4OkHtH9P.cjs +341 -0
- package/dist/src/promptfoo-Bhpm7sH6.js +286 -0
- package/dist/src/promptfoo-BqV8ogVA.js +285 -0
- package/dist/src/promptfoo-S1Q9OHk_.js +286 -0
- package/dist/src/providers-B5zs1ZRv.js +24437 -0
- package/dist/src/providers-Cd6CJh6m.js +2 -0
- package/dist/src/providers-CpJlgHET.js +24039 -0
- package/dist/src/providers-CzvLvK6G.cjs +24180 -0
- package/dist/src/quiverai-1E_IvLHn.js +325 -0
- package/dist/src/quiverai-BXH004Vv.js +325 -0
- package/dist/src/quiverai-Ccya2z8Y.cjs +325 -0
- package/dist/src/quiverai-Cez57oe-.js +326 -0
- package/dist/src/registry-3zX_M9Ik.js +131 -0
- package/dist/src/registry-AuCrKTvS.js +132 -0
- package/dist/src/registry-CxXWKtQG.js +131 -0
- package/dist/src/registry-DG3o66JQ.cjs +131 -0
- package/dist/src/remoteGeneration-CAtvamG6.js +370 -0
- package/dist/src/remoteGeneration-CF225pDl.cjs +482 -0
- package/dist/src/remoteGeneration-DtnqocnL.js +370 -0
- package/dist/src/remoteGeneration-g3KvW-sP.js +371 -0
- package/dist/src/responses-BMbaUXQI.js +1098 -0
- package/dist/src/responses-B_TOSof-.js +1099 -0
- package/dist/src/responses-v-yANwTA.cjs +1109 -0
- package/dist/src/runtimeTransform-BBZv-oUZ.js +156 -0
- package/dist/src/runtimeTransform-DT2v5ovW.js +156 -0
- package/dist/src/runtimeTransform-GXXEIXdS.cjs +161 -0
- package/dist/src/runtimeTransform-JTwBQc-P.js +157 -0
- package/dist/src/sagemaker-B8D0L4rj.cjs +716 -0
- package/dist/src/sagemaker-CR2_AGdB.js +713 -0
- package/dist/src/sagemaker-Cd9qSQUV.js +714 -0
- package/dist/src/sagemaker-mKlltN4p.js +713 -0
- package/dist/src/scanner-PG_8lh8r.js +1971 -0
- package/dist/src/server/index.js +55 -55
- package/dist/src/server-Bmh7sd9F.js +155 -0
- package/dist/src/server-C7b8z6aC.js +63 -0
- package/dist/src/server-CAcovgtL.js +2 -0
- package/dist/src/server-CuuMfKlh.cjs +74 -0
- package/dist/src/server-DMPCj9jy.js +189 -0
- package/dist/src/session-BksXvRH_.cjs +69 -0
- package/dist/src/session-DOxUjqGQ.js +63 -0
- package/dist/src/session-Dujsc-b9.js +62 -0
- package/dist/src/session-VjtIxREd.js +62 -0
- package/dist/src/shared-Bkyz_7e5.cjs +2185 -0
- package/dist/src/shared-DDJg8ycC.js +1929 -0
- package/dist/src/shared-Dh3yfRBd.js +1927 -0
- package/dist/src/shared-tfPT8Tna.js +1928 -0
- package/dist/src/simulatedUser-6JdkyL3k.cjs +252 -0
- package/dist/src/simulatedUser-CFr2mr3M.js +248 -0
- package/dist/src/simulatedUser-DjwwUqx-.js +247 -0
- package/dist/src/slack-C_gIYiUs.js +144 -0
- package/dist/src/slack-DhNbz9CM.cjs +144 -0
- package/dist/src/slack-Dm2iI1zu.js +145 -0
- package/dist/src/strategies-BIY-bNul.js +2248 -0
- package/dist/src/strategies-C1KQQj9G.cjs +2420 -0
- package/dist/src/strategies-DM_3mReG.js +2385 -0
- package/dist/src/telemetry-BhMTibZO.js +2 -0
- package/dist/src/telemetry-C04d25BM.cjs +216 -0
- package/dist/src/telemetry-CIqy4fSC.js +201 -0
- package/dist/src/telemetry-CXozp_6C.js +205 -0
- package/dist/src/telemetry-g7PkBxmY.js +205 -0
- package/dist/src/togetherai-BvCim68-.js +50 -0
- package/dist/src/togetherai-CWyDCA9m.cjs +49 -0
- package/dist/src/togetherai-CeSE31vK.js +49 -0
- package/dist/src/togetherai-_2W0URf8.js +48 -0
- package/dist/src/traceContext-Brw3Oe41.js +1016 -0
- package/dist/src/traceContext-DpAYv27G.js +1015 -0
- package/dist/src/traceContext-KSqhzZI2.cjs +1032 -0
- package/dist/src/transcription-BySopazW.js +175 -0
- package/dist/src/transcription-DO4UPkRI.cjs +178 -0
- package/dist/src/transcription-RJGBa-pC.js +176 -0
- package/dist/src/transcription-fZenF3G5.js +175 -0
- package/dist/src/transform-BzhRc5z2.js +125 -0
- package/dist/src/transform-CPQu05u6.cjs +154 -0
- package/dist/src/transform-DAED8imp.js +126 -0
- package/dist/src/transform-DIOIQDmM.js +125 -0
- package/dist/src/typesafe-ByE0Kxfg.js +253 -0
- package/dist/src/typesafe-CFqGFY34.js +253 -0
- package/dist/src/typesafe-DCWIw-CP.cjs +253 -0
- package/dist/src/typesafe-DyHFV5Qk.js +254 -0
- package/dist/src/util-BHkj9joz.js +2049 -0
- package/dist/src/util-CICwIpmu.cjs +934 -0
- package/dist/src/util-CePiY2xZ.js +286 -0
- package/dist/src/util-CgT3uf4p.js +743 -0
- package/dist/src/util-Cj9drvOY.js +1770 -0
- package/dist/src/util-ClJRjlQA.cjs +357 -0
- package/dist/src/util-Cxf8VF2M.js +395 -0
- package/dist/src/util-D7RdV7rS.js +395 -0
- package/dist/src/util-DMNFhk47.js +351 -0
- package/dist/src/util-DNzh3M0z.js +396 -0
- package/dist/src/util-Df7rfMGb.cjs +2305 -0
- package/dist/src/util-Kf0KnG_6.js +2051 -0
- package/dist/src/util-LEbeiYw_.js +743 -0
- package/dist/src/util-WH8CgVs4.js +352 -0
- package/dist/src/util-cx6Xw8Lw.cjs +478 -0
- package/dist/src/util-qzBqirBH.js +2050 -0
- package/dist/src/vertex-CBAMfRz3.js +854 -0
- package/dist/src/vertex-CMP2IpN9.js +2 -0
- package/dist/src/vertex-CZ5YOotT.js +848 -0
- package/dist/src/vertex-DNsh1F1M.cjs +871 -0
- package/dist/src/vertexLive-BTXYj3-F.js +55 -0
- package/dist/src/vertexLive-Ba_LAqEF.cjs +55 -0
- package/dist/src/vertexLive-DM4sFaaj.js +56 -0
- package/dist/src/vertexLive-JqZOw7HC.js +55 -0
- package/dist/src/video-BY7Q2Gii.cjs +706 -0
- package/dist/src/video-CYElP-CK.js +703 -0
- package/dist/src/video-C_AdEDH0.js +702 -0
- package/dist/src/video-DGvjQ_4j.js +702 -0
- package/package.json +1 -1
- package/dist/src/accounts-Dpb43yde.cjs +0 -276
- package/dist/src/accounts-GKrO1olH.js +0 -229
- package/dist/src/accounts-e4FGOsji.js +0 -227
- package/dist/src/accounts-sUiEJfkB.js +0 -222
- package/dist/src/agentWorkspace-B8A_wuMR.cjs +0 -619
- package/dist/src/agentWorkspace-DSPIscXR.js +0 -593
- package/dist/src/agentWorkspace-DxUqd-XK.js +0 -592
- package/dist/src/agentWorkspace-n0uOJXhD.js +0 -592
- package/dist/src/agentic-utils-9bCj4twQ.js +0 -197
- package/dist/src/agentic-utils-CyCLuLoj.js +0 -197
- package/dist/src/agentic-utils-D23qtOlx.cjs +0 -237
- package/dist/src/agentic-utils-DuBMMNCw.js +0 -198
- package/dist/src/agents-6hDRNoYD.js +0 -777
- package/dist/src/agents-B8w2o7Sc.cjs +0 -777
- package/dist/src/agents-Ck0NXl7v.js +0 -777
- package/dist/src/agents-CwT3B1qB.js +0 -778
- package/dist/src/agents-DOLjfOEq.js +0 -266
- package/dist/src/agents-OcF9hq--.js +0 -267
- package/dist/src/agents-api-CnZZt8bn.cjs +0 -710
- package/dist/src/agents-api-D04u3bmL.js +0 -711
- package/dist/src/agents-api-DWw0_Vio.js +0 -710
- package/dist/src/agents-api-IWHEwp8i.js +0 -710
- package/dist/src/agents-mHt2Mh9O.cjs +0 -266
- package/dist/src/agents-sICccZCA.js +0 -266
- package/dist/src/ai.studio-Ci4rypDT.js +0 -2
- package/dist/src/ai.studio-KkQ6KaHa.js +0 -369
- package/dist/src/ai.studio-gSXK2cGI.js +0 -374
- package/dist/src/ai.studio-nQF_B4DH.cjs +0 -391
- package/dist/src/aimlapi-BeSk5BDV.js +0 -30
- package/dist/src/aimlapi-CzNUhdKu.cjs +0 -29
- package/dist/src/aimlapi-DCkazDPI.js +0 -29
- package/dist/src/aimlapi-WeH5B6K1.js +0 -28
- package/dist/src/anthropicMessages-AcNWTpYO.js +0 -115
- package/dist/src/anthropicMessages-BUtvzbpL.js +0 -114
- package/dist/src/anthropicMessages-DTWhZDCd.js +0 -114
- package/dist/src/anthropicMessages-lGVnSgyx.cjs +0 -114
- package/dist/src/app/assets/index-CyEI5aDN.js +0 -392
- package/dist/src/audio-BE_Duiu1.js +0 -104
- package/dist/src/audio-CiUd00k2.cjs +0 -104
- package/dist/src/audio-Dop6omna.js +0 -105
- package/dist/src/audio-EZNTInr_.js +0 -104
- package/dist/src/authoritativeMarkupInjection-BUqH6hNk.js +0 -78
- package/dist/src/authoritativeMarkupInjection-BmbJdJO0.cjs +0 -78
- package/dist/src/authoritativeMarkupInjection-Cpz12Y3w.js +0 -78
- package/dist/src/authoritativeMarkupInjection-W4XfcH91.js +0 -79
- package/dist/src/aws-B2Jqbnet.js +0 -2433
- package/dist/src/aws-DHtuUIzQ.js +0 -1149
- package/dist/src/aws-DLqXP6wY.js +0 -2433
- package/dist/src/aws-DfduhmwL.cjs +0 -2454
- package/dist/src/base-B9L2Xvpc.js +0 -255
- package/dist/src/base-BTZnIsuH.cjs +0 -305
- package/dist/src/base-BhaWNQPJ.js +0 -462
- package/dist/src/base-Br-G_Xou.js +0 -256
- package/dist/src/base-Bzo8hiUS.cjs +0 -467
- package/dist/src/base-C82fd2jq.js +0 -463
- package/dist/src/base-CRdQwC1W.js +0 -462
- package/dist/src/base-CjGwZNOQ.js +0 -255
- package/dist/src/bedrock-BdMru_ro.js +0 -1300
- package/dist/src/bedrock-CBUmfLX1.cjs +0 -2
- package/dist/src/bedrock-DBDxBaF9.js +0 -2
- package/dist/src/bedrock-DDrECM21.js +0 -1
- package/dist/src/bedrock-DVwkgvRS.js +0 -1
- package/dist/src/bestOfN-AKF5beq4.js +0 -159
- package/dist/src/bestOfN-C1UIVGJV.js +0 -160
- package/dist/src/bestOfN-DlkETbXy.cjs +0 -161
- package/dist/src/bestOfN-XIfEgU-g.js +0 -159
- package/dist/src/cache-BZaVoKaA.js +0 -2
- package/dist/src/cache-CEYhFUsH.js +0 -741
- package/dist/src/cache-Cbw1zH6q.js +0 -782
- package/dist/src/cache-CdaZNb75.js +0 -754
- package/dist/src/cache-DpuIzPxh.cjs +0 -856
- package/dist/src/cerebras-Bpn6FPkJ.js +0 -97
- package/dist/src/cerebras-CqJ0BRCJ.cjs +0 -97
- package/dist/src/cerebras-D4ILa_TY.js +0 -97
- package/dist/src/cerebras-DR8uc7ee.js +0 -98
- package/dist/src/chat-B7PZfaYp.cjs +0 -987
- package/dist/src/chat-BVuSjdEb.js +0 -227
- package/dist/src/chat-BsaZRjXN.js +0 -76
- package/dist/src/chat-C5liqe3Y.js +0 -226
- package/dist/src/chat-C9hyHf5B.js +0 -124
- package/dist/src/chat-CFLalAck.js +0 -226
- package/dist/src/chat-CN8JGrHu.js +0 -76
- package/dist/src/chat-CaHBBpCb.js +0 -123
- package/dist/src/chat-CcbLSghx.js +0 -123
- package/dist/src/chat-CoSN6sr2.js +0 -934
- package/dist/src/chat-CsJRFX8a.cjs +0 -226
- package/dist/src/chat-DFoZLvO_.js +0 -934
- package/dist/src/chat-DiLQvL7r.js +0 -77
- package/dist/src/chat-F6qVSDk3.cjs +0 -123
- package/dist/src/chat-Oq4FaJgI.cjs +0 -76
- package/dist/src/chat-knMfQUKz.js +0 -935
- package/dist/src/claude-agent-sdk-CJkOLpnI.js +0 -999
- package/dist/src/claude-agent-sdk-Ckn76PRD.js +0 -999
- package/dist/src/claude-agent-sdk-DX0gTr11.cjs +0 -1005
- package/dist/src/claude-agent-sdk-LMeikxoR.js +0 -1000
- package/dist/src/client-BFf1r6Z8.js +0 -352
- package/dist/src/client-CdXyDdDi.js +0 -351
- package/dist/src/client-DV8XMu7i.js +0 -351
- package/dist/src/client-iEXtOBKW.cjs +0 -357
- package/dist/src/cloud-B02qcpjf.js +0 -2
- package/dist/src/cloud-BlHP-g1v.cjs +0 -666
- package/dist/src/cloud-C9BI4isF.js +0 -287
- package/dist/src/cloud-CTTLNdvj.js +0 -657
- package/dist/src/cloud-D5X5yQ_d.js +0 -599
- package/dist/src/cloud-QxPkpsHA.js +0 -599
- package/dist/src/cloudflare-ai-DRTRT1fc.js +0 -132
- package/dist/src/cloudflare-ai-DgaXapAV.cjs +0 -133
- package/dist/src/cloudflare-ai-DkuJXijS.js +0 -134
- package/dist/src/cloudflare-ai-wy9QCHku.js +0 -133
- package/dist/src/cloudflare-gateway-9cAN8g29.cjs +0 -276
- package/dist/src/cloudflare-gateway-BVFMD292.js +0 -277
- package/dist/src/cloudflare-gateway-BuUI4p6I.js +0 -276
- package/dist/src/cloudflare-gateway-TlYHizbW.js +0 -276
- package/dist/src/codex-app-server-BPz_feug.cjs +0 -2162
- package/dist/src/codex-app-server-C9noXM9C.js +0 -2155
- package/dist/src/codex-app-server-CEmD-Y5U.js +0 -2
- package/dist/src/codex-app-server-DZolc18r.js +0 -2156
- package/dist/src/codex-app-server-Dd0A37nO.js +0 -2155
- package/dist/src/codex-sdk-BbxjBvBk.cjs +0 -1588
- package/dist/src/codex-sdk-BpXeIs-_.js +0 -1557
- package/dist/src/codex-sdk-BtQp5X0f.js +0 -1552
- package/dist/src/codex-sdk-CH0v9Bk1.js +0 -2
- package/dist/src/codex-sdk-CgrN7JB8.js +0 -1557
- package/dist/src/codex-security-B5fENNUr.js +0 -406
- package/dist/src/codex-security-C6uuJx-y.cjs +0 -411
- package/dist/src/codex-security-CifWtZR_.js +0 -407
- package/dist/src/codex-security-Kg2bOEKy.js +0 -406
- package/dist/src/cometapi-BFpIDLIx.js +0 -55
- package/dist/src/cometapi-C6O2PIrN.js +0 -56
- package/dist/src/cometapi-D5Yupc6F.js +0 -53
- package/dist/src/cometapi-DzgIwJzJ.cjs +0 -55
- package/dist/src/compatible-0jhmVfOp.js +0 -25
- package/dist/src/compatible-DdtwWdJi.cjs +0 -24
- package/dist/src/compatible-Di4nR3sU.js +0 -24
- package/dist/src/compatible-iJKLWdnf.js +0 -24
- package/dist/src/completion-B0_hVUDG.js +0 -119
- package/dist/src/completion-BdI6v0-Q.cjs +0 -123
- package/dist/src/completion-CWcJscwv.js +0 -118
- package/dist/src/conversationScoring-99EOPJRa.js +0 -373
- package/dist/src/conversationScoring-BIq4J0Cq.js +0 -374
- package/dist/src/conversationScoring-DARyeATr.cjs +0 -398
- package/dist/src/conversationScoring-DS48t4Hb.js +0 -373
- package/dist/src/crescendo-CebvXIu4.js +0 -730
- package/dist/src/crescendo-CxrLS0oo.js +0 -732
- package/dist/src/crescendo-DZQXBSkj.js +0 -733
- package/dist/src/crescendo-wjEx68uD.cjs +0 -734
- package/dist/src/custom-BiQ-aUNw.cjs +0 -620
- package/dist/src/custom-ByyB5Z93.js +0 -619
- package/dist/src/custom-C5jOevNb.js +0 -617
- package/dist/src/custom-CCrsCz8o.js +0 -618
- package/dist/src/dataUrl-C9J7wz9H.js +0 -3133
- package/dist/src/dataUrl-CGsBT7UZ.cjs +0 -3187
- package/dist/src/dataUrl-CzKvvWNO.js +0 -2868
- package/dist/src/decisions-BTusXCUx.cjs +0 -514
- package/dist/src/decisions-BYtL9edD.js +0 -515
- package/dist/src/decisions-jYix_gCF.js +0 -515
- package/dist/src/decisions-nxxfHRAN.js +0 -516
- package/dist/src/docker-DDIv4zkg.js +0 -93
- package/dist/src/docker-DVLp_5OG.js +0 -94
- package/dist/src/docker-INm9w0SY.cjs +0 -94
- package/dist/src/docker-sGuoCul_.js +0 -95
- package/dist/src/embedding-CAhqLLrR.js +0 -82
- package/dist/src/embedding-D94GAsti.cjs +0 -86
- package/dist/src/embedding-zb4MAzQy.js +0 -81
- package/dist/src/envoy-BMPszwEa.cjs +0 -60
- package/dist/src/envoy-Bp-s39_8.js +0 -60
- package/dist/src/envoy-BswDt-Ou.js +0 -61
- package/dist/src/envoy-rVbYcV80.js +0 -60
- package/dist/src/eval-B1-XfrC7.js +0 -2
- package/dist/src/eval-pC4qCvLw.js +0 -1920
- package/dist/src/evalResult-CzjCb5bd.js +0 -1300
- package/dist/src/evaluator-CNq2K7J_.js +0 -10578
- package/dist/src/evaluator-LtfxdxEu.js +0 -2
- package/dist/src/evaluatorHelpers-C5J0NYpQ.js +0 -601
- package/dist/src/evaluatorHelpers-DcdCglCs.cjs +0 -622
- package/dist/src/evaluatorHelpers-Rvb88W6B.js +0 -600
- package/dist/src/fetch-5HtnNhHg.js +0 -1556
- package/dist/src/fetch-BCwjoIFd.js +0 -1559
- package/dist/src/fetch-BhfUnKen.js +0 -1280
- package/dist/src/fetch-C08w4vVl.js +0 -9
- package/dist/src/fetch-DBxy8Tlb.cjs +0 -14
- package/dist/src/fetch-DYte6oQX.cjs +0 -1853
- package/dist/src/fetch-ElpfcAVG.js +0 -10
- package/dist/src/fetch-lM1OIaSt.js +0 -2
- package/dist/src/functionCallbackUtils-BCAdWfHO.js +0 -246
- package/dist/src/functionCallbackUtils-BYq9qOhG.js +0 -245
- package/dist/src/functionCallbackUtils-ByWkmVud.cjs +0 -262
- package/dist/src/functionCallbackUtils-D_C_JaFd.js +0 -245
- package/dist/src/gemini-image-CAlwaJhZ.js +0 -471
- package/dist/src/gemini-image-DJoVoOnZ.cjs +0 -471
- package/dist/src/gemini-image-Waio-9Xx.js +0 -472
- package/dist/src/gemini-image-vbY6Ftbf.js +0 -471
- package/dist/src/goat-BWbtyY9c.js +0 -512
- package/dist/src/goat-CXzzeCOQ.cjs +0 -515
- package/dist/src/goat-CfgvzSgZ.js +0 -514
- package/dist/src/goat-DLeoIHBp.js +0 -515
- package/dist/src/goblin-CmfCfwqk.cjs +0 -22
- package/dist/src/goblin-CtcaORRH.js +0 -22
- package/dist/src/goblin-DF6DDhM-.js +0 -22
- package/dist/src/goblin-Nai0xxBV.js +0 -23
- package/dist/src/google-ClpkLtKL.cjs +0 -142
- package/dist/src/google-CrFgKu9k.js +0 -143
- package/dist/src/google-Dj_EIBqS.js +0 -142
- package/dist/src/google-e4-vARv6.js +0 -142
- package/dist/src/graders-BN1IIa71.js +0 -15470
- package/dist/src/graders-C5sCfSP5.js +0 -2
- package/dist/src/hydra-B7RfXVBK.js +0 -2
- package/dist/src/hydra-C1cFN-Jg.js +0 -613
- package/dist/src/hydra-CK6Uc1ia.js +0 -612
- package/dist/src/hydra-Dg65rAP_.js +0 -610
- package/dist/src/hydra-Fqx8l_Xu.cjs +0 -612
- package/dist/src/image-BdlUDAtp.js +0 -163
- package/dist/src/image-C-KwEhwt.cjs +0 -163
- package/dist/src/image-C76fp6NK.cjs +0 -209
- package/dist/src/image-D75ehv3D.js +0 -482
- package/dist/src/image-DKtc5v5W.js +0 -209
- package/dist/src/image-DT_xOkJY.js +0 -163
- package/dist/src/image-DVpdllEE.js +0 -209
- package/dist/src/image-DXZ8AzMf.js +0 -481
- package/dist/src/image-DZl_1mvy.js +0 -164
- package/dist/src/image-DcTD7Ak0.cjs +0 -504
- package/dist/src/image-ndxEvBKB.js +0 -210
- package/dist/src/indirectWebPwn-70WA5x_q.js +0 -435
- package/dist/src/indirectWebPwn-BRVyd3qV.cjs +0 -463
- package/dist/src/indirectWebPwn-BsJVsu0q.js +0 -285
- package/dist/src/indirectWebPwn-Cw6yJu0i.js +0 -285
- package/dist/src/indirectWebPwn-D-PhJzo4.js +0 -286
- package/dist/src/indirectWebPwn-DRPHt2I8.js +0 -434
- package/dist/src/indirectWebPwn-DXtfFhd9.cjs +0 -285
- package/dist/src/indirectWebPwn-DvpNouzc.js +0 -434
- package/dist/src/interactions-5ixfW7Cl.js +0 -850
- package/dist/src/interactions-BOUzfmg1.cjs +0 -850
- package/dist/src/interactions-CSSXcGNc.js +0 -851
- package/dist/src/interactions-WB_sgkN0.js +0 -850
- package/dist/src/iterative-BShRNqjC.cjs +0 -549
- package/dist/src/iterative-BcW_ELtB.js +0 -548
- package/dist/src/iterative-BpHbHz8B.js +0 -547
- package/dist/src/iterative-YcchP12d.js +0 -545
- package/dist/src/iterativeImage-BMFE5Hl7.cjs +0 -419
- package/dist/src/iterativeImage-CkSaYLMY.js +0 -417
- package/dist/src/iterativeImage-DAEUlQX_.js +0 -418
- package/dist/src/iterativeImage-DeUSkEnj.js +0 -417
- package/dist/src/iterativeMeta-DbdaKdEO.cjs +0 -439
- package/dist/src/iterativeMeta-DcF9JWEK.js +0 -437
- package/dist/src/iterativeMeta-DkfPqWIC.js +0 -439
- package/dist/src/iterativeMeta-DkrpnVSs.js +0 -440
- package/dist/src/iterativeTree-CEMY1FhE.cjs +0 -879
- package/dist/src/iterativeTree-Cv5W4tX9.js +0 -877
- package/dist/src/iterativeTree-DGvomd3M.js +0 -876
- package/dist/src/iterativeTree-KbtC2Mkz.js +0 -878
- package/dist/src/knowledgeBase-AYRXn4wO.js +0 -163
- package/dist/src/knowledgeBase-BNqQfx01.js +0 -163
- package/dist/src/knowledgeBase-C0IaCCVs.js +0 -164
- package/dist/src/knowledgeBase-C2uj6wK4.cjs +0 -163
- package/dist/src/litellm-CN1ScAwZ.js +0 -147
- package/dist/src/litellm-CTjwiKSa.js +0 -146
- package/dist/src/litellm-Cd4Nj5ue.js +0 -145
- package/dist/src/litellm-DMqLpEBg.cjs +0 -146
- package/dist/src/live-Bt50-InO.cjs +0 -891
- package/dist/src/live-Bu2ujadG.js +0 -2
- package/dist/src/live-C3M52i3p.js +0 -891
- package/dist/src/live-CRfHMO3B.js +0 -892
- package/dist/src/live-iCIpO14m.js +0 -891
- package/dist/src/luma-ray-B8eHC4c8.cjs +0 -309
- package/dist/src/luma-ray-BIvkPw0s.js +0 -309
- package/dist/src/luma-ray-ChsiBxMA.js +0 -309
- package/dist/src/luma-ray-DAvKrInz.js +0 -310
- package/dist/src/mantleChat-5YeEXAZI.js +0 -154
- package/dist/src/mantleChat-D--mW3hl.js +0 -154
- package/dist/src/mantleChat-DHP3siNg.cjs +0 -154
- package/dist/src/mantleChat-wBfAX46o.js +0 -155
- package/dist/src/mcp-49jlEcTQ.js +0 -85
- package/dist/src/mcp-__PIz81I.js +0 -84
- package/dist/src/memoryPoisoning-Chxge74M.js +0 -111
- package/dist/src/memoryPoisoning-QH6NCUVE.js +0 -112
- package/dist/src/memoryPoisoning-tCxZt8Nz.js +0 -111
- package/dist/src/memoryPoisoning-ymrRItRR.cjs +0 -111
- package/dist/src/messages-BE_eZ7NA.js +0 -1127
- package/dist/src/messages-Bo638ShI.js +0 -1127
- package/dist/src/messages-BzR0-NQ1.js +0 -1128
- package/dist/src/messages-Cbg5Pfd0.cjs +0 -1161
- package/dist/src/mischievousUser-BtED2Z5Z.cjs +0 -51
- package/dist/src/mischievousUser-KqSOjrDJ.js +0 -51
- package/dist/src/mischievousUser-YMD41YNZ.js +0 -51
- package/dist/src/mischievousUser-zBxlNdCu.js +0 -52
- package/dist/src/modelslab-B8gZxtfE.js +0 -171
- package/dist/src/modelslab-C7bmVpTB.js +0 -170
- package/dist/src/modelslab-CCeQCTZg.js +0 -170
- package/dist/src/modelslab-CvBJGv7y.cjs +0 -170
- package/dist/src/nova-reel-BOEWsEKA.cjs +0 -272
- package/dist/src/nova-reel-BtyBXq5M.js +0 -273
- package/dist/src/nova-reel-C1eF3-EE.js +0 -272
- package/dist/src/nova-reel-YhgrxEKT.js +0 -272
- package/dist/src/nova-sonic-BaERP20w.js +0 -374
- package/dist/src/nova-sonic-CxgM3O-P.cjs +0 -374
- package/dist/src/nova-sonic-DJS22fC3.js +0 -375
- package/dist/src/nova-sonic-DwvwHyRX.js +0 -374
- package/dist/src/novita-D1l2tG0O.js +0 -116
- package/dist/src/novita-D84VM3v0.cjs +0 -115
- package/dist/src/novita-DGInvwfR.js +0 -115
- package/dist/src/novita-vXHkXhTg.js +0 -114
- package/dist/src/nscale-CU0Ldr00.js +0 -209
- package/dist/src/nscale-ClfKlQeM.cjs +0 -209
- package/dist/src/nscale-DxaVnF0x.js +0 -210
- package/dist/src/nscale-_poVxIrO.js +0 -207
- package/dist/src/openaiResponses-CJGsneNj.js +0 -317
- package/dist/src/openaiResponses-CKSl5Sdg.js +0 -319
- package/dist/src/openaiResponses-DC8rzFUc.js +0 -318
- package/dist/src/openaiResponses-rMHIA3dV.cjs +0 -318
- package/dist/src/openclaw-CCbvsNFW.cjs +0 -1344
- package/dist/src/openclaw-CZw1lCDZ.js +0 -1336
- package/dist/src/openclaw-ChFLgC-a.js +0 -1338
- package/dist/src/openclaw-DrPMoRrH.js +0 -1337
- package/dist/src/opencode-sdk-2EfIDhFp.cjs +0 -1018
- package/dist/src/opencode-sdk-CHw3F845.js +0 -1013
- package/dist/src/opencode-sdk-D0EGGxvy.js +0 -1012
- package/dist/src/opencode-sdk-jSS7NI2Q.js +0 -1012
- package/dist/src/openinterpreter-CY622xHC.js +0 -431
- package/dist/src/openinterpreter-DATyhuhP.js +0 -432
- package/dist/src/openinterpreter-DDUMyIf1.js +0 -431
- package/dist/src/openinterpreter-s5Tz6Lid.cjs +0 -435
- package/dist/src/pricing-C498twd2.js +0 -976
- package/dist/src/pricing-DBd_bMIh.cjs +0 -999
- package/dist/src/pricing-ISrMCskv.js +0 -976
- package/dist/src/promptfoo-6p0WG2ih.js +0 -286
- package/dist/src/promptfoo-BQRfgNs_.js +0 -285
- package/dist/src/promptfoo-Bqo88z20.cjs +0 -341
- package/dist/src/promptfoo-Cq5AVI3I.js +0 -286
- package/dist/src/providers-ATbeMX5E.cjs +0 -24180
- package/dist/src/providers-B7F1FiNI.js +0 -2
- package/dist/src/providers-DazIw8mI.js +0 -24039
- package/dist/src/providers-QvGlNAD0.js +0 -24437
- package/dist/src/quiverai-BPlNcLkV.cjs +0 -325
- package/dist/src/quiverai-By99-YmJ.js +0 -325
- package/dist/src/quiverai-CmmByDqo.js +0 -325
- package/dist/src/quiverai-HZkoJJqw.js +0 -326
- package/dist/src/registry-BLTnTfjT.cjs +0 -131
- package/dist/src/registry-BMC-COHT.js +0 -132
- package/dist/src/registry-C8UZtmBp.js +0 -131
- package/dist/src/registry-CfwEUYXG.js +0 -131
- package/dist/src/remoteGeneration-Bgg6kC5V.js +0 -370
- package/dist/src/remoteGeneration-CKJFE960.cjs +0 -482
- package/dist/src/remoteGeneration-DaxwJDKv.js +0 -370
- package/dist/src/remoteGeneration-vHMGVKr1.js +0 -371
- package/dist/src/responses-BvnyIHrq.js +0 -1099
- package/dist/src/responses-CERAgvf-.js +0 -1098
- package/dist/src/responses-CwgjeuOg.cjs +0 -1109
- package/dist/src/runtimeTransform-3RF9Avyg.cjs +0 -161
- package/dist/src/runtimeTransform-C51Z5j4H.js +0 -156
- package/dist/src/runtimeTransform-CKE_Iyv8.js +0 -157
- package/dist/src/runtimeTransform-Cs11xJpj.js +0 -156
- package/dist/src/sagemaker-BJ4dOCxE.js +0 -713
- package/dist/src/sagemaker-Bt3JUAWq.js +0 -714
- package/dist/src/sagemaker-QVKyLgLF.cjs +0 -716
- package/dist/src/sagemaker-l3IB8iTs.js +0 -713
- package/dist/src/scanner-DGjIiTZ1.js +0 -1971
- package/dist/src/server-BNaLZH6u.js +0 -63
- package/dist/src/server-CBMuQul3.js +0 -189
- package/dist/src/server-CMKKIzKv.cjs +0 -74
- package/dist/src/server-CN2IS9Cs.js +0 -155
- package/dist/src/server-ua4cqbjC.js +0 -2
- package/dist/src/session-CQIjq_HZ.cjs +0 -69
- package/dist/src/session-FTlg8sEu.js +0 -62
- package/dist/src/session-GBQXtPWp.js +0 -63
- package/dist/src/session-_0-rTdwY.js +0 -62
- package/dist/src/shared-BtuO-OAM.js +0 -1927
- package/dist/src/shared-Ci78wTZX.js +0 -1928
- package/dist/src/shared-Dd3rimdM.js +0 -1929
- package/dist/src/shared-KAjFxRre.cjs +0 -2185
- package/dist/src/simulatedUser--OjW6xCx.js +0 -247
- package/dist/src/simulatedUser-D0-slRye.cjs +0 -252
- package/dist/src/simulatedUser-D1Kh_cwA.js +0 -248
- package/dist/src/slack-BX0FUevO.js +0 -144
- package/dist/src/slack-CcwXFiJE.cjs +0 -144
- package/dist/src/slack-CnfqKfXp.js +0 -145
- package/dist/src/strategies-2ntcK4tN.js +0 -2248
- package/dist/src/strategies-DZIW7Zcs.js +0 -2385
- package/dist/src/strategies-YRDF2j-N.cjs +0 -2420
- package/dist/src/telemetry-CL8CVA4p.js +0 -205
- package/dist/src/telemetry-Cix90qqz.js +0 -201
- package/dist/src/telemetry-CkmlqTjV.js +0 -205
- package/dist/src/telemetry-DQH7l5bb.js +0 -2
- package/dist/src/telemetry-DUCXc1-r.cjs +0 -216
- package/dist/src/togetherai-3yUt5Ck7.js +0 -49
- package/dist/src/togetherai-BJUByLwt.cjs +0 -49
- package/dist/src/togetherai-Bh6KZkmd.js +0 -50
- package/dist/src/togetherai-DDl9yk3b.js +0 -48
- package/dist/src/traceContext-BiJVppjT.cjs +0 -1032
- package/dist/src/traceContext-CKKluULP.js +0 -1016
- package/dist/src/traceContext-D3Sk8fO-.js +0 -1015
- package/dist/src/transcription-BoVQKIVz.js +0 -175
- package/dist/src/transcription-Bs5u8780.js +0 -175
- package/dist/src/transcription-Dl654d1p.cjs +0 -178
- package/dist/src/transcription-VEvhM1Fu.js +0 -176
- package/dist/src/transform-BAbkGpvl.js +0 -125
- package/dist/src/transform-C_j4hUH8.js +0 -126
- package/dist/src/transform-Da86hs4M.cjs +0 -154
- package/dist/src/transform-_i1raQNo.js +0 -125
- package/dist/src/typesafe-CKXBeh82.cjs +0 -253
- package/dist/src/typesafe-D3VaGeNm.js +0 -253
- package/dist/src/typesafe-DYM-SFNH.js +0 -253
- package/dist/src/typesafe-LXmSbw8F.js +0 -254
- package/dist/src/util-41rb0XHX.js +0 -743
- package/dist/src/util-B0WlHYFM.js +0 -2049
- package/dist/src/util-BD1R_PsR.js +0 -1770
- package/dist/src/util-BLbM_ItC.js +0 -395
- package/dist/src/util-C72P0iIa.js +0 -352
- package/dist/src/util-C7MpGlJ6.cjs +0 -2305
- package/dist/src/util-CCtqagKc.js +0 -286
- package/dist/src/util-CM2Ec_uY.js +0 -2051
- package/dist/src/util-CSSAWO8v.js +0 -351
- package/dist/src/util-CkQc-fx3.cjs +0 -934
- package/dist/src/util-DcOlFTFa.cjs +0 -478
- package/dist/src/util-DluGTGVB.js +0 -395
- package/dist/src/util-PfQ60chz.js +0 -743
- package/dist/src/util-f14-CPij.js +0 -396
- package/dist/src/util-l9pXX3Eu.cjs +0 -357
- package/dist/src/util-o_BnlYqS.js +0 -2050
- package/dist/src/vertex-B_-gQgzc.js +0 -2
- package/dist/src/vertex-CU4gqoYa.js +0 -854
- package/dist/src/vertex-DZ42UHb3.js +0 -848
- package/dist/src/vertex-DsYQJA0T.cjs +0 -871
- package/dist/src/vertexLive-BvIaHKGB.js +0 -55
- package/dist/src/vertexLive-CTULqNx7.js +0 -56
- package/dist/src/vertexLive-DjJ_YQBe.cjs +0 -55
- package/dist/src/vertexLive-STUGcteB.js +0 -55
- package/dist/src/video-CAQGmtEV.js +0 -703
- package/dist/src/video-_FSTWlwX.js +0 -702
- package/dist/src/video-aBPJPWdt.js +0 -702
- package/dist/src/video-gDjkWv5m.cjs +0 -706
|
@@ -0,0 +1,856 @@
|
|
|
1
|
+
const require_rolldown_runtime = require("./rolldown-runtime-C0BPl7ul.cjs");
|
|
2
|
+
const require_logger = require("./logger-DXUHJBHJ.cjs");
|
|
3
|
+
const require_fetch = require("./fetch-BKlgUg08.cjs");
|
|
4
|
+
const require_shared = require("./shared-D9Bf3UgD.cjs");
|
|
5
|
+
const require_time = require("./time-CY7bOv6D.cjs");
|
|
6
|
+
const require_createHash = require("./createHash-sm6Q6LWg.cjs");
|
|
7
|
+
let path = require("path");
|
|
8
|
+
path = require_rolldown_runtime.__toESM(path, 1);
|
|
9
|
+
let node_async_hooks = require("node:async_hooks");
|
|
10
|
+
let fs = require("fs");
|
|
11
|
+
fs = require_rolldown_runtime.__toESM(fs, 1);
|
|
12
|
+
let node_crypto = require("node:crypto");
|
|
13
|
+
node_crypto = require_rolldown_runtime.__toESM(node_crypto, 1);
|
|
14
|
+
let cache_manager = require("cache-manager");
|
|
15
|
+
let node_events = require("node:events");
|
|
16
|
+
let keyv = require("keyv");
|
|
17
|
+
let keyv_file = require("keyv-file");
|
|
18
|
+
//#region src/cache/storage.ts
|
|
19
|
+
function isEnvelope(value) {
|
|
20
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) && (!("expires" in value) || value.expires === void 0 || typeof value.expires === "number");
|
|
21
|
+
}
|
|
22
|
+
var DiskStore = class extends node_events.EventEmitter {
|
|
23
|
+
backend;
|
|
24
|
+
opts = {};
|
|
25
|
+
namespace;
|
|
26
|
+
constructor(backend) {
|
|
27
|
+
super();
|
|
28
|
+
this.backend = backend;
|
|
29
|
+
}
|
|
30
|
+
async get(key) {
|
|
31
|
+
const raw = await this.backend.getRaw(key);
|
|
32
|
+
return typeof raw === "string" ? this.backend.decode(raw) : raw;
|
|
33
|
+
}
|
|
34
|
+
async set(key, value) {
|
|
35
|
+
if (!isEnvelope(value)) throw new TypeError("Cache storage requires a value/expiry envelope");
|
|
36
|
+
return this.backend.setRaw(key, value);
|
|
37
|
+
}
|
|
38
|
+
async delete(key) {
|
|
39
|
+
return this.backend.delete(key);
|
|
40
|
+
}
|
|
41
|
+
async clear() {
|
|
42
|
+
await this.backend.clear();
|
|
43
|
+
}
|
|
44
|
+
async disconnect() {
|
|
45
|
+
await this.backend.disconnect();
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
/** Preserve cache-manager's Keyv 5 API while storing data through Keyv 6. */
|
|
49
|
+
function createDiskCache(filename, ttl) {
|
|
50
|
+
const backend = new keyv.Keyv(new keyv.KeyvBridgeAdapter(new keyv_file.KeyvFile({ filename })));
|
|
51
|
+
const cache = (0, cache_manager.createCache)({
|
|
52
|
+
ttl,
|
|
53
|
+
refreshThreshold: 0
|
|
54
|
+
});
|
|
55
|
+
const facade = cache.stores[0];
|
|
56
|
+
const store = new DiskStore(backend);
|
|
57
|
+
facade.ttl = ttl;
|
|
58
|
+
facade.store = store;
|
|
59
|
+
facade.iterator = async function* () {
|
|
60
|
+
const prefix = facade.useKeyPrefix && facade.namespace ? `${facade.namespace}:` : "";
|
|
61
|
+
for await (const [key, value] of backend.iterator()) if (!prefix || key.startsWith(prefix)) yield [prefix ? key.slice(prefix.length) : key, value];
|
|
62
|
+
};
|
|
63
|
+
return cache;
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region src/cache.ts
|
|
67
|
+
var cache_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
|
|
68
|
+
claimCacheKeyOnce: () => claimCacheKeyOnce,
|
|
69
|
+
clearCache: () => clearCache,
|
|
70
|
+
disableCache: () => disableCache,
|
|
71
|
+
enableCache: () => enableCache,
|
|
72
|
+
fetchWithCache: () => fetchWithCache,
|
|
73
|
+
getAbortSignalScopedKey: () => getAbortSignalScopedKey,
|
|
74
|
+
getCache: () => getCache,
|
|
75
|
+
getCacheClearGeneration: () => getCacheClearGeneration,
|
|
76
|
+
getCacheTtlMs: () => getCacheTtlMs,
|
|
77
|
+
getHeadersForCacheKey: () => getHeadersForCacheKey,
|
|
78
|
+
getScopedCacheKey: () => getScopedCacheKey,
|
|
79
|
+
isCacheEnabled: () => isCacheEnabled,
|
|
80
|
+
withCacheEnabled: () => withCacheEnabled,
|
|
81
|
+
withCacheNamespace: () => withCacheNamespace
|
|
82
|
+
});
|
|
83
|
+
let cacheInstance;
|
|
84
|
+
const namespacedCacheInstances = /* @__PURE__ */ new Map();
|
|
85
|
+
let cacheClearGeneration = 0;
|
|
86
|
+
const CACHE_ENABLED_CONTEXT = Symbol.for("promptfoo.cache.enabledContext.v1");
|
|
87
|
+
const CACHE_NAMESPACE_CONTEXT = Symbol.for("promptfoo.cache.namespaceContext.v1");
|
|
88
|
+
const cacheContextGlobal = globalThis;
|
|
89
|
+
const cacheEnabledStorage = cacheContextGlobal[CACHE_ENABLED_CONTEXT] ??= new node_async_hooks.AsyncLocalStorage();
|
|
90
|
+
const cacheNamespaceStorage = cacheContextGlobal[CACHE_NAMESPACE_CONTEXT] ??= new node_async_hooks.AsyncLocalStorage();
|
|
91
|
+
let enabled = require_logger.getEnvBool("PROMPTFOO_CACHE_ENABLED", true);
|
|
92
|
+
const cacheType = require_logger.getEnvString("PROMPTFOO_CACHE_TYPE") || (require_logger.getEnvString("NODE_ENV") === "test" ? "memory" : "disk");
|
|
93
|
+
/** Default cache TTL: 14 days in seconds */
|
|
94
|
+
const DEFAULT_CACHE_TTL_SECONDS = 1209600;
|
|
95
|
+
/**
|
|
96
|
+
* Get the cache TTL in milliseconds.
|
|
97
|
+
* Reads from PROMPTFOO_CACHE_TTL environment variable (in seconds) or uses default.
|
|
98
|
+
*/
|
|
99
|
+
function getCacheTtlMs() {
|
|
100
|
+
return require_logger.getEnvInt("PROMPTFOO_CACHE_TTL", DEFAULT_CACHE_TTL_SECONDS) * 1e3;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get the cache instance with optional namespace isolation.
|
|
104
|
+
*
|
|
105
|
+
* @returns The current cache instance (namespace-aware if inside withCacheNamespace)
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* import { cache } from 'promptfoo';
|
|
110
|
+
*
|
|
111
|
+
* const cacheInstance = cache.getCache();
|
|
112
|
+
* const value = await cacheInstance.get('my-key');
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
function getCache() {
|
|
116
|
+
const namespace = cacheNamespaceStorage.getStore()?.namespace;
|
|
117
|
+
if (namespace) return getNamespacedCache(namespace);
|
|
118
|
+
return getCacheInstance();
|
|
119
|
+
}
|
|
120
|
+
function getCacheInstance() {
|
|
121
|
+
if (!cacheInstance) {
|
|
122
|
+
let cachePath = "";
|
|
123
|
+
let diskCache;
|
|
124
|
+
if (cacheType === "disk" && enabled) {
|
|
125
|
+
cachePath = require_logger.getEnvString("PROMPTFOO_CACHE_PATH") || path.default.join(require_logger.getConfigDirectoryPath(), "cache");
|
|
126
|
+
if (!fs.default.existsSync(cachePath)) {
|
|
127
|
+
require_logger.logger.info(`Creating cache folder at ${cachePath}.`);
|
|
128
|
+
fs.default.mkdirSync(cachePath, { recursive: true });
|
|
129
|
+
}
|
|
130
|
+
const newCacheFile = path.default.join(cachePath, "cache.json");
|
|
131
|
+
try {
|
|
132
|
+
diskCache = createDiskCache(newCacheFile, getCacheTtlMs());
|
|
133
|
+
} catch (err) {
|
|
134
|
+
require_logger.logger.warn(`[Cache] Failed to initialize disk cache: ${err.message}. Using memory cache instead.`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
cacheInstance = diskCache ?? (0, cache_manager.createCache)({
|
|
138
|
+
ttl: getCacheTtlMs(),
|
|
139
|
+
refreshThreshold: 0
|
|
140
|
+
});
|
|
141
|
+
const clear = cacheInstance.clear.bind(cacheInstance);
|
|
142
|
+
cacheInstance.clear = async () => {
|
|
143
|
+
const result = await clear();
|
|
144
|
+
cacheClearGeneration += 1;
|
|
145
|
+
return result;
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
return cacheInstance;
|
|
149
|
+
}
|
|
150
|
+
function getNamespacedCache(namespace) {
|
|
151
|
+
const cachedNamespaceInstance = namespacedCacheInstances.get(namespace);
|
|
152
|
+
if (cachedNamespaceInstance) return cachedNamespaceInstance;
|
|
153
|
+
const cache = getCacheInstance();
|
|
154
|
+
const namespacedCache = {
|
|
155
|
+
...cache,
|
|
156
|
+
get: (key) => cache.get(getScopedCacheKey(key, namespace)),
|
|
157
|
+
set: (key, value, ttl) => cache.set(getScopedCacheKey(key, namespace), value, ttl),
|
|
158
|
+
del: (key) => cache.del(getScopedCacheKey(key, namespace)),
|
|
159
|
+
mget: (keys) => cache.mget(keys.map((key) => getScopedCacheKey(key, namespace))),
|
|
160
|
+
mset: async (list) => {
|
|
161
|
+
const scopedList = list.map(({ key, value, ttl }) => ({
|
|
162
|
+
key: getScopedCacheKey(key, namespace),
|
|
163
|
+
value,
|
|
164
|
+
ttl
|
|
165
|
+
}));
|
|
166
|
+
return (await cache.mset(scopedList) ?? scopedList).map(({ key, value, ttl }) => ({
|
|
167
|
+
key: getUnscopedCacheKey(key, namespace),
|
|
168
|
+
value,
|
|
169
|
+
ttl
|
|
170
|
+
}));
|
|
171
|
+
},
|
|
172
|
+
mdel: (keys) => cache.mdel(keys.map((key) => getScopedCacheKey(key, namespace))),
|
|
173
|
+
ttl: (key) => cache.ttl(getScopedCacheKey(key, namespace)),
|
|
174
|
+
clear: () => clearNamespacedCache(cache, namespace),
|
|
175
|
+
wrap: (...args) => cache.wrap(getScopedCacheKey(args[0], namespace), ...args.slice(1))
|
|
176
|
+
};
|
|
177
|
+
namespacedCacheInstances.set(namespace, namespacedCache);
|
|
178
|
+
return namespacedCache;
|
|
179
|
+
}
|
|
180
|
+
function getCurrentCacheNamespace() {
|
|
181
|
+
return cacheNamespaceStorage.getStore()?.namespace;
|
|
182
|
+
}
|
|
183
|
+
function currentNamespaceIncludesRepeatIndex(repeatIndex) {
|
|
184
|
+
const namespaceParts = getCurrentCacheNamespace()?.split(":") ?? [];
|
|
185
|
+
return namespaceParts.some((part, index) => part === "repeat" && namespaceParts[index + 1] === String(repeatIndex));
|
|
186
|
+
}
|
|
187
|
+
function shouldApplyRepeatCacheSuffix(repeatIndex) {
|
|
188
|
+
return repeatIndex != null && repeatIndex > 0 && !currentNamespaceIncludesRepeatIndex(repeatIndex);
|
|
189
|
+
}
|
|
190
|
+
function getScopedCacheKey(cacheKey, namespace = getCurrentCacheNamespace()) {
|
|
191
|
+
return namespace ? `${namespace}:${cacheKey}` : cacheKey;
|
|
192
|
+
}
|
|
193
|
+
function getCacheClearGeneration() {
|
|
194
|
+
return cacheClearGeneration;
|
|
195
|
+
}
|
|
196
|
+
function getUnscopedCacheKey(cacheKey, namespace) {
|
|
197
|
+
const namespacePrefix = `${namespace}:`;
|
|
198
|
+
return cacheKey.startsWith(namespacePrefix) ? cacheKey.slice(namespacePrefix.length) : cacheKey;
|
|
199
|
+
}
|
|
200
|
+
async function clearNamespacedCache(cache, namespace) {
|
|
201
|
+
const namespacePrefix = `${namespace}:`;
|
|
202
|
+
for (const store of cache.stores) {
|
|
203
|
+
if (!store.iterator) throw new Error(`[Cache] Cannot clear namespace ${namespace} because a cache store does not support key iteration.`);
|
|
204
|
+
const keysToDelete = [];
|
|
205
|
+
for await (const [key] of store.iterator(void 0)) if (typeof key === "string" && key.startsWith(namespacePrefix)) keysToDelete.push(key);
|
|
206
|
+
if (keysToDelete.length === 0) continue;
|
|
207
|
+
try {
|
|
208
|
+
if (store.deleteMany) await store.deleteMany(keysToDelete);
|
|
209
|
+
else await Promise.all(keysToDelete.map((key) => store.delete(key)));
|
|
210
|
+
} catch (err) {
|
|
211
|
+
throw new Error(`[Cache] Failed to clear ${keysToDelete.length} keys for namespace "${namespace}": ${err.message}`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
cacheClearGeneration += 1;
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Run a function with isolated cache namespace.
|
|
219
|
+
*
|
|
220
|
+
* All cache operations within the function will be scoped to the namespace,
|
|
221
|
+
* preventing cache collisions between different test runs or environments.
|
|
222
|
+
*
|
|
223
|
+
* @param namespace Namespace prefix for cache keys (undefined = no namespace)
|
|
224
|
+
* @param fn Async function to run with the namespace
|
|
225
|
+
*
|
|
226
|
+
* @returns Result of the function
|
|
227
|
+
*
|
|
228
|
+
* @example
|
|
229
|
+
* ```typescript
|
|
230
|
+
* import { cache, evaluate } from 'promptfoo';
|
|
231
|
+
*
|
|
232
|
+
* // Run v1 and v2 evals with separate caches
|
|
233
|
+
* const v1Results = await cache.withCacheNamespace('v1', async () => {
|
|
234
|
+
* return evaluate(testSuiteV1);
|
|
235
|
+
* });
|
|
236
|
+
*
|
|
237
|
+
* const v2Results = await cache.withCacheNamespace('v2', async () => {
|
|
238
|
+
* return evaluate(testSuiteV2);
|
|
239
|
+
* });
|
|
240
|
+
* ```
|
|
241
|
+
*/
|
|
242
|
+
function withCacheNamespace(namespace, fn) {
|
|
243
|
+
if (!namespace) return fn();
|
|
244
|
+
const parentNamespace = getCurrentCacheNamespace();
|
|
245
|
+
if (parentNamespace === namespace) return fn();
|
|
246
|
+
const scopedNamespace = parentNamespace ? `${parentNamespace}:${namespace}` : namespace;
|
|
247
|
+
return cacheNamespaceStorage.run({ namespace: scopedNamespace }, fn);
|
|
248
|
+
}
|
|
249
|
+
function withCacheEnabled(enabledOverride, fn) {
|
|
250
|
+
if (enabledOverride === void 0) return fn();
|
|
251
|
+
return cacheEnabledStorage.run({ enabled: enabledOverride }, fn);
|
|
252
|
+
}
|
|
253
|
+
function getEffectiveCacheEnabled() {
|
|
254
|
+
return cacheEnabledStorage.getStore()?.enabled ?? enabled;
|
|
255
|
+
}
|
|
256
|
+
const inflightFetchResponses = /* @__PURE__ */ new Map();
|
|
257
|
+
const claimedCacheKeys = /* @__PURE__ */ new Set();
|
|
258
|
+
const IGNORED_FETCH_CACHE_OPTION_KEYS = /* @__PURE__ */ new Set(["method", "signal"]);
|
|
259
|
+
const IGNORED_FETCH_CACHE_HEADERS = /* @__PURE__ */ new Set(["traceparent", "tracestate"]);
|
|
260
|
+
const FETCH_CACHE_SECRET_HMAC_CONTEXT = "promptfoo:fetch-cache-secret-key";
|
|
261
|
+
const FETCH_CACHE_SECRET_HMAC_SALT = "promptfoo:fetch-cache-secret-hmac-salt:v1";
|
|
262
|
+
const abortSignalIds = /* @__PURE__ */ new WeakMap();
|
|
263
|
+
let nextAbortSignalId = 0;
|
|
264
|
+
function fingerprintFetchCacheSecret(value) {
|
|
265
|
+
return { __promptfooSecretFingerprint: node_crypto.default.createHmac("sha256", FETCH_CACHE_SECRET_HMAC_SALT).update(FETCH_CACHE_SECRET_HMAC_CONTEXT).update("\0").update(value).digest("hex") };
|
|
266
|
+
}
|
|
267
|
+
function isSensitiveFetchCacheString(value, fieldName) {
|
|
268
|
+
return fieldName && require_logger.isSecretField(fieldName) || require_logger.looksLikeSecret(value);
|
|
269
|
+
}
|
|
270
|
+
function getStringForFetchCacheKey(value, fieldName) {
|
|
271
|
+
if (isSensitiveFetchCacheString(value, fieldName)) return fingerprintFetchCacheSecret(value);
|
|
272
|
+
return value;
|
|
273
|
+
}
|
|
274
|
+
function hasSensitiveJsonValue(value, fieldName) {
|
|
275
|
+
if (typeof value === "string") return isSensitiveFetchCacheString(value, fieldName);
|
|
276
|
+
if (Array.isArray(value)) return value.some((item) => hasSensitiveJsonValue(item, fieldName));
|
|
277
|
+
if (value && typeof value === "object") return Object.entries(value).some(([key, nestedValue]) => hasSensitiveJsonValue(nestedValue, key));
|
|
278
|
+
return false;
|
|
279
|
+
}
|
|
280
|
+
function getJsonValueForFetchCacheKey(value, fieldName) {
|
|
281
|
+
if (typeof value === "string") return getStringForFetchCacheKey(value, fieldName);
|
|
282
|
+
if (Array.isArray(value)) return value.map((item) => getJsonValueForFetchCacheKey(item, fieldName));
|
|
283
|
+
if (value && typeof value === "object") return Object.fromEntries(Object.entries(value).map(([key, nestedValue]) => [key, getJsonValueForFetchCacheKey(nestedValue, key)]));
|
|
284
|
+
return value;
|
|
285
|
+
}
|
|
286
|
+
function getBodyStringForFetchCacheKey(value) {
|
|
287
|
+
try {
|
|
288
|
+
const parsedValue = JSON.parse(value);
|
|
289
|
+
return hasSensitiveJsonValue(parsedValue) ? {
|
|
290
|
+
encoding: "json",
|
|
291
|
+
value: getJsonValueForFetchCacheKey(parsedValue)
|
|
292
|
+
} : value;
|
|
293
|
+
} catch {
|
|
294
|
+
return getStringForFetchCacheKey(value);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
function hasSensitiveSearchParam(searchParams) {
|
|
298
|
+
return Array.from(searchParams.entries()).some(([name, value]) => isSensitiveFetchCacheString(value, name));
|
|
299
|
+
}
|
|
300
|
+
function getSearchParamsForFetchCacheKey(searchParams) {
|
|
301
|
+
if (!hasSensitiveSearchParam(searchParams)) return searchParams.toString();
|
|
302
|
+
return Array.from(searchParams.entries()).map(([name, value]) => [name, getStringForFetchCacheKey(value, name)]);
|
|
303
|
+
}
|
|
304
|
+
function getUrlForFetchCacheKey(url) {
|
|
305
|
+
const urlString = url instanceof Request ? url.url : String(url);
|
|
306
|
+
try {
|
|
307
|
+
const parsedUrl = new URL(urlString);
|
|
308
|
+
if (!hasSensitiveSearchParam(parsedUrl.searchParams)) return urlString;
|
|
309
|
+
parsedUrl.search = "";
|
|
310
|
+
return {
|
|
311
|
+
href: parsedUrl.toString(),
|
|
312
|
+
searchParams: getSearchParamsForFetchCacheKey(new URL(urlString).searchParams)
|
|
313
|
+
};
|
|
314
|
+
} catch {
|
|
315
|
+
return getStringForFetchCacheKey(urlString);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
function getHeadersForCacheKey(url, options) {
|
|
319
|
+
const headers = new Headers(require_fetch.getFetchWithProxyHeaders(url, options));
|
|
320
|
+
const cloudAuth = require_fetch.getCloudBearerToken(url);
|
|
321
|
+
let cloudAuthHeaderNameForFingerprint;
|
|
322
|
+
if (cloudAuth) {
|
|
323
|
+
const cloudAuthHeaderName = require_fetch.getCloudAuthHeaderName();
|
|
324
|
+
cloudAuthHeaderNameForFingerprint = cloudAuthHeaderName.toLowerCase();
|
|
325
|
+
if (!headers.has(cloudAuthHeaderName)) headers.set(cloudAuthHeaderName, cloudAuth);
|
|
326
|
+
}
|
|
327
|
+
const cloudTaskTeamId = require_fetch.getCloudTaskTeamId(url);
|
|
328
|
+
if (cloudTaskTeamId && !headers.has("x-promptfoo-team-id")) headers.set(require_fetch.PROMPTFOO_TEAM_ID_HEADER, cloudTaskTeamId);
|
|
329
|
+
return Array.from(headers.entries()).filter(([name]) => !IGNORED_FETCH_CACHE_HEADERS.has(name)).sort(([nameA, valueA], [nameB, valueB]) => {
|
|
330
|
+
const nameComparison = nameA.localeCompare(nameB);
|
|
331
|
+
return nameComparison === 0 ? valueA.localeCompare(valueB) : nameComparison;
|
|
332
|
+
}).map(([name, value]) => [name, name === cloudAuthHeaderNameForFingerprint ? fingerprintFetchCacheSecret(value) : getStringForFetchCacheKey(value, name)]);
|
|
333
|
+
}
|
|
334
|
+
function hashFetchCacheKey(identity) {
|
|
335
|
+
return require_createHash.sha256(JSON.stringify(identity));
|
|
336
|
+
}
|
|
337
|
+
function hashBytesForCacheKey(bytes) {
|
|
338
|
+
const buffer = ArrayBuffer.isView(bytes) ? Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength) : Buffer.from(bytes);
|
|
339
|
+
return {
|
|
340
|
+
byteLength: buffer.byteLength,
|
|
341
|
+
hmacSha256: node_crypto.default.createHmac("sha256", FETCH_CACHE_SECRET_HMAC_SALT).update(`${FETCH_CACHE_SECRET_HMAC_CONTEXT}:bytes`).update("\0").update(buffer).digest("hex")
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
function getBodyForFetchCacheKey(body) {
|
|
345
|
+
if (body == null) return {
|
|
346
|
+
cacheable: true,
|
|
347
|
+
identity: void 0
|
|
348
|
+
};
|
|
349
|
+
if (typeof body === "string") return {
|
|
350
|
+
cacheable: true,
|
|
351
|
+
identity: {
|
|
352
|
+
type: "string",
|
|
353
|
+
value: getBodyStringForFetchCacheKey(body)
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
if (typeof URLSearchParams !== "undefined" && body instanceof URLSearchParams) return {
|
|
357
|
+
cacheable: true,
|
|
358
|
+
identity: {
|
|
359
|
+
type: "url-search-params",
|
|
360
|
+
value: getSearchParamsForFetchCacheKey(body)
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
if (body instanceof ArrayBuffer) return {
|
|
364
|
+
cacheable: true,
|
|
365
|
+
identity: {
|
|
366
|
+
type: "array-buffer",
|
|
367
|
+
...hashBytesForCacheKey(body)
|
|
368
|
+
}
|
|
369
|
+
};
|
|
370
|
+
if (ArrayBuffer.isView(body)) return {
|
|
371
|
+
cacheable: true,
|
|
372
|
+
identity: {
|
|
373
|
+
type: body.constructor.name,
|
|
374
|
+
...hashBytesForCacheKey(body)
|
|
375
|
+
}
|
|
376
|
+
};
|
|
377
|
+
return {
|
|
378
|
+
cacheable: false,
|
|
379
|
+
identity: void 0
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
function getOptionsForFetchCacheKey(options, bodyIdentity) {
|
|
383
|
+
const identity = {};
|
|
384
|
+
for (const [key, value] of Object.entries(options).sort(([keyA], [keyB]) => keyA.localeCompare(keyB))) {
|
|
385
|
+
if (key === "headers" || IGNORED_FETCH_CACHE_OPTION_KEYS.has(key)) continue;
|
|
386
|
+
if (key === "body") {
|
|
387
|
+
identity.body = bodyIdentity;
|
|
388
|
+
continue;
|
|
389
|
+
}
|
|
390
|
+
if (value == null || [
|
|
391
|
+
"boolean",
|
|
392
|
+
"number",
|
|
393
|
+
"string"
|
|
394
|
+
].includes(typeof value)) {
|
|
395
|
+
identity[key] = value;
|
|
396
|
+
continue;
|
|
397
|
+
}
|
|
398
|
+
return {
|
|
399
|
+
cacheable: false,
|
|
400
|
+
identity: void 0
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
if (!Object.prototype.hasOwnProperty.call(options, "body") && bodyIdentity !== void 0) identity.body = bodyIdentity;
|
|
404
|
+
return {
|
|
405
|
+
cacheable: true,
|
|
406
|
+
identity
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
function getFetchCacheKey(url, options, method, format, repeatIndex) {
|
|
410
|
+
const bodyForCacheKey = getBodyForFetchCacheKey(options.body ?? (url instanceof Request ? url.body : void 0));
|
|
411
|
+
if (!bodyForCacheKey.cacheable) return null;
|
|
412
|
+
const optionsForCacheKey = getOptionsForFetchCacheKey(options, bodyForCacheKey.identity);
|
|
413
|
+
if (!optionsForCacheKey.cacheable) return null;
|
|
414
|
+
const repeatSuffix = shouldApplyRepeatCacheSuffix(repeatIndex) ? `:repeat${repeatIndex}` : "";
|
|
415
|
+
return getScopedCacheKey(`fetch:v3:${hashFetchCacheKey({
|
|
416
|
+
format,
|
|
417
|
+
headers: getHeadersForCacheKey(url, options),
|
|
418
|
+
method,
|
|
419
|
+
options: optionsForCacheKey.identity,
|
|
420
|
+
url: getUrlForFetchCacheKey(url)
|
|
421
|
+
})}${repeatSuffix}`);
|
|
422
|
+
}
|
|
423
|
+
/** Key in-flight requests by abort signal so only callers cancelled together share one. */
|
|
424
|
+
function getAbortSignalScopedKey(key, signal) {
|
|
425
|
+
if (!signal) return JSON.stringify([key, null]);
|
|
426
|
+
let signalId = abortSignalIds.get(signal);
|
|
427
|
+
if (signalId === void 0) {
|
|
428
|
+
signalId = ++nextAbortSignalId;
|
|
429
|
+
abortSignalIds.set(signal, signalId);
|
|
430
|
+
}
|
|
431
|
+
return JSON.stringify([key, signalId]);
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Atomically claim a cache-scoped one-time action. Disk-backed claims use an exclusive file so
|
|
435
|
+
* separate eval processes cannot both attribute the same background response's usage.
|
|
436
|
+
*/
|
|
437
|
+
function claimCacheKeyOnce(cacheKey) {
|
|
438
|
+
const scopedCacheKey = getScopedCacheKey(cacheKey);
|
|
439
|
+
if (claimedCacheKeys.has(scopedCacheKey)) return false;
|
|
440
|
+
if (cacheType === "disk" && getEffectiveCacheEnabled()) {
|
|
441
|
+
const cachePath = require_logger.getEnvString("PROMPTFOO_CACHE_PATH") || path.default.join(require_logger.getConfigDirectoryPath(), "cache");
|
|
442
|
+
const claimsPath = path.default.join(cachePath, "claims");
|
|
443
|
+
try {
|
|
444
|
+
fs.default.mkdirSync(claimsPath, { recursive: true });
|
|
445
|
+
const handle = fs.default.openSync(path.default.join(claimsPath, require_createHash.sha256(scopedCacheKey)), "wx");
|
|
446
|
+
fs.default.closeSync(handle);
|
|
447
|
+
} catch (error) {
|
|
448
|
+
if (error.code === "EEXIST") {
|
|
449
|
+
claimedCacheKeys.add(scopedCacheKey);
|
|
450
|
+
return false;
|
|
451
|
+
}
|
|
452
|
+
require_logger.logger.warn(`[Cache] Failed to persist a one-time cache claim: ${error.message}. Using a process-local claim instead.`);
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
claimedCacheKeys.add(scopedCacheKey);
|
|
456
|
+
return true;
|
|
457
|
+
}
|
|
458
|
+
function getSanitizedResponse(data, statusText, headers, sanitizeResponse) {
|
|
459
|
+
return sanitizeResponse ? sanitizeResponse({
|
|
460
|
+
data,
|
|
461
|
+
statusText,
|
|
462
|
+
headers: { ...headers }
|
|
463
|
+
}) : {
|
|
464
|
+
data,
|
|
465
|
+
statusText,
|
|
466
|
+
headers
|
|
467
|
+
};
|
|
468
|
+
}
|
|
469
|
+
function serializeFetchResponse(data, status, statusText, headers, latencyMs, sanitizeResponse) {
|
|
470
|
+
const sanitized = getSanitizedResponse(data, statusText, headers, sanitizeResponse);
|
|
471
|
+
return JSON.stringify({
|
|
472
|
+
data: sanitized.data,
|
|
473
|
+
status,
|
|
474
|
+
statusText: sanitized.statusText,
|
|
475
|
+
headers: sanitized.headers,
|
|
476
|
+
latencyMs
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
function deserializeFetchResponse(response, cached, cache, cacheKey, sanitizeResponse) {
|
|
480
|
+
const parsedResponse = JSON.parse(response);
|
|
481
|
+
const sanitized = getSanitizedResponse(parsedResponse.data, parsedResponse.statusText, parsedResponse.headers, sanitizeResponse);
|
|
482
|
+
return {
|
|
483
|
+
cached,
|
|
484
|
+
data: sanitized.data,
|
|
485
|
+
status: parsedResponse.status,
|
|
486
|
+
statusText: sanitized.statusText,
|
|
487
|
+
headers: sanitized.headers,
|
|
488
|
+
latencyMs: parsedResponse.latencyMs,
|
|
489
|
+
deleteFromCache: async () => {
|
|
490
|
+
await cache.del(cacheKey);
|
|
491
|
+
require_logger.logger.debug(`Evicted from cache: ${cacheKey}`);
|
|
492
|
+
},
|
|
493
|
+
updateCache: async (data, status, statusText, headers) => {
|
|
494
|
+
await cache.set(cacheKey, serializeFetchResponse(data, status, statusText, headers ?? {}, parsedResponse.latencyMs, sanitizeResponse));
|
|
495
|
+
require_logger.logger.debug(`Updated cached response: ${cacheKey}`);
|
|
496
|
+
}
|
|
497
|
+
};
|
|
498
|
+
}
|
|
499
|
+
async function fetchAndReadBody(url, options, timeout, maxRetries, isIdempotent, logEnabled, onRateLimitBackoff) {
|
|
500
|
+
const retryBudget = Math.max(0, maxRetries ?? require_fetch.getFetchRetryContextMaxRetries() ?? 2);
|
|
501
|
+
const maxBodyRetries = isIdempotent ? Math.min(2, retryBudget) : 0;
|
|
502
|
+
for (let bodyAttempt = 0; bodyAttempt <= maxBodyRetries; bodyAttempt++) {
|
|
503
|
+
const fetchStart = Date.now();
|
|
504
|
+
const resp = await require_fetch.fetchWithRetries(url, options, timeout, maxRetries, onRateLimitBackoff);
|
|
505
|
+
const fetchLatencyMs = Date.now() - fetchStart;
|
|
506
|
+
try {
|
|
507
|
+
return {
|
|
508
|
+
respText: await resp.text(),
|
|
509
|
+
resp,
|
|
510
|
+
fetchLatencyMs
|
|
511
|
+
};
|
|
512
|
+
} catch (err) {
|
|
513
|
+
if (!options.signal?.aborted && require_fetch.isTransientConnectionError(err) && bodyAttempt < maxBodyRetries) {
|
|
514
|
+
const backoffMs = Math.pow(2, bodyAttempt) * 1e3;
|
|
515
|
+
if (logEnabled) require_logger.logger.debug("[Cache] Body stream failed with transient error, retrying", {
|
|
516
|
+
attempt: bodyAttempt + 1,
|
|
517
|
+
maxRetries: maxBodyRetries,
|
|
518
|
+
backoffMs,
|
|
519
|
+
error: err?.message?.slice(0, 200)
|
|
520
|
+
});
|
|
521
|
+
await require_shared.waitForPromiseWithAbort(require_time.sleep(backoffMs), options.signal);
|
|
522
|
+
require_shared.throwIfAborted(options.signal);
|
|
523
|
+
continue;
|
|
524
|
+
}
|
|
525
|
+
if (require_fetch.isAbortError(err)) throw err;
|
|
526
|
+
const wrappedError = /* @__PURE__ */ new Error(`Error reading response body from ${require_logger.sanitizeUrlForLogging(require_fetch.getRequestUrlString(url))}: ${err.message}. HTTP ${resp.status} ${resp.statusText}`);
|
|
527
|
+
wrappedError.cause = err;
|
|
528
|
+
throw wrappedError;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
throw new Error("Exhausted body retries without returning or throwing");
|
|
532
|
+
}
|
|
533
|
+
function parseFetchResponse(url, response, responseText, format, sanitizeResponse) {
|
|
534
|
+
try {
|
|
535
|
+
return format === "json" ? JSON.parse(responseText) : responseText;
|
|
536
|
+
} catch (err) {
|
|
537
|
+
const message = `Error parsing response from ${require_logger.sanitizeUrlForLogging(require_fetch.getRequestUrlString(url))}:`;
|
|
538
|
+
if (sanitizeResponse) throw new Error(`${message} Invalid JSON. HTTP ${response.status}.`);
|
|
539
|
+
throw new Error(`${message} ${err.message}. HTTP ${response.status} ${response.statusText}. Received text: ${responseText}`);
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
async function prepareFetchResponse(url, options, timeout, maxRetries, isIdempotent, format, logEnabled, sanitizeResponse, onRateLimitBackoff) {
|
|
543
|
+
const result = await fetchAndReadBody(url, options, timeout, maxRetries, isIdempotent, logEnabled, onRateLimitBackoff);
|
|
544
|
+
const response = result.resp;
|
|
545
|
+
const responseText = result.respText;
|
|
546
|
+
const fetchLatencyMs = result.fetchLatencyMs;
|
|
547
|
+
const parsedData = parseFetchResponse(url, response, responseText, format, sanitizeResponse);
|
|
548
|
+
const responseError = format === "json" && parsedData !== null && typeof parsedData === "object" && "error" in parsedData ? parsedData.error : void 0;
|
|
549
|
+
const serializedResponse = serializeFetchResponse(!response.ok && responseText === "" ? `Empty Response: ${response.status}: ${response.statusText}` : parsedData, response.status, response.statusText, Object.fromEntries(response.headers.entries()), fetchLatencyMs, sanitizeResponse);
|
|
550
|
+
if (!response.ok) return {
|
|
551
|
+
response: serializedResponse,
|
|
552
|
+
cacheable: false
|
|
553
|
+
};
|
|
554
|
+
if (responseError) {
|
|
555
|
+
if (logEnabled) require_logger.logger.debug(`Not caching ${require_logger.sanitizeUrlForLogging(require_fetch.getRequestUrlString(url))} because it contains an 'error' key: ${sanitizeResponse ? serializedResponse : responseError}`);
|
|
556
|
+
return {
|
|
557
|
+
response: serializedResponse,
|
|
558
|
+
cacheable: false
|
|
559
|
+
};
|
|
560
|
+
}
|
|
561
|
+
if (logEnabled) require_logger.logger.debug(`Storing ${require_logger.sanitizeUrlForLogging(require_fetch.getRequestUrlString(url))} response in cache with latencyMs=${fetchLatencyMs}: ${serializedResponse}`);
|
|
562
|
+
return {
|
|
563
|
+
response: serializedResponse,
|
|
564
|
+
cacheable: true
|
|
565
|
+
};
|
|
566
|
+
}
|
|
567
|
+
/**
|
|
568
|
+
* Fetch a URL with automatic caching.
|
|
569
|
+
*
|
|
570
|
+
* Caches HTTP responses with configurable TTL. Useful for fetching external
|
|
571
|
+
* data files, embeddings, or API responses that don't change frequently.
|
|
572
|
+
*
|
|
573
|
+
* @param url URL to fetch
|
|
574
|
+
* @param options Fetch options (method, headers, body, etc.)
|
|
575
|
+
* @param timeout Request timeout in milliseconds (default: standard timeout)
|
|
576
|
+
* @param format Response format: 'json' or 'text' (default: 'json')
|
|
577
|
+
* @param bustOrOptions Bypass cache or provide cache options for this request
|
|
578
|
+
* @param maxRetries Maximum number of retries on transient errors
|
|
579
|
+
* @param onResponsePrepared Observe each caller's fresh, fully read response before waiting for cache publication
|
|
580
|
+
* @param onRateLimitBackoff Observe this request's selected live fetch backoff before its wait
|
|
581
|
+
*
|
|
582
|
+
* @returns FetchWithCacheResult with data, cache status, and HTTP metadata
|
|
583
|
+
*
|
|
584
|
+
* @example
|
|
585
|
+
* ```typescript
|
|
586
|
+
* import { cache } from 'promptfoo';
|
|
587
|
+
*
|
|
588
|
+
* // Fetch with 1-hour TTL
|
|
589
|
+
* const result = await cache.fetchWithCache(
|
|
590
|
+
* 'https://api.example.com/data',
|
|
591
|
+
* { method: 'GET' },
|
|
592
|
+
* undefined,
|
|
593
|
+
* 'json'
|
|
594
|
+
* );
|
|
595
|
+
*
|
|
596
|
+
* console.log(result.cached); // true if from cache
|
|
597
|
+
* console.log(result.data); // the fetched data
|
|
598
|
+
* console.log(result.status); // HTTP status code
|
|
599
|
+
* ```
|
|
600
|
+
*
|
|
601
|
+
* @see withCacheNamespace for cache isolation
|
|
602
|
+
* @see enableCache / disableCache for cache control
|
|
603
|
+
*/
|
|
604
|
+
async function fetchWithCache(url, options = {}, timeout = require_shared.getRequestTimeoutMs(), format = "json", bustOrOptions = false, maxRetries, onResponsePrepared, onRateLimitBackoff) {
|
|
605
|
+
const signal = require_shared.getEffectiveRequestSignal(url, options);
|
|
606
|
+
require_shared.throwIfAborted(signal);
|
|
607
|
+
const fetchOptions = require_fetch.preserveCloudAuthRedirects(url, signal === options.signal ? options : {
|
|
608
|
+
...options,
|
|
609
|
+
signal
|
|
610
|
+
});
|
|
611
|
+
const { bust = false, repeatIndex, cacheKey: providedCacheKey, sanitizeResponse } = typeof bustOrOptions === "boolean" ? { bust: bustOrOptions } : bustOrOptions ?? {};
|
|
612
|
+
const logEnabled = new Headers(require_fetch.getFetchWithProxyHeaders(url, fetchOptions)).get("x-promptfoo-silent") !== "true";
|
|
613
|
+
const method = (fetchOptions.method ?? (url instanceof Request ? url.method : "GET")).toUpperCase();
|
|
614
|
+
const isIdempotent = [
|
|
615
|
+
"GET",
|
|
616
|
+
"HEAD",
|
|
617
|
+
"OPTIONS",
|
|
618
|
+
"PUT",
|
|
619
|
+
"DELETE"
|
|
620
|
+
].includes(method);
|
|
621
|
+
const cacheEnabled = getEffectiveCacheEnabled();
|
|
622
|
+
if (cacheEnabled && !bust && fetchOptions.getAuthHeaders && !providedCacheKey) throw new Error("Request-time authentication requires cache bypass or an explicit principal-scoped cache key.");
|
|
623
|
+
if (cacheEnabled && !bust && sanitizeResponse && !providedCacheKey) throw new Error("Response sanitization requires cache bypass or an explicit cache key identifying the sanitizer policy.");
|
|
624
|
+
const repeatSuffix = shouldApplyRepeatCacheSuffix(repeatIndex) ? `:repeat${repeatIndex}` : "";
|
|
625
|
+
const providedKeyPrefix = fetchOptions.restrictCloudAuthRedirects ? "fetch:cloud-auth:v3" : "fetch:v3";
|
|
626
|
+
const cacheKey = cacheEnabled && !bust ? providedCacheKey ? getScopedCacheKey(`${providedKeyPrefix}:${providedCacheKey}${repeatSuffix}`) : getFetchCacheKey(url, fetchOptions, method, format, repeatIndex) : null;
|
|
627
|
+
let notifyRateLimitBackoff;
|
|
628
|
+
const observerFailure = onRateLimitBackoff ? new Promise((_resolve, reject) => {
|
|
629
|
+
let failed = false;
|
|
630
|
+
notifyRateLimitBackoff = (observation) => {
|
|
631
|
+
if (failed) return;
|
|
632
|
+
try {
|
|
633
|
+
onRateLimitBackoff(observation);
|
|
634
|
+
} catch (error) {
|
|
635
|
+
failed = true;
|
|
636
|
+
reject(error);
|
|
637
|
+
}
|
|
638
|
+
};
|
|
639
|
+
}) : void 0;
|
|
640
|
+
observerFailure?.catch(() => void 0);
|
|
641
|
+
if (!cacheEnabled || bust || cacheKey == null) {
|
|
642
|
+
const response = fetchAndReadBody(url, fetchOptions, timeout, maxRetries, isIdempotent, logEnabled, notifyRateLimitBackoff);
|
|
643
|
+
const { respText, resp, fetchLatencyMs } = await (observerFailure ? Promise.race([response, observerFailure]) : response);
|
|
644
|
+
const sanitized = getSanitizedResponse(parseFetchResponse(url, resp, respText, format, sanitizeResponse), resp.statusText, Object.fromEntries(resp.headers.entries()), sanitizeResponse);
|
|
645
|
+
const result = {
|
|
646
|
+
cached: false,
|
|
647
|
+
data: sanitized.data,
|
|
648
|
+
status: resp.status,
|
|
649
|
+
statusText: sanitized.statusText,
|
|
650
|
+
headers: sanitized.headers,
|
|
651
|
+
latencyMs: fetchLatencyMs,
|
|
652
|
+
deleteFromCache: async () => {}
|
|
653
|
+
};
|
|
654
|
+
onResponsePrepared?.(result);
|
|
655
|
+
return result;
|
|
656
|
+
}
|
|
657
|
+
const cache = getCacheInstance();
|
|
658
|
+
const cachedResponse = await require_shared.waitForPromiseWithAbort(cache.get(cacheKey), signal);
|
|
659
|
+
require_shared.throwIfAborted(signal);
|
|
660
|
+
if (cachedResponse != null) {
|
|
661
|
+
const result = deserializeFetchResponse(cachedResponse, true, cache, cacheKey, sanitizeResponse);
|
|
662
|
+
if (logEnabled) {
|
|
663
|
+
const loggedResponse = sanitizeResponse ? serializeFetchResponse(result.data, result.status, result.statusText, result.headers, result.latencyMs) : cachedResponse;
|
|
664
|
+
require_logger.logger.debug(`Returning cached response for ${require_logger.sanitizeUrlForLogging(require_fetch.getRequestUrlString(url))}: ${loggedResponse}`);
|
|
665
|
+
}
|
|
666
|
+
return result;
|
|
667
|
+
}
|
|
668
|
+
const inflightCacheKey = getAbortSignalScopedKey(cacheKey, signal);
|
|
669
|
+
let inflightResponse = inflightFetchResponses.get(inflightCacheKey);
|
|
670
|
+
const coalesced = inflightResponse !== void 0;
|
|
671
|
+
if (!inflightResponse) {
|
|
672
|
+
const rateLimitBackoff = { observers: /* @__PURE__ */ new Set() };
|
|
673
|
+
const response = prepareFetchResponse(url, fetchOptions, timeout, maxRetries, isIdempotent, format, logEnabled, sanitizeResponse, (observation) => {
|
|
674
|
+
rateLimitBackoff.latest = observation;
|
|
675
|
+
for (const observer of rateLimitBackoff.observers) observer(observation);
|
|
676
|
+
});
|
|
677
|
+
const publication = response.then(async (preparedResponse) => {
|
|
678
|
+
if (preparedResponse.cacheable) await cache.set(cacheKey, preparedResponse.response);
|
|
679
|
+
}).finally(() => {
|
|
680
|
+
inflightFetchResponses.delete(inflightCacheKey);
|
|
681
|
+
});
|
|
682
|
+
publication.catch(() => void 0);
|
|
683
|
+
inflightResponse = {
|
|
684
|
+
response,
|
|
685
|
+
publication,
|
|
686
|
+
rateLimitBackoff
|
|
687
|
+
};
|
|
688
|
+
inflightFetchResponses.set(inflightCacheKey, inflightResponse);
|
|
689
|
+
}
|
|
690
|
+
if (notifyRateLimitBackoff) {
|
|
691
|
+
inflightResponse.rateLimitBackoff.observers.add(notifyRateLimitBackoff);
|
|
692
|
+
const latest = inflightResponse.rateLimitBackoff.latest;
|
|
693
|
+
if (latest && latest.resetAt > Date.now()) notifyRateLimitBackoff(latest);
|
|
694
|
+
}
|
|
695
|
+
try {
|
|
696
|
+
const { response, cacheable } = await (observerFailure ? Promise.race([inflightResponse.response, observerFailure]) : inflightResponse.response);
|
|
697
|
+
const result = deserializeFetchResponse(response, false, cache, cacheKey, sanitizeResponse);
|
|
698
|
+
if (coalesced) result.coalesced = true;
|
|
699
|
+
onResponsePrepared?.(result);
|
|
700
|
+
if (cacheable) {
|
|
701
|
+
await require_shared.waitForPromiseWithAbort(inflightResponse.publication, signal);
|
|
702
|
+
require_shared.throwIfAborted(signal);
|
|
703
|
+
} else await inflightResponse.publication;
|
|
704
|
+
return result;
|
|
705
|
+
} finally {
|
|
706
|
+
if (notifyRateLimitBackoff) inflightResponse.rateLimitBackoff.observers.delete(notifyRateLimitBackoff);
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
/**
|
|
710
|
+
* Enable caching for all provider calls (default behavior).
|
|
711
|
+
*
|
|
712
|
+
* @example
|
|
713
|
+
* ```typescript
|
|
714
|
+
* import { cache } from 'promptfoo';
|
|
715
|
+
* cache.enableCache();
|
|
716
|
+
* ```
|
|
717
|
+
*/
|
|
718
|
+
function enableCache() {
|
|
719
|
+
enabled = true;
|
|
720
|
+
}
|
|
721
|
+
/**
|
|
722
|
+
* Disable caching. Provider calls will hit the API every time.
|
|
723
|
+
*
|
|
724
|
+
* Useful during development or testing when you want fresh results.
|
|
725
|
+
*
|
|
726
|
+
* @example
|
|
727
|
+
* ```typescript
|
|
728
|
+
* import { cache, evaluate } from 'promptfoo';
|
|
729
|
+
*
|
|
730
|
+
* cache.disableCache();
|
|
731
|
+
* const results = await evaluate(testSuite); // Always fresh
|
|
732
|
+
* cache.enableCache();
|
|
733
|
+
* ```
|
|
734
|
+
*/
|
|
735
|
+
function disableCache() {
|
|
736
|
+
enabled = false;
|
|
737
|
+
}
|
|
738
|
+
/**
|
|
739
|
+
* Clear all cached results.
|
|
740
|
+
*
|
|
741
|
+
* Removes all cached provider responses. The cache will refetch on next access.
|
|
742
|
+
*
|
|
743
|
+
* @example
|
|
744
|
+
* ```typescript
|
|
745
|
+
* import { cache, evaluate } from 'promptfoo';
|
|
746
|
+
*
|
|
747
|
+
* await cache.clearCache();
|
|
748
|
+
* const results = await evaluate(testSuite); // Refetches all
|
|
749
|
+
* ```
|
|
750
|
+
*/
|
|
751
|
+
async function clearCache() {
|
|
752
|
+
inflightFetchResponses.clear();
|
|
753
|
+
namespacedCacheInstances.clear();
|
|
754
|
+
const result = await getCacheInstance().clear();
|
|
755
|
+
claimedCacheKeys.clear();
|
|
756
|
+
if (cacheType === "disk") {
|
|
757
|
+
const cachePath = require_logger.getEnvString("PROMPTFOO_CACHE_PATH") || path.default.join(require_logger.getConfigDirectoryPath(), "cache");
|
|
758
|
+
fs.default.rmSync(path.default.join(cachePath, "claims"), {
|
|
759
|
+
force: true,
|
|
760
|
+
recursive: true
|
|
761
|
+
});
|
|
762
|
+
}
|
|
763
|
+
return result;
|
|
764
|
+
}
|
|
765
|
+
/**
|
|
766
|
+
* Check if caching is currently enabled.
|
|
767
|
+
*
|
|
768
|
+
* @returns true if cache is enabled, false otherwise
|
|
769
|
+
*
|
|
770
|
+
* @example
|
|
771
|
+
* ```typescript
|
|
772
|
+
* import { cache } from 'promptfoo';
|
|
773
|
+
*
|
|
774
|
+
* if (cache.isCacheEnabled()) {
|
|
775
|
+
* console.log('Cache is active');
|
|
776
|
+
* }
|
|
777
|
+
* ```
|
|
778
|
+
*/
|
|
779
|
+
function isCacheEnabled() {
|
|
780
|
+
return getEffectiveCacheEnabled();
|
|
781
|
+
}
|
|
782
|
+
//#endregion
|
|
783
|
+
Object.defineProperty(exports, "cache_exports", {
|
|
784
|
+
enumerable: true,
|
|
785
|
+
get: function() {
|
|
786
|
+
return cache_exports;
|
|
787
|
+
}
|
|
788
|
+
});
|
|
789
|
+
Object.defineProperty(exports, "claimCacheKeyOnce", {
|
|
790
|
+
enumerable: true,
|
|
791
|
+
get: function() {
|
|
792
|
+
return claimCacheKeyOnce;
|
|
793
|
+
}
|
|
794
|
+
});
|
|
795
|
+
Object.defineProperty(exports, "disableCache", {
|
|
796
|
+
enumerable: true,
|
|
797
|
+
get: function() {
|
|
798
|
+
return disableCache;
|
|
799
|
+
}
|
|
800
|
+
});
|
|
801
|
+
Object.defineProperty(exports, "fetchWithCache", {
|
|
802
|
+
enumerable: true,
|
|
803
|
+
get: function() {
|
|
804
|
+
return fetchWithCache;
|
|
805
|
+
}
|
|
806
|
+
});
|
|
807
|
+
Object.defineProperty(exports, "getAbortSignalScopedKey", {
|
|
808
|
+
enumerable: true,
|
|
809
|
+
get: function() {
|
|
810
|
+
return getAbortSignalScopedKey;
|
|
811
|
+
}
|
|
812
|
+
});
|
|
813
|
+
Object.defineProperty(exports, "getCache", {
|
|
814
|
+
enumerable: true,
|
|
815
|
+
get: function() {
|
|
816
|
+
return getCache;
|
|
817
|
+
}
|
|
818
|
+
});
|
|
819
|
+
Object.defineProperty(exports, "getCacheClearGeneration", {
|
|
820
|
+
enumerable: true,
|
|
821
|
+
get: function() {
|
|
822
|
+
return getCacheClearGeneration;
|
|
823
|
+
}
|
|
824
|
+
});
|
|
825
|
+
Object.defineProperty(exports, "getCacheTtlMs", {
|
|
826
|
+
enumerable: true,
|
|
827
|
+
get: function() {
|
|
828
|
+
return getCacheTtlMs;
|
|
829
|
+
}
|
|
830
|
+
});
|
|
831
|
+
Object.defineProperty(exports, "getScopedCacheKey", {
|
|
832
|
+
enumerable: true,
|
|
833
|
+
get: function() {
|
|
834
|
+
return getScopedCacheKey;
|
|
835
|
+
}
|
|
836
|
+
});
|
|
837
|
+
Object.defineProperty(exports, "isCacheEnabled", {
|
|
838
|
+
enumerable: true,
|
|
839
|
+
get: function() {
|
|
840
|
+
return isCacheEnabled;
|
|
841
|
+
}
|
|
842
|
+
});
|
|
843
|
+
Object.defineProperty(exports, "withCacheEnabled", {
|
|
844
|
+
enumerable: true,
|
|
845
|
+
get: function() {
|
|
846
|
+
return withCacheEnabled;
|
|
847
|
+
}
|
|
848
|
+
});
|
|
849
|
+
Object.defineProperty(exports, "withCacheNamespace", {
|
|
850
|
+
enumerable: true,
|
|
851
|
+
get: function() {
|
|
852
|
+
return withCacheNamespace;
|
|
853
|
+
}
|
|
854
|
+
});
|
|
855
|
+
|
|
856
|
+
//# sourceMappingURL=cache-iG87oYan.cjs.map
|