@langchain/xai 1.4.17 → 1.5.0

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.
Files changed (50) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/chat_models/completions.cjs +1 -1
  3. package/dist/chat_models/completions.cjs.map +1 -1
  4. package/dist/chat_models/completions.d.cts +9 -10
  5. package/dist/chat_models/completions.d.cts.map +1 -1
  6. package/dist/chat_models/completions.d.ts +9 -10
  7. package/dist/chat_models/completions.d.ts.map +1 -1
  8. package/dist/chat_models/completions.js +1 -1
  9. package/dist/chat_models/completions.js.map +1 -1
  10. package/dist/chat_models/responses-types.d.cts +94 -95
  11. package/dist/chat_models/responses-types.d.cts.map +1 -1
  12. package/dist/chat_models/responses-types.d.ts +94 -95
  13. package/dist/chat_models/responses-types.d.ts.map +1 -1
  14. package/dist/chat_models/responses.cjs +1 -1
  15. package/dist/chat_models/responses.cjs.map +1 -1
  16. package/dist/chat_models/responses.d.cts +2 -2
  17. package/dist/chat_models/responses.d.cts.map +1 -1
  18. package/dist/chat_models/responses.d.ts +2 -2
  19. package/dist/chat_models/responses.d.ts.map +1 -1
  20. package/dist/chat_models/responses.js +1 -1
  21. package/dist/chat_models/responses.js.map +1 -1
  22. package/dist/live_search.d.cts +7 -8
  23. package/dist/live_search.d.cts.map +1 -1
  24. package/dist/live_search.d.ts +7 -8
  25. package/dist/live_search.d.ts.map +1 -1
  26. package/dist/tools/code_execution.d.cts +3 -4
  27. package/dist/tools/code_execution.d.cts.map +1 -1
  28. package/dist/tools/code_execution.d.ts +3 -4
  29. package/dist/tools/code_execution.d.ts.map +1 -1
  30. package/dist/tools/collections_search.d.cts +4 -5
  31. package/dist/tools/collections_search.d.cts.map +1 -1
  32. package/dist/tools/collections_search.d.ts +4 -5
  33. package/dist/tools/collections_search.d.ts.map +1 -1
  34. package/dist/tools/index.d.cts +1 -2
  35. package/dist/tools/index.d.cts.map +1 -1
  36. package/dist/tools/index.d.ts +1 -2
  37. package/dist/tools/index.d.ts.map +1 -1
  38. package/dist/tools/live_search.d.cts +10 -11
  39. package/dist/tools/live_search.d.cts.map +1 -1
  40. package/dist/tools/live_search.d.ts +10 -11
  41. package/dist/tools/live_search.d.ts.map +1 -1
  42. package/dist/tools/web_search.d.cts +4 -5
  43. package/dist/tools/web_search.d.cts.map +1 -1
  44. package/dist/tools/web_search.d.ts +4 -5
  45. package/dist/tools/web_search.d.ts.map +1 -1
  46. package/dist/tools/x_search.d.cts +4 -5
  47. package/dist/tools/x_search.d.cts.map +1 -1
  48. package/dist/tools/x_search.d.ts +4 -5
  49. package/dist/tools/x_search.d.ts.map +1 -1
  50. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"responses-types.d.ts","names":[],"sources":["../../src/chat_models/responses-types.ts"],"mappings":"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"}
1
+ {"version":3,"file":"responses-types.d.ts","names":[],"sources":["../../src/chat_models/responses-types.ts"],"mappings":";;;;;iBAOiB;EACf;;EAEA;;;;;;iBAOe;EACf;;EAEA;;EAEA;;;;;iBAMe;EACf;;EAEA;;;;;YAMU,+BACR,4BACA,6BACA;;;;iBASa;EACf;;EAEA;;EAEA;;EAEA;;EAEA;;;;;iBAMe;EACf;;EAEA;;EAEA;;;;;iBAMe;EACf;;EAEA;;EAEA;;EAEA;;;;;iBAMe;EACf;;EAEA;;EAEA;;EAEA;;;;;YAMU,uBACR,+BACA,gCACA,sCACA;;;;iBAKa;;EAEf;;EAEA;;EAEA;;;;;iBAMe;;EAEf;;EAEA;;EAEA;;EAEA,eAAe;;;;;iBAMA;;EAEf,UAAU;;;;;;iBAOK;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA,aAAa;;EAEb,WAAW;;;;;iBAMI;EACf;;EAEA;;EAEA;;;;;YAMU,yBAAyB;;;;YASzB;;;;iBASK;;EAEf,MAAM;;EAEN,kBAAkB;;EAElB;;;;;;YAOU,wBACR,sBACA,+BACA;;;;;YAMQ,6BAA6B;;;;YAS7B;;;;YAKA;;;;iBAKK;;EAEf,SAAS;;EAET,UAAU;;;;;iBAUK;EACf;;EAEA;;EAEA;;EAEA;;EAEA;;;;;iBAMe;EACf;;EAEA;;EAEA;;EAEA;;EAEA;;;;;iBAMe;EACf;;EAEA;;;;;YAMU,2BACR,4BACA,8BACA;;;;YAKQ;;;;;iBAMK;;EAEf;;EAEA;;EAEA;;EAEA,OAAO;;EAEP;;EAEA,UAAU;;;;;iBAUK;EACf;;;;;iBAMe;EACf;;;;;iBAMe;EACf;;EAEA,QAAQ;;EAER;;;;;YAMU,yBACR,6BACA,mCACA;;;;iBAKa;;EAEf,SAAS;;;;;iBAUM;;EAEf;;EAEA;;EAEA,YAAY;;;;;iBAMG;EACf;;EAEA,UAAU;;;;;;iBAOK;EACf;;EAEA;;EAEA;;EAEA;;;;;iBAMe;EACf;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;;;;iBAMe;EACf;;EAEA;;;;;iBAMe;EACf;;;;;iBAMe;EACf;;EAEA;;EAEA;;;;;YAMU,mBACR,2BACA,4BACA,0BACA,6BACA,kCACA;;;;YASQ;;;;iBAKK;EACf;EACA;;IAEE;;;;;;YAOQ,yBACR,+BACA;;;;YASQ;;;;iBASK;;;;;EAKf,OAAO;;;;EAKP;;;;;;EAOA;;;;;EAMA,UAAU;;;;;EAMV;;;;;EAMA;;;;;EAMA;;;;;EAMA,WAAW;;;;;EAMX;;;;;EAMA;;;;;EAMA,YAAY;;;;;EAMZ,oBAAoB;;;;;EAMpB;;;;;EAMA;;;;;EAMA;;;;;;EAOA;;;;EAKA,OAAO;;;;EAKP,cAAc;;;;;EAMd,QAAQ;;;;;EAMR;;;;;;EAOA;;;;;EAMA;;;;;EAMA;;;;;iBAMe,0CAA0C;EACzD;;;;;iBAMe,6CAA6C;EAC5D;;;;;YAUU;;;;YAKA;;;;iBASK;EACf;;EAEA;;EAEA,SAAS;;EAET;;EAEA,SAAS;;;;;iBAMM;EACf;;EAEA;;EAEA,cAAc;;;;;iBAMC;EACf;;EAEA;;;;;YAMU,4BACR,gCACA;;;;iBAKa;EACf;;EAEA;;EAEA;;EAEA;;EAEA;;;;;iBAMe;EACf;;EAEA;;EAEA;;EAEA;;EAEA;;;;;YAMU,yBACR,oCACA;;;;iBAKa;EACf;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA,SAAS;;;;;iBAMM;EACf;;EAEA;;EAEA;;;;;iBAMe;EACf;;EAEA;;EAEA;;EAEA;;EAEA,UAAU;;;;;iBAMK;;EAEf;;EAEA;;EAEA;;EAEA;;;;;iBAMe;EACf;;EAEA;;EAEA;;EAEA;;EAEA,UAAU;;;;;iBAMK;EACf;;EAEA;;EAEA;;IAEE;;IAEA;;;;;;iBAOa;EACf;;EAEA;;EAEA;;EAEA;;EAEA;;;;;iBAMe;EACf;;EAEA;;EAEA,UAAU;;EAEV;;;;;iBAMe;EACf;;EAEA;;;;;YAMU,yBACR,6BACA,iCACA,kCACA,mCACA,wCACA,4BACA;;;;iBASa;;EAEf;;EAEA;;EAEA;;EAEA;;IAEE;;;EAGF;;IAEE;;;;;;YAWQ;;;;iBASK;;EAEf,SAAS;;;;;iBAUM;;EAEf,aAAa;;GAEZ;;;;;iBAUc;;EAEf,SAAS;;EAET,UAAU;;;;;iBAUK;;;;EAIf;;;;EAKA,QAAQ;;;;EAKR;;;;EAKA;;;;EAKA,QAAQ;;;;EAKR,QAAQ;;;;EAKR;;;;;EAMA;;;;EAKA,OAAO;;;;EAKP,cAAc;;;;;EAMd,QAAQ;;;;;;EAOR;;;;EAKA,eAAe;;;;EAKf,qBAAqB;;;;;EAMrB;;;;EAKA,WAAW;;;;EAKX;;;;EAKA,YAAY;;;;;EAMZ;;;;;EAMA;;;;EAKA,QAAQ;;;;;EAMR;;;;;iBAUe;;EAEf;;;;;iBAMe,uCAAuC;EACtD;;EAEA,UAAU;;;;;iBAMK,0CAA0C;EACzD;;EAEA,UAAU;;;;;iBAMK,yCAAyC;EACxD;;EAEA,UAAU;;;;;iBAMK,sCAAsC;EACrD;;EAEA,UAAU;;EAEV;;IAEE;;IAEA;;;;;;iBAOa,0CAA0C;EACzD;;EAEA,UAAU;;;;;iBAMK,+CAA+C;EAC9D;;EAEA;;EAEA,MAAM;;;;;iBAMS,8CAA8C;EAC7D;;EAEA;;EAEA,MAAM;;;;;iBAMS,gDAAgD;EAC/D;;EAEA;;EAEA;;EAEA,MAAM;;;;;iBAMS,+CAA+C;EAC9D;;EAEA;;EAEA;;EAEA,MAAM;;;;;iBAMS,yCAAyC;EACxD;;EAEA;;EAEA;;EAEA;;;;;iBAMe,wCAAwC;EACvD;;EAEA;;EAEA;;EAEA;;;;;iBAMe,0DAA0D;EACzE;;EAEA;;EAEA;;EAEA;;;;;iBAMe,yDAAyD;EACxE;;EAEA;;EAEA;;EAEA;;;;;iBAMe,yDAAyD;EACxE;;EAEA;;EAEA;;EAEA;;;;;iBAMe,wDAAwD;EACvE;;EAEA;;EAEA;;EAEA;;;;;iBAMe,qCAAqC;EACpD;;EAEA;;EAEA;;EAEA;;;;;YAMU,0BACR,iCACA,oCACA,mCACA,gCACA,oCACA,yCACA,wCACA,0CACA,yCACA,mCACA,kCACA,oDACA,mDACA,mDACA,kDACA;;;;iBAca,oCAAoC;;;;EAInD,OAAO;;;;EAKP,UAAU;;;;;EAMV;;;;EAKA,oBAAoB;;;;EAKpB,YAAY;;;;;;;;;;;;;;;EAgBZ,QAAQ;;;;EAKR,cAAc;;;;EAKd;;;;;iBAMe,8BAA8B;;;;;EAK7C;;;;;EAMA;;;;;EAMA;;;;;EAMA;;;;;EAMA;;;;EAKA;;;;;EAMA;;;;EAKA;;;;;EAMA;;;;EAKA,mBAAmB;;;;EAKnB,YAAY;;;;;;;;;;;;;;;EAgBZ,QAAQ;;;;;YAME,mCAAmC,KAC7C"}
@@ -56,7 +56,7 @@ var ChatXAIResponses = class extends _langchain_core_language_models_chat_models
56
56
  model: modelOrFields
