{"version":3,"sources":["../../../../src/runtimes/edge/converters/toLanguageModelMessages.ts"],"sourcesContent":["import {\n  LanguageModelV1ImagePart,\n  LanguageModelV1Message,\n  LanguageModelV1TextPart,\n  LanguageModelV1ToolCallPart,\n  LanguageModelV1ToolResultPart,\n} from \"@ai-sdk/provider\";\nimport {\n  CoreMessage,\n  ThreadMessage,\n  TextContentPart,\n  CoreToolCallContentPart,\n} from \"../../../types/AssistantTypes\";\n\nconst assistantMessageSplitter = () => {\n  const stash: LanguageModelV1Message[] = [];\n  let assistantMessage = {\n    role: \"assistant\" as const,\n    content: [] as (LanguageModelV1TextPart | LanguageModelV1ToolCallPart)[],\n  };\n  let toolMessage = {\n    role: \"tool\" as const,\n    content: [] as LanguageModelV1ToolResultPart[],\n  };\n\n  return {\n    addTextContentPart: (part: TextContentPart) => {\n      if (toolMessage.content.length > 0) {\n        stash.push(assistantMessage);\n        stash.push(toolMessage);\n\n        assistantMessage = {\n          role: \"assistant\" as const,\n          content: [] as (\n            | LanguageModelV1TextPart\n            | LanguageModelV1ToolCallPart\n          )[],\n        };\n\n        toolMessage = {\n          role: \"tool\" as const,\n          content: [] as LanguageModelV1ToolResultPart[],\n        };\n      }\n\n      assistantMessage.content.push(part);\n    },\n    addToolCallPart: (part: CoreToolCallContentPart) => {\n      assistantMessage.content.push({\n        type: \"tool-call\",\n        toolCallId: part.toolCallId,\n        toolName: part.toolName,\n        args: part.args,\n      });\n\n      toolMessage.content.push({\n        type: \"tool-result\",\n        toolCallId: part.toolCallId,\n        toolName: part.toolName,\n        result: part.result ?? \"<no result>\",\n        isError: part.isError ?? false,\n      });\n    },\n    getMessages: () => {\n      if (toolMessage.content.length > 0) {\n        return [...stash, assistantMessage, toolMessage];\n      }\n\n      return [...stash, assistantMessage];\n    },\n  };\n};\n\nexport function toLanguageModelMessages(\n  message: readonly CoreMessage[] | readonly ThreadMessage[],\n): LanguageModelV1Message[] {\n  return message.flatMap((message) => {\n    const role = message.role;\n    switch (role) {\n      case \"system\": {\n        return [{ role: \"system\", content: message.content[0].text }];\n      }\n\n      case \"user\": {\n        const msg: LanguageModelV1Message = {\n          role: \"user\",\n          content: message.content.map(\n            (part): LanguageModelV1TextPart | LanguageModelV1ImagePart => {\n              const type = part.type;\n              switch (type) {\n                case \"text\": {\n                  return part;\n                }\n\n                case \"image\": {\n                  return {\n                    type: \"image\",\n                    image: new URL(part.image),\n                  };\n                }\n\n                default: {\n                  const unhandledType: \"ui\" | \"audio\" = type;\n                  throw new Error(\n                    `Unspported content part type: ${unhandledType}`,\n                  );\n                }\n              }\n            },\n          ),\n        };\n        return [msg];\n      }\n\n      case \"assistant\": {\n        const splitter = assistantMessageSplitter();\n        for (const part of message.content) {\n          const type = part.type;\n          switch (type) {\n            case \"text\": {\n              splitter.addTextContentPart(part);\n              break;\n            }\n            case \"tool-call\": {\n              splitter.addToolCallPart(part);\n              break;\n            }\n            default: {\n              const unhandledType: \"ui\" = type;\n              throw new Error(`Unhandled content part type: ${unhandledType}`);\n            }\n          }\n        }\n        return splitter.getMessages();\n      }\n\n      default: {\n        const unhandledRole: never = role;\n        throw new Error(`Unknown message role: ${unhandledRole}`);\n      }\n    }\n  });\n}\n"],"mappings":"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","names":["message"]}