@ai-sdk/gateway 1.0.0-beta.9 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,222 @@
1
1
  # @ai-sdk/gateway
2
2
 
3
+ ## 1.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 028fb9c: refactor(provider/gateway): Cleanup old gateway-embedding-options file
8
+ - 6331826: feat(provider/gateway): Hide Cohere embedding models with no pricing info
9
+ - Updated dependencies [90d212f]
10
+ - @ai-sdk/provider-utils@3.0.1
11
+
12
+ ## 1.0.0
13
+
14
+ ### Patch Changes
15
+
16
+ - 9e16bfd: feat (provider/gateway): update model ids
17
+ - 0477a13: feat (provider/gateway): Add OpenAI embedding support
18
+ - 26b6dd0: feat (providers/gateway): include deployment and request id
19
+ - 30ab1de: feat (provider/gateway): add grok-4 model id
20
+ - e2aceaf: feat: add raw chunk support
21
+ - 97fedf9: feat (providers/gateway): include description and pricing info in model list
22
+ - c91586a: chore (providers/gateway): update language model ids
23
+ - 3cbcbb7: feat (providers/gateway): share common gateway error transform logic
24
+ - fedb55e: feat (provider/gateway): add z.ai and glm-4.5 models
25
+ - 6c2c708: feat (providers/gateway): initial gateway provider
26
+ - 721775e: feat(provider/gateway): Generate new Gateway embedding model settings file
27
+ - 70ebead: feat (provider/gateway): add qwen3 coder model id
28
+ - f3639fa: feat (providers/gateway): improve oidc api key client auth flow
29
+ - 8bd3624: feat (provider/gateway): update model ids to include vercel
30
+ - c145d62: feat (providers/gateway): add createGateway shorthand alias for createGatewayProvider
31
+ - f77bc38: chore (providers/gateway): update language model ids
32
+ - 989ac75: chore (providers/gateway): update chat model ids
33
+ - 7742ba3: feat (providers/gateway): add gateway error types with error detail
34
+ - c190907: fix (provider/gateway): use zod v4
35
+ - d1a034f: feature: using Zod 4 for internal stuff
36
+ - d454e4b: fix (providers/gateway): fix timestamp error when streaming objects
37
+ - cf1e00e: feat (provider/gateway): add devstral model id
38
+ - cc21603: feat (provider/gateway): Add AI Gateway provider options (ordering)
39
+ - 205077b: fix: improve Zod compatibility
40
+ - e001ea1: fix (provider/gateway): remove unnecessary 'x-' prefix on auth method header
41
+ - 27deb4d: feat (provider/gateway): Add providerMetadata to embeddings response
42
+ - Updated dependencies [a571d6e]
43
+ - Updated dependencies [742b7be]
44
+ - Updated dependencies [e7fcc86]
45
+ - Updated dependencies [7cddb72]
46
+ - Updated dependencies [ccce59b]
47
+ - Updated dependencies [e2b9e4b]
48
+ - Updated dependencies [95857aa]
49
+ - Updated dependencies [45c1ea2]
50
+ - Updated dependencies [6f6bb89]
51
+ - Updated dependencies [060370c]
52
+ - Updated dependencies [dc714f3]
53
+ - Updated dependencies [b5da06a]
54
+ - Updated dependencies [d1a1aa1]
55
+ - Updated dependencies [63f9e9b]
56
+ - Updated dependencies [5d142ab]
57
+ - Updated dependencies [d5f588f]
58
+ - Updated dependencies [e025824]
59
+ - Updated dependencies [0571b98]
60
+ - Updated dependencies [b6b43c7]
61
+ - Updated dependencies [4fef487]
62
+ - Updated dependencies [48d257a]
63
+ - Updated dependencies [0c0c0b3]
64
+ - Updated dependencies [0d2c085]
65
+ - Updated dependencies [40acf9b]
66
+ - Updated dependencies [9222aeb]
67
+ - Updated dependencies [e2aceaf]
68
+ - Updated dependencies [411e483]
69
+ - Updated dependencies [8ba77a7]
70
+ - Updated dependencies [7b3ae3f]
71
+ - Updated dependencies [a166433]
72
+ - Updated dependencies [26735b5]
73
+ - Updated dependencies [443d8ec]
74
+ - Updated dependencies [a8c8bd5]
75
+ - Updated dependencies [abf9a79]
76
+ - Updated dependencies [14c9410]
77
+ - Updated dependencies [e86be6f]
78
+ - Updated dependencies [9bf7291]
79
+ - Updated dependencies [2e13791]
80
+ - Updated dependencies [9f95b35]
81
+ - Updated dependencies [66962ed]
82
+ - Updated dependencies [0d06df6]
83
+ - Updated dependencies [472524a]
84
+ - Updated dependencies [dd3ff01]
85
+ - Updated dependencies [d9c98f4]
86
+ - Updated dependencies [05d2819]
87
+ - Updated dependencies [9301f86]
88
+ - Updated dependencies [0a87932]
89
+ - Updated dependencies [c4a2fec]
90
+ - Updated dependencies [957b739]
91
+ - Updated dependencies [79457bd]
92
+ - Updated dependencies [a3f768e]
93
+ - Updated dependencies [7435eb5]
94
+ - Updated dependencies [8aa9e20]
95
+ - Updated dependencies [4617fab]
96
+ - Updated dependencies [ac34802]
97
+ - Updated dependencies [0054544]
98
+ - Updated dependencies [cb68df0]
99
+ - Updated dependencies [ad80501]
100
+ - Updated dependencies [68ecf2f]
101
+ - Updated dependencies [9e9c809]
102
+ - Updated dependencies [32831c6]
103
+ - Updated dependencies [6dc848c]
104
+ - Updated dependencies [6b98118]
105
+ - Updated dependencies [d0f9495]
106
+ - Updated dependencies [63d791d]
107
+ - Updated dependencies [87b828f]
108
+ - Updated dependencies [3f2f00c]
109
+ - Updated dependencies [bfdca8d]
110
+ - Updated dependencies [0ff02bb]
111
+ - Updated dependencies [7979f7f]
112
+ - Updated dependencies [39a4fab]
113
+ - Updated dependencies [44f4aba]
114
+ - Updated dependencies [9bd5ab5]
115
+ - Updated dependencies [57edfcb]
116
+ - Updated dependencies [faf8446]
117
+ - Updated dependencies [7ea4132]
118
+ - Updated dependencies [d1a034f]
119
+ - Updated dependencies [5c56081]
120
+ - Updated dependencies [fd65bc6]
121
+ - Updated dependencies [023ba40]
122
+ - Updated dependencies [ea7a7c9]
123
+ - Updated dependencies [26535e0]
124
+ - Updated dependencies [e030615]
125
+ - Updated dependencies [5e57fae]
126
+ - Updated dependencies [393138b]
127
+ - Updated dependencies [c57e248]
128
+ - Updated dependencies [88a8ee5]
129
+ - Updated dependencies [41fa418]
130
+ - Updated dependencies [205077b]
131
+ - Updated dependencies [71f938d]
132
+ - Updated dependencies [3795467]
133
+ - Updated dependencies [28a5ed5]
134
+ - Updated dependencies [7182d14]
135
+ - Updated dependencies [c1e6647]
136
+ - Updated dependencies [1766ede]
137
+ - Updated dependencies [811dff3]
138
+ - Updated dependencies [f10304b]
139
+ - Updated dependencies [dd5fd43]
140
+ - Updated dependencies [33f4a6a]
141
+ - Updated dependencies [383cbfa]
142
+ - Updated dependencies [27deb4d]
143
+ - Updated dependencies [c4df419]
144
+ - @ai-sdk/provider-utils@3.0.0
145
+ - @ai-sdk/provider@2.0.0
146
+
147
+ ## 1.0.0-beta.19
148
+
149
+ ### Patch Changes
150
+
151
+ - 721775e: feat(provider/gateway): Generate new Gateway embedding model settings file
152
+ - Updated dependencies [88a8ee5]
153
+ - @ai-sdk/provider-utils@3.0.0-beta.10
154
+
155
+ ## 1.0.0-beta.18
156
+
157
+ ### Patch Changes
158
+
159
+ - 27deb4d: feat (provider/gateway): Add providerMetadata to embeddings response
160
+ - Updated dependencies [27deb4d]
161
+ - @ai-sdk/provider@2.0.0-beta.2
162
+ - @ai-sdk/provider-utils@3.0.0-beta.9
163
+
164
+ ## 1.0.0-beta.17
165
+
166
+ ### Patch Changes
167
+
168
+ - Updated dependencies [dd5fd43]
169
+ - @ai-sdk/provider-utils@3.0.0-beta.8
170
+
171
+ ## 1.0.0-beta.16
172
+
173
+ ### Patch Changes
174
+
175
+ - fedb55e: feat (provider/gateway): add z.ai and glm-4.5 models
176
+
177
+ ## 1.0.0-beta.15
178
+
179
+ ### Patch Changes
180
+
181
+ - Updated dependencies [e7fcc86]
182
+ - @ai-sdk/provider-utils@3.0.0-beta.7
183
+
184
+ ## 1.0.0-beta.14
185
+
186
+ ### Patch Changes
187
+
188
+ - Updated dependencies [ac34802]
189
+ - @ai-sdk/provider-utils@3.0.0-beta.6
190
+
191
+ ## 1.0.0-beta.13
192
+
193
+ ### Patch Changes
194
+
195
+ - 0477a13: feat (provider/gateway): Add OpenAI embedding support
196
+ - cf1e00e: feat (provider/gateway): add devstral model id
197
+ - cc21603: feat (provider/gateway): Add AI Gateway provider options (ordering)
198
+
199
+ ## 1.0.0-beta.12
200
+
201
+ ### Patch Changes
202
+
203
+ - 70ebead: feat (provider/gateway): add qwen3 coder model id
204
+
205
+ ## 1.0.0-beta.11
206
+
207
+ ### Patch Changes
208
+
209
+ - 8bd3624: feat (provider/gateway): update model ids to include vercel
210
+ - e001ea1: fix (provider/gateway): remove unnecessary 'x-' prefix on auth method header
211
+
212
+ ## 1.0.0-beta.10
213
+
214
+ ### Patch Changes
215
+
216
+ - Updated dependencies [57edfcb]
217
+ - Updated dependencies [383cbfa]
218
+ - @ai-sdk/provider-utils@3.0.0-beta.5
219
+
3
220
  ## 1.0.0-beta.9