57
57
  } : modelOrFields ?? {};
58
58
  super(fields);
59
- this._addVersion("@langchain/xai", "1.4.17");
59
+ this._addVersion("@langchain/xai", "1.5.0");
60
60
  const apiKey = fields?.apiKey ?? (0, _langchain_core_utils_env.getEnvironmentVariable)("XAI_API_KEY");
61
61
  if (!apiKey) throw new Error(`xAI API key not found. Please set the XAI_API_KEY environment variable or provide the key in the "apiKey" field.`);
62
62
  this.apiKey = apiKey;
@@ -1 +1 @@
1
- {"version":3,"file":"responses.cjs","names":["BaseChatModel","getEnvironmentVariable","convertMessagesToResponsesInput","convertResponseToAIMessage","extractTextFromOutput","convertXAIResponsesStream","convertStreamEventToChunk"],"sources":["../../src/chat_models/responses.ts"],"sourcesContent":["import { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport type { ChatModelStreamEvent } from \"@langchain/core/language_models/event\";\nimport { AIMessage, BaseMessage } from \"@langchain/core/messages\";\nimport {\n BaseChatModel,\n type LangSmithParams,\n} from \"@langchain/core/language_models/chat_models\";\nimport { ChatGenerationChunk, type ChatResult } from \"@langchain/core/outputs\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { Serialized } from \"@langchain/core/load/serializable\";\n\nimport type {\n ChatXAIResponsesCallOptions,\n ChatXAIResponsesInput,\n ChatXAIResponsesInvocationParams,\n XAIResponse,\n XAIResponsesCreateParams,\n XAIResponsesCreateParamsNonStreaming,\n XAIResponsesCreateParamsStreaming,\n XAIResponsesReasoning,\n XAIResponsesSearchParameters,\n XAIResponsesStreamEvent,\n XAIResponsesTool,\n} from \"./responses-types.js\";\n\nimport {\n convertMessagesToResponsesInput,\n convertResponseToAIMessage,\n convertStreamEventToChunk,\n extractTextFromOutput,\n} from \"../converters/responses.js\";\nimport { convertXAIResponsesStream } from \"../utils/responses_stream_events.js\";\n\n// Re-export types for convenience\nexport type {\n ChatXAIResponsesCallOptions,\n ChatXAIResponsesInput,\n ChatXAIResponsesInvocationParams,\n};\n\n// ============================================================================\n// Main Class\n// ============================================================================\n\n/**\n * xAI Responses API chat model integration.\n *\n * This class provides access to xAI's Responses API, which offers enhanced\n * capabilities including built-in tools, reasoning, and search.\n *\n * @example\n * ```typescript\n * import { ChatXAIResponses } from \"@langchain/xai\";\n *\n * const llm = new ChatXAIResponses({\n * model: \"grok-3\",\n * temperature: 0.7,\n * });\n *\n * const result = await llm.invoke(\"What is the capital of France?\");\n * console.log(result.content);\n * ```\n */\nexport class ChatXAIResponses<\n CallOptions extends ChatXAIResponsesCallOptions = ChatXAIResponsesCallOptions,\n> extends BaseChatModel<CallOptions> {\n static lc_name() {\n return \"ChatXAIResponses\";\n }\n\n lc_serializable = true;\n\n lc_namespace = [\"langchain\", \"chat_models\", \"xai\"];\n\n get lc_secrets(): { [key: string]: string } | undefined {\n return {\n apiKey: \"XAI_API_KEY\",\n };\n }\n\n get lc_aliases(): { [key: string]: string } | undefined {\n return {\n apiKey: \"xai_api_key\",\n };\n }\n\n // -------------------------------------------------------------------------\n // Instance Properties\n // -------------------------------------------------------------------------\n\n apiKey: string;\n\n model: string;\n\n streaming: boolean;\n\n temperature?: number;\n\n topP?: number;\n\n maxOutputTokens?: number;\n\n store?: boolean;\n\n user?: string;\n\n baseURL: string;\n\n searchParameters?: XAIResponsesSearchParameters;\n\n reasoning?: XAIResponsesReasoning;\n\n tools?: XAIResponsesTool[];\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(model: string, fields?: Omit<ChatXAIResponsesInput, \"model\">);\n constructor(fields?: ChatXAIResponsesInput);\n constructor(\n modelOrFields?: string | ChatXAIResponsesInput,\n fieldsArg?: Omit<ChatXAIResponsesInput, \"model\">\n ) {\n const fields =\n typeof modelOrFields === \"string\"\n ? { ...(fieldsArg ?? {}), model: modelOrFields }\n : (modelOrFields ?? {});\n super(fields);\n\n this._addVersion(\"@langchain/xai\", __PKG_VERSION__);\n\n const apiKey = fields?.apiKey ?? getEnvironmentVariable(\"XAI_API_KEY\");\n if (!apiKey) {\n throw new Error(\n `xAI API key not found. Please set the XAI_API_KEY environment variable or provide the key in the \"apiKey\" field.`\n );\n }\n\n this.apiKey = apiKey;\n this.model = fields?.model ?? \"grok-3\";\n this.streaming = fields?.streaming ?? false;\n this.temperature = fields?.temperature;\n this.topP = fields?.topP;\n this.maxOutputTokens = fields?.maxOutputTokens;\n this.store = fields?.store;\n this.user = fields?.user;\n this.baseURL = fields?.baseURL ?? \"https://api.x.ai/v1\";\n this.searchParameters = fields?.searchParameters;\n this.reasoning = fields?.reasoning;\n this.tools = fields?.tools;\n }\n\n // -------------------------------------------------------------------------\n // Metadata Methods\n // -------------------------------------------------------------------------\n\n _llmType(): string {\n return \"xai-responses\";\n }\n\n override getLsParams(options: this[\"ParsedCallOptions\"]): LangSmithParams {\n const params = super.getLsParams(options);\n params.ls_provider = \"xai\";\n params.ls_model_name = this.model;\n params.ls_model_type = \"chat\";\n params.ls_temperature = this.temperature;\n params.ls_max_tokens = this.maxOutputTokens;\n return params;\n }\n\n override toJSON(): Serialized {\n const result = super.toJSON();\n\n if (\n \"kwargs\" in result &&\n typeof result.kwargs === \"object\" &&\n result.kwargs != null\n ) {\n delete (result.kwargs as Record<string, unknown>).apiKey;\n }\n\n return result;\n }\n\n // -------------------------------------------------------------------------\n // Invocation Params\n // -------------------------------------------------------------------------\n\n invocationParams(\n options?: this[\"ParsedCallOptions\"]\n ): ChatXAIResponsesInvocationParams {\n return {\n model: this.model,\n temperature: this.temperature,\n top_p: this.topP,\n max_output_tokens: this.maxOutputTokens,\n store: this.store,\n user: this.user,\n stream: this.streaming,\n previous_response_id: options?.previous_response_id,\n include: options?.include,\n text: options?.text,\n search_parameters: options?.search_parameters ?? this.searchParameters,\n reasoning: options?.reasoning ?? this.reasoning,\n tools: options?.tools ?? this.tools,\n tool_choice: options?.tool_choice,\n parallel_tool_calls: options?.parallel_tool_calls,\n };\n }\n\n // -------------------------------------------------------------------------\n // API Call Methods\n // -------------------------------------------------------------------------\n\n /**\n * Makes a request to the xAI Responses API.\n */\n protected async _makeRequest(\n request: XAIResponsesCreateParamsNonStreaming\n ): Promise<XAIResponse>;\n\n protected async _makeRequest(\n request: XAIResponsesCreateParamsStreaming\n ): Promise<AsyncIterable<XAIResponsesStreamEvent>>;\n\n protected async _makeRequest(\n request: XAIResponsesCreateParams\n ): Promise<XAIResponse | AsyncIterable<XAIResponsesStreamEvent>> {\n const url = `${this.baseURL}/responses`;\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.apiKey}`,\n };\n\n if (request.stream) {\n return this._makeStreamingRequest(url, headers, request);\n }\n\n const response = await this.caller.call(async () => {\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n\n if (!res.ok) {\n const errorBody = await res.text();\n throw new Error(\n `xAI API error: ${res.status} ${res.statusText} - ${errorBody}`\n );\n }\n\n return res.json();\n });\n\n return response as XAIResponse;\n }\n\n /**\n * Makes a streaming request to the xAI Responses API.\n */\n protected async *_makeStreamingRequest(\n url: string,\n headers: Record<string, string>,\n request: XAIResponsesCreateParams\n ): AsyncIterable<XAIResponsesStreamEvent> {\n const response = await this.caller.call(async () => {\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n\n if (!res.ok) {\n const errorBody = await res.text();\n throw new Error(\n `xAI API error: ${res.status} ${res.statusText} - ${errorBody}`\n );\n }\n\n return res;\n });\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error(\"No response body\");\n }\n\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed === \"data: [DONE]\") continue;\n\n if (trimmed.startsWith(\"data: \")) {\n try {\n const data = JSON.parse(trimmed.slice(6));\n yield data as XAIResponsesStreamEvent;\n } catch {\n // Skip invalid JSON\n }\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n }\n\n // -------------------------------------------------------------------------\n // Generation Methods\n // -------------------------------------------------------------------------\n\n async _generate(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n options.signal?.throwIfAborted();\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n if (invocationParams.stream) {\n const stream = this._streamResponseChunks(messages, options, runManager);\n let finalChunk: ChatGenerationChunk | undefined;\n\n for await (const chunk of stream) {\n chunk.message.response_metadata = {\n ...chunk.generationInfo,\n ...chunk.message.response_metadata,\n };\n finalChunk = finalChunk?.concat(chunk) ?? chunk;\n }\n\n return {\n generations: finalChunk ? [finalChunk] : [],\n llmOutput: {\n estimatedTokenUsage: (finalChunk?.message as AIMessage | undefined)\n ?.usage_metadata,\n },\n };\n }\n\n const response = await this._makeRequest({\n input,\n ...invocationParams,\n stream: false,\n } as XAIResponsesCreateParamsNonStreaming);\n\n const aiMessage = convertResponseToAIMessage(response);\n const text = extractTextFromOutput(response.output);\n\n return {\n generations: [\n {\n text,\n message: aiMessage,\n },\n ],\n llmOutput: {\n id: response.id,\n estimatedTokenUsage: response.usage\n ? {\n promptTokens: response.usage.input_tokens,\n completionTokens: response.usage.output_tokens,\n totalTokens: response.usage.total_tokens,\n }\n : undefined,\n },\n };\n }\n\n async *_streamChatModelEvents(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatModelStreamEvent> {\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n const streamIterable = await this._makeRequest({\n input,\n ...invocationParams,\n stream: true,\n } as XAIResponsesCreateParamsStreaming);\n\n const shouldStreamUsage = options.streamUsage ?? true;\n\n const abortableStream = async function* (\n source: AsyncIterable<XAIResponsesStreamEvent>,\n signal?: AbortSignal\n ) {\n for await (const event of source) {\n if (signal?.aborted) {\n return;\n }\n yield event;\n }\n };\n\n yield* convertXAIResponsesStream(\n abortableStream(streamIterable, options.signal),\n { streamUsage: shouldStreamUsage }\n );\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n const streamIterable = await this._makeRequest({\n input,\n ...invocationParams,\n stream: true,\n } as XAIResponsesCreateParamsStreaming);\n\n for await (const event of streamIterable) {\n if (options.signal?.aborted) {\n return;\n }\n const chunk = convertStreamEventToChunk(event);\n if (chunk) {\n yield chunk;\n await runManager?.handleLLMNewToken(chunk.text || \"\", {\n prompt: 0,\n completion: 0,\n });\n }\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"responses.cjs","names":["BaseChatModel","getEnvironmentVariable","convertMessagesToResponsesInput","convertResponseToAIMessage","extractTextFromOutput","convertXAIResponsesStream","convertStreamEventToChunk"],"sources":["../../src/chat_models/responses.ts"],"sourcesContent":["import { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport type { ChatModelStreamEvent } from \"@langchain/core/language_models/event\";\nimport { AIMessage, BaseMessage } from \"@langchain/core/messages\";\nimport {\n BaseChatModel,\n type LangSmithParams,\n} from \"@langchain/core/language_models/chat_models\";\nimport { ChatGenerationChunk, type ChatResult } from \"@langchain/core/outputs\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { Serialized } from \"@langchain/core/load/serializable\";\n\nimport type {\n ChatXAIResponsesCallOptions,\n ChatXAIResponsesInput,\n ChatXAIResponsesInvocationParams,\n XAIResponse,\n XAIResponsesCreateParams,\n XAIResponsesCreateParamsNonStreaming,\n XAIResponsesCreateParamsStreaming,\n XAIResponsesReasoning,\n XAIResponsesSearchParameters,\n XAIResponsesStreamEvent,\n XAIResponsesTool,\n} from \"./responses-types.js\";\n\nimport {\n convertMessagesToResponsesInput,\n convertResponseToAIMessage,\n convertStreamEventToChunk,\n extractTextFromOutput,\n} from \"../converters/responses.js\";\nimport { convertXAIResponsesStream } from \"../utils/responses_stream_events.js\";\n\n// Re-export types for convenience\nexport type {\n ChatXAIResponsesCallOptions,\n ChatXAIResponsesInput,\n ChatXAIResponsesInvocationParams,\n};\n\n// ============================================================================\n// Main Class\n// ============================================================================\n\n/**\n * xAI Responses API chat model integration.\n *\n * This class provides access to xAI's Responses API, which offers enhanced\n * capabilities including built-in tools, reasoning, and search.\n *\n * @example\n * ```typescript\n * import { ChatXAIResponses } from \"@langchain/xai\";\n *\n * const llm = new ChatXAIResponses({\n * model: \"grok-3\",\n * temperature: 0.7,\n * });\n *\n * const result = await llm.invoke(\"What is the capital of France?\");\n * console.log(result.content);\n * ```\n */\nexport class ChatXAIResponses<\n CallOptions extends ChatXAIResponsesCallOptions = ChatXAIResponsesCallOptions,\n> extends BaseChatModel<CallOptions> {\n static lc_name() {\n return \"ChatXAIResponses\";\n }\n\n lc_serializable = true;\n\n lc_namespace = [\"langchain\", \"chat_models\", \"xai\"];\n\n get lc_secrets(): { [key: string]: string } | undefined {\n return {\n apiKey: \"XAI_API_KEY\",\n };\n }\n\n get lc_aliases(): { [key: string]: string } | undefined {\n return {\n apiKey: \"xai_api_key\",\n };\n }\n\n // -------------------------------------------------------------------------\n // Instance Properties\n // -------------------------------------------------------------------------\n\n apiKey: string;\n\n model: string;\n\n streaming: boolean;\n\n temperature?: number;\n\n topP?: number;\n\n maxOutputTokens?: number;\n\n store?: boolean;\n\n user?: string;\n\n baseURL: string;\n\n searchParameters?: XAIResponsesSearchParameters;\n\n reasoning?: XAIResponsesReasoning;\n\n tools?: XAIResponsesTool[];\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(model: string, fields?: Omit<ChatXAIResponsesInput, \"model\">);\n constructor(fields?: ChatXAIResponsesInput);\n constructor(\n modelOrFields?: string | ChatXAIResponsesInput,\n fieldsArg?: Omit<ChatXAIResponsesInput, \"model\">\n ) {\n const fields =\n typeof modelOrFields === \"string\"\n ? { ...(fieldsArg ?? {}), model: modelOrFields }\n : (modelOrFields ?? {});\n super(fields);\n\n this._addVersion(\"@langchain/xai\", __PKG_VERSION__);\n\n const apiKey = fields?.apiKey ?? getEnvironmentVariable(\"XAI_API_KEY\");\n if (!apiKey) {\n throw new Error(\n `xAI API key not found. Please set the XAI_API_KEY environment variable or provide the key in the \"apiKey\" field.`\n );\n }\n\n this.apiKey = apiKey;\n this.model = fields?.model ?? \"grok-3\";\n this.streaming = fields?.streaming ?? false;\n this.temperature = fields?.temperature;\n this.topP = fields?.topP;\n this.maxOutputTokens = fields?.maxOutputTokens;\n this.store = fields?.store;\n this.user = fields?.user;\n this.baseURL = fields?.baseURL ?? \"https://api.x.ai/v1\";\n this.searchParameters = fields?.searchParameters;\n this.reasoning = fields?.reasoning;\n this.tools = fields?.tools;\n }\n\n // -------------------------------------------------------------------------\n // Metadata Methods\n // -------------------------------------------------------------------------\n\n _llmType(): string {\n return \"xai-responses\";\n }\n\n override getLsParams(options: this[\"ParsedCallOptions\"]): LangSmithParams {\n const params = super.getLsParams(options);\n params.ls_provider = \"xai\";\n params.ls_model_name = this.model;\n params.ls_model_type = \"chat\";\n params.ls_temperature = this.temperature;\n params.ls_max_tokens = this.maxOutputTokens;\n return params;\n }\n\n override toJSON(): Serialized {\n const result = super.toJSON();\n\n if (\n \"kwargs\" in result &&\n typeof result.kwargs === \"object\" &&\n result.kwargs != null\n ) {\n delete (result.kwargs as Record<string, unknown>).apiKey;\n }\n\n return result;\n }\n\n // -------------------------------------------------------------------------\n // Invocation Params\n // -------------------------------------------------------------------------\n\n invocationParams(\n options?: this[\"ParsedCallOptions\"]\n ): ChatXAIResponsesInvocationParams {\n return {\n model: this.model,\n temperature: this.temperature,\n top_p: this.topP,\n max_output_tokens: this.maxOutputTokens,\n store: this.store,\n user: this.user,\n stream: this.streaming,\n previous_response_id: options?.previous_response_id,\n include: options?.include,\n text: options?.text,\n search_parameters: options?.search_parameters ?? this.searchParameters,\n reasoning: options?.reasoning ?? this.reasoning,\n tools: options?.tools ?? this.tools,\n tool_choice: options?.tool_choice,\n parallel_tool_calls: options?.parallel_tool_calls,\n };\n }\n\n // -------------------------------------------------------------------------\n // API Call Methods\n // -------------------------------------------------------------------------\n\n /**\n * Makes a request to the xAI Responses API.\n */\n protected async _makeRequest(\n request: XAIResponsesCreateParamsNonStreaming\n ): Promise<XAIResponse>;\n\n protected async _makeRequest(\n request: XAIResponsesCreateParamsStreaming\n ): Promise<AsyncIterable<XAIResponsesStreamEvent>>;\n\n protected async _makeRequest(\n request: XAIResponsesCreateParams\n ): Promise<XAIResponse | AsyncIterable<XAIResponsesStreamEvent>> {\n const url = `${this.baseURL}/responses`;\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.apiKey}`,\n };\n\n if (request.stream) {\n return this._makeStreamingRequest(url, headers, request);\n }\n\n const response = await this.caller.call(async () => {\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n\n if (!res.ok) {\n const errorBody = await res.text();\n throw new Error(\n `xAI API error: ${res.status} ${res.statusText} - ${errorBody}`\n );\n }\n\n return res.json();\n });\n\n return response as XAIResponse;\n }\n\n /**\n * Makes a streaming request to the xAI Responses API.\n */\n protected async *_makeStreamingRequest(\n url: string,\n headers: Record<string, string>,\n request: XAIResponsesCreateParams\n ): AsyncIterable<XAIResponsesStreamEvent> {\n const response = await this.caller.call(async () => {\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n\n if (!res.ok) {\n const errorBody = await res.text();\n throw new Error(\n `xAI API error: ${res.status} ${res.statusText} - ${errorBody}`\n );\n }\n\n return res;\n });\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error(\"No response body\");\n }\n\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed === \"data: [DONE]\") continue;\n\n if (trimmed.startsWith(\"data: \")) {\n try {\n const data = JSON.parse(trimmed.slice(6));\n yield data as XAIResponsesStreamEvent;\n } catch {\n // Skip invalid JSON\n }\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n }\n\n // -------------------------------------------------------------------------\n // Generation Methods\n // -------------------------------------------------------------------------\n\n async _generate(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n options.signal?.throwIfAborted();\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n if (invocationParams.stream) {\n const stream = this._streamResponseChunks(messages, options, runManager);\n let finalChunk: ChatGenerationChunk | undefined;\n\n for await (const chunk of stream) {\n chunk.message.response_metadata = {\n ...chunk.generationInfo,\n ...chunk.message.response_metadata,\n };\n finalChunk = finalChunk?.concat(chunk) ?? chunk;\n }\n\n return {\n generations: finalChunk ? [finalChunk] : [],\n llmOutput: {\n estimatedTokenUsage: (finalChunk?.message as AIMessage | undefined)\n ?.usage_metadata,\n },\n };\n }\n\n const response = await this._makeRequest({\n input,\n ...invocationParams,\n stream: false,\n } as XAIResponsesCreateParamsNonStreaming);\n\n const aiMessage = convertResponseToAIMessage(response);\n const text = extractTextFromOutput(response.output);\n\n return {\n generations: [\n {\n text,\n message: aiMessage,\n },\n ],\n llmOutput: {\n id: response.id,\n estimatedTokenUsage: response.usage\n ? {\n promptTokens: response.usage.input_tokens,\n completionTokens: response.usage.output_tokens,\n totalTokens: response.usage.total_tokens,\n }\n : undefined,\n },\n };\n }\n\n async *_streamChatModelEvents(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatModelStreamEvent> {\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n const streamIterable = await this._makeRequest({\n input,\n ...invocationParams,\n stream: true,\n } as XAIResponsesCreateParamsStreaming);\n\n const shouldStreamUsage = options.streamUsage ?? true;\n\n const abortableStream = async function* (\n source: AsyncIterable<XAIResponsesStreamEvent>,\n signal?: AbortSignal\n ) {\n for await (const event of source) {\n if (signal?.aborted) {\n return;\n }\n yield event;\n }\n };\n\n yield* convertXAIResponsesStream(\n abortableStream(streamIterable, options.signal),\n { streamUsage: shouldStreamUsage }\n );\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n const streamIterable = await this._makeRequest({\n input,\n ...invocationParams,\n stream: true,\n } as XAIResponsesCreateParamsStreaming);\n\n for await (const event of streamIterable) {\n if (options.signal?.aborted) {\n return;\n }\n const chunk = convertStreamEventToChunk(event);\n if (chunk) {\n yield chunk;\n await runManager?.handleLLMNewToken(chunk.text || \"\", {\n prompt: 0,\n completion: 0,\n });\n }\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA+DA,IAAa,mBAAb,cAEUA,4CAAAA,cAA2B;CACnC,OAAO,UAAU;EACf,OAAO;CACT;CAEA,kBAAkB;CAElB,eAAe;EAAC;EAAa;EAAe;CAAK;CAEjD,IAAI,aAAoD;EACtD,OAAO,EACL,QAAQ,cACV;CACF;CAEA,IAAI,aAAoD;EACtD,OAAO,EACL,QAAQ,cACV;CACF;CAMA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAQA,YACE,eACA,WACA;EACA,MAAM,SACJ,OAAO,kBAAkB,WACrB;GAAE,GAAI,aAAa,CAAC;GAAI,OAAO;EAAc,IAC5C,iBAAiB,CAAC;EACzB,MAAM,MAAM;EAEZ,KAAK,YAAY,kBAAA,OAAiC;EAElD,MAAM,SAAS,QAAQ,WAAA,GAAUC,0BAAAA,uBAAAA,CAAuB,aAAa;EACrE,IAAI,CAAC,QACH,MAAM,IAAI,MACR,kHACF;EAGF,KAAK,SAAS;EACd,KAAK,QAAQ,QAAQ,SAAS;EAC9B,KAAK,YAAY,QAAQ,aAAa;EACtC,KAAK,cAAc,QAAQ;EAC3B,KAAK,OAAO,QAAQ;EACpB,KAAK,kBAAkB,QAAQ;EAC/B,KAAK,QAAQ,QAAQ;EACrB,KAAK,OAAO,QAAQ;EACpB,KAAK,UAAU,QAAQ,WAAW;EAClC,KAAK,mBAAmB,QAAQ;EAChC,KAAK,YAAY,QAAQ;EACzB,KAAK,QAAQ,QAAQ;CACvB;CAMA,WAAmB;EACjB,OAAO;CACT;CAEA,YAAqB,SAAqD;EACxE,MAAM,SAAS,MAAM,YAAY,OAAO;EACxC,OAAO,cAAc;EACrB,OAAO,gBAAgB,KAAK;EAC5B,OAAO,gBAAgB;EACvB,OAAO,iBAAiB,KAAK;EAC7B,OAAO,gBAAgB,KAAK;EAC5B,OAAO;CACT;CAEA,SAA8B;EAC5B,MAAM,SAAS,MAAM,OAAO;EAE5B,IACE,YAAY,UACZ,OAAO,OAAO,WAAW,YACzB,OAAO,UAAU,MAEjB,OAAQ,OAAO,OAAmC;EAGpD,OAAO;CACT;CAMA,iBACE,SACkC;EAClC,OAAO;GACL,OAAO,KAAK;GACZ,aAAa,KAAK;GAClB,OAAO,KAAK;GACZ,mBAAmB,KAAK;GACxB,OAAO,KAAK;GACZ,MAAM,KAAK;GACX,QAAQ,KAAK;GACb,sBAAsB,SAAS;GAC/B,SAAS,SAAS;GAClB,MAAM,SAAS;GACf,mBAAmB,SAAS,qBAAqB,KAAK;GACtD,WAAW,SAAS,aAAa,KAAK;GACtC,OAAO,SAAS,SAAS,KAAK;GAC9B,aAAa,SAAS;GACtB,qBAAqB,SAAS;EAChC;CACF;CAiBA,MAAgB,aACd,SAC+D;EAC/D,MAAM,MAAM,GAAG,KAAK,QAAQ;EAE5B,MAAM,UAAkC;GACtC,gBAAgB;GAChB,eAAe,UAAU,KAAK;EAChC;EAEA,IAAI,QAAQ,QACV,OAAO,KAAK,sBAAsB,KAAK,SAAS,OAAO;EAoBzD,OAAO,MAjBgB,KAAK,OAAO,KAAK,YAAY;GAClD,MAAM,MAAM,MAAM,MAAM,KAAK;IAC3B,QAAQ;IACR;IACA,MAAM,KAAK,UAAU,OAAO;GAC9B,CAAC;GAED,IAAI,CAAC,IAAI,IAAI;IACX,MAAM,YAAY,MAAM,IAAI,KAAK;IACjC,MAAM,IAAI,MACR,kBAAkB,IAAI,OAAO,GAAG,IAAI,WAAW,KAAK,WACtD;GACF;GAEA,OAAO,IAAI,KAAK;EAClB,CAAC;CAGH;;;;CAKA,OAAiB,sBACf,KACA,SACA,SACwC;EAkBxC,MAAM,UAAS,MAjBQ,KAAK,OAAO,KAAK,YAAY;GAClD,MAAM,MAAM,MAAM,MAAM,KAAK;IAC3B,QAAQ;IACR;IACA,MAAM,KAAK,UAAU,OAAO;GAC9B,CAAC;GAED,IAAI,CAAC,IAAI,IAAI;IACX,MAAM,YAAY,MAAM,IAAI,KAAK;IACjC,MAAM,IAAI,MACR,kBAAkB,IAAI,OAAO,GAAG,IAAI,WAAW,KAAK,WACtD;GACF;GAEA,OAAO;EACT,CAAC,EAAA,CAEuB,MAAM,UAAU;EACxC,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,kBAAkB;EAGpC,MAAM,UAAU,IAAI,YAAY;EAChC,IAAI,SAAS;EAEb,IAAI;GACF,OAAO,MAAM;IACX,MAAM,EAAE,MAAM,UAAU,MAAM,OAAO,KAAK;IAC1C,IAAI,MAAM;IAEV,UAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;IAChD,MAAM,QAAQ,OAAO,MAAM,IAAI;IAC/B,SAAS,MAAM,IAAI,KAAK;IAExB,KAAK,MAAM,QAAQ,OAAO;KACxB,MAAM,UAAU,KAAK,KAAK;KAC1B,IAAI,CAAC,WAAW,YAAY,gBAAgB;KAE5C,IAAI,QAAQ,WAAW,QAAQ,GAC7B,IAAI;MAEF,MADa,KAAK,MAAM,QAAQ,MAAM,CAAC,CAC9B;KACX,QAAQ,CAER;IAEJ;GACF;EACF,UAAU;GACR,OAAO,YAAY;EACrB;CACF;CAMA,MAAM,UACJ,UACA,SACA,YACqB;EACrB,QAAQ,QAAQ,eAAe;EAC/B,MAAM,mBAAmB,KAAK,iBAAiB,OAAO;EACtD,MAAM,QAAQC,kBAAAA,gCAAgC,QAAQ;EAEtD,IAAI,iBAAiB,QAAQ;GAC3B,MAAM,SAAS,KAAK,sBAAsB,UAAU,SAAS,UAAU;GACvE,IAAI;GAEJ,WAAW,MAAM,SAAS,QAAQ;IAChC,MAAM,QAAQ,oBAAoB;KAChC,GAAG,MAAM;KACT,GAAG,MAAM,QAAQ;IACnB;IACA,aAAa,YAAY,OAAO,KAAK,KAAK;GAC5C;GAEA,OAAO;IACL,aAAa,aAAa,CAAC,UAAU,IAAI,CAAC;IAC1C,WAAW,EACT,sBAAsB,YAAY,QAAA,EAC9B,eACN;GACF;EACF;EAEA,MAAM,WAAW,MAAM,KAAK,aAAa;GACvC;GACA,GAAG;GACH,QAAQ;EACV,CAAyC;EAEzC,MAAM,YAAYC,kBAAAA,2BAA2B,QAAQ;EAGrD,OAAO;GACL,aAAa,CACX;IACE,MALOC,kBAAAA,sBAAsB,SAAS,MAKnC;IACH,SAAS;GACX,CACF;GACA,WAAW;IACT,IAAI,SAAS;IACb,qBAAqB,SAAS,QAC1B;KACE,cAAc,SAAS,MAAM;KAC7B,kBAAkB,SAAS,MAAM;KACjC,aAAa,SAAS,MAAM;IAC9B,IACA,KAAA;GACN;EACF;CACF;CAEA,OAAO,uBACL,UACA,SACA,aACsC;EACtC,MAAM,mBAAmB,KAAK,iBAAiB,OAAO;EACtD,MAAM,QAAQF,kBAAAA,gCAAgC,QAAQ;EAEtD,MAAM,iBAAiB,MAAM,KAAK,aAAa;GAC7C;GACA,GAAG;GACH,QAAQ;EACV,CAAsC;EAEtC,MAAM,oBAAoB,QAAQ,eAAe;EAEjD,MAAM,kBAAkB,iBACtB,QACA,QACA;GACA,WAAW,MAAM,SAAS,QAAQ;IAChC,IAAI,QAAQ,SACV;IAEF,MAAM;GACR;EACF;EAEA,OAAOG,gCAAAA,0BACL,gBAAgB,gBAAgB,QAAQ,MAAM,GAC9C,EAAE,aAAa,kBAAkB,CACnC;CACF;CAEA,OAAO,sBACL,UACA,SACA,YACqC;EACrC,MAAM,mBAAmB,KAAK,iBAAiB,OAAO;EACtD,MAAM,QAAQH,kBAAAA,gCAAgC,QAAQ;EAEtD,MAAM,iBAAiB,MAAM,KAAK,aAAa;GAC7C;GACA,GAAG;GACH,QAAQ;EACV,CAAsC;EAEtC,WAAW,MAAM,SAAS,gBAAgB;GACxC,IAAI,QAAQ,QAAQ,SAClB;GAEF,MAAM,QAAQI,kBAAAA,0BAA0B,KAAK;GAC7C,IAAI,OAAO;IACT,MAAM;IACN,MAAM,YAAY,kBAAkB,MAAM,QAAQ,IAAI;KACpD,QAAQ;KACR,YAAY;IACd,CAAC;GACH;EACF;CACF;AACF"}
@@ -25,7 +25,7 @@ import { ChatGenerationChunk, ChatResult } from "@langchain/core/outputs";
25
25
  * console.log(result.content);
26
26
  * ```
27
27
  */
28
- declare class ChatXAIResponses<CallOptions extends ChatXAIResponsesCallOptions = ChatXAIResponsesCallOptions> extends BaseChatModel<CallOptions> {
28
+ export declare class ChatXAIResponses<CallOptions extends ChatXAIResponsesCallOptions = ChatXAIResponsesCallOptions> extends BaseChatModel<CallOptions> {
29
29
  static lc_name(): string;
30
30
  lc_serializable: boolean;
31
31
  lc_namespace: string[];
@@ -67,5 +67,5 @@ declare class ChatXAIResponses<CallOptions extends ChatXAIResponsesCallOptions =
67
67
  _streamResponseChunks(messages: BaseMessage[], options: this["ParsedCallOptions"], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;
68
68
  }
69
69
  //#endregion
70
- export { ChatXAIResponses, type ChatXAIResponsesCallOptions, type ChatXAIResponsesInput, type ChatXAIResponsesInvocationParams };
70
+ export type { ChatXAIResponsesCallOptions, ChatXAIResponsesInput, ChatXAIResponsesInvocationParams };
71
71
  //# sourceMappingURL=responses.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"responses.d.cts","names":[],"sources":["../../src/chat_models/responses.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;cA+Da,iBACX,oBAAoB,8BAA8B,qCAC1C,cAAc;SACf;EAIP;EAEA;MAEI;KAAiB;;MAMjB;KAAiB;;EAUrB;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA,mBAAmB;EAEnB,YAAY;EAEZ,QAAQ;EAMR,YAAY,eAAe,SAAS,KAAK;EACzC,YAAY,SAAS;EAsCrB;EAIS,YAAY,qCAAqC;EAUjD,UAAU;EAkBnB,iBACE,sCACC;;;;YA2Ba,aACd,SAAS,uCACR,QAAQ;YAEK,aACd,SAAS,oCACR,QAAQ,cAAc;;;;YAuCR,sBACf,aACA,SAAS,wBACT,SAAS,2BACR,cAAc;EA0DX,UACJ,UAAU,eACV,oCACA,aAAa,2BACZ,QAAQ;EAuDJ,uBACL,UAAU,eACV,oCACA,cAAc,2BACb,eAAe;EA8BX,sBACL,UAAU,eACV,oCACA,aAAa,2BACZ,eAAe"}
1
+ {"version":3,"file":"responses.d.cts","names":[],"sources":["../../src/chat_models/responses.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;qBA+Da,iBACX,oBAAoB,8BAA8B,qCAC1C,cAAc;SACf;EAIP;EAEA;MAEI;KAAiB;;MAMjB;KAAiB;;EAUrB;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA,mBAAmB;EAEnB,YAAY;EAEZ,QAAQ;EAMR,YAAY,eAAe,SAAS,KAAK;EACzC,YAAY,SAAS;EAsCrB;EAIS,YAAY,qCAAqC;EAUjD,UAAU;EAkBnB,iBACE,sCACC;;;;YA2Ba,aACd,SAAS,uCACR,QAAQ;YAEK,aACd,SAAS,oCACR,QAAQ,cAAc;;;;YAuCR,sBACf,aACA,SAAS,wBACT,SAAS,2BACR,cAAc;EA0DX,UACJ,UAAU,eACV,oCACA,aAAa,2BACZ,QAAQ;EAuDJ,uBACL,UAAU,eACV,oCACA,cAAc,2BACb,eAAe;EA8BX,sBACL,UAAU,eACV,oCACA,aAAa,2BACZ,eAAe"}
@@ -25,7 +25,7 @@ import { ChatModelStreamEvent } from "@langchain/core/language_models/event";
25
25
  * console.log(result.content);
26
26
  * ```
27
27
  */
28
- declare class ChatXAIResponses<CallOptions extends ChatXAIResponsesCallOptions = ChatXAIResponsesCallOptions> extends BaseChatModel<CallOptions> {
28
+ export declare class ChatXAIResponses<CallOptions extends ChatXAIResponsesCallOptions = ChatXAIResponsesCallOptions> extends BaseChatModel<CallOptions> {
29
29
  static lc_name(): string;
30
30
  lc_serializable: boolean;
31
31
  lc_namespace: string[];
@@ -67,5 +67,5 @@ declare class ChatXAIResponses<CallOptions extends ChatXAIResponsesCallOptions =
67
67
  _streamResponseChunks(messages: BaseMessage[], options: this["ParsedCallOptions"], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;
68
68
  }
69
69
  //#endregion
70
- export { ChatXAIResponses, type ChatXAIResponsesCallOptions, type ChatXAIResponsesInput, type ChatXAIResponsesInvocationParams };
70
+ export type { ChatXAIResponsesCallOptions, ChatXAIResponsesInput, ChatXAIResponsesInvocationParams };
71
71
  //# sourceMappingURL=responses.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"responses.d.ts","names":[],"sources":["../../src/chat_models/responses.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;cA+Da,iBACX,oBAAoB,8BAA8B,qCAC1C,cAAc;SACf;EAIP;EAEA;MAEI;KAAiB;;MAMjB;KAAiB;;EAUrB;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA,mBAAmB;EAEnB,YAAY;EAEZ,QAAQ;EAMR,YAAY,eAAe,SAAS,KAAK;EACzC,YAAY,SAAS;EAsCrB;EAIS,YAAY,qCAAqC;EAUjD,UAAU;EAkBnB,iBACE,sCACC;;;;YA2Ba,aACd,SAAS,uCACR,QAAQ;YAEK,aACd,SAAS,oCACR,QAAQ,cAAc;;;;YAuCR,sBACf,aACA,SAAS,wBACT,SAAS,2BACR,cAAc;EA0DX,UACJ,UAAU,eACV,oCACA,aAAa,2BACZ,QAAQ;EAuDJ,uBACL,UAAU,eACV,oCACA,cAAc,2BACb,eAAe;EA8BX,sBACL,UAAU,eACV,oCACA,aAAa,2BACZ,eAAe"}
1
+ {"version":3,"file":"responses.d.ts","names":[],"sources":["../../src/chat_models/responses.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;qBA+Da,iBACX,oBAAoB,8BAA8B,qCAC1C,cAAc;SACf;EAIP;EAEA;MAEI;KAAiB;;MAMjB;KAAiB;;EAUrB;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA,mBAAmB;EAEnB,YAAY;EAEZ,QAAQ;EAMR,YAAY,eAAe,SAAS,KAAK;EACzC,YAAY,SAAS;EAsCrB;EAIS,YAAY,qCAAqC;EAUjD,UAAU;EAkBnB,iBACE,sCACC;;;;YA2Ba,aACd,SAAS,uCACR,QAAQ;YAEK,aACd,SAAS,oCACR,QAAQ,cAAc;;;;YAuCR,sBACf,aACA,SAAS,wBACT,SAAS,2BACR,cAAc;EA0DX,UACJ,UAAU,eACV,oCACA,aAAa,2BACZ,QAAQ;EAuDJ,uBACL,UAAU,eACV,oCACA,cAAc,2BACb,eAAe;EA8BX,sBACL,UAAU,eACV,oCACA,aAAa,2BACZ,eAAe"}
@@ -56,7 +56,7 @@ var ChatXAIResponses = class extends BaseChatModel {
56
56
  model: modelOrFields
57
57
  } : modelOrFields ?? {};
58
58
  super(fields);
59
- this._addVersion("@langchain/xai", "1.4.17");
59
+ this._addVersion("@langchain/xai", "1.5.0");
60
60
  const apiKey = fields?.apiKey ?? getEnvironmentVariable("XAI_API_KEY");
61
61
  if (!apiKey) throw new Error(`xAI API key not found. Please set the XAI_API_KEY environment variable or provide the key in the "apiKey" field.`);
62
62
  this.apiKey = apiKey;
@@ -1 +1 @@
1
- {"version":3,"file":"responses.js","names":[],"sources":["../../src/chat_models/responses.ts"],"sourcesContent":["import { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport type { ChatModelStreamEvent } from \"@langchain/core/language_models/event\";\nimport { AIMessage, BaseMessage } from \"@langchain/core/messages\";\nimport {\n BaseChatModel,\n type LangSmithParams,\n} from \"@langchain/core/language_models/chat_models\";\nimport { ChatGenerationChunk, type ChatResult } from \"@langchain/core/outputs\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { Serialized } from \"@langchain/core/load/serializable\";\n\nimport type {\n ChatXAIResponsesCallOptions,\n ChatXAIResponsesInput,\n ChatXAIResponsesInvocationParams,\n XAIResponse,\n XAIResponsesCreateParams,\n XAIResponsesCreateParamsNonStreaming,\n XAIResponsesCreateParamsStreaming,\n XAIResponsesReasoning,\n XAIResponsesSearchParameters,\n XAIResponsesStreamEvent,\n XAIResponsesTool,\n} from \"./responses-types.js\";\n\nimport {\n convertMessagesToResponsesInput,\n convertResponseToAIMessage,\n convertStreamEventToChunk,\n extractTextFromOutput,\n} from \"../converters/responses.js\";\nimport { convertXAIResponsesStream } from \"../utils/responses_stream_events.js\";\n\n// Re-export types for convenience\nexport type {\n ChatXAIResponsesCallOptions,\n ChatXAIResponsesInput,\n ChatXAIResponsesInvocationParams,\n};\n\n// ============================================================================\n// Main Class\n// ============================================================================\n\n/**\n * xAI Responses API chat model integration.\n *\n * This class provides access to xAI's Responses API, which offers enhanced\n * capabilities including built-in tools, reasoning, and search.\n *\n * @example\n * ```typescript\n * import { ChatXAIResponses } from \"@langchain/xai\";\n *\n * const llm = new ChatXAIResponses({\n * model: \"grok-3\",\n * temperature: 0.7,\n * });\n *\n * const result = await llm.invoke(\"What is the capital of France?\");\n * console.log(result.content);\n * ```\n */\nexport class ChatXAIResponses<\n CallOptions extends ChatXAIResponsesCallOptions = ChatXAIResponsesCallOptions,\n> extends BaseChatModel<CallOptions> {\n static lc_name() {\n return \"ChatXAIResponses\";\n }\n\n lc_serializable = true;\n\n lc_namespace = [\"langchain\", \"chat_models\", \"xai\"];\n\n get lc_secrets(): { [key: string]: string } | undefined {\n return {\n apiKey: \"XAI_API_KEY\",\n };\n }\n\n get lc_aliases(): { [key: string]: string } | undefined {\n return {\n apiKey: \"xai_api_key\",\n };\n }\n\n // -------------------------------------------------------------------------\n // Instance Properties\n // -------------------------------------------------------------------------\n\n apiKey: string;\n\n model: string;\n\n streaming: boolean;\n\n temperature?: number;\n\n topP?: number;\n\n maxOutputTokens?: number;\n\n store?: boolean;\n\n user?: string;\n\n baseURL: string;\n\n searchParameters?: XAIResponsesSearchParameters;\n\n reasoning?: XAIResponsesReasoning;\n\n tools?: XAIResponsesTool[];\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(model: string, fields?: Omit<ChatXAIResponsesInput, \"model\">);\n constructor(fields?: ChatXAIResponsesInput);\n constructor(\n modelOrFields?: string | ChatXAIResponsesInput,\n fieldsArg?: Omit<ChatXAIResponsesInput, \"model\">\n ) {\n const fields =\n typeof modelOrFields === \"string\"\n ? { ...(fieldsArg ?? {}), model: modelOrFields }\n : (modelOrFields ?? {});\n super(fields);\n\n this._addVersion(\"@langchain/xai\", __PKG_VERSION__);\n\n const apiKey = fields?.apiKey ?? getEnvironmentVariable(\"XAI_API_KEY\");\n if (!apiKey) {\n throw new Error(\n `xAI API key not found. Please set the XAI_API_KEY environment variable or provide the key in the \"apiKey\" field.`\n );\n }\n\n this.apiKey = apiKey;\n this.model = fields?.model ?? \"grok-3\";\n this.streaming = fields?.streaming ?? false;\n this.temperature = fields?.temperature;\n this.topP = fields?.topP;\n this.maxOutputTokens = fields?.maxOutputTokens;\n this.store = fields?.store;\n this.user = fields?.user;\n this.baseURL = fields?.baseURL ?? \"https://api.x.ai/v1\";\n this.searchParameters = fields?.searchParameters;\n this.reasoning = fields?.reasoning;\n this.tools = fields?.tools;\n }\n\n // -------------------------------------------------------------------------\n // Metadata Methods\n // -------------------------------------------------------------------------\n\n _llmType(): string {\n return \"xai-responses\";\n }\n\n override getLsParams(options: this[\"ParsedCallOptions\"]): LangSmithParams {\n const params = super.getLsParams(options);\n params.ls_provider = \"xai\";\n params.ls_model_name = this.model;\n params.ls_model_type = \"chat\";\n params.ls_temperature = this.temperature;\n params.ls_max_tokens = this.maxOutputTokens;\n return params;\n }\n\n override toJSON(): Serialized {\n const result = super.toJSON();\n\n if (\n \"kwargs\" in result &&\n typeof result.kwargs === \"object\" &&\n result.kwargs != null\n ) {\n delete (result.kwargs as Record<string, unknown>).apiKey;\n }\n\n return result;\n }\n\n // -------------------------------------------------------------------------\n // Invocation Params\n // -------------------------------------------------------------------------\n\n invocationParams(\n options?: this[\"ParsedCallOptions\"]\n ): ChatXAIResponsesInvocationParams {\n return {\n model: this.model,\n temperature: this.temperature,\n top_p: this.topP,\n max_output_tokens: this.maxOutputTokens,\n store: this.store,\n user: this.user,\n stream: this.streaming,\n previous_response_id: options?.previous_response_id,\n include: options?.include,\n text: options?.text,\n search_parameters: options?.search_parameters ?? this.searchParameters,\n reasoning: options?.reasoning ?? this.reasoning,\n tools: options?.tools ?? this.tools,\n tool_choice: options?.tool_choice,\n parallel_tool_calls: options?.parallel_tool_calls,\n };\n }\n\n // -------------------------------------------------------------------------\n // API Call Methods\n // -------------------------------------------------------------------------\n\n /**\n * Makes a request to the xAI Responses API.\n */\n protected async _makeRequest(\n request: XAIResponsesCreateParamsNonStreaming\n ): Promise<XAIResponse>;\n\n protected async _makeRequest(\n request: XAIResponsesCreateParamsStreaming\n ): Promise<AsyncIterable<XAIResponsesStreamEvent>>;\n\n protected async _makeRequest(\n request: XAIResponsesCreateParams\n ): Promise<XAIResponse | AsyncIterable<XAIResponsesStreamEvent>> {\n const url = `${this.baseURL}/responses`;\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.apiKey}`,\n };\n\n if (request.stream) {\n return this._makeStreamingRequest(url, headers, request);\n }\n\n const response = await this.caller.call(async () => {\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n\n if (!res.ok) {\n const errorBody = await res.text();\n throw new Error(\n `xAI API error: ${res.status} ${res.statusText} - ${errorBody}`\n );\n }\n\n return res.json();\n });\n\n return response as XAIResponse;\n }\n\n /**\n * Makes a streaming request to the xAI Responses API.\n */\n protected async *_makeStreamingRequest(\n url: string,\n headers: Record<string, string>,\n request: XAIResponsesCreateParams\n ): AsyncIterable<XAIResponsesStreamEvent> {\n const response = await this.caller.call(async () => {\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n\n if (!res.ok) {\n const errorBody = await res.text();\n throw new Error(\n `xAI API error: ${res.status} ${res.statusText} - ${errorBody}`\n );\n }\n\n return res;\n });\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error(\"No response body\");\n }\n\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed === \"data: [DONE]\") continue;\n\n if (trimmed.startsWith(\"data: \")) {\n try {\n const data = JSON.parse(trimmed.slice(6));\n yield data as XAIResponsesStreamEvent;\n } catch {\n // Skip invalid JSON\n }\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n }\n\n // -------------------------------------------------------------------------\n // Generation Methods\n // -------------------------------------------------------------------------\n\n async _generate(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n options.signal?.throwIfAborted();\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n if (invocationParams.stream) {\n const stream = this._streamResponseChunks(messages, options, runManager);\n let finalChunk: ChatGenerationChunk | undefined;\n\n for await (const chunk of stream) {\n chunk.message.response_metadata = {\n ...chunk.generationInfo,\n ...chunk.message.response_metadata,\n };\n finalChunk = finalChunk?.concat(chunk) ?? chunk;\n }\n\n return {\n generations: finalChunk ? [finalChunk] : [],\n llmOutput: {\n estimatedTokenUsage: (finalChunk?.message as AIMessage | undefined)\n ?.usage_metadata,\n },\n };\n }\n\n const response = await this._makeRequest({\n input,\n ...invocationParams,\n stream: false,\n } as XAIResponsesCreateParamsNonStreaming);\n\n const aiMessage = convertResponseToAIMessage(response);\n const text = extractTextFromOutput(response.output);\n\n return {\n generations: [\n {\n text,\n message: aiMessage,\n },\n ],\n llmOutput: {\n id: response.id,\n estimatedTokenUsage: response.usage\n ? {\n promptTokens: response.usage.input_tokens,\n completionTokens: response.usage.output_tokens,\n totalTokens: response.usage.total_tokens,\n }\n : undefined,\n },\n };\n }\n\n async *_streamChatModelEvents(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatModelStreamEvent> {\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n const streamIterable = await this._makeRequest({\n input,\n ...invocationParams,\n stream: true,\n } as XAIResponsesCreateParamsStreaming);\n\n const shouldStreamUsage = options.streamUsage ?? true;\n\n const abortableStream = async function* (\n source: AsyncIterable<XAIResponsesStreamEvent>,\n signal?: AbortSignal\n ) {\n for await (const event of source) {\n if (signal?.aborted) {\n return;\n }\n yield event;\n }\n };\n\n yield* convertXAIResponsesStream(\n abortableStream(streamIterable, options.signal),\n { streamUsage: shouldStreamUsage }\n );\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n const streamIterable = await this._makeRequest({\n input,\n ...invocationParams,\n stream: true,\n } as XAIResponsesCreateParamsStreaming);\n\n for await (const event of streamIterable) {\n if (options.signal?.aborted) {\n return;\n }\n const chunk = convertStreamEventToChunk(event);\n if (chunk) {\n yield chunk;\n await runManager?.handleLLMNewToken(chunk.text || \"\", {\n prompt: 0,\n completion: 0,\n });\n }\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"responses.js","names":[],"sources":["../../src/chat_models/responses.ts"],"sourcesContent":["import { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport type { ChatModelStreamEvent } from \"@langchain/core/language_models/event\";\nimport { AIMessage, BaseMessage } from \"@langchain/core/messages\";\nimport {\n BaseChatModel,\n type LangSmithParams,\n} from \"@langchain/core/language_models/chat_models\";\nimport { ChatGenerationChunk, type ChatResult } from \"@langchain/core/outputs\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { Serialized } from \"@langchain/core/load/serializable\";\n\nimport type {\n ChatXAIResponsesCallOptions,\n ChatXAIResponsesInput,\n ChatXAIResponsesInvocationParams,\n XAIResponse,\n XAIResponsesCreateParams,\n XAIResponsesCreateParamsNonStreaming,\n XAIResponsesCreateParamsStreaming,\n XAIResponsesReasoning,\n XAIResponsesSearchParameters,\n XAIResponsesStreamEvent,\n XAIResponsesTool,\n} from \"./responses-types.js\";\n\nimport {\n convertMessagesToResponsesInput,\n convertResponseToAIMessage,\n convertStreamEventToChunk,\n extractTextFromOutput,\n} from \"../converters/responses.js\";\nimport { convertXAIResponsesStream } from \"../utils/responses_stream_events.js\";\n\n// Re-export types for convenience\nexport type {\n ChatXAIResponsesCallOptions,\n ChatXAIResponsesInput,\n ChatXAIResponsesInvocationParams,\n};\n\n// ============================================================================\n// Main Class\n// ============================================================================\n\n/**\n * xAI Responses API chat model integration.\n *\n * This class provides access to xAI's Responses API, which offers enhanced\n * capabilities including built-in tools, reasoning, and search.\n *\n * @example\n * ```typescript\n * import { ChatXAIResponses } from \"@langchain/xai\";\n *\n * const llm = new ChatXAIResponses({\n * model: \"grok-3\",\n * temperature: 0.7,\n * });\n *\n * const result = await llm.invoke(\"What is the capital of France?\");\n * console.log(result.content);\n * ```\n */\nexport class ChatXAIResponses<\n CallOptions extends ChatXAIResponsesCallOptions = ChatXAIResponsesCallOptions,\n> extends BaseChatModel<CallOptions> {\n static lc_name() {\n return \"ChatXAIResponses\";\n }\n\n lc_serializable = true;\n\n lc_namespace = [\"langchain\", \"chat_models\", \"xai\"];\n\n get lc_secrets(): { [key: string]: string } | undefined {\n return {\n apiKey: \"XAI_API_KEY\",\n };\n }\n\n get lc_aliases(): { [key: string]: string } | undefined {\n return {\n apiKey: \"xai_api_key\",\n };\n }\n\n // -------------------------------------------------------------------------\n // Instance Properties\n // -------------------------------------------------------------------------\n\n apiKey: string;\n\n model: string;\n\n streaming: boolean;\n\n temperature?: number;\n\n topP?: number;\n\n maxOutputTokens?: number;\n\n store?: boolean;\n\n user?: string;\n\n baseURL: string;\n\n searchParameters?: XAIResponsesSearchParameters;\n\n reasoning?: XAIResponsesReasoning;\n\n tools?: XAIResponsesTool[];\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(model: string, fields?: Omit<ChatXAIResponsesInput, \"model\">);\n constructor(fields?: ChatXAIResponsesInput);\n constructor(\n modelOrFields?: string | ChatXAIResponsesInput,\n fieldsArg?: Omit<ChatXAIResponsesInput, \"model\">\n ) {\n const fields =\n typeof modelOrFields === \"string\"\n ? { ...(fieldsArg ?? {}), model: modelOrFields }\n : (modelOrFields ?? {});\n super(fields);\n\n this._addVersion(\"@langchain/xai\", __PKG_VERSION__);\n\n const apiKey = fields?.apiKey ?? getEnvironmentVariable(\"XAI_API_KEY\");\n if (!apiKey) {\n throw new Error(\n `xAI API key not found. Please set the XAI_API_KEY environment variable or provide the key in the \"apiKey\" field.`\n );\n }\n\n this.apiKey = apiKey;\n this.model = fields?.model ?? \"grok-3\";\n this.streaming = fields?.streaming ?? false;\n this.temperature = fields?.temperature;\n this.topP = fields?.topP;\n this.maxOutputTokens = fields?.maxOutputTokens;\n this.store = fields?.store;\n this.user = fields?.user;\n this.baseURL = fields?.baseURL ?? \"https://api.x.ai/v1\";\n this.searchParameters = fields?.searchParameters;\n this.reasoning = fields?.reasoning;\n this.tools = fields?.tools;\n }\n\n // -------------------------------------------------------------------------\n // Metadata Methods\n // -------------------------------------------------------------------------\n\n _llmType(): string {\n return \"xai-responses\";\n }\n\n override getLsParams(options: this[\"ParsedCallOptions\"]): LangSmithParams {\n const params = super.getLsParams(options);\n params.ls_provider = \"xai\";\n params.ls_model_name = this.model;\n params.ls_model_type = \"chat\";\n params.ls_temperature = this.temperature;\n params.ls_max_tokens = this.maxOutputTokens;\n return params;\n }\n\n override toJSON(): Serialized {\n const result = super.toJSON();\n\n if (\n \"kwargs\" in result &&\n typeof result.kwargs === \"object\" &&\n result.kwargs != null\n ) {\n delete (result.kwargs as Record<string, unknown>).apiKey;\n }\n\n return result;\n }\n\n // -------------------------------------------------------------------------\n // Invocation Params\n // -------------------------------------------------------------------------\n\n invocationParams(\n options?: this[\"ParsedCallOptions\"]\n ): ChatXAIResponsesInvocationParams {\n return {\n model: this.model,\n temperature: this.temperature,\n top_p: this.topP,\n max_output_tokens: this.maxOutputTokens,\n store: this.store,\n user: this.user,\n stream: this.streaming,\n previous_response_id: options?.previous_response_id,\n include: options?.include,\n text: options?.text,\n search_parameters: options?.search_parameters ?? this.searchParameters,\n reasoning: options?.reasoning ?? this.reasoning,\n tools: options?.tools ?? this.tools,\n tool_choice: options?.tool_choice,\n parallel_tool_calls: options?.parallel_tool_calls,\n };\n }\n\n // -------------------------------------------------------------------------\n // API Call Methods\n // -------------------------------------------------------------------------\n\n /**\n * Makes a request to the xAI Responses API.\n */\n protected async _makeRequest(\n request: XAIResponsesCreateParamsNonStreaming\n ): Promise<XAIResponse>;\n\n protected async _makeRequest(\n request: XAIResponsesCreateParamsStreaming\n ): Promise<AsyncIterable<XAIResponsesStreamEvent>>;\n\n protected async _makeRequest(\n request: XAIResponsesCreateParams\n ): Promise<XAIResponse | AsyncIterable<XAIResponsesStreamEvent>> {\n const url = `${this.baseURL}/responses`;\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.apiKey}`,\n };\n\n if (request.stream) {\n return this._makeStreamingRequest(url, headers, request);\n }\n\n const response = await this.caller.call(async () => {\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n\n if (!res.ok) {\n const errorBody = await res.text();\n throw new Error(\n `xAI API error: ${res.status} ${res.statusText} - ${errorBody}`\n );\n }\n\n return res.json();\n });\n\n return response as XAIResponse;\n }\n\n /**\n * Makes a streaming request to the xAI Responses API.\n */\n protected async *_makeStreamingRequest(\n url: string,\n headers: Record<string, string>,\n request: XAIResponsesCreateParams\n ): AsyncIterable<XAIResponsesStreamEvent> {\n const response = await this.caller.call(async () => {\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n\n if (!res.ok) {\n const errorBody = await res.text();\n throw new Error(\n `xAI API error: ${res.status} ${res.statusText} - ${errorBody}`\n );\n }\n\n return res;\n });\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error(\"No response body\");\n }\n\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed === \"data: [DONE]\") continue;\n\n if (trimmed.startsWith(\"data: \")) {\n try {\n const data = JSON.parse(trimmed.slice(6));\n yield data as XAIResponsesStreamEvent;\n } catch {\n // Skip invalid JSON\n }\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n }\n\n // -------------------------------------------------------------------------\n // Generation Methods\n // -------------------------------------------------------------------------\n\n async _generate(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n options.signal?.throwIfAborted();\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n if (invocationParams.stream) {\n const stream = this._streamResponseChunks(messages, options, runManager);\n let finalChunk: ChatGenerationChunk | undefined;\n\n for await (const chunk of stream) {\n chunk.message.response_metadata = {\n ...chunk.generationInfo,\n ...chunk.message.response_metadata,\n };\n finalChunk = finalChunk?.concat(chunk) ?? chunk;\n }\n\n return {\n generations: finalChunk ? [finalChunk] : [],\n llmOutput: {\n estimatedTokenUsage: (finalChunk?.message as AIMessage | undefined)\n ?.usage_metadata,\n },\n };\n }\n\n const response = await this._makeRequest({\n input,\n ...invocationParams,\n stream: false,\n } as XAIResponsesCreateParamsNonStreaming);\n\n const aiMessage = convertResponseToAIMessage(response);\n const text = extractTextFromOutput(response.output);\n\n return {\n generations: [\n {\n text,\n message: aiMessage,\n },\n ],\n llmOutput: {\n id: response.id,\n estimatedTokenUsage: response.usage\n ? {\n promptTokens: response.usage.input_tokens,\n completionTokens: response.usage.output_tokens,\n totalTokens: response.usage.total_tokens,\n }\n : undefined,\n },\n };\n }\n\n async *_streamChatModelEvents(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatModelStreamEvent> {\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n const streamIterable = await this._makeRequest({\n input,\n ...invocationParams,\n stream: true,\n } as XAIResponsesCreateParamsStreaming);\n\n const shouldStreamUsage = options.streamUsage ?? true;\n\n const abortableStream = async function* (\n source: AsyncIterable<XAIResponsesStreamEvent>,\n signal?: AbortSignal\n ) {\n for await (const event of source) {\n if (signal?.aborted) {\n return;\n }\n yield event;\n }\n };\n\n yield* convertXAIResponsesStream(\n abortableStream(streamIterable, options.signal),\n { streamUsage: shouldStreamUsage }\n );\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n const streamIterable = await this._makeRequest({\n input,\n ...invocationParams,\n stream: true,\n } as XAIResponsesCreateParamsStreaming);\n\n for await (const event of streamIterable) {\n if (options.signal?.aborted) {\n return;\n }\n const chunk = convertStreamEventToChunk(event);\n if (chunk) {\n yield chunk;\n await runManager?.handleLLMNewToken(chunk.text || \"\", {\n prompt: 0,\n completion: 0,\n });\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * Web search source configuration for xAI Live Search.
4
4
  * Corresponds to a `{"type": "web", ...}` entry in `search_parameters.sources`.
5
5
  */
6
- interface XAIWebSource {
6
+ export interface XAIWebSource {
7
7
  type: "web";
8
8
  /**
9
9
  * Optional ISO alpha-2 country code used to bias results
@@ -29,7 +29,7 @@ interface XAIWebSource {
29
29
  * News search source configuration for xAI Live Search.
30
30
  * Corresponds to a `{"type": "news", ...}` entry in `search_parameters.sources`.
31
31
  */
32
- interface XAINewsSource {
32
+ export interface XAINewsSource {
33
33
  type: "news";
34
34
  /**
35
35
  * Optional ISO alpha-2 country code used to bias results
@@ -50,7 +50,7 @@ interface XAINewsSource {
50
50
  * X (formerly Twitter) search source configuration for xAI Live Search.
51
51
  * Corresponds to a `{"type": "x", ...}` entry in `search_parameters.sources`.
52
52
  */
53
- interface XAIXSource {
53
+ export interface XAIXSource {
54
54
  type: "x";
55
55
  /**
56
56
  * X handles that should be explicitly included in the search.
@@ -75,7 +75,7 @@ interface XAIXSource {
75
75
  * RSS feed search source configuration for xAI Live Search.
76
76
  * Corresponds to a `{"type": "rss", ...}` entry in `search_parameters.sources`.
77
77
  */
78
- interface XAIRssSource {
78
+ export interface XAIRssSource {
79
79
  type: "rss";
80
80
  /**
81
81
  * Links to RSS feeds to be used as a data source.
@@ -83,7 +83,7 @@ interface XAIRssSource {
83
83
  */
84
84
  links: string[];
85
85
  }
86
- type XAISearchSource = XAIWebSource | XAINewsSource | XAIXSource | XAIRssSource;
86
+ export type XAISearchSource = XAIWebSource | XAINewsSource | XAIXSource | XAIRssSource;
87
87
  /**
88
88
  * Search parameters for xAI's Live Search API.
89
89
  * Controls how the model searches for and retrieves real-time information.
@@ -92,7 +92,7 @@ type XAISearchSource = XAIWebSource | XAINewsSource | XAIXSource | XAIRssSource;
92
92
  * the agentic tool calling approach. Consider using `tools: [{ type: "live_search" }]`
93
93
  * for future compatibility.
94
94
  */
95
- interface XAISearchParameters {
95
+ export interface XAISearchParameters {
96
96
  /**
97
97
  * Controls when the model should perform a search.
98
98
  * - "auto": Let the model decide when to search (default)
@@ -132,7 +132,7 @@ interface XAISearchParameters {
132
132
  /**
133
133
  * Concrete payload shape sent as `search_parameters` to the xAI API.
134
134
  */
135
- interface XAISearchParametersPayload {
135
+ export interface XAISearchParametersPayload {
136
136
  mode: "auto" | "on" | "off";
137
137
  max_search_results?: number;
138
138
  from_date?: string;
@@ -141,5 +141,4 @@ interface XAISearchParametersPayload {
141
141
  sources?: XAISearchSource[];
142
142
  }
143
143
  //#endregion
144
- export { XAINewsSource, XAIRssSource, XAISearchParameters, XAISearchParametersPayload, XAISearchSource, XAIWebSource, XAIXSource };
145
144
  //# sourceMappingURL=live_search.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"live_search.d.cts","names":[],"sources":["../src/live_search.ts"],"mappings":";;;;;UAIiB;EACf;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;;;UAOe;EACf;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;;;UAOe;EACf;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;EAIA;;;;;;UAOe;EACf;;;;;EAKA;;KAGU,kBACR,eACA,gBACA,aACA;;;;;;;;;UAUa;;;;;;;EAOf;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;;;;;EAQA,UAAU;;;;;UAMK;EACf;EACA;EACA;EACA;EACA;EACA,UAAU"}
1
+ {"version":3,"file":"live_search.d.cts","names":[],"sources":["../src/live_search.ts"],"mappings":";;;;;iBAIiB;EACf;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;;;iBAOe;EACf;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;;;iBAOe;EACf;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;EAIA;;;;;;iBAOe;EACf;;;;;EAKA;;YAGU,kBACR,eACA,gBACA,aACA;;;;;;;;;iBAUa;;;;;;;EAOf;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;;;;;EAQA,UAAU;;;;;iBAMK;EACf;EACA;EACA;EACA;EACA;EACA,UAAU"}
@@ -3,7 +3,7 @@
3
3
  * Web search source configuration for xAI Live Search.
4
4
  * Corresponds to a `{"type": "web", ...}` entry in `search_parameters.sources`.
5
5
  */
6
- interface XAIWebSource {
6
+ export interface XAIWebSource {
7
7
  type: "web";
8
8
  /**
9
9
  * Optional ISO alpha-2 country code used to bias results
@@ -29,7 +29,7 @@ interface XAIWebSource {
29
29
  * News search source configuration for xAI Live Search.
30
30
  * Corresponds to a `{"type": "news", ...}` entry in `search_parameters.sources`.
31
31
  */
32
- interface XAINewsSource {
32
+ export interface XAINewsSource {
33
33
  type: "news";
34
34
  /**
35
35
  * Optional ISO alpha-2 country code used to bias results
@@ -50,7 +50,7 @@ interface XAINewsSource {
50
50
  * X (formerly Twitter) search source configuration for xAI Live Search.
51
51
  * Corresponds to a `{"type": "x", ...}` entry in `search_parameters.sources`.
52
52
  */
53
- interface XAIXSource {
53
+ export interface XAIXSource {
54
54
  type: "x";
55
55
  /**
56
56
  * X handles that should be explicitly included in the search.
@@ -75,7 +75,7 @@ interface XAIXSource {
75
75
  * RSS feed search source configuration for xAI Live Search.
76
76
  * Corresponds to a `{"type": "rss", ...}` entry in `search_parameters.sources`.
77
77
  */
78
- interface XAIRssSource {
78
+ export interface XAIRssSource {
79
79
  type: "rss";
80
80
  /**
81
81
  * Links to RSS feeds to be used as a data source.
@@ -83,7 +83,7 @@ interface XAIRssSource {
83
83
  */
84
84
  links: string[];
85
85
  }
86
- type XAISearchSource = XAIWebSource | XAINewsSource | XAIXSource | XAIRssSource;
86
+ export type XAISearchSource = XAIWebSource | XAINewsSource | XAIXSource | XAIRssSource;
87
87
  /**
88
88
  * Search parameters for xAI's Live Search API.
89
89
  * Controls how the model searches for and retrieves real-time information.
@@ -92,7 +92,7 @@ type XAISearchSource = XAIWebSource | XAINewsSource | XAIXSource | XAIRssSource;
92
92
  * the agentic tool calling approach. Consider using `tools: [{ type: "live_search" }]`
93
93
  * for future compatibility.
94
94
  */
95
- interface XAISearchParameters {
95
+ export interface XAISearchParameters {
96
96
  /**
97
97
  * Controls when the model should perform a search.
98
98
  * - "auto": Let the model decide when to search (default)
@@ -132,7 +132,7 @@ interface XAISearchParameters {
132
132
  /**
133
133
  * Concrete payload shape sent as `search_parameters` to the xAI API.
134
134
  */
135
- interface XAISearchParametersPayload {
135
+ export interface XAISearchParametersPayload {
136
136
  mode: "auto" | "on" | "off";
137
137
  max_search_results?: number;
138
138
  from_date?: string;
@@ -141,5 +141,4 @@ interface XAISearchParametersPayload {
141
141
  sources?: XAISearchSource[];
142
142
  }
143
143
  //#endregion
144
- export { XAINewsSource, XAIRssSource, XAISearchParameters, XAISearchParametersPayload, XAISearchSource, XAIWebSource, XAIXSource };
145
144
  //# sourceMappingURL=live_search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"live_search.d.ts","names":[],"sources":["../src/live_search.ts"],"mappings":";;;;;UAIiB;EACf;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;;;UAOe;EACf;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;;;UAOe;EACf;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;EAIA;;;;;;UAOe;EACf;;;;;EAKA;;KAGU,kBACR,eACA,gBACA,aACA;;;;;;;;;UAUa;;;;;;;EAOf;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;;;;;EAQA,UAAU;;;;;UAMK;EACf;EACA;EACA;EACA;EACA;EACA,UAAU"}
1
+ {"version":3,"file":"live_search.d.ts","names":[],"sources":["../src/live_search.ts"],"mappings":";;;;;iBAIiB;EACf;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;;;iBAOe;EACf;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;;;iBAOe;EACf;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;EAIA;;;;;;iBAOe;EACf;;;;;EAKA;;YAGU,kBACR,eACA,gBACA,aACA;;;;;;;;;iBAUa;;;;;;;EAOf;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;;;;;EAQA,UAAU;;;;;iBAMK;EACf;EACA;EACA;EACA;EACA;EACA,UAAU"}
@@ -3,7 +3,7 @@
3
3
  * xAI Code Execution tool type constant.
4
4
  * Note: The Responses API uses "code_interpreter" as the type name.
5
5
  */
6
- declare const XAI_CODE_EXECUTION_TOOL_TYPE = "code_interpreter";
6
+ export declare const XAI_CODE_EXECUTION_TOOL_TYPE = "code_interpreter";
7
7
  /**
8
8
  * xAI's built-in code execution tool interface.
9
9
  * Enables the model to write and execute Python code in real-time.
@@ -15,7 +15,7 @@ declare const XAI_CODE_EXECUTION_TOOL_TYPE = "code_interpreter";
15
15
  * - Scientific computing
16
16
  * - Code generation and testing
17
17
  */
18
- interface XAICodeExecutionTool {
18
+ export interface XAICodeExecutionTool {
19
19
  /**
20
20
  * The type of the tool. Must be "code_interpreter".
21
21
  */
@@ -58,7 +58,6 @@ interface XAICodeExecutionTool {
58
58
  * );
59
59
  * ```
60
60
  */
61
- declare function xaiCodeExecution(): XAICodeExecutionTool;
61
+ export declare function xaiCodeExecution(): XAICodeExecutionTool;
62
62
  //#endregion
63
- export { XAICodeExecutionTool, XAI_CODE_EXECUTION_TOOL_TYPE, xaiCodeExecution };
64
63
  //# sourceMappingURL=code_execution.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"code_execution.d.cts","names":[],"sources":["../../src/tools/code_execution.ts"],"mappings":";;;;;cAIa;;;;;;;;;;;;UAaI;;;;EAIf,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwCC,oBAAoB"}
1
+ {"version":3,"file":"code_execution.d.cts","names":[],"sources":["../../src/tools/code_execution.ts"],"mappings":";;;;;qBAIa;;;;;;;;;;;;iBAaI;;;;EAIf,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAwCC,oBAAoB"}
@@ -3,7 +3,7 @@
3
3
  * xAI Code Execution tool type constant.
4
4
  * Note: The Responses API uses "code_interpreter" as the type name.
5
5
  */
6
- declare const XAI_CODE_EXECUTION_TOOL_TYPE = "code_interpreter";
6
+ export declare const XAI_CODE_EXECUTION_TOOL_TYPE = "code_interpreter";
7
7
  /**
8
8
  * xAI's built-in code execution tool interface.
9
9
  * Enables the model to write and execute Python code in real-time.
@@ -15,7 +15,7 @@ declare const XAI_CODE_EXECUTION_TOOL_TYPE = "code_interpreter";
15
15
  * - Scientific computing
16
16
  * - Code generation and testing
17
17
  */
18
- interface XAICodeExecutionTool {
18
+ export interface XAICodeExecutionTool {
19
19
  /**
20
20
  * The type of the tool. Must be "code_interpreter".
21
21
  */
@@ -58,7 +58,6 @@ interface XAICodeExecutionTool {
58
58
  * );
59
59
  * ```
60
60
  */
61
- declare function xaiCodeExecution(): XAICodeExecutionTool;
61
+ export declare function xaiCodeExecution(): XAICodeExecutionTool;
62
62
  //#endregion
63
- export { XAICodeExecutionTool, XAI_CODE_EXECUTION_TOOL_TYPE, xaiCodeExecution };
64
63
  //# sourceMappingURL=code_execution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"code_execution.d.ts","names":[],"sources":["../../src/tools/code_execution.ts"],"mappings":";;;;;cAIa;;;;;;;;;;;;UAaI;;;;EAIf,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwCC,oBAAoB"}
1
+ {"version":3,"file":"code_execution.d.ts","names":[],"sources":["../../src/tools/code_execution.ts"],"mappings":";;;;;qBAIa;;;;;;;;;;;;iBAaI;;;;EAIf,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAwCC,oBAAoB"}
@@ -3,7 +3,7 @@
3
3
  * xAI Collections Search tool type constant.
4
4
  * Note: The Responses API uses "file_search" as the type name.
5
5
  */
6
- declare const XAI_COLLECTIONS_SEARCH_TOOL_TYPE = "file_search";
6
+ export declare const XAI_COLLECTIONS_SEARCH_TOOL_TYPE = "file_search";
7
7
  /**
8
8
  * xAI's built-in collections search tool interface.
9
9
  * Enables the model to search through uploaded knowledge bases (collections)
@@ -16,7 +16,7 @@ declare const XAI_COLLECTIONS_SEARCH_TOOL_TYPE = "file_search";
16
16
  * - RAG (Retrieval-Augmented Generation) applications
17
17
  * - Enterprise knowledge base queries
18
18
  */
19
- interface XAICollectionsSearchTool {
19
+ export interface XAICollectionsSearchTool {
20
20
  /**
21
21
  * The type of the tool. Must be "file_search".
22
22
  */
@@ -32,7 +32,7 @@ interface XAICollectionsSearchTool {
32
32
  * All fields are camel-cased for the TypeScript API and are mapped to the
33
33
  * corresponding snake_case fields in the API request.
34
34
  */
35
- interface XAICollectionsSearchToolOptions {
35
+ export interface XAICollectionsSearchToolOptions {
36
36
  /**
37
37
  * List of vector store (collection) IDs to search.
38
38
  * These are the IDs of collections created via the xAI Collections API.
@@ -84,7 +84,6 @@ interface XAICollectionsSearchToolOptions {
84
84
  * );
85
85
  * ```
86
86
  */
87
- declare function xaiCollectionsSearch(options?: XAICollectionsSearchToolOptions): XAICollectionsSearchTool;
87
+ export declare function xaiCollectionsSearch(options?: XAICollectionsSearchToolOptions): XAICollectionsSearchTool;
88
88
  //#endregion
89
- export { XAICollectionsSearchTool, XAICollectionsSearchToolOptions, XAI_COLLECTIONS_SEARCH_TOOL_TYPE, xaiCollectionsSearch };
90
89
  //# sourceMappingURL=collections_search.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collections_search.d.cts","names":[],"sources":["../../src/tools/collections_search.ts"],"mappings":";;;;;cAIa;;;;;;;;;;;;;UAcI;;;;EAIf,aAAa;;;;;EAKb;;;;;;;UAQe;;;;;;;EAOf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8Cc,qBACd,UAAS,kCACR"}
1
+ {"version":3,"file":"collections_search.d.cts","names":[],"sources":["../../src/tools/collections_search.ts"],"mappings":";;;;;qBAIa;;;;;;;;;;;;;iBAcI;;;;EAIf,aAAa;;;;;EAKb;;;;;;;iBAQe;;;;;;;EAOf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA8Cc,qBACd,UAAS,kCACR"}
@@ -3,7 +3,7 @@
3
3
  * xAI Collections Search tool type constant.
4
4
  * Note: The Responses API uses "file_search" as the type name.
5
5
  */
6
- declare const XAI_COLLECTIONS_SEARCH_TOOL_TYPE = "file_search";
6
+ export declare const XAI_COLLECTIONS_SEARCH_TOOL_TYPE = "file_search";
7
7
  /**
8
8
  * xAI's built-in collections search tool interface.
9
9
  * Enables the model to search through uploaded knowledge bases (collections)
@@ -16,7 +16,7 @@ declare const XAI_COLLECTIONS_SEARCH_TOOL_TYPE = "file_search";
16
16
  * - RAG (Retrieval-Augmented Generation) applications
17
17
  * - Enterprise knowledge base queries
18
18
  */
19
- interface XAICollectionsSearchTool {
19
+ export interface XAICollectionsSearchTool {
20
20
  /**
21
21
  * The type of the tool. Must be "file_search".
22
22
  */
@@ -32,7 +32,7 @@ interface XAICollectionsSearchTool {
32
32
  * All fields are camel-cased for the TypeScript API and are mapped to the
33
33
  * corresponding snake_case fields in the API request.
34
34
  */
35
- interface XAICollectionsSearchToolOptions {
35
+ export interface XAICollectionsSearchToolOptions {
36
36
  /**
37
37
  * List of vector store (collection) IDs to search.
38
38
  * These are the IDs of collections created via the xAI Collections API.
@@ -84,7 +84,6 @@ interface XAICollectionsSearchToolOptions {
84
84
  * );
85
85
  * ```
86
86
  */
87
- declare function xaiCollectionsSearch(options?: XAICollectionsSearchToolOptions): XAICollectionsSearchTool;
87
+ export declare function xaiCollectionsSearch(options?: XAICollectionsSearchToolOptions): XAICollectionsSearchTool;
88
88
  //#endregion
89
- export { XAICollectionsSearchTool, XAICollectionsSearchToolOptions, XAI_COLLECTIONS_SEARCH_TOOL_TYPE, xaiCollectionsSearch };
90
89
  //# sourceMappingURL=collections_search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collections_search.d.ts","names":[],"sources":["../../src/tools/collections_search.ts"],"mappings":";;;;;cAIa;;;;;;;;;;;;;UAcI;;;;EAIf,aAAa;;;;;EAKb;;;;;;;UAQe;;;;;;;EAOf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8Cc,qBACd,UAAS,kCACR"}
1
+ {"version":3,"file":"collections_search.d.ts","names":[],"sources":["../../src/tools/collections_search.ts"],"mappings":";;;;;qBAIa;;;;;;;;;;;;;iBAcI;;;;EAIf,aAAa;;;;;EAKb;;;;;;;iBAQe;;;;;;;EAOf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA8Cc,qBACd,UAAS,kCACR"}
@@ -4,7 +4,7 @@ import { XAIXSearchTool, XAIXSearchToolOptions, XAI_X_SEARCH_TOOL_TYPE, xaiXSear
4
4
  import { XAICodeExecutionTool, XAI_CODE_EXECUTION_TOOL_TYPE, xaiCodeExecution } from "./code_execution.cjs";
5
5
  import { XAICollectionsSearchTool, XAICollectionsSearchToolOptions, XAI_COLLECTIONS_SEARCH_TOOL_TYPE, xaiCollectionsSearch } from "./collections_search.cjs";
6
6
  //#region src/tools/index.d.ts
7
- declare const tools: {
7
+ export declare const tools: {
8
8
  /** @deprecated Use xaiWebSearch and xaiXSearch instead */
9
9
  xaiLiveSearch: typeof xaiLiveSearch;
10
10
  xaiWebSearch: typeof xaiWebSearch;
@@ -13,5 +13,4 @@ declare const tools: {
13
13
  xaiCollectionsSearch: typeof xaiCollectionsSearch;
14
14
  };
15
15
  //#endregion
16
- export { tools };
17
16
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/tools/index.ts"],"mappings":";;;;;;cAMa"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/tools/index.ts"],"mappings":";;;;;;qBAMa"}
@@ -4,7 +4,7 @@ import { XAIXSearchTool, XAIXSearchToolOptions, XAI_X_SEARCH_TOOL_TYPE, xaiXSear
4
4
  import { XAICodeExecutionTool, XAI_CODE_EXECUTION_TOOL_TYPE, xaiCodeExecution } from "./code_execution.js";
5
5
  import { XAICollectionsSearchTool, XAICollectionsSearchToolOptions, XAI_COLLECTIONS_SEARCH_TOOL_TYPE, xaiCollectionsSearch } from "./collections_search.js";
6
6
  //#region src/tools/index.d.ts
7
- declare const tools: {
7
+ export declare const tools: {
8
8
  /** @deprecated Use xaiWebSearch and xaiXSearch instead */
9
9
  xaiLiveSearch: typeof xaiLiveSearch;
10
10
  xaiWebSearch: typeof xaiWebSearch;
@@ -13,5 +13,4 @@ declare const tools: {
13
13
  xaiCollectionsSearch: typeof xaiCollectionsSearch;
14
14
  };
15
15
  //#endregion
16
- export { tools };
17
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/tools/index.ts"],"mappings":";;;;;;cAMa"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/tools/index.ts"],"mappings":";;;;;;qBAMa"}