🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@ai-sdk/gateway

Package Overview
Dependencies
Maintainers
3
Versions
586
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ai-sdk/gateway - npm Package Compare versions

Comparing version
2.0.109
to
2.0.111
+16
-0
CHANGELOG.md
# @ai-sdk/gateway
## 2.0.111
### Patch Changes
- 2786e44: Backport: chore(provider/gateway): update gateway model settings files
## 2.0.110
### Patch Changes
- 6a823a6: feat(gateway): expose ruleId on GatewayForbiddenError so callers can identify which routing rule denied a request
- ed8b811: Backport: chore(provider/gateway): update gateway model settings files
- 4f00314: Backport: chore(provider/gateway): update gateway model settings files
- 8549807: feat(provider/openai,provider/gateway): add gpt-5.6 model ids
- 3c89617: feat (provider/xai): add grok-4.5 model id
## 2.0.109

@@ -4,0 +20,0 @@

+5
-3

@@ -5,3 +5,3 @@ import { LanguageModelV2, ProviderV2, EmbeddingModelV2, ImageModelV2, TypeValidationError } from '@ai-sdk/provider';

type GatewayModelId = 'alibaba/qwen-3-14b' | 'alibaba/qwen-3-235b' | 'alibaba/qwen-3-30b' | 'alibaba/qwen-3-32b' | 'alibaba/qwen-3.6-max-preview' | 'alibaba/qwen3-235b-a22b-thinking' | 'alibaba/qwen3-coder' | 'alibaba/qwen3-coder-30b-a3b' | 'alibaba/qwen3-coder-next' | 'alibaba/qwen3-coder-plus' | 'alibaba/qwen3-max' | 'alibaba/qwen3-max-preview' | 'alibaba/qwen3-max-thinking' | 'alibaba/qwen3-next-80b-a3b-instruct' | 'alibaba/qwen3-next-80b-a3b-thinking' | 'alibaba/qwen3-vl-235b-a22b-instruct' | 'alibaba/qwen3-vl-instruct' | 'alibaba/qwen3-vl-thinking' | 'alibaba/qwen3.5-flash' | 'alibaba/qwen3.5-plus' | 'alibaba/qwen3.6-27b' | 'alibaba/qwen3.6-plus' | 'alibaba/qwen3.7-max' | 'alibaba/qwen3.7-plus' | 'amazon/nova-2-lite' | 'amazon/nova-lite' | 'amazon/nova-micro' | 'amazon/nova-pro' | 'anthropic/claude-3-haiku' | 'anthropic/claude-3.5-haiku' | 'anthropic/claude-fable-5' | 'anthropic/claude-haiku-4.5' | 'anthropic/claude-opus-4' | 'anthropic/claude-opus-4.1' | 'anthropic/claude-opus-4.5' | 'anthropic/claude-opus-4.6' | 'anthropic/claude-opus-4.7' | 'anthropic/claude-opus-4.8' | 'anthropic/claude-sonnet-4' | 'anthropic/claude-sonnet-4.5' | 'anthropic/claude-sonnet-4.6' | 'anthropic/claude-sonnet-5' | 'arcee-ai/trinity-large-preview' | 'arcee-ai/trinity-large-thinking' | 'arcee-ai/trinity-mini' | 'bytedance/seed-1.6' | 'bytedance/seed-1.8' | 'cohere/command-a' | 'deepseek/deepseek-r1' | 'deepseek/deepseek-v3' | 'deepseek/deepseek-v3.1' | 'deepseek/deepseek-v3.1-terminus' | 'deepseek/deepseek-v3.2' | 'deepseek/deepseek-v3.2-thinking' | 'deepseek/deepseek-v4-flash' | 'deepseek/deepseek-v4-pro' | 'google/gemini-2.5-flash' | 'google/gemini-2.5-flash-image' | 'google/gemini-2.5-flash-lite' | 'google/gemini-2.5-pro' | 'google/gemini-3-flash' | 'google/gemini-3-pro-image' | 'google/gemini-3-pro-preview' | 'google/gemini-3.1-flash-image' | 'google/gemini-3.1-flash-image-preview' | 'google/gemini-3.1-flash-lite' | 'google/gemini-3.1-flash-lite-image' | 'google/gemini-3.1-flash-lite-preview' | 'google/gemini-3.1-pro-preview' | 'google/gemini-3.5-flash' | 'google/gemma-4-26b-a4b-it' | 'google/gemma-4-31b-it' | 'inception/mercury-2' | 'inception/mercury-coder-small' | 'interfaze/interfaze-beta' | 'kwaipilot/kat-coder-pro-v1' | 'kwaipilot/kat-coder-pro-v2' | 'meituan/longcat-flash-chat' | 'meituan/longcat-flash-thinking-2601' | 'meta/llama-3.1-70b' | 'meta/llama-3.1-8b' | 'meta/llama-3.2-11b' | 'meta/llama-3.2-1b' | 'meta/llama-3.2-3b' | 'meta/llama-3.2-90b' | 'meta/llama-3.3-70b' | 'meta/llama-4-maverick' | 'meta/llama-4-scout' | 'minimax/minimax-m2' | 'minimax/minimax-m2.1' | 'minimax/minimax-m2.1-lightning' | 'minimax/minimax-m2.5' | 'minimax/minimax-m2.5-highspeed' | 'minimax/minimax-m2.7' | 'minimax/minimax-m2.7-highspeed' | 'minimax/minimax-m3' | 'mistral/codestral' | 'mistral/devstral-2' | 'mistral/devstral-small' | 'mistral/devstral-small-2' | 'mistral/magistral-medium' | 'mistral/magistral-small' | 'mistral/ministral-14b' | 'mistral/ministral-3b' | 'mistral/ministral-8b' | 'mistral/mistral-large-3' | 'mistral/mistral-medium' | 'mistral/mistral-medium-3.5' | 'mistral/mistral-nemo' | 'mistral/mistral-small' | 'mistral/pixtral-12b' | 'mistral/pixtral-large' | 'moonshotai/kimi-k2' | 'moonshotai/kimi-k2-thinking' | 'moonshotai/kimi-k2.5' | 'moonshotai/kimi-k2.6' | 'moonshotai/kimi-k2.7-code' | 'moonshotai/kimi-k2.7-code-highspeed' | 'morph/morph-v3-fast' | 'morph/morph-v3-large' | 'nvidia/nemotron-3-nano-30b-a3b' | 'nvidia/nemotron-3-super-120b-a12b' | 'nvidia/nemotron-3-ultra-550b-a55b' | 'nvidia/nemotron-nano-12b-v2-vl' | 'nvidia/nemotron-nano-9b-v2' | 'openai/gpt-3.5-turbo' | 'openai/gpt-3.5-turbo-instruct' | 'openai/gpt-4-turbo' | 'openai/gpt-4.1' | 'openai/gpt-4.1-mini' | 'openai/gpt-4.1-nano' | 'openai/gpt-4o' | 'openai/gpt-4o-mini' | 'openai/gpt-4o-mini-search-preview' | 'openai/gpt-5' | 'openai/gpt-5-chat' | 'openai/gpt-5-codex' | 'openai/gpt-5-mini' | 'openai/gpt-5-nano' | 'openai/gpt-5-pro' | 'openai/gpt-5.1-codex' | 'openai/gpt-5.1-codex-max' | 'openai/gpt-5.1-codex-mini' | 'openai/gpt-5.1-instant' | 'openai/gpt-5.1-thinking' | 'openai/gpt-5.2' | 'openai/gpt-5.2-chat' | 'openai/gpt-5.2-codex' | 'openai/gpt-5.2-pro' | 'openai/gpt-5.3-chat' | 'openai/gpt-5.3-codex' | 'openai/gpt-5.4' | 'openai/gpt-5.4-mini' | 'openai/gpt-5.4-nano' | 'openai/gpt-5.4-pro' | 'openai/gpt-5.5' | 'openai/gpt-5.5-pro' | 'openai/gpt-oss-120b' | 'openai/gpt-oss-20b' | 'openai/gpt-oss-safeguard-20b' | 'openai/o1' | 'openai/o3' | 'openai/o3-deep-research' | 'openai/o3-mini' | 'openai/o3-pro' | 'openai/o4-mini' | 'perplexity/sonar' | 'perplexity/sonar-pro' | 'perplexity/sonar-reasoning-pro' | 'sakana/fugu-ultra' | 'stepfun/step-3.5-flash' | 'stepfun/step-3.7-flash' | 'xai/grok-4.1-fast-non-reasoning' | 'xai/grok-4.1-fast-reasoning' | 'xai/grok-4.20-multi-agent' | 'xai/grok-4.20-multi-agent-beta' | 'xai/grok-4.20-non-reasoning' | 'xai/grok-4.20-non-reasoning-beta' | 'xai/grok-4.20-reasoning' | 'xai/grok-4.20-reasoning-beta' | 'xai/grok-4.3' | 'xai/grok-build-0.1' | 'xiaomi/mimo-v2-flash' | 'xiaomi/mimo-v2-pro' | 'xiaomi/mimo-v2.5' | 'xiaomi/mimo-v2.5-pro' | 'zai/glm-4.5' | 'zai/glm-4.5-air' | 'zai/glm-4.5v' | 'zai/glm-4.6' | 'zai/glm-4.6v' | 'zai/glm-4.6v-flash' | 'zai/glm-4.7' | 'zai/glm-4.7-flash' | 'zai/glm-4.7-flashx' | 'zai/glm-5' | 'zai/glm-5-turbo' | 'zai/glm-5.1' | 'zai/glm-5.2' | 'zai/glm-5.2-fast' | 'zai/glm-5v-turbo' | (string & {});
type GatewayModelId = 'alibaba/qwen-3-14b' | 'alibaba/qwen-3-235b' | 'alibaba/qwen-3-30b' | 'alibaba/qwen-3-32b' | 'alibaba/qwen-3.6-max-preview' | 'alibaba/qwen3-235b-a22b-thinking' | 'alibaba/qwen3-coder' | 'alibaba/qwen3-coder-30b-a3b' | 'alibaba/qwen3-coder-next' | 'alibaba/qwen3-coder-plus' | 'alibaba/qwen3-max' | 'alibaba/qwen3-max-preview' | 'alibaba/qwen3-max-thinking' | 'alibaba/qwen3-next-80b-a3b-instruct' | 'alibaba/qwen3-next-80b-a3b-thinking' | 'alibaba/qwen3-vl-235b-a22b-instruct' | 'alibaba/qwen3-vl-instruct' | 'alibaba/qwen3-vl-thinking' | 'alibaba/qwen3.5-flash' | 'alibaba/qwen3.5-plus' | 'alibaba/qwen3.6-27b' | 'alibaba/qwen3.6-plus' | 'alibaba/qwen3.7-max' | 'alibaba/qwen3.7-plus' | 'amazon/nova-2-lite' | 'amazon/nova-lite' | 'amazon/nova-micro' | 'amazon/nova-pro' | 'anthropic/claude-3-haiku' | 'anthropic/claude-3.5-haiku' | 'anthropic/claude-fable-5' | 'anthropic/claude-haiku-4.5' | 'anthropic/claude-opus-4' | 'anthropic/claude-opus-4.1' | 'anthropic/claude-opus-4.5' | 'anthropic/claude-opus-4.6' | 'anthropic/claude-opus-4.7' | 'anthropic/claude-opus-4.8' | 'anthropic/claude-sonnet-4' | 'anthropic/claude-sonnet-4.5' | 'anthropic/claude-sonnet-4.6' | 'anthropic/claude-sonnet-5' | 'arcee-ai/trinity-large-preview' | 'arcee-ai/trinity-large-thinking' | 'arcee-ai/trinity-mini' | 'bytedance/seed-1.6' | 'bytedance/seed-1.8' | 'cohere/command-a' | 'deepseek/deepseek-r1' | 'deepseek/deepseek-v3' | 'deepseek/deepseek-v3.1' | 'deepseek/deepseek-v3.1-terminus' | 'deepseek/deepseek-v3.2' | 'deepseek/deepseek-v3.2-thinking' | 'deepseek/deepseek-v4-flash' | 'deepseek/deepseek-v4-pro' | 'google/gemini-2.5-flash' | 'google/gemini-2.5-flash-image' | 'google/gemini-2.5-flash-lite' | 'google/gemini-2.5-pro' | 'google/gemini-3-flash' | 'google/gemini-3-pro-image' | 'google/gemini-3-pro-preview' | 'google/gemini-3.1-flash-image' | 'google/gemini-3.1-flash-image-preview' | 'google/gemini-3.1-flash-lite' | 'google/gemini-3.1-flash-lite-image' | 'google/gemini-3.1-flash-lite-preview' | 'google/gemini-3.1-pro-preview' | 'google/gemini-3.5-flash' | 'google/gemini-omni-flash-preview' | 'google/gemma-4-26b-a4b-it' | 'google/gemma-4-31b-it' | 'inception/mercury-2' | 'inception/mercury-coder-small' | 'interfaze/interfaze-beta' | 'kwaipilot/kat-coder-air-v2.5' | 'kwaipilot/kat-coder-pro-v1' | 'kwaipilot/kat-coder-pro-v2' | 'kwaipilot/kat-coder-pro-v2.5' | 'meituan/longcat-flash-chat' | 'meituan/longcat-flash-thinking-2601' | 'meta/llama-3.1-70b' | 'meta/llama-3.1-8b' | 'meta/llama-3.2-11b' | 'meta/llama-3.2-1b' | 'meta/llama-3.2-3b' | 'meta/llama-3.2-90b' | 'meta/llama-3.3-70b' | 'meta/llama-4-maverick' | 'meta/llama-4-scout' | 'meta/muse-spark-1.1' | 'minimax/minimax-m2' | 'minimax/minimax-m2.1' | 'minimax/minimax-m2.1-lightning' | 'minimax/minimax-m2.5' | 'minimax/minimax-m2.5-highspeed' | 'minimax/minimax-m2.7' | 'minimax/minimax-m2.7-highspeed' | 'minimax/minimax-m3' | 'mistral/codestral' | 'mistral/devstral-2' | 'mistral/devstral-small' | 'mistral/devstral-small-2' | 'mistral/magistral-medium' | 'mistral/magistral-small' | 'mistral/ministral-14b' | 'mistral/ministral-3b' | 'mistral/ministral-8b' | 'mistral/mistral-large-3' | 'mistral/mistral-medium' | 'mistral/mistral-medium-3.5' | 'mistral/mistral-nemo' | 'mistral/mistral-small' | 'mistral/pixtral-12b' | 'mistral/pixtral-large' | 'moonshotai/kimi-k2' | 'moonshotai/kimi-k2-thinking' | 'moonshotai/kimi-k2.5' | 'moonshotai/kimi-k2.6' | 'moonshotai/kimi-k2.7-code' | 'moonshotai/kimi-k2.7-code-highspeed' | 'morph/morph-v3-fast' | 'morph/morph-v3-large' | 'nvidia/nemotron-3-nano-30b-a3b' | 'nvidia/nemotron-3-super-120b-a12b' | 'nvidia/nemotron-3-ultra-550b-a55b' | 'nvidia/nemotron-nano-12b-v2-vl' | 'nvidia/nemotron-nano-9b-v2' | 'openai/gpt-3.5-turbo' | 'openai/gpt-3.5-turbo-instruct' | 'openai/gpt-4-turbo' | 'openai/gpt-4.1' | 'openai/gpt-4.1-mini' | 'openai/gpt-4.1-nano' | 'openai/gpt-4o' | 'openai/gpt-4o-mini' | 'openai/gpt-4o-mini-search-preview' | 'openai/gpt-5' | 'openai/gpt-5-chat' | 'openai/gpt-5-codex' | 'openai/gpt-5-mini' | 'openai/gpt-5-nano' | 'openai/gpt-5-pro' | 'openai/gpt-5.1-codex' | 'openai/gpt-5.1-codex-max' | 'openai/gpt-5.1-codex-mini' | 'openai/gpt-5.1-instant' | 'openai/gpt-5.1-thinking' | 'openai/gpt-5.2' | 'openai/gpt-5.2-chat' | 'openai/gpt-5.2-codex' | 'openai/gpt-5.2-pro' | 'openai/gpt-5.3-chat' | 'openai/gpt-5.3-codex' | 'openai/gpt-5.4' | 'openai/gpt-5.4-mini' | 'openai/gpt-5.4-nano' | 'openai/gpt-5.4-pro' | 'openai/gpt-5.5' | 'openai/gpt-5.5-pro' | 'openai/gpt-5.6-luna' | 'openai/gpt-5.6-sol' | 'openai/gpt-5.6-terra' | 'openai/gpt-oss-120b' | 'openai/gpt-oss-20b' | 'openai/gpt-oss-safeguard-20b' | 'openai/o1' | 'openai/o3' | 'openai/o3-deep-research' | 'openai/o3-mini' | 'openai/o3-pro' | 'openai/o4-mini' | 'perplexity/sonar' | 'perplexity/sonar-pro' | 'perplexity/sonar-reasoning-pro' | 'sakana/fugu-ultra' | 'stepfun/step-3.5-flash' | 'stepfun/step-3.7-flash' | 'xai/grok-4.1-fast-non-reasoning' | 'xai/grok-4.1-fast-reasoning' | 'xai/grok-4.20-multi-agent' | 'xai/grok-4.20-multi-agent-beta' | 'xai/grok-4.20-non-reasoning' | 'xai/grok-4.20-non-reasoning-beta' | 'xai/grok-4.20-reasoning' | 'xai/grok-4.20-reasoning-beta' | 'xai/grok-4.3' | 'xai/grok-4.5' | 'xai/grok-build-0.1' | 'xiaomi/mimo-v2-flash' | 'xiaomi/mimo-v2-pro' | 'xiaomi/mimo-v2.5' | 'xiaomi/mimo-v2.5-pro' | 'zai/glm-4.5' | 'zai/glm-4.5-air' | 'zai/glm-4.5v' | 'zai/glm-4.6' | 'zai/glm-4.6v' | 'zai/glm-4.6v-flash' | 'zai/glm-4.7' | 'zai/glm-4.7-flash' | 'zai/glm-4.7-flashx' | 'zai/glm-5' | 'zai/glm-5-turbo' | 'zai/glm-5.1' | 'zai/glm-5.2' | 'zai/glm-5.2-fast' | 'zai/glm-5v-turbo' | (string & {});

