@mastra/ai-sdk 1.3.2 → 1.3.3
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 +22 -0
- package/README.md +14 -0
- package/dist/convert-messages.d.ts +43 -1
- package/dist/convert-messages.d.ts.map +1 -1
- package/dist/ui.cjs +9 -1
- package/dist/ui.cjs.map +1 -1
- package/dist/ui.d.ts +1 -1
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +9 -2
- package/dist/ui.js.map +1 -1
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @mastra/ai-sdk
|
|
2
2
|
|
|
3
|
+
## 1.3.3
|
|
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 [[`8db7663`](https://github.com/mastra-ai/mastra/commit/8db7663c9a9c735828094c359d2e327fd4f8fba3), [`153e864`](https://github.com/mastra-ai/mastra/commit/153e86476b425db7cd0dc8490050096e92964a38), [`715710d`](https://github.com/mastra-ai/mastra/commit/715710d12fa47cf88e09d41f13843eddc29327b0), [`378c6c4`](https://github.com/mastra-ai/mastra/commit/378c6c4755726e8d8cf83a14809b350b90d46c62), [`9f91fd5`](https://github.com/mastra-ai/mastra/commit/9f91fd538ab2a44f8cc740bcad8e51205f74fbea), [`ba6fa9c`](https://github.com/mastra-ai/mastra/commit/ba6fa9cc0f3e1912c49fd70d4c3bb8c44903ddaa)]:
|
|
12
|
+
- @mastra/core@1.24.0
|
|
13
|
+
|
|
14
|
+
## 1.3.3-alpha.0
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Added toAISdkMessages() for loading stored Mastra messages into AI SDK v5 or v6 chat UIs. ([#14592](https://github.com/mastra-ai/mastra/pull/14592))
|
|
19
|
+
|
|
20
|
+
Use the default v5 behavior or pass { version: 'v6' } when your app is typed against AI SDK v6 useChat() message types.
|
|
21
|
+
|
|
22
|
+
- Updated dependencies [[`153e864`](https://github.com/mastra-ai/mastra/commit/153e86476b425db7cd0dc8490050096e92964a38)]:
|
|
23
|
+
- @mastra/core@1.23.1-alpha.0
|
|
24
|
+
|
|
3
25
|
## 1.3.2
|
|
4
26
|
|
|
5
27
|
### 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):
|
|
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;
|
|
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
|
|
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":";;;;
|
|
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
|
|
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":";;
|
|
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.
|
|
3
|
+
"version": "1.3.3",
|
|
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.
|
|
50
|
-
"@internal/ai-
|
|
51
|
-
"@internal/lint": "0.0.
|
|
52
|
-
"@internal/
|
|
53
|
-
"@mastra/core": "1.
|
|
54
|
-
"@internal/ai-v6": "0.0.27",
|
|
49
|
+
"@internal/ai-sdk-v4": "0.0.28",
|
|
50
|
+
"@internal/ai-v6": "0.0.28",
|
|
51
|
+
"@internal/lint": "0.0.81",
|
|
52
|
+
"@internal/ai-sdk-v5": "0.0.28",
|
|
53
|
+
"@mastra/core": "1.24.0",
|
|
55
54
|
"@mastra/libsql": "1.8.0",
|
|
56
|
-
"@mastra/memory": "1.
|
|
55
|
+
"@mastra/memory": "1.15.0",
|
|
56
|
+
"@internal/types-builder": "0.0.56"
|
|
57
57
|
},
|
|
58
58
|
"keywords": [
|
|
59
59
|
"mastra",
|