@psnext/slingcli 2.5.20260623-1 → 2.5.20260705-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/node_modules/@aws/lambda-invoke-store/README.md +25 -1
- package/node_modules/@aws/lambda-invoke-store/dist-cjs/invoke-store.js +12 -0
- package/node_modules/@aws/lambda-invoke-store/dist-es/invoke-store.js +12 -0
- package/node_modules/@aws/lambda-invoke-store/dist-types/invoke-store.d.ts +6 -0
- package/node_modules/@aws/lambda-invoke-store/package.json +1 -1
- package/node_modules/@aws-sdk/core/account-id-endpoint.d.ts +1 -3
- package/node_modules/@aws-sdk/core/client.d.ts +1 -3
- package/node_modules/@aws-sdk/core/httpAuthSchemes.d.ts +1 -3
- package/node_modules/@aws-sdk/core/package.json +10 -17
- package/node_modules/@aws-sdk/core/protocols.d.ts +1 -3
- package/node_modules/@aws-sdk/core/util.d.ts +1 -3
- package/node_modules/@aws-sdk/credential-provider-env/package.json +5 -5
- package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js +172 -1
- package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-cjs/index.js +3 -51
- package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-es/index.js +3 -3
- package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-types/index.d.ts +3 -3
- package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/package.json +4 -4
- package/node_modules/@aws-sdk/credential-provider-http/package.json +8 -10
- package/node_modules/@aws-sdk/credential-provider-ini/package.json +13 -13
- package/node_modules/@aws-sdk/credential-provider-login/package.json +6 -6
- package/node_modules/@aws-sdk/credential-provider-node/package.json +11 -11
- package/node_modules/@aws-sdk/credential-provider-process/package.json +5 -5
- package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/package.json +6 -6
- package/node_modules/@aws-sdk/credential-provider-sso/package.json +7 -7
- package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js +58 -3
- package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +7 -8
- package/node_modules/@aws-sdk/eventstream-handler-node/package.json +4 -4
- package/node_modules/@aws-sdk/middleware-eventstream/package.json +4 -4
- package/node_modules/@aws-sdk/middleware-websocket/package.json +7 -7
- package/node_modules/@aws-sdk/nested-clients/cognito-identity.d.ts +1 -3
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +13 -25
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +13 -17
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +12 -15
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +12 -15
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +13 -25
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commandBuilder.js +6 -0
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.js +2 -14
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/GetIdCommand.js +2 -14
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/index.js +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.browser.js +0 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.js +1 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.native.js +0 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.shared.js +2 -0
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commandBuilder.js +8 -0
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/CreateOAuth2TokenCommand.js +2 -17
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/index.js +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.browser.js +0 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.js +1 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.native.js +0 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.shared.js +2 -0
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commandBuilder.js +6 -0
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/GetRoleCredentialsCommand.js +2 -14
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/index.js +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.browser.js +0 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.js +1 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.native.js +0 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.shared.js +2 -0
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commandBuilder.js +6 -0
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/CreateTokenCommand.js +2 -14
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/index.js +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.browser.js +0 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.js +1 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.native.js +0 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.shared.js +2 -0
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commandBuilder.js +6 -0
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleCommand.js +2 -14
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.js +2 -14
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/index.js +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.browser.js +0 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.js +1 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.native.js +0 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.shared.js +2 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commandBuilder.d.ts +18 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.d.ts +3 -8
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/GetIdCommand.d.ts +3 -8
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/index.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.browser.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.native.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.shared.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commandBuilder.d.ts +18 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts +3 -8
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/index.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.browser.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.native.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.shared.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/commandBuilder.d.ts +18 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/commands/GetRoleCredentialsCommand.d.ts +3 -8
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/index.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.browser.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.native.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.shared.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commandBuilder.d.ts +18 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/CreateTokenCommand.d.ts +3 -8
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/index.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.browser.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.native.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.shared.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commandBuilder.d.ts +18 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleCommand.d.ts +3 -8
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts +3 -8
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/index.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.browser.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.native.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.shared.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commandBuilder.d.ts +46 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.d.ts +7 -16
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/GetIdCommand.d.ts +7 -16
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/index.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.browser.d.ts +8 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.d.ts +8 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.native.d.ts +8 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.shared.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commandBuilder.d.ts +42 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts +3 -8
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/index.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.browser.d.ts +8 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.d.ts +8 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.native.d.ts +8 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.shared.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/commandBuilder.d.ts +42 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/commands/GetRoleCredentialsCommand.d.ts +3 -8
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/index.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.browser.d.ts +8 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.d.ts +8 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.native.d.ts +8 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.shared.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commandBuilder.d.ts +42 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/CreateTokenCommand.d.ts +3 -8
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/index.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.browser.d.ts +8 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.d.ts +8 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.native.d.ts +8 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.shared.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commandBuilder.d.ts +46 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleCommand.d.ts +7 -16
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts +7 -16
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/index.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.browser.d.ts +8 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.d.ts +8 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.native.d.ts +8 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.shared.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-cjs/index.js +3 -51
- package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-es/index.js +3 -3
- package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-types/index.d.ts +3 -3
- package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/package.json +4 -4
- package/node_modules/@aws-sdk/nested-clients/package.json +8 -10
- package/node_modules/@aws-sdk/nested-clients/signin.d.ts +1 -3
- package/node_modules/@aws-sdk/nested-clients/sso-oidc.d.ts +1 -3
- package/node_modules/@aws-sdk/nested-clients/sso.d.ts +1 -3
- package/node_modules/@aws-sdk/nested-clients/sts.d.ts +1 -3
- package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +4 -4
- package/node_modules/@aws-sdk/types/package.json +2 -2
- package/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js +236 -3
- package/node_modules/@aws-sdk/xml-builder/package.json +3 -4
- package/node_modules/@earendil-works/pi-agent-core/dist/agent.js +10 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +9 -8
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js +20 -2
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js +2 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.js +1 -1
- package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +51 -47
- package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js +11 -17
- package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js +25 -11
- package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare.js +0 -18
- package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js +8 -4
- package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js +8 -4
- package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +68 -43
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +38 -29
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js +189 -204
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +26 -35
- package/node_modules/@earendil-works/pi-ai/dist/api/openrouter-images.js +4 -6
- package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.js +11 -2
- package/node_modules/@earendil-works/pi-ai/dist/auth/helpers.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.js +19 -4
- package/node_modules/@earendil-works/pi-ai/dist/compat.js +81 -7
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +60 -45
- package/node_modules/@earendil-works/pi-ai/dist/images-models.js +7 -3
- package/node_modules/@earendil-works/pi-ai/dist/index.js +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/legacy-api-aliases.js +49 -0
- package/node_modules/@earendil-works/pi-ai/dist/models.js +7 -3
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.models.js +149 -12
- package/node_modules/@earendil-works/pi-ai/dist/providers/ant-ling.models.js +3 -3
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.models.js +18 -34
- package/node_modules/@earendil-works/pi-ai/dist/providers/cerebras.models.js +20 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.models.js +39 -9
- package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-auth.js +85 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-workers-ai.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-workers-ai.models.js +13 -13
- package/node_modules/@earendil-works/pi-ai/dist/providers/deepseek.models.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/providers/faux.js +1 -20
- package/node_modules/@earendil-works/pi-ai/dist/providers/fireworks.models.js +20 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot.models.js +57 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/groq.models.js +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/huggingface.models.js +72 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/minimax-cn.models.js +4 -4
- package/node_modules/@earendil-works/pi-ai/dist/providers/minimax.models.js +4 -4
- package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.models.js +4 -4
- package/node_modules/@earendil-works/pi-ai/dist/providers/nvidia.models.js +23 -4
- package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.models.js +16 -16
- package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.models.js +90 -17
- package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.js +390 -102
- package/node_modules/@earendil-works/pi-ai/dist/providers/together.models.js +39 -20
- package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.js +389 -80
- package/node_modules/@earendil-works/pi-ai/dist/providers/xai.models.js +7 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-ams.models.js +12 -12
- package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-cn.models.js +12 -12
- package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-sgp.models.js +12 -12
- package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi.models.js +15 -15
- package/node_modules/@earendil-works/pi-ai/dist/providers/zai-coding-cn.models.js +6 -6
- package/node_modules/@earendil-works/pi-ai/dist/providers/zai.models.js +6 -6
- package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.js +109 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/estimate.js +95 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/headers.js +10 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.js +15 -2
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js +3 -2
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +3 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js +87 -0
- package/node_modules/@earendil-works/pi-ai/package.json +1 -33
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js +13 -25
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js +50 -34
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js +13 -5
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js +11 -11
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.js +11 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js +33 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/http-dispatcher.js +28 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js +2 -4
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js +15 -18
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/project-trust.js +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-attribution.js +0 -10
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.js +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js +96 -73
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js +19 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/timings.js +24 -14
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js +20 -5
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js +2 -2
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js +12 -25
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.js +2 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/main.js +20 -4
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/assistant-message.js +23 -15
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-entry.js +52 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-editor.js +12 -3
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/session-selector.js +14 -3
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +13 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/status-indicator.js +60 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.js +19 -6
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js +180 -155
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js +14 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js +16 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js +7 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/rpc-entry.js +10 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-convert.js +21 -15
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-process.js +83 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/mime.js +41 -0
- package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +12 -12
- package/node_modules/@earendil-works/pi-coding-agent/package.json +8 -5
- package/node_modules/@earendil-works/pi-orchestrator/dist/cli.js +136 -0
- package/node_modules/@earendil-works/pi-orchestrator/dist/config.js +55 -0
- package/node_modules/@earendil-works/pi-orchestrator/dist/handler.js +105 -0
- package/node_modules/@earendil-works/pi-orchestrator/dist/index.js +11 -0
- package/node_modules/@earendil-works/pi-orchestrator/dist/ipc/client.js +56 -0
- package/node_modules/@earendil-works/pi-orchestrator/dist/ipc/protocol.js +12 -0
- package/node_modules/@earendil-works/pi-orchestrator/dist/ipc/server.js +145 -0
- package/node_modules/@earendil-works/pi-orchestrator/dist/radius.js +365 -0
- package/node_modules/@earendil-works/pi-orchestrator/dist/rpc-process.js +168 -0
- package/node_modules/@earendil-works/pi-orchestrator/dist/serve.js +70 -0
- package/node_modules/@earendil-works/pi-orchestrator/dist/storage.js +58 -0
- package/node_modules/@earendil-works/pi-orchestrator/dist/supervisor.js +290 -0
- package/node_modules/@earendil-works/pi-orchestrator/dist/types.js +2 -0
- package/node_modules/@earendil-works/pi-orchestrator/package.json +45 -0
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js +3 -0
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.browser.js +358 -145
- package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.js +462 -142
- package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.native.js +358 -145
- package/node_modules/@smithy/core/dist-cjs/submodules/client/index.js +18 -0
- package/node_modules/@smithy/core/dist-cjs/submodules/config/index.js +108 -63
- package/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.browser.js +11 -8
- package/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js +11 -8
- package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +5 -2
- package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.browser.js +30 -36
- package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +85 -137
- package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.native.js +30 -36
- package/node_modules/@smithy/core/dist-es/submodules/checksum/crc32/Crc32Js.js +30 -0
- package/node_modules/@smithy/core/dist-es/submodules/checksum/crc32/Crc32Node.js +24 -0
- package/node_modules/@smithy/core/dist-es/submodules/checksum/index.browser.js +7 -1
- package/node_modules/@smithy/core/dist-es/submodules/checksum/index.js +7 -1
- package/node_modules/@smithy/core/dist-es/submodules/checksum/index.native.js +7 -1
- package/node_modules/@smithy/core/dist-es/submodules/checksum/md5/Md5Js.js +92 -0
- package/node_modules/@smithy/core/dist-es/submodules/checksum/md5/Md5Node.js +29 -0
- package/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Js.js +179 -0
- package/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Node.js +59 -0
- package/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256WebCrypto.js +71 -0
- package/node_modules/@smithy/core/dist-es/submodules/client/index.js +1 -0
- package/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/client-command-builder.js +17 -0
- package/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/config.js +6 -1
- package/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/getInstanceMetadataRegion.js +92 -0
- package/node_modules/@smithy/core/dist-es/submodules/config/defaults-mode/constants.js +3 -0
- package/node_modules/@smithy/core/dist-es/submodules/config/defaults-mode/resolveDefaultsModeConfig.js +3 -56
- package/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/EventStreamCodec.js +5 -3
- package/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/splitMessage.js +7 -6
- package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +4 -1
- package/node_modules/@smithy/core/dist-es/submodules/serde/concatBytes.js +15 -0
- package/node_modules/@smithy/core/dist-es/submodules/serde/index.browser.js +2 -0
- package/node_modules/@smithy/core/dist-es/submodules/serde/index.js +2 -0
- package/node_modules/@smithy/core/dist-es/submodules/serde/index.native.js +2 -0
- package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/checksum/ChecksumStream.js +35 -27
- package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/headStream.js +2 -1
- package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.browser.js +12 -38
- package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.js +18 -33
- package/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUint8Array.browser.js +3 -0
- package/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUint8Array.js +3 -0
- package/node_modules/@smithy/core/dist-types/submodules/checksum/crc32/Crc32Js.d.ts +18 -0
- package/node_modules/@smithy/core/dist-types/submodules/checksum/crc32/Crc32Node.d.ts +18 -0
- package/node_modules/@smithy/core/dist-types/submodules/checksum/index.browser.d.ts +7 -1
- package/node_modules/@smithy/core/dist-types/submodules/checksum/index.d.ts +7 -1
- package/node_modules/@smithy/core/dist-types/submodules/checksum/index.native.d.ts +7 -1
- package/node_modules/@smithy/core/dist-types/submodules/checksum/md5/Md5Js.d.ts +19 -0
- package/node_modules/@smithy/core/dist-types/submodules/checksum/md5/Md5Node.d.ts +17 -0
- package/node_modules/@smithy/core/dist-types/submodules/checksum/sha256/Sha256Js.d.ts +28 -0
- package/node_modules/@smithy/core/dist-types/submodules/checksum/sha256/Sha256Node.d.ts +13 -0
- package/node_modules/@smithy/core/dist-types/submodules/checksum/sha256/Sha256WebCrypto.d.ts +22 -0
- package/node_modules/@smithy/core/dist-types/submodules/client/index.d.ts +1 -0
- package/node_modules/@smithy/core/dist-types/submodules/client/smithy-client/client-command-builder.d.ts +22 -0
- package/node_modules/@smithy/core/dist-types/submodules/client/smithy-client/command.d.ts +5 -6
- package/node_modules/@smithy/core/dist-types/submodules/config/config-resolver/regionConfig/getInstanceMetadataRegion.d.ts +7 -0
- package/node_modules/@smithy/core/dist-types/submodules/config/defaults-mode/constants.d.ts +12 -0
- package/node_modules/@smithy/core/dist-types/submodules/endpoints/index.browser.d.ts +4 -5
- package/node_modules/@smithy/core/dist-types/submodules/endpoints/index.d.ts +4 -5
- package/node_modules/@smithy/core/dist-types/submodules/endpoints/middleware-endpoint/adaptors/getEndpointFromInstructions.d.ts +3 -4
- package/node_modules/@smithy/core/dist-types/submodules/endpoints/middleware-endpoint/endpointMiddleware.d.ts +1 -2
- package/node_modules/@smithy/core/dist-types/submodules/endpoints/middleware-endpoint/getEndpointPlugin.d.ts +1 -2
- package/node_modules/@smithy/core/dist-types/submodules/serde/concatBytes.d.ts +6 -0
- package/node_modules/@smithy/core/dist-types/submodules/serde/index.browser.d.ts +2 -0
- package/node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts +2 -0
- package/node_modules/@smithy/core/dist-types/submodules/serde/index.native.d.ts +2 -0
- package/node_modules/@smithy/core/dist-types/submodules/serde/util-stream/checksum/ChecksumStream.d.ts +29 -12
- package/node_modules/@smithy/core/dist-types/submodules/serde/util-stream/stream-collector.browser.d.ts +8 -2
- package/node_modules/@smithy/core/dist-types/submodules/serde/util-stream/stream-collector.d.ts +4 -1
- package/node_modules/@smithy/core/package.json +5 -5
- package/node_modules/@smithy/credential-provider-imds/package.json +3 -3
- package/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js +2 -55
- package/node_modules/@smithy/fetch-http-handler/dist-es/index.js +2 -2
- package/node_modules/@smithy/fetch-http-handler/dist-types/index.d.ts +2 -2
- package/node_modules/@smithy/fetch-http-handler/package.json +4 -4
- package/node_modules/@smithy/signature-v4/package.json +3 -4
- package/node_modules/@smithy/types/dist-types/index.d.ts +1 -0
- package/node_modules/@smithy/types/package.json +1 -1
- package/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/node/buffer.d.ts +64 -25
- package/node_modules/@types/node/crypto.d.ts +18 -5
- package/node_modules/@types/node/diagnostics_channel.d.ts +254 -23
- package/node_modules/@types/node/dns.d.ts +1 -1
- package/node_modules/@types/node/ffi.d.ts +486 -0
- package/node_modules/@types/node/fs/promises.d.ts +3 -0
- package/node_modules/@types/node/fs.d.ts +21 -6
- package/node_modules/@types/node/http.d.ts +25 -0
- package/node_modules/@types/node/index.d.ts +1 -0
- package/node_modules/@types/node/package.json +2 -2
- package/node_modules/@types/node/process.d.ts +14 -1
- package/node_modules/@types/node/quic.d.ts +92 -11
- package/node_modules/@types/node/sqlite.d.ts +55 -0
- package/node_modules/@types/node/stream/iter.d.ts +150 -0
- package/node_modules/@types/node/stream.d.ts +32 -0
- package/node_modules/@types/node/test.d.ts +112 -2
- package/node_modules/@types/node/ts5.6/index.d.ts +1 -0
- package/node_modules/@types/node/ts5.7/index.d.ts +1 -0
- package/node_modules/@types/node/util.d.ts +19 -2
- package/node_modules/@types/node/v8.d.ts +84 -2
- package/node_modules/@types/node/worker_threads.d.ts +8 -7
- package/node_modules/brace-expansion/dist/commonjs/index.js +24 -14
- package/node_modules/brace-expansion/dist/commonjs/index.js.map +1 -1
- package/node_modules/brace-expansion/dist/esm/index.js +24 -14
- package/node_modules/brace-expansion/dist/esm/index.js.map +1 -1
- package/node_modules/brace-expansion/package.json +2 -2
- package/node_modules/google-auth-library/build/src/auth/googleauth.js +1 -1
- package/node_modules/google-auth-library/package.json +4 -4
- package/node_modules/protobufjs/dist/light/protobuf.js +2 -2
- package/node_modules/protobufjs/dist/light/protobuf.min.js +2 -2
- package/node_modules/protobufjs/dist/minimal/protobuf.js +2 -2
- package/node_modules/protobufjs/dist/minimal/protobuf.min.js +2 -2
- package/node_modules/protobufjs/dist/protobuf.js +5 -2
- package/node_modules/protobufjs/dist/protobuf.js.map +1 -1
- package/node_modules/protobufjs/dist/protobuf.min.js +3 -3
- package/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
- package/node_modules/protobufjs/package.json +1 -1
- package/node_modules/protobufjs/src/parse.js +3 -0
- package/package.json +7 -6
- package/slingshot/index.js +293 -295
- package/node_modules/@aws-crypto/crc32/CHANGELOG.md +0 -100
- package/node_modules/@aws-crypto/crc32/LICENSE +0 -201
- package/node_modules/@aws-crypto/crc32/README.md +0 -16
- package/node_modules/@aws-crypto/crc32/build/main/aws_crc32.d.ts +0 -7
- package/node_modules/@aws-crypto/crc32/build/main/aws_crc32.js +0 -31
- package/node_modules/@aws-crypto/crc32/build/main/aws_crc32.js.map +0 -1
- package/node_modules/@aws-crypto/crc32/build/main/index.d.ts +0 -7
- package/node_modules/@aws-crypto/crc32/build/main/index.js +0 -108
- package/node_modules/@aws-crypto/crc32/build/main/index.js.map +0 -1
- package/node_modules/@aws-crypto/crc32/build/module/aws_crc32.d.ts +0 -7
- package/node_modules/@aws-crypto/crc32/build/module/aws_crc32.js +0 -28
- package/node_modules/@aws-crypto/crc32/build/module/aws_crc32.js.map +0 -1
- package/node_modules/@aws-crypto/crc32/build/module/index.d.ts +0 -7
- package/node_modules/@aws-crypto/crc32/build/module/index.js +0 -103
- package/node_modules/@aws-crypto/crc32/build/module/index.js.map +0 -1
- package/node_modules/@aws-crypto/crc32/package.json +0 -32
- package/node_modules/@aws-crypto/crc32/src/aws_crc32.ts +0 -24
- package/node_modules/@aws-crypto/crc32/src/index.ts +0 -92
- package/node_modules/@aws-crypto/crc32/tsconfig.json +0 -9
- package/node_modules/@aws-crypto/crc32/tsconfig.module.json +0 -7
- package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.browser.js +0 -869
- package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.native.js +0 -862
- package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/checkUrl.js +0 -42
- package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.browser.js +0 -27
- package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js +0 -71
- package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/requestHelpers.js +0 -49
- package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/retry-wrapper.js +0 -13
- package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.browser.js +0 -2
- package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +0 -8
- package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +0 -41
- package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +0 -5
- package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +0 -7
- package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js +0 -29
- package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js +0 -25
- package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +0 -8
- package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +0 -41
- package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +0 -5
- package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +0 -7
- package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.browser.js +0 -57
- package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js +0 -234
- package/node_modules/@earendil-works/pi-ai/dist/api-registry.js +0 -44
- package/node_modules/@smithy/core/dist-es/submodules/checksum/md5-js/constants.js +0 -3
- package/node_modules/@smithy/core/dist-es/submodules/checksum/md5-js/md5.js +0 -168
- package/node_modules/@smithy/core/dist-types/submodules/checksum/md5-js/constants.d.ts +0 -12
- package/node_modules/@smithy/core/dist-types/submodules/checksum/md5-js/md5.d.ts +0 -16
- package/node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js +0 -53
- package/node_modules/@smithy/fetch-http-handler/dist-types/stream-collector.d.ts +0 -2
- /package/node_modules/@smithy/{core/dist-es/submodules/endpoints/middleware-endpoint/types.js → types/dist-es/endpoints/EndpointParameterInstructions.js} +0 -0
- /package/node_modules/@smithy/{core/dist-types/submodules/endpoints/middleware-endpoint/types.d.ts → types/dist-types/endpoints/EndpointParameterInstructions.d.ts} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AzureOpenAI } from "openai";
|
|
2
2
|
import { clampThinkingLevel } from "../models.js";
|
|
3
|
+
import { formatProviderError, normalizeProviderError } from "../utils/error-body.js";
|
|
3
4
|
import { AssistantMessageEventStream } from "../utils/event-stream.js";
|
|
4
5
|
import { headersToRecord } from "../utils/headers.js";
|
|
5
6
|
import { getProviderEnvValue } from "../utils/provider-env.js";
|
|
@@ -31,20 +32,7 @@ function resolveDeploymentName(model, options) {
|
|
|
31
32
|
return mappedDeployment || model.id;
|
|
32
33
|
}
|
|
33
34
|
function formatAzureOpenAIError(error) {
|
|
34
|
-
|
|
35
|
-
const status = error.status;
|
|
36
|
-
const statusCode = typeof status === "number" ? status : undefined;
|
|
37
|
-
if (statusCode !== undefined) {
|
|
38
|
-
return `Azure OpenAI API error (${statusCode}): ${error.message}`;
|
|
39
|
-
}
|
|
40
|
-
return error.message;
|
|
41
|
-
}
|
|
42
|
-
try {
|
|
43
|
-
return JSON.stringify(error);
|
|
44
|
-
}
|
|
45
|
-
catch {
|
|
46
|
-
return String(error);
|
|
47
|
-
}
|
|
35
|
+
return formatProviderError(normalizeProviderError(error), "Azure OpenAI API error");
|
|
48
36
|
}
|
|
49
37
|
/**
|
|
50
38
|
* Generate function for Azure OpenAI Responses API
|
|
@@ -120,7 +108,7 @@ export const streamSimple = (model, context, options) => {
|
|
|
120
108
|
if (!apiKey) {
|
|
121
109
|
throw new Error(`No API key for provider: ${model.provider}`);
|
|
122
110
|
}
|
|
123
|
-
const base = buildBaseOptions(model, options, apiKey);
|
|
111
|
+
const base = buildBaseOptions(model, context, options, apiKey);
|
|
124
112
|
const clampedReasoning = options?.reasoning ? clampThinkingLevel(model, options.reasoning) : undefined;
|
|
125
113
|
const reasoningEffort = clampedReasoning === "off" ? undefined : clampedReasoning;
|
|
126
114
|
return stream(model, context, {
|
|
@@ -137,11 +125,17 @@ function normalizeAzureBaseUrl(baseUrl) {
|
|
|
137
125
|
catch {
|
|
138
126
|
throw new Error(`Invalid Azure OpenAI base URL: ${baseUrl}`);
|
|
139
127
|
}
|
|
140
|
-
const isAzureHost = url.hostname.endsWith(".openai.azure.com") ||
|
|
128
|
+
const isAzureHost = url.hostname.endsWith(".openai.azure.com") ||
|
|
129
|
+
url.hostname.endsWith(".cognitiveservices.azure.com") ||
|
|
130
|
+
url.hostname.endsWith(".ai.azure.com");
|
|
141
131
|
const normalizedPath = url.pathname.replace(/\/+$/, "");
|
|
142
132
|
// Ensure Azure hosts have /openai/v1 as base path so the AzureOpenAI SDK
|
|
143
133
|
// can append /deployments/<model>/... and ?api-version=v1 correctly.
|
|
144
|
-
if (isAzureHost &&
|
|
134
|
+
if (isAzureHost &&
|
|
135
|
+
(normalizedPath === "" ||
|
|
136
|
+
normalizedPath === "/" ||
|
|
137
|
+
normalizedPath === "/openai" ||
|
|
138
|
+
normalizedPath === "/openai/v1/responses")) {
|
|
145
139
|
url.pathname = "/openai/v1";
|
|
146
140
|
url.search = "";
|
|
147
141
|
}
|
|
@@ -3,12 +3,14 @@ import { NodeHttpHandler } from "@smithy/node-http-handler";
|
|
|
3
3
|
import { HttpProxyAgent } from "http-proxy-agent";
|
|
4
4
|
import { HttpsProxyAgent } from "https-proxy-agent";
|
|
5
5
|
import { calculateCost } from "../models.js";
|
|
6
|
+
import { normalizeProviderError } from "../utils/error-body.js";
|
|
6
7
|
import { AssistantMessageEventStream } from "../utils/event-stream.js";
|
|
8
|
+
import { providerHeadersToRecord } from "../utils/headers.js";
|
|
7
9
|
import { parseStreamingJson } from "../utils/json-parse.js";
|
|
8
10
|
import { resolveHttpProxyUrlForTarget } from "../utils/node-http-proxy.js";
|
|
9
11
|
import { getProviderEnvValue } from "../utils/provider-env.js";
|
|
10
12
|
import { sanitizeSurrogates } from "../utils/sanitize-unicode.js";
|
|
11
|
-
import { adjustMaxTokensForThinking, buildBaseOptions, clampReasoning } from "./simple-options.js";
|
|
13
|
+
import { adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToContext, clampReasoning, } from "./simple-options.js";
|
|
12
14
|
import { transformMessages } from "./transform-messages.js";
|
|
13
15
|
const EMPTY_TEXT_PLACEHOLDER = "<empty>";
|
|
14
16
|
export const stream = (model, context, options = {}) => {
|
|
@@ -105,8 +107,9 @@ export const stream = (model, context, options = {}) => {
|
|
|
105
107
|
}
|
|
106
108
|
try {
|
|
107
109
|
const client = new BedrockRuntimeClient(config);
|
|
108
|
-
|
|
109
|
-
|
|
110
|
+
const customHeaders = providerHeadersToRecord(options.headers);
|
|
111
|
+
if (customHeaders) {
|
|
112
|
+
addCustomHeadersMiddleware(client, customHeaders);
|
|
110
113
|
}
|
|
111
114
|
const cacheRetention = resolveCacheRetention(options.cacheRetention, options.env);
|
|
112
115
|
const inferenceMaxTokens = options.maxTokens ?? (isAnthropicClaudeModel(model) ? model.maxTokens : undefined);
|
|
@@ -223,15 +226,21 @@ const BEDROCK_DATA_RETENTION_DOCS_URL = "https://docs.aws.amazon.com/bedrock/lat
|
|
|
223
226
|
* detection) can distinguish error categories via simple string matching.
|
|
224
227
|
*/
|
|
225
228
|
function formatBedrockError(error) {
|
|
226
|
-
const
|
|
227
|
-
|
|
229
|
+
const norm = normalizeProviderError(error);
|
|
230
|
+
// Surface the raw HTTP body (with status) when the SDK did not fold it into
|
|
231
|
+
// the message; otherwise fall back to the message. This is what stops a
|
|
232
|
+
// gateway 403 from collapsing to `Unknown: UnknownError`.
|
|
233
|
+
const core = !norm.messageCarriesBody && norm.status !== undefined && norm.body !== undefined
|
|
234
|
+
? `${norm.status}: ${norm.body}`
|
|
235
|
+
: norm.message;
|
|
236
|
+
const dataRetentionHint = /data retention mode/i.test(core)
|
|
228
237
|
? ` See ${BEDROCK_DATA_RETENTION_DOCS_URL} for supported data retention modes.`
|
|
229
238
|
: "";
|
|
230
239
|
if (error instanceof BedrockRuntimeServiceException) {
|
|
231
240
|
const prefix = BEDROCK_ERROR_PREFIXES[error.name] ?? error.name;
|
|
232
|
-
return `${prefix}: ${
|
|
241
|
+
return `${prefix}: ${core}${dataRetentionHint}`;
|
|
233
242
|
}
|
|
234
|
-
return `${
|
|
243
|
+
return `${core}${dataRetentionHint}`;
|
|
235
244
|
}
|
|
236
245
|
/**
|
|
237
246
|
* Header keys that must never be overwritten by caller-supplied headers.
|
|
@@ -267,7 +276,7 @@ function addCustomHeadersMiddleware(client, headers) {
|
|
|
267
276
|
client.middlewareStack.add(middleware, { step: "build", name: "pi-ai-custom-headers", priority: "low" });
|
|
268
277
|
}
|
|
269
278
|
export const streamSimple = (model, context, options) => {
|
|
270
|
-
const base = buildBaseOptions(model, options, undefined);
|
|
279
|
+
const base = buildBaseOptions(model, context, options, undefined);
|
|
271
280
|
if (!options?.reasoning) {
|
|
272
281
|
return stream(model, context, { ...base, reasoning: undefined });
|
|
273
282
|
}
|
|
@@ -282,13 +291,14 @@ export const streamSimple = (model, context, options) => {
|
|
|
282
291
|
// Undefined means the caller did not request an output cap; let the helper use the model cap.
|
|
283
292
|
// Do not coerce to 0 here, or the thinking budget would become the entire maxTokens value.
|
|
284
293
|
const adjusted = adjustMaxTokensForThinking(base.maxTokens, model.maxTokens, options.reasoning, options.thinkingBudgets);
|
|
294
|
+
const maxTokens = clampMaxTokensToContext(model, context, adjusted.maxTokens);
|
|
285
295
|
return stream(model, context, {
|
|
286
296
|
...base,
|
|
287
|
-
maxTokens
|
|
297
|
+
maxTokens,
|
|
288
298
|
reasoning: options.reasoning,
|
|
289
299
|
thinkingBudgets: {
|
|
290
300
|
...(options.thinkingBudgets || {}),
|
|
291
|
-
[clampReasoning(options.reasoning)]: adjusted.thinkingBudget,
|
|
301
|
+
[clampReasoning(options.reasoning)]: Math.min(adjusted.thinkingBudget, Math.max(0, maxTokens - 1024)),
|
|
292
302
|
},
|
|
293
303
|
});
|
|
294
304
|
}
|
|
@@ -415,6 +425,7 @@ function supportsAdaptiveThinking(modelId, modelName) {
|
|
|
415
425
|
s.includes("opus-4-7") ||
|
|
416
426
|
s.includes("opus-4-8") ||
|
|
417
427
|
s.includes("sonnet-4-6") ||
|
|
428
|
+
s.includes("sonnet-5") ||
|
|
418
429
|
s.includes("fable-5"));
|
|
419
430
|
}
|
|
420
431
|
function supportsNativeXhighEffort(model) {
|
|
@@ -468,7 +479,7 @@ function isAnthropicClaudeModel(model) {
|
|
|
468
479
|
}
|
|
469
480
|
/**
|
|
470
481
|
* Check if the model supports prompt caching.
|
|
471
|
-
* Supported: Claude 3.5 Haiku, Claude 3.7 Sonnet, Claude 4.x models
|
|
482
|
+
* Supported: Claude 3.5 Haiku, Claude 3.7 Sonnet, Claude 4.x models, Claude 5 models
|
|
472
483
|
*
|
|
473
484
|
* For base models and system-defined inference profiles the model ID / ARN
|
|
474
485
|
* contains the model name, so we can decide locally.
|
|
@@ -488,6 +499,9 @@ function supportsPromptCaching(model, env) {
|
|
|
488
499
|
return true;
|
|
489
500
|
return false;
|
|
490
501
|
}
|
|
502
|
+
// Claude 5 models (fable-5, sonnet-5)
|
|
503
|
+
if (candidates.some((s) => s.includes("fable-5") || s.includes("sonnet-5")))
|
|
504
|
+
return true;
|
|
491
505
|
// Claude 4.x models (opus-4, sonnet-4, haiku-4)
|
|
492
506
|
if (candidates.some((s) => s.includes("-4-")))
|
|
493
507
|
return true;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { getProviderEnvValue } from "../utils/provider-env.js";
|
|
2
1
|
/** Workers AI direct endpoint. */
|
|
3
2
|
export const CLOUDFLARE_WORKERS_AI_BASE_URL = "https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1";
|
|
4
3
|
/** AI Gateway Unified API. https://developers.cloudflare.com/ai-gateway/usage/unified-api/ */
|
|
@@ -7,21 +6,4 @@ export const CLOUDFLARE_AI_GATEWAY_COMPAT_BASE_URL = "https://gateway.ai.cloudfl
|
|
|
7
6
|
export const CLOUDFLARE_AI_GATEWAY_OPENAI_BASE_URL = "https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai";
|
|
8
7
|
/** AI Gateway → Anthropic passthrough. */
|
|
9
8
|
export const CLOUDFLARE_AI_GATEWAY_ANTHROPIC_BASE_URL = "https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic";
|
|
10
|
-
export function isCloudflareProvider(provider) {
|
|
11
|
-
return provider === "cloudflare-workers-ai" || provider === "cloudflare-ai-gateway";
|
|
12
|
-
}
|
|
13
|
-
/** Substitute `{VAR}` placeholders in a Cloudflare baseUrl from provider env or process.env. */
|
|
14
|
-
export function resolveCloudflareBaseUrl(model, env) {
|
|
15
|
-
const url = model.baseUrl;
|
|
16
|
-
if (!url.includes("{"))
|
|
17
|
-
return url;
|
|
18
|
-
const baseUrl = url.replace(/\{([A-Z_][A-Z0-9_]*)\}/g, (_match, name) => {
|
|
19
|
-
const value = getProviderEnvValue(name, env);
|
|
20
|
-
if (!value) {
|
|
21
|
-
throw new Error(`${name} is required for provider ${model.provider} but is not set.`);
|
|
22
|
-
}
|
|
23
|
-
return value;
|
|
24
|
-
});
|
|
25
|
-
return baseUrl;
|
|
26
|
-
}
|
|
27
9
|
//# sourceMappingURL=cloudflare.js.map
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { GoogleGenAI, } from "@google/genai";
|
|
2
2
|
import { calculateCost, clampThinkingLevel } from "../models.js";
|
|
3
|
+
import { formatProviderError, normalizeProviderError } from "../utils/error-body.js";
|
|
3
4
|
import { AssistantMessageEventStream } from "../utils/event-stream.js";
|
|
5
|
+
import { providerHeadersToRecord } from "../utils/headers.js";
|
|
4
6
|
import { sanitizeSurrogates } from "../utils/sanitize-unicode.js";
|
|
5
7
|
import { convertMessages, convertTools, isThinkingPart, mapStopReason, mapToolChoice, retainThoughtSignature, } from "./google-shared.js";
|
|
6
8
|
import { buildBaseOptions } from "./simple-options.js";
|
|
@@ -161,6 +163,7 @@ export const stream = (model, context, options) => {
|
|
|
161
163
|
output: (chunk.usageMetadata.candidatesTokenCount || 0) + (chunk.usageMetadata.thoughtsTokenCount || 0),
|
|
162
164
|
cacheRead: chunk.usageMetadata.cachedContentTokenCount || 0,
|
|
163
165
|
cacheWrite: 0,
|
|
166
|
+
reasoning: chunk.usageMetadata.thoughtsTokenCount || 0,
|
|
164
167
|
totalTokens: chunk.usageMetadata.totalTokenCount || 0,
|
|
165
168
|
cost: {
|
|
166
169
|
input: 0,
|
|
@@ -208,7 +211,7 @@ export const stream = (model, context, options) => {
|
|
|
208
211
|
}
|
|
209
212
|
}
|
|
210
213
|
output.stopReason = options?.signal?.aborted ? "aborted" : "error";
|
|
211
|
-
output.errorMessage =
|
|
214
|
+
output.errorMessage = formatProviderError(normalizeProviderError(error));
|
|
212
215
|
stream.push({ type: "error", reason: output.stopReason, error: output });
|
|
213
216
|
stream.end();
|
|
214
217
|
}
|
|
@@ -220,7 +223,7 @@ export const streamSimple = (model, context, options) => {
|
|
|
220
223
|
if (!apiKey) {
|
|
221
224
|
throw new Error(`No API key for provider: ${model.provider}`);
|
|
222
225
|
}
|
|
223
|
-
const base = buildBaseOptions(model, options, apiKey);
|
|
226
|
+
const base = buildBaseOptions(model, context, options, apiKey);
|
|
224
227
|
if (!options?.reasoning) {
|
|
225
228
|
return stream(model, context, { ...base, thinking: { enabled: false } });
|
|
226
229
|
}
|
|
@@ -250,8 +253,9 @@ function createClient(model, apiKey, optionsHeaders) {
|
|
|
250
253
|
httpOptions.baseUrl = model.baseUrl;
|
|
251
254
|
httpOptions.apiVersion = ""; // baseUrl already includes version path, don't append
|
|
252
255
|
}
|
|
253
|
-
|
|
254
|
-
|
|
256
|
+
const headers = providerHeadersToRecord({ ...model.headers, ...optionsHeaders });
|
|
257
|
+
if (headers) {
|
|
258
|
+
httpOptions.headers = headers;
|
|
255
259
|
}
|
|
256
260
|
return new GoogleGenAI({
|
|
257
261
|
apiKey,
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { GoogleGenAI, ResourceScope, ThinkingLevel, } from "@google/genai";
|
|
2
2
|
import { calculateCost, clampThinkingLevel } from "../models.js";
|
|
3
|
+
import { formatProviderError, normalizeProviderError } from "../utils/error-body.js";
|
|
3
4
|
import { AssistantMessageEventStream } from "../utils/event-stream.js";
|
|
5
|
+
import { providerHeadersToRecord } from "../utils/headers.js";
|
|
4
6
|
import { getProviderEnvValue } from "../utils/provider-env.js";
|
|
5
7
|
import { sanitizeSurrogates } from "../utils/sanitize-unicode.js";
|
|
6
8
|
import { convertMessages, convertTools, isThinkingPart, mapStopReason, mapToolChoice, retainThoughtSignature, } from "./google-shared.js";
|
|
@@ -170,6 +172,7 @@ export const stream = (model, context, options) => {
|
|
|
170
172
|
output: (chunk.usageMetadata.candidatesTokenCount || 0) + (chunk.usageMetadata.thoughtsTokenCount || 0),
|
|
171
173
|
cacheRead: chunk.usageMetadata.cachedContentTokenCount || 0,
|
|
172
174
|
cacheWrite: 0,
|
|
175
|
+
reasoning: chunk.usageMetadata.thoughtsTokenCount || 0,
|
|
173
176
|
totalTokens: chunk.usageMetadata.totalTokenCount || 0,
|
|
174
177
|
cost: {
|
|
175
178
|
input: 0,
|
|
@@ -217,7 +220,7 @@ export const stream = (model, context, options) => {
|
|
|
217
220
|
}
|
|
218
221
|
}
|
|
219
222
|
output.stopReason = options?.signal?.aborted ? "aborted" : "error";
|
|
220
|
-
output.errorMessage =
|
|
223
|
+
output.errorMessage = formatProviderError(normalizeProviderError(error));
|
|
221
224
|
stream.push({ type: "error", reason: output.stopReason, error: output });
|
|
222
225
|
stream.end();
|
|
223
226
|
}
|
|
@@ -225,7 +228,7 @@ export const stream = (model, context, options) => {
|
|
|
225
228
|
return stream;
|
|
226
229
|
};
|
|
227
230
|
export const streamSimple = (model, context, options) => {
|
|
228
|
-
const base = buildBaseOptions(model, options, undefined);
|
|
231
|
+
const base = buildBaseOptions(model, context, options, undefined);
|
|
229
232
|
if (!options?.reasoning) {
|
|
230
233
|
return stream(model, context, {
|
|
231
234
|
...base,
|
|
@@ -281,8 +284,9 @@ function buildHttpOptions(model, optionsHeaders) {
|
|
|
281
284
|
httpOptions.apiVersion = "";
|
|
282
285
|
}
|
|
283
286
|
}
|
|
284
|
-
|
|
285
|
-
|
|
287
|
+
const headers = providerHeadersToRecord({ ...model.headers, ...optionsHeaders });
|
|
288
|
+
if (headers) {
|
|
289
|
+
httpOptions.headers = headers;
|
|
286
290
|
}
|
|
287
291
|
return Object.keys(httpOptions).length > 0 ? httpOptions : undefined;
|
|
288
292
|
}
|
|
@@ -65,7 +65,7 @@ export const streamSimple = (model, context, options) => {
|
|
|
65
65
|
if (!apiKey) {
|
|
66
66
|
throw new Error(`No API key for provider: ${model.provider}`);
|
|
67
67
|
}
|
|
68
|
-
const base = buildBaseOptions(model, options, apiKey);
|
|
68
|
+
const base = buildBaseOptions(model, context, options, apiKey);
|
|
69
69
|
const clampedReasoning = options?.reasoning ? clampThinkingLevel(model, options.reasoning) : undefined;
|
|
70
70
|
const reasoning = clampedReasoning === "off" ? undefined : clampedReasoning;
|
|
71
71
|
const shouldUseReasoning = model.reasoning && reasoning !== undefined;
|
|
@@ -1,24 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
if (typeof
|
|
3
|
-
return
|
|
4
|
-
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
-
});
|
|
1
|
+
function loadNodeOs() {
|
|
2
|
+
if (typeof process === "undefined" || !(process.versions?.node || process.versions?.bun)) {
|
|
3
|
+
return null;
|
|
6
4
|
}
|
|
7
|
-
return
|
|
8
|
-
};
|
|
9
|
-
// NEVER convert to top-level runtime imports - breaks browser/Vite builds
|
|
10
|
-
let _os = null;
|
|
11
|
-
const dynamicImport = (specifier) => import(__rewriteRelativeImportExtension(specifier));
|
|
12
|
-
const NODE_OS_SPECIFIER = "node:" + "os";
|
|
13
|
-
if (typeof process !== "undefined" && (process.versions?.node || process.versions?.bun)) {
|
|
14
|
-
dynamicImport(NODE_OS_SPECIFIER).then((m) => {
|
|
15
|
-
_os = m;
|
|
16
|
-
});
|
|
5
|
+
return process.getBuiltinModule?.("node:os") ?? null;
|
|
17
6
|
}
|
|
7
|
+
// NEVER convert to top-level runtime imports - breaks browser/Vite builds
|
|
8
|
+
const _os = loadNodeOs();
|
|
18
9
|
import { clampThinkingLevel } from "../models.js";
|
|
19
10
|
import { registerSessionResourceCleanup } from "../session-resources.js";
|
|
20
11
|
import { combineAbortSignals } from "../utils/abort-signals.js";
|
|
21
12
|
import { appendAssistantMessageDiagnostic, createAssistantMessageDiagnostic, formatThrownValue, } from "../utils/diagnostics.js";
|
|
13
|
+
import { formatProviderError, normalizeProviderError } from "../utils/error-body.js";
|
|
22
14
|
import { AssistantMessageEventStream } from "../utils/event-stream.js";
|
|
23
15
|
import { headersToRecord } from "../utils/headers.js";
|
|
24
16
|
import { resolveHttpProxyUrlForTarget } from "../utils/node-http-proxy.js";
|
|
@@ -33,10 +25,10 @@ const JWT_CLAIM_PATH = "https://api.openai.com/auth";
|
|
|
33
25
|
const DEFAULT_MAX_RETRIES = 0;
|
|
34
26
|
const BASE_DELAY_MS = 1000;
|
|
35
27
|
const DEFAULT_MAX_RETRY_DELAY_MS = 60_000;
|
|
36
|
-
// Keep a bounded pre-header timeout so zero-event Codex SSE stalls fail instead of
|
|
37
|
-
// leaving callers stuck on "Working..." indefinitely. See #4945.
|
|
38
|
-
const DEFAULT_SSE_HEADER_TIMEOUT_MS = 20_000;
|
|
39
28
|
const DEFAULT_WEBSOCKET_CONNECT_TIMEOUT_MS = 15_000;
|
|
29
|
+
// The Codex backend accepts zstd-compressed request bodies on the SSE responses
|
|
30
|
+
// endpoint (the same endpoint the official Codex client compresses against).
|
|
31
|
+
const REQUEST_COMPRESSION_ZSTD_LEVEL = 3;
|
|
40
32
|
const CODEX_TOOL_CALL_PROVIDERS = new Set(["openai", "openai-codex", "opencode"]);
|
|
41
33
|
const WEBSOCKET_MESSAGE_TOO_BIG_CLOSE_CODE = 1009;
|
|
42
34
|
const WEBSOCKET_CONNECTION_LIMIT_REACHED_CODE = "websocket_connection_limit_reached";
|
|
@@ -110,18 +102,29 @@ function normalizeTimeoutMs(value) {
|
|
|
110
102
|
}
|
|
111
103
|
return Math.floor(value);
|
|
112
104
|
}
|
|
113
|
-
function
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
105
|
+
function loadNodeZlib() {
|
|
106
|
+
if (typeof process === "undefined" || !(process.versions?.node || process.versions?.bun)) {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
return process.getBuiltinModule?.("node:zlib") ?? null;
|
|
110
|
+
}
|
|
111
|
+
// Returns the zstd-compressed body bytes, or null when compression is
|
|
112
|
+
// unavailable (browser/Vite builds). Callers fall back to sending the
|
|
113
|
+
// uncompressed JSON when this returns null.
|
|
114
|
+
function compressRequestBodyZstd(bodyJson) {
|
|
115
|
+
const zlib = loadNodeZlib();
|
|
116
|
+
if (!zlib || typeof zlib.zstdCompressSync !== "function") {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const compressed = zlib.zstdCompressSync(bodyJson, {
|
|
121
|
+
params: { [zlib.constants.ZSTD_c_compressionLevel]: REQUEST_COMPRESSION_ZSTD_LEVEL },
|
|
122
|
+
});
|
|
123
|
+
return new Uint8Array(compressed.buffer, compressed.byteOffset, compressed.byteLength);
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
125
128
|
}
|
|
126
129
|
// ============================================================================
|
|
127
130
|
// Main Stream Function
|
|
@@ -161,7 +164,7 @@ export const stream = (model, context, options) => {
|
|
|
161
164
|
const sseHeaders = buildSSEHeaders(model.headers, options?.headers, accountId, apiKey, options?.sessionId);
|
|
162
165
|
const websocketHeaders = buildWebSocketHeaders(model.headers, options?.headers, accountId, apiKey, websocketRequestId);
|
|
163
166
|
const bodyJson = JSON.stringify(body);
|
|
164
|
-
const
|
|
167
|
+
const httpTimeoutMs = normalizeTimeoutMs(options?.timeoutMs);
|
|
165
168
|
const websocketConnectTimeoutMs = normalizeTimeoutMs(options?.websocketConnectTimeoutMs);
|
|
166
169
|
const transport = options?.transport || "auto";
|
|
167
170
|
const websocketDisabledForSession = transport !== "sse" && isWebSocketSseFallbackActive(options?.sessionId);
|
|
@@ -176,7 +179,7 @@ export const stream = (model, context, options) => {
|
|
|
176
179
|
try {
|
|
177
180
|
await processWebSocketStream(resolveCodexWebSocketUrl(model.baseUrl), body, websocketHeaders, output, stream, model, () => {
|
|
178
181
|
websocketStarted = true;
|
|
179
|
-
},
|
|
182
|
+
}, httpTimeoutMs, websocketConnectTimeoutMs, options);
|
|
180
183
|
if (options?.signal?.aborted) {
|
|
181
184
|
throw new Error("Request was aborted");
|
|
182
185
|
}
|
|
@@ -214,6 +217,14 @@ export const stream = (model, context, options) => {
|
|
|
214
217
|
}
|
|
215
218
|
}
|
|
216
219
|
}
|
|
220
|
+
// Compress the request body once for the SSE path. The Codex backend
|
|
221
|
+
// decodes Content-Encoding: zstd; the WebSocket transport above sends the
|
|
222
|
+
// uncompressed JSON frame, matching the official Codex client.
|
|
223
|
+
const compressedBody = compressRequestBodyZstd(bodyJson);
|
|
224
|
+
if (compressedBody) {
|
|
225
|
+
sseHeaders.set("content-encoding", "zstd");
|
|
226
|
+
}
|
|
227
|
+
const sseBody = compressedBody ?? bodyJson;
|
|
217
228
|
// Fetch with retry logic for rate limits and transient errors
|
|
218
229
|
let response;
|
|
219
230
|
let lastError;
|
|
@@ -223,23 +234,24 @@ export const stream = (model, context, options) => {
|
|
|
223
234
|
throw new Error("Request was aborted");
|
|
224
235
|
}
|
|
225
236
|
try {
|
|
226
|
-
const
|
|
227
|
-
const combinedSignal = combineAbortSignals([options?.signal,
|
|
237
|
+
const headerTimeoutSignal = httpTimeoutMs !== undefined && httpTimeoutMs > 0 ? AbortSignal.timeout(httpTimeoutMs) : undefined;
|
|
238
|
+
const combinedSignal = combineAbortSignals([options?.signal, headerTimeoutSignal]);
|
|
228
239
|
try {
|
|
229
240
|
response = await fetch(resolveCodexUrl(model.baseUrl), {
|
|
230
241
|
method: "POST",
|
|
231
242
|
headers: sseHeaders,
|
|
232
|
-
body:
|
|
243
|
+
body: sseBody,
|
|
233
244
|
signal: combinedSignal.signal,
|
|
234
245
|
});
|
|
235
246
|
}
|
|
236
247
|
catch (error) {
|
|
237
|
-
|
|
238
|
-
|
|
248
|
+
if (headerTimeoutSignal?.aborted && !options?.signal?.aborted) {
|
|
249
|
+
throw new Error(`Codex SSE response headers timed out after ${httpTimeoutMs}ms`);
|
|
250
|
+
}
|
|
251
|
+
throw error;
|
|
239
252
|
}
|
|
240
253
|
finally {
|
|
241
254
|
combinedSignal.cleanup();
|
|
242
|
-
headerTimeout.clear();
|
|
243
255
|
}
|
|
244
256
|
await options?.onResponse?.({ status: response.status, headers: headersToRecord(response.headers) }, model);
|
|
245
257
|
if (response.ok) {
|
|
@@ -300,7 +312,7 @@ export const stream = (model, context, options) => {
|
|
|
300
312
|
delete block.partialJson;
|
|
301
313
|
}
|
|
302
314
|
output.stopReason = options?.signal?.aborted ? "aborted" : "error";
|
|
303
|
-
output.errorMessage =
|
|
315
|
+
output.errorMessage = formatProviderError(normalizeProviderError(error));
|
|
304
316
|
stream.push({ type: "error", reason: output.stopReason, error: output });
|
|
305
317
|
stream.end();
|
|
306
318
|
}
|
|
@@ -312,7 +324,7 @@ export const streamSimple = (model, context, options) => {
|
|
|
312
324
|
if (!apiKey) {
|
|
313
325
|
throw new Error(`No API key for provider: ${model.provider}`);
|
|
314
326
|
}
|
|
315
|
-
const base = buildBaseOptions(model, options, apiKey);
|
|
327
|
+
const base = buildBaseOptions(model, context, options, apiKey);
|
|
316
328
|
const clampedReasoning = options?.reasoning ? clampThinkingLevel(model, options.reasoning) : undefined;
|
|
317
329
|
const reasoningEffort = clampedReasoning === "off" ? undefined : clampedReasoning;
|
|
318
330
|
return stream(model, context, {
|
|
@@ -553,6 +565,7 @@ async function* parseSSE(response, signal) {
|
|
|
553
565
|
// ============================================================================
|
|
554
566
|
const OPENAI_BETA_RESPONSES_WEBSOCKETS = "responses_websockets=2026-02-06";
|
|
555
567
|
const SESSION_WEBSOCKET_CACHE_TTL_MS = 5 * 60 * 1000;
|
|
568
|
+
const SESSION_WEBSOCKET_MAX_AGE_MS = 55 * 60 * 1000;
|
|
556
569
|
const websocketSessionCache = new Map();
|
|
557
570
|
const websocketDebugStats = new Map();
|
|
558
571
|
const websocketSseFallbackSessions = new Set();
|
|
@@ -677,6 +690,9 @@ function isWebSocketReusable(socket) {
|
|
|
677
690
|
// If readyState is unavailable, assume the runtime keeps it open/reusable.
|
|
678
691
|
return readyState === undefined || readyState === 1;
|
|
679
692
|
}
|
|
693
|
+
function isWebSocketSessionExpired(entry) {
|
|
694
|
+
return Date.now() - entry.createdAt >= SESSION_WEBSOCKET_MAX_AGE_MS;
|
|
695
|
+
}
|
|
680
696
|
function closeWebSocketSilently(socket, code = 1000, reason = "done") {
|
|
681
697
|
try {
|
|
682
698
|
socket.close(code, reason);
|
|
@@ -777,7 +793,11 @@ async function acquireWebSocket(url, headers, sessionId, signal, connectTimeoutM
|
|
|
777
793
|
clearTimeout(cached.idleTimer);
|
|
778
794
|
cached.idleTimer = undefined;
|
|
779
795
|
}
|
|
780
|
-
if (!cached.busy &&
|
|
796
|
+
if (!cached.busy && isWebSocketSessionExpired(cached)) {
|
|
797
|
+
closeWebSocketSilently(cached.socket, 1000, "connection_age_limit");
|
|
798
|
+
websocketSessionCache.delete(sessionId);
|
|
799
|
+
}
|
|
800
|
+
else if (!cached.busy && isWebSocketReusable(cached.socket)) {
|
|
781
801
|
cached.busy = true;
|
|
782
802
|
return {
|
|
783
803
|
socket: cached.socket,
|
|
@@ -810,7 +830,7 @@ async function acquireWebSocket(url, headers, sessionId, signal, connectTimeoutM
|
|
|
810
830
|
}
|
|
811
831
|
}
|
|
812
832
|
const socket = await connectWebSocket(url, headers, signal, connectTimeoutMs, env);
|
|
813
|
-
const entry = { socket, busy: true };
|
|
833
|
+
const entry = { socket, busy: true, createdAt: Date.now() };
|
|
814
834
|
websocketSessionCache.set(sessionId, entry);
|
|
815
835
|
return {
|
|
816
836
|
socket,
|
|
@@ -1164,7 +1184,12 @@ function createCodexRequestId() {
|
|
|
1164
1184
|
function buildBaseCodexHeaders(initHeaders, additionalHeaders, accountId, token) {
|
|
1165
1185
|
const headers = new Headers(initHeaders);
|
|
1166
1186
|
for (const [key, value] of Object.entries(additionalHeaders || {})) {
|
|
1167
|
-
|
|
1187
|
+
if (value === null) {
|
|
1188
|
+
headers.delete(key);
|
|
1189
|
+
}
|
|
1190
|
+
else {
|
|
1191
|
+
headers.set(key, value);
|
|
1192
|
+
}
|
|
1168
1193
|
}
|
|
1169
1194
|
headers.set("Authorization", `Bearer ${token}`);
|
|
1170
1195
|
headers.set("chatgpt-account-id", accountId);
|