@mastra/ai-sdk 1.0.0-beta.0 → 1.0.0-beta.10

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.
Files changed (50) hide show
  1. package/CHANGELOG.md +325 -0
  2. package/README.md +60 -0
  3. package/dist/__tests__/__fixtures__/network.stream.d.ts +2329 -0
  4. package/dist/__tests__/__fixtures__/network.stream.d.ts.map +1 -0
  5. package/dist/_types/@ai-sdk_provider/dist/index.d.ts +1719 -0
  6. package/dist/chat-route.d.ts +90 -3
  7. package/dist/chat-route.d.ts.map +1 -1
  8. package/dist/chunk-DES3K4SD.cjs +17 -0
  9. package/dist/chunk-DES3K4SD.cjs.map +1 -0
  10. package/dist/chunk-KYQEM4AK.js +294 -0
  11. package/dist/chunk-KYQEM4AK.js.map +1 -0
  12. package/dist/chunk-TD7TJ4N5.cjs +297 -0
  13. package/dist/chunk-TD7TJ4N5.cjs.map +1 -0
  14. package/dist/chunk-VUNV25KB.js +14 -0
  15. package/dist/chunk-VUNV25KB.js.map +1 -0
  16. package/dist/convert-messages.d.ts +83 -3
  17. package/dist/convert-messages.d.ts.map +1 -1
  18. package/dist/convert-streams.d.ts +64 -1
  19. package/dist/convert-streams.d.ts.map +1 -1
  20. package/dist/helpers.d.ts +9 -3
  21. package/dist/helpers.d.ts.map +1 -1
  22. package/dist/index.cjs +3872 -118
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.ts +8 -6
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +3848 -117
  27. package/dist/index.js.map +1 -1
  28. package/dist/middleware.d.ts +157 -0
  29. package/dist/middleware.d.ts.map +1 -0
  30. package/dist/network-route.d.ts +63 -2
  31. package/dist/network-route.d.ts.map +1 -1
  32. package/dist/token-5ZTQBFQ6.cjs +63 -0
  33. package/dist/token-5ZTQBFQ6.cjs.map +1 -0
  34. package/dist/token-UOO4N54I.js +61 -0
  35. package/dist/token-UOO4N54I.js.map +1 -0
  36. package/dist/token-util-DUN56AZR.cjs +9 -0
  37. package/dist/token-util-DUN56AZR.cjs.map +1 -0
  38. package/dist/token-util-JCUK3SCT.js +7 -0
  39. package/dist/token-util-JCUK3SCT.js.map +1 -0
  40. package/dist/transformers.d.ts +136 -10
  41. package/dist/transformers.d.ts.map +1 -1
  42. package/dist/ui.cjs +0 -1
  43. package/dist/ui.cjs.map +1 -1
  44. package/dist/ui.js +0 -1
  45. package/dist/ui.js.map +1 -1
  46. package/dist/utils.d.ts +2 -1
  47. package/dist/utils.d.ts.map +1 -1
  48. package/dist/workflow-route.d.ts +68 -1
  49. package/dist/workflow-route.d.ts.map +1 -1
  50. package/package.json +9 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,330 @@
1
1
  # @mastra/ai-sdk
2
2
 