@@ -169,3 +169,3 @@ declare const KNOWN_MODEL_TYPES: readonly ["embedding", "image", "language"];

type GatewayImageModelId = 'bfl/flux-2-flex' | 'bfl/flux-2-klein-4b' | 'bfl/flux-2-klein-9b' | 'bfl/flux-2-max' | 'bfl/flux-2-pro' | 'bfl/flux-kontext-max' | 'bfl/flux-kontext-pro' | 'bfl/flux-pro-1.0-fill' | 'bfl/flux-pro-1.1' | 'bfl/flux-pro-1.1-ultra' | 'bytedance/seedream-4.0' | 'bytedance/seedream-4.5' | 'bytedance/seedream-5.0-lite' | 'google/imagen-4.0-fast-generate-001' | 'google/imagen-4.0-generate-001' | 'google/imagen-4.0-ultra-generate-001' | 'openai/gpt-image-1' | 'openai/gpt-image-1-mini' | 'openai/gpt-image-1.5' | 'openai/gpt-image-2' | 'prodia/flux-fast-schnell' | 'quiverai/arrow-1.1' | 'recraft/recraft-v2' | 'recraft/recraft-v3' | 'recraft/recraft-v4' | 'recraft/recraft-v4-pro' | 'recraft/recraft-v4.1' | 'recraft/recraft-v4.1-pro' | 'recraft/recraft-v4.1-utility' | 'recraft/recraft-v4.1-utility-pro' | 'xai/grok-imagine-image' | (string & {});
type GatewayImageModelId = 'bfl/flux-2-flex' | 'bfl/flux-2-klein-4b' | 'bfl/flux-2-klein-9b' | 'bfl/flux-2-max' | 'bfl/flux-2-pro' | 'bfl/flux-kontext-max' | 'bfl/flux-kontext-pro' | 'bfl/flux-pro-1.0-fill' | 'bfl/flux-pro-1.1' | 'bfl/flux-pro-1.1-ultra' | 'bytedance/seedream-4.0' | 'bytedance/seedream-4.5' | 'bytedance/seedream-5.0-lite' | 'bytedance/seedream-5.0-pro' | 'google/imagen-4.0-fast-generate-001' | 'google/imagen-4.0-generate-001' | 'google/imagen-4.0-ultra-generate-001' | 'openai/gpt-image-1' | 'openai/gpt-image-1-mini' | 'openai/gpt-image-1.5' | 'openai/gpt-image-2' | 'prodia/flux-fast-schnell' | 'quiverai/arrow-1.1' | 'recraft/recraft-v2' | 'recraft/recraft-v3' | 'recraft/recraft-v4' | 'recraft/recraft-v4-pro' | 'recraft/recraft-v4.1' | 'recraft/recraft-v4.1-pro' | 'recraft/recraft-v4.1-utility' | 'recraft/recraft-v4.1-utility-pro' | 'xai/grok-imagine-image' | (string & {});