4
221
 
5
222
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1,8 +1,8 @@
1
- import { LanguageModelV2, ProviderV2 } from '@ai-sdk/provider';
1
+ import { LanguageModelV2, ProviderV2, EmbeddingModelV2 } from '@ai-sdk/provider';
2
2
  import { FetchFunction } from '@ai-sdk/provider-utils';
3
3
  import { z, ZodError } from 'zod/v4';
4
4
 
5
- type GatewayModelId = 'alibaba/qwen-3-14b' | 'alibaba/qwen-3-235b' | 'alibaba/qwen-3-30b' | 'alibaba/qwen-3-32b' | 'amazon/nova-lite' | 'amazon/nova-micro' | 'amazon/nova-pro' | 'anthropic/claude-3-haiku' | 'anthropic/claude-3-opus' | 'anthropic/claude-3.5-haiku' | 'anthropic/claude-3.5-sonnet' | 'anthropic/claude-3.7-sonnet' | 'anthropic/claude-4-opus' | 'anthropic/claude-4-sonnet' | 'cohere/command-a' | 'cohere/command-r' | 'cohere/command-r-plus' | 'deepseek/deepseek-r1' | 'deepseek/deepseek-r1-distill-llama-70b' | 'deepseek/deepseek-v3' | 'google/gemini-2.0-flash' | 'google/gemini-2.0-flash-lite' | 'google/gemini-2.5-flash' | 'google/gemini-2.5-pro' | 'google/gemma-2-9b' | 'inception/mercury-coder-small' | 'meta/llama-3-70b' | 'meta/llama-3-8b' | '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' | 'mistral/codestral' | 'mistral/magistral-medium' | 'mistral/magistral-small' | 'mistral/ministral-3b' | 'mistral/ministral-8b' | 'mistral/mistral-large' | 'mistral/mistral-saba-24b' | 'mistral/mistral-small' | 'mistral/mixtral-8x22b-instruct' | 'mistral/pixtral-12b' | 'mistral/pixtral-large' | 'moonshotai/kimi-k2' | 'morph/morph-v3-fast' | 'morph/morph-v3-large' | '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/o1' | 'openai/o3' | 'openai/o3-mini' | 'openai/o4-mini' | 'perplexity/sonar' | 'perplexity/sonar-pro' | 'perplexity/sonar-reasoning' | 'perplexity/sonar-reasoning-pro' | 'xai/grok-2' | 'xai/grok-2-vision' | 'xai/grok-3' | 'xai/grok-3-fast' | 'xai/grok-3-mini' | 'xai/grok-3-mini-fast' | 'xai/grok-4' | (string & {});
5
+ type GatewayModelId = 'alibaba/qwen-3-14b' | 'alibaba/qwen-3-235b' | 'alibaba/qwen-3-30b' | 'alibaba/qwen-3-32b' | 'alibaba/qwen3-coder' | 'amazon/nova-lite' | 'amazon/nova-micro' | 'amazon/nova-pro' | 'anthropic/claude-3-haiku' | 'anthropic/claude-3-opus' | 'anthropic/claude-3.5-haiku' | 'anthropic/claude-3.5-sonnet' | 'anthropic/claude-3.7-sonnet' | 'anthropic/claude-4-opus' | 'anthropic/claude-4-sonnet' | 'cohere/command-a' | 'cohere/command-r' | 'cohere/command-r-plus' | 'deepseek/deepseek-r1' | 'deepseek/deepseek-r1-distill-llama-70b' | 'deepseek/deepseek-v3' | 'google/gemini-2.0-flash' | 'google/gemini-2.0-flash-lite' | 'google/gemini-2.5-flash' | 'google/gemini-2.5-pro' | 'google/gemma-2-9b' | 'inception/mercury-coder-small' | 'meta/llama-3-70b' | 'meta/llama-3-8b' | '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' | 'mistral/codestral' | 'mistral/devstral-small' | 'mistral/magistral-medium' | 'mistral/magistral-small' | 'mistral/ministral-3b' | 'mistral/ministral-8b' | 'mistral/mistral-large' | 'mistral/mistral-saba-24b' | 'mistral/mistral-small' | 'mistral/mixtral-8x22b-instruct' | 'mistral/pixtral-12b' | 'mistral/pixtral-large' | 'moonshotai/kimi-k2' | 'morph/morph-v3-fast' | 'morph/morph-v3-large' | '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/o1' | 'openai/o3' | 'openai/o3-mini' | 'openai/o4-mini' | 'perplexity/sonar' | 'perplexity/sonar-pro' | 'perplexity/sonar-reasoning' | 'perplexity/sonar-reasoning-pro' | 'vercel/v0-1.0-md' | 'vercel/v0-1.5-md' | 'xai/grok-2' | 'xai/grok-2-vision' | 'xai/grok-3' | 'xai/grok-3-fast' | 'xai/grok-3-mini' | 'xai/grok-3-mini-fast' | 'xai/grok-4' | 'zai/glm-4.5' | 'zai/glm-4.5-air' | (string & {});
6
6
 
