@draht/ai 2026.7.13 → 2026.7.30
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/dist/api/anthropic-messages.d.ts.map +1 -1
- package/dist/api/anthropic-messages.js +129 -57
- package/dist/api/anthropic-messages.js.map +1 -1
- package/dist/api/azure-openai-responses.d.ts.map +1 -1
- package/dist/api/azure-openai-responses.js +26 -9
- package/dist/api/azure-openai-responses.js.map +1 -1
- package/dist/api/bedrock-converse-stream.d.ts.map +1 -1
- package/dist/api/bedrock-converse-stream.js +54 -23
- package/dist/api/bedrock-converse-stream.js.map +1 -1
- package/dist/api/constrained-sampling.d.ts +17 -0
- package/dist/api/constrained-sampling.d.ts.map +1 -0
- package/dist/api/constrained-sampling.js +100 -0
- package/dist/api/constrained-sampling.js.map +1 -0
- package/dist/api/google-generative-ai.d.ts.map +1 -1
- package/dist/api/google-generative-ai.js +19 -13
- package/dist/api/google-generative-ai.js.map +1 -1
- package/dist/api/google-shared.d.ts +4 -3
- package/dist/api/google-shared.d.ts.map +1 -1
- package/dist/api/google-shared.js +17 -3
- package/dist/api/google-shared.js.map +1 -1
- package/dist/api/google-vertex.d.ts.map +1 -1
- package/dist/api/google-vertex.js +19 -13
- package/dist/api/google-vertex.js.map +1 -1
- package/dist/api/lazy.d.ts.map +1 -1
- package/dist/api/lazy.js +9 -10
- package/dist/api/lazy.js.map +1 -1
- package/dist/api/mistral-conversations.d.ts.map +1 -1
- package/dist/api/mistral-conversations.js +32 -19
- package/dist/api/mistral-conversations.js.map +1 -1
- package/dist/api/openai-codex-responses.d.ts +1 -0
- package/dist/api/openai-codex-responses.d.ts.map +1 -1
- package/dist/api/openai-codex-responses.js +88 -38
- package/dist/api/openai-codex-responses.js.map +1 -1
- package/dist/api/openai-completions.d.ts +8 -8
- package/dist/api/openai-completions.d.ts.map +1 -1
- package/dist/api/openai-completions.js +216 -46
- package/dist/api/openai-completions.js.map +1 -1
- package/dist/api/openai-responses-shared.d.ts +8 -1
- package/dist/api/openai-responses-shared.d.ts.map +1 -1
- package/dist/api/openai-responses-shared.js +233 -67
- package/dist/api/openai-responses-shared.js.map +1 -1
- package/dist/api/openai-responses.d.ts +1 -0
- package/dist/api/openai-responses.d.ts.map +1 -1
- package/dist/api/openai-responses.js +60 -16
- package/dist/api/openai-responses.js.map +1 -1
- package/dist/api/openrouter-images.d.ts.map +1 -1
- package/dist/api/openrouter-images.js +11 -5
- package/dist/api/openrouter-images.js.map +1 -1
- package/dist/api/pi-messages.d.ts +97 -0
- package/dist/api/pi-messages.d.ts.map +1 -0
- package/dist/api/pi-messages.js +305 -0
- package/dist/api/pi-messages.js.map +1 -0
- package/dist/api/pi-messages.lazy.d.ts +3 -0
- package/dist/api/pi-messages.lazy.d.ts.map +1 -0
- package/dist/api/pi-messages.lazy.js +3 -0
- package/dist/api/pi-messages.lazy.js.map +1 -0
- package/dist/api/simple-options.d.ts.map +1 -1
- package/dist/api/simple-options.js +1 -0
- package/dist/api/simple-options.js.map +1 -1
- package/dist/auth/credential-store.d.ts +2 -1
- package/dist/auth/credential-store.d.ts.map +1 -1
- package/dist/auth/credential-store.js +3 -0
- 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 +7 -5
- package/dist/auth/helpers.js.map +1 -1
- package/dist/auth/oauth/anthropic.d.ts +9 -0
- package/dist/auth/oauth/anthropic.d.ts.map +1 -0
- package/dist/{utils → auth}/oauth/anthropic.js +51 -116
- package/dist/auth/oauth/anthropic.js.map +1 -0
- package/dist/auth/oauth/device-code.d.ts.map +1 -0
- package/dist/auth/oauth/device-code.js.map +1 -0
- package/dist/auth/oauth/github-copilot.d.ts +6 -0
- package/dist/auth/oauth/github-copilot.d.ts.map +1 -0
- package/dist/{utils → auth}/oauth/github-copilot.js +18 -77
- package/dist/auth/oauth/github-copilot.js.map +1 -0
- package/dist/auth/oauth/google-antigravity.d.ts +21 -0
- package/dist/auth/oauth/google-antigravity.d.ts.map +1 -0
- package/dist/{utils → auth}/oauth/google-antigravity.js +79 -79
- package/dist/auth/oauth/google-antigravity.js.map +1 -0
- package/dist/auth/oauth/google-gemini-cli.d.ts +21 -0
- package/dist/auth/oauth/google-gemini-cli.d.ts.map +1 -0
- package/dist/{utils → auth}/oauth/google-gemini-cli.js +79 -79
- package/dist/auth/oauth/google-gemini-cli.js.map +1 -0
- package/dist/auth/oauth/kimi-coding.d.ts +10 -0
- package/dist/auth/oauth/kimi-coding.d.ts.map +1 -0
- package/dist/auth/oauth/kimi-coding.js +249 -0
- package/dist/auth/oauth/kimi-coding.js.map +1 -0
- package/dist/auth/oauth/load.d.ts +33 -0
- package/dist/auth/oauth/load.d.ts.map +1 -0
- package/dist/auth/oauth/load.js +74 -0
- package/dist/auth/oauth/load.js.map +1 -0
- package/dist/auth/oauth/oauth-page.d.ts.map +1 -0
- package/dist/auth/oauth/oauth-page.js.map +1 -0
- package/dist/auth/oauth/openai-codex.d.ts +9 -0
- package/dist/auth/oauth/openai-codex.d.ts.map +1 -0
- package/dist/{utils → auth}/oauth/openai-codex.js +61 -155
- package/dist/auth/oauth/openai-codex.js.map +1 -0
- package/dist/auth/oauth/opencode-go.d.ts +14 -0
- package/dist/auth/oauth/opencode-go.d.ts.map +1 -0
- package/dist/auth/oauth/opencode-go.js +41 -0
- package/dist/auth/oauth/opencode-go.js.map +1 -0
- package/dist/auth/oauth/openrouter.d.ts +15 -0
- package/dist/auth/oauth/openrouter.d.ts.map +1 -0
- package/dist/auth/oauth/openrouter.js +277 -0
- package/dist/auth/oauth/openrouter.js.map +1 -0
- package/dist/auth/oauth/pkce.d.ts.map +1 -0
- package/dist/auth/oauth/pkce.js.map +1 -0
- package/dist/auth/oauth/radius.d.ts +17 -0
- package/dist/auth/oauth/radius.d.ts.map +1 -0
- package/dist/auth/oauth/radius.js +318 -0
- package/dist/auth/oauth/radius.js.map +1 -0
- package/dist/auth/oauth/xai.d.ts +17 -0
- package/dist/auth/oauth/xai.d.ts.map +1 -0
- package/dist/{utils → auth}/oauth/xai.js +54 -89
- package/dist/auth/oauth/xai.js.map +1 -0
- package/dist/auth/resolve.d.ts +4 -4
- package/dist/auth/resolve.d.ts.map +1 -1
- package/dist/auth/resolve.js +36 -16
- package/dist/auth/resolve.js.map +1 -1
- package/dist/auth/types.d.ts +49 -10
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/bun-oauth.d.ts +3 -0
- package/dist/bun-oauth.d.ts.map +1 -0
- package/dist/bun-oauth.js +27 -0
- package/dist/bun-oauth.js.map +1 -0
- package/dist/cli.js +58 -76
- package/dist/cli.js.map +1 -1
- package/dist/compat/extension-oauth-types.d.ts +39 -0
- package/dist/compat/extension-oauth-types.d.ts.map +1 -0
- package/dist/compat/extension-oauth-types.js +2 -0
- package/dist/compat/extension-oauth-types.js.map +1 -0
- package/dist/compat.d.ts +2 -0
- package/dist/compat.d.ts.map +1 -1
- package/dist/compat.js +25 -8
- package/dist/compat.js.map +1 -1
- package/dist/env-api-keys.d.ts +3 -0
- package/dist/env-api-keys.d.ts.map +1 -1
- package/dist/env-api-keys.js +12 -3
- package/dist/env-api-keys.js.map +1 -1
- package/dist/image-models.generated.d.ts +75 -0
- package/dist/image-models.generated.d.ts.map +1 -1
- package/dist/image-models.generated.js +251 -176
- package/dist/image-models.generated.js.map +1 -1
- package/dist/images-models.d.ts +4 -2
- package/dist/images-models.d.ts.map +1 -1
- package/dist/images-models.js +5 -4
- package/dist/images-models.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/model-catalog.d.ts +17 -0
- package/dist/model-catalog.d.ts.map +1 -0
- package/dist/model-catalog.js +4 -0
- package/dist/model-catalog.js.map +1 -0
- package/dist/models-store.d.ts +32 -0
- package/dist/models-store.d.ts.map +1 -0
- package/dist/models-store.js +16 -0
- package/dist/models-store.js.map +1 -0
- package/dist/models.d.ts +66 -30
- package/dist/models.d.ts.map +1 -1
- package/dist/models.generated.d.ts +74 -22035
- package/dist/models.generated.d.ts.map +1 -1
- package/dist/models.generated.js +4 -0
- package/dist/models.generated.js.map +1 -1
- package/dist/models.js +213 -29
- package/dist/models.js.map +1 -1
- package/dist/oauth.d.ts +2 -1
- package/dist/oauth.d.ts.map +1 -1
- package/dist/oauth.js +1 -1
- package/dist/oauth.js.map +1 -1
- package/dist/providers/all.d.ts +13 -6
- package/dist/providers/all.d.ts.map +1 -1
- package/dist/providers/all.js +13 -0
- package/dist/providers/all.js.map +1 -1
- package/dist/providers/amazon-bedrock.d.ts.map +1 -1
- package/dist/providers/amazon-bedrock.js +54 -8
- package/dist/providers/amazon-bedrock.js.map +1 -1
- package/dist/providers/amazon-bedrock.models.d.ts +3 -1931
- package/dist/providers/amazon-bedrock.models.d.ts.map +1 -1
- package/dist/providers/amazon-bedrock.models.js +3 -1838
- package/dist/providers/amazon-bedrock.models.js.map +1 -1
- package/dist/providers/ant-ling.models.d.ts +3 -85
- package/dist/providers/ant-ling.models.d.ts.map +1 -1
- package/dist/providers/ant-ling.models.js +3 -57
- package/dist/providers/ant-ling.models.js.map +1 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +31 -4
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/anthropic.models.d.ts +3 -283
- package/dist/providers/anthropic.models.d.ts.map +1 -1
- package/dist/providers/anthropic.models.js +3 -252
- package/dist/providers/anthropic.models.js.map +1 -1
- package/dist/providers/azure-openai-responses.models.d.ts +3 -886
- package/dist/providers/azure-openai-responses.models.d.ts.map +1 -1
- package/dist/providers/azure-openai-responses.models.js +3 -811
- package/dist/providers/azure-openai-responses.models.js.map +1 -1
- package/dist/providers/cerebras.models.d.ts +3 -65
- package/dist/providers/cerebras.models.d.ts.map +1 -1
- package/dist/providers/cerebras.models.js +3 -56
- package/dist/providers/cerebras.models.js.map +1 -1
- package/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -1
- package/dist/providers/cloudflare-ai-gateway.js +4 -3
- package/dist/providers/cloudflare-ai-gateway.js.map +1 -1
- package/dist/providers/cloudflare-ai-gateway.models.d.ts +3 -795
- package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -1
- package/dist/providers/cloudflare-ai-gateway.models.js +3 -683
- 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 +22 -26
- package/dist/providers/cloudflare-auth.js.map +1 -1
- package/dist/providers/cloudflare-stream.d.ts +8 -0
- package/dist/providers/cloudflare-stream.d.ts.map +1 -0
- package/dist/providers/cloudflare-stream.js +21 -0
- package/dist/providers/cloudflare-stream.js.map +1 -0
- package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -1
- package/dist/providers/cloudflare-workers-ai.js +2 -1
- package/dist/providers/cloudflare-workers-ai.js.map +1 -1
- package/dist/providers/cloudflare-workers-ai.models.d.ts +3 -301
- package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -1
- package/dist/providers/cloudflare-workers-ai.models.js +3 -236
- package/dist/providers/cloudflare-workers-ai.models.js.map +1 -1
- package/dist/providers/data/.manifest.json +1 -0
- package/dist/providers/data/amazon-bedrock.json +1 -0
- package/dist/providers/data/ant-ling.json +1 -0
- package/dist/providers/data/anthropic.json +1 -0
- package/dist/providers/data/azure-openai-responses.json +1 -0
- package/dist/providers/data/cerebras.json +1 -0
- package/dist/providers/data/cloudflare-ai-gateway.json +1 -0
- package/dist/providers/data/cloudflare-workers-ai.json +1 -0
- package/dist/providers/data/deepseek.json +1 -0
- package/dist/providers/data/fireworks.json +1 -0
- package/dist/providers/data/github-copilot.json +1 -0
- package/dist/providers/data/google-vertex.json +1 -0
- package/dist/providers/data/google.json +1 -0
- package/dist/providers/data/groq.json +1 -0
- package/dist/providers/data/huggingface.json +1 -0
- package/dist/providers/data/kimi-coding.json +1 -0
- package/dist/providers/data/minimax-cn.json +1 -0
- package/dist/providers/data/minimax.json +1 -0
- package/dist/providers/data/mistral.json +1 -0
- package/dist/providers/data/moonshotai-cn.json +1 -0
- package/dist/providers/data/moonshotai.json +1 -0
- package/dist/providers/data/nvidia.json +1 -0
- package/dist/providers/data/openai-codex.json +1 -0
- package/dist/providers/data/openai.json +1 -0
- package/dist/providers/data/opencode-go.json +1 -0
- package/dist/providers/data/opencode.json +1 -0
- package/dist/providers/data/openrouter.json +1 -0
- package/dist/providers/data/qwen-token-plan-cn.json +1 -0
- package/dist/providers/data/qwen-token-plan.json +1 -0
- package/dist/providers/data/together.json +1 -0
- package/dist/providers/data/vercel-ai-gateway.json +1 -0
- package/dist/providers/data/xai.json +1 -0
- package/dist/providers/data/xiaomi-token-plan-ams.json +1 -0
- package/dist/providers/data/xiaomi-token-plan-cn.json +1 -0
- package/dist/providers/data/xiaomi-token-plan-sgp.json +1 -0
- package/dist/providers/data/xiaomi.json +1 -0
- package/dist/providers/data/zai-coding-cn.json +1 -0
- package/dist/providers/data/zai.json +1 -0
- package/dist/providers/deepseek.models.d.ts +3 -62
- package/dist/providers/deepseek.models.d.ts.map +1 -1
- package/dist/providers/deepseek.models.js +3 -40
- package/dist/providers/deepseek.models.js.map +1 -1
- package/dist/providers/faux.d.ts.map +1 -1
- package/dist/providers/faux.js +4 -1
- package/dist/providers/faux.js.map +1 -1
- package/dist/providers/fireworks.models.d.ts +3 -380
- package/dist/providers/fireworks.models.d.ts.map +1 -1
- package/dist/providers/fireworks.models.js +3 -292
- 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 +11 -1
- package/dist/providers/github-copilot.js.map +1 -1
- package/dist/providers/github-copilot.models.d.ts +3 -790
- package/dist/providers/github-copilot.models.d.ts.map +1 -1
- package/dist/providers/github-copilot.models.js +3 -538
- 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 +56 -5
- package/dist/providers/google-vertex.js.map +1 -1
- package/dist/providers/google-vertex.models.d.ts +3 -201
- package/dist/providers/google-vertex.models.d.ts.map +1 -1
- package/dist/providers/google-vertex.models.js +3 -179
- package/dist/providers/google-vertex.models.js.map +1 -1
- package/dist/providers/google.models.d.ts +3 -327
- package/dist/providers/google.models.d.ts.map +1 -1
- package/dist/providers/google.models.js +3 -285
- package/dist/providers/google.models.js.map +1 -1
- package/dist/providers/groq.models.d.ts +3 -127
- package/dist/providers/groq.models.d.ts.map +1 -1
- package/dist/providers/groq.models.js +3 -122
- package/dist/providers/groq.models.js.map +1 -1
- package/dist/providers/huggingface.models.d.ts +3 -982
- package/dist/providers/huggingface.models.d.ts.map +1 -1
- package/dist/providers/huggingface.models.js +3 -884
- package/dist/providers/huggingface.models.js.map +1 -1
- package/dist/providers/kimi-coding.d.ts.map +1 -1
- package/dist/providers/kimi-coding.js +10 -2
- package/dist/providers/kimi-coding.js.map +1 -1
- package/dist/providers/kimi-coding.models.d.ts +3 -62
- package/dist/providers/kimi-coding.models.d.ts.map +1 -1
- package/dist/providers/kimi-coding.models.js +3 -56
- package/dist/providers/kimi-coding.models.js.map +1 -1
- package/dist/providers/minimax-cn.models.d.ts +3 -53
- package/dist/providers/minimax-cn.models.d.ts.map +1 -1
- package/dist/providers/minimax-cn.models.js +3 -53
- package/dist/providers/minimax-cn.models.js.map +1 -1
- package/dist/providers/minimax.models.d.ts +3 -53
- package/dist/providers/minimax.models.d.ts.map +1 -1
- package/dist/providers/minimax.models.js +3 -53
- package/dist/providers/minimax.models.js.map +1 -1
- package/dist/providers/mistral.models.d.ts +3 -512
- package/dist/providers/mistral.models.d.ts.map +1 -1
- package/dist/providers/mistral.models.js +3 -512
- package/dist/providers/mistral.models.js.map +1 -1
- package/dist/providers/moonshotai-cn.models.d.ts +3 -233
- package/dist/providers/moonshotai-cn.models.d.ts.map +1 -1
- package/dist/providers/moonshotai-cn.models.js +3 -166
- package/dist/providers/moonshotai-cn.models.js.map +1 -1
- package/dist/providers/moonshotai.models.d.ts +3 -233
- package/dist/providers/moonshotai.models.d.ts.map +1 -1
- package/dist/providers/moonshotai.models.js +3 -166
- package/dist/providers/moonshotai.models.js.map +1 -1
- package/dist/providers/nvidia.models.d.ts +3 -562
- package/dist/providers/nvidia.models.d.ts.map +1 -1
- package/dist/providers/nvidia.models.js +3 -382
- package/dist/providers/nvidia.models.js.map +1 -1
- package/dist/providers/openai-codex.d.ts.map +1 -1
- package/dist/providers/openai-codex.js +1 -1
- package/dist/providers/openai-codex.js.map +1 -1
- package/dist/providers/openai-codex.models.d.ts +3 -187
- package/dist/providers/openai-codex.models.d.ts.map +1 -1
- package/dist/providers/openai-codex.models.js +3 -133
- package/dist/providers/openai-codex.models.js.map +1 -1
- package/dist/providers/openai.models.d.ts +3 -936
- package/dist/providers/openai.models.d.ts.map +1 -1
- package/dist/providers/openai.models.js +3 -818
- package/dist/providers/openai.models.js.map +1 -1
- package/dist/providers/opencode-go.d.ts +1 -1
- package/dist/providers/opencode-go.d.ts.map +1 -1
- package/dist/providers/opencode-go.js +15 -3
- package/dist/providers/opencode-go.js.map +1 -1
- package/dist/providers/opencode-go.models.d.ts +3 -308
- package/dist/providers/opencode-go.models.d.ts.map +1 -1
- package/dist/providers/opencode-go.models.js +3 -237
- package/dist/providers/opencode-go.models.js.map +1 -1
- package/dist/providers/opencode.models.d.ts +3 -1183
- package/dist/providers/opencode.models.d.ts.map +1 -1
- package/dist/providers/opencode.models.js +3 -977
- package/dist/providers/opencode.models.js.map +1 -1
- package/dist/providers/openrouter-images.d.ts.map +1 -1
- package/dist/providers/openrouter-images.js +10 -2
- package/dist/providers/openrouter-images.js.map +1 -1
- package/dist/providers/openrouter.d.ts.map +1 -1
- package/dist/providers/openrouter.js +10 -2
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/openrouter.models.d.ts +3 -5705
- package/dist/providers/openrouter.models.d.ts.map +1 -1
- package/dist/providers/openrouter.models.js +3 -4873
- package/dist/providers/openrouter.models.js.map +1 -1
- package/dist/providers/qwen-token-plan-cn.d.ts +3 -0
- package/dist/providers/qwen-token-plan-cn.d.ts.map +1 -0
- package/dist/providers/qwen-token-plan-cn.js +15 -0
- package/dist/providers/qwen-token-plan-cn.js.map +1 -0
- package/dist/providers/qwen-token-plan-cn.models.d.ts +4 -0
- package/dist/providers/qwen-token-plan-cn.models.d.ts.map +1 -0
- package/dist/providers/qwen-token-plan-cn.models.js +6 -0
- package/dist/providers/qwen-token-plan-cn.models.js.map +1 -0
- package/dist/providers/qwen-token-plan.d.ts +3 -0
- package/dist/providers/qwen-token-plan.d.ts.map +1 -0
- package/dist/providers/qwen-token-plan.js +15 -0
- package/dist/providers/qwen-token-plan.js.map +1 -0
- package/dist/providers/qwen-token-plan.models.d.ts +4 -0
- package/dist/providers/qwen-token-plan.models.d.ts.map +1 -0
- package/dist/providers/qwen-token-plan.models.js +6 -0
- package/dist/providers/qwen-token-plan.models.js.map +1 -0
- package/dist/providers/radius-config.d.ts +26 -0
- package/dist/providers/radius-config.d.ts.map +1 -0
- package/dist/providers/radius-config.js +63 -0
- package/dist/providers/radius-config.js.map +1 -0
- package/dist/providers/radius.d.ts +9 -0
- package/dist/providers/radius.d.ts.map +1 -0
- package/dist/providers/radius.js +54 -0
- package/dist/providers/radius.js.map +1 -0
- package/dist/providers/together.models.d.ts +3 -597
- package/dist/providers/together.models.d.ts.map +1 -1
- package/dist/providers/together.models.js +3 -377
- package/dist/providers/together.models.js.map +1 -1
- package/dist/providers/vercel-ai-gateway.models.d.ts +3 -3391
- package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
- package/dist/providers/vercel-ai-gateway.models.js +3 -3327
- 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 +11 -3
- package/dist/providers/xai.js.map +1 -1
- package/dist/providers/xai.models.d.ts +3 -178
- package/dist/providers/xai.models.d.ts.map +1 -1
- package/dist/providers/xai.models.js +3 -146
- package/dist/providers/xai.models.js.map +1 -1
- package/dist/providers/xiaomi-token-plan-ams.models.d.ts +3 -65
- package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -1
- package/dist/providers/xiaomi-token-plan-ams.models.js +3 -56
- package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -1
- package/dist/providers/xiaomi-token-plan-cn.models.d.ts +3 -65
- package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -1
- package/dist/providers/xiaomi-token-plan-cn.models.js +3 -56
- package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -1
- package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +3 -65
- package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -1
- package/dist/providers/xiaomi-token-plan-sgp.models.js +3 -56
- package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -1
- package/dist/providers/xiaomi.models.d.ts +3 -128
- package/dist/providers/xiaomi.models.d.ts.map +1 -1
- package/dist/providers/xiaomi.models.js +3 -110
- package/dist/providers/xiaomi.models.js.map +1 -1
- package/dist/providers/zai-coding-cn.models.d.ts +3 -152
- package/dist/providers/zai-coding-cn.models.d.ts.map +1 -1
- package/dist/providers/zai-coding-cn.models.js +3 -111
- package/dist/providers/zai-coding-cn.models.js.map +1 -1
- package/dist/providers/zai.models.d.ts +3 -152
- package/dist/providers/zai.models.d.ts.map +1 -1
- package/dist/providers/zai.models.js +3 -111
- package/dist/providers/zai.models.js.map +1 -1
- package/dist/types.d.ts +74 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/deferred-tools.d.ts +9 -0
- package/dist/utils/deferred-tools.d.ts.map +1 -0
- package/dist/utils/deferred-tools.js +36 -0
- package/dist/utils/deferred-tools.js.map +1 -0
- package/dist/utils/error-body.d.ts.map +1 -1
- package/dist/utils/error-body.js +8 -3
- package/dist/utils/error-body.js.map +1 -1
- package/dist/utils/estimate.d.ts.map +1 -1
- package/dist/utils/estimate.js +18 -5
- package/dist/utils/estimate.js.map +1 -1
- package/dist/utils/overflow.d.ts +1 -0
- package/dist/utils/overflow.d.ts.map +1 -1
- package/dist/utils/overflow.js +3 -0
- package/dist/utils/overflow.js.map +1 -1
- package/dist/utils/provider-retry.d.ts +16 -0
- package/dist/utils/provider-retry.d.ts.map +1 -0
- package/dist/utils/provider-retry.js +94 -0
- package/dist/utils/provider-retry.js.map +1 -0
- package/dist/utils/retry.d.ts +41 -0
- package/dist/utils/retry.d.ts.map +1 -1
- package/dist/utils/retry.js +83 -0
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/text.d.ts +6 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +10 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/utils/uuid.d.ts +3 -0
- package/dist/utils/uuid.d.ts.map +1 -0
- package/dist/utils/uuid.js +47 -0
- package/dist/utils/uuid.js.map +1 -0
- package/package.json +12 -6
- package/dist/utils/oauth/anthropic.d.ts +0 -27
- package/dist/utils/oauth/anthropic.d.ts.map +0 -1
- package/dist/utils/oauth/anthropic.js.map +0 -1
- package/dist/utils/oauth/device-code.d.ts.map +0 -1
- package/dist/utils/oauth/device-code.js.map +0 -1
- package/dist/utils/oauth/github-copilot.d.ts +0 -32
- package/dist/utils/oauth/github-copilot.d.ts.map +0 -1
- package/dist/utils/oauth/github-copilot.js.map +0 -1
- package/dist/utils/oauth/google-antigravity.d.ts +0 -26
- package/dist/utils/oauth/google-antigravity.d.ts.map +0 -1
- package/dist/utils/oauth/google-antigravity.js.map +0 -1
- package/dist/utils/oauth/google-gemini-cli.d.ts +0 -26
- package/dist/utils/oauth/google-gemini-cli.d.ts.map +0 -1
- package/dist/utils/oauth/google-gemini-cli.js.map +0 -1
- package/dist/utils/oauth/index.d.ts +0 -60
- package/dist/utils/oauth/index.d.ts.map +0 -1
- package/dist/utils/oauth/index.js +0 -130
- package/dist/utils/oauth/index.js.map +0 -1
- package/dist/utils/oauth/load.d.ts +0 -6
- package/dist/utils/oauth/load.d.ts.map +0 -1
- package/dist/utils/oauth/load.js +0 -23
- package/dist/utils/oauth/load.js.map +0 -1
- package/dist/utils/oauth/oauth-page.d.ts.map +0 -1
- package/dist/utils/oauth/oauth-page.js.map +0 -1
- package/dist/utils/oauth/openai-codex.d.ts +0 -45
- package/dist/utils/oauth/openai-codex.d.ts.map +0 -1
- package/dist/utils/oauth/openai-codex.js.map +0 -1
- package/dist/utils/oauth/opencode-go.d.ts +0 -23
- package/dist/utils/oauth/opencode-go.d.ts.map +0 -1
- package/dist/utils/oauth/opencode-go.js +0 -46
- package/dist/utils/oauth/opencode-go.js.map +0 -1
- package/dist/utils/oauth/pkce.d.ts.map +0 -1
- package/dist/utils/oauth/pkce.js.map +0 -1
- package/dist/utils/oauth/types.d.ts +0 -64
- package/dist/utils/oauth/types.d.ts.map +0 -1
- package/dist/utils/oauth/types.js +0 -2
- package/dist/utils/oauth/types.js.map +0 -1
- package/dist/utils/oauth/xai.d.ts +0 -34
- package/dist/utils/oauth/xai.d.ts.map +0 -1
- package/dist/utils/oauth/xai.js.map +0 -1
- /package/dist/{utils → auth}/oauth/device-code.d.ts +0 -0
- /package/dist/{utils → auth}/oauth/device-code.js +0 -0
- /package/dist/{utils → auth}/oauth/oauth-page.d.ts +0 -0
- /package/dist/{utils → auth}/oauth/oauth-page.js +0 -0
- /package/dist/{utils → auth}/oauth/pkce.d.ts +0 -0
- /package/dist/{utils → auth}/oauth/pkce.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-messages.d.ts","sourceRoot":"","sources":["../../src/api/anthropic-messages.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAU1C,OAAO,KAAK,EAWX,mBAAmB,EAEnB,cAAc,EACd,aAAa,EAMb,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic-messages.d.ts","sourceRoot":"","sources":["../../src/api/anthropic-messages.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAU1C,OAAO,KAAK,EAWX,mBAAmB,EAEnB,cAAc,EACd,aAAa,EAMb,MAAM,aAAa,CAAC;AAuIrB,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAE1E,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG,SAAS,CAAC;AAkChE,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACtD;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACnB;AAiOD,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,oBAAoB,EAAE,gBAAgB,CA+RzE,CAAC;AA2BF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,oBAAoB,EAAE,mBAAmB,CAwClF,CAAC"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import Anthropic from "@anthropic-ai/sdk";
|
|
2
2
|
import { calculateCost } from "../models.js";
|
|
3
|
+
import { splitDeferredTools } from "../utils/deferred-tools.js";
|
|
3
4
|
import { AssistantMessageEventStream } from "../utils/event-stream.js";
|
|
4
5
|
import { headersToRecord } from "../utils/headers.js";
|
|
5
6
|
import { parseJsonWithRepair, parseStreamingJson } from "../utils/json-parse.js";
|
|
6
7
|
import { getProviderEnvValue } from "../utils/provider-env.js";
|
|
8
|
+
import { retryProviderRequest } from "../utils/provider-retry.js";
|
|
7
9
|
import { sanitizeSurrogates } from "../utils/sanitize-unicode.js";
|
|
10
|
+
import { resolveJsonSchemaStrictSampling } from "./constrained-sampling.js";
|
|
8
11
|
import { buildCopilotDynamicHeaders, hasCopilotVisionInput } from "./github-copilot-headers.js";
|
|
9
12
|
import { adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToContext } from "./simple-options.js";
|
|
10
13
|
import { transformMessages } from "./transform-messages.js";
|
|
@@ -114,8 +117,25 @@ function getAnthropicCompat(model) {
|
|
|
114
117
|
supportsCacheControlOnTools: model.compat?.supportsCacheControlOnTools ?? true,
|
|
115
118
|
supportsTemperature: model.compat?.supportsTemperature ?? true,
|
|
116
119
|
allowEmptySignature: model.compat?.allowEmptySignature ?? false,
|
|
120
|
+
supportsStrictTools: model.compat?.supportsStrictTools ?? false,
|
|
121
|
+
supportsToolReferences: model.compat?.supportsToolReferences ?? defaultSupportsToolReferences(model),
|
|
117
122
|
};
|
|
118
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Default for `supportsToolReferences`: first-party Anthropic models except
|
|
126
|
+
* Haiku (rejects client-side tool_reference blocks) and models that predate
|
|
127
|
+
* tool search (Claude 3.x, Opus/Sonnet 4.0, Opus 4.1).
|
|
128
|
+
*/
|
|
129
|
+
function defaultSupportsToolReferences(model) {
|
|
130
|
+
if (model.provider !== "anthropic" || model.id.includes("haiku"))
|
|
131
|
+
return false;
|
|
132
|
+
const version = model.id.match(/^claude-(?:opus|sonnet|fable)-(\d+)(?:-(\d+))?(?:-|$)/);
|
|
133
|
+
if (!version)
|
|
134
|
+
return false;
|
|
135
|
+
const major = Number(version[1]);
|
|
136
|
+
const minor = version[2] && version[2].length < 8 ? Number(version[2]) : 0;
|
|
137
|
+
return major > 4 || (major === 4 && minor >= 5);
|
|
138
|
+
}
|
|
119
139
|
function mergeHeaders(...headerSources) {
|
|
120
140
|
const merged = {};
|
|
121
141
|
for (const headers of headerSources) {
|
|
@@ -313,7 +333,7 @@ export const stream = (model, context, options) => {
|
|
|
313
333
|
totalTokens: 0,
|
|
314
334
|
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
|
315
335
|
},
|
|
316
|
-
stopReason: "
|
|
336
|
+
stopReason: "pending",
|
|
317
337
|
timestamp: Date.now(),
|
|
318
338
|
};
|
|
319
339
|
try {
|
|
@@ -336,7 +356,7 @@ export const stream = (model, context, options) => {
|
|
|
336
356
|
}
|
|
337
357
|
const cacheRetention = resolveCacheRetention(options?.cacheRetention, options?.env);
|
|
338
358
|
const cacheSessionId = cacheRetention === "none" ? undefined : options?.sessionId;
|
|
339
|
-
const created = createClient(model, apiKey, options?.interleavedThinking ?? true, shouldUseFineGrainedToolStreamingBeta(model, context), options?.headers, copilotDynamicHeaders, cacheSessionId);
|
|
359
|
+
const created = createClient(model, apiKey, options?.interleavedThinking ?? true, shouldUseFineGrainedToolStreamingBeta(model, context), options?.headers, options?.fetch, copilotDynamicHeaders, cacheSessionId);
|
|
340
360
|
client = created.client;
|
|
341
361
|
isOAuth = created.isOAuthToken;
|
|
342
362
|
}
|
|
@@ -348,9 +368,13 @@ export const stream = (model, context, options) => {
|
|
|
348
368
|
const requestOptions = {
|
|
349
369
|
...(options?.signal ? { signal: options.signal } : {}),
|
|
350
370
|
...(options?.timeoutMs !== undefined ? { timeout: options.timeoutMs } : {}),
|
|
351
|
-
maxRetries:
|
|
371
|
+
maxRetries: 0,
|
|
352
372
|
};
|
|
353
|
-
const response = await client.messages.create({ ...params, stream: true }, requestOptions).asResponse()
|
|
373
|
+
const response = await retryProviderRequest(() => client.messages.create({ ...params, stream: true }, requestOptions).asResponse(), {
|
|
374
|
+
maxRetries: options?.maxRetries,
|
|
375
|
+
maxRetryDelayMs: options?.maxRetryDelayMs,
|
|
376
|
+
signal: options?.signal,
|
|
377
|
+
});
|
|
354
378
|
await options?.onResponse?.({ status: response.status, headers: headersToRecord(response.headers) }, model);
|
|
355
379
|
stream.push({ type: "start", partial: output });
|
|
356
380
|
const blocks = output.content;
|
|
@@ -502,6 +526,7 @@ export const stream = (model, context, options) => {
|
|
|
502
526
|
}
|
|
503
527
|
else if (event.type === "message_delta") {
|
|
504
528
|
if (event.delta.stop_reason) {
|
|
529
|
+
output.rawStopReason = event.delta.stop_reason;
|
|
505
530
|
const stopReasonResult = mapStopReason(event.delta.stop_reason, event.delta.stop_details);
|
|
506
531
|
output.stopReason = stopReasonResult.stopReason;
|
|
507
532
|
if (stopReasonResult.errorMessage) {
|
|
@@ -510,25 +535,27 @@ export const stream = (model, context, options) => {
|
|
|
510
535
|
}
|
|
511
536
|
// Only update usage fields if present (not null).
|
|
512
537
|
// Preserves input_tokens from message_start when proxies omit it in message_delta.
|
|
513
|
-
if (event.usage
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
.
|
|
530
|
-
|
|
531
|
-
|
|
538
|
+
if (event.usage) {
|
|
539
|
+
if (event.usage.input_tokens != null) {
|
|
540
|
+
output.usage.input = event.usage.input_tokens;
|
|
541
|
+
}
|
|
542
|
+
if (event.usage.output_tokens != null) {
|
|
543
|
+
output.usage.output = event.usage.output_tokens;
|
|
544
|
+
}
|
|
545
|
+
if (event.usage.cache_read_input_tokens != null) {
|
|
546
|
+
output.usage.cacheRead = event.usage.cache_read_input_tokens;
|
|
547
|
+
}
|
|
548
|
+
if (event.usage.cache_creation_input_tokens != null) {
|
|
549
|
+
output.usage.cacheWrite = event.usage.cache_creation_input_tokens;
|
|
550
|
+
}
|
|
551
|
+
// Anthropic reports reasoning tokens in `output_tokens_details.thinking_tokens` on the
|
|
552
|
+
// final message_delta usage (a subset of output_tokens). SDK 0.91.1 omits the field from
|
|
553
|
+
// its Usage type, so read it through a narrow cast. Verified against the live API.
|
|
554
|
+
const thinkingTokens = event.usage
|
|
555
|
+
.output_tokens_details?.thinking_tokens;
|
|
556
|
+
if (thinkingTokens != null) {
|
|
557
|
+
output.usage.reasoning = thinkingTokens;
|
|
558
|
+
}
|
|
532
559
|
}
|
|
533
560
|
// Anthropic doesn't provide total_tokens, compute from components
|
|
534
561
|
output.usage.totalTokens =
|
|
@@ -539,6 +566,9 @@ export const stream = (model, context, options) => {
|
|
|
539
566
|
if (options?.signal?.aborted) {
|
|
540
567
|
throw new Error("Request was aborted");
|
|
541
568
|
}
|
|
569
|
+
if (output.stopReason === "pending") {
|
|
570
|
+
throw new Error("Anthropic stream ended without a stop reason");
|
|
571
|
+
}
|
|
542
572
|
if (output.stopReason === "aborted" || output.stopReason === "error") {
|
|
543
573
|
throw new Error(output.errorMessage || "An unknown error occurred");
|
|
544
574
|
}
|
|
@@ -610,7 +640,7 @@ export const streamSimple = (model, context, options) => {
|
|
|
610
640
|
function isOAuthToken(apiKey) {
|
|
611
641
|
return apiKey.includes("sk-ant-oat");
|
|
612
642
|
}
|
|
613
|
-
function createClient(model, apiKey, interleavedThinking, useFineGrainedToolStreamingBeta, optionsHeaders, dynamicHeaders, sessionId) {
|
|
643
|
+
function createClient(model, apiKey, interleavedThinking, useFineGrainedToolStreamingBeta, optionsHeaders, fetch, dynamicHeaders, sessionId) {
|
|
614
644
|
// Adaptive thinking models have interleaved thinking built in, so skip the beta header.
|
|
615
645
|
const needsInterleavedBeta = interleavedThinking && model.compat?.forceAdaptiveThinking !== true;
|
|
616
646
|
const betaFeatures = [];
|
|
@@ -627,6 +657,7 @@ function createClient(model, apiKey, interleavedThinking, useFineGrainedToolStre
|
|
|
627
657
|
authToken: apiKey ?? null,
|
|
628
658
|
baseURL: model.baseUrl,
|
|
629
659
|
dangerouslyAllowBrowser: true,
|
|
660
|
+
fetch,
|
|
630
661
|
defaultHeaders: mergeHeaders({
|
|
631
662
|
accept: "application/json",
|
|
632
663
|
"anthropic-dangerous-direct-browser-access": "true",
|
|
@@ -642,6 +673,7 @@ function createClient(model, apiKey, interleavedThinking, useFineGrainedToolStre
|
|
|
642
673
|
authToken: apiKey,
|
|
643
674
|
baseURL: model.baseUrl,
|
|
644
675
|
dangerouslyAllowBrowser: true,
|
|
676
|
+
fetch,
|
|
645
677
|
defaultHeaders: mergeHeaders({
|
|
646
678
|
accept: "application/json",
|
|
647
679
|
"anthropic-dangerous-direct-browser-access": "true",
|
|
@@ -664,6 +696,7 @@ function createClient(model, apiKey, interleavedThinking, useFineGrainedToolStre
|
|
|
664
696
|
authToken: null,
|
|
665
697
|
baseURL: model.baseUrl,
|
|
666
698
|
dangerouslyAllowBrowser: true,
|
|
699
|
+
fetch,
|
|
667
700
|
defaultHeaders,
|
|
668
701
|
});
|
|
669
702
|
return { client, isOAuthToken: false };
|
|
@@ -671,9 +704,19 @@ function createClient(model, apiKey, interleavedThinking, useFineGrainedToolStre
|
|
|
671
704
|
function buildParams(model, context, isOAuthToken, options) {
|
|
672
705
|
const { cacheControl } = getCacheControl(model, options?.cacheRetention, options?.env);
|
|
673
706
|
const compat = getAnthropicCompat(model);
|
|
707
|
+
const transformedMessages = transformMessages(context.messages, model, normalizeToolCallId);
|
|
708
|
+
const normalizeToolName = isOAuthToken ? toClaudeCodeName : (name) => name;
|
|
709
|
+
const toolPlacement = splitDeferredTools({ ...context, messages: transformedMessages }, compat.supportsToolReferences, normalizeToolName);
|
|
710
|
+
let immediateTools = toolPlacement.immediate;
|
|
711
|
+
let deferredTools = [...toolPlacement.deferred.values()];
|
|
712
|
+
if (immediateTools.length === 0 && deferredTools.length > 0) {
|
|
713
|
+
immediateTools = deferredTools;
|
|
714
|
+
deferredTools = [];
|
|
715
|
+
}
|
|
716
|
+
const deferredToolNames = new Set(deferredTools.map((tool) => normalizeToolName(tool.name)));
|
|
674
717
|
const params = {
|
|
675
718
|
model: model.id,
|
|
676
|
-
messages: convertMessages(
|
|
719
|
+
messages: convertMessages(transformedMessages, isOAuthToken, cacheControl, compat.allowEmptySignature, deferredToolNames, normalizeToolName),
|
|
677
720
|
max_tokens: options?.maxTokens ?? model.maxTokens,
|
|
678
721
|
stream: true,
|
|
679
722
|
};
|
|
@@ -708,8 +751,11 @@ function buildParams(model, context, isOAuthToken, options) {
|
|
|
708
751
|
if (options?.temperature !== undefined && !options?.thinkingEnabled && compat.supportsTemperature) {
|
|
709
752
|
params.temperature = options.temperature;
|
|
710
753
|
}
|
|
711
|
-
if (
|
|
712
|
-
params.tools =
|
|
754
|
+
if (immediateTools.length > 0 || deferredTools.length > 0) {
|
|
755
|
+
params.tools = [
|
|
756
|
+
...convertTools(immediateTools, isOAuthToken, compat.supportsEagerToolInputStreaming, compat.supportsStrictTools, compat.supportsCacheControlOnTools ? cacheControl : undefined),
|
|
757
|
+
...convertTools(deferredTools, isOAuthToken, compat.supportsEagerToolInputStreaming, compat.supportsStrictTools, undefined, true),
|
|
758
|
+
];
|
|
713
759
|
}
|
|
714
760
|
// Configure thinking mode: adaptive, budget-based, or explicitly disabled.
|
|
715
761
|
if (model.reasoning) {
|
|
@@ -761,10 +807,37 @@ function buildParams(model, context, isOAuthToken, options) {
|
|
|
761
807
|
function normalizeToolCallId(id) {
|
|
762
808
|
return id.replace(/[^a-zA-Z0-9_-]/g, "_").slice(0, 64);
|
|
763
809
|
}
|
|
764
|
-
function
|
|
810
|
+
function convertToolResult(msg, isOAuthToken, deferredToolNames, loadedToolNames, normalizeToolName) {
|
|
811
|
+
const references = [];
|
|
812
|
+
for (const name of msg.addedToolNames ?? []) {
|
|
813
|
+
const normalizedName = normalizeToolName(name);
|
|
814
|
+
if (!deferredToolNames.has(normalizedName) || loadedToolNames.has(normalizedName))
|
|
815
|
+
continue;
|
|
816
|
+
loadedToolNames.add(normalizedName);
|
|
817
|
+
references.push({
|
|
818
|
+
type: "tool_reference",
|
|
819
|
+
tool_name: isOAuthToken ? toClaudeCodeName(name) : name,
|
|
820
|
+
});
|
|
821
|
+
}
|
|
822
|
+
const convertedContent = convertContentBlocks(msg.content);
|
|
823
|
+
// Anthropic rejects tool references mixed with ordinary tool-result content.
|
|
824
|
+
return {
|
|
825
|
+
toolResult: {
|
|
826
|
+
type: "tool_result",
|
|
827
|
+
tool_use_id: msg.toolCallId,
|
|
828
|
+
content: references.length > 0 ? references : convertedContent,
|
|
829
|
+
is_error: msg.isError,
|
|
830
|
+
},
|
|
831
|
+
siblingContent: references.length === 0
|
|
832
|
+
? []
|
|
833
|
+
: typeof convertedContent === "string"
|
|
834
|
+
? [{ type: "text", text: convertedContent }]
|
|
835
|
+
: convertedContent,
|
|
836
|
+
};
|
|
837
|
+
}
|
|
838
|
+
function convertMessages(transformedMessages, isOAuthToken, cacheControl, allowEmptySignature = false, deferredToolNames = new Set(), normalizeToolName = (name) => name) {
|
|
765
839
|
const params = [];
|
|
766
|
-
|
|
767
|
-
const transformedMessages = transformMessages(messages, model, normalizeToolCallId);
|
|
840
|
+
const loadedToolNames = new Set();
|
|
768
841
|
for (let i = 0; i < transformedMessages.length; i++) {
|
|
769
842
|
const msg = transformedMessages[i];
|
|
770
843
|
if (msg.role === "user") {
|
|
@@ -873,33 +946,22 @@ function convertMessages(messages, model, isOAuthToken, cacheControl, allowEmpty
|
|
|
873
946
|
});
|
|
874
947
|
}
|
|
875
948
|
else if (msg.role === "toolResult") {
|
|
876
|
-
// Collect all consecutive toolResult messages, needed for z.ai Anthropic endpoint
|
|
949
|
+
// Collect all consecutive toolResult messages, needed for z.ai Anthropic endpoint.
|
|
877
950
|
const toolResults = [];
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
type: "tool_result",
|
|
881
|
-
tool_use_id: msg.toolCallId,
|
|
882
|
-
content: convertContentBlocks(msg.content),
|
|
883
|
-
is_error: msg.isError,
|
|
884
|
-
});
|
|
885
|
-
// Look ahead for consecutive toolResult messages
|
|
886
|
-
let j = i + 1;
|
|
951
|
+
const siblingContent = [];
|
|
952
|
+
let j = i;
|
|
887
953
|
while (j < transformedMessages.length && transformedMessages[j].role === "toolResult") {
|
|
888
|
-
const
|
|
889
|
-
toolResults.push(
|
|
890
|
-
|
|
891
|
-
tool_use_id: nextMsg.toolCallId,
|
|
892
|
-
content: convertContentBlocks(nextMsg.content),
|
|
893
|
-
is_error: nextMsg.isError,
|
|
894
|
-
});
|
|
954
|
+
const converted = convertToolResult(transformedMessages[j], isOAuthToken, deferredToolNames, loadedToolNames, normalizeToolName);
|
|
955
|
+
toolResults.push(converted.toolResult);
|
|
956
|
+
siblingContent.push(...converted.siblingContent);
|
|
895
957
|
j++;
|
|
896
958
|
}
|
|
897
|
-
// Skip the messages we've already processed
|
|
959
|
+
// Skip the messages we've already processed.
|
|
898
960
|
i = j - 1;
|
|
899
|
-
//
|
|
961
|
+
// Displaced reference-bearing results must follow every tool_result block.
|
|
900
962
|
params.push({
|
|
901
963
|
role: "user",
|
|
902
|
-
content: toolResults,
|
|
964
|
+
content: [...toolResults, ...siblingContent],
|
|
903
965
|
});
|
|
904
966
|
}
|
|
905
967
|
}
|
|
@@ -930,20 +992,30 @@ function convertMessages(messages, model, isOAuthToken, cacheControl, allowEmpty
|
|
|
930
992
|
function shouldUseFineGrainedToolStreamingBeta(model, context) {
|
|
931
993
|
return !!context.tools?.length && !getAnthropicCompat(model).supportsEagerToolInputStreaming;
|
|
932
994
|
}
|
|
933
|
-
function convertTools(tools, isOAuthToken, supportsEagerToolInputStreaming, cacheControl) {
|
|
995
|
+
function convertTools(tools, isOAuthToken, supportsEagerToolInputStreaming, supportsStrictTools, cacheControl, deferLoading = false) {
|
|
934
996
|
if (!tools)
|
|
935
997
|
return [];
|
|
936
998
|
return tools.map((tool, index) => {
|
|
999
|
+
const strict = resolveJsonSchemaStrictSampling(tool, supportsStrictTools);
|
|
937
1000
|
const schema = tool.parameters;
|
|
1001
|
+
const legacyInputSchema = {
|
|
1002
|
+
type: "object",
|
|
1003
|
+
properties: schema.properties ?? {},
|
|
1004
|
+
required: schema.required ?? [],
|
|
1005
|
+
};
|
|
1006
|
+
const inputSchema = strict === true
|
|
1007
|
+
? {
|
|
1008
|
+
...tool.parameters,
|
|
1009
|
+
...legacyInputSchema,
|
|
1010
|
+
}
|
|
1011
|
+
: legacyInputSchema;
|
|
938
1012
|
return {
|
|
939
1013
|
name: isOAuthToken ? toClaudeCodeName(tool.name) : tool.name,
|
|
940
1014
|
description: tool.description,
|
|
941
1015
|
...(supportsEagerToolInputStreaming ? { eager_input_streaming: true } : {}),
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
required: schema.required ?? [],
|
|
946
|
-
},
|
|
1016
|
+
...(strict === true ? { strict: true } : {}),
|
|
1017
|
+
input_schema: inputSchema,
|
|
1018
|
+
...(deferLoading ? { defer_loading: true } : {}),
|
|
947
1019
|
...(cacheControl && index === tools.length - 1 ? { cache_control: cacheControl } : {}),
|
|
948
1020
|
};
|
|
949
1021
|
});
|
|
@@ -966,7 +1038,7 @@ function mapStopReason(reason, stopDetails) {
|
|
|
966
1038
|
case "stop_sequence":
|
|
967
1039
|
return { stopReason: "stop" }; // We don't supply stop sequences, so this should never happen
|
|
968
1040
|
case "sensitive": // Content flagged by safety filters (not yet in SDK types)
|
|
969
|
-
return { stopReason: "error" };
|
|
1041
|
+
return { stopReason: "error", errorMessage: "Provider stopped with: sensitive" };
|
|
970
1042
|
default:
|
|
971
1043
|
// Handle unknown stop reasons gracefully (API may add new values)
|
|
972
1044
|
throw new Error(`Unhandled stop reason: ${reason}`);
|