@ai-sdk/xai 1.2.16 → 2.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,84 +1,285 @@
1
1
  # @ai-sdk/xai
2
2
 
3
- ## 1.2.16
3
+ ## 2.0.0-alpha.2
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - Updated dependencies [d87b9d1]
8
- - @ai-sdk/provider-utils@2.2.8
9
- - @ai-sdk/openai-compatible@0.2.14
7
+ - Updated dependencies [26535e0]
8
+ - @ai-sdk/provider@2.0.0-alpha.2
9
+ - @ai-sdk/openai-compatible@1.0.0-alpha.2
10
+ - @ai-sdk/provider-utils@3.0.0-alpha.2
10
11
 
11
- ## 1.2.15
12
+ ## 2.0.0-alpha.1
12
13
 
13
14
  ### Patch Changes
14
15
 
15
- - Updated dependencies [23571c9]
16
- - @ai-sdk/openai-compatible@0.2.13
16
+ - Updated dependencies [3f2f00c]
17
+ - @ai-sdk/provider@2.0.0-alpha.1
18
+ - @ai-sdk/openai-compatible@1.0.0-alpha.1
19
+ - @ai-sdk/provider-utils@3.0.0-alpha.1
17
20
 
18
- ## 1.2.14
21
+ ## 2.0.0-canary.19
19
22
 
20
23
  ### Patch Changes
21
24
 
22
- - 13492fe: fix(providers/xai): return actual usage when streaming instead of NaN
23
- - Updated dependencies [13492fe]
24
- - @ai-sdk/openai-compatible@0.2.12
25
+ - Updated dependencies [faf8446]
26
+ - @ai-sdk/provider-utils@3.0.0-canary.19
27
+ - @ai-sdk/openai-compatible@1.0.0-canary.19
25
28
 
26
- ## 1.2.13
29
+ ## 2.0.0-canary.18
27
30
 
28
31
  ### Patch Changes
29
32
 
30
- - Updated dependencies [b5c9cd4]
31
- - @ai-sdk/openai-compatible@0.2.11
33
+ - Updated dependencies [40acf9b]
34
+ - @ai-sdk/provider-utils@3.0.0-canary.18
35
+ - @ai-sdk/openai-compatible@1.0.0-canary.18
32
36
 
33
- ## 1.2.12
37
+ ## 2.0.0-canary.17
38
+
39
+ ### Major Changes
40
+
41
+ - 516be5b: ### Move Image Model Settings into generate options
42
+
43
+ Image Models no longer have settings. Instead, `maxImagesPerCall` can be passed directly to `generateImage()`. All other image settings can be passed to `providerOptions[provider]`.
44
+
45
+ Before
46
+
47
+ ```js
48
+ await generateImage({
49
+ model: luma.image('photon-flash-1', {
50
+ maxImagesPerCall: 5,
51
+ pollIntervalMillis: 500,
52
+ }),
53
+ prompt,
54
+ n: 10,
55
+ });
56
+ ```
57
+
58
+ After
59
+
60
+ ```js
61
+ await generateImage({
62
+ model: luma.image('photon-flash-1'),
63
+ prompt,
64
+ n: 10,
65
+ maxImagesPerCall: 5,
66
+ providerOptions: {
67
+ luma: { pollIntervalMillis: 5 },
68
+ },
69
+ });
70
+ ```
71
+
72
+ Pull Request: https://github.com/vercel/ai/pull/6180
73
+
74
+ ### Patch Changes
75
+
76
+ - Updated dependencies [516be5b]
77
+ - Updated dependencies [ea7a7c9]
78
+ - @ai-sdk/openai-compatible@1.0.0-canary.17
79
+ - @ai-sdk/provider-utils@3.0.0-canary.17
80
+
81
+ ## 2.0.0-canary.16
82
+
83
+ ### Patch Changes
84
+
85
+ - Updated dependencies [87b828f]
86
+ - @ai-sdk/provider-utils@3.0.0-canary.16
87
+ - @ai-sdk/openai-compatible@1.0.0-canary.16
88
+
89
+ ## 2.0.0-canary.15
90
+
91
+ ### Patch Changes
92
+
93
+ - Updated dependencies [a571d6e]
94
+ - Updated dependencies [a8c8bd5]
95
+ - Updated dependencies [7979f7f]
96
+ - Updated dependencies [41fa418]
97
+ - @ai-sdk/provider-utils@3.0.0-canary.15
98
+ - @ai-sdk/provider@2.0.0-canary.14
99
+ - @ai-sdk/openai-compatible@1.0.0-canary.15
100
+
101
+ ## 2.0.0-canary.14
102
+
103
+ ### Patch Changes
104
+
105
+ - Updated dependencies [957b739]
106
+ - Updated dependencies [9bd5ab5]
107
+ - @ai-sdk/provider-utils@3.0.0-canary.14
108
+ - @ai-sdk/provider@2.0.0-canary.13
109
+ - @ai-sdk/openai-compatible@1.0.0-canary.14
110
+
111
+ ## 2.0.0-canary.13
112
+
113
+ ### Patch Changes
114
+
115
+ - Updated dependencies [7b3ae3f]
116
+ - Updated dependencies [d9209ca]
117
+ - Updated dependencies [0ff02bb]
118
+ - @ai-sdk/provider@2.0.0-canary.12
119
+ - @ai-sdk/openai-compatible@1.0.0-canary.13
120
+ - @ai-sdk/provider-utils@3.0.0-canary.13
121
+
122
+ ## 2.0.0-canary.12
123
+
124
+ ### Patch Changes
125
+
126
+ - Updated dependencies [9bf7291]
127
+ - Updated dependencies [4617fab]
128
+ - Updated dependencies [e030615]
129
+ - @ai-sdk/provider@2.0.0-canary.11
130
+ - @ai-sdk/openai-compatible@1.0.0-canary.12
131
+ - @ai-sdk/provider-utils@3.0.0-canary.12
132
+
133
+ ## 2.0.0-canary.11
134
+
135
+ ### Patch Changes
136
+
137
+ - 9301f86: refactor (image-model): rename `ImageModelV1` to `ImageModelV2`
138
+ - Updated dependencies [db72adc]
139
+ - Updated dependencies [42e32b0]
140
+ - Updated dependencies [66962ed]
141
+ - Updated dependencies [9301f86]
142
+ - Updated dependencies [a3f768e]
143
+ - @ai-sdk/openai-compatible@1.0.0-canary.11
144
+ - @ai-sdk/provider-utils@3.0.0-canary.11
145
+ - @ai-sdk/provider@2.0.0-canary.10
146
+
147
+ ## 2.0.0-canary.10
148
+
149
+ ### Patch Changes
150
+
151
+ - cf8280e: fix(providers/xai): return actual usage when streaming instead of NaN
152
+ - Updated dependencies [cf8280e]
153
+ - Updated dependencies [e86be6f]
154
+ - @ai-sdk/openai-compatible@1.0.0-canary.10
155
+ - @ai-sdk/provider@2.0.0-canary.9
156
+ - @ai-sdk/provider-utils@3.0.0-canary.10
157
+
158
+ ## 2.0.0-canary.9
159
+
160
+ ### Patch Changes
161
+
162
+ - Updated dependencies [95857aa]
163
+ - Updated dependencies [7ea4132]
164
+ - @ai-sdk/provider@2.0.0-canary.8
165
+ - @ai-sdk/openai-compatible@1.0.0-canary.9
166
+ - @ai-sdk/provider-utils@3.0.0-canary.9
167
+
168
+ ## 2.0.0-canary.8
34
169
 
