{"version":3,"file":"index.cjs","sources":["../../../../src/llm/openai/index.ts"],"sourcesContent":["import { AzureOpenAI as AzureOpenAIClient } from 'openai';\nimport { ChatXAI as OriginalChatXAI } from '@langchain/xai';\nimport { ChatGenerationChunk } from '@langchain/core/outputs';\nimport { AIMessage, AIMessageChunk } from '@langchain/core/messages';\nimport { ToolDefinition } from '@langchain/core/language_models/base';\nimport { isLangChainTool } from '@langchain/core/utils/function_calling';\nimport { ChatDeepSeek as OriginalChatDeepSeek } from '@langchain/deepseek';\nimport { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager';\nimport {\n  getEndpoint,\n  OpenAIClient,\n  formatToOpenAITool,\n  ChatOpenAI as OriginalChatOpenAI,\n  AzureChatOpenAI as OriginalAzureChatOpenAI,\n} from '@langchain/openai';\nimport type {\n  OpenAIChatCallOptions,\n  OpenAIRoleEnum,\n  HeaderValue,\n  HeadersLike,\n} from './types';\nimport type { BindToolsInput } from '@langchain/core/language_models/chat_models';\nimport type { BaseMessage, UsageMetadata } from '@langchain/core/messages';\nimport type { ChatResult, ChatGeneration } from '@langchain/core/outputs';\nimport type { ChatXAIInput } from '@langchain/xai';\nimport type * as t from '@langchain/openai';\nimport {\n  isReasoningModel,\n  _convertMessagesToOpenAIParams,\n  _convertMessagesToOpenAIResponsesParams,\n  _convertOpenAIResponsesDeltaToBaseMessageChunk,\n  type ResponseReturnStreamEvents,\n} from './utils';\nimport { sleep } from '@/utils';\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nconst iife = <T>(fn: () => T) => fn();\n\nexport function isHeaders(headers: unknown): headers is Headers {\n  return (\n    typeof Headers !== 'undefined' &&\n    headers !== null &&\n    typeof headers === 'object' &&\n    Object.prototype.toString.call(headers) === '[object Headers]'\n  );\n}\n\nexport function normalizeHeaders(\n  headers: HeadersLike\n): Record<string, HeaderValue | readonly HeaderValue[]> {\n  const output = iife(() => {\n    // If headers is a Headers instance\n    if (isHeaders(headers)) {\n      return headers;\n    }\n    // If headers is an array of [key, value] pairs\n    else if (Array.isArray(headers)) {\n      return new Headers(headers);\n    }\n    // If headers is a NullableHeaders-like object (has 'values' property that is a Headers)\n    else if (\n      typeof headers === 'object' &&\n      headers !== null &&\n      'values' in headers &&\n      isHeaders(headers.values)\n    ) {\n      return headers.values;\n    }\n    // If headers is a plain object\n    else if (typeof headers === 'object' && headers !== null) {\n      const entries: [string, string][] = Object.entries(headers)\n        .filter(([, v]) => typeof v === 'string')\n        .map(([k, v]) => [k, v as string]);\n      return new Headers(entries);\n    }\n    return new Headers();\n  });\n\n  return Object.fromEntries(output.entries());\n}\n\ntype OpenAICompletionParam =\n  OpenAIClient.Chat.Completions.ChatCompletionMessageParam;\n\ntype OpenAICoreRequestOptions = OpenAIClient.RequestOptions;\n\nfunction createAbortHandler(controller: AbortController): () => void {\n  return function (): void {\n    controller.abort();\n  };\n}\n/**\n * Formats a tool in either OpenAI format, or LangChain structured tool format\n * into an OpenAI tool format. If the tool is already in OpenAI format, return without\n * any changes. If it is in LangChain structured tool format, convert it to OpenAI tool format\n * using OpenAI's `zodFunction` util, falling back to `convertToOpenAIFunction` if the parameters\n * returned from the `zodFunction` util are not defined.\n *\n * @param {BindToolsInput} tool The tool to convert to an OpenAI tool.\n * @param {Object} [fields] Additional fields to add to the OpenAI tool.\n * @returns {ToolDefinition} The inputted tool in OpenAI tool format.\n */\nexport function _convertToOpenAITool(\n  tool: BindToolsInput,\n  fields?: {\n    /**\n     * If `true`, model output is guaranteed to exactly match the JSON Schema\n     * provided in the function definition.\n     */\n    strict?: boolean;\n  }\n): OpenAIClient.ChatCompletionTool {\n  let toolDef: OpenAIClient.ChatCompletionTool | undefined;\n\n  if (isLangChainTool(tool)) {\n    toolDef = formatToOpenAITool(tool);\n  } else {\n    toolDef = tool as ToolDefinition;\n  }\n\n  if (fields?.strict !== undefined) {\n    toolDef.function.strict = fields.strict;\n  }\n\n  return toolDef;\n}\nexport class CustomOpenAIClient extends OpenAIClient {\n  abortHandler?: () => void;\n  async fetchWithTimeout(\n    url: RequestInfo,\n    init: RequestInit | undefined,\n    ms: number,\n    controller: AbortController\n  ): Promise<Response> {\n    const { signal, ...options } = init || {};\n    const handler = createAbortHandler(controller);\n    this.abortHandler = handler;\n    if (signal) signal.addEventListener('abort', handler, { once: true });\n\n    const timeout = setTimeout(() => handler, ms);\n\n    const fetchOptions = {\n      signal: controller.signal as AbortSignal,\n      ...options,\n    };\n    if (fetchOptions.method != null) {\n      // Custom methods like 'patch' need to be uppercased\n      // See https://github.com/nodejs/undici/issues/2294\n      fetchOptions.method = fetchOptions.method.toUpperCase();\n    }\n\n    return (\n      // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      /** @ts-ignore */\n      this.fetch.call(undefined, url, fetchOptions).finally(() => {\n        clearTimeout(timeout);\n      })\n    );\n  }\n}\nexport class CustomAzureOpenAIClient extends AzureOpenAIClient {\n  abortHandler?: () => void;\n  async fetchWithTimeout(\n    url: RequestInfo,\n    init: RequestInit | undefined,\n    ms: number,\n    controller: AbortController\n  ): Promise<Response> {\n    const { signal, ...options } = init || {};\n    const handler = createAbortHandler(controller);\n    this.abortHandler = handler;\n    if (signal) signal.addEventListener('abort', handler, { once: true });\n\n    const timeout = setTimeout(() => handler, ms);\n\n    const fetchOptions = {\n      signal: controller.signal as AbortSignal,\n      ...options,\n    };\n    if (fetchOptions.method != null) {\n      // Custom methods like 'patch' need to be uppercased\n      // See https://github.com/nodejs/undici/issues/2294\n      fetchOptions.method = fetchOptions.method.toUpperCase();\n    }\n\n    return (\n      // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      /** @ts-ignore */\n      this.fetch.call(undefined, url, fetchOptions).finally(() => {\n        clearTimeout(timeout);\n      })\n    );\n  }\n}\n\n/** @ts-expect-error We are intentionally overriding `getReasoningParams` */\nexport class ChatOpenAI extends OriginalChatOpenAI<t.ChatOpenAICallOptions> {\n  _lc_stream_delay?: number;\n\n  constructor(\n    fields?: t.ChatOpenAICallOptions & {\n      _lc_stream_delay?: number;\n    } & t.OpenAIChatInput['modelKwargs']\n  ) {\n    super(fields);\n    this._lc_stream_delay = fields?._lc_stream_delay;\n  }\n\n  public get exposedClient(): CustomOpenAIClient {\n    return this.client;\n  }\n  static lc_name(): string {\n    return 'IllumaOpenAI';\n  }\n  protected _getClientOptions(\n    options?: OpenAICoreRequestOptions\n  ): OpenAICoreRequestOptions {\n    if (!(this.client as OpenAIClient | undefined)) {\n      const openAIEndpointConfig: t.OpenAIEndpointConfig = {\n        baseURL: this.clientConfig.baseURL,\n      };\n\n      const endpoint = getEndpoint(openAIEndpointConfig);\n      const params = {\n        ...this.clientConfig,\n        baseURL: endpoint,\n        timeout: this.timeout,\n        maxRetries: 0,\n      };\n      if (params.baseURL == null) {\n        delete params.baseURL;\n      }\n\n      this.client = new CustomOpenAIClient(params);\n    }\n    const requestOptions = {\n      ...this.clientConfig,\n      ...options,\n    } as OpenAICoreRequestOptions;\n    return requestOptions;\n  }\n\n  /**\n   * Returns backwards compatible reasoning parameters from constructor params and call options\n   * @internal\n   */\n  getReasoningParams(\n    options?: this['ParsedCallOptions']\n  ): OpenAIClient.Reasoning | undefined {\n    // apply options in reverse order of importance -- newer options supersede older options\n    let reasoning: OpenAIClient.Reasoning | undefined;\n    if (this.reasoning !== undefined) {\n      reasoning = {\n        ...reasoning,\n        ...this.reasoning,\n      };\n    }\n    if (options?.reasoning !== undefined) {\n      reasoning = {\n        ...reasoning,\n        ...options.reasoning,\n      };\n    }\n\n    return reasoning;\n  }\n\n  protected _getReasoningParams(\n    options?: this['ParsedCallOptions']\n  ): OpenAIClient.Reasoning | undefined {\n    return this.getReasoningParams(options);\n  }\n\n  async *_streamResponseChunks(\n    messages: BaseMessage[],\n    options: this['ParsedCallOptions'],\n    runManager?: CallbackManagerForLLMRun\n  ): AsyncGenerator<ChatGenerationChunk> {\n    if (!this._useResponseApi(options)) {\n      return yield* this._streamResponseChunks2(messages, options, runManager);\n    }\n    const streamIterable = await this.responseApiWithRetry(\n      {\n        ...this.invocationParams<'responses'>(options, { streaming: true }),\n        input: _convertMessagesToOpenAIResponsesParams(\n          messages,\n          this.model,\n          this.zdrEnabled\n        ),\n        stream: true,\n      },\n      options\n    );\n\n    for await (const data of streamIterable) {\n      const chunk = _convertOpenAIResponsesDeltaToBaseMessageChunk(\n        data as ResponseReturnStreamEvents\n      );\n      if (chunk == null) continue;\n      yield chunk;\n      if (this._lc_stream_delay != null) {\n        await sleep(this._lc_stream_delay);\n      }\n      await runManager?.handleLLMNewToken(\n        chunk.text || '',\n        undefined,\n        undefined,\n        undefined,\n        undefined,\n        { chunk }\n      );\n    }\n\n    return;\n  }\n\n  async *_streamResponseChunks2(\n    messages: BaseMessage[],\n    options: this['ParsedCallOptions'],\n    runManager?: CallbackManagerForLLMRun\n  ): AsyncGenerator<ChatGenerationChunk> {\n    const messagesMapped: OpenAICompletionParam[] =\n      _convertMessagesToOpenAIParams(messages, this.model);\n\n    const params = {\n      ...this.invocationParams(options, {\n        streaming: true,\n      }),\n      messages: messagesMapped,\n      stream: true as const,\n    };\n    let defaultRole: OpenAIRoleEnum | undefined;\n\n    const streamIterable = await this.completionWithRetry(params, options);\n    let usage: OpenAIClient.Completions.CompletionUsage | undefined;\n    for await (const data of streamIterable) {\n      const choice = data.choices[0] as\n        | Partial<OpenAIClient.Chat.Completions.ChatCompletionChunk.Choice>\n        | undefined;\n      if (data.usage) {\n        usage = data.usage;\n      }\n      if (!choice) {\n        continue;\n      }\n\n      const { delta } = choice;\n      if (!delta) {\n        continue;\n      }\n      const chunk = this._convertOpenAIDeltaToBaseMessageChunk(\n        delta,\n        data,\n        defaultRole\n      );\n      if ('reasoning_content' in delta) {\n        chunk.additional_kwargs.reasoning_content = delta.reasoning_content;\n      } else if ('reasoning' in delta) {\n        chunk.additional_kwargs.reasoning_content = delta.reasoning;\n      }\n      if ('provider_specific_fields' in delta) {\n        chunk.additional_kwargs.provider_specific_fields =\n          delta.provider_specific_fields;\n      }\n      defaultRole = delta.role ?? defaultRole;\n      const newTokenIndices = {\n        prompt: options.promptIndex ?? 0,\n        completion: choice.index ?? 0,\n      };\n      if (typeof chunk.content !== 'string') {\n        // eslint-disable-next-line no-console\n        console.log(\n          '[WARNING]: Received non-string content from OpenAI. This is currently not supported.'\n        );\n        continue;\n      }\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      const generationInfo: Record<string, any> = { ...newTokenIndices };\n      if (choice.finish_reason != null) {\n        generationInfo.finish_reason = choice.finish_reason;\n        // Only include system fingerprint in the last chunk for now\n        // to avoid concatenation issues\n        generationInfo.system_fingerprint = data.system_fingerprint;\n        generationInfo.model_name = data.model;\n        generationInfo.service_tier = data.service_tier;\n      }\n      if (this.logprobs == true) {\n        generationInfo.logprobs = choice.logprobs;\n      }\n      const generationChunk = new ChatGenerationChunk({\n        message: chunk,\n        text: chunk.content,\n        generationInfo,\n      });\n      yield generationChunk;\n      if (this._lc_stream_delay != null) {\n        await sleep(this._lc_stream_delay);\n      }\n      await runManager?.handleLLMNewToken(\n        generationChunk.text || '',\n        newTokenIndices,\n        undefined,\n        undefined,\n        undefined,\n        { chunk: generationChunk }\n      );\n    }\n    if (usage) {\n      const inputTokenDetails = {\n        ...(usage.prompt_tokens_details?.audio_tokens != null && {\n          audio: usage.prompt_tokens_details.audio_tokens,\n        }),\n        ...(usage.prompt_tokens_details?.cached_tokens != null && {\n          cache_read: usage.prompt_tokens_details.cached_tokens,\n        }),\n      };\n      const outputTokenDetails = {\n        ...(usage.completion_tokens_details?.audio_tokens != null && {\n          audio: usage.completion_tokens_details.audio_tokens,\n        }),\n        ...(usage.completion_tokens_details?.reasoning_tokens != null && {\n          reasoning: usage.completion_tokens_details.reasoning_tokens,\n        }),\n      };\n      const generationChunk = new ChatGenerationChunk({\n        message: new AIMessageChunk({\n          content: '',\n          response_metadata: {\n            usage: { ...usage },\n          },\n          usage_metadata: {\n            input_tokens: usage.prompt_tokens,\n            output_tokens: usage.completion_tokens,\n            total_tokens: usage.total_tokens,\n            ...(Object.keys(inputTokenDetails).length > 0 && {\n              input_token_details: inputTokenDetails,\n            }),\n            ...(Object.keys(outputTokenDetails).length > 0 && {\n              output_token_details: outputTokenDetails,\n            }),\n          },\n        }),\n        text: '',\n      });\n      yield generationChunk;\n      if (this._lc_stream_delay != null) {\n        await sleep(this._lc_stream_delay);\n      }\n    }\n    if (options.signal?.aborted === true) {\n      throw new Error('AbortError');\n    }\n  }\n}\n\n/** @ts-expect-error We are intentionally overriding `getReasoningParams` */\nexport class AzureChatOpenAI extends OriginalAzureChatOpenAI {\n  _lc_stream_delay?: number;\n\n  constructor(fields?: t.AzureOpenAIInput & { _lc_stream_delay?: number }) {\n    super(fields);\n    this._lc_stream_delay = fields?._lc_stream_delay;\n  }\n\n  public get exposedClient(): CustomOpenAIClient {\n    return this.client;\n  }\n  static lc_name(): 'IllumaAzureOpenAI' {\n    return 'IllumaAzureOpenAI';\n  }\n  /**\n   * Returns backwards compatible reasoning parameters from constructor params and call options\n   * @internal\n   */\n  getReasoningParams(\n    options?: this['ParsedCallOptions']\n  ): OpenAIClient.Reasoning | undefined {\n    if (!isReasoningModel(this.model)) {\n      return;\n    }\n\n    // apply options in reverse order of importance -- newer options supersede older options\n    let reasoning: OpenAIClient.Reasoning | undefined;\n    if (this.reasoning !== undefined) {\n      reasoning = {\n        ...reasoning,\n        ...this.reasoning,\n      };\n    }\n    if (options?.reasoning !== undefined) {\n      reasoning = {\n        ...reasoning,\n        ...options.reasoning,\n      };\n    }\n\n    return reasoning;\n  }\n\n  protected _getReasoningParams(\n    options?: this['ParsedCallOptions']\n  ): OpenAIClient.Reasoning | undefined {\n    return this.getReasoningParams(options);\n  }\n\n  protected _getClientOptions(\n    options: OpenAICoreRequestOptions | undefined\n  ): OpenAICoreRequestOptions {\n    if (!(this.client as unknown as AzureOpenAIClient | undefined)) {\n      const openAIEndpointConfig: t.OpenAIEndpointConfig = {\n        azureOpenAIApiDeploymentName: this.azureOpenAIApiDeploymentName,\n        azureOpenAIApiInstanceName: this.azureOpenAIApiInstanceName,\n        azureOpenAIApiKey: this.azureOpenAIApiKey,\n        azureOpenAIBasePath: this.azureOpenAIBasePath,\n        azureADTokenProvider: this.azureADTokenProvider,\n        baseURL: this.clientConfig.baseURL,\n      };\n\n      const endpoint = getEndpoint(openAIEndpointConfig);\n\n      const params = {\n        ...this.clientConfig,\n        baseURL: endpoint,\n        timeout: this.timeout,\n        maxRetries: 0,\n      };\n\n      if (!this.azureADTokenProvider) {\n        params.apiKey = openAIEndpointConfig.azureOpenAIApiKey;\n      }\n\n      if (params.baseURL == null) {\n        delete params.baseURL;\n      }\n\n      const defaultHeaders = normalizeHeaders(params.defaultHeaders);\n      params.defaultHeaders = {\n        ...params.defaultHeaders,\n        'User-Agent':\n          defaultHeaders['User-Agent'] != null\n            ? `${defaultHeaders['User-Agent']}: illuma-azure-openai-v2`\n            : 'illuma-azure-openai-v2',\n      };\n\n      this.client = new CustomAzureOpenAIClient({\n        apiVersion: this.azureOpenAIApiVersion,\n        azureADTokenProvider: this.azureADTokenProvider,\n        ...(params as t.AzureOpenAIInput),\n      }) as unknown as CustomOpenAIClient;\n    }\n\n    const requestOptions = {\n      ...this.clientConfig,\n      ...options,\n    } as OpenAICoreRequestOptions;\n    if (this.azureOpenAIApiKey != null) {\n      requestOptions.headers = {\n        'api-key': this.azureOpenAIApiKey,\n        ...requestOptions.headers,\n      };\n      requestOptions.query = {\n        'api-version': this.azureOpenAIApiVersion,\n        ...requestOptions.query,\n      };\n    }\n    return requestOptions;\n  }\n  async *_streamResponseChunks(\n    messages: BaseMessage[],\n    options: this['ParsedCallOptions'],\n    runManager?: CallbackManagerForLLMRun\n  ): AsyncGenerator<ChatGenerationChunk> {\n    if (!this._useResponseApi(options)) {\n      return yield* super._streamResponseChunks(messages, options, runManager);\n    }\n    const streamIterable = await this.responseApiWithRetry(\n      {\n        ...this.invocationParams<'responses'>(options, { streaming: true }),\n        input: _convertMessagesToOpenAIResponsesParams(\n          messages,\n          this.model,\n          this.zdrEnabled\n        ),\n        stream: true,\n      },\n      options\n    );\n\n    for await (const data of streamIterable) {\n      const chunk = _convertOpenAIResponsesDeltaToBaseMessageChunk(\n        data as ResponseReturnStreamEvents\n      );\n      if (chunk == null) continue;\n      yield chunk;\n      if (this._lc_stream_delay != null) {\n        await sleep(this._lc_stream_delay);\n      }\n      await runManager?.handleLLMNewToken(\n        chunk.text || '',\n        undefined,\n        undefined,\n        undefined,\n        undefined,\n        { chunk }\n      );\n    }\n\n    return;\n  }\n}\nexport class ChatDeepSeek extends OriginalChatDeepSeek {\n  public get exposedClient(): CustomOpenAIClient {\n    return this.client;\n  }\n  static lc_name(): 'IllumaDeepSeek' {\n    return 'IllumaDeepSeek';\n  }\n\n  protected _convertMessages(messages: BaseMessage[]): OpenAICompletionParam[] {\n    return _convertMessagesToOpenAIParams(messages, this.model, {\n      includeReasoningContent: true,\n    });\n  }\n\n  async _generate(\n    messages: BaseMessage[],\n    options: this['ParsedCallOptions'] | undefined,\n    runManager?: CallbackManagerForLLMRun\n  ): Promise<ChatResult> {\n    const params = this.invocationParams(options);\n\n    if (params.stream === true) {\n      return super._generate(messages, options ?? {}, runManager);\n    }\n\n    const messagesMapped = this._convertMessages(messages);\n    const data = await this.completionWithRetry(\n      {\n        ...params,\n        stream: false,\n        messages: messagesMapped,\n      },\n      {\n        signal: options?.signal,\n        ...options?.options,\n      }\n    );\n\n    const { completion_tokens, prompt_tokens, total_tokens } = data.usage ?? {};\n\n    const generations = [];\n    for (const part of data.choices ?? []) {\n      const text = part.message.content ?? '';\n      const generation: ChatGeneration = {\n        text: typeof text === 'string' ? text : '',\n        message: this._convertResponseToMessage(part, data),\n      };\n      generation.generationInfo = {\n        ...(part.finish_reason != null\n          ? { finish_reason: part.finish_reason }\n          : {}),\n        ...(part.logprobs ? { logprobs: part.logprobs } : {}),\n      };\n      generations.push(generation);\n    }\n\n    return {\n      generations,\n      llmOutput: {\n        tokenUsage: {\n          completionTokens: completion_tokens,\n          promptTokens: prompt_tokens,\n          totalTokens: total_tokens,\n        },\n      },\n    };\n  }\n\n  protected _convertResponseToMessage(\n    choice: OpenAIClient.Chat.Completions.ChatCompletion.Choice,\n    data: OpenAIClient.Chat.Completions.ChatCompletion\n  ): AIMessage {\n    const { message } = choice;\n    const rawToolCalls = message.tool_calls;\n    const toolCalls = rawToolCalls?.map((tc) => ({\n      id: tc.id,\n      name: tc.function.name,\n      args: JSON.parse(tc.function.arguments || '{}'),\n      type: 'tool_call' as const,\n    }));\n\n    const additional_kwargs: Record<string, unknown> = {};\n    if (rawToolCalls) {\n      additional_kwargs.tool_calls = rawToolCalls;\n    }\n    if (\n      'reasoning_content' in message &&\n      message.reasoning_content != null &&\n      message.reasoning_content !== ''\n    ) {\n      additional_kwargs.reasoning_content = message.reasoning_content;\n    }\n\n    return new AIMessage({\n      content: message.content ?? '',\n      tool_calls: toolCalls,\n      additional_kwargs,\n      usage_metadata: data.usage\n        ? {\n          input_tokens: data.usage.prompt_tokens,\n          output_tokens: data.usage.completion_tokens,\n          total_tokens: data.usage.total_tokens,\n        }\n        : undefined,\n      response_metadata: {\n        model_name: data.model,\n        system_fingerprint: data.system_fingerprint,\n        finish_reason: choice.finish_reason,\n      },\n    });\n  }\n\n  protected _getClientOptions(\n    options?: OpenAICoreRequestOptions\n  ): OpenAICoreRequestOptions {\n    if (!(this.client as OpenAIClient | undefined)) {\n      const openAIEndpointConfig: t.OpenAIEndpointConfig = {\n        baseURL: this.clientConfig.baseURL,\n      };\n\n      const endpoint = getEndpoint(openAIEndpointConfig);\n      const params = {\n        ...this.clientConfig,\n        baseURL: endpoint,\n        timeout: this.timeout,\n        maxRetries: 0,\n      };\n      if (params.baseURL == null) {\n        delete params.baseURL;\n      }\n\n      this.client = new CustomOpenAIClient(params);\n    }\n    const requestOptions = {\n      ...this.clientConfig,\n      ...options,\n    } as OpenAICoreRequestOptions;\n    return requestOptions;\n  }\n\n  async *_streamResponseChunks(\n    messages: BaseMessage[],\n    options: this['ParsedCallOptions'],\n    runManager?: CallbackManagerForLLMRun\n  ): AsyncGenerator<ChatGenerationChunk> {\n    const messagesMapped: OpenAICompletionParam[] =\n      _convertMessagesToOpenAIParams(messages, this.model, {\n        includeReasoningContent: true,\n      });\n\n    const params = {\n      ...this.invocationParams(options, {\n        streaming: true,\n      }),\n      messages: messagesMapped,\n      stream: true as const,\n    };\n    let defaultRole: OpenAIRoleEnum | undefined;\n\n    const streamIterable = await this.completionWithRetry(params, options);\n    let usage: OpenAIClient.Completions.CompletionUsage | undefined;\n    for await (const data of streamIterable) {\n      const choice = data.choices[0] as\n        | Partial<OpenAIClient.Chat.Completions.ChatCompletionChunk.Choice>\n        | undefined;\n      if (data.usage) {\n        usage = data.usage;\n      }\n      if (!choice) {\n        continue;\n      }\n\n      const { delta } = choice;\n      if (!delta) {\n        continue;\n      }\n      const chunk = this._convertOpenAIDeltaToBaseMessageChunk(\n        delta,\n        data,\n        defaultRole\n      );\n      if ('reasoning_content' in delta) {\n        chunk.additional_kwargs.reasoning_content = delta.reasoning_content;\n      }\n      defaultRole = delta.role ?? defaultRole;\n      const newTokenIndices = {\n        prompt: (options as OpenAIChatCallOptions).promptIndex ?? 0,\n        completion: choice.index ?? 0,\n      };\n      if (typeof chunk.content !== 'string') {\n        // eslint-disable-next-line no-console\n        console.log(\n          '[WARNING]: Received non-string content from OpenAI. This is currently not supported.'\n        );\n        continue;\n      }\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      const generationInfo: Record<string, any> = { ...newTokenIndices };\n      if (choice.finish_reason != null) {\n        generationInfo.finish_reason = choice.finish_reason;\n        generationInfo.system_fingerprint = data.system_fingerprint;\n        generationInfo.model_name = data.model;\n        generationInfo.service_tier = data.service_tier;\n      }\n      if (this.logprobs == true) {\n        generationInfo.logprobs = choice.logprobs;\n      }\n      const generationChunk = new ChatGenerationChunk({\n        message: chunk,\n        text: chunk.content,\n        generationInfo,\n      });\n      yield generationChunk;\n      await runManager?.handleLLMNewToken(\n        generationChunk.text || '',\n        newTokenIndices,\n        undefined,\n        undefined,\n        undefined,\n        { chunk: generationChunk }\n      );\n    }\n    if (usage) {\n      const inputTokenDetails = {\n        ...(usage.prompt_tokens_details?.audio_tokens != null && {\n          audio: usage.prompt_tokens_details.audio_tokens,\n        }),\n        ...(usage.prompt_tokens_details?.cached_tokens != null && {\n          cache_read: usage.prompt_tokens_details.cached_tokens,\n        }),\n      };\n      const outputTokenDetails = {\n        ...(usage.completion_tokens_details?.audio_tokens != null && {\n          audio: usage.completion_tokens_details.audio_tokens,\n        }),\n        ...(usage.completion_tokens_details?.reasoning_tokens != null && {\n          reasoning: usage.completion_tokens_details.reasoning_tokens,\n        }),\n      };\n      const generationChunk = new ChatGenerationChunk({\n        message: new AIMessageChunk({\n          content: '',\n          response_metadata: {\n            usage: { ...usage },\n          },\n          usage_metadata: {\n            input_tokens: usage.prompt_tokens,\n            output_tokens: usage.completion_tokens,\n            total_tokens: usage.total_tokens,\n            ...(Object.keys(inputTokenDetails).length > 0 && {\n              input_token_details: inputTokenDetails,\n            }),\n            ...(Object.keys(outputTokenDetails).length > 0 && {\n              output_token_details: outputTokenDetails,\n            }),\n          },\n        }),\n        text: '',\n      });\n      yield generationChunk;\n    }\n    if (options.signal?.aborted === true) {\n      throw new Error('AbortError');\n    }\n  }\n}\n\n/** xAI-specific usage metadata type */\nexport interface XAIUsageMetadata\n  extends OpenAIClient.Completions.CompletionUsage {\n  prompt_tokens_details?: {\n    audio_tokens?: number;\n    cached_tokens?: number;\n    text_tokens?: number;\n    image_tokens?: number;\n  };\n  completion_tokens_details?: {\n    audio_tokens?: number;\n    reasoning_tokens?: number;\n    accepted_prediction_tokens?: number;\n    rejected_prediction_tokens?: number;\n  };\n  num_sources_used?: number;\n}\n\nexport class ChatMoonshot extends ChatOpenAI {\n  static lc_name(): 'LibreChatMoonshot' {\n    return 'LibreChatMoonshot';\n  }\n\n  protected _convertMessages(messages: BaseMessage[]): OpenAICompletionParam[] {\n    return _convertMessagesToOpenAIParams(messages, this.model, {\n      includeReasoningContent: true,\n    });\n  }\n\n  async _generate(\n    messages: BaseMessage[],\n    options: this['ParsedCallOptions'],\n    runManager?: CallbackManagerForLLMRun\n  ): Promise<ChatResult> {\n    const params = this.invocationParams(options);\n\n    if (params.stream === true) {\n      return super._generate(messages, options, runManager);\n    }\n\n    const messagesMapped = this._convertMessages(messages);\n    const data = await this.completionWithRetry(\n      {\n        ...params,\n        stream: false,\n        messages: messagesMapped,\n      },\n      {\n        signal: options.signal,\n        ...options.options,\n      }\n    );\n\n    const { completion_tokens, prompt_tokens, total_tokens } = data.usage ?? {};\n\n    const generations = [];\n    for (const part of data.choices ?? []) {\n      const text = part.message.content ?? '';\n      const generation: ChatGeneration = {\n        text: typeof text === 'string' ? text : '',\n        message: this._convertResponseToMessage(part, data),\n      };\n      generation.generationInfo = {\n        ...(part.finish_reason ? { finish_reason: part.finish_reason } : {}),\n        ...(part.logprobs ? { logprobs: part.logprobs } : {}),\n      };\n      generations.push(generation);\n    }\n\n    return {\n      generations,\n      llmOutput: {\n        tokenUsage: {\n          completionTokens: completion_tokens,\n          promptTokens: prompt_tokens,\n          totalTokens: total_tokens,\n        },\n      },\n    };\n  }\n\n  protected _convertResponseToMessage(\n    choice: OpenAIClient.Chat.Completions.ChatCompletion.Choice,\n    data: OpenAIClient.Chat.Completions.ChatCompletion\n  ): AIMessage {\n    const { message } = choice;\n    const rawToolCalls = message.tool_calls;\n    const toolCalls = rawToolCalls?.map((tc) => ({\n      id: tc.id,\n      name: tc.function.name,\n      args: JSON.parse(tc.function.arguments || '{}'),\n      type: 'tool_call' as const,\n    }));\n\n    const additional_kwargs: Record<string, unknown> = {};\n    if (rawToolCalls) {\n      additional_kwargs.tool_calls = rawToolCalls;\n    }\n    if (\n      'reasoning_content' in message &&\n      message.reasoning_content != null &&\n      message.reasoning_content !== ''\n    ) {\n      additional_kwargs.reasoning_content = message.reasoning_content;\n    }\n\n    return new AIMessage({\n      content: message.content ?? '',\n      tool_calls: toolCalls,\n      additional_kwargs,\n      usage_metadata: data.usage\n        ? {\n          input_tokens: data.usage.prompt_tokens,\n          output_tokens: data.usage.completion_tokens,\n          total_tokens: data.usage.total_tokens,\n        }\n        : undefined,\n      response_metadata: {\n        model_name: data.model,\n        system_fingerprint: data.system_fingerprint,\n        finish_reason: choice.finish_reason,\n      },\n    });\n  }\n\n  async *_streamResponseChunks(\n    messages: BaseMessage[],\n    options: this['ParsedCallOptions'],\n    runManager?: CallbackManagerForLLMRun\n  ): AsyncGenerator<ChatGenerationChunk> {\n    const messagesMapped: OpenAICompletionParam[] =\n      _convertMessagesToOpenAIParams(messages, this.model, {\n        includeReasoningContent: true,\n      });\n\n    const params = {\n      ...this.invocationParams(options, {\n        streaming: true,\n      }),\n      messages: messagesMapped,\n      stream: true as const,\n    };\n    let defaultRole: OpenAIRoleEnum | undefined;\n\n    const streamIterable = await this.completionWithRetry(params, options);\n    let usage: OpenAIClient.Completions.CompletionUsage | undefined;\n    for await (const data of streamIterable) {\n      const choice = data.choices[0] as\n        | Partial<OpenAIClient.Chat.Completions.ChatCompletionChunk.Choice>\n        | undefined;\n      if (data.usage) {\n        usage = data.usage;\n      }\n      if (!choice) {\n        continue;\n      }\n\n      const { delta } = choice;\n      if (!delta) {\n        continue;\n      }\n      const chunk = this._convertOpenAIDeltaToBaseMessageChunk(\n        delta,\n        data,\n        defaultRole\n      );\n      if ('reasoning_content' in delta) {\n        chunk.additional_kwargs.reasoning_content = delta.reasoning_content;\n      }\n      defaultRole = delta.role ?? defaultRole;\n      const newTokenIndices = {\n        prompt: (options as OpenAIChatCallOptions).promptIndex ?? 0,\n        completion: choice.index ?? 0,\n      };\n      if (typeof chunk.content !== 'string') {\n        // eslint-disable-next-line no-console\n        console.log(\n          '[WARNING]: Received non-string content from OpenAI. This is currently not supported.'\n        );\n        continue;\n      }\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      const generationInfo: Record<string, any> = { ...newTokenIndices };\n      if (choice.finish_reason != null) {\n        generationInfo.finish_reason = choice.finish_reason;\n        generationInfo.system_fingerprint = data.system_fingerprint;\n        generationInfo.model_name = data.model;\n        generationInfo.service_tier = data.service_tier;\n      }\n      if (this.logprobs == true) {\n        generationInfo.logprobs = choice.logprobs;\n      }\n      const generationChunk = new ChatGenerationChunk({\n        message: chunk,\n        text: chunk.content,\n        generationInfo,\n      });\n      yield generationChunk;\n      if (this._lc_stream_delay != null) {\n        await sleep(this._lc_stream_delay);\n      }\n      await runManager?.handleLLMNewToken(\n        generationChunk.text || '',\n        newTokenIndices,\n        undefined,\n        undefined,\n        undefined,\n        { chunk: generationChunk }\n      );\n    }\n    if (usage) {\n      const inputTokenDetails = {\n        ...(usage.prompt_tokens_details?.audio_tokens != null && {\n          audio: usage.prompt_tokens_details.audio_tokens,\n        }),\n        ...(usage.prompt_tokens_details?.cached_tokens != null && {\n          cache_read: usage.prompt_tokens_details.cached_tokens,\n        }),\n      };\n      const outputTokenDetails = {\n        ...(usage.completion_tokens_details?.audio_tokens != null && {\n          audio: usage.completion_tokens_details.audio_tokens,\n        }),\n        ...(usage.completion_tokens_details?.reasoning_tokens != null && {\n          reasoning: usage.completion_tokens_details.reasoning_tokens,\n        }),\n      };\n      const generationChunk = new ChatGenerationChunk({\n        message: new AIMessageChunk({\n          content: '',\n          response_metadata: {\n            usage: { ...usage },\n          },\n          usage_metadata: {\n            input_tokens: usage.prompt_tokens,\n            output_tokens: usage.completion_tokens,\n            total_tokens: usage.total_tokens,\n            ...(Object.keys(inputTokenDetails).length > 0 && {\n              input_token_details: inputTokenDetails,\n            }),\n            ...(Object.keys(outputTokenDetails).length > 0 && {\n              output_token_details: outputTokenDetails,\n            }),\n          },\n        }),\n        text: '',\n      });\n      yield generationChunk;\n      if (this._lc_stream_delay != null) {\n        await sleep(this._lc_stream_delay);\n      }\n    }\n    if (options.signal?.aborted === true) {\n      throw new Error('AbortError');\n    }\n  }\n}\n\nexport class ChatXAI extends OriginalChatXAI {\n  _lc_stream_delay?: number;\n\n  constructor(\n    fields?: Partial<ChatXAIInput> & {\n      configuration?: { baseURL?: string };\n      clientConfig?: { baseURL?: string };\n      _lc_stream_delay?: number;\n    }\n  ) {\n    super(fields);\n    this._lc_stream_delay = fields?._lc_stream_delay;\n    const customBaseURL =\n      fields?.configuration?.baseURL ?? fields?.clientConfig?.baseURL;\n    if (customBaseURL != null && customBaseURL) {\n      this.clientConfig = {\n        ...this.clientConfig,\n        baseURL: customBaseURL,\n      };\n      // Reset the client to force recreation with new config\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this.client = undefined as any;\n    }\n  }\n\n  static lc_name(): 'IllumaXAI' {\n    return 'IllumaXAI';\n  }\n\n  public get exposedClient(): CustomOpenAIClient {\n    return this.client;\n  }\n\n  protected _getClientOptions(\n    options?: OpenAICoreRequestOptions\n  ): OpenAICoreRequestOptions {\n    if (!(this.client as OpenAIClient | undefined)) {\n      const openAIEndpointConfig: t.OpenAIEndpointConfig = {\n        baseURL: this.clientConfig.baseURL,\n      };\n\n      const endpoint = getEndpoint(openAIEndpointConfig);\n      const params = {\n        ...this.clientConfig,\n        baseURL: endpoint,\n        timeout: this.timeout,\n        maxRetries: 0,\n      };\n      if (params.baseURL == null) {\n        delete params.baseURL;\n      }\n\n      this.client = new CustomOpenAIClient(params);\n    }\n    const requestOptions = {\n      ...this.clientConfig,\n      ...options,\n    } as OpenAICoreRequestOptions;\n    return requestOptions;\n  }\n\n  async *_streamResponseChunks(\n    messages: BaseMessage[],\n    options: this['ParsedCallOptions'],\n    runManager?: CallbackManagerForLLMRun\n  ): AsyncGenerator<ChatGenerationChunk> {\n    const messagesMapped: OpenAICompletionParam[] =\n      _convertMessagesToOpenAIParams(messages, this.model);\n\n    const params = {\n      ...this.invocationParams(options, {\n        streaming: true,\n      }),\n      messages: messagesMapped,\n      stream: true as const,\n    };\n    let defaultRole: OpenAIRoleEnum | undefined;\n\n    const streamIterable = await this.completionWithRetry(params, options);\n    let usage: OpenAIClient.Completions.CompletionUsage | undefined;\n    for await (const data of streamIterable) {\n      const choice = data.choices[0] as\n        | Partial<OpenAIClient.Chat.Completions.ChatCompletionChunk.Choice>\n        | undefined;\n      if (data.usage) {\n        usage = data.usage;\n      }\n      if (!choice) {\n        continue;\n      }\n\n      const { delta } = choice;\n      if (!delta) {\n        continue;\n      }\n      const chunk = this._convertOpenAIDeltaToBaseMessageChunk(\n        delta,\n        data,\n        defaultRole\n      );\n      if (chunk.usage_metadata != null) {\n        chunk.usage_metadata = {\n          input_tokens:\n            (chunk.usage_metadata as Partial<UsageMetadata>).input_tokens ?? 0,\n          output_tokens:\n            (chunk.usage_metadata as Partial<UsageMetadata>).output_tokens ?? 0,\n          total_tokens:\n            (chunk.usage_metadata as Partial<UsageMetadata>).total_tokens ?? 0,\n        };\n      }\n      if ('reasoning_content' in delta) {\n        chunk.additional_kwargs.reasoning_content = delta.reasoning_content;\n      }\n      defaultRole = delta.role ?? defaultRole;\n      const newTokenIndices = {\n        prompt: (options as OpenAIChatCallOptions).promptIndex ?? 0,\n        completion: choice.index ?? 0,\n      };\n      if (typeof chunk.content !== 'string') {\n        // eslint-disable-next-line no-console\n        console.log(\n          '[WARNING]: Received non-string content from OpenAI. This is currently not supported.'\n        );\n        continue;\n      }\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      const generationInfo: Record<string, any> = { ...newTokenIndices };\n      if (choice.finish_reason != null) {\n        generationInfo.finish_reason = choice.finish_reason;\n        // Only include system fingerprint in the last chunk for now\n        // to avoid concatenation issues\n        generationInfo.system_fingerprint = data.system_fingerprint;\n        generationInfo.model_name = data.model;\n        generationInfo.service_tier = data.service_tier;\n      }\n      if (this.logprobs == true) {\n        generationInfo.logprobs = choice.logprobs;\n      }\n      const generationChunk = new ChatGenerationChunk({\n        message: chunk,\n        text: chunk.content,\n        generationInfo,\n      });\n      yield generationChunk;\n      if (this._lc_stream_delay != null) {\n        await sleep(this._lc_stream_delay);\n      }\n      await runManager?.handleLLMNewToken(\n        generationChunk.text || '',\n        newTokenIndices,\n        undefined,\n        undefined,\n        undefined,\n        { chunk: generationChunk }\n      );\n    }\n    if (usage) {\n      // Type assertion for xAI-specific usage structure\n      const xaiUsage = usage as XAIUsageMetadata;\n      const inputTokenDetails = {\n        // Standard OpenAI fields\n        ...(usage.prompt_tokens_details?.audio_tokens != null && {\n          audio: usage.prompt_tokens_details.audio_tokens,\n        }),\n        ...(usage.prompt_tokens_details?.cached_tokens != null && {\n          cache_read: usage.prompt_tokens_details.cached_tokens,\n        }),\n        // Add xAI-specific prompt token details if they exist\n        ...(xaiUsage.prompt_tokens_details?.text_tokens != null && {\n          text: xaiUsage.prompt_tokens_details.text_tokens,\n        }),\n        ...(xaiUsage.prompt_tokens_details?.image_tokens != null && {\n          image: xaiUsage.prompt_tokens_details.image_tokens,\n        }),\n      };\n      const outputTokenDetails = {\n        // Standard OpenAI fields\n        ...(usage.completion_tokens_details?.audio_tokens != null && {\n          audio: usage.completion_tokens_details.audio_tokens,\n        }),\n        ...(usage.completion_tokens_details?.reasoning_tokens != null && {\n          reasoning: usage.completion_tokens_details.reasoning_tokens,\n        }),\n        // Add xAI-specific completion token details if they exist\n        ...(xaiUsage.completion_tokens_details?.accepted_prediction_tokens !=\n          null && {\n          accepted_prediction:\n            xaiUsage.completion_tokens_details.accepted_prediction_tokens,\n        }),\n        ...(xaiUsage.completion_tokens_details?.rejected_prediction_tokens !=\n          null && {\n          rejected_prediction:\n            xaiUsage.completion_tokens_details.rejected_prediction_tokens,\n        }),\n      };\n      const generationChunk = new ChatGenerationChunk({\n        message: new AIMessageChunk({\n          content: '',\n          response_metadata: {\n            usage: { ...usage },\n            // Include xAI-specific metadata if it exists\n            ...(xaiUsage.num_sources_used != null && {\n              num_sources_used: xaiUsage.num_sources_used,\n            }),\n          },\n          usage_metadata: {\n            input_tokens: usage.prompt_tokens,\n            output_tokens: usage.completion_tokens,\n            total_tokens: usage.total_tokens,\n            ...(Object.keys(inputTokenDetails).length > 0 && {\n              input_token_details: inputTokenDetails,\n            }),\n            ...(Object.keys(outputTokenDetails).length > 0 && {\n              output_token_details: outputTokenDetails,\n            }),\n          },\n        }),\n        text: '',\n      });\n      yield generationChunk;\n      if (this._lc_stream_delay != null) {\n        await sleep(this._lc_stream_delay);\n      }\n    }\n    if (options.signal?.aborted === true) {\n      throw new Error('AbortError');\n    }\n  }\n}\n"],"names":["OpenAIClient","AzureOpenAIClient","OriginalChatOpenAI","getEndpoint","_convertMessagesToOpenAIResponsesParams","_convertOpenAIResponsesDeltaToBaseMessageChunk","sleep","messages","_convertMessagesToOpenAIParams","ChatGenerationChunk","AIMessageChunk","OriginalAzureChatOpenAI","isReasoningModel","OriginalChatDeepSeek","AIMessage","OriginalChatXAI"],"mappings":"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"}