@ai-sdk/xai 4.0.0-beta.45 → 4.0.0-beta.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @ai-sdk/xai
|
|
2
2
|
|
|
3
|
+
## 4.0.0-beta.46
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 78b6433: feat(provider/xai): support non-image file parts (PDF, text, CSV) in the Responses API via `input_file` + `file_url`
|
|
8
|
+
|
|
9
|
+
The xAI Responses API accepts `{ type: 'input_file', file_url }` for non-image documents (see https://docs.x.ai/docs/guides/chat-with-files), but the AI SDK xAI Responses provider previously threw `UnsupportedFunctionalityError` for any file part whose `mediaType` did not start with `image/`.
|
|
10
|
+
|
|
11
|
+
When a file part is passed with `data: URL` and a non-image media type, the provider now emits `{ type: 'input_file', file_url }`. `application/pdf` and `text/*` are also added to `supportedUrls` so the SDK does not download them to bytes before reaching the converter.
|
|
12
|
+
|
|
13
|
+
Inline-byte (base64) inputs for non-image media types continue to throw, since xAI's Responses API requires either a public URL or a pre-uploaded `file_id` for non-image documents.
|
|
14
|
+
|
|
3
15
|
## 4.0.0-beta.45
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/dist/index.js
CHANGED
|
@@ -1149,9 +1149,14 @@ async function convertToXaiResponsesInput({
|
|
|
1149
1149
|
const mediaType = block.mediaType === "image/*" ? "image/jpeg" : block.mediaType;
|
|
1150
1150
|
const imageUrl = block.data instanceof URL ? block.data.toString() : `data:${mediaType};base64,${convertToBase642(block.data)}`;
|
|
1151
1151
|
contentParts.push({ type: "input_image", image_url: imageUrl });
|
|
1152
|
+
} else if (block.data instanceof URL) {
|
|
1153
|
+
contentParts.push({
|
|
1154
|
+
type: "input_file",
|
|
1155
|
+
file_url: block.data.toString()
|
|
1156
|
+
});
|
|
1152
1157
|
} else {
|
|
1153
1158
|
throw new UnsupportedFunctionalityError3({
|
|
1154
|
-
functionality: `file part media type ${block.mediaType}`
|
|
1159
|
+
functionality: `file part media type ${block.mediaType} as inline data (xAI Responses requires a URL or a Files API reference for non-image files)`
|
|
1155
1160
|
});
|
|
1156
1161
|
}
|
|
1157
1162
|
break;
|
|
@@ -2111,7 +2116,12 @@ var XaiResponsesLanguageModel = class _XaiResponsesLanguageModel {
|
|
|
2111
2116
|
constructor(modelId, config) {
|
|
2112
2117
|
this.specificationVersion = "v4";
|
|
2113
2118
|
this.supportedUrls = {
|
|
2114
|
-
"image/*": [/^https?:\/\/.*$/]
|
|
2119
|
+
"image/*": [/^https?:\/\/.*$/],
|
|
2120
|
+
// xAI's Responses API accepts non-image documents (PDF, plain text, CSV, etc.) as
|
|
2121
|
+
// `{ type: 'input_file', file_url }`. Keeping these URLs intact here lets them pass
|
|
2122
|
+
// through to the converter instead of being downloaded to bytes by the SDK.
|
|
2123
|
+
"application/pdf": [/^https?:\/\/.*$/],
|
|
2124
|
+
"text/*": [/^https?:\/\/.*$/]
|
|
2115
2125
|
};
|
|
2116
2126
|
this.modelId = modelId;
|
|
2117
2127
|
this.config = config;
|
|
@@ -2929,7 +2939,7 @@ var xaiTools = {
|
|
|
2929
2939
|
};
|
|
2930
2940
|
|
|
2931
2941
|
// src/version.ts
|
|
2932
|
-
var VERSION = true ? "4.0.0-beta.
|
|
2942
|
+
var VERSION = true ? "4.0.0-beta.46" : "0.0.0-test";
|
|
2933
2943
|
|
|
2934
2944
|
// src/files/xai-files.ts
|
|
2935
2945
|
import {
|
package/dist/index.js.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/convert-xai-chat-usage.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/xai-image-model.ts","../src/xai-image-options.ts","../src/responses/xai-responses-language-model.ts","../src/responses/convert-to-xai-responses-input.ts","../src/responses/convert-xai-responses-usage.ts","../src/responses/map-xai-responses-finish-reason.ts","../src/responses/xai-responses-api.ts","../src/responses/xai-responses-options.ts","../src/responses/xai-responses-prepare-tools.ts","../src/tool/file-search.ts","../src/tool/mcp-server.ts","../src/tool/web-search.ts","../src/tool/x-search.ts","../src/tool/code-execution.ts","../src/tool/view-image.ts","../src/tool/view-x-video.ts","../src/tool/index.ts","../src/version.ts","../src/files/xai-files.ts","../src/files/xai-files-api.ts","../src/files/xai-files-options.ts","../src/xai-video-model.ts","../src/xai-video-options.ts"],"sourcesContent":["import {\n type Experimental_VideoModelV4,\n FilesV4,\n ImageModelV4,\n LanguageModelV4,\n NoSuchModelError,\n ProviderV4,\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 { XaiImageModel } from './xai-image-model';\nimport { XaiImageModelId } from './xai-image-settings';\nimport { XaiResponsesLanguageModel } from './responses/xai-responses-language-model';\nimport { XaiResponsesModelId } from './responses/xai-responses-options';\nimport { xaiTools } from './tool';\nimport { VERSION } from './version';\nimport { XaiFiles } from './files/xai-files';\nimport { XaiVideoModel } from './xai-video-model';\nimport { XaiVideoModelId } from './xai-video-settings';\n\nexport interface XaiProvider extends ProviderV4 {\n (modelId: XaiResponsesModelId): LanguageModelV4;\n\n /**\n * Creates an Xai language model for text generation.\n */\n languageModel(modelId: XaiResponsesModelId): LanguageModelV4;\n\n /**\n * Creates an Xai chat model for text generation.\n */\n chat: (modelId: XaiChatModelId) => LanguageModelV4;\n\n /**\n * Creates an Xai responses model for text generation.\n */\n responses: (modelId: XaiResponsesModelId) => LanguageModelV4;\n\n /**\n * Creates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId): ImageModelV4;\n\n /**\n * Creates an Xai image model for image generation.\n */\n imageModel(modelId: XaiImageModelId): ImageModelV4;\n\n /**\n * Creates an Xai video model for video generation.\n */\n video(modelId: XaiVideoModelId): Experimental_VideoModelV4;\n\n /**\n * Creates an Xai video model for video generation.\n */\n videoModel(modelId: XaiVideoModelId): Experimental_VideoModelV4;\n\n /**\n * Returns the xAI files interface for uploading files.\n */\n files(): FilesV4;\n\n /**\n * Server-side agentic tools for use with the responses API.\n */\n tools: typeof xaiTools;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface XaiProviderSettings {\n /**\n * Base URL for the xAI API calls.\n */\n baseURL?: string;\n\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or 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 createChatLanguageModel = (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 createResponsesLanguageModel = (modelId: XaiResponsesModelId) => {\n return new XaiResponsesLanguageModel(modelId, {\n provider: 'xai.responses',\n baseURL,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\n });\n };\n\n const createImageModel = (modelId: XaiImageModelId) => {\n return new XaiImageModel(modelId, {\n provider: 'xai.image',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const createVideoModel = (modelId: XaiVideoModelId) => {\n return new XaiVideoModel(modelId, {\n provider: 'xai.video',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const createFiles = () =>\n new XaiFiles({\n provider: 'xai.files',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = (modelId: XaiResponsesModelId) =>\n createResponsesLanguageModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.languageModel = createResponsesLanguageModel;\n provider.chat = createChatLanguageModel;\n provider.responses = createResponsesLanguageModel;\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = createImageModel;\n provider.image = createImageModel;\n provider.videoModel = createVideoModel;\n provider.video = createVideoModel;\n provider.files = createFiles;\n provider.tools = xaiTools;\n\n return provider;\n}\n\nexport const xai = createXai();\n","import {\n APICallError,\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4Content,\n LanguageModelV4FinishReason,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n LanguageModelV4Usage,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n extractResponseHeaders,\n FetchFunction,\n isCustomReasoning,\n mapReasoningToProviderEffort,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n safeParseJSON,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertToXaiChatMessages } from './convert-to-xai-chat-messages';\nimport { convertXaiChatUsage } from './convert-xai-chat-usage';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapXaiFinishReason } from './map-xai-finish-reason';\nimport {\n XaiChatModelId,\n xaiLanguageModelChatOptions,\n} 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 LanguageModelV4 {\n readonly specificationVersion = 'v4';\n\n readonly modelId: XaiChatModelId;\n\n private readonly config: XaiChatConfig;\n\n static [WORKFLOW_SERIALIZE](model: XaiChatLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: XaiChatModelId;\n config: XaiChatConfig;\n }) {\n return new XaiChatLanguageModel(options.modelId, options.config);\n }\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 reasoning,\n responseFormat,\n providerOptions,\n tools,\n toolChoice,\n }: LanguageModelV4CallOptions) {\n const warnings: SharedV4Warning[] = [];\n\n // parse xai-specific provider options\n const options =\n (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiLanguageModelChatOptions,\n })) ?? {};\n\n // check for unsupported parameters\n if (topK != null) {\n warnings.push({ type: 'unsupported', feature: 'topK' });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' });\n }\n\n if (presencePenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'presencePenalty' });\n }\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported', feature: 'stopSequences' });\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 logprobs:\n options.logprobs === true || options.topLogprobs != null\n ? true\n : undefined,\n top_logprobs: options.topLogprobs,\n max_completion_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n seed,\n reasoning_effort:\n options.reasoningEffort ??\n (isCustomReasoning(reasoning)\n ? reasoning === 'none'\n ? undefined\n : mapReasoningToProviderEffort({\n reasoning,\n effortMap: {\n minimal: 'low',\n low: 'low',\n medium: 'low',\n high: 'high',\n xhigh: 'high',\n },\n warnings,\n })\n : undefined),\n\n // parallel function calling\n parallel_function_calling: options.parallel_function_calling,\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: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const url = `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`;\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url,\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 if (response.error != null) {\n throw new APICallError({\n message: response.error,\n url,\n requestBodyValues: body,\n statusCode: 200,\n responseHeaders,\n responseBody: JSON.stringify(rawResponse),\n isRetryable: response.code === 'The service is currently unavailable',\n });\n }\n\n const choice = response.choices![0];\n const content: Array<LanguageModelV4Content> = [];\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: {\n unified: mapXaiFinishReason(choice.finish_reason),\n raw: choice.finish_reason ?? undefined,\n },\n usage: response.usage\n ? convertXaiChatUsage(response.usage)\n : {\n inputTokens: { total: 0, noCache: 0, cacheRead: 0, cacheWrite: 0 },\n outputTokens: { total: 0, text: 0, reasoning: 0 },\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: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\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 url = `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`;\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url,\n headers: combineHeaders(this.config.headers?.(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: async ({ response }) => {\n const responseHeaders = extractResponseHeaders(response);\n const contentType = response.headers.get('content-type');\n\n if (contentType?.includes('application/json')) {\n const responseBody = await response.text();\n const parsedError = await safeParseJSON({\n text: responseBody,\n schema: xaiStreamErrorSchema,\n });\n\n if (parsedError.success) {\n throw new APICallError({\n message: parsedError.value.error,\n url,\n requestBodyValues: body,\n statusCode: 200,\n responseHeaders,\n responseBody,\n isRetryable:\n parsedError.value.code ===\n 'The service is currently unavailable',\n });\n }\n\n throw new APICallError({\n message: 'Invalid JSON response',\n url,\n requestBodyValues: body,\n statusCode: 200,\n responseHeaders,\n responseBody,\n });\n }\n\n return createEventSourceResponseHandler(xaiChatChunkSchema)({\n response,\n url,\n requestBodyValues: body,\n });\n },\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV4FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let usage: LanguageModelV4Usage | undefined = undefined;\n let isFirstChunk = true;\n const contentBlocks: Record<\n string,\n { type: 'text' | 'reasoning'; ended: boolean }\n > = {};\n const lastReasoningDeltas: Record<string, string> = {};\n let activeReasoningBlockId: string | undefined = undefined;\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof xaiChatChunkSchema>>,\n LanguageModelV4StreamPart\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 = convertXaiChatUsage(value.usage);\n }\n\n const choice = value.choices[0];\n\n // update finish reason if present\n if (choice?.finish_reason != null) {\n finishReason = {\n unified: mapXaiFinishReason(choice.finish_reason),\n raw: choice.finish_reason,\n };\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 // end active reasoning block when text content arrives\n if (\n activeReasoningBlockId != null &&\n !contentBlocks[activeReasoningBlockId].ended\n ) {\n controller.enqueue({\n type: 'reasoning-end',\n id: activeReasoningBlockId,\n });\n contentBlocks[activeReasoningBlockId].ended = true;\n activeReasoningBlockId = undefined;\n }\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', ended: false };\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', ended: false };\n activeReasoningBlockId = blockId;\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 // end active reasoning block before tool calls start\n if (\n activeReasoningBlockId != null &&\n !contentBlocks[activeReasoningBlockId].ended\n ) {\n controller.enqueue({\n type: 'reasoning-end',\n id: activeReasoningBlockId,\n });\n contentBlocks[activeReasoningBlockId].ended = true;\n activeReasoningBlockId = undefined;\n }\n\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 // end any blocks that haven't been ended yet\n for (const [blockId, block] of Object.entries(contentBlocks)) {\n if (!block.ended) {\n controller.enqueue({\n type: block.type === 'text' ? 'text-end' : 'reasoning-end',\n id: blockId,\n });\n }\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: usage ?? {\n inputTokens: {\n total: 0,\n noCache: 0,\n cacheRead: 0,\n cacheWrite: 0,\n },\n outputTokens: { total: 0, text: 0, reasoning: 0 },\n },\n });\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 prompt_tokens_details: z\n .object({\n text_tokens: z.number().nullish(),\n audio_tokens: z.number().nullish(),\n image_tokens: z.number().nullish(),\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n audio_tokens: z.number().nullish(),\n accepted_prediction_tokens: z.number().nullish(),\n rejected_prediction_tokens: z.number().nullish(),\n })\n .nullish(),\n});\n\nexport type XaiChatUsage = z.infer<typeof xaiUsageSchema>;\n\nconst xaiChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z\n .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 .nullish(),\n object: z.literal('chat.completion').nullish(),\n usage: xaiUsageSchema.nullish(),\n citations: z.array(z.string().url()).nullish(),\n code: z.string().nullish(),\n error: z.string().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\nconst xaiStreamErrorSchema = z.object({\n code: z.string(),\n error: z.string(),\n});\n","import {\n SharedV4Warning,\n LanguageModelV4Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n isProviderReference,\n resolveProviderReference,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatPrompt } from './xai-chat-prompt';\n\nexport function convertToXaiChatMessages(prompt: LanguageModelV4Prompt): {\n messages: XaiChatPrompt;\n warnings: Array<SharedV4Warning>;\n} {\n const messages: XaiChatPrompt = [];\n const warnings: Array<SharedV4Warning> = [];\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 (isProviderReference(part.data)) {\n return {\n type: 'file',\n file: {\n file_id: resolveProviderReference({\n reference: part.data,\n provider: 'xai',\n }),\n },\n };\n }\n\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 if (toolResponse.type === 'tool-approval-response') {\n continue;\n }\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 call 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","import { LanguageModelV4Usage } from '@ai-sdk/provider';\nimport { XaiChatUsage } from './xai-chat-language-model';\n\nexport function convertXaiChatUsage(usage: XaiChatUsage): LanguageModelV4Usage {\n const cacheReadTokens = usage.prompt_tokens_details?.cached_tokens ?? 0;\n const reasoningTokens =\n usage.completion_tokens_details?.reasoning_tokens ?? 0;\n\n const promptTokensIncludesCached = cacheReadTokens <= usage.prompt_tokens;\n\n return {\n inputTokens: {\n total: promptTokensIncludesCached\n ? usage.prompt_tokens\n : usage.prompt_tokens + cacheReadTokens,\n noCache: promptTokensIncludesCached\n ? usage.prompt_tokens - cacheReadTokens\n : usage.prompt_tokens,\n cacheRead: cacheReadTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: usage.completion_tokens + reasoningTokens,\n text: usage.completion_tokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n created_at,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n created_at?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n const unixTime = created ?? created_at;\n\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: unixTime != null ? new Date(unixTime * 1000) : undefined,\n };\n}\n","import { LanguageModelV4FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV4FinishReason['unified'] {\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 'other';\n }\n}\n","import { z } from 'zod/v4';\n\n// https://docs.x.ai/docs/models\nexport type XaiChatModelId =\n | 'grok-4-1-fast-reasoning'\n | 'grok-4-1-fast-non-reasoning'\n | 'grok-4-fast-non-reasoning'\n | 'grok-4-fast-reasoning'\n | 'grok-4.20-0309-non-reasoning'\n | 'grok-4.20-0309-reasoning'\n | 'grok-4.20-multi-agent-0309'\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-mini'\n | 'grok-3-mini-latest'\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 xaiLanguageModelChatOptions = z.object({\n reasoningEffort: z.enum(['low', 'high']).optional(),\n logprobs: z.boolean().optional(),\n topLogprobs: z.number().int().min(0).max(8).optional(),\n\n /**\n * Whether to enable parallel function calling during tool use.\n * When true, the model can call multiple functions in parallel.\n * When false, the model will call functions sequentially.\n * Defaults to true.\n */\n parallel_function_calling: z.boolean().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 [{ type: 'web' }, { type: 'x' }] if not specified.\n *\n * @example\n * sources: [{ type: 'web', country: 'US' }, { type: 'x' }]\n */\n sources: z.array(searchSourceSchema).optional(),\n })\n .optional(),\n});\n\nexport type XaiLanguageModelChatOptions = z.infer<\n typeof xaiLanguageModelChatOptions\n>;\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 LanguageModelV4CallOptions,\n SharedV4Warning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { XaiToolChoice } from './xai-chat-prompt';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV4CallOptions['tools'];\n toolChoice?: LanguageModelV4CallOptions['toolChoice'];\n}): {\n tools:\n | Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n strict?: boolean;\n };\n }>\n | undefined;\n toolChoice: XaiToolChoice | undefined;\n toolWarnings: SharedV4Warning[];\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: SharedV4Warning[] = [];\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 strict?: boolean;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider') {\n toolWarnings.push({\n type: 'unsupported',\n feature: `provider-defined tool ${tool.name}`,\n });\n } else {\n xaiTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n ...(tool.strict != null ? { strict: tool.strict } : {}),\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","import { ImageModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n createStatusCodeErrorResponseHandler,\n FetchFunction,\n getFromApi,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { xaiImageModelOptions } from './xai-image-options';\nimport { XaiImageModelId } from './xai-image-settings';\n\ninterface XaiImageModelConfig {\n provider: string;\n baseURL: string | undefined;\n headers?: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class XaiImageModel implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n readonly maxImagesPerCall = 3;\n\n get provider(): string {\n return this.config.provider;\n }\n\n static [WORKFLOW_SERIALIZE](model: XaiImageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: XaiImageModelId;\n config: XaiImageModelConfig;\n }) {\n return new XaiImageModel(options.modelId, options.config);\n }\n\n constructor(\n readonly modelId: XaiImageModelId,\n private config: XaiImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV4['doGenerate']>>\n > {\n const warnings: Array<SharedV4Warning> = [];\n\n if (size != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'size',\n details:\n 'This model does not support the `size` option. Use `aspectRatio` instead.',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'seed',\n });\n }\n\n if (mask != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'mask',\n });\n }\n\n const xaiOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiImageModelOptions,\n });\n\n const hasFiles = files != null && files.length > 0;\n const imageUrls = hasFiles\n ? files.map(file => convertImageModelFileToDataUri(file))\n : [];\n\n const endpoint = hasFiles ? '/images/edits' : '/images/generations';\n\n const body: Record<string, unknown> = {\n model: this.modelId,\n prompt,\n n,\n response_format: 'b64_json',\n };\n\n if (aspectRatio != null) {\n body.aspect_ratio = aspectRatio;\n }\n\n if (xaiOptions?.output_format != null) {\n body.output_format = xaiOptions.output_format;\n }\n\n if (xaiOptions?.sync_mode != null) {\n body.sync_mode = xaiOptions.sync_mode;\n }\n\n if (xaiOptions?.aspect_ratio != null && aspectRatio == null) {\n body.aspect_ratio = xaiOptions.aspect_ratio;\n }\n\n if (xaiOptions?.resolution != null) {\n body.resolution = xaiOptions.resolution;\n }\n\n if (xaiOptions?.quality != null) {\n body.quality = xaiOptions.quality;\n }\n\n if (xaiOptions?.user != null) {\n body.user = xaiOptions.user;\n }\n\n if (imageUrls.length === 1) {\n body.image = { url: imageUrls[0], type: 'image_url' };\n } else if (imageUrls.length > 1) {\n body.images = imageUrls.map(url => ({ url, type: 'image_url' }));\n }\n\n const baseURL = this.config.baseURL ?? 'https://api.x.ai/v1';\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${baseURL}${endpoint}`,\n headers: combineHeaders(this.config.headers?.(), headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n const hasAllBase64 = response.data.every(image => image.b64_json != null);\n\n const images = hasAllBase64\n ? response.data.map(image => image.b64_json!)\n : await Promise.all(\n response.data.map(image =>\n this.downloadImage(image.url!, abortSignal),\n ),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n xai: {\n images: response.data.map(item => ({\n ...(item.revised_prompt\n ? { revisedPrompt: item.revised_prompt }\n : {}),\n })),\n ...(response.usage?.cost_in_usd_ticks != null\n ? { costInUsdTicks: response.usage.cost_in_usd_ticks }\n : {}),\n },\n },\n };\n }\n\n private async downloadImage(\n url: string,\n abortSignal: AbortSignal | undefined,\n ): Promise<Uint8Array> {\n const { value } = await getFromApi({\n url,\n abortSignal,\n failedResponseHandler: createStatusCodeErrorResponseHandler(),\n successfulResponseHandler: createBinaryResponseHandler(),\n fetch: this.config.fetch,\n });\n return value;\n }\n}\n\nconst xaiImageResponseSchema = z.object({\n data: z.array(\n z.object({\n url: z.string().nullish(),\n b64_json: z.string().nullish(),\n revised_prompt: z.string().nullish(),\n }),\n ),\n usage: z\n .object({\n cost_in_usd_ticks: z.number().nullish(),\n })\n .nullish(),\n});\n","import { z } from 'zod/v4';\n\nexport const xaiImageModelOptions = z.object({\n aspect_ratio: z.string().optional(),\n output_format: z.string().optional(),\n sync_mode: z.boolean().optional(),\n resolution: z.enum(['1k', '2k']).optional(),\n quality: z.enum(['low', 'medium', 'high']).optional(),\n user: z.string().optional(),\n});\n\nexport type XaiImageModelOptions = z.infer<typeof xaiImageModelOptions>;\n","import {\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4Content,\n LanguageModelV4FinishReason,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n LanguageModelV4Usage,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n isCustomReasoning,\n mapReasoningToProviderEffort,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { getResponseMetadata } from '../get-response-metadata';\nimport { xaiFailedResponseHandler } from '../xai-error';\nimport { convertToXaiResponsesInput } from './convert-to-xai-responses-input';\nimport { convertXaiResponsesUsage } from './convert-xai-responses-usage';\nimport { mapXaiResponsesFinishReason } from './map-xai-responses-finish-reason';\nimport {\n XaiResponsesIncludeOptions,\n xaiResponsesChunkSchema,\n xaiResponsesResponseSchema,\n} from './xai-responses-api';\nimport {\n XaiResponsesModelId,\n xaiLanguageModelResponsesOptions,\n} from './xai-responses-options';\nimport { prepareResponsesTools } from './xai-responses-prepare-tools';\n\ntype XaiResponsesConfig = {\n provider: string;\n baseURL: string | undefined;\n headers?: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class XaiResponsesLanguageModel implements LanguageModelV4 {\n readonly specificationVersion = 'v4';\n\n readonly modelId: XaiResponsesModelId;\n\n private readonly config: XaiResponsesConfig;\n\n static [WORKFLOW_SERIALIZE](model: XaiResponsesLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: XaiResponsesModelId;\n config: XaiResponsesConfig;\n }) {\n return new XaiResponsesLanguageModel(options.modelId, options.config);\n }\n\n constructor(modelId: XaiResponsesModelId, config: XaiResponsesConfig) {\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 stopSequences,\n seed,\n responseFormat,\n providerOptions,\n tools,\n toolChoice,\n reasoning,\n }: LanguageModelV4CallOptions) {\n const warnings: SharedV4Warning[] = [];\n\n const options =\n (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiLanguageModelResponsesOptions,\n })) ?? {};\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported', feature: 'stopSequences' });\n }\n\n const webSearchToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.web_search',\n )?.name;\n\n const xSearchToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.x_search',\n )?.name;\n\n const codeExecutionToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.code_execution',\n )?.name;\n\n const mcpToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.mcp',\n )?.name;\n\n const fileSearchToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.file_search',\n )?.name;\n\n const { input, inputWarnings } = await convertToXaiResponsesInput({\n prompt,\n store: options.store ?? true,\n });\n warnings.push(...inputWarnings);\n\n const {\n tools: xaiTools,\n toolChoice: xaiToolChoice,\n toolWarnings,\n } = await prepareResponsesTools({\n tools,\n toolChoice,\n });\n warnings.push(...toolWarnings);\n\n // Build include array based on provider options and store setting\n let include: XaiResponsesIncludeOptions = options.include\n ? [...options.include]\n : undefined;\n\n if (options.store === false) {\n // When store is false, we need to include reasoning.encrypted_content\n // to preserve reasoning tokens in the response\n if (include == null) {\n include = ['reasoning.encrypted_content'];\n } else {\n include = [...include, 'reasoning.encrypted_content'];\n }\n }\n\n const resolvedReasoningEffort =\n options.reasoningEffort ??\n (isCustomReasoning(reasoning)\n ? reasoning === 'none'\n ? undefined\n : mapReasoningToProviderEffort({\n reasoning,\n effortMap: {\n minimal: 'low',\n low: 'low',\n medium: 'medium',\n high: 'high',\n xhigh: 'high',\n },\n warnings,\n })\n : undefined);\n\n const baseArgs: Record<string, unknown> = {\n model: this.modelId,\n input,\n logprobs:\n options.logprobs === true || options.topLogprobs != null\n ? true\n : undefined,\n top_logprobs: options.topLogprobs,\n max_output_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n seed,\n ...(responseFormat?.type === 'json' && {\n text: {\n format:\n responseFormat.schema != null\n ? {\n type: 'json_schema',\n strict: true,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n schema: responseFormat.schema,\n }\n : { type: 'json_object' },\n },\n }),\n ...((resolvedReasoningEffort != null ||\n options.reasoningSummary != null) && {\n reasoning: {\n ...(resolvedReasoningEffort != null && {\n effort: resolvedReasoningEffort,\n }),\n ...(options.reasoningSummary != null && {\n summary: options.reasoningSummary,\n }),\n },\n }),\n ...(options.store === false && {\n store: options.store,\n }),\n ...(include != null && {\n include,\n }),\n ...(options.previousResponseId != null && {\n previous_response_id: options.previousResponseId,\n }),\n };\n\n if (xaiTools && xaiTools.length > 0) {\n baseArgs.tools = xaiTools;\n }\n\n if (xaiToolChoice != null) {\n baseArgs.tool_choice = xaiToolChoice;\n }\n\n return {\n args: baseArgs,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n mcpToolName,\n fileSearchToolName,\n };\n }\n\n async doGenerate(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\n const {\n args: body,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n mcpToolName,\n fileSearchToolName,\n } = 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'}/responses`,\n headers: combineHeaders(this.config.headers?.(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiResponsesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const content: Array<LanguageModelV4Content> = [];\n let hasFunctionCall = false;\n\n const webSearchSubTools = [\n 'web_search',\n 'web_search_with_snippets',\n 'browse_page',\n ];\n const xSearchSubTools = [\n 'x_user_search',\n 'x_keyword_search',\n 'x_semantic_search',\n 'x_thread_fetch',\n ];\n\n for (const part of response.output) {\n if (part.type === 'file_search_call') {\n const toolName = fileSearchToolName ?? 'file_search';\n\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: '',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n result: {\n queries: part.queries ?? [],\n results:\n part.results?.map(result => ({\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n },\n });\n\n continue;\n }\n\n if (\n part.type === 'web_search_call' ||\n part.type === 'x_search_call' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call' ||\n part.type === 'view_image_call' ||\n part.type === 'view_x_video_call' ||\n part.type === 'custom_tool_call' ||\n part.type === 'mcp_call'\n ) {\n let toolName = part.name ?? '';\n if (\n webSearchSubTools.includes(part.name ?? '') ||\n part.type === 'web_search_call'\n ) {\n toolName = webSearchToolName ?? 'web_search';\n } else if (\n xSearchSubTools.includes(part.name ?? '') ||\n part.type === 'x_search_call'\n ) {\n toolName = xSearchToolName ?? 'x_search';\n } else if (\n part.name === 'code_execution' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call'\n ) {\n toolName = codeExecutionToolName ?? 'code_execution';\n } else if (part.type === 'mcp_call') {\n toolName = mcpToolName ?? part.name ?? 'mcp';\n }\n\n const toolInput =\n part.type === 'custom_tool_call'\n ? (part.input ?? '')\n : part.type === 'mcp_call'\n ? (part.arguments ?? '')\n : (part.arguments ?? '');\n\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: toolInput,\n providerExecuted: true,\n });\n\n continue;\n }\n\n switch (part.type) {\n case 'message': {\n for (const contentPart of part.content) {\n if (contentPart.text) {\n content.push({\n type: 'text',\n text: contentPart.text,\n });\n }\n\n if (contentPart.annotations) {\n for (const annotation of contentPart.annotations) {\n if (annotation.type === 'url_citation' && 'url' in annotation) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n }\n\n break;\n }\n\n case 'function_call': {\n hasFunctionCall = true;\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n });\n break;\n }\n\n case 'reasoning': {\n const texts =\n part.summary.length > 0\n ? part.summary.map(s => s.text)\n : (part.content ?? []).map(c => c.text);\n\n const reasoningText = texts\n .filter(text => text && text.length > 0)\n .join('');\n\n // condition changed here since encrypted content can now come with empty reasoning text\n if (reasoningText || part.encrypted_content) {\n const hasMetadata = part.encrypted_content || part.id;\n content.push({\n type: 'reasoning',\n text: reasoningText,\n ...(hasMetadata && {\n providerMetadata: {\n xai: {\n ...(part.encrypted_content && {\n reasoningEncryptedContent: part.encrypted_content,\n }),\n ...(part.id && { itemId: part.id }),\n },\n },\n }),\n });\n }\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return {\n content,\n finishReason: {\n unified: hasFunctionCall\n ? 'tool-calls'\n : mapXaiResponsesFinishReason(response.status),\n raw: response.status ?? undefined,\n },\n usage: response.usage\n ? convertXaiResponsesUsage(response.usage)\n : {\n inputTokens: { total: 0, noCache: 0, cacheRead: 0, cacheWrite: 0 },\n outputTokens: { total: 0, text: 0, reasoning: 0 },\n },\n ...(response.usage?.cost_in_usd_ticks != null && {\n providerMetadata: {\n xai: {\n costInUsdTicks: response.usage.cost_in_usd_ticks,\n },\n },\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: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\n const {\n args,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n mcpToolName,\n fileSearchToolName,\n } = await this.getArgs(options);\n const body = {\n ...args,\n stream: true,\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/responses`,\n headers: combineHeaders(this.config.headers?.(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n xaiResponsesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV4FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let hasFunctionCall = false;\n let usage: LanguageModelV4Usage | undefined = undefined;\n let costInUsdTicks: number | undefined = undefined;\n let isFirstChunk = true;\n const contentBlocks: Record<string, { type: 'text' }> = {};\n const seenToolCalls = new Set<string>();\n\n // Track ongoing function calls by output_index so we can stream\n // arguments via response.function_call_arguments.delta events.\n const ongoingToolCalls: Record<\n number,\n { toolName: string; toolCallId: string } | undefined\n > = {};\n\n const activeReasoning: Record<\n string,\n { encryptedContent?: string | null }\n > = {};\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof xaiResponsesChunkSchema>>,\n LanguageModelV4StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\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 event = chunk.value;\n\n if (\n event.type === 'response.created' ||\n event.type === 'response.in_progress'\n ) {\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(event.response),\n });\n isFirstChunk = false;\n }\n return;\n }\n\n if (event.type === 'response.reasoning_summary_part.added') {\n const blockId = `reasoning-${event.item_id}`;\n\n activeReasoning[event.item_id] = {};\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n }\n\n if (event.type === 'response.reasoning_summary_text.delta') {\n const blockId = `reasoning-${event.item_id}`;\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: event.delta,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n\n return;\n }\n\n if (event.type === 'response.reasoning_summary_text.done') {\n return;\n }\n\n if (event.type === 'response.reasoning_text.delta') {\n const blockId = `reasoning-${event.item_id}`;\n\n if (activeReasoning[event.item_id] == null) {\n activeReasoning[event.item_id] = {};\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: event.delta,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n\n return;\n }\n\n if (event.type === 'response.reasoning_text.done') {\n return;\n }\n\n if (event.type === 'response.output_text.delta') {\n const blockId = `text-${event.item_id}`;\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: event.delta,\n });\n\n return;\n }\n\n if (event.type === 'response.output_text.done') {\n if (event.annotations) {\n for (const annotation of event.annotations) {\n if (\n annotation.type === 'url_citation' &&\n 'url' in annotation\n ) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n\n return;\n }\n\n if (event.type === 'response.output_text.annotation.added') {\n const annotation = event.annotation;\n if (annotation.type === 'url_citation' && 'url' in annotation) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n\n return;\n }\n\n if (\n event.type === 'response.done' ||\n event.type === 'response.completed' ||\n event.type === 'response.incomplete'\n ) {\n const response = event.response;\n\n if (response.usage) {\n usage = convertXaiResponsesUsage(response.usage);\n costInUsdTicks = response.usage.cost_in_usd_ticks ?? undefined;\n }\n\n if (event.type === 'response.incomplete') {\n const reason =\n 'incomplete_details' in response\n ? response.incomplete_details?.reason\n : undefined;\n finishReason = {\n unified: reason\n ? mapXaiResponsesFinishReason(reason)\n : 'other',\n raw: reason ?? 'incomplete',\n };\n } else if ('status' in response && response.status) {\n finishReason = {\n unified: hasFunctionCall\n ? 'tool-calls'\n : mapXaiResponsesFinishReason(response.status),\n raw: response.status,\n };\n }\n\n return;\n }\n\n if (event.type === 'response.failed') {\n const reason = event.response.incomplete_details?.reason;\n finishReason = {\n unified: reason ? mapXaiResponsesFinishReason(reason) : 'error',\n raw: reason ?? 'error',\n };\n\n if (event.response.usage) {\n usage = convertXaiResponsesUsage(event.response.usage);\n }\n\n return;\n }\n\n if (event.type === 'error') {\n controller.enqueue({ type: 'error', error: event });\n return;\n }\n\n // Custom tool call input streaming - already handled by output_item events\n if (\n event.type === 'response.custom_tool_call_input.delta' ||\n event.type === 'response.custom_tool_call_input.done'\n ) {\n return;\n }\n\n // Function call arguments streaming (standard function tools)\n if (event.type === 'response.function_call_arguments.delta') {\n const toolCall = ongoingToolCalls[event.output_index];\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: event.delta,\n });\n }\n return;\n }\n if (event.type === 'response.function_call_arguments.done') {\n // Arguments are fully received; output_item.done will\n // emit tool-input-end and tool-call with the final arguments.\n return;\n }\n\n if (\n event.type === 'response.output_item.added' ||\n event.type === 'response.output_item.done'\n ) {\n const part = event.item;\n if (part.type === 'reasoning') {\n if (event.type === 'response.output_item.done') {\n const blockId = `reasoning-${part.id}`;\n\n // Emit reasoning-start if not already emitted (e.g., for encrypted reasoning\n // where reasoning_summary_part.added events may not be sent)\n if (!(part.id in activeReasoning)) {\n activeReasoning[part.id] = {};\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n providerMetadata: {\n xai: {\n ...(part.id && { itemId: part.id }),\n },\n },\n });\n }\n\n controller.enqueue({\n type: 'reasoning-end',\n id: blockId,\n providerMetadata: {\n xai: {\n ...(part.encrypted_content && {\n reasoningEncryptedContent: part.encrypted_content,\n }),\n ...(part.id && { itemId: part.id }),\n },\n },\n });\n delete activeReasoning[part.id];\n }\n return;\n }\n\n if (part.type === 'file_search_call') {\n const toolName = fileSearchToolName ?? 'file_search';\n\n if (!seenToolCalls.has(part.id)) {\n seenToolCalls.add(part.id);\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.id,\n toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: part.id,\n delta: '',\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: part.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: '',\n providerExecuted: true,\n });\n }\n\n if (event.type === 'response.output_item.done') {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n result: {\n queries: part.queries ?? [],\n results:\n part.results?.map(result => ({\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n },\n });\n }\n\n return;\n }\n\n if (\n part.type === 'web_search_call' ||\n part.type === 'x_search_call' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call' ||\n part.type === 'view_image_call' ||\n part.type === 'view_x_video_call' ||\n part.type === 'custom_tool_call' ||\n part.type === 'mcp_call'\n ) {\n const webSearchSubTools = [\n 'web_search',\n 'web_search_with_snippets',\n 'browse_page',\n ];\n const xSearchSubTools = [\n 'x_user_search',\n 'x_keyword_search',\n 'x_semantic_search',\n 'x_thread_fetch',\n ];\n\n let toolName = part.name ?? '';\n if (\n webSearchSubTools.includes(part.name ?? '') ||\n part.type === 'web_search_call'\n ) {\n toolName = webSearchToolName ?? 'web_search';\n } else if (\n xSearchSubTools.includes(part.name ?? '') ||\n part.type === 'x_search_call'\n ) {\n toolName = xSearchToolName ?? 'x_search';\n } else if (\n part.name === 'code_execution' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call'\n ) {\n toolName = codeExecutionToolName ?? 'code_execution';\n } else if (part.type === 'mcp_call') {\n toolName = mcpToolName ?? part.name ?? 'mcp';\n }\n\n const toolInput =\n part.type === 'custom_tool_call'\n ? (part.input ?? '')\n : part.type === 'mcp_call'\n ? (part.arguments ?? '')\n : (part.arguments ?? '');\n\n const shouldEmit =\n part.type === 'custom_tool_call'\n ? event.type === 'response.output_item.done'\n : !seenToolCalls.has(part.id);\n\n if (shouldEmit && !seenToolCalls.has(part.id)) {\n seenToolCalls.add(part.id);\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.id,\n toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: part.id,\n delta: toolInput,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: part.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: toolInput,\n providerExecuted: true,\n });\n }\n\n return;\n }\n\n if (part.type === 'message') {\n for (const contentPart of part.content) {\n if (contentPart.text && contentPart.text.length > 0) {\n const blockId = `text-${part.id}`;\n\n // Only emit text if we haven't already streamed it via output_text.delta events\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: contentPart.text,\n });\n }\n }\n\n if (contentPart.annotations) {\n for (const annotation of contentPart.annotations) {\n if (\n annotation.type === 'url_citation' &&\n 'url' in annotation\n ) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n }\n } else if (part.type === 'function_call') {\n if (event.type === 'response.output_item.added') {\n // Track the call so function_call_arguments.delta events\n // can stream the arguments incrementally.\n ongoingToolCalls[event.output_index] = {\n toolName: part.name,\n toolCallId: part.call_id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.call_id,\n toolName: part.name,\n });\n } else if (event.type === 'response.output_item.done') {\n hasFunctionCall = true;\n ongoingToolCalls[event.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-input-end',\n id: part.call_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n });\n }\n }\n }\n },\n\n flush(controller) {\n for (const [blockId, block] of Object.entries(contentBlocks)) {\n if (block.type === 'text') {\n controller.enqueue({\n type: 'text-end',\n id: blockId,\n });\n }\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: usage ?? {\n inputTokens: {\n total: 0,\n noCache: 0,\n cacheRead: 0,\n cacheWrite: 0,\n },\n outputTokens: { total: 0, text: 0, reasoning: 0 },\n },\n ...(costInUsdTicks != null && {\n providerMetadata: {\n xai: {\n costInUsdTicks,\n },\n },\n }),\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n","import {\n SharedV4Warning,\n LanguageModelV4Message,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n isProviderReference,\n resolveProviderReference,\n} from '@ai-sdk/provider-utils';\nimport {\n XaiResponsesInput,\n XaiResponsesUserMessageContentPart,\n} from './xai-responses-api';\n\nexport async function convertToXaiResponsesInput({\n prompt,\n}: {\n prompt: LanguageModelV4Message[];\n store?: boolean;\n}): Promise<{\n input: XaiResponsesInput;\n inputWarnings: SharedV4Warning[];\n}> {\n const input: XaiResponsesInput = [];\n const inputWarnings: SharedV4Warning[] = [];\n\n for (const message of prompt) {\n switch (message.role) {\n case 'system': {\n input.push({\n role: 'system',\n content: message.content,\n });\n break;\n }\n\n case 'user': {\n const contentParts: XaiResponsesUserMessageContentPart[] = [];\n\n for (const block of message.content) {\n switch (block.type) {\n case 'text': {\n contentParts.push({ type: 'input_text', text: block.text });\n break;\n }\n\n case 'file': {\n if (isProviderReference(block.data)) {\n contentParts.push({\n type: 'input_file',\n file_id: resolveProviderReference({\n reference: block.data,\n provider: 'xai',\n }),\n });\n } else if (block.mediaType.startsWith('image/')) {\n const mediaType =\n block.mediaType === 'image/*'\n ? 'image/jpeg'\n : block.mediaType;\n\n const imageUrl =\n block.data instanceof URL\n ? block.data.toString()\n : `data:${mediaType};base64,${convertToBase64(block.data)}`;\n\n contentParts.push({ type: 'input_image', image_url: imageUrl });\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${block.mediaType}`,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = block;\n inputWarnings.push({\n type: 'other',\n message:\n 'xAI Responses API does not support this content type in user messages',\n });\n }\n }\n }\n\n input.push({\n role: 'user',\n content: contentParts,\n });\n break;\n }\n\n case 'assistant': {\n for (const part of message.content) {\n switch (part.type) {\n case 'text': {\n const id =\n typeof part.providerOptions?.xai?.itemId === 'string'\n ? part.providerOptions.xai.itemId\n : undefined;\n\n input.push({\n role: 'assistant',\n content: part.text,\n id,\n });\n\n break;\n }\n\n case 'tool-call': {\n if (part.providerExecuted) {\n break;\n }\n\n const id =\n typeof part.providerOptions?.xai?.itemId === 'string'\n ? part.providerOptions.xai.itemId\n : undefined;\n\n input.push({\n type: 'function_call',\n id: id ?? part.toolCallId,\n call_id: part.toolCallId,\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n status: 'completed',\n });\n break;\n }\n\n case 'tool-result': {\n break;\n }\n\n case 'reasoning': {\n const itemId =\n typeof part.providerOptions?.xai?.itemId === 'string'\n ? part.providerOptions.xai.itemId\n : undefined;\n const encryptedContent =\n typeof part.providerOptions?.xai?.reasoningEncryptedContent ===\n 'string'\n ? part.providerOptions.xai.reasoningEncryptedContent\n : undefined;\n\n if (itemId != null || encryptedContent != null) {\n const summaryParts: Array<{\n type: 'summary_text';\n text: string;\n }> = [];\n if (part.text.length > 0) {\n summaryParts.push({\n type: 'summary_text',\n text: part.text,\n });\n }\n\n input.push({\n type: 'reasoning',\n id: itemId ?? '',\n summary: summaryParts,\n status: 'completed',\n ...(encryptedContent != null && {\n encrypted_content: encryptedContent,\n }),\n });\n } else {\n inputWarnings.push({\n type: 'other',\n message:\n 'Reasoning parts without itemId or encrypted content cannot be sent back to xAI. Skipping.',\n });\n }\n break;\n }\n\n case 'reasoning-file':\n case 'custom':\n case 'file': {\n inputWarnings.push({\n type: 'other',\n message: `xAI Responses API does not support ${part.type} in assistant messages`,\n });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = part;\n inputWarnings.push({\n type: 'other',\n message:\n 'xAI Responses API does not support this content type in assistant messages',\n });\n }\n }\n }\n\n break;\n }\n\n case 'tool': {\n for (const part of message.content) {\n if (part.type === 'tool-approval-response') {\n continue;\n }\n const output = part.output;\n\n let outputValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n outputValue = output.value;\n break;\n case 'execution-denied':\n outputValue = output.reason ?? 'tool execution denied';\n break;\n case 'json':\n case 'error-json':\n outputValue = JSON.stringify(output.value);\n break;\n case 'content':\n outputValue = output.value\n .map(item => {\n if (item.type === 'text') {\n return item.text;\n }\n return '';\n })\n .join('');\n break;\n default: {\n const _exhaustiveCheck: never = output;\n outputValue = '';\n }\n }\n\n input.push({\n type: 'function_call_output',\n call_id: part.toolCallId,\n output: outputValue,\n });\n }\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = message;\n inputWarnings.push({\n type: 'other',\n message: 'unsupported message role',\n });\n }\n }\n }\n\n return { input, inputWarnings };\n}\n","import { LanguageModelV4Usage } from '@ai-sdk/provider';\nimport { XaiResponsesUsage } from './xai-responses-api';\n\nexport function convertXaiResponsesUsage(\n usage: XaiResponsesUsage,\n): LanguageModelV4Usage {\n const cacheReadTokens = usage.input_tokens_details?.cached_tokens ?? 0;\n const reasoningTokens = usage.output_tokens_details?.reasoning_tokens ?? 0;\n\n const inputTokensIncludesCached = cacheReadTokens <= usage.input_tokens;\n\n return {\n inputTokens: {\n total: inputTokensIncludesCached\n ? usage.input_tokens\n : usage.input_tokens + cacheReadTokens,\n noCache: inputTokensIncludesCached\n ? usage.input_tokens - cacheReadTokens\n : usage.input_tokens,\n cacheRead: cacheReadTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: usage.output_tokens,\n text: usage.output_tokens - reasoningTokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import { LanguageModelV4FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiResponsesFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV4FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n case 'completed':\n return 'stop';\n case 'length':\n case 'max_output_tokens':\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 'other';\n }\n}\n","import { z } from 'zod/v4';\n\nexport type XaiResponsesIncludeValue =\n | 'file_search_call.results'\n | 'reasoning.encrypted_content';\n\nexport type XaiResponsesIncludeOptions =\n | Array<XaiResponsesIncludeValue>\n | undefined\n | null;\n\nexport type XaiResponsesInput = Array<XaiResponsesInputItem>;\n\nexport type XaiResponsesInputItem =\n | XaiResponsesSystemMessage\n | XaiResponsesUserMessage\n | XaiResponsesAssistantMessage\n | XaiResponsesFunctionCallOutput\n | XaiResponsesReasoning\n | XaiResponsesToolCall;\n\nexport type XaiResponsesSystemMessage = {\n role: 'system' | 'developer';\n content: string;\n};\n\nexport type XaiResponsesUserMessageContentPart =\n | { type: 'input_text'; text: string }\n | { type: 'input_image'; image_url: string }\n | { type: 'input_file'; file_id: string };\n\nexport type XaiResponsesUserMessage = {\n role: 'user';\n content: Array<XaiResponsesUserMessageContentPart>;\n};\n\nexport type XaiResponsesAssistantMessage = {\n role: 'assistant';\n content: string;\n id?: string;\n};\n\nexport type XaiResponsesFunctionCallOutput = {\n type: 'function_call_output';\n call_id: string;\n output: string;\n};\n\nexport type XaiResponsesReasoning = {\n type: 'reasoning';\n id: string;\n summary: Array<{\n type: 'summary_text';\n text: string;\n }>;\n status: string;\n encrypted_content?: string | null;\n};\n\nexport type XaiResponsesToolCall = {\n type:\n | 'function_call'\n | 'web_search_call'\n | 'x_search_call'\n | 'code_interpreter_call'\n | 'custom_tool_call';\n id: string;\n call_id?: string;\n name?: string;\n arguments?: string;\n input?: string;\n status: string;\n action?: any;\n};\n\nexport type XaiResponsesTool =\n | {\n type: 'web_search';\n allowed_domains?: string[];\n excluded_domains?: string[];\n enable_image_understanding?: boolean;\n }\n | {\n type: 'x_search';\n allowed_x_handles?: string[];\n excluded_x_handles?: string[];\n from_date?: string;\n to_date?: string;\n enable_image_understanding?: boolean;\n enable_video_understanding?: boolean;\n }\n | { type: 'code_interpreter' }\n | { type: 'view_image' }\n | { type: 'view_x_video' }\n | {\n type: 'file_search';\n vector_store_ids?: string[];\n max_num_results?: number;\n }\n | {\n type: 'mcp';\n server_url: string;\n server_label?: string;\n server_description?: string;\n allowed_tools?: string[];\n headers?: Record<string, string>;\n authorization?: string;\n }\n | {\n type: 'function';\n name: string;\n description?: string;\n parameters: unknown;\n strict?: boolean;\n };\n\nconst annotationSchema = z.union([\n z.object({\n type: z.literal('url_citation'),\n url: z.string(),\n title: z.string().optional(),\n }),\n z.object({\n type: z.string(),\n }),\n]);\n\nconst messageContentPartSchema = z.object({\n type: z.string(),\n text: z.string().optional(),\n logprobs: z.array(z.any()).optional(),\n annotations: z.array(annotationSchema).optional(),\n});\n\nconst reasoningSummaryPartSchema = z.object({\n type: z.string(),\n text: z.string(),\n});\n\nconst toolCallSchema = z.object({\n name: z.string().optional(),\n arguments: z.string().optional(),\n input: z.string().optional(),\n call_id: z.string().optional(),\n id: z.string(),\n status: z.string(),\n action: z.any().optional(),\n});\n\nconst mcpCallSchema = z.object({\n name: z.string().optional(),\n arguments: z.string().optional(),\n output: z.string().optional(),\n error: z.string().optional(),\n id: z.string(),\n status: z.string(),\n server_label: z.string().optional(),\n});\n\nconst outputItemSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('web_search_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('x_search_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('code_execution_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('view_image_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('view_x_video_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n status: z.string(),\n queries: z.array(z.string()).optional(),\n results: z\n .array(\n z.object({\n file_id: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('custom_tool_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('mcp_call'),\n ...mcpCallSchema.shape,\n }),\n z.object({\n type: z.literal('message'),\n role: z.string(),\n content: z.array(messageContentPartSchema),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('function_call'),\n name: z.string(),\n arguments: z.string(),\n call_id: z.string(),\n id: z.string(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n summary: z.array(reasoningSummaryPartSchema),\n content: z\n .array(z.object({ type: z.string(), text: z.string() }))\n .nullish(),\n status: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n]);\n\nexport const xaiResponsesUsageSchema = z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n total_tokens: z.number().optional(),\n input_tokens_details: z\n .object({\n cached_tokens: z.number().optional(),\n })\n .optional(),\n output_tokens_details: z\n .object({\n reasoning_tokens: z.number().optional(),\n })\n .optional(),\n num_sources_used: z.number().optional(),\n num_server_side_tools_used: z.number().optional(),\n cost_in_usd_ticks: z.number().nullish(),\n});\n\nexport const xaiResponsesResponseSchema = z.object({\n id: z.string().nullish(),\n created_at: z.number().nullish(),\n model: z.string().nullish(),\n object: z.literal('response'),\n output: z.array(outputItemSchema),\n usage: xaiResponsesUsageSchema.nullish(),\n status: z.string(),\n});\n\nexport const xaiResponsesChunkSchema = z.union([\n z.object({\n type: z.literal('response.created'),\n response: xaiResponsesResponseSchema.partial({ usage: true, status: true }),\n }),\n z.object({\n type: z.literal('response.in_progress'),\n response: xaiResponsesResponseSchema.partial({ usage: true, status: true }),\n }),\n z.object({\n type: z.literal('response.output_item.added'),\n item: outputItemSchema,\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.output_item.done'),\n item: outputItemSchema,\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.content_part.added'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n part: messageContentPartSchema,\n }),\n z.object({\n type: z.literal('response.content_part.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n part: messageContentPartSchema,\n }),\n z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n logprobs: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('response.output_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n text: z.string(),\n logprobs: z.array(z.any()).optional(),\n annotations: z.array(annotationSchema).optional(),\n }),\n z.object({\n type: z.literal('response.output_text.annotation.added'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n annotation_index: z.number(),\n annotation: annotationSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.added'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n part: reasoningSummaryPartSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.done'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n part: reasoningSummaryPartSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n text: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n text: z.string(),\n }),\n z.object({\n type: z.literal('response.web_search_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.web_search_call.searching'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.web_search_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.searching'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.file_search_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.file_search_call.searching'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.file_search_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_execution_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_execution_call.executing'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_execution_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.executing'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.interpreting'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n // Code interpreter code streaming events\n z.object({\n type: z.literal('response.code_interpreter_call_code.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call_code.done'),\n item_id: z.string(),\n output_index: z.number(),\n code: z.string(),\n }),\n z.object({\n type: z.literal('response.custom_tool_call_input.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.custom_tool_call_input.done'),\n item_id: z.string(),\n output_index: z.number(),\n input: z.string(),\n }),\n // Function call arguments streaming events (standard function tools)\n z.object({\n type: z.literal('response.function_call_arguments.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.function_call_arguments.done'),\n item_id: z.string(),\n output_index: z.number(),\n arguments: z.string(),\n }),\n z.object({\n type: z.literal('response.mcp_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.mcp_call.executing'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.mcp_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.mcp_call.failed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.mcp_call_arguments.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.mcp_call_arguments.done'),\n item_id: z.string(),\n output_index: z.number(),\n arguments: z.string().optional(),\n }),\n z.object({\n type: z.literal('response.mcp_call_output.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.mcp_call_output.done'),\n item_id: z.string(),\n output_index: z.number(),\n output: z.string().optional(),\n }),\n z.object({\n type: z.literal('response.incomplete'),\n response: z.object({\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: xaiResponsesUsageSchema.nullish(),\n }),\n }),\n z.object({\n type: z.literal('response.failed'),\n response: z.object({\n error: z\n .object({\n code: z.string().nullish(),\n message: z.string(),\n })\n .nullish(),\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: xaiResponsesUsageSchema.nullish(),\n }),\n }),\n z.object({\n type: z.literal('error'),\n code: z.string().nullish(),\n message: z.string(),\n param: z.string().nullish(),\n }),\n z.object({\n type: z.literal('response.done'),\n response: xaiResponsesResponseSchema,\n }),\n z.object({\n type: z.literal('response.completed'),\n response: xaiResponsesResponseSchema,\n }),\n]);\n\nexport type XaiResponsesResponse = z.infer<typeof xaiResponsesResponseSchema>;\nexport type XaiResponsesChunk = z.infer<typeof xaiResponsesChunkSchema>;\nexport type XaiResponsesUsage = z.infer<typeof xaiResponsesUsageSchema>;\n","import { z } from 'zod/v4';\n\nexport type XaiResponsesModelId =\n | 'grok-4-1-fast-reasoning'\n | 'grok-4-1-fast-non-reasoning'\n | 'grok-4'\n | 'grok-4-fast-non-reasoning'\n | 'grok-4-fast-reasoning'\n | 'grok-4.20-0309-non-reasoning'\n | 'grok-4.20-0309-reasoning'\n | 'grok-4.20-multi-agent-0309'\n | (string & {});\n\n/**\n * @see https://docs.x.ai/docs/api-reference#create-new-response\n */\nexport const xaiLanguageModelResponsesOptions = z.object({\n /**\n * Constrains how hard a reasoning model thinks before responding.\n * Possible values are `low` (uses fewer reasoning tokens), `medium` and `high` (uses more reasoning tokens).\n */\n reasoningEffort: z.enum(['low', 'medium', 'high']).optional(),\n reasoningSummary: z.enum(['auto', 'concise', 'detailed']).optional(),\n logprobs: z.boolean().optional(),\n topLogprobs: z.number().int().min(0).max(8).optional(),\n /**\n * Whether to store the input message(s) and model response for later retrieval.\n * Must be set to `false` for teams with Zero Data Retention (ZDR) enabled,\n * otherwise the API will return an error.\n * @default true\n */\n store: z.boolean().optional(),\n /**\n * The ID of the previous response from the model.\n */\n previousResponseId: z.string().optional(),\n /**\n * Specify additional output data to include in the model response.\n * Example values: 'file_search_call.results'.\n */\n include: z.array(z.enum(['file_search_call.results'])).nullish(),\n});\n\nexport type XaiLanguageModelResponsesOptions = z.infer<\n typeof xaiLanguageModelResponsesOptions\n>;\n","import {\n LanguageModelV4CallOptions,\n SharedV4Warning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { validateTypes } from '@ai-sdk/provider-utils';\nimport { fileSearchArgsSchema } from '../tool/file-search';\nimport { mcpServerArgsSchema } from '../tool/mcp-server';\nimport { webSearchArgsSchema } from '../tool/web-search';\nimport { xSearchArgsSchema } from '../tool/x-search';\nimport { XaiResponsesTool } from './xai-responses-api';\n\ntype XaiResponsesToolChoice =\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'function'; name: string };\n\nexport async function prepareResponsesTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV4CallOptions['tools'];\n toolChoice?: LanguageModelV4CallOptions['toolChoice'];\n}): Promise<{\n tools: Array<XaiResponsesTool> | undefined;\n toolChoice: XaiResponsesToolChoice | undefined;\n toolWarnings: SharedV4Warning[];\n}> {\n const normalizedTools = tools?.length ? tools : undefined;\n\n const toolWarnings: SharedV4Warning[] = [];\n\n if (normalizedTools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const xaiTools: Array<XaiResponsesTool> = [];\n const toolByName = new Map<string, (typeof normalizedTools)[number]>();\n\n for (const tool of normalizedTools) {\n toolByName.set(tool.name, tool);\n\n if (tool.type === 'provider') {\n switch (tool.id) {\n case 'xai.web_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: webSearchArgsSchema,\n });\n\n xaiTools.push({\n type: 'web_search',\n allowed_domains: args.allowedDomains,\n excluded_domains: args.excludedDomains,\n enable_image_understanding: args.enableImageUnderstanding,\n });\n break;\n }\n\n case 'xai.x_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: xSearchArgsSchema,\n });\n\n xaiTools.push({\n type: 'x_search',\n allowed_x_handles: args.allowedXHandles,\n excluded_x_handles: args.excludedXHandles,\n from_date: args.fromDate,\n to_date: args.toDate,\n enable_image_understanding: args.enableImageUnderstanding,\n enable_video_understanding: args.enableVideoUnderstanding,\n });\n break;\n }\n\n case 'xai.code_execution': {\n xaiTools.push({\n type: 'code_interpreter',\n });\n break;\n }\n\n case 'xai.view_image': {\n xaiTools.push({\n type: 'view_image',\n });\n break;\n }\n\n case 'xai.view_x_video': {\n xaiTools.push({\n type: 'view_x_video',\n });\n break;\n }\n\n case 'xai.file_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: fileSearchArgsSchema,\n });\n\n xaiTools.push({\n type: 'file_search',\n vector_store_ids: args.vectorStoreIds,\n max_num_results: args.maxNumResults,\n });\n break;\n }\n\n case 'xai.mcp': {\n const args = await validateTypes({\n value: tool.args,\n schema: mcpServerArgsSchema,\n });\n\n xaiTools.push({\n type: 'mcp',\n server_url: args.serverUrl,\n server_label: args.serverLabel,\n server_description: args.serverDescription,\n allowed_tools: args.allowedTools,\n headers: args.headers,\n authorization: args.authorization,\n });\n break;\n }\n\n default: {\n toolWarnings.push({\n type: 'unsupported',\n feature: `provider-defined tool ${tool.name}`,\n });\n break;\n }\n }\n } else {\n xaiTools.push({\n type: 'function',\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n ...(tool.strict != null ? { strict: tool.strict } : {}),\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 return { tools: xaiTools, toolChoice: 'required', toolWarnings };\n case 'tool': {\n const selectedTool = toolByName.get(toolChoice.toolName);\n\n if (selectedTool == null) {\n return {\n tools: xaiTools,\n toolChoice: undefined,\n toolWarnings,\n };\n }\n\n if (selectedTool.type === 'provider') {\n // xAI API does not support forcing specific server-side tools via toolChoice\n // Only function tools can be forced with {\"type\": \"function\", \"function\": {\"name\": \"...\"}}\n toolWarnings.push({\n type: 'unsupported',\n feature: `toolChoice for server-side tool \"${selectedTool.name}\"`,\n });\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n\n return {\n tools: xaiTools,\n toolChoice: { type: 'function', name: selectedTool.name },\n toolWarnings,\n };\n }\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * Schema for file search tool arguments.\n * @see https://docs.x.ai/docs/guides/using-collections/api\n */\nexport const fileSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n vectorStoreIds: z.array(z.string()),\n maxNumResults: z.number().optional(),\n }),\n ),\n);\n\nconst fileSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n fileId: z.string(),\n filename: z.string(),\n score: z.number().min(0).max(1),\n text: z.string(),\n }),\n )\n .nullable(),\n }),\n ),\n);\n\nconst fileSearchToolFactory = createProviderExecutedToolFactory<\n {},\n {\n /**\n * The search queries that were executed.\n */\n queries: string[];\n\n /**\n * The results of the file search tool call.\n */\n results:\n | null\n | {\n /**\n * The unique ID of the file.\n */\n fileId: string;\n\n /**\n * The name of the file.\n */\n filename: string;\n\n /**\n * The relevance score of the file - a value between 0 and 1.\n */\n score: number;\n\n /**\n * The text that was retrieved from the file.\n */\n text: string;\n }[];\n },\n {\n /**\n * List of vector store IDs (collection IDs) to search through.\n * @see https://docs.x.ai/docs/guides/using-collections/api\n */\n vectorStoreIds: string[];\n\n /**\n * Maximum number of search results to return.\n */\n maxNumResults?: number;\n }\n>({\n id: 'xai.file_search',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: fileSearchOutputSchema,\n});\n\nexport const fileSearch = (args: Parameters<typeof fileSearchToolFactory>[0]) =>\n fileSearchToolFactory(args);\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const mcpServerArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n serverUrl: z.string().describe('The URL of the MCP server'),\n serverLabel: z.string().optional().describe('A label for the MCP server'),\n serverDescription: z\n .string()\n .optional()\n .describe('Description of the MCP server'),\n allowedTools: z\n .array(z.string())\n .optional()\n .describe('List of allowed tool names'),\n headers: z\n .record(z.string(), z.string())\n .optional()\n .describe('Custom headers to send'),\n authorization: z\n .string()\n .optional()\n .describe('Authorization header value'),\n }),\n ),\n);\n\n// MCP tool output varies based on which tool is called\nconst mcpServerOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n name: z.string(),\n arguments: z.string(),\n result: z.unknown(),\n }),\n ),\n);\n\nconst mcpServerToolFactory = createProviderExecutedToolFactory<\n {},\n {\n name: string;\n arguments: string;\n result: unknown;\n },\n {\n serverUrl: string;\n serverLabel?: string;\n serverDescription?: string;\n allowedTools?: string[];\n headers?: Record<string, string>;\n authorization?: string;\n }\n>({\n id: 'xai.mcp',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: mcpServerOutputSchema,\n});\n\nexport const mcpServer = (args: Parameters<typeof mcpServerToolFactory>[0]) =>\n mcpServerToolFactory(args);\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n allowedDomains: z.array(z.string()).max(5).optional(),\n excludedDomains: z.array(z.string()).max(5).optional(),\n enableImageUnderstanding: z.boolean().optional(),\n }),\n ),\n);\n\nconst webSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n query: z.string(),\n sources: z.array(\n z.object({\n title: z.string(),\n url: z.string(),\n snippet: z.string(),\n }),\n ),\n }),\n ),\n);\n\nconst webSearchToolFactory = createProviderExecutedToolFactory<\n {},\n {\n query: string;\n sources: Array<{\n title: string;\n url: string;\n snippet: string;\n }>;\n },\n {\n allowedDomains?: string[];\n excludedDomains?: string[];\n enableImageUnderstanding?: boolean;\n }\n>({\n id: 'xai.web_search',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: webSearchOutputSchema,\n});\n\nexport const webSearch = (\n args: Parameters<typeof webSearchToolFactory>[0] = {},\n) => webSearchToolFactory(args);\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n allowedXHandles: z.array(z.string()).max(10).optional(),\n excludedXHandles: z.array(z.string()).max(10).optional(),\n fromDate: z.string().optional(),\n toDate: z.string().optional(),\n enableImageUnderstanding: z.boolean().optional(),\n enableVideoUnderstanding: z.boolean().optional(),\n }),\n ),\n);\n\nconst xSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n query: z.string(),\n posts: z.array(\n z.object({\n author: z.string(),\n text: z.string(),\n url: z.string(),\n likes: z.number(),\n }),\n ),\n }),\n ),\n);\n\nconst xSearchToolFactory = createProviderExecutedToolFactory<\n {},\n {\n query: string;\n posts: Array<{\n author: string;\n text: string;\n url: string;\n likes: number;\n }>;\n },\n {\n allowedXHandles?: string[];\n excludedXHandles?: string[];\n fromDate?: string;\n toDate?: string;\n enableImageUnderstanding?: boolean;\n enableVideoUnderstanding?: boolean;\n }\n>({\n id: 'xai.x_search',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: xSearchOutputSchema,\n});\n\nexport const xSearch = (args: Parameters<typeof xSearchToolFactory>[0] = {}) =>\n xSearchToolFactory(args);\n","import { createProviderExecutedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst codeExecutionOutputSchema = z.object({\n output: z.string().describe('the output of the code execution'),\n error: z.string().optional().describe('any error that occurred'),\n});\n\nconst codeExecutionToolFactory = createProviderExecutedToolFactory({\n id: 'xai.code_execution',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: codeExecutionOutputSchema,\n});\n\nexport const codeExecution = (\n args: Parameters<typeof codeExecutionToolFactory>[0] = {},\n) => codeExecutionToolFactory(args);\n","import { createProviderExecutedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst viewImageOutputSchema = z.object({\n description: z.string().describe('description of the image'),\n objects: z\n .array(z.string())\n .optional()\n .describe('objects detected in the image'),\n});\n\nconst viewImageToolFactory = createProviderExecutedToolFactory({\n id: 'xai.view_image',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: viewImageOutputSchema,\n});\n\nexport const viewImage = (\n args: Parameters<typeof viewImageToolFactory>[0] = {},\n) => viewImageToolFactory(args);\n","import { createProviderExecutedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst viewXVideoOutputSchema = z.object({\n transcript: z.string().optional().describe('transcript of the video'),\n description: z.string().describe('description of the video content'),\n duration: z.number().optional().describe('duration in seconds'),\n});\n\nconst viewXVideoToolFactory = createProviderExecutedToolFactory({\n id: 'xai.view_x_video',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: viewXVideoOutputSchema,\n});\n\nexport const viewXVideo = (\n args: Parameters<typeof viewXVideoToolFactory>[0] = {},\n) => viewXVideoToolFactory(args);\n","import { codeExecution } from './code-execution';\nimport { fileSearch } from './file-search';\nimport { mcpServer } from './mcp-server';\nimport { viewImage } from './view-image';\nimport { viewXVideo } from './view-x-video';\nimport { webSearch } from './web-search';\nimport { xSearch } from './x-search';\n\nexport {\n codeExecution,\n fileSearch,\n mcpServer,\n viewImage,\n viewXVideo,\n webSearch,\n xSearch,\n};\n\nexport const xaiTools = {\n codeExecution,\n fileSearch,\n mcpServer,\n viewImage,\n viewXVideo,\n webSearch,\n xSearch,\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","import {\n FilesV4,\n FilesV4UploadFileCallOptions,\n FilesV4UploadFileResult,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { xaiFailedResponseHandler } from '../xai-error';\nimport { xaiFilesResponseSchema } from './xai-files-api';\nimport { xaiFilesOptionsSchema, XaiFilesOptions } from './xai-files-options';\n\ninterface XaiFilesConfig {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n}\n\nexport class XaiFiles implements FilesV4 {\n readonly specificationVersion = 'v4';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(private readonly config: XaiFilesConfig) {}\n\n async uploadFile({\n data,\n mediaType,\n filename,\n providerOptions,\n }: FilesV4UploadFileCallOptions): Promise<FilesV4UploadFileResult> {\n const xaiOptions = (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiFilesOptionsSchema,\n })) as XaiFilesOptions | undefined;\n\n const fileBytes =\n data instanceof Uint8Array ? data : convertBase64ToUint8Array(data);\n\n const blob = new Blob([fileBytes], {\n type: mediaType,\n });\n\n const formData = new FormData();\n if (filename != null) {\n formData.append('file', blob, filename);\n } else {\n formData.append('file', blob);\n }\n\n if (xaiOptions?.teamId != null) {\n formData.append('team_id', xaiOptions.teamId);\n }\n\n const { value: response } = await postFormDataToApi({\n url: `${this.config.baseURL}/files`,\n headers: combineHeaders(this.config.headers()),\n formData,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiFilesResponseSchema,\n ),\n fetch: this.config.fetch,\n });\n\n return {\n warnings: [],\n providerReference: { xai: response.id },\n ...((response.filename ?? filename)\n ? { filename: response.filename ?? filename }\n : {}),\n ...(mediaType != null ? { mediaType } : {}),\n providerMetadata: {\n xai: {\n ...(response.filename != null ? { filename: response.filename } : {}),\n ...(response.bytes != null ? { bytes: response.bytes } : {}),\n ...(response.created_at != null\n ? { createdAt: response.created_at }\n : {}),\n },\n },\n };\n }\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xaiFilesResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n id: z.string(),\n object: z.string().nullish(),\n bytes: z.number().nullish(),\n created_at: z.number().nullish(),\n filename: z.string().nullish(),\n purpose: z.string().nullish(),\n status: z.string().nullish(),\n }),\n ),\n);\n","import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xaiFilesOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n teamId: z.string().optional(),\n filePath: z.string().optional(),\n })\n .passthrough(),\n ),\n);\n\nexport type XaiFilesOptions = InferSchema<typeof xaiFilesOptionsSchema>;\n","import {\n AISDKError,\n type Experimental_VideoModelV4,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertUint8ArrayToBase64,\n createJsonResponseHandler,\n delay,\n type FetchFunction,\n getFromApi,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport {\n type XaiParsedVideoModelOptions,\n xaiVideoModelOptionsSchema,\n} from './xai-video-options';\nimport type { XaiVideoModelId } from './xai-video-settings';\n\ninterface XaiVideoModelConfig {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nconst RESOLUTION_MAP: Record<string, string> = {\n '1280x720': '720p',\n '854x480': '480p',\n '640x480': '480p',\n};\n\nfunction resolveVideoMode(\n options: XaiParsedVideoModelOptions | undefined,\n): XaiParsedVideoModelOptions['mode'] | undefined {\n if (options?.mode != null) {\n return options.mode;\n }\n\n if (options?.videoUrl != null) {\n return 'edit-video';\n }\n\n if (\n options?.referenceImageUrls != null &&\n options.referenceImageUrls.length > 0\n ) {\n return 'reference-to-video';\n }\n\n return undefined;\n}\n\nexport class XaiVideoModel implements Experimental_VideoModelV4 {\n readonly specificationVersion = 'v4';\n readonly maxVideosPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: XaiVideoModelId,\n private config: XaiVideoModelConfig,\n ) {}\n\n async doGenerate(\n options: Parameters<Experimental_VideoModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<Experimental_VideoModelV4['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const warnings: SharedV4Warning[] = [];\n\n const xaiOptions = (await parseProviderOptions({\n provider: 'xai',\n providerOptions: options.providerOptions,\n schema: xaiVideoModelOptionsSchema,\n })) as XaiParsedVideoModelOptions | undefined;\n\n const effectiveMode = resolveVideoMode(xaiOptions);\n\n const isEdit = effectiveMode === 'edit-video';\n const isExtension = effectiveMode === 'extend-video';\n const hasReferenceImages = effectiveMode === 'reference-to-video';\n\n if (options.fps != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'fps',\n details: 'xAI video models do not support custom FPS.',\n });\n }\n\n if (options.seed != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'seed',\n details: 'xAI video models do not support seed.',\n });\n }\n\n if (options.n != null && options.n > 1) {\n warnings.push({\n type: 'unsupported',\n feature: 'n',\n details:\n 'xAI video models do not support generating multiple videos per call. ' +\n 'Only 1 video will be generated.',\n });\n }\n\n // Edit mode: duration, aspectRatio, resolution not supported\n if (isEdit && options.duration != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'duration',\n details: 'xAI video editing does not support custom duration.',\n });\n }\n\n if (isEdit && options.aspectRatio != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'aspectRatio',\n details: 'xAI video editing does not support custom aspect ratio.',\n });\n }\n\n if (\n isEdit &&\n (xaiOptions?.resolution != null || options.resolution != null)\n ) {\n warnings.push({\n type: 'unsupported',\n feature: 'resolution',\n details: 'xAI video editing does not support custom resolution.',\n });\n }\n\n // Extension mode: aspectRatio and resolution not supported\n if (isExtension && options.aspectRatio != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'aspectRatio',\n details: 'xAI video extension does not support custom aspect ratio.',\n });\n }\n\n if (\n isExtension &&\n (xaiOptions?.resolution != null || options.resolution != null)\n ) {\n warnings.push({\n type: 'unsupported',\n feature: 'resolution',\n details: 'xAI video extension does not support custom resolution.',\n });\n }\n\n const body: Record<string, unknown> = {\n model: this.modelId,\n prompt: options.prompt,\n };\n\n const allowDuration = !isEdit;\n const allowAspectRatio = !isEdit && !isExtension;\n const allowResolution = !isEdit && !isExtension;\n\n if (allowDuration && options.duration != null) {\n body.duration = options.duration;\n }\n\n if (allowAspectRatio && options.aspectRatio != null) {\n body.aspect_ratio = options.aspectRatio;\n }\n\n if (allowResolution && xaiOptions?.resolution != null) {\n body.resolution = xaiOptions.resolution;\n } else if (allowResolution && options.resolution != null) {\n const mapped = RESOLUTION_MAP[options.resolution];\n if (mapped != null) {\n body.resolution = mapped;\n } else {\n warnings.push({\n type: 'unsupported',\n feature: 'resolution',\n details:\n `Unrecognized resolution \"${options.resolution}\". ` +\n 'Use providerOptions.xai.resolution with \"480p\" or \"720p\" instead.',\n });\n }\n }\n\n // Video editing: pass source video URL (nested object)\n if (isEdit) {\n body.video = { url: xaiOptions!.videoUrl };\n }\n\n // Video extension: pass source video URL (nested object)\n if (isExtension) {\n body.video = { url: xaiOptions!.videoUrl };\n }\n\n // Convert SDK image input to the nested xAI request image object\n if (options.image != null) {\n if (options.image.type === 'url') {\n body.image = { url: options.image.url };\n } else {\n const base64Data =\n typeof options.image.data === 'string'\n ? options.image.data\n : convertUint8ArrayToBase64(options.image.data);\n body.image = {\n url: `data:${options.image.mediaType};base64,${base64Data}`,\n };\n }\n }\n\n // Reference images for R2V (reference-to-video) generation\n if (hasReferenceImages) {\n body.reference_images = xaiOptions!.referenceImageUrls!.map(url => ({\n url,\n }));\n }\n\n if (xaiOptions != null) {\n for (const [key, value] of Object.entries(xaiOptions)) {\n if (\n ![\n 'mode',\n 'pollIntervalMs',\n 'pollTimeoutMs',\n 'resolution',\n 'videoUrl',\n 'referenceImageUrls',\n ].includes(key)\n ) {\n body[key] = value;\n }\n }\n }\n\n const baseURL = this.config.baseURL ?? 'https://api.x.ai/v1';\n\n // Determine endpoint based on mode\n let endpoint: string;\n if (isEdit) {\n endpoint = `${baseURL}/videos/edits`;\n } else if (isExtension) {\n endpoint = `${baseURL}/videos/extensions`;\n } else {\n endpoint = `${baseURL}/videos/generations`;\n }\n\n // Step 1: Create video generation/edit/extension request\n const { value: createResponse } = await postJsonToApi({\n url: endpoint,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiCreateVideoResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const requestId = createResponse.request_id;\n if (!requestId) {\n throw new AISDKError({\n name: 'XAI_VIDEO_GENERATION_ERROR',\n message: `No request_id returned from xAI API. Response: ${JSON.stringify(createResponse)}`,\n });\n }\n\n // Step 2: Poll for completion\n const pollIntervalMs = xaiOptions?.pollIntervalMs ?? 5000;\n const pollTimeoutMs = xaiOptions?.pollTimeoutMs ?? 600000;\n const startTime = Date.now();\n let responseHeaders: Record<string, string> | undefined;\n\n while (true) {\n await delay(pollIntervalMs, { abortSignal: options.abortSignal });\n\n if (Date.now() - startTime > pollTimeoutMs) {\n throw new AISDKError({\n name: 'XAI_VIDEO_GENERATION_TIMEOUT',\n message: `Video generation timed out after ${pollTimeoutMs}ms`,\n });\n }\n\n const { value: statusResponse, responseHeaders: pollHeaders } =\n await getFromApi({\n url: `${baseURL}/videos/${requestId}`,\n headers: combineHeaders(this.config.headers(), options.headers),\n successfulResponseHandler: createJsonResponseHandler(\n xaiVideoStatusResponseSchema,\n ),\n failedResponseHandler: xaiFailedResponseHandler,\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n responseHeaders = pollHeaders;\n\n if (\n statusResponse.status === 'done' ||\n (statusResponse.status == null && statusResponse.video?.url)\n ) {\n if (statusResponse.video?.respect_moderation === false) {\n throw new AISDKError({\n name: 'XAI_VIDEO_MODERATION_ERROR',\n message:\n 'Video generation was blocked due to a content policy violation.',\n });\n }\n\n if (!statusResponse.video?.url) {\n throw new AISDKError({\n name: 'XAI_VIDEO_GENERATION_ERROR',\n message:\n 'Video generation completed but no video URL was returned.',\n });\n }\n\n return {\n videos: [\n {\n type: 'url' as const,\n url: statusResponse.video.url,\n mediaType: 'video/mp4',\n },\n ],\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n xai: {\n requestId,\n videoUrl: statusResponse.video.url,\n ...(statusResponse.video.duration != null\n ? { duration: statusResponse.video.duration }\n : {}),\n ...(statusResponse.usage?.cost_in_usd_ticks != null\n ? { costInUsdTicks: statusResponse.usage.cost_in_usd_ticks }\n : {}),\n ...(statusResponse.progress != null\n ? { progress: statusResponse.progress }\n : {}),\n },\n },\n };\n }\n\n if (statusResponse.status === 'expired') {\n throw new AISDKError({\n name: 'XAI_VIDEO_GENERATION_EXPIRED',\n message: 'Video generation request expired.',\n });\n }\n\n if (statusResponse.status === 'failed') {\n throw new AISDKError({\n name: 'XAI_VIDEO_GENERATION_FAILED',\n message: 'Video generation failed.',\n });\n }\n\n // 'pending' → continue polling\n }\n }\n}\n\nconst xaiCreateVideoResponseSchema = z.object({\n request_id: z.string().nullish(),\n});\n\nconst xaiVideoStatusResponseSchema = z.object({\n status: z.string().nullish(),\n video: z\n .object({\n url: z.string(),\n duration: z.number().nullish(),\n respect_moderation: z.boolean().nullish(),\n })\n .nullish(),\n model: z.string().nullish(),\n usage: z\n .object({\n cost_in_usd_ticks: z.number().nullish(),\n })\n .nullish(),\n progress: z.number().nullish(),\n error: z\n .object({\n code: z.string().nullish(),\n message: z.string().nullish(),\n })\n .nullish(),\n});\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst nonEmptyStringSchema = z.string().min(1);\nconst resolutionSchema = z.enum(['480p', '720p']);\nconst modeSchema = z.enum(['edit-video', 'extend-video', 'reference-to-video']);\n\nexport type XaiVideoMode = z.infer<typeof modeSchema>;\ntype XaiVideoResolution = z.infer<typeof resolutionSchema>;\n\ninterface XaiVideoSharedOptions {\n pollIntervalMs?: number | null;\n pollTimeoutMs?: number | null;\n resolution?: XaiVideoResolution | null;\n}\n\ninterface XaiVideoEditModeOptions extends XaiVideoSharedOptions {\n /**\n * Select edit-video mode explicitly for best autocomplete and narrowing.\n */\n mode: 'edit-video';\n /** Source video URL to edit. */\n videoUrl: string;\n}\n\ninterface XaiVideoExtendModeOptions extends XaiVideoSharedOptions {\n /**\n * Select extend-video mode explicitly for best autocomplete and narrowing.\n */\n mode: 'extend-video';\n /** Source video URL to extend from its last frame. */\n videoUrl: string;\n}\n\ninterface XaiVideoReferenceToVideoOptions extends XaiVideoSharedOptions {\n /**\n * Select reference-to-video mode explicitly for best autocomplete and narrowing.\n */\n mode: 'reference-to-video';\n /** Reference image URLs (1-7) for R2V generation. */\n referenceImageUrls: string[];\n}\n\ninterface XaiVideoGenerationOptions extends XaiVideoSharedOptions {\n mode?: undefined;\n videoUrl?: undefined;\n referenceImageUrls?: undefined;\n}\n\ninterface XaiLegacyEditVideoOptions extends XaiVideoSharedOptions {\n /**\n * Legacy backward-compatible shape: omitting `mode` while providing\n * `videoUrl` behaves like edit-video.\n */\n mode?: undefined;\n videoUrl: string;\n}\n\ninterface XaiLegacyReferenceToVideoOptions extends XaiVideoSharedOptions {\n /**\n * Legacy backward-compatible shape: omitting `mode` while providing\n * `referenceImageUrls` behaves like reference-to-video.\n */\n mode?: undefined;\n referenceImageUrls: string[];\n}\n\n/**\n * Provider options for xAI video generation.\n *\n * Use the `mode` option to select the operation:\n *\n * - `'edit-video'` + `videoUrl` -- video editing (`POST /v1/videos/edits`)\n * - `'extend-video'` + `videoUrl` -- video extension (`POST /v1/videos/extensions`)\n * - `'reference-to-video'` + `referenceImageUrls` -- R2V generation (`POST /v1/videos/generations`)\n * - no `mode` -- standard generation from text prompts or image input\n *\n * Runtime remains backward compatible with legacy auto-detected provider\n * options, but the public TypeScript type is intentionally explicit so editors\n * can suggest valid modes and flag invalid field combinations.\n */\nexport type XaiVideoModelOptions =\n | XaiVideoGenerationOptions\n | XaiVideoEditModeOptions\n | XaiVideoExtendModeOptions\n | XaiVideoReferenceToVideoOptions\n | XaiLegacyEditVideoOptions\n | XaiLegacyReferenceToVideoOptions;\n\n// ── Runtime schemas ───────────────────────────────────────────────────\nconst baseFields = {\n pollIntervalMs: z.number().positive().nullish(),\n pollTimeoutMs: z.number().positive().nullish(),\n resolution: resolutionSchema.nullish(),\n};\n\nconst editVideoSchema = z.object({\n ...baseFields,\n mode: z.literal('edit-video'),\n videoUrl: nonEmptyStringSchema,\n referenceImageUrls: z.undefined().optional(),\n});\n\nconst extendVideoSchema = z.object({\n ...baseFields,\n mode: z.literal('extend-video'),\n videoUrl: nonEmptyStringSchema,\n referenceImageUrls: z.undefined().optional(),\n});\n\nconst referenceToVideoSchema = z.object({\n ...baseFields,\n mode: z.literal('reference-to-video'),\n referenceImageUrls: z.array(nonEmptyStringSchema).min(1).max(7),\n videoUrl: z.undefined().optional(),\n});\n\nconst autoDetectSchema = z.object({\n ...baseFields,\n mode: z.undefined().optional(),\n videoUrl: nonEmptyStringSchema.optional(),\n referenceImageUrls: z.array(nonEmptyStringSchema).min(1).max(7).optional(),\n});\n\nexport const xaiVideoModelOptions = z.union([\n editVideoSchema,\n extendVideoSchema,\n referenceToVideoSchema,\n autoDetectSchema,\n]);\n\nconst runtimeSchema = z\n .object({\n mode: modeSchema.optional(),\n videoUrl: nonEmptyStringSchema.optional(),\n referenceImageUrls: z.array(nonEmptyStringSchema).min(1).max(7).optional(),\n ...baseFields,\n })\n .passthrough();\n\nexport type XaiParsedVideoModelOptions = z.infer<typeof runtimeSchema>;\n\nexport const xaiVideoModelOptionsSchema = lazySchema(() =>\n zodSchema(runtimeSchema),\n);\n"],"mappings":"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","names":["z","z","UnsupportedFunctionalityError","xaiTools","xaiTools","_a","url","response","responseHeaders","z","combineHeaders","createJsonResponseHandler","parseProviderOptions","postJsonToApi","serializeModelOptions","WORKFLOW_SERIALIZE","WORKFLOW_DESERIALIZE","z","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","z","combineHeaders","createEventSourceResponseHandler","createJsonResponseHandler","isCustomReasoning","mapReasoningToProviderEffort","parseProviderOptions","postJsonToApi","serializeModelOptions","WORKFLOW_SERIALIZE","WORKFLOW_DESERIALIZE","UnsupportedFunctionalityError","convertToBase64","isProviderReference","resolveProviderReference","z","z","UnsupportedFunctionalityError","z","createProviderExecutedToolFactory","lazySchema","zodSchema","z","createProviderExecutedToolFactory","lazySchema","zodSchema","z","createProviderExecutedToolFactory","lazySchema","zodSchema","z","xaiTools","UnsupportedFunctionalityError","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","xaiTools","isCustomReasoning","mapReasoningToProviderEffort","postJsonToApi","combineHeaders","createJsonResponseHandler","createEventSourceResponseHandler","_a","_b","_c","response","createProviderExecutedToolFactory","z","createProviderExecutedToolFactory","z","createProviderExecutedToolFactory","z","combineHeaders","createJsonResponseHandler","parseProviderOptions","lazySchema","zodSchema","z","lazySchema","zodSchema","z","parseProviderOptions","combineHeaders","createJsonResponseHandler","combineHeaders","createJsonResponseHandler","getFromApi","parseProviderOptions","postJsonToApi","z","lazySchema","zodSchema","z","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","getFromApi","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/xai-provider.ts","../src/xai-chat-language-model.ts","../src/convert-to-xai-chat-messages.ts","../src/convert-xai-chat-usage.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/xai-image-model.ts","../src/xai-image-options.ts","../src/responses/xai-responses-language-model.ts","../src/responses/convert-to-xai-responses-input.ts","../src/responses/convert-xai-responses-usage.ts","../src/responses/map-xai-responses-finish-reason.ts","../src/responses/xai-responses-api.ts","../src/responses/xai-responses-options.ts","../src/responses/xai-responses-prepare-tools.ts","../src/tool/file-search.ts","../src/tool/mcp-server.ts","../src/tool/web-search.ts","../src/tool/x-search.ts","../src/tool/code-execution.ts","../src/tool/view-image.ts","../src/tool/view-x-video.ts","../src/tool/index.ts","../src/version.ts","../src/files/xai-files.ts","../src/files/xai-files-api.ts","../src/files/xai-files-options.ts","../src/xai-video-model.ts","../src/xai-video-options.ts"],"sourcesContent":["import {\n type Experimental_VideoModelV4,\n FilesV4,\n ImageModelV4,\n LanguageModelV4,\n NoSuchModelError,\n ProviderV4,\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 { XaiImageModel } from './xai-image-model';\nimport { XaiImageModelId } from './xai-image-settings';\nimport { XaiResponsesLanguageModel } from './responses/xai-responses-language-model';\nimport { XaiResponsesModelId } from './responses/xai-responses-options';\nimport { xaiTools } from './tool';\nimport { VERSION } from './version';\nimport { XaiFiles } from './files/xai-files';\nimport { XaiVideoModel } from './xai-video-model';\nimport { XaiVideoModelId } from './xai-video-settings';\n\nexport interface XaiProvider extends ProviderV4 {\n (modelId: XaiResponsesModelId): LanguageModelV4;\n\n /**\n * Creates an Xai language model for text generation.\n */\n languageModel(modelId: XaiResponsesModelId): LanguageModelV4;\n\n /**\n * Creates an Xai chat model for text generation.\n */\n chat: (modelId: XaiChatModelId) => LanguageModelV4;\n\n /**\n * Creates an Xai responses model for text generation.\n */\n responses: (modelId: XaiResponsesModelId) => LanguageModelV4;\n\n /**\n * Creates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId): ImageModelV4;\n\n /**\n * Creates an Xai image model for image generation.\n */\n imageModel(modelId: XaiImageModelId): ImageModelV4;\n\n /**\n * Creates an Xai video model for video generation.\n */\n video(modelId: XaiVideoModelId): Experimental_VideoModelV4;\n\n /**\n * Creates an Xai video model for video generation.\n */\n videoModel(modelId: XaiVideoModelId): Experimental_VideoModelV4;\n\n /**\n * Returns the xAI files interface for uploading files.\n */\n files(): FilesV4;\n\n /**\n * Server-side agentic tools for use with the responses API.\n */\n tools: typeof xaiTools;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface XaiProviderSettings {\n /**\n * Base URL for the xAI API calls.\n */\n baseURL?: string;\n\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or 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 createChatLanguageModel = (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 createResponsesLanguageModel = (modelId: XaiResponsesModelId) => {\n return new XaiResponsesLanguageModel(modelId, {\n provider: 'xai.responses',\n baseURL,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\n });\n };\n\n const createImageModel = (modelId: XaiImageModelId) => {\n return new XaiImageModel(modelId, {\n provider: 'xai.image',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const createVideoModel = (modelId: XaiVideoModelId) => {\n return new XaiVideoModel(modelId, {\n provider: 'xai.video',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const createFiles = () =>\n new XaiFiles({\n provider: 'xai.files',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = (modelId: XaiResponsesModelId) =>\n createResponsesLanguageModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.languageModel = createResponsesLanguageModel;\n provider.chat = createChatLanguageModel;\n provider.responses = createResponsesLanguageModel;\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = createImageModel;\n provider.image = createImageModel;\n provider.videoModel = createVideoModel;\n provider.video = createVideoModel;\n provider.files = createFiles;\n provider.tools = xaiTools;\n\n return provider;\n}\n\nexport const xai = createXai();\n","import {\n APICallError,\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4Content,\n LanguageModelV4FinishReason,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n LanguageModelV4Usage,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n extractResponseHeaders,\n FetchFunction,\n isCustomReasoning,\n mapReasoningToProviderEffort,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n safeParseJSON,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertToXaiChatMessages } from './convert-to-xai-chat-messages';\nimport { convertXaiChatUsage } from './convert-xai-chat-usage';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapXaiFinishReason } from './map-xai-finish-reason';\nimport {\n XaiChatModelId,\n xaiLanguageModelChatOptions,\n} 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 LanguageModelV4 {\n readonly specificationVersion = 'v4';\n\n readonly modelId: XaiChatModelId;\n\n private readonly config: XaiChatConfig;\n\n static [WORKFLOW_SERIALIZE](model: XaiChatLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: XaiChatModelId;\n config: XaiChatConfig;\n }) {\n return new XaiChatLanguageModel(options.modelId, options.config);\n }\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 reasoning,\n responseFormat,\n providerOptions,\n tools,\n toolChoice,\n }: LanguageModelV4CallOptions) {\n const warnings: SharedV4Warning[] = [];\n\n // parse xai-specific provider options\n const options =\n (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiLanguageModelChatOptions,\n })) ?? {};\n\n // check for unsupported parameters\n if (topK != null) {\n warnings.push({ type: 'unsupported', feature: 'topK' });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' });\n }\n\n if (presencePenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'presencePenalty' });\n }\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported', feature: 'stopSequences' });\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 logprobs:\n options.logprobs === true || options.topLogprobs != null\n ? true\n : undefined,\n top_logprobs: options.topLogprobs,\n max_completion_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n seed,\n reasoning_effort:\n options.reasoningEffort ??\n (isCustomReasoning(reasoning)\n ? reasoning === 'none'\n ? undefined\n : mapReasoningToProviderEffort({\n reasoning,\n effortMap: {\n minimal: 'low',\n low: 'low',\n medium: 'low',\n high: 'high',\n xhigh: 'high',\n },\n warnings,\n })\n : undefined),\n\n // parallel function calling\n parallel_function_calling: options.parallel_function_calling,\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: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const url = `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`;\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url,\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 if (response.error != null) {\n throw new APICallError({\n message: response.error,\n url,\n requestBodyValues: body,\n statusCode: 200,\n responseHeaders,\n responseBody: JSON.stringify(rawResponse),\n isRetryable: response.code === 'The service is currently unavailable',\n });\n }\n\n const choice = response.choices![0];\n const content: Array<LanguageModelV4Content> = [];\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: {\n unified: mapXaiFinishReason(choice.finish_reason),\n raw: choice.finish_reason ?? undefined,\n },\n usage: response.usage\n ? convertXaiChatUsage(response.usage)\n : {\n inputTokens: { total: 0, noCache: 0, cacheRead: 0, cacheWrite: 0 },\n outputTokens: { total: 0, text: 0, reasoning: 0 },\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: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\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 url = `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`;\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url,\n headers: combineHeaders(this.config.headers?.(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: async ({ response }) => {\n const responseHeaders = extractResponseHeaders(response);\n const contentType = response.headers.get('content-type');\n\n if (contentType?.includes('application/json')) {\n const responseBody = await response.text();\n const parsedError = await safeParseJSON({\n text: responseBody,\n schema: xaiStreamErrorSchema,\n });\n\n if (parsedError.success) {\n throw new APICallError({\n message: parsedError.value.error,\n url,\n requestBodyValues: body,\n statusCode: 200,\n responseHeaders,\n responseBody,\n isRetryable:\n parsedError.value.code ===\n 'The service is currently unavailable',\n });\n }\n\n throw new APICallError({\n message: 'Invalid JSON response',\n url,\n requestBodyValues: body,\n statusCode: 200,\n responseHeaders,\n responseBody,\n });\n }\n\n return createEventSourceResponseHandler(xaiChatChunkSchema)({\n response,\n url,\n requestBodyValues: body,\n });\n },\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV4FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let usage: LanguageModelV4Usage | undefined = undefined;\n let isFirstChunk = true;\n const contentBlocks: Record<\n string,\n { type: 'text' | 'reasoning'; ended: boolean }\n > = {};\n const lastReasoningDeltas: Record<string, string> = {};\n let activeReasoningBlockId: string | undefined = undefined;\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof xaiChatChunkSchema>>,\n LanguageModelV4StreamPart\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 = convertXaiChatUsage(value.usage);\n }\n\n const choice = value.choices[0];\n\n // update finish reason if present\n if (choice?.finish_reason != null) {\n finishReason = {\n unified: mapXaiFinishReason(choice.finish_reason),\n raw: choice.finish_reason,\n };\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 // end active reasoning block when text content arrives\n if (\n activeReasoningBlockId != null &&\n !contentBlocks[activeReasoningBlockId].ended\n ) {\n controller.enqueue({\n type: 'reasoning-end',\n id: activeReasoningBlockId,\n });\n contentBlocks[activeReasoningBlockId].ended = true;\n activeReasoningBlockId = undefined;\n }\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', ended: false };\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', ended: false };\n activeReasoningBlockId = blockId;\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 // end active reasoning block before tool calls start\n if (\n activeReasoningBlockId != null &&\n !contentBlocks[activeReasoningBlockId].ended\n ) {\n controller.enqueue({\n type: 'reasoning-end',\n id: activeReasoningBlockId,\n });\n contentBlocks[activeReasoningBlockId].ended = true;\n activeReasoningBlockId = undefined;\n }\n\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 // end any blocks that haven't been ended yet\n for (const [blockId, block] of Object.entries(contentBlocks)) {\n if (!block.ended) {\n controller.enqueue({\n type: block.type === 'text' ? 'text-end' : 'reasoning-end',\n id: blockId,\n });\n }\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: usage ?? {\n inputTokens: {\n total: 0,\n noCache: 0,\n cacheRead: 0,\n cacheWrite: 0,\n },\n outputTokens: { total: 0, text: 0, reasoning: 0 },\n },\n });\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 prompt_tokens_details: z\n .object({\n text_tokens: z.number().nullish(),\n audio_tokens: z.number().nullish(),\n image_tokens: z.number().nullish(),\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n audio_tokens: z.number().nullish(),\n accepted_prediction_tokens: z.number().nullish(),\n rejected_prediction_tokens: z.number().nullish(),\n })\n .nullish(),\n});\n\nexport type XaiChatUsage = z.infer<typeof xaiUsageSchema>;\n\nconst xaiChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z\n .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 .nullish(),\n object: z.literal('chat.completion').nullish(),\n usage: xaiUsageSchema.nullish(),\n citations: z.array(z.string().url()).nullish(),\n code: z.string().nullish(),\n error: z.string().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\nconst xaiStreamErrorSchema = z.object({\n code: z.string(),\n error: z.string(),\n});\n","import {\n SharedV4Warning,\n LanguageModelV4Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n isProviderReference,\n resolveProviderReference,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatPrompt } from './xai-chat-prompt';\n\nexport function convertToXaiChatMessages(prompt: LanguageModelV4Prompt): {\n messages: XaiChatPrompt;\n warnings: Array<SharedV4Warning>;\n} {\n const messages: XaiChatPrompt = [];\n const warnings: Array<SharedV4Warning> = [];\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 (isProviderReference(part.data)) {\n return {\n type: 'file',\n file: {\n file_id: resolveProviderReference({\n reference: part.data,\n provider: 'xai',\n }),\n },\n };\n }\n\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 if (toolResponse.type === 'tool-approval-response') {\n continue;\n }\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 call 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","import { LanguageModelV4Usage } from '@ai-sdk/provider';\nimport { XaiChatUsage } from './xai-chat-language-model';\n\nexport function convertXaiChatUsage(usage: XaiChatUsage): LanguageModelV4Usage {\n const cacheReadTokens = usage.prompt_tokens_details?.cached_tokens ?? 0;\n const reasoningTokens =\n usage.completion_tokens_details?.reasoning_tokens ?? 0;\n\n const promptTokensIncludesCached = cacheReadTokens <= usage.prompt_tokens;\n\n return {\n inputTokens: {\n total: promptTokensIncludesCached\n ? usage.prompt_tokens\n : usage.prompt_tokens + cacheReadTokens,\n noCache: promptTokensIncludesCached\n ? usage.prompt_tokens - cacheReadTokens\n : usage.prompt_tokens,\n cacheRead: cacheReadTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: usage.completion_tokens + reasoningTokens,\n text: usage.completion_tokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n created_at,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n created_at?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n const unixTime = created ?? created_at;\n\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: unixTime != null ? new Date(unixTime * 1000) : undefined,\n };\n}\n","import { LanguageModelV4FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV4FinishReason['unified'] {\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 'other';\n }\n}\n","import { z } from 'zod/v4';\n\n// https://docs.x.ai/docs/models\nexport type XaiChatModelId =\n | 'grok-4-1-fast-reasoning'\n | 'grok-4-1-fast-non-reasoning'\n | 'grok-4-fast-non-reasoning'\n | 'grok-4-fast-reasoning'\n | 'grok-4.20-0309-non-reasoning'\n | 'grok-4.20-0309-reasoning'\n | 'grok-4.20-multi-agent-0309'\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-mini'\n | 'grok-3-mini-latest'\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 xaiLanguageModelChatOptions = z.object({\n reasoningEffort: z.enum(['low', 'high']).optional(),\n logprobs: z.boolean().optional(),\n topLogprobs: z.number().int().min(0).max(8).optional(),\n\n /**\n * Whether to enable parallel function calling during tool use.\n * When true, the model can call multiple functions in parallel.\n * When false, the model will call functions sequentially.\n * Defaults to true.\n */\n parallel_function_calling: z.boolean().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 [{ type: 'web' }, { type: 'x' }] if not specified.\n *\n * @example\n * sources: [{ type: 'web', country: 'US' }, { type: 'x' }]\n */\n sources: z.array(searchSourceSchema).optional(),\n })\n .optional(),\n});\n\nexport type XaiLanguageModelChatOptions = z.infer<\n typeof xaiLanguageModelChatOptions\n>;\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 LanguageModelV4CallOptions,\n SharedV4Warning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { XaiToolChoice } from './xai-chat-prompt';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV4CallOptions['tools'];\n toolChoice?: LanguageModelV4CallOptions['toolChoice'];\n}): {\n tools:\n | Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n strict?: boolean;\n };\n }>\n | undefined;\n toolChoice: XaiToolChoice | undefined;\n toolWarnings: SharedV4Warning[];\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: SharedV4Warning[] = [];\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 strict?: boolean;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider') {\n toolWarnings.push({\n type: 'unsupported',\n feature: `provider-defined tool ${tool.name}`,\n });\n } else {\n xaiTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n ...(tool.strict != null ? { strict: tool.strict } : {}),\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","import { ImageModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n createStatusCodeErrorResponseHandler,\n FetchFunction,\n getFromApi,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { xaiImageModelOptions } from './xai-image-options';\nimport { XaiImageModelId } from './xai-image-settings';\n\ninterface XaiImageModelConfig {\n provider: string;\n baseURL: string | undefined;\n headers?: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class XaiImageModel implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n readonly maxImagesPerCall = 3;\n\n get provider(): string {\n return this.config.provider;\n }\n\n static [WORKFLOW_SERIALIZE](model: XaiImageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: XaiImageModelId;\n config: XaiImageModelConfig;\n }) {\n return new XaiImageModel(options.modelId, options.config);\n }\n\n constructor(\n readonly modelId: XaiImageModelId,\n private config: XaiImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV4['doGenerate']>>\n > {\n const warnings: Array<SharedV4Warning> = [];\n\n if (size != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'size',\n details:\n 'This model does not support the `size` option. Use `aspectRatio` instead.',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'seed',\n });\n }\n\n if (mask != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'mask',\n });\n }\n\n const xaiOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiImageModelOptions,\n });\n\n const hasFiles = files != null && files.length > 0;\n const imageUrls = hasFiles\n ? files.map(file => convertImageModelFileToDataUri(file))\n : [];\n\n const endpoint = hasFiles ? '/images/edits' : '/images/generations';\n\n const body: Record<string, unknown> = {\n model: this.modelId,\n prompt,\n n,\n response_format: 'b64_json',\n };\n\n if (aspectRatio != null) {\n body.aspect_ratio = aspectRatio;\n }\n\n if (xaiOptions?.output_format != null) {\n body.output_format = xaiOptions.output_format;\n }\n\n if (xaiOptions?.sync_mode != null) {\n body.sync_mode = xaiOptions.sync_mode;\n }\n\n if (xaiOptions?.aspect_ratio != null && aspectRatio == null) {\n body.aspect_ratio = xaiOptions.aspect_ratio;\n }\n\n if (xaiOptions?.resolution != null) {\n body.resolution = xaiOptions.resolution;\n }\n\n if (xaiOptions?.quality != null) {\n body.quality = xaiOptions.quality;\n }\n\n if (xaiOptions?.user != null) {\n body.user = xaiOptions.user;\n }\n\n if (imageUrls.length === 1) {\n body.image = { url: imageUrls[0], type: 'image_url' };\n } else if (imageUrls.length > 1) {\n body.images = imageUrls.map(url => ({ url, type: 'image_url' }));\n }\n\n const baseURL = this.config.baseURL ?? 'https://api.x.ai/v1';\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${baseURL}${endpoint}`,\n headers: combineHeaders(this.config.headers?.(), headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n const hasAllBase64 = response.data.every(image => image.b64_json != null);\n\n const images = hasAllBase64\n ? response.data.map(image => image.b64_json!)\n : await Promise.all(\n response.data.map(image =>\n this.downloadImage(image.url!, abortSignal),\n ),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n xai: {\n images: response.data.map(item => ({\n ...(item.revised_prompt\n ? { revisedPrompt: item.revised_prompt }\n : {}),\n })),\n ...(response.usage?.cost_in_usd_ticks != null\n ? { costInUsdTicks: response.usage.cost_in_usd_ticks }\n : {}),\n },\n },\n };\n }\n\n private async downloadImage(\n url: string,\n abortSignal: AbortSignal | undefined,\n ): Promise<Uint8Array> {\n const { value } = await getFromApi({\n url,\n abortSignal,\n failedResponseHandler: createStatusCodeErrorResponseHandler(),\n successfulResponseHandler: createBinaryResponseHandler(),\n fetch: this.config.fetch,\n });\n return value;\n }\n}\n\nconst xaiImageResponseSchema = z.object({\n data: z.array(\n z.object({\n url: z.string().nullish(),\n b64_json: z.string().nullish(),\n revised_prompt: z.string().nullish(),\n }),\n ),\n usage: z\n .object({\n cost_in_usd_ticks: z.number().nullish(),\n })\n .nullish(),\n});\n","import { z } from 'zod/v4';\n\nexport const xaiImageModelOptions = z.object({\n aspect_ratio: z.string().optional(),\n output_format: z.string().optional(),\n sync_mode: z.boolean().optional(),\n resolution: z.enum(['1k', '2k']).optional(),\n quality: z.enum(['low', 'medium', 'high']).optional(),\n user: z.string().optional(),\n});\n\nexport type XaiImageModelOptions = z.infer<typeof xaiImageModelOptions>;\n","import {\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4Content,\n LanguageModelV4FinishReason,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n LanguageModelV4Usage,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n isCustomReasoning,\n mapReasoningToProviderEffort,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { getResponseMetadata } from '../get-response-metadata';\nimport { xaiFailedResponseHandler } from '../xai-error';\nimport { convertToXaiResponsesInput } from './convert-to-xai-responses-input';\nimport { convertXaiResponsesUsage } from './convert-xai-responses-usage';\nimport { mapXaiResponsesFinishReason } from './map-xai-responses-finish-reason';\nimport {\n XaiResponsesIncludeOptions,\n xaiResponsesChunkSchema,\n xaiResponsesResponseSchema,\n} from './xai-responses-api';\nimport {\n XaiResponsesModelId,\n xaiLanguageModelResponsesOptions,\n} from './xai-responses-options';\nimport { prepareResponsesTools } from './xai-responses-prepare-tools';\n\ntype XaiResponsesConfig = {\n provider: string;\n baseURL: string | undefined;\n headers?: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class XaiResponsesLanguageModel implements LanguageModelV4 {\n readonly specificationVersion = 'v4';\n\n readonly modelId: XaiResponsesModelId;\n\n private readonly config: XaiResponsesConfig;\n\n static [WORKFLOW_SERIALIZE](model: XaiResponsesLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: XaiResponsesModelId;\n config: XaiResponsesConfig;\n }) {\n return new XaiResponsesLanguageModel(options.modelId, options.config);\n }\n\n constructor(modelId: XaiResponsesModelId, config: XaiResponsesConfig) {\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 // xAI's Responses API accepts non-image documents (PDF, plain text, CSV, etc.) as\n // `{ type: 'input_file', file_url }`. Keeping these URLs intact here lets them pass\n // through to the converter instead of being downloaded to bytes by the SDK.\n 'application/pdf': [/^https?:\\/\\/.*$/],\n 'text/*': [/^https?:\\/\\/.*$/],\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n stopSequences,\n seed,\n responseFormat,\n providerOptions,\n tools,\n toolChoice,\n reasoning,\n }: LanguageModelV4CallOptions) {\n const warnings: SharedV4Warning[] = [];\n\n const options =\n (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiLanguageModelResponsesOptions,\n })) ?? {};\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported', feature: 'stopSequences' });\n }\n\n const webSearchToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.web_search',\n )?.name;\n\n const xSearchToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.x_search',\n )?.name;\n\n const codeExecutionToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.code_execution',\n )?.name;\n\n const mcpToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.mcp',\n )?.name;\n\n const fileSearchToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.file_search',\n )?.name;\n\n const { input, inputWarnings } = await convertToXaiResponsesInput({\n prompt,\n store: options.store ?? true,\n });\n warnings.push(...inputWarnings);\n\n const {\n tools: xaiTools,\n toolChoice: xaiToolChoice,\n toolWarnings,\n } = await prepareResponsesTools({\n tools,\n toolChoice,\n });\n warnings.push(...toolWarnings);\n\n // Build include array based on provider options and store setting\n let include: XaiResponsesIncludeOptions = options.include\n ? [...options.include]\n : undefined;\n\n if (options.store === false) {\n // When store is false, we need to include reasoning.encrypted_content\n // to preserve reasoning tokens in the response\n if (include == null) {\n include = ['reasoning.encrypted_content'];\n } else {\n include = [...include, 'reasoning.encrypted_content'];\n }\n }\n\n const resolvedReasoningEffort =\n options.reasoningEffort ??\n (isCustomReasoning(reasoning)\n ? reasoning === 'none'\n ? undefined\n : mapReasoningToProviderEffort({\n reasoning,\n effortMap: {\n minimal: 'low',\n low: 'low',\n medium: 'medium',\n high: 'high',\n xhigh: 'high',\n },\n warnings,\n })\n : undefined);\n\n const baseArgs: Record<string, unknown> = {\n model: this.modelId,\n input,\n logprobs:\n options.logprobs === true || options.topLogprobs != null\n ? true\n : undefined,\n top_logprobs: options.topLogprobs,\n max_output_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n seed,\n ...(responseFormat?.type === 'json' && {\n text: {\n format:\n responseFormat.schema != null\n ? {\n type: 'json_schema',\n strict: true,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n schema: responseFormat.schema,\n }\n : { type: 'json_object' },\n },\n }),\n ...((resolvedReasoningEffort != null ||\n options.reasoningSummary != null) && {\n reasoning: {\n ...(resolvedReasoningEffort != null && {\n effort: resolvedReasoningEffort,\n }),\n ...(options.reasoningSummary != null && {\n summary: options.reasoningSummary,\n }),\n },\n }),\n ...(options.store === false && {\n store: options.store,\n }),\n ...(include != null && {\n include,\n }),\n ...(options.previousResponseId != null && {\n previous_response_id: options.previousResponseId,\n }),\n };\n\n if (xaiTools && xaiTools.length > 0) {\n baseArgs.tools = xaiTools;\n }\n\n if (xaiToolChoice != null) {\n baseArgs.tool_choice = xaiToolChoice;\n }\n\n return {\n args: baseArgs,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n mcpToolName,\n fileSearchToolName,\n };\n }\n\n async doGenerate(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\n const {\n args: body,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n mcpToolName,\n fileSearchToolName,\n } = 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'}/responses`,\n headers: combineHeaders(this.config.headers?.(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiResponsesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const content: Array<LanguageModelV4Content> = [];\n let hasFunctionCall = false;\n\n const webSearchSubTools = [\n 'web_search',\n 'web_search_with_snippets',\n 'browse_page',\n ];\n const xSearchSubTools = [\n 'x_user_search',\n 'x_keyword_search',\n 'x_semantic_search',\n 'x_thread_fetch',\n ];\n\n for (const part of response.output) {\n if (part.type === 'file_search_call') {\n const toolName = fileSearchToolName ?? 'file_search';\n\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: '',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n result: {\n queries: part.queries ?? [],\n results:\n part.results?.map(result => ({\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n },\n });\n\n continue;\n }\n\n if (\n part.type === 'web_search_call' ||\n part.type === 'x_search_call' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call' ||\n part.type === 'view_image_call' ||\n part.type === 'view_x_video_call' ||\n part.type === 'custom_tool_call' ||\n part.type === 'mcp_call'\n ) {\n let toolName = part.name ?? '';\n if (\n webSearchSubTools.includes(part.name ?? '') ||\n part.type === 'web_search_call'\n ) {\n toolName = webSearchToolName ?? 'web_search';\n } else if (\n xSearchSubTools.includes(part.name ?? '') ||\n part.type === 'x_search_call'\n ) {\n toolName = xSearchToolName ?? 'x_search';\n } else if (\n part.name === 'code_execution' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call'\n ) {\n toolName = codeExecutionToolName ?? 'code_execution';\n } else if (part.type === 'mcp_call') {\n toolName = mcpToolName ?? part.name ?? 'mcp';\n }\n\n const toolInput =\n part.type === 'custom_tool_call'\n ? (part.input ?? '')\n : part.type === 'mcp_call'\n ? (part.arguments ?? '')\n : (part.arguments ?? '');\n\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: toolInput,\n providerExecuted: true,\n });\n\n continue;\n }\n\n switch (part.type) {\n case 'message': {\n for (const contentPart of part.content) {\n if (contentPart.text) {\n content.push({\n type: 'text',\n text: contentPart.text,\n });\n }\n\n if (contentPart.annotations) {\n for (const annotation of contentPart.annotations) {\n if (annotation.type === 'url_citation' && 'url' in annotation) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n }\n\n break;\n }\n\n case 'function_call': {\n hasFunctionCall = true;\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n });\n break;\n }\n\n case 'reasoning': {\n const texts =\n part.summary.length > 0\n ? part.summary.map(s => s.text)\n : (part.content ?? []).map(c => c.text);\n\n const reasoningText = texts\n .filter(text => text && text.length > 0)\n .join('');\n\n // condition changed here since encrypted content can now come with empty reasoning text\n if (reasoningText || part.encrypted_content) {\n const hasMetadata = part.encrypted_content || part.id;\n content.push({\n type: 'reasoning',\n text: reasoningText,\n ...(hasMetadata && {\n providerMetadata: {\n xai: {\n ...(part.encrypted_content && {\n reasoningEncryptedContent: part.encrypted_content,\n }),\n ...(part.id && { itemId: part.id }),\n },\n },\n }),\n });\n }\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return {\n content,\n finishReason: {\n unified: hasFunctionCall\n ? 'tool-calls'\n : mapXaiResponsesFinishReason(response.status),\n raw: response.status ?? undefined,\n },\n usage: response.usage\n ? convertXaiResponsesUsage(response.usage)\n : {\n inputTokens: { total: 0, noCache: 0, cacheRead: 0, cacheWrite: 0 },\n outputTokens: { total: 0, text: 0, reasoning: 0 },\n },\n ...(response.usage?.cost_in_usd_ticks != null && {\n providerMetadata: {\n xai: {\n costInUsdTicks: response.usage.cost_in_usd_ticks,\n },\n },\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: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\n const {\n args,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n mcpToolName,\n fileSearchToolName,\n } = await this.getArgs(options);\n const body = {\n ...args,\n stream: true,\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/responses`,\n headers: combineHeaders(this.config.headers?.(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n xaiResponsesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV4FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let hasFunctionCall = false;\n let usage: LanguageModelV4Usage | undefined = undefined;\n let costInUsdTicks: number | undefined = undefined;\n let isFirstChunk = true;\n const contentBlocks: Record<string, { type: 'text' }> = {};\n const seenToolCalls = new Set<string>();\n\n // Track ongoing function calls by output_index so we can stream\n // arguments via response.function_call_arguments.delta events.\n const ongoingToolCalls: Record<\n number,\n { toolName: string; toolCallId: string } | undefined\n > = {};\n\n const activeReasoning: Record<\n string,\n { encryptedContent?: string | null }\n > = {};\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof xaiResponsesChunkSchema>>,\n LanguageModelV4StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\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 event = chunk.value;\n\n if (\n event.type === 'response.created' ||\n event.type === 'response.in_progress'\n ) {\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(event.response),\n });\n isFirstChunk = false;\n }\n return;\n }\n\n if (event.type === 'response.reasoning_summary_part.added') {\n const blockId = `reasoning-${event.item_id}`;\n\n activeReasoning[event.item_id] = {};\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n }\n\n if (event.type === 'response.reasoning_summary_text.delta') {\n const blockId = `reasoning-${event.item_id}`;\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: event.delta,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n\n return;\n }\n\n if (event.type === 'response.reasoning_summary_text.done') {\n return;\n }\n\n if (event.type === 'response.reasoning_text.delta') {\n const blockId = `reasoning-${event.item_id}`;\n\n if (activeReasoning[event.item_id] == null) {\n activeReasoning[event.item_id] = {};\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: event.delta,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n\n return;\n }\n\n if (event.type === 'response.reasoning_text.done') {\n return;\n }\n\n if (event.type === 'response.output_text.delta') {\n const blockId = `text-${event.item_id}`;\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: event.delta,\n });\n\n return;\n }\n\n if (event.type === 'response.output_text.done') {\n if (event.annotations) {\n for (const annotation of event.annotations) {\n if (\n annotation.type === 'url_citation' &&\n 'url' in annotation\n ) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n\n return;\n }\n\n if (event.type === 'response.output_text.annotation.added') {\n const annotation = event.annotation;\n if (annotation.type === 'url_citation' && 'url' in annotation) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n\n return;\n }\n\n if (\n event.type === 'response.done' ||\n event.type === 'response.completed' ||\n event.type === 'response.incomplete'\n ) {\n const response = event.response;\n\n if (response.usage) {\n usage = convertXaiResponsesUsage(response.usage);\n costInUsdTicks = response.usage.cost_in_usd_ticks ?? undefined;\n }\n\n if (event.type === 'response.incomplete') {\n const reason =\n 'incomplete_details' in response\n ? response.incomplete_details?.reason\n : undefined;\n finishReason = {\n unified: reason\n ? mapXaiResponsesFinishReason(reason)\n : 'other',\n raw: reason ?? 'incomplete',\n };\n } else if ('status' in response && response.status) {\n finishReason = {\n unified: hasFunctionCall\n ? 'tool-calls'\n : mapXaiResponsesFinishReason(response.status),\n raw: response.status,\n };\n }\n\n return;\n }\n\n if (event.type === 'response.failed') {\n const reason = event.response.incomplete_details?.reason;\n finishReason = {\n unified: reason ? mapXaiResponsesFinishReason(reason) : 'error',\n raw: reason ?? 'error',\n };\n\n if (event.response.usage) {\n usage = convertXaiResponsesUsage(event.response.usage);\n }\n\n return;\n }\n\n if (event.type === 'error') {\n controller.enqueue({ type: 'error', error: event });\n return;\n }\n\n // Custom tool call input streaming - already handled by output_item events\n if (\n event.type === 'response.custom_tool_call_input.delta' ||\n event.type === 'response.custom_tool_call_input.done'\n ) {\n return;\n }\n\n // Function call arguments streaming (standard function tools)\n if (event.type === 'response.function_call_arguments.delta') {\n const toolCall = ongoingToolCalls[event.output_index];\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: event.delta,\n });\n }\n return;\n }\n if (event.type === 'response.function_call_arguments.done') {\n // Arguments are fully received; output_item.done will\n // emit tool-input-end and tool-call with the final arguments.\n return;\n }\n\n if (\n event.type === 'response.output_item.added' ||\n event.type === 'response.output_item.done'\n ) {\n const part = event.item;\n if (part.type === 'reasoning') {\n if (event.type === 'response.output_item.done') {\n const blockId = `reasoning-${part.id}`;\n\n // Emit reasoning-start if not already emitted (e.g., for encrypted reasoning\n // where reasoning_summary_part.added events may not be sent)\n if (!(part.id in activeReasoning)) {\n activeReasoning[part.id] = {};\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n providerMetadata: {\n xai: {\n ...(part.id && { itemId: part.id }),\n },\n },\n });\n }\n\n controller.enqueue({\n type: 'reasoning-end',\n id: blockId,\n providerMetadata: {\n xai: {\n ...(part.encrypted_content && {\n reasoningEncryptedContent: part.encrypted_content,\n }),\n ...(part.id && { itemId: part.id }),\n },\n },\n });\n delete activeReasoning[part.id];\n }\n return;\n }\n\n if (part.type === 'file_search_call') {\n const toolName = fileSearchToolName ?? 'file_search';\n\n if (!seenToolCalls.has(part.id)) {\n seenToolCalls.add(part.id);\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.id,\n toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: part.id,\n delta: '',\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: part.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: '',\n providerExecuted: true,\n });\n }\n\n if (event.type === 'response.output_item.done') {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n result: {\n queries: part.queries ?? [],\n results:\n part.results?.map(result => ({\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n },\n });\n }\n\n return;\n }\n\n if (\n part.type === 'web_search_call' ||\n part.type === 'x_search_call' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call' ||\n part.type === 'view_image_call' ||\n part.type === 'view_x_video_call' ||\n part.type === 'custom_tool_call' ||\n part.type === 'mcp_call'\n ) {\n const webSearchSubTools = [\n 'web_search',\n 'web_search_with_snippets',\n 'browse_page',\n ];\n const xSearchSubTools = [\n 'x_user_search',\n 'x_keyword_search',\n 'x_semantic_search',\n 'x_thread_fetch',\n ];\n\n let toolName = part.name ?? '';\n if (\n webSearchSubTools.includes(part.name ?? '') ||\n part.type === 'web_search_call'\n ) {\n toolName = webSearchToolName ?? 'web_search';\n } else if (\n xSearchSubTools.includes(part.name ?? '') ||\n part.type === 'x_search_call'\n ) {\n toolName = xSearchToolName ?? 'x_search';\n } else if (\n part.name === 'code_execution' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call'\n ) {\n toolName = codeExecutionToolName ?? 'code_execution';\n } else if (part.type === 'mcp_call') {\n toolName = mcpToolName ?? part.name ?? 'mcp';\n }\n\n const toolInput =\n part.type === 'custom_tool_call'\n ? (part.input ?? '')\n : part.type === 'mcp_call'\n ? (part.arguments ?? '')\n : (part.arguments ?? '');\n\n const shouldEmit =\n part.type === 'custom_tool_call'\n ? event.type === 'response.output_item.done'\n : !seenToolCalls.has(part.id);\n\n if (shouldEmit && !seenToolCalls.has(part.id)) {\n seenToolCalls.add(part.id);\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.id,\n toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: part.id,\n delta: toolInput,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: part.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: toolInput,\n providerExecuted: true,\n });\n }\n\n return;\n }\n\n if (part.type === 'message') {\n for (const contentPart of part.content) {\n if (contentPart.text && contentPart.text.length > 0) {\n const blockId = `text-${part.id}`;\n\n // Only emit text if we haven't already streamed it via output_text.delta events\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: contentPart.text,\n });\n }\n }\n\n if (contentPart.annotations) {\n for (const annotation of contentPart.annotations) {\n if (\n annotation.type === 'url_citation' &&\n 'url' in annotation\n ) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n }\n } else if (part.type === 'function_call') {\n if (event.type === 'response.output_item.added') {\n // Track the call so function_call_arguments.delta events\n // can stream the arguments incrementally.\n ongoingToolCalls[event.output_index] = {\n toolName: part.name,\n toolCallId: part.call_id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.call_id,\n toolName: part.name,\n });\n } else if (event.type === 'response.output_item.done') {\n hasFunctionCall = true;\n ongoingToolCalls[event.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-input-end',\n id: part.call_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n });\n }\n }\n }\n },\n\n flush(controller) {\n for (const [blockId, block] of Object.entries(contentBlocks)) {\n if (block.type === 'text') {\n controller.enqueue({\n type: 'text-end',\n id: blockId,\n });\n }\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: usage ?? {\n inputTokens: {\n total: 0,\n noCache: 0,\n cacheRead: 0,\n cacheWrite: 0,\n },\n outputTokens: { total: 0, text: 0, reasoning: 0 },\n },\n ...(costInUsdTicks != null && {\n providerMetadata: {\n xai: {\n costInUsdTicks,\n },\n },\n }),\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n","import {\n SharedV4Warning,\n LanguageModelV4Message,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n isProviderReference,\n resolveProviderReference,\n} from '@ai-sdk/provider-utils';\nimport {\n XaiResponsesInput,\n XaiResponsesUserMessageContentPart,\n} from './xai-responses-api';\n\nexport async function convertToXaiResponsesInput({\n prompt,\n}: {\n prompt: LanguageModelV4Message[];\n store?: boolean;\n}): Promise<{\n input: XaiResponsesInput;\n inputWarnings: SharedV4Warning[];\n}> {\n const input: XaiResponsesInput = [];\n const inputWarnings: SharedV4Warning[] = [];\n\n for (const message of prompt) {\n switch (message.role) {\n case 'system': {\n input.push({\n role: 'system',\n content: message.content,\n });\n break;\n }\n\n case 'user': {\n const contentParts: XaiResponsesUserMessageContentPart[] = [];\n\n for (const block of message.content) {\n switch (block.type) {\n case 'text': {\n contentParts.push({ type: 'input_text', text: block.text });\n break;\n }\n\n case 'file': {\n if (isProviderReference(block.data)) {\n contentParts.push({\n type: 'input_file',\n file_id: resolveProviderReference({\n reference: block.data,\n provider: 'xai',\n }),\n });\n } else if (block.mediaType.startsWith('image/')) {\n const mediaType =\n block.mediaType === 'image/*'\n ? 'image/jpeg'\n : block.mediaType;\n\n const imageUrl =\n block.data instanceof URL\n ? block.data.toString()\n : `data:${mediaType};base64,${convertToBase64(block.data)}`;\n\n contentParts.push({ type: 'input_image', image_url: imageUrl });\n } else if (block.data instanceof URL) {\n // xAI's Responses API accepts non-image documents (PDF, text, CSV, etc.)\n // via `{ type: 'input_file', file_url }`. See\n // https://docs.x.ai/docs/guides/chat-with-files. Inline bytes for\n // non-image files are not supported by xAI; callers must upload via\n // the Files API and pass a provider reference (file_id) instead.\n contentParts.push({\n type: 'input_file',\n file_url: block.data.toString(),\n });\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${block.mediaType} as inline data (xAI Responses requires a URL or a Files API reference for non-image files)`,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = block;\n inputWarnings.push({\n type: 'other',\n message:\n 'xAI Responses API does not support this content type in user messages',\n });\n }\n }\n }\n\n input.push({\n role: 'user',\n content: contentParts,\n });\n break;\n }\n\n case 'assistant': {\n for (const part of message.content) {\n switch (part.type) {\n case 'text': {\n const id =\n typeof part.providerOptions?.xai?.itemId === 'string'\n ? part.providerOptions.xai.itemId\n : undefined;\n\n input.push({\n role: 'assistant',\n content: part.text,\n id,\n });\n\n break;\n }\n\n case 'tool-call': {\n if (part.providerExecuted) {\n break;\n }\n\n const id =\n typeof part.providerOptions?.xai?.itemId === 'string'\n ? part.providerOptions.xai.itemId\n : undefined;\n\n input.push({\n type: 'function_call',\n id: id ?? part.toolCallId,\n call_id: part.toolCallId,\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n status: 'completed',\n });\n break;\n }\n\n case 'tool-result': {\n break;\n }\n\n case 'reasoning': {\n const itemId =\n typeof part.providerOptions?.xai?.itemId === 'string'\n ? part.providerOptions.xai.itemId\n : undefined;\n const encryptedContent =\n typeof part.providerOptions?.xai?.reasoningEncryptedContent ===\n 'string'\n ? part.providerOptions.xai.reasoningEncryptedContent\n : undefined;\n\n if (itemId != null || encryptedContent != null) {\n const summaryParts: Array<{\n type: 'summary_text';\n text: string;\n }> = [];\n if (part.text.length > 0) {\n summaryParts.push({\n type: 'summary_text',\n text: part.text,\n });\n }\n\n input.push({\n type: 'reasoning',\n id: itemId ?? '',\n summary: summaryParts,\n status: 'completed',\n ...(encryptedContent != null && {\n encrypted_content: encryptedContent,\n }),\n });\n } else {\n inputWarnings.push({\n type: 'other',\n message:\n 'Reasoning parts without itemId or encrypted content cannot be sent back to xAI. Skipping.',\n });\n }\n break;\n }\n\n case 'reasoning-file':\n case 'custom':\n case 'file': {\n inputWarnings.push({\n type: 'other',\n message: `xAI Responses API does not support ${part.type} in assistant messages`,\n });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = part;\n inputWarnings.push({\n type: 'other',\n message:\n 'xAI Responses API does not support this content type in assistant messages',\n });\n }\n }\n }\n\n break;\n }\n\n case 'tool': {\n for (const part of message.content) {\n if (part.type === 'tool-approval-response') {\n continue;\n }\n const output = part.output;\n\n let outputValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n outputValue = output.value;\n break;\n case 'execution-denied':\n outputValue = output.reason ?? 'tool execution denied';\n break;\n case 'json':\n case 'error-json':\n outputValue = JSON.stringify(output.value);\n break;\n case 'content':\n outputValue = output.value\n .map(item => {\n if (item.type === 'text') {\n return item.text;\n }\n return '';\n })\n .join('');\n break;\n default: {\n const _exhaustiveCheck: never = output;\n outputValue = '';\n }\n }\n\n input.push({\n type: 'function_call_output',\n call_id: part.toolCallId,\n output: outputValue,\n });\n }\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = message;\n inputWarnings.push({\n type: 'other',\n message: 'unsupported message role',\n });\n }\n }\n }\n\n return { input, inputWarnings };\n}\n","import { LanguageModelV4Usage } from '@ai-sdk/provider';\nimport { XaiResponsesUsage } from './xai-responses-api';\n\nexport function convertXaiResponsesUsage(\n usage: XaiResponsesUsage,\n): LanguageModelV4Usage {\n const cacheReadTokens = usage.input_tokens_details?.cached_tokens ?? 0;\n const reasoningTokens = usage.output_tokens_details?.reasoning_tokens ?? 0;\n\n const inputTokensIncludesCached = cacheReadTokens <= usage.input_tokens;\n\n return {\n inputTokens: {\n total: inputTokensIncludesCached\n ? usage.input_tokens\n : usage.input_tokens + cacheReadTokens,\n noCache: inputTokensIncludesCached\n ? usage.input_tokens - cacheReadTokens\n : usage.input_tokens,\n cacheRead: cacheReadTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: usage.output_tokens,\n text: usage.output_tokens - reasoningTokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import { LanguageModelV4FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiResponsesFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV4FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n case 'completed':\n return 'stop';\n case 'length':\n case 'max_output_tokens':\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 'other';\n }\n}\n","import { z } from 'zod/v4';\n\nexport type XaiResponsesIncludeValue =\n | 'file_search_call.results'\n | 'reasoning.encrypted_content';\n\nexport type XaiResponsesIncludeOptions =\n | Array<XaiResponsesIncludeValue>\n | undefined\n | null;\n\nexport type XaiResponsesInput = Array<XaiResponsesInputItem>;\n\nexport type XaiResponsesInputItem =\n | XaiResponsesSystemMessage\n | XaiResponsesUserMessage\n | XaiResponsesAssistantMessage\n | XaiResponsesFunctionCallOutput\n | XaiResponsesReasoning\n | XaiResponsesToolCall;\n\nexport type XaiResponsesSystemMessage = {\n role: 'system' | 'developer';\n content: string;\n};\n\nexport type XaiResponsesUserMessageContentPart =\n | { type: 'input_text'; text: string }\n | { type: 'input_image'; image_url: string }\n | { type: 'input_file'; file_id: string }\n | { type: 'input_file'; file_url: string };\n\nexport type XaiResponsesUserMessage = {\n role: 'user';\n content: Array<XaiResponsesUserMessageContentPart>;\n};\n\nexport type XaiResponsesAssistantMessage = {\n role: 'assistant';\n content: string;\n id?: string;\n};\n\nexport type XaiResponsesFunctionCallOutput = {\n type: 'function_call_output';\n call_id: string;\n output: string;\n};\n\nexport type XaiResponsesReasoning = {\n type: 'reasoning';\n id: string;\n summary: Array<{\n type: 'summary_text';\n text: string;\n }>;\n status: string;\n encrypted_content?: string | null;\n};\n\nexport type XaiResponsesToolCall = {\n type:\n | 'function_call'\n | 'web_search_call'\n | 'x_search_call'\n | 'code_interpreter_call'\n | 'custom_tool_call';\n id: string;\n call_id?: string;\n name?: string;\n arguments?: string;\n input?: string;\n status: string;\n action?: any;\n};\n\nexport type XaiResponsesTool =\n | {\n type: 'web_search';\n allowed_domains?: string[];\n excluded_domains?: string[];\n enable_image_understanding?: boolean;\n }\n | {\n type: 'x_search';\n allowed_x_handles?: string[];\n excluded_x_handles?: string[];\n from_date?: string;\n to_date?: string;\n enable_image_understanding?: boolean;\n enable_video_understanding?: boolean;\n }\n | { type: 'code_interpreter' }\n | { type: 'view_image' }\n | { type: 'view_x_video' }\n | {\n type: 'file_search';\n vector_store_ids?: string[];\n max_num_results?: number;\n }\n | {\n type: 'mcp';\n server_url: string;\n server_label?: string;\n server_description?: string;\n allowed_tools?: string[];\n headers?: Record<string, string>;\n authorization?: string;\n }\n | {\n type: 'function';\n name: string;\n description?: string;\n parameters: unknown;\n strict?: boolean;\n };\n\nconst annotationSchema = z.union([\n z.object({\n type: z.literal('url_citation'),\n url: z.string(),\n title: z.string().optional(),\n }),\n z.object({\n type: z.string(),\n }),\n]);\n\nconst messageContentPartSchema = z.object({\n type: z.string(),\n text: z.string().optional(),\n logprobs: z.array(z.any()).optional(),\n annotations: z.array(annotationSchema).optional(),\n});\n\nconst reasoningSummaryPartSchema = z.object({\n type: z.string(),\n text: z.string(),\n});\n\nconst toolCallSchema = z.object({\n name: z.string().optional(),\n arguments: z.string().optional(),\n input: z.string().optional(),\n call_id: z.string().optional(),\n id: z.string(),\n status: z.string(),\n action: z.any().optional(),\n});\n\nconst mcpCallSchema = z.object({\n name: z.string().optional(),\n arguments: z.string().optional(),\n output: z.string().optional(),\n error: z.string().optional(),\n id: z.string(),\n status: z.string(),\n server_label: z.string().optional(),\n});\n\nconst outputItemSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('web_search_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('x_search_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('code_execution_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('view_image_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('view_x_video_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n status: z.string(),\n queries: z.array(z.string()).optional(),\n results: z\n .array(\n z.object({\n file_id: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('custom_tool_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('mcp_call'),\n ...mcpCallSchema.shape,\n }),\n z.object({\n type: z.literal('message'),\n role: z.string(),\n content: z.array(messageContentPartSchema),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('function_call'),\n name: z.string(),\n arguments: z.string(),\n call_id: z.string(),\n id: z.string(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n summary: z.array(reasoningSummaryPartSchema),\n content: z\n .array(z.object({ type: z.string(), text: z.string() }))\n .nullish(),\n status: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n]);\n\nexport const xaiResponsesUsageSchema = z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n total_tokens: z.number().optional(),\n input_tokens_details: z\n .object({\n cached_tokens: z.number().optional(),\n })\n .optional(),\n output_tokens_details: z\n .object({\n reasoning_tokens: z.number().optional(),\n })\n .optional(),\n num_sources_used: z.number().optional(),\n num_server_side_tools_used: z.number().optional(),\n cost_in_usd_ticks: z.number().nullish(),\n});\n\nexport const xaiResponsesResponseSchema = z.object({\n id: z.string().nullish(),\n created_at: z.number().nullish(),\n model: z.string().nullish(),\n object: z.literal('response'),\n output: z.array(outputItemSchema),\n usage: xaiResponsesUsageSchema.nullish(),\n status: z.string(),\n});\n\nexport const xaiResponsesChunkSchema = z.union([\n z.object({\n type: z.literal('response.created'),\n response: xaiResponsesResponseSchema.partial({ usage: true, status: true }),\n }),\n z.object({\n type: z.literal('response.in_progress'),\n response: xaiResponsesResponseSchema.partial({ usage: true, status: true }),\n }),\n z.object({\n type: z.literal('response.output_item.added'),\n item: outputItemSchema,\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.output_item.done'),\n item: outputItemSchema,\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.content_part.added'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n part: messageContentPartSchema,\n }),\n z.object({\n type: z.literal('response.content_part.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n part: messageContentPartSchema,\n }),\n z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n logprobs: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('response.output_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n text: z.string(),\n logprobs: z.array(z.any()).optional(),\n annotations: z.array(annotationSchema).optional(),\n }),\n z.object({\n type: z.literal('response.output_text.annotation.added'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n annotation_index: z.number(),\n annotation: annotationSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.added'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n part: reasoningSummaryPartSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.done'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n part: reasoningSummaryPartSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n text: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n text: z.string(),\n }),\n z.object({\n type: z.literal('response.web_search_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.web_search_call.searching'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.web_search_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.searching'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.file_search_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.file_search_call.searching'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.file_search_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_execution_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_execution_call.executing'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_execution_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.executing'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.interpreting'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n // Code interpreter code streaming events\n z.object({\n type: z.literal('response.code_interpreter_call_code.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call_code.done'),\n item_id: z.string(),\n output_index: z.number(),\n code: z.string(),\n }),\n z.object({\n type: z.literal('response.custom_tool_call_input.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.custom_tool_call_input.done'),\n item_id: z.string(),\n output_index: z.number(),\n input: z.string(),\n }),\n // Function call arguments streaming events (standard function tools)\n z.object({\n type: z.literal('response.function_call_arguments.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.function_call_arguments.done'),\n item_id: z.string(),\n output_index: z.number(),\n arguments: z.string(),\n }),\n z.object({\n type: z.literal('response.mcp_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.mcp_call.executing'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.mcp_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.mcp_call.failed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.mcp_call_arguments.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.mcp_call_arguments.done'),\n item_id: z.string(),\n output_index: z.number(),\n arguments: z.string().optional(),\n }),\n z.object({\n type: z.literal('response.mcp_call_output.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.mcp_call_output.done'),\n item_id: z.string(),\n output_index: z.number(),\n output: z.string().optional(),\n }),\n z.object({\n type: z.literal('response.incomplete'),\n response: z.object({\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: xaiResponsesUsageSchema.nullish(),\n }),\n }),\n z.object({\n type: z.literal('response.failed'),\n response: z.object({\n error: z\n .object({\n code: z.string().nullish(),\n message: z.string(),\n })\n .nullish(),\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: xaiResponsesUsageSchema.nullish(),\n }),\n }),\n z.object({\n type: z.literal('error'),\n code: z.string().nullish(),\n message: z.string(),\n param: z.string().nullish(),\n }),\n z.object({\n type: z.literal('response.done'),\n response: xaiResponsesResponseSchema,\n }),\n z.object({\n type: z.literal('response.completed'),\n response: xaiResponsesResponseSchema,\n }),\n]);\n\nexport type XaiResponsesResponse = z.infer<typeof xaiResponsesResponseSchema>;\nexport type XaiResponsesChunk = z.infer<typeof xaiResponsesChunkSchema>;\nexport type XaiResponsesUsage = z.infer<typeof xaiResponsesUsageSchema>;\n","import { z } from 'zod/v4';\n\nexport type XaiResponsesModelId =\n | 'grok-4-1-fast-reasoning'\n | 'grok-4-1-fast-non-reasoning'\n | 'grok-4'\n | 'grok-4-fast-non-reasoning'\n | 'grok-4-fast-reasoning'\n | 'grok-4.20-0309-non-reasoning'\n | 'grok-4.20-0309-reasoning'\n | 'grok-4.20-multi-agent-0309'\n | (string & {});\n\n/**\n * @see https://docs.x.ai/docs/api-reference#create-new-response\n */\nexport const xaiLanguageModelResponsesOptions = z.object({\n /**\n * Constrains how hard a reasoning model thinks before responding.\n * Possible values are `low` (uses fewer reasoning tokens), `medium` and `high` (uses more reasoning tokens).\n */\n reasoningEffort: z.enum(['low', 'medium', 'high']).optional(),\n reasoningSummary: z.enum(['auto', 'concise', 'detailed']).optional(),\n logprobs: z.boolean().optional(),\n topLogprobs: z.number().int().min(0).max(8).optional(),\n /**\n * Whether to store the input message(s) and model response for later retrieval.\n * Must be set to `false` for teams with Zero Data Retention (ZDR) enabled,\n * otherwise the API will return an error.\n * @default true\n */\n store: z.boolean().optional(),\n /**\n * The ID of the previous response from the model.\n */\n previousResponseId: z.string().optional(),\n /**\n * Specify additional output data to include in the model response.\n * Example values: 'file_search_call.results'.\n */\n include: z.array(z.enum(['file_search_call.results'])).nullish(),\n});\n\nexport type XaiLanguageModelResponsesOptions = z.infer<\n typeof xaiLanguageModelResponsesOptions\n>;\n","import {\n LanguageModelV4CallOptions,\n SharedV4Warning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { validateTypes } from '@ai-sdk/provider-utils';\nimport { fileSearchArgsSchema } from '../tool/file-search';\nimport { mcpServerArgsSchema } from '../tool/mcp-server';\nimport { webSearchArgsSchema } from '../tool/web-search';\nimport { xSearchArgsSchema } from '../tool/x-search';\nimport { XaiResponsesTool } from './xai-responses-api';\n\ntype XaiResponsesToolChoice =\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'function'; name: string };\n\nexport async function prepareResponsesTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV4CallOptions['tools'];\n toolChoice?: LanguageModelV4CallOptions['toolChoice'];\n}): Promise<{\n tools: Array<XaiResponsesTool> | undefined;\n toolChoice: XaiResponsesToolChoice | undefined;\n toolWarnings: SharedV4Warning[];\n}> {\n const normalizedTools = tools?.length ? tools : undefined;\n\n const toolWarnings: SharedV4Warning[] = [];\n\n if (normalizedTools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const xaiTools: Array<XaiResponsesTool> = [];\n const toolByName = new Map<string, (typeof normalizedTools)[number]>();\n\n for (const tool of normalizedTools) {\n toolByName.set(tool.name, tool);\n\n if (tool.type === 'provider') {\n switch (tool.id) {\n case 'xai.web_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: webSearchArgsSchema,\n });\n\n xaiTools.push({\n type: 'web_search',\n allowed_domains: args.allowedDomains,\n excluded_domains: args.excludedDomains,\n enable_image_understanding: args.enableImageUnderstanding,\n });\n break;\n }\n\n case 'xai.x_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: xSearchArgsSchema,\n });\n\n xaiTools.push({\n type: 'x_search',\n allowed_x_handles: args.allowedXHandles,\n excluded_x_handles: args.excludedXHandles,\n from_date: args.fromDate,\n to_date: args.toDate,\n enable_image_understanding: args.enableImageUnderstanding,\n enable_video_understanding: args.enableVideoUnderstanding,\n });\n break;\n }\n\n case 'xai.code_execution': {\n xaiTools.push({\n type: 'code_interpreter',\n });\n break;\n }\n\n case 'xai.view_image': {\n xaiTools.push({\n type: 'view_image',\n });\n break;\n }\n\n case 'xai.view_x_video': {\n xaiTools.push({\n type: 'view_x_video',\n });\n break;\n }\n\n case 'xai.file_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: fileSearchArgsSchema,\n });\n\n xaiTools.push({\n type: 'file_search',\n vector_store_ids: args.vectorStoreIds,\n max_num_results: args.maxNumResults,\n });\n break;\n }\n\n case 'xai.mcp': {\n const args = await validateTypes({\n value: tool.args,\n schema: mcpServerArgsSchema,\n });\n\n xaiTools.push({\n type: 'mcp',\n server_url: args.serverUrl,\n server_label: args.serverLabel,\n server_description: args.serverDescription,\n allowed_tools: args.allowedTools,\n headers: args.headers,\n authorization: args.authorization,\n });\n break;\n }\n\n default: {\n toolWarnings.push({\n type: 'unsupported',\n feature: `provider-defined tool ${tool.name}`,\n });\n break;\n }\n }\n } else {\n xaiTools.push({\n type: 'function',\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n ...(tool.strict != null ? { strict: tool.strict } : {}),\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 return { tools: xaiTools, toolChoice: 'required', toolWarnings };\n case 'tool': {\n const selectedTool = toolByName.get(toolChoice.toolName);\n\n if (selectedTool == null) {\n return {\n tools: xaiTools,\n toolChoice: undefined,\n toolWarnings,\n };\n }\n\n if (selectedTool.type === 'provider') {\n // xAI API does not support forcing specific server-side tools via toolChoice\n // Only function tools can be forced with {\"type\": \"function\", \"function\": {\"name\": \"...\"}}\n toolWarnings.push({\n type: 'unsupported',\n feature: `toolChoice for server-side tool \"${selectedTool.name}\"`,\n });\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n\n return {\n tools: xaiTools,\n toolChoice: { type: 'function', name: selectedTool.name },\n toolWarnings,\n };\n }\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * Schema for file search tool arguments.\n * @see https://docs.x.ai/docs/guides/using-collections/api\n */\nexport const fileSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n vectorStoreIds: z.array(z.string()),\n maxNumResults: z.number().optional(),\n }),\n ),\n);\n\nconst fileSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n fileId: z.string(),\n filename: z.string(),\n score: z.number().min(0).max(1),\n text: z.string(),\n }),\n )\n .nullable(),\n }),\n ),\n);\n\nconst fileSearchToolFactory = createProviderExecutedToolFactory<\n {},\n {\n /**\n * The search queries that were executed.\n */\n queries: string[];\n\n /**\n * The results of the file search tool call.\n */\n results:\n | null\n | {\n /**\n * The unique ID of the file.\n */\n fileId: string;\n\n /**\n * The name of the file.\n */\n filename: string;\n\n /**\n * The relevance score of the file - a value between 0 and 1.\n */\n score: number;\n\n /**\n * The text that was retrieved from the file.\n */\n text: string;\n }[];\n },\n {\n /**\n * List of vector store IDs (collection IDs) to search through.\n * @see https://docs.x.ai/docs/guides/using-collections/api\n */\n vectorStoreIds: string[];\n\n /**\n * Maximum number of search results to return.\n */\n maxNumResults?: number;\n }\n>({\n id: 'xai.file_search',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: fileSearchOutputSchema,\n});\n\nexport const fileSearch = (args: Parameters<typeof fileSearchToolFactory>[0]) =>\n fileSearchToolFactory(args);\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const mcpServerArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n serverUrl: z.string().describe('The URL of the MCP server'),\n serverLabel: z.string().optional().describe('A label for the MCP server'),\n serverDescription: z\n .string()\n .optional()\n .describe('Description of the MCP server'),\n allowedTools: z\n .array(z.string())\n .optional()\n .describe('List of allowed tool names'),\n headers: z\n .record(z.string(), z.string())\n .optional()\n .describe('Custom headers to send'),\n authorization: z\n .string()\n .optional()\n .describe('Authorization header value'),\n }),\n ),\n);\n\n// MCP tool output varies based on which tool is called\nconst mcpServerOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n name: z.string(),\n arguments: z.string(),\n result: z.unknown(),\n }),\n ),\n);\n\nconst mcpServerToolFactory = createProviderExecutedToolFactory<\n {},\n {\n name: string;\n arguments: string;\n result: unknown;\n },\n {\n serverUrl: string;\n serverLabel?: string;\n serverDescription?: string;\n allowedTools?: string[];\n headers?: Record<string, string>;\n authorization?: string;\n }\n>({\n id: 'xai.mcp',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: mcpServerOutputSchema,\n});\n\nexport const mcpServer = (args: Parameters<typeof mcpServerToolFactory>[0]) =>\n mcpServerToolFactory(args);\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n allowedDomains: z.array(z.string()).max(5).optional(),\n excludedDomains: z.array(z.string()).max(5).optional(),\n enableImageUnderstanding: z.boolean().optional(),\n }),\n ),\n);\n\nconst webSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n query: z.string(),\n sources: z.array(\n z.object({\n title: z.string(),\n url: z.string(),\n snippet: z.string(),\n }),\n ),\n }),\n ),\n);\n\nconst webSearchToolFactory = createProviderExecutedToolFactory<\n {},\n {\n query: string;\n sources: Array<{\n title: string;\n url: string;\n snippet: string;\n }>;\n },\n {\n allowedDomains?: string[];\n excludedDomains?: string[];\n enableImageUnderstanding?: boolean;\n }\n>({\n id: 'xai.web_search',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: webSearchOutputSchema,\n});\n\nexport const webSearch = (\n args: Parameters<typeof webSearchToolFactory>[0] = {},\n) => webSearchToolFactory(args);\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n allowedXHandles: z.array(z.string()).max(10).optional(),\n excludedXHandles: z.array(z.string()).max(10).optional(),\n fromDate: z.string().optional(),\n toDate: z.string().optional(),\n enableImageUnderstanding: z.boolean().optional(),\n enableVideoUnderstanding: z.boolean().optional(),\n }),\n ),\n);\n\nconst xSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n query: z.string(),\n posts: z.array(\n z.object({\n author: z.string(),\n text: z.string(),\n url: z.string(),\n likes: z.number(),\n }),\n ),\n }),\n ),\n);\n\nconst xSearchToolFactory = createProviderExecutedToolFactory<\n {},\n {\n query: string;\n posts: Array<{\n author: string;\n text: string;\n url: string;\n likes: number;\n }>;\n },\n {\n allowedXHandles?: string[];\n excludedXHandles?: string[];\n fromDate?: string;\n toDate?: string;\n enableImageUnderstanding?: boolean;\n enableVideoUnderstanding?: boolean;\n }\n>({\n id: 'xai.x_search',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: xSearchOutputSchema,\n});\n\nexport const xSearch = (args: Parameters<typeof xSearchToolFactory>[0] = {}) =>\n xSearchToolFactory(args);\n","import { createProviderExecutedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst codeExecutionOutputSchema = z.object({\n output: z.string().describe('the output of the code execution'),\n error: z.string().optional().describe('any error that occurred'),\n});\n\nconst codeExecutionToolFactory = createProviderExecutedToolFactory({\n id: 'xai.code_execution',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: codeExecutionOutputSchema,\n});\n\nexport const codeExecution = (\n args: Parameters<typeof codeExecutionToolFactory>[0] = {},\n) => codeExecutionToolFactory(args);\n","import { createProviderExecutedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst viewImageOutputSchema = z.object({\n description: z.string().describe('description of the image'),\n objects: z\n .array(z.string())\n .optional()\n .describe('objects detected in the image'),\n});\n\nconst viewImageToolFactory = createProviderExecutedToolFactory({\n id: 'xai.view_image',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: viewImageOutputSchema,\n});\n\nexport const viewImage = (\n args: Parameters<typeof viewImageToolFactory>[0] = {},\n) => viewImageToolFactory(args);\n","import { createProviderExecutedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst viewXVideoOutputSchema = z.object({\n transcript: z.string().optional().describe('transcript of the video'),\n description: z.string().describe('description of the video content'),\n duration: z.number().optional().describe('duration in seconds'),\n});\n\nconst viewXVideoToolFactory = createProviderExecutedToolFactory({\n id: 'xai.view_x_video',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: viewXVideoOutputSchema,\n});\n\nexport const viewXVideo = (\n args: Parameters<typeof viewXVideoToolFactory>[0] = {},\n) => viewXVideoToolFactory(args);\n","import { codeExecution } from './code-execution';\nimport { fileSearch } from './file-search';\nimport { mcpServer } from './mcp-server';\nimport { viewImage } from './view-image';\nimport { viewXVideo } from './view-x-video';\nimport { webSearch } from './web-search';\nimport { xSearch } from './x-search';\n\nexport {\n codeExecution,\n fileSearch,\n mcpServer,\n viewImage,\n viewXVideo,\n webSearch,\n xSearch,\n};\n\nexport const xaiTools = {\n codeExecution,\n fileSearch,\n mcpServer,\n viewImage,\n viewXVideo,\n webSearch,\n xSearch,\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","import {\n FilesV4,\n FilesV4UploadFileCallOptions,\n FilesV4UploadFileResult,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { xaiFailedResponseHandler } from '../xai-error';\nimport { xaiFilesResponseSchema } from './xai-files-api';\nimport { xaiFilesOptionsSchema, XaiFilesOptions } from './xai-files-options';\n\ninterface XaiFilesConfig {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n}\n\nexport class XaiFiles implements FilesV4 {\n readonly specificationVersion = 'v4';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(private readonly config: XaiFilesConfig) {}\n\n async uploadFile({\n data,\n mediaType,\n filename,\n providerOptions,\n }: FilesV4UploadFileCallOptions): Promise<FilesV4UploadFileResult> {\n const xaiOptions = (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiFilesOptionsSchema,\n })) as XaiFilesOptions | undefined;\n\n const fileBytes =\n data instanceof Uint8Array ? data : convertBase64ToUint8Array(data);\n\n const blob = new Blob([fileBytes], {\n type: mediaType,\n });\n\n const formData = new FormData();\n if (filename != null) {\n formData.append('file', blob, filename);\n } else {\n formData.append('file', blob);\n }\n\n if (xaiOptions?.teamId != null) {\n formData.append('team_id', xaiOptions.teamId);\n }\n\n const { value: response } = await postFormDataToApi({\n url: `${this.config.baseURL}/files`,\n headers: combineHeaders(this.config.headers()),\n formData,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiFilesResponseSchema,\n ),\n fetch: this.config.fetch,\n });\n\n return {\n warnings: [],\n providerReference: { xai: response.id },\n ...((response.filename ?? filename)\n ? { filename: response.filename ?? filename }\n : {}),\n ...(mediaType != null ? { mediaType } : {}),\n providerMetadata: {\n xai: {\n ...(response.filename != null ? { filename: response.filename } : {}),\n ...(response.bytes != null ? { bytes: response.bytes } : {}),\n ...(response.created_at != null\n ? { createdAt: response.created_at }\n : {}),\n },\n },\n };\n }\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xaiFilesResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n id: z.string(),\n object: z.string().nullish(),\n bytes: z.number().nullish(),\n created_at: z.number().nullish(),\n filename: z.string().nullish(),\n purpose: z.string().nullish(),\n status: z.string().nullish(),\n }),\n ),\n);\n","import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xaiFilesOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n teamId: z.string().optional(),\n filePath: z.string().optional(),\n })\n .passthrough(),\n ),\n);\n\nexport type XaiFilesOptions = InferSchema<typeof xaiFilesOptionsSchema>;\n","import {\n AISDKError,\n type Experimental_VideoModelV4,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertUint8ArrayToBase64,\n createJsonResponseHandler,\n delay,\n type FetchFunction,\n getFromApi,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport {\n type XaiParsedVideoModelOptions,\n xaiVideoModelOptionsSchema,\n} from './xai-video-options';\nimport type { XaiVideoModelId } from './xai-video-settings';\n\ninterface XaiVideoModelConfig {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nconst RESOLUTION_MAP: Record<string, string> = {\n '1280x720': '720p',\n '854x480': '480p',\n '640x480': '480p',\n};\n\nfunction resolveVideoMode(\n options: XaiParsedVideoModelOptions | undefined,\n): XaiParsedVideoModelOptions['mode'] | undefined {\n if (options?.mode != null) {\n return options.mode;\n }\n\n if (options?.videoUrl != null) {\n return 'edit-video';\n }\n\n if (\n options?.referenceImageUrls != null &&\n options.referenceImageUrls.length > 0\n ) {\n return 'reference-to-video';\n }\n\n return undefined;\n}\n\nexport class XaiVideoModel implements Experimental_VideoModelV4 {\n readonly specificationVersion = 'v4';\n readonly maxVideosPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: XaiVideoModelId,\n private config: XaiVideoModelConfig,\n ) {}\n\n async doGenerate(\n options: Parameters<Experimental_VideoModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<Experimental_VideoModelV4['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const warnings: SharedV4Warning[] = [];\n\n const xaiOptions = (await parseProviderOptions({\n provider: 'xai',\n providerOptions: options.providerOptions,\n schema: xaiVideoModelOptionsSchema,\n })) as XaiParsedVideoModelOptions | undefined;\n\n const effectiveMode = resolveVideoMode(xaiOptions);\n\n const isEdit = effectiveMode === 'edit-video';\n const isExtension = effectiveMode === 'extend-video';\n const hasReferenceImages = effectiveMode === 'reference-to-video';\n\n if (options.fps != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'fps',\n details: 'xAI video models do not support custom FPS.',\n });\n }\n\n if (options.seed != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'seed',\n details: 'xAI video models do not support seed.',\n });\n }\n\n if (options.n != null && options.n > 1) {\n warnings.push({\n type: 'unsupported',\n feature: 'n',\n details:\n 'xAI video models do not support generating multiple videos per call. ' +\n 'Only 1 video will be generated.',\n });\n }\n\n // Edit mode: duration, aspectRatio, resolution not supported\n if (isEdit && options.duration != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'duration',\n details: 'xAI video editing does not support custom duration.',\n });\n }\n\n if (isEdit && options.aspectRatio != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'aspectRatio',\n details: 'xAI video editing does not support custom aspect ratio.',\n });\n }\n\n if (\n isEdit &&\n (xaiOptions?.resolution != null || options.resolution != null)\n ) {\n warnings.push({\n type: 'unsupported',\n feature: 'resolution',\n details: 'xAI video editing does not support custom resolution.',\n });\n }\n\n // Extension mode: aspectRatio and resolution not supported\n if (isExtension && options.aspectRatio != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'aspectRatio',\n details: 'xAI video extension does not support custom aspect ratio.',\n });\n }\n\n if (\n isExtension &&\n (xaiOptions?.resolution != null || options.resolution != null)\n ) {\n warnings.push({\n type: 'unsupported',\n feature: 'resolution',\n details: 'xAI video extension does not support custom resolution.',\n });\n }\n\n const body: Record<string, unknown> = {\n model: this.modelId,\n prompt: options.prompt,\n };\n\n const allowDuration = !isEdit;\n const allowAspectRatio = !isEdit && !isExtension;\n const allowResolution = !isEdit && !isExtension;\n\n if (allowDuration && options.duration != null) {\n body.duration = options.duration;\n }\n\n if (allowAspectRatio && options.aspectRatio != null) {\n body.aspect_ratio = options.aspectRatio;\n }\n\n if (allowResolution && xaiOptions?.resolution != null) {\n body.resolution = xaiOptions.resolution;\n } else if (allowResolution && options.resolution != null) {\n const mapped = RESOLUTION_MAP[options.resolution];\n if (mapped != null) {\n body.resolution = mapped;\n } else {\n warnings.push({\n type: 'unsupported',\n feature: 'resolution',\n details:\n `Unrecognized resolution \"${options.resolution}\". ` +\n 'Use providerOptions.xai.resolution with \"480p\" or \"720p\" instead.',\n });\n }\n }\n\n // Video editing: pass source video URL (nested object)\n if (isEdit) {\n body.video = { url: xaiOptions!.videoUrl };\n }\n\n // Video extension: pass source video URL (nested object)\n if (isExtension) {\n body.video = { url: xaiOptions!.videoUrl };\n }\n\n // Convert SDK image input to the nested xAI request image object\n if (options.image != null) {\n if (options.image.type === 'url') {\n body.image = { url: options.image.url };\n } else {\n const base64Data =\n typeof options.image.data === 'string'\n ? options.image.data\n : convertUint8ArrayToBase64(options.image.data);\n body.image = {\n url: `data:${options.image.mediaType};base64,${base64Data}`,\n };\n }\n }\n\n // Reference images for R2V (reference-to-video) generation\n if (hasReferenceImages) {\n body.reference_images = xaiOptions!.referenceImageUrls!.map(url => ({\n url,\n }));\n }\n\n if (xaiOptions != null) {\n for (const [key, value] of Object.entries(xaiOptions)) {\n if (\n ![\n 'mode',\n 'pollIntervalMs',\n 'pollTimeoutMs',\n 'resolution',\n 'videoUrl',\n 'referenceImageUrls',\n ].includes(key)\n ) {\n body[key] = value;\n }\n }\n }\n\n const baseURL = this.config.baseURL ?? 'https://api.x.ai/v1';\n\n // Determine endpoint based on mode\n let endpoint: string;\n if (isEdit) {\n endpoint = `${baseURL}/videos/edits`;\n } else if (isExtension) {\n endpoint = `${baseURL}/videos/extensions`;\n } else {\n endpoint = `${baseURL}/videos/generations`;\n }\n\n // Step 1: Create video generation/edit/extension request\n const { value: createResponse } = await postJsonToApi({\n url: endpoint,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiCreateVideoResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const requestId = createResponse.request_id;\n if (!requestId) {\n throw new AISDKError({\n name: 'XAI_VIDEO_GENERATION_ERROR',\n message: `No request_id returned from xAI API. Response: ${JSON.stringify(createResponse)}`,\n });\n }\n\n // Step 2: Poll for completion\n const pollIntervalMs = xaiOptions?.pollIntervalMs ?? 5000;\n const pollTimeoutMs = xaiOptions?.pollTimeoutMs ?? 600000;\n const startTime = Date.now();\n let responseHeaders: Record<string, string> | undefined;\n\n while (true) {\n await delay(pollIntervalMs, { abortSignal: options.abortSignal });\n\n if (Date.now() - startTime > pollTimeoutMs) {\n throw new AISDKError({\n name: 'XAI_VIDEO_GENERATION_TIMEOUT',\n message: `Video generation timed out after ${pollTimeoutMs}ms`,\n });\n }\n\n const { value: statusResponse, responseHeaders: pollHeaders } =\n await getFromApi({\n url: `${baseURL}/videos/${requestId}`,\n headers: combineHeaders(this.config.headers(), options.headers),\n successfulResponseHandler: createJsonResponseHandler(\n xaiVideoStatusResponseSchema,\n ),\n failedResponseHandler: xaiFailedResponseHandler,\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n responseHeaders = pollHeaders;\n\n if (\n statusResponse.status === 'done' ||\n (statusResponse.status == null && statusResponse.video?.url)\n ) {\n if (statusResponse.video?.respect_moderation === false) {\n throw new AISDKError({\n name: 'XAI_VIDEO_MODERATION_ERROR',\n message:\n 'Video generation was blocked due to a content policy violation.',\n });\n }\n\n if (!statusResponse.video?.url) {\n throw new AISDKError({\n name: 'XAI_VIDEO_GENERATION_ERROR',\n message:\n 'Video generation completed but no video URL was returned.',\n });\n }\n\n return {\n videos: [\n {\n type: 'url' as const,\n url: statusResponse.video.url,\n mediaType: 'video/mp4',\n },\n ],\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n xai: {\n requestId,\n videoUrl: statusResponse.video.url,\n ...(statusResponse.video.duration != null\n ? { duration: statusResponse.video.duration }\n : {}),\n ...(statusResponse.usage?.cost_in_usd_ticks != null\n ? { costInUsdTicks: statusResponse.usage.cost_in_usd_ticks }\n : {}),\n ...(statusResponse.progress != null\n ? { progress: statusResponse.progress }\n : {}),\n },\n },\n };\n }\n\n if (statusResponse.status === 'expired') {\n throw new AISDKError({\n name: 'XAI_VIDEO_GENERATION_EXPIRED',\n message: 'Video generation request expired.',\n });\n }\n\n if (statusResponse.status === 'failed') {\n throw new AISDKError({\n name: 'XAI_VIDEO_GENERATION_FAILED',\n message: 'Video generation failed.',\n });\n }\n\n // 'pending' → continue polling\n }\n }\n}\n\nconst xaiCreateVideoResponseSchema = z.object({\n request_id: z.string().nullish(),\n});\n\nconst xaiVideoStatusResponseSchema = z.object({\n status: z.string().nullish(),\n video: z\n .object({\n url: z.string(),\n duration: z.number().nullish(),\n respect_moderation: z.boolean().nullish(),\n })\n .nullish(),\n model: z.string().nullish(),\n usage: z\n .object({\n cost_in_usd_ticks: z.number().nullish(),\n })\n .nullish(),\n progress: z.number().nullish(),\n error: z\n .object({\n code: z.string().nullish(),\n message: z.string().nullish(),\n })\n .nullish(),\n});\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst nonEmptyStringSchema = z.string().min(1);\nconst resolutionSchema = z.enum(['480p', '720p']);\nconst modeSchema = z.enum(['edit-video', 'extend-video', 'reference-to-video']);\n\nexport type XaiVideoMode = z.infer<typeof modeSchema>;\ntype XaiVideoResolution = z.infer<typeof resolutionSchema>;\n\ninterface XaiVideoSharedOptions {\n pollIntervalMs?: number | null;\n pollTimeoutMs?: number | null;\n resolution?: XaiVideoResolution | null;\n}\n\ninterface XaiVideoEditModeOptions extends XaiVideoSharedOptions {\n /**\n * Select edit-video mode explicitly for best autocomplete and narrowing.\n */\n mode: 'edit-video';\n /** Source video URL to edit. */\n videoUrl: string;\n}\n\ninterface XaiVideoExtendModeOptions extends XaiVideoSharedOptions {\n /**\n * Select extend-video mode explicitly for best autocomplete and narrowing.\n */\n mode: 'extend-video';\n /** Source video URL to extend from its last frame. */\n videoUrl: string;\n}\n\ninterface XaiVideoReferenceToVideoOptions extends XaiVideoSharedOptions {\n /**\n * Select reference-to-video mode explicitly for best autocomplete and narrowing.\n */\n mode: 'reference-to-video';\n /** Reference image URLs (1-7) for R2V generation. */\n referenceImageUrls: string[];\n}\n\ninterface XaiVideoGenerationOptions extends XaiVideoSharedOptions {\n mode?: undefined;\n videoUrl?: undefined;\n referenceImageUrls?: undefined;\n}\n\ninterface XaiLegacyEditVideoOptions extends XaiVideoSharedOptions {\n /**\n * Legacy backward-compatible shape: omitting `mode` while providing\n * `videoUrl` behaves like edit-video.\n */\n mode?: undefined;\n videoUrl: string;\n}\n\ninterface XaiLegacyReferenceToVideoOptions extends XaiVideoSharedOptions {\n /**\n * Legacy backward-compatible shape: omitting `mode` while providing\n * `referenceImageUrls` behaves like reference-to-video.\n */\n mode?: undefined;\n referenceImageUrls: string[];\n}\n\n/**\n * Provider options for xAI video generation.\n *\n * Use the `mode` option to select the operation:\n *\n * - `'edit-video'` + `videoUrl` -- video editing (`POST /v1/videos/edits`)\n * - `'extend-video'` + `videoUrl` -- video extension (`POST /v1/videos/extensions`)\n * - `'reference-to-video'` + `referenceImageUrls` -- R2V generation (`POST /v1/videos/generations`)\n * - no `mode` -- standard generation from text prompts or image input\n *\n * Runtime remains backward compatible with legacy auto-detected provider\n * options, but the public TypeScript type is intentionally explicit so editors\n * can suggest valid modes and flag invalid field combinations.\n */\nexport type XaiVideoModelOptions =\n | XaiVideoGenerationOptions\n | XaiVideoEditModeOptions\n | XaiVideoExtendModeOptions\n | XaiVideoReferenceToVideoOptions\n | XaiLegacyEditVideoOptions\n | XaiLegacyReferenceToVideoOptions;\n\n// ── Runtime schemas ───────────────────────────────────────────────────\nconst baseFields = {\n pollIntervalMs: z.number().positive().nullish(),\n pollTimeoutMs: z.number().positive().nullish(),\n resolution: resolutionSchema.nullish(),\n};\n\nconst editVideoSchema = z.object({\n ...baseFields,\n mode: z.literal('edit-video'),\n videoUrl: nonEmptyStringSchema,\n referenceImageUrls: z.undefined().optional(),\n});\n\nconst extendVideoSchema = z.object({\n ...baseFields,\n mode: z.literal('extend-video'),\n videoUrl: nonEmptyStringSchema,\n referenceImageUrls: z.undefined().optional(),\n});\n\nconst referenceToVideoSchema = z.object({\n ...baseFields,\n mode: z.literal('reference-to-video'),\n referenceImageUrls: z.array(nonEmptyStringSchema).min(1).max(7),\n videoUrl: z.undefined().optional(),\n});\n\nconst autoDetectSchema = z.object({\n ...baseFields,\n mode: z.undefined().optional(),\n videoUrl: nonEmptyStringSchema.optional(),\n referenceImageUrls: z.array(nonEmptyStringSchema).min(1).max(7).optional(),\n});\n\nexport const xaiVideoModelOptions = z.union([\n editVideoSchema,\n extendVideoSchema,\n referenceToVideoSchema,\n autoDetectSchema,\n]);\n\nconst runtimeSchema = z\n .object({\n mode: modeSchema.optional(),\n videoUrl: nonEmptyStringSchema.optional(),\n referenceImageUrls: z.array(nonEmptyStringSchema).min(1).max(7).optional(),\n ...baseFields,\n })\n .passthrough();\n\nexport type XaiParsedVideoModelOptions = z.infer<typeof runtimeSchema>;\n\nexport const xaiVideoModelOptionsSchema = lazySchema(() =>\n zodSchema(runtimeSchema),\n);\n"],"mappings":"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","names":["z","z","UnsupportedFunctionalityError","xaiTools","xaiTools","_a","url","response","responseHeaders","z","combineHeaders","createJsonResponseHandler","parseProviderOptions","postJsonToApi","serializeModelOptions","WORKFLOW_SERIALIZE","WORKFLOW_DESERIALIZE","z","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","z","combineHeaders","createEventSourceResponseHandler","createJsonResponseHandler","isCustomReasoning","mapReasoningToProviderEffort","parseProviderOptions","postJsonToApi","serializeModelOptions","WORKFLOW_SERIALIZE","WORKFLOW_DESERIALIZE","UnsupportedFunctionalityError","convertToBase64","isProviderReference","resolveProviderReference","z","z","UnsupportedFunctionalityError","z","createProviderExecutedToolFactory","lazySchema","zodSchema","z","createProviderExecutedToolFactory","lazySchema","zodSchema","z","createProviderExecutedToolFactory","lazySchema","zodSchema","z","xaiTools","UnsupportedFunctionalityError","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","xaiTools","isCustomReasoning","mapReasoningToProviderEffort","postJsonToApi","combineHeaders","createJsonResponseHandler","createEventSourceResponseHandler","_a","_b","_c","response","createProviderExecutedToolFactory","z","createProviderExecutedToolFactory","z","createProviderExecutedToolFactory","z","combineHeaders","createJsonResponseHandler","parseProviderOptions","lazySchema","zodSchema","z","lazySchema","zodSchema","z","parseProviderOptions","combineHeaders","createJsonResponseHandler","combineHeaders","createJsonResponseHandler","getFromApi","parseProviderOptions","postJsonToApi","z","lazySchema","zodSchema","z","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","getFromApi","z"]}
|
package/package.json
CHANGED
|
@@ -66,9 +66,19 @@ export async function convertToXaiResponsesInput({
|
|
|
66
66
|
: `data:${mediaType};base64,${convertToBase64(block.data)}`;
|
|
67
67
|
|
|
68
68
|
contentParts.push({ type: 'input_image', image_url: imageUrl });
|
|
69
|
+
} else if (block.data instanceof URL) {
|
|
70
|
+
// xAI's Responses API accepts non-image documents (PDF, text, CSV, etc.)
|
|
71
|
+
// via `{ type: 'input_file', file_url }`. See
|
|
72
|
+
// https://docs.x.ai/docs/guides/chat-with-files. Inline bytes for
|
|
73
|
+
// non-image files are not supported by xAI; callers must upload via
|
|
74
|
+
// the Files API and pass a provider reference (file_id) instead.
|
|
75
|
+
contentParts.push({
|
|
76
|
+
type: 'input_file',
|
|
77
|
+
file_url: block.data.toString(),
|
|
78
|
+
});
|
|
69
79
|
} else {
|
|
70
80
|
throw new UnsupportedFunctionalityError({
|
|
71
|
-
functionality: `file part media type ${block.mediaType}`,
|
|
81
|
+
functionality: `file part media type ${block.mediaType} as inline data (xAI Responses requires a URL or a Files API reference for non-image files)`,
|
|
72
82
|
});
|
|
73
83
|
}
|
|
74
84
|
break;
|
|
@@ -27,7 +27,8 @@ export type XaiResponsesSystemMessage = {
|
|
|
27
27
|
export type XaiResponsesUserMessageContentPart =
|
|
28
28
|
| { type: 'input_text'; text: string }
|
|
29
29
|
| { type: 'input_image'; image_url: string }
|
|
30
|
-
| { type: 'input_file'; file_id: string }
|
|
30
|
+
| { type: 'input_file'; file_id: string }
|
|
31
|
+
| { type: 'input_file'; file_url: string };
|
|
31
32
|
|
|
32
33
|
export type XaiResponsesUserMessage = {
|
|
33
34
|
role: 'user';
|
|
@@ -80,6 +80,11 @@ export class XaiResponsesLanguageModel implements LanguageModelV4 {
|
|
|
80
80
|
|
|
81
81
|
readonly supportedUrls: Record<string, RegExp[]> = {
|
|
82
82
|
'image/*': [/^https?:\/\/.*$/],
|
|
83
|
+
// xAI's Responses API accepts non-image documents (PDF, plain text, CSV, etc.) as
|
|
84
|
+
// `{ type: 'input_file', file_url }`. Keeping these URLs intact here lets them pass
|
|
85
|
+
// through to the converter instead of being downloaded to bytes by the SDK.
|
|
86
|
+
'application/pdf': [/^https?:\/\/.*$/],
|
|
87
|
+
'text/*': [/^https?:\/\/.*$/],
|
|
83
88
|
};
|
|
84
89
|
|
|
85
90
|
private async getArgs({
|