@@ -606,6 +606,8 @@ interface PerplexitySearchConfig {

readonly type = "forbidden";
constructor({ message, statusCode, cause, }?: {
readonly ruleId?: string;
constructor({ message, statusCode, cause, ruleId, }?: {
message?: string;
statusCode?: number;
cause?: unknown;
ruleId?: string;
});

@@ -612,0 +614,0 @@ static isInstance(error: unknown): error is GatewayForbiddenError;

@@ -5,3 +5,3 @@ import { LanguageModelV2, ProviderV2, EmbeddingModelV2, ImageModelV2, TypeValidationError } from '@ai-sdk/provider';

type GatewayModelId = 'alibaba/qwen-3-14b' | 'alibaba/qwen-3-235b' | 'alibaba/qwen-3-30b' | 'alibaba/qwen-3-32b' | 'alibaba/qwen-3.6-max-preview' | 'alibaba/qwen3-235b-a22b-thinking' | 'alibaba/qwen3-coder' | 'alibaba/qwen3-coder-30b-a3b' | 'alibaba/qwen3-coder-next' | 'alibaba/qwen3-coder-plus' | 'alibaba/qwen3-max' | 'alibaba/qwen3-max-preview' | 'alibaba/qwen3-max-thinking' | 'alibaba/qwen3-next-80b-a3b-instruct' | 'alibaba/qwen3-next-80b-a3b-thinking' | 'alibaba/qwen3-vl-235b-a22b-instruct' | 'alibaba/qwen3-vl-instruct' | 'alibaba/qwen3-vl-thinking' | 'alibaba/qwen3.5-flash' | 'alibaba/qwen3.5-plus' | 'alibaba/qwen3.6-27b' | 'alibaba/qwen3.6-plus' | 'alibaba/qwen3.7-max' | 'alibaba/qwen3.7-plus' | 'amazon/nova-2-lite' | 'amazon/nova-lite' | 'amazon/nova-micro' | 'amazon/nova-pro' | 'anthropic/claude-3-haiku' | 'anthropic/claude-3.5-haiku' | 'anthropic/claude-fable-5' | 'anthropic/claude-haiku-4.5' | 'anthropic/claude-opus-4' | 'anthropic/claude-opus-4.1' | 'anthropic/claude-opus-4.5' | 'anthropic/claude-opus-4.6' | 'anthropic/claude-opus-4.7' | 'anthropic/claude-opus-4.8' | 'anthropic/claude-sonnet-4' | 'anthropic/claude-sonnet-4.5' | 'anthropic/claude-sonnet-4.6' | 'anthropic/claude-sonnet-5' | 'arcee-ai/trinity-large-preview' | 'arcee-ai/trinity-large-thinking' | 'arcee-ai/trinity-mini' | 'bytedance/seed-1.6' | 'bytedance/seed-1.8' | 'cohere/command-a' | 'deepseek/deepseek-r1' | 'deepseek/deepseek-v3' | 'deepseek/deepseek-v3.1' | 'deepseek/deepseek-v3.1-terminus' | 'deepseek/deepseek-v3.2' | 'deepseek/deepseek-v3.2-thinking' | 'deepseek/deepseek-v4-flash' | 'deepseek/deepseek-v4-pro' | 'google/gemini-2.5-flash' | 'google/gemini-2.5-flash-image' | 'google/gemini-2.5-flash-lite' | 'google/gemini-2.5-pro' | 'google/gemini-3-flash' | 'google/gemini-3-pro-image' | 'google/gemini-3-pro-preview' | 'google/gemini-3.1-flash-image' | 'google/gemini-3.1-flash-image-preview' | 'google/gemini-3.1-flash-lite' | 'google/gemini-3.1-flash-lite-image' | 'google/gemini-3.1-flash-lite-preview' | 'google/gemini-3.1-pro-preview' | 'google/gemini-3.5-flash' | 'google/gemma-4-26b-a4b-it' | 'google/gemma-4-31b-it' | 'inception/mercury-2' | 'inception/mercury-coder-small' | 'interfaze/interfaze-beta' | 'kwaipilot/kat-coder-pro-v1' | 'kwaipilot/kat-coder-pro-v2' | 'meituan/longcat-flash-chat' | 'meituan/longcat-flash-thinking-2601' | 'meta/llama-3.1-70b' | 'meta/llama-3.1-8b' | 'meta/llama-3.2-11b' | 'meta/llama-3.2-1b' | 'meta/llama-3.2-3b' | 'meta/llama-3.2-90b' | 'meta/llama-3.3-70b' | 'meta/llama-4-maverick' | 'meta/llama-4-scout' | 'minimax/minimax-m2' | 'minimax/minimax-m2.1' | 'minimax/minimax-m2.1-lightning' | 'minimax/minimax-m2.5' | 'minimax/minimax-m2.5-highspeed' | 'minimax/minimax-m2.7' | 'minimax/minimax-m2.7-highspeed' | 'minimax/minimax-m3' | 'mistral/codestral' | 'mistral/devstral-2' | 'mistral/devstral-small' | 'mistral/devstral-small-2' | 'mistral/magistral-medium' | 'mistral/magistral-small' | 'mistral/ministral-14b' | 'mistral/ministral-3b' | 'mistral/ministral-8b' | 'mistral/mistral-large-3' | 'mistral/mistral-medium' | 'mistral/mistral-medium-3.5' | 'mistral/mistral-nemo' | 'mistral/mistral-small' | 'mistral/pixtral-12b' | 'mistral/pixtral-large' | 'moonshotai/kimi-k2' | 'moonshotai/kimi-k2-thinking' | 'moonshotai/kimi-k2.5' | 'moonshotai/kimi-k2.6' | 'moonshotai/kimi-k2.7-code' | 'moonshotai/kimi-k2.7-code-highspeed' | 'morph/morph-v3-fast' | 'morph/morph-v3-large' | 'nvidia/nemotron-3-nano-30b-a3b' | 'nvidia/nemotron-3-super-120b-a12b' | 'nvidia/nemotron-3-ultra-550b-a55b' | 'nvidia/nemotron-nano-12b-v2-vl' | 'nvidia/nemotron-nano-9b-v2' | 'openai/gpt-3.5-turbo' | 'openai/gpt-3.5-turbo-instruct' | 'openai/gpt-4-turbo' | 'openai/gpt-4.1' | 'openai/gpt-4.1-mini' | 'openai/gpt-4.1-nano' | 'openai/gpt-4o' | 'openai/gpt-4o-mini' | 'openai/gpt-4o-mini-search-preview' | 'openai/gpt-5' | 'openai/gpt-5-chat' | 'openai/gpt-5-codex' | 'openai/gpt-5-mini' | 'openai/gpt-5-nano' | 'openai/gpt-5-pro' | 'openai/gpt-5.1-codex' | 'openai/gpt-5.1-codex-max' | 'openai/gpt-5.1-codex-mini' | 'openai/gpt-5.1-instant' | 'openai/gpt-5.1-thinking' | 'openai/gpt-5.2' | 'openai/gpt-5.2-chat' | 'openai/gpt-5.2-codex' | 'openai/gpt-5.2-pro' | 'openai/gpt-5.3-chat' | 'openai/gpt-5.3-codex' | 'openai/gpt-5.4' | 'openai/gpt-5.4-mini' | 'openai/gpt-5.4-nano' | 'openai/gpt-5.4-pro' | 'openai/gpt-5.5' | 'openai/gpt-5.5-pro' | 'openai/gpt-oss-120b' | 'openai/gpt-oss-20b' | 'openai/gpt-oss-safeguard-20b' | 'openai/o1' | 'openai/o3' | 'openai/o3-deep-research' | 'openai/o3-mini' | 'openai/o3-pro' | 'openai/o4-mini' | 'perplexity/sonar' | 'perplexity/sonar-pro' | 'perplexity/sonar-reasoning-pro' | 'sakana/fugu-ultra' | 'stepfun/step-3.5-flash' | 'stepfun/step-3.7-flash' | 'xai/grok-4.1-fast-non-reasoning' | 'xai/grok-4.1-fast-reasoning' | 'xai/grok-4.20-multi-agent' | 'xai/grok-4.20-multi-agent-beta' | 'xai/grok-4.20-non-reasoning' | 'xai/grok-4.20-non-reasoning-beta' | 'xai/grok-4.20-reasoning' | 'xai/grok-4.20-reasoning-beta' | 'xai/grok-4.3' | 'xai/grok-build-0.1' | 'xiaomi/mimo-v2-flash' | 'xiaomi/mimo-v2-pro' | 'xiaomi/mimo-v2.5' | 'xiaomi/mimo-v2.5-pro' | 'zai/glm-4.5' | 'zai/glm-4.5-air' | 'zai/glm-4.5v' | 'zai/glm-4.6' | 'zai/glm-4.6v' | 'zai/glm-4.6v-flash' | 'zai/glm-4.7' | 'zai/glm-4.7-flash' | 'zai/glm-4.7-flashx' | 'zai/glm-5' | 'zai/glm-5-turbo' | 'zai/glm-5.1' | 'zai/glm-5.2' | 'zai/glm-5.2-fast' | 'zai/glm-5v-turbo' | (string & {});
type GatewayModelId = 'alibaba/qwen-3-14b' | 'alibaba/qwen-3-235b' | 'alibaba/qwen-3-30b' | 'alibaba/qwen-3-32b' | 'alibaba/qwen-3.6-max-preview' | 'alibaba/qwen3-235b-a22b-thinking' | 'alibaba/qwen3-coder' | 'alibaba/qwen3-coder-30b-a3b' | 'alibaba/qwen3-coder-next' | 'alibaba/qwen3-coder-plus' | 'alibaba/qwen3-max' | 'alibaba/qwen3-max-preview' | 'alibaba/qwen3-max-thinking' | 'alibaba/qwen3-next-80b-a3b-instruct' | 'alibaba/qwen3-next-80b-a3b-thinking' | 'alibaba/qwen3-vl-235b-a22b-instruct' | 'alibaba/qwen3-vl-instruct' | 'alibaba/qwen3-vl-thinking' | 'alibaba/qwen3.5-flash' | 'alibaba/qwen3.5-plus' | 'alibaba/qwen3.6-27b' | 'alibaba/qwen3.6-plus' | 'alibaba/qwen3.7-max' | 'alibaba/qwen3.7-plus' | 'amazon/nova-2-lite' | 'amazon/nova-lite' | 'amazon/nova-micro' | 'amazon/nova-pro' | 'anthropic/claude-3-haiku' | 'anthropic/claude-3.5-haiku' | 'anthropic/claude-fable-5' | 'anthropic/claude-haiku-4.5' | 'anthropic/claude-opus-4' | 'anthropic/claude-opus-4.1' | 'anthropic/claude-opus-4.5' | 'anthropic/claude-opus-4.6' | 'anthropic/claude-opus-4.7' | 'anthropic/claude-opus-4.8' | 'anthropic/claude-sonnet-4' | 'anthropic/claude-sonnet-4.5' | 'anthropic/claude-sonnet-4.6' | 'anthropic/claude-sonnet-5' | 'arcee-ai/trinity-large-preview' | 'arcee-ai/trinity-large-thinking' | 'arcee-ai/trinity-mini' | 'bytedance/seed-1.6' | 'bytedance/seed-1.8' | 'cohere/command-a' | 'deepseek/deepseek-r1' | 'deepseek/deepseek-v3' | 'deepseek/deepseek-v3.1' | 'deepseek/deepseek-v3.1-terminus' | 'deepseek/deepseek-v3.2' | 'deepseek/deepseek-v3.2-thinking' | 'deepseek/deepseek-v4-flash' | 'deepseek/deepseek-v4-pro' | 'google/gemini-2.5-flash' | 'google/gemini-2.5-flash-image' | 'google/gemini-2.5-flash-lite' | 'google/gemini-2.5-pro' | 'google/gemini-3-flash' | 'google/gemini-3-pro-image' | 'google/gemini-3-pro-preview' | 'google/gemini-3.1-flash-image' | 'google/gemini-3.1-flash-image-preview' | 'google/gemini-3.1-flash-lite' | 'google/gemini-3.1-flash-lite-image' | 'google/gemini-3.1-flash-lite-preview' | 'google/gemini-3.1-pro-preview' | 'google/gemini-3.5-flash' | 'google/gemini-omni-flash-preview' | 'google/gemma-4-26b-a4b-it' | 'google/gemma-4-31b-it' | 'inception/mercury-2' | 'inception/mercury-coder-small' | 'interfaze/interfaze-beta' | 'kwaipilot/kat-coder-air-v2.5' | 'kwaipilot/kat-coder-pro-v1' | 'kwaipilot/kat-coder-pro-v2' | 'kwaipilot/kat-coder-pro-v2.5' | 'meituan/longcat-flash-chat' | 'meituan/longcat-flash-thinking-2601' | 'meta/llama-3.1-70b' | 'meta/llama-3.1-8b' | 'meta/llama-3.2-11b' | 'meta/llama-3.2-1b' | 'meta/llama-3.2-3b' | 'meta/llama-3.2-90b' | 'meta/llama-3.3-70b' | 'meta/llama-4-maverick' | 'meta/llama-4-scout' | 'meta/muse-spark-1.1' | 'minimax/minimax-m2' | 'minimax/minimax-m2.1' | 'minimax/minimax-m2.1-lightning' | 'minimax/minimax-m2.5' | 'minimax/minimax-m2.5-highspeed' | 'minimax/minimax-m2.7' | 'minimax/minimax-m2.7-highspeed' | 'minimax/minimax-m3' | 'mistral/codestral' | 'mistral/devstral-2' | 'mistral/devstral-small' | 'mistral/devstral-small-2' | 'mistral/magistral-medium' | 'mistral/magistral-small' | 'mistral/ministral-14b' | 'mistral/ministral-3b' | 'mistral/ministral-8b' | 'mistral/mistral-large-3' | 'mistral/mistral-medium' | 'mistral/mistral-medium-3.5' | 'mistral/mistral-nemo' | 'mistral/mistral-small' | 'mistral/pixtral-12b' | 'mistral/pixtral-large' | 'moonshotai/kimi-k2' | 'moonshotai/kimi-k2-thinking' | 'moonshotai/kimi-k2.5' | 'moonshotai/kimi-k2.6' | 'moonshotai/kimi-k2.7-code' | 'moonshotai/kimi-k2.7-code-highspeed' | 'morph/morph-v3-fast' | 'morph/morph-v3-large' | 'nvidia/nemotron-3-nano-30b-a3b' | 'nvidia/nemotron-3-super-120b-a12b' | 'nvidia/nemotron-3-ultra-550b-a55b' | 'nvidia/nemotron-nano-12b-v2-vl' | 'nvidia/nemotron-nano-9b-v2' | 'openai/gpt-3.5-turbo' | 'openai/gpt-3.5-turbo-instruct' | 'openai/gpt-4-turbo' | 'openai/gpt-4.1' | 'openai/gpt-4.1-mini' | 'openai/gpt-4.1-nano' | 'openai/gpt-4o' | 'openai/gpt-4o-mini' | 'openai/gpt-4o-mini-search-preview' | 'openai/gpt-5' | 'openai/gpt-5-chat' | 'openai/gpt-5-codex' | 'openai/gpt-5-mini' | 'openai/gpt-5-nano' | 'openai/gpt-5-pro' | 'openai/gpt-5.1-codex' | 'openai/gpt-5.1-codex-max' | 'openai/gpt-5.1-codex-mini' | 'openai/gpt-5.1-instant' | 'openai/gpt-5.1-thinking' | 'openai/gpt-5.2' | 'openai/gpt-5.2-chat' | 'openai/gpt-5.2-codex' | 'openai/gpt-5.2-pro' | 'openai/gpt-5.3-chat' | 'openai/gpt-5.3-codex' | 'openai/gpt-5.4' | 'openai/gpt-5.4-mini' | 'openai/gpt-5.4-nano' | 'openai/gpt-5.4-pro' | 'openai/gpt-5.5' | 'openai/gpt-5.5-pro' | 'openai/gpt-5.6-luna' | 'openai/gpt-5.6-sol' | 'openai/gpt-5.6-terra' | 'openai/gpt-oss-120b' | 'openai/gpt-oss-20b' | 'openai/gpt-oss-safeguard-20b' | 'openai/o1' | 'openai/o3' | 'openai/o3-deep-research' | 'openai/o3-mini' | 'openai/o3-pro' | 'openai/o4-mini' | 'perplexity/sonar' | 'perplexity/sonar-pro' | 'perplexity/sonar-reasoning-pro' | 'sakana/fugu-ultra' | 'stepfun/step-3.5-flash' | 'stepfun/step-3.7-flash' | 'xai/grok-4.1-fast-non-reasoning' | 'xai/grok-4.1-fast-reasoning' | 'xai/grok-4.20-multi-agent' | 'xai/grok-4.20-multi-agent-beta' | 'xai/grok-4.20-non-reasoning' | 'xai/grok-4.20-non-reasoning-beta' | 'xai/grok-4.20-reasoning' | 'xai/grok-4.20-reasoning-beta' | 'xai/grok-4.3' | 'xai/grok-4.5' | 'xai/grok-build-0.1' | 'xiaomi/mimo-v2-flash' | 'xiaomi/mimo-v2-pro' | 'xiaomi/mimo-v2.5' | 'xiaomi/mimo-v2.5-pro' | 'zai/glm-4.5' | 'zai/glm-4.5-air' | 'zai/glm-4.5v' | 'zai/glm-4.6' | 'zai/glm-4.6v' | 'zai/glm-4.6v-flash' | 'zai/glm-4.7' | 'zai/glm-4.7-flash' | 'zai/glm-4.7-flashx' | 'zai/glm-5' | 'zai/glm-5-turbo' | 'zai/glm-5.1' | 'zai/glm-5.2' | 'zai/glm-5.2-fast' | 'zai/glm-5v-turbo' | (string & {});

@@ -169,3 +169,3 @@ declare const KNOWN_MODEL_TYPES: readonly ["embedding", "image", "language"];

type GatewayImageModelId = 'bfl/flux-2-flex' | 'bfl/flux-2-klein-4b' | 'bfl/flux-2-klein-9b' | 'bfl/flux-2-max' | 'bfl/flux-2-pro' | 'bfl/flux-kontext-max' | 'bfl/flux-kontext-pro' | 'bfl/flux-pro-1.0-fill' | 'bfl/flux-pro-1.1' | 'bfl/flux-pro-1.1-ultra' | 'bytedance/seedream-4.0' | 'bytedance/seedream-4.5' | 'bytedance/seedream-5.0-lite' | 'google/imagen-4.0-fast-generate-001' | 'google/imagen-4.0-generate-001' | 'google/imagen-4.0-ultra-generate-001' | 'openai/gpt-image-1' | 'openai/gpt-image-1-mini' | 'openai/gpt-image-1.5' | 'openai/gpt-image-2' | 'prodia/flux-fast-schnell' | 'quiverai/arrow-1.1' | 'recraft/recraft-v2' | 'recraft/recraft-v3' | 'recraft/recraft-v4' | 'recraft/recraft-v4-pro' | 'recraft/recraft-v4.1' | 'recraft/recraft-v4.1-pro' | 'recraft/recraft-v4.1-utility' | 'recraft/recraft-v4.1-utility-pro' | 'xai/grok-imagine-image' | (string & {});
type GatewayImageModelId = 'bfl/flux-2-flex' | 'bfl/flux-2-klein-4b' | 'bfl/flux-2-klein-9b' | 'bfl/flux-2-max' | 'bfl/flux-2-pro' | 'bfl/flux-kontext-max' | 'bfl/flux-kontext-pro' | 'bfl/flux-pro-1.0-fill' | 'bfl/flux-pro-1.1' | 'bfl/flux-pro-1.1-ultra' | 'bytedance/seedream-4.0' | 'bytedance/seedream-4.5' | 'bytedance/seedream-5.0-lite' | 'bytedance/seedream-5.0-pro' | 'google/imagen-4.0-fast-generate-001' | 'google/imagen-4.0-generate-001' | 'google/imagen-4.0-ultra-generate-001' | 'openai/gpt-image-1' | 'openai/gpt-image-1-mini' | 'openai/gpt-image-1.5' | 'openai/gpt-image-2' | 'prodia/flux-fast-schnell' | 'quiverai/arrow-1.1' | 'recraft/recraft-v2' | 'recraft/recraft-v3' | 'recraft/recraft-v4' | 'recraft/recraft-v4-pro' | 'recraft/recraft-v4.1' | 'recraft/recraft-v4.1-pro' | 'recraft/recraft-v4.1-utility' | 'recraft/recraft-v4.1-utility-pro' | 'xai/grok-imagine-image' | (string & {});

@@ -606,6 +606,8 @@ interface PerplexitySearchConfig {

readonly type = "forbidden";
constructor({ message, statusCode, cause, }?: {
readonly ruleId?: string;
constructor({ message, statusCode, cause, ruleId, }?: {
message?: string;
statusCode?: number;
cause?: unknown;
ruleId?: string;
});

@@ -612,0 +614,0 @@ static isInstance(error: unknown): error is GatewayForbiddenError;

@@ -38,3 +38,3 @@ "use strict";

// src/gateway-provider.ts
var import_provider_utils12 = require("@ai-sdk/provider-utils");
var import_provider_utils13 = require("@ai-sdk/provider-utils");

@@ -45,3 +45,3 @@ // src/errors/as-gateway-error.ts

// src/errors/create-gateway-error.ts
var import_v42 = require("zod/v4");
var import_v43 = require("zod/v4");

@@ -138,5 +138,14 @@ // src/errors/gateway-error.ts

// src/errors/gateway-forbidden-error.ts
var import_v4 = require("zod/v4");
var import_provider_utils = require("@ai-sdk/provider-utils");
var name2 = "GatewayForbiddenError";
var marker3 = `vercel.ai.gateway.error.${name2}`;
var symbol3 = Symbol.for(marker3);
var forbiddenParamSchema = (0, import_provider_utils.lazyValidator)(
() => (0, import_provider_utils.zodSchema)(
import_v4.z.object({
ruleId: import_v4.z.string()
})
)
);
var _a3, _b3;

@@ -147,3 +156,4 @@ var GatewayForbiddenError = class extends (_b3 = GatewayError, _a3 = symbol3, _b3) {

statusCode = 403,
cause
cause,
ruleId
} = {}) {

@@ -155,2 +165,3 @@ super({ message, statusCode, cause });

this.type = "forbidden";
this.ruleId = ruleId;
}

@@ -207,11 +218,11 @@ static isInstance(error) {

// src/errors/gateway-model-not-found-error.ts
var import_v4 = require("zod/v4");
var import_provider_utils = require("@ai-sdk/provider-utils");
var import_v42 = require("zod/v4");
var import_provider_utils2 = require("@ai-sdk/provider-utils");
var name5 = "GatewayModelNotFoundError";
var marker6 = `vercel.ai.gateway.error.${name5}`;
var symbol6 = Symbol.for(marker6);
var modelNotFoundParamSchema = (0, import_provider_utils.lazyValidator)(
() => (0, import_provider_utils.zodSchema)(
import_v4.z.object({
modelId: import_v4.z.string()
var modelNotFoundParamSchema = (0, import_provider_utils2.lazyValidator)(
() => (0, import_provider_utils2.zodSchema)(
import_v42.z.object({
modelId: import_v42.z.string()
})

@@ -289,3 +300,3 @@ )

// src/errors/create-gateway-error.ts
var import_provider_utils2 = require("@ai-sdk/provider-utils");
var import_provider_utils3 = require("@ai-sdk/provider-utils");
async function createGatewayErrorFromResponse({

@@ -298,3 +309,3 @@ response,

}) {
const parseResult = await (0, import_provider_utils2.safeValidateTypes)({
const parseResult = await (0, import_provider_utils3.safeValidateTypes)({
value: response,

@@ -328,3 +339,3 @@ schema: gatewayErrorResponseSchema

case "model_not_found": {
const modelResult = await (0, import_provider_utils2.safeValidateTypes)({
const modelResult = await (0, import_provider_utils3.safeValidateTypes)({
value: validatedResponse.error.param,

@@ -342,4 +353,14 @@ schema: modelNotFoundParamSchema

return new GatewayInternalServerError({ message, statusCode, cause });
case "forbidden":
return new GatewayForbiddenError({ message, statusCode, cause });
case "forbidden": {
const ruleResult = await (0, import_provider_utils3.safeValidateTypes)({
value: validatedResponse.error.param,
schema: forbiddenParamSchema
});
return new GatewayForbiddenError({
message,
statusCode,
cause,
ruleId: ruleResult.success ? ruleResult.value.ruleId : void 0
});
}
default:

@@ -349,10 +370,10 @@ return new GatewayInternalServerError({ message, statusCode, cause });

}
var gatewayErrorResponseSchema = (0, import_provider_utils2.lazyValidator)(
() => (0, import_provider_utils2.zodSchema)(
import_v42.z.object({
error: import_v42.z.object({
message: import_v42.z.string(),
type: import_v42.z.string().nullish(),
param: import_v42.z.unknown().nullish(),
code: import_v42.z.union([import_v42.z.string(), import_v42.z.number()]).nullish()
var gatewayErrorResponseSchema = (0, import_provider_utils3.lazyValidator)(
() => (0, import_provider_utils3.zodSchema)(
import_v43.z.object({
error: import_v43.z.object({
message: import_v43.z.string(),
type: import_v43.z.string().nullish(),
param: import_v43.z.unknown().nullish(),
code: import_v43.z.union([import_v43.z.string(), import_v43.z.number()]).nullish()
})

@@ -469,7 +490,7 @@ })

// src/errors/parse-auth-method.ts
var import_v43 = require("zod/v4");
var import_provider_utils3 = require("@ai-sdk/provider-utils");
var import_v44 = require("zod/v4");
var import_provider_utils4 = require("@ai-sdk/provider-utils");
var GATEWAY_AUTH_METHOD_HEADER = "ai-gateway-auth-method";
async function parseAuthMethod(headers) {
const result = await (0, import_provider_utils3.safeValidateTypes)({
const result = await (0, import_provider_utils4.safeValidateTypes)({
value: headers[GATEWAY_AUTH_METHOD_HEADER],

@@ -480,9 +501,9 @@ schema: gatewayAuthMethodSchema

}
var gatewayAuthMethodSchema = (0, import_provider_utils3.lazyValidator)(
() => (0, import_provider_utils3.zodSchema)(import_v43.z.union([import_v43.z.literal("api-key"), import_v43.z.literal("oidc")]))
var gatewayAuthMethodSchema = (0, import_provider_utils4.lazyValidator)(
() => (0, import_provider_utils4.zodSchema)(import_v44.z.union([import_v44.z.literal("api-key"), import_v44.z.literal("oidc")]))
);
// src/gateway-fetch-metadata.ts
var import_provider_utils4 = require("@ai-sdk/provider-utils");
var import_v44 = require("zod/v4");
var import_provider_utils5 = require("@ai-sdk/provider-utils");
var import_v45 = require("zod/v4");

@@ -499,10 +520,10 @@ // src/gateway-model-entry.ts

try {
const { value } = await (0, import_provider_utils4.getFromApi)({
const { value } = await (0, import_provider_utils5.getFromApi)({
url: `${this.config.baseURL}/config`,
headers: await (0, import_provider_utils4.resolve)(this.config.headers()),
successfulResponseHandler: (0, import_provider_utils4.createJsonResponseHandler)(
headers: await (0, import_provider_utils5.resolve)(this.config.headers()),
successfulResponseHandler: (0, import_provider_utils5.createJsonResponseHandler)(
gatewayAvailableModelsResponseSchema
),
failedResponseHandler: (0, import_provider_utils4.createJsonErrorResponseHandler)({
errorSchema: import_v44.z.any(),
failedResponseHandler: (0, import_provider_utils5.createJsonErrorResponseHandler)({
errorSchema: import_v45.z.any(),
errorToMessage: (data) => data

@@ -520,10 +541,10 @@ }),

const baseUrl = new URL(this.config.baseURL);
const { value } = await (0, import_provider_utils4.getFromApi)({
const { value } = await (0, import_provider_utils5.getFromApi)({
url: `${baseUrl.origin}/v1/credits`,
headers: await (0, import_provider_utils4.resolve)(this.config.headers()),
successfulResponseHandler: (0, import_provider_utils4.createJsonResponseHandler)(
headers: await (0, import_provider_utils5.resolve)(this.config.headers()),
successfulResponseHandler: (0, import_provider_utils5.createJsonResponseHandler)(
gatewayCreditsResponseSchema
),
failedResponseHandler: (0, import_provider_utils4.createJsonErrorResponseHandler)({
errorSchema: import_v44.z.any(),
failedResponseHandler: (0, import_provider_utils5.createJsonErrorResponseHandler)({
errorSchema: import_v45.z.any(),
errorToMessage: (data) => data

@@ -539,15 +560,15 @@ }),

};
var gatewayAvailableModelsResponseSchema = (0, import_provider_utils4.lazyValidator)(
() => (0, import_provider_utils4.zodSchema)(
import_v44.z.object({
models: import_v44.z.array(
import_v44.z.object({
id: import_v44.z.string(),
name: import_v44.z.string(),
description: import_v44.z.string().nullish(),
pricing: import_v44.z.object({
input: import_v44.z.string(),
output: import_v44.z.string(),
input_cache_read: import_v44.z.string().nullish(),
input_cache_write: import_v44.z.string().nullish()
var gatewayAvailableModelsResponseSchema = (0, import_provider_utils5.lazyValidator)(
() => (0, import_provider_utils5.zodSchema)(
import_v45.z.object({
models: import_v45.z.array(
import_v45.z.object({
id: import_v45.z.string(),
name: import_v45.z.string(),
description: import_v45.z.string().nullish(),
pricing: import_v45.z.object({
input: import_v45.z.string(),
output: import_v45.z.string(),
input_cache_read: import_v45.z.string().nullish(),
input_cache_write: import_v45.z.string().nullish()
}).transform(

@@ -561,8 +582,8 @@ ({ input, output, input_cache_read, input_cache_write }) => ({

).nullish(),
specification: import_v44.z.object({
specificationVersion: import_v44.z.literal("v2"),
provider: import_v44.z.string(),
modelId: import_v44.z.string()
specification: import_v45.z.object({
specificationVersion: import_v45.z.literal("v2"),
provider: import_v45.z.string(),
modelId: import_v45.z.string()
}),
modelType: import_v44.z.string().nullish()
modelType: import_v45.z.string().nullish()
})

@@ -577,7 +598,7 @@ ).transform(

);
var gatewayCreditsResponseSchema = (0, import_provider_utils4.lazyValidator)(
() => (0, import_provider_utils4.zodSchema)(
import_v44.z.object({
balance: import_v44.z.string(),
total_used: import_v44.z.string()
var gatewayCreditsResponseSchema = (0, import_provider_utils5.lazyValidator)(
() => (0, import_provider_utils5.zodSchema)(
import_v45.z.object({
balance: import_v45.z.string(),
total_used: import_v45.z.string()
}).transform(({ balance, total_used }) => ({

@@ -591,4 +612,4 @@ balance,

// src/gateway-spend-report.ts
var import_provider_utils5 = require("@ai-sdk/provider-utils");
var import_v45 = require("zod/v4");
var import_provider_utils6 = require("@ai-sdk/provider-utils");
var import_v46 = require("zod/v4");
var GatewaySpendReport = class {

@@ -625,10 +646,10 @@ constructor(config) {

}
const { value } = await (0, import_provider_utils5.getFromApi)({
const { value } = await (0, import_provider_utils6.getFromApi)({
url: `${baseUrl.origin}/v1/report?${searchParams.toString()}`,
headers: await (0, import_provider_utils5.resolve)(this.config.headers()),
successfulResponseHandler: (0, import_provider_utils5.createJsonResponseHandler)(
headers: await (0, import_provider_utils6.resolve)(this.config.headers()),
successfulResponseHandler: (0, import_provider_utils6.createJsonResponseHandler)(
gatewaySpendReportResponseSchema
),
failedResponseHandler: (0, import_provider_utils5.createJsonErrorResponseHandler)({
errorSchema: import_v45.z.any(),
failedResponseHandler: (0, import_provider_utils6.createJsonErrorResponseHandler)({
errorSchema: import_v46.z.any(),
errorToMessage: (data) => data

@@ -644,22 +665,22 @@ }),

};
var gatewaySpendReportResponseSchema = (0, import_provider_utils5.lazySchema)(
() => (0, import_provider_utils5.zodSchema)(
import_v45.z.object({
results: import_v45.z.array(
import_v45.z.object({
day: import_v45.z.string().optional(),
hour: import_v45.z.string().optional(),
user: import_v45.z.string().optional(),
model: import_v45.z.string().optional(),
tag: import_v45.z.string().optional(),
provider: import_v45.z.string().optional(),
credential_type: import_v45.z.enum(["byok", "system"]).optional(),
total_cost: import_v45.z.number(),
market_cost: import_v45.z.number().optional(),
input_tokens: import_v45.z.number().optional(),
output_tokens: import_v45.z.number().optional(),
cached_input_tokens: import_v45.z.number().optional(),
cache_creation_input_tokens: import_v45.z.number().optional(),
reasoning_tokens: import_v45.z.number().optional(),
request_count: import_v45.z.number().optional()
var gatewaySpendReportResponseSchema = (0, import_provider_utils6.lazySchema)(
() => (0, import_provider_utils6.zodSchema)(
import_v46.z.object({
results: import_v46.z.array(
import_v46.z.object({
day: import_v46.z.string().optional(),
hour: import_v46.z.string().optional(),
user: import_v46.z.string().optional(),
model: import_v46.z.string().optional(),
tag: import_v46.z.string().optional(),
provider: import_v46.z.string().optional(),
credential_type: import_v46.z.enum(["byok", "system"]).optional(),
total_cost: import_v46.z.number(),
market_cost: import_v46.z.number().optional(),
input_tokens: import_v46.z.number().optional(),
output_tokens: import_v46.z.number().optional(),
cached_input_tokens: import_v46.z.number().optional(),
cache_creation_input_tokens: import_v46.z.number().optional(),
reasoning_tokens: import_v46.z.number().optional(),
request_count: import_v46.z.number().optional()
}).transform(

@@ -696,4 +717,4 @@ ({

// src/gateway-generation-info.ts
var import_provider_utils6 = require("@ai-sdk/provider-utils");
var import_v46 = require("zod/v4");
var import_provider_utils7 = require("@ai-sdk/provider-utils");
var import_v47 = require("zod/v4");
var GatewayGenerationInfoFetcher = class {

@@ -706,10 +727,10 @@ constructor(config) {

const baseUrl = new URL(this.config.baseURL);
const { value } = await (0, import_provider_utils6.getFromApi)({
const { value } = await (0, import_provider_utils7.getFromApi)({
url: `${baseUrl.origin}/v1/generation?id=${encodeURIComponent(params.id)}`,
headers: await (0, import_provider_utils6.resolve)(this.config.headers()),
successfulResponseHandler: (0, import_provider_utils6.createJsonResponseHandler)(
headers: await (0, import_provider_utils7.resolve)(this.config.headers()),
successfulResponseHandler: (0, import_provider_utils7.createJsonResponseHandler)(
gatewayGenerationInfoResponseSchema
),
failedResponseHandler: (0, import_provider_utils6.createJsonErrorResponseHandler)({
errorSchema: import_v46.z.any(),
failedResponseHandler: (0, import_provider_utils7.createJsonErrorResponseHandler)({
errorSchema: import_v47.z.any(),
errorToMessage: (data) => data

@@ -725,24 +746,24 @@ }),

};
var gatewayGenerationInfoResponseSchema = (0, import_provider_utils6.lazySchema)(
() => (0, import_provider_utils6.zodSchema)(
import_v46.z.object({
data: import_v46.z.object({
id: import_v46.z.string(),
total_cost: import_v46.z.number(),
upstream_inference_cost: import_v46.z.number(),
usage: import_v46.z.number(),
created_at: import_v46.z.string(),
model: import_v46.z.string(),
is_byok: import_v46.z.boolean(),
provider_name: import_v46.z.string(),
streamed: import_v46.z.boolean(),
finish_reason: import_v46.z.string(),
latency: import_v46.z.number(),
generation_time: import_v46.z.number(),
native_tokens_prompt: import_v46.z.number(),
native_tokens_completion: import_v46.z.number(),
native_tokens_reasoning: import_v46.z.number(),
native_tokens_cached: import_v46.z.number(),
native_tokens_cache_creation: import_v46.z.number(),
billable_web_search_calls: import_v46.z.number()
var gatewayGenerationInfoResponseSchema = (0, import_provider_utils7.lazySchema)(
() => (0, import_provider_utils7.zodSchema)(
import_v47.z.object({
data: import_v47.z.object({
id: import_v47.z.string(),
total_cost: import_v47.z.number(),
upstream_inference_cost: import_v47.z.number(),
usage: import_v47.z.number(),
created_at: import_v47.z.string(),
model: import_v47.z.string(),
is_byok: import_v47.z.boolean(),
provider_name: import_v47.z.string(),
streamed: import_v47.z.boolean(),
finish_reason: import_v47.z.string(),
latency: import_v47.z.number(),
generation_time: import_v47.z.number(),
native_tokens_prompt: import_v47.z.number(),
native_tokens_completion: import_v47.z.number(),
native_tokens_reasoning: import_v47.z.number(),
native_tokens_cached: import_v47.z.number(),
native_tokens_cache_creation: import_v47.z.number(),
billable_web_search_calls: import_v47.z.number()
}).transform(

@@ -786,4 +807,4 @@ ({

// src/gateway-language-model.ts
var import_provider_utils7 = require("@ai-sdk/provider-utils");
var import_v47 = require("zod/v4");
var import_provider_utils8 = require("@ai-sdk/provider-utils");
var import_v48 = require("zod/v4");
var GatewayLanguageModel = class {

@@ -809,3 +830,3 @@ constructor(modelId, config) {

const { abortSignal } = options;
const resolvedHeaders = await (0, import_provider_utils7.resolve)(this.config.headers());
const resolvedHeaders = await (0, import_provider_utils8.resolve)(this.config.headers());
try {

@@ -816,14 +837,14 @@ const {

rawValue: rawResponse
} = await (0, import_provider_utils7.postJsonToApi)({
} = await (0, import_provider_utils8.postJsonToApi)({
url: this.getUrl(),
headers: (0, import_provider_utils7.combineHeaders)(
headers: (0, import_provider_utils8.combineHeaders)(
resolvedHeaders,
options.headers,
this.getModelConfigHeaders(this.modelId, false),
await (0, import_provider_utils7.resolve)(this.config.o11yHeaders)
await (0, import_provider_utils8.resolve)(this.config.o11yHeaders)
),
body: args,
successfulResponseHandler: (0, import_provider_utils7.createJsonResponseHandler)(import_v47.z.any()),
failedResponseHandler: (0, import_provider_utils7.createJsonErrorResponseHandler)({
errorSchema: import_v47.z.any(),
successfulResponseHandler: (0, import_provider_utils8.createJsonResponseHandler)(import_v48.z.any()),
failedResponseHandler: (0, import_provider_utils8.createJsonErrorResponseHandler)({
errorSchema: import_v48.z.any(),
errorToMessage: (data) => data

@@ -847,16 +868,16 @@ }),

const { abortSignal } = options;
const resolvedHeaders = await (0, import_provider_utils7.resolve)(this.config.headers());
const resolvedHeaders = await (0, import_provider_utils8.resolve)(this.config.headers());
try {
const { value: response, responseHeaders } = await (0, import_provider_utils7.postJsonToApi)({
const { value: response, responseHeaders } = await (0, import_provider_utils8.postJsonToApi)({
url: this.getUrl(),
headers: (0, import_provider_utils7.combineHeaders)(
headers: (0, import_provider_utils8.combineHeaders)(
resolvedHeaders,
options.headers,
this.getModelConfigHeaders(this.modelId, true),
await (0, import_provider_utils7.resolve)(this.config.o11yHeaders)
await (0, import_provider_utils8.resolve)(this.config.o11yHeaders)
),
body: args,
successfulResponseHandler: (0, import_provider_utils7.createEventSourceResponseHandler)(import_v47.z.any()),
failedResponseHandler: (0, import_provider_utils7.createJsonErrorResponseHandler)({
errorSchema: import_v47.z.any(),
successfulResponseHandler: (0, import_provider_utils8.createEventSourceResponseHandler)(import_v48.z.any()),
failedResponseHandler: (0, import_provider_utils8.createJsonErrorResponseHandler)({
errorSchema: import_v48.z.any(),
errorToMessage: (data) => data

@@ -939,4 +960,4 @@ }),

// src/gateway-embedding-model.ts
var import_provider_utils8 = require("@ai-sdk/provider-utils");
var import_v48 = require("zod/v4");
var import_provider_utils9 = require("@ai-sdk/provider-utils");
var import_v49 = require("zod/v4");
var GatewayEmbeddingModel = class {

@@ -960,3 +981,3 @@ constructor(modelId, config) {

var _a10;
const resolvedHeaders = await (0, import_provider_utils8.resolve)(this.config.headers());
const resolvedHeaders = await (0, import_provider_utils9.resolve)(this.config.headers());
try {

@@ -967,9 +988,9 @@ const {

rawValue
} = await (0, import_provider_utils8.postJsonToApi)({
} = await (0, import_provider_utils9.postJsonToApi)({
url: this.getUrl(),
headers: (0, import_provider_utils8.combineHeaders)(
headers: (0, import_provider_utils9.combineHeaders)(
resolvedHeaders,
headers != null ? headers : {},
this.getModelConfigHeaders(),
await (0, import_provider_utils8.resolve)(this.config.o11yHeaders)
await (0, import_provider_utils9.resolve)(this.config.o11yHeaders)
),

@@ -980,7 +1001,7 @@ body: {

},
successfulResponseHandler: (0, import_provider_utils8.createJsonResponseHandler)(
successfulResponseHandler: (0, import_provider_utils9.createJsonResponseHandler)(
gatewayEmbeddingResponseSchema
),
failedResponseHandler: (0, import_provider_utils8.createJsonErrorResponseHandler)({
errorSchema: import_v48.z.any(),
failedResponseHandler: (0, import_provider_utils9.createJsonErrorResponseHandler)({
errorSchema: import_v49.z.any(),
errorToMessage: (data) => data

@@ -1011,8 +1032,8 @@ }),

};
var gatewayEmbeddingResponseSchema = (0, import_provider_utils8.lazyValidator)(
() => (0, import_provider_utils8.zodSchema)(
import_v48.z.object({
embeddings: import_v48.z.array(import_v48.z.array(import_v48.z.number())),
usage: import_v48.z.object({ tokens: import_v48.z.number() }).nullish(),
providerMetadata: import_v48.z.record(import_v48.z.string(), import_v48.z.record(import_v48.z.string(), import_v48.z.unknown())).optional()
var gatewayEmbeddingResponseSchema = (0, import_provider_utils9.lazyValidator)(
() => (0, import_provider_utils9.zodSchema)(
import_v49.z.object({
embeddings: import_v49.z.array(import_v49.z.array(import_v49.z.number())),
usage: import_v49.z.object({ tokens: import_v49.z.number() }).nullish(),
providerMetadata: import_v49.z.record(import_v49.z.string(), import_v49.z.record(import_v49.z.string(), import_v49.z.unknown())).optional()
})

@@ -1023,4 +1044,4 @@ )

// src/gateway-image-model.ts
var import_provider_utils9 = require("@ai-sdk/provider-utils");
var import_v49 = require("zod/v4");
var import_provider_utils10 = require("@ai-sdk/provider-utils");
var import_v410 = require("zod/v4");
var GatewayImageModel = class {

@@ -1048,3 +1069,3 @@ constructor(modelId, config) {

var _a10, _b10, _c, _d;
const resolvedHeaders = await (0, import_provider_utils9.resolve)(this.config.headers());
const resolvedHeaders = await (0, import_provider_utils10.resolve)(this.config.headers());
try {

@@ -1055,9 +1076,9 @@ const {

rawValue
} = await (0, import_provider_utils9.postJsonToApi)({
} = await (0, import_provider_utils10.postJsonToApi)({
url: this.getUrl(),
headers: (0, import_provider_utils9.combineHeaders)(
headers: (0, import_provider_utils10.combineHeaders)(
resolvedHeaders,
headers != null ? headers : {},
this.getModelConfigHeaders(),
await (0, import_provider_utils9.resolve)(this.config.o11yHeaders)
await (0, import_provider_utils10.resolve)(this.config.o11yHeaders)
),

@@ -1072,7 +1093,7 @@ body: {

},
successfulResponseHandler: (0, import_provider_utils9.createJsonResponseHandler)(
successfulResponseHandler: (0, import_provider_utils10.createJsonResponseHandler)(
gatewayImageResponseSchema
),
failedResponseHandler: (0, import_provider_utils9.createJsonErrorResponseHandler)({
errorSchema: import_v49.z.any(),
failedResponseHandler: (0, import_provider_utils10.createJsonErrorResponseHandler)({
errorSchema: import_v410.z.any(),
errorToMessage: (data) => data

@@ -1115,20 +1136,20 @@ }),

};
var providerMetadataEntrySchema = import_v49.z.object({
images: import_v49.z.array(import_v49.z.unknown()).optional()
}).catchall(import_v49.z.unknown());
var gatewayImageUsageSchema = import_v49.z.object({
inputTokens: import_v49.z.number().nullish(),
outputTokens: import_v49.z.number().nullish(),
totalTokens: import_v49.z.number().nullish()
var providerMetadataEntrySchema = import_v410.z.object({
images: import_v410.z.array(import_v410.z.unknown()).optional()
}).catchall(import_v410.z.unknown());
var gatewayImageUsageSchema = import_v410.z.object({
inputTokens: import_v410.z.number().nullish(),
outputTokens: import_v410.z.number().nullish(),
totalTokens: import_v410.z.number().nullish()
});
var gatewayImageResponseSchema = import_v49.z.object({
images: import_v49.z.array(import_v49.z.string()),
var gatewayImageResponseSchema = import_v410.z.object({
images: import_v410.z.array(import_v410.z.string()),
// Always base64 strings over the wire
warnings: import_v49.z.array(
import_v49.z.object({
type: import_v49.z.literal("other"),
message: import_v49.z.string()
warnings: import_v410.z.array(
import_v410.z.object({
type: import_v410.z.literal("other"),
message: import_v410.z.string()
})
).optional(),
providerMetadata: import_v49.z.record(import_v49.z.string(), providerMetadataEntrySchema).optional(),
providerMetadata: import_v410.z.record(import_v410.z.string(), providerMetadataEntrySchema).optional(),
usage: gatewayImageUsageSchema.optional()

@@ -1138,6 +1159,6 @@ });

// src/tool/parallel-search.ts
var import_provider_utils10 = require("@ai-sdk/provider-utils");
var import_provider_utils11 = require("@ai-sdk/provider-utils");
var import_zod = require("zod");
var parallelSearchInputSchema = (0, import_provider_utils10.lazySchema)(
() => (0, import_provider_utils10.zodSchema)(
var parallelSearchInputSchema = (0, import_provider_utils11.lazySchema)(
() => (0, import_provider_utils11.zodSchema)(
import_zod.z.object({

@@ -1177,4 +1198,4 @@ objective: import_zod.z.string().describe(

);
var parallelSearchOutputSchema = (0, import_provider_utils10.lazySchema)(
() => (0, import_provider_utils10.zodSchema)(
var parallelSearchOutputSchema = (0, import_provider_utils11.lazySchema)(
() => (0, import_provider_utils11.zodSchema)(
import_zod.z.union([

@@ -1210,3 +1231,3 @@ // Success response

);
var parallelSearchToolFactory = (0, import_provider_utils10.createProviderDefinedToolFactoryWithOutputSchema)({
var parallelSearchToolFactory = (0, import_provider_utils11.createProviderDefinedToolFactoryWithOutputSchema)({
id: "gateway.parallel_search",

@@ -1220,6 +1241,6 @@ name: "parallel_search",

// src/tool/perplexity-search.ts
var import_provider_utils11 = require("@ai-sdk/provider-utils");
var import_provider_utils12 = require("@ai-sdk/provider-utils");
var import_zod2 = require("zod");
var perplexitySearchInputSchema = (0, import_provider_utils11.lazySchema)(
() => (0, import_provider_utils11.zodSchema)(
var perplexitySearchInputSchema = (0, import_provider_utils12.lazySchema)(
() => (0, import_provider_utils12.zodSchema)(
import_zod2.z.object({

@@ -1265,4 +1286,4 @@ query: import_zod2.z.union([import_zod2.z.string(), import_zod2.z.array(import_zod2.z.string())]).describe(

);
var perplexitySearchOutputSchema = (0, import_provider_utils11.lazySchema)(
() => (0, import_provider_utils11.zodSchema)(
var perplexitySearchOutputSchema = (0, import_provider_utils12.lazySchema)(
() => (0, import_provider_utils12.zodSchema)(
import_zod2.z.union([

@@ -1297,3 +1318,3 @@ // Success response

);
var perplexitySearchToolFactory = (0, import_provider_utils11.createProviderDefinedToolFactoryWithOutputSchema)({
var perplexitySearchToolFactory = (0, import_provider_utils12.createProviderDefinedToolFactoryWithOutputSchema)({
id: "gateway.perplexity_search",

@@ -1336,3 +1357,3 @@ name: "perplexity_search",

// src/version.ts
var VERSION = true ? "2.0.109" : "0.0.0-test";
var VERSION = true ? "2.0.111" : "0.0.0-test";

@@ -1347,7 +1368,7 @@ // src/gateway-provider.ts

let lastFetchTime = 0;
const baseURL = (_b10 = (0, import_provider_utils12.withoutTrailingSlash)(options.baseURL)) != null ? _b10 : "https://ai-gateway.vercel.sh/v1/ai";
const baseURL = (_b10 = (0, import_provider_utils13.withoutTrailingSlash)(options.baseURL)) != null ? _b10 : "https://ai-gateway.vercel.sh/v1/ai";
const getHeaders = async () => {
const auth = await getGatewayAuthToken(options);
if (auth) {
return (0, import_provider_utils12.withUserAgentSuffix)(
return (0, import_provider_utils13.withUserAgentSuffix)(
{

@@ -1369,15 +1390,15 @@ Authorization: `Bearer ${auth.token}`,

const createO11yHeaders = () => {
const deploymentId = (0, import_provider_utils12.loadOptionalSetting)({
const deploymentId = (0, import_provider_utils13.loadOptionalSetting)({
settingValue: void 0,
environmentVariableName: "VERCEL_DEPLOYMENT_ID"
});
const environment = (0, import_provider_utils12.loadOptionalSetting)({
const environment = (0, import_provider_utils13.loadOptionalSetting)({
settingValue: void 0,
environmentVariableName: "VERCEL_ENV"
});
const region = (0, import_provider_utils12.loadOptionalSetting)({
const region = (0, import_provider_utils13.loadOptionalSetting)({
settingValue: void 0,
environmentVariableName: "VERCEL_REGION"
});
const projectId = (0, import_provider_utils12.loadOptionalSetting)({
const projectId = (0, import_provider_utils13.loadOptionalSetting)({
settingValue: void 0,

@@ -1499,3 +1520,3 @@ environmentVariableName: "VERCEL_PROJECT_ID"

async function getGatewayAuthToken(options) {
const apiKey = (0, import_provider_utils12.loadOptionalSetting)({
const apiKey = (0, import_provider_utils13.loadOptionalSetting)({
settingValue: options.apiKey,

@@ -1502,0 +1523,0 @@ environmentVariableName: "AI_GATEWAY_API_KEY"

@@ -12,3 +12,3 @@ // src/gateway-provider.ts

// src/errors/create-gateway-error.ts
import { z as z2 } from "zod/v4";
import { z as z3 } from "zod/v4";

@@ -105,5 +105,14 @@ // src/errors/gateway-error.ts

// src/errors/gateway-forbidden-error.ts
import { z } from "zod/v4";
import { lazyValidator, zodSchema } from "@ai-sdk/provider-utils";
var name2 = "GatewayForbiddenError";
var marker3 = `vercel.ai.gateway.error.${name2}`;
var symbol3 = Symbol.for(marker3);
var forbiddenParamSchema = lazyValidator(
() => zodSchema(
z.object({
ruleId: z.string()
})
)
);
var _a3, _b3;

@@ -114,3 +123,4 @@ var GatewayForbiddenError = class extends (_b3 = GatewayError, _a3 = symbol3, _b3) {

statusCode = 403,
cause
cause,
ruleId
} = {}) {

@@ -122,2 +132,3 @@ super({ message, statusCode, cause });

this.type = "forbidden";
this.ruleId = ruleId;
}

@@ -174,11 +185,11 @@ static isInstance(error) {

// src/errors/gateway-model-not-found-error.ts
import { z } from "zod/v4";
import { lazyValidator, zodSchema } from "@ai-sdk/provider-utils";
import { z as z2 } from "zod/v4";
import { lazyValidator as lazyValidator2, zodSchema as zodSchema2 } from "@ai-sdk/provider-utils";
var name5 = "GatewayModelNotFoundError";
var marker6 = `vercel.ai.gateway.error.${name5}`;
var symbol6 = Symbol.for(marker6);
var modelNotFoundParamSchema = lazyValidator(
() => zodSchema(
z.object({
modelId: z.string()
var modelNotFoundParamSchema = lazyValidator2(
() => zodSchema2(
z2.object({
modelId: z2.string()
})

@@ -257,5 +268,5 @@ )

import {
lazyValidator as lazyValidator2,
lazyValidator as lazyValidator3,
safeValidateTypes,
zodSchema as zodSchema2
zodSchema as zodSchema3
} from "@ai-sdk/provider-utils";

@@ -311,4 +322,14 @@ async function createGatewayErrorFromResponse({

return new GatewayInternalServerError({ message, statusCode, cause });
case "forbidden":
return new GatewayForbiddenError({ message, statusCode, cause });
case "forbidden": {
const ruleResult = await safeValidateTypes({
value: validatedResponse.error.param,
schema: forbiddenParamSchema
});
return new GatewayForbiddenError({
message,
statusCode,
cause,
ruleId: ruleResult.success ? ruleResult.value.ruleId : void 0
});
}
default:

@@ -318,10 +339,10 @@ return new GatewayInternalServerError({ message, statusCode, cause });

}
var gatewayErrorResponseSchema = lazyValidator2(
() => zodSchema2(
z2.object({
error: z2.object({
message: z2.string(),
type: z2.string().nullish(),
param: z2.unknown().nullish(),
code: z2.union([z2.string(), z2.number()]).nullish()
var gatewayErrorResponseSchema = lazyValidator3(
() => zodSchema3(
z3.object({
error: z3.object({
message: z3.string(),
type: z3.string().nullish(),
param: z3.unknown().nullish(),
code: z3.union([z3.string(), z3.number()]).nullish()
})

@@ -438,7 +459,7 @@ })

// src/errors/parse-auth-method.ts
import { z as z3 } from "zod/v4";
import { z as z4 } from "zod/v4";
import {
lazyValidator as lazyValidator3,
lazyValidator as lazyValidator4,
safeValidateTypes as safeValidateTypes2,
zodSchema as zodSchema3
zodSchema as zodSchema4
} from "@ai-sdk/provider-utils";

@@ -453,4 +474,4 @@ var GATEWAY_AUTH_METHOD_HEADER = "ai-gateway-auth-method";

}
var gatewayAuthMethodSchema = lazyValidator3(
() => zodSchema3(z3.union([z3.literal("api-key"), z3.literal("oidc")]))
var gatewayAuthMethodSchema = lazyValidator4(
() => zodSchema4(z4.union([z4.literal("api-key"), z4.literal("oidc")]))
);

@@ -463,7 +484,7 @@

getFromApi,
lazyValidator as lazyValidator4,
lazyValidator as lazyValidator5,
resolve,
zodSchema as zodSchema4
zodSchema as zodSchema5
} from "@ai-sdk/provider-utils";
import { z as z4 } from "zod/v4";
import { z as z5 } from "zod/v4";

@@ -487,3 +508,3 @@ // src/gateway-model-entry.ts

failedResponseHandler: createJsonErrorResponseHandler({
errorSchema: z4.any(),
errorSchema: z5.any(),
errorToMessage: (data) => data

@@ -508,3 +529,3 @@ }),

failedResponseHandler: createJsonErrorResponseHandler({
errorSchema: z4.any(),
errorSchema: z5.any(),
errorToMessage: (data) => data

@@ -520,15 +541,15 @@ }),

};
var gatewayAvailableModelsResponseSchema = lazyValidator4(
() => zodSchema4(
z4.object({
models: z4.array(
z4.object({
id: z4.string(),
name: z4.string(),
description: z4.string().nullish(),
pricing: z4.object({
input: z4.string(),
output: z4.string(),
input_cache_read: z4.string().nullish(),
input_cache_write: z4.string().nullish()
var gatewayAvailableModelsResponseSchema = lazyValidator5(
() => zodSchema5(
z5.object({
models: z5.array(
z5.object({
id: z5.string(),
name: z5.string(),
description: z5.string().nullish(),
pricing: z5.object({
input: z5.string(),
output: z5.string(),
input_cache_read: z5.string().nullish(),
input_cache_write: z5.string().nullish()
}).transform(

@@ -542,8 +563,8 @@ ({ input, output, input_cache_read, input_cache_write }) => ({

).nullish(),
specification: z4.object({
specificationVersion: z4.literal("v2"),
provider: z4.string(),
modelId: z4.string()
specification: z5.object({
specificationVersion: z5.literal("v2"),
provider: z5.string(),
modelId: z5.string()
}),
modelType: z4.string().nullish()
modelType: z5.string().nullish()
})

@@ -558,7 +579,7 @@ ).transform(

);
var gatewayCreditsResponseSchema = lazyValidator4(
() => zodSchema4(
z4.object({
balance: z4.string(),
total_used: z4.string()
var gatewayCreditsResponseSchema = lazyValidator5(
() => zodSchema5(
z5.object({
balance: z5.string(),
total_used: z5.string()
}).transform(({ balance, total_used }) => ({

@@ -578,5 +599,5 @@ balance,

resolve as resolve2,
zodSchema as zodSchema5
zodSchema as zodSchema6
} from "@ai-sdk/provider-utils";
import { z as z5 } from "zod/v4";
import { z as z6 } from "zod/v4";
var GatewaySpendReport = class {

@@ -620,3 +641,3 @@ constructor(config) {

failedResponseHandler: createJsonErrorResponseHandler2({
errorSchema: z5.any(),
errorSchema: z6.any(),
errorToMessage: (data) => data

@@ -633,21 +654,21 @@ }),

var gatewaySpendReportResponseSchema = lazySchema(
() => zodSchema5(
z5.object({
results: z5.array(
z5.object({
day: z5.string().optional(),
hour: z5.string().optional(),
user: z5.string().optional(),
model: z5.string().optional(),
tag: z5.string().optional(),
provider: z5.string().optional(),
credential_type: z5.enum(["byok", "system"]).optional(),
total_cost: z5.number(),
market_cost: z5.number().optional(),
input_tokens: z5.number().optional(),
output_tokens: z5.number().optional(),
cached_input_tokens: z5.number().optional(),
cache_creation_input_tokens: z5.number().optional(),
reasoning_tokens: z5.number().optional(),
request_count: z5.number().optional()
() => zodSchema6(
z6.object({
results: z6.array(
z6.object({
day: z6.string().optional(),
hour: z6.string().optional(),
user: z6.string().optional(),
model: z6.string().optional(),
tag: z6.string().optional(),
provider: z6.string().optional(),
credential_type: z6.enum(["byok", "system"]).optional(),
total_cost: z6.number(),
market_cost: z6.number().optional(),
input_tokens: z6.number().optional(),
output_tokens: z6.number().optional(),
cached_input_tokens: z6.number().optional(),
cache_creation_input_tokens: z6.number().optional(),
reasoning_tokens: z6.number().optional(),
request_count: z6.number().optional()
}).transform(

@@ -690,5 +711,5 @@ ({

resolve as resolve3,
zodSchema as zodSchema6
zodSchema as zodSchema7
} from "@ai-sdk/provider-utils";
import { z as z6 } from "zod/v4";
import { z as z7 } from "zod/v4";
var GatewayGenerationInfoFetcher = class {

@@ -708,3 +729,3 @@ constructor(config) {

failedResponseHandler: createJsonErrorResponseHandler3({
errorSchema: z6.any(),
errorSchema: z7.any(),
errorToMessage: (data) => data

@@ -721,23 +742,23 @@ }),

var gatewayGenerationInfoResponseSchema = lazySchema2(
() => zodSchema6(
z6.object({
data: z6.object({
id: z6.string(),
total_cost: z6.number(),
upstream_inference_cost: z6.number(),
usage: z6.number(),
created_at: z6.string(),
model: z6.string(),
is_byok: z6.boolean(),
provider_name: z6.string(),
streamed: z6.boolean(),
finish_reason: z6.string(),
latency: z6.number(),
generation_time: z6.number(),
native_tokens_prompt: z6.number(),
native_tokens_completion: z6.number(),
native_tokens_reasoning: z6.number(),
native_tokens_cached: z6.number(),
native_tokens_cache_creation: z6.number(),
billable_web_search_calls: z6.number()
() => zodSchema7(
z7.object({
data: z7.object({
id: z7.string(),
total_cost: z7.number(),
upstream_inference_cost: z7.number(),
usage: z7.number(),
created_at: z7.string(),
model: z7.string(),
is_byok: z7.boolean(),
provider_name: z7.string(),
streamed: z7.boolean(),
finish_reason: z7.string(),
latency: z7.number(),
generation_time: z7.number(),
native_tokens_prompt: z7.number(),
native_tokens_completion: z7.number(),
native_tokens_reasoning: z7.number(),
native_tokens_cached: z7.number(),
native_tokens_cache_creation: z7.number(),
billable_web_search_calls: z7.number()
}).transform(

@@ -789,3 +810,3 @@ ({

} from "@ai-sdk/provider-utils";
import { z as z7 } from "zod/v4";
import { z as z8 } from "zod/v4";
var GatewayLanguageModel = class {

@@ -826,5 +847,5 @@ constructor(modelId, config) {

body: args,
successfulResponseHandler: createJsonResponseHandler4(z7.any()),
successfulResponseHandler: createJsonResponseHandler4(z8.any()),
failedResponseHandler: createJsonErrorResponseHandler4({
errorSchema: z7.any(),
errorSchema: z8.any(),
errorToMessage: (data) => data

@@ -859,5 +880,5 @@ }),

body: args,
successfulResponseHandler: createEventSourceResponseHandler(z7.any()),
successfulResponseHandler: createEventSourceResponseHandler(z8.any()),
failedResponseHandler: createJsonErrorResponseHandler4({
errorSchema: z7.any(),
errorSchema: z8.any(),
errorToMessage: (data) => data

@@ -944,8 +965,8 @@ }),

createJsonResponseHandler as createJsonResponseHandler5,
lazyValidator as lazyValidator5,
lazyValidator as lazyValidator6,
postJsonToApi as postJsonToApi2,
resolve as resolve5,
zodSchema as zodSchema7
zodSchema as zodSchema8
} from "@ai-sdk/provider-utils";
import { z as z8 } from "zod/v4";
import { z as z9 } from "zod/v4";
var GatewayEmbeddingModel = class {

@@ -991,3 +1012,3 @@ constructor(modelId, config) {

failedResponseHandler: createJsonErrorResponseHandler5({
errorSchema: z8.any(),
errorSchema: z9.any(),
errorToMessage: (data) => data

@@ -1018,8 +1039,8 @@ }),

};
var gatewayEmbeddingResponseSchema = lazyValidator5(
() => zodSchema7(
z8.object({
embeddings: z8.array(z8.array(z8.number())),
usage: z8.object({ tokens: z8.number() }).nullish(),
providerMetadata: z8.record(z8.string(), z8.record(z8.string(), z8.unknown())).optional()
var gatewayEmbeddingResponseSchema = lazyValidator6(
() => zodSchema8(
z9.object({
embeddings: z9.array(z9.array(z9.number())),
usage: z9.object({ tokens: z9.number() }).nullish(),
providerMetadata: z9.record(z9.string(), z9.record(z9.string(), z9.unknown())).optional()
})

@@ -1037,3 +1058,3 @@ )

} from "@ai-sdk/provider-utils";
import { z as z9 } from "zod/v4";
import { z as z10 } from "zod/v4";
var GatewayImageModel = class {

@@ -1087,3 +1108,3 @@ constructor(modelId, config) {

failedResponseHandler: createJsonErrorResponseHandler6({
errorSchema: z9.any(),
errorSchema: z10.any(),
errorToMessage: (data) => data

@@ -1126,20 +1147,20 @@ }),

};
var providerMetadataEntrySchema = z9.object({
images: z9.array(z9.unknown()).optional()
}).catchall(z9.unknown());
var gatewayImageUsageSchema = z9.object({
inputTokens: z9.number().nullish(),
outputTokens: z9.number().nullish(),
totalTokens: z9.number().nullish()
var providerMetadataEntrySchema = z10.object({
images: z10.array(z10.unknown()).optional()
}).catchall(z10.unknown());
var gatewayImageUsageSchema = z10.object({
inputTokens: z10.number().nullish(),
outputTokens: z10.number().nullish(),
totalTokens: z10.number().nullish()
});
var gatewayImageResponseSchema = z9.object({
images: z9.array(z9.string()),
var gatewayImageResponseSchema = z10.object({
images: z10.array(z10.string()),
// Always base64 strings over the wire
warnings: z9.array(
z9.object({
type: z9.literal("other"),
message: z9.string()
warnings: z10.array(
z10.object({
type: z10.literal("other"),
message: z10.string()
})
).optional(),
providerMetadata: z9.record(z9.string(), providerMetadataEntrySchema).optional(),
providerMetadata: z10.record(z10.string(), providerMetadataEntrySchema).optional(),
usage: gatewayImageUsageSchema.optional()

@@ -1152,24 +1173,24 @@ });

lazySchema as lazySchema3,
zodSchema as zodSchema8
zodSchema as zodSchema9
} from "@ai-sdk/provider-utils";
import { z as z10 } from "zod";
import { z as z11 } from "zod";
var parallelSearchInputSchema = lazySchema3(
() => zodSchema8(
z10.object({
objective: z10.string().describe(
() => zodSchema9(
z11.object({
objective: z11.string().describe(
"Natural-language description of the web research goal, including source or freshness guidance and broader context from the task. Maximum 5000 characters."
),
search_queries: z10.array(z10.string()).optional().describe(
search_queries: z11.array(z11.string()).optional().describe(
"Optional search queries to supplement the objective. Maximum 200 characters per query."
),
mode: z10.enum(["one-shot", "agentic"]).optional().describe(
mode: z11.enum(["one-shot", "agentic"]).optional().describe(
'Mode preset: "one-shot" for comprehensive results with longer excerpts (default), "agentic" for concise, token-efficient results for multi-step workflows.'
),
max_results: z10.number().optional().describe(
max_results: z11.number().optional().describe(
"Maximum number of results to return (1-20). Defaults to 10 if not specified."
),
source_policy: z10.object({
include_domains: z10.array(z10.string()).optional().describe("List of domains to include in search results."),
exclude_domains: z10.array(z10.string()).optional().describe("List of domains to exclude from search results."),
after_date: z10.string().optional().describe(
source_policy: z11.object({
include_domains: z11.array(z11.string()).optional().describe("List of domains to include in search results."),
exclude_domains: z11.array(z11.string()).optional().describe("List of domains to exclude from search results."),
after_date: z11.string().optional().describe(
"Only include results published after this date (ISO 8601 format)."

@@ -1180,8 +1201,8 @@ )

),
excerpts: z10.object({
max_chars_per_result: z10.number().optional().describe("Maximum characters per result."),
max_chars_total: z10.number().optional().describe("Maximum total characters across all results.")
excerpts: z11.object({
max_chars_per_result: z11.number().optional().describe("Maximum characters per result."),
max_chars_total: z11.number().optional().describe("Maximum total characters across all results.")
}).optional().describe("Excerpt configuration for controlling result length."),
fetch_policy: z10.object({
max_age_seconds: z10.number().optional().describe(
fetch_policy: z11.object({
max_age_seconds: z11.number().optional().describe(
"Maximum age in seconds for cached content. Set to 0 to always fetch fresh content."

@@ -1194,14 +1215,14 @@ )

var parallelSearchOutputSchema = lazySchema3(
() => zodSchema8(
z10.union([
() => zodSchema9(
z11.union([
// Success response
z10.object({
searchId: z10.string(),
results: z10.array(
z10.object({
url: z10.string(),
title: z10.string(),
excerpt: z10.string(),
publishDate: z10.string().nullable().optional(),
relevanceScore: z10.number().optional()
z11.object({
searchId: z11.string(),
results: z11.array(
z11.object({
url: z11.string(),
title: z11.string(),
excerpt: z11.string(),
publishDate: z11.string().nullable().optional(),
relevanceScore: z11.number().optional()
})

@@ -1211,4 +1232,4 @@ )

// Error response
z10.object({
error: z10.enum([
z11.object({
error: z11.enum([
"api_error",

@@ -1221,4 +1242,4 @@ "rate_limit",

]),
statusCode: z10.number().optional(),
message: z10.string()
statusCode: z11.number().optional(),
message: z11.string()
})

@@ -1240,42 +1261,42 @@ ])

lazySchema as lazySchema4,
zodSchema as zodSchema9
zodSchema as zodSchema10
} from "@ai-sdk/provider-utils";
import { z as z11 } from "zod";
import { z as z12 } from "zod";
var perplexitySearchInputSchema = lazySchema4(
() => zodSchema9(
z11.object({
query: z11.union([z11.string(), z11.array(z11.string())]).describe(
() => zodSchema10(
z12.object({
query: z12.union([z12.string(), z12.array(z12.string())]).describe(
"Search query (string) or multiple queries (array of up to 5 strings). Multi-query searches return combined results from all queries."
),
max_results: z11.number().optional().describe(
max_results: z12.number().optional().describe(
"Maximum number of search results to return (1-20, default: 10)"
),
max_tokens_per_page: z11.number().optional().describe(
max_tokens_per_page: z12.number().optional().describe(
"Maximum number of tokens to extract per search result page (256-2048, default: 2048)"
),
max_tokens: z11.number().optional().describe(
max_tokens: z12.number().optional().describe(
"Maximum total tokens across all search results (default: 25000, max: 1000000)"
),
country: z11.string().optional().describe(
country: z12.string().optional().describe(
"Two-letter ISO 3166-1 alpha-2 country code for regional search results (e.g., 'US', 'GB', 'FR')"
),
search_domain_filter: z11.array(z11.string()).optional().describe(
search_domain_filter: z12.array(z12.string()).optional().describe(
"List of domains to include or exclude from search results (max 20). To include: ['nature.com', 'science.org']. To exclude: ['-example.com', '-spam.net']"
),
search_language_filter: z11.array(z11.string()).optional().describe(
search_language_filter: z12.array(z12.string()).optional().describe(
"List of ISO 639-1 language codes to filter results (max 10, lowercase). Examples: ['en', 'fr', 'de']"
),
search_after_date: z11.string().optional().describe(
search_after_date: z12.string().optional().describe(
"Include only results published after this date. Format: 'MM/DD/YYYY' (e.g., '3/1/2025'). Cannot be used with search_recency_filter."
),
search_before_date: z11.string().optional().describe(
search_before_date: z12.string().optional().describe(
"Include only results published before this date. Format: 'MM/DD/YYYY' (e.g., '3/15/2025'). Cannot be used with search_recency_filter."
),
last_updated_after_filter: z11.string().optional().describe(
last_updated_after_filter: z12.string().optional().describe(
"Include only results last updated after this date. Format: 'MM/DD/YYYY' (e.g., '3/1/2025'). Cannot be used with search_recency_filter."
),
last_updated_before_filter: z11.string().optional().describe(
last_updated_before_filter: z12.string().optional().describe(
"Include only results last updated before this date. Format: 'MM/DD/YYYY' (e.g., '3/15/2025'). Cannot be used with search_recency_filter."
),
search_recency_filter: z11.enum(["day", "week", "month", "year"]).optional().describe(
search_recency_filter: z12.enum(["day", "week", "month", "year"]).optional().describe(
"Filter results by relative time period. Cannot be used with search_after_date or search_before_date."

@@ -1287,20 +1308,20 @@ )

var perplexitySearchOutputSchema = lazySchema4(
() => zodSchema9(
z11.union([
() => zodSchema10(
z12.union([
// Success response
z11.object({
results: z11.array(
z11.object({
title: z11.string(),
url: z11.string(),
snippet: z11.string(),
date: z11.string().optional(),
lastUpdated: z11.string().optional()
z12.object({
results: z12.array(
z12.object({
title: z12.string(),
url: z12.string(),
snippet: z12.string(),
date: z12.string().optional(),
lastUpdated: z12.string().optional()
})
),
id: z11.string()
id: z12.string()
}),
// Error response
z11.object({
error: z11.enum([
z12.object({
error: z12.enum([
"api_error",

@@ -1312,4 +1333,4 @@ "rate_limit",

]),
statusCode: z11.number().optional(),
message: z11.string()
statusCode: z12.number().optional(),
message: z12.string()
})

@@ -1357,3 +1378,3 @@ ])

// src/version.ts
var VERSION = true ? "2.0.109" : "0.0.0-test";
var VERSION = true ? "2.0.111" : "0.0.0-test";

@@ -1360,0 +1381,0 @@ // src/gateway-provider.ts

{
"name": "@ai-sdk/gateway",
"private": false,
"version": "2.0.109",
"version": "2.0.111",
"license": "Apache-2.0",

@@ -6,0 +6,0 @@ "sideEffects": false,

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display