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,710 @@
|
|
|
1
|
+
import { d as isNonCredentialHeader, l as REDACTED, m as looksLikeSecret, o as logger, p as isSecretField, w as sanitizeUrlForLogging, y as sanitizeObject } from "./logger-CNHLbG5Y.js";
|
|
2
|
+
import { n as fetchWithRetries, s as readBoundedText } from "./fetch-BG_Jl7ty.js";
|
|
3
|
+
import { r as sleepWithAbort } from "./time-Db5rO0GY.js";
|
|
4
|
+
import { n as renderVarsInObject, r as analyzeTemplateReference } from "./render-DrCSgzhR.js";
|
|
5
|
+
import { c as extractProviderResponseAttributes, h as withGenAISpan, i as buildChatSpanContext } from "./genaiTracer-QTyx3Q-T.js";
|
|
6
|
+
import { d as appendOpenAiApiPath, f as assertOpenAiApiModel } from "./util-CeGgoYs1.js";
|
|
7
|
+
import { r as calculateOpenAIUsageCost } from "./billing-DstHUOON.js";
|
|
8
|
+
import "./tracing-B8p6SMbW.js";
|
|
9
|
+
import { n as OpenAiGenericProvider } from "./openai-Wnwbwy-M.js";
|
|
10
|
+
import { t as decodeUrlComponent } from "./urlEncoding-DySBduQp.js";
|
|
11
|
+
//#region src/providers/openai/agents-api.ts
|
|
12
|
+
const MAX_TIMER_MS = 2147483647;
|
|
13
|
+
const MAX_LIST_PAGES = 100;
|
|
14
|
+
const MAX_SESSION_LIST_PAGES = 1e3;
|
|
15
|
+
const MAX_LIST_ITEMS = 1e4;
|
|
16
|
+
const MAX_ERROR_DETAIL_LENGTH = 1024;
|
|
17
|
+
const MAX_RESPONSE_BODY_BYTES = 16777216;
|
|
18
|
+
const TRANSIENT_STATUS_CODES = /* @__PURE__ */ new Set([
|
|
19
|
+
500,
|
|
20
|
+
502,
|
|
21
|
+
503,
|
|
22
|
+
504
|
|
23
|
+
]);
|
|
24
|
+
const MESSAGE_ITEM_TYPES = /* @__PURE__ */ new Set([
|
|
25
|
+
"message",
|
|
26
|
+
"agent_message",
|
|
27
|
+
"reasoning"
|
|
28
|
+
]);
|
|
29
|
+
const RETRY_BASE_DELAY_MS = 1e3;
|
|
30
|
+
const RETRY_MAX_DELAY_MS = 8e3;
|
|
31
|
+
const CLEANUP_RETRY_MAX_DELAY_MS = 5e3;
|
|
32
|
+
const TURN_USAGE_GRACE_MS = 5e3;
|
|
33
|
+
const MIN_CREDENTIAL_LENGTH = 8;
|
|
34
|
+
const MIN_TOKEN_CREDENTIAL_LENGTH = 2;
|
|
35
|
+
const CREDENTIAL_NAME = /(?:authorization|api[-_]?key|token|secret|signature|credential|cookie|password|(?:^|[-_])key$)/i;
|
|
36
|
+
var AgentsApiHttpError = class extends Error {
|
|
37
|
+
status;
|
|
38
|
+
constructor(message, status) {
|
|
39
|
+
super(message);
|
|
40
|
+
this.status = status;
|
|
41
|
+
this.name = "AgentsApiHttpError";
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
function isCredentialName(name) {
|
|
45
|
+
return isSecretField(name) || CREDENTIAL_NAME.test(name);
|
|
46
|
+
}
|
|
47
|
+
function isCredentialHeader(name, value) {
|
|
48
|
+
return isCredentialName(name) || /(?:^|[-_])auth(?:$|[-_])/i.test(name) || getUrlCredentials(value).length > 0 || sanitizeObject({ headers: { [name]: value } }).headers[name] === "[REDACTED]";
|
|
49
|
+
}
|
|
50
|
+
function addCredential(credentials, value) {
|
|
51
|
+
if (typeof value !== "string") return;
|
|
52
|
+
const trimmed = value.trim();
|
|
53
|
+
const candidates = [trimmed, trimmed.replace(/^(?:Bearer|Basic|Token)\s+/i, "")];
|
|
54
|
+
const basic = /^Basic\s+([a-z\d+/]+={0,2})$/i.exec(trimmed);
|
|
55
|
+
if (basic) {
|
|
56
|
+
const bytes = Buffer.from(basic[1], "base64");
|
|
57
|
+
const decoded = bytes.toString("utf8");
|
|
58
|
+
const separator = decoded.indexOf(":");
|
|
59
|
+
if (separator !== -1 && bytes.toString("base64").replace(/=+$/, "") === basic[1].replace(/=+$/, "")) candidates.push(decoded, decoded.slice(0, separator), decoded.slice(separator + 1));
|
|
60
|
+
}
|
|
61
|
+
for (const candidate of candidates) if (candidate.length >= MIN_TOKEN_CREDENTIAL_LENGTH) {
|
|
62
|
+
credentials.add(candidate);
|
|
63
|
+
credentials.add(encodeURIComponent(candidate));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/** Decode URL userinfo as Node's HTTP client does, keeping a malformed escape as written. */
|
|
67
|
+
function decodeUserinfo(url) {
|
|
68
|
+
return url.username || url.password ? `${decodeUrlComponent(url.username)}:${decodeUrlComponent(url.password)}` : void 0;
|
|
69
|
+
}
|
|
70
|
+
function basicCredential(userinfo) {
|
|
71
|
+
return `Basic ${Buffer.from(userinfo).toString("base64")}`;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Promptfoo's fetch helper would Base64-encode URL userinfo while it is still percent-encoded, so
|
|
75
|
+
* request URLs omit it and the provider sends a decoded Basic credential instead.
|
|
76
|
+
*/
|
|
77
|
+
function splitUserinfo(apiUrl) {
|
|
78
|
+
let url;
|
|
79
|
+
try {
|
|
80
|
+
url = new URL(apiUrl);
|
|
81
|
+
} catch {
|
|
82
|
+
return { url: apiUrl };
|
|
83
|
+
}
|
|
84
|
+
const userinfo = decodeUserinfo(url);
|
|
85
|
+
if (!userinfo) return { url: apiUrl };
|
|
86
|
+
url.username = "";
|
|
87
|
+
url.password = "";
|
|
88
|
+
return {
|
|
89
|
+
url: url.toString(),
|
|
90
|
+
userinfo
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Credential values carried by a URL: userinfo, including the decoded pair and the Basic
|
|
95
|
+
* credential derived from it, and credential-named query parameters. Raw and decoded spellings
|
|
96
|
+
* are both returned for redaction.
|
|
97
|
+
*/
|
|
98
|
+
function getUrlCredentials(value, includeFragment = true) {
|
|
99
|
+
const trimmed = value.trim();
|
|
100
|
+
if (!/^[a-z][a-z\d+.-]*:\/\//i.test(trimmed)) return [];
|
|
101
|
+
let url;
|
|
102
|
+
try {
|
|
103
|
+
url = new URL(trimmed);
|
|
104
|
+
} catch {
|
|
105
|
+
return sanitizeUrlForLogging(value) === value ? [] : [value];
|
|
106
|
+
}
|
|
107
|
+
const found = [url.username, url.password].flatMap((part) => [part, decodeUrlComponent(part)]);
|
|
108
|
+
const userinfo = decodeUserinfo(url);
|
|
109
|
+
if (userinfo) found.push(userinfo, basicCredential(userinfo));
|
|
110
|
+
const sanitizedSegments = sanitizeUrlForLogging(url.pathname).split("/");
|
|
111
|
+
for (const [index, segment] of url.pathname.split("/").entries()) if (sanitizedSegments[index] === "%5BREDACTED%5D") found.push(segment, decodeUrlComponent(segment));
|
|
112
|
+
const parameterParts = includeFragment ? [url.search, url.hash] : [url.search];
|
|
113
|
+
for (const segment of parameterParts.flatMap((part) => part.slice(1).split(/[&;]/))) {
|
|
114
|
+
const separator = segment.indexOf("=");
|
|
115
|
+
const [param] = new URLSearchParams(segment);
|
|
116
|
+
if (separator !== -1 && param && (isCredentialName(param[0]) || looksLikeSecret(param[1]) || looksLikeSecret(segment.slice(separator + 1)))) found.push(segment.slice(separator + 1), param[1]);
|
|
117
|
+
}
|
|
118
|
+
return found.filter((credential) => credential.trim().length > 0);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Collect credential values from credential-named keys, credential-bearing URLs, and every value in
|
|
122
|
+
* a `headers` map, such as provider or remote MCP tool headers, except non-credential headers.
|
|
123
|
+
*/
|
|
124
|
+
function collectConfigCredentials(value, credentials, key = "", inHeaders = false) {
|
|
125
|
+
if (typeof value === "string") {
|
|
126
|
+
if (key && isCredentialName(key) || inHeaders && !isNonCredentialHeader(key)) addCredential(credentials, value);
|
|
127
|
+
for (const credential of getUrlCredentials(value)) addCredential(credentials, credential);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (Array.isArray(value)) {
|
|
131
|
+
for (const item of value) collectConfigCredentials(item, credentials, key, inHeaders);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (value && typeof value === "object") {
|
|
135
|
+
const childInHeaders = inHeaders || key.toLowerCase() === "headers";
|
|
136
|
+
for (const [childKey, item] of Object.entries(value)) collectConfigCredentials(item, credentials, childKey, childInHeaders);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Credential-named header values are redacted and satisfy the credential requirement. Any custom
|
|
141
|
+
* header outside the non-credential allowlist may authenticate a gateway.
|
|
142
|
+
*/
|
|
143
|
+
function scanRequestHeaders(headers, credentials) {
|
|
144
|
+
let hasHeaderCredential = false;
|
|
145
|
+
let hasCustomHeader = false;
|
|
146
|
+
headers.forEach((value, name) => {
|
|
147
|
+
const present = value.trim().length > 0;
|
|
148
|
+
if (isCredentialName(name)) {
|
|
149
|
+
hasHeaderCredential ||= present;
|
|
150
|
+
addCredential(credentials, value);
|
|
151
|
+
}
|
|
152
|
+
hasCustomHeader ||= present && name !== "authorization" && !isNonCredentialHeader(name);
|
|
153
|
+
});
|
|
154
|
+
return {
|
|
155
|
+
hasHeaderCredential,
|
|
156
|
+
hasCustomHeader
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/** Credentials a call can send or echo: its resolved key, effective base URL, and config values. */
|
|
160
|
+
function collectCallCredentials(provider, credentials) {
|
|
161
|
+
addCredential(credentials, provider.getApiKey());
|
|
162
|
+
for (const credential of getUrlCredentials(provider.getApiUrl())) addCredential(credentials, credential);
|
|
163
|
+
collectConfigCredentials(provider.config, credentials);
|
|
164
|
+
}
|
|
165
|
+
function sortCredentials(credentials) {
|
|
166
|
+
return [...credentials].sort((left, right) => right.length - left.length);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Match a short credential only as a separate token, not next to a character that continues one.
|
|
170
|
+
* `=` may precede a value, as in `api-key=s3cr3t`, but continues a token when it follows.
|
|
171
|
+
*/
|
|
172
|
+
function shortCredentialPattern(credential) {
|
|
173
|
+
const escaped = credential.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
174
|
+
return new RegExp(`(?<![\\w.~+/-])${escaped}(?![\\w.~+/=-])`, "g");
|
|
175
|
+
}
|
|
176
|
+
function redactCredentials(text, credentials) {
|
|
177
|
+
let redacted = text;
|
|
178
|
+
for (const credential of credentials) redacted = credential.length >= MIN_CREDENTIAL_LENGTH ? redacted.split(credential).join(REDACTED) : redacted.replace(shortCredentialPattern(credential), REDACTED);
|
|
179
|
+
return redacted.replace(/\bsk-[\w-]{16,}/g, REDACTED).replace(/\b(Bearer|Basic)\s+[\w.~+/=-]{8,}/gi, `$1 ${REDACTED}`);
|
|
180
|
+
}
|
|
181
|
+
function isNonNegativeSafeInteger(value) {
|
|
182
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
|
|
183
|
+
}
|
|
184
|
+
function isUsage(value) {
|
|
185
|
+
const usage = value;
|
|
186
|
+
const cached = usage?.input_tokens_details?.cached_tokens;
|
|
187
|
+
const reasoning = usage?.output_tokens_details?.reasoning_tokens;
|
|
188
|
+
return isNonNegativeSafeInteger(usage?.input_tokens) && isNonNegativeSafeInteger(usage.output_tokens) && isNonNegativeSafeInteger(usage.total_tokens) && (cached == null || isNonNegativeSafeInteger(cached)) && (reasoning == null || isNonNegativeSafeInteger(reasoning));
|
|
189
|
+
}
|
|
190
|
+
function toTokenUsage(usage) {
|
|
191
|
+
return {
|
|
192
|
+
prompt: usage.input_tokens,
|
|
193
|
+
completion: usage.output_tokens,
|
|
194
|
+
total: usage.total_tokens,
|
|
195
|
+
cached: usage.input_tokens_details?.cached_tokens ?? void 0,
|
|
196
|
+
completionDetails: { reasoning: usage.output_tokens_details?.reasoning_tokens ?? void 0 }
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
function addUsage(left, right) {
|
|
200
|
+
return {
|
|
201
|
+
input_tokens: left.input_tokens + right.input_tokens,
|
|
202
|
+
output_tokens: left.output_tokens + right.output_tokens,
|
|
203
|
+
total_tokens: left.total_tokens + right.total_tokens,
|
|
204
|
+
input_tokens_details: { cached_tokens: (left.input_tokens_details?.cached_tokens ?? 0) + (right.input_tokens_details?.cached_tokens ?? 0) },
|
|
205
|
+
output_tokens_details: { reasoning_tokens: (left.output_tokens_details?.reasoning_tokens ?? 0) + (right.output_tokens_details?.reasoning_tokens ?? 0) }
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
function referencesVariable(template, names) {
|
|
209
|
+
return names.some((name) => {
|
|
210
|
+
const reference = analyzeTemplateReference(template, name);
|
|
211
|
+
return reference.parsed && reference.referenced;
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
/** Render only strings that reference test vars, preserving literal braces in commands and code. */
|
|
215
|
+
function renderConfigTemplates(value, vars, names) {
|
|
216
|
+
if (typeof value === "string") return (value.includes("{{") || value.includes("{%")) && referencesVariable(value, names) ? renderVarsInObject(value, vars) : value;
|
|
217
|
+
if (Array.isArray(value)) return value.map((item) => renderConfigTemplates(item, vars, names));
|
|
218
|
+
if (value && typeof value === "object") return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, renderConfigTemplates(item, vars, names)]));
|
|
219
|
+
return typeof value === "function" ? renderVarsInObject(value, vars) : value;
|
|
220
|
+
}
|
|
221
|
+
/** Managed Codex sessions, distinct from the local @openai/agents SDK provider. */
|
|
222
|
+
var OpenAiAgentsApiProvider = class OpenAiAgentsApiProvider extends OpenAiGenericProvider {
|
|
223
|
+
modelOverride;
|
|
224
|
+
credentials = [];
|
|
225
|
+
listBudget = {
|
|
226
|
+
pages: MAX_SESSION_LIST_PAGES,
|
|
227
|
+
items: MAX_LIST_ITEMS,
|
|
228
|
+
bytes: MAX_RESPONSE_BODY_BYTES
|
|
229
|
+
};
|
|
230
|
+
listItemPeaks = /* @__PURE__ */ new Map();
|
|
231
|
+
listBytePeaks = /* @__PURE__ */ new Map();
|
|
232
|
+
inheritedCredentials = /* @__PURE__ */ new Set();
|
|
233
|
+
constructor(modelName = "", options = {}) {
|
|
234
|
+
const config = options.config ?? {};
|
|
235
|
+
super(modelName || config.agent?.model || config.model || (config.agent_id ? "" : "gpt-6-astra"), options);
|
|
236
|
+
this.modelOverride = modelName;
|
|
237
|
+
for (const key of [
|
|
238
|
+
"timeoutMs",
|
|
239
|
+
"pollIntervalMs",
|
|
240
|
+
"cleanupTimeoutMs"
|
|
241
|
+
]) {
|
|
242
|
+
const value = config[key];
|
|
243
|
+
if (value !== void 0 && (!Number.isSafeInteger(value) || value <= 0 || value > MAX_TIMER_MS)) throw new Error(`Agents API ${key} must be a positive integer no greater than ${MAX_TIMER_MS}`);
|
|
244
|
+
}
|
|
245
|
+
const { usageTimeoutMs } = config;
|
|
246
|
+
if (usageTimeoutMs !== void 0 && (!Number.isSafeInteger(usageTimeoutMs) || usageTimeoutMs < 0 || usageTimeoutMs > MAX_TIMER_MS)) throw new Error(`Agents API usageTimeoutMs must be a non-negative integer no greater than ${MAX_TIMER_MS}`);
|
|
247
|
+
if (config.environment && !["none", "openai_hosted"].includes(config.environment.type)) throw new Error("Agents API environment.type must be \"none\" or \"openai_hosted\"");
|
|
248
|
+
if (this.modelName) assertOpenAiApiModel(this.modelName, this.getApiUrl());
|
|
249
|
+
}
|
|
250
|
+
id() {
|
|
251
|
+
return this.modelName ? `openai:agents-api:${this.modelName}` : "openai:agents-api";
|
|
252
|
+
}
|
|
253
|
+
/** Validate credentials per call, after merging prompt settings and gateway authentication. */
|
|
254
|
+
requiresApiKey() {
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
257
|
+
redact(text) {
|
|
258
|
+
return redactCredentials(text, this.credentials);
|
|
259
|
+
}
|
|
260
|
+
async request(endpoint, method, headers, signal, body, query, idempotent = method !== "POST") {
|
|
261
|
+
const maxRetries = Math.max(0, this.config.maxRetries ?? 4);
|
|
262
|
+
for (let attempt = 0;; attempt++) {
|
|
263
|
+
signal.throwIfAborted();
|
|
264
|
+
const response = await fetchWithRetries(appendOpenAiApiPath(splitUserinfo(this.getApiUrl()).url, endpoint, query), {
|
|
265
|
+
method,
|
|
266
|
+
headers,
|
|
267
|
+
signal,
|
|
268
|
+
...body === void 0 ? {} : { body: JSON.stringify(body) }
|
|
269
|
+
}, 3e4, idempotent ? this.config.maxRetries : 0);
|
|
270
|
+
logger.debug("[OpenAI Agents API] Response", {
|
|
271
|
+
method,
|
|
272
|
+
endpoint,
|
|
273
|
+
status: response.status
|
|
274
|
+
});
|
|
275
|
+
if (idempotent && TRANSIENT_STATUS_CODES.has(response.status) && attempt < maxRetries) {
|
|
276
|
+
await response.body?.cancel();
|
|
277
|
+
await sleepWithAbort(Math.min(RETRY_BASE_DELAY_MS * 2 ** attempt, RETRY_MAX_DELAY_MS), signal);
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
if (method === "DELETE" && response.status === 404) {
|
|
281
|
+
await response.body?.cancel();
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
if (!response.ok) {
|
|
285
|
+
let detail = "";
|
|
286
|
+
try {
|
|
287
|
+
const parsed = JSON.parse(await readBoundedText(response, 8192));
|
|
288
|
+
const message = typeof parsed?.error === "string" ? parsed.error : parsed?.error?.message;
|
|
289
|
+
if (typeof message === "string") detail = this.redact(message).slice(0, MAX_ERROR_DETAIL_LENGTH);
|
|
290
|
+
} catch {
|
|
291
|
+
signal.throwIfAborted();
|
|
292
|
+
}
|
|
293
|
+
throw new AgentsApiHttpError(`Agents API ${method} failed: HTTP ${response.status} ${response.statusText}${detail ? `: ${detail}` : ""}`, response.status);
|
|
294
|
+
}
|
|
295
|
+
if (response.status === 204) return;
|
|
296
|
+
const text = await readBoundedText(response, MAX_RESPONSE_BODY_BYTES);
|
|
297
|
+
return text ? JSON.parse(text) : void 0;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
async list(endpoint, headers, signal) {
|
|
301
|
+
const items = [];
|
|
302
|
+
const cursors = /* @__PURE__ */ new Set();
|
|
303
|
+
let after;
|
|
304
|
+
let bytes = 0;
|
|
305
|
+
for (let pageCount = 0; pageCount < MAX_LIST_PAGES; pageCount++) {
|
|
306
|
+
if (this.listBudget.pages === 0) throw new Error(`Agents API session pagination limit exceeded (${MAX_SESSION_LIST_PAGES} pages)`);
|
|
307
|
+
this.listBudget.pages--;
|
|
308
|
+
const query = new URLSearchParams({
|
|
309
|
+
order: "asc",
|
|
310
|
+
limit: "100"
|
|
311
|
+
});
|
|
312
|
+
if (after) query.set("after", after);
|
|
313
|
+
const page = await this.request(endpoint, "GET", headers, signal, void 0, query.toString());
|
|
314
|
+
if (!Array.isArray(page?.data)) throw new Error("Agents API returned an invalid list response");
|
|
315
|
+
const previousPeak = this.listItemPeaks.get(endpoint) ?? 0;
|
|
316
|
+
const nextPeak = Math.max(previousPeak, items.length + page.data.length);
|
|
317
|
+
const growth = nextPeak - previousPeak;
|
|
318
|
+
if (growth > this.listBudget.items) throw new Error(`Agents API session pagination limit exceeded (${MAX_LIST_ITEMS} items)`);
|
|
319
|
+
this.listBudget.items -= growth;
|
|
320
|
+
this.listItemPeaks.set(endpoint, nextPeak);
|
|
321
|
+
bytes += Buffer.byteLength(JSON.stringify(page.data));
|
|
322
|
+
const previousBytePeak = this.listBytePeaks.get(endpoint) ?? 0;
|
|
323
|
+
const byteGrowth = Math.max(previousBytePeak, bytes) - previousBytePeak;
|
|
324
|
+
if (byteGrowth > this.listBudget.bytes) throw new Error(`Agents API session pagination limit exceeded (${MAX_RESPONSE_BODY_BYTES} bytes)`);
|
|
325
|
+
this.listBudget.bytes -= byteGrowth;
|
|
326
|
+
this.listBytePeaks.set(endpoint, Math.max(previousBytePeak, bytes));
|
|
327
|
+
items.push(...page.data);
|
|
328
|
+
if (!page.has_more) return items;
|
|
329
|
+
if (!page.last_id || cursors.has(page.last_id)) throw new Error("Agents API returned an invalid pagination cursor");
|
|
330
|
+
after = page.last_id;
|
|
331
|
+
cursors.add(after);
|
|
332
|
+
}
|
|
333
|
+
throw new Error(`Agents API pagination limit exceeded (${MAX_LIST_PAGES} pages)`);
|
|
334
|
+
}
|
|
335
|
+
async listSubagentIds(endpoint, headers, signal) {
|
|
336
|
+
return (await this.list(`${endpoint}/subagents`, headers, signal)).map(({ id }) => {
|
|
337
|
+
if (typeof id !== "string" || !id) throw new Error("Agents API returned an invalid subagent");
|
|
338
|
+
return id;
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* In live multi-agent sessions, session totals equaled the root turn's usage while each subagent
|
|
343
|
+
* turn reported its own. The API does not say whether session totals include subagent turns, so
|
|
344
|
+
* their usage is recorded beside the totals, never added, and the totals are marked.
|
|
345
|
+
*/
|
|
346
|
+
async getSubagentUsageMetadata(endpoint, headers, signal, evalSignal) {
|
|
347
|
+
try {
|
|
348
|
+
const subagentIds = await this.listSubagentIds(endpoint, headers, signal);
|
|
349
|
+
if (!subagentIds.length) return {};
|
|
350
|
+
let sum;
|
|
351
|
+
for (const id of subagentIds) {
|
|
352
|
+
const turns = await this.list(`${endpoint}/subagents/${encodeURIComponent(id)}/turns`, headers, signal);
|
|
353
|
+
for (const turn of turns) {
|
|
354
|
+
if (!isUsage(turn.usage)) return { usageMayExcludeSubagents: true };
|
|
355
|
+
sum = sum ? addUsage(sum, turn.usage) : turn.usage;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return {
|
|
359
|
+
usageMayExcludeSubagents: true,
|
|
360
|
+
...isUsage(sum) ? { subagentUsage: toTokenUsage(sum) } : {}
|
|
361
|
+
};
|
|
362
|
+
} catch (error) {
|
|
363
|
+
evalSignal?.throwIfAborted();
|
|
364
|
+
logger.debug("[OpenAI Agents API] Subagent turn usage unavailable", {
|
|
365
|
+
endpoint,
|
|
366
|
+
error: this.redact(error instanceof Error ? error.message : String(error))
|
|
367
|
+
});
|
|
368
|
+
return { usageMayExcludeSubagents: true };
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Session items cover only the root agent; each subagent keeps its own item history.
|
|
373
|
+
* Returns undefined when those histories cannot be read so the gap is reported, not hidden.
|
|
374
|
+
*/
|
|
375
|
+
async listSubagentItems(endpoint, headers, signal, evalSignal) {
|
|
376
|
+
try {
|
|
377
|
+
const items = [];
|
|
378
|
+
for (const id of await this.listSubagentIds(endpoint, headers, signal)) items.push(...await this.list(`${endpoint}/subagents/${encodeURIComponent(id)}/items`, headers, signal));
|
|
379
|
+
return items;
|
|
380
|
+
} catch (error) {
|
|
381
|
+
evalSignal?.throwIfAborted();
|
|
382
|
+
logger.debug("[OpenAI Agents API] Subagent tool items unavailable", {
|
|
383
|
+
endpoint,
|
|
384
|
+
error: this.redact(error instanceof Error ? error.message : String(error))
|
|
385
|
+
});
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
/** Summarize root and subagent tool activity; messages between agents are not tool calls. */
|
|
390
|
+
async summarizeToolCalls(endpoint, sessionItems, hasSubagents, headers, signal, evalSignal) {
|
|
391
|
+
const subagentItems = hasSubagents ? await this.listSubagentItems(endpoint, headers, signal, evalSignal) : [];
|
|
392
|
+
const toolCalls = [...sessionItems, ...subagentItems ?? []].filter((item) => !MESSAGE_ITEM_TYPES.has(item.type)).map((item) => ({
|
|
393
|
+
id: item.id,
|
|
394
|
+
type: item.type,
|
|
395
|
+
name: item.name,
|
|
396
|
+
status: item.status,
|
|
397
|
+
turnId: item.turn_id
|
|
398
|
+
}));
|
|
399
|
+
return subagentItems ? { toolCalls } : {
|
|
400
|
+
toolCalls,
|
|
401
|
+
subagentToolCallsUnavailable: true
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
getFinalAnswer(items) {
|
|
405
|
+
const messages = items.filter((item) => item.type === "message" && item.role === "assistant" && item.status === "completed");
|
|
406
|
+
const finalMessages = messages.filter((item) => item.phase === "final_answer");
|
|
407
|
+
const textParts = (finalMessages.length ? finalMessages : messages.filter((item) => !item.phase)).flatMap((item) => item.content ?? []).filter((part) => part.type === "output_text" && typeof part.text === "string");
|
|
408
|
+
if (!textParts.length) throw new Error("Agents API turn completed without a final assistant answer");
|
|
409
|
+
return textParts.map((part) => part.text).join("\n");
|
|
410
|
+
}
|
|
411
|
+
async callApi(prompt, context, options) {
|
|
412
|
+
options?.abortSignal?.throwIfAborted();
|
|
413
|
+
const promptConfig = context?.prompt?.config;
|
|
414
|
+
const endpointOverride = promptConfig?.apiBaseUrl !== void 0 || promptConfig?.apiHost !== void 0;
|
|
415
|
+
const mergedConfig = {
|
|
416
|
+
...this.config,
|
|
417
|
+
...endpointOverride && { headers: void 0 },
|
|
418
|
+
...promptConfig?.apiBaseUrl !== void 0 && { apiHost: void 0 },
|
|
419
|
+
...promptConfig?.apiHost !== void 0 && { apiBaseUrl: void 0 },
|
|
420
|
+
...promptConfig?.apiKeyEnvar !== void 0 && { apiKey: void 0 },
|
|
421
|
+
...promptConfig?.apiKey !== void 0 && { apiKeyEnvar: void 0 },
|
|
422
|
+
...promptConfig
|
|
423
|
+
};
|
|
424
|
+
delete mergedConfig.provider;
|
|
425
|
+
let config = mergedConfig;
|
|
426
|
+
const removedHeaderCredentials = /* @__PURE__ */ new Set();
|
|
427
|
+
try {
|
|
428
|
+
let removedInheritedHeaders = false;
|
|
429
|
+
const vars = context?.vars;
|
|
430
|
+
if (vars) config = renderConfigTemplates(mergedConfig, vars, Object.keys(vars));
|
|
431
|
+
if (endpointOverride && this.config.headers) {
|
|
432
|
+
const replacesHeaders = promptConfig?.headers !== void 0;
|
|
433
|
+
const { hasHeaderCredential, hasCustomHeader } = scanRequestHeaders(new Headers(config.headers), /* @__PURE__ */ new Set());
|
|
434
|
+
const hasReplacementCredential = replacesHeaders && (config.apiKey || config.apiKeyEnvar || hasHeaderCredential || hasCustomHeader);
|
|
435
|
+
const safeHeaders = {};
|
|
436
|
+
for (const [name, originalValue] of Object.entries(this.config.headers)) {
|
|
437
|
+
let value = String(originalValue);
|
|
438
|
+
try {
|
|
439
|
+
if (vars) value = String(renderConfigTemplates(originalValue, vars, Object.keys(vars)));
|
|
440
|
+
} catch (error) {
|
|
441
|
+
if (!replacesHeaders && !isCredentialHeader(name, value)) throw error;
|
|
442
|
+
}
|
|
443
|
+
if (isCredentialHeader(name, value)) {
|
|
444
|
+
removedInheritedHeaders ||= !hasReplacementCredential && value.trim().length > 0;
|
|
445
|
+
addCredential(removedHeaderCredentials, value);
|
|
446
|
+
collectConfigCredentials(value, removedHeaderCredentials);
|
|
447
|
+
} else safeHeaders[name] = value;
|
|
448
|
+
}
|
|
449
|
+
if (!replacesHeaders) config.headers = safeHeaders;
|
|
450
|
+
}
|
|
451
|
+
const callProvider = new OpenAiAgentsApiProvider(this.modelOverride, {
|
|
452
|
+
config,
|
|
453
|
+
env: this.env
|
|
454
|
+
});
|
|
455
|
+
if (removedInheritedHeaders && !callProvider.sendsToOpenAiApi()) {
|
|
456
|
+
const { hasCustomHeader } = scanRequestHeaders(new Headers(callProvider.getOpenAiRequestHeaders()), /* @__PURE__ */ new Set());
|
|
457
|
+
if (!hasCustomHeader) callProvider.config.useDefaultApiKey = false;
|
|
458
|
+
}
|
|
459
|
+
collectCallCredentials(this, callProvider.inheritedCredentials);
|
|
460
|
+
for (const credential of removedHeaderCredentials) callProvider.inheritedCredentials.add(credential);
|
|
461
|
+
const spanContext = buildChatSpanContext({
|
|
462
|
+
system: "openai",
|
|
463
|
+
model: callProvider.modelName,
|
|
464
|
+
providerId: this.id(),
|
|
465
|
+
prompt,
|
|
466
|
+
context
|
|
467
|
+
});
|
|
468
|
+
return await withGenAISpan({
|
|
469
|
+
...spanContext,
|
|
470
|
+
operationName: "invoke_agent",
|
|
471
|
+
agentId: config.agent_id
|
|
472
|
+
}, () => callProvider.runSession(prompt, options), (response) => ({
|
|
473
|
+
...extractProviderResponseAttributes(response),
|
|
474
|
+
responseModel: typeof response.metadata?.model === "string" ? response.metadata.model : void 0
|
|
475
|
+
}));
|
|
476
|
+
} catch (error) {
|
|
477
|
+
options?.abortSignal?.throwIfAborted();
|
|
478
|
+
const credentials = new Set(removedHeaderCredentials);
|
|
479
|
+
collectCallCredentials(this, credentials);
|
|
480
|
+
for (const callConfig of /* @__PURE__ */ new Set([mergedConfig, config])) collectCallCredentials(new OpenAiGenericProvider("", {
|
|
481
|
+
config: callConfig,
|
|
482
|
+
env: this.env
|
|
483
|
+
}), credentials);
|
|
484
|
+
return {
|
|
485
|
+
cached: false,
|
|
486
|
+
error: redactCredentials(error instanceof Error ? error.message : String(error), sortCredentials(credentials))
|
|
487
|
+
};
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
sendsToOpenAiApi() {
|
|
491
|
+
try {
|
|
492
|
+
return new URL(this.getApiUrl()).hostname.toLowerCase() === "api.openai.com";
|
|
493
|
+
} catch {
|
|
494
|
+
return false;
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* A configured Authorization header takes precedence over this value. An explicit key, or any
|
|
499
|
+
* key sent to the OpenAI API, uses Bearer auth; otherwise URL userinfo uses decoded Basic auth.
|
|
500
|
+
* An ambient OPENAI_API_KEY never reaches another host that has URL credentials or any custom
|
|
501
|
+
* header outside the non-credential allowlist, because such a header may authenticate a gateway.
|
|
502
|
+
*/
|
|
503
|
+
getAuthorization(apiKey, hasGatewayCredential) {
|
|
504
|
+
const sendApiKey = Boolean(this.config.apiKey || this.config.apiKeyEnvar) || !hasGatewayCredential || this.sendsToOpenAiApi();
|
|
505
|
+
if (apiKey && sendApiKey) return `Bearer ${apiKey}`;
|
|
506
|
+
const { userinfo } = splitUserinfo(this.getApiUrl());
|
|
507
|
+
return userinfo && basicCredential(userinfo);
|
|
508
|
+
}
|
|
509
|
+
async runSession(prompt, options) {
|
|
510
|
+
options?.abortSignal?.throwIfAborted();
|
|
511
|
+
const headers = new Headers(this.getOpenAiRequestHeaders());
|
|
512
|
+
const apiKey = this.getApiKey();
|
|
513
|
+
const credentials = new Set(this.inheritedCredentials);
|
|
514
|
+
collectCallCredentials(this, credentials);
|
|
515
|
+
const hasUrlCredential = getUrlCredentials(this.getApiUrl(), false).length > 0;
|
|
516
|
+
const { hasHeaderCredential, hasCustomHeader } = scanRequestHeaders(headers, credentials);
|
|
517
|
+
this.credentials = sortCredentials(credentials);
|
|
518
|
+
if (!apiKey && !hasHeaderCredential && !hasUrlCredential && (this.config.apiKeyRequired ?? true)) return { error: this.getMissingApiKeyErrorMessage() };
|
|
519
|
+
const authorization = this.getAuthorization(apiKey, hasUrlCredential || hasCustomHeader);
|
|
520
|
+
if (authorization && !headers.has("Authorization")) headers.set("Authorization", authorization);
|
|
521
|
+
headers.set("Content-Type", "application/json");
|
|
522
|
+
headers.set("OpenAI-Beta", "agents=v1");
|
|
523
|
+
headers.set("x-promptfoo-silent", "true");
|
|
524
|
+
const timeoutMs = this.config.timeoutMs ?? 3e5;
|
|
525
|
+
const deadline = Date.now() + timeoutMs;
|
|
526
|
+
const controller = new AbortController();
|
|
527
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
528
|
+
const signal = options?.abortSignal ? AbortSignal.any([controller.signal, options.abortSignal]) : controller.signal;
|
|
529
|
+
let endpoint;
|
|
530
|
+
let completed = false;
|
|
531
|
+
const result = { cached: false };
|
|
532
|
+
const metadata = {};
|
|
533
|
+
try {
|
|
534
|
+
const session = await this.request("agents/sessions", "POST", headers, signal, {
|
|
535
|
+
agent_id: this.config.agent_id,
|
|
536
|
+
agent: {
|
|
537
|
+
...this.config.agent,
|
|
538
|
+
...this.modelName ? { model: this.modelName } : {}
|
|
539
|
+
},
|
|
540
|
+
environment: this.config.environment ?? { type: "none" },
|
|
541
|
+
input: prompt,
|
|
542
|
+
metadata: this.config.metadata,
|
|
543
|
+
vault_ids: this.config.vault_ids,
|
|
544
|
+
stream: false
|
|
545
|
+
});
|
|
546
|
+
if (!session?.id || typeof session.id !== "string") throw new Error("Agents API did not return a session ID");
|
|
547
|
+
endpoint = `agents/sessions/${encodeURIComponent(session.id)}`;
|
|
548
|
+
metadata.sessionId = session.id;
|
|
549
|
+
const { session: completedSession, turn } = await this.waitForTurn(session, endpoint, headers, signal);
|
|
550
|
+
const sessionItems = await this.list(`${endpoint}/items`, headers, signal);
|
|
551
|
+
const output = this.getFinalAnswer(sessionItems.filter((item) => item.turn_id === turn.id));
|
|
552
|
+
const hasSubagents = completedSession.agent.multi_agent?.enabled || sessionItems.some((item) => item.type === "create_subagent_call");
|
|
553
|
+
const toolActivity = await this.summarizeToolCalls(endpoint, sessionItems, hasSubagents, headers, signal, options?.abortSignal);
|
|
554
|
+
const { session: finished, usage, usageMetadata } = await this.waitForFinalUsage(completedSession, turn, endpoint, headers, signal, deadline, hasSubagents, options?.abortSignal);
|
|
555
|
+
const subagentUsageMetadata = hasSubagents ? await this.getSubagentUsageMetadata(endpoint, headers, signal, options?.abortSignal) : {};
|
|
556
|
+
const model = finished.agent.model;
|
|
557
|
+
result.output = output;
|
|
558
|
+
result.tokenUsage = usage ? toTokenUsage(usage) : void 0;
|
|
559
|
+
if (!hasSubagents) result.cost = calculateOpenAIUsageCost(model, this.config, usage, {
|
|
560
|
+
apiUrl: this.getApiUrl(),
|
|
561
|
+
serviceTier: finished.agent.service_tier ?? this.config.agent?.service_tier
|
|
562
|
+
});
|
|
563
|
+
Object.assign(metadata, {
|
|
564
|
+
turnId: turn.id,
|
|
565
|
+
model,
|
|
566
|
+
costScope: hasSubagents ? "unavailable for aggregate subagent usage" : "model tokens only; excludes tools and sandbox charges",
|
|
567
|
+
...toolActivity,
|
|
568
|
+
...usageMetadata,
|
|
569
|
+
...subagentUsageMetadata
|
|
570
|
+
});
|
|
571
|
+
completed = true;
|
|
572
|
+
} catch (error) {
|
|
573
|
+
options?.abortSignal?.throwIfAborted();
|
|
574
|
+
result.error = controller.signal.aborted ? `Agents API request timed out after ${timeoutMs}ms` : this.redact(error instanceof Error ? error.message : String(error));
|
|
575
|
+
} finally {
|
|
576
|
+
clearTimeout(timer);
|
|
577
|
+
if (endpoint && (!completed || !this.config.retainSession)) await this.cleanupSession(endpoint, headers, !completed, metadata);
|
|
578
|
+
}
|
|
579
|
+
options?.abortSignal?.throwIfAborted();
|
|
580
|
+
if (Object.keys(metadata).length) result.metadata = metadata;
|
|
581
|
+
return result;
|
|
582
|
+
}
|
|
583
|
+
async waitForTurn(initialSession, endpoint, headers, signal) {
|
|
584
|
+
let session = initialSession;
|
|
585
|
+
while (true) {
|
|
586
|
+
if (session.status === "failed") {
|
|
587
|
+
const error = this.redact(session.error ?? "unknown error");
|
|
588
|
+
throw new Error(`Agents API session failed: ${error.slice(0, MAX_ERROR_DETAIL_LENGTH)}`);
|
|
589
|
+
}
|
|
590
|
+
if (session.status === "requires_action") {
|
|
591
|
+
const actions = session.required_actions?.map((action) => action.type).join(", ");
|
|
592
|
+
throw new Error(`Agents API requires client-side actions (${actions || "unknown"}). Use hosted tools or MCP servers; function callbacks and self-hosted executors are not supported.`);
|
|
593
|
+
}
|
|
594
|
+
const turn = (await this.list(`${endpoint}/turns`, headers, signal)).find((candidate) => candidate.subagent_id === null);
|
|
595
|
+
if (turn?.status === "failed" || turn?.status === "cancelled") {
|
|
596
|
+
const error = this.redact(turn.error?.message ?? turn.id);
|
|
597
|
+
throw new Error(`Agents API turn ${turn.status}: ${error.slice(0, MAX_ERROR_DETAIL_LENGTH)}`);
|
|
598
|
+
}
|
|
599
|
+
if (turn?.status === "completed") {
|
|
600
|
+
session = await this.request(endpoint, "GET", headers, signal);
|
|
601
|
+
if (session.status !== "idle") {
|
|
602
|
+
await sleepWithAbort(this.config.pollIntervalMs ?? 1e3, signal);
|
|
603
|
+
continue;
|
|
604
|
+
}
|
|
605
|
+
return {
|
|
606
|
+
session,
|
|
607
|
+
turn
|
|
608
|
+
};
|
|
609
|
+
}
|
|
610
|
+
await sleepWithAbort(this.config.pollIntervalMs ?? 1e3, signal);
|
|
611
|
+
session = await this.request(endpoint, "GET", headers, signal);
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
/**
|
|
615
|
+
* Usage is attached shortly after the root turn completes; deleting the session sooner loses it.
|
|
616
|
+
* Session totals are preferred. A single-agent run accepts root-turn usage after a short grace
|
|
617
|
+
* period, while a run with subagents waits until the usage deadline for session totals.
|
|
618
|
+
*/
|
|
619
|
+
async waitForFinalUsage(session, turn, endpoint, headers, signal, deadline, hasSubagents, evalSignal) {
|
|
620
|
+
const waitUntil = Math.min(Date.now() + (this.config.usageTimeoutMs ?? 15e3), deadline);
|
|
621
|
+
const pollIntervalMs = Math.min(this.config.pollIntervalMs ?? 1e3, 1e3);
|
|
622
|
+
const turnEndpoint = `${endpoint}/turns/${encodeURIComponent(turn.id)}`;
|
|
623
|
+
const latest = {
|
|
624
|
+
session,
|
|
625
|
+
turn
|
|
626
|
+
};
|
|
627
|
+
let turnUsageSeenAt;
|
|
628
|
+
try {
|
|
629
|
+
while (!isUsage(latest.session.usage) && Date.now() < waitUntil) {
|
|
630
|
+
if (isUsage(latest.turn.usage) && !hasSubagents) {
|
|
631
|
+
turnUsageSeenAt ??= Date.now();
|
|
632
|
+
if (Date.now() - turnUsageSeenAt >= TURN_USAGE_GRACE_MS) break;
|
|
633
|
+
}
|
|
634
|
+
await sleepWithAbort(Math.min(pollIntervalMs, waitUntil - Date.now()), signal);
|
|
635
|
+
const [nextSession, nextTurn] = await Promise.all([this.request(endpoint, "GET", headers, signal), this.request(turnEndpoint, "GET", headers, signal).catch((error) => {
|
|
636
|
+
signal.throwIfAborted();
|
|
637
|
+
logger.debug("[OpenAI Agents API] Root turn usage read failed", {
|
|
638
|
+
sessionId: session.id,
|
|
639
|
+
error: this.redact(error instanceof Error ? error.message : String(error))
|
|
640
|
+
});
|
|
641
|
+
})]);
|
|
642
|
+
latest.session = nextSession;
|
|
643
|
+
latest.turn = nextTurn ?? latest.turn;
|
|
644
|
+
}
|
|
645
|
+
} catch (error) {
|
|
646
|
+
evalSignal?.throwIfAborted();
|
|
647
|
+
logger.debug("[OpenAI Agents API] Final session usage unavailable", {
|
|
648
|
+
sessionId: session.id,
|
|
649
|
+
error: this.redact(error instanceof Error ? error.message : String(error))
|
|
650
|
+
});
|
|
651
|
+
}
|
|
652
|
+
const sessionUsage = isUsage(latest.session.usage) ? latest.session.usage : void 0;
|
|
653
|
+
const usage = sessionUsage ?? (isUsage(latest.turn.usage) ? latest.turn.usage : void 0);
|
|
654
|
+
if (!usage) return {
|
|
655
|
+
session: latest.session,
|
|
656
|
+
usageMetadata: { usageUnavailable: true }
|
|
657
|
+
};
|
|
658
|
+
return {
|
|
659
|
+
session: latest.session,
|
|
660
|
+
usage,
|
|
661
|
+
usageMetadata: hasSubagents && !sessionUsage ? { usageFromRootTurn: true } : {}
|
|
662
|
+
};
|
|
663
|
+
}
|
|
664
|
+
/** Cancel unfinished work, then delete the session once the API allows it. */
|
|
665
|
+
async cleanupSession(endpoint, headers, cancel, metadata) {
|
|
666
|
+
const cleanupTimeoutMs = this.config.cleanupTimeoutMs ?? 6e4;
|
|
667
|
+
const controller = new AbortController();
|
|
668
|
+
const timer = setTimeout(() => controller.abort(), cleanupTimeoutMs);
|
|
669
|
+
let lastError;
|
|
670
|
+
try {
|
|
671
|
+
if (cancel) try {
|
|
672
|
+
await this.request(`${endpoint}/events`, "POST", headers, controller.signal, { events: [{ type: "agent.session.input.cancel" }] }, void 0, true);
|
|
673
|
+
metadata.sessionCancelled = true;
|
|
674
|
+
} catch (error) {
|
|
675
|
+
controller.signal.throwIfAborted();
|
|
676
|
+
logger.debug("[OpenAI Agents API] Session cancellation was not accepted", {
|
|
677
|
+
sessionId: metadata.sessionId,
|
|
678
|
+
error: this.redact(error instanceof Error ? error.message : String(error))
|
|
679
|
+
});
|
|
680
|
+
}
|
|
681
|
+
for (let attempt = 0;; attempt++) try {
|
|
682
|
+
await this.request(endpoint, "DELETE", headers, controller.signal);
|
|
683
|
+
metadata.sessionDeleted = true;
|
|
684
|
+
return;
|
|
685
|
+
} catch (error) {
|
|
686
|
+
if (!controller.signal.aborted) lastError = error;
|
|
687
|
+
if (!(error instanceof AgentsApiHttpError) || error.status !== 409) throw error;
|
|
688
|
+
await sleepWithAbort(Math.min(RETRY_BASE_DELAY_MS * 2 ** attempt, CLEANUP_RETRY_MAX_DELAY_MS), controller.signal);
|
|
689
|
+
}
|
|
690
|
+
} catch (error) {
|
|
691
|
+
const reason = lastError ?? error;
|
|
692
|
+
const message = reason instanceof Error ? reason.message : String(reason);
|
|
693
|
+
const cleanupError = this.redact(controller.signal.aborted ? `Agents API session cleanup timed out after ${cleanupTimeoutMs}ms${lastError ? `: ${message}` : ""}` : message);
|
|
694
|
+
Object.assign(metadata, {
|
|
695
|
+
sessionDeleted: false,
|
|
696
|
+
cleanupError
|
|
697
|
+
});
|
|
698
|
+
logger.warn("[OpenAI Agents API] Failed to delete session", {
|
|
699
|
+
sessionId: metadata.sessionId,
|
|
700
|
+
error: cleanupError
|
|
701
|
+
});
|
|
702
|
+
} finally {
|
|
703
|
+
clearTimeout(timer);
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
};
|
|
707
|
+
//#endregion
|
|
708
|
+
export { OpenAiAgentsApiProvider };
|
|
709
|
+
|
|
710
|
+
//# sourceMappingURL=agents-api-DN-ibDc8.js.map
|