@ai-sdk/gateway 2.0.99 → 2.0.101

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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @ai-sdk/gateway
2
2
 
3
+ ## 2.0.101
4
+
5
+ ### Patch Changes
6
+
7
+ - 3a5c051: fix(provider/gateway): map `forbidden` error responses to GatewayForbiddenError instead of GatewayInternalServerError
8
+
9
+ ## 2.0.100
10
+
11
+ ### Patch Changes
12
+
13
+ - 6a1d24c: Backport: chore(provider/gateway): update gateway model settings files
14
+
3
15
  ## 2.0.99
4
16
 
5
17
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -2,7 +2,7 @@ import { LanguageModelV2, ProviderV2, EmbeddingModelV2, ImageModelV2, TypeValida
2
2
  import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
3
3
  import { FetchFunction, InferValidator } from '@ai-sdk/provider-utils';
4
4
 
5
- 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' | '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-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-thinking-turbo' | 'moonshotai/kimi-k2-turbo' | 'moonshotai/kimi-k2.5' | 'moonshotai/kimi-k2.6' | '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' | '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-5v-turbo' | (string & {});
5
+ 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' | '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-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' | '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' | '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-5v-turbo' | (string & {});
6
6
 
7
7
  declare const KNOWN_MODEL_TYPES: readonly ["embedding", "image", "language"];
8
8
  type KnownModelType = (typeof KNOWN_MODEL_TYPES)[number];
@@ -535,9 +535,9 @@ declare const gatewayProviderOptions: _ai_sdk_provider_utils.LazyValidator<{
535
535
  }>;
536
536
  type GatewayProviderOptions = InferValidator<typeof gatewayProviderOptions>;
537
537
 
538
- declare const symbol$6: unique symbol;
538
+ declare const symbol$7: unique symbol;
539
539
  declare abstract class GatewayError extends Error {
540
- private readonly [symbol$6];
540
+ private readonly [symbol$7];
541
541
  abstract readonly name: string;
542
542
  abstract readonly type: string;
543
543
  readonly statusCode: number;
@@ -566,12 +566,12 @@ declare const gatewayErrorResponseSchema: _ai_sdk_provider_utils.LazyValidator<{
566
566
  }>;
567
567
  type GatewayErrorResponse = InferValidator<typeof gatewayErrorResponseSchema>;
568
568
 
569
- declare const symbol$5: unique symbol;
569
+ declare const symbol$6: unique symbol;
570
570
  /**
571
571
  * Authentication failed - invalid API key or OIDC token
572
572
  */
573
573
  declare class GatewayAuthenticationError extends GatewayError {
574
- private readonly [symbol$5];
574
+ private readonly [symbol$6];
575
575
  readonly name = "GatewayAuthenticationError";
576
576
  readonly type = "authentication_error";
577
577
  constructor({ message, statusCode, cause, }?: {
@@ -592,6 +592,23 @@ declare class GatewayAuthenticationError extends GatewayError {
592
592
  }): GatewayAuthenticationError;
593
593
  }
594
594
 
595
+ declare const symbol$5: unique symbol;
596
+ /**
597
+ * Forbidden - the request was rejected by policy (e.g. a routing rule),
598
+ * not an authentication failure.
599
+ */
600
+ declare class GatewayForbiddenError extends GatewayError {
601
+ private readonly [symbol$5];
602
+ readonly name = "GatewayForbiddenError";
603
+ readonly type = "forbidden";
604
+ constructor({ message, statusCode, cause, }?: {
605
+ message?: string;
606
+ statusCode?: number;
607
+ cause?: unknown;
608
+ });
609
+ static isInstance(error: unknown): error is GatewayForbiddenError;
610
+ }
611
+
595
612
  declare const symbol$4: unique symbol;
596
613
  /**
597
614
  * Internal server error from the Gateway
@@ -678,4 +695,4 @@ declare class GatewayResponseError extends GatewayError {
678
695
  static isInstance(error: unknown): error is GatewayResponseError;
679
696
  }
680
697
 
681
- export { GatewayAuthenticationError, type GatewayCreditsResponse, GatewayError, type GatewayErrorResponse, type GatewayGenerationInfo, type GatewayGenerationInfoParams, GatewayInternalServerError, GatewayInvalidRequestError, type GatewayLanguageModelEntry, type GatewayLanguageModelSpecification, type GatewayLanguageModelEntry as GatewayModelEntry, type GatewayModelId, GatewayModelNotFoundError, type GatewayProvider, type GatewayProviderOptions, type GatewayProviderSettings, GatewayRateLimitError, GatewayResponseError, type GatewaySpendReportParams, type GatewaySpendReportResponse, type GatewaySpendReportRow, createGatewayProvider as createGateway, createGatewayProvider, gateway };
698
+ export { GatewayAuthenticationError, type GatewayCreditsResponse, GatewayError, type GatewayErrorResponse, GatewayForbiddenError, type GatewayGenerationInfo, type GatewayGenerationInfoParams, GatewayInternalServerError, GatewayInvalidRequestError, type GatewayLanguageModelEntry, type GatewayLanguageModelSpecification, type GatewayLanguageModelEntry as GatewayModelEntry, type GatewayModelId, GatewayModelNotFoundError, type GatewayProvider, type GatewayProviderOptions, type GatewayProviderSettings, GatewayRateLimitError, GatewayResponseError, type GatewaySpendReportParams, type GatewaySpendReportResponse, type GatewaySpendReportRow, createGatewayProvider as createGateway, createGatewayProvider, gateway };
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import { LanguageModelV2, ProviderV2, EmbeddingModelV2, ImageModelV2, TypeValida
2
2
  import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
3
3
  import { FetchFunction, InferValidator } from '@ai-sdk/provider-utils';
4
4
 
5
- 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' | '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-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-thinking-turbo' | 'moonshotai/kimi-k2-turbo' | 'moonshotai/kimi-k2.5' | 'moonshotai/kimi-k2.6' | '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' | '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-5v-turbo' | (string & {});
5
+ 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' | '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-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' | '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' | '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-5v-turbo' | (string & {});
6
6
 
7
7
  declare const KNOWN_MODEL_TYPES: readonly ["embedding", "image", "language"];
8
8
  type KnownModelType = (typeof KNOWN_MODEL_TYPES)[number];
@@ -535,9 +535,9 @@ declare const gatewayProviderOptions: _ai_sdk_provider_utils.LazyValidator<{
535
535
  }>;
536
536
  type GatewayProviderOptions = InferValidator<typeof gatewayProviderOptions>;
537
537
 
538
- declare const symbol$6: unique symbol;
538
+ declare const symbol$7: unique symbol;
539
539
  declare abstract class GatewayError extends Error {
540
- private readonly [symbol$6];
540
+ private readonly [symbol$7];
541
541
  abstract readonly name: string;
542
542
  abstract readonly type: string;
543
543
  readonly statusCode: number;
@@ -566,12 +566,12 @@ declare const gatewayErrorResponseSchema: _ai_sdk_provider_utils.LazyValidator<{
566
566
  }>;
567
567
  type GatewayErrorResponse = InferValidator<typeof gatewayErrorResponseSchema>;
568
568
 
569
- declare const symbol$5: unique symbol;
569
+ declare const symbol$6: unique symbol;
570
570
  /**
571
571
  * Authentication failed - invalid API key or OIDC token
572
572
  */
573
573
  declare class GatewayAuthenticationError extends GatewayError {
574
- private readonly [symbol$5];
574
+ private readonly [symbol$6];
575
575
  readonly name = "GatewayAuthenticationError";
576
576
  readonly type = "authentication_error";
577
577
  constructor({ message, statusCode, cause, }?: {
@@ -592,6 +592,23 @@ declare class GatewayAuthenticationError extends GatewayError {
592
592
  }): GatewayAuthenticationError;
593
593
  }
594
594
 
595
+ declare const symbol$5: unique symbol;
596
+ /**
597
+ * Forbidden - the request was rejected by policy (e.g. a routing rule),
598
+ * not an authentication failure.
599
+ */
600
+ declare class GatewayForbiddenError extends GatewayError {
601
+ private readonly [symbol$5];
602
+ readonly name = "GatewayForbiddenError";
603
+ readonly type = "forbidden";
604
+ constructor({ message, statusCode, cause, }?: {
605
+ message?: string;
606
+ statusCode?: number;
607
+ cause?: unknown;
608
+ });
609
+ static isInstance(error: unknown): error is GatewayForbiddenError;
610
+ }
611
+
595
612
  declare const symbol$4: unique symbol;
596
613
  /**
597
614
  * Internal server error from the Gateway
@@ -678,4 +695,4 @@ declare class GatewayResponseError extends GatewayError {
678
695
  static isInstance(error: unknown): error is GatewayResponseError;
679
696
  }
680
697
 
681
- export { GatewayAuthenticationError, type GatewayCreditsResponse, GatewayError, type GatewayErrorResponse, type GatewayGenerationInfo, type GatewayGenerationInfoParams, GatewayInternalServerError, GatewayInvalidRequestError, type GatewayLanguageModelEntry, type GatewayLanguageModelSpecification, type GatewayLanguageModelEntry as GatewayModelEntry, type GatewayModelId, GatewayModelNotFoundError, type GatewayProvider, type GatewayProviderOptions, type GatewayProviderSettings, GatewayRateLimitError, GatewayResponseError, type GatewaySpendReportParams, type GatewaySpendReportResponse, type GatewaySpendReportRow, createGatewayProvider as createGateway, createGatewayProvider, gateway };
698
+ export { GatewayAuthenticationError, type GatewayCreditsResponse, GatewayError, type GatewayErrorResponse, GatewayForbiddenError, type GatewayGenerationInfo, type GatewayGenerationInfoParams, GatewayInternalServerError, GatewayInvalidRequestError, type GatewayLanguageModelEntry, type GatewayLanguageModelSpecification, type GatewayLanguageModelEntry as GatewayModelEntry, type GatewayModelId, GatewayModelNotFoundError, type GatewayProvider, type GatewayProviderOptions, type GatewayProviderSettings, GatewayRateLimitError, GatewayResponseError, type GatewaySpendReportParams, type GatewaySpendReportResponse, type GatewaySpendReportRow, createGatewayProvider as createGateway, createGatewayProvider, gateway };
package/dist/index.js CHANGED
@@ -4,8 +4,8 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
6
  var __export = (target, all) => {
7
- for (var name8 in all)
8
- __defProp(target, name8, { get: all[name8], enumerable: true });
7
+ for (var name9 in all)
8
+ __defProp(target, name9, { get: all[name9], enumerable: true });
9
9
  };
10
10
  var __copyProps = (to, from, except, desc) => {
11
11
  if (from && typeof from === "object" || typeof from === "function") {
@@ -22,6 +22,7 @@ var index_exports = {};
22
22
  __export(index_exports, {
23
23
  GatewayAuthenticationError: () => GatewayAuthenticationError,
24
24
  GatewayError: () => GatewayError,
25
+ GatewayForbiddenError: () => GatewayForbiddenError,
25
26
  GatewayInternalServerError: () => GatewayInternalServerError,
26
27
  GatewayInvalidRequestError: () => GatewayInvalidRequestError,
27
28
  GatewayModelNotFoundError: () => GatewayModelNotFoundError,
@@ -131,56 +132,78 @@ Run 'npx vercel link' to link your project, then 'vc env pull' to fetch the toke
131
132
  }
132
133
  };
133
134
 
134
- // src/errors/gateway-invalid-request-error.ts
135
- var name2 = "GatewayInvalidRequestError";
135
+ // src/errors/gateway-forbidden-error.ts
136
+ var name2 = "GatewayForbiddenError";
136
137
  var marker3 = `vercel.ai.gateway.error.${name2}`;
137
138
  var symbol3 = Symbol.for(marker3);
138
139
  var _a3, _b3;
139
- var GatewayInvalidRequestError = class extends (_b3 = GatewayError, _a3 = symbol3, _b3) {
140
+ var GatewayForbiddenError = class extends (_b3 = GatewayError, _a3 = symbol3, _b3) {
140
141
  constructor({
141
- message = "Invalid request",
142
- statusCode = 400,
142
+ message = "Forbidden",
143
+ statusCode = 403,
143
144
  cause
144
145
  } = {}) {
145
146
  super({ message, statusCode, cause });
146
147
  this[_a3] = true;
147
148
  // used in isInstance
148
149
  this.name = name2;
149
- this.type = "invalid_request_error";
150
+ this.type = "forbidden";
150
151
  }
151
152
  static isInstance(error) {
152
153
  return GatewayError.hasMarker(error) && symbol3 in error;
153
154
  }
154
155
  };
155
156
 
156
- // src/errors/gateway-rate-limit-error.ts
157
- var name3 = "GatewayRateLimitError";
157
+ // src/errors/gateway-invalid-request-error.ts
158
+ var name3 = "GatewayInvalidRequestError";
158
159
  var marker4 = `vercel.ai.gateway.error.${name3}`;
159
160
  var symbol4 = Symbol.for(marker4);
160
161
  var _a4, _b4;
161
- var GatewayRateLimitError = class extends (_b4 = GatewayError, _a4 = symbol4, _b4) {
162
+ var GatewayInvalidRequestError = class extends (_b4 = GatewayError, _a4 = symbol4, _b4) {
162
163
  constructor({
163
- message = "Rate limit exceeded",
164
- statusCode = 429,
164
+ message = "Invalid request",
165
+ statusCode = 400,
165
166
  cause
166
167
  } = {}) {
167
168
  super({ message, statusCode, cause });
168
169
  this[_a4] = true;
169
170
  // used in isInstance
170
171
  this.name = name3;
171
- this.type = "rate_limit_exceeded";
172
+ this.type = "invalid_request_error";
172
173
  }
173
174
  static isInstance(error) {
174
175
  return GatewayError.hasMarker(error) && symbol4 in error;
175
176
  }
176
177
  };
177
178
 
179
+ // src/errors/gateway-rate-limit-error.ts
180
+ var name4 = "GatewayRateLimitError";
181
+ var marker5 = `vercel.ai.gateway.error.${name4}`;
182
+ var symbol5 = Symbol.for(marker5);
183
+ var _a5, _b5;
184
+ var GatewayRateLimitError = class extends (_b5 = GatewayError, _a5 = symbol5, _b5) {
185
+ constructor({
186
+ message = "Rate limit exceeded",
187
+ statusCode = 429,
188
+ cause
189
+ } = {}) {
190
+ super({ message, statusCode, cause });
191
+ this[_a5] = true;
192
+ // used in isInstance
193
+ this.name = name4;
194
+ this.type = "rate_limit_exceeded";
195
+ }
196
+ static isInstance(error) {
197
+ return GatewayError.hasMarker(error) && symbol5 in error;
198
+ }
199
+ };
200
+
178
201
  // src/errors/gateway-model-not-found-error.ts
179
202
  var import_v4 = require("zod/v4");
180
203
  var import_provider_utils = require("@ai-sdk/provider-utils");
181
- var name4 = "GatewayModelNotFoundError";
182
- var marker5 = `vercel.ai.gateway.error.${name4}`;
183
- var symbol5 = Symbol.for(marker5);
204
+ var name5 = "GatewayModelNotFoundError";
205
+ var marker6 = `vercel.ai.gateway.error.${name5}`;
206
+ var symbol6 = Symbol.for(marker6);
184
207
  var modelNotFoundParamSchema = (0, import_provider_utils.lazyValidator)(
185
208
  () => (0, import_provider_utils.zodSchema)(
186
209
  import_v4.z.object({
@@ -188,8 +211,8 @@ var modelNotFoundParamSchema = (0, import_provider_utils.lazyValidator)(
188
211
  })
189
212
  )
190
213
  );
191
- var _a5, _b5;
192
- var GatewayModelNotFoundError = class extends (_b5 = GatewayError, _a5 = symbol5, _b5) {
214
+ var _a6, _b6;
215
+ var GatewayModelNotFoundError = class extends (_b6 = GatewayError, _a6 = symbol6, _b6) {
193
216
  constructor({
194
217
  message = "Model not found",
195
218
  statusCode = 404,
@@ -197,45 +220,45 @@ var GatewayModelNotFoundError = class extends (_b5 = GatewayError, _a5 = symbol5
197
220
  cause
198
221
  } = {}) {
199
222
  super({ message, statusCode, cause });
200
- this[_a5] = true;
223
+ this[_a6] = true;
201
224
  // used in isInstance
202
- this.name = name4;
225
+ this.name = name5;
203
226
  this.type = "model_not_found";
204
227
  this.modelId = modelId;
205
228
  }
206
229
  static isInstance(error) {
207
- return GatewayError.hasMarker(error) && symbol5 in error;
230
+ return GatewayError.hasMarker(error) && symbol6 in error;
208
231
  }
209
232
  };
210
233
 
211
234
  // src/errors/gateway-internal-server-error.ts
212
- var name5 = "GatewayInternalServerError";
213
- var marker6 = `vercel.ai.gateway.error.${name5}`;
214
- var symbol6 = Symbol.for(marker6);
215
- var _a6, _b6;
216
- var GatewayInternalServerError = class extends (_b6 = GatewayError, _a6 = symbol6, _b6) {
235
+ var name6 = "GatewayInternalServerError";
236
+ var marker7 = `vercel.ai.gateway.error.${name6}`;
237
+ var symbol7 = Symbol.for(marker7);
238
+ var _a7, _b7;
239
+ var GatewayInternalServerError = class extends (_b7 = GatewayError, _a7 = symbol7, _b7) {
217
240
  constructor({
218
241
  message = "Internal server error",
219
242
  statusCode = 500,
220
243
  cause
221
244
  } = {}) {
222
245
  super({ message, statusCode, cause });
223
- this[_a6] = true;
246
+ this[_a7] = true;
224
247
  // used in isInstance
225
- this.name = name5;
248
+ this.name = name6;
226
249
  this.type = "internal_server_error";
227
250
  }
228
251
  static isInstance(error) {
229
- return GatewayError.hasMarker(error) && symbol6 in error;
252
+ return GatewayError.hasMarker(error) && symbol7 in error;
230
253
  }
231
254
  };
232
255
 
233
256
  // src/errors/gateway-response-error.ts
234
- var name6 = "GatewayResponseError";
235
- var marker7 = `vercel.ai.gateway.error.${name6}`;
236
- var symbol7 = Symbol.for(marker7);
237
- var _a7, _b7;
238
- var GatewayResponseError = class extends (_b7 = GatewayError, _a7 = symbol7, _b7) {
257
+ var name7 = "GatewayResponseError";
258
+ var marker8 = `vercel.ai.gateway.error.${name7}`;
259
+ var symbol8 = Symbol.for(marker8);
260
+ var _a8, _b8;
261
+ var GatewayResponseError = class extends (_b8 = GatewayError, _a8 = symbol8, _b8) {
239
262
  constructor({
240
263
  message = "Invalid response from Gateway",
241
264
  statusCode = 502,
@@ -244,15 +267,15 @@ var GatewayResponseError = class extends (_b7 = GatewayError, _a7 = symbol7, _b7
244
267
  cause
245
268
  } = {}) {
246
269
  super({ message, statusCode, cause });
247
- this[_a7] = true;
270
+ this[_a8] = true;
248
271
  // used in isInstance
249
- this.name = name6;
272
+ this.name = name7;
250
273
  this.type = "response_error";
251
274
  this.response = response;
252
275
  this.validationError = validationError;
253
276
  }
254
277
  static isInstance(error) {
255
- return GatewayError.hasMarker(error) && symbol7 in error;
278
+ return GatewayError.hasMarker(error) && symbol8 in error;
256
279
  }
257
280
  };
258
281
 
@@ -307,6 +330,8 @@ async function createGatewayErrorFromResponse({
307
330
  }
308
331
  case "internal_server_error":
309
332
  return new GatewayInternalServerError({ message, statusCode, cause });
333
+ case "forbidden":
334
+ return new GatewayForbiddenError({ message, statusCode, cause });
310
335
  default:
311
336
  return new GatewayInternalServerError({ message, statusCode, cause });
312
337
  }
@@ -340,24 +365,24 @@ function extractApiCallResponse(error) {
340
365
  }
341
366
 
342
367
  // src/errors/gateway-timeout-error.ts
343
- var name7 = "GatewayTimeoutError";
344
- var marker8 = `vercel.ai.gateway.error.${name7}`;
345
- var symbol8 = Symbol.for(marker8);
346
- var _a8, _b8;
347
- var GatewayTimeoutError = class _GatewayTimeoutError extends (_b8 = GatewayError, _a8 = symbol8, _b8) {
368
+ var name8 = "GatewayTimeoutError";
369
+ var marker9 = `vercel.ai.gateway.error.${name8}`;
370
+ var symbol9 = Symbol.for(marker9);
371
+ var _a9, _b9;
372
+ var GatewayTimeoutError = class _GatewayTimeoutError extends (_b9 = GatewayError, _a9 = symbol9, _b9) {
348
373
  constructor({
349
374
  message = "Request timed out",
350
375
  statusCode = 408,
351
376
  cause
352
377
  } = {}) {
353
378
  super({ message, statusCode, cause });
354
- this[_a8] = true;
379
+ this[_a9] = true;
355
380
  // used in isInstance
356
- this.name = name7;
381
+ this.name = name8;
357
382
  this.type = "timeout_error";
358
383
  }
359
384
  static isInstance(error) {
360
- return GatewayError.hasMarker(error) && symbol8 in error;
385
+ return GatewayError.hasMarker(error) && symbol9 in error;
361
386
  }
362
387
  /**
363
388
  * Creates a helpful timeout error message with troubleshooting guidance
@@ -395,7 +420,7 @@ function isTimeoutError(error) {
395
420
  return false;
396
421
  }
397
422
  async function asGatewayError(error, authMethod) {
398
- var _a9;
423
+ var _a10;
399
424
  if (GatewayError.isInstance(error)) {
400
425
  return error;
401
426
  }
@@ -414,7 +439,7 @@ async function asGatewayError(error, authMethod) {
414
439
  }
415
440
  return await createGatewayErrorFromResponse({
416
441
  response: extractApiCallResponse(error),
417
- statusCode: (_a9 = error.statusCode) != null ? _a9 : 500,
442
+ statusCode: (_a10 = error.statusCode) != null ? _a10 : 500,
418
443
  defaultMessage: "Gateway request failed",
419
444
  cause: error,
420
445
  authMethod
@@ -902,7 +927,7 @@ var GatewayEmbeddingModel = class {
902
927
  abortSignal,
903
928
  providerOptions
904
929
  }) {
905
- var _a9;
930
+ var _a10;
906
931
  const resolvedHeaders = await (0, import_provider_utils8.resolve)(this.config.headers());
907
932
  try {
908
933
  const {
@@ -933,7 +958,7 @@ var GatewayEmbeddingModel = class {
933
958
  });
934
959
  return {
935
960
  embeddings: responseBody.embeddings,
936
- usage: (_a9 = responseBody.usage) != null ? _a9 : void 0,
961
+ usage: (_a10 = responseBody.usage) != null ? _a10 : void 0,
937
962
  providerMetadata: responseBody.providerMetadata,
938
963
  response: { headers: responseHeaders, body: rawValue }
939
964
  };
@@ -985,7 +1010,7 @@ var GatewayImageModel = class {
985
1010
  headers,
986
1011
  abortSignal
987
1012
  }) {
988
- var _a9, _b9, _c, _d;
1013
+ var _a10, _b10, _c, _d;
989
1014
  const resolvedHeaders = await (0, import_provider_utils9.resolve)(this.config.headers());
990
1015
  try {
991
1016
  const {
@@ -1021,7 +1046,7 @@ var GatewayImageModel = class {
1021
1046
  return {
1022
1047
  images: responseBody.images,
1023
1048
  // Always base64 strings from server
1024
- warnings: (_a9 = responseBody.warnings) != null ? _a9 : [],
1049
+ warnings: (_a10 = responseBody.warnings) != null ? _a10 : [],
1025
1050
  providerMetadata: responseBody.providerMetadata,
1026
1051
  response: {
1027
1052
  timestamp: /* @__PURE__ */ new Date(),
@@ -1030,7 +1055,7 @@ var GatewayImageModel = class {
1030
1055
  },
1031
1056
  ...responseBody.usage != null && {
1032
1057
  usage: {
1033
- inputTokens: (_b9 = responseBody.usage.inputTokens) != null ? _b9 : void 0,
1058
+ inputTokens: (_b10 = responseBody.usage.inputTokens) != null ? _b10 : void 0,
1034
1059
  outputTokens: (_c = responseBody.usage.outputTokens) != null ? _c : void 0,
1035
1060
  totalTokens: (_d = responseBody.usage.totalTokens) != null ? _d : void 0
1036
1061
  }
@@ -1259,22 +1284,22 @@ var gatewayTools = {
1259
1284
  var import_oidc = require("@vercel/oidc");
1260
1285
  var import_oidc2 = require("@vercel/oidc");
1261
1286
  async function getVercelRequestId() {
1262
- var _a9;
1263
- return (_a9 = (0, import_oidc.getContext)().headers) == null ? void 0 : _a9["x-vercel-id"];
1287
+ var _a10;
1288
+ return (_a10 = (0, import_oidc.getContext)().headers) == null ? void 0 : _a10["x-vercel-id"];
1264
1289
  }
1265
1290
 
1266
1291
  // src/version.ts
1267
- var VERSION = true ? "2.0.99" : "0.0.0-test";
1292
+ var VERSION = true ? "2.0.101" : "0.0.0-test";
1268
1293
 
1269
1294
  // src/gateway-provider.ts
1270
1295
  var AI_GATEWAY_PROTOCOL_VERSION = "0.0.1";
1271
1296
  function createGatewayProvider(options = {}) {
1272
- var _a9, _b9;
1297
+ var _a10, _b10;
1273
1298
  let pendingMetadata = null;
1274
1299
  let metadataCache = null;
1275
- const cacheRefreshMillis = (_a9 = options.metadataCacheRefreshMillis) != null ? _a9 : 1e3 * 60 * 5;
1300
+ const cacheRefreshMillis = (_a10 = options.metadataCacheRefreshMillis) != null ? _a10 : 1e3 * 60 * 5;
1276
1301
  let lastFetchTime = 0;
1277
- const baseURL = (_b9 = (0, import_provider_utils12.withoutTrailingSlash)(options.baseURL)) != null ? _b9 : "https://ai-gateway.vercel.sh/v1/ai";
1302
+ const baseURL = (_b10 = (0, import_provider_utils12.withoutTrailingSlash)(options.baseURL)) != null ? _b10 : "https://ai-gateway.vercel.sh/v1/ai";
1278
1303
  const getHeaders = async () => {
1279
1304
  const auth = await getGatewayAuthToken(options);
1280
1305
  if (auth) {
@@ -1332,8 +1357,8 @@ function createGatewayProvider(options = {}) {
1332
1357
  });
1333
1358
  };
1334
1359
  const getAvailableModels = async () => {
1335
- var _a10, _b10, _c;
1336
- const now = (_c = (_b10 = (_a10 = options._internal) == null ? void 0 : _a10.currentDate) == null ? void 0 : _b10.call(_a10).getTime()) != null ? _c : Date.now();
1360
+ var _a11, _b11, _c;
1361
+ const now = (_c = (_b11 = (_a11 = options._internal) == null ? void 0 : _a11.currentDate) == null ? void 0 : _b11.call(_a11).getTime()) != null ? _c : Date.now();
1337
1362
  if (!pendingMetadata || now - lastFetchTime > cacheRefreshMillis) {
1338
1363
  lastFetchTime = now;
1339
1364
  pendingMetadata = new GatewayFetchMetadata({
@@ -1448,6 +1473,7 @@ async function getGatewayAuthToken(options) {
1448
1473
  0 && (module.exports = {
1449
1474
  GatewayAuthenticationError,
1450
1475
  GatewayError,
1476
+ GatewayForbiddenError,
1451
1477
  GatewayInternalServerError,
1452
1478
  GatewayInvalidRequestError,
1453
1479
  GatewayModelNotFoundError,