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
|
@@ -1,1018 +0,0 @@
|
|
|
1
|
-
const require_rolldown_runtime = require("./rolldown-runtime-C0BPl7ul.cjs");
|
|
2
|
-
const require_logger = require("./logger-DXUHJBHJ.cjs");
|
|
3
|
-
const require_esm = require("./esm-DITT-qdS.cjs");
|
|
4
|
-
const require_agentic_utils = require("./agentic-utils-D23qtOlx.cjs");
|
|
5
|
-
const require_agenticRunQueue = require("./agenticRunQueue-Cd8lOVSn.cjs");
|
|
6
|
-
const require_agentWorkspace = require("./agentWorkspace-B8A_wuMR.cjs");
|
|
7
|
-
let fs_promises = require("fs/promises");
|
|
8
|
-
fs_promises = require_rolldown_runtime.__toESM(fs_promises, 1);
|
|
9
|
-
let path = require("path");
|
|
10
|
-
path = require_rolldown_runtime.__toESM(path, 1);
|
|
11
|
-
let fs = require("fs");
|
|
12
|
-
fs = require_rolldown_runtime.__toESM(fs, 1);
|
|
13
|
-
let os = require("os");
|
|
14
|
-
os = require_rolldown_runtime.__toESM(os, 1);
|
|
15
|
-
let dedent = require("dedent");
|
|
16
|
-
dedent = require_rolldown_runtime.__toESM(dedent, 1);
|
|
17
|
-
let node_module = require("node:module");
|
|
18
|
-
let _opentelemetry_core = require("@opentelemetry/core");
|
|
19
|
-
//#region src/providers/opencode-sdk.ts
|
|
20
|
-
/**
|
|
21
|
-
* OpenCode SDK Provider
|
|
22
|
-
*
|
|
23
|
-
* This provider requires the @opencode-ai/sdk package, which is not installed by default.
|
|
24
|
-
* Users must install it separately:
|
|
25
|
-
* npm install @opencode-ai/sdk
|
|
26
|
-
*
|
|
27
|
-
* OpenCode is an open-source AI coding agent for the terminal with support for 75+ LLM providers.
|
|
28
|
-
*
|
|
29
|
-
* Key features:
|
|
30
|
-
* - Client-server architecture with local server management
|
|
31
|
-
* - Support for 75+ LLM providers (Anthropic, OpenAI, Google, Ollama, etc.)
|
|
32
|
-
* - Built-in tools (bash, read, write, edit, grep, glob, etc.)
|
|
33
|
-
* - Session-based conversations with persistence
|
|
34
|
-
* - MCP server integration
|
|
35
|
-
* - Custom agent definitions
|
|
36
|
-
*
|
|
37
|
-
* Default configurations:
|
|
38
|
-
* - No working_dir: Runs in temp directory with no tools (chat-only mode)
|
|
39
|
-
* - With working_dir: Runs in specified directory with read-only tools (read, grep, glob, list)
|
|
40
|
-
*
|
|
41
|
-
* For side effects (file writes, bash commands), configure tools and permissions explicitly.
|
|
42
|
-
*/
|
|
43
|
-
const FS_READONLY_TOOLS = [
|
|
44
|
-
"glob",
|
|
45
|
-
"grep",
|
|
46
|
-
"list",
|
|
47
|
-
"read"
|
|
48
|
-
];
|
|
49
|
-
const EDIT_TOOL_ALIASES = /* @__PURE__ */ new Set([
|
|
50
|
-
"edit",
|
|
51
|
-
"write",
|
|
52
|
-
"patch",
|
|
53
|
-
"apply_patch"
|
|
54
|
-
]);
|
|
55
|
-
/**
|
|
56
|
-
* Check if promptfoo is in debug mode
|
|
57
|
-
*/
|
|
58
|
-
function isDebugMode() {
|
|
59
|
-
return require_logger.getLogLevel() === "debug";
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Maximum number of sessions to keep in memory to prevent unbounded growth
|
|
63
|
-
*/
|
|
64
|
-
const MAX_SESSIONS = 100;
|
|
65
|
-
/**
|
|
66
|
-
* Resolve ESM-only package entry point by reading package.json exports
|
|
67
|
-
* Handles packages that only have "import" condition (no "require" condition)
|
|
68
|
-
*
|
|
69
|
-
* @param packageName - The package name (e.g., '@opencode-ai/sdk')
|
|
70
|
-
* @param basePath - Base path for resolution
|
|
71
|
-
* @returns Absolute path to the ESM entry point
|
|
72
|
-
*/
|
|
73
|
-
function resolveEsmPackage(packageName, exportPath, basePath) {
|
|
74
|
-
const require$1 = (0, node_module.createRequire)(path.default.join(basePath, "package.json"));
|
|
75
|
-
let packageJsonPath;
|
|
76
|
-
try {
|
|
77
|
-
packageJsonPath = require$1.resolve(`${packageName}/package.json`);
|
|
78
|
-
} catch {
|
|
79
|
-
packageJsonPath = path.default.join(basePath, "node_modules", ...packageName.split("/"), "package.json");
|
|
80
|
-
if (!fs.default.existsSync(packageJsonPath)) throw new Error(`Cannot find ${packageName}/package.json`);
|
|
81
|
-
}
|
|
82
|
-
const packageDir = path.default.dirname(packageJsonPath);
|
|
83
|
-
const packageJson = JSON.parse(fs.default.readFileSync(packageJsonPath, "utf-8"));
|
|
84
|
-
let esmEntry;
|
|
85
|
-
if (packageJson.exports) {
|
|
86
|
-
const mainExport = packageJson.exports[exportPath] || (exportPath === "." ? packageJson.exports["."] || packageJson.exports : void 0);
|
|
87
|
-
if (typeof mainExport === "string") esmEntry = mainExport;
|
|
88
|
-
else if (typeof mainExport === "object") esmEntry = mainExport.import || mainExport.default;
|
|
89
|
-
}
|
|
90
|
-
if (!esmEntry) esmEntry = packageJson.module || packageJson.main;
|
|
91
|
-
if (!esmEntry) throw new Error(`Cannot find ESM entry point in ${packageName}/package.json`);
|
|
92
|
-
return path.default.join(packageDir, esmEntry);
|
|
93
|
-
}
|
|
94
|
-
function hasRepositoryEnv(env) {
|
|
95
|
-
const filtered = { ...env };
|
|
96
|
-
require_agentWorkspace.clearRepositoryEnv(filtered);
|
|
97
|
-
return Object.keys(env).some((key) => !(key in filtered));
|
|
98
|
-
}
|
|
99
|
-
function unwrapOpenCodeResult(result) {
|
|
100
|
-
if (result === void 0 || result === null) return;
|
|
101
|
-
if (typeof result === "object" && "data" in result) return result.data;
|
|
102
|
-
return result;
|
|
103
|
-
}
|
|
104
|
-
function getOpenCodeCacheDetails(cache) {
|
|
105
|
-
if (typeof cache === "number") return {
|
|
106
|
-
read: cache,
|
|
107
|
-
write: 0
|
|
108
|
-
};
|
|
109
|
-
if (!cache || typeof cache !== "object") return {
|
|
110
|
-
read: 0,
|
|
111
|
-
write: 0
|
|
112
|
-
};
|
|
113
|
-
return {
|
|
114
|
-
read: cache.read ?? 0,
|
|
115
|
-
write: cache.write ?? 0
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
function buildOpenCodeTokenUsage(tokens) {
|
|
119
|
-
if (!tokens) return;
|
|
120
|
-
const prompt = tokens.input ?? 0;
|
|
121
|
-
const completion = tokens.output ?? 0;
|
|
122
|
-
const cache = getOpenCodeCacheDetails(tokens.cache);
|
|
123
|
-
const completionDetails = {};
|
|
124
|
-
if (typeof tokens.reasoning === "number") completionDetails.reasoning = tokens.reasoning;
|
|
125
|
-
if (tokens.cache !== void 0) {
|
|
126
|
-
completionDetails.cacheReadInputTokens = cache.read;
|
|
127
|
-
completionDetails.cacheCreationInputTokens = cache.write;
|
|
128
|
-
}
|
|
129
|
-
return {
|
|
130
|
-
prompt,
|
|
131
|
-
completion,
|
|
132
|
-
total: tokens.total ?? prompt + completion,
|
|
133
|
-
...tokens.cache === void 0 ? {} : { cached: cache.read },
|
|
134
|
-
...Object.keys(completionDetails).length > 0 ? { completionDetails } : {}
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
function getSessionPath(sessionId) {
|
|
138
|
-
return {
|
|
139
|
-
id: sessionId,
|
|
140
|
-
sessionID: sessionId
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Convert the user-facing object-shaped permission config into the
|
|
145
|
-
* rule-array shape required by the v2 `session.create.permission` API.
|
|
146
|
-
*
|
|
147
|
-
* - `{ bash: 'allow' }` → `[{ permission: 'bash', pattern: '*', action: 'allow' }]`
|
|
148
|
-
* - `{ bash: { '*': 'ask', 'git *': 'allow' } }` → two rules with the
|
|
149
|
-
* corresponding glob pattern preserved per entry.
|
|
150
|
-
*
|
|
151
|
-
* Returns `undefined` when the config has no usable entries so callers can
|
|
152
|
-
* omit the field entirely.
|
|
153
|
-
*/
|
|
154
|
-
function convertPermissionConfigToRuleset(config) {
|
|
155
|
-
if (config === void 0) return;
|
|
156
|
-
if (!config || typeof config !== "object" || Array.isArray(config) || ![Object.prototype, null].includes(Object.getPrototypeOf(config))) throw new Error("OpenCode permission must be an object mapping tools to permission rules");
|
|
157
|
-
const rules = [];
|
|
158
|
-
for (const [tool, value] of Object.entries(config)) {
|
|
159
|
-
if (value === void 0) continue;
|
|
160
|
-
if (isOpenCodePermissionAction(value)) {
|
|
161
|
-
rules.push({
|
|
162
|
-
permission: tool,
|
|
163
|
-
pattern: "*",
|
|
164
|
-
action: value
|
|
165
|
-
});
|
|
166
|
-
continue;
|
|
167
|
-
}
|
|
168
|
-
if (!value || typeof value !== "object" || Array.isArray(value) || ![Object.prototype, null].includes(Object.getPrototypeOf(value))) throw new Error(`OpenCode permission.${tool} must be ask, allow, deny, or a pattern mapping`);
|
|
169
|
-
for (const [pattern, action] of Object.entries(value)) {
|
|
170
|
-
if (!isOpenCodePermissionAction(action)) throw new Error(`OpenCode permission.${tool}.${pattern} must be ask, allow, or deny`);
|
|
171
|
-
rules.push({
|
|
172
|
-
permission: tool,
|
|
173
|
-
pattern,
|
|
174
|
-
action
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
return rules.length > 0 ? rules : void 0;
|
|
179
|
-
}
|
|
180
|
-
function isOpenCodePermissionAction(value) {
|
|
181
|
-
return value === "ask" || value === "allow" || value === "deny";
|
|
182
|
-
}
|
|
183
|
-
function convertToolsConfigToRuleset(config) {
|
|
184
|
-
return Object.entries(config).map(([permission, enabled]) => ({
|
|
185
|
-
permission,
|
|
186
|
-
pattern: "*",
|
|
187
|
-
action: enabled ? "allow" : "deny"
|
|
188
|
-
}));
|
|
189
|
-
}
|
|
190
|
-
function openCodeMcpContainsCacheSensitiveData(config) {
|
|
191
|
-
return Object.values(config ?? {}).some((server) => {
|
|
192
|
-
if (server.type === "local" && (Object.keys(server.environment ?? {}).length > 0 || server.command.length > 1) || server.type === "remote" && (Object.keys(server.headers ?? {}).length > 0 || server.oauth !== void 0)) return true;
|
|
193
|
-
if (server.type !== "remote") return false;
|
|
194
|
-
try {
|
|
195
|
-
const url = new URL(server.url);
|
|
196
|
-
return Boolean(url.username || url.password || url.search);
|
|
197
|
-
} catch {
|
|
198
|
-
return server.url.includes("?") || server.url.includes("@");
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
function openCodeBaseUrlContainsCacheSensitiveData(baseUrl) {
|
|
203
|
-
if (!baseUrl) return false;
|
|
204
|
-
try {
|
|
205
|
-
const url = new URL(baseUrl);
|
|
206
|
-
return Boolean(url.username || url.password || url.search);
|
|
207
|
-
} catch {
|
|
208
|
-
return baseUrl.includes("?") || baseUrl.includes("@");
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
function getCacheSafeOpenCodeBaseUrl(baseUrl) {
|
|
212
|
-
if (!baseUrl || !openCodeBaseUrlContainsCacheSensitiveData(baseUrl)) return baseUrl;
|
|
213
|
-
try {
|
|
214
|
-
const url = new URL(baseUrl);
|
|
215
|
-
url.username = "";
|
|
216
|
-
url.password = "";
|
|
217
|
-
url.search = "";
|
|
218
|
-
return url.toString();
|
|
219
|
-
} catch {
|
|
220
|
-
return;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
function tryParseJson(value) {
|
|
224
|
-
try {
|
|
225
|
-
return JSON.stringify(JSON.parse(value));
|
|
226
|
-
} catch {
|
|
227
|
-
return;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
function normalizeStructuredText(value) {
|
|
231
|
-
const trimmedValue = value.trim();
|
|
232
|
-
const directJson = tryParseJson(trimmedValue);
|
|
233
|
-
if (directJson) return directJson;
|
|
234
|
-
const fencedJsonMatch = trimmedValue.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/i);
|
|
235
|
-
if (!fencedJsonMatch?.[1]) return;
|
|
236
|
-
return tryParseJson(fencedJsonMatch[1]);
|
|
237
|
-
}
|
|
238
|
-
function isValidTraceparent(traceparent) {
|
|
239
|
-
return Boolean(traceparent && (0, _opentelemetry_core.parseTraceParent)(traceparent));
|
|
240
|
-
}
|
|
241
|
-
const OPENCODE_TRACEPARENT_ENV = "OPENCODE_TRACEPARENT";
|
|
242
|
-
function setProcessEnvValue(key, value) {
|
|
243
|
-
if (value === void 0) Reflect.deleteProperty(process.env, key);
|
|
244
|
-
else Object.assign(process.env, { [key]: value });
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* The SDK reads process.env synchronously when it starts the server. Apply overrides
|
|
248
|
-
* until the startup function returns its promise, then restore the parent environment.
|
|
249
|
-
* The real-SDK contract test guards this timing assumption across SDK upgrades.
|
|
250
|
-
*/
|
|
251
|
-
function spawnWithServerEnv(serverEnv, spawn) {
|
|
252
|
-
const restore = [];
|
|
253
|
-
try {
|
|
254
|
-
for (const [key, value] of Object.entries(serverEnv)) if (process.env[key] !== value) {
|
|
255
|
-
restore.push([key, process.env[key]]);
|
|
256
|
-
setProcessEnvValue(key, value);
|
|
257
|
-
}
|
|
258
|
-
return spawn();
|
|
259
|
-
} finally {
|
|
260
|
-
for (const [key, value] of restore) setProcessEnvValue(key, value);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
/** Serialize server replacement with the calls using that server. */
|
|
264
|
-
const SERVER_LIFECYCLE_QUEUE_KEY = "opencode:sdk:server-lifecycle";
|
|
265
|
-
/**
|
|
266
|
-
* Helper to load the OpenCode SDK ESM module
|
|
267
|
-
*
|
|
268
|
-
* Uses a two-phase approach:
|
|
269
|
-
* 1. Try simple dynamic import - works when SDK is in same node_modules tree
|
|
270
|
-
* 2. Fall back to smart ESM resolution for edge cases (pnpm, global installs, monorepos)
|
|
271
|
-
*/
|
|
272
|
-
async function loadOpenCodeSDK() {
|
|
273
|
-
const directImports = [{
|
|
274
|
-
specifier: "@opencode-ai/sdk/v2",
|
|
275
|
-
exportPath: "./v2",
|
|
276
|
-
apiVersion: "v2"
|
|
277
|
-
}, {
|
|
278
|
-
specifier: "@opencode-ai/sdk",
|
|
279
|
-
exportPath: ".",
|
|
280
|
-
apiVersion: "v1"
|
|
281
|
-
}];
|
|
282
|
-
for (const candidate of directImports) try {
|
|
283
|
-
require_logger.logger.debug(`Attempting dynamic import of ${candidate.specifier}`);
|
|
284
|
-
return {
|
|
285
|
-
...await import(candidate.specifier),
|
|
286
|
-
apiVersion: candidate.apiVersion
|
|
287
|
-
};
|
|
288
|
-
} catch (error) {
|
|
289
|
-
require_logger.logger.debug(`Dynamic import failed for ${candidate.specifier}`, { error });
|
|
290
|
-
}
|
|
291
|
-
const basePath = require_logger.state.basePath && path.default.isAbsolute(require_logger.state.basePath) ? require_logger.state.basePath : process.cwd();
|
|
292
|
-
for (const candidate of directImports) try {
|
|
293
|
-
const modulePath = resolveEsmPackage("@opencode-ai/sdk", candidate.exportPath, basePath);
|
|
294
|
-
require_logger.logger.debug(`Resolved OpenCode SDK path (${candidate.apiVersion}): ${modulePath}`);
|
|
295
|
-
return {
|
|
296
|
-
...await require_esm.importModule(modulePath),
|
|
297
|
-
apiVersion: candidate.apiVersion
|
|
298
|
-
};
|
|
299
|
-
} catch (error) {
|
|
300
|
-
require_logger.logger.debug(`Smart resolution failed for ${candidate.specifier}`, { error });
|
|
301
|
-
}
|
|
302
|
-
const err = /* @__PURE__ */ new Error("Failed to resolve @opencode-ai/sdk");
|
|
303
|
-
require_logger.logger.error(`Failed to load OpenCode SDK: ${err}`);
|
|
304
|
-
throw new Error(dedent.default`The @opencode-ai/sdk package is required but not installed.
|
|
305
|
-
|
|
306
|
-
To use the OpenCode SDK provider, install it with:
|
|
307
|
-
npm install @opencode-ai/sdk
|
|
308
|
-
|
|
309
|
-
For more information, see: https://www.promptfoo.dev/docs/providers/opencode-sdk/`);
|
|
310
|
-
}
|
|
311
|
-
var OpenCodeSDKProvider = class {
|
|
312
|
-
config;
|
|
313
|
-
env;
|
|
314
|
-
providerId = "opencode:sdk";
|
|
315
|
-
opencodeModule;
|
|
316
|
-
opencodeModuleLoad;
|
|
317
|
-
client;
|
|
318
|
-
clientInitialization;
|
|
319
|
-
server;
|
|
320
|
-
sessions = /* @__PURE__ */ new Map();
|
|
321
|
-
sessionOrder = [];
|
|
322
|
-
sessionQueues = new require_agenticRunQueue.AgenticRunQueue("OpenCode SDK session wait aborted");
|
|
323
|
-
credentialCacheScope = crypto.randomUUID();
|
|
324
|
-
streamingWarningEmitted = false;
|
|
325
|
-
missingTraceparentWarningEmitted = false;
|
|
326
|
-
activeTraceparent;
|
|
327
|
-
serverHasRepositoryEnv = false;
|
|
328
|
-
constructor(options = {}) {
|
|
329
|
-
const { config, env, id } = options;
|
|
330
|
-
this.config = config ?? {};
|
|
331
|
-
this.env = env;
|
|
332
|
-
this.providerId = id ?? this.providerId;
|
|
333
|
-
}
|
|
334
|
-
id() {
|
|
335
|
-
return this.providerId;
|
|
336
|
-
}
|
|
337
|
-
/**
|
|
338
|
-
* Get API key based on provider_id or common environment variables
|
|
339
|
-
*/
|
|
340
|
-
getApiKey(config = this.config) {
|
|
341
|
-
if (config?.apiKey) return config.apiKey;
|
|
342
|
-
let env = this.env;
|
|
343
|
-
if (os.default.platform() === "win32" && env) {
|
|
344
|
-
const configuredEnv = env;
|
|
345
|
-
env = {};
|
|
346
|
-
for (const key of Object.keys(configuredEnv).sort()) if (configuredEnv[key] !== void 0) env[key.toUpperCase()] = configuredEnv[key];
|
|
347
|
-
}
|
|
348
|
-
const providerId = config?.provider_id?.toLowerCase();
|
|
349
|
-
if (providerId === "anthropic") return env?.ANTHROPIC_API_KEY || require_logger.getEnvString("ANTHROPIC_API_KEY");
|
|
350
|
-
if (providerId === "openai") return env?.OPENAI_API_KEY || require_logger.getEnvString("OPENAI_API_KEY");
|
|
351
|
-
if (providerId === "google") return env?.GOOGLE_API_KEY || require_logger.getEnvString("GOOGLE_API_KEY");
|
|
352
|
-
return env?.ANTHROPIC_API_KEY || require_logger.getEnvString("ANTHROPIC_API_KEY") || env?.OPENAI_API_KEY || require_logger.getEnvString("OPENAI_API_KEY");
|
|
353
|
-
}
|
|
354
|
-
getCredentialCacheScope(config) {
|
|
355
|
-
return config.baseUrl ? void 0 : this.credentialCacheScope;
|
|
356
|
-
}
|
|
357
|
-
toString() {
|
|
358
|
-
return "[OpenCode SDK Provider]";
|
|
359
|
-
}
|
|
360
|
-
async cleanup() {
|
|
361
|
-
await this.clientInitialization?.catch(() => void 0);
|
|
362
|
-
this.clientInitialization = void 0;
|
|
363
|
-
for (const session of this.sessions.values()) try {
|
|
364
|
-
await this.deleteSession(session);
|
|
365
|
-
} catch (err) {
|
|
366
|
-
require_logger.logger.debug(`Failed to delete persistent session ${session.id}: ${err}`);
|
|
367
|
-
}
|
|
368
|
-
this.sessions.clear();
|
|
369
|
-
this.sessionOrder = [];
|
|
370
|
-
this.sessionQueues.clear();
|
|
371
|
-
await this.closeServer();
|
|
372
|
-
}
|
|
373
|
-
/** Close the owned server; callers handle session cleanup. */
|
|
374
|
-
async closeServer() {
|
|
375
|
-
await this.clientInitialization?.catch(() => void 0);
|
|
376
|
-
this.clientInitialization = void 0;
|
|
377
|
-
if (this.server) {
|
|
378
|
-
try {
|
|
379
|
-
this.server.close();
|
|
380
|
-
} catch (err) {
|
|
381
|
-
require_logger.logger.debug(`Failed to close OpenCode server: ${err}`);
|
|
382
|
-
}
|
|
383
|
-
this.server = void 0;
|
|
384
|
-
}
|
|
385
|
-
this.client = void 0;
|
|
386
|
-
this.activeTraceparent = void 0;
|
|
387
|
-
this.serverHasRepositoryEnv = false;
|
|
388
|
-
}
|
|
389
|
-
/**
|
|
390
|
-
* Build the tools configuration based on config and defaults
|
|
391
|
-
*/
|
|
392
|
-
buildToolsConfig(config, includeDefaults = true) {
|
|
393
|
-
const configuredTools = config.tools;
|
|
394
|
-
if (configuredTools !== void 0 && (!configuredTools || typeof configuredTools !== "object" || Array.isArray(configuredTools) || ![Object.prototype, null].includes(Object.getPrototypeOf(configuredTools)))) throw new Error("OpenCode tools must be an object mapping tool names to booleans");
|
|
395
|
-
const entries = /* @__PURE__ */ new Map();
|
|
396
|
-
if (includeDefaults) {
|
|
397
|
-
entries.set("*", false);
|
|
398
|
-
if (config.working_dir) for (const tool of FS_READONLY_TOOLS) entries.set(tool, true);
|
|
399
|
-
}
|
|
400
|
-
let editPermission;
|
|
401
|
-
for (const [tool, enabled] of Object.entries(configuredTools ?? {})) {
|
|
402
|
-
if (enabled === void 0) continue;
|
|
403
|
-
if (typeof enabled !== "boolean") throw new Error(`OpenCode tools.${tool} must be a boolean`);
|
|
404
|
-
if (!tool.trim()) throw new Error("OpenCode tool names must not be empty");
|
|
405
|
-
if (EDIT_TOOL_ALIASES.has(tool)) {
|
|
406
|
-
if (editPermission !== void 0 && editPermission !== enabled) throw new Error("OpenCode tools edit, write, patch, and apply_patch share one permission and cannot conflict");
|
|
407
|
-
editPermission = enabled;
|
|
408
|
-
continue;
|
|
409
|
-
}
|
|
410
|
-
entries.set(tool, enabled);
|
|
411
|
-
}
|
|
412
|
-
if (editPermission !== void 0) entries.set("edit", editPermission);
|
|
413
|
-
return Object.fromEntries(entries);
|
|
414
|
-
}
|
|
415
|
-
buildEffectiveToolsConfig(config) {
|
|
416
|
-
const customAgent = config.agent ? void 0 : config.custom_agent;
|
|
417
|
-
const tools = /* @__PURE__ */ new Map();
|
|
418
|
-
for (const [tool, enabled] of Object.entries(this.buildToolsConfig(config))) if (enabled !== void 0) tools.set(tool, enabled);
|
|
419
|
-
for (const [tool, enabled] of Object.entries(this.buildToolsConfig({
|
|
420
|
-
...config,
|
|
421
|
-
tools: customAgent?.tools
|
|
422
|
-
}, false))) if (enabled !== void 0) {
|
|
423
|
-
tools.delete(tool);
|
|
424
|
-
tools.set(tool, enabled);
|
|
425
|
-
}
|
|
426
|
-
return Object.fromEntries(tools);
|
|
427
|
-
}
|
|
428
|
-
buildConfiguredPermissionRules(config) {
|
|
429
|
-
const customAgent = config.agent ? void 0 : config.custom_agent;
|
|
430
|
-
return [...convertPermissionConfigToRuleset(config.permission) ?? [], ...convertPermissionConfigToRuleset(customAgent?.permission) ?? []];
|
|
431
|
-
}
|
|
432
|
-
buildQuery(config, workingDir) {
|
|
433
|
-
const query = {};
|
|
434
|
-
if (config.working_dir && workingDir) query.directory = workingDir;
|
|
435
|
-
if (config.workspace) query.workspace = config.workspace;
|
|
436
|
-
return Object.keys(query).length > 0 ? query : void 0;
|
|
437
|
-
}
|
|
438
|
-
historyAffectingInputs(config) {
|
|
439
|
-
return {
|
|
440
|
-
provider_id: config.provider_id,
|
|
441
|
-
model: config.model,
|
|
442
|
-
baseUrl: getCacheSafeOpenCodeBaseUrl(config.baseUrl),
|
|
443
|
-
tools: this.buildToolsConfig(config),
|
|
444
|
-
permission: config.permission,
|
|
445
|
-
agent: config.agent,
|
|
446
|
-
custom_agent: config.custom_agent,
|
|
447
|
-
workspace: config.workspace,
|
|
448
|
-
format: config.format,
|
|
449
|
-
variant: config.variant,
|
|
450
|
-
session_id: config.session_id,
|
|
451
|
-
toolPolicyContractVersion: 2,
|
|
452
|
-
parent_session_id: config.parent_session_id,
|
|
453
|
-
credentialScope: this.getCredentialCacheScope(config),
|
|
454
|
-
apiVersion: this.opencodeModule?.apiVersion
|
|
455
|
-
};
|
|
456
|
-
}
|
|
457
|
-
buildSessionKey(config, workingDir) {
|
|
458
|
-
return require_agentic_utils.generateCacheKey("opencode:sdk:session", {
|
|
459
|
-
...this.historyAffectingInputs(config),
|
|
460
|
-
workingDir: config.working_dir ? workingDir : void 0,
|
|
461
|
-
mcp: config.mcp
|
|
462
|
-
});
|
|
463
|
-
}
|
|
464
|
-
/** An undefined value removes a variable while the server starts. */
|
|
465
|
-
buildServerEnv(config, traceparent) {
|
|
466
|
-
const serverEnv = {};
|
|
467
|
-
const processEnv = require_logger.getProcessEnv();
|
|
468
|
-
const isWindows = os.default.platform() === "win32";
|
|
469
|
-
const canonicalKeys = /* @__PURE__ */ new Map();
|
|
470
|
-
const envKey = (key) => {
|
|
471
|
-
if (!isWindows) return key;
|
|
472
|
-
const normalized = key.toUpperCase();
|
|
473
|
-
const existing = canonicalKeys.get(normalized);
|
|
474
|
-
if (existing) return existing;
|
|
475
|
-
canonicalKeys.set(normalized, key);
|
|
476
|
-
return key;
|
|
477
|
-
};
|
|
478
|
-
for (const [key, value] of Object.entries(processEnv)) if (value !== void 0) serverEnv[envKey(key)] = value;
|
|
479
|
-
if (this.env) for (const key of Object.keys(this.env).sort()) {
|
|
480
|
-
const value = this.env[key];
|
|
481
|
-
if (value !== void 0) serverEnv[envKey(key)] = value;
|
|
482
|
-
}
|
|
483
|
-
if (config.log_level === "debug" || isDebugMode()) {
|
|
484
|
-
const debugKey = envKey("DEBUG");
|
|
485
|
-
serverEnv[debugKey] = serverEnv[debugKey] || "opencode:*";
|
|
486
|
-
require_logger.logger.debug("[OpenCode SDK] Debug mode enabled, synced from promptfoo log level");
|
|
487
|
-
}
|
|
488
|
-
const pathKey = envKey("PATH");
|
|
489
|
-
const homeDir = os.default.homedir();
|
|
490
|
-
const opencodeBinPath = path.default.join(homeDir, ".opencode", "bin");
|
|
491
|
-
if (!serverEnv[pathKey]?.split(path.default.delimiter).includes(opencodeBinPath)) {
|
|
492
|
-
serverEnv[pathKey] = [opencodeBinPath, serverEnv[pathKey]].filter(Boolean).join(path.default.delimiter);
|
|
493
|
-
require_logger.logger.debug(`Added ${opencodeBinPath} to PATH for OpenCode CLI`);
|
|
494
|
-
}
|
|
495
|
-
const traceparentKey = envKey(OPENCODE_TRACEPARENT_ENV);
|
|
496
|
-
if (config.restart_server_per_call) serverEnv[traceparentKey] = isValidTraceparent(traceparent) ? traceparent : void 0;
|
|
497
|
-
else if (isValidTraceparent(traceparent) && !serverEnv[traceparentKey]) serverEnv[traceparentKey] = traceparent;
|
|
498
|
-
if (require_agentWorkspace.assertIsolatedWorkingDir(config)) require_agentWorkspace.clearRepositoryEnv(serverEnv);
|
|
499
|
-
return serverEnv;
|
|
500
|
-
}
|
|
501
|
-
buildServerConfig(config) {
|
|
502
|
-
const serverConfig = {};
|
|
503
|
-
if (config.log_level) serverConfig.logLevel = config.log_level;
|
|
504
|
-
if (config.mcp && Object.keys(config.mcp).length > 0) {
|
|
505
|
-
serverConfig.mcp = config.mcp;
|
|
506
|
-
require_logger.logger.debug(`[OpenCode SDK] Configuring MCP servers: ${Object.keys(config.mcp).join(", ")}`);
|
|
507
|
-
}
|
|
508
|
-
if (config.custom_agent) {
|
|
509
|
-
serverConfig.agent = { custom: {
|
|
510
|
-
description: config.custom_agent.description,
|
|
511
|
-
model: config.custom_agent.model,
|
|
512
|
-
temperature: config.custom_agent.temperature,
|
|
513
|
-
top_p: config.custom_agent.top_p,
|
|
514
|
-
tools: config.custom_agent.tools === void 0 ? void 0 : this.buildToolsConfig({
|
|
515
|
-
...config,
|
|
516
|
-
tools: config.custom_agent.tools
|
|
517
|
-
}, false),
|
|
518
|
-
permission: config.custom_agent.permission,
|
|
519
|
-
prompt: config.custom_agent.prompt,
|
|
520
|
-
mode: config.custom_agent.mode ?? "primary",
|
|
521
|
-
maxSteps: config.custom_agent.steps ?? config.custom_agent.maxSteps,
|
|
522
|
-
color: config.custom_agent.color,
|
|
523
|
-
disable: config.custom_agent.disable,
|
|
524
|
-
hidden: config.custom_agent.hidden
|
|
525
|
-
} };
|
|
526
|
-
require_logger.logger.debug(`[OpenCode SDK] Configuring custom agent: ${config.custom_agent.description}`);
|
|
527
|
-
}
|
|
528
|
-
if (config.permission) {
|
|
529
|
-
serverConfig.permission = config.permission;
|
|
530
|
-
require_logger.logger.debug("[OpenCode SDK] Configuring global permissions");
|
|
531
|
-
}
|
|
532
|
-
const toolsConfig = this.buildToolsConfig(config);
|
|
533
|
-
if (toolsConfig) serverConfig.tools = toolsConfig;
|
|
534
|
-
if (config.provider_id && config.apiKey) {
|
|
535
|
-
serverConfig.provider = { [config.provider_id]: { options: { apiKey: config.apiKey } } };
|
|
536
|
-
require_logger.logger.debug(`[OpenCode SDK] Injecting provider apiKey for ${config.provider_id}`);
|
|
537
|
-
}
|
|
538
|
-
return serverConfig;
|
|
539
|
-
}
|
|
540
|
-
warnOnIgnoredBaseUrlConfig(config) {
|
|
541
|
-
if (!config.baseUrl) return;
|
|
542
|
-
const ignoredSettings = [
|
|
543
|
-
config.hostname === void 0 ? void 0 : "hostname",
|
|
544
|
-
config.port === void 0 ? void 0 : "port",
|
|
545
|
-
config.timeout === void 0 ? void 0 : "timeout",
|
|
546
|
-
config.log_level === void 0 ? void 0 : "log_level",
|
|
547
|
-
config.mcp ? "mcp" : void 0,
|
|
548
|
-
config.custom_agent ? "custom_agent" : void 0,
|
|
549
|
-
config.apiKey ? "apiKey" : void 0
|
|
550
|
-
].filter(Boolean);
|
|
551
|
-
if (ignoredSettings.length > 0) require_logger.logger.warn(`[OpenCode SDK] baseUrl uses an existing OpenCode server. These config keys are ignored unless that server is preconfigured: ${ignoredSettings.join(", ")}`);
|
|
552
|
-
}
|
|
553
|
-
buildDeleteSessionParameters(session) {
|
|
554
|
-
if (!this.opencodeModule) throw new Error("OpenCode SDK module is not loaded");
|
|
555
|
-
if (this.opencodeModule.apiVersion === "v2") return {
|
|
556
|
-
sessionID: session.id,
|
|
557
|
-
...session.query
|
|
558
|
-
};
|
|
559
|
-
return {
|
|
560
|
-
path: getSessionPath(session.id),
|
|
561
|
-
query: session.query
|
|
562
|
-
};
|
|
563
|
-
}
|
|
564
|
-
async deleteSession(session) {
|
|
565
|
-
if (!session) return;
|
|
566
|
-
await this.client?.session?.delete?.(this.buildDeleteSessionParameters(session));
|
|
567
|
-
}
|
|
568
|
-
buildAbortSessionParameters(sessionId, sessionQuery) {
|
|
569
|
-
return {
|
|
570
|
-
sessionID: sessionId,
|
|
571
|
-
...sessionQuery
|
|
572
|
-
};
|
|
573
|
-
}
|
|
574
|
-
/**
|
|
575
|
-
* Add a session to the cache with LRU eviction
|
|
576
|
-
*/
|
|
577
|
-
addSession(cacheKey, session) {
|
|
578
|
-
while (this.sessions.size >= MAX_SESSIONS && this.sessionOrder.length > 0) {
|
|
579
|
-
const oldestKey = this.sessionOrder.shift();
|
|
580
|
-
if (oldestKey) {
|
|
581
|
-
const oldSession = this.sessions.get(oldestKey);
|
|
582
|
-
this.sessions.delete(oldestKey);
|
|
583
|
-
if (oldSession) this.deleteSession(oldSession).catch((err) => {
|
|
584
|
-
require_logger.logger.debug(`Failed to delete evicted session ${oldSession.id}: ${err}`);
|
|
585
|
-
});
|
|
586
|
-
}
|
|
587
|
-
}
|
|
588
|
-
this.sessions.set(cacheKey, session);
|
|
589
|
-
this.sessionOrder.push(cacheKey);
|
|
590
|
-
}
|
|
591
|
-
assertServerWorkspace(config, inIsolatedWorkspace) {
|
|
592
|
-
if (inIsolatedWorkspace && !config.baseUrl && (this.serverHasRepositoryEnv || hasRepositoryEnv(process.env))) throw new Error("copy_working_dir cannot isolate OpenCode while its server inherits Git repository selectors such as GIT_DIR, GIT_WORK_TREE, or GIT_INDEX_FILE. The OpenCode SDK does not support replacing that environment. Unset repository-selecting Git variables before starting the provider.");
|
|
593
|
-
}
|
|
594
|
-
prepareCall(context) {
|
|
595
|
-
const config = {
|
|
596
|
-
...this.config,
|
|
597
|
-
...context?.prompt?.config
|
|
598
|
-
};
|
|
599
|
-
const inIsolatedWorkspace = require_agentWorkspace.assertIsolatedWorkingDir(config);
|
|
600
|
-
this.assertServerWorkspace(config, inIsolatedWorkspace);
|
|
601
|
-
if (config.apiKey !== this.config.apiKey) throw new Error("OpenCode SDK apiKey is provider-level configuration and cannot be overridden per prompt");
|
|
602
|
-
if (config.baseUrl !== this.config.baseUrl) throw new Error("OpenCode SDK baseUrl is provider-level configuration and cannot be overridden per prompt");
|
|
603
|
-
if (Boolean(config.restart_server_per_call) !== Boolean(this.config.restart_server_per_call)) throw new Error("OpenCode SDK restart_server_per_call is provider-level configuration and cannot be overridden per prompt");
|
|
604
|
-
if (config.workspace && !config.baseUrl && !config.working_dir) throw new Error("OpenCode SDK workspace support requires either baseUrl or working_dir");
|
|
605
|
-
this.validateTraceRestartConfiguration(config);
|
|
606
|
-
if (config.apiKey && !config.provider_id && !config.baseUrl) require_logger.logger.warn("[OpenCode SDK] apiKey is set without provider_id. Prefer setting provider_id so promptfoo can wire the credential into the spawned OpenCode server.");
|
|
607
|
-
this.warnOnIgnoredBaseUrlConfig(config);
|
|
608
|
-
if (config.working_dir) {
|
|
609
|
-
const workingDir = require_agentic_utils.resolveAgenticWorkingDir(config.working_dir, require_logger.state.basePath) ?? process.cwd();
|
|
610
|
-
let stats;
|
|
611
|
-
try {
|
|
612
|
-
stats = fs.default.statSync(workingDir);
|
|
613
|
-
} catch (err) {
|
|
614
|
-
throw new Error(`Working directory ${config.working_dir} (resolved to ${workingDir}) does not exist or isn't accessible: ${err.message}`);
|
|
615
|
-
}
|
|
616
|
-
if (!stats.isDirectory()) throw new Error(`Working directory ${config.working_dir} (resolved to ${workingDir}) is not a directory`);
|
|
617
|
-
return {
|
|
618
|
-
config,
|
|
619
|
-
inIsolatedWorkspace,
|
|
620
|
-
isTempDir: false,
|
|
621
|
-
workingDir
|
|
622
|
-
};
|
|
623
|
-
}
|
|
624
|
-
return {
|
|
625
|
-
config,
|
|
626
|
-
inIsolatedWorkspace,
|
|
627
|
-
isTempDir: true,
|
|
628
|
-
workingDir: fs.default.mkdtempSync(path.default.join(os.default.tmpdir(), "promptfoo-opencode-sdk-"))
|
|
629
|
-
};
|
|
630
|
-
}
|
|
631
|
-
validateTraceRestartConfiguration(config) {
|
|
632
|
-
if (!config.restart_server_per_call) return;
|
|
633
|
-
if (config.baseUrl) throw new Error("OpenCode SDK restart_server_per_call cannot be combined with baseUrl; the provider must own the server.");
|
|
634
|
-
if (config.port !== void 0 && config.port !== 0) throw new Error("OpenCode SDK restart_server_per_call requires an automatically assigned port; omit port or set it to 0.");
|
|
635
|
-
const conflicting = [
|
|
636
|
-
config.persist_sessions ? "persist_sessions" : void 0,
|
|
637
|
-
config.session_id ? "session_id" : void 0,
|
|
638
|
-
config.parent_session_id ? "parent_session_id" : void 0
|
|
639
|
-
].filter(Boolean);
|
|
640
|
-
if (conflicting.length > 0) throw new Error(`OpenCode SDK restart_server_per_call cannot preserve session state with: ${conflicting.join(", ")}.`);
|
|
641
|
-
}
|
|
642
|
-
async ensureOpenCodeModule() {
|
|
643
|
-
if (this.opencodeModule) return this.opencodeModule;
|
|
644
|
-
if (!this.opencodeModuleLoad) this.opencodeModuleLoad = loadOpenCodeSDK().catch((err) => {
|
|
645
|
-
this.opencodeModuleLoad = void 0;
|
|
646
|
-
throw err;
|
|
647
|
-
});
|
|
648
|
-
this.opencodeModule = await this.opencodeModuleLoad;
|
|
649
|
-
return this.opencodeModule;
|
|
650
|
-
}
|
|
651
|
-
async ensureClient(config, traceparent) {
|
|
652
|
-
const opencodeModule = await this.ensureOpenCodeModule();
|
|
653
|
-
this.validateSessionPolicyConfiguration(config);
|
|
654
|
-
const desiredTraceparent = isValidTraceparent(traceparent) ? traceparent : void 0;
|
|
655
|
-
const restartsPerCall = Boolean(config.restart_server_per_call);
|
|
656
|
-
if (this.client) {
|
|
657
|
-
if (!restartsPerCall || this.activeTraceparent === desiredTraceparent) return;
|
|
658
|
-
require_logger.logger.debug(`[OpenCode SDK] Restarting server to re-parent spans (traceparent ${this.activeTraceparent ?? "none"} -> ${desiredTraceparent ?? "none"})`);
|
|
659
|
-
await this.closeServer();
|
|
660
|
-
this.sessions.clear();
|
|
661
|
-
this.sessionOrder = [];
|
|
662
|
-
}
|
|
663
|
-
if (this.clientInitialization !== void 0) return this.clientInitialization;
|
|
664
|
-
const { createOpencode, createOpencodeClient } = opencodeModule;
|
|
665
|
-
let initialization;
|
|
666
|
-
initialization = (async () => {
|
|
667
|
-
if (config.baseUrl) {
|
|
668
|
-
this.client = createOpencodeClient({ baseUrl: config.baseUrl });
|
|
669
|
-
return;
|
|
670
|
-
}
|
|
671
|
-
const serverEnv = this.buildServerEnv(config, desiredTraceparent);
|
|
672
|
-
const passThroughEnv = {};
|
|
673
|
-
for (const [key, value] of Object.entries(serverEnv)) if (value !== void 0) passThroughEnv[key] = value;
|
|
674
|
-
const serverOptions = {
|
|
675
|
-
hostname: config.hostname ?? "127.0.0.1",
|
|
676
|
-
port: config.port ?? 0,
|
|
677
|
-
timeout: config.timeout ?? 3e4,
|
|
678
|
-
env: passThroughEnv
|
|
679
|
-
};
|
|
680
|
-
const serverConfig = this.buildServerConfig(config);
|
|
681
|
-
if (Object.keys(serverConfig).length > 0) serverOptions.config = serverConfig;
|
|
682
|
-
this.serverHasRepositoryEnv = hasRepositoryEnv(serverEnv);
|
|
683
|
-
const opencode = await spawnWithServerEnv(serverEnv, () => createOpencode(serverOptions));
|
|
684
|
-
this.server = opencode.server;
|
|
685
|
-
const authEnv = os.default.platform() === "win32" ? Object.fromEntries(Object.entries(serverEnv).map(([key, value]) => [key.toUpperCase(), value])) : serverEnv;
|
|
686
|
-
const password = authEnv.OPENCODE_SERVER_PASSWORD;
|
|
687
|
-
this.client = password ? createOpencodeClient({
|
|
688
|
-
baseUrl: opencode.server.url,
|
|
689
|
-
headers: { Authorization: `Basic ${Buffer.from(`${authEnv.OPENCODE_SERVER_USERNAME ?? "opencode"}:${password}`).toString("base64")}` }
|
|
690
|
-
}) : opencode.client;
|
|
691
|
-
this.activeTraceparent = desiredTraceparent;
|
|
692
|
-
require_logger.logger.debug(`OpenCode server started at ${opencode.server.url}`);
|
|
693
|
-
})();
|
|
694
|
-
this.clientInitialization = initialization;
|
|
695
|
-
try {
|
|
696
|
-
await initialization;
|
|
697
|
-
} catch (error) {
|
|
698
|
-
await this.closeServer();
|
|
699
|
-
throw error;
|
|
700
|
-
} finally {
|
|
701
|
-
if (this.clientInitialization === initialization) this.clientInitialization = void 0;
|
|
702
|
-
if (!this.server) this.serverHasRepositoryEnv = false;
|
|
703
|
-
}
|
|
704
|
-
}
|
|
705
|
-
validateSessionPolicyConfiguration(config) {
|
|
706
|
-
if (!this.opencodeModule) return;
|
|
707
|
-
const hasPermissionRules = this.buildConfiguredPermissionRules(config).length > 0;
|
|
708
|
-
if (this.opencodeModule.apiVersion === "v2" && config.session_id && hasPermissionRules) throw new Error("OpenCode SDK v2 explicit session_id resumes cannot safely rebind permission rules; create a new session to change permission.");
|
|
709
|
-
if (this.opencodeModule.apiVersion !== "v1" || !hasPermissionRules) return;
|
|
710
|
-
const staticPolicyMatches = JSON.stringify(this.buildEffectivePermissionRules(config)) === JSON.stringify(this.buildEffectivePermissionRules(this.config));
|
|
711
|
-
if (config.baseUrl || config.session_id || !staticPolicyMatches) throw new Error("OpenCode SDK v1 supports permission rules only for provider-level configuration on sessions started by Promptfoo; use tools for remote, resumed, or per-prompt policies.");
|
|
712
|
-
}
|
|
713
|
-
async getOrCreateSession(config, workingDir) {
|
|
714
|
-
if (!this.client || !this.opencodeModule) throw new Error("OpenCode SDK client is not initialized");
|
|
715
|
-
const sessionQuery = this.buildQuery(config, workingDir);
|
|
716
|
-
if (config.session_id) return {
|
|
717
|
-
sessionId: config.session_id,
|
|
718
|
-
sessionQuery
|
|
719
|
-
};
|
|
720
|
-
const sessionCacheKey = this.buildSessionKey(config, workingDir);
|
|
721
|
-
if (config.persist_sessions && this.sessions.has(sessionCacheKey)) return {
|
|
722
|
-
sessionId: this.sessions.get(sessionCacheKey).id,
|
|
723
|
-
sessionQuery
|
|
724
|
-
};
|
|
725
|
-
const createResult = await this.client.session.create(this.buildCreateSessionParameters(config, sessionQuery));
|
|
726
|
-
const sessionId = unwrapOpenCodeResult(createResult)?.id ?? createResult?.id;
|
|
727
|
-
if (!sessionId) throw new Error("Failed to get session ID from OpenCode SDK response");
|
|
728
|
-
const session = {
|
|
729
|
-
id: sessionId,
|
|
730
|
-
query: sessionQuery
|
|
731
|
-
};
|
|
732
|
-
if (config.persist_sessions) {
|
|
733
|
-
this.addSession(sessionCacheKey, session);
|
|
734
|
-
return {
|
|
735
|
-
sessionId,
|
|
736
|
-
sessionQuery
|
|
737
|
-
};
|
|
738
|
-
}
|
|
739
|
-
return {
|
|
740
|
-
sessionId,
|
|
741
|
-
sessionQuery,
|
|
742
|
-
ephemeralSession: session
|
|
743
|
-
};
|
|
744
|
-
}
|
|
745
|
-
buildPromptBody(config, prompt) {
|
|
746
|
-
if (!this.opencodeModule) throw new Error("OpenCode SDK module is not loaded");
|
|
747
|
-
const promptBody = { parts: [{
|
|
748
|
-
type: "text",
|
|
749
|
-
text: prompt
|
|
750
|
-
}] };
|
|
751
|
-
if (config.provider_id || config.model) promptBody.model = {
|
|
752
|
-
providerID: config.provider_id ?? "",
|
|
753
|
-
modelID: config.model ?? ""
|
|
754
|
-
};
|
|
755
|
-
if (config.agent) promptBody.agent = config.agent;
|
|
756
|
-
else if (config.custom_agent) promptBody.agent = "custom";
|
|
757
|
-
if (config.custom_agent?.prompt) promptBody.system = config.custom_agent.prompt;
|
|
758
|
-
if (config.format) promptBody.format = config.format;
|
|
759
|
-
if (config.variant) promptBody.variant = config.variant;
|
|
760
|
-
if ((this.opencodeModule.apiVersion === "v1" || Boolean(config.session_id)) && this.buildConfiguredPermissionRules(config).length === 0) promptBody.tools = this.buildEffectiveToolsConfig(config);
|
|
761
|
-
return promptBody;
|
|
762
|
-
}
|
|
763
|
-
buildEffectivePermissionRules(config) {
|
|
764
|
-
const customAgent = config.agent ? void 0 : config.custom_agent;
|
|
765
|
-
return [
|
|
766
|
-
...convertToolsConfigToRuleset(this.buildToolsConfig(config)),
|
|
767
|
-
...convertPermissionConfigToRuleset(config.permission) ?? [],
|
|
768
|
-
...convertToolsConfigToRuleset(this.buildToolsConfig({
|
|
769
|
-
...config,
|
|
770
|
-
tools: customAgent?.tools
|
|
771
|
-
}, false)),
|
|
772
|
-
...convertPermissionConfigToRuleset(customAgent?.permission) ?? []
|
|
773
|
-
];
|
|
774
|
-
}
|
|
775
|
-
buildCreateSessionParameters(config, sessionQuery) {
|
|
776
|
-
if (!this.opencodeModule) throw new Error("OpenCode SDK module is not loaded");
|
|
777
|
-
const createBody = { title: `promptfoo-${Date.now()}` };
|
|
778
|
-
if (this.opencodeModule.apiVersion === "v2") createBody.permission = this.buildEffectivePermissionRules(config);
|
|
779
|
-
if (config.parent_session_id && this.opencodeModule.apiVersion === "v2") createBody.parentID = config.parent_session_id;
|
|
780
|
-
if (this.opencodeModule.apiVersion === "v2") return {
|
|
781
|
-
...sessionQuery,
|
|
782
|
-
...createBody
|
|
783
|
-
};
|
|
784
|
-
return {
|
|
785
|
-
body: createBody,
|
|
786
|
-
query: sessionQuery
|
|
787
|
-
};
|
|
788
|
-
}
|
|
789
|
-
buildPromptParameters(config, prompt, sessionId, sessionQuery) {
|
|
790
|
-
if (!this.opencodeModule) throw new Error("OpenCode SDK module is not loaded");
|
|
791
|
-
const promptBody = this.buildPromptBody(config, prompt);
|
|
792
|
-
if (this.opencodeModule.apiVersion === "v2") return {
|
|
793
|
-
sessionID: sessionId,
|
|
794
|
-
...sessionQuery,
|
|
795
|
-
...promptBody
|
|
796
|
-
};
|
|
797
|
-
return {
|
|
798
|
-
path: getSessionPath(sessionId),
|
|
799
|
-
body: promptBody,
|
|
800
|
-
query: sessionQuery
|
|
801
|
-
};
|
|
802
|
-
}
|
|
803
|
-
/**
|
|
804
|
-
* Whether the skill tool can run for this config, so the session-history
|
|
805
|
-
* round trip used for skill tracking can be skipped when it cannot.
|
|
806
|
-
*
|
|
807
|
-
* OpenCode permission rules are last-match-wins for each matching pattern.
|
|
808
|
-
* Since the prospective skill name is unknown here, any non-deny rule means
|
|
809
|
-
* a skill may run and its intermediate history must be inspected.
|
|
810
|
-
*/
|
|
811
|
-
isSkillToolEnabled(config) {
|
|
812
|
-
return this.buildEffectivePermissionRules(config).some((rule) => (rule.permission === "skill" || rule.permission === "*") && rule.action !== "deny");
|
|
813
|
-
}
|
|
814
|
-
/**
|
|
815
|
-
* Fetches the session message history and returns only the parts that belong
|
|
816
|
-
* to the current prompt, bounded by parentID (start) and assistantMessage.id
|
|
817
|
-
* (end) to prevent skill calls from other prompts bleeding in.
|
|
818
|
-
*
|
|
819
|
-
* Returns an empty array — which makes the caller fall back to the
|
|
820
|
-
* final-message parts — whenever the current prompt cannot be located in the
|
|
821
|
-
* history (a start/end anchor is absent from the response or fetched page).
|
|
822
|
-
* Over-attributing skill calls from earlier or concurrent prompts in a
|
|
823
|
-
* shared session would be worse than missing intermediate-turn calls.
|
|
824
|
-
*/
|
|
825
|
-
async fetchCurrentPromptParts(client, session, response, abortSignal) {
|
|
826
|
-
const assistantMessage = unwrapOpenCodeResult(response)?.info;
|
|
827
|
-
const parentId = assistantMessage?.parentID;
|
|
828
|
-
const assistantId = assistantMessage?.id;
|
|
829
|
-
if (!parentId || !assistantId) {
|
|
830
|
-
require_logger.logger.debug("[OpenCode SDK] Assistant message is missing a history anchor; skipping session history fetch for skill tracking");
|
|
831
|
-
return [];
|
|
832
|
-
}
|
|
833
|
-
const messages = unwrapOpenCodeResult(this.opencodeModule?.apiVersion === "v2" ? await client.session.messages({
|
|
834
|
-
sessionID: session.sessionId,
|
|
835
|
-
...session.sessionQuery
|
|
836
|
-
}, abortSignal ? { signal: abortSignal } : void 0) : await client.session.messages({
|
|
837
|
-
path: getSessionPath(session.sessionId),
|
|
838
|
-
query: session.sessionQuery,
|
|
839
|
-
...abortSignal ? { signal: abortSignal } : {}
|
|
840
|
-
})) ?? [];
|
|
841
|
-
const startIndex = messages.findIndex((m) => m.info?.id === parentId);
|
|
842
|
-
if (startIndex === -1) {
|
|
843
|
-
require_logger.logger.debug(`[OpenCode SDK] Parent message ${parentId} not found in ${messages.length} fetched messages; falling back to final-message parts for skill tracking`);
|
|
844
|
-
return [];
|
|
845
|
-
}
|
|
846
|
-
const endIndex = messages.findIndex((m) => m.info?.id === assistantId);
|
|
847
|
-
if (endIndex < startIndex) {
|
|
848
|
-
require_logger.logger.debug(`[OpenCode SDK] Assistant message ${assistantId} not found after its parent in ${messages.length} fetched messages; falling back to final-message parts for skill tracking`);
|
|
849
|
-
return [];
|
|
850
|
-
}
|
|
851
|
-
const relevantMessages = messages.slice(startIndex, endIndex + 1);
|
|
852
|
-
require_logger.logger.debug(`[OpenCode SDK] Fetched ${messages.length} messages, using ${relevantMessages.length} (start=${startIndex} end=${endIndex}) for skill tracking`);
|
|
853
|
-
return relevantMessages.flatMap((m) => m.parts ?? []);
|
|
854
|
-
}
|
|
855
|
-
getSessionQueueKey(config, workingDir) {
|
|
856
|
-
if (config.session_id) return require_agentic_utils.generateCacheKey("opencode:sdk:explicit-session", { sessionId: config.session_id });
|
|
857
|
-
return config.persist_sessions ? this.buildSessionKey(config, workingDir) : void 0;
|
|
858
|
-
}
|
|
859
|
-
buildProviderResponse(config, response, sessionId, allSessionParts) {
|
|
860
|
-
const responseData = unwrapOpenCodeResult(response);
|
|
861
|
-
const assistantMessage = responseData?.info;
|
|
862
|
-
const parts = responseData?.parts ?? [];
|
|
863
|
-
let output = "";
|
|
864
|
-
for (const part of parts) if (part.type === "text" && part.text) output += (output ? "\n" : "") + part.text;
|
|
865
|
-
if (config.format?.type === "json_schema") {
|
|
866
|
-
if (assistantMessage?.structured === void 0) output = normalizeStructuredText(output) ?? output;
|
|
867
|
-
else output = JSON.stringify(assistantMessage.structured);
|
|
868
|
-
}
|
|
869
|
-
const tokens = assistantMessage?.tokens;
|
|
870
|
-
const skillCalls = this.deriveSkillCalls(allSessionParts.length > 0 ? allSessionParts : parts);
|
|
871
|
-
return {
|
|
872
|
-
output,
|
|
873
|
-
tokenUsage: buildOpenCodeTokenUsage(tokens),
|
|
874
|
-
...assistantMessage?.cost === void 0 ? {} : { cost: assistantMessage.cost },
|
|
875
|
-
raw: JSON.stringify(response),
|
|
876
|
-
sessionId,
|
|
877
|
-
...skillCalls.length === 0 ? {} : { metadata: { skillCalls } }
|
|
878
|
-
};
|
|
879
|
-
}
|
|
880
|
-
deriveSkillCalls(parts) {
|
|
881
|
-
return parts.flatMap((part) => {
|
|
882
|
-
if (part.type !== "tool" || part.tool !== "skill") return [];
|
|
883
|
-
const skillName = typeof part.state?.input?.name === "string" ? part.state.input.name.trim() : "";
|
|
884
|
-
if (!skillName) return [];
|
|
885
|
-
const skillDir = typeof part.state?.metadata?.dir === "string" ? part.state.metadata.dir.trim() : "";
|
|
886
|
-
return [{
|
|
887
|
-
name: skillName,
|
|
888
|
-
input: part.state?.input,
|
|
889
|
-
...skillDir ? { path: path.default.join(skillDir, "SKILL.md") } : {},
|
|
890
|
-
source: "tool",
|
|
891
|
-
...part.state?.status === "error" ? { is_error: true } : {}
|
|
892
|
-
}];
|
|
893
|
-
});
|
|
894
|
-
}
|
|
895
|
-
handleCallError(error, callOptions) {
|
|
896
|
-
if (error instanceof Error && error.name === "AbortError" || callOptions?.abortSignal?.aborted) {
|
|
897
|
-
require_logger.logger.warn("OpenCode SDK call aborted");
|
|
898
|
-
return { error: "OpenCode SDK call aborted" };
|
|
899
|
-
}
|
|
900
|
-
if (error && typeof error === "object" && "code" in error && error.code === "ENOENT" && "message" in error && typeof error.message === "string" && error.message.includes("opencode")) {
|
|
901
|
-
const cliError = dedent.default`The OpenCode CLI is required but not installed.
|
|
902
|
-
|
|
903
|
-
The OpenCode SDK requires the 'opencode' CLI to be installed and available in your PATH.
|
|
904
|
-
|
|
905
|
-
Install it with:
|
|
906
|
-
curl -fsSL https://opencode.ai/install | bash
|
|
907
|
-
|
|
908
|
-
Or see: https://opencode.ai for other installation methods.`;
|
|
909
|
-
require_logger.logger.error(cliError);
|
|
910
|
-
return { error: cliError };
|
|
911
|
-
}
|
|
912
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
913
|
-
require_logger.logger.error("Error calling OpenCode SDK", { error });
|
|
914
|
-
return { error: `Error calling OpenCode SDK: ${errorMessage}` };
|
|
915
|
-
}
|
|
916
|
-
async callApi(prompt, context, callOptions) {
|
|
917
|
-
const { config, inIsolatedWorkspace, isTempDir, workingDir } = this.prepareCall(context);
|
|
918
|
-
const perCallTracing = Boolean(config.restart_server_per_call);
|
|
919
|
-
try {
|
|
920
|
-
this.buildEffectivePermissionRules(config);
|
|
921
|
-
await this.ensureOpenCodeModule();
|
|
922
|
-
this.validateSessionPolicyConfiguration(config);
|
|
923
|
-
if (config.enable_streaming && !this.streamingWarningEmitted) {
|
|
924
|
-
this.streamingWarningEmitted = true;
|
|
925
|
-
require_logger.logger.warn("[OpenCode SDK] enable_streaming is currently a no-op for this provider; the prompt will run to completion before returning.");
|
|
926
|
-
}
|
|
927
|
-
if (perCallTracing && !isValidTraceparent(context?.traceparent) && !this.missingTraceparentWarningEmitted) {
|
|
928
|
-
this.missingTraceparentWarningEmitted = true;
|
|
929
|
-
require_logger.logger.warn("[OpenCode SDK] restart_server_per_call has no valid trace context. Enable tracing.enabled to correlate spans; calls remain serialized and uncached.");
|
|
930
|
-
}
|
|
931
|
-
const mcpConfig = config.mcp && Object.keys(config.mcp).length > 0 ? config.mcp : void 0;
|
|
932
|
-
const statefulSession = Boolean(config.session_id || config.persist_sessions);
|
|
933
|
-
const hasPermissionRules = this.buildConfiguredPermissionRules(config).length > 0;
|
|
934
|
-
const sensitiveMcpConfig = openCodeMcpContainsCacheSensitiveData(mcpConfig);
|
|
935
|
-
const sensitiveBaseUrl = openCodeBaseUrlContainsCacheSensitiveData(config.baseUrl);
|
|
936
|
-
const cacheResult = inIsolatedWorkspace || statefulSession || hasPermissionRules || sensitiveMcpConfig || sensitiveBaseUrl || perCallTracing ? {
|
|
937
|
-
shouldReadCache: false,
|
|
938
|
-
shouldWriteCache: false
|
|
939
|
-
} : await require_agentic_utils.initializeAgenticCache({
|
|
940
|
-
cacheKeyPrefix: "opencode:sdk",
|
|
941
|
-
workingDir: config.working_dir ? workingDir : void 0,
|
|
942
|
-
bustCache: context?.bustCache,
|
|
943
|
-
mcp: mcpConfig,
|
|
944
|
-
cacheMcp: config.cache_mcp
|
|
945
|
-
}, {
|
|
946
|
-
prompt,
|
|
947
|
-
...this.historyAffectingInputs(config)
|
|
948
|
-
});
|
|
949
|
-
const cachedResponse = await require_agentic_utils.getCachedResponse(cacheResult, "OpenCode SDK");
|
|
950
|
-
if (cachedResponse) return cachedResponse;
|
|
951
|
-
if (callOptions?.abortSignal?.aborted) return { error: "OpenCode SDK call aborted before it started" };
|
|
952
|
-
const sessionQueueKey = perCallTracing ? SERVER_LIFECYCLE_QUEUE_KEY : this.getSessionQueueKey(config, workingDir);
|
|
953
|
-
return await this.sessionQueues.run(sessionQueueKey, callOptions?.abortSignal, async () => {
|
|
954
|
-
let ephemeralSession;
|
|
955
|
-
let abortListener;
|
|
956
|
-
try {
|
|
957
|
-
await this.ensureClient(config, context?.traceparent);
|
|
958
|
-
this.assertServerWorkspace(config, inIsolatedWorkspace);
|
|
959
|
-
const session = await this.getOrCreateSession(config, workingDir);
|
|
960
|
-
ephemeralSession = session.ephemeralSession;
|
|
961
|
-
if (callOptions?.abortSignal?.aborted) return { error: "OpenCode SDK call aborted before it started" };
|
|
962
|
-
const promptOptions = this.buildPromptParameters(config, prompt, session.sessionId, session.sessionQuery);
|
|
963
|
-
require_logger.logger.debug(`OpenCode SDK prompt options:`, promptOptions);
|
|
964
|
-
const client = this.client;
|
|
965
|
-
if (!client) throw new Error("OpenCode SDK client is not initialized");
|
|
966
|
-
const abortSignal = callOptions?.abortSignal;
|
|
967
|
-
if (abortSignal && client.session.abort && this.opencodeModule?.apiVersion === "v2") {
|
|
968
|
-
const abortParams = this.buildAbortSessionParameters(session.sessionId, session.sessionQuery);
|
|
969
|
-
abortListener = () => {
|
|
970
|
-
client.session.abort?.(abortParams).catch((err) => {
|
|
971
|
-
require_logger.logger.debug(`[OpenCode SDK] Failed to abort session ${session.sessionId}: ${err}`);
|
|
972
|
-
});
|
|
973
|
-
};
|
|
974
|
-
abortSignal.addEventListener("abort", abortListener, { once: true });
|
|
975
|
-
}
|
|
976
|
-
const response = await client.session.prompt(promptOptions);
|
|
977
|
-
require_logger.logger.debug(`OpenCode SDK response received`);
|
|
978
|
-
if (abortListener && abortSignal) {
|
|
979
|
-
abortSignal.removeEventListener("abort", abortListener);
|
|
980
|
-
abortListener = void 0;
|
|
981
|
-
}
|
|
982
|
-
if (abortSignal?.aborted) return { error: "OpenCode SDK call aborted" };
|
|
983
|
-
let allSessionParts = [];
|
|
984
|
-
if (this.isSkillToolEnabled(config)) {
|
|
985
|
-
try {
|
|
986
|
-
allSessionParts = await this.fetchCurrentPromptParts(client, session, response, abortSignal);
|
|
987
|
-
} catch (e) {
|
|
988
|
-
require_logger.logger.debug(`[OpenCode SDK] Could not fetch session history for skill tracking: ${e}`);
|
|
989
|
-
}
|
|
990
|
-
if (abortSignal?.aborted) return { error: "OpenCode SDK call aborted" };
|
|
991
|
-
}
|
|
992
|
-
const providerResponse = this.buildProviderResponse(config, response, session.sessionId, allSessionParts);
|
|
993
|
-
await require_agentic_utils.cacheResponse(cacheResult, providerResponse, "OpenCode SDK");
|
|
994
|
-
require_logger.logger.debug(`OpenCode SDK response: ${providerResponse.output.slice(0, 100)}...`);
|
|
995
|
-
return providerResponse;
|
|
996
|
-
} finally {
|
|
997
|
-
if (abortListener && callOptions?.abortSignal) callOptions.abortSignal.removeEventListener("abort", abortListener);
|
|
998
|
-
if (ephemeralSession) try {
|
|
999
|
-
await this.deleteSession(ephemeralSession);
|
|
1000
|
-
} catch (err) {
|
|
1001
|
-
require_logger.logger.debug(`Failed to delete non-persistent session ${ephemeralSession.id}: ${err}`);
|
|
1002
|
-
}
|
|
1003
|
-
}
|
|
1004
|
-
});
|
|
1005
|
-
} catch (error) {
|
|
1006
|
-
return this.handleCallError(error, callOptions);
|
|
1007
|
-
} finally {
|
|
1008
|
-
if (isTempDir && workingDir) await fs_promises.default.rm(workingDir, {
|
|
1009
|
-
recursive: true,
|
|
1010
|
-
force: true
|
|
1011
|
-
});
|
|
1012
|
-
}
|
|
1013
|
-
}
|
|
1014
|
-
};
|
|
1015
|
-
//#endregion
|
|
1016
|
-
exports.OpenCodeSDKProvider = OpenCodeSDKProvider;
|
|
1017
|
-
|
|
1018
|
-
//# sourceMappingURL=opencode-sdk-2EfIDhFp.cjs.map
|