35
170
  ### Patch Changes
36
171
 
37
- - ebeeb32: fix(providers/xai): edit supported models for structured output
38
- - 9cebe48: chore (providers/xai): update grok-3 model aliases
39
- - Updated dependencies [beef951]
40
- - @ai-sdk/provider@1.1.3
41
- - @ai-sdk/openai-compatible@0.2.10
42
- - @ai-sdk/provider-utils@2.2.7
172
+ - Updated dependencies [5d142ab]
173
+ - Updated dependencies [b6b43c7]
174
+ - Updated dependencies [b9a6121]
175
+ - Updated dependencies [8aa9e20]
176
+ - Updated dependencies [3795467]
177
+ - @ai-sdk/provider-utils@3.0.0-canary.8
178
+ - @ai-sdk/provider@2.0.0-canary.7
179
+ - @ai-sdk/openai-compatible@1.0.0-canary.8
43
180
 
44
- ## 1.2.11
181
+ ## 2.0.0-canary.7
45
182
 
46
183
  ### Patch Changes
47
184
 
48
- - Updated dependencies [1bbc698]
49
- - @ai-sdk/openai-compatible@0.2.9
185
+ - 41cab5c: fix(providers/xai): edit supported models for structured output
186
+ - fa49207: feat(providers/openai-compatible): convert to providerOptions
187
+ - d9b26f2: chore (providers/xai): update grok-3 model aliases
188
+ - Updated dependencies [fa49207]
189
+ - Updated dependencies [26735b5]
190
+ - Updated dependencies [443d8ec]
191
+ - Updated dependencies [14c9410]
192
+ - Updated dependencies [d9c98f4]
193
+ - Updated dependencies [c4a2fec]
194
+ - Updated dependencies [0054544]
195
+ - Updated dependencies [9e9c809]
196
+ - Updated dependencies [32831c6]
197
+ - Updated dependencies [d0f9495]
198
+ - Updated dependencies [fd65bc6]
199
+ - Updated dependencies [393138b]
200
+ - Updated dependencies [7182d14]
201
+ - @ai-sdk/openai-compatible@1.0.0-canary.7
202
+ - @ai-sdk/provider@2.0.0-canary.6
203
+ - @ai-sdk/provider-utils@3.0.0-canary.7
50
204
 
51
- ## 1.2.10
205
+ ## 2.0.0-canary.6
52
206
 
53
207
  ### Patch Changes
54
208
 
55
- - 45de936: feat (providers/xai): add grok-3 models
209
+ - Updated dependencies [6db02c9]
210
+ - Updated dependencies [411e483]
211
+ - Updated dependencies [79457bd]
212
+ - Updated dependencies [ad80501]
213
+ - Updated dependencies [1766ede]
214
+ - Updated dependencies [f10304b]
215
+ - @ai-sdk/openai-compatible@1.0.0-canary.6
216
+ - @ai-sdk/provider@2.0.0-canary.5
217
+ - @ai-sdk/provider-utils@3.0.0-canary.6
56
218
 
57
- ## 1.2.9
219
+ ## 2.0.0-canary.5
58
220
 
59
221
  ### Patch Changes
60
222
 
61
- - Updated dependencies [013faa8]
62
- - @ai-sdk/provider@1.1.2
63
- - @ai-sdk/openai-compatible@0.2.8
64
- - @ai-sdk/provider-utils@2.2.6
223
+ - a7d3fbd: feat (providers/xai): add grok-3 models
224
+ - Updated dependencies [6f6bb89]
225
+ - @ai-sdk/provider@2.0.0-canary.4
226
+ - @ai-sdk/openai-compatible@1.0.0-canary.5
227
+ - @ai-sdk/provider-utils@3.0.0-canary.5
65
228
 
66
- ## 1.2.8
229
+ ## 2.0.0-canary.4
67
230
 
68
231
  ### Patch Changes
69
232
 
70
- - Updated dependencies [c21fa6d]
71
- - @ai-sdk/provider-utils@2.2.5
72
- - @ai-sdk/provider@1.1.1
73
- - @ai-sdk/openai-compatible@0.2.7
233
+ - Updated dependencies [d1a1aa1]
234
+ - @ai-sdk/provider@2.0.0-canary.3
235
+ - @ai-sdk/openai-compatible@1.0.0-canary.4
236
+ - @ai-sdk/provider-utils@3.0.0-canary.4
237
+
238
+ ## 2.0.0-canary.3
239
+
240
+ ### Patch Changes
241
+
242
+ - Updated dependencies [a166433]
243
+ - Updated dependencies [abf9a79]
244
+ - Updated dependencies [9f95b35]
245
+ - Updated dependencies [0a87932]
246
+ - Updated dependencies [6dc848c]
247
+ - @ai-sdk/provider-utils@3.0.0-canary.3
248
+ - @ai-sdk/provider@2.0.0-canary.2
249
+ - @ai-sdk/openai-compatible@1.0.0-canary.3
250
+
251
+ ## 2.0.0-canary.2
252
+
253
+ ### Patch Changes
254
+
255
+ - Updated dependencies [c57e248]
256
+ - Updated dependencies [33f4a6a]
257
+ - @ai-sdk/provider@2.0.0-canary.1
258
+ - @ai-sdk/openai-compatible@1.0.0-canary.2
259
+ - @ai-sdk/provider-utils@3.0.0-canary.2
260
+
261
+ ## 2.0.0-canary.1
262
+
263
+ ### Patch Changes
264
+
265
+ - Updated dependencies [060370c]
266
+ - Updated dependencies [0c0c0b3]
267
+ - Updated dependencies [63d791d]
268
+ - @ai-sdk/provider-utils@3.0.0-canary.1
269
+ - @ai-sdk/openai-compatible@1.0.0-canary.1
270
+
271
+ ## 2.0.0-canary.0
272
+
273
+ ### Major Changes
74
274
 
75
- ## 1.2.7
275
+ - d5f588f: AI SDK 5
76
276
 
77
277
  ### Patch Changes
78
278
 
79
- - Updated dependencies [2c19b9a]
80
- - @ai-sdk/provider-utils@2.2.4
81
- - @ai-sdk/openai-compatible@0.2.6
279
+ - Updated dependencies [d5f588f]
280
+ - @ai-sdk/provider-utils@3.0.0-canary.0
281
+ - @ai-sdk/openai-compatible@1.0.0-canary.0
282
+ - @ai-sdk/provider@2.0.0-canary.0
82
283
 
