From b4ac939537f57157ca7f99e36a6198de4701f9d4 Mon Sep 17 00:00:00 2001 From: Shoubhit Dash Date: Wed, 29 Jul 2026 18:19:44 +0530 Subject: [PATCH] feat(ai): type xAI request options (#39505) --- packages/ai/src/providers/xai.ts | 8 +++++--- packages/ai/test/provider-options/xai.types.ts | 13 +++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 packages/ai/test/provider-options/xai.types.ts diff --git a/packages/ai/src/providers/xai.ts b/packages/ai/src/providers/xai.ts index c5d3220ee7..37aae83a52 100644 --- a/packages/ai/src/providers/xai.ts +++ b/packages/ai/src/providers/xai.ts @@ -5,12 +5,14 @@ import * as OpenAICompatibleProfiles from "./openai-compatible-profile" import * as OpenAICompatibleChat from "../protocols/openai-compatible-chat" import * as OpenAIResponses from "../protocols/openai-responses" import { XAIImages } from "../protocols/xai-images" +import type { OpenAIProviderOptionsInput } from "./openai-options" export const id = ProviderID.make("xai") -export type ModelOptions = RouteDefaultsInput & +export type ModelOptions = Omit & ProviderAuthOption<"optional"> & { readonly baseURL?: string + readonly providerOptions?: OpenAIProviderOptionsInput } export type { XAIImageOptions } from "../protocols/xai-images" @@ -42,8 +44,8 @@ const configuredChatRoute = (input: ModelOptions) => { export const configure = (input: ModelOptions = {}) => { const responsesRoute = configuredResponsesRoute(input) const chatRoute = configuredChatRoute(input) - const responses = (modelID: string | ModelID) => responsesRoute.model({ id: modelID }) - const chat = (modelID: string | ModelID) => chatRoute.model({ id: modelID }) + const responses = (modelID: string | ModelID) => responsesRoute.model({ id: modelID }) + const chat = (modelID: string | ModelID) => chatRoute.model({ id: modelID }) const image = (modelID: string | ModelID) => XAIImages.model({ id: modelID, diff --git a/packages/ai/test/provider-options/xai.types.ts b/packages/ai/test/provider-options/xai.types.ts new file mode 100644 index 0000000000..619f543083 --- /dev/null +++ b/packages/ai/test/provider-options/xai.types.ts @@ -0,0 +1,13 @@ +import { LLM } from "../../src" +import { XAI } from "../../src/providers" + +const model = XAI.provider.model("grok-4") + +LLM.request({ model, prompt: "Hello", providerOptions: { openai: { reasoningEffort: "high" } } }) + +LLM.request({ + model, + prompt: "Hello", + // @ts-expect-error xAI's OpenAI-compatible reasoning effort must be a string. + providerOptions: { openai: { reasoningEffort: true } }, +})