{"version":3,"sources":["../../../../src/adapters/langchain/backend/utils.ts"],"names":["removeFalsy","arr","filter","item","Boolean","toLCContent","message","ToolMessage","toolResult","getToolResults","Logger","root","warn","output","isString","value","JSON","stringify","lcContent","part","content","type","push","text","imageUrl","image","URL","toString","String","url","file_data","data","format","mediaType","filename","toLCToolArgs","input","isPlainObject","parsed","parseBrokenJson","pair","error","Error","toLCToolCalls","getToolCalls","map","toolCall","id","toolCallId","name","toolName","args","toBeeAITextParts","Array","isArray","undefined","flatMap","toBeeAIUserContentParts","results","mime_type","fileData","file_id","toBeeAIToolCall","toBeeAIToolResult","artifact","tool_call_id","response_metadata","tool_name","toLCMessages","messages","msg","UserMessage","LCUserMessage","AssistantMessage","LCAIMessage","tool_calls","toolResults","i","length","messageId","LCToolMessage","SystemMessage","LCSystemMessage","toBeeAIMessages","AIMessageChunk","typeName","ValueError","beeaiToolToLCTool","tool","schema","inputSchema","DynamicStructuredTool","description","func","result","run","getTextContent"],"mappings":"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","file":"utils.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n  AIMessage as LCAIMessage,\n  AIMessageChunk,\n  BaseMessage as LCBaseMessage,\n  HumanMessage as LCUserMessage,\n  SystemMessage as LCSystemMessage,\n  ToolMessage as LCToolMessage,\n} from \"@langchain/core/messages\";\nimport { DynamicStructuredTool } from \"@langchain/core/tools\";\nimport {\n  AssistantMessage,\n  Message,\n  SystemMessage,\n  ToolMessage,\n  UserMessage,\n} from \"@/backend/message.js\";\nimport { FilePart, ImagePart, TextPart, ToolCallPart, ToolResultPart } from \"ai\";\nimport { isPlainObject, isString } from \"remeda\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { Logger } from \"@/logger/logger.js\";\n\n/**\n * Removes falsy values from an array.\n * @param arr - Array to filter\n * @returns Array with falsy values removed\n */\nfunction removeFalsy<T>(arr: (T | null | undefined | false | 0 | \"\")[]): T[] {\n  return arr.filter((item): item is T => Boolean(item));\n}\n\n/**\n * Converts a BeeAI Message to LangChain content format.\n * Supports text, image, and file content types.\n * @param message - The BeeAI message to convert\n * @returns String content or array of content parts\n */\nfunction toLCContent(\n  message: Message,\n): string | { type: string; text?: string; url?: string; [key: string]: any }[] {\n  if (message instanceof ToolMessage) {\n    const toolResult = message.getToolResults()[0];\n    if (!toolResult) {\n      Logger.root.warn(\"ToolMessage has no tool results, returning empty string\");\n      return \"\";\n    }\n\n    if (\"value\" in toolResult.output && isString(toolResult.output.value)) {\n      return toolResult.output.value;\n    }\n\n    return JSON.stringify(toolResult.output);\n  }\n\n  const lcContent: ({ type: string; text?: string; url?: string; [key: string]: any } | null)[] =\n    [];\n\n  for (const part of message.content) {\n    if (part.type === \"text\") {\n      lcContent.push({ type: \"text\", text: part.text });\n    } else if (part.type === \"image\") {\n      const imageUrl = part.image instanceof URL ? part.image.toString() : String(part.image);\n      lcContent.push({ type: \"image\", url: imageUrl });\n    } else if (part.type === \"file\") {\n      lcContent.push({\n        type: \"file\",\n        file_data: part.data,\n        format: part.mediaType,\n        ...(part.filename && { filename: part.filename }),\n      });\n    } else {\n      lcContent.push(null);\n    }\n  }\n\n  return removeFalsy(lcContent);\n}\n\n/**\n * Converts tool call input to LangChain arguments format.\n * Parses JSON strings and handles broken JSON gracefully.\n * @param input - The tool call input (object or JSON string)\n * @returns Tool arguments as a record object\n */\nfunction toLCToolArgs(input: unknown): Record<string, any> {\n  if (isPlainObject(input)) {\n    return input;\n  }\n\n  if (isString(input)) {\n    try {\n      const parsed = parseBrokenJson(input, { pair: [\"{\", \"}\"] });\n      if (isPlainObject(parsed)) {\n        return parsed;\n      }\n    } catch (error) {\n      Logger.root.warn(\n        \"Failed to parse tool arguments: \" +\n          (error instanceof Error ? error.message : String(error)),\n      );\n    }\n  }\n\n  return {};\n}\n\n/**\n * Converts AssistantMessage tool calls to LangChain format.\n * @param message - The assistant message with tool calls\n * @returns Array of LangChain tool call objects\n */\nfunction toLCToolCalls(message: AssistantMessage) {\n  return message.getToolCalls().map((toolCall) => ({\n    id: toolCall.toolCallId,\n    name: toolCall.toolName,\n    args: toLCToolArgs(toolCall.input),\n    type: \"tool_call\" as const,\n  }));\n}\n\n/**\n * Converts LangChain message content to BeeAI TextPart array.\n * Handles strings, arrays, and text objects. Filters out empty values.\n * @param content - The LangChain message content\n * @returns Array of BeeAI TextPart objects\n */\nfunction toBeeAITextParts(content: unknown): TextPart[] {\n  if (typeof content === \"string\") {\n    return content ? [{ type: \"text\", text: content }] : [];\n  }\n\n  if (!Array.isArray(content)) {\n    if (content !== null && content !== undefined) {\n      Logger.root.warn(`Unexpected content type in toBeeAITextParts: ${typeof content}`);\n    }\n    return [];\n  }\n\n  return content.flatMap((part) => {\n    if (typeof part === \"string\") {\n      return part ? [{ type: \"text\", text: part }] : [];\n    }\n\n    if (\n      part &&\n      typeof part === \"object\" &&\n      \"type\" in part &&\n      part.type === \"text\" &&\n      \"text\" in part\n    ) {\n      return [{ type: \"text\", text: String(part.text ?? \"\") }];\n    }\n\n    return [];\n  });\n}\n\n/**\n * Converts LangChain message content to BeeAI content parts for UserMessage.\n * Supports text, image (URL or base64), and file content types.\n * @param content - The LangChain message content\n * @returns Array of TextPart, ImagePart, or FilePart objects\n */\nfunction toBeeAIUserContentParts(content: unknown): (TextPart | ImagePart | FilePart)[] {\n  if (typeof content === \"string\") {\n    return content ? [{ type: \"text\", text: content }] : [];\n  }\n\n  if (!Array.isArray(content)) {\n    if (content !== null && content !== undefined) {\n      Logger.root.warn(`Unexpected content type in toBeeAIContentParts: ${typeof content}`);\n    }\n    return [];\n  }\n\n  const results: (TextPart | ImagePart | FilePart | null)[] = [];\n\n  for (const part of content) {\n    if (typeof part === \"string\") {\n      if (part) {\n        results.push({ type: \"text\", text: part });\n      }\n      continue;\n    }\n\n    if (!part || typeof part !== \"object\" || !(\"type\" in part)) {\n      continue;\n    }\n\n    if (part.type === \"text\" && \"text\" in part) {\n      results.push({ type: \"text\", text: String(part.text ?? \"\") });\n      continue;\n    }\n\n    if (part.type === \"image\") {\n      let imageUrl = \"\";\n\n      if (\"url\" in part && part.url) {\n        imageUrl = String(part.url);\n      } else if (\"data\" in part && \"mime_type\" in part) {\n        imageUrl = `data:${part.mime_type};base64,${part.data}`;\n      }\n\n      if (imageUrl) {\n        results.push({\n          type: \"image\",\n          image: imageUrl,\n        });\n      }\n      continue;\n    }\n\n    if (part.type === \"file\") {\n      let fileData = \"\";\n      let mediaType = \"application/octet-stream\";\n      let filename: string | undefined;\n\n      if (\"file_id\" in part && part.file_id) {\n        fileData = String(part.file_id);\n      } else if (\"file_data\" in part && part.file_data) {\n        fileData = String(part.file_data);\n      }\n\n      if (\"format\" in part && part.format) {\n        mediaType = String(part.format);\n      } else if (\"mime_type\" in part && part.mime_type) {\n        mediaType = String(part.mime_type);\n      }\n\n      if (\"filename\" in part && part.filename) {\n        filename = String(part.filename);\n      }\n\n      if (fileData) {\n        results.push({\n          type: \"file\",\n          data: fileData,\n          mediaType,\n          ...(filename && { filename }),\n        });\n      }\n    }\n  }\n\n  return removeFalsy(results);\n}\n\n/**\n * Converts a LangChain tool call to BeeAI ToolCallPart format.\n * @param toolCall - The LangChain tool call object\n * @returns BeeAI ToolCallPart\n */\nfunction toBeeAIToolCall(toolCall: { id?: string; name?: string; args?: unknown }): ToolCallPart {\n  return {\n    type: \"tool-call\",\n    toolCallId: toolCall.id ?? \"\",\n    toolName: toolCall.name ?? \"\",\n    input: toolCall.args ?? {},\n  };\n}\n\n/**\n * Converts a LangChain ToolMessage to BeeAI ToolResultPart.\n * Falls back to artifact field if content is empty.\n * @param message - The LangChain tool message\n * @returns BeeAI ToolResultPart object\n */\nfunction toBeeAIToolResult(message: LCToolMessage): ToolResultPart {\n  let content: string;\n  if (typeof message.content === \"string\" && message.content !== \"\") {\n    content = message.content;\n  } else if (message.content !== undefined && message.content !== null && message.content !== \"\") {\n    content = JSON.stringify(message.content);\n  } else if (\"artifact\" in message && message.artifact !== undefined && message.artifact !== null) {\n    content =\n      typeof message.artifact === \"string\" ? message.artifact : JSON.stringify(message.artifact);\n  } else {\n    content = typeof message.content === \"string\" ? message.content : \"\";\n  }\n\n  return {\n    type: \"tool-result\",\n    toolCallId: message.tool_call_id,\n    toolName: String(message.response_metadata?.tool_name ?? \"unknown\"),\n    output: {\n      type: \"text\",\n      value: content,\n    },\n  };\n}\n\n/**\n * Converts BeeAI Messages to LangChain BaseMessage format.\n * Handles UserMessage, AssistantMessage, ToolMessage, and SystemMessage.\n * ToolMessages with multiple results are split into separate messages with ID suffixes.\n * Unknown types fallback to LCUserMessage.\n * @param messages - Array of BeeAI messages\n * @returns Array of LangChain BaseMessage objects\n */\nexport function toLCMessages(messages: Message[]): LCBaseMessage[] {\n  const output: LCBaseMessage[] = [];\n\n  for (const msg of messages) {\n    if (msg instanceof UserMessage) {\n      output.push(new LCUserMessage({ content: toLCContent(msg), id: msg.id }));\n      continue;\n    }\n\n    if (msg instanceof AssistantMessage) {\n      output.push(\n        new LCAIMessage({\n          content: toLCContent(msg),\n          id: msg.id,\n          tool_calls: toLCToolCalls(msg),\n        }),\n      );\n      continue;\n    }\n\n    if (msg instanceof ToolMessage) {\n      const toolResults = msg.getToolResults();\n      for (let i = 0; i < toolResults.length; i++) {\n        const toolResult = toolResults[i];\n        const messageId = toolResults.length > 1 ? msg.id + \"-\" + i : msg.id;\n        output.push(\n          new LCToolMessage({\n            id: messageId,\n            content:\n              \"value\" in toolResult.output && isString(toolResult.output.value)\n                ? toolResult.output.value\n                : JSON.stringify(toolResult.output),\n            tool_call_id: toolResult.toolCallId,\n            response_metadata: { tool_name: toolResult.toolName },\n          }),\n        );\n      }\n      continue;\n    }\n\n    if (msg instanceof SystemMessage) {\n      output.push(new LCSystemMessage({ content: toLCContent(msg), id: msg.id }));\n      continue;\n    }\n\n    output.push(new LCUserMessage({ content: toLCContent(msg), id: msg.id }));\n  }\n\n  return output;\n}\n\n/**\n * Converts LangChain BaseMessages to BeeAI Message format.\n * Handles LCUserMessage, LCAIMessage, AIMessageChunk, LCSystemMessage, and LCToolMessage.\n * Throws ValueError for unknown message types.\n * @param messages - Array of LangChain messages\n * @returns Array of BeeAI Message objects\n */\nexport function toBeeAIMessages(messages: LCBaseMessage[]): Message[] {\n  return messages.map((msg) => {\n    if (msg instanceof LCUserMessage) {\n      return new UserMessage(toBeeAIUserContentParts(msg.content), msg.response_metadata, msg.id);\n    }\n\n    if (msg instanceof LCAIMessage || msg instanceof AIMessageChunk) {\n      return new AssistantMessage(\n        [...toBeeAITextParts(msg.content), ...(msg.tool_calls ?? []).map(toBeeAIToolCall)],\n        msg.response_metadata,\n        msg.id,\n      );\n    }\n\n    if (msg instanceof LCSystemMessage) {\n      return new SystemMessage(toBeeAITextParts(msg.content), msg.response_metadata, msg.id);\n    }\n\n    if (msg instanceof LCToolMessage) {\n      return new ToolMessage(toBeeAIToolResult(msg), msg.response_metadata, msg.id);\n    }\n\n    // Use .type property (LangChain 1.x) with fallback to constructor.name\n    const typeName = \"type\" in msg && msg.type ? String(msg.type) : msg.constructor.name;\n    throw new ValueError(\"Unsupported message type: \" + typeName);\n  });\n}\n\n/**\n * Converts a BeeAI Tool to LangChain DynamicStructuredTool.\n * Wraps the tool's run method and extracts text content from results.\n * @param tool - The BeeAI tool to convert\n * @returns Promise resolving to LangChain DynamicStructuredTool\n */\nexport async function beeaiToolToLCTool(tool: any): Promise<DynamicStructuredTool> {\n  const schema = await tool.inputSchema();\n\n  return new DynamicStructuredTool({\n    name: tool.name,\n    description: tool.description,\n    schema,\n    func: async (input: any) => {\n      const result = await tool.run(input);\n      return result.getTextContent();\n    },\n  });\n}\n"]}