83
284
  ## 1.2.6
84
285
 
package/dist/index.d.mts CHANGED
@@ -1,41 +1,33 @@
1
- import { ProviderV1, LanguageModelV1, ImageModelV1 } from '@ai-sdk/provider';
1
+ import { ProviderV2, LanguageModelV2, ImageModelV2 } from '@ai-sdk/provider';
2
2
  import { FetchFunction } from '@ai-sdk/provider-utils';
3
- import { OpenAICompatibleChatSettings } from '@ai-sdk/openai-compatible';
4
3
  import { z } from 'zod';
5
4
 
6
5
  type XaiChatModelId = 'grok-3' | 'grok-3-latest' | 'grok-3-fast' | 'grok-3-fast-latest' | 'grok-3-mini' | 'grok-3-mini-latest' | 'grok-3-mini-fast' | 'grok-3-mini-fast-latest' | 'grok-2-vision-1212' | 'grok-2-vision' | 'grok-2-vision-latest' | 'grok-2-image-1212' | 'grok-2-image' | 'grok-2-image-latest' | 'grok-2-1212' | 'grok-2' | 'grok-2-latest' | 'grok-vision-beta' | 'grok-beta' | (string & {});
7
- interface XaiChatSettings extends OpenAICompatibleChatSettings {
8
- }
9
6
 
10
7
  type XaiImageModelId = 'grok-2-image' | (string & {});
11
- interface XaiImageSettings {
12
- /**
13
- Override the maximum number of images per call. Default is 10.
14
- */
15
- maxImagesPerCall?: number;
16
- }
17
8
 