3
+ ## 1.0.0-beta.10
4
+
5
+ ### Patch Changes
6
+
7
+ - Add support for AI SDK v6 (LanguageModelV3) ([#11191](https://github.com/mastra-ai/mastra/pull/11191))
8
+
9
+ Agents can now use `LanguageModelV3` models from AI SDK v6 beta providers like `@ai-sdk/openai@^3.0.0-beta`.
10
+
11
+ **New features:**
12
+ - Usage normalization: V3's nested usage format is normalized to Mastra's flat format with `reasoningTokens`, `cachedInputTokens`, and raw data preserved in a `raw` field
13
+
14
+ **Backward compatible:** All existing V1 and V2 models continue to work unchanged.
15
+
16
+ - Fix requestContext not being forwarded from middleware in chatRoute and networkRoute ([`b7b0930`](https://github.com/mastra-ai/mastra/commit/b7b0930dbe72eade8d3882992f2f2db53220e4eb))
17
+
18
+ Previously, when using middleware to set values in requestContext (e.g., extracting agentId and organizationId from the request body), those values were not properly forwarded to agents, tools, and workflows when using chatRoute and networkRoute from the AI SDK.
19
+
20
+ This fix ensures that requestContext set by middleware is correctly prioritized and forwarded with the following precedence:
21
+ 1. Context from middleware (highest priority)
22
+ 2. Context from defaultOptions
23
+ 3. Context from request body (lowest priority)
24
+
25
+ Resolves #11192
26
+
27
+ - Updated dependencies [[`4f94ed8`](https://github.com/mastra-ai/mastra/commit/4f94ed8177abfde3ec536e3574883e075423350c), [`ac3cc23`](https://github.com/mastra-ai/mastra/commit/ac3cc2397d1966bc0fc2736a223abc449d3c7719), [`a86f4df`](https://github.com/mastra-ai/mastra/commit/a86f4df0407311e0d2ea49b9a541f0938810d6a9), [`029540c`](https://github.com/mastra-ai/mastra/commit/029540ca1e582fc2dd8d288ecd4a9b0f31a954ef), [`66741d1`](https://github.com/mastra-ai/mastra/commit/66741d1a99c4f42cf23a16109939e8348ac6852e), [`01b20fe`](https://github.com/mastra-ai/mastra/commit/01b20fefb7c67c2b7d79417598ef4e60256d1225), [`0dbf199`](https://github.com/mastra-ai/mastra/commit/0dbf199110f22192ce5c95b1c8148d4872b4d119), [`a7ce182`](https://github.com/mastra-ai/mastra/commit/a7ce1822a8785ce45d62dd5c911af465e144f7d7)]:
28
+ - @mastra/core@1.0.0-beta.14
29
+
30
+ ## 1.0.0-beta.9
31
+
32
+ ### Patch Changes
33
+
34
+ - Embed AI types to fix peerdeps mismatches ([`9650cce`](https://github.com/mastra-ai/mastra/commit/9650cce52a1d917ff9114653398e2a0f5c3ba808))
35
+
36
+ - Improve JSDoc comments for `toAISdkV5Messages, toAISdkV4Messages` functions ([#11119](https://github.com/mastra-ai/mastra/pull/11119))
37
+
38
+ - Fixed duplicate assistant messages appearing when using `useChat` with memory enabled. ([#11195](https://github.com/mastra-ai/mastra/pull/11195))
39
+
40
+ **What was happening:** When using `useChat` with `chatRoute` and memory, assistant messages were being duplicated in storage after multiple conversation turns. This occurred because the backend-generated message ID wasn't being sent back to `useChat`, causing ID mismatches during deduplication.
41
+
42
+ **What changed:**
43
+ - The backend now sends the assistant message ID in the stream's start event, so `useChat` uses the same ID as storage
44
+ - Custom `data-*` parts (from `writer.custom()`) are now preserved when messages contain V5 tool parts
45
+
46
+ Fixes #11091
47
+
48
+ - add requestContext support to networkRoute ([#11164](https://github.com/mastra-ai/mastra/pull/11164))
49
+
50
+ - Updated dependencies [[`d5ed981`](https://github.com/mastra-ai/mastra/commit/d5ed981c8701c1b8a27a5f35a9a2f7d9244e695f), [`9650cce`](https://github.com/mastra-ai/mastra/commit/9650cce52a1d917ff9114653398e2a0f5c3ba808), [`932d63d`](https://github.com/mastra-ai/mastra/commit/932d63dd51be9c8bf1e00e3671fe65606c6fb9cd), [`b760b73`](https://github.com/mastra-ai/mastra/commit/b760b731aca7c8a3f041f61d57a7f125ae9cb215), [`695a621`](https://github.com/mastra-ai/mastra/commit/695a621528bdabeb87f83c2277cf2bb084c7f2b4), [`2b459f4`](https://github.com/mastra-ai/mastra/commit/2b459f466fd91688eeb2a44801dc23f7f8a887ab), [`486352b`](https://github.com/mastra-ai/mastra/commit/486352b66c746602b68a95839f830de14c7fb8c0), [`09e4bae`](https://github.com/mastra-ai/mastra/commit/09e4bae18dd5357d2ae078a4a95a2af32168ab08), [`24b76d8`](https://github.com/mastra-ai/mastra/commit/24b76d8e17656269c8ed09a0c038adb9cc2ae95a), [`243a823`](https://github.com/mastra-ai/mastra/commit/243a8239c5906f5c94e4f78b54676793f7510ae3), [`486352b`](https://github.com/mastra-ai/mastra/commit/486352b66c746602b68a95839f830de14c7fb8c0), [`c61fac3`](https://github.com/mastra-ai/mastra/commit/c61fac3add96f0dcce0208c07415279e2537eb62), [`6f14f70`](https://github.com/mastra-ai/mastra/commit/6f14f706ccaaf81b69544b6c1b75ab66a41e5317), [`09e4bae`](https://github.com/mastra-ai/mastra/commit/09e4bae18dd5357d2ae078a4a95a2af32168ab08), [`4524734`](https://github.com/mastra-ai/mastra/commit/45247343e384717a7c8404296275c56201d6470f), [`2a53598`](https://github.com/mastra-ai/mastra/commit/2a53598c6d8cfeb904a7fc74e57e526d751c8fa6), [`c7cd3c7`](https://github.com/mastra-ai/mastra/commit/c7cd3c7a187d7aaf79e2ca139de328bf609a14b4), [`847c212`](https://github.com/mastra-ai/mastra/commit/847c212caba7df0d6f2fc756b494ac3c75c3720d), [`6f941c4`](https://github.com/mastra-ai/mastra/commit/6f941c438ca5f578619788acc7608fc2e23bd176)]:
51
+ - @mastra/core@1.0.0-beta.12
52
+
53
+ ## 1.0.0-beta.8
54
+
55
+ ### Patch Changes
56
+
57
+ - Support new Workflow tripwire run status. Tripwires that are thrown from within a workflow will now bubble up and return a graceful state with information about tripwires. ([#10947](https://github.com/mastra-ai/mastra/pull/10947))
58
+
59
+ When a workflow contains an agent step that triggers a tripwire, the workflow returns with `status: 'tripwire'` and includes tripwire details:
60
+
61
+ ```typescript showLineNumbers copy
62
+ const run = await workflow.createRun();
63
+ const result = await run.start({ inputData: { message: 'Hello' } });
64
+
65
+ if (result.status === 'tripwire') {
66
+ console.log('Workflow terminated by tripwire:', result.tripwire?.reason);
67
+ console.log('Processor ID:', result.tripwire?.processorId);
68
+ console.log('Retry requested:', result.tripwire?.retry);
69
+ }
70
+ ```
71
+
72
+ Adds new UI state for tripwire in agent chat and workflow UI.
73
+
74
+ This is distinct from `status: 'failed'` which indicates an unexpected error. A tripwire status means a processor intentionally stopped execution (e.g., for content moderation).
75
+
76
+ - Updated dependencies [[`38380b6`](https://github.com/mastra-ai/mastra/commit/38380b60fca905824bdf6b43df307a58efb1aa15), [`798d0c7`](https://github.com/mastra-ai/mastra/commit/798d0c740232653b1d754870e6b43a55c364ffe2), [`ffe84d5`](https://github.com/mastra-ai/mastra/commit/ffe84d54f3b0f85167fe977efd027dba027eb998), [`2c212e7`](https://github.com/mastra-ai/mastra/commit/2c212e704c90e2db83d4109e62c03f0f6ebd2667), [`4ca4306`](https://github.com/mastra-ai/mastra/commit/4ca430614daa5fa04730205a302a43bf4accfe9f), [`3bf6c5f`](https://github.com/mastra-ai/mastra/commit/3bf6c5f104c25226cd84e0c77f9dec15f2cac2db)]:
77
+ - @mastra/core@1.0.0-beta.11
78
+
79
+ ## 1.0.0-beta.7
80
+
81
+ ### Patch Changes
82
+
83
+ - Return NetworkDataPart on each agent-execution-event and workflow-execution-event in network streams ([#10982](https://github.com/mastra-ai/mastra/pull/10982))
84
+
85
+ - Fixed tool-call-suspended chunks being dropped in workflow-step-output when using AI SDK. Previously, when an agent inside a workflow step called a tool that got suspended, the tool-call-suspended chunk was not received on the frontend even though tool-input-available chunks were correctly received. ([#10987](https://github.com/mastra-ai/mastra/pull/10987))
86
+
87
+ The issue occurred because tool-call-suspended was not included in the isMastraTextStreamChunk list, causing it to be filtered out in transformWorkflow. Now tool-call-suspended, tool-call-approval, object, and tripwire chunks are properly included in the text stream chunk list and will be transformed and passed through correctly.
88
+
89
+ Fixes #10978
90
+
91
+ - Adds `withMastra()` for wrapping AI SDK models with Mastra processors and memory. ([#10911](https://github.com/mastra-ai/mastra/pull/10911))
92
+
93
+ ```typescript
94
+ import { openai } from '@ai-sdk/openai';
95
+ import { generateText } from 'ai';
96
+ import { withMastra } from '@mastra/ai-sdk';
97
+
98
+ const model = withMastra(openai('gpt-4o'), {
99
+ inputProcessors: [myGuardProcessor],
100
+ outputProcessors: [myLoggingProcessor],
101
+ memory: {
102
+ storage,
103
+ threadId: 'thread-123',
104
+ resourceId: 'user-123',
105
+ lastMessages: 10,
106
+ },
107
+ });
108
+
109
+ const { text } = await generateText({ model, prompt: 'Hello!' });
110
+ ```
111
+
112
+ Works with `generateText`, `streamText`, `generateObject`, and `streamObject`.
113
+
114
+ - Updated dependencies [[`72df8ae`](https://github.com/mastra-ai/mastra/commit/72df8ae595584cdd7747d5c39ffaca45e4507227), [`9198899`](https://github.com/mastra-ai/mastra/commit/91988995c427b185c33714b7f3be955367911324), [`653e65a`](https://github.com/mastra-ai/mastra/commit/653e65ae1f9502c2958a32f47a5a2df11e612a92), [`c6fd6fe`](https://github.com/mastra-ai/mastra/commit/c6fd6fedd09e9cf8004b03a80925f5e94826ad7e), [`0bed332`](https://github.com/mastra-ai/mastra/commit/0bed332843f627202c6520eaf671771313cd20f3)]:
115
+ - @mastra/core@1.0.0-beta.9
116
+
117
+ ## 1.0.0-beta.6
118
+
119
+ ### Patch Changes
120
+
121
+ - Improve JSDoc comments ([#10877](https://github.com/mastra-ai/mastra/pull/10877))
122
+
123
+ - Updated dependencies [[`0d41fe2`](https://github.com/mastra-ai/mastra/commit/0d41fe245355dfc66d61a0d9c85d9400aac351ff), [`6b3ba91`](https://github.com/mastra-ai/mastra/commit/6b3ba91494cc10394df96782f349a4f7b1e152cc), [`7907fd1`](https://github.com/mastra-ai/mastra/commit/7907fd1c5059813b7b870b81ca71041dc807331b)]:
124
+ - @mastra/core@1.0.0-beta.8
125
+
126
+ ## 1.0.0-beta.5
127
+
128
+ ### Minor Changes
129
+
130
+ - Add framework-agnostic stream handlers for use outside of Hono/Mastra server ([#10628](https://github.com/mastra-ai/mastra/pull/10628))
131
+ - `handleChatStream`: Standalone handler for streaming agent chat in AI SDK format
132
+ - `handleWorkflowStream`: Standalone handler for streaming workflow execution in AI SDK format
133
+ - `handleNetworkStream`: Standalone handler for streaming agent network execution in AI SDK format
134
+ These functions accept all arguments explicitly and return a `ReadableStream`, making them usable in any framework (Next.js App Router, Express, etc.) without depending on Hono context.
135
+
136
+ Example usage:
137
+
138
+ ```typescript
139
+ import { handleChatStream } from '@mastra/ai-sdk';
140
+ import { createUIMessageStreamResponse } from 'ai';
141
+ export async function POST(req: Request) {
142
+ const params = await req.json();
143
+ const stream = await handleChatStream({
144
+ mastra,
145
+ agentId: 'weatherAgent',
146
+ params,
147
+ });
148
+ return createUIMessageStreamResponse({ stream });
149
+ }
150
+ ```
151
+
152
+ New exports:
153
+ - handleChatStream, ChatStreamHandlerParams, ChatStreamHandlerOptions
154
+ - handleWorkflowStream, WorkflowStreamHandlerParams, WorkflowStreamHandlerOptions
155
+ - handleNetworkStream, NetworkStreamHandlerParams, NetworkStreamHandlerOptions
156
+
157
+ ### Patch Changes
158
+
159
+ - Support streaming agent text chunks from workflow-step-output ([#10540](https://github.com/mastra-ai/mastra/pull/10540))
160
+
161
+ Adds support for streaming text and tool call chunks from agents running inside workflows via the workflow-step-output event. When you pipe an agent's stream into a workflow step's writer, the text chunks, tool calls, and other streaming events are automatically included in the workflow stream and converted to UI messages.
162
+
163
+ **Features:**
164
+ - Added `includeTextStreamParts` option to `WorkflowStreamToAISDKTransformer` (defaults to `true`)
165
+ - Added `isMastraTextStreamChunk` type guard to identify Mastra chunks with text streaming data
166
+ - Support for streaming text chunks: `text-start`, `text-delta`, `text-end`
167
+ - Support for streaming tool calls: `tool-call`, `tool-result`
168
+ - Comprehensive test coverage in `transformers.test.ts`
169
+ - Updated documentation for workflow streaming and `workflowRoute()`
170
+
171
+ **Example:**
172
+
173
+ ```typescript
174
+ const planActivities = createStep({
175
+ execute: async ({ mastra, writer }) => {
176
+ const agent = mastra?.getAgent('weatherAgent');
177
+ const response = await agent.stream('Plan activities');
178
+ await response.fullStream.pipeTo(writer);
179
+
180
+ return { activities: await response.text };
181
+ },
182
+ });
183
+ ```
184
+
185
+ When served via `workflowRoute()`, the UI receives incremental text updates as the agent generates its response, providing a smooth streaming experience.
186
+
187
+ - Added support for resuming agent streams in the chat route. You can now pass `resumeData` in the request body to continue a previous agent stream, enabling long-running conversations and multi-step agent workflows. ([#10448](https://github.com/mastra-ai/mastra/pull/10448))
188
+
189
+ - Updated dependencies [[`ac0d2f4`](https://github.com/mastra-ai/mastra/commit/ac0d2f4ff8831f72c1c66c2be809706d17f65789), [`1a0d3fc`](https://github.com/mastra-ai/mastra/commit/1a0d3fc811482c9c376cdf79ee615c23bae9b2d6), [`85a628b`](https://github.com/mastra-ai/mastra/commit/85a628b1224a8f64cd82ea7f033774bf22df7a7e), [`c237233`](https://github.com/mastra-ai/mastra/commit/c23723399ccedf7f5744b3f40997b79246bfbe64), [`15f9e21`](https://github.com/mastra-ai/mastra/commit/15f9e216177201ea6e3f6d0bfb063fcc0953444f), [`ff94dea`](https://github.com/mastra-ai/mastra/commit/ff94dea935f4e34545c63bcb6c29804732698809), [`5b2ff46`](https://github.com/mastra-ai/mastra/commit/5b2ff4651df70c146523a7fca773f8eb0a2272f8), [`db41688`](https://github.com/mastra-ai/mastra/commit/db4168806d007417e2e60b4f68656dca4e5f40c9), [`5ca599d`](https://github.com/mastra-ai/mastra/commit/5ca599d0bb59a1595f19f58473fcd67cc71cef58), [`bff1145`](https://github.com/mastra-ai/mastra/commit/bff114556b3cbadad9b2768488708f8ad0e91475), [`5c8ca24`](https://github.com/mastra-ai/mastra/commit/5c8ca247094e0cc2cdbd7137822fb47241f86e77), [`e191844`](https://github.com/mastra-ai/mastra/commit/e1918444ca3f80e82feef1dad506cd4ec6e2875f), [`22553f1`](https://github.com/mastra-ai/mastra/commit/22553f11c63ee5e966a9c034a349822249584691), [`7237163`](https://github.com/mastra-ai/mastra/commit/72371635dbf96a87df4b073cc48fc655afbdce3d), [`2500740`](https://github.com/mastra-ai/mastra/commit/2500740ea23da067d6e50ec71c625ab3ce275e64), [`873ecbb`](https://github.com/mastra-ai/mastra/commit/873ecbb517586aa17d2f1e99283755b3ebb2863f), [`4f9bbe5`](https://github.com/mastra-ai/mastra/commit/4f9bbe5968f42c86f4930b8193de3c3c17e5bd36), [`02e51fe`](https://github.com/mastra-ai/mastra/commit/02e51feddb3d4155cfbcc42624fd0d0970d032c0), [`8f3fa3a`](https://github.com/mastra-ai/mastra/commit/8f3fa3a652bb77da092f913ec51ae46e3a7e27dc), [`cd29ad2`](https://github.com/mastra-ai/mastra/commit/cd29ad23a255534e8191f249593849ed29160886), [`bdf4d8c`](https://github.com/mastra-ai/mastra/commit/bdf4d8cdc656d8a2c21d81834bfa3bfa70f56c16), [`854e3da`](https://github.com/mastra-ai/mastra/commit/854e3dad5daac17a91a20986399d3a51f54bf68b), [`ce18d38`](https://github.com/mastra-ai/mastra/commit/ce18d38678c65870350d123955014a8432075fd9), [`cccf9c8`](https://github.com/mastra-ai/mastra/commit/cccf9c8b2d2dfc1a5e63919395b83d78c89682a0), [`61a5705`](https://github.com/mastra-ai/mastra/commit/61a570551278b6743e64243b3ce7d73de915ca8a), [`db70a48`](https://github.com/mastra-ai/mastra/commit/db70a48aeeeeb8e5f92007e8ede52c364ce15287), [`f0fdc14`](https://github.com/mastra-ai/mastra/commit/f0fdc14ee233d619266b3d2bbdeea7d25cfc6d13), [`db18bc9`](https://github.com/mastra-ai/mastra/commit/db18bc9c3825e2c1a0ad9a183cc9935f6691bfa1), [`9b37b56`](https://github.com/mastra-ai/mastra/commit/9b37b565e1f2a76c24f728945cc740c2b09be9da), [`41a23c3`](https://github.com/mastra-ai/mastra/commit/41a23c32f9877d71810f37e24930515df2ff7a0f), [`5d171ad`](https://github.com/mastra-ai/mastra/commit/5d171ad9ef340387276b77c2bb3e83e83332d729), [`f03ae60`](https://github.com/mastra-ai/mastra/commit/f03ae60500fe350c9d828621006cdafe1975fdd8), [`d1e74a0`](https://github.com/mastra-ai/mastra/commit/d1e74a0a293866dece31022047f5dbab65a304d0), [`39e7869`](https://github.com/mastra-ai/mastra/commit/39e7869bc7d0ee391077ce291474d8a84eedccff), [`5761926`](https://github.com/mastra-ai/mastra/commit/57619260c4a2cdd598763abbacd90de594c6bc76), [`c900fdd`](https://github.com/mastra-ai/mastra/commit/c900fdd504c41348efdffb205cfe80d48c38fa33), [`604a79f`](https://github.com/mastra-ai/mastra/commit/604a79fecf276e26a54a3fe01bb94e65315d2e0e), [`887f0b4`](https://github.com/mastra-ai/mastra/commit/887f0b4746cdbd7cb7d6b17ac9f82aeb58037ea5), [`2562143`](https://github.com/mastra-ai/mastra/commit/256214336b4faa78646c9c1776612393790d8784), [`ef11a61`](https://github.com/mastra-ai/mastra/commit/ef11a61920fa0ed08a5b7ceedd192875af119749)]:
190
+ - @mastra/core@1.0.0-beta.6
191
+
192
+ ## 1.0.0-beta.4
193
+
194
+ ### Patch Changes
195
+
196
+ - Added `messageMetadata` and `onError` options to `toAISdkV5Stream`, enabling you to attach custom metadata to stream chunks and handle errors during stream conversion. ([#10313](https://github.com/mastra-ai/mastra/pull/10313))
197
+
198
+ #### messageMetadata
199
+
200
+ Attach custom metadata to start and finish chunks by providing a function that receives the current stream part:
201
+
202
+ ```typescript
203
+ const stream = toAISdkV5Stream(agentStream, {
204
+ from: 'agent',
205
+ messageMetadata: ({ part }) => ({
206
+ timestamp: Date.now(),
207
+ sessionId: 'session-123',
208
+ partType: part.type,
209
+ }),
210
+ });
211
+ ```
212
+
213
+ #### onError
214
+
215
+ Customize error handling during stream conversion:
216
+
217
+ ```typescript
218
+ const stream = toAISdkV5Stream(agentStream, {
219
+ from: 'agent',
220
+ onError: error => {
221
+ console.error('Stream error:', error);
222
+ return JSON.stringify({ error: error.message });
223
+ },
224
+ });
225
+ ```
226
+
227
+ - Fix chat route to use agent ID instead of agent name for resolution. The `/chat/:agentId` endpoint now correctly resolves agents by their ID property (e.g., `weather-agent`) instead of requiring the camelCase variable name (e.g., `weatherAgent`). This fixes issue #10469 where URLs like `/chat/weather-agent` would return 404 errors. ([#10484](https://github.com/mastra-ai/mastra/pull/10484))
228
+
229
+ - Fixes propagation of custom data chunks from nested workflows in branches to the root stream when using `toAISdkV5Stream` with `{from: 'workflow'}`. ([#10447](https://github.com/mastra-ai/mastra/pull/10447))
230
+
231
+ Previously, when a nested workflow within a branch used `writer.custom()` to write data-\* chunks, those chunks were wrapped in `workflow-step-output` events and not extracted, causing them to be dropped from the root stream.
232
+
233
+ **Changes:**
234
+ - Added handling for `workflow-step-output` chunks in `transformWorkflow()` to extract and propagate data-\* chunks
235
+ - When a `workflow-step-output` chunk contains a data-\* chunk in its `payload.output`, the transformer now extracts it and returns it directly to the root stream
236
+ - Added comprehensive test coverage for nested workflows with branches and custom data propagation
237
+
238
+ This ensures that custom data chunks written via `writer.custom()` in nested workflows (especially those within branches) are properly propagated to the root stream, allowing consumers to receive progress updates, metrics, and other custom data from nested workflow steps.
239
+
240
+ - Fix network data step formatting in AI SDK stream transformation ([#10432](https://github.com/mastra-ai/mastra/pull/10432))
241
+
242
+ Previously, network execution steps were not being tracked correctly in the AI SDK stream transformation. Steps were being duplicated rather than updated, and critical metadata like step IDs, iterations, and task information was missing or incorrectly structured.
243
+
244
+ **Changes:**
245
+ - Enhanced step tracking in `AgentNetworkToAISDKTransformer` to properly maintain step state throughout execution lifecycle
246
+ - Steps are now identified by unique IDs and updated in place rather than creating duplicates
247
+ - Added proper iteration and task metadata to each step in the network execution flow
248
+ - Fixed agent, workflow, and tool execution events to correctly populate step data
249
+ - Updated network stream event types to include `networkId`, `workflowId`, and consistent `runId` tracking
250
+ - Added test coverage for network custom data chunks with comprehensive validation
251
+
252
+ This ensures the AI SDK correctly represents the full execution flow of agent networks with accurate step sequencing and metadata.
253
+
254
+ - Add support for tool-call-approval and tool-call-suspended events in chatRoute ([#10205](https://github.com/mastra-ai/mastra/pull/10205))
255
+
256
+ - Fixed workflow routes to properly receive request context from middleware. This aligns the behavior of `workflowRoute` with `chatRoute`, ensuring that context set in middleware is consistently forwarded to workflows. ([#10427](https://github.com/mastra-ai/mastra/pull/10427))
257
+
258
+ When both middleware and request body provide a request context, the middleware value now takes precedence, and a warning is emitted to help identify potential conflicts.
259
+
260
+ See [#10427](https://github.com/mastra-ai/mastra/pull/10427)
261
+
262
+ - Updated dependencies [[`21a15de`](https://github.com/mastra-ai/mastra/commit/21a15de369fe82aac26bb642ed7be73505475e8b), [`feb7ee4`](https://github.com/mastra-ai/mastra/commit/feb7ee4d09a75edb46c6669a3beaceec78811747), [`b0e2ea5`](https://github.com/mastra-ai/mastra/commit/b0e2ea5b52c40fae438b9e2f7baee6f0f89c5442), [`c456e01`](https://github.com/mastra-ai/mastra/commit/c456e0149e3c176afcefdbd9bb1d2c5917723725), [`ab035c2`](https://github.com/mastra-ai/mastra/commit/ab035c2ef6d8cc7bb25f06f1a38508bd9e6f126b), [`1a46a56`](https://github.com/mastra-ai/mastra/commit/1a46a566f45a3fcbadc1cf36bf86d351f264bfa3), [`3cf540b`](https://github.com/mastra-ai/mastra/commit/3cf540b9fbfea8f4fc8d3a2319a4e6c0b0cbfd52), [`1c6ce51`](https://github.com/mastra-ai/mastra/commit/1c6ce51f875915ab57fd36873623013699a2a65d), [`898a972`](https://github.com/mastra-ai/mastra/commit/898a9727d286c2510d6b702dfd367e6aaf5c6b0f), [`a97003a`](https://github.com/mastra-ai/mastra/commit/a97003aa1cf2f4022a41912324a1e77263b326b8), [`ccc141e`](https://github.com/mastra-ai/mastra/commit/ccc141ed27da0abc3a3fc28e9e5128152e8e37f4), [`fe3b897`](https://github.com/mastra-ai/mastra/commit/fe3b897c2ccbcd2b10e81b099438c7337feddf89), [`00123ba`](https://github.com/mastra-ai/mastra/commit/00123ba96dc9e5cd0b110420ebdba56d8f237b25), [`29c4309`](https://github.com/mastra-ai/mastra/commit/29c4309f818b24304c041bcb4a8f19b5f13f6b62), [`16785ce`](https://github.com/mastra-ai/mastra/commit/16785ced928f6f22638f4488cf8a125d99211799), [`de8239b`](https://github.com/mastra-ai/mastra/commit/de8239bdcb1d8c0cfa06da21f1569912a66bbc8a), [`b5e6cd7`](https://github.com/mastra-ai/mastra/commit/b5e6cd77fc8c8e64e0494c1d06cee3d84e795d1e), [`3759cb0`](https://github.com/mastra-ai/mastra/commit/3759cb064935b5f74c65ac2f52a1145f7352899d), [`651e772`](https://github.com/mastra-ai/mastra/commit/651e772eb1475fb13e126d3fcc01751297a88214), [`b61b93f`](https://github.com/mastra-ai/mastra/commit/b61b93f9e058b11dd2eec169853175d31dbdd567), [`bae33d9`](https://github.com/mastra-ai/mastra/commit/bae33d91a63fbb64d1e80519e1fc1acaed1e9013), [`c0b731f`](https://github.com/mastra-ai/mastra/commit/c0b731fb27d712dc8582e846df5c0332a6a0c5ba), [`43ca8f2`](https://github.com/mastra-ai/mastra/commit/43ca8f2c7334851cc7b4d3d2f037d8784bfbdd5f), [`2ca67cc`](https://github.com/mastra-ai/mastra/commit/2ca67cc3bb1f6a617353fdcab197d9efebe60d6f), [`9e67002`](https://github.com/mastra-ai/mastra/commit/9e67002b52c9be19936c420a489dbee9c5fd6a78), [`35edc49`](https://github.com/mastra-ai/mastra/commit/35edc49ac0556db609189641d6341e76771b81fc)]:
263
+ - @mastra/core@1.0.0-beta.5
264
+
265
+ ## 1.0.0-beta.3
266
+
267
+ ### Patch Changes
268
+
269
+ - Added support for tripwire data chunks in streaming responses. ([#10269](https://github.com/mastra-ai/mastra/pull/10269))
270
+
271
+ Tripwire chunks allow the AI SDK to emit special data events when certain conditions are triggered during stream processing. These chunks include a `tripwireReason` field explaining why the tripwire was activated.
272
+
273
+ #### Usage
274
+
275
+ When converting Mastra chunks to AI SDK v5 format, tripwire chunks are now automatically handled:
276
+
277
+ ```typescript
278
+ // Tripwire chunks are converted to data-tripwire format
279
+ const chunk = {
280
+ type: 'tripwire',
281
+ payload: { tripwireReason: 'Rate limit approaching' }
282
+ };
283
+
284
+ // Converts to:
285
+ {
286
+ type: 'data-tripwire',
287
+ data: { tripwireReason: 'Rate limit approaching' }
288
+ }
289
+ ```
290
+
291
+ - Updated dependencies [[`352a5d6`](https://github.com/mastra-ai/mastra/commit/352a5d625cfe09849b21e8f52a24c9f0366759d5), [`a0a5b4b`](https://github.com/mastra-ai/mastra/commit/a0a5b4bbebe6c701ebbadf744873aa0d5ca01371), [`69ea758`](https://github.com/mastra-ai/mastra/commit/69ea758358edd7117f191c2e69c8bb5fc79e7a1a), [`993ad98`](https://github.com/mastra-ai/mastra/commit/993ad98d7ad3bebda9ecef5fec5c94349a0d04bc), [`3ff2c17`](https://github.com/mastra-ai/mastra/commit/3ff2c17a58e312fad5ea37377262c12d92ca0908)]:
292
+ - @mastra/core@1.0.0-beta.4
293
+
294
+ ## 1.0.0-beta.2
295
+
296
+ ### Major Changes
297
+
298
+ - Add sendStart, sendFinish, sendReasoning, and sendSources options to toAISdkV5Stream function, allowing fine-grained control over which message chunks are included in the converted stream. Previously, these values were hardcoded in the transformer. ([#10127](https://github.com/mastra-ai/mastra/pull/10127))
299
+
300
+ BREAKING CHANGE: AgentStreamToAISDKTransformer now accepts an options object instead of a single lastMessageId parameter
301
+
302
+ Also, add sendStart, sendFinish, sendReasoning, and sendSources parameters to
303
+ chatRoute function, enabling fine-grained control over which chunks are
304
+ included in the AI SDK stream output.
305
+
306
+ ### Patch Changes
307
+
308
+ - Extend the workflow route to accept optional runId and resourceId ([#10034](https://github.com/mastra-ai/mastra/pull/10034))
309
+ parameters, allowing clients to specify custom identifiers when
310
+ creating workflow runs. These parameters are now properly validated
311
+ in the OpenAPI schema and passed through to the createRun method.
312
+
313
+ Also updates the OpenAPI schema to include previously undocumented
314
+ resumeData and step fields.
315
+
316
+ - Updated dependencies [[`2319326`](https://github.com/mastra-ai/mastra/commit/2319326f8c64e503a09bbcf14be2dd65405445e0), [`d629361`](https://github.com/mastra-ai/mastra/commit/d629361a60f6565b5bfb11976fdaf7308af858e2), [`08c31c1`](https://github.com/mastra-ai/mastra/commit/08c31c188ebccd598acaf55e888b6397d01f7eae), [`fd3d338`](https://github.com/mastra-ai/mastra/commit/fd3d338a2c362174ed5b383f1f011ad9fb0302aa), [`c30400a`](https://github.com/mastra-ai/mastra/commit/c30400a49b994b1b97256fe785eb6c906fc2b232), [`69e0a87`](https://github.com/mastra-ai/mastra/commit/69e0a878896a2da9494945d86e056a5f8f05b851), [`01f8878`](https://github.com/mastra-ai/mastra/commit/01f88783de25e4de048c1c8aace43e26373c6ea5), [`4c77209`](https://github.com/mastra-ai/mastra/commit/4c77209e6c11678808b365d545845918c40045c8), [`d827d08`](https://github.com/mastra-ai/mastra/commit/d827d0808ffe1f3553a84e975806cc989b9735dd), [`23c10a1`](https://github.com/mastra-ai/mastra/commit/23c10a1efdd9a693c405511ab2dc8a1236603162), [`676ccc7`](https://github.com/mastra-ai/mastra/commit/676ccc7fe92468d2d45d39c31a87825c89fd1ea0), [`c10398d`](https://github.com/mastra-ai/mastra/commit/c10398d5b88f1d4af556f4267ff06f1d11e89179), [`00c2387`](https://github.com/mastra-ai/mastra/commit/00c2387f5f04a365316f851e58666ac43f8c4edf), [`ad6250d`](https://github.com/mastra-ai/mastra/commit/ad6250dbdaad927e29f74a27b83f6c468b50a705), [`3a73998`](https://github.com/mastra-ai/mastra/commit/3a73998fa4ebeb7f3dc9301afe78095fc63e7999), [`e16d553`](https://github.com/mastra-ai/mastra/commit/e16d55338403c7553531cc568125c63d53653dff), [`4d59f58`](https://github.com/mastra-ai/mastra/commit/4d59f58de2d90d6e2810a19d4518e38ddddb9038), [`e1bb9c9`](https://github.com/mastra-ai/mastra/commit/e1bb9c94b4eb68b019ae275981be3feb769b5365), [`351a11f`](https://github.com/mastra-ai/mastra/commit/351a11fcaf2ed1008977fa9b9a489fc422e51cd4)]:
317
+ - @mastra/core@1.0.0-beta.3
318
+
319
+ ## 1.0.0-beta.1
320
+
321
+ ### Patch Changes
322
+
323
+ - Improve ai-sdk transformers, handle custom data from agent sub workflow, sug agent tools ([#9919](https://github.com/mastra-ai/mastra/pull/9919))
324
+
325
+ - Updated dependencies [[`465ac05`](https://github.com/mastra-ai/mastra/commit/465ac0526a91d175542091c675181f1a96c98c46)]:
326
+ - @mastra/core@1.0.0-beta.2
327
+
3
328
  ## 1.0.0-beta.0
4
329
 
5
330
  ### Major Changes
package/README.md CHANGED
@@ -93,6 +93,64 @@ export const mastra = new Mastra({
93
93
  });
94
94
  ```
95
95
 
96
+ ## Framework-agnostic handlers
97
+
98
+ For use outside of the Mastra server (e.g., Next.js App Router, Express), you can use the standalone handler functions directly. These handlers return a `ReadableStream` that you can wrap with `createUIMessageStreamResponse`:
99
+
100
+ ### handleChatStream
101
+
102
+ ```typescript
103
+ import { handleChatStream } from '@mastra/ai-sdk';
104
+ import { createUIMessageStreamResponse } from 'ai';
105
+ import { mastra } from '@/src/mastra';
106
+
107
+ export async function POST(req: Request) {
108
+ const params = await req.json();
109
+ const stream = await handleChatStream({
110
+ mastra,
111
+ agentId: 'weatherAgent',
112
+ params,
113
+ });
114
+ return createUIMessageStreamResponse({ stream });
115
+ }
116
+ ```
117
+
118
+ ### handleWorkflowStream
119
+
120
+ ```typescript
121
+ import { handleWorkflowStream } from '@mastra/ai-sdk';
122
+ import { createUIMessageStreamResponse } from 'ai';
123
+ import { mastra } from '@/src/mastra';
124
+
125
+ export async function POST(req: Request) {
126
+ const params = await req.json();
127
+ const stream = await handleWorkflowStream({
128
+ mastra,
129
+ workflowId: 'myWorkflow',
130
+ params,
131
+ });
132
+ return createUIMessageStreamResponse({ stream });
133
+ }
134
+ ```
135
+
136
+ ### handleNetworkStream
137
+
138
+ ```typescript
139
+ import { handleNetworkStream } from '@mastra/ai-sdk';
140
+ import { createUIMessageStreamResponse } from 'ai';
141
+ import { mastra } from '@/src/mastra';
142
+
143
+ export async function POST(req: Request) {
144
+ const params = await req.json();
145
+ const stream = await handleNetworkStream({
146
+ mastra,
147
+ agentId: 'routingAgent',
148
+ params,
149
+ });
150
+ return createUIMessageStreamResponse({ stream });
151
+ }
152
+ ```
153
+
96
154
  ## Manual transformation
97
155
 
98
156
  If you have a raw Mastra `stream`, you can manually transform it to AI SDK UI message parts:
@@ -106,7 +164,9 @@ export async function POST(req: Request) {
106
164
  const agent = mastra.getAgent('weatherAgent');
107
165
  const stream = await agent.stream(messages);
108
166
 
167
+ // deduplicate messages https://ai-sdk.dev/docs/troubleshooting/repeated-assistant-messages
109
168
  const uiMessageStream = createUIMessageStream({
169
+ originalMessages: messages,
110
170
  execute: async ({ writer }) => {
111
171
  for await (const part of toAISdkFormat(stream, { from: 'agent' })!) {
112
172
  writer.write(part);