@ai-sdk/xai 4.0.0-beta.7 → 4.0.0-beta.75
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 +660 -9
- package/README.md +2 -0
- package/dist/index.d.ts +213 -68
- package/dist/index.js +2074 -781
- package/dist/index.js.map +1 -1
- package/docs/01-xai.mdx +445 -54
- package/package.json +15 -15
- package/src/convert-to-xai-chat-messages.ts +48 -27
- package/src/convert-xai-chat-usage.ts +3 -3
- package/src/files/xai-files-api.ts +16 -0
- package/src/files/xai-files-options.ts +19 -0
- package/src/files/xai-files.ts +94 -0
- package/src/index.ts +9 -4
- package/src/map-xai-finish-reason.ts +2 -2
- package/src/realtime/index.ts +2 -0
- package/src/realtime/xai-realtime-event-mapper.ts +399 -0
- package/src/realtime/xai-realtime-model-options.ts +3 -0
- package/src/realtime/xai-realtime-model.ts +101 -0
- package/src/remove-additional-properties.ts +24 -0
- package/src/responses/convert-to-xai-responses-input.ts +100 -23
- package/src/responses/convert-xai-responses-usage.ts +3 -3
- package/src/responses/map-xai-responses-finish-reason.ts +3 -2
- package/src/responses/xai-responses-api.ts +31 -1
- package/src/responses/{xai-responses-options.ts → xai-responses-language-model-options.ts} +12 -7
- package/src/responses/xai-responses-language-model.ts +157 -60
- package/src/responses/xai-responses-prepare-tools.ts +10 -8
- package/src/tool/code-execution.ts +2 -2
- package/src/tool/file-search.ts +2 -2
- package/src/tool/mcp-server.ts +2 -2
- package/src/tool/view-image.ts +2 -2
- package/src/tool/view-x-video.ts +2 -2
- package/src/tool/web-search.ts +4 -2
- package/src/tool/x-search.ts +2 -2
- package/src/{xai-chat-options.ts → xai-chat-language-model-options.ts} +28 -13
- package/src/xai-chat-language-model.ts +65 -29
- package/src/xai-chat-prompt.ts +2 -1
- package/src/xai-error.ts +13 -3
- package/src/xai-image-model.ts +28 -11
- package/src/xai-prepare-tools.ts +9 -8
- package/src/xai-provider.ts +115 -19
- package/src/xai-speech-model-options.ts +55 -0
- package/src/xai-speech-model.ts +167 -0
- package/src/xai-transcription-model-options.ts +70 -0
- package/src/xai-transcription-model.ts +166 -0
- package/src/xai-video-model-options.ts +145 -0
- package/src/xai-video-model.ts +129 -22
- package/dist/index.d.mts +0 -377
- package/dist/index.mjs +0 -3070
- package/dist/index.mjs.map +0 -1
- package/src/xai-video-options.ts +0 -23
- /package/src/{xai-image-options.ts → xai-image-model-options.ts} +0 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/xai-provider.ts","../src/xai-chat-language-model.ts","../src/convert-to-xai-chat-messages.ts","../src/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/xai-video-model.ts","../src/xai-video-options.ts"],"sourcesContent":["export type {\n XaiLanguageModelChatOptions,\n /** @deprecated Use `XaiLanguageModelChatOptions` instead. */\n XaiLanguageModelChatOptions as XaiProviderOptions,\n} from './xai-chat-options';\nexport type { XaiErrorData } from './xai-error';\nexport type {\n XaiLanguageModelResponsesOptions,\n /** @deprecated Use `XaiLanguageModelResponsesOptions` instead. */\n XaiLanguageModelResponsesOptions as XaiResponsesProviderOptions,\n} from './responses/xai-responses-options';\nexport type {\n XaiImageModelOptions,\n /** @deprecated Use `XaiImageModelOptions` instead. */\n XaiImageModelOptions as XaiImageProviderOptions,\n} from './xai-image-options';\nexport type { XaiVideoModelId } from './xai-video-settings';\nexport type {\n XaiVideoModelOptions,\n /** @deprecated Use `XaiVideoModelOptions` instead. */\n XaiVideoModelOptions as XaiVideoProviderOptions,\n} from './xai-video-options';\nexport { createXai, xai } from './xai-provider';\nexport type { XaiProvider, XaiProviderSettings } from './xai-provider';\nexport {\n codeExecution,\n mcpServer,\n viewImage,\n viewXVideo,\n webSearch,\n xSearch,\n xaiTools,\n} from './tool';\nexport { VERSION } from './version';\n","import {\n type Experimental_VideoModelV3,\n ImageModelV3,\n LanguageModelV3,\n NoSuchModelError,\n ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatLanguageModel } from './xai-chat-language-model';\nimport { XaiChatModelId } from './xai-chat-options';\nimport { 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 { XaiVideoModel } from './xai-video-model';\nimport { XaiVideoModelId } from './xai-video-settings';\n\nexport interface XaiProvider extends ProviderV3 {\n (modelId: XaiResponsesModelId): LanguageModelV3;\n\n /**\n * Creates an Xai language model for text generation.\n */\n languageModel(modelId: XaiResponsesModelId): LanguageModelV3;\n\n /**\n * Creates an Xai chat model for text generation.\n */\n chat: (modelId: XaiChatModelId) => LanguageModelV3;\n\n /**\n * Creates an Xai responses model for text generation.\n */\n responses: (modelId: XaiResponsesModelId) => LanguageModelV3;\n\n /**\n * Creates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId): ImageModelV3;\n\n /**\n * Creates an Xai image model for image generation.\n */\n imageModel(modelId: XaiImageModelId): ImageModelV3;\n\n /**\n * Creates an Xai video model for video generation.\n */\n video(modelId: XaiVideoModelId): Experimental_VideoModelV3;\n\n /**\n * Creates an Xai video model for video generation.\n */\n videoModel(modelId: XaiVideoModelId): Experimental_VideoModelV3;\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 provider = (modelId: XaiResponsesModelId) =>\n createResponsesLanguageModel(modelId);\n\n provider.specificationVersion = 'v3' 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.tools = xaiTools;\n\n return provider;\n}\n\nexport const xai = createXai();\n","import {\n APICallError,\n LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamPart,\n LanguageModelV3StreamResult,\n LanguageModelV3Usage,\n SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n extractResponseHeaders,\n FetchFunction,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n safeParseJSON,\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 LanguageModelV3 {\n readonly specificationVersion = 'v3';\n\n readonly modelId: XaiChatModelId;\n\n private readonly config: XaiChatConfig;\n\n constructor(modelId: XaiChatModelId, config: XaiChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n seed,\n responseFormat,\n providerOptions,\n tools,\n toolChoice,\n }: LanguageModelV3CallOptions) {\n const warnings: SharedV3Warning[] = [];\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: options.reasoningEffort,\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: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3GenerateResult> {\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<LanguageModelV3Content> = [];\n\n // extract text content\n if (choice.message.content != null && choice.message.content.length > 0) {\n let text = choice.message.content;\n\n // skip if this content duplicates the last assistant message\n const lastMessage = body.messages[body.messages.length - 1];\n if (lastMessage?.role === 'assistant' && text === lastMessage.content) {\n text = '';\n }\n\n if (text.length > 0) {\n content.push({ type: 'text', text });\n }\n }\n\n // extract reasoning content\n if (\n choice.message.reasoning_content != null &&\n choice.message.reasoning_content.length > 0\n ) {\n content.push({\n type: 'reasoning',\n text: choice.message.reasoning_content,\n });\n }\n\n // extract tool calls\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n }\n }\n\n // extract citations\n if (response.citations != null) {\n for (const url of response.citations) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url,\n });\n }\n }\n\n return {\n content,\n finishReason: {\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: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3StreamResult> {\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: LanguageModelV3FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let usage: LanguageModelV3Usage | 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 LanguageModelV3StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // emit response metadata on first chunk\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n isFirstChunk = false;\n }\n\n // emit citations if present (they come in the last chunk according to docs)\n if (value.citations != null) {\n for (const url of value.citations) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url,\n });\n }\n }\n\n // update usage if present\n if (value.usage != null) {\n usage = 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 SharedV3Warning,\n LanguageModelV3Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\nimport { XaiChatPrompt } from './xai-chat-prompt';\n\nexport function convertToXaiChatMessages(prompt: LanguageModelV3Prompt): {\n messages: XaiChatPrompt;\n warnings: Array<SharedV3Warning>;\n} {\n const messages: XaiChatPrompt = [];\n const warnings: Array<SharedV3Warning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({ role: 'user', content: content[0].text });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'image_url',\n image_url: {\n url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n },\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n 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 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 { LanguageModelV3Usage } from '@ai-sdk/provider';\nimport { XaiChatUsage } from './xai-chat-language-model';\n\nexport function convertXaiChatUsage(usage: XaiChatUsage): LanguageModelV3Usage {\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 { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV3FinishReason['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-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 LanguageModelV3CallOptions,\n SharedV3Warning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { XaiToolChoice } from './xai-chat-prompt';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV3CallOptions['tools'];\n toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n}): {\n tools:\n | Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n strict?: boolean;\n };\n }>\n | undefined;\n toolChoice: XaiToolChoice | undefined;\n toolWarnings: SharedV3Warning[];\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: SharedV3Warning[] = [];\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 { ImageModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n createStatusCodeErrorResponseHandler,\n FetchFunction,\n getFromApi,\n parseProviderOptions,\n postJsonToApi,\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 ImageModelV3 {\n readonly specificationVersion = 'v3';\n readonly maxImagesPerCall = 3;\n\n get provider(): string {\n return this.config.provider;\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<ImageModelV3['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV3['doGenerate']>>\n > {\n const warnings: Array<SharedV3Warning> = [];\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 LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamPart,\n LanguageModelV3StreamResult,\n LanguageModelV3Usage,\n SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { 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 LanguageModelV3 {\n readonly specificationVersion = 'v3';\n\n readonly modelId: XaiResponsesModelId;\n\n private readonly config: XaiResponsesConfig;\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 }: LanguageModelV3CallOptions) {\n const warnings: SharedV3Warning[] = [];\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: 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 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 ...((options.reasoningEffort != null ||\n options.reasoningSummary != null) && {\n reasoning: {\n ...(options.reasoningEffort != null && {\n effort: options.reasoningEffort,\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: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3GenerateResult> {\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<LanguageModelV3Content> = [];\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 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 if (reasoningText) {\n if (part.encrypted_content || part.id) {\n content.push({\n type: 'reasoning',\n text: reasoningText,\n providerMetadata: {\n xai: {\n ...(part.encrypted_content && {\n reasoningEncryptedContent: part.encrypted_content,\n }),\n ...(part.id && { itemId: part.id }),\n },\n },\n });\n } else {\n content.push({\n type: 'reasoning',\n text: reasoningText,\n });\n }\n }\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return {\n content,\n finishReason: {\n unified: 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 request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3StreamResult> {\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: LanguageModelV3FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let usage: LanguageModelV3Usage | 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 LanguageModelV3StreamPart\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 ) {\n const response = event.response;\n\n if (response.usage) {\n usage = convertXaiResponsesUsage(response.usage);\n }\n\n if (response.status) {\n finishReason = {\n unified: mapXaiResponsesFinishReason(response.status),\n raw: response.status,\n };\n }\n\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 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 });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n","import {\n SharedV3Warning,\n LanguageModelV3Message,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64 } 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: LanguageModelV3Message[];\n store?: boolean;\n}): Promise<{\n input: XaiResponsesInput;\n inputWarnings: SharedV3Warning[];\n}> {\n const input: XaiResponsesInput = [];\n const inputWarnings: SharedV3Warning[] = [];\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 (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 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 { LanguageModelV3Usage } from '@ai-sdk/provider';\nimport { XaiResponsesUsage } from './xai-responses-api';\n\nexport function convertXaiResponsesUsage(\n usage: XaiResponsesUsage,\n): LanguageModelV3Usage {\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 { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiResponsesFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV3FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n case 'completed':\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\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\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});\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.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 | (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 * @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 LanguageModelV3CallOptions,\n SharedV3Warning,\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: LanguageModelV3CallOptions['tools'];\n toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n}): Promise<{\n tools: Array<XaiResponsesTool> | undefined;\n toolChoice: XaiResponsesToolChoice | undefined;\n toolWarnings: SharedV3Warning[];\n}> {\n const normalizedTools = tools?.length ? tools : undefined;\n\n const toolWarnings: SharedV3Warning[] = [];\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 createProviderToolFactoryWithOutputSchema,\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 = createProviderToolFactoryWithOutputSchema<\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 createProviderToolFactoryWithOutputSchema,\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 = createProviderToolFactoryWithOutputSchema<\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 createProviderToolFactoryWithOutputSchema,\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 = createProviderToolFactoryWithOutputSchema<\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 createProviderToolFactoryWithOutputSchema,\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 = createProviderToolFactoryWithOutputSchema<\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 { createProviderToolFactoryWithOutputSchema } 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 = createProviderToolFactoryWithOutputSchema({\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 { createProviderToolFactoryWithOutputSchema } 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 = createProviderToolFactoryWithOutputSchema({\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 { createProviderToolFactoryWithOutputSchema } 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 = createProviderToolFactoryWithOutputSchema({\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 AISDKError,\n type Experimental_VideoModelV3,\n type SharedV3Warning,\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 XaiVideoModelOptions,\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\nexport class XaiVideoModel implements Experimental_VideoModelV3 {\n readonly specificationVersion = 'v3';\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_VideoModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<Experimental_VideoModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const warnings: SharedV3Warning[] = [];\n\n const xaiOptions = (await parseProviderOptions({\n provider: 'xai',\n providerOptions: options.providerOptions,\n schema: xaiVideoModelOptionsSchema,\n })) as XaiVideoModelOptions | undefined;\n\n const isEdit = xaiOptions?.videoUrl != null;\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 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 const body: Record<string, unknown> = {\n model: this.modelId,\n prompt: options.prompt,\n };\n\n if (!isEdit && options.duration != null) {\n body.duration = options.duration;\n }\n\n if (!isEdit && options.aspectRatio != null) {\n body.aspect_ratio = options.aspectRatio;\n }\n\n if (!isEdit && xaiOptions?.resolution != null) {\n body.resolution = xaiOptions.resolution;\n } else if (!isEdit && 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 like image)\n if (xaiOptions?.videoUrl != null) {\n body.video = { url: xaiOptions.videoUrl };\n }\n\n // Image-to-video: convert SDK image to nested 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 if (xaiOptions != null) {\n for (const [key, value] of Object.entries(xaiOptions)) {\n if (\n ![\n 'pollIntervalMs',\n 'pollTimeoutMs',\n 'resolution',\n 'videoUrl',\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 // Step 1: Create video generation/edit request\n const { value: createResponse } = await postJsonToApi({\n url: `${baseURL}/videos/${isEdit ? 'edits' : 'generations'}`,\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?.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 },\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 // '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});\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type XaiVideoModelOptions = {\n pollIntervalMs?: number | null;\n pollTimeoutMs?: number | null;\n resolution?: '480p' | '720p' | null;\n videoUrl?: string | null;\n [key: string]: unknown;\n};\n\nexport const xaiVideoModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n pollIntervalMs: z.number().positive().nullish(),\n pollTimeoutMs: z.number().positive().nullish(),\n resolution: z.enum(['480p', '720p']).nullish(),\n videoUrl: z.string().nullish(),\n })\n .passthrough(),\n ),\n);\n"],"mappings":"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","names":["import_provider","import_provider_utils","import_provider","import_provider_utils","import_v4","import_provider_utils","import_v4","import_provider","xaiTools","xaiTools","_a","url","response","responseHeaders","import_provider_utils","import_v4","import_v4","import_provider_utils","import_provider","import_provider_utils","import_v4","import_v4","import_provider","import_provider_utils","import_provider_utils","import_v4","import_provider_utils","import_v4","import_provider_utils","import_v4","import_provider_utils","import_v4","xaiTools","xaiTools","_a","response","import_provider_utils","import_v4","import_provider_utils","import_v4","import_provider_utils","import_v4","import_provider","import_provider_utils","import_v4","import_provider_utils","import_v4"]}
|
|
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-language-model-options.ts","../src/xai-error.ts","../src/xai-prepare-tools.ts","../src/remove-additional-properties.ts","../src/xai-image-model.ts","../src/xai-image-model-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-language-model-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/realtime/xai-realtime-event-mapper.ts","../src/realtime/xai-realtime-model.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-model-options.ts","../src/xai-speech-model.ts","../src/xai-speech-model-options.ts","../src/xai-transcription-model.ts","../src/xai-transcription-model-options.ts"],"sourcesContent":["import {\n type Experimental_RealtimeFactoryV4 as RealtimeFactoryV4,\n type Experimental_RealtimeFactoryV4GetTokenOptions as RealtimeFactoryV4GetTokenOptions,\n type Experimental_VideoModelV4,\n type FilesV4,\n type ImageModelV4,\n type LanguageModelV4,\n NoSuchModelError,\n type ProviderV4,\n type SpeechModelV4,\n type TranscriptionModelV4,\n} from '@ai-sdk/provider';\nimport {\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatLanguageModel } from './xai-chat-language-model';\nimport type { XaiChatModelId } from './xai-chat-language-model-options';\nimport { XaiImageModel } from './xai-image-model';\nimport type { XaiImageModelId } from './xai-image-settings';\nimport { XaiResponsesLanguageModel } from './responses/xai-responses-language-model';\nimport type { XaiResponsesModelId } from './responses/xai-responses-language-model-options';\nimport { XaiRealtimeModel } from './realtime/xai-realtime-model';\nimport { xaiTools } from './tool';\nimport { VERSION } from './version';\nimport { XaiFiles } from './files/xai-files';\nimport { XaiVideoModel } from './xai-video-model';\nimport type { XaiVideoModelId } from './xai-video-settings';\nimport { XaiSpeechModel } from './xai-speech-model';\nimport { XaiTranscriptionModel } from './xai-transcription-model';\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 experimental_realtime: RealtimeFactoryV4;\n\n /**\n * Creates an xAI model for speech generation (text-to-speech).\n */\n speech(): SpeechModelV4;\n\n /**\n * Creates an xAI model for speech generation (text-to-speech).\n */\n speechModel(): SpeechModelV4;\n\n /**\n * Creates an xAI model for speech-to-text transcription.\n */\n transcription(): TranscriptionModelV4;\n\n /**\n * Creates an xAI model for speech-to-text transcription.\n */\n transcriptionModel(): TranscriptionModelV4;\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 createRealtimeModel = (modelId: string) => {\n return new XaiRealtimeModel(modelId, {\n provider: 'xai.realtime',\n baseURL: baseURL ?? 'https://api.x.ai/v1',\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const createSpeechModel = () => {\n return new XaiSpeechModel('', {\n provider: 'xai.speech',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const createTranscriptionModel = () => {\n return new XaiTranscriptionModel('', {\n provider: 'xai.transcription',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const experimentalRealtimeFactory = Object.assign(\n (modelId: string) => createRealtimeModel(modelId),\n {\n getToken: async (tokenOptions: RealtimeFactoryV4GetTokenOptions) => {\n const model = createRealtimeModel(tokenOptions.model);\n const secret = await model.doCreateClientSecret({\n sessionConfig: tokenOptions.sessionConfig,\n expiresAfterSeconds: tokenOptions.expiresAfterSeconds,\n });\n\n return {\n token: secret.token,\n url: secret.url,\n expiresAt: secret.expiresAt,\n };\n },\n },\n ) as RealtimeFactoryV4;\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.experimental_realtime = experimentalRealtimeFactory;\n provider.speechModel = createSpeechModel;\n provider.speech = createSpeechModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.transcription = createTranscriptionModel;\n provider.files = createFiles;\n provider.tools = xaiTools;\n\n return provider;\n}\n\nexport const xai = createXai();\n","import {\n APICallError,\n type LanguageModelV4,\n type LanguageModelV4CallOptions,\n type LanguageModelV4Content,\n type LanguageModelV4FinishReason,\n type LanguageModelV4GenerateResult,\n type LanguageModelV4StreamPart,\n type LanguageModelV4StreamResult,\n type LanguageModelV4Usage,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n extractResponseHeaders,\n isCustomReasoning,\n mapReasoningToProviderEffort,\n parseProviderOptions,\n postJsonToApi,\n safeParseJSON,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n type ParseResult,\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 xaiLanguageModelChatOptions,\n type XaiChatModelId,\n} from './xai-chat-language-model-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: 'medium',\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 UnsupportedFunctionalityError,\n type SharedV4Warning,\n type LanguageModelV4Prompt,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n getTopLevelMediaType,\n resolveFullMediaType,\n resolveProviderReference,\n} from '@ai-sdk/provider-utils';\nimport type { 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 switch (part.data.type) {\n case 'reference': {\n return {\n type: 'file',\n file: {\n file_id: resolveProviderReference({\n reference: part.data.reference,\n provider: 'xai',\n }),\n },\n };\n }\n case 'text': {\n throw new UnsupportedFunctionalityError({\n functionality: 'text file parts',\n });\n }\n case 'url':\n case 'data': {\n if (getTopLevelMediaType(part.mediaType) === 'image') {\n return {\n type: 'image_url',\n image_url: {\n url:\n part.data.type === 'url'\n ? part.data.url.toString()\n : `data:${resolveFullMediaType({ part })};base64,${convertToBase64(part.data.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 });\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 type { LanguageModelV4Usage } from '@ai-sdk/provider';\nimport type { 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 type { 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.20-non-reasoning'\n | 'grok-4.20-reasoning'\n | 'grok-4.3'\n | 'grok-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 /**\n * Constrains how hard a reasoning model thinks before responding.\n *\n * - `none`: Disables reasoning entirely (supported by `grok-4.3` and newer\n * reasoning models). When set, no thinking tokens are used.\n * - `low` (default): Uses some reasoning tokens, but still fast.\n * - `medium`: More thinking for less-latency-sensitive applications.\n * - `high`: Uses more reasoning tokens for deeper thinking.\n *\n * Note: Not every Grok model accepts every value. Refer to xAI's docs for\n * the values supported by your selected model.\n *\n * @see https://docs.x.ai/docs/guides/reasoning\n */\n reasoningEffort: z.enum(['none', 'low', 'medium', '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 /**\n * @deprecated xAI has deprecated Live Search (`search_parameters`) in favor\n * of the Agent Tools API. Requests using this option now return a \"Live\n * search is deprecated\" error. Use the `web_search` / `x_search` tools\n * instead (e.g. `xai.tools.webSearch()`, `xai.tools.xSearch()`) with\n * `xai.responses(modelId)`.\n *\n * @see https://docs.x.ai/docs/guides/tools/overview\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\nconst chatCompletionsErrorSchema = 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\nconst responsesErrorSchema = z.object({\n code: z.string(),\n error: z.string(),\n});\n\nexport const xaiErrorDataSchema = z.union([\n chatCompletionsErrorSchema,\n responsesErrorSchema,\n]);\n\nexport type XaiErrorData = z.infer<typeof xaiErrorDataSchema>;\n\nexport const xaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data =>\n 'code' in data ? `${data.code}: ${data.error}` : data.error.message,\n});\n","import {\n UnsupportedFunctionalityError,\n type LanguageModelV4CallOptions,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport { removeAdditionalPropertiesFalse } from './remove-additional-properties';\nimport type { 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: removeAdditionalPropertiesFalse(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","/**\n * Recursively removes `additionalProperties: false` entries from a JSON\n * schema.\n * Used to sanitize tool input schemas before sending them to the xAI API.\n * https://docs.x.ai/developers/model-capabilities/text/structured-outputs#supported-types\n */\nexport function removeAdditionalPropertiesFalse(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(removeAdditionalPropertiesFalse);\n }\n\n if (value == null || typeof value !== 'object') {\n return value;\n }\n\n const result: Record<string, unknown> = {};\n for (const [key, propertyValue] of Object.entries(value)) {\n if (key === 'additionalProperties' && propertyValue === false) {\n continue;\n }\n result[key] = removeAdditionalPropertiesFalse(propertyValue);\n }\n return result;\n}\n","import type { ImageModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n createStatusCodeErrorResponseHandler,\n getFromApi,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { xaiImageModelOptions } from './xai-image-model-options';\nimport type { 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 type {\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 isCustomReasoning,\n mapReasoningToProviderEffort,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n type ParseResult,\n} from '@ai-sdk/provider-utils';\nimport type { 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 xaiResponsesChunkSchema,\n xaiResponsesResponseSchema,\n type XaiResponsesIncludeOptions,\n} from './xai-responses-api';\nimport {\n xaiLanguageModelResponsesOptions,\n type XaiResponsesModelId,\n} from './xai-responses-language-model-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 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\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 UnsupportedFunctionalityError,\n type SharedV4Warning,\n type LanguageModelV4Message,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n getTopLevelMediaType,\n resolveFullMediaType,\n resolveProviderReference,\n} from '@ai-sdk/provider-utils';\nimport type {\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 switch (block.data.type) {\n case 'reference': {\n contentParts.push({\n type: 'input_file',\n file_id: resolveProviderReference({\n reference: block.data.reference,\n provider: 'xai',\n }),\n });\n break;\n }\n case 'text': {\n throw new UnsupportedFunctionalityError({\n functionality: 'text file parts',\n });\n }\n case 'url':\n case 'data': {\n if (getTopLevelMediaType(block.mediaType) === 'image') {\n const imageUrl =\n block.data.type === 'url'\n ? block.data.url.toString()\n : `data:${resolveFullMediaType({ part: block })};base64,${convertToBase64(block.data.data)}`;\n\n contentParts.push({\n type: 'input_image',\n image_url: imageUrl,\n });\n } else if (block.data.type === '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.url.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 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 type { LanguageModelV4Usage } from '@ai-sdk/provider';\nimport type { 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 type { 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_search?: boolean;\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.20-non-reasoning'\n | 'grok-4.20-reasoning'\n | 'grok-4.3'\n | 'grok-latest'\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 `none` (disables reasoning entirely; supported by\n * `grok-4.3` and newer reasoning models), `low` (uses fewer reasoning\n * tokens), `medium`, and `high` (uses more reasoning tokens).\n *\n * @see https://docs.x.ai/docs/guides/reasoning\n */\n reasoningEffort: z.enum(['none', '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 UnsupportedFunctionalityError,\n type LanguageModelV4CallOptions,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport { validateTypes } from '@ai-sdk/provider-utils';\nimport { removeAdditionalPropertiesFalse } from '../remove-additional-properties';\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 type { 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_search: args.enableImageSearch,\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: removeAdditionalPropertiesFalse(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 enableImageSearch: z.boolean().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 enableImageSearch?: boolean;\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 type {\n Experimental_RealtimeModelV4ClientEvent as RealtimeModelV4ClientEvent,\n Experimental_RealtimeModelV4ServerEvent as RealtimeModelV4ServerEvent,\n Experimental_RealtimeModelV4SessionConfig as RealtimeModelV4SessionConfig,\n} from '@ai-sdk/provider';\n\ntype XaiRealtimeWireEvent = {\n type: string;\n session?: { id?: string };\n item?: { id?: string } & Record<string, unknown>;\n response?: { id?: string; status?: string };\n error?: { message?: string; code?: string };\n item_id: string;\n previous_item_id?: string;\n response_id: string;\n transcript?: string;\n delta: string;\n text?: string;\n call_id: string;\n name: string;\n arguments: string;\n message?: string;\n code?: string;\n};\n\nexport function parseXaiRealtimeServerEvent(\n raw: unknown,\n): RealtimeModelV4ServerEvent {\n const event = raw as XaiRealtimeWireEvent;\n const type = event.type;\n\n switch (type) {\n case 'session.created':\n return {\n type: 'session-created',\n sessionId: event.session?.id,\n raw,\n };\n\n case 'session.updated':\n return { type: 'session-updated', raw };\n\n case 'conversation.created':\n return { type: 'custom', rawType: type, raw };\n\n case 'input_audio_buffer.speech_started':\n return {\n type: 'speech-started',\n itemId: event.item_id,\n raw,\n };\n\n case 'input_audio_buffer.speech_stopped':\n return {\n type: 'speech-stopped',\n itemId: event.item_id,\n raw,\n };\n\n case 'input_audio_buffer.committed':\n return {\n type: 'audio-committed',\n itemId: event.item_id,\n previousItemId: event.previous_item_id,\n raw,\n };\n\n case 'conversation.item.added':\n return {\n type: 'conversation-item-added',\n itemId: event.item?.id ?? event.item_id,\n item: event.item,\n raw,\n };\n\n case 'conversation.item.input_audio_transcription.completed':\n return {\n type: 'input-transcription-completed',\n itemId: event.item_id,\n transcript: event.transcript ?? '',\n raw,\n };\n\n case 'response.created':\n return {\n type: 'response-created',\n responseId: event.response?.id ?? event.response_id,\n raw,\n };\n\n case 'response.done':\n return {\n type: 'response-done',\n responseId: event.response?.id ?? event.response_id,\n status: event.response?.status ?? 'completed',\n raw,\n };\n\n case 'response.output_item.added':\n return {\n type: 'output-item-added',\n responseId: event.response_id,\n itemId: event.item?.id ?? event.item_id,\n raw,\n };\n\n case 'response.output_item.done':\n return {\n type: 'output-item-done',\n responseId: event.response_id,\n itemId: event.item?.id ?? event.item_id,\n raw,\n };\n\n case 'response.content_part.added':\n return {\n type: 'content-part-added',\n responseId: event.response_id,\n itemId: event.item_id,\n raw,\n };\n\n case 'response.content_part.done':\n return {\n type: 'content-part-done',\n responseId: event.response_id,\n itemId: event.item_id,\n raw,\n };\n\n case 'response.output_audio.delta':\n return {\n type: 'audio-delta',\n responseId: event.response_id,\n itemId: event.item_id,\n delta: event.delta,\n raw,\n };\n\n case 'response.output_audio.done':\n return {\n type: 'audio-done',\n responseId: event.response_id,\n itemId: event.item_id,\n raw,\n };\n\n case 'response.output_audio_transcript.delta':\n return {\n type: 'audio-transcript-delta',\n responseId: event.response_id,\n itemId: event.item_id,\n delta: event.delta,\n raw,\n };\n\n case 'response.output_audio_transcript.done':\n return {\n type: 'audio-transcript-done',\n responseId: event.response_id,\n itemId: event.item_id,\n transcript: event.transcript,\n raw,\n };\n\n case 'response.text.delta':\n return {\n type: 'text-delta',\n responseId: event.response_id,\n itemId: event.item_id,\n delta: event.delta,\n raw,\n };\n\n case 'response.text.done':\n return {\n type: 'text-done',\n responseId: event.response_id,\n itemId: event.item_id,\n text: event.text,\n raw,\n };\n\n case 'response.function_call_arguments.delta':\n return {\n type: 'function-call-arguments-delta',\n responseId: event.response_id,\n itemId: event.item_id,\n callId: event.call_id,\n delta: event.delta,\n raw,\n };\n\n case 'response.function_call_arguments.done':\n return {\n type: 'function-call-arguments-done',\n responseId: event.response_id,\n itemId: event.item_id,\n callId: event.call_id,\n name: event.name,\n arguments: event.arguments,\n raw,\n };\n\n case 'mcp_list_tools.in_progress':\n case 'mcp_list_tools.completed':\n case 'mcp_list_tools.failed':\n case 'response.mcp_call_arguments.delta':\n case 'response.mcp_call_arguments.done':\n case 'response.mcp_call.in_progress':\n case 'response.mcp_call.completed':\n case 'response.mcp_call.failed':\n return { type: 'custom', rawType: type, raw };\n\n case 'error':\n return {\n type: 'error',\n message: event.error?.message ?? event.message ?? 'Unknown error',\n code: event.error?.code ?? event.code,\n raw,\n };\n\n default:\n return { type: 'custom', rawType: type, raw };\n }\n}\n\nexport function serializeXaiRealtimeClientEvent(\n event: RealtimeModelV4ClientEvent,\n): unknown {\n switch (event.type) {\n case 'session-update':\n return {\n type: 'session.update',\n session: buildXaiSessionConfig(event.config),\n };\n\n case 'input-audio-append':\n return {\n type: 'input_audio_buffer.append',\n audio: event.audio,\n };\n\n case 'input-audio-commit':\n return { type: 'input_audio_buffer.commit' };\n\n case 'input-audio-clear':\n return { type: 'input_audio_buffer.clear' };\n\n case 'conversation-item-create': {\n const item = event.item;\n switch (item.type) {\n case 'text-message':\n return {\n type: 'conversation.item.create',\n item: {\n type: 'message',\n role: item.role,\n content: [{ type: 'input_text', text: item.text }],\n },\n };\n case 'audio-message':\n return {\n type: 'conversation.item.create',\n item: {\n type: 'message',\n role: item.role,\n content: [{ type: 'input_audio', audio: item.audio }],\n },\n };\n case 'function-call-output':\n return {\n type: 'conversation.item.create',\n item: {\n type: 'function_call_output',\n call_id: item.callId,\n output: item.output,\n },\n };\n }\n break;\n }\n\n case 'conversation-item-truncate':\n // xAI does not support `conversation.item.truncate` over WebSocket (it is\n // silently ignored by the server). Barge-in still works because the SDK\n // stops local playback when `speech_started` fires, so dropping the event\n // here just avoids sending a no-op.\n return undefined;\n\n case 'response-create':\n return {\n type: 'response.create',\n ...(event.options != null\n ? {\n response: {\n ...(event.options.modalities != null\n ? { modalities: event.options.modalities }\n : {}),\n ...(event.options.instructions != null\n ? { instructions: event.options.instructions }\n : {}),\n },\n }\n : {}),\n };\n\n case 'response-cancel':\n return { type: 'response.cancel' };\n }\n}\n\nexport function buildXaiSessionConfig(\n config: RealtimeModelV4SessionConfig,\n): Record<string, unknown> {\n const session: Record<string, unknown> = {};\n\n if (config.instructions != null) {\n session.instructions = config.instructions;\n }\n\n if (config.voice != null) {\n session.voice = config.voice;\n }\n\n const audio: Record<string, unknown> = {};\n\n if (config.inputAudioFormat != null) {\n audio.input = {\n format: {\n type: config.inputAudioFormat.type,\n ...(config.inputAudioFormat.rate != null\n ? { rate: config.inputAudioFormat.rate }\n : {}),\n },\n };\n }\n\n if (config.outputAudioFormat != null) {\n audio.output = {\n format: {\n type: config.outputAudioFormat.type,\n ...(config.outputAudioFormat.rate != null\n ? { rate: config.outputAudioFormat.rate }\n : {}),\n },\n };\n }\n\n if (Object.keys(audio).length > 0) {\n session.audio = audio;\n }\n\n if (config.turnDetection != null) {\n if (config.turnDetection.type === 'disabled') {\n session.turn_detection = null;\n } else {\n const td: Record<string, unknown> = {\n type: 'server_vad',\n };\n if (config.turnDetection.threshold != null) {\n td.threshold = config.turnDetection.threshold;\n }\n if (config.turnDetection.silenceDurationMs != null) {\n td.silence_duration_ms = config.turnDetection.silenceDurationMs;\n }\n if (config.turnDetection.prefixPaddingMs != null) {\n td.prefix_padding_ms = config.turnDetection.prefixPaddingMs;\n }\n session.turn_detection = td;\n }\n }\n\n if (config.tools != null && config.tools.length > 0) {\n session.tools = config.tools.map(tool => ({\n type: tool.type,\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n }));\n }\n\n if (config.providerOptions != null) {\n const xaiOptions = config.providerOptions as Record<string, unknown>;\n\n if (Array.isArray(xaiOptions.tools)) {\n const existingTools = (session.tools as unknown[]) ?? [];\n session.tools = [...existingTools, ...xaiOptions.tools];\n }\n\n for (const [key, value] of Object.entries(xaiOptions)) {\n if (key !== 'tools') {\n session[key] = value;\n }\n }\n }\n\n return session;\n}\n","import type {\n Experimental_RealtimeModelV4 as RealtimeModelV4,\n Experimental_RealtimeModelV4ClientEvent as RealtimeModelV4ClientEvent,\n Experimental_RealtimeModelV4ClientSecretOptions as RealtimeModelV4ClientSecretOptions,\n Experimental_RealtimeModelV4ClientSecretResult as RealtimeModelV4ClientSecretResult,\n Experimental_RealtimeModelV4ServerEvent as RealtimeModelV4ServerEvent,\n Experimental_RealtimeModelV4SessionConfig as RealtimeModelV4SessionConfig,\n} from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport {\n buildXaiSessionConfig,\n parseXaiRealtimeServerEvent,\n serializeXaiRealtimeClientEvent,\n} from './xai-realtime-event-mapper';\n\nexport type XaiRealtimeModelConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class XaiRealtimeModel implements RealtimeModelV4 {\n readonly specificationVersion = 'v4' as const;\n readonly provider: string;\n readonly modelId: string;\n\n private readonly config: XaiRealtimeModelConfig;\n\n constructor(modelId: string, config: XaiRealtimeModelConfig) {\n this.modelId = modelId;\n this.provider = config.provider;\n this.config = config;\n }\n\n async doCreateClientSecret(\n options: RealtimeModelV4ClientSecretOptions,\n ): Promise<RealtimeModelV4ClientSecretResult> {\n const fetchFn = this.config.fetch ?? fetch;\n const url = `${this.config.baseURL}/realtime/client_secrets`;\n\n const body: Record<string, unknown> = {};\n if (options.expiresAfterSeconds != null) {\n body.expires_after = { seconds: options.expiresAfterSeconds };\n }\n\n const response = await fetchFn(url, {\n method: 'POST',\n headers: {\n ...this.config.headers(),\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(\n `xAI realtime client secret request failed: ${response.status} ${text}`,\n );\n }\n\n const data = (await response.json()) as {\n value: string;\n expires_at?: number;\n };\n\n return {\n token: data.value,\n // xAI selects the voice model from the `model` query parameter on the\n // WebSocket URL. Without it the model choice is silently ignored and the\n // server falls back to its default voice model.\n url: `wss://${new URL(this.config.baseURL).host}/v1/realtime?model=${encodeURIComponent(this.modelId)}`,\n expiresAt: data.expires_at,\n };\n }\n\n getWebSocketConfig(options: { token: string; url: string }): {\n url: string;\n protocols?: string[];\n } {\n return {\n url: options.url,\n protocols: [`xai-client-secret.${options.token}`],\n };\n }\n\n parseServerEvent(raw: unknown): RealtimeModelV4ServerEvent {\n return parseXaiRealtimeServerEvent(raw);\n }\n\n serializeClientEvent(event: RealtimeModelV4ClientEvent): unknown {\n return serializeXaiRealtimeClientEvent(event);\n }\n\n buildSessionConfig(\n config: RealtimeModelV4SessionConfig,\n ): Record<string, unknown> {\n return buildXaiSessionConfig(config);\n }\n}\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 type {\n FilesV4,\n FilesV4UploadFileCallOptions,\n FilesV4UploadFileResult,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertInlineFileDataToUint8Array,\n createJsonResponseHandler,\n parseProviderOptions,\n postFormDataToApi,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { xaiFailedResponseHandler } from '../xai-error';\nimport { xaiFilesResponseSchema } from './xai-files-api';\nimport {\n xaiFilesOptionsSchema,\n type XaiFilesOptions,\n} from './xai-files-options';\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 = convertInlineFileDataToUint8Array(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 {\n lazySchema,\n zodSchema,\n type InferSchema,\n} 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 getFromApi,\n parseProviderOptions,\n postJsonToApi,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport {\n xaiVideoModelOptionsSchema,\n type XaiParsedVideoModelOptions,\n} from './xai-video-model-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","import type { SharedV4Warning, SpeechModelV4 } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n serializeModelOptions,\n WORKFLOW_DESERIALIZE,\n WORKFLOW_SERIALIZE,\n type FetchFunction,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { xaiSpeechModelOptionsSchema } from './xai-speech-model-options';\n\ninterface XaiSpeechModelConfig {\n provider: string;\n baseURL: string | undefined;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\ntype XaiSpeechCodec = 'mp3' | 'wav' | 'pcm' | 'mulaw' | 'alaw';\n\nexport class XaiSpeechModel implements SpeechModelV4 {\n readonly specificationVersion = 'v4';\n\n static [WORKFLOW_SERIALIZE](model: XaiSpeechModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: '';\n config: XaiSpeechModelConfig;\n }) {\n return new XaiSpeechModel(options.modelId, options.config);\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: '',\n private readonly config: XaiSpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice = 'eve',\n outputFormat = 'mp3',\n instructions,\n speed,\n language = 'auto',\n providerOptions,\n }: Parameters<SpeechModelV4['doGenerate']>[0]) {\n const warnings: SharedV4Warning[] = [];\n const xaiOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiSpeechModelOptionsSchema,\n });\n\n let codec: XaiSpeechCodec = 'mp3';\n if (['mp3', 'wav', 'pcm', 'mulaw', 'alaw'].includes(outputFormat)) {\n codec = outputFormat as XaiSpeechCodec;\n } else {\n warnings.push({\n type: 'unsupported',\n feature: 'outputFormat',\n details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`,\n });\n }\n\n if (instructions != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'instructions',\n details:\n 'xAI speech models do not support the `instructions` option. ' +\n 'Use xAI speech tags in `text` to control delivery.',\n });\n }\n\n const output_format: {\n codec: XaiSpeechCodec;\n sample_rate?: number;\n bit_rate?: number;\n } = {\n codec,\n };\n\n if (xaiOptions?.sampleRate != null) {\n output_format.sample_rate = xaiOptions.sampleRate;\n }\n\n if (xaiOptions?.bitRate != null) {\n if (codec === 'mp3') {\n output_format.bit_rate = xaiOptions.bitRate;\n } else {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details:\n 'xAI `bitRate` is supported only for mp3 output. It was ignored.',\n });\n }\n }\n\n const requestBody = {\n text,\n voice_id: voice,\n language,\n output_format,\n speed,\n optimize_streaming_latency: xaiOptions?.optimizeStreamingLatency,\n text_normalization: xaiOptions?.textNormalization,\n };\n\n return { requestBody, warnings };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV4['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, warnings } = await this.getArgs(options);\n\n const {\n value: audio,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/tts`,\n headers: combineHeaders(\n this.config.headers ? await resolve(this.config.headers) : undefined,\n options.headers,\n ),\n body: requestBody,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","import {\n lazySchema,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xaiSpeechModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n /**\n * Sample rate of the generated audio in Hz.\n */\n sampleRate: z\n .union([\n z.literal(8000),\n z.literal(16000),\n z.literal(22050),\n z.literal(24000),\n z.literal(44100),\n z.literal(48000),\n ])\n .nullish(),\n\n /**\n * MP3 bit rate in bits per second. Only applies when outputFormat is mp3.\n */\n bitRate: z\n .union([\n z.literal(32000),\n z.literal(64000),\n z.literal(96000),\n z.literal(128000),\n z.literal(192000),\n ])\n .nullish(),\n\n /**\n * Reduce time to first audio chunk, trading some quality for latency.\n */\n optimizeStreamingLatency: z\n .union([z.literal(0), z.literal(1), z.literal(2)])\n .nullish(),\n\n /**\n * Normalize written-form text into spoken-form text before synthesis.\n */\n textNormalization: z.boolean().nullish(),\n }),\n ),\n);\n\nexport type XaiSpeechModelOptions = InferSchema<\n typeof xaiSpeechModelOptionsSchema\n>;\n","import type { SharedV4Warning, TranscriptionModelV4 } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n mediaTypeToExtension,\n parseProviderOptions,\n postFormDataToApi,\n serializeModelOptions,\n WORKFLOW_DESERIALIZE,\n WORKFLOW_SERIALIZE,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { xaiTranscriptionModelOptionsSchema } from './xai-transcription-model-options';\n\ninterface XaiTranscriptionModelConfig {\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 XaiTranscriptionModel implements TranscriptionModelV4 {\n readonly specificationVersion = 'v4';\n\n static [WORKFLOW_SERIALIZE](model: XaiTranscriptionModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: '';\n config: XaiTranscriptionModelConfig;\n }) {\n return new XaiTranscriptionModel(options.modelId, options.config);\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: '',\n private readonly config: XaiTranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n audio,\n mediaType,\n providerOptions,\n }: Parameters<TranscriptionModelV4['doGenerate']>[0]) {\n const warnings: SharedV4Warning[] = [];\n const xaiOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiTranscriptionModelOptionsSchema,\n });\n\n const formData = new FormData();\n const transcriptionOptions = {\n audio_format: xaiOptions?.audioFormat,\n sample_rate: xaiOptions?.sampleRate,\n language: xaiOptions?.language,\n format: xaiOptions?.format,\n multichannel: xaiOptions?.multichannel,\n channels: xaiOptions?.channels,\n diarize: xaiOptions?.diarize,\n filler_words: xaiOptions?.fillerWords,\n };\n\n for (const [key, value] of Object.entries(transcriptionOptions)) {\n if (value != null) {\n formData.append(key, String(value));\n }\n }\n\n if (xaiOptions?.keyterm != null) {\n const keyterms = Array.isArray(xaiOptions.keyterm)\n ? xaiOptions.keyterm\n : [xaiOptions.keyterm];\n\n for (const keyterm of keyterms) {\n formData.append('keyterm', keyterm);\n }\n }\n\n const blob =\n audio instanceof Uint8Array\n ? new Blob([audio])\n : new Blob([convertBase64ToUint8Array(audio)]);\n const fileExtension = mediaTypeToExtension(mediaType);\n\n // xAI requires `file` to be the final multipart field.\n formData.append(\n 'file',\n new File([blob], 'audio', { type: mediaType }),\n `audio.${fileExtension}`,\n );\n\n return { formData, warnings };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV4['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postFormDataToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/stt`,\n headers: combineHeaders(this.config.headers?.(), options.headers),\n formData,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n text: response.text,\n segments:\n response.words?.map(word => ({\n text: word.text,\n startSecond: word.start,\n endSecond: word.end,\n })) ?? [],\n language: response.language || undefined,\n durationInSeconds: response.duration ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\nconst xaiTranscriptionResponseSchema = z.object({\n text: z.string(),\n language: z.string().nullish(),\n duration: z.number().nullish(),\n words: z\n .array(\n z.object({\n text: z.string(),\n start: z.number(),\n end: z.number(),\n }),\n )\n .nullish(),\n});\n","import {\n lazySchema,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xaiTranscriptionModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n /**\n * Audio encoding for raw, headerless input audio.\n */\n audioFormat: z.enum(['pcm', 'mulaw', 'alaw']).nullish(),\n\n /**\n * Sample rate of the input audio in Hz.\n */\n sampleRate: z\n .union([\n z.literal(8000),\n z.literal(16000),\n z.literal(22050),\n z.literal(24000),\n z.literal(44100),\n z.literal(48000),\n ])\n .nullish(),\n\n /**\n * Language code used for inverse text normalization.\n */\n language: z.string().nullish(),\n\n /**\n * Enable inverse text normalization. Requires `language`.\n */\n format: z.boolean().nullish(),\n\n /**\n * Enable per-channel transcription for multichannel audio.\n */\n multichannel: z.boolean().nullish(),\n\n /**\n * Number of interleaved audio channels.\n */\n channels: z.number().int().min(2).max(8).nullish(),\n\n /**\n * Enable speaker diarization.\n */\n diarize: z.boolean().nullish(),\n\n /**\n * Terms to bias transcription toward.\n */\n keyterm: z.union([z.string(), z.array(z.string())]).nullish(),\n\n /**\n * Include filler words such as \"uh\" and \"um\" in the transcript.\n */\n fillerWords: z.boolean().nullish(),\n }),\n ),\n);\n\nexport type XaiTranscriptionModelOptions = InferSchema<\n typeof xaiTranscriptionModelOptionsSchema\n>;\n"],"mappings":"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","names":["z","z","UnsupportedFunctionalityError","xaiTools","UnsupportedFunctionalityError","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","getTopLevelMediaType","resolveFullMediaType","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","combineHeaders","createBinaryResponseHandler","parseProviderOptions","postJsonToApi","serializeModelOptions","WORKFLOW_DESERIALIZE","WORKFLOW_SERIALIZE","lazySchema","zodSchema","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","postJsonToApi","combineHeaders","createBinaryResponseHandler","combineHeaders","createJsonResponseHandler","parseProviderOptions","postFormDataToApi","serializeModelOptions","WORKFLOW_DESERIALIZE","WORKFLOW_SERIALIZE","z","lazySchema","zodSchema","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","postFormDataToApi","combineHeaders","createJsonResponseHandler","z"]}
|