@mastra/ai-sdk 1.3.2 → 1.3.3-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @mastra/ai-sdk
2
2
 
3
+ ## 1.3.3-alpha.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Added toAISdkMessages() for loading stored Mastra messages into AI SDK v5 or v6 chat UIs. ([#14592](https://github.com/mastra-ai/mastra/pull/14592))
8
+
9
+ Use the default v5 behavior or pass { version: 'v6' } when your app is typed against AI SDK v6 useChat() message types.
10
+
11
+ - Updated dependencies [[`153e864`](https://github.com/mastra-ai/mastra/commit/153e86476b425db7cd0dc8490050096e92964a38)]:
12
+ - @mastra/core@1.23.1-alpha.0
13
+
3
14
  ## 1.3.2
4
15
 
5
16
  ### Patch Changes
package/README.md CHANGED
@@ -202,3 +202,17 @@ const uiMessageStream = createUIMessageStream({
202
202
  },
203
203
  });
204
204
  ```
205
+
206
+ ## Loading stored messages
207
+
208
+ Use `toAISdkMessages` from `@mastra/ai-sdk/ui` to convert stored Mastra messages for `useChat()` and other AI SDK UI hooks.
209
+
210
+ The helper keeps the existing v5/default behavior. If your app is typed against `ai@6`, pass `version: 'v6'`.
211
+ That uses the MessageList AI SDK v6 UI output path. MessageList input detection and ingestion remain unchanged.
212
+
213
+ ```typescript
214
+ import { toAISdkMessages } from '@mastra/ai-sdk/ui';
215
+
216
+ const v5Messages = toAISdkMessages(storedMessages);
217
+ const v6Messages = toAISdkMessages(storedMessages, { version: 'v6' });
218
+ ```
@@ -1,4 +1,45 @@
1
1
  import type { MessageListInput } from '@mastra/core/agent/message-list';
2
+ import type { V5UIMessage, V6UIMessage } from './public-types.js';
3
+ type MessageConversionOptionsV5 = {
4
+ version?: 'v5';
5
+ };
6
+ type MessageConversionOptionsV6 = {
7
+ version: 'v6';
8
+ };
9
+ /**
10
+ * Converts messages from various input formats to AI SDK UI message format.
11
+ *
12
+ * This function accepts messages in multiple formats (strings, AI SDK V4/V5/V6 messages, Mastra DB messages, etc.)
13
+ * and normalizes them to the AI SDK UIMessage format. It keeps the existing AI SDK v5/default behavior. If your app
14
+ * is typed against AI SDK v6, pass `version: 'v6'`.
15
+ *
16
+ * Note: `version: 'v6'` uses the MessageList AI SDK v6 UI output path. MessageList input detection and ingestion
17
+ * remain unchanged.
18
+ *
19
+ * @param messages - Messages to convert. Accepts:
20
+ * - `string` - A single text message (treated as user role)
21
+ * - `string[]` - Multiple text messages
22
+ * - `MessageInput` - A single message object in any supported format:
23
+ * - AI SDK V5 UIMessage or ModelMessage
24
+ * - AI SDK V4 UIMessage or CoreMessage
25
+ * - MastraDBMessage (internal storage format)
26
+ * - MastraMessageV1 (legacy format)
27
+ * - `MessageInput[]` - Array of message objects
28
+ * @param options - Conversion options. Omit or pass `{ version: 'v5' }` for the existing default behavior. Pass
29
+ * `{ version: 'v6' }` when your app is typed against AI SDK v6 `useChat()` message types.
30
+ *
31
+ * @returns An array of AI SDK UIMessage objects typed for the selected version.
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * import { toAISdkMessages } from '@mastra/ai-sdk/ui';
36
+ *
37
+ * const v5Messages = toAISdkMessages(storedMessages);
38
+ * const v6Messages = toAISdkMessages(storedMessages, { version: 'v6' });
39
+ * ```
40
+ */
41
+ export declare function toAISdkMessages(messages: MessageListInput, options?: MessageConversionOptionsV5): V5UIMessage[];
42
+ export declare function toAISdkMessages(messages: MessageListInput, options: MessageConversionOptionsV6): V6UIMessage[];
2
43
  /**
3
44
  * Converts messages from various input formats to AI SDK V5 UI message format.
4
45
  *
@@ -40,7 +81,7 @@ import type { MessageListInput } from '@mastra/core/agent/message-list';
40
81
  * });
41
82
  * ```
42
83
  */
43
- export declare function toAISdkV5Messages(messages: MessageListInput): import("@mastra/core/_types/@internal_ai-sdk-v5/dist").UIMessage<unknown, import("@mastra/core/_types/@internal_ai-sdk-v5/dist").UIDataTypes, import("@mastra/core/_types/@internal_ai-sdk-v5/dist").UITools>[];
84
+ export declare function toAISdkV5Messages(messages: MessageListInput): V5UIMessage[];
44
85
  /**
45
86
  * Converts messages from various input formats to AI SDK V4 UI message format.
46
87
  *
@@ -87,4 +128,5 @@ export declare function toAISdkV5Messages(messages: MessageListInput): import("@
87
128
  * ```
88
129
  */
89
130
  export declare function toAISdkV4Messages(messages: MessageListInput): import("@mastra/core/agent").UIMessageWithMetadata[];
131
+ export {};
90
132
  //# sourceMappingURL=convert-messages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"convert-messages.d.ts","sourceRoot":"","sources":["../src/convert-messages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,mNAE3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,wDAE3D"}
1
+ {"version":3,"file":"convert-messages.d.ts","sourceRoot":"","sources":["../src/convert-messages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE/D,KAAK,0BAA0B,GAAG;IAChC,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,OAAO,EAAE,IAAI,CAAC;CACf,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,WAAW,EAAE,CAAC;AACjH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,GAAG,WAAW,EAAE,CAAC;AAYhH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,iBAE3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,wDAE3D"}
package/dist/ui.cjs CHANGED
@@ -2,13 +2,21 @@
2
2
 
3
3
  var messageList = require('@mastra/core/agent/message-list');
4
4
 
5
+ function toAISdkMessages(messages, options = {}) {
6
+ const list = new messageList.MessageList().add(messages, `memory`);
7
+ if (options.version === "v6") {
8
+ return list.get.all.aiV6.ui();
9
+ }
10
+ return list.get.all.aiV5.ui();
11
+ }
5
12
  function toAISdkV5Messages(messages) {
6
- return new messageList.MessageList().add(messages, `memory`).get.all.aiV5.ui();
13
+ return toAISdkMessages(messages);
7
14
  }
8
15
  function toAISdkV4Messages(messages) {
9
16
  return new messageList.MessageList().add(messages, `memory`).get.all.aiV4.ui();
10
17
  }
11
18
 
19
+ exports.toAISdkMessages = toAISdkMessages;
12
20
  exports.toAISdkV4Messages = toAISdkV4Messages;
13
21
  exports.toAISdkV5Messages = toAISdkV5Messages;
14
22
  //# sourceMappingURL=ui.cjs.map
package/dist/ui.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/convert-messages.ts"],"names":["MessageList"],"mappings":";;;;AA4CO,SAAS,kBAAkB,QAAA,EAA4B;AAC5D,EAAA,OAAO,IAAIA,uBAAA,EAAY,CAAE,GAAA,CAAI,QAAA,EAAU,QAAQ,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,IAAA,CAAK,EAAA,EAAG;AACnE;AA+CO,SAAS,kBAAkB,QAAA,EAA4B;AAC5D,EAAA,OAAO,IAAIA,uBAAA,EAAY,CAAE,GAAA,CAAI,QAAA,EAAU,QAAQ,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,IAAA,CAAK,EAAA,EAAG;AACnE","file":"ui.cjs","sourcesContent":["import { MessageList } from '@mastra/core/agent/message-list';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\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 new MessageList().add(messages, `memory`).get.all.aiV5.ui();\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 new MessageList().add(messages, `memory`).get.all.aiV4.ui();\n}\n"]}
1
+ {"version":3,"sources":["../src/convert-messages.ts"],"names":["MessageList"],"mappings":";;;;AAgDO,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,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,IAAA,CAAK,EAAA,EAAG;AAAA,EAC9B;AACA,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,IAAA,CAAK,EAAA,EAAG;AAC9B;AA2CO,SAAS,kBAAkB,QAAA,EAA4B;AAC5D,EAAA,OAAO,gBAAgB,QAAQ,CAAA;AACjC;AA+CO,SAAS,kBAAkB,QAAA,EAA4B;AAC5D,EAAA,OAAO,IAAIA,uBAAA,EAAY,CAAE,GAAA,CAAI,QAAA,EAAU,QAAQ,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,IAAA,CAAK,EAAA,EAAG;AACnE","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\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 list.get.all.aiV6.ui();\n }\n return 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 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 new MessageList().add(messages, `memory`).get.all.aiV4.ui();\n}\n"]}
package/dist/ui.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { toAISdkV5Messages, toAISdkV4Messages } from './convert-messages.js';
1
+ export { toAISdkMessages, toAISdkV5Messages, toAISdkV4Messages } from './convert-messages.js';
2
2
  //# sourceMappingURL=ui.d.ts.map
