@code-yeongyu/senpi-ai 2026.9.29 → 2026.10.1-2
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 +189 -19
- package/dist/api/anthropic-messages.js +168 -32
- package/dist/api/azure-openai-responses.js +23 -10
- package/dist/api/bedrock-converse-stream.js +16 -6
- package/dist/api/cloudflare-workers-ai-system-one.d.ts +4 -0
- package/dist/api/cloudflare-workers-ai-system-one.js +43 -0
- package/dist/api/cloudflare-workers-ai-system-one.lazy.d.ts +3 -0
- package/dist/api/cloudflare-workers-ai-system-one.lazy.js +4 -0
- package/dist/api/cloudflare.d.ts +2 -0
- package/dist/api/cloudflare.js +2 -0
- package/dist/api/context-room.d.ts +2 -2
- package/dist/api/cursor-agent.js +19 -10
- package/dist/api/devin-agent/request.d.ts +9 -9
- package/dist/api/devin-agent/request.js +14 -10
- package/dist/api/google-generative-ai.js +20 -80
- package/dist/api/google-shared.d.ts +13 -4
- package/dist/api/google-shared.js +54 -4
- package/dist/api/google-vertex.js +19 -62
- package/dist/api/lazy.js +2 -1
- package/dist/api/llama-cpp-classify.d.ts +33 -0
- package/dist/api/llama-cpp-classify.js +365 -0
- package/dist/api/llama-cpp-classify.lazy.d.ts +3 -0
- package/dist/api/llama-cpp-classify.lazy.js +4 -0
- package/dist/api/mistral-conversations.d.ts +1 -1
- package/dist/api/mistral-conversations.js +36 -29
- package/dist/api/openai-codex-responses.d.ts +1 -1
- package/dist/api/openai-codex-responses.js +72 -37
- package/dist/api/openai-completions.d.ts +3 -2
- package/dist/api/openai-completions.js +89 -58
- package/dist/api/openai-images-params.d.ts +2 -2
- package/dist/api/openai-images.d.ts +1 -1
- package/dist/api/openai-responses-shared.d.ts +31 -8
- package/dist/api/openai-responses-shared.js +119 -28
- package/dist/api/openai-responses.d.ts +1 -1
- package/dist/api/openai-responses.js +40 -32
- package/dist/api/openrouter-images.d.ts +2 -1
- package/dist/api/openrouter-images.js +1 -0
- package/dist/api/pi-messages.d.ts +3 -3
- package/dist/api/pi-messages.js +3 -2
- package/dist/api/simple-options.d.ts +2 -2
- package/dist/api/simple-options.js +1 -0
- package/dist/api/system-one-shared.d.ts +23 -0
- package/dist/api/system-one-shared.js +183 -0
- package/dist/api/transform-messages.js +5 -2
- package/dist/api/typesafe-system-one.d.ts +4 -0
- package/dist/api/typesafe-system-one.js +19 -0
- package/dist/api/typesafe-system-one.lazy.d.ts +3 -0
- package/dist/api/typesafe-system-one.lazy.js +4 -0
- package/dist/api-registry.d.ts +3 -3
- package/dist/auth/helpers.js +1 -1
- package/dist/auth/oauth/anthropic-callback-listener.js +1 -1
- package/dist/auth/oauth/callback-server.d.ts +55 -0
- package/dist/auth/oauth/callback-server.js +146 -0
- package/dist/auth/oauth/chatgpt-subscription.d.ts +1 -1
- package/dist/auth/oauth/chatgpt-subscription.js +20 -124
- package/dist/auth/oauth/devin-callback.js +1 -1
- package/dist/auth/oauth/load.d.ts +4 -0
- package/dist/auth/oauth/load.js +10 -0
- package/dist/auth/oauth/meta.d.ts +17 -0
- package/dist/auth/oauth/meta.js +190 -0
- package/dist/auth/oauth/openai-chatgpt.d.ts +9 -0
- package/dist/auth/oauth/openai-chatgpt.js +266 -0
- package/dist/auth/oauth/openrouter.d.ts +1 -1
- package/dist/auth/oauth/openrouter.js +19 -138
- package/dist/auth/oauth/radius.d.ts +1 -1
- package/dist/auth/oauth/radius.js +21 -89
- package/dist/auth/resolve.d.ts +3 -8
- package/dist/auth/resolve.js +3 -18
- package/dist/auth/types.d.ts +10 -1
- package/dist/bun-oauth.js +4 -0
- package/dist/cli.js +3 -1
- package/dist/compat.js +17 -14
- package/dist/env-api-keys.js +2 -0
- package/dist/image-models.d.ts +19 -8
- package/dist/image-models.js +14 -13
- package/dist/images-api-registry.d.ts +8 -8
- package/dist/images.d.ts +7 -2
- package/dist/images.js +5 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/model-catalog.d.ts +27 -9
- package/dist/model-catalog.js +24 -2
- package/dist/model.d.ts +13 -13
- package/dist/models-store.d.ts +3 -2
- package/dist/models.d.ts +106 -36
- package/dist/models.generated.d.ts +142 -42
- package/dist/models.generated.js +142 -42
- package/dist/models.js +180 -38
- package/dist/providers/alibaba-token-plan.models.d.ts +4 -2
- package/dist/providers/alibaba-token-plan.models.js +4 -2
- package/dist/providers/all.d.ts +72 -19
- package/dist/providers/all.js +28 -22
- package/dist/providers/amazon-bedrock.models.d.ts +4 -2
- package/dist/providers/amazon-bedrock.models.js +4 -2
- package/dist/providers/ant-ling.models.d.ts +4 -2
- package/dist/providers/ant-ling.models.js +4 -2
- package/dist/providers/anthropic.models.d.ts +4 -2
- package/dist/providers/anthropic.models.js +4 -2
- package/dist/providers/azure-openai-responses.models.d.ts +4 -2
- package/dist/providers/azure-openai-responses.models.js +4 -2
- package/dist/providers/bai.models.d.ts +4 -2
- package/dist/providers/bai.models.js +4 -2
- package/dist/providers/baseten.models.d.ts +4 -2
- package/dist/providers/baseten.models.js +4 -2
- package/dist/providers/cerebras.models.d.ts +4 -2
- package/dist/providers/cerebras.models.js +4 -2
- package/dist/providers/chatgpt-subscription.models.d.ts +4 -2
- package/dist/providers/chatgpt-subscription.models.js +4 -2
- package/dist/providers/cloudflare-ai-gateway.models.d.ts +4 -2
- package/dist/providers/cloudflare-ai-gateway.models.js +4 -2
- package/dist/providers/cloudflare-stream.d.ts +6 -2
- package/dist/providers/cloudflare-stream.js +6 -0
- package/dist/providers/cloudflare-workers-ai.js +10 -3
- package/dist/providers/cloudflare-workers-ai.models.d.ts +4 -2
- package/dist/providers/cloudflare-workers-ai.models.js +4 -2
- package/dist/providers/data/.manifest.json +1 -1
- package/dist/providers/data/alibaba-token-plan.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-openai-responses.json +1 -1
- package/dist/providers/data/bai.json +1 -1
- package/dist/providers/data/baseten.json +1 -1
- package/dist/providers/data/cerebras.json +1 -1
- package/dist/providers/data/chatgpt-subscription.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/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.json +1 -1
- package/dist/providers/data/opencode-go.json +1 -1
- package/dist/providers/data/opencode.json +1 -1
- package/dist/providers/data/opengateway.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 -1
- 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/venice.json +1 -1
- 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.models.d.ts +4 -2
- package/dist/providers/deepseek.models.js +4 -2
- package/dist/providers/faux.d.ts +7 -2
- package/dist/providers/faux.js +31 -22
- package/dist/providers/fireworks.models.d.ts +4 -2
- package/dist/providers/fireworks.models.js +4 -2
- package/dist/providers/github-copilot.models.d.ts +4 -2
- package/dist/providers/github-copilot.models.js +4 -2
- package/dist/providers/google-vertex.models.d.ts +4 -2
- package/dist/providers/google-vertex.models.js +4 -2
- package/dist/providers/google.models.d.ts +4 -2
- package/dist/providers/google.models.js +4 -2
- package/dist/providers/groq.models.d.ts +4 -2
- package/dist/providers/groq.models.js +4 -2
- package/dist/providers/huggingface.models.d.ts +4 -2
- package/dist/providers/huggingface.models.js +4 -2
- package/dist/providers/images/register-builtins.d.ts +2 -2
- package/dist/providers/kimi-coding.models.d.ts +54 -7
- package/dist/providers/kimi-coding.models.js +34 -7
- package/dist/providers/meta.d.ts +3 -0
- package/dist/providers/meta.js +24 -0
- package/dist/providers/meta.models.d.ts +6 -0
- package/dist/providers/meta.models.js +8 -0
- package/dist/providers/minimax-cn.models.d.ts +4 -2
- package/dist/providers/minimax-cn.models.js +4 -2
- package/dist/providers/minimax.models.d.ts +4 -2
- package/dist/providers/minimax.models.js +4 -2
- package/dist/providers/mistral.models.d.ts +4 -2
- package/dist/providers/mistral.models.js +4 -2
- package/dist/providers/moonshotai-cn.models.d.ts +4 -2
- package/dist/providers/moonshotai-cn.models.js +4 -2
- package/dist/providers/moonshotai.models.d.ts +4 -2
- package/dist/providers/moonshotai.models.js +4 -2
- package/dist/providers/nvidia.models.d.ts +4 -2
- package/dist/providers/nvidia.models.js +4 -2
- package/dist/providers/openai.js +4 -2
- package/dist/providers/openai.models.d.ts +4 -2
- package/dist/providers/openai.models.js +4 -2
- package/dist/providers/opencode-go.models.d.ts +4 -2
- package/dist/providers/opencode-go.models.js +4 -2
- package/dist/providers/opencode.d.ts +3 -1
- package/dist/providers/opencode.js +5 -2
- package/dist/providers/opencode.models.d.ts +4 -2
- package/dist/providers/opencode.models.js +4 -2
- package/dist/providers/opengateway.models.d.ts +4 -2
- package/dist/providers/opengateway.models.js +4 -2
- package/dist/providers/openrouter.js +11 -2
- package/dist/providers/openrouter.models.d.ts +4 -2
- package/dist/providers/openrouter.models.js +4 -2
- package/dist/providers/qwen-token-plan-cn.models.d.ts +4 -2
- package/dist/providers/qwen-token-plan-cn.models.js +4 -2
- package/dist/providers/qwen-token-plan-individual.models.d.ts +4 -2
- package/dist/providers/qwen-token-plan-individual.models.js +4 -2
- package/dist/providers/qwen-token-plan.models.d.ts +4 -2
- package/dist/providers/qwen-token-plan.models.js +4 -2
- package/dist/providers/radius.js +19 -5
- package/dist/providers/radius.models.d.ts +6 -0
- package/dist/providers/radius.models.js +8 -0
- package/dist/providers/together.models.d.ts +4 -2
- package/dist/providers/together.models.js +4 -2
- package/dist/providers/typesafe.d.ts +3 -0
- package/dist/providers/typesafe.js +18 -0
- package/dist/providers/typesafe.models.d.ts +6 -0
- package/dist/providers/typesafe.models.js +8 -0
- package/dist/providers/venice.models.d.ts +4 -2
- package/dist/providers/venice.models.js +4 -2
- package/dist/providers/vercel-ai-gateway.js +5 -2
- package/dist/providers/vercel-ai-gateway.models.d.ts +4 -2
- package/dist/providers/vercel-ai-gateway.models.js +4 -2
- package/dist/providers/xai.models.d.ts +4 -2
- package/dist/providers/xai.models.js +4 -2
- package/dist/providers/xiaomi-token-plan-ams.models.d.ts +4 -2
- package/dist/providers/xiaomi-token-plan-ams.models.js +4 -2
- package/dist/providers/xiaomi-token-plan-cn.models.d.ts +4 -2
- package/dist/providers/xiaomi-token-plan-cn.models.js +4 -2
- package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +4 -2
- package/dist/providers/xiaomi-token-plan-sgp.models.js +4 -2
- package/dist/providers/xiaomi.models.d.ts +4 -2
- package/dist/providers/xiaomi.models.js +4 -2
- package/dist/providers/zai-coding-cn.models.d.ts +4 -2
- package/dist/providers/zai-coding-cn.models.js +4 -2
- package/dist/providers/zai.models.d.ts +4 -2
- package/dist/providers/zai.models.js +4 -2
- package/dist/tool-call-middleware/context-transformer.d.ts +8 -5
- package/dist/tool-call-middleware/context-transformer.js +44 -15
- package/dist/types.d.ts +262 -28
- package/dist/utils/diagnostics.d.ts +3 -2
- package/dist/utils/estimate.d.ts +2 -2
- package/dist/utils/estimate.js +22 -30
- package/dist/utils/headers.d.ts +1 -1
- package/dist/utils/headers.js +10 -8
- package/dist/utils/model-operations.d.ts +11 -0
- package/dist/utils/model-operations.js +47 -0
- package/dist/utils/models-error.d.ts +8 -0
- package/dist/utils/models-error.js +18 -0
- package/dist/utils/overflow.d.ts +1 -0
- package/dist/utils/overflow.js +11 -5
- package/dist/utils/prompt-cache-ttl.js +43 -5
- package/dist/utils/provider-failure-description.d.ts +7 -0
- package/dist/utils/provider-failure-description.js +21 -0
- package/dist/utils/retry.js +18 -0
- package/dist/utils/text.d.ts +9 -1
- package/dist/utils/text.js +26 -0
- package/dist/utils/tool-schema-compat.d.ts +2 -0
- package/dist/utils/tool-schema-compat.js +28 -9
- package/dist/utils/transcript.d.ts +85 -0
- package/dist/utils/transcript.js +205 -0
- package/package.json +4 -4
- package/dist/api/anthropic-messages.d.ts.map +0 -1
- package/dist/api/anthropic-messages.js.map +0 -1
- package/dist/api/anthropic-messages.lazy.d.ts.map +0 -1
- package/dist/api/anthropic-messages.lazy.js.map +0 -1
- package/dist/api/anthropic-tool-pairs.d.ts.map +0 -1
- package/dist/api/anthropic-tool-pairs.js.map +0 -1
- package/dist/api/anthropic-tool-references.d.ts.map +0 -1
- package/dist/api/anthropic-tool-references.js.map +0 -1
- package/dist/api/azure-openai-responses.d.ts.map +0 -1
- package/dist/api/azure-openai-responses.js.map +0 -1
- package/dist/api/azure-openai-responses.lazy.d.ts.map +0 -1
- package/dist/api/azure-openai-responses.lazy.js.map +0 -1
- package/dist/api/bedrock-converse-stream.d.ts.map +0 -1
- package/dist/api/bedrock-converse-stream.js.map +0 -1
- package/dist/api/bedrock-converse-stream.lazy.d.ts.map +0 -1
- package/dist/api/bedrock-converse-stream.lazy.js.map +0 -1
- package/dist/api/cloudflare-ai-binding.d.ts.map +0 -1
- package/dist/api/cloudflare-ai-binding.js.map +0 -1
- package/dist/api/cloudflare.d.ts.map +0 -1
- package/dist/api/cloudflare.js.map +0 -1
- package/dist/api/constrained-sampling.d.ts.map +0 -1
- package/dist/api/constrained-sampling.js.map +0 -1
- package/dist/api/context-room.d.ts.map +0 -1
- package/dist/api/context-room.js.map +0 -1
- package/dist/api/cursor-agent/deterministic-id.d.ts.map +0 -1
- package/dist/api/cursor-agent/deterministic-id.js.map +0 -1
- package/dist/api/cursor-agent/exec-lifecycle.d.ts.map +0 -1
- package/dist/api/cursor-agent/exec-lifecycle.js.map +0 -1
- package/dist/api/cursor-agent/exec-modern.d.ts.map +0 -1
- package/dist/api/cursor-agent/exec-modern.js.map +0 -1
- package/dist/api/cursor-agent/gen/agent_pb.d.ts.map +0 -1
- package/dist/api/cursor-agent/gen/agent_pb.js.map +0 -1
- package/dist/api/cursor-agent/measure.d.ts.map +0 -1
- package/dist/api/cursor-agent/measure.js.map +0 -1
- package/dist/api/cursor-agent/pi-args.d.ts.map +0 -1
- package/dist/api/cursor-agent/pi-args.js.map +0 -1
- package/dist/api/cursor-agent/reasoning-params.d.ts.map +0 -1
- package/dist/api/cursor-agent/reasoning-params.js.map +0 -1
- package/dist/api/cursor-agent/stream-retry.d.ts.map +0 -1
- package/dist/api/cursor-agent/stream-retry.js.map +0 -1
- package/dist/api/cursor-agent/types.d.ts.map +0 -1
- package/dist/api/cursor-agent/types.js.map +0 -1
- package/dist/api/cursor-agent.d.ts.map +0 -1
- package/dist/api/cursor-agent.js.map +0 -1
- package/dist/api/cursor-agent.lazy.d.ts.map +0 -1
- package/dist/api/cursor-agent.lazy.js.map +0 -1
- package/dist/api/cursor-conversation-rotation.d.ts.map +0 -1
- package/dist/api/cursor-conversation-rotation.js.map +0 -1
- package/dist/api/cursor-task-args.d.ts.map +0 -1
- package/dist/api/cursor-task-args.js.map +0 -1
- package/dist/api/devin-agent/discovery.d.ts.map +0 -1
- package/dist/api/devin-agent/discovery.js.map +0 -1
- package/dist/api/devin-agent/frames.d.ts.map +0 -1
- package/dist/api/devin-agent/frames.js.map +0 -1
- package/dist/api/devin-agent/gen/cascade_pb.d.ts.map +0 -1
- package/dist/api/devin-agent/gen/cascade_pb.js.map +0 -1
- package/dist/api/devin-agent/metadata.d.ts.map +0 -1
- package/dist/api/devin-agent/metadata.js.map +0 -1
- package/dist/api/devin-agent/paths.d.ts.map +0 -1
- package/dist/api/devin-agent/paths.js.map +0 -1
- package/dist/api/devin-agent/request.d.ts.map +0 -1
- package/dist/api/devin-agent/request.js.map +0 -1
- package/dist/api/devin-agent/stream-state.d.ts.map +0 -1
- package/dist/api/devin-agent/stream-state.js.map +0 -1
- package/dist/api/devin-agent/trailer.d.ts.map +0 -1
- package/dist/api/devin-agent/trailer.js.map +0 -1
- package/dist/api/devin-agent/types.d.ts.map +0 -1
- package/dist/api/devin-agent/types.js.map +0 -1
- package/dist/api/devin-agent/unary.d.ts.map +0 -1
- package/dist/api/devin-agent/unary.js.map +0 -1
- package/dist/api/devin-agent/wire.d.ts.map +0 -1
- package/dist/api/devin-agent/wire.js.map +0 -1
- package/dist/api/devin-agent.d.ts.map +0 -1
- package/dist/api/devin-agent.js.map +0 -1
- package/dist/api/devin-agent.lazy.d.ts.map +0 -1
- package/dist/api/devin-agent.lazy.js.map +0 -1
- package/dist/api/github-copilot-endpoint.d.ts.map +0 -1
- package/dist/api/github-copilot-endpoint.js.map +0 -1
- package/dist/api/github-copilot-errors.d.ts.map +0 -1
- package/dist/api/github-copilot-errors.js.map +0 -1
- package/dist/api/github-copilot-headers.d.ts.map +0 -1
- package/dist/api/github-copilot-headers.js.map +0 -1
- package/dist/api/google-generative-ai.d.ts.map +0 -1
- package/dist/api/google-generative-ai.js.map +0 -1
- package/dist/api/google-generative-ai.lazy.d.ts.map +0 -1
- package/dist/api/google-generative-ai.lazy.js.map +0 -1
- package/dist/api/google-shared.d.ts.map +0 -1
- package/dist/api/google-shared.js.map +0 -1
- package/dist/api/google-vertex.d.ts.map +0 -1
- package/dist/api/google-vertex.js.map +0 -1
- package/dist/api/google-vertex.lazy.d.ts.map +0 -1
- package/dist/api/google-vertex.lazy.js.map +0 -1
- package/dist/api/lazy.d.ts.map +0 -1
- package/dist/api/lazy.js.map +0 -1
- package/dist/api/mistral-conversations.d.ts.map +0 -1
- package/dist/api/mistral-conversations.js.map +0 -1
- package/dist/api/mistral-conversations.lazy.d.ts.map +0 -1
- package/dist/api/mistral-conversations.lazy.js.map +0 -1
- package/dist/api/openai-client-auth.d.ts.map +0 -1
- package/dist/api/openai-client-auth.js.map +0 -1
- package/dist/api/openai-codex-responses/fallback-state.d.ts.map +0 -1
- package/dist/api/openai-codex-responses/fallback-state.js.map +0 -1
- package/dist/api/openai-codex-responses/reasoning.d.ts.map +0 -1
- package/dist/api/openai-codex-responses/reasoning.js.map +0 -1
- package/dist/api/openai-codex-responses.d.ts.map +0 -1
- package/dist/api/openai-codex-responses.js.map +0 -1
- package/dist/api/openai-codex-responses.lazy.d.ts.map +0 -1
- package/dist/api/openai-codex-responses.lazy.js.map +0 -1
- package/dist/api/openai-completions.d.ts.map +0 -1
- package/dist/api/openai-completions.js.map +0 -1
- package/dist/api/openai-completions.lazy.d.ts.map +0 -1
- package/dist/api/openai-completions.lazy.js.map +0 -1
- package/dist/api/openai-images-edit.d.ts.map +0 -1
- package/dist/api/openai-images-edit.js.map +0 -1
- package/dist/api/openai-images-params.d.ts.map +0 -1
- package/dist/api/openai-images-params.js.map +0 -1
- package/dist/api/openai-images-result.d.ts.map +0 -1
- package/dist/api/openai-images-result.js.map +0 -1
- package/dist/api/openai-images.d.ts.map +0 -1
- package/dist/api/openai-images.js.map +0 -1
- package/dist/api/openai-images.lazy.d.ts.map +0 -1
- package/dist/api/openai-images.lazy.js.map +0 -1
- package/dist/api/openai-prompt-cache.d.ts.map +0 -1
- package/dist/api/openai-prompt-cache.js.map +0 -1
- package/dist/api/openai-responses-prompt-cache.d.ts.map +0 -1
- package/dist/api/openai-responses-prompt-cache.js.map +0 -1
- package/dist/api/openai-responses-shared.d.ts.map +0 -1
- package/dist/api/openai-responses-shared.js.map +0 -1
- package/dist/api/openai-responses.d.ts.map +0 -1
- package/dist/api/openai-responses.js.map +0 -1
- package/dist/api/openai-responses.lazy.d.ts.map +0 -1
- package/dist/api/openai-responses.lazy.js.map +0 -1
- package/dist/api/openrouter-images.d.ts.map +0 -1
- package/dist/api/openrouter-images.js.map +0 -1
- package/dist/api/openrouter-images.lazy.d.ts.map +0 -1
- package/dist/api/openrouter-images.lazy.js.map +0 -1
- package/dist/api/pi-messages.d.ts.map +0 -1
- package/dist/api/pi-messages.js.map +0 -1
- package/dist/api/pi-messages.lazy.d.ts.map +0 -1
- package/dist/api/pi-messages.lazy.js.map +0 -1
- package/dist/api/prompt-cache-warmers.d.ts.map +0 -1
- package/dist/api/prompt-cache-warmers.js.map +0 -1
- package/dist/api/responses-completion-grace.d.ts.map +0 -1
- package/dist/api/responses-completion-grace.js.map +0 -1
- package/dist/api/simple-options.d.ts.map +0 -1
- package/dist/api/simple-options.js.map +0 -1
- package/dist/api/transform-messages.d.ts.map +0 -1
- package/dist/api/transform-messages.js.map +0 -1
- package/dist/api/warm-prompt-cache.d.ts.map +0 -1
- package/dist/api/warm-prompt-cache.js.map +0 -1
- package/dist/api/websocket-liveness.d.ts.map +0 -1
- package/dist/api/websocket-liveness.js.map +0 -1
- package/dist/api/websocket-transport-failure.d.ts.map +0 -1
- package/dist/api/websocket-transport-failure.js.map +0 -1
- package/dist/api-registry.d.ts.map +0 -1
- package/dist/api-registry.js.map +0 -1
- package/dist/auth/context.d.ts.map +0 -1
- package/dist/auth/context.js.map +0 -1
- package/dist/auth/credential-store.d.ts.map +0 -1
- package/dist/auth/credential-store.js.map +0 -1
- package/dist/auth/headers.d.ts.map +0 -1
- package/dist/auth/headers.js.map +0 -1
- package/dist/auth/helpers.d.ts.map +0 -1
- package/dist/auth/helpers.js.map +0 -1
- package/dist/auth/oauth/anthropic-callback-listener.d.ts.map +0 -1
- package/dist/auth/oauth/anthropic-callback-listener.js.map +0 -1
- package/dist/auth/oauth/anthropic.d.ts.map +0 -1
- package/dist/auth/oauth/anthropic.js.map +0 -1
- package/dist/auth/oauth/authorization-input.d.ts.map +0 -1
- package/dist/auth/oauth/authorization-input.js.map +0 -1
- package/dist/auth/oauth/chatgpt-subscription.d.ts.map +0 -1
- package/dist/auth/oauth/chatgpt-subscription.js.map +0 -1
- package/dist/auth/oauth/cursor.d.ts.map +0 -1
- package/dist/auth/oauth/cursor.js.map +0 -1
- package/dist/auth/oauth/device-code.d.ts.map +0 -1
- package/dist/auth/oauth/device-code.js.map +0 -1
- package/dist/auth/oauth/devin-callback.d.ts.map +0 -1
- package/dist/auth/oauth/devin-callback.js.map +0 -1
- package/dist/auth/oauth/devin-token.d.ts.map +0 -1
- package/dist/auth/oauth/devin-token.js.map +0 -1
- package/dist/auth/oauth/devin.d.ts.map +0 -1
- package/dist/auth/oauth/devin.js.map +0 -1
- package/dist/auth/oauth/error-details.d.ts.map +0 -1
- package/dist/auth/oauth/error-details.js.map +0 -1
- package/dist/auth/oauth/github-copilot-model-catalog.d.ts.map +0 -1
- package/dist/auth/oauth/github-copilot-model-catalog.js.map +0 -1
- package/dist/auth/oauth/github-copilot.d.ts.map +0 -1
- package/dist/auth/oauth/github-copilot.js.map +0 -1
- package/dist/auth/oauth/kimi-coding.d.ts.map +0 -1
- package/dist/auth/oauth/kimi-coding.js.map +0 -1
- package/dist/auth/oauth/kimi-identity.d.ts.map +0 -1
- package/dist/auth/oauth/kimi-identity.js.map +0 -1
- package/dist/auth/oauth/kimi-region.d.ts.map +0 -1
- package/dist/auth/oauth/kimi-region.js.map +0 -1
- package/dist/auth/oauth/load.d.ts.map +0 -1
- package/dist/auth/oauth/load.js.map +0 -1
- package/dist/auth/oauth/oauth-page.d.ts.map +0 -1
- package/dist/auth/oauth/oauth-page.js.map +0 -1
- package/dist/auth/oauth/openrouter.d.ts.map +0 -1
- package/dist/auth/oauth/openrouter.js.map +0 -1
- package/dist/auth/oauth/pkce.d.ts.map +0 -1
- package/dist/auth/oauth/pkce.js.map +0 -1
- package/dist/auth/oauth/radius.d.ts.map +0 -1
- package/dist/auth/oauth/radius.js.map +0 -1
- package/dist/auth/oauth/xai.d.ts.map +0 -1
- package/dist/auth/oauth/xai.js.map +0 -1
- package/dist/auth/oauth-refresh.d.ts.map +0 -1
- package/dist/auth/oauth-refresh.js.map +0 -1
- package/dist/auth/pool/classify.d.ts.map +0 -1
- package/dist/auth/pool/classify.js.map +0 -1
- package/dist/auth/pool/failover.d.ts.map +0 -1
- package/dist/auth/pool/failover.js.map +0 -1
- package/dist/auth/pool/select.d.ts.map +0 -1
- package/dist/auth/pool/select.js.map +0 -1
- package/dist/auth/pool/slots.d.ts.map +0 -1
- package/dist/auth/pool/slots.js.map +0 -1
- package/dist/auth/refresh-credential.d.ts.map +0 -1
- package/dist/auth/refresh-credential.js.map +0 -1
- package/dist/auth/resolve.d.ts.map +0 -1
- package/dist/auth/resolve.js.map +0 -1
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/auth/types.js.map +0 -1
- package/dist/bedrock-provider.d.ts.map +0 -1
- package/dist/bedrock-provider.js.map +0 -1
- package/dist/bun-oauth.d.ts.map +0 -1
- package/dist/bun-oauth.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/compat/extension-oauth-types.d.ts.map +0 -1
- package/dist/compat/extension-oauth-types.js.map +0 -1
- package/dist/compat.d.ts.map +0 -1
- package/dist/compat.js.map +0 -1
- package/dist/context-provenance.d.ts.map +0 -1
- package/dist/context-provenance.js.map +0 -1
- package/dist/cursor/catalog-grouping.d.ts.map +0 -1
- package/dist/cursor/catalog-grouping.js.map +0 -1
- package/dist/cursor/composer-prompt.d.ts.map +0 -1
- package/dist/cursor/composer-prompt.js.map +0 -1
- package/dist/cursor/context-limit-store.d.ts.map +0 -1
- package/dist/cursor/context-limit-store.js.map +0 -1
- package/dist/cursor/model-capabilities.d.ts.map +0 -1
- package/dist/cursor/model-capabilities.js.map +0 -1
- package/dist/cursor/selection-descriptor.d.ts.map +0 -1
- package/dist/cursor/selection-descriptor.js.map +0 -1
- package/dist/cursor/store-migration.d.ts.map +0 -1
- package/dist/cursor/store-migration.js.map +0 -1
- package/dist/cursor-agent-provider.d.ts.map +0 -1
- package/dist/cursor-agent-provider.js.map +0 -1
- package/dist/devin-provider.d.ts.map +0 -1
- package/dist/devin-provider.js.map +0 -1
- package/dist/endpoint-reasoning-efforts.d.ts.map +0 -1
- package/dist/endpoint-reasoning-efforts.js.map +0 -1
- package/dist/env-api-keys.d.ts.map +0 -1
- package/dist/env-api-keys.js.map +0 -1
- package/dist/image-models.d.ts.map +0 -1
- package/dist/image-models.generated.d.ts +0 -925
- package/dist/image-models.generated.d.ts.map +0 -1
- package/dist/image-models.generated.js +0 -927
- package/dist/image-models.generated.js.map +0 -1
- package/dist/image-models.js.map +0 -1
- package/dist/images-api-registry.d.ts.map +0 -1
- package/dist/images-api-registry.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 -141
- package/dist/images-models.js.map +0 -1
- package/dist/images.d.ts.map +0 -1
- package/dist/images.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/legacy-api-aliases.d.ts.map +0 -1
- package/dist/legacy-api-aliases.js.map +0 -1
- package/dist/legacy-provider-ids.d.ts.map +0 -1
- package/dist/legacy-provider-ids.js.map +0 -1
- package/dist/model-catalog.d.ts.map +0 -1
- package/dist/model-catalog.js.map +0 -1
- package/dist/model.d.ts.map +0 -1
- package/dist/model.js.map +0 -1
- package/dist/models-store.d.ts.map +0 -1
- package/dist/models-store.js.map +0 -1
- package/dist/models.d.ts.map +0 -1
- package/dist/models.generated.d.ts.map +0 -1
- package/dist/models.generated.js.map +0 -1
- package/dist/models.js.map +0 -1
- package/dist/node/provider-scope.d.ts.map +0 -1
- package/dist/node/provider-scope.js.map +0 -1
- package/dist/oauth.d.ts.map +0 -1
- package/dist/oauth.js.map +0 -1
- package/dist/openai-responses-compat.d.ts.map +0 -1
- package/dist/openai-responses-compat.js.map +0 -1
- package/dist/provider-diagnostic.d.ts.map +0 -1
- package/dist/provider-diagnostic.js.map +0 -1
- package/dist/providers/alibaba-token-plan.d.ts.map +0 -1
- package/dist/providers/alibaba-token-plan.js.map +0 -1
- package/dist/providers/alibaba-token-plan.models.d.ts.map +0 -1
- package/dist/providers/alibaba-token-plan.models.js.map +0 -1
- package/dist/providers/all.d.ts.map +0 -1
- package/dist/providers/all.js.map +0 -1
- package/dist/providers/amazon-bedrock.d.ts.map +0 -1
- package/dist/providers/amazon-bedrock.js.map +0 -1
- package/dist/providers/amazon-bedrock.models.d.ts.map +0 -1
- package/dist/providers/amazon-bedrock.models.js.map +0 -1
- package/dist/providers/ant-ling.d.ts.map +0 -1
- package/dist/providers/ant-ling.js.map +0 -1
- package/dist/providers/ant-ling.models.d.ts.map +0 -1
- package/dist/providers/ant-ling.models.js.map +0 -1
- package/dist/providers/anthropic.d.ts.map +0 -1
- package/dist/providers/anthropic.js.map +0 -1
- package/dist/providers/anthropic.models.d.ts.map +0 -1
- package/dist/providers/anthropic.models.js.map +0 -1
- package/dist/providers/azure-openai-responses.d.ts.map +0 -1
- package/dist/providers/azure-openai-responses.js.map +0 -1
- package/dist/providers/azure-openai-responses.models.d.ts.map +0 -1
- package/dist/providers/azure-openai-responses.models.js.map +0 -1
- package/dist/providers/bai-stream.d.ts.map +0 -1
- package/dist/providers/bai-stream.js.map +0 -1
- package/dist/providers/bai.d.ts.map +0 -1
- package/dist/providers/bai.js.map +0 -1
- package/dist/providers/bai.models.d.ts.map +0 -1
- package/dist/providers/bai.models.js.map +0 -1
- package/dist/providers/baseten.d.ts.map +0 -1
- package/dist/providers/baseten.js.map +0 -1
- package/dist/providers/baseten.models.d.ts.map +0 -1
- package/dist/providers/baseten.models.js.map +0 -1
- package/dist/providers/cerebras.d.ts.map +0 -1
- package/dist/providers/cerebras.js.map +0 -1
- package/dist/providers/cerebras.models.d.ts.map +0 -1
- package/dist/providers/cerebras.models.js.map +0 -1
- package/dist/providers/chatgpt-subscription.d.ts.map +0 -1
- package/dist/providers/chatgpt-subscription.js.map +0 -1
- package/dist/providers/chatgpt-subscription.models.d.ts.map +0 -1
- package/dist/providers/chatgpt-subscription.models.js.map +0 -1
- package/dist/providers/cloudflare-ai-gateway.d.ts.map +0 -1
- package/dist/providers/cloudflare-ai-gateway.js.map +0 -1
- package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +0 -1
- package/dist/providers/cloudflare-ai-gateway.models.js.map +0 -1
- package/dist/providers/cloudflare-auth.d.ts.map +0 -1
- package/dist/providers/cloudflare-auth.js.map +0 -1
- package/dist/providers/cloudflare-stream.d.ts.map +0 -1
- package/dist/providers/cloudflare-stream.js.map +0 -1
- package/dist/providers/cloudflare-workers-ai.d.ts.map +0 -1
- package/dist/providers/cloudflare-workers-ai.js.map +0 -1
- package/dist/providers/cloudflare-workers-ai.models.d.ts.map +0 -1
- package/dist/providers/cloudflare-workers-ai.models.js.map +0 -1
- package/dist/providers/cursor.d.ts.map +0 -1
- package/dist/providers/cursor.js.map +0 -1
- package/dist/providers/deepseek.d.ts.map +0 -1
- package/dist/providers/deepseek.js.map +0 -1
- package/dist/providers/deepseek.models.d.ts.map +0 -1
- package/dist/providers/deepseek.models.js.map +0 -1
- package/dist/providers/devin.d.ts.map +0 -1
- package/dist/providers/devin.js.map +0 -1
- package/dist/providers/devin.models.d.ts.map +0 -1
- package/dist/providers/devin.models.js.map +0 -1
- package/dist/providers/faux.d.ts.map +0 -1
- package/dist/providers/faux.js.map +0 -1
- package/dist/providers/fireworks.d.ts.map +0 -1
- package/dist/providers/fireworks.js.map +0 -1
- package/dist/providers/fireworks.models.d.ts.map +0 -1
- package/dist/providers/fireworks.models.js.map +0 -1
- package/dist/providers/github-copilot-limits.d.ts.map +0 -1
- package/dist/providers/github-copilot-limits.js.map +0 -1
- package/dist/providers/github-copilot.d.ts.map +0 -1
- package/dist/providers/github-copilot.js.map +0 -1
- package/dist/providers/github-copilot.models.d.ts.map +0 -1
- package/dist/providers/github-copilot.models.js.map +0 -1
- package/dist/providers/google-shared.d.ts.map +0 -1
- package/dist/providers/google-shared.js.map +0 -1
- package/dist/providers/google-vertex.d.ts.map +0 -1
- package/dist/providers/google-vertex.js.map +0 -1
- package/dist/providers/google-vertex.models.d.ts.map +0 -1
- package/dist/providers/google-vertex.models.js.map +0 -1
- package/dist/providers/google.d.ts.map +0 -1
- package/dist/providers/google.js.map +0 -1
- package/dist/providers/google.models.d.ts.map +0 -1
- package/dist/providers/google.models.js.map +0 -1
- package/dist/providers/groq.d.ts.map +0 -1
- package/dist/providers/groq.js.map +0 -1
- package/dist/providers/groq.models.d.ts.map +0 -1
- package/dist/providers/groq.models.js.map +0 -1
- package/dist/providers/huggingface.d.ts.map +0 -1
- package/dist/providers/huggingface.js.map +0 -1
- package/dist/providers/huggingface.models.d.ts.map +0 -1
- package/dist/providers/huggingface.models.js.map +0 -1
- package/dist/providers/images/register-builtins.d.ts.map +0 -1
- package/dist/providers/images/register-builtins.js.map +0 -1
- package/dist/providers/kimi-coding-auth.d.ts.map +0 -1
- package/dist/providers/kimi-coding-auth.js.map +0 -1
- package/dist/providers/kimi-coding.d.ts.map +0 -1
- package/dist/providers/kimi-coding.js.map +0 -1
- package/dist/providers/kimi-coding.models.d.ts.map +0 -1
- package/dist/providers/kimi-coding.models.js.map +0 -1
- package/dist/providers/minimax-cn.d.ts.map +0 -1
- package/dist/providers/minimax-cn.js.map +0 -1
- package/dist/providers/minimax-cn.models.d.ts.map +0 -1
- package/dist/providers/minimax-cn.models.js.map +0 -1
- package/dist/providers/minimax.d.ts.map +0 -1
- package/dist/providers/minimax.js.map +0 -1
- package/dist/providers/minimax.models.d.ts.map +0 -1
- package/dist/providers/minimax.models.js.map +0 -1
- package/dist/providers/mistral.d.ts.map +0 -1
- package/dist/providers/mistral.js.map +0 -1
- package/dist/providers/mistral.models.d.ts.map +0 -1
- package/dist/providers/mistral.models.js.map +0 -1
- package/dist/providers/moonshotai-cn.d.ts.map +0 -1
- package/dist/providers/moonshotai-cn.js.map +0 -1
- package/dist/providers/moonshotai-cn.models.d.ts.map +0 -1
- package/dist/providers/moonshotai-cn.models.js.map +0 -1
- package/dist/providers/moonshotai.d.ts.map +0 -1
- package/dist/providers/moonshotai.js.map +0 -1
- package/dist/providers/moonshotai.models.d.ts.map +0 -1
- package/dist/providers/moonshotai.models.js.map +0 -1
- package/dist/providers/nvidia.d.ts.map +0 -1
- package/dist/providers/nvidia.js.map +0 -1
- package/dist/providers/nvidia.models.d.ts.map +0 -1
- package/dist/providers/nvidia.models.js.map +0 -1
- package/dist/providers/ollama.d.ts.map +0 -1
- package/dist/providers/ollama.js.map +0 -1
- package/dist/providers/openai-completions.d.ts.map +0 -1
- package/dist/providers/openai-completions.js.map +0 -1
- package/dist/providers/openai-images.d.ts +0 -3
- package/dist/providers/openai-images.d.ts.map +0 -1
- package/dist/providers/openai-images.js +0 -16
- package/dist/providers/openai-images.js.map +0 -1
- package/dist/providers/openai-responses-shared.d.ts.map +0 -1
- package/dist/providers/openai-responses-shared.js.map +0 -1
- package/dist/providers/openai-responses.d.ts.map +0 -1
- package/dist/providers/openai-responses.js.map +0 -1
- package/dist/providers/openai.d.ts.map +0 -1
- package/dist/providers/openai.js.map +0 -1
- package/dist/providers/openai.models.d.ts.map +0 -1
- package/dist/providers/openai.models.js.map +0 -1
- package/dist/providers/opencode-go.d.ts.map +0 -1
- package/dist/providers/opencode-go.js.map +0 -1
- package/dist/providers/opencode-go.models.d.ts.map +0 -1
- package/dist/providers/opencode-go.models.js.map +0 -1
- package/dist/providers/opencode-headers.d.ts.map +0 -1
- package/dist/providers/opencode-headers.js.map +0 -1
- package/dist/providers/opencode.d.ts.map +0 -1
- package/dist/providers/opencode.js.map +0 -1
- package/dist/providers/opencode.models.d.ts.map +0 -1
- package/dist/providers/opencode.models.js.map +0 -1
- package/dist/providers/opengateway.d.ts.map +0 -1
- package/dist/providers/opengateway.js.map +0 -1
- package/dist/providers/opengateway.models.d.ts.map +0 -1
- package/dist/providers/opengateway.models.js.map +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/providers/openrouter.d.ts.map +0 -1
- package/dist/providers/openrouter.js.map +0 -1
- package/dist/providers/openrouter.models.d.ts.map +0 -1
- package/dist/providers/openrouter.models.js.map +0 -1
- package/dist/providers/qwen-token-plan-cn.d.ts.map +0 -1
- package/dist/providers/qwen-token-plan-cn.js.map +0 -1
- package/dist/providers/qwen-token-plan-cn.models.d.ts.map +0 -1
- package/dist/providers/qwen-token-plan-cn.models.js.map +0 -1
- package/dist/providers/qwen-token-plan-individual.d.ts.map +0 -1
- package/dist/providers/qwen-token-plan-individual.js.map +0 -1
- package/dist/providers/qwen-token-plan-individual.models.d.ts.map +0 -1
- package/dist/providers/qwen-token-plan-individual.models.js.map +0 -1
- package/dist/providers/qwen-token-plan.d.ts.map +0 -1
- package/dist/providers/qwen-token-plan.js.map +0 -1
- package/dist/providers/qwen-token-plan.models.d.ts.map +0 -1
- package/dist/providers/qwen-token-plan.models.js.map +0 -1
- package/dist/providers/radius-config.d.ts.map +0 -1
- package/dist/providers/radius-config.js.map +0 -1
- package/dist/providers/radius.d.ts.map +0 -1
- package/dist/providers/radius.js.map +0 -1
- package/dist/providers/register-builtins.d.ts.map +0 -1
- package/dist/providers/register-builtins.js.map +0 -1
- package/dist/providers/together.d.ts.map +0 -1
- package/dist/providers/together.js.map +0 -1
- package/dist/providers/together.models.d.ts.map +0 -1
- package/dist/providers/together.models.js.map +0 -1
- package/dist/providers/venice.d.ts.map +0 -1
- package/dist/providers/venice.js.map +0 -1
- package/dist/providers/venice.models.d.ts.map +0 -1
- package/dist/providers/venice.models.js.map +0 -1
- package/dist/providers/vercel-ai-gateway.d.ts.map +0 -1
- package/dist/providers/vercel-ai-gateway.js.map +0 -1
- package/dist/providers/vercel-ai-gateway.models.d.ts.map +0 -1
- package/dist/providers/vercel-ai-gateway.models.js.map +0 -1
- package/dist/providers/xai.d.ts.map +0 -1
- package/dist/providers/xai.js.map +0 -1
- package/dist/providers/xai.models.d.ts.map +0 -1
- package/dist/providers/xai.models.js.map +0 -1
- package/dist/providers/xiaomi-token-plan-ams.d.ts.map +0 -1
- package/dist/providers/xiaomi-token-plan-ams.js.map +0 -1
- package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +0 -1
- package/dist/providers/xiaomi-token-plan-ams.models.js.map +0 -1
- package/dist/providers/xiaomi-token-plan-cn.d.ts.map +0 -1
- package/dist/providers/xiaomi-token-plan-cn.js.map +0 -1
- package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +0 -1
- package/dist/providers/xiaomi-token-plan-cn.models.js.map +0 -1
- package/dist/providers/xiaomi-token-plan-sgp.d.ts.map +0 -1
- package/dist/providers/xiaomi-token-plan-sgp.js.map +0 -1
- package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +0 -1
- package/dist/providers/xiaomi-token-plan-sgp.models.js.map +0 -1
- package/dist/providers/xiaomi.d.ts.map +0 -1
- package/dist/providers/xiaomi.js.map +0 -1
- package/dist/providers/xiaomi.models.d.ts.map +0 -1
- package/dist/providers/xiaomi.models.js.map +0 -1
- package/dist/providers/zai-coding-cn.d.ts.map +0 -1
- package/dist/providers/zai-coding-cn.js.map +0 -1
- package/dist/providers/zai-coding-cn.models.d.ts.map +0 -1
- package/dist/providers/zai-coding-cn.models.js.map +0 -1
- package/dist/providers/zai.d.ts.map +0 -1
- package/dist/providers/zai.js.map +0 -1
- package/dist/providers/zai.models.d.ts.map +0 -1
- package/dist/providers/zai.models.js.map +0 -1
- package/dist/session-resources.d.ts.map +0 -1
- package/dist/session-resources.js.map +0 -1
- package/dist/stream.d.ts.map +0 -1
- package/dist/stream.js.map +0 -1
- package/dist/tool-call-middleware/context-transformer.d.ts.map +0 -1
- package/dist/tool-call-middleware/context-transformer.js.map +0 -1
- package/dist/tool-call-middleware/index.d.ts.map +0 -1
- package/dist/tool-call-middleware/index.js.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/coerce-parameters.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/coerce-parameters.js.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/format.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/format.js.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/index.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/index.js.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/invoke-match.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/invoke-match.js.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/invoke-protocol.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/invoke-protocol.js.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/invoke-stream-helpers.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/invoke-stream-helpers.js.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/invoke-tag-scanner.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/invoke-tag-scanner.js.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/invoke-tag-syntax.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/invoke-tag-syntax.js.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/parse.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/parse.js.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/recovery-stream.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/recovery-stream.js.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/recovery-wrapper-state.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/recovery-wrapper-state.js.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/stream-boundary.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/stream-boundary.js.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/stream.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/stream.js.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/tool-resolver.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/tool-resolver.js.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/xml-entities.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/anthropic-xml/xml-entities.js.map +0 -1
- package/dist/tool-call-middleware/protocols/antml/coerce-parameters.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/antml/coerce-parameters.js.map +0 -1
- package/dist/tool-call-middleware/protocols/antml/config.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/antml/config.js.map +0 -1
- package/dist/tool-call-middleware/protocols/antml/format.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/antml/format.js.map +0 -1
- package/dist/tool-call-middleware/protocols/antml/index.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/antml/index.js.map +0 -1
- package/dist/tool-call-middleware/protocols/antml/parse.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/antml/parse.js.map +0 -1
- package/dist/tool-call-middleware/protocols/antml/recovery-stream.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/antml/recovery-stream.js.map +0 -1
- package/dist/tool-call-middleware/protocols/antml/repair.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/antml/repair.js.map +0 -1
- package/dist/tool-call-middleware/protocols/antml/stream.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/antml/stream.js.map +0 -1
- package/dist/tool-call-middleware/protocols/gemma4.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/gemma4.js.map +0 -1
- package/dist/tool-call-middleware/protocols/hermes.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/hermes.js.map +0 -1
- package/dist/tool-call-middleware/protocols/json-mix.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/json-mix.js.map +0 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/format.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/format.js.map +0 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/index.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/index.js.map +0 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/markers.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/markers.js.map +0 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/parse.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/parse.js.map +0 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/recovery-stream.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/recovery-stream.js.map +0 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/stream.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/stream.js.map +0 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/thinking-recovery-stream.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/thinking-recovery-stream.js.map +0 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/thinking-recovery.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/thinking-recovery.js.map +0 -1
- package/dist/tool-call-middleware/protocols/morph-xml.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/morph-xml.js.map +0 -1
- package/dist/tool-call-middleware/protocols/xml-tool-tag-scanner.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/xml-tool-tag-scanner.js.map +0 -1
- package/dist/tool-call-middleware/protocols/yaml-xml.d.ts.map +0 -1
- package/dist/tool-call-middleware/protocols/yaml-xml.js.map +0 -1
- package/dist/tool-call-middleware/recovery-code-mask.d.ts.map +0 -1
- package/dist/tool-call-middleware/recovery-code-mask.js.map +0 -1
- package/dist/tool-call-middleware/recovery-content-lifecycle.d.ts.map +0 -1
- package/dist/tool-call-middleware/recovery-content-lifecycle.js.map +0 -1
- package/dist/tool-call-middleware/recovery-diagnostics.d.ts.map +0 -1
- package/dist/tool-call-middleware/recovery-diagnostics.js.map +0 -1
- package/dist/tool-call-middleware/recovery-event-stream.d.ts.map +0 -1
- package/dist/tool-call-middleware/recovery-event-stream.js.map +0 -1
- package/dist/tool-call-middleware/recovery-message-snapshot.d.ts.map +0 -1
- package/dist/tool-call-middleware/recovery-message-snapshot.js.map +0 -1
- package/dist/tool-call-middleware/recovery-native-projection.d.ts.map +0 -1
- package/dist/tool-call-middleware/recovery-native-projection.js.map +0 -1
- package/dist/tool-call-middleware/recovery-stream-failure.d.ts.map +0 -1
- package/dist/tool-call-middleware/recovery-stream-failure.js.map +0 -1
- package/dist/tool-call-middleware/recovery-stream-terminal.d.ts.map +0 -1
- package/dist/tool-call-middleware/recovery-stream-terminal.js.map +0 -1
- package/dist/tool-call-middleware/recovery-stream-wrapper.d.ts.map +0 -1
- package/dist/tool-call-middleware/recovery-stream-wrapper.js.map +0 -1
- package/dist/tool-call-middleware/recovery-text-projection.d.ts.map +0 -1
- package/dist/tool-call-middleware/recovery-text-projection.js.map +0 -1
- package/dist/tool-call-middleware/stream-message-metadata.d.ts.map +0 -1
- package/dist/tool-call-middleware/stream-message-metadata.js.map +0 -1
- package/dist/tool-call-middleware/stream-thinking-projection.d.ts.map +0 -1
- package/dist/tool-call-middleware/stream-thinking-projection.js.map +0 -1
- package/dist/tool-call-middleware/stream-wrapper-shared.d.ts.map +0 -1
- package/dist/tool-call-middleware/stream-wrapper-shared.js.map +0 -1
- package/dist/tool-call-middleware/stream-wrapper.d.ts.map +0 -1
- package/dist/tool-call-middleware/stream-wrapper.js.map +0 -1
- package/dist/tool-call-middleware/types.d.ts.map +0 -1
- package/dist/tool-call-middleware/types.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils/abort-signals.d.ts.map +0 -1
- package/dist/utils/abort-signals.js.map +0 -1
- package/dist/utils/abort.d.ts.map +0 -1
- package/dist/utils/abort.js.map +0 -1
- package/dist/utils/assistant-message-frame.d.ts.map +0 -1
- package/dist/utils/assistant-message-frame.js.map +0 -1
- package/dist/utils/block-symbols.d.ts.map +0 -1
- package/dist/utils/block-symbols.js.map +0 -1
- package/dist/utils/chatgpt-subscription-auth.d.ts.map +0 -1
- package/dist/utils/chatgpt-subscription-auth.js.map +0 -1
- package/dist/utils/claude-code-version-cache.d.ts.map +0 -1
- package/dist/utils/claude-code-version-cache.js.map +0 -1
- package/dist/utils/claude-code-version.d.ts.map +0 -1
- package/dist/utils/claude-code-version.js.map +0 -1
- package/dist/utils/cursor-context-limit.d.ts.map +0 -1
- package/dist/utils/cursor-context-limit.js.map +0 -1
- package/dist/utils/deferred-tools.d.ts.map +0 -1
- package/dist/utils/deferred-tools.js.map +0 -1
- package/dist/utils/diagnostics.d.ts.map +0 -1
- package/dist/utils/diagnostics.js.map +0 -1
- package/dist/utils/drop-failed-assistant-turns.d.ts.map +0 -1
- package/dist/utils/drop-failed-assistant-turns.js.map +0 -1
- package/dist/utils/empty-response-errors.d.ts.map +0 -1
- package/dist/utils/empty-response-errors.js.map +0 -1
- package/dist/utils/error-body.d.ts.map +0 -1
- package/dist/utils/error-body.js.map +0 -1
- package/dist/utils/estimate.d.ts.map +0 -1
- package/dist/utils/estimate.js.map +0 -1
- package/dist/utils/event-stream.d.ts.map +0 -1
- package/dist/utils/event-stream.js.map +0 -1
- package/dist/utils/github-copilot-tool-limit.d.ts.map +0 -1
- package/dist/utils/github-copilot-tool-limit.js.map +0 -1
- package/dist/utils/hash.d.ts.map +0 -1
- package/dist/utils/hash.js.map +0 -1
- package/dist/utils/headers.d.ts.map +0 -1
- package/dist/utils/headers.js.map +0 -1
- package/dist/utils/json-parse.d.ts.map +0 -1
- package/dist/utils/json-parse.js.map +0 -1
- package/dist/utils/node-http-proxy.d.ts.map +0 -1
- package/dist/utils/node-http-proxy.js.map +0 -1
- package/dist/utils/overflow.d.ts.map +0 -1
- package/dist/utils/overflow.js.map +0 -1
- package/dist/utils/pi-user-agent.d.ts.map +0 -1
- package/dist/utils/pi-user-agent.js.map +0 -1
- package/dist/utils/process-singleton.d.ts.map +0 -1
- package/dist/utils/process-singleton.js.map +0 -1
- package/dist/utils/prompt-cache-ttl.d.ts.map +0 -1
- package/dist/utils/prompt-cache-ttl.js.map +0 -1
- package/dist/utils/provider-diagnostic-carrier.d.ts.map +0 -1
- package/dist/utils/provider-diagnostic-carrier.js.map +0 -1
- package/dist/utils/provider-diagnostic-sources.d.ts.map +0 -1
- package/dist/utils/provider-diagnostic-sources.js.map +0 -1
- package/dist/utils/provider-diagnostic-vocabulary.d.ts.map +0 -1
- package/dist/utils/provider-diagnostic-vocabulary.js.map +0 -1
- package/dist/utils/provider-env.d.ts.map +0 -1
- package/dist/utils/provider-env.js.map +0 -1
- package/dist/utils/provider-failure-description.d.ts.map +0 -1
- package/dist/utils/provider-failure-description.js.map +0 -1
- package/dist/utils/provider-retry.d.ts.map +0 -1
- package/dist/utils/provider-retry.js.map +0 -1
- package/dist/utils/retry-hint.d.ts.map +0 -1
- package/dist/utils/retry-hint.js.map +0 -1
- package/dist/utils/retry-profile/backoff.d.ts.map +0 -1
- package/dist/utils/retry-profile/backoff.js.map +0 -1
- package/dist/utils/retry-profile/classifiers.d.ts.map +0 -1
- package/dist/utils/retry-profile/classifiers.js.map +0 -1
- package/dist/utils/retry-profile/failure.d.ts.map +0 -1
- package/dist/utils/retry-profile/failure.js.map +0 -1
- package/dist/utils/retry-profile/index.d.ts.map +0 -1
- package/dist/utils/retry-profile/index.js.map +0 -1
- package/dist/utils/retry-profile/planner.d.ts.map +0 -1
- package/dist/utils/retry-profile/planner.js.map +0 -1
- package/dist/utils/retry-profile/profiles.d.ts.map +0 -1
- package/dist/utils/retry-profile/profiles.js.map +0 -1
- package/dist/utils/retry-profile/types.d.ts.map +0 -1
- package/dist/utils/retry-profile/types.js.map +0 -1
- package/dist/utils/retry.d.ts.map +0 -1
- package/dist/utils/retry.js.map +0 -1
- package/dist/utils/sanitize-unicode.d.ts.map +0 -1
- package/dist/utils/sanitize-unicode.js.map +0 -1
- package/dist/utils/server-fallback-receipt.d.ts.map +0 -1
- package/dist/utils/server-fallback-receipt.js.map +0 -1
- package/dist/utils/sleep.d.ts.map +0 -1
- package/dist/utils/sleep.js.map +0 -1
- package/dist/utils/stop-details.d.ts.map +0 -1
- package/dist/utils/stop-details.js.map +0 -1
- package/dist/utils/text.d.ts.map +0 -1
- package/dist/utils/text.js.map +0 -1
- package/dist/utils/tool-call-id.d.ts.map +0 -1
- package/dist/utils/tool-call-id.js.map +0 -1
- package/dist/utils/tool-choice-fallback.d.ts.map +0 -1
- package/dist/utils/tool-choice-fallback.js.map +0 -1
- package/dist/utils/tool-name-match.d.ts.map +0 -1
- package/dist/utils/tool-name-match.js.map +0 -1
- package/dist/utils/tool-pair-repair.d.ts.map +0 -1
- package/dist/utils/tool-pair-repair.js.map +0 -1
- package/dist/utils/tool-schema-compat.d.ts.map +0 -1
- package/dist/utils/tool-schema-compat.js.map +0 -1
- package/dist/utils/typebox-helpers.d.ts.map +0 -1
- package/dist/utils/typebox-helpers.js.map +0 -1
- package/dist/utils/unavailable-tool-text.d.ts.map +0 -1
- package/dist/utils/unavailable-tool-text.js.map +0 -1
- package/dist/utils/uuid.d.ts.map +0 -1
- package/dist/utils/uuid.js.map +0 -1
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js.map +0 -1
- package/dist/utils/visible-text.d.ts.map +0 -1
- package/dist/utils/visible-text.js.map +0 -1
- package/dist/wire-identity.d.ts.map +0 -1
- package/dist/wire-identity.js.map +0 -1
- /package/dist/{auth/oauth → utils}/oauth-page.d.ts +0 -0
- /package/dist/{auth/oauth → utils}/oauth-page.js +0 -0
|
@@ -21,9 +21,11 @@ import { appendRetryAfterMsMarker, extract429RetryAfterMs } from "../utils/retry
|
|
|
21
21
|
import { normalizeAnthropicRetryFailure } from "../utils/retry-profile/failure.js";
|
|
22
22
|
import { sanitizeSurrogates } from "../utils/sanitize-unicode.js";
|
|
23
23
|
import { applyServerFallbackAbort, applyServerFallbackContinuation, parseServerFallbackReceipt, parseStickyFallbackReceipt, } from "../utils/server-fallback-receipt.js";
|
|
24
|
+
import { getSystemMessageText, renderSystemMessageUpdate } from "../utils/text.js";
|
|
24
25
|
import { normalizeToolCallId } from "../utils/tool-call-id.js";
|
|
25
26
|
import { sendWithForcedToolChoiceFallback } from "../utils/tool-choice-fallback.js";
|
|
26
27
|
import { resolveRootObjectSchema } from "../utils/tool-schema-compat.js";
|
|
28
|
+
import { getCurrentTools, getDeclaredTools, getInitialSystemMessage, hasToolRedefinitions, normalizeContext, resolveTranscript, } from "../utils/transcript.js";
|
|
27
29
|
import { sanitizeAnthropicToolPairs } from "./anthropic-tool-pairs.js";
|
|
28
30
|
import { demoteUnavailableToolReferences } from "./anthropic-tool-references.js";
|
|
29
31
|
import { resolveCloudflareBaseUrl } from "./cloudflare.js";
|
|
@@ -68,7 +70,7 @@ function getCacheControl(model, cacheRetention, env) {
|
|
|
68
70
|
// The bundled Claude Code version and the floor of the advertised `claude-cli/<version>`
|
|
69
71
|
// (see utils/claude-code-version.ts). Keep this exact declaration: a downstream installer
|
|
70
72
|
// (oh-my-openagent) rewrites it byte-for-byte in the installed dist and bundle.
|
|
71
|
-
const claudeCodeVersion = "2.1.
|
|
73
|
+
const claudeCodeVersion = "2.1.285";
|
|
72
74
|
// Claude Code 2.x tool names (canonical casing)
|
|
73
75
|
// Source: https://cchistory.mariozechner.at/data/prompts-2.1.11.md
|
|
74
76
|
// To update: https://github.com/badlogic/cchistory
|
|
@@ -204,6 +206,28 @@ function shouldUseServerSideFallbackBeta(model) {
|
|
|
204
206
|
}
|
|
205
207
|
const MID_CONVERSATION_OUTPUT_CONFIG_BETA = "mid-conversation-output-config-2026-07-01";
|
|
206
208
|
const THINKING_BINDING_CONTROLS_BETA = "thinking-binding-controls-2026-08-01";
|
|
209
|
+
const MID_CONVERSATION_TOOL_CHANGES_BETA = "mid-conversation-tool-changes-2026-07-01";
|
|
210
|
+
/**
|
|
211
|
+
* Stable deferred tool declared whenever native tool changes are in use. Anthropic adds
|
|
212
|
+
* hidden prompt scaffolding as soon as any tool has `defer_loading`; declaring this
|
|
213
|
+
* placeholder from the first request keeps that scaffolding in the cached prefix, so the
|
|
214
|
+
* first real late tool does not invalidate the cache (measured: full miss without it).
|
|
215
|
+
* It is never activated and the model cannot see it.
|
|
216
|
+
*/
|
|
217
|
+
const DEFERRED_TOOL_PLACEHOLDER = {
|
|
218
|
+
name: "__pi_deferred_placeholder__",
|
|
219
|
+
description: "Reserved placeholder. Never available. Never call this.",
|
|
220
|
+
input_schema: { type: "object", properties: {}, required: [] },
|
|
221
|
+
defer_loading: true,
|
|
222
|
+
};
|
|
223
|
+
// Upstream mid-conversation system messages and native tool changes. Read from the model
|
|
224
|
+
// compat directly: both default off, and the shared getAnthropicCompat keeps fork defaults.
|
|
225
|
+
function supportsMidConvoSystemMessages(model) {
|
|
226
|
+
return model.compat?.supportsMidConvoSystemMessages ?? false;
|
|
227
|
+
}
|
|
228
|
+
function supportsMidConvoToolChanges(model) {
|
|
229
|
+
return model.compat?.supportsMidConvoToolChanges ?? false;
|
|
230
|
+
}
|
|
207
231
|
// A provider can reject its own empty signatures. Learn that capability for one
|
|
208
232
|
// conversation without changing the shared model definition used by other sessions.
|
|
209
233
|
const unsignedThinkingTextReplayFallbacks = new Set();
|
|
@@ -658,6 +682,15 @@ function isToolLoopContinuation(messages) {
|
|
|
658
682
|
Array.isArray(preceding.content) &&
|
|
659
683
|
preceding.content.some((block) => block.type === "tool_use"));
|
|
660
684
|
}
|
|
685
|
+
function markSystemMessageCacheCheckpoint(message, cacheControl) {
|
|
686
|
+
if (!Array.isArray(message.content))
|
|
687
|
+
return;
|
|
688
|
+
const lastBlock = message.content[message.content.length - 1];
|
|
689
|
+
if (lastBlock &&
|
|
690
|
+
(lastBlock.type === "text" || lastBlock.type === "tool_addition" || lastBlock.type === "tool_removal")) {
|
|
691
|
+
lastBlock.cache_control = cacheControl;
|
|
692
|
+
}
|
|
693
|
+
}
|
|
661
694
|
function markUserMessageCacheCheckpoint(message, cacheControl) {
|
|
662
695
|
if (message.role !== "user")
|
|
663
696
|
return false;
|
|
@@ -832,6 +865,8 @@ async function* iterateAnthropicEvents(response, signal) {
|
|
|
832
865
|
}
|
|
833
866
|
export const stream = (model, context, options) => {
|
|
834
867
|
const stream = new AssistantMessageEventStream();
|
|
868
|
+
const normalizedContext = resolveTranscript(context, supportsMidConvoSystemMessages(model));
|
|
869
|
+
const currentTools = getCurrentTools(normalizedContext.messages);
|
|
835
870
|
(async () => {
|
|
836
871
|
const providerThinkingLevel = model.compat?.supportsMidConvoEffort ? (options?.effort ?? "high") : undefined;
|
|
837
872
|
const output = {
|
|
@@ -872,16 +907,16 @@ export const stream = (model, context, options) => {
|
|
|
872
907
|
assertRequestAuth(model.provider, apiKey, optionsHeaders);
|
|
873
908
|
let copilotDynamicHeaders;
|
|
874
909
|
if (model.provider === "github-copilot") {
|
|
875
|
-
const hasImages = hasCopilotVisionInput(
|
|
910
|
+
const hasImages = hasCopilotVisionInput(normalizedContext.messages);
|
|
876
911
|
copilotDynamicHeaders = buildCopilotDynamicHeaders({
|
|
877
|
-
messages:
|
|
912
|
+
messages: normalizedContext.messages,
|
|
878
913
|
hasImages,
|
|
879
914
|
});
|
|
880
915
|
}
|
|
881
916
|
const cacheRetention = resolveCacheRetention(options?.cacheRetention ?? model.cacheRetention, options?.env, "short");
|
|
882
917
|
const cacheSessionId = cacheRetention === "none" ? undefined : options?.sessionId;
|
|
883
918
|
openClient = () => {
|
|
884
|
-
const created = createClient(model, apiKey, options?.interleavedThinking ?? true, shouldUseFineGrainedToolStreamingBeta(model,
|
|
919
|
+
const created = createClient(model, apiKey, options?.interleavedThinking ?? true, shouldUseFineGrainedToolStreamingBeta(model, normalizedContext), options?.refusalFallbacks !== undefined, optionsHeaders, options?.fetch, copilotDynamicHeaders, cacheSessionId, options?.env);
|
|
885
920
|
client = created.client;
|
|
886
921
|
isOAuth = created.isOAuthToken;
|
|
887
922
|
advertisedClaudeCodeVersion = created.claudeCodeVersion;
|
|
@@ -915,7 +950,7 @@ export const stream = (model, context, options) => {
|
|
|
915
950
|
? "text"
|
|
916
951
|
: getAnthropicCompat(model).unsignedThinkingReplay;
|
|
917
952
|
const createRequest = async () => {
|
|
918
|
-
let params = buildParams(model,
|
|
953
|
+
let params = buildParams(model, normalizedContext, isOAuth, options, unsignedThinkingReplay);
|
|
919
954
|
const nextParams = await options?.onPayload?.(params, model);
|
|
920
955
|
if (nextParams !== undefined) {
|
|
921
956
|
params = nextParams;
|
|
@@ -994,19 +1029,29 @@ export const stream = (model, context, options) => {
|
|
|
994
1029
|
stream.push({ type: "start", partial: output });
|
|
995
1030
|
const blocks = output.content;
|
|
996
1031
|
for await (const event of iterateAnthropicEvents(response, requestSignal)) {
|
|
1032
|
+
await options?.onProviderStreamEvent?.(event, model);
|
|
997
1033
|
if (event.type === "message_start") {
|
|
998
1034
|
output.responseId = event.message.id;
|
|
999
1035
|
const transformations = event.message.input_transformations;
|
|
1000
1036
|
if (Array.isArray(transformations))
|
|
1001
1037
|
inputTransformations = transformations;
|
|
1002
|
-
|
|
1003
|
-
|
|
1038
|
+
// Relays may report a renamed model for the same deployment, so the requested id stays
|
|
1039
|
+
// on the message (signed thinking keeps replaying) and the reported id is recorded
|
|
1040
|
+
// separately. A served model that is one of the request's allowed server-side
|
|
1041
|
+
// fallbacks is a real substitution: it becomes the message model, as the fork's
|
|
1042
|
+
// fallback-boundary replay and receipts expect.
|
|
1043
|
+
const responseModel = event.message.model;
|
|
1044
|
+
if (responseModel !== model.id)
|
|
1045
|
+
output.responseModel = responseModel;
|
|
1046
|
+
const fallback = responseModel === model.id
|
|
1004
1047
|
? undefined
|
|
1005
|
-
: model.compat?.allowedFallbackModels?.find((candidate) => typeof candidate
|
|
1006
|
-
candidate
|
|
1007
|
-
candidate.
|
|
1048
|
+
: model.compat?.allowedFallbackModels?.find((candidate) => typeof candidate === "string"
|
|
1049
|
+
? candidate === responseModel
|
|
1050
|
+
: candidate.provider === model.provider && candidate.model === responseModel);
|
|
1051
|
+
if (fallback !== undefined)
|
|
1052
|
+
output.model = responseModel;
|
|
1008
1053
|
const fallbackCost = typeof fallback === "string" ? undefined : fallback?.cost;
|
|
1009
|
-
usageModel = fallbackCost ? { ...model, id:
|
|
1054
|
+
usageModel = fallbackCost ? { ...model, id: responseModel, cost: fallbackCost } : model;
|
|
1010
1055
|
// Capture initial token usage from message_start event
|
|
1011
1056
|
// This ensures we have input token counts even if the stream is aborted early
|
|
1012
1057
|
output.usage.input = event.message.usage.input_tokens || 0;
|
|
@@ -1072,9 +1117,11 @@ export const stream = (model, context, options) => {
|
|
|
1072
1117
|
type: "toolCall",
|
|
1073
1118
|
id: event.content_block.id,
|
|
1074
1119
|
name: isOAuth
|
|
1075
|
-
? fromClaudeCodeName(event.content_block.name,
|
|
1120
|
+
? fromClaudeCodeName(event.content_block.name, currentTools)
|
|
1076
1121
|
: event.content_block.name,
|
|
1077
|
-
arguments: isRecord(event.content_block.input)
|
|
1122
|
+
arguments: isRecord(event.content_block.input)
|
|
1123
|
+
? event.content_block.input
|
|
1124
|
+
: {},
|
|
1078
1125
|
partialJson: "",
|
|
1079
1126
|
index: event.index,
|
|
1080
1127
|
};
|
|
@@ -1220,6 +1267,11 @@ export const stream = (model, context, options) => {
|
|
|
1220
1267
|
if (event.usage.cache_creation_input_tokens != null) {
|
|
1221
1268
|
output.usage.cacheWrite = event.usage.cache_creation_input_tokens;
|
|
1222
1269
|
}
|
|
1270
|
+
// Vercel AI Gateway includes the TTL breakdown in deltas, though the SDK only types it on message_start.
|
|
1271
|
+
const cacheCreation = event.usage.cache_creation;
|
|
1272
|
+
if (cacheCreation?.ephemeral_1h_input_tokens != null) {
|
|
1273
|
+
output.usage.cacheWrite1h = cacheCreation.ephemeral_1h_input_tokens;
|
|
1274
|
+
}
|
|
1223
1275
|
// Anthropic reports reasoning tokens as a subset of output tokens.
|
|
1224
1276
|
const thinkingTokens = event.usage.output_tokens_details?.thinking_tokens;
|
|
1225
1277
|
if (thinkingTokens != null) {
|
|
@@ -1510,7 +1562,10 @@ function createClient(model, apiKey, interleavedThinking, useFineGrainedToolStre
|
|
|
1510
1562
|
return { client, isOAuthToken: false };
|
|
1511
1563
|
}
|
|
1512
1564
|
export function buildAnthropicWarmPromptCacheParams(model, context, options) {
|
|
1513
|
-
|
|
1565
|
+
// Public fork entry (warmPromptCache, cache-keepalive): accepts a raw Context and builds
|
|
1566
|
+
// the same transcript the turn's stream() resolves, so the warmed prefix matches.
|
|
1567
|
+
const transcript = resolveTranscript(normalizeContext(context), supportsMidConvoSystemMessages(model));
|
|
1568
|
+
const params = buildParams(model, transcript, false, {
|
|
1514
1569
|
...options,
|
|
1515
1570
|
maxTokens: 0,
|
|
1516
1571
|
thinkingEnabled: undefined,
|
|
@@ -1522,7 +1577,7 @@ export function buildAnthropicWarmPromptCacheParams(model, context, options) {
|
|
|
1522
1577
|
max_tokens: 0,
|
|
1523
1578
|
});
|
|
1524
1579
|
}
|
|
1525
|
-
function getBetaFeatures(model, context, isOAuthToken, options) {
|
|
1580
|
+
function getBetaFeatures(model, context, isOAuthToken, nativeToolChanges, options) {
|
|
1526
1581
|
let configuredFeatures;
|
|
1527
1582
|
for (const headers of [model.headers, options?.headers]) {
|
|
1528
1583
|
for (const [name, value] of Object.entries(headers ?? {})) {
|
|
@@ -1556,22 +1611,41 @@ function getBetaFeatures(model, context, isOAuthToken, options) {
|
|
|
1556
1611
|
if (model.compat?.supportsMidConvoEffort === true) {
|
|
1557
1612
|
features.push(MID_CONVERSATION_OUTPUT_CONFIG_BETA, THINKING_BINDING_CONTROLS_BETA);
|
|
1558
1613
|
}
|
|
1614
|
+
if (nativeToolChanges)
|
|
1615
|
+
features.push(MID_CONVERSATION_TOOL_CHANGES_BETA);
|
|
1559
1616
|
return [...new Set(features)];
|
|
1560
1617
|
}
|
|
1561
1618
|
function buildParams(model, context, isOAuthToken, options, unsignedThinkingReplay = getAnthropicCompat(model).unsignedThinkingReplay) {
|
|
1562
1619
|
const compat = getAnthropicCompat(model);
|
|
1563
1620
|
const { cacheControl } = getCacheControl(model, options?.cacheRetention ?? model.cacheRetention, options?.env);
|
|
1621
|
+
const initialSystemMessage = getInitialSystemMessage(context.messages);
|
|
1622
|
+
const initialSystemText = initialSystemMessage ? getSystemMessageText(initialSystemMessage) : "";
|
|
1564
1623
|
const transformedMessages = transformMessages(context.messages, model, normalizeToolCallId, {
|
|
1565
1624
|
preserveThinking: options?.thinkingEnabled === true,
|
|
1566
1625
|
preserveUnsignedThinking: true,
|
|
1567
1626
|
});
|
|
1627
|
+
// The prompt travels in `params.system`; the leading system message is not a turn.
|
|
1628
|
+
const conversationMessages = initialSystemMessage ? transformedMessages.slice(1) : transformedMessages;
|
|
1629
|
+
// Native tool changes reference tools by name, so a redefined name cannot be expressed,
|
|
1630
|
+
// and Anthropic rejects a tool list where every tool is deferred, so there must be an
|
|
1631
|
+
// initial active tool to anchor the deferred ones. Otherwise the current tool list is sent.
|
|
1632
|
+
const initialTools = initialSystemMessage?.toolsAdded ?? [];
|
|
1633
|
+
const nativeToolChanges = supportsMidConvoSystemMessages(model) &&
|
|
1634
|
+
supportsMidConvoToolChanges(model) &&
|
|
1635
|
+
initialTools.length > 0 &&
|
|
1636
|
+
!hasToolRedefinitions(context.messages);
|
|
1568
1637
|
const normalizeToolName = isOAuthToken ? toClaudeCodeName : (name) => name;
|
|
1569
1638
|
// A marker on a discarded pre-fallback result must not defer its tool:
|
|
1570
1639
|
// convertMessages drops that result, so no tool_reference would replay to
|
|
1571
1640
|
// load the deferred definition.
|
|
1572
|
-
const discardedFallbackToolCallIds = collectDiscardedFallbackToolCallIds(
|
|
1573
|
-
const partitionMessages =
|
|
1574
|
-
|
|
1641
|
+
const discardedFallbackToolCallIds = collectDiscardedFallbackToolCallIds(conversationMessages, model);
|
|
1642
|
+
const partitionMessages = conversationMessages.filter((message) => !(message.role === "toolResult" && discardedFallbackToolCallIds.has(message.toolCallId)));
|
|
1643
|
+
// Without native tool changes, the fork's transcript-loaded deferral applies to the current
|
|
1644
|
+
// tool list: tools first surfaced by a tool result's `addedToolNames` are declared with
|
|
1645
|
+
// `defer_loading` and loaded by a `tool_reference`. Native tool changes own deferral otherwise.
|
|
1646
|
+
const toolPlacement = nativeToolChanges
|
|
1647
|
+
? { immediate: [], deferred: new Map() }
|
|
1648
|
+
: splitDeferredTools({ tools: getCurrentTools(context.messages), messages: partitionMessages }, compat.supportsToolReferences, normalizeToolName);
|
|
1575
1649
|
let immediateTools = toolPlacement.immediate;
|
|
1576
1650
|
let deferredTools = [...toolPlacement.deferred.values()];
|
|
1577
1651
|
if (immediateTools.length === 0 && deferredTools.length > 0) {
|
|
@@ -1580,8 +1654,8 @@ function buildParams(model, context, isOAuthToken, options, unsignedThinkingRepl
|
|
|
1580
1654
|
}
|
|
1581
1655
|
const deferredToolNames = new Set(deferredTools.map((tool) => normalizeToolName(tool.name)));
|
|
1582
1656
|
const activeEffort = options?.effort ?? "high";
|
|
1583
|
-
const betaFeatures = getBetaFeatures(model, context, isOAuthToken, options);
|
|
1584
|
-
const convertedMessages = convertMessages(
|
|
1657
|
+
const betaFeatures = getBetaFeatures(model, context, isOAuthToken, nativeToolChanges, options);
|
|
1658
|
+
const convertedMessages = convertMessages(conversationMessages, model, isOAuthToken, cacheControl, unsignedThinkingReplay, deferredToolNames, normalizeToolName, model.compat?.supportsMidConvoEffort === true ? model.provider : undefined, nativeToolChanges);
|
|
1585
1659
|
const messages = model.compat?.supportsMidConvoEffort === true
|
|
1586
1660
|
? insertThinkingLevelMessages(convertedMessages, activeEffort)
|
|
1587
1661
|
: convertedMessages.messages;
|
|
@@ -1589,8 +1663,13 @@ function buildParams(model, context, isOAuthToken, options, unsignedThinkingRepl
|
|
|
1589
1663
|
// against the actual last user/tool-result message so the marker cannot displace cache_control.
|
|
1590
1664
|
if (model.compat?.supportsMidConvoEffort === true && cacheControl) {
|
|
1591
1665
|
for (let index = messages.length - 1; index >= 0; index--) {
|
|
1592
|
-
|
|
1593
|
-
|
|
1666
|
+
const message = messages[index];
|
|
1667
|
+
// A native system update after the last turn already holds the checkpoint;
|
|
1668
|
+
// effort markers carry no content.
|
|
1669
|
+
if (message.role === "system" && Array.isArray(message.content) && message.content.length > 0)
|
|
1670
|
+
break;
|
|
1671
|
+
if (message.role === "user") {
|
|
1672
|
+
markUserMessageCacheCheckpoint(message, cacheControl);
|
|
1594
1673
|
break;
|
|
1595
1674
|
}
|
|
1596
1675
|
}
|
|
@@ -1608,23 +1687,23 @@ function buildParams(model, context, isOAuthToken, options, unsignedThinkingRepl
|
|
|
1608
1687
|
{
|
|
1609
1688
|
type: "text",
|
|
1610
1689
|
text: "You are Claude Code, Anthropic's official CLI for Claude.",
|
|
1611
|
-
...(!
|
|
1690
|
+
...(!initialSystemText && cacheControl ? { cache_control: cacheControl } : {}),
|
|
1612
1691
|
},
|
|
1613
1692
|
];
|
|
1614
|
-
if (
|
|
1693
|
+
if (initialSystemText) {
|
|
1615
1694
|
params.system.push({
|
|
1616
1695
|
type: "text",
|
|
1617
|
-
text: sanitizeSurrogates(
|
|
1696
|
+
text: sanitizeSurrogates(initialSystemText),
|
|
1618
1697
|
...(cacheControl ? { cache_control: cacheControl } : {}),
|
|
1619
1698
|
});
|
|
1620
1699
|
}
|
|
1621
1700
|
}
|
|
1622
|
-
else if (
|
|
1701
|
+
else if (initialSystemText) {
|
|
1623
1702
|
// Add cache control to system prompt for non-OAuth tokens
|
|
1624
1703
|
params.system = [
|
|
1625
1704
|
{
|
|
1626
1705
|
type: "text",
|
|
1627
|
-
text: sanitizeSurrogates(
|
|
1706
|
+
text: sanitizeSurrogates(initialSystemText),
|
|
1628
1707
|
...(cacheControl ? { cache_control: cacheControl } : {}),
|
|
1629
1708
|
},
|
|
1630
1709
|
];
|
|
@@ -1638,9 +1717,23 @@ function buildParams(model, context, isOAuthToken, options, unsignedThinkingRepl
|
|
|
1638
1717
|
configurable: true,
|
|
1639
1718
|
});
|
|
1640
1719
|
}
|
|
1641
|
-
|
|
1720
|
+
const toolCacheControl = compat.supportsCacheControlOnTools ? cacheControl : undefined;
|
|
1721
|
+
if (nativeToolChanges) {
|
|
1722
|
+
// Initial tools stay active with the cache breakpoint on the last one. Every later
|
|
1723
|
+
// declaration is deferred and only surfaced by its `tool_addition` block; removed
|
|
1724
|
+
// tools stay declared and are withdrawn by `tool_removal`. The request-level list
|
|
1725
|
+
// therefore only grows, keeping the cached prefix intact across tool changes.
|
|
1726
|
+
const initialNames = new Set(initialTools.map((tool) => tool.name));
|
|
1727
|
+
const laterTools = getDeclaredTools(context.messages).filter((tool) => !initialNames.has(tool.name));
|
|
1642
1728
|
params.tools = [
|
|
1643
|
-
...convertTools(
|
|
1729
|
+
...convertTools(initialTools, isOAuthToken, compat.supportsEagerToolInputStreaming, compat.supportsStrictTools, toolCacheControl),
|
|
1730
|
+
DEFERRED_TOOL_PLACEHOLDER,
|
|
1731
|
+
...convertTools(laterTools, isOAuthToken, compat.supportsEagerToolInputStreaming, compat.supportsStrictTools, undefined, true),
|
|
1732
|
+
];
|
|
1733
|
+
}
|
|
1734
|
+
else if (immediateTools.length > 0 || deferredTools.length > 0) {
|
|
1735
|
+
params.tools = [
|
|
1736
|
+
...convertTools(immediateTools, isOAuthToken, compat.supportsEagerToolInputStreaming, compat.supportsStrictTools, toolCacheControl),
|
|
1644
1737
|
...convertTools(deferredTools, isOAuthToken, compat.supportsEagerToolInputStreaming, compat.supportsStrictTools, undefined, true),
|
|
1645
1738
|
];
|
|
1646
1739
|
}
|
|
@@ -1791,10 +1884,20 @@ function convertToolResult(msg, isOAuthToken, deferredToolNames, loadedToolNames
|
|
|
1791
1884
|
: convertedContent,
|
|
1792
1885
|
};
|
|
1793
1886
|
}
|
|
1794
|
-
function convertMessages(transformedMessages, model, isOAuthToken, cacheControl, unsignedThinkingReplay = "text", deferredToolNames = new Set(), normalizeToolName = (name) => name, managedProvider) {
|
|
1887
|
+
function convertMessages(transformedMessages, model, isOAuthToken, cacheControl, unsignedThinkingReplay = "text", deferredToolNames = new Set(), normalizeToolName = (name) => name, managedProvider, nativeToolChanges = false) {
|
|
1795
1888
|
const params = [];
|
|
1796
1889
|
const assistantLevels = new Map();
|
|
1797
1890
|
const loadedToolNames = new Set();
|
|
1891
|
+
// Later system messages are held back and emitted directly before the next assistant
|
|
1892
|
+
// message (or at the end of the transcript). Anthropic requires `tool_result` blocks to
|
|
1893
|
+
// immediately follow their `tool_use`, so a system message between them is rejected; this
|
|
1894
|
+
// also mirrors where the managed-effort system messages are inserted. As a result an
|
|
1895
|
+
// update placed before a user message in the transcript lands after it on the wire.
|
|
1896
|
+
const pendingSystemMessages = [];
|
|
1897
|
+
const flushPendingSystemMessages = () => {
|
|
1898
|
+
params.push(...pendingSystemMessages);
|
|
1899
|
+
pendingSystemMessages.length = 0;
|
|
1900
|
+
};
|
|
1798
1901
|
// Tool calls from a declined pre-fallback attempt are dropped from their
|
|
1799
1902
|
// assistant turn below; drop their tool_results in lockstep so none dangle.
|
|
1800
1903
|
const discardedFallbackToolCallIds = collectDiscardedFallbackToolCallIds(transformedMessages, model);
|
|
@@ -1802,7 +1905,31 @@ function convertMessages(transformedMessages, model, isOAuthToken, cacheControl,
|
|
|
1802
1905
|
const providerNativeToolPairing = collectProviderNativeToolPairing(transformedMessages, model, deferredToolNames, normalizeToolName, discardedFallbackToolCallIds);
|
|
1803
1906
|
for (let i = 0; i < transformedMessages.length; i++) {
|
|
1804
1907
|
const msg = transformedMessages[i];
|
|
1805
|
-
if (msg.role === "
|
|
1908
|
+
if (msg.role === "system") {
|
|
1909
|
+
// Later system messages only reach this point when the model accepts them natively;
|
|
1910
|
+
// otherwise the transcript was collapsed into the leading message before conversion.
|
|
1911
|
+
const text = renderSystemMessageUpdate(msg);
|
|
1912
|
+
const blocks = [];
|
|
1913
|
+
if (text.length > 0)
|
|
1914
|
+
blocks.push({ type: "text", text: sanitizeSurrogates(text) });
|
|
1915
|
+
if (nativeToolChanges) {
|
|
1916
|
+
for (const tool of msg.toolsRemoved ?? []) {
|
|
1917
|
+
blocks.push({
|
|
1918
|
+
type: "tool_removal",
|
|
1919
|
+
tool: { type: "tool_reference", name: isOAuthToken ? toClaudeCodeName(tool.name) : tool.name },
|
|
1920
|
+
});
|
|
1921
|
+
}
|
|
1922
|
+
for (const tool of msg.toolsAdded ?? []) {
|
|
1923
|
+
blocks.push({
|
|
1924
|
+
type: "tool_addition",
|
|
1925
|
+
tool: { type: "tool_reference", name: isOAuthToken ? toClaudeCodeName(tool.name) : tool.name },
|
|
1926
|
+
});
|
|
1927
|
+
}
|
|
1928
|
+
}
|
|
1929
|
+
if (blocks.length > 0)
|
|
1930
|
+
pendingSystemMessages.push({ role: "system", content: blocks });
|
|
1931
|
+
}
|
|
1932
|
+
else if (msg.role === "user") {
|
|
1806
1933
|
if (typeof msg.content === "string") {
|
|
1807
1934
|
if (msg.content.trim().length > 0) {
|
|
1808
1935
|
const content = sanitizeSurrogates(msg.content);
|
|
@@ -1855,6 +1982,7 @@ function convertMessages(transformedMessages, model, isOAuthToken, cacheControl,
|
|
|
1855
1982
|
}
|
|
1856
1983
|
}
|
|
1857
1984
|
else if (msg.role === "assistant") {
|
|
1985
|
+
flushPendingSystemMessages();
|
|
1858
1986
|
const blocks = [];
|
|
1859
1987
|
const isSameModel = isSameAnthropicModel(msg, model);
|
|
1860
1988
|
// Blocks before the final fallback marker are the declined attempt; the
|
|
@@ -1977,6 +2105,14 @@ function convertMessages(transformedMessages, model, isOAuthToken, cacheControl,
|
|
|
1977
2105
|
appendUserBlocks(params, [...toolResults, ...siblingContent]);
|
|
1978
2106
|
}
|
|
1979
2107
|
}
|
|
2108
|
+
flushPendingSystemMessages();
|
|
2109
|
+
// A trailing native system update carries the history checkpoint itself (upstream);
|
|
2110
|
+
// otherwise the fork's final-user and tool-loop checkpoints apply.
|
|
2111
|
+
const lastParam = params[params.length - 1];
|
|
2112
|
+
if (cacheControl && lastParam?.role === "system") {
|
|
2113
|
+
markSystemMessageCacheCheckpoint(lastParam, cacheControl);
|
|
2114
|
+
return { messages: params, assistantLevels };
|
|
2115
|
+
}
|
|
1980
2116
|
const retainPrecedingCheckpoint = isToolLoopContinuation(params);
|
|
1981
2117
|
if (cacheControl && params.length > 0 && markUserMessageCacheCheckpoint(params[params.length - 1], cacheControl)) {
|
|
1982
2118
|
if (retainPrecedingCheckpoint) {
|
|
@@ -2004,7 +2140,7 @@ function insertThinkingLevelMessages(converted, activeEffort) {
|
|
|
2004
2140
|
return messages;
|
|
2005
2141
|
}
|
|
2006
2142
|
function shouldUseFineGrainedToolStreamingBeta(model, context) {
|
|
2007
|
-
return
|
|
2143
|
+
return getCurrentTools(context.messages).length > 0 && !getAnthropicCompat(model).supportsEagerToolInputStreaming;
|
|
2008
2144
|
}
|
|
2009
2145
|
function convertTools(tools, isOAuthToken, supportsEagerToolInputStreaming, supportsStrictTools, cacheControl, deferLoading = false) {
|
|
2010
2146
|
if (!tools)
|
|
@@ -6,6 +6,7 @@ import { headersToRecord } from "../utils/headers.js";
|
|
|
6
6
|
import { getPiUserAgent } from "../utils/pi-user-agent.js";
|
|
7
7
|
import { getProviderEnvValue } from "../utils/provider-env.js";
|
|
8
8
|
import { retryProviderRequest } from "../utils/provider-retry.js";
|
|
9
|
+
import { getDeclaredTools, resolveTranscript, resolveTranscriptTools } from "../utils/transcript.js";
|
|
9
10
|
import { createGrammarToolInputProperties } from "./constrained-sampling.js";
|
|
10
11
|
import { clampOpenAIPromptCacheKey } from "./openai-prompt-cache.js";
|
|
11
12
|
import { convertResponsesMessages, convertResponsesTools, processResponsesStream } from "./openai-responses-shared.js";
|
|
@@ -44,6 +45,7 @@ function formatAzureOpenAIError(error) {
|
|
|
44
45
|
*/
|
|
45
46
|
export const stream = (model, context, options) => {
|
|
46
47
|
const stream = new AssistantMessageEventStream();
|
|
48
|
+
const normalizedContext = resolveTranscript(context, model.compat?.supportsMidConvoSystemMessages);
|
|
47
49
|
// Start async processing
|
|
48
50
|
(async () => {
|
|
49
51
|
const deploymentName = resolveDeploymentName(model, options);
|
|
@@ -71,8 +73,8 @@ export const stream = (model, context, options) => {
|
|
|
71
73
|
throw new Error(`No API key for provider: ${model.provider}`);
|
|
72
74
|
}
|
|
73
75
|
const client = createClient(model, apiKey, options);
|
|
74
|
-
const grammarToolInputProperties = createGrammarToolInputProperties(
|
|
75
|
-
let params = buildParams(model,
|
|
76
|
+
const grammarToolInputProperties = createGrammarToolInputProperties(getDeclaredTools(normalizedContext.messages), model.compat?.supportsOpenAIGrammarTools ?? false);
|
|
77
|
+
let params = buildParams(model, normalizedContext, options, deploymentName, grammarToolInputProperties);
|
|
76
78
|
const nextParams = await options?.onPayload?.(params, model);
|
|
77
79
|
if (nextParams !== undefined) {
|
|
78
80
|
params = nextParams;
|
|
@@ -89,7 +91,10 @@ export const stream = (model, context, options) => {
|
|
|
89
91
|
});
|
|
90
92
|
await options?.onResponse?.({ status: response.status, headers: headersToRecord(response.headers) }, model);
|
|
91
93
|
stream.push({ type: "start", partial: output });
|
|
92
|
-
await processResponsesStream(openaiStream, output, stream, model, {
|
|
94
|
+
await processResponsesStream(openaiStream, output, stream, model, {
|
|
95
|
+
onProviderStreamEvent: options?.onProviderStreamEvent,
|
|
96
|
+
grammarToolInputProperties,
|
|
97
|
+
});
|
|
93
98
|
if (options?.signal?.aborted) {
|
|
94
99
|
throw new Error("Request was aborted");
|
|
95
100
|
}
|
|
@@ -203,14 +208,24 @@ function createClient(model, apiKey, options) {
|
|
|
203
208
|
baseURL: baseUrl,
|
|
204
209
|
});
|
|
205
210
|
}
|
|
206
|
-
function buildParams(model, context, options, deploymentName, grammarToolInputProperties = createGrammarToolInputProperties(context.
|
|
211
|
+
function buildParams(model, context, options, deploymentName, grammarToolInputProperties = createGrammarToolInputProperties(getDeclaredTools(context.messages), model.compat?.supportsOpenAIGrammarTools ?? false)) {
|
|
207
212
|
const requestedReasoningEffort = options?.reasoningEffort ?? (options?.reasoningSummary ? "medium" : undefined);
|
|
208
213
|
const mappedReasoningEffort = requestedReasoningEffort === undefined ? undefined : model.thinkingLevelMap?.[requestedReasoningEffort];
|
|
209
214
|
const reasoningEffort = mappedReasoningEffort === undefined ? requestedReasoningEffort : mappedReasoningEffort;
|
|
210
215
|
const reasoningRequested = reasoningEffort !== undefined && reasoningEffort !== null;
|
|
211
216
|
const reasoningUnavailable = reasoningEffort === null;
|
|
217
|
+
const supportsAdditionalTools = model.compat?.supportsAdditionalTools ?? false;
|
|
218
|
+
const supportsToolSearch = model.compat?.supportsToolSearch ?? false;
|
|
219
|
+
const transcriptTools = resolveTranscriptTools(context.messages, supportsAdditionalTools || supportsToolSearch);
|
|
212
220
|
const messages = convertResponsesMessages(model, context, AZURE_TOOL_CALL_PROVIDERS, {
|
|
213
221
|
grammarToolInputProperties,
|
|
222
|
+
supportsMidConvoSystemMessages: model.compat?.supportsMidConvoSystemMessages ?? false,
|
|
223
|
+
supportsAdditionalTools,
|
|
224
|
+
supportsToolSearch,
|
|
225
|
+
toolOptions: {
|
|
226
|
+
supportsStrictMode: model.compat?.supportsStrictMode ?? true,
|
|
227
|
+
supportsOpenAIGrammarTools: model.compat?.supportsOpenAIGrammarTools ?? false,
|
|
228
|
+
},
|
|
214
229
|
});
|
|
215
230
|
const params = {
|
|
216
231
|
model: deploymentName,
|
|
@@ -227,8 +242,8 @@ function buildParams(model, context, options, deploymentName, grammarToolInputPr
|
|
|
227
242
|
if (options?.temperature !== undefined) {
|
|
228
243
|
params.temperature = options?.temperature;
|
|
229
244
|
}
|
|
230
|
-
if (
|
|
231
|
-
params.tools = convertResponsesTools(
|
|
245
|
+
if (transcriptTools.requestTools.length > 0) {
|
|
246
|
+
params.tools = convertResponsesTools(transcriptTools.requestTools, {
|
|
232
247
|
supportsStrictMode: model.compat?.supportsStrictMode ?? true,
|
|
233
248
|
supportsOpenAIGrammarTools: model.compat?.supportsOpenAIGrammarTools ?? false,
|
|
234
249
|
});
|
|
@@ -250,10 +265,8 @@ function buildParams(model, context, options, deploymentName, grammarToolInputPr
|
|
|
250
265
|
};
|
|
251
266
|
}
|
|
252
267
|
}
|
|
253
|
-
// Last so custom keys override the named request fields.
|
|
254
|
-
|
|
255
|
-
Object.assign(params, options.samplingParams);
|
|
256
|
-
}
|
|
268
|
+
// Last so custom keys override the named request fields. Per-request keys override model defaults.
|
|
269
|
+
Object.assign(params, model.samplingParams, options?.samplingParams);
|
|
257
270
|
return params;
|
|
258
271
|
}
|
|
259
272
|
//# sourceMappingURL=azure-openai-responses.js.map
|
|
@@ -12,7 +12,10 @@ import { resolveHttpProxyUrlForTarget } from "../utils/node-http-proxy.js";
|
|
|
12
12
|
import { getBedrockModelMatchCandidates as getModelMatchCandidates, supportsOneHourCacheTtl, supportsPromptCaching, } from "../utils/prompt-cache-ttl.js";
|
|
13
13
|
import { getProviderEnvValue } from "../utils/provider-env.js";
|
|
14
14
|
import { sanitizeSurrogates } from "../utils/sanitize-unicode.js";
|
|
15
|
+
import { getSystemMessageText } from "../utils/text.js";
|
|
15
16
|
import { normalizeToolCallId } from "../utils/tool-call-id.js";
|
|
17
|
+
import { normalizeToolParametersForBedrock } from "../utils/tool-schema-compat.js";
|
|
18
|
+
import { collapseSystemMessages, getCurrentTools, getInitialSystemMessage, withoutInitialSystemMessage, } from "../utils/transcript.js";
|
|
16
19
|
import { getJsonSchemaToolParameters, resolveJsonSchemaStrictSampling } from "./constrained-sampling.js";
|
|
17
20
|
import { adjustMaxTokensForThinking, applyExtraBody, BEDROCK_RESERVED_BODY_KEYS, buildBaseOptions, clampMaxTokensToContext, clampReasoning, } from "./simple-options.js";
|
|
18
21
|
import { transformMessages } from "./transform-messages.js";
|
|
@@ -22,6 +25,8 @@ const EMPTY_TEXT_PLACEHOLDER = "<empty>";
|
|
|
22
25
|
const REDACTED_THINKING_PLACEHOLDER = "[Reasoning redacted]";
|
|
23
26
|
export const stream = (model, context, options = {}) => {
|
|
24
27
|
const stream = new AssistantMessageEventStream();
|
|
28
|
+
// Bedrock has no mid-conversation system messages; fold them into the leading prompt.
|
|
29
|
+
const normalizedContext = collapseSystemMessages(context);
|
|
25
30
|
(async () => {
|
|
26
31
|
const output = {
|
|
27
32
|
role: "assistant",
|
|
@@ -139,18 +144,20 @@ export const stream = (model, context, options = {}) => {
|
|
|
139
144
|
}
|
|
140
145
|
const cacheRetention = resolveCacheRetention(options.cacheRetention ?? model.cacheRetention, options.env);
|
|
141
146
|
const inferenceMaxTokens = options.maxTokens ?? (isAnthropicClaudeModel(model) ? model.maxTokens : undefined);
|
|
147
|
+
const initialSystemMessage = getInitialSystemMessage(normalizedContext.messages);
|
|
148
|
+
const initialSystemPrompt = initialSystemMessage ? getSystemMessageText(initialSystemMessage) : undefined;
|
|
142
149
|
let commandInput = {
|
|
143
150
|
modelId: model.id,
|
|
144
|
-
messages: convertMessages(
|
|
151
|
+
messages: convertMessages(normalizedContext, model, cacheRetention, {
|
|
145
152
|
preserveThinking: options.reasoning !== undefined,
|
|
146
153
|
env: options.env,
|
|
147
154
|
}),
|
|
148
|
-
system: buildSystemPrompt(
|
|
155
|
+
system: buildSystemPrompt(initialSystemPrompt, model, cacheRetention, options.env),
|
|
149
156
|
inferenceConfig: {
|
|
150
157
|
...(inferenceMaxTokens !== undefined && { maxTokens: inferenceMaxTokens }),
|
|
151
158
|
...(options.temperature !== undefined && { temperature: options.temperature }),
|
|
152
159
|
},
|
|
153
|
-
toolConfig: convertToolConfig(
|
|
160
|
+
toolConfig: convertToolConfig(getCurrentTools(normalizedContext.messages), options.toolChoice, supportsStrictMode),
|
|
154
161
|
additionalModelRequestFields: buildAdditionalModelRequestFields(model, options),
|
|
155
162
|
...(options.requestMetadata !== undefined && { requestMetadata: options.requestMetadata }),
|
|
156
163
|
};
|
|
@@ -170,6 +177,7 @@ export const stream = (model, context, options = {}) => {
|
|
|
170
177
|
await options?.onResponse?.({ status: response.$metadata.httpStatusCode, headers: responseHeaders }, model);
|
|
171
178
|
}
|
|
172
179
|
for await (const item of response.stream) {
|
|
180
|
+
await options.onProviderStreamEvent?.(item, model);
|
|
173
181
|
if (item.messageStart) {
|
|
174
182
|
if (item.messageStart.role !== ConversationRole.ASSISTANT) {
|
|
175
183
|
throw new Error("Unexpected assistant message start but got user message start instead");
|
|
@@ -541,6 +549,7 @@ function handleMetadata(event, model, output) {
|
|
|
541
549
|
output.usage.output = event.usage.outputTokens || 0;
|
|
542
550
|
output.usage.cacheRead = event.usage.cacheReadInputTokens || 0;
|
|
543
551
|
output.usage.cacheWrite = event.usage.cacheWriteInputTokens || 0;
|
|
552
|
+
output.usage.cacheWrite1h = event.usage.cacheDetails?.reduce((total, detail) => total + (detail.ttl === CacheTTL.ONE_HOUR ? (detail.inputTokens ?? 0) : 0), 0);
|
|
544
553
|
output.usage.totalTokens = event.usage.totalTokens || output.usage.input + output.usage.output;
|
|
545
554
|
calculateCost(model, output.usage);
|
|
546
555
|
}
|
|
@@ -735,7 +744,7 @@ function appendMessage(result, message) {
|
|
|
735
744
|
}
|
|
736
745
|
function convertMessages(context, model, cacheRetention, options = {}) {
|
|
737
746
|
const result = [];
|
|
738
|
-
const transformedMessages = transformMessages(context.messages, model, normalizeToolCallId, {
|
|
747
|
+
const transformedMessages = transformMessages(withoutInitialSystemMessage(context.messages), model, normalizeToolCallId, {
|
|
739
748
|
preserveThinking: options.preserveThinking,
|
|
740
749
|
});
|
|
741
750
|
for (let i = 0; i < transformedMessages.length; i++) {
|
|
@@ -908,12 +917,13 @@ function convertToolConfig(tools, toolChoice, supportsStrictMode) {
|
|
|
908
917
|
if (toolChoice === "none")
|
|
909
918
|
return undefined;
|
|
910
919
|
const bedrockTools = tools.map((tool) => {
|
|
911
|
-
const
|
|
920
|
+
const wireTool = { ...tool, parameters: normalizeToolParametersForBedrock({ ...tool.parameters }) };
|
|
921
|
+
const strict = resolveJsonSchemaStrictSampling(wireTool, supportsStrictMode);
|
|
912
922
|
return {
|
|
913
923
|
toolSpec: {
|
|
914
924
|
name: tool.name,
|
|
915
925
|
description: tool.description,
|
|
916
|
-
inputSchema: { json: toDocumentType(getJsonSchemaToolParameters(
|
|
926
|
+
inputSchema: { json: toDocumentType(getJsonSchemaToolParameters(wireTool, strict)) },
|
|
917
927
|
...(strict === true ? { strict: true } : {}),
|
|
918
928
|
},
|
|
919
929
|
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ClassifierFunction, ClassifierOptions } from "../types.ts";
|
|
2
|
+
/** Cloudflare Workers AI System One classification with public `bool` values mapped to wire-level `noul`. */
|
|
3
|
+
export declare const classify: ClassifierFunction<ClassifierOptions>;
|
|
4
|
+
//# sourceMappingURL=cloudflare-workers-ai-system-one.d.ts.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { classifySystemOne, isRecord } from "./system-one-shared.js";
|
|
2
|
+
const LABEL = "Cloudflare Workers AI";
|
|
3
|
+
function cloudflareErrorMessage(errors) {
|
|
4
|
+
if (Array.isArray(errors)) {
|
|
5
|
+
const messages = errors
|
|
6
|
+
.map((error) => (isRecord(error) && typeof error.message === "string" ? error.message : undefined))
|
|
7
|
+
.filter((message) => message !== undefined);
|
|
8
|
+
if (messages.length > 0)
|
|
9
|
+
return `${LABEL} error: ${messages.join("; ")}`;
|
|
10
|
+
}
|
|
11
|
+
return `${LABEL} request failed`;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* System One models on the Workers AI REST endpoint:
|
|
15
|
+
* `POST /accounts/{account}/ai/run` with `{ model, input }`. The REST API
|
|
16
|
+
* wraps the model output in Cloudflare's API envelope and a run record:
|
|
17
|
+
* `{ success, result: { state: "Completed", result: { answers, usage } } }`.
|
|
18
|
+
* https://developers.cloudflare.com/ai/models/typesafe/jev/
|
|
19
|
+
*/
|
|
20
|
+
const transport = {
|
|
21
|
+
api: "cloudflare-workers-ai-system-one",
|
|
22
|
+
label: LABEL,
|
|
23
|
+
url: (model) => new URL("run", `${model.baseUrl.replace(/\/+$/u, "")}/`),
|
|
24
|
+
payload: (model, request) => ({ model: model.id, input: request }),
|
|
25
|
+
output: (body) => {
|
|
26
|
+
if (!isRecord(body))
|
|
27
|
+
throw new Error(`${LABEL} returned an unexpected response`);
|
|
28
|
+
if (body.success === false)
|
|
29
|
+
throw new Error(cloudflareErrorMessage(body.errors));
|
|
30
|
+
const run = body.result;
|
|
31
|
+
if (!isRecord(run))
|
|
32
|
+
throw new Error(`${LABEL} returned an unexpected response`);
|
|
33
|
+
if (run.state !== "Completed") {
|
|
34
|
+
throw new Error(`${LABEL} run did not complete (state: ${String(run.state)})`);
|
|
35
|
+
}
|
|
36
|
+
if (!isRecord(run.result))
|
|
37
|
+
throw new Error(`${LABEL} returned an unexpected response`);
|
|
38
|
+
return run.result;
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
/** Cloudflare Workers AI System One classification with public `bool` values mapped to wire-level `noul`. */
|
|
42
|
+
export const classify = (model, context, options) => classifySystemOne(transport, model, context, options);
|
|
43
|
+
//# sourceMappingURL=cloudflare-workers-ai-system-one.js.map
|
package/dist/api/cloudflare.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Api, Model, ProviderEnv } from "../types.ts";
|
|
2
2
|
/** Workers AI direct endpoint. */
|
|
3
3
|
export declare const CLOUDFLARE_WORKERS_AI_BASE_URL = "https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1";
|
|
4
|
+
/** Workers AI REST endpoint root; model runs are posted to `run`. */
|
|
5
|
+
export declare const CLOUDFLARE_WORKERS_AI_REST_BASE_URL = "https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai";
|
|
4
6
|
/** AI Gateway Unified API. https://developers.cloudflare.com/ai-gateway/usage/unified-api/ */
|
|
5
7
|
export declare const CLOUDFLARE_AI_GATEWAY_COMPAT_BASE_URL = "https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/compat";
|
|
6
8
|
/** AI Gateway → OpenAI passthrough. Used until /compat supports /v1/responses. */
|