{"version":3,"file":"index.cjs","sources":["../../../../../src/llm/openai/utils/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { type OpenAI as OpenAIClient } from 'openai';\nimport type {\n  ChatCompletionContentPartText,\n  ChatCompletionContentPartImage,\n  ChatCompletionContentPartInputAudio,\n  ChatCompletionContentPart,\n} from 'openai/resources/chat/completions';\nimport {\n  AIMessage,\n  AIMessageChunk,\n  type BaseMessage,\n  ChatMessage,\n  ToolMessage,\n  isAIMessage,\n  type UsageMetadata,\n  type BaseMessageFields,\n  type MessageContent,\n  type InvalidToolCall,\n  type MessageContentImageUrl,\n  StandardContentBlockConverter,\n  parseBase64DataUrl,\n  parseMimeType,\n  convertToProviderContentBlock,\n  isDataContentBlock,\n} from '@langchain/core/messages';\nimport { ChatGenerationChunk } from '@langchain/core/outputs';\nimport {\n  convertLangChainToolCallToOpenAI,\n  makeInvalidToolCall,\n  parseToolCall,\n} from '@langchain/core/output_parsers/openai_tools';\nimport type { ToolCall, ToolCallChunk } from '@langchain/core/messages/tool';\nimport type {\n  OpenAICallOptions,\n  OpenAIChatInput,\n  ChatOpenAIReasoningSummary,\n} from '@langchain/openai';\n\nexport type { OpenAICallOptions, OpenAIChatInput };\n\n// Utility types to get hidden OpenAI response types\ntype ExtractAsyncIterableType<T> = T extends AsyncIterable<infer U> ? U : never;\ntype ExcludeController<T> = T extends { controller: unknown } ? never : T;\ntype ExcludeNonController<T> = T extends { controller: unknown } ? T : never;\n\ntype ResponsesCreate = OpenAIClient.Responses['create'];\ntype ResponsesParse = OpenAIClient.Responses['parse'];\n\ntype ResponsesInputItem = OpenAIClient.Responses.ResponseInputItem;\n\ntype ResponsesCreateInvoke = ExcludeController<\n  Awaited<ReturnType<ResponsesCreate>>\n>;\n\ntype ResponsesParseInvoke = ExcludeController<\n  Awaited<ReturnType<ResponsesParse>>\n>;\n\ntype ResponsesCreateStream = ExcludeNonController<\n  Awaited<ReturnType<ResponsesCreate>>\n>;\n\nexport type ResponseReturnStreamEvents =\n  ExtractAsyncIterableType<ResponsesCreateStream>;\n\n// TODO import from SDK when available\ntype OpenAIRoleEnum =\n  | 'system'\n  | 'developer'\n  | 'assistant'\n  | 'user'\n  | 'function'\n  | 'tool';\n\ntype OpenAICompletionParam =\n  OpenAIClient.Chat.Completions.ChatCompletionMessageParam;\n\nfunction extractGenericMessageCustomRole(message: ChatMessage) {\n  if (\n    message.role !== 'system' &&\n    message.role !== 'developer' &&\n    message.role !== 'assistant' &&\n    message.role !== 'user' &&\n    message.role !== 'function' &&\n    message.role !== 'tool'\n  ) {\n    console.warn(`Unknown message role: ${message.role}`);\n  }\n\n  return message.role as OpenAIRoleEnum;\n}\n\nexport function messageToOpenAIRole(message: BaseMessage): OpenAIRoleEnum {\n  const type = message._getType();\n  switch (type) {\n  case 'system':\n    return 'system';\n  case 'ai':\n    return 'assistant';\n  case 'human':\n    return 'user';\n  case 'function':\n    return 'function';\n  case 'tool':\n    return 'tool';\n  case 'generic': {\n    if (!ChatMessage.isInstance(message))\n      throw new Error('Invalid generic chat message');\n    return extractGenericMessageCustomRole(message);\n  }\n  default:\n    throw new Error(`Unknown message type: ${type}`);\n  }\n}\n\nconst completionsApiContentBlockConverter: StandardContentBlockConverter<{\n  text: ChatCompletionContentPartText;\n  image: ChatCompletionContentPartImage;\n  audio: ChatCompletionContentPartInputAudio;\n  file: ChatCompletionContentPart.File;\n}> = {\n  providerName: 'ChatOpenAI',\n\n  fromStandardTextBlock(block): ChatCompletionContentPartText {\n    return { type: 'text', text: block.text };\n  },\n\n  fromStandardImageBlock(block): ChatCompletionContentPartImage {\n    if (block.source_type === 'url') {\n      return {\n        type: 'image_url',\n        image_url: {\n          url: block.url,\n          ...(block.metadata?.detail\n            ? { detail: block.metadata.detail as 'auto' | 'low' | 'high' }\n            : {}),\n        },\n      };\n    }\n\n    if (block.source_type === 'base64') {\n      const url = `data:${block.mime_type ?? ''};base64,${block.data}`;\n      return {\n        type: 'image_url',\n        image_url: {\n          url,\n          ...(block.metadata?.detail\n            ? { detail: block.metadata.detail as 'auto' | 'low' | 'high' }\n            : {}),\n        },\n      };\n    }\n\n    throw new Error(\n      `Image content blocks with source_type ${block.source_type} are not supported for ChatOpenAI`\n    );\n  },\n\n  fromStandardAudioBlock(block): ChatCompletionContentPartInputAudio {\n    if (block.source_type === 'url') {\n      const data = parseBase64DataUrl({ dataUrl: block.url });\n      if (!data) {\n        throw new Error(\n          `URL audio blocks with source_type ${block.source_type} must be formatted as a data URL for ChatOpenAI`\n        );\n      }\n\n      const rawMimeType = data.mime_type || block.mime_type || '';\n      let mimeType: { type: string; subtype: string };\n\n      try {\n        mimeType = parseMimeType(rawMimeType);\n      } catch {\n        throw new Error(\n          `Audio blocks with source_type ${block.source_type} must have mime type of audio/wav or audio/mp3`\n        );\n      }\n\n      if (\n        mimeType.type !== 'audio' ||\n        (mimeType.subtype !== 'wav' && mimeType.subtype !== 'mp3')\n      ) {\n        throw new Error(\n          `Audio blocks with source_type ${block.source_type} must have mime type of audio/wav or audio/mp3`\n        );\n      }\n\n      return {\n        type: 'input_audio',\n        input_audio: {\n          format: mimeType.subtype,\n          data: data.data,\n        },\n      };\n    }\n\n    if (block.source_type === 'base64') {\n      let mimeType: { type: string; subtype: string };\n\n      try {\n        mimeType = parseMimeType(block.mime_type ?? '');\n      } catch {\n        throw new Error(\n          `Audio blocks with source_type ${block.source_type} must have mime type of audio/wav or audio/mp3`\n        );\n      }\n\n      if (\n        mimeType.type !== 'audio' ||\n        (mimeType.subtype !== 'wav' && mimeType.subtype !== 'mp3')\n      ) {\n        throw new Error(\n          `Audio blocks with source_type ${block.source_type} must have mime type of audio/wav or audio/mp3`\n        );\n      }\n\n      return {\n        type: 'input_audio',\n        input_audio: {\n          format: mimeType.subtype,\n          data: block.data,\n        },\n      };\n    }\n\n    throw new Error(\n      `Audio content blocks with source_type ${block.source_type} are not supported for ChatOpenAI`\n    );\n  },\n\n  fromStandardFileBlock(block): ChatCompletionContentPart.File {\n    if (block.source_type === 'url') {\n      const data = parseBase64DataUrl({ dataUrl: block.url });\n      if (!data) {\n        throw new Error(\n          `URL file blocks with source_type ${block.source_type} must be formatted as a data URL for ChatOpenAI`\n        );\n      }\n\n      return {\n        type: 'file',\n        file: {\n          file_data: block.url, // formatted as base64 data URL\n          ...(block.metadata?.filename || block.metadata?.name\n            ? {\n              filename: (block.metadata.filename ||\n                  block.metadata.name) as string,\n            }\n            : {}),\n        },\n      };\n    }\n\n    if (block.source_type === 'base64') {\n      return {\n        type: 'file',\n        file: {\n          file_data: `data:${block.mime_type ?? ''};base64,${block.data}`,\n          ...(block.metadata?.filename ||\n          block.metadata?.name ||\n          block.metadata?.title\n            ? {\n              filename: (block.metadata.filename ||\n                  block.metadata.name ||\n                  block.metadata.title) as string,\n            }\n            : {}),\n        },\n      };\n    }\n\n    if (block.source_type === 'id') {\n      return {\n        type: 'file',\n        file: {\n          file_id: block.id,\n        },\n      };\n    }\n\n    throw new Error(\n      `File content blocks with source_type ${block.source_type} are not supported for ChatOpenAI`\n    );\n  },\n};\n\n/** Options for converting messages to OpenAI params */\nexport interface ConvertMessagesOptions {\n  /** Include reasoning_content field for DeepSeek thinking mode with tool calls */\n  includeReasoningContent?: boolean;\n  /** Include reasoning_details field for OpenRouter/Gemini thinking mode with tool calls */\n  includeReasoningDetails?: boolean;\n  /** Convert reasoning_details to content blocks for Claude (requires content array format) */\n  convertReasoningDetailsToContent?: boolean;\n}\n\n// Used in LangSmith, export is important here\nexport function _convertMessagesToOpenAIParams(\n  messages: BaseMessage[],\n  model?: string,\n  options?: ConvertMessagesOptions\n): OpenAICompletionParam[] {\n  // TODO: Function messages do not support array content, fix cast\n  return messages.flatMap((message) => {\n    let role = messageToOpenAIRole(message);\n    if (role === 'system' && isReasoningModel(model)) {\n      role = 'developer';\n    }\n\n    let hasAnthropicThinkingBlock: boolean = false;\n\n    const content =\n      typeof message.content === 'string'\n        ? message.content\n        : message.content.map((m) => {\n          if ('type' in m && m.type === 'thinking') {\n            hasAnthropicThinkingBlock = true;\n            return m;\n          }\n          if (isDataContentBlock(m)) {\n            return convertToProviderContentBlock(\n              m,\n              completionsApiContentBlockConverter\n            );\n          }\n          return m;\n        });\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const completionParam: Record<string, any> = {\n      role,\n      content,\n    };\n    if (message.name != null) {\n      completionParam.name = message.name;\n    }\n    if (message.additional_kwargs.function_call != null) {\n      completionParam.function_call = message.additional_kwargs.function_call;\n      completionParam.content = '';\n    }\n    if (isAIMessage(message) && !!message.tool_calls?.length) {\n      completionParam.tool_calls = message.tool_calls.map(\n        convertLangChainToolCallToOpenAI\n      );\n      completionParam.content = hasAnthropicThinkingBlock ? content : '';\n      if (\n        options?.includeReasoningContent === true &&\n        message.additional_kwargs.reasoning_content != null\n      ) {\n        completionParam.reasoning_content =\n          message.additional_kwargs.reasoning_content;\n      }\n      if (\n        options?.includeReasoningDetails === true &&\n        message.additional_kwargs.reasoning_details != null\n      ) {\n        // For Claude via OpenRouter, convert reasoning_details to content blocks\n        const isClaudeModel =\n          model?.includes('claude') === true ||\n          model?.includes('anthropic') === true;\n        if (\n          options.convertReasoningDetailsToContent === true &&\n          isClaudeModel\n        ) {\n          const reasoningDetails = message.additional_kwargs\n            .reasoning_details as Record<string, unknown>[];\n          const contentBlocks = [];\n\n          // Add thinking blocks from reasoning_details\n          for (const detail of reasoningDetails) {\n            if (detail.type === 'reasoning.text' && detail.text != null) {\n              contentBlocks.push({\n                type: 'thinking',\n                thinking: detail.text,\n              });\n            } else if (\n              detail.type === 'reasoning.encrypted' &&\n              detail.data != null\n            ) {\n              contentBlocks.push({\n                type: 'redacted_thinking',\n                data: detail.data,\n                id: detail.id,\n              });\n            }\n          }\n\n          // Set content to array with thinking blocks\n          if (contentBlocks.length > 0) {\n            completionParam.content = contentBlocks;\n          }\n        } else {\n          // For non-Claude models, pass as separate field\n          completionParam.reasoning_details =\n            message.additional_kwargs.reasoning_details;\n        }\n      }\n    } else {\n      if (message.additional_kwargs.tool_calls != null) {\n        completionParam.tool_calls = message.additional_kwargs.tool_calls;\n        if (\n          options?.includeReasoningContent === true &&\n          message.additional_kwargs.reasoning_content != null\n        ) {\n          completionParam.reasoning_content =\n            message.additional_kwargs.reasoning_content;\n        }\n        if (\n          options?.includeReasoningDetails === true &&\n          message.additional_kwargs.reasoning_details != null\n        ) {\n          // For Claude via OpenRouter, convert reasoning_details to content blocks\n          const isClaudeModel =\n            model?.includes('claude') === true ||\n            model?.includes('anthropic') === true;\n          if (\n            options.convertReasoningDetailsToContent === true &&\n            isClaudeModel\n          ) {\n            const reasoningDetails = message.additional_kwargs\n              .reasoning_details as Record<string, unknown>[];\n            const contentBlocks = [];\n\n            // Add thinking blocks from reasoning_details\n            for (const detail of reasoningDetails) {\n              if (detail.type === 'reasoning.text' && detail.text != null) {\n                contentBlocks.push({\n                  type: 'thinking',\n                  thinking: detail.text,\n                });\n              } else if (\n                detail.type === 'reasoning.encrypted' &&\n                detail.data != null\n              ) {\n                contentBlocks.push({\n                  type: 'redacted_thinking',\n                  data: detail.data,\n                  id: detail.id,\n                });\n              }\n            }\n\n            // Set content to array with thinking blocks\n            if (contentBlocks.length > 0) {\n              completionParam.content = contentBlocks;\n            }\n          } else {\n            // For non-Claude models, pass as separate field\n            completionParam.reasoning_details =\n              message.additional_kwargs.reasoning_details;\n          }\n        }\n      }\n      if ((message as ToolMessage).tool_call_id != null) {\n        completionParam.tool_call_id = (message as ToolMessage).tool_call_id;\n      }\n    }\n\n    if (\n      message.additional_kwargs.audio &&\n      typeof message.additional_kwargs.audio === 'object' &&\n      'id' in message.additional_kwargs.audio\n    ) {\n      const audioMessage = {\n        role: 'assistant',\n        audio: {\n          id: message.additional_kwargs.audio.id,\n        },\n      };\n      return [completionParam, audioMessage] as OpenAICompletionParam[];\n    }\n\n    return completionParam as OpenAICompletionParam;\n  });\n}\n\nconst _FUNCTION_CALL_IDS_MAP_KEY = '__openai_function_call_ids__';\n\nfunction _convertReasoningSummaryToOpenAIResponsesParams(\n  reasoning: ChatOpenAIReasoningSummary\n): OpenAIClient.Responses.ResponseReasoningItem {\n  // combine summary parts that have the the same index and then remove the indexes\n  const summary = (\n    reasoning.summary.length > 1\n      ? reasoning.summary.reduce(\n        (acc, curr) => {\n          const last = acc.at(-1);\n\n          if (last!.index === curr.index) {\n              last!.text += curr.text;\n          } else {\n            acc.push(curr);\n          }\n          return acc;\n        },\n        [{ ...reasoning.summary[0] }]\n      )\n      : reasoning.summary\n  ).map((s) =>\n    Object.fromEntries(Object.entries(s).filter(([k]) => k !== 'index'))\n  ) as OpenAIClient.Responses.ResponseReasoningItem.Summary[];\n\n  return {\n    ...reasoning,\n    summary,\n  } as OpenAIClient.Responses.ResponseReasoningItem;\n}\n\nexport function _convertMessagesToOpenAIResponsesParams(\n  messages: BaseMessage[],\n  model?: string,\n  zdrEnabled?: boolean\n): ResponsesInputItem[] {\n  return messages.flatMap(\n    (lcMsg): ResponsesInputItem | ResponsesInputItem[] => {\n      const additional_kwargs =\n        lcMsg.additional_kwargs as BaseMessageFields['additional_kwargs'] & {\n          [_FUNCTION_CALL_IDS_MAP_KEY]?: Record<string, string>;\n          reasoning?: OpenAIClient.Responses.ResponseReasoningItem;\n          type?: string;\n          refusal?: string;\n        };\n\n      let role = messageToOpenAIRole(lcMsg);\n      if (role === 'system' && isReasoningModel(model)) role = 'developer';\n\n      if (role === 'function') {\n        throw new Error('Function messages are not supported in Responses API');\n      }\n\n      if (role === 'tool') {\n        const toolMessage = lcMsg as ToolMessage;\n\n        // Handle computer call output\n        if (additional_kwargs.type === 'computer_call_output') {\n          const output = (() => {\n            if (typeof toolMessage.content === 'string') {\n              return {\n                type: 'computer_screenshot' as const,\n                image_url: toolMessage.content,\n              };\n            }\n\n            if (Array.isArray(toolMessage.content)) {\n              const oaiScreenshot = toolMessage.content.find(\n                (i) => i.type === 'computer_screenshot'\n              ) as { type: 'computer_screenshot'; image_url: string };\n\n              if (oaiScreenshot) return oaiScreenshot;\n\n              const lcImage = toolMessage.content.find(\n                (i) => i.type === 'image_url'\n              ) as MessageContentImageUrl;\n\n              if (lcImage) {\n                return {\n                  type: 'computer_screenshot' as const,\n                  image_url:\n                    typeof lcImage.image_url === 'string'\n                      ? lcImage.image_url\n                      : lcImage.image_url.url,\n                };\n              }\n            }\n\n            throw new Error('Invalid computer call output');\n          })();\n\n          return {\n            type: 'computer_call_output',\n            output,\n            call_id: toolMessage.tool_call_id,\n          };\n        }\n\n        return {\n          type: 'function_call_output',\n          call_id: toolMessage.tool_call_id,\n          id: toolMessage.id?.startsWith('fc_') ? toolMessage.id : undefined,\n          output:\n            typeof toolMessage.content !== 'string'\n              ? JSON.stringify(toolMessage.content)\n              : toolMessage.content,\n        };\n      }\n\n      if (role === 'assistant') {\n        // if we have the original response items, just reuse them\n        if (\n          !zdrEnabled &&\n          lcMsg.response_metadata.output != null &&\n          Array.isArray(lcMsg.response_metadata.output) &&\n          lcMsg.response_metadata.output.length > 0 &&\n          lcMsg.response_metadata.output.every((item) => 'type' in item)\n        ) {\n          return lcMsg.response_metadata.output;\n        }\n\n        // otherwise, try to reconstruct the response from what we have\n\n        const input: ResponsesInputItem[] = [];\n\n        // reasoning items\n        if (additional_kwargs.reasoning && !zdrEnabled) {\n          const reasoningItem = _convertReasoningSummaryToOpenAIResponsesParams(\n            additional_kwargs.reasoning\n          );\n          input.push(reasoningItem);\n        }\n\n        // ai content\n        let { content } = lcMsg;\n        if (additional_kwargs.refusal) {\n          if (typeof content === 'string') {\n            content = [{ type: 'output_text', text: content, annotations: [] }];\n          }\n          content = [\n            ...content,\n            { type: 'refusal', refusal: additional_kwargs.refusal },\n          ];\n        }\n\n        input.push({\n          type: 'message',\n          role: 'assistant',\n          ...(lcMsg.id && !zdrEnabled && lcMsg.id.startsWith('msg_')\n            ? { id: lcMsg.id }\n            : {}),\n          content:\n            typeof content === 'string'\n              ? content\n              : content.flatMap((item) => {\n                if (item.type === 'text') {\n                  return {\n                    type: 'output_text',\n                    text: item.text,\n                    // @ts-expect-error TODO: add types for `annotations`\n                    annotations: item.annotations ?? [],\n                  };\n                }\n\n                if (item.type === 'output_text' || item.type === 'refusal') {\n                  return item;\n                }\n\n                return [];\n              }),\n        });\n\n        const functionCallIds = additional_kwargs[_FUNCTION_CALL_IDS_MAP_KEY];\n\n        if (isAIMessage(lcMsg) && !!lcMsg.tool_calls?.length) {\n          input.push(\n            ...lcMsg.tool_calls.map(\n              (toolCall): ResponsesInputItem => ({\n                type: 'function_call',\n                name: toolCall.name,\n                arguments: JSON.stringify(toolCall.args),\n                call_id: toolCall.id!,\n                ...(zdrEnabled ? { id: functionCallIds?.[toolCall.id!] } : {}),\n              })\n            )\n          );\n        } else if (additional_kwargs.tool_calls) {\n          input.push(\n            ...additional_kwargs.tool_calls.map(\n              (toolCall): ResponsesInputItem => ({\n                type: 'function_call',\n                name: toolCall.function.name,\n                call_id: toolCall.id,\n                arguments: toolCall.function.arguments,\n                ...(zdrEnabled ? { id: functionCallIds?.[toolCall.id] } : {}),\n              })\n            )\n          );\n        }\n\n        const toolOutputs =\n          ((\n            lcMsg.response_metadata.output as\n              | Array<ResponsesInputItem>\n              | undefined\n          )?.length ?? 0) > 0\n            ? lcMsg.response_metadata.output\n            : additional_kwargs.tool_outputs;\n\n        const fallthroughCallTypes: ResponsesInputItem['type'][] = [\n          'computer_call',\n          /** @ts-ignore */\n          'mcp_call',\n          /** @ts-ignore */\n          'code_interpreter_call',\n          /** @ts-ignore */\n          'image_generation_call',\n        ];\n\n        if (toolOutputs != null) {\n          const castToolOutputs = toolOutputs as Array<ResponsesInputItem>;\n          const fallthroughCalls = castToolOutputs.filter((item) =>\n            fallthroughCallTypes.includes(item.type)\n          );\n          if (fallthroughCalls.length > 0) input.push(...fallthroughCalls);\n        }\n\n        return input;\n      }\n\n      if (role === 'user' || role === 'system' || role === 'developer') {\n        if (typeof lcMsg.content === 'string') {\n          return { type: 'message', role, content: lcMsg.content };\n        }\n\n        const messages: ResponsesInputItem[] = [];\n        const content = lcMsg.content.flatMap((item) => {\n          if (item.type === 'mcp_approval_response') {\n            messages.push({\n              // @ts-ignore\n              type: 'mcp_approval_response',\n              approval_request_id: item.approval_request_id,\n              approve: item.approve,\n            });\n          }\n          if (isDataContentBlock(item)) {\n            return convertToProviderContentBlock(\n              item,\n              completionsApiContentBlockConverter\n            );\n          }\n          if (item.type === 'text') {\n            return {\n              type: 'input_text',\n              text: item.text,\n            };\n          }\n          if (item.type === 'image_url') {\n            return {\n              type: 'input_image',\n              image_url:\n                typeof item.image_url === 'string'\n                  ? item.image_url\n                  : item.image_url.url,\n              detail:\n                typeof item.image_url === 'string'\n                  ? 'auto'\n                  : item.image_url.detail,\n            };\n          }\n          if (\n            item.type === 'input_text' ||\n            item.type === 'input_image' ||\n            item.type === 'input_file'\n          ) {\n            return item;\n          }\n          return [];\n        });\n\n        if (content.length > 0) {\n          messages.push({ type: 'message', role, content });\n        }\n        return messages;\n      }\n\n      console.warn(\n        `Unsupported role found when converting to OpenAI Responses API: ${role}`\n      );\n      return [];\n    }\n  );\n}\n\nexport function isReasoningModel(model?: string) {\n  return model != null && model !== '' && /\\b(o\\d|gpt-[5-9])\\b/i.test(model);\n}\n\nfunction _convertOpenAIResponsesMessageToBaseMessage(\n  response: ResponsesCreateInvoke | ResponsesParseInvoke\n): BaseMessage {\n  if (response.error) {\n    // TODO: add support for `addLangChainErrorFields`\n    const error = new Error(response.error.message);\n    error.name = response.error.code;\n    throw error;\n  }\n\n  let messageId: string | undefined;\n  const content: MessageContent = [];\n  const tool_calls: ToolCall[] = [];\n  const invalid_tool_calls: InvalidToolCall[] = [];\n  const response_metadata: Record<string, unknown> = {\n    model: response.model,\n    created_at: response.created_at,\n    id: response.id,\n    incomplete_details: response.incomplete_details,\n    metadata: response.metadata,\n    object: response.object,\n    status: response.status,\n    user: response.user,\n    service_tier: response.service_tier,\n\n    // for compatibility with chat completion calls.\n    model_name: response.model,\n  };\n\n  const additional_kwargs: {\n    [key: string]: unknown;\n    refusal?: string;\n    reasoning?: OpenAIClient.Responses.ResponseReasoningItem;\n    tool_outputs?: unknown[];\n    parsed?: unknown;\n    [_FUNCTION_CALL_IDS_MAP_KEY]?: Record<string, string>;\n  } = {};\n\n  for (const item of response.output) {\n    if (item.type === 'message') {\n      messageId = item.id;\n      content.push(\n        ...item.content.flatMap((part) => {\n          if (part.type === 'output_text') {\n            if ('parsed' in part && part.parsed != null) {\n              additional_kwargs.parsed = part.parsed;\n            }\n            return {\n              type: 'text',\n              text: part.text,\n              annotations: part.annotations,\n            };\n          }\n\n          if (part.type === 'refusal') {\n            additional_kwargs.refusal = part.refusal;\n            return [];\n          }\n\n          return part;\n        })\n      );\n    } else if (item.type === 'function_call') {\n      const fnAdapter = {\n        function: { name: item.name, arguments: item.arguments },\n        id: item.call_id,\n      };\n\n      try {\n        tool_calls.push(parseToolCall(fnAdapter, { returnId: true }));\n      } catch (e: unknown) {\n        let errMessage: string | undefined;\n        if (\n          typeof e === 'object' &&\n          e != null &&\n          'message' in e &&\n          typeof e.message === 'string'\n        ) {\n          errMessage = e.message;\n        }\n        invalid_tool_calls.push(makeInvalidToolCall(fnAdapter, errMessage));\n      }\n\n      additional_kwargs[_FUNCTION_CALL_IDS_MAP_KEY] ??= {};\n      if (item.id) {\n        additional_kwargs[_FUNCTION_CALL_IDS_MAP_KEY][item.call_id] = item.id;\n      }\n    } else if (item.type === 'reasoning') {\n      additional_kwargs.reasoning = item;\n    } else {\n      additional_kwargs.tool_outputs ??= [];\n      additional_kwargs.tool_outputs.push(item);\n    }\n  }\n\n  return new AIMessage({\n    id: messageId,\n    content,\n    tool_calls,\n    invalid_tool_calls,\n    usage_metadata: response.usage,\n    additional_kwargs,\n    response_metadata,\n  });\n}\n\nexport function _convertOpenAIResponsesDeltaToBaseMessageChunk(\n  chunk: ResponseReturnStreamEvents\n) {\n  const content: Record<string, unknown>[] = [];\n  let generationInfo: Record<string, unknown> = {};\n  let usage_metadata: UsageMetadata | undefined;\n  const tool_call_chunks: ToolCallChunk[] = [];\n  const response_metadata: Record<string, unknown> = {};\n  const additional_kwargs: {\n    [key: string]: unknown;\n    reasoning?: Partial<ChatOpenAIReasoningSummary>;\n    tool_outputs?: unknown[];\n  } = {};\n  let id: string | undefined;\n  if (chunk.type === 'response.output_text.delta') {\n    content.push({\n      type: 'text',\n      text: chunk.delta,\n      index: chunk.content_index,\n    });\n    /** @ts-ignore */\n  } else if (chunk.type === 'response.output_text_annotation.added') {\n    content.push({\n      type: 'text',\n      text: '',\n      /** @ts-ignore */\n      annotations: [chunk.annotation],\n      /** @ts-ignore */\n      index: chunk.content_index,\n    });\n  } else if (\n    chunk.type === 'response.output_item.added' &&\n    chunk.item.type === 'message'\n  ) {\n    id = chunk.item.id;\n  } else if (\n    chunk.type === 'response.output_item.added' &&\n    chunk.item.type === 'function_call'\n  ) {\n    tool_call_chunks.push({\n      type: 'tool_call_chunk',\n      name: chunk.item.name,\n      args: chunk.item.arguments,\n      id: chunk.item.call_id,\n      index: chunk.output_index,\n    });\n\n    additional_kwargs[_FUNCTION_CALL_IDS_MAP_KEY] = {\n      [chunk.item.call_id]: chunk.item.id,\n    };\n  } else if (\n    chunk.type === 'response.output_item.done' &&\n    [\n      'web_search_call',\n      'file_search_call',\n      'computer_call',\n      'code_interpreter_call',\n      'mcp_call',\n      'mcp_list_tools',\n      'mcp_approval_request',\n      'image_generation_call',\n    ].includes(chunk.item.type)\n  ) {\n    additional_kwargs.tool_outputs = [chunk.item];\n  } else if (chunk.type === 'response.created') {\n    response_metadata.id = chunk.response.id;\n    response_metadata.model_name = chunk.response.model;\n    response_metadata.model = chunk.response.model;\n  } else if (chunk.type === 'response.completed') {\n    const msg = _convertOpenAIResponsesMessageToBaseMessage(chunk.response);\n\n    usage_metadata = chunk.response.usage;\n    if (chunk.response.text?.format?.type === 'json_schema') {\n      additional_kwargs.parsed ??= JSON.parse(msg.text);\n    }\n    for (const [key, value] of Object.entries(chunk.response)) {\n      if (key !== 'id') response_metadata[key] = value;\n    }\n  } else if (chunk.type === 'response.function_call_arguments.delta') {\n    tool_call_chunks.push({\n      type: 'tool_call_chunk',\n      args: chunk.delta,\n      index: chunk.output_index,\n    });\n  } else if (\n    chunk.type === 'response.web_search_call.completed' ||\n    chunk.type === 'response.file_search_call.completed'\n  ) {\n    generationInfo = {\n      tool_outputs: {\n        id: chunk.item_id,\n        type: chunk.type.replace('response.', '').replace('.completed', ''),\n        status: 'completed',\n      },\n    };\n  } else if (chunk.type === 'response.refusal.done') {\n    additional_kwargs.refusal = chunk.refusal;\n  } else if (\n    chunk.type === 'response.output_item.added' &&\n    'item' in chunk &&\n    chunk.item.type === 'reasoning'\n  ) {\n    const summary: ChatOpenAIReasoningSummary['summary'] | undefined = chunk\n      .item.summary\n      ? chunk.item.summary.map((s, index) => ({\n        ...s,\n        index,\n      }))\n      : undefined;\n\n    additional_kwargs.reasoning = {\n      // We only capture ID in the first chunk or else the concatenated result of all chunks will\n      // have an ID field that is repeated once per chunk. There is special handling for the `type`\n      // field that prevents this, however.\n      id: chunk.item.id,\n      type: chunk.item.type,\n      ...(summary ? { summary } : {}),\n    };\n  } else if (chunk.type === 'response.reasoning_summary_part.added') {\n    additional_kwargs.reasoning = {\n      type: 'reasoning',\n      summary: [{ ...chunk.part, index: chunk.summary_index }],\n    };\n  } else if (chunk.type === 'response.reasoning_summary_text.delta') {\n    additional_kwargs.reasoning = {\n      type: 'reasoning',\n      summary: [\n        { text: chunk.delta, type: 'summary_text', index: chunk.summary_index },\n      ],\n    };\n    /** @ts-ignore */\n  } else if (chunk.type === 'response.image_generation_call.partial_image') {\n    // noop/fixme: retaining partial images in a message chunk means that _all_\n    // partial images get kept in history, so we don't do anything here.\n    return null;\n  } else {\n    return null;\n  }\n\n  return new ChatGenerationChunk({\n    // Legacy reasons, `onLLMNewToken` should pulls this out\n    text: content.map((part) => part.text).join(''),\n    message: new AIMessageChunk({\n      id,\n      content,\n      tool_call_chunks,\n      usage_metadata,\n      additional_kwargs,\n      response_metadata,\n    }),\n    generationInfo,\n  });\n}\n"],"names":["ChatMessage","parseBase64DataUrl","parseMimeType","messages","isDataContentBlock","convertToProviderContentBlock","isAIMessage","convertLangChainToolCallToOpenAI","parseToolCall","makeInvalidToolCall","AIMessage","ChatGenerationChunk","AIMessageChunk"],"mappings":"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"}