package/dist/ui.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/ui.js CHANGED
@@ -1,12 +1,19 @@
1
1
  import { MessageList } from '@mastra/core/agent/message-list';
2
2
 
3
+ function toAISdkMessages(messages, options = {}) {
4
+ const list = new MessageList().add(messages, `memory`);
5
+ if (options.version === "v6") {
6
+ return list.get.all.aiV6.ui();
7
+ }
8
+ return list.get.all.aiV5.ui();
9
+ }
3
10
  function toAISdkV5Messages(messages) {
4
- return new MessageList().add(messages, `memory`).get.all.aiV5.ui();
11
+ return toAISdkMessages(messages);
5
12
  }
6
13
  function toAISdkV4Messages(messages) {
7
14
  return new MessageList().add(messages, `memory`).get.all.aiV4.ui();
8
15
  }
9
16
 
10
- export { toAISdkV4Messages, toAISdkV5Messages };
17
+ export { toAISdkMessages, toAISdkV4Messages, toAISdkV5Messages };
11
18
  //# sourceMappingURL=ui.js.map
12
19
  //# sourceMappingURL=ui.js.map
package/dist/ui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/convert-messages.ts"],"names":[],"mappings":";;AA4CO,SAAS,kBAAkB,QAAA,EAA4B;AAC5D,EAAA,OAAO,IAAI,WAAA,EAAY,CAAE,GAAA,CAAI,QAAA,EAAU,QAAQ,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,IAAA,CAAK,EAAA,EAAG;AACnE;AA+CO,SAAS,kBAAkB,QAAA,EAA4B;AAC5D,EAAA,OAAO,IAAI,WAAA,EAAY,CAAE,GAAA,CAAI,QAAA,EAAU,QAAQ,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,IAAA,CAAK,EAAA,EAAG;AACnE","file":"ui.js","sourcesContent":["import { MessageList } from '@mastra/core/agent/message-list';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\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 new MessageList().add(messages, `memory`).get.all.aiV5.ui();\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 new MessageList().add(messages, `memory`).get.all.aiV4.ui();\n}\n"]}
1
+ {"version":3,"sources":["../src/convert-messages.ts"],"names":[],"mappings":";;AAgDO,SAAS,eAAA,CACd,QAAA,EACA,OAAA,GAAoC,EAAC,EACN;AAC/B,EAAA,MAAM,OAAO,IAAI,WAAA,EAAY,CAAE,GAAA,CAAI,UAAU,CAAA,MAAA,CAAQ,CAAA;AACrD,EAAA,IAAI,OAAA,CAAQ,YAAY,IAAA,EAAM;AAC5B,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,IAAA,CAAK,EAAA,EAAG;AAAA,EAC9B;AACA,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,IAAA,CAAK,EAAA,EAAG;AAC9B;AA2CO,SAAS,kBAAkB,QAAA,EAA4B;AAC5D,EAAA,OAAO,gBAAgB,QAAQ,CAAA;AACjC;AA+CO,SAAS,kBAAkB,QAAA,EAA4B;AAC5D,EAAA,OAAO,IAAI,WAAA,EAAY,CAAE,GAAA,CAAI,QAAA,EAAU,QAAQ,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,IAAA,CAAK,EAAA,EAAG;AACnE","file":"ui.js","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\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 list.get.all.aiV6.ui();\n }\n return 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 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 new MessageList().add(messages, `memory`).get.all.aiV4.ui();\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/ai-sdk",
3
- "version": "1.3.2",
3
+ "version": "1.3.3-alpha.0",
4
4
  "description": "Adds custom API routes to be compatible with the AI SDK UI parts",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -46,14 +46,14 @@
46
46
  "typescript": "^5.9.3",
47
47
  "vitest": "4.0.18",
48
48
  "zod": "^4.3.6",
49
- "@internal/ai-sdk-v4": "0.0.27",
50
49
  "@internal/ai-sdk-v5": "0.0.27",
51
- "@internal/lint": "0.0.80",
52
- "@internal/types-builder": "0.0.55",
53
- "@mastra/core": "1.23.0",
54
50
  "@internal/ai-v6": "0.0.27",
51
+ "@internal/lint": "0.0.80",
55
52
  "@mastra/libsql": "1.8.0",
56
- "@mastra/memory": "1.14.0"
53
+ "@internal/types-builder": "0.0.55",
54
+ "@mastra/core": "1.23.1-alpha.0",
55
+ "@mastra/memory": "1.15.0-alpha.0",
56
+ "@internal/ai-sdk-v4": "0.0.27"
57
57
  },
58
58
  "keywords": [
59
59
  "mastra",