7
7
  interface GatewayLanguageModelEntry {
8
8
  /**
@@ -42,6 +42,8 @@ interface GatewayFetchMetadataResponse {
42
42
  models: GatewayLanguageModelEntry[];
43
43
  }
44
44
 
45
+ type GatewayEmbeddingModelId = 'amazon/titan-embed-text-v2' | 'cohere/embed-v4.0' | 'google/gemini-embedding-001' | 'google/text-embedding-005' | 'google/text-multilingual-embedding-002' | 'mistral/codestral-embed' | 'mistral/mistral-embed' | 'openai/text-embedding-3-large' | 'openai/text-embedding-3-small' | 'openai/text-embedding-ada-002' | (string & {});
46
+
45
47
  interface GatewayProvider extends ProviderV2 {
46
48
  (modelId: GatewayModelId): LanguageModelV2;
47
49
  /**
@@ -52,6 +54,10 @@ interface GatewayProvider extends ProviderV2 {
52
54
  Returns available providers and models for use with the remote provider.
53
55
  */
54
56
  getAvailableModels(): Promise<GatewayFetchMetadataResponse>;
57
+ /**
58
+ Creates a model for generating text embeddings.
59
+ */
60
+ textEmbeddingModel(modelId: GatewayEmbeddingModelId): EmbeddingModelV2<string>;
55
61
  }
56
62
  interface GatewayProviderSettings {
57
63
  /**
@@ -82,6 +88,11 @@ Create a remote provider instance.
82
88
  declare function createGatewayProvider(options?: GatewayProviderSettings): GatewayProvider;
83
89
  declare const gateway: GatewayProvider;
84
90
 
91
+ declare const gatewayProviderOptions: z.ZodObject<{
92
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
93
+ }, z.core.$strip>;
94
+ type GatewayProviderOptions = z.infer<typeof gatewayProviderOptions>;
95
+
85
96
  declare const symbol$6: unique symbol;
86
97
  declare abstract class GatewayError extends Error {
87
98
  private readonly [symbol$6];
@@ -225,4 +236,4 @@ declare class GatewayResponseError extends GatewayError {
225
236
  static isInstance(error: unknown): error is GatewayResponseError;
226
237
  }
227
238
 
228
- export { GatewayAuthenticationError, GatewayError, type GatewayErrorResponse, GatewayInternalServerError, GatewayInvalidRequestError, type GatewayLanguageModelEntry, type GatewayLanguageModelSpecification, type GatewayModelId, GatewayModelNotFoundError, type GatewayProvider, type GatewayProviderSettings, GatewayRateLimitError, GatewayResponseError, createGatewayProvider as createGateway, createGatewayProvider, gateway };
239
+ export { GatewayAuthenticationError, GatewayError, type GatewayErrorResponse, GatewayInternalServerError, GatewayInvalidRequestError, type GatewayLanguageModelEntry, type GatewayLanguageModelSpecification, type GatewayModelId, GatewayModelNotFoundError, type GatewayProvider, type GatewayProviderOptions, type GatewayProviderSettings, GatewayRateLimitError, GatewayResponseError, createGatewayProvider as createGateway, createGatewayProvider, gateway };
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { LanguageModelV2, ProviderV2 } from '@ai-sdk/provider';
1
+ import { LanguageModelV2, ProviderV2, EmbeddingModelV2 } from '@ai-sdk/provider';
2
2
  import { FetchFunction } from '@ai-sdk/provider-utils';
3
3
  import { z, ZodError } from 'zod/v4';
4
4
 
5
- type GatewayModelId = 'alibaba/qwen-3-14b' | 'alibaba/qwen-3-235b' | 'alibaba/qwen-3-30b' | 'alibaba/qwen-3-32b' | 'amazon/nova-lite' | 'amazon/nova-micro' | 'amazon/nova-pro' | 'anthropic/claude-3-haiku' | 'anthropic/claude-3-opus' | 'anthropic/claude-3.5-haiku' | 'anthropic/claude-3.5-sonnet' | 'anthropic/claude-3.7-sonnet' | 'anthropic/claude-4-opus' | 'anthropic/claude-4-sonnet' | 'cohere/command-a' | 'cohere/command-r' | 'cohere/command-r-plus' | 'deepseek/deepseek-r1' | 'deepseek/deepseek-r1-distill-llama-70b' | 'deepseek/deepseek-v3' | 'google/gemini-2.0-flash' | 'google/gemini-2.0-flash-lite' | 'google/gemini-2.5-flash' | 'google/gemini-2.5-pro' | 'google/gemma-2-9b' | 'inception/mercury-coder-small' | 'meta/llama-3-70b' | 'meta/llama-3-8b' | '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' | 'mistral/codestral' | 'mistral/magistral-medium' | 'mistral/magistral-small' | 'mistral/ministral-3b' | 'mistral/ministral-8b' | 'mistral/mistral-large' | 'mistral/mistral-saba-24b' | 'mistral/mistral-small' | 'mistral/mixtral-8x22b-instruct' | 'mistral/pixtral-12b' | 'mistral/pixtral-large' | 'moonshotai/kimi-k2' | 'morph/morph-v3-fast' | 'morph/morph-v3-large' | '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/o1' | 'openai/o3' | 'openai/o3-mini' | 'openai/o4-mini' | 'perplexity/sonar' | 'perplexity/sonar-pro' | 'perplexity/sonar-reasoning' | 'perplexity/sonar-reasoning-pro' | 'xai/grok-2' | 'xai/grok-2-vision' | 'xai/grok-3' | 'xai/grok-3-fast' | 'xai/grok-3-mini' | 'xai/grok-3-mini-fast' | 'xai/grok-4' | (string & {});
5
+ type GatewayModelId = 'alibaba/qwen-3-14b' | 'alibaba/qwen-3-235b' | 'alibaba/qwen-3-30b' | 'alibaba/qwen-3-32b' | 'alibaba/qwen3-coder' | 'amazon/nova-lite' | 'amazon/nova-micro' | 'amazon/nova-pro' | 'anthropic/claude-3-haiku' | 'anthropic/claude-3-opus' | 'anthropic/claude-3.5-haiku' | 'anthropic/claude-3.5-sonnet' | 'anthropic/claude-3.7-sonnet' | 'anthropic/claude-4-opus' | 'anthropic/claude-4-sonnet' | 'cohere/command-a' | 'cohere/command-r' | 'cohere/command-r-plus' | 'deepseek/deepseek-r1' | 'deepseek/deepseek-r1-distill-llama-70b' | 'deepseek/deepseek-v3' | 'google/gemini-2.0-flash' | 'google/gemini-2.0-flash-lite' | 'google/gemini-2.5-flash' | 'google/gemini-2.5-pro' | 'google/gemma-2-9b' | 'inception/mercury-coder-small' | 'meta/llama-3-70b' | 'meta/llama-3-8b' | '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' | 'mistral/codestral' | 'mistral/devstral-small' | 'mistral/magistral-medium' | 'mistral/magistral-small' | 'mistral/ministral-3b' | 'mistral/ministral-8b' | 'mistral/mistral-large' | 'mistral/mistral-saba-24b' | 'mistral/mistral-small' | 'mistral/mixtral-8x22b-instruct' | 'mistral/pixtral-12b' | 'mistral/pixtral-large' | 'moonshotai/kimi-k2' | 'morph/morph-v3-fast' | 'morph/morph-v3-large' | '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/o1' | 'openai/o3' | 'openai/o3-mini' | 'openai/o4-mini' | 'perplexity/sonar' | 'perplexity/sonar-pro' | 'perplexity/sonar-reasoning' | 'perplexity/sonar-reasoning-pro' | 'vercel/v0-1.0-md' | 'vercel/v0-1.5-md' | 'xai/grok-2' | 'xai/grok-2-vision' | 'xai/grok-3' | 'xai/grok-3-fast' | 'xai/grok-3-mini' | 'xai/grok-3-mini-fast' | 'xai/grok-4' | 'zai/glm-4.5' | 'zai/glm-4.5-air' | (string & {});
6
6
 
7
7
  interface GatewayLanguageModelEntry {
8
8
  /**
@@ -42,6 +42,8 @@ interface GatewayFetchMetadataResponse {
42
42
  models: GatewayLanguageModelEntry[];
43
43
  }
44
44
 
45
+ type GatewayEmbeddingModelId = 'amazon/titan-embed-text-v2' | 'cohere/embed-v4.0' | 'google/gemini-embedding-001' | 'google/text-embedding-005' | 'google/text-multilingual-embedding-002' | 'mistral/codestral-embed' | 'mistral/mistral-embed' | 'openai/text-embedding-3-large' | 'openai/text-embedding-3-small' | 'openai/text-embedding-ada-002' | (string & {});
46
+
45
47
  interface GatewayProvider extends ProviderV2 {
46
48
  (modelId: GatewayModelId): LanguageModelV2;
47
49
  /**
@@ -52,6 +54,10 @@ interface GatewayProvider extends ProviderV2 {
52
54
  Returns available providers and models for use with the remote provider.
53
55
  */
54
56
  getAvailableModels(): Promise<GatewayFetchMetadataResponse>;
57
+ /**
58
+ Creates a model for generating text embeddings.
59
+ */
60
+ textEmbeddingModel(modelId: GatewayEmbeddingModelId): EmbeddingModelV2<string>;
55
61
  }
56
62
  interface GatewayProviderSettings {
57
63
  /**
@@ -82,6 +88,11 @@ Create a remote provider instance.
82
88
  declare function createGatewayProvider(options?: GatewayProviderSettings): GatewayProvider;
83
89
  declare const gateway: GatewayProvider;
84
90
 
91
+ declare const gatewayProviderOptions: z.ZodObject<{
92
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
93
+ }, z.core.$strip>;
94
+ type GatewayProviderOptions = z.infer<typeof gatewayProviderOptions>;
95
+
85
96
  declare const symbol$6: unique symbol;
86
97
  declare abstract class GatewayError extends Error {
87
98
  private readonly [symbol$6];
@@ -225,4 +236,4 @@ declare class GatewayResponseError extends GatewayError {
225
236
  static isInstance(error: unknown): error is GatewayResponseError;
226
237
  }
227
238
 
228
- export { GatewayAuthenticationError, GatewayError, type GatewayErrorResponse, GatewayInternalServerError, GatewayInvalidRequestError, type GatewayLanguageModelEntry, type GatewayLanguageModelSpecification, type GatewayModelId, GatewayModelNotFoundError, type GatewayProvider, type GatewayProviderSettings, GatewayRateLimitError, GatewayResponseError, createGatewayProvider as createGateway, createGatewayProvider, gateway };
239
+ export { GatewayAuthenticationError, GatewayError, type GatewayErrorResponse, GatewayInternalServerError, GatewayInvalidRequestError, type GatewayLanguageModelEntry, type GatewayLanguageModelSpecification, type GatewayModelId, GatewayModelNotFoundError, type GatewayProvider, type GatewayProviderOptions, type GatewayProviderSettings, GatewayRateLimitError, GatewayResponseError, createGatewayProvider as createGateway, createGatewayProvider, gateway };
package/dist/index.js CHANGED
@@ -35,7 +35,7 @@ module.exports = __toCommonJS(src_exports);
35
35
 
36
36
  // src/gateway-provider.ts
37
37
  var import_provider2 = require("@ai-sdk/provider");
38
- var import_provider_utils3 = require("@ai-sdk/provider-utils");
38
+ var import_provider_utils4 = require("@ai-sdk/provider-utils");
39
39
 
40
40
  // src/errors/as-gateway-error.ts
41
41
  var import_provider = require("@ai-sdk/provider");
@@ -361,7 +361,7 @@ function extractApiCallResponse(error) {
361
361
 
362
362
  // src/errors/parse-auth-method.ts
363
363
  var import_v43 = require("zod/v4");
364
- var GATEWAY_AUTH_METHOD_HEADER = "x-ai-gateway-auth-method";
364
+ var GATEWAY_AUTH_METHOD_HEADER = "ai-gateway-auth-method";
365
365
  function parseAuthMethod(headers) {
366
366
  const result = gatewayAuthMethodSchema.safeParse(
367
367
  headers[GATEWAY_AUTH_METHOD_HEADER]
@@ -433,8 +433,16 @@ var GatewayLanguageModel = class {
433
433
  get provider() {
434
434
  return this.config.provider;
435
435
  }
436
+ async getArgs(options) {
437
+ const { abortSignal: _abortSignal, ...optionsWithoutSignal } = options;
438
+ return {
439
+ args: this.maybeEncodeFileParts(optionsWithoutSignal),
440
+ warnings: []
441
+ };
442
+ }
436
443
  async doGenerate(options) {
437
- const { abortSignal, ...body } = options;
444
+ const { args, warnings } = await this.getArgs(options);
445
+ const { abortSignal } = options;
438
446
  const resolvedHeaders = await (0, import_provider_utils2.resolve)(this.config.headers());
439
447
  try {
440
448
  const {
@@ -449,7 +457,7 @@ var GatewayLanguageModel = class {
449
457
  this.getModelConfigHeaders(this.modelId, false),
450
458
  await (0, import_provider_utils2.resolve)(this.config.o11yHeaders)
451
459
  ),
452
- body: this.maybeEncodeFileParts(body),
460
+ body: args,
453
461
  successfulResponseHandler: (0, import_provider_utils2.createJsonResponseHandler)(import_v45.z.any()),
454
462
  failedResponseHandler: (0, import_provider_utils2.createJsonErrorResponseHandler)({
455
463
  errorSchema: import_v45.z.any(),
@@ -460,16 +468,17 @@ var GatewayLanguageModel = class {
460
468
  });
461
469
  return {
462
470
  ...responseBody,
463
- request: { body },
471
+ request: { body: args },
464
472
  response: { headers: responseHeaders, body: rawResponse },
465
- warnings: []
473
+ warnings
466
474
  };
467
475
  } catch (error) {
468
476
  throw asGatewayError(error, parseAuthMethod(resolvedHeaders));
469
477
  }
470
478
  }
471
479
  async doStream(options) {
472
- const { abortSignal, ...body } = options;
480
+ const { args, warnings } = await this.getArgs(options);
481
+ const { abortSignal } = options;
473
482
  const resolvedHeaders = await (0, import_provider_utils2.resolve)(this.config.headers());
474
483
  try {
475
484
  const { value: response, responseHeaders } = await (0, import_provider_utils2.postJsonToApi)({
@@ -480,7 +489,7 @@ var GatewayLanguageModel = class {
480
489
  this.getModelConfigHeaders(this.modelId, true),
481
490
  await (0, import_provider_utils2.resolve)(this.config.o11yHeaders)
482
491
  ),
483
- body: this.maybeEncodeFileParts(body),
492
+ body: args,
484
493
  successfulResponseHandler: (0, import_provider_utils2.createEventSourceResponseHandler)(import_v45.z.any()),
485
494
  failedResponseHandler: (0, import_provider_utils2.createJsonErrorResponseHandler)({
486
495
  errorSchema: import_v45.z.any(),
@@ -492,6 +501,11 @@ var GatewayLanguageModel = class {
492
501
  return {
493
502
  stream: response.pipeThrough(
494
503
  new TransformStream({
504
+ start(controller) {
505
+ if (warnings.length > 0) {
506
+ controller.enqueue({ type: "stream-start", warnings });
507
+ }
508
+ },
495
509
  transform(chunk, controller) {
496
510
  if (chunk.success) {
497
511
  const streamPart = chunk.value;
@@ -510,7 +524,7 @@ var GatewayLanguageModel = class {
510
524
  }
511
525
  })
512
526
  ),
513
- request: { body },
527
+ request: { body: args },
514
528
  response: { headers: responseHeaders }
515
529
  };
516
530
  } catch (error) {
@@ -555,6 +569,81 @@ var GatewayLanguageModel = class {
555
569
  }
556
570
  };
557
571
 
572
+ // src/gateway-embedding-model.ts
573
+ var import_provider_utils3 = require("@ai-sdk/provider-utils");
574
+ var import_v46 = require("zod/v4");
575
+ var GatewayEmbeddingModel = class {
576
+ constructor(modelId, config) {
577
+ this.modelId = modelId;
578
+ this.config = config;
579
+ this.specificationVersion = "v2";
580
+ this.maxEmbeddingsPerCall = 2048;
581
+ this.supportsParallelCalls = true;
582
+ }
583
+ get provider() {
584
+ return this.config.provider;
585
+ }
586
+ async doEmbed({
587
+ values,
588
+ headers,
589
+ abortSignal,
590
+ providerOptions
591
+ }) {
592
+ var _a8;
593
+ const resolvedHeaders = await (0, import_provider_utils3.resolve)(this.config.headers());
594
+ try {
595
+ const {
596
+ responseHeaders,
597
+ value: responseBody,
598
+ rawValue
599
+ } = await (0, import_provider_utils3.postJsonToApi)({
600
+ url: this.getUrl(),
601
+ headers: (0, import_provider_utils3.combineHeaders)(
602
+ resolvedHeaders,
603
+ headers != null ? headers : {},
604
+ this.getModelConfigHeaders(),
605
+ await (0, import_provider_utils3.resolve)(this.config.o11yHeaders)
606
+ ),
607
+ body: {
608
+ input: values.length === 1 ? values[0] : values,
609
+ ...providerOptions != null ? providerOptions : {}
610
+ },
611
+ successfulResponseHandler: (0, import_provider_utils3.createJsonResponseHandler)(
612
+ gatewayEmbeddingResponseSchema
613
+ ),
614
+ failedResponseHandler: (0, import_provider_utils3.createJsonErrorResponseHandler)({
615
+ errorSchema: import_v46.z.any(),
616
+ errorToMessage: (data) => data
617
+ }),
618
+ ...abortSignal && { abortSignal },
619
+ fetch: this.config.fetch
620
+ });
621
+ return {
622
+ embeddings: responseBody.embeddings,
623
+ usage: (_a8 = responseBody.usage) != null ? _a8 : void 0,
624
+ providerMetadata: responseBody.providerMetadata,
625
+ response: { headers: responseHeaders, body: rawValue }
626
+ };
627
+ } catch (error) {
628
+ throw asGatewayError(error, parseAuthMethod(resolvedHeaders));
629
+ }
630
+ }
631
+ getUrl() {
632
+ return `${this.config.baseURL}/embedding-model`;
633
+ }
634
+ getModelConfigHeaders() {
635
+ return {
636
+ "ai-embedding-model-specification-version": "2",
637
+ "ai-model-id": this.modelId
638
+ };
639
+ }
640
+ };
641
+ var gatewayEmbeddingResponseSchema = import_v46.z.object({
642
+ embeddings: import_v46.z.array(import_v46.z.array(import_v46.z.number())),
643
+ usage: import_v46.z.object({ tokens: import_v46.z.number() }).nullish(),
644
+ providerMetadata: import_v46.z.record(import_v46.z.string(), import_v46.z.record(import_v46.z.string(), import_v46.z.unknown())).optional()
645
+ });
646
+
558
647
  // src/vercel-environment.ts
559
648
  async function getVercelOidcToken() {
560
649
  var _a8, _b8;
@@ -586,7 +675,7 @@ function createGatewayProvider(options = {}) {
586
675
  let metadataCache = null;
587
676
  const cacheRefreshMillis = (_a8 = options.metadataCacheRefreshMillis) != null ? _a8 : 1e3 * 60 * 5;
588
677
  let lastFetchTime = 0;
589
- const baseURL = (_b8 = (0, import_provider_utils3.withoutTrailingSlash)(options.baseURL)) != null ? _b8 : "https://ai-gateway.vercel.sh/v1/ai";
678
+ const baseURL = (_b8 = (0, import_provider_utils4.withoutTrailingSlash)(options.baseURL)) != null ? _b8 : "https://ai-gateway.vercel.sh/v1/ai";
590
679
  const getHeaders = async () => {
591
680
  const auth = await getGatewayAuthToken(options);
592
681
  if (auth) {
@@ -603,33 +692,36 @@ function createGatewayProvider(options = {}) {
603
692
  statusCode: 401
604
693
  });
605
694
  };
606
- const createLanguageModel = (modelId) => {
607
- const deploymentId = (0, import_provider_utils3.loadOptionalSetting)({
695
+ const createO11yHeaders = () => {
696
+ const deploymentId = (0, import_provider_utils4.loadOptionalSetting)({
608
697
  settingValue: void 0,
609
698
  environmentVariableName: "VERCEL_DEPLOYMENT_ID"
610
699
  });
611
- const environment = (0, import_provider_utils3.loadOptionalSetting)({
700
+ const environment = (0, import_provider_utils4.loadOptionalSetting)({
612
701
  settingValue: void 0,
613
702
  environmentVariableName: "VERCEL_ENV"
614
703
  });
615
- const region = (0, import_provider_utils3.loadOptionalSetting)({
704
+ const region = (0, import_provider_utils4.loadOptionalSetting)({
616
705
  settingValue: void 0,
617
706
  environmentVariableName: "VERCEL_REGION"
618
707
  });
708
+ return async () => {
709
+ const requestId = await getVercelRequestId();
710
+ return {
711
+ ...deploymentId && { "ai-o11y-deployment-id": deploymentId },
712
+ ...environment && { "ai-o11y-environment": environment },
713
+ ...region && { "ai-o11y-region": region },
714
+ ...requestId && { "ai-o11y-request-id": requestId }
715
+ };
716
+ };
717
+ };
718
+ const createLanguageModel = (modelId) => {
619
719
  return new GatewayLanguageModel(modelId, {
620
720
  provider: "gateway",
621
721
  baseURL,
622
722
  headers: getHeaders,
623
723
  fetch: options.fetch,
624
- o11yHeaders: async () => {
625
- const requestId = await getVercelRequestId();
626
- return {
627
- ...deploymentId && { "ai-o11y-deployment-id": deploymentId },
628
- ...environment && { "ai-o11y-environment": environment },
629
- ...region && { "ai-o11y-region": region },
630
- ...requestId && { "ai-o11y-request-id": requestId }
631
- };
632
- }
724
+ o11yHeaders: createO11yHeaders()
633
725
  });
634
726
  };
635
727
  const getAvailableModels = async () => {
@@ -664,13 +756,19 @@ function createGatewayProvider(options = {}) {
664
756
  };
665
757
  provider.languageModel = createLanguageModel;
666
758
  provider.textEmbeddingModel = (modelId) => {
667
- throw new import_provider2.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
759
+ return new GatewayEmbeddingModel(modelId, {
760
+ provider: "gateway",
761
+ baseURL,
762
+ headers: getHeaders,
763
+ fetch: options.fetch,
764
+ o11yHeaders: createO11yHeaders()
765
+ });
668
766
  };
669
767
  return provider;
670
768
  }
671
769
  var gateway = createGatewayProvider();
672
770
  async function getGatewayAuthToken(options) {
673
- const apiKey = (0, import_provider_utils3.loadOptionalSetting)({
771
+ const apiKey = (0, import_provider_utils4.loadOptionalSetting)({
674
772
  settingValue: options.apiKey,
675
773
  environmentVariableName: "AI_GATEWAY_API_KEY"
676
774
  });
@@ -686,7 +784,7 @@ async function getGatewayAuthToken(options) {
686
784
  token: oidcToken,
687
785
  authMethod: "oidc"
688
786
  };
689
- } catch (error) {
787
+ } catch (e) {
690
788
  return null;
691
789
  }
692
790
  }