@ai-sdk/xai 2.1.0-beta.9 → 3.0.0-beta.12
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 +31 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +98 -88
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# @ai-sdk/xai
|
|
2
2
|
|
|
3
|
+
## 3.0.0-beta.12
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 95f65c2: chore: use import \* from zod/v4
|
|
8
|
+
- Updated dependencies [95f65c2]
|
|
9
|
+
- Updated dependencies [95f65c2]
|
|
10
|
+
- @ai-sdk/openai-compatible@2.0.0-beta.11
|
|
11
|
+
- @ai-sdk/provider-utils@4.0.0-beta.11
|
|
12
|
+
|
|
13
|
+
## 3.0.0-beta.11
|
|
14
|
+
|
|
15
|
+
### Major Changes
|
|
16
|
+
|
|
17
|
+
- dee8b05: ai SDK 6 beta
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- Updated dependencies [dee8b05]
|
|
22
|
+
- @ai-sdk/openai-compatible@2.0.0-beta.10
|
|
23
|
+
- @ai-sdk/provider@3.0.0-beta.6
|
|
24
|
+
- @ai-sdk/provider-utils@4.0.0-beta.10
|
|
25
|
+
|
|
26
|
+
## 2.1.0-beta.10
|
|
27
|
+
|
|
28
|
+
### Patch Changes
|
|
29
|
+
|
|
30
|
+
- Updated dependencies [521c537]
|
|
31
|
+
- @ai-sdk/provider-utils@3.1.0-beta.9
|
|
32
|
+
- @ai-sdk/openai-compatible@1.1.0-beta.9
|
|
33
|
+
|
|
3
34
|
## 2.1.0-beta.9
|
|
4
35
|
|
|
5
36
|
### Patch Changes
|
package/dist/index.d.mts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
18
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
29
|
|
|
20
30
|
// src/index.ts
|
|
@@ -33,7 +43,7 @@ var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
|
|
33
43
|
|
|
34
44
|
// src/xai-chat-language-model.ts
|
|
35
45
|
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
|
36
|
-
var
|
|
46
|
+
var z3 = __toESM(require("zod/v4"));
|
|
37
47
|
|
|
38
48
|
// src/convert-to-xai-chat-messages.ts
|
|
39
49
|
var import_provider = require("@ai-sdk/provider");
|
|
@@ -175,87 +185,87 @@ function mapXaiFinishReason(finishReason) {
|
|
|
175
185
|
}
|
|
176
186
|
|
|
177
187
|
// src/xai-chat-options.ts
|
|
178
|
-
var
|
|
179
|
-
var webSourceSchema =
|
|
180
|
-
type:
|
|
181
|
-
country:
|
|
182
|
-
excludedWebsites:
|
|
183
|
-
allowedWebsites:
|
|
184
|
-
safeSearch:
|
|
188
|
+
var z = __toESM(require("zod/v4"));
|
|
189
|
+
var webSourceSchema = z.object({
|
|
190
|
+
type: z.literal("web"),
|
|
191
|
+
country: z.string().length(2).optional(),
|
|
192
|
+
excludedWebsites: z.array(z.string()).max(5).optional(),
|
|
193
|
+
allowedWebsites: z.array(z.string()).max(5).optional(),
|
|
194
|
+
safeSearch: z.boolean().optional()
|
|
185
195
|
});
|
|
186
|
-
var xSourceSchema =
|
|
187
|
-
type:
|
|
188
|
-
excludedXHandles:
|
|
189
|
-
includedXHandles:
|
|
190
|
-
postFavoriteCount:
|
|
191
|
-
postViewCount:
|
|
196
|
+
var xSourceSchema = z.object({
|
|
197
|
+
type: z.literal("x"),
|
|
198
|
+
excludedXHandles: z.array(z.string()).optional(),
|
|
199
|
+
includedXHandles: z.array(z.string()).optional(),
|
|
200
|
+
postFavoriteCount: z.number().int().optional(),
|
|
201
|
+
postViewCount: z.number().int().optional(),
|
|
192
202
|
/**
|
|
193
203
|
* @deprecated use `includedXHandles` instead
|
|
194
204
|
*/
|
|
195
|
-
xHandles:
|
|
205
|
+
xHandles: z.array(z.string()).optional()
|
|
196
206
|
});
|
|
197
|
-
var newsSourceSchema =
|
|
198
|
-
type:
|
|
199
|
-
country:
|
|
200
|
-
excludedWebsites:
|
|
201
|
-
safeSearch:
|
|
207
|
+
var newsSourceSchema = z.object({
|
|
208
|
+
type: z.literal("news"),
|
|
209
|
+
country: z.string().length(2).optional(),
|
|
210
|
+
excludedWebsites: z.array(z.string()).max(5).optional(),
|
|
211
|
+
safeSearch: z.boolean().optional()
|
|
202
212
|
});
|
|
203
|
-
var rssSourceSchema =
|
|
204
|
-
type:
|
|
205
|
-
links:
|
|
213
|
+
var rssSourceSchema = z.object({
|
|
214
|
+
type: z.literal("rss"),
|
|
215
|
+
links: z.array(z.string().url()).max(1)
|
|
206
216
|
// currently only supports one RSS link
|
|
207
217
|
});
|
|
208
|
-
var searchSourceSchema =
|
|
218
|
+
var searchSourceSchema = z.discriminatedUnion("type", [
|
|
209
219
|
webSourceSchema,
|
|
210
220
|
xSourceSchema,
|
|
211
221
|
newsSourceSchema,
|
|
212
222
|
rssSourceSchema
|
|
213
223
|
]);
|
|
214
|
-
var xaiProviderOptions =
|
|
215
|
-
reasoningEffort:
|
|
216
|
-
searchParameters:
|
|
224
|
+
var xaiProviderOptions = z.object({
|
|
225
|
+
reasoningEffort: z.enum(["low", "high"]).optional(),
|
|
226
|
+
searchParameters: z.object({
|
|
217
227
|
/**
|
|
218
228
|
* search mode preference
|
|
219
229
|
* - "off": disables search completely
|
|
220
230
|
* - "auto": model decides whether to search (default)
|
|
221
231
|
* - "on": always enables search
|
|
222
232
|
*/
|
|
223
|
-
mode:
|
|
233
|
+
mode: z.enum(["off", "auto", "on"]),
|
|
224
234
|
/**
|
|
225
235
|
* whether to return citations in the response
|
|
226
236
|
* defaults to true
|
|
227
237
|
*/
|
|
228
|
-
returnCitations:
|
|
238
|
+
returnCitations: z.boolean().optional(),
|
|
229
239
|
/**
|
|
230
240
|
* start date for search data (ISO8601 format: YYYY-MM-DD)
|
|
231
241
|
*/
|
|
232
|
-
fromDate:
|
|
242
|
+
fromDate: z.string().optional(),
|
|
233
243
|
/**
|
|
234
244
|
* end date for search data (ISO8601 format: YYYY-MM-DD)
|
|
235
245
|
*/
|
|
236
|
-
toDate:
|
|
246
|
+
toDate: z.string().optional(),
|
|
237
247
|
/**
|
|
238
248
|
* maximum number of search results to consider
|
|
239
249
|
* defaults to 20
|
|
240
250
|
*/
|
|
241
|
-
maxSearchResults:
|
|
251
|
+
maxSearchResults: z.number().min(1).max(50).optional(),
|
|
242
252
|
/**
|
|
243
253
|
* data sources to search from
|
|
244
254
|
* defaults to ["web", "x"] if not specified
|
|
245
255
|
*/
|
|
246
|
-
sources:
|
|
256
|
+
sources: z.array(searchSourceSchema).optional()
|
|
247
257
|
}).optional()
|
|
248
258
|
});
|
|
249
259
|
|
|
250
260
|
// src/xai-error.ts
|
|
251
261
|
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
|
252
|
-
var
|
|
253
|
-
var xaiErrorDataSchema =
|
|
254
|
-
error:
|
|
255
|
-
message:
|
|
256
|
-
type:
|
|
257
|
-
param:
|
|
258
|
-
code:
|
|
262
|
+
var z2 = __toESM(require("zod/v4"));
|
|
263
|
+
var xaiErrorDataSchema = z2.object({
|
|
264
|
+
error: z2.object({
|
|
265
|
+
message: z2.string(),
|
|
266
|
+
type: z2.string().nullish(),
|
|
267
|
+
param: z2.any().nullish(),
|
|
268
|
+
code: z2.union([z2.string(), z2.number()]).nullish()
|
|
259
269
|
})
|
|
260
270
|
});
|
|
261
271
|
var xaiFailedResponseHandler = (0, import_provider_utils2.createJsonErrorResponseHandler)({
|
|
@@ -689,74 +699,74 @@ var XaiChatLanguageModel = class {
|
|
|
689
699
|
};
|
|
690
700
|
}
|
|
691
701
|
};
|
|
692
|
-
var xaiUsageSchema =
|
|
693
|
-
prompt_tokens:
|
|
694
|
-
completion_tokens:
|
|
695
|
-
total_tokens:
|
|
696
|
-
completion_tokens_details:
|
|
697
|
-
reasoning_tokens:
|
|
702
|
+
var xaiUsageSchema = z3.object({
|
|
703
|
+
prompt_tokens: z3.number(),
|
|
704
|
+
completion_tokens: z3.number(),
|
|
705
|
+
total_tokens: z3.number(),
|
|
706
|
+
completion_tokens_details: z3.object({
|
|
707
|
+
reasoning_tokens: z3.number().nullish()
|
|
698
708
|
}).nullish()
|
|
699
709
|
});
|
|
700
|
-
var xaiChatResponseSchema =
|
|
701
|
-
id:
|
|
702
|
-
created:
|
|
703
|
-
model:
|
|
704
|
-
choices:
|
|
705
|
-
|
|
706
|
-
message:
|
|
707
|
-
role:
|
|
708
|
-
content:
|
|
709
|
-
reasoning_content:
|
|
710
|
-
tool_calls:
|
|
711
|
-
|
|
712
|
-
id:
|
|
713
|
-
type:
|
|
714
|
-
function:
|
|
715
|
-
name:
|
|
716
|
-
arguments:
|
|
710
|
+
var xaiChatResponseSchema = z3.object({
|
|
711
|
+
id: z3.string().nullish(),
|
|
712
|
+
created: z3.number().nullish(),
|
|
713
|
+
model: z3.string().nullish(),
|
|
714
|
+
choices: z3.array(
|
|
715
|
+
z3.object({
|
|
716
|
+
message: z3.object({
|
|
717
|
+
role: z3.literal("assistant"),
|
|
718
|
+
content: z3.string().nullish(),
|
|
719
|
+
reasoning_content: z3.string().nullish(),
|
|
720
|
+
tool_calls: z3.array(
|
|
721
|
+
z3.object({
|
|
722
|
+
id: z3.string(),
|
|
723
|
+
type: z3.literal("function"),
|
|
724
|
+
function: z3.object({
|
|
725
|
+
name: z3.string(),
|
|
726
|
+
arguments: z3.string()
|
|
717
727
|
})
|
|
718
728
|
})
|
|
719
729
|
).nullish()
|
|
720
730
|
}),
|
|
721
|
-
index:
|
|
722
|
-
finish_reason:
|
|
731
|
+
index: z3.number(),
|
|
732
|
+
finish_reason: z3.string().nullish()
|
|
723
733
|
})
|
|
724
734
|
),
|
|
725
|
-
object:
|
|
735
|
+
object: z3.literal("chat.completion"),
|
|
726
736
|
usage: xaiUsageSchema,
|
|
727
|
-
citations:
|
|
737
|
+
citations: z3.array(z3.string().url()).nullish()
|
|
728
738
|
});
|
|
729
|
-
var xaiChatChunkSchema =
|
|
730
|
-
id:
|
|
731
|
-
created:
|
|
732
|
-
model:
|
|
733
|
-
choices:
|
|
734
|
-
|
|
735
|
-
delta:
|
|
736
|
-
role:
|
|
737
|
-
content:
|
|
738
|
-
reasoning_content:
|
|
739
|
-
tool_calls:
|
|
740
|
-
|
|
741
|
-
id:
|
|
742
|
-
type:
|
|
743
|
-
function:
|
|
744
|
-
name:
|
|
745
|
-
arguments:
|
|
739
|
+
var xaiChatChunkSchema = z3.object({
|
|
740
|
+
id: z3.string().nullish(),
|
|
741
|
+
created: z3.number().nullish(),
|
|
742
|
+
model: z3.string().nullish(),
|
|
743
|
+
choices: z3.array(
|
|
744
|
+
z3.object({
|
|
745
|
+
delta: z3.object({
|
|
746
|
+
role: z3.enum(["assistant"]).optional(),
|
|
747
|
+
content: z3.string().nullish(),
|
|
748
|
+
reasoning_content: z3.string().nullish(),
|
|
749
|
+
tool_calls: z3.array(
|
|
750
|
+
z3.object({
|
|
751
|
+
id: z3.string(),
|
|
752
|
+
type: z3.literal("function"),
|
|
753
|
+
function: z3.object({
|
|
754
|
+
name: z3.string(),
|
|
755
|
+
arguments: z3.string()
|
|
746
756
|
})
|
|
747
757
|
})
|
|
748
758
|
).nullish()
|
|
749
759
|
}),
|
|
750
|
-
finish_reason:
|
|
751
|
-
index:
|
|
760
|
+
finish_reason: z3.string().nullish(),
|
|
761
|
+
index: z3.number()
|
|
752
762
|
})
|
|
753
763
|
),
|
|
754
764
|
usage: xaiUsageSchema.nullish(),
|
|
755
|
-
citations:
|
|
765
|
+
citations: z3.array(z3.string().url()).nullish()
|
|
756
766
|
});
|
|
757
767
|
|
|
758
768
|
// src/version.ts
|
|
759
|
-
var VERSION = true ? "
|
|
769
|
+
var VERSION = true ? "3.0.0-beta.12" : "0.0.0-test";
|
|
760
770
|
|
|
761
771
|
// src/xai-provider.ts
|
|
762
772
|
var xaiErrorStructure = {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/xai-provider.ts","../src/xai-chat-language-model.ts","../src/convert-to-xai-chat-messages.ts","../src/get-response-metadata.ts","../src/map-xai-finish-reason.ts","../src/xai-chat-options.ts","../src/xai-error.ts","../src/xai-prepare-tools.ts","../src/version.ts"],"sourcesContent":["export type { XaiProviderOptions } from './xai-chat-options';\nexport type { XaiErrorData } from './xai-error';\nexport { createXai, xai } from './xai-provider';\nexport type { XaiProvider, XaiProviderSettings } from './xai-provider';\nexport { VERSION } from './version';\n","import {\n OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n ImageModelV3,\n LanguageModelV3,\n NoSuchModelError,\n ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatLanguageModel } from './xai-chat-language-model';\nimport { XaiChatModelId } from './xai-chat-options';\nimport { XaiErrorData, xaiErrorDataSchema } from './xai-error';\nimport { XaiImageModelId } from './xai-image-settings';\nimport { VERSION } from './version';\n\nconst xaiErrorStructure: ProviderErrorStructure<XaiErrorData> = {\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n};\n\nexport interface XaiProvider extends ProviderV3 {\n /**\nCreates an Xai chat model for text generation.\n */\n (modelId: XaiChatModelId): LanguageModelV3;\n\n /**\nCreates an Xai language model for text generation.\n */\n languageModel(modelId: XaiChatModelId): LanguageModelV3;\n\n /**\nCreates an Xai chat model for text generation.\n */\n chat: (modelId: XaiChatModelId) => LanguageModelV3;\n\n /**\nCreates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId): ImageModelV3;\n\n /**\nCreates an Xai image model for image generation.\n */\n imageModel(modelId: XaiImageModelId): ImageModelV3;\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 withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'XAI_API_KEY',\n description: 'xAI API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/xai/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: XaiChatModelId) => {\n return new XaiChatLanguageModel(modelId, {\n provider: 'xai.chat',\n baseURL,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\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","import {\n LanguageModelV3,\n LanguageModelV3CallWarning,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3StreamPart,\n LanguageModelV3Usage,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertToXaiChatMessages } from './convert-to-xai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapXaiFinishReason } from './map-xai-finish-reason';\nimport { XaiChatModelId, xaiProviderOptions } from './xai-chat-options';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { prepareTools } from './xai-prepare-tools';\n\ntype XaiChatConfig = {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class XaiChatLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n\n readonly modelId: XaiChatModelId;\n\n private readonly config: XaiChatConfig;\n\n constructor(modelId: XaiChatModelId, config: XaiChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n seed,\n responseFormat,\n providerOptions,\n tools,\n toolChoice,\n }: Parameters<LanguageModelV3['doGenerate']>[0]) {\n const warnings: LanguageModelV3CallWarning[] = [];\n\n // parse xai-specific provider options\n const options =\n (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiProviderOptions,\n })) ?? {};\n\n // check for unsupported parameters\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'stopSequences',\n });\n }\n\n if (\n responseFormat != null &&\n responseFormat.type === 'json' &&\n responseFormat.schema != null\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format schema is not supported',\n });\n }\n\n // convert ai sdk messages to xai format\n const { messages, warnings: messageWarnings } =\n convertToXaiChatMessages(prompt);\n warnings.push(...messageWarnings);\n\n // prepare tools for xai\n const {\n tools: xaiTools,\n toolChoice: xaiToolChoice,\n toolWarnings,\n } = prepareTools({\n tools,\n toolChoice,\n });\n warnings.push(...toolWarnings);\n\n const baseArgs = {\n // model id\n model: this.modelId,\n\n // standard generation settings\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n seed,\n reasoning_effort: options.reasoningEffort,\n\n // response format\n response_format:\n responseFormat?.type === 'json'\n ? responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n name: responseFormat.name ?? 'response',\n schema: responseFormat.schema,\n strict: true,\n },\n }\n : { type: 'json_object' }\n : undefined,\n\n // search parameters\n search_parameters: options.searchParameters\n ? {\n mode: options.searchParameters.mode,\n return_citations: options.searchParameters.returnCitations,\n from_date: options.searchParameters.fromDate,\n to_date: options.searchParameters.toDate,\n max_search_results: options.searchParameters.maxSearchResults,\n sources: options.searchParameters.sources?.map(source => ({\n type: source.type,\n ...(source.type === 'web' && {\n country: source.country,\n excluded_websites: source.excludedWebsites,\n allowed_websites: source.allowedWebsites,\n safe_search: source.safeSearch,\n }),\n ...(source.type === 'x' && {\n excluded_x_handles: source.excludedXHandles,\n included_x_handles: source.includedXHandles ?? source.xHandles,\n post_favorite_count: source.postFavoriteCount,\n post_view_count: source.postViewCount,\n }),\n ...(source.type === 'news' && {\n country: source.country,\n excluded_websites: source.excludedWebsites,\n safe_search: source.safeSearch,\n }),\n ...(source.type === 'rss' && {\n links: source.links,\n }),\n })),\n }\n : undefined,\n\n // messages in xai format\n messages,\n\n // tools in xai format\n tools: xaiTools,\n tool_choice: xaiToolChoice,\n };\n\n return {\n args: baseArgs,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV3['doGenerate']>>> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV3Content> = [];\n\n // extract text content\n if (choice.message.content != null && choice.message.content.length > 0) {\n let text = choice.message.content;\n\n // skip if this content duplicates the last assistant message\n const lastMessage = body.messages[body.messages.length - 1];\n if (lastMessage?.role === 'assistant' && text === lastMessage.content) {\n text = '';\n }\n\n if (text.length > 0) {\n content.push({ type: 'text', text });\n }\n }\n\n // extract reasoning content\n if (\n choice.message.reasoning_content != null &&\n choice.message.reasoning_content.length > 0\n ) {\n content.push({\n type: 'reasoning',\n text: choice.message.reasoning_content,\n });\n }\n\n // extract tool calls\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n }\n }\n\n // extract citations\n if (response.citations != null) {\n for (const url of response.citations) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url,\n });\n }\n }\n\n return {\n content,\n finishReason: mapXaiFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage.prompt_tokens,\n outputTokens: response.usage.completion_tokens,\n totalTokens: response.usage.total_tokens,\n reasoningTokens:\n response.usage.completion_tokens_details?.reasoning_tokens ??\n undefined,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV3['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV3['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n const body = {\n ...args,\n stream: true,\n stream_options: {\n include_usage: true,\n },\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler:\n createEventSourceResponseHandler(xaiChatChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV3FinishReason = 'unknown';\n const usage: LanguageModelV3Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let isFirstChunk = true;\n const contentBlocks: Record<string, { type: 'text' | 'reasoning' }> = {};\n const lastReasoningDeltas: Record<string, string> = {};\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof xaiChatChunkSchema>>,\n LanguageModelV3StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // emit response metadata on first chunk\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n isFirstChunk = false;\n }\n\n // emit citations if present (they come in the last chunk according to docs)\n if (value.citations != null) {\n for (const url of value.citations) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url,\n });\n }\n }\n\n // update usage if present\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens = value.usage.total_tokens;\n usage.reasoningTokens =\n value.usage.completion_tokens_details?.reasoning_tokens ??\n undefined;\n }\n\n const choice = value.choices[0];\n\n // update finish reason if present\n if (choice?.finish_reason != null) {\n finishReason = mapXaiFinishReason(choice.finish_reason);\n }\n\n // exit if no delta to process\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n const choiceIndex = choice.index;\n\n // process text content\n if (delta.content != null && delta.content.length > 0) {\n const textContent = delta.content;\n\n // skip if this content duplicates the last assistant message\n const lastMessage = body.messages[body.messages.length - 1];\n if (\n lastMessage?.role === 'assistant' &&\n textContent === lastMessage.content\n ) {\n return;\n }\n\n const blockId = `text-${value.id || choiceIndex}`;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: textContent,\n });\n }\n\n // process reasoning content\n if (\n delta.reasoning_content != null &&\n delta.reasoning_content.length > 0\n ) {\n const blockId = `reasoning-${value.id || choiceIndex}`;\n\n // skip if this reasoning content duplicates the last delta\n if (lastReasoningDeltas[blockId] === delta.reasoning_content) {\n return;\n }\n lastReasoningDeltas[blockId] = delta.reasoning_content;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'reasoning' };\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: delta.reasoning_content,\n });\n }\n\n // process tool calls\n if (delta.tool_calls != null) {\n for (const toolCall of delta.tool_calls) {\n // xai tool calls come in one piece (like mistral)\n const toolCallId = toolCall.id;\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCallId,\n toolName: toolCall.function.name,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCallId,\n delta: toolCall.function.arguments,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCallId,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n }\n }\n },\n\n flush(controller) {\n for (const [blockId, block] of Object.entries(contentBlocks)) {\n controller.enqueue({\n type: block.type === 'text' ? 'text-end' : 'reasoning-end',\n id: blockId,\n });\n }\n\n controller.enqueue({ type: 'finish', finishReason, usage });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\n// XAI API Response Schemas\nconst xaiUsageSchema = z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n })\n .nullish(),\n});\n\nconst xaiChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant'),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n ),\n object: z.literal('chat.completion'),\n usage: xaiUsageSchema,\n citations: z.array(z.string().url()).nullish(),\n});\n\nconst xaiChatChunkSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z.object({\n role: z.enum(['assistant']).optional(),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string().nullish(),\n index: z.number(),\n }),\n ),\n usage: xaiUsageSchema.nullish(),\n citations: z.array(z.string().url()).nullish(),\n});\n","import {\n LanguageModelV3CallWarning,\n LanguageModelV3Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\nimport { XaiChatPrompt } from './xai-chat-prompt';\n\nexport function convertToXaiChatMessages(prompt: LanguageModelV3Prompt): {\n messages: XaiChatPrompt;\n warnings: Array<LanguageModelV3CallWarning>;\n} {\n const messages: XaiChatPrompt = [];\n const warnings: Array<LanguageModelV3CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({ role: 'user', content: content[0].text });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'image_url',\n image_url: {\n url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n },\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'execution-denied':\n contentValue = output.reason ?? 'Tool execution denied.';\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { messages, warnings };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created != null ? new Date(created * 1000) : undefined,\n };\n}\n","import { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV3FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls';\n case 'content_filter':\n return 'content-filter';\n default:\n return 'unknown';\n }\n}\n","import { z } from 'zod/v4';\n\n// https://console.x.ai and see \"View models\"\nexport type XaiChatModelId =\n | 'grok-4-fast-non-reasoning'\n | 'grok-4-fast-reasoning'\n | 'grok-code-fast-1'\n | 'grok-4'\n | 'grok-4-0709'\n | 'grok-4-latest'\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// search source schemas\nconst webSourceSchema = z.object({\n type: z.literal('web'),\n country: z.string().length(2).optional(),\n excludedWebsites: z.array(z.string()).max(5).optional(),\n allowedWebsites: z.array(z.string()).max(5).optional(),\n safeSearch: z.boolean().optional(),\n});\n\nconst xSourceSchema = z.object({\n type: z.literal('x'),\n excludedXHandles: z.array(z.string()).optional(),\n includedXHandles: z.array(z.string()).optional(),\n postFavoriteCount: z.number().int().optional(),\n postViewCount: z.number().int().optional(),\n /**\n * @deprecated use `includedXHandles` instead\n */\n xHandles: z.array(z.string()).optional(),\n});\n\nconst newsSourceSchema = z.object({\n type: z.literal('news'),\n country: z.string().length(2).optional(),\n excludedWebsites: z.array(z.string()).max(5).optional(),\n safeSearch: z.boolean().optional(),\n});\n\nconst rssSourceSchema = z.object({\n type: z.literal('rss'),\n links: z.array(z.string().url()).max(1), // currently only supports one RSS link\n});\n\nconst searchSourceSchema = z.discriminatedUnion('type', [\n webSourceSchema,\n xSourceSchema,\n newsSourceSchema,\n rssSourceSchema,\n]);\n\n// xai-specific provider options\nexport const xaiProviderOptions = z.object({\n reasoningEffort: z.enum(['low', 'high']).optional(),\n\n searchParameters: z\n .object({\n /**\n * search mode preference\n * - \"off\": disables search completely\n * - \"auto\": model decides whether to search (default)\n * - \"on\": always enables search\n */\n mode: z.enum(['off', 'auto', 'on']),\n\n /**\n * whether to return citations in the response\n * defaults to true\n */\n returnCitations: z.boolean().optional(),\n\n /**\n * start date for search data (ISO8601 format: YYYY-MM-DD)\n */\n fromDate: z.string().optional(),\n\n /**\n * end date for search data (ISO8601 format: YYYY-MM-DD)\n */\n toDate: z.string().optional(),\n\n /**\n * maximum number of search results to consider\n * defaults to 20\n */\n maxSearchResults: z.number().min(1).max(50).optional(),\n\n /**\n * data sources to search from\n * defaults to [\"web\", \"x\"] if not specified\n */\n sources: z.array(searchSourceSchema).optional(),\n })\n .optional(),\n});\n\nexport type XaiProviderOptions = z.infer<typeof xaiProviderOptions>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// Add error schema and structure\nexport const xaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type XaiErrorData = z.infer<typeof xaiErrorDataSchema>;\n\nexport const xaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV3CallOptions,\n LanguageModelV3CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { XaiToolChoice } from './xai-chat-prompt';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV3CallOptions['tools'];\n toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n}): {\n tools:\n | Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }>\n | undefined;\n toolChoice: XaiToolChoice | undefined;\n toolWarnings: LanguageModelV3CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV3CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n // convert ai sdk tools to xai format\n const xaiTools: Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n xaiTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: xaiTools, toolChoice: type, toolWarnings };\n case 'required':\n // xai supports 'required' directly\n return { tools: xaiTools, toolChoice: 'required', toolWarnings };\n case 'tool':\n // xai supports specific tool selection\n return {\n tools: xaiTools,\n toolChoice: {\n type: 'function',\n function: { name: toolChoice.toolName },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_provider","import_provider_utils","import_provider_utils","import_v4","import_provider_utils","import_v4","import_provider","_a"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/xai-provider.ts","../src/xai-chat-language-model.ts","../src/convert-to-xai-chat-messages.ts","../src/get-response-metadata.ts","../src/map-xai-finish-reason.ts","../src/xai-chat-options.ts","../src/xai-error.ts","../src/xai-prepare-tools.ts","../src/version.ts"],"sourcesContent":["export type { XaiProviderOptions } from './xai-chat-options';\nexport type { XaiErrorData } from './xai-error';\nexport { createXai, xai } from './xai-provider';\nexport type { XaiProvider, XaiProviderSettings } from './xai-provider';\nexport { VERSION } from './version';\n","import {\n OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n ImageModelV3,\n LanguageModelV3,\n NoSuchModelError,\n ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatLanguageModel } from './xai-chat-language-model';\nimport { XaiChatModelId } from './xai-chat-options';\nimport { XaiErrorData, xaiErrorDataSchema } from './xai-error';\nimport { XaiImageModelId } from './xai-image-settings';\nimport { VERSION } from './version';\n\nconst xaiErrorStructure: ProviderErrorStructure<XaiErrorData> = {\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n};\n\nexport interface XaiProvider extends ProviderV3 {\n /**\nCreates an Xai chat model for text generation.\n */\n (modelId: XaiChatModelId): LanguageModelV3;\n\n /**\nCreates an Xai language model for text generation.\n */\n languageModel(modelId: XaiChatModelId): LanguageModelV3;\n\n /**\nCreates an Xai chat model for text generation.\n */\n chat: (modelId: XaiChatModelId) => LanguageModelV3;\n\n /**\nCreates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId): ImageModelV3;\n\n /**\nCreates an Xai image model for image generation.\n */\n imageModel(modelId: XaiImageModelId): ImageModelV3;\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 withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'XAI_API_KEY',\n description: 'xAI API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/xai/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: XaiChatModelId) => {\n return new XaiChatLanguageModel(modelId, {\n provider: 'xai.chat',\n baseURL,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\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","import {\n LanguageModelV3,\n LanguageModelV3CallWarning,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3StreamPart,\n LanguageModelV3Usage,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport * as z from 'zod/v4';\nimport { convertToXaiChatMessages } from './convert-to-xai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapXaiFinishReason } from './map-xai-finish-reason';\nimport { XaiChatModelId, xaiProviderOptions } from './xai-chat-options';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { prepareTools } from './xai-prepare-tools';\n\ntype XaiChatConfig = {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class XaiChatLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n\n readonly modelId: XaiChatModelId;\n\n private readonly config: XaiChatConfig;\n\n constructor(modelId: XaiChatModelId, config: XaiChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n seed,\n responseFormat,\n providerOptions,\n tools,\n toolChoice,\n }: Parameters<LanguageModelV3['doGenerate']>[0]) {\n const warnings: LanguageModelV3CallWarning[] = [];\n\n // parse xai-specific provider options\n const options =\n (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiProviderOptions,\n })) ?? {};\n\n // check for unsupported parameters\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'stopSequences',\n });\n }\n\n if (\n responseFormat != null &&\n responseFormat.type === 'json' &&\n responseFormat.schema != null\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format schema is not supported',\n });\n }\n\n // convert ai sdk messages to xai format\n const { messages, warnings: messageWarnings } =\n convertToXaiChatMessages(prompt);\n warnings.push(...messageWarnings);\n\n // prepare tools for xai\n const {\n tools: xaiTools,\n toolChoice: xaiToolChoice,\n toolWarnings,\n } = prepareTools({\n tools,\n toolChoice,\n });\n warnings.push(...toolWarnings);\n\n const baseArgs = {\n // model id\n model: this.modelId,\n\n // standard generation settings\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n seed,\n reasoning_effort: options.reasoningEffort,\n\n // response format\n response_format:\n responseFormat?.type === 'json'\n ? responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n name: responseFormat.name ?? 'response',\n schema: responseFormat.schema,\n strict: true,\n },\n }\n : { type: 'json_object' }\n : undefined,\n\n // search parameters\n search_parameters: options.searchParameters\n ? {\n mode: options.searchParameters.mode,\n return_citations: options.searchParameters.returnCitations,\n from_date: options.searchParameters.fromDate,\n to_date: options.searchParameters.toDate,\n max_search_results: options.searchParameters.maxSearchResults,\n sources: options.searchParameters.sources?.map(source => ({\n type: source.type,\n ...(source.type === 'web' && {\n country: source.country,\n excluded_websites: source.excludedWebsites,\n allowed_websites: source.allowedWebsites,\n safe_search: source.safeSearch,\n }),\n ...(source.type === 'x' && {\n excluded_x_handles: source.excludedXHandles,\n included_x_handles: source.includedXHandles ?? source.xHandles,\n post_favorite_count: source.postFavoriteCount,\n post_view_count: source.postViewCount,\n }),\n ...(source.type === 'news' && {\n country: source.country,\n excluded_websites: source.excludedWebsites,\n safe_search: source.safeSearch,\n }),\n ...(source.type === 'rss' && {\n links: source.links,\n }),\n })),\n }\n : undefined,\n\n // messages in xai format\n messages,\n\n // tools in xai format\n tools: xaiTools,\n tool_choice: xaiToolChoice,\n };\n\n return {\n args: baseArgs,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV3['doGenerate']>>> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV3Content> = [];\n\n // extract text content\n if (choice.message.content != null && choice.message.content.length > 0) {\n let text = choice.message.content;\n\n // skip if this content duplicates the last assistant message\n const lastMessage = body.messages[body.messages.length - 1];\n if (lastMessage?.role === 'assistant' && text === lastMessage.content) {\n text = '';\n }\n\n if (text.length > 0) {\n content.push({ type: 'text', text });\n }\n }\n\n // extract reasoning content\n if (\n choice.message.reasoning_content != null &&\n choice.message.reasoning_content.length > 0\n ) {\n content.push({\n type: 'reasoning',\n text: choice.message.reasoning_content,\n });\n }\n\n // extract tool calls\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n }\n }\n\n // extract citations\n if (response.citations != null) {\n for (const url of response.citations) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url,\n });\n }\n }\n\n return {\n content,\n finishReason: mapXaiFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage.prompt_tokens,\n outputTokens: response.usage.completion_tokens,\n totalTokens: response.usage.total_tokens,\n reasoningTokens:\n response.usage.completion_tokens_details?.reasoning_tokens ??\n undefined,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV3['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV3['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n const body = {\n ...args,\n stream: true,\n stream_options: {\n include_usage: true,\n },\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler:\n createEventSourceResponseHandler(xaiChatChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV3FinishReason = 'unknown';\n const usage: LanguageModelV3Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let isFirstChunk = true;\n const contentBlocks: Record<string, { type: 'text' | 'reasoning' }> = {};\n const lastReasoningDeltas: Record<string, string> = {};\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof xaiChatChunkSchema>>,\n LanguageModelV3StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // emit response metadata on first chunk\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n isFirstChunk = false;\n }\n\n // emit citations if present (they come in the last chunk according to docs)\n if (value.citations != null) {\n for (const url of value.citations) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url,\n });\n }\n }\n\n // update usage if present\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens = value.usage.total_tokens;\n usage.reasoningTokens =\n value.usage.completion_tokens_details?.reasoning_tokens ??\n undefined;\n }\n\n const choice = value.choices[0];\n\n // update finish reason if present\n if (choice?.finish_reason != null) {\n finishReason = mapXaiFinishReason(choice.finish_reason);\n }\n\n // exit if no delta to process\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n const choiceIndex = choice.index;\n\n // process text content\n if (delta.content != null && delta.content.length > 0) {\n const textContent = delta.content;\n\n // skip if this content duplicates the last assistant message\n const lastMessage = body.messages[body.messages.length - 1];\n if (\n lastMessage?.role === 'assistant' &&\n textContent === lastMessage.content\n ) {\n return;\n }\n\n const blockId = `text-${value.id || choiceIndex}`;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: textContent,\n });\n }\n\n // process reasoning content\n if (\n delta.reasoning_content != null &&\n delta.reasoning_content.length > 0\n ) {\n const blockId = `reasoning-${value.id || choiceIndex}`;\n\n // skip if this reasoning content duplicates the last delta\n if (lastReasoningDeltas[blockId] === delta.reasoning_content) {\n return;\n }\n lastReasoningDeltas[blockId] = delta.reasoning_content;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'reasoning' };\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: delta.reasoning_content,\n });\n }\n\n // process tool calls\n if (delta.tool_calls != null) {\n for (const toolCall of delta.tool_calls) {\n // xai tool calls come in one piece (like mistral)\n const toolCallId = toolCall.id;\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCallId,\n toolName: toolCall.function.name,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCallId,\n delta: toolCall.function.arguments,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCallId,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n }\n }\n },\n\n flush(controller) {\n for (const [blockId, block] of Object.entries(contentBlocks)) {\n controller.enqueue({\n type: block.type === 'text' ? 'text-end' : 'reasoning-end',\n id: blockId,\n });\n }\n\n controller.enqueue({ type: 'finish', finishReason, usage });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\n// XAI API Response Schemas\nconst xaiUsageSchema = z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n })\n .nullish(),\n});\n\nconst xaiChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant'),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n ),\n object: z.literal('chat.completion'),\n usage: xaiUsageSchema,\n citations: z.array(z.string().url()).nullish(),\n});\n\nconst xaiChatChunkSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z.object({\n role: z.enum(['assistant']).optional(),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string().nullish(),\n index: z.number(),\n }),\n ),\n usage: xaiUsageSchema.nullish(),\n citations: z.array(z.string().url()).nullish(),\n});\n","import {\n LanguageModelV3CallWarning,\n LanguageModelV3Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\nimport { XaiChatPrompt } from './xai-chat-prompt';\n\nexport function convertToXaiChatMessages(prompt: LanguageModelV3Prompt): {\n messages: XaiChatPrompt;\n warnings: Array<LanguageModelV3CallWarning>;\n} {\n const messages: XaiChatPrompt = [];\n const warnings: Array<LanguageModelV3CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({ role: 'user', content: content[0].text });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'image_url',\n image_url: {\n url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n },\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'execution-denied':\n contentValue = output.reason ?? 'Tool execution denied.';\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { messages, warnings };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created != null ? new Date(created * 1000) : undefined,\n };\n}\n","import { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV3FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls';\n case 'content_filter':\n return 'content-filter';\n default:\n return 'unknown';\n }\n}\n","import * as z from 'zod/v4';\n\n// https://console.x.ai and see \"View models\"\nexport type XaiChatModelId =\n | 'grok-4-fast-non-reasoning'\n | 'grok-4-fast-reasoning'\n | 'grok-code-fast-1'\n | 'grok-4'\n | 'grok-4-0709'\n | 'grok-4-latest'\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// search source schemas\nconst webSourceSchema = z.object({\n type: z.literal('web'),\n country: z.string().length(2).optional(),\n excludedWebsites: z.array(z.string()).max(5).optional(),\n allowedWebsites: z.array(z.string()).max(5).optional(),\n safeSearch: z.boolean().optional(),\n});\n\nconst xSourceSchema = z.object({\n type: z.literal('x'),\n excludedXHandles: z.array(z.string()).optional(),\n includedXHandles: z.array(z.string()).optional(),\n postFavoriteCount: z.number().int().optional(),\n postViewCount: z.number().int().optional(),\n /**\n * @deprecated use `includedXHandles` instead\n */\n xHandles: z.array(z.string()).optional(),\n});\n\nconst newsSourceSchema = z.object({\n type: z.literal('news'),\n country: z.string().length(2).optional(),\n excludedWebsites: z.array(z.string()).max(5).optional(),\n safeSearch: z.boolean().optional(),\n});\n\nconst rssSourceSchema = z.object({\n type: z.literal('rss'),\n links: z.array(z.string().url()).max(1), // currently only supports one RSS link\n});\n\nconst searchSourceSchema = z.discriminatedUnion('type', [\n webSourceSchema,\n xSourceSchema,\n newsSourceSchema,\n rssSourceSchema,\n]);\n\n// xai-specific provider options\nexport const xaiProviderOptions = z.object({\n reasoningEffort: z.enum(['low', 'high']).optional(),\n\n searchParameters: z\n .object({\n /**\n * search mode preference\n * - \"off\": disables search completely\n * - \"auto\": model decides whether to search (default)\n * - \"on\": always enables search\n */\n mode: z.enum(['off', 'auto', 'on']),\n\n /**\n * whether to return citations in the response\n * defaults to true\n */\n returnCitations: z.boolean().optional(),\n\n /**\n * start date for search data (ISO8601 format: YYYY-MM-DD)\n */\n fromDate: z.string().optional(),\n\n /**\n * end date for search data (ISO8601 format: YYYY-MM-DD)\n */\n toDate: z.string().optional(),\n\n /**\n * maximum number of search results to consider\n * defaults to 20\n */\n maxSearchResults: z.number().min(1).max(50).optional(),\n\n /**\n * data sources to search from\n * defaults to [\"web\", \"x\"] if not specified\n */\n sources: z.array(searchSourceSchema).optional(),\n })\n .optional(),\n});\n\nexport type XaiProviderOptions = z.infer<typeof xaiProviderOptions>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport * as z from 'zod/v4';\n\n// Add error schema and structure\nexport const xaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type XaiErrorData = z.infer<typeof xaiErrorDataSchema>;\n\nexport const xaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV3CallOptions,\n LanguageModelV3CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { XaiToolChoice } from './xai-chat-prompt';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV3CallOptions['tools'];\n toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n}): {\n tools:\n | Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }>\n | undefined;\n toolChoice: XaiToolChoice | undefined;\n toolWarnings: LanguageModelV3CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV3CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n // convert ai sdk tools to xai format\n const xaiTools: Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n xaiTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: xaiTools, toolChoice: type, toolWarnings };\n case 'required':\n // xai supports 'required' directly\n return { tools: xaiTools, toolChoice: 'required', toolWarnings };\n case 'tool':\n // xai supports specific tool selection\n return {\n tools: xaiTools,\n toolChoice: {\n type: 'function',\n function: { name: toolChoice.toolName },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_provider","import_provider_utils","import_provider_utils","z","import_provider_utils","z","import_provider","_a"]}
|
package/dist/index.mjs
CHANGED
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
parseProviderOptions,
|
|
21
21
|
postJsonToApi
|
|
22
22
|
} from "@ai-sdk/provider-utils";
|
|
23
|
-
import
|
|
23
|
+
import * as z3 from "zod/v4";
|
|
24
24
|
|
|
25
25
|
// src/convert-to-xai-chat-messages.ts
|
|
26
26
|
import {
|
|
@@ -164,7 +164,7 @@ function mapXaiFinishReason(finishReason) {
|
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
// src/xai-chat-options.ts
|
|
167
|
-
import
|
|
167
|
+
import * as z from "zod/v4";
|
|
168
168
|
var webSourceSchema = z.object({
|
|
169
169
|
type: z.literal("web"),
|
|
170
170
|
country: z.string().length(2).optional(),
|
|
@@ -238,7 +238,7 @@ var xaiProviderOptions = z.object({
|
|
|
238
238
|
|
|
239
239
|
// src/xai-error.ts
|
|
240
240
|
import { createJsonErrorResponseHandler } from "@ai-sdk/provider-utils";
|
|
241
|
-
import
|
|
241
|
+
import * as z2 from "zod/v4";
|
|
242
242
|
var xaiErrorDataSchema = z2.object({
|
|
243
243
|
error: z2.object({
|
|
244
244
|
message: z2.string(),
|
|
@@ -747,7 +747,7 @@ var xaiChatChunkSchema = z3.object({
|
|
|
747
747
|
});
|
|
748
748
|
|
|
749
749
|
// src/version.ts
|
|
750
|
-
var VERSION = true ? "
|
|
750
|
+
var VERSION = true ? "3.0.0-beta.12" : "0.0.0-test";
|
|
751
751
|
|
|
752
752
|
// src/xai-provider.ts
|
|
753
753
|
var xaiErrorStructure = {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/xai-provider.ts","../src/xai-chat-language-model.ts","../src/convert-to-xai-chat-messages.ts","../src/get-response-metadata.ts","../src/map-xai-finish-reason.ts","../src/xai-chat-options.ts","../src/xai-error.ts","../src/xai-prepare-tools.ts","../src/version.ts"],"sourcesContent":["import {\n OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n ImageModelV3,\n LanguageModelV3,\n NoSuchModelError,\n ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatLanguageModel } from './xai-chat-language-model';\nimport { XaiChatModelId } from './xai-chat-options';\nimport { XaiErrorData, xaiErrorDataSchema } from './xai-error';\nimport { XaiImageModelId } from './xai-image-settings';\nimport { VERSION } from './version';\n\nconst xaiErrorStructure: ProviderErrorStructure<XaiErrorData> = {\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n};\n\nexport interface XaiProvider extends ProviderV3 {\n /**\nCreates an Xai chat model for text generation.\n */\n (modelId: XaiChatModelId): LanguageModelV3;\n\n /**\nCreates an Xai language model for text generation.\n */\n languageModel(modelId: XaiChatModelId): LanguageModelV3;\n\n /**\nCreates an Xai chat model for text generation.\n */\n chat: (modelId: XaiChatModelId) => LanguageModelV3;\n\n /**\nCreates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId): ImageModelV3;\n\n /**\nCreates an Xai image model for image generation.\n */\n imageModel(modelId: XaiImageModelId): ImageModelV3;\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 withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'XAI_API_KEY',\n description: 'xAI API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/xai/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: XaiChatModelId) => {\n return new XaiChatLanguageModel(modelId, {\n provider: 'xai.chat',\n baseURL,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\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","import {\n LanguageModelV3,\n LanguageModelV3CallWarning,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3StreamPart,\n LanguageModelV3Usage,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertToXaiChatMessages } from './convert-to-xai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapXaiFinishReason } from './map-xai-finish-reason';\nimport { XaiChatModelId, xaiProviderOptions } from './xai-chat-options';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { prepareTools } from './xai-prepare-tools';\n\ntype XaiChatConfig = {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class XaiChatLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n\n readonly modelId: XaiChatModelId;\n\n private readonly config: XaiChatConfig;\n\n constructor(modelId: XaiChatModelId, config: XaiChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n seed,\n responseFormat,\n providerOptions,\n tools,\n toolChoice,\n }: Parameters<LanguageModelV3['doGenerate']>[0]) {\n const warnings: LanguageModelV3CallWarning[] = [];\n\n // parse xai-specific provider options\n const options =\n (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiProviderOptions,\n })) ?? {};\n\n // check for unsupported parameters\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'stopSequences',\n });\n }\n\n if (\n responseFormat != null &&\n responseFormat.type === 'json' &&\n responseFormat.schema != null\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format schema is not supported',\n });\n }\n\n // convert ai sdk messages to xai format\n const { messages, warnings: messageWarnings } =\n convertToXaiChatMessages(prompt);\n warnings.push(...messageWarnings);\n\n // prepare tools for xai\n const {\n tools: xaiTools,\n toolChoice: xaiToolChoice,\n toolWarnings,\n } = prepareTools({\n tools,\n toolChoice,\n });\n warnings.push(...toolWarnings);\n\n const baseArgs = {\n // model id\n model: this.modelId,\n\n // standard generation settings\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n seed,\n reasoning_effort: options.reasoningEffort,\n\n // response format\n response_format:\n responseFormat?.type === 'json'\n ? responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n name: responseFormat.name ?? 'response',\n schema: responseFormat.schema,\n strict: true,\n },\n }\n : { type: 'json_object' }\n : undefined,\n\n // search parameters\n search_parameters: options.searchParameters\n ? {\n mode: options.searchParameters.mode,\n return_citations: options.searchParameters.returnCitations,\n from_date: options.searchParameters.fromDate,\n to_date: options.searchParameters.toDate,\n max_search_results: options.searchParameters.maxSearchResults,\n sources: options.searchParameters.sources?.map(source => ({\n type: source.type,\n ...(source.type === 'web' && {\n country: source.country,\n excluded_websites: source.excludedWebsites,\n allowed_websites: source.allowedWebsites,\n safe_search: source.safeSearch,\n }),\n ...(source.type === 'x' && {\n excluded_x_handles: source.excludedXHandles,\n included_x_handles: source.includedXHandles ?? source.xHandles,\n post_favorite_count: source.postFavoriteCount,\n post_view_count: source.postViewCount,\n }),\n ...(source.type === 'news' && {\n country: source.country,\n excluded_websites: source.excludedWebsites,\n safe_search: source.safeSearch,\n }),\n ...(source.type === 'rss' && {\n links: source.links,\n }),\n })),\n }\n : undefined,\n\n // messages in xai format\n messages,\n\n // tools in xai format\n tools: xaiTools,\n tool_choice: xaiToolChoice,\n };\n\n return {\n args: baseArgs,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV3['doGenerate']>>> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV3Content> = [];\n\n // extract text content\n if (choice.message.content != null && choice.message.content.length > 0) {\n let text = choice.message.content;\n\n // skip if this content duplicates the last assistant message\n const lastMessage = body.messages[body.messages.length - 1];\n if (lastMessage?.role === 'assistant' && text === lastMessage.content) {\n text = '';\n }\n\n if (text.length > 0) {\n content.push({ type: 'text', text });\n }\n }\n\n // extract reasoning content\n if (\n choice.message.reasoning_content != null &&\n choice.message.reasoning_content.length > 0\n ) {\n content.push({\n type: 'reasoning',\n text: choice.message.reasoning_content,\n });\n }\n\n // extract tool calls\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n }\n }\n\n // extract citations\n if (response.citations != null) {\n for (const url of response.citations) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url,\n });\n }\n }\n\n return {\n content,\n finishReason: mapXaiFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage.prompt_tokens,\n outputTokens: response.usage.completion_tokens,\n totalTokens: response.usage.total_tokens,\n reasoningTokens:\n response.usage.completion_tokens_details?.reasoning_tokens ??\n undefined,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV3['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV3['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n const body = {\n ...args,\n stream: true,\n stream_options: {\n include_usage: true,\n },\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler:\n createEventSourceResponseHandler(xaiChatChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV3FinishReason = 'unknown';\n const usage: LanguageModelV3Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let isFirstChunk = true;\n const contentBlocks: Record<string, { type: 'text' | 'reasoning' }> = {};\n const lastReasoningDeltas: Record<string, string> = {};\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof xaiChatChunkSchema>>,\n LanguageModelV3StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // emit response metadata on first chunk\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n isFirstChunk = false;\n }\n\n // emit citations if present (they come in the last chunk according to docs)\n if (value.citations != null) {\n for (const url of value.citations) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url,\n });\n }\n }\n\n // update usage if present\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens = value.usage.total_tokens;\n usage.reasoningTokens =\n value.usage.completion_tokens_details?.reasoning_tokens ??\n undefined;\n }\n\n const choice = value.choices[0];\n\n // update finish reason if present\n if (choice?.finish_reason != null) {\n finishReason = mapXaiFinishReason(choice.finish_reason);\n }\n\n // exit if no delta to process\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n const choiceIndex = choice.index;\n\n // process text content\n if (delta.content != null && delta.content.length > 0) {\n const textContent = delta.content;\n\n // skip if this content duplicates the last assistant message\n const lastMessage = body.messages[body.messages.length - 1];\n if (\n lastMessage?.role === 'assistant' &&\n textContent === lastMessage.content\n ) {\n return;\n }\n\n const blockId = `text-${value.id || choiceIndex}`;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: textContent,\n });\n }\n\n // process reasoning content\n if (\n delta.reasoning_content != null &&\n delta.reasoning_content.length > 0\n ) {\n const blockId = `reasoning-${value.id || choiceIndex}`;\n\n // skip if this reasoning content duplicates the last delta\n if (lastReasoningDeltas[blockId] === delta.reasoning_content) {\n return;\n }\n lastReasoningDeltas[blockId] = delta.reasoning_content;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'reasoning' };\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: delta.reasoning_content,\n });\n }\n\n // process tool calls\n if (delta.tool_calls != null) {\n for (const toolCall of delta.tool_calls) {\n // xai tool calls come in one piece (like mistral)\n const toolCallId = toolCall.id;\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCallId,\n toolName: toolCall.function.name,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCallId,\n delta: toolCall.function.arguments,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCallId,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n }\n }\n },\n\n flush(controller) {\n for (const [blockId, block] of Object.entries(contentBlocks)) {\n controller.enqueue({\n type: block.type === 'text' ? 'text-end' : 'reasoning-end',\n id: blockId,\n });\n }\n\n controller.enqueue({ type: 'finish', finishReason, usage });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\n// XAI API Response Schemas\nconst xaiUsageSchema = z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n })\n .nullish(),\n});\n\nconst xaiChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant'),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n ),\n object: z.literal('chat.completion'),\n usage: xaiUsageSchema,\n citations: z.array(z.string().url()).nullish(),\n});\n\nconst xaiChatChunkSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z.object({\n role: z.enum(['assistant']).optional(),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string().nullish(),\n index: z.number(),\n }),\n ),\n usage: xaiUsageSchema.nullish(),\n citations: z.array(z.string().url()).nullish(),\n});\n","import {\n LanguageModelV3CallWarning,\n LanguageModelV3Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\nimport { XaiChatPrompt } from './xai-chat-prompt';\n\nexport function convertToXaiChatMessages(prompt: LanguageModelV3Prompt): {\n messages: XaiChatPrompt;\n warnings: Array<LanguageModelV3CallWarning>;\n} {\n const messages: XaiChatPrompt = [];\n const warnings: Array<LanguageModelV3CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({ role: 'user', content: content[0].text });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'image_url',\n image_url: {\n url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n },\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'execution-denied':\n contentValue = output.reason ?? 'Tool execution denied.';\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { messages, warnings };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created != null ? new Date(created * 1000) : undefined,\n };\n}\n","import { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV3FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls';\n case 'content_filter':\n return 'content-filter';\n default:\n return 'unknown';\n }\n}\n","import { z } from 'zod/v4';\n\n// https://console.x.ai and see \"View models\"\nexport type XaiChatModelId =\n | 'grok-4-fast-non-reasoning'\n | 'grok-4-fast-reasoning'\n | 'grok-code-fast-1'\n | 'grok-4'\n | 'grok-4-0709'\n | 'grok-4-latest'\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// search source schemas\nconst webSourceSchema = z.object({\n type: z.literal('web'),\n country: z.string().length(2).optional(),\n excludedWebsites: z.array(z.string()).max(5).optional(),\n allowedWebsites: z.array(z.string()).max(5).optional(),\n safeSearch: z.boolean().optional(),\n});\n\nconst xSourceSchema = z.object({\n type: z.literal('x'),\n excludedXHandles: z.array(z.string()).optional(),\n includedXHandles: z.array(z.string()).optional(),\n postFavoriteCount: z.number().int().optional(),\n postViewCount: z.number().int().optional(),\n /**\n * @deprecated use `includedXHandles` instead\n */\n xHandles: z.array(z.string()).optional(),\n});\n\nconst newsSourceSchema = z.object({\n type: z.literal('news'),\n country: z.string().length(2).optional(),\n excludedWebsites: z.array(z.string()).max(5).optional(),\n safeSearch: z.boolean().optional(),\n});\n\nconst rssSourceSchema = z.object({\n type: z.literal('rss'),\n links: z.array(z.string().url()).max(1), // currently only supports one RSS link\n});\n\nconst searchSourceSchema = z.discriminatedUnion('type', [\n webSourceSchema,\n xSourceSchema,\n newsSourceSchema,\n rssSourceSchema,\n]);\n\n// xai-specific provider options\nexport const xaiProviderOptions = z.object({\n reasoningEffort: z.enum(['low', 'high']).optional(),\n\n searchParameters: z\n .object({\n /**\n * search mode preference\n * - \"off\": disables search completely\n * - \"auto\": model decides whether to search (default)\n * - \"on\": always enables search\n */\n mode: z.enum(['off', 'auto', 'on']),\n\n /**\n * whether to return citations in the response\n * defaults to true\n */\n returnCitations: z.boolean().optional(),\n\n /**\n * start date for search data (ISO8601 format: YYYY-MM-DD)\n */\n fromDate: z.string().optional(),\n\n /**\n * end date for search data (ISO8601 format: YYYY-MM-DD)\n */\n toDate: z.string().optional(),\n\n /**\n * maximum number of search results to consider\n * defaults to 20\n */\n maxSearchResults: z.number().min(1).max(50).optional(),\n\n /**\n * data sources to search from\n * defaults to [\"web\", \"x\"] if not specified\n */\n sources: z.array(searchSourceSchema).optional(),\n })\n .optional(),\n});\n\nexport type XaiProviderOptions = z.infer<typeof xaiProviderOptions>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// Add error schema and structure\nexport const xaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type XaiErrorData = z.infer<typeof xaiErrorDataSchema>;\n\nexport const xaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV3CallOptions,\n LanguageModelV3CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { XaiToolChoice } from './xai-chat-prompt';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV3CallOptions['tools'];\n toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n}): {\n tools:\n | Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }>\n | undefined;\n toolChoice: XaiToolChoice | undefined;\n toolWarnings: LanguageModelV3CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV3CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n // convert ai sdk tools to xai format\n const xaiTools: Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n xaiTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: xaiTools, toolChoice: type, toolWarnings };\n case 'required':\n // xai supports 'required' directly\n return { tools: xaiTools, toolChoice: 'required', toolWarnings };\n case 'tool':\n // xai supports specific tool selection\n return {\n tools: xaiTools,\n toolChoice: {\n type: 'function',\n function: { name: toolChoice.toolName },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["z","z","UnsupportedFunctionalityError","_a","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/xai-provider.ts","../src/xai-chat-language-model.ts","../src/convert-to-xai-chat-messages.ts","../src/get-response-metadata.ts","../src/map-xai-finish-reason.ts","../src/xai-chat-options.ts","../src/xai-error.ts","../src/xai-prepare-tools.ts","../src/version.ts"],"sourcesContent":["import {\n OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n ImageModelV3,\n LanguageModelV3,\n NoSuchModelError,\n ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatLanguageModel } from './xai-chat-language-model';\nimport { XaiChatModelId } from './xai-chat-options';\nimport { XaiErrorData, xaiErrorDataSchema } from './xai-error';\nimport { XaiImageModelId } from './xai-image-settings';\nimport { VERSION } from './version';\n\nconst xaiErrorStructure: ProviderErrorStructure<XaiErrorData> = {\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n};\n\nexport interface XaiProvider extends ProviderV3 {\n /**\nCreates an Xai chat model for text generation.\n */\n (modelId: XaiChatModelId): LanguageModelV3;\n\n /**\nCreates an Xai language model for text generation.\n */\n languageModel(modelId: XaiChatModelId): LanguageModelV3;\n\n /**\nCreates an Xai chat model for text generation.\n */\n chat: (modelId: XaiChatModelId) => LanguageModelV3;\n\n /**\nCreates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId): ImageModelV3;\n\n /**\nCreates an Xai image model for image generation.\n */\n imageModel(modelId: XaiImageModelId): ImageModelV3;\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 withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'XAI_API_KEY',\n description: 'xAI API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/xai/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: XaiChatModelId) => {\n return new XaiChatLanguageModel(modelId, {\n provider: 'xai.chat',\n baseURL,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\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","import {\n LanguageModelV3,\n LanguageModelV3CallWarning,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3StreamPart,\n LanguageModelV3Usage,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport * as z from 'zod/v4';\nimport { convertToXaiChatMessages } from './convert-to-xai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapXaiFinishReason } from './map-xai-finish-reason';\nimport { XaiChatModelId, xaiProviderOptions } from './xai-chat-options';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { prepareTools } from './xai-prepare-tools';\n\ntype XaiChatConfig = {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class XaiChatLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n\n readonly modelId: XaiChatModelId;\n\n private readonly config: XaiChatConfig;\n\n constructor(modelId: XaiChatModelId, config: XaiChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n seed,\n responseFormat,\n providerOptions,\n tools,\n toolChoice,\n }: Parameters<LanguageModelV3['doGenerate']>[0]) {\n const warnings: LanguageModelV3CallWarning[] = [];\n\n // parse xai-specific provider options\n const options =\n (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiProviderOptions,\n })) ?? {};\n\n // check for unsupported parameters\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'stopSequences',\n });\n }\n\n if (\n responseFormat != null &&\n responseFormat.type === 'json' &&\n responseFormat.schema != null\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format schema is not supported',\n });\n }\n\n // convert ai sdk messages to xai format\n const { messages, warnings: messageWarnings } =\n convertToXaiChatMessages(prompt);\n warnings.push(...messageWarnings);\n\n // prepare tools for xai\n const {\n tools: xaiTools,\n toolChoice: xaiToolChoice,\n toolWarnings,\n } = prepareTools({\n tools,\n toolChoice,\n });\n warnings.push(...toolWarnings);\n\n const baseArgs = {\n // model id\n model: this.modelId,\n\n // standard generation settings\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n seed,\n reasoning_effort: options.reasoningEffort,\n\n // response format\n response_format:\n responseFormat?.type === 'json'\n ? responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n name: responseFormat.name ?? 'response',\n schema: responseFormat.schema,\n strict: true,\n },\n }\n : { type: 'json_object' }\n : undefined,\n\n // search parameters\n search_parameters: options.searchParameters\n ? {\n mode: options.searchParameters.mode,\n return_citations: options.searchParameters.returnCitations,\n from_date: options.searchParameters.fromDate,\n to_date: options.searchParameters.toDate,\n max_search_results: options.searchParameters.maxSearchResults,\n sources: options.searchParameters.sources?.map(source => ({\n type: source.type,\n ...(source.type === 'web' && {\n country: source.country,\n excluded_websites: source.excludedWebsites,\n allowed_websites: source.allowedWebsites,\n safe_search: source.safeSearch,\n }),\n ...(source.type === 'x' && {\n excluded_x_handles: source.excludedXHandles,\n included_x_handles: source.includedXHandles ?? source.xHandles,\n post_favorite_count: source.postFavoriteCount,\n post_view_count: source.postViewCount,\n }),\n ...(source.type === 'news' && {\n country: source.country,\n excluded_websites: source.excludedWebsites,\n safe_search: source.safeSearch,\n }),\n ...(source.type === 'rss' && {\n links: source.links,\n }),\n })),\n }\n : undefined,\n\n // messages in xai format\n messages,\n\n // tools in xai format\n tools: xaiTools,\n tool_choice: xaiToolChoice,\n };\n\n return {\n args: baseArgs,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV3['doGenerate']>>> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV3Content> = [];\n\n // extract text content\n if (choice.message.content != null && choice.message.content.length > 0) {\n let text = choice.message.content;\n\n // skip if this content duplicates the last assistant message\n const lastMessage = body.messages[body.messages.length - 1];\n if (lastMessage?.role === 'assistant' && text === lastMessage.content) {\n text = '';\n }\n\n if (text.length > 0) {\n content.push({ type: 'text', text });\n }\n }\n\n // extract reasoning content\n if (\n choice.message.reasoning_content != null &&\n choice.message.reasoning_content.length > 0\n ) {\n content.push({\n type: 'reasoning',\n text: choice.message.reasoning_content,\n });\n }\n\n // extract tool calls\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n }\n }\n\n // extract citations\n if (response.citations != null) {\n for (const url of response.citations) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url,\n });\n }\n }\n\n return {\n content,\n finishReason: mapXaiFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage.prompt_tokens,\n outputTokens: response.usage.completion_tokens,\n totalTokens: response.usage.total_tokens,\n reasoningTokens:\n response.usage.completion_tokens_details?.reasoning_tokens ??\n undefined,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV3['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV3['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n const body = {\n ...args,\n stream: true,\n stream_options: {\n include_usage: true,\n },\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler:\n createEventSourceResponseHandler(xaiChatChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV3FinishReason = 'unknown';\n const usage: LanguageModelV3Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let isFirstChunk = true;\n const contentBlocks: Record<string, { type: 'text' | 'reasoning' }> = {};\n const lastReasoningDeltas: Record<string, string> = {};\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof xaiChatChunkSchema>>,\n LanguageModelV3StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // emit response metadata on first chunk\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n isFirstChunk = false;\n }\n\n // emit citations if present (they come in the last chunk according to docs)\n if (value.citations != null) {\n for (const url of value.citations) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url,\n });\n }\n }\n\n // update usage if present\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens = value.usage.total_tokens;\n usage.reasoningTokens =\n value.usage.completion_tokens_details?.reasoning_tokens ??\n undefined;\n }\n\n const choice = value.choices[0];\n\n // update finish reason if present\n if (choice?.finish_reason != null) {\n finishReason = mapXaiFinishReason(choice.finish_reason);\n }\n\n // exit if no delta to process\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n const choiceIndex = choice.index;\n\n // process text content\n if (delta.content != null && delta.content.length > 0) {\n const textContent = delta.content;\n\n // skip if this content duplicates the last assistant message\n const lastMessage = body.messages[body.messages.length - 1];\n if (\n lastMessage?.role === 'assistant' &&\n textContent === lastMessage.content\n ) {\n return;\n }\n\n const blockId = `text-${value.id || choiceIndex}`;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: textContent,\n });\n }\n\n // process reasoning content\n if (\n delta.reasoning_content != null &&\n delta.reasoning_content.length > 0\n ) {\n const blockId = `reasoning-${value.id || choiceIndex}`;\n\n // skip if this reasoning content duplicates the last delta\n if (lastReasoningDeltas[blockId] === delta.reasoning_content) {\n return;\n }\n lastReasoningDeltas[blockId] = delta.reasoning_content;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'reasoning' };\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: delta.reasoning_content,\n });\n }\n\n // process tool calls\n if (delta.tool_calls != null) {\n for (const toolCall of delta.tool_calls) {\n // xai tool calls come in one piece (like mistral)\n const toolCallId = toolCall.id;\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCallId,\n toolName: toolCall.function.name,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCallId,\n delta: toolCall.function.arguments,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCallId,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n }\n }\n },\n\n flush(controller) {\n for (const [blockId, block] of Object.entries(contentBlocks)) {\n controller.enqueue({\n type: block.type === 'text' ? 'text-end' : 'reasoning-end',\n id: blockId,\n });\n }\n\n controller.enqueue({ type: 'finish', finishReason, usage });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\n// XAI API Response Schemas\nconst xaiUsageSchema = z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n })\n .nullish(),\n});\n\nconst xaiChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant'),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n ),\n object: z.literal('chat.completion'),\n usage: xaiUsageSchema,\n citations: z.array(z.string().url()).nullish(),\n});\n\nconst xaiChatChunkSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z.object({\n role: z.enum(['assistant']).optional(),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string().nullish(),\n index: z.number(),\n }),\n ),\n usage: xaiUsageSchema.nullish(),\n citations: z.array(z.string().url()).nullish(),\n});\n","import {\n LanguageModelV3CallWarning,\n LanguageModelV3Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\nimport { XaiChatPrompt } from './xai-chat-prompt';\n\nexport function convertToXaiChatMessages(prompt: LanguageModelV3Prompt): {\n messages: XaiChatPrompt;\n warnings: Array<LanguageModelV3CallWarning>;\n} {\n const messages: XaiChatPrompt = [];\n const warnings: Array<LanguageModelV3CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({ role: 'user', content: content[0].text });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'image_url',\n image_url: {\n url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n },\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'execution-denied':\n contentValue = output.reason ?? 'Tool execution denied.';\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { messages, warnings };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created != null ? new Date(created * 1000) : undefined,\n };\n}\n","import { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV3FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls';\n case 'content_filter':\n return 'content-filter';\n default:\n return 'unknown';\n }\n}\n","import * as z from 'zod/v4';\n\n// https://console.x.ai and see \"View models\"\nexport type XaiChatModelId =\n | 'grok-4-fast-non-reasoning'\n | 'grok-4-fast-reasoning'\n | 'grok-code-fast-1'\n | 'grok-4'\n | 'grok-4-0709'\n | 'grok-4-latest'\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// search source schemas\nconst webSourceSchema = z.object({\n type: z.literal('web'),\n country: z.string().length(2).optional(),\n excludedWebsites: z.array(z.string()).max(5).optional(),\n allowedWebsites: z.array(z.string()).max(5).optional(),\n safeSearch: z.boolean().optional(),\n});\n\nconst xSourceSchema = z.object({\n type: z.literal('x'),\n excludedXHandles: z.array(z.string()).optional(),\n includedXHandles: z.array(z.string()).optional(),\n postFavoriteCount: z.number().int().optional(),\n postViewCount: z.number().int().optional(),\n /**\n * @deprecated use `includedXHandles` instead\n */\n xHandles: z.array(z.string()).optional(),\n});\n\nconst newsSourceSchema = z.object({\n type: z.literal('news'),\n country: z.string().length(2).optional(),\n excludedWebsites: z.array(z.string()).max(5).optional(),\n safeSearch: z.boolean().optional(),\n});\n\nconst rssSourceSchema = z.object({\n type: z.literal('rss'),\n links: z.array(z.string().url()).max(1), // currently only supports one RSS link\n});\n\nconst searchSourceSchema = z.discriminatedUnion('type', [\n webSourceSchema,\n xSourceSchema,\n newsSourceSchema,\n rssSourceSchema,\n]);\n\n// xai-specific provider options\nexport const xaiProviderOptions = z.object({\n reasoningEffort: z.enum(['low', 'high']).optional(),\n\n searchParameters: z\n .object({\n /**\n * search mode preference\n * - \"off\": disables search completely\n * - \"auto\": model decides whether to search (default)\n * - \"on\": always enables search\n */\n mode: z.enum(['off', 'auto', 'on']),\n\n /**\n * whether to return citations in the response\n * defaults to true\n */\n returnCitations: z.boolean().optional(),\n\n /**\n * start date for search data (ISO8601 format: YYYY-MM-DD)\n */\n fromDate: z.string().optional(),\n\n /**\n * end date for search data (ISO8601 format: YYYY-MM-DD)\n */\n toDate: z.string().optional(),\n\n /**\n * maximum number of search results to consider\n * defaults to 20\n */\n maxSearchResults: z.number().min(1).max(50).optional(),\n\n /**\n * data sources to search from\n * defaults to [\"web\", \"x\"] if not specified\n */\n sources: z.array(searchSourceSchema).optional(),\n })\n .optional(),\n});\n\nexport type XaiProviderOptions = z.infer<typeof xaiProviderOptions>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport * as z from 'zod/v4';\n\n// Add error schema and structure\nexport const xaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type XaiErrorData = z.infer<typeof xaiErrorDataSchema>;\n\nexport const xaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV3CallOptions,\n LanguageModelV3CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { XaiToolChoice } from './xai-chat-prompt';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV3CallOptions['tools'];\n toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n}): {\n tools:\n | Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }>\n | undefined;\n toolChoice: XaiToolChoice | undefined;\n toolWarnings: LanguageModelV3CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV3CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n // convert ai sdk tools to xai format\n const xaiTools: Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n xaiTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: xaiTools, toolChoice: type, toolWarnings };\n case 'required':\n // xai supports 'required' directly\n return { tools: xaiTools, toolChoice: 'required', toolWarnings };\n case 'tool':\n // xai supports specific tool selection\n return {\n tools: xaiTools,\n toolChoice: {\n type: 'function',\n function: { name: toolChoice.toolName },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["z","z","UnsupportedFunctionalityError","_a"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/xai",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0-beta.12",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,16 +19,16 @@
|
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@ai-sdk/openai-compatible": "
|
|
23
|
-
"@ai-sdk/provider": "
|
|
24
|
-
"@ai-sdk/provider-utils": "
|
|
22
|
+
"@ai-sdk/openai-compatible": "2.0.0-beta.11",
|
|
23
|
+
"@ai-sdk/provider": "3.0.0-beta.6",
|
|
24
|
+
"@ai-sdk/provider-utils": "4.0.0-beta.11"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "20.17.24",
|
|
28
28
|
"tsup": "^8",
|
|
29
29
|
"typescript": "5.8.3",
|
|
30
30
|
"zod": "3.25.76",
|
|
31
|
-
"@ai-sdk/test-server": "1.0.0-beta.
|
|
31
|
+
"@ai-sdk/test-server": "1.0.0-beta.1",
|
|
32
32
|
"@vercel/ai-tsconfig": "0.0.0"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|