{"version":3,"sources":["../src/convert-messages.ts"],"names":["MessageList"],"mappings":";;;;;AAIA,SAAS,0BAA0B,OAAA,EAKhC;AAED,EAAA,IAAI,OAAA,CAAQ,QAAA,EAAU,cAAA,IAAkB,OAAA,CAAQ,UAAU,uBAAA,EAAyB;AACjF,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAA,CAAQ,SAAS,MAAA,EAAQ;AAC3B,IAAA,OAAO,KAAA;AAAA,EACT;AAGA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,EAAG;AAChC,IAAA,OAAO,QAAQ,KAAA,CAAM,IAAA;AAAA,MACnB,CAAA,IAAA,KAAQ,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,OAAO,IAAA,CAAK,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,IAAA,CAAK,QAAA,CAAS,kBAAkB;AAAA,KACxG;AAAA,EACF;AAEA,EAAA,OAAO,OAAO,OAAA,CAAQ,OAAA,KAAY,YAAY,OAAA,CAAQ,OAAA,CAAQ,SAAS,kBAAkB,CAAA;AAC3F;AAEA,SAAS,+BAEP,QAAA,EAAoB;AACpB,EAAA,OAAO,SAAS,MAAA,CAAO,CAAA,OAAA,KAAW,CAAC,yBAAA,CAA0B,OAAO,CAAC,CAAA;AACvE;AA8CO,SAAS,eAAA,CACd,QAAA,EACA,OAAA,GAAoC,EAAC,EACN;AAC/B,EAAA,MAAM,OAAO,IAAIA,uBAAA,EAAY,CAAE,GAAA,CAAI,UAAU,CAAA,MAAA,CAAQ,CAAA;AACrD,EAAA,IAAI,OAAA,CAAQ,YAAY,IAAA,EAAM;AAC5B,IAAA,OAAO,+BAA+B,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AAAA,EAC9D;AACA,EAAA,OAAO,+BAA+B,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AAC9D;AA2CO,SAAS,kBAAkB,QAAA,EAA4B;AAC5D,EAAA,OAAO,8BAAA,CAA+B,eAAA,CAAgB,QAAQ,CAAC,CAAA;AACjE;AA+CO,SAAS,kBAAkB,QAAA,EAA4B;AAC5D,EAAA,OAAO,8BAAA,CAA+B,IAAIA,uBAAA,EAAY,CAAE,GAAA,CAAI,QAAA,EAAU,CAAA,MAAA,CAAQ,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,IAAA,CAAK,EAAA,EAAI,CAAA;AACnG","file":"ui.cjs","sourcesContent":["import { MessageList } from '@mastra/core/agent/message-list';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { V5UIMessage, V6UIMessage } from './public-types';\n\nfunction isSystemReminderUIMessage(message: {\n  role?: string;\n  parts?: Array<{ type?: string; text?: string }>;\n  content?: unknown;\n  metadata?: Record<string, unknown>;\n}) {\n  // Check metadata first — processors stamp systemReminder or legacy dynamicAgentsMdReminder\n  if (message.metadata?.systemReminder || message.metadata?.dynamicAgentsMdReminder) {\n    return true;\n  }\n\n  if (message.role !== 'user') {\n    return false;\n  }\n\n  // Fall back to text inspection for backward compatibility\n  if (Array.isArray(message.parts)) {\n    return message.parts.some(\n      part => part.type === 'text' && typeof part.text === 'string' && part.text.includes('<system-reminder'),\n    );\n  }\n\n  return typeof message.content === 'string' && message.content.includes('<system-reminder');\n}\n\nfunction filterSystemReminderUIMessages<\n  T extends { role?: string; parts?: Array<{ type?: string; text?: string }>; content?: unknown },\n>(messages: T[]): T[] {\n  return messages.filter(message => !isSystemReminderUIMessage(message));\n}\n\ntype MessageConversionOptionsV5 = {\n  version?: 'v5';\n};\n\ntype MessageConversionOptionsV6 = {\n  version: 'v6';\n};\n\ntype MessageConversionOptions = MessageConversionOptionsV5 | MessageConversionOptionsV6;\n\n/**\n * Converts messages from various input formats to AI SDK UI message format.\n *\n * This function accepts messages in multiple formats (strings, AI SDK V4/V5/V6 messages, Mastra DB messages, etc.)\n * and normalizes them to the AI SDK UIMessage format. It keeps the existing AI SDK v5/default behavior. If your app\n * is typed against AI SDK v6, pass `version: 'v6'`.\n *\n * Note: `version: 'v6'` uses the MessageList AI SDK v6 UI output path. MessageList input detection and ingestion\n * remain unchanged.\n *\n * @param messages - Messages to convert. Accepts:\n *   - `string` - A single text message (treated as user role)\n *   - `string[]` - Multiple text messages\n *   - `MessageInput` - A single message object in any supported format:\n *     - AI SDK V5 UIMessage or ModelMessage\n *     - AI SDK V4 UIMessage or CoreMessage\n *     - MastraDBMessage (internal storage format)\n *     - MastraMessageV1 (legacy format)\n *   - `MessageInput[]` - Array of message objects\n * @param options - Conversion options. Omit or pass `{ version: 'v5' }` for the existing default behavior. Pass\n *   `{ version: 'v6' }` when your app is typed against AI SDK v6 `useChat()` message types.\n *\n * @returns An array of AI SDK UIMessage objects typed for the selected version.\n *\n * @example\n * ```typescript\n * import { toAISdkMessages } from '@mastra/ai-sdk/ui';\n *\n * const v5Messages = toAISdkMessages(storedMessages);\n * const v6Messages = toAISdkMessages(storedMessages, { version: 'v6' });\n * ```\n */\nexport function toAISdkMessages(messages: MessageListInput, options?: MessageConversionOptionsV5): V5UIMessage[];\nexport function toAISdkMessages(messages: MessageListInput, options: MessageConversionOptionsV6): V6UIMessage[];\nexport function toAISdkMessages(\n  messages: MessageListInput,\n  options: MessageConversionOptions = {},\n): V5UIMessage[] | V6UIMessage[] {\n  const list = new MessageList().add(messages, `memory`);\n  if (options.version === 'v6') {\n    return filterSystemReminderUIMessages(list.get.all.aiV6.ui());\n  }\n  return filterSystemReminderUIMessages(list.get.all.aiV5.ui());\n}\n\n/**\n * Converts messages from various input formats to AI SDK V5 UI message format.\n *\n * This function accepts messages in multiple formats (strings, AI SDK V4/V5 messages, Mastra DB messages, etc.) and normalizes them to the AI SDK V5 UIMessage format, which is suitable for use with AI SDK V5 UI components like `useChat()`.\n *\n * @param messages - Messages to convert. Accepts:\n *   - `string` - A single text message (treated as user role)\n *   - `string[]` - Multiple text messages\n *   - `MessageInput` - A single message object in any supported format:\n *     - AI SDK V5 UIMessage or ModelMessage\n *     - AI SDK V4 UIMessage or CoreMessage\n *     - MastraDBMessage (internal storage format)\n *     - MastraMessageV1 (legacy format)\n *   - `MessageInput[]` - Array of message objects\n *\n * @returns An array of AI SDK V5 UIMessage objects with:\n *   - `id` - Unique message identifier\n *   - `role` - 'user' | 'assistant' | 'system'\n *   - `parts` - Array of UI parts (text, tool results, files, reasoning, etc.)\n *   - `metadata` - Optional metadata including createdAt, threadId, resourceId\n *\n * @example\n * ```typescript\n * import { toAISdkV5Messages } from '@mastra/ai-sdk';\n *\n * // Convert simple text messages\n * const messages = toAISdkV5Messages(['Hello', 'How can I help?']);\n *\n * // Convert AI SDK V4 messages to V5 format\n * const v4Messages = [\n *   { id: '1', role: 'user', content: 'Hello', parts: [{ type: 'text', text: 'Hello' }] },\n *   { id: '2', role: 'assistant', content: 'Hi!', parts: [{ type: 'text', text: 'Hi!' }] }\n * ];\n * const v5Messages = toAISdkV5Messages(v4Messages);\n *\n * // Use with useChat or similar AI SDK V5 hooks\n * const { messages: chatMessages } = useChat({\n *   initialMessages: toAISdkV5Messages(storedMessages)\n * });\n * ```\n */\nexport function toAISdkV5Messages(messages: MessageListInput) {\n  return filterSystemReminderUIMessages(toAISdkMessages(messages));\n}\n\n/**\n * Converts messages from various input formats to AI SDK V4 UI message format.\n *\n * This function accepts messages in multiple formats (strings, AI SDK V4/V5 messages, Mastra DB messages, etc.) and normalizes them to the AI SDK V4 UIMessage format, which is suitable for use with AI SDK V4 UI components.\n *\n * @param messages - Messages to convert. Accepts:\n *   - `string` - A single text message (treated as user role)\n *   - `string[]` - Multiple text messages\n *   - `MessageInput` - A single message object in any supported format:\n *     - AI SDK V5 UIMessage or ModelMessage\n *     - AI SDK V4 UIMessage or CoreMessage\n *     - MastraDBMessage (internal storage format)\n *     - MastraMessageV1 (legacy format)\n *   - `MessageInput[]` - Array of message objects\n *\n * @returns An array of AI SDK V4 UIMessage objects with:\n *   - `id` - Unique message identifier\n *   - `role` - 'user' | 'assistant' | 'system'\n *   - `content` - Text content of the message\n *   - `parts` - Array of UI parts (text, tool-invocation, file, reasoning, etc.)\n *   - `createdAt` - Message creation timestamp\n *   - `toolInvocations` - Optional array of tool invocations (for assistant messages)\n *   - `experimental_attachments` - Optional file attachments\n *   - `metadata` - Optional custom metadata\n *\n * @example\n * ```typescript\n * import { toAISdkV4Messages } from '@mastra/ai-sdk';\n *\n * // Convert simple text messages\n * const messages = toAISdkV4Messages(['Hello', 'How can I help?']);\n *\n * // Convert AI SDK V5 messages to V4 format for legacy compatibility\n * const v5Messages = [\n *   { id: '1', role: 'user', parts: [{ type: 'text', text: 'Hello' }] },\n *   { id: '2', role: 'assistant', parts: [{ type: 'text', text: 'Hi!' }] }\n * ];\n * const v4Messages = toAISdkV4Messages(v5Messages);\n *\n * // Use with AI SDK V4 useChat hook\n * const { messages: chatMessages } = useChat({\n *   initialMessages: toAISdkV4Messages(storedMessages)\n * });\n * ```\n */\nexport function toAISdkV4Messages(messages: MessageListInput) {\n  return filterSystemReminderUIMessages(new MessageList().add(messages, `memory`).get.all.aiV4.ui());\n}\n"]}