18
- interface XaiProvider extends ProviderV1 {
9
+ interface XaiProvider extends ProviderV2 {
19
10
  /**
20
11
  Creates an Xai chat model for text generation.
21
12
  */
22
- (modelId: XaiChatModelId, settings?: XaiChatSettings): LanguageModelV1;
13
+ (modelId: XaiChatModelId): LanguageModelV2;
23
14
  /**
24
15
  Creates an Xai language model for text generation.
25
16
  */
26
- languageModel(modelId: XaiChatModelId, settings?: XaiChatSettings): LanguageModelV1;
17
+ languageModel(modelId: XaiChatModelId): LanguageModelV2;
27
18
  /**
28
19
  Creates an Xai chat model for text generation.
29
20
  */
30
- chat: (modelId: XaiChatModelId, settings?: XaiChatSettings) => LanguageModelV1;
21
+ chat: (modelId: XaiChatModelId) => LanguageModelV2;
31
22
  /**
32
23
  Creates an Xai image model for image generation.
24
+ @deprecated Use `imageModel` instead.
33
25
  */
34
- image(modelId: XaiImageModelId, settings?: XaiImageSettings): ImageModelV1;
26
+ image(modelId: XaiImageModelId): ImageModelV2;
35
27
  /**
36
28
  Creates an Xai image model for image generation.
37
29
  */
38
- imageModel(modelId: XaiImageModelId, settings?: XaiImageSettings): ImageModelV1;
30
+ imageModel(modelId: XaiImageModelId): ImageModelV2;
39
31
  }
40
32
  interface XaiProviderSettings {
41
33
  /**
package/dist/index.d.ts CHANGED
@@ -1,41 +1,33 @@
1
- import { ProviderV1, LanguageModelV1, ImageModelV1 } from '@ai-sdk/provider';
1
+ import { ProviderV2, LanguageModelV2, ImageModelV2 } from '@ai-sdk/provider';
2
2
  import { FetchFunction } from '@ai-sdk/provider-utils';
3
- import { OpenAICompatibleChatSettings } from '@ai-sdk/openai-compatible';
4
3
  import { z } from 'zod';
5
4
 
6
5
  type XaiChatModelId = 'grok-3' | 'grok-3-latest' | 'grok-3-fast' | 'grok-3-fast-latest' | 'grok-3-mini' | 'grok-3-mini-latest' | 'grok-3-mini-fast' | 'grok-3-mini-fast-latest' | 'grok-2-vision-1212' | 'grok-2-vision' | 'grok-2-vision-latest' | 'grok-2-image-1212' | 'grok-2-image' | 'grok-2-image-latest' | 'grok-2-1212' | 'grok-2' | 'grok-2-latest' | 'grok-vision-beta' | 'grok-beta' | (string & {});
7
- interface XaiChatSettings extends OpenAICompatibleChatSettings {
8
- }
9
6
 
10
7
  type XaiImageModelId = 'grok-2-image' | (string & {});
11
- interface XaiImageSettings {
12
- /**
13
- Override the maximum number of images per call. Default is 10.
14
- */
15
- maxImagesPerCall?: number;
16
- }
17
8
 
18
- interface XaiProvider extends ProviderV1 {
9
+ interface XaiProvider extends ProviderV2 {
19
10
  /**
20
11
  Creates an Xai chat model for text generation.
21
12
  */
22
- (modelId: XaiChatModelId, settings?: XaiChatSettings): LanguageModelV1;
13
+ (modelId: XaiChatModelId): LanguageModelV2;
23
14
  /**
24
15
  Creates an Xai language model for text generation.
25
16
  */
26
- languageModel(modelId: XaiChatModelId, settings?: XaiChatSettings): LanguageModelV1;
17
+ languageModel(modelId: XaiChatModelId): LanguageModelV2;
27
18
  /**
28
19
  Creates an Xai chat model for text generation.
29
20
  */
30
- chat: (modelId: XaiChatModelId, settings?: XaiChatSettings) => LanguageModelV1;
21
+ chat: (modelId: XaiChatModelId) => LanguageModelV2;
31
22
  /**
32
23
  Creates an Xai image model for image generation.
24
+ @deprecated Use `imageModel` instead.
33
25
  */
34
- image(modelId: XaiImageModelId, settings?: XaiImageSettings): ImageModelV1;
26
+ image(modelId: XaiImageModelId): ImageModelV2;
35
27
  /**
36
28
  Creates an Xai image model for image generation.
37
29
  */
38
- imageModel(modelId: XaiImageModelId, settings?: XaiImageSettings): ImageModelV1;
30
+ imageModel(modelId: XaiImageModelId): ImageModelV2;
39
31
  }
40
32
  interface XaiProviderSettings {
41
33
  /**
package/dist/index.js CHANGED
@@ -26,11 +26,11 @@ __export(src_exports, {
26
26
  module.exports = __toCommonJS(src_exports);
27
27
 
28
28
  // src/xai-provider.ts
29
- var import_provider = require("@ai-sdk/provider");
30
29
  var import_openai_compatible = require("@ai-sdk/openai-compatible");
30
+ var import_provider = require("@ai-sdk/provider");
31
31
  var import_provider_utils = require("@ai-sdk/provider-utils");
32
32
 
33
- // src/xai-chat-settings.ts
33
+ // src/xai-chat-options.ts
34
34
  function supportsStructuredOutputs(modelId) {
35
35
  return [
36
36
  "grok-3",
@@ -75,21 +75,20 @@ function createXai(options = {}) {
75
75
  })}`,
76
76
  ...options.headers
77
77
  });
78
- const createLanguageModel = (modelId, settings = {}) => {
78
+ const createLanguageModel = (modelId) => {
79
79
  const structuredOutputs = supportsStructuredOutputs(modelId);
80
- return new import_openai_compatible.OpenAICompatibleChatLanguageModel(modelId, settings, {
80
+ return new import_openai_compatible.OpenAICompatibleChatLanguageModel(modelId, {
81
81
  provider: "xai.chat",
82
82
  url: ({ path }) => `${baseURL}${path}`,
83
83
  headers: getHeaders,
84
84
  fetch: options.fetch,
85
- defaultObjectGenerationMode: structuredOutputs ? "json" : "tool",
86
85
  errorStructure: xaiErrorStructure,
87
86
  supportsStructuredOutputs: structuredOutputs,
88
87
  includeUsage: true
89
88
  });
90
89
  };
91
- const createImageModel = (modelId, settings = {}) => {
92
- return new import_openai_compatible.OpenAICompatibleImageModel(modelId, settings, {
90
+ const createImageModel = (modelId) => {
91
+ return new import_openai_compatible.OpenAICompatibleImageModel(modelId, {
93
92
  provider: "xai.image",
94
93
  url: ({ path }) => `${baseURL}${path}`,
95
94
  headers: getHeaders,
@@ -97,7 +96,7 @@ function createXai(options = {}) {
97
96
  errorStructure: xaiErrorStructure
98
97
  });
99
98
  };
100
- const provider = (modelId, settings) => createLanguageModel(modelId, settings);
99
+ const provider = (modelId) => createLanguageModel(modelId);
101
100
  provider.languageModel = createLanguageModel;
102
101
  provider.chat = createLanguageModel;
103
102
  provider.textEmbeddingModel = (modelId) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/xai-provider.ts","../src/xai-chat-settings.ts","../src/xai-error.ts"],"sourcesContent":["export { createXai, xai } from './xai-provider';\nexport type { XaiProvider, XaiProviderSettings } from './xai-provider';\nexport type { XaiErrorData } from './xai-error';\n","import {\n ImageModelV1,\n LanguageModelV1,\n NoSuchModelError,\n ProviderV1,\n} from '@ai-sdk/provider';\nimport {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport {\n XaiChatModelId,\n XaiChatSettings,\n supportsStructuredOutputs,\n} from './xai-chat-settings';\nimport { XaiImageSettings } from './xai-image-settings';\nimport { XaiImageModelId } from './xai-image-settings';\nimport { XaiErrorData, xaiErrorSchema } from './xai-error';\n\nconst xaiErrorStructure: ProviderErrorStructure<XaiErrorData> = {\n errorSchema: xaiErrorSchema,\n errorToMessage: data => data.error,\n};\n\nexport interface XaiProvider extends ProviderV1 {\n /**\nCreates an Xai chat model for text generation.\n */\n (modelId: XaiChatModelId, settings?: XaiChatSettings): LanguageModelV1;\n\n /**\nCreates an Xai language model for text generation.\n */\n languageModel(\n modelId: XaiChatModelId,\n settings?: XaiChatSettings,\n ): LanguageModelV1;\n\n /**\nCreates an Xai chat model for text generation.\n */\n chat: (\n modelId: XaiChatModelId,\n settings?: XaiChatSettings,\n ) => LanguageModelV1;\n\n /**\nCreates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId, settings?: XaiImageSettings): ImageModelV1;\n\n /**\nCreates an Xai image model for image generation.\n */\n imageModel(\n modelId: XaiImageModelId,\n settings?: XaiImageSettings,\n ): ImageModelV1;\n}\n\nexport interface XaiProviderSettings {\n /**\nBase URL for the xAI API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport function createXai(options: XaiProviderSettings = {}): XaiProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.x.ai/v1',\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'XAI_API_KEY',\n description: 'xAI API key',\n })}`,\n ...options.headers,\n });\n\n const createLanguageModel = (\n modelId: XaiChatModelId,\n settings: XaiChatSettings = {},\n ) => {\n const structuredOutputs = supportsStructuredOutputs(modelId);\n return new OpenAICompatibleChatLanguageModel(modelId, settings, {\n provider: 'xai.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n defaultObjectGenerationMode: structuredOutputs ? 'json' : 'tool',\n errorStructure: xaiErrorStructure,\n supportsStructuredOutputs: structuredOutputs,\n includeUsage: true,\n });\n };\n\n const createImageModel = (\n modelId: XaiImageModelId,\n settings: XaiImageSettings = {},\n ) => {\n return new OpenAICompatibleImageModel(modelId, settings, {\n provider: 'xai.image',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n errorStructure: xaiErrorStructure,\n });\n };\n\n const provider = (modelId: XaiChatModelId, settings?: XaiChatSettings) =>\n createLanguageModel(modelId, settings);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = createImageModel;\n provider.image = createImageModel;\n\n return provider;\n}\n\nexport const xai = createXai();\n","import { OpenAICompatibleChatSettings } from '@ai-sdk/openai-compatible';\n\n// https://console.x.ai and see \"View models\"\nexport type XaiChatModelId =\n | 'grok-3'\n | 'grok-3-latest'\n | 'grok-3-fast'\n | 'grok-3-fast-latest'\n | 'grok-3-mini'\n | 'grok-3-mini-latest'\n | 'grok-3-mini-fast'\n | 'grok-3-mini-fast-latest'\n | 'grok-2-vision-1212'\n | 'grok-2-vision'\n | 'grok-2-vision-latest'\n | 'grok-2-image-1212'\n | 'grok-2-image'\n | 'grok-2-image-latest'\n | 'grok-2-1212'\n | 'grok-2'\n | 'grok-2-latest'\n | 'grok-vision-beta'\n | 'grok-beta'\n | (string & {});\n\nexport interface XaiChatSettings extends OpenAICompatibleChatSettings {}\n\n/**\n * https://docs.x.ai/docs/guides/structured-outputs\n */\nexport function supportsStructuredOutputs(modelId: XaiChatModelId) {\n return [\n 'grok-3',\n 'grok-3-beta',\n 'grok-3-latest',\n 'grok-3-fast',\n 'grok-3-fast-beta',\n 'grok-3-fast-latest',\n 'grok-3-mini',\n 'grok-3-mini-beta',\n 'grok-3-mini-latest',\n 'grok-3-mini-fast',\n 'grok-3-mini-fast-beta',\n 'grok-3-mini-fast-latest',\n 'grok-2-1212',\n 'grok-2-vision-1212',\n ].includes(modelId);\n}\n","import { z } from 'zod';\n\n// Add error schema and structure\nexport const xaiErrorSchema = z.object({\n code: z.string(),\n error: z.string(),\n});\n\nexport type XaiErrorData = z.infer<typeof xaiErrorSchema>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,sBAKO;AACP,+BAIO;AACP,4BAIO;;;ACeA,SAAS,0BAA0B,SAAyB;AACjE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,SAAS,OAAO;AACpB;;;AC/CA,iBAAkB;AAGX,IAAM,iBAAiB,aAAE,OAAO;AAAA,EACrC,MAAM,aAAE,OAAO;AAAA,EACf,OAAO,aAAE,OAAO;AAClB,CAAC;;;AFmBD,IAAM,oBAA0D;AAAA,EAC9D,aAAa;AAAA,EACb,gBAAgB,UAAQ,KAAK;AAC/B;AA6DO,SAAS,UAAU,UAA+B,CAAC,GAAgB;AAzF1E;AA0FE,QAAM,cAAU;AAAA,KACd,aAAQ,YAAR,YAAmB;AAAA,EACrB;AACA,QAAM,aAAa,OAAO;AAAA,IACxB,eAAe,cAAU,kCAAW;AAAA,MAClC,QAAQ,QAAQ;AAAA,MAChB,yBAAyB;AAAA,MACzB,aAAa;AAAA,IACf,CAAC,CAAC;AAAA,IACF,GAAG,QAAQ;AAAA,EACb;AAEA,QAAM,sBAAsB,CAC1B,SACA,WAA4B,CAAC,MAC1B;AACH,UAAM,oBAAoB,0BAA0B,OAAO;AAC3D,WAAO,IAAI,2DAAkC,SAAS,UAAU;AAAA,MAC9D,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,6BAA6B,oBAAoB,SAAS;AAAA,MAC1D,gBAAgB;AAAA,MAChB,2BAA2B;AAAA,MAC3B,cAAc;AAAA,IAChB,CAAC;AAAA,EACH;AAEA,QAAM,mBAAmB,CACvB,SACA,WAA6B,CAAC,MAC3B;AACH,WAAO,IAAI,oDAA2B,SAAS,UAAU;AAAA,MACvD,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,CAAC,SAAyB,aACzC,oBAAoB,SAAS,QAAQ;AAEvC,WAAS,gBAAgB;AACzB,WAAS,OAAO;AAChB,WAAS,qBAAqB,CAAC,YAAoB;AACjD,UAAM,IAAI,iCAAiB,EAAE,SAAS,WAAW,qBAAqB,CAAC;AAAA,EACzE;AACA,WAAS,aAAa;AACtB,WAAS,QAAQ;AAEjB,SAAO;AACT;AAEO,IAAM,MAAM,UAAU;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/xai-provider.ts","../src/xai-chat-options.ts","../src/xai-error.ts"],"sourcesContent":["export { createXai, xai } from './xai-provider';\nexport type { XaiProvider, XaiProviderSettings } from './xai-provider';\nexport type { XaiErrorData } from './xai-error';\n","import {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n ImageModelV2,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatModelId, supportsStructuredOutputs } from './xai-chat-options';\nimport { XaiErrorData, xaiErrorSchema } from './xai-error';\nimport { XaiImageModelId } from './xai-image-settings';\n\nconst xaiErrorStructure: ProviderErrorStructure<XaiErrorData> = {\n errorSchema: xaiErrorSchema,\n errorToMessage: data => data.error,\n};\n\nexport interface XaiProvider extends ProviderV2 {\n /**\nCreates an Xai chat model for text generation.\n */\n (modelId: XaiChatModelId): LanguageModelV2;\n\n /**\nCreates an Xai language model for text generation.\n */\n languageModel(modelId: XaiChatModelId): LanguageModelV2;\n\n /**\nCreates an Xai chat model for text generation.\n */\n chat: (modelId: XaiChatModelId) => LanguageModelV2;\n\n /**\nCreates an Xai image model for image generation.\n@deprecated Use `imageModel` instead.\n */\n image(modelId: XaiImageModelId): ImageModelV2;\n\n /**\nCreates an Xai image model for image generation.\n */\n imageModel(modelId: XaiImageModelId): ImageModelV2;\n}\n\nexport interface XaiProviderSettings {\n /**\nBase URL for the xAI API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport function createXai(options: XaiProviderSettings = {}): XaiProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.x.ai/v1',\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'XAI_API_KEY',\n description: 'xAI API key',\n })}`,\n ...options.headers,\n });\n\n const createLanguageModel = (modelId: XaiChatModelId) => {\n const structuredOutputs = supportsStructuredOutputs(modelId);\n return new OpenAICompatibleChatLanguageModel(modelId, {\n provider: 'xai.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n errorStructure: xaiErrorStructure,\n supportsStructuredOutputs: structuredOutputs,\n includeUsage: true,\n });\n };\n\n const createImageModel = (modelId: XaiImageModelId) => {\n return new OpenAICompatibleImageModel(modelId, {\n provider: 'xai.image',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n errorStructure: xaiErrorStructure,\n });\n };\n\n const provider = (modelId: XaiChatModelId) => createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = createImageModel;\n provider.image = createImageModel;\n\n return provider;\n}\n\nexport const xai = createXai();\n","// https://console.x.ai and see \"View models\"\nexport type XaiChatModelId =\n | 'grok-3'\n | 'grok-3-latest'\n | 'grok-3-fast'\n | 'grok-3-fast-latest'\n | 'grok-3-mini'\n | 'grok-3-mini-latest'\n | 'grok-3-mini-fast'\n | 'grok-3-mini-fast-latest'\n | 'grok-2-vision-1212'\n | 'grok-2-vision'\n | 'grok-2-vision-latest'\n | 'grok-2-image-1212'\n | 'grok-2-image'\n | 'grok-2-image-latest'\n | 'grok-2-1212'\n | 'grok-2'\n | 'grok-2-latest'\n | 'grok-vision-beta'\n | 'grok-beta'\n | (string & {});\n\n/**\n * https://docs.x.ai/docs/guides/structured-outputs\n */\nexport function supportsStructuredOutputs(modelId: XaiChatModelId) {\n return [\n 'grok-3',\n 'grok-3-beta',\n 'grok-3-latest',\n 'grok-3-fast',\n 'grok-3-fast-beta',\n 'grok-3-fast-latest',\n 'grok-3-mini',\n 'grok-3-mini-beta',\n 'grok-3-mini-latest',\n 'grok-3-mini-fast',\n 'grok-3-mini-fast-beta',\n 'grok-3-mini-fast-latest',\n 'grok-2-1212',\n 'grok-2-vision-1212',\n ].includes(modelId);\n}\n","import { z } from 'zod';\n\n// Add error schema and structure\nexport const xaiErrorSchema = z.object({\n code: z.string(),\n error: z.string(),\n});\n\nexport type XaiErrorData = z.infer<typeof xaiErrorSchema>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,+BAIO;AACP,sBAKO;AACP,4BAIO;;;ACWA,SAAS,0BAA0B,SAAyB;AACjE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,SAAS,OAAO;AACpB;;;AC3CA,iBAAkB;AAGX,IAAM,iBAAiB,aAAE,OAAO;AAAA,EACrC,MAAM,aAAE,OAAO;AAAA,EACf,OAAO,aAAE,OAAO;AAClB,CAAC;;;AFcD,IAAM,oBAA0D;AAAA,EAC9D,aAAa;AAAA,EACb,gBAAgB,UAAQ,KAAK;AAC/B;AAqDO,SAAS,UAAU,UAA+B,CAAC,GAAgB;AA5E1E;AA6EE,QAAM,cAAU;AAAA,KACd,aAAQ,YAAR,YAAmB;AAAA,EACrB;AACA,QAAM,aAAa,OAAO;AAAA,IACxB,eAAe,cAAU,kCAAW;AAAA,MAClC,QAAQ,QAAQ;AAAA,MAChB,yBAAyB;AAAA,MACzB,aAAa;AAAA,IACf,CAAC,CAAC;AAAA,IACF,GAAG,QAAQ;AAAA,EACb;AAEA,QAAM,sBAAsB,CAAC,YAA4B;AACvD,UAAM,oBAAoB,0BAA0B,OAAO;AAC3D,WAAO,IAAI,2DAAkC,SAAS;AAAA,MACpD,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,gBAAgB;AAAA,MAChB,2BAA2B;AAAA,MAC3B,cAAc;AAAA,IAChB,CAAC;AAAA,EACH;AAEA,QAAM,mBAAmB,CAAC,YAA6B;AACrD,WAAO,IAAI,oDAA2B,SAAS;AAAA,MAC7C,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,CAAC,YAA4B,oBAAoB,OAAO;AAEzE,WAAS,gBAAgB;AACzB,WAAS,OAAO;AAChB,WAAS,qBAAqB,CAAC,YAAoB;AACjD,UAAM,IAAI,iCAAiB,EAAE,SAAS,WAAW,qBAAqB,CAAC;AAAA,EACzE;AACA,WAAS,aAAa;AACtB,WAAS,QAAQ;AAEjB,SAAO;AACT;AAEO,IAAM,MAAM,UAAU;","names":[]}
package/dist/index.mjs CHANGED
@@ -1,17 +1,17 @@
1
1
  // src/xai-provider.ts
2
- import {
3
- NoSuchModelError
4
- } from "@ai-sdk/provider";
5
2
  import {
6
3
  OpenAICompatibleChatLanguageModel,
7
4
  OpenAICompatibleImageModel
8
5
  } from "@ai-sdk/openai-compatible";
6
+ import {
7
+ NoSuchModelError
8
+ } from "@ai-sdk/provider";
9
9
  import {
10
10
  loadApiKey,
11
11
  withoutTrailingSlash
12
12
  } from "@ai-sdk/provider-utils";
13
13
 
14
- // src/xai-chat-settings.ts
14
+ // src/xai-chat-options.ts
15
15
  function supportsStructuredOutputs(modelId) {
16
16
  return [
17
17
  "grok-3",
@@ -56,21 +56,20 @@ function createXai(options = {}) {
56
56
  })}`,
57
57
  ...options.headers
58
58
  });
59
- const createLanguageModel = (modelId, settings = {}) => {
59
+ const createLanguageModel = (modelId) => {
60
60
  const structuredOutputs = supportsStructuredOutputs(modelId);
61
- return new OpenAICompatibleChatLanguageModel(modelId, settings, {
61
+ return new OpenAICompatibleChatLanguageModel(modelId, {
62
62
  provider: "xai.chat",
63
63
  url: ({ path }) => `${baseURL}${path}`,
64
64
  headers: getHeaders,
65
65
  fetch: options.fetch,
66
- defaultObjectGenerationMode: structuredOutputs ? "json" : "tool",
67
66
  errorStructure: xaiErrorStructure,
68
67
  supportsStructuredOutputs: structuredOutputs,
69
68
  includeUsage: true
70
69
  });
71
70
  };
72
- const createImageModel = (modelId, settings = {}) => {
73
- return new OpenAICompatibleImageModel(modelId, settings, {
71
+ const createImageModel = (modelId) => {
72
+ return new OpenAICompatibleImageModel(modelId, {
74
73
  provider: "xai.image",
75
74
  url: ({ path }) => `${baseURL}${path}`,
76
75
  headers: getHeaders,
@@ -78,7 +77,7 @@ function createXai(options = {}) {
78
77
  errorStructure: xaiErrorStructure
79
78
  });
80
79
  };
81
- const provider = (modelId, settings) => createLanguageModel(modelId, settings);
80
+ const provider = (modelId) => createLanguageModel(modelId);
82
81
  provider.languageModel = createLanguageModel;
83
82
  provider.chat = createLanguageModel;
84
83
  provider.textEmbeddingModel = (modelId) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/xai-provider.ts","../src/xai-chat-settings.ts","../src/xai-error.ts"],"sourcesContent":["import {\n ImageModelV1,\n LanguageModelV1,\n NoSuchModelError,\n ProviderV1,\n} from '@ai-sdk/provider';\nimport {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport {\n XaiChatModelId,\n XaiChatSettings,\n supportsStructuredOutputs,\n} from './xai-chat-settings';\nimport { XaiImageSettings } from './xai-image-settings';\nimport { XaiImageModelId } from './xai-image-settings';\nimport { XaiErrorData, xaiErrorSchema } from './xai-error';\n\nconst xaiErrorStructure: ProviderErrorStructure<XaiErrorData> = {\n errorSchema: xaiErrorSchema,\n errorToMessage: data => data.error,\n};\n\nexport interface XaiProvider extends ProviderV1 {\n /**\nCreates an Xai chat model for text generation.\n */\n (modelId: XaiChatModelId, settings?: XaiChatSettings): LanguageModelV1;\n\n /**\nCreates an Xai language model for text generation.\n */\n languageModel(\n modelId: XaiChatModelId,\n settings?: XaiChatSettings,\n ): LanguageModelV1;\n\n /**\nCreates an Xai chat model for text generation.\n */\n chat: (\n modelId: XaiChatModelId,\n settings?: XaiChatSettings,\n ) => LanguageModelV1;\n\n /**\nCreates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId, settings?: XaiImageSettings): ImageModelV1;\n\n /**\nCreates an Xai image model for image generation.\n */\n imageModel(\n modelId: XaiImageModelId,\n settings?: XaiImageSettings,\n ): ImageModelV1;\n}\n\nexport interface XaiProviderSettings {\n /**\nBase URL for the xAI API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport function createXai(options: XaiProviderSettings = {}): XaiProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.x.ai/v1',\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'XAI_API_KEY',\n description: 'xAI API key',\n })}`,\n ...options.headers,\n });\n\n const createLanguageModel = (\n modelId: XaiChatModelId,\n settings: XaiChatSettings = {},\n ) => {\n const structuredOutputs = supportsStructuredOutputs(modelId);\n return new OpenAICompatibleChatLanguageModel(modelId, settings, {\n provider: 'xai.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n defaultObjectGenerationMode: structuredOutputs ? 'json' : 'tool',\n errorStructure: xaiErrorStructure,\n supportsStructuredOutputs: structuredOutputs,\n includeUsage: true,\n });\n };\n\n const createImageModel = (\n modelId: XaiImageModelId,\n settings: XaiImageSettings = {},\n ) => {\n return new OpenAICompatibleImageModel(modelId, settings, {\n provider: 'xai.image',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n errorStructure: xaiErrorStructure,\n });\n };\n\n const provider = (modelId: XaiChatModelId, settings?: XaiChatSettings) =>\n createLanguageModel(modelId, settings);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = createImageModel;\n provider.image = createImageModel;\n\n return provider;\n}\n\nexport const xai = createXai();\n","import { OpenAICompatibleChatSettings } from '@ai-sdk/openai-compatible';\n\n// https://console.x.ai and see \"View models\"\nexport type XaiChatModelId =\n | 'grok-3'\n | 'grok-3-latest'\n | 'grok-3-fast'\n | 'grok-3-fast-latest'\n | 'grok-3-mini'\n | 'grok-3-mini-latest'\n | 'grok-3-mini-fast'\n | 'grok-3-mini-fast-latest'\n | 'grok-2-vision-1212'\n | 'grok-2-vision'\n | 'grok-2-vision-latest'\n | 'grok-2-image-1212'\n | 'grok-2-image'\n | 'grok-2-image-latest'\n | 'grok-2-1212'\n | 'grok-2'\n | 'grok-2-latest'\n | 'grok-vision-beta'\n | 'grok-beta'\n | (string & {});\n\nexport interface XaiChatSettings extends OpenAICompatibleChatSettings {}\n\n/**\n * https://docs.x.ai/docs/guides/structured-outputs\n */\nexport function supportsStructuredOutputs(modelId: XaiChatModelId) {\n return [\n 'grok-3',\n 'grok-3-beta',\n 'grok-3-latest',\n 'grok-3-fast',\n 'grok-3-fast-beta',\n 'grok-3-fast-latest',\n 'grok-3-mini',\n 'grok-3-mini-beta',\n 'grok-3-mini-latest',\n 'grok-3-mini-fast',\n 'grok-3-mini-fast-beta',\n 'grok-3-mini-fast-latest',\n 'grok-2-1212',\n 'grok-2-vision-1212',\n ].includes(modelId);\n}\n","import { z } from 'zod';\n\n// Add error schema and structure\nexport const xaiErrorSchema = z.object({\n code: z.string(),\n error: z.string(),\n});\n\nexport type XaiErrorData = z.infer<typeof xaiErrorSchema>;\n"],"mappings":";AAAA;AAAA,EAGE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EAEE;AAAA,EACA;AAAA,OACK;;;ACeA,SAAS,0BAA0B,SAAyB;AACjE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,SAAS,OAAO;AACpB;;;AC/CA,SAAS,SAAS;AAGX,IAAM,iBAAiB,EAAE,OAAO;AAAA,EACrC,MAAM,EAAE,OAAO;AAAA,EACf,OAAO,EAAE,OAAO;AAClB,CAAC;;;AFmBD,IAAM,oBAA0D;AAAA,EAC9D,aAAa;AAAA,EACb,gBAAgB,UAAQ,KAAK;AAC/B;AA6DO,SAAS,UAAU,UAA+B,CAAC,GAAgB;AAzF1E;AA0FE,QAAM,UAAU;AAAA,KACd,aAAQ,YAAR,YAAmB;AAAA,EACrB;AACA,QAAM,aAAa,OAAO;AAAA,IACxB,eAAe,UAAU,WAAW;AAAA,MAClC,QAAQ,QAAQ;AAAA,MAChB,yBAAyB;AAAA,MACzB,aAAa;AAAA,IACf,CAAC,CAAC;AAAA,IACF,GAAG,QAAQ;AAAA,EACb;AAEA,QAAM,sBAAsB,CAC1B,SACA,WAA4B,CAAC,MAC1B;AACH,UAAM,oBAAoB,0BAA0B,OAAO;AAC3D,WAAO,IAAI,kCAAkC,SAAS,UAAU;AAAA,MAC9D,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,6BAA6B,oBAAoB,SAAS;AAAA,MAC1D,gBAAgB;AAAA,MAChB,2BAA2B;AAAA,MAC3B,cAAc;AAAA,IAChB,CAAC;AAAA,EACH;AAEA,QAAM,mBAAmB,CACvB,SACA,WAA6B,CAAC,MAC3B;AACH,WAAO,IAAI,2BAA2B,SAAS,UAAU;AAAA,MACvD,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,CAAC,SAAyB,aACzC,oBAAoB,SAAS,QAAQ;AAEvC,WAAS,gBAAgB;AACzB,WAAS,OAAO;AAChB,WAAS,qBAAqB,CAAC,YAAoB;AACjD,UAAM,IAAI,iBAAiB,EAAE,SAAS,WAAW,qBAAqB,CAAC;AAAA,EACzE;AACA,WAAS,aAAa;AACtB,WAAS,QAAQ;AAEjB,SAAO;AACT;AAEO,IAAM,MAAM,UAAU;","names":[]}
1
+ {"version":3,"sources":["../src/xai-provider.ts","../src/xai-chat-options.ts","../src/xai-error.ts"],"sourcesContent":["import {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n ImageModelV2,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatModelId, supportsStructuredOutputs } from './xai-chat-options';\nimport { XaiErrorData, xaiErrorSchema } from './xai-error';\nimport { XaiImageModelId } from './xai-image-settings';\n\nconst xaiErrorStructure: ProviderErrorStructure<XaiErrorData> = {\n errorSchema: xaiErrorSchema,\n errorToMessage: data => data.error,\n};\n\nexport interface XaiProvider extends ProviderV2 {\n /**\nCreates an Xai chat model for text generation.\n */\n (modelId: XaiChatModelId): LanguageModelV2;\n\n /**\nCreates an Xai language model for text generation.\n */\n languageModel(modelId: XaiChatModelId): LanguageModelV2;\n\n /**\nCreates an Xai chat model for text generation.\n */\n chat: (modelId: XaiChatModelId) => LanguageModelV2;\n\n /**\nCreates an Xai image model for image generation.\n@deprecated Use `imageModel` instead.\n */\n image(modelId: XaiImageModelId): ImageModelV2;\n\n /**\nCreates an Xai image model for image generation.\n */\n imageModel(modelId: XaiImageModelId): ImageModelV2;\n}\n\nexport interface XaiProviderSettings {\n /**\nBase URL for the xAI API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport function createXai(options: XaiProviderSettings = {}): XaiProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.x.ai/v1',\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'XAI_API_KEY',\n description: 'xAI API key',\n })}`,\n ...options.headers,\n });\n\n const createLanguageModel = (modelId: XaiChatModelId) => {\n const structuredOutputs = supportsStructuredOutputs(modelId);\n return new OpenAICompatibleChatLanguageModel(modelId, {\n provider: 'xai.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n errorStructure: xaiErrorStructure,\n supportsStructuredOutputs: structuredOutputs,\n includeUsage: true,\n });\n };\n\n const createImageModel = (modelId: XaiImageModelId) => {\n return new OpenAICompatibleImageModel(modelId, {\n provider: 'xai.image',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n errorStructure: xaiErrorStructure,\n });\n };\n\n const provider = (modelId: XaiChatModelId) => createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = createImageModel;\n provider.image = createImageModel;\n\n return provider;\n}\n\nexport const xai = createXai();\n","// https://console.x.ai and see \"View models\"\nexport type XaiChatModelId =\n | 'grok-3'\n | 'grok-3-latest'\n | 'grok-3-fast'\n | 'grok-3-fast-latest'\n | 'grok-3-mini'\n | 'grok-3-mini-latest'\n | 'grok-3-mini-fast'\n | 'grok-3-mini-fast-latest'\n | 'grok-2-vision-1212'\n | 'grok-2-vision'\n | 'grok-2-vision-latest'\n | 'grok-2-image-1212'\n | 'grok-2-image'\n | 'grok-2-image-latest'\n | 'grok-2-1212'\n | 'grok-2'\n | 'grok-2-latest'\n | 'grok-vision-beta'\n | 'grok-beta'\n | (string & {});\n\n/**\n * https://docs.x.ai/docs/guides/structured-outputs\n */\nexport function supportsStructuredOutputs(modelId: XaiChatModelId) {\n return [\n 'grok-3',\n 'grok-3-beta',\n 'grok-3-latest',\n 'grok-3-fast',\n 'grok-3-fast-beta',\n 'grok-3-fast-latest',\n 'grok-3-mini',\n 'grok-3-mini-beta',\n 'grok-3-mini-latest',\n 'grok-3-mini-fast',\n 'grok-3-mini-fast-beta',\n 'grok-3-mini-fast-latest',\n 'grok-2-1212',\n 'grok-2-vision-1212',\n ].includes(modelId);\n}\n","import { z } from 'zod';\n\n// Add error schema and structure\nexport const xaiErrorSchema = z.object({\n code: z.string(),\n error: z.string(),\n});\n\nexport type XaiErrorData = z.infer<typeof xaiErrorSchema>;\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EAGE;AAAA,OAEK;AACP;AAAA,EAEE;AAAA,EACA;AAAA,OACK;;;ACWA,SAAS,0BAA0B,SAAyB;AACjE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,SAAS,OAAO;AACpB;;;AC3CA,SAAS,SAAS;AAGX,IAAM,iBAAiB,EAAE,OAAO;AAAA,EACrC,MAAM,EAAE,OAAO;AAAA,EACf,OAAO,EAAE,OAAO;AAClB,CAAC;;;AFcD,IAAM,oBAA0D;AAAA,EAC9D,aAAa;AAAA,EACb,gBAAgB,UAAQ,KAAK;AAC/B;AAqDO,SAAS,UAAU,UAA+B,CAAC,GAAgB;AA5E1E;AA6EE,QAAM,UAAU;AAAA,KACd,aAAQ,YAAR,YAAmB;AAAA,EACrB;AACA,QAAM,aAAa,OAAO;AAAA,IACxB,eAAe,UAAU,WAAW;AAAA,MAClC,QAAQ,QAAQ;AAAA,MAChB,yBAAyB;AAAA,MACzB,aAAa;AAAA,IACf,CAAC,CAAC;AAAA,IACF,GAAG,QAAQ;AAAA,EACb;AAEA,QAAM,sBAAsB,CAAC,YAA4B;AACvD,UAAM,oBAAoB,0BAA0B,OAAO;AAC3D,WAAO,IAAI,kCAAkC,SAAS;AAAA,MACpD,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,gBAAgB;AAAA,MAChB,2BAA2B;AAAA,MAC3B,cAAc;AAAA,IAChB,CAAC;AAAA,EACH;AAEA,QAAM,mBAAmB,CAAC,YAA6B;AACrD,WAAO,IAAI,2BAA2B,SAAS;AAAA,MAC7C,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,CAAC,YAA4B,oBAAoB,OAAO;AAEzE,WAAS,gBAAgB;AACzB,WAAS,OAAO;AAChB,WAAS,qBAAqB,CAAC,YAAoB;AACjD,UAAM,IAAI,iBAAiB,EAAE,SAAS,WAAW,qBAAqB,CAAC;AAAA,EACzE;AACA,WAAS,aAAa;AACtB,WAAS,QAAQ;AAEjB,SAAO;AACT;AAEO,IAAM,MAAM,UAAU;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/xai",
3
- "version": "1.2.16",
3
+ "version": "2.0.0-alpha.2",
4
4
  "license": "Apache-2.0",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.js",
@@ -19,19 +19,19 @@
19
19
  }
20
20
  },
21
21
  "dependencies": {
22
- "@ai-sdk/openai-compatible": "0.2.14",
23
- "@ai-sdk/provider": "1.1.3",
24
- "@ai-sdk/provider-utils": "2.2.8"
22
+ "@ai-sdk/provider": "2.0.0-alpha.2",
23
+ "@ai-sdk/provider-utils": "3.0.0-alpha.2",
24
+ "@ai-sdk/openai-compatible": "1.0.0-alpha.2"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/node": "20.17.24",
28
28
  "tsup": "^8",
29
- "typescript": "5.6.3",
30
- "zod": "3.23.8",
29
+ "typescript": "5.8.3",
30
+ "zod": "3.24.4",
31
31
  "@vercel/ai-tsconfig": "0.0.0"
32
32
  },
33
33
  "peerDependencies": {
34
- "zod": "^3.0.0"
34
+ "zod": "^3.24.0"
35
35
  },
36
36
  "engines": {
37
37
  "node": ">=18"
@@ -51,13 +51,15 @@
51
51
  "ai"
52
52
  ],
53
53
  "scripts": {
54
- "build": "tsup",
55
- "build:watch": "tsup --watch",
56
- "clean": "rm -rf dist",
54
+ "build": "pnpm clean && tsup --tsconfig tsconfig.build.json",
55
+ "build:watch": "pnpm clean && tsup --watch",
56
+ "clean": "rm -rf dist *.tsbuildinfo",
57
57
  "lint": "eslint \"./**/*.ts*\"",
58
- "type-check": "tsc --noEmit",
58
+ "type-check": "tsc --build",
59
59
  "prettier-check": "prettier --check \"./**/*.ts*\"",
60
60
  "test": "pnpm test:node && pnpm test:edge",
61
+ "test:update": "pnpm test:node -u",
62
+ "test:watch": "vitest --config vitest.node.config.js",
61
63
  "test:edge": "vitest --config vitest.edge.config.js --run",
62
64
  "test:node": "vitest --config vitest.node.config.js --run"
63
65
  }