@fractaal/pi-ai 0.85.3 → 0.86.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 +322 -46
- package/dist/api/anthropic-messages.d.ts.map +1 -1
- package/dist/api/anthropic-messages.js +403 -140
- package/dist/api/anthropic-messages.js.map +1 -1
- package/dist/api/anthropic-messages.lazy.d.ts.map +1 -1
- package/dist/api/azure-openai-config.d.ts +15 -0
- package/dist/api/azure-openai-config.d.ts.map +1 -0
- package/dist/api/azure-openai-config.js +76 -0
- package/dist/api/azure-openai-config.js.map +1 -0
- package/dist/api/azure-openai-responses.d.ts +5 -6
- package/dist/api/azure-openai-responses.d.ts.map +1 -1
- package/dist/api/azure-openai-responses.js +42 -86
- package/dist/api/azure-openai-responses.js.map +1 -1
- package/dist/api/azure-openai-responses.lazy.d.ts.map +1 -1
- package/dist/api/bedrock-converse-stream.d.ts.map +1 -1
- package/dist/api/bedrock-converse-stream.js +233 -24
- package/dist/api/bedrock-converse-stream.js.map +1 -1
- package/dist/api/bedrock-converse-stream.lazy.d.ts.map +1 -1
- package/dist/api/bedrock-converse-stream.lazy.js.map +1 -1
- package/dist/api/cloudflare-ai-binding.d.ts +77 -0
- package/dist/api/cloudflare-ai-binding.d.ts.map +1 -0
- package/dist/api/cloudflare-ai-binding.js +72 -0
- package/dist/api/cloudflare-ai-binding.js.map +1 -0
- package/dist/api/cloudflare-workers-ai-system-one.d.ts +4 -0
- package/dist/api/cloudflare-workers-ai-system-one.d.ts.map +1 -0
- package/dist/api/cloudflare-workers-ai-system-one.js +48 -0
- package/dist/api/cloudflare-workers-ai-system-one.js.map +1 -0
- package/dist/api/cloudflare-workers-ai-system-one.lazy.d.ts +3 -0
- package/dist/api/cloudflare-workers-ai-system-one.lazy.d.ts.map +1 -0
- package/dist/api/cloudflare-workers-ai-system-one.lazy.js +4 -0
- package/dist/api/cloudflare-workers-ai-system-one.lazy.js.map +1 -0
- package/dist/api/cloudflare.d.ts +2 -0
- package/dist/api/cloudflare.d.ts.map +1 -1
- package/dist/api/cloudflare.js +2 -0
- package/dist/api/cloudflare.js.map +1 -1
- package/dist/api/constrained-sampling.d.ts +10 -1
- package/dist/api/constrained-sampling.d.ts.map +1 -1
- package/dist/api/constrained-sampling.js +137 -4
- package/dist/api/constrained-sampling.js.map +1 -1
- package/dist/api/github-copilot-headers.d.ts.map +1 -1
- package/dist/api/github-copilot-headers.js.map +1 -1
- package/dist/api/google-generative-ai.d.ts +2 -2
- package/dist/api/google-generative-ai.d.ts.map +1 -1
- package/dist/api/google-generative-ai.js +39 -82
- package/dist/api/google-generative-ai.js.map +1 -1
- package/dist/api/google-generative-ai.lazy.d.ts.map +1 -1
- package/dist/api/google-shared.d.ts +27 -5
- package/dist/api/google-shared.d.ts.map +1 -1
- package/dist/api/google-shared.js +126 -18
- package/dist/api/google-shared.js.map +1 -1
- package/dist/api/google-vertex.d.ts +2 -2
- package/dist/api/google-vertex.d.ts.map +1 -1
- package/dist/api/google-vertex.js +42 -73
- package/dist/api/google-vertex.js.map +1 -1
- package/dist/api/google-vertex.lazy.d.ts.map +1 -1
- package/dist/api/lazy.d.ts +5 -1
- package/dist/api/lazy.d.ts.map +1 -1
- package/dist/api/lazy.js +19 -7
- package/dist/api/lazy.js.map +1 -1
- package/dist/api/llama-cpp-classify.d.ts +33 -0
- package/dist/api/llama-cpp-classify.d.ts.map +1 -0
- package/dist/api/llama-cpp-classify.js +365 -0
- package/dist/api/llama-cpp-classify.js.map +1 -0
- package/dist/api/llama-cpp-classify.lazy.d.ts +3 -0
- package/dist/api/llama-cpp-classify.lazy.d.ts.map +1 -0
- package/dist/api/llama-cpp-classify.lazy.js +4 -0
- package/dist/api/llama-cpp-classify.lazy.js.map +1 -0
- package/dist/api/mistral-conversations.d.ts +2 -2
- package/dist/api/mistral-conversations.d.ts.map +1 -1
- package/dist/api/mistral-conversations.js +250 -69
- package/dist/api/mistral-conversations.js.map +1 -1
- package/dist/api/mistral-conversations.lazy.d.ts.map +1 -1
- package/dist/api/openai-codex-compaction-history.d.ts +2 -2
- package/dist/api/openai-codex-compaction-history.d.ts.map +1 -1
- package/dist/api/openai-codex-compaction-history.js +1 -2
- package/dist/api/openai-codex-compaction-history.js.map +1 -1
- package/dist/api/openai-codex-responses.d.ts +1 -1
- package/dist/api/openai-codex-responses.d.ts.map +1 -1
- package/dist/api/openai-codex-responses.js +107 -60
- package/dist/api/openai-codex-responses.js.map +1 -1
- package/dist/api/openai-codex-responses.lazy.d.ts.map +1 -1
- package/dist/api/openai-codex-responses.lazy.js.map +1 -1
- package/dist/api/openai-completions.d.ts +11 -4
- package/dist/api/openai-completions.d.ts.map +1 -1
- package/dist/api/openai-completions.js +250 -134
- package/dist/api/openai-completions.js.map +1 -1
- package/dist/api/openai-completions.lazy.d.ts.map +1 -1
- package/dist/api/openai-prompt-cache.d.ts.map +1 -1
- package/dist/api/openai-prompt-cache.js.map +1 -1
- package/dist/api/openai-responses-shared.d.ts +8 -4
- package/dist/api/openai-responses-shared.d.ts.map +1 -1
- package/dist/api/openai-responses-shared.js +114 -62
- package/dist/api/openai-responses-shared.js.map +1 -1
- package/dist/api/openai-responses.d.ts.map +1 -1
- package/dist/api/openai-responses.js +55 -23
- package/dist/api/openai-responses.js.map +1 -1
- package/dist/api/openai-responses.lazy.d.ts.map +1 -1
- package/dist/api/openrouter-images.d.ts +2 -1
- package/dist/api/openrouter-images.d.ts.map +1 -1
- package/dist/api/openrouter-images.js +1 -0
- package/dist/api/openrouter-images.js.map +1 -1
- package/dist/api/openrouter-images.lazy.d.ts.map +1 -1
- package/dist/api/openrouter-images.lazy.js.map +1 -1
- package/dist/api/pi-messages.d.ts +5 -3
- package/dist/api/pi-messages.d.ts.map +1 -1
- package/dist/api/pi-messages.js +10 -3
- package/dist/api/pi-messages.js.map +1 -1
- package/dist/api/pi-messages.lazy.d.ts.map +1 -1
- package/dist/api/simple-options.d.ts +10 -3
- package/dist/api/simple-options.d.ts.map +1 -1
- package/dist/api/simple-options.js +31 -11
- package/dist/api/simple-options.js.map +1 -1
- package/dist/api/system-one-shared.d.ts +23 -0
- package/dist/api/system-one-shared.d.ts.map +1 -0
- package/dist/api/system-one-shared.js +183 -0
- package/dist/api/system-one-shared.js.map +1 -0
- package/dist/api/transform-messages.d.ts.map +1 -1
- package/dist/api/transform-messages.js +21 -7
- package/dist/api/transform-messages.js.map +1 -1
- package/dist/api/typesafe-system-one.d.ts +4 -0
- package/dist/api/typesafe-system-one.d.ts.map +1 -0
- package/dist/api/typesafe-system-one.js +19 -0
- package/dist/api/typesafe-system-one.js.map +1 -0
- package/dist/api/typesafe-system-one.lazy.d.ts +3 -0
- package/dist/api/typesafe-system-one.lazy.d.ts.map +1 -0
- package/dist/api/typesafe-system-one.lazy.js +4 -0
- package/dist/api/typesafe-system-one.lazy.js.map +1 -0
- package/dist/auth/context.d.ts.map +1 -1
- package/dist/auth/context.js.map +1 -1
- package/dist/auth/credential-store.d.ts +6 -6
- package/dist/auth/credential-store.d.ts.map +1 -1
- package/dist/auth/credential-store.js +22 -11
- package/dist/auth/credential-store.js.map +1 -1
- package/dist/auth/helpers.d.ts +1 -0
- package/dist/auth/helpers.d.ts.map +1 -1
- package/dist/auth/helpers.js +8 -3
- package/dist/auth/helpers.js.map +1 -1
- package/dist/auth/oauth/anthropic.d.ts.map +1 -1
- package/dist/auth/oauth/anthropic.js +78 -131
- package/dist/auth/oauth/anthropic.js.map +1 -1
- package/dist/auth/oauth/callback-server.d.ts +55 -0
- package/dist/auth/oauth/callback-server.d.ts.map +1 -0
- package/dist/auth/oauth/callback-server.js +146 -0
- package/dist/auth/oauth/callback-server.js.map +1 -0
- package/dist/auth/oauth/device-code.d.ts +2 -1
- package/dist/auth/oauth/device-code.d.ts.map +1 -1
- package/dist/auth/oauth/device-code.js +5 -5
- package/dist/auth/oauth/device-code.js.map +1 -1
- package/dist/auth/oauth/github-copilot.d.ts.map +1 -1
- package/dist/auth/oauth/github-copilot.js +121 -41
- package/dist/auth/oauth/github-copilot.js.map +1 -1
- package/dist/auth/oauth/kimi-coding.d.ts.map +1 -1
- package/dist/auth/oauth/kimi-coding.js +5 -6
- package/dist/auth/oauth/kimi-coding.js.map +1 -1
- package/dist/auth/oauth/load.d.ts +4 -0
- package/dist/auth/oauth/load.d.ts.map +1 -1
- package/dist/auth/oauth/load.js +10 -0
- package/dist/auth/oauth/load.js.map +1 -1
- package/dist/auth/oauth/meta.d.ts +17 -0
- package/dist/auth/oauth/meta.d.ts.map +1 -0
- package/dist/auth/oauth/meta.js +190 -0
- package/dist/auth/oauth/meta.js.map +1 -0
- package/dist/auth/oauth/openai-chatgpt.d.ts +9 -0
- package/dist/auth/oauth/openai-chatgpt.d.ts.map +1 -0
- package/dist/auth/oauth/openai-chatgpt.js +263 -0
- package/dist/auth/oauth/openai-chatgpt.js.map +1 -0
- package/dist/auth/oauth/openai-codex-errors.d.ts.map +1 -1
- package/dist/auth/oauth/openai-codex-errors.js.map +1 -1
- package/dist/auth/oauth/openai-codex.d.ts +1 -1
- package/dist/auth/oauth/openai-codex.d.ts.map +1 -1
- package/dist/auth/oauth/openai-codex.js +23 -152
- package/dist/auth/oauth/openai-codex.js.map +1 -1
- package/dist/auth/oauth/openrouter.d.ts +1 -1
- package/dist/auth/oauth/openrouter.d.ts.map +1 -1
- package/dist/auth/oauth/openrouter.js +25 -144
- package/dist/auth/oauth/openrouter.js.map +1 -1
- package/dist/auth/oauth/pkce.d.ts.map +1 -1
- package/dist/auth/oauth/pkce.js.map +1 -1
- package/dist/auth/oauth/radius.d.ts +1 -1
- package/dist/auth/oauth/radius.d.ts.map +1 -1
- package/dist/auth/oauth/radius.js +26 -93
- package/dist/auth/oauth/radius.js.map +1 -1
- package/dist/auth/oauth/xai.d.ts.map +1 -1
- package/dist/auth/oauth/xai.js +3 -2
- package/dist/auth/oauth/xai.js.map +1 -1
- package/dist/auth/resolve.d.ts +19 -9
- package/dist/auth/resolve.d.ts.map +1 -1
- package/dist/auth/resolve.js +72 -53
- package/dist/auth/resolve.js.map +1 -1
- package/dist/auth/types.d.ts +29 -8
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/bedrock-provider.d.ts.map +1 -1
- package/dist/bun-oauth.d.ts.map +1 -1
- package/dist/bun-oauth.js +4 -0
- package/dist/bun-oauth.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -1
- package/dist/cli.js.map +1 -1
- package/dist/compat/extension-oauth-types.d.ts.map +1 -1
- package/dist/compat.d.ts +3 -3
- package/dist/compat.d.ts.map +1 -1
- package/dist/compat.js +9 -6
- package/dist/compat.js.map +1 -1
- package/dist/env-api-keys.d.ts +5 -0
- package/dist/env-api-keys.d.ts.map +1 -1
- package/dist/env-api-keys.js +10 -1
- package/dist/env-api-keys.js.map +1 -1
- package/dist/image-models.d.ts +19 -8
- package/dist/image-models.d.ts.map +1 -1
- package/dist/image-models.js +14 -13
- package/dist/image-models.js.map +1 -1
- package/dist/images-api-registry.d.ts +7 -7
- package/dist/images-api-registry.d.ts.map +1 -1
- package/dist/images-api-registry.js.map +1 -1
- package/dist/images.d.ts +7 -2
- package/dist/images.d.ts.map +1 -1
- package/dist/images.js +5 -0
- package/dist/images.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/legacy-api-aliases.d.ts.map +1 -1
- package/dist/model-catalog.d.ts +25 -9
- package/dist/model-catalog.d.ts.map +1 -1
- package/dist/model-catalog.js +14 -2
- package/dist/model-catalog.js.map +1 -1
- package/dist/models-store.d.ts +14 -14
- package/dist/models-store.d.ts.map +1 -1
- package/dist/models-store.js +6 -3
- package/dist/models-store.js.map +1 -1
- package/dist/models.d.ts +138 -47
- package/dist/models.d.ts.map +1 -1
- package/dist/models.generated.d.ts +136 -38
- package/dist/models.generated.d.ts.map +1 -1
- package/dist/models.generated.js +136 -38
- package/dist/models.generated.js.map +1 -1
- package/dist/models.js +390 -104
- package/dist/models.js.map +1 -1
- package/dist/oauth.d.ts.map +1 -1
- package/dist/providers/all.d.ts +19 -13
- package/dist/providers/all.d.ts.map +1 -1
- package/dist/providers/all.js +33 -23
- package/dist/providers/all.js.map +1 -1
- package/dist/providers/amazon-bedrock.d.ts.map +1 -1
- package/dist/providers/amazon-bedrock.js +15 -7
- package/dist/providers/amazon-bedrock.js.map +1 -1
- package/dist/providers/amazon-bedrock.models.d.ts +4 -2
- package/dist/providers/amazon-bedrock.models.d.ts.map +1 -1
- package/dist/providers/amazon-bedrock.models.js +4 -2
- package/dist/providers/amazon-bedrock.models.js.map +1 -1
- package/dist/providers/ant-ling.d.ts.map +1 -1
- package/dist/providers/ant-ling.js.map +1 -1
- package/dist/providers/ant-ling.models.d.ts +4 -2
- package/dist/providers/ant-ling.models.d.ts.map +1 -1
- package/dist/providers/ant-ling.models.js +4 -2
- package/dist/providers/ant-ling.models.js.map +1 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +39 -8
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/anthropic.models.d.ts +4 -2
- package/dist/providers/anthropic.models.d.ts.map +1 -1
- package/dist/providers/anthropic.models.js +4 -2
- package/dist/providers/anthropic.models.js.map +1 -1
- package/dist/providers/azure.d.ts +3 -0
- package/dist/providers/azure.d.ts.map +1 -0
- package/dist/providers/azure.js +46 -0
- package/dist/providers/azure.js.map +1 -0
- package/dist/providers/azure.models.d.ts +6 -0
- package/dist/providers/azure.models.d.ts.map +1 -0
- package/dist/providers/azure.models.js +8 -0
- package/dist/providers/azure.models.js.map +1 -0
- package/dist/providers/baseten.d.ts +3 -0
- package/dist/providers/baseten.d.ts.map +1 -0
- package/dist/providers/baseten.js +15 -0
- package/dist/providers/baseten.js.map +1 -0
- package/dist/providers/baseten.models.d.ts +6 -0
- package/dist/providers/baseten.models.d.ts.map +1 -0
- package/dist/providers/baseten.models.js +8 -0
- package/dist/providers/baseten.models.js.map +1 -0
- package/dist/providers/cerebras.d.ts.map +1 -1
- package/dist/providers/cerebras.js.map +1 -1
- package/dist/providers/cerebras.models.d.ts +4 -2
- package/dist/providers/cerebras.models.d.ts.map +1 -1
- package/dist/providers/cerebras.models.js +4 -2
- package/dist/providers/cerebras.models.js.map +1 -1
- package/dist/providers/cloudflare-ai-gateway.d.ts +3 -1
- package/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -1
- package/dist/providers/cloudflare-ai-gateway.js +4 -0
- package/dist/providers/cloudflare-ai-gateway.js.map +1 -1
- package/dist/providers/cloudflare-ai-gateway.models.d.ts +4 -2
- package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -1
- package/dist/providers/cloudflare-ai-gateway.models.js +4 -2
- package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -1
- package/dist/providers/cloudflare-auth.d.ts.map +1 -1
- package/dist/providers/cloudflare-auth.js +15 -10
- package/dist/providers/cloudflare-auth.js.map +1 -1
- package/dist/providers/cloudflare-stream.d.ts +6 -2
- package/dist/providers/cloudflare-stream.d.ts.map +1 -1
- package/dist/providers/cloudflare-stream.js +6 -0
- package/dist/providers/cloudflare-stream.js.map +1 -1
- package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -1
- package/dist/providers/cloudflare-workers-ai.js +10 -3
- package/dist/providers/cloudflare-workers-ai.js.map +1 -1
- package/dist/providers/cloudflare-workers-ai.models.d.ts +4 -2
- package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -1
- package/dist/providers/cloudflare-workers-ai.models.js +4 -2
- package/dist/providers/cloudflare-workers-ai.models.js.map +1 -1
- package/dist/providers/data/.manifest.json +1 -1
- package/dist/providers/data/amazon-bedrock.json +1 -1
- package/dist/providers/data/ant-ling.json +1 -1
- package/dist/providers/data/anthropic.json +1 -1
- package/dist/providers/data/azure.json +1 -0
- package/dist/providers/data/baseten.json +1 -0
- package/dist/providers/data/cerebras.json +1 -1
- package/dist/providers/data/cloudflare-ai-gateway.json +1 -1
- package/dist/providers/data/cloudflare-workers-ai.json +1 -1
- package/dist/providers/data/deepseek.json +1 -1
- package/dist/providers/data/fireworks.json +1 -1
- package/dist/providers/data/github-copilot.json +1 -1
- package/dist/providers/data/google-vertex.json +1 -1
- package/dist/providers/data/google.json +1 -1
- package/dist/providers/data/groq.json +1 -1
- package/dist/providers/data/huggingface.json +1 -1
- package/dist/providers/data/kimi-coding.json +1 -1
- package/dist/providers/data/meta.json +1 -0
- package/dist/providers/data/minimax-cn.json +1 -1
- package/dist/providers/data/minimax.json +1 -1
- package/dist/providers/data/mistral.json +1 -1
- package/dist/providers/data/moonshotai-cn.json +1 -1
- package/dist/providers/data/moonshotai.json +1 -1
- package/dist/providers/data/nvidia.json +1 -1
- package/dist/providers/data/openai-codex.json +1 -1
- package/dist/providers/data/openai.json +1 -1
- package/dist/providers/data/opencode-go.json +1 -1
- package/dist/providers/data/opencode.json +1 -1
- package/dist/providers/data/openrouter.json +1 -1
- package/dist/providers/data/qwen-token-plan-cn.json +1 -1
- package/dist/providers/data/qwen-token-plan-individual.json +1 -0
- package/dist/providers/data/qwen-token-plan.json +1 -1
- package/dist/providers/data/radius.json +1 -0
- package/dist/providers/data/together.json +1 -1
- package/dist/providers/data/typesafe.json +1 -0
- package/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/dist/providers/data/xai.json +1 -1
- package/dist/providers/data/xiaomi-token-plan-ams.json +1 -1
- package/dist/providers/data/xiaomi-token-plan-cn.json +1 -1
- package/dist/providers/data/xiaomi-token-plan-sgp.json +1 -1
- package/dist/providers/data/xiaomi.json +1 -1
- package/dist/providers/data/zai-coding-cn.json +1 -1
- package/dist/providers/data/zai.json +1 -1
- package/dist/providers/deepseek.d.ts.map +1 -1
- package/dist/providers/deepseek.js.map +1 -1
- package/dist/providers/deepseek.models.d.ts +4 -2
- package/dist/providers/deepseek.models.d.ts.map +1 -1
- package/dist/providers/deepseek.models.js +4 -2
- package/dist/providers/deepseek.models.js.map +1 -1
- package/dist/providers/faux.d.ts +19 -13
- package/dist/providers/faux.d.ts.map +1 -1
- package/dist/providers/faux.js +109 -18
- package/dist/providers/faux.js.map +1 -1
- package/dist/providers/fireworks.d.ts.map +1 -1
- package/dist/providers/fireworks.js.map +1 -1
- package/dist/providers/fireworks.models.d.ts +4 -2
- package/dist/providers/fireworks.models.d.ts.map +1 -1
- package/dist/providers/fireworks.models.js +4 -2
- package/dist/providers/fireworks.models.js.map +1 -1
- package/dist/providers/github-copilot.d.ts.map +1 -1
- package/dist/providers/github-copilot.js +1 -1
- package/dist/providers/github-copilot.js.map +1 -1
- package/dist/providers/github-copilot.models.d.ts +4 -2
- package/dist/providers/github-copilot.models.d.ts.map +1 -1
- package/dist/providers/github-copilot.models.js +4 -2
- package/dist/providers/github-copilot.models.js.map +1 -1
- package/dist/providers/google-vertex.d.ts.map +1 -1
- package/dist/providers/google-vertex.js +15 -7
- package/dist/providers/google-vertex.js.map +1 -1
- package/dist/providers/google-vertex.models.d.ts +4 -2
- package/dist/providers/google-vertex.models.d.ts.map +1 -1
- package/dist/providers/google-vertex.models.js +4 -2
- package/dist/providers/google-vertex.models.js.map +1 -1
- package/dist/providers/google.d.ts.map +1 -1
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/google.models.d.ts +4 -2
- package/dist/providers/google.models.d.ts.map +1 -1
- package/dist/providers/google.models.js +4 -2
- package/dist/providers/google.models.js.map +1 -1
- package/dist/providers/groq.d.ts.map +1 -1
- package/dist/providers/groq.js.map +1 -1
- package/dist/providers/groq.models.d.ts +4 -2
- package/dist/providers/groq.models.d.ts.map +1 -1
- package/dist/providers/groq.models.js +4 -2
- package/dist/providers/groq.models.js.map +1 -1
- package/dist/providers/huggingface.d.ts.map +1 -1
- package/dist/providers/huggingface.js.map +1 -1
- package/dist/providers/huggingface.models.d.ts +4 -2
- package/dist/providers/huggingface.models.d.ts.map +1 -1
- package/dist/providers/huggingface.models.js +4 -2
- package/dist/providers/huggingface.models.js.map +1 -1
- package/dist/providers/images/register-builtins.d.ts +1 -1
- package/dist/providers/images/register-builtins.d.ts.map +1 -1
- package/dist/providers/images/register-builtins.js.map +1 -1
- package/dist/providers/kimi-coding.d.ts.map +1 -1
- package/dist/providers/kimi-coding.js +1 -0
- package/dist/providers/kimi-coding.js.map +1 -1
- package/dist/providers/kimi-coding.models.d.ts +4 -2
- package/dist/providers/kimi-coding.models.d.ts.map +1 -1
- package/dist/providers/kimi-coding.models.js +4 -2
- package/dist/providers/kimi-coding.models.js.map +1 -1
- package/dist/providers/meta.d.ts +3 -0
- package/dist/providers/meta.d.ts.map +1 -0
- package/dist/providers/meta.js +24 -0
- package/dist/providers/meta.js.map +1 -0
- package/dist/providers/meta.models.d.ts +6 -0
- package/dist/providers/meta.models.d.ts.map +1 -0
- package/dist/providers/meta.models.js +8 -0
- package/dist/providers/meta.models.js.map +1 -0
- package/dist/providers/minimax-cn.d.ts.map +1 -1
- package/dist/providers/minimax-cn.js.map +1 -1
- package/dist/providers/minimax-cn.models.d.ts +4 -2
- package/dist/providers/minimax-cn.models.d.ts.map +1 -1
- package/dist/providers/minimax-cn.models.js +4 -2
- package/dist/providers/minimax-cn.models.js.map +1 -1
- package/dist/providers/minimax.d.ts.map +1 -1
- package/dist/providers/minimax.js.map +1 -1
- package/dist/providers/minimax.models.d.ts +4 -2
- package/dist/providers/minimax.models.d.ts.map +1 -1
- package/dist/providers/minimax.models.js +4 -2
- package/dist/providers/minimax.models.js.map +1 -1
- package/dist/providers/mistral.d.ts.map +1 -1
- package/dist/providers/mistral.js.map +1 -1
- package/dist/providers/mistral.models.d.ts +4 -2
- package/dist/providers/mistral.models.d.ts.map +1 -1
- package/dist/providers/mistral.models.js +4 -2
- package/dist/providers/mistral.models.js.map +1 -1
- package/dist/providers/moonshotai-cn.d.ts.map +1 -1
- package/dist/providers/moonshotai-cn.js.map +1 -1
- package/dist/providers/moonshotai-cn.models.d.ts +4 -2
- package/dist/providers/moonshotai-cn.models.d.ts.map +1 -1
- package/dist/providers/moonshotai-cn.models.js +4 -2
- package/dist/providers/moonshotai-cn.models.js.map +1 -1
- package/dist/providers/moonshotai.d.ts.map +1 -1
- package/dist/providers/moonshotai.js.map +1 -1
- package/dist/providers/moonshotai.models.d.ts +4 -2
- package/dist/providers/moonshotai.models.d.ts.map +1 -1
- package/dist/providers/moonshotai.models.js +4 -2
- package/dist/providers/moonshotai.models.js.map +1 -1
- package/dist/providers/nvidia.d.ts.map +1 -1
- package/dist/providers/nvidia.js.map +1 -1
- package/dist/providers/nvidia.models.d.ts +4 -2
- package/dist/providers/nvidia.models.d.ts.map +1 -1
- package/dist/providers/nvidia.models.js +4 -2
- package/dist/providers/nvidia.models.js.map +1 -1
- package/dist/providers/openai-codex-catalog.d.ts +19 -0
- package/dist/providers/openai-codex-catalog.d.ts.map +1 -0
- package/dist/providers/openai-codex-catalog.js +242 -0
- package/dist/providers/openai-codex-catalog.js.map +1 -0
- package/dist/providers/openai-codex.d.ts +3 -1
- package/dist/providers/openai-codex.d.ts.map +1 -1
- package/dist/providers/openai-codex.js +10 -3
- package/dist/providers/openai-codex.js.map +1 -1
- package/dist/providers/openai-codex.models.d.ts +4 -2
- package/dist/providers/openai-codex.models.d.ts.map +1 -1
- package/dist/providers/openai-codex.models.js +4 -2
- package/dist/providers/openai-codex.models.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +11 -2
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openai.models.d.ts +4 -2
- package/dist/providers/openai.models.d.ts.map +1 -1
- package/dist/providers/openai.models.js +4 -2
- package/dist/providers/openai.models.js.map +1 -1
- package/dist/providers/opencode-go.d.ts.map +1 -1
- package/dist/providers/opencode-go.js +5 -4
- package/dist/providers/opencode-go.js.map +1 -1
- package/dist/providers/opencode-go.models.d.ts +4 -2
- package/dist/providers/opencode-go.models.d.ts.map +1 -1
- package/dist/providers/opencode-go.models.js +4 -2
- package/dist/providers/opencode-go.models.js.map +1 -1
- package/dist/providers/opencode-headers.d.ts +4 -0
- package/dist/providers/opencode-headers.d.ts.map +1 -0
- package/dist/providers/opencode-headers.js +22 -0
- package/dist/providers/opencode-headers.js.map +1 -0
- package/dist/providers/opencode.d.ts +3 -1
- package/dist/providers/opencode.d.ts.map +1 -1
- package/dist/providers/opencode.js +10 -6
- package/dist/providers/opencode.js.map +1 -1
- package/dist/providers/opencode.models.d.ts +4 -2
- package/dist/providers/opencode.models.d.ts.map +1 -1
- package/dist/providers/opencode.models.js +4 -2
- package/dist/providers/opencode.models.js.map +1 -1
- package/dist/providers/openrouter.d.ts +1 -1
- package/dist/providers/openrouter.d.ts.map +1 -1
- package/dist/providers/openrouter.js +16 -3
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/openrouter.models.d.ts +4 -2
- package/dist/providers/openrouter.models.d.ts.map +1 -1
- package/dist/providers/openrouter.models.js +4 -2
- package/dist/providers/openrouter.models.js.map +1 -1
- package/dist/providers/qwen-token-plan-cn.d.ts.map +1 -1
- package/dist/providers/qwen-token-plan-cn.js.map +1 -1
- package/dist/providers/qwen-token-plan-cn.models.d.ts +4 -2
- package/dist/providers/qwen-token-plan-cn.models.d.ts.map +1 -1
- package/dist/providers/qwen-token-plan-cn.models.js +4 -2
- package/dist/providers/qwen-token-plan-cn.models.js.map +1 -1
- package/dist/providers/qwen-token-plan-individual.d.ts +3 -0
- package/dist/providers/qwen-token-plan-individual.d.ts.map +1 -0
- package/dist/providers/qwen-token-plan-individual.js +15 -0
- package/dist/providers/qwen-token-plan-individual.js.map +1 -0
- package/dist/providers/qwen-token-plan-individual.models.d.ts +6 -0
- package/dist/providers/qwen-token-plan-individual.models.d.ts.map +1 -0
- package/dist/providers/qwen-token-plan-individual.models.js +8 -0
- package/dist/providers/qwen-token-plan-individual.models.js.map +1 -0
- package/dist/providers/qwen-token-plan.d.ts.map +1 -1
- package/dist/providers/qwen-token-plan.js.map +1 -1
- package/dist/providers/qwen-token-plan.models.d.ts +4 -2
- package/dist/providers/qwen-token-plan.models.d.ts.map +1 -1
- package/dist/providers/qwen-token-plan.models.js +4 -2
- package/dist/providers/qwen-token-plan.models.js.map +1 -1
- package/dist/providers/radius-config.d.ts.map +1 -1
- package/dist/providers/radius-config.js.map +1 -1
- package/dist/providers/radius.d.ts.map +1 -1
- package/dist/providers/radius.js +53 -29
- package/dist/providers/radius.js.map +1 -1
- package/dist/providers/radius.models.d.ts +6 -0
- package/dist/providers/radius.models.d.ts.map +1 -0
- package/dist/providers/radius.models.js +8 -0
- package/dist/providers/radius.models.js.map +1 -0
- package/dist/providers/together.d.ts.map +1 -1
- package/dist/providers/together.js.map +1 -1
- package/dist/providers/together.models.d.ts +4 -2
- package/dist/providers/together.models.d.ts.map +1 -1
- package/dist/providers/together.models.js +4 -2
- package/dist/providers/together.models.js.map +1 -1
- package/dist/providers/typesafe.d.ts +3 -0
- package/dist/providers/typesafe.d.ts.map +1 -0
- package/dist/providers/typesafe.js +18 -0
- package/dist/providers/typesafe.js.map +1 -0
- package/dist/providers/typesafe.models.d.ts +6 -0
- package/dist/providers/typesafe.models.d.ts.map +1 -0
- package/dist/providers/typesafe.models.js +8 -0
- package/dist/providers/typesafe.models.js.map +1 -0
- package/dist/providers/vercel-ai-gateway.d.ts.map +1 -1
- package/dist/providers/vercel-ai-gateway.js +5 -2
- package/dist/providers/vercel-ai-gateway.js.map +1 -1
- package/dist/providers/vercel-ai-gateway.models.d.ts +4 -2
- package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
- package/dist/providers/vercel-ai-gateway.models.js +4 -2
- package/dist/providers/vercel-ai-gateway.models.js.map +1 -1
- package/dist/providers/xai.d.ts +1 -1
- package/dist/providers/xai.d.ts.map +1 -1
- package/dist/providers/xai.js +2 -5
- package/dist/providers/xai.js.map +1 -1
- package/dist/providers/xai.models.d.ts +4 -2
- package/dist/providers/xai.models.d.ts.map +1 -1
- package/dist/providers/xai.models.js +4 -2
- package/dist/providers/xai.models.js.map +1 -1
- package/dist/providers/xiaomi-token-plan-ams.d.ts.map +1 -1
- package/dist/providers/xiaomi-token-plan-ams.js.map +1 -1
- package/dist/providers/xiaomi-token-plan-ams.models.d.ts +4 -2
- package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -1
- package/dist/providers/xiaomi-token-plan-ams.models.js +4 -2
- package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -1
- package/dist/providers/xiaomi-token-plan-cn.d.ts.map +1 -1
- package/dist/providers/xiaomi-token-plan-cn.js.map +1 -1
- package/dist/providers/xiaomi-token-plan-cn.models.d.ts +4 -2
- package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -1
- package/dist/providers/xiaomi-token-plan-cn.models.js +4 -2
- package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -1
- package/dist/providers/xiaomi-token-plan-sgp.d.ts.map +1 -1
- package/dist/providers/xiaomi-token-plan-sgp.js.map +1 -1
- package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +4 -2
- package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -1
- package/dist/providers/xiaomi-token-plan-sgp.models.js +4 -2
- package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -1
- package/dist/providers/xiaomi.d.ts.map +1 -1
- package/dist/providers/xiaomi.js.map +1 -1
- package/dist/providers/xiaomi.models.d.ts +4 -2
- package/dist/providers/xiaomi.models.d.ts.map +1 -1
- package/dist/providers/xiaomi.models.js +4 -2
- package/dist/providers/xiaomi.models.js.map +1 -1
- package/dist/providers/zai-coding-cn.d.ts.map +1 -1
- package/dist/providers/zai-coding-cn.js.map +1 -1
- package/dist/providers/zai-coding-cn.models.d.ts +4 -2
- package/dist/providers/zai-coding-cn.models.d.ts.map +1 -1
- package/dist/providers/zai-coding-cn.models.js +4 -2
- package/dist/providers/zai-coding-cn.models.js.map +1 -1
- package/dist/providers/zai.d.ts.map +1 -1
- package/dist/providers/zai.js.map +1 -1
- package/dist/providers/zai.models.d.ts +4 -2
- package/dist/providers/zai.models.d.ts.map +1 -1
- package/dist/providers/zai.models.js +4 -2
- package/dist/providers/zai.models.js.map +1 -1
- package/dist/session-resources.d.ts.map +1 -1
- package/dist/session-resources.js.map +1 -1
- package/dist/types.d.ts +417 -126
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/abort-signals.d.ts.map +1 -1
- package/dist/utils/abort-signals.js.map +1 -1
- package/dist/utils/abort.d.ts +8 -0
- package/dist/utils/abort.d.ts.map +1 -0
- package/dist/utils/abort.js +49 -0
- package/dist/utils/abort.js.map +1 -0
- package/dist/utils/assistant-message-frame.d.ts +77 -0
- package/dist/utils/assistant-message-frame.d.ts.map +1 -0
- package/dist/utils/assistant-message-frame.js +425 -0
- package/dist/utils/assistant-message-frame.js.map +1 -0
- package/dist/utils/diagnostics.d.ts +3 -2
- package/dist/utils/diagnostics.d.ts.map +1 -1
- package/dist/utils/diagnostics.js.map +1 -1
- package/dist/utils/error-body.d.ts.map +1 -1
- package/dist/utils/error-body.js +23 -4
- package/dist/utils/error-body.js.map +1 -1
- package/dist/utils/estimate.d.ts +2 -2
- package/dist/utils/estimate.d.ts.map +1 -1
- package/dist/utils/estimate.js +8 -29
- package/dist/utils/estimate.js.map +1 -1
- package/dist/utils/event-stream.d.ts.map +1 -1
- package/dist/utils/event-stream.js +25 -7
- package/dist/utils/event-stream.js.map +1 -1
- package/dist/utils/hash.d.ts.map +1 -1
- package/dist/utils/hash.js.map +1 -1
- package/dist/utils/headers.d.ts +1 -1
- package/dist/utils/headers.d.ts.map +1 -1
- package/dist/utils/headers.js +10 -8
- package/dist/utils/headers.js.map +1 -1
- package/dist/utils/json-parse.d.ts.map +1 -1
- package/dist/utils/json-parse.js.map +1 -1
- package/dist/utils/model-operations.d.ts +11 -0
- package/dist/utils/model-operations.d.ts.map +1 -0
- package/dist/utils/model-operations.js +47 -0
- package/dist/utils/model-operations.js.map +1 -0
- package/dist/utils/models-error.d.ts +8 -0
- package/dist/utils/models-error.d.ts.map +1 -0
- package/dist/utils/models-error.js +19 -0
- package/dist/utils/models-error.js.map +1 -0
- package/dist/utils/node-http-proxy.d.ts.map +1 -1
- package/dist/utils/node-http-proxy.js +53 -12
- package/dist/utils/node-http-proxy.js.map +1 -1
- package/dist/utils/oauth-page.d.ts.map +1 -0
- package/dist/{auth/oauth → utils}/oauth-page.js +1 -1
- package/dist/utils/oauth-page.js.map +1 -0
- package/dist/utils/overflow.d.ts +11 -1
- package/dist/utils/overflow.d.ts.map +1 -1
- package/dist/utils/overflow.js +24 -6
- package/dist/utils/overflow.js.map +1 -1
- package/dist/utils/pi-user-agent.d.ts +2 -0
- package/dist/utils/pi-user-agent.d.ts.map +1 -0
- package/dist/utils/pi-user-agent.js +12 -0
- package/dist/utils/pi-user-agent.js.map +1 -0
- package/dist/utils/provider-env.d.ts.map +1 -1
- package/dist/utils/provider-env.js.map +1 -1
- package/dist/utils/provider-retry.d.ts.map +1 -1
- package/dist/utils/provider-retry.js +3 -2
- package/dist/utils/provider-retry.js.map +1 -1
- package/dist/utils/retry.d.ts +6 -1
- package/dist/utils/retry.d.ts.map +1 -1
- package/dist/utils/retry.js +23 -2
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/sanitize-unicode.d.ts.map +1 -1
- package/dist/utils/sanitize-unicode.js.map +1 -1
- package/dist/utils/sleep.d.ts +2 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +15 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/text.d.ts +9 -1
- package/dist/utils/text.d.ts.map +1 -1
- package/dist/utils/text.js +26 -0
- package/dist/utils/text.js.map +1 -1
- package/dist/utils/transcript.d.ts +87 -0
- package/dist/utils/transcript.d.ts.map +1 -0
- package/dist/utils/transcript.js +207 -0
- package/dist/utils/transcript.js.map +1 -0
- package/dist/utils/typebox-helpers.d.ts.map +1 -1
- package/dist/utils/typebox-helpers.js.map +1 -1
- package/dist/utils/uuid.d.ts +2 -2
- package/dist/utils/uuid.d.ts.map +1 -1
- package/dist/utils/uuid.js +35 -39
- package/dist/utils/uuid.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +40 -0
- package/dist/utils/validation.js.map +1 -1
- package/package.json +21 -15
- package/dist/auth/oauth/oauth-page.d.ts.map +0 -1
- package/dist/auth/oauth/oauth-page.js.map +0 -1
- package/dist/image-models.generated.d.ts +0 -605
- package/dist/image-models.generated.d.ts.map +0 -1
- package/dist/image-models.generated.js +0 -607
- package/dist/image-models.generated.js.map +0 -1
- package/dist/images-models.d.ts +0 -95
- package/dist/images-models.d.ts.map +0 -1
- package/dist/images-models.js +0 -142
- package/dist/images-models.js.map +0 -1
- package/dist/providers/azure-openai-responses.d.ts +0 -3
- package/dist/providers/azure-openai-responses.d.ts.map +0 -1
- package/dist/providers/azure-openai-responses.js +0 -14
- package/dist/providers/azure-openai-responses.js.map +0 -1
- package/dist/providers/azure-openai-responses.models.d.ts +0 -4
- package/dist/providers/azure-openai-responses.models.d.ts.map +0 -1
- package/dist/providers/azure-openai-responses.models.js +0 -6
- package/dist/providers/azure-openai-responses.models.js.map +0 -1
- package/dist/providers/data/azure-openai-responses.json +0 -1
- package/dist/providers/openrouter-images.d.ts +0 -3
- package/dist/providers/openrouter-images.d.ts.map +0 -1
- package/dist/providers/openrouter-images.js +0 -22
- package/dist/providers/openrouter-images.js.map +0 -1
- package/dist/utils/deferred-tools.d.ts +0 -9
- package/dist/utils/deferred-tools.d.ts.map +0 -1
- package/dist/utils/deferred-tools.js +0 -36
- package/dist/utils/deferred-tools.js.map +0 -1
- /package/dist/{auth/oauth → utils}/oauth-page.d.ts +0 -0
|
@@ -1,21 +1,15 @@
|
|
|
1
|
-
function loadNodeOs() {
|
|
2
|
-
if (typeof process === "undefined" || !(process.versions?.node || process.versions?.bun)) {
|
|
3
|
-
return null;
|
|
4
|
-
}
|
|
5
|
-
return process.getBuiltinModule?.("node:os") ?? null;
|
|
6
|
-
}
|
|
7
|
-
// NEVER convert to top-level runtime imports - breaks browser/Vite builds
|
|
8
|
-
const _os = loadNodeOs();
|
|
9
1
|
import { clampThinkingLevel } from "../models.js";
|
|
10
2
|
import { registerSessionResourceCleanup } from "../session-resources.js";
|
|
11
3
|
import { combineAbortSignals } from "../utils/abort-signals.js";
|
|
12
|
-
import { splitDeferredTools } from "../utils/deferred-tools.js";
|
|
13
4
|
import { appendAssistantMessageDiagnostic, createAssistantMessageDiagnostic, formatThrownValue, } from "../utils/diagnostics.js";
|
|
14
5
|
import { formatProviderError, normalizeProviderError } from "../utils/error-body.js";
|
|
15
6
|
import { AssistantMessageEventStream } from "../utils/event-stream.js";
|
|
16
7
|
import { headersToRecord } from "../utils/headers.js";
|
|
17
8
|
import { resolveHttpProxyUrlForTarget } from "../utils/node-http-proxy.js";
|
|
9
|
+
import { getPiUserAgent } from "../utils/pi-user-agent.js";
|
|
18
10
|
import { isRetryableAssistantError, retryAssistantCall } from "../utils/retry.js";
|
|
11
|
+
import { getSystemMessageText } from "../utils/text.js";
|
|
12
|
+
import { getDeclaredTools, getInitialSystemMessage, normalizeContext, resolveTranscript, resolveTranscriptTools, } from "../utils/transcript.js";
|
|
19
13
|
import { uuidv7 } from "../utils/uuid.js";
|
|
20
14
|
import { createGrammarToolInputProperties } from "./constrained-sampling.js";
|
|
21
15
|
import { retainCodexCompactionInput, trimCodexCompactionToolOutputs } from "./openai-codex-compaction-history.js";
|
|
@@ -191,6 +185,7 @@ function compressRequestBodyZstd(bodyJson) {
|
|
|
191
185
|
// ============================================================================
|
|
192
186
|
export const stream = (model, context, options) => {
|
|
193
187
|
const stream = new AssistantMessageEventStream();
|
|
188
|
+
const normalizedContext = resolveTranscript(context, model.compat?.supportsMidConvoSystemMessages);
|
|
194
189
|
(async () => {
|
|
195
190
|
const output = {
|
|
196
191
|
role: "assistant",
|
|
@@ -219,10 +214,10 @@ export const stream = (model, context, options) => {
|
|
|
219
214
|
throw new Error(`No API key for provider: ${model.provider}`);
|
|
220
215
|
}
|
|
221
216
|
const accountId = apiKey ? extractAccountId(apiKey) : undefined;
|
|
222
|
-
const grammarToolInputProperties = createGrammarToolInputProperties(
|
|
217
|
+
const grammarToolInputProperties = createGrammarToolInputProperties(getDeclaredTools(normalizedContext.messages), model.compat?.supportsOpenAIGrammarTools ?? false);
|
|
223
218
|
const cacheSessionId = options?.cacheRetention === "none" ? undefined : options?.sessionId;
|
|
224
219
|
const codexSessionId = clampOpenAIPromptCacheKey(cacheSessionId);
|
|
225
|
-
let body = buildRequestBody(model,
|
|
220
|
+
let body = buildRequestBody(model, normalizedContext, options, codexSessionId, grammarToolInputProperties);
|
|
226
221
|
const nextBody = await options?.onPayload?.(body, model);
|
|
227
222
|
if (nextBody !== undefined) {
|
|
228
223
|
body = nextBody;
|
|
@@ -239,7 +234,8 @@ export const stream = (model, context, options) => {
|
|
|
239
234
|
if (websocketDisabledForSession) {
|
|
240
235
|
recordWebSocketSseFallback(cacheSessionId);
|
|
241
236
|
}
|
|
242
|
-
|
|
237
|
+
// WebSocket sessions are cached per account; transport auth has no account and always uses SSE.
|
|
238
|
+
if (transport !== "sse" && !websocketDisabledForSession && accountId) {
|
|
243
239
|
let websocketStarted = false;
|
|
244
240
|
let retriedWebSocketConnectionLimit = false;
|
|
245
241
|
let retriedMissingWebSocketContinuation = false;
|
|
@@ -252,7 +248,7 @@ export const stream = (model, context, options) => {
|
|
|
252
248
|
startEmitted = true;
|
|
253
249
|
stream.push({ type: "start", partial: output });
|
|
254
250
|
}
|
|
255
|
-
}, httpTimeoutMs, websocketConnectTimeoutMs, cacheSessionId, grammarToolInputProperties, options);
|
|
251
|
+
}, httpTimeoutMs, websocketConnectTimeoutMs, cacheSessionId, accountId, grammarToolInputProperties, options);
|
|
256
252
|
if (options?.signal?.aborted) {
|
|
257
253
|
throw new Error("Request was aborted");
|
|
258
254
|
}
|
|
@@ -282,7 +278,7 @@ export const stream = (model, context, options) => {
|
|
|
282
278
|
}
|
|
283
279
|
appendAssistantMessageDiagnostic(output, createAssistantMessageDiagnostic("provider_transport_failure", error, {
|
|
284
280
|
configuredTransport: transport,
|
|
285
|
-
|
|
281
|
+
...(websocketStarted ? {} : { fallbackTransport: "sse" }),
|
|
286
282
|
eventsEmitted: websocketStarted,
|
|
287
283
|
phase: websocketStarted ? "after_message_stream_start" : "before_message_stream_start",
|
|
288
284
|
requestBytes: new TextEncoder().encode(bodyJson).byteLength,
|
|
@@ -423,7 +419,10 @@ function buildSimpleCodexOptions(model, context, options) {
|
|
|
423
419
|
if (!apiKey && options?.authMode !== "transport") {
|
|
424
420
|
throw new Error(`No API key for provider: ${model.provider}`);
|
|
425
421
|
}
|
|
426
|
-
const base =
|
|
422
|
+
const base = {
|
|
423
|
+
...buildBaseOptions(model, context, options, apiKey),
|
|
424
|
+
toolChoice: options?.toolChoice,
|
|
425
|
+
};
|
|
427
426
|
const clampedReasoning = options?.reasoning ? clampThinkingLevel(model, options.reasoning) : undefined;
|
|
428
427
|
return {
|
|
429
428
|
...base,
|
|
@@ -433,7 +432,8 @@ function buildSimpleCodexOptions(model, context, options) {
|
|
|
433
432
|
};
|
|
434
433
|
}
|
|
435
434
|
export const streamSimple = (model, context, options) => stream(model, context, buildSimpleCodexOptions(model, context, options));
|
|
436
|
-
export async function compactOpenAICodexResponses(model,
|
|
435
|
+
export async function compactOpenAICodexResponses(model, requestContext, options) {
|
|
436
|
+
const context = normalizeContext(requestContext);
|
|
437
437
|
const items = [];
|
|
438
438
|
const base = buildSimpleCodexOptions(model, context, options);
|
|
439
439
|
let transport = base.transport;
|
|
@@ -466,10 +466,9 @@ export async function compactOpenAICodexResponses(model, context, options) {
|
|
|
466
466
|
}
|
|
467
467
|
return {
|
|
468
468
|
item: { ...item },
|
|
469
|
-
retainedInput: retainCodexCompactionInput(buildRequestBody(model, {
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
}, base, undefined).input ?? []),
|
|
469
|
+
retainedInput: retainCodexCompactionInput(buildRequestBody(model, normalizeContext({
|
|
470
|
+
messages: (options?.nativeCompactionRetainedMessages ?? requestContext.messages).filter((message) => message.role === "user"),
|
|
471
|
+
}), base, undefined).input ?? []),
|
|
473
472
|
tokensBefore: result.usage.input + result.usage.cacheRead,
|
|
474
473
|
usage: result.usage,
|
|
475
474
|
};
|
|
@@ -477,10 +476,12 @@ export async function compactOpenAICodexResponses(model, context, options) {
|
|
|
477
476
|
// ============================================================================
|
|
478
477
|
// Request Building
|
|
479
478
|
// ============================================================================
|
|
480
|
-
function buildRequestBody(model, context, options, cacheSessionId, grammarToolInputProperties = createGrammarToolInputProperties(context.
|
|
479
|
+
function buildRequestBody(model, context, options, cacheSessionId, grammarToolInputProperties = createGrammarToolInputProperties(getDeclaredTools(context.messages), model.compat?.supportsOpenAIGrammarTools ?? false)) {
|
|
481
480
|
const supportsStrictMode = model.compat?.supportsStrictMode ?? true;
|
|
482
481
|
const supportsOpenAIGrammarTools = model.compat?.supportsOpenAIGrammarTools ?? false;
|
|
483
|
-
const
|
|
482
|
+
const supportsAdditionalTools = model.compat?.supportsAdditionalTools ?? false;
|
|
483
|
+
const supportsToolSearch = model.compat?.supportsToolSearch ?? false;
|
|
484
|
+
const transcriptTools = resolveTranscriptTools(context.messages, supportsAdditionalTools || supportsToolSearch);
|
|
484
485
|
const checkpoint = options?.nativeCompactionCheckpoint;
|
|
485
486
|
const checkpointInput = checkpoint ? [...(checkpoint.retainedInput ?? []), checkpoint.item] : [];
|
|
486
487
|
const requestContext = options?.nativeCompaction
|
|
@@ -489,12 +490,10 @@ function buildRequestBody(model, context, options, cacheSessionId, grammarToolIn
|
|
|
489
490
|
const messages = convertResponsesMessages(model, requestContext, CODEX_TOOL_CALL_PROVIDERS, {
|
|
490
491
|
includeSystemPrompt: false,
|
|
491
492
|
grammarToolInputProperties,
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
supportsOpenAIGrammarTools,
|
|
497
|
-
},
|
|
493
|
+
supportsMidConvoSystemMessages: model.compat?.supportsMidConvoSystemMessages ?? false,
|
|
494
|
+
supportsAdditionalTools,
|
|
495
|
+
supportsToolSearch,
|
|
496
|
+
toolOptions: { strict: null, supportsStrictMode, supportsOpenAIGrammarTools },
|
|
498
497
|
});
|
|
499
498
|
if (checkpoint) {
|
|
500
499
|
if (checkpoint.provider !== model.provider || model.api !== "openai-codex-responses") {
|
|
@@ -510,11 +509,13 @@ function buildRequestBody(model, context, options, cacheSessionId, grammarToolIn
|
|
|
510
509
|
if (options?.nativeCompaction) {
|
|
511
510
|
messages.push({ type: "compaction_trigger" });
|
|
512
511
|
}
|
|
512
|
+
const initialSystemMessage = getInitialSystemMessage(context.messages);
|
|
513
|
+
const instructions = initialSystemMessage ? getSystemMessageText(initialSystemMessage) : "";
|
|
513
514
|
const body = {
|
|
514
515
|
model: model.id,
|
|
515
516
|
store: false,
|
|
516
517
|
stream: true,
|
|
517
|
-
instructions:
|
|
518
|
+
instructions: instructions || "You are a helpful assistant.",
|
|
518
519
|
input: messages,
|
|
519
520
|
text: { verbosity: options?.textVerbosity || "low" },
|
|
520
521
|
include: ["reasoning.encrypted_content"],
|
|
@@ -528,8 +529,8 @@ function buildRequestBody(model, context, options, cacheSessionId, grammarToolIn
|
|
|
528
529
|
if (options?.serviceTier !== undefined) {
|
|
529
530
|
body.service_tier = options.serviceTier;
|
|
530
531
|
}
|
|
531
|
-
if (
|
|
532
|
-
body.tools = convertResponsesTools(
|
|
532
|
+
if (transcriptTools.requestTools.length > 0) {
|
|
533
|
+
body.tools = convertResponsesTools(transcriptTools.requestTools, {
|
|
533
534
|
strict: null,
|
|
534
535
|
supportsStrictMode,
|
|
535
536
|
supportsOpenAIGrammarTools,
|
|
@@ -537,7 +538,9 @@ function buildRequestBody(model, context, options, cacheSessionId, grammarToolIn
|
|
|
537
538
|
}
|
|
538
539
|
if (options?.reasoningEffort !== undefined) {
|
|
539
540
|
const effort = options.reasoningEffort === "none"
|
|
540
|
-
?
|
|
541
|
+
? model.thinkingLevelMap?.off === undefined
|
|
542
|
+
? "none"
|
|
543
|
+
: model.thinkingLevelMap.off
|
|
541
544
|
: (model.thinkingLevelMap?.[options.reasoningEffort] ?? options.reasoningEffort);
|
|
542
545
|
if (effort !== null) {
|
|
543
546
|
body.reasoning = {
|
|
@@ -546,6 +549,9 @@ function buildRequestBody(model, context, options, cacheSessionId, grammarToolIn
|
|
|
546
549
|
};
|
|
547
550
|
}
|
|
548
551
|
}
|
|
552
|
+
else if (model.reasoning && model.thinkingLevelMap?.off !== null) {
|
|
553
|
+
body.reasoning = { effort: model.thinkingLevelMap?.off ?? "none" };
|
|
554
|
+
}
|
|
549
555
|
return body;
|
|
550
556
|
}
|
|
551
557
|
function getServiceTierCostMultiplier(model, serviceTier) {
|
|
@@ -595,7 +601,7 @@ function resolveCodexWebSocketUrl(baseUrl) {
|
|
|
595
601
|
// Response Processing
|
|
596
602
|
// ============================================================================
|
|
597
603
|
async function processStream(response, output, stream, model, grammarToolInputProperties, options) {
|
|
598
|
-
await processResponsesStream(mapCodexEvents(parseSSE(response, options?.signal), options?.onNativeCompactionItem), output, stream, model, {
|
|
604
|
+
await processResponsesStream(mapCodexEvents(parseSSE(response, options?.signal), output, model, options?.onProviderStreamEvent, options?.onNativeCompactionItem), output, stream, model, {
|
|
599
605
|
serviceTier: options?.serviceTier,
|
|
600
606
|
grammarToolInputProperties,
|
|
601
607
|
resolveServiceTier: resolveCodexServiceTier,
|
|
@@ -624,8 +630,17 @@ class CodexProtocolError extends Error {
|
|
|
624
630
|
this.cause = options?.cause;
|
|
625
631
|
}
|
|
626
632
|
}
|
|
633
|
+
class ProviderStreamEventCallbackError extends Error {
|
|
634
|
+
constructor(cause) {
|
|
635
|
+
super(formatThrownValue(cause));
|
|
636
|
+
this.name = "ProviderStreamEventCallbackError";
|
|
637
|
+
this.cause = cause;
|
|
638
|
+
}
|
|
639
|
+
}
|
|
627
640
|
function isCodexNonTransportError(error) {
|
|
628
|
-
return error instanceof CodexApiError ||
|
|
641
|
+
return (error instanceof CodexApiError ||
|
|
642
|
+
error instanceof CodexProtocolError ||
|
|
643
|
+
error instanceof ProviderStreamEventCallbackError);
|
|
629
644
|
}
|
|
630
645
|
function isWebSocketConnectionLimitReachedError(error) {
|
|
631
646
|
return error instanceof CodexApiError && error.code === WEBSOCKET_CONNECTION_LIMIT_REACHED_CODE;
|
|
@@ -650,8 +665,15 @@ function extractCodexEventError(event) {
|
|
|
650
665
|
: undefined,
|
|
651
666
|
};
|
|
652
667
|
}
|
|
653
|
-
async function* mapCodexEvents(events, onNativeCompactionItem) {
|
|
668
|
+
async function* mapCodexEvents(events, output, model, onProviderStreamEvent, onNativeCompactionItem) {
|
|
654
669
|
for await (const event of events) {
|
|
670
|
+
try {
|
|
671
|
+
await onProviderStreamEvent?.(event, model);
|
|
672
|
+
}
|
|
673
|
+
catch (error) {
|
|
674
|
+
// Keep callback failures out of Codex's WebSocket retry and SSE fallback path.
|
|
675
|
+
throw new ProviderStreamEventCallbackError(error);
|
|
676
|
+
}
|
|
655
677
|
const type = typeof event.type === "string" ? event.type : undefined;
|
|
656
678
|
if (!type)
|
|
657
679
|
continue;
|
|
@@ -675,6 +697,9 @@ async function* mapCodexEvents(events, onNativeCompactionItem) {
|
|
|
675
697
|
}
|
|
676
698
|
if (type === "response.done" || type === "response.completed" || type === "response.incomplete") {
|
|
677
699
|
const response = event.response;
|
|
700
|
+
if (typeof response?.end_turn === "boolean") {
|
|
701
|
+
output.endTurn = response.end_turn;
|
|
702
|
+
}
|
|
678
703
|
const normalizedResponse = response
|
|
679
704
|
? { ...response, status: normalizeCodexStatus(response.status) }
|
|
680
705
|
: response;
|
|
@@ -711,9 +736,10 @@ async function* parseSSE(response, signal) {
|
|
|
711
736
|
if (signal?.aborted) {
|
|
712
737
|
throw new Error("Request was aborted");
|
|
713
738
|
}
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
739
|
+
buffer += done ? decoder.decode() : decoder.decode(value, { stream: true });
|
|
740
|
+
// Treat EOF as terminating the residual SSE frame.
|
|
741
|
+
if (done && buffer.trim())
|
|
742
|
+
buffer += "\n\n";
|
|
717
743
|
let idx = buffer.indexOf("\n\n");
|
|
718
744
|
while (idx !== -1) {
|
|
719
745
|
const chunk = buffer.slice(0, idx);
|
|
@@ -738,6 +764,8 @@ async function* parseSSE(response, signal) {
|
|
|
738
764
|
}
|
|
739
765
|
idx = buffer.indexOf("\n\n");
|
|
740
766
|
}
|
|
767
|
+
if (done)
|
|
768
|
+
break;
|
|
741
769
|
}
|
|
742
770
|
}
|
|
743
771
|
finally {
|
|
@@ -800,14 +828,14 @@ export function closeOpenAICodexWebSocketSessions(sessionId) {
|
|
|
800
828
|
closeWebSocketSilently(entry.socket, 1000, "debug_close");
|
|
801
829
|
};
|
|
802
830
|
if (sessionId) {
|
|
803
|
-
const entry
|
|
804
|
-
if (entry)
|
|
831
|
+
for (const entry of websocketSessionCache.get(sessionId)?.values() ?? [])
|
|
805
832
|
closeEntry(entry);
|
|
806
833
|
websocketSessionCache.delete(sessionId);
|
|
807
834
|
return;
|
|
808
835
|
}
|
|
809
|
-
for (const
|
|
810
|
-
|
|
836
|
+
for (const accountEntries of websocketSessionCache.values()) {
|
|
837
|
+
for (const entry of accountEntries.values())
|
|
838
|
+
closeEntry(entry);
|
|
811
839
|
}
|
|
812
840
|
websocketSessionCache.clear();
|
|
813
841
|
}
|
|
@@ -891,7 +919,7 @@ function closeWebSocketSilently(socket, code = 1000, reason = "done") {
|
|
|
891
919
|
}
|
|
892
920
|
catch { }
|
|
893
921
|
}
|
|
894
|
-
function scheduleSessionWebSocketExpiry(sessionId, entry) {
|
|
922
|
+
function scheduleSessionWebSocketExpiry(sessionId, accountId, entry) {
|
|
895
923
|
if (entry.idleTimer) {
|
|
896
924
|
clearTimeout(entry.idleTimer);
|
|
897
925
|
}
|
|
@@ -899,7 +927,11 @@ function scheduleSessionWebSocketExpiry(sessionId, entry) {
|
|
|
899
927
|
if (entry.busy)
|
|
900
928
|
return;
|
|
901
929
|
closeWebSocketSilently(entry.socket, 1000, "idle_timeout");
|
|
902
|
-
websocketSessionCache.
|
|
930
|
+
const accountEntries = websocketSessionCache.get(sessionId);
|
|
931
|
+
if (accountEntries?.get(accountId) === entry)
|
|
932
|
+
accountEntries.delete(accountId);
|
|
933
|
+
if (accountEntries?.size === 0)
|
|
934
|
+
websocketSessionCache.delete(sessionId);
|
|
903
935
|
}, SESSION_WEBSOCKET_CACHE_TTL_MS);
|
|
904
936
|
}
|
|
905
937
|
async function connectWebSocket(url, headers, signal, connectTimeoutMs = DEFAULT_WEBSOCKET_CONNECT_TIMEOUT_MS, env) {
|
|
@@ -970,7 +1002,7 @@ async function connectWebSocket(url, headers, signal, connectTimeoutMs = DEFAULT
|
|
|
970
1002
|
}
|
|
971
1003
|
});
|
|
972
1004
|
}
|
|
973
|
-
async function acquireWebSocket(url, headers, sessionId, signal, connectTimeoutMs, env) {
|
|
1005
|
+
async function acquireWebSocket(url, headers, sessionId, accountId, signal, connectTimeoutMs, env) {
|
|
974
1006
|
if (!sessionId) {
|
|
975
1007
|
const socket = await connectWebSocket(url, headers, signal, connectTimeoutMs, env);
|
|
976
1008
|
return {
|
|
@@ -979,7 +1011,8 @@ async function acquireWebSocket(url, headers, sessionId, signal, connectTimeoutM
|
|
|
979
1011
|
release: () => closeWebSocketSilently(socket),
|
|
980
1012
|
};
|
|
981
1013
|
}
|
|
982
|
-
|
|
1014
|
+
let accountEntries = websocketSessionCache.get(sessionId);
|
|
1015
|
+
const cached = accountEntries?.get(accountId);
|
|
983
1016
|
if (cached) {
|
|
984
1017
|
if (cached.idleTimer) {
|
|
985
1018
|
clearTimeout(cached.idleTimer);
|
|
@@ -987,7 +1020,9 @@ async function acquireWebSocket(url, headers, sessionId, signal, connectTimeoutM
|
|
|
987
1020
|
}
|
|
988
1021
|
if (!cached.busy && isWebSocketSessionExpired(cached)) {
|
|
989
1022
|
closeWebSocketSilently(cached.socket, 1000, "connection_age_limit");
|
|
990
|
-
|
|
1023
|
+
accountEntries?.delete(accountId);
|
|
1024
|
+
if (accountEntries?.size === 0)
|
|
1025
|
+
websocketSessionCache.delete(sessionId);
|
|
991
1026
|
}
|
|
992
1027
|
else if (!cached.busy && isWebSocketReusable(cached.socket)) {
|
|
993
1028
|
cached.busy = true;
|
|
@@ -998,11 +1033,15 @@ async function acquireWebSocket(url, headers, sessionId, signal, connectTimeoutM
|
|
|
998
1033
|
release: ({ keep } = {}) => {
|
|
999
1034
|
if (!keep || !isWebSocketReusable(cached.socket)) {
|
|
1000
1035
|
closeWebSocketSilently(cached.socket);
|
|
1001
|
-
websocketSessionCache.
|
|
1036
|
+
const currentEntries = websocketSessionCache.get(sessionId);
|
|
1037
|
+
if (currentEntries?.get(accountId) === cached)
|
|
1038
|
+
currentEntries.delete(accountId);
|
|
1039
|
+
if (currentEntries?.size === 0)
|
|
1040
|
+
websocketSessionCache.delete(sessionId);
|
|
1002
1041
|
return;
|
|
1003
1042
|
}
|
|
1004
1043
|
cached.busy = false;
|
|
1005
|
-
scheduleSessionWebSocketExpiry(sessionId, cached);
|
|
1044
|
+
scheduleSessionWebSocketExpiry(sessionId, accountId, cached);
|
|
1006
1045
|
},
|
|
1007
1046
|
};
|
|
1008
1047
|
}
|
|
@@ -1018,12 +1057,19 @@ async function acquireWebSocket(url, headers, sessionId, signal, connectTimeoutM
|
|
|
1018
1057
|
}
|
|
1019
1058
|
if (!isWebSocketReusable(cached.socket)) {
|
|
1020
1059
|
closeWebSocketSilently(cached.socket);
|
|
1021
|
-
|
|
1060
|
+
accountEntries?.delete(accountId);
|
|
1061
|
+
if (accountEntries?.size === 0)
|
|
1062
|
+
websocketSessionCache.delete(sessionId);
|
|
1022
1063
|
}
|
|
1023
1064
|
}
|
|
1024
1065
|
const socket = await connectWebSocket(url, headers, signal, connectTimeoutMs, env);
|
|
1025
1066
|
const entry = { socket, busy: true, createdAt: Date.now() };
|
|
1026
|
-
websocketSessionCache.
|
|
1067
|
+
accountEntries = websocketSessionCache.get(sessionId);
|
|
1068
|
+
if (!accountEntries) {
|
|
1069
|
+
accountEntries = new Map();
|
|
1070
|
+
websocketSessionCache.set(sessionId, accountEntries);
|
|
1071
|
+
}
|
|
1072
|
+
accountEntries.set(accountId, entry);
|
|
1027
1073
|
return {
|
|
1028
1074
|
socket,
|
|
1029
1075
|
entry,
|
|
@@ -1033,13 +1079,15 @@ async function acquireWebSocket(url, headers, sessionId, signal, connectTimeoutM
|
|
|
1033
1079
|
closeWebSocketSilently(entry.socket);
|
|
1034
1080
|
if (entry.idleTimer)
|
|
1035
1081
|
clearTimeout(entry.idleTimer);
|
|
1036
|
-
|
|
1082
|
+
const currentEntries = websocketSessionCache.get(sessionId);
|
|
1083
|
+
if (currentEntries?.get(accountId) === entry)
|
|
1084
|
+
currentEntries.delete(accountId);
|
|
1085
|
+
if (currentEntries?.size === 0)
|
|
1037
1086
|
websocketSessionCache.delete(sessionId);
|
|
1038
|
-
}
|
|
1039
1087
|
return;
|
|
1040
1088
|
}
|
|
1041
1089
|
entry.busy = false;
|
|
1042
|
-
scheduleSessionWebSocketExpiry(sessionId, entry);
|
|
1090
|
+
scheduleSessionWebSocketExpiry(sessionId, accountId, entry);
|
|
1043
1091
|
},
|
|
1044
1092
|
};
|
|
1045
1093
|
}
|
|
@@ -1259,8 +1307,8 @@ async function* startWebSocketOutputOnFirstEvent(events, onStart) {
|
|
|
1259
1307
|
yield event;
|
|
1260
1308
|
}
|
|
1261
1309
|
}
|
|
1262
|
-
async function processWebSocketStream(url, body, headers, output, stream, model, onStart, idleTimeoutMs, websocketConnectTimeoutMs, cacheSessionId, grammarToolInputProperties, options) {
|
|
1263
|
-
const { socket, entry, reused, release } = await acquireWebSocket(url, headers, cacheSessionId, options?.signal, websocketConnectTimeoutMs, options?.env);
|
|
1310
|
+
async function processWebSocketStream(url, body, headers, output, stream, model, onStart, idleTimeoutMs, websocketConnectTimeoutMs, cacheSessionId, accountId, grammarToolInputProperties, options) {
|
|
1311
|
+
const { socket, entry, reused, release } = await acquireWebSocket(url, headers, cacheSessionId, accountId, options?.signal, websocketConnectTimeoutMs, options?.env);
|
|
1264
1312
|
let keepConnection = true;
|
|
1265
1313
|
const useCachedContext = options?.transport === "websocket-cached" || options?.transport === "auto";
|
|
1266
1314
|
// ChatGPT Codex Responses rejects `store: true` ("Store must be set to false").
|
|
@@ -1292,7 +1340,7 @@ async function processWebSocketStream(url, body, headers, output, stream, model,
|
|
|
1292
1340
|
}
|
|
1293
1341
|
try {
|
|
1294
1342
|
socket.send(JSON.stringify({ type: "response.create", ...requestBody }));
|
|
1295
|
-
await processResponsesStream(startWebSocketOutputOnFirstEvent(mapCodexEvents(parseWebSocket(socket, options?.signal, idleTimeoutMs), options?.onNativeCompactionItem), onStart), output, stream, model, {
|
|
1343
|
+
await processResponsesStream(startWebSocketOutputOnFirstEvent(mapCodexEvents(parseWebSocket(socket, options?.signal, idleTimeoutMs), output, model, options?.onProviderStreamEvent, options?.onNativeCompactionItem), onStart), output, stream, model, {
|
|
1296
1344
|
serviceTier: options?.serviceTier,
|
|
1297
1345
|
grammarToolInputProperties,
|
|
1298
1346
|
resolveServiceTier: resolveCodexServiceTier,
|
|
@@ -1306,7 +1354,7 @@ async function processWebSocketStream(url, body, headers, output, stream, model,
|
|
|
1306
1354
|
entry.continuation = undefined;
|
|
1307
1355
|
}
|
|
1308
1356
|
else if (useCachedContext && entry && output.responseId) {
|
|
1309
|
-
const responseItems = convertResponsesMessages(model, { messages: [output] }, CODEX_TOOL_CALL_PROVIDERS, {
|
|
1357
|
+
const responseItems = convertResponsesMessages(model, normalizeContext({ messages: [output] }), CODEX_TOOL_CALL_PROVIDERS, {
|
|
1310
1358
|
includeSystemPrompt: false,
|
|
1311
1359
|
grammarToolInputProperties,
|
|
1312
1360
|
}).filter((item) => item.type !== "function_call_output" && item.type !== "custom_tool_call_output");
|
|
@@ -1394,8 +1442,7 @@ function buildBaseCodexHeaders(initHeaders, additionalHeaders, accountId, token)
|
|
|
1394
1442
|
headers.delete("chatgpt-account-id");
|
|
1395
1443
|
}
|
|
1396
1444
|
headers.set("originator", "pi");
|
|
1397
|
-
|
|
1398
|
-
headers.set("User-Agent", userAgent);
|
|
1445
|
+
headers.set("User-Agent", getPiUserAgent());
|
|
1399
1446
|
return headers;
|
|
1400
1447
|
}
|
|
1401
1448
|
function buildSSEHeaders(initHeaders, additionalHeaders, accountId, token, sessionId) {
|