@mastra/react 0.0.0-trace-timeline-update-20251121114225 → 0.0.0-type-testing-20260120105120

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,24 +1,680 @@
1
1
  # @mastra/react-hooks
2
2
 
3
- ## 0.0.0-trace-timeline-update-20251121114225
3
+ ## 0.0.0-type-testing-20260120105120
4
+
5
+ ### Major Changes
6
+
7
+ - **Fixed:** Align `Agent.network` with core and update `@mastra/react` network usage. ([#12015](https://github.com/mastra-ai/mastra/pull/12015))
4
8
 
5
9
  ### Minor Changes
6
10
 
11
+ - Added human-in-the-loop (HITL) tool approval support for `generate()` method. ([#12056](https://github.com/mastra-ai/mastra/pull/12056))
12
+
13
+ **Why:** This provides parity between `stream()` and `generate()` for tool approval flows, allowing non-streaming use cases to leverage `requireToolApproval` without needing to switch to streaming.
14
+
15
+ Previously, tool approval with `requireToolApproval` only worked with `stream()`. Now you can use the same approval flow with `generate()` for non-streaming use cases.
16
+
17
+ **Using tool approval with generate()**
18
+
19
+ ```typescript
20
+ const output = await agent.generate('Find user John', {
21
+ requireToolApproval: true,
22
+ });
23
+
24
+ // Check if a tool is waiting for approval
25
+ if (output.finishReason === 'suspended') {
26
+ console.log('Tool requires approval:', output.suspendPayload.toolName);
27
+
28
+ // Approve the tool call
29
+ const result = await agent.approveToolCallGenerate({
30
+ runId: output.runId,
31
+ toolCallId: output.suspendPayload.toolCallId,
32
+ });
33
+
34
+ console.log(result.text);
35
+ }
36
+ ```
37
+
38
+ **Declining a tool call**
39
+
40
+ ```typescript
41
+ if (output.finishReason === 'suspended') {
42
+ const result = await agent.declineToolCallGenerate({
43
+ runId: output.runId,
44
+ toolCallId: output.suspendPayload.toolCallId,
45
+ });
46
+ }
47
+ ```
48
+
49
+ **New methods added:**
50
+ - `agent.approveToolCallGenerate({ runId, toolCallId })` - Approves a pending tool call and returns the complete result
51
+ - `agent.declineToolCallGenerate({ runId, toolCallId })` - Declines a pending tool call and returns the complete result
52
+
53
+ **Server routes added:**
54
+ - `POST /api/agents/:agentId/approve-tool-call-generate`
55
+ - `POST /api/agents/:agentId/decline-tool-call-generate`
56
+
57
+ The playground UI now also supports tool approval when using generate mode.
58
+
7
59
  - Bump minimum required Node.js version to 22.13.0 ([#9706](https://github.com/mastra-ai/mastra/pull/9706))
8
60
 
9
61
  - Rename RuntimeContext to RequestContext ([#9511](https://github.com/mastra-ai/mastra/pull/9511))
10
62
 
63
+ - Unified observability schema with entity-based span identification ([#11132](https://github.com/mastra-ai/mastra/pull/11132))
64
+
65
+ ## What changed
66
+
67
+ Spans now use a unified identification model with `entityId`, `entityType`, and `entityName` instead of separate `agentId`, `toolId`, `workflowId` fields.
68
+
69
+ **Before:**
70
+
71
+ ```typescript
72
+ // Old span structure
73
+ span.agentId; // 'my-agent'
74
+ span.toolId; // undefined
75
+ span.workflowId; // undefined
76
+ ```
77
+
78
+ **After:**
79
+
80
+ ```typescript
81
+ // New span structure
82
+ span.entityType; // EntityType.AGENT
83
+ span.entityId; // 'my-agent'
84
+ span.entityName; // 'My Agent'
85
+ ```
86
+
87
+ ## New `listTraces()` API
88
+
89
+ Query traces with filtering, pagination, and sorting:
90
+
91
+ ```typescript
92
+ const { spans, pagination } = await storage.listTraces({
93
+ filters: {
94
+ entityType: EntityType.AGENT,
95
+ entityId: 'my-agent',
96
+ userId: 'user-123',
97
+ environment: 'production',
98
+ status: TraceStatus.SUCCESS,
99
+ startedAt: { start: new Date('2024-01-01'), end: new Date('2024-01-31') },
100
+ },
101
+ pagination: { page: 0, perPage: 50 },
102
+ orderBy: { field: 'startedAt', direction: 'DESC' },
103
+ });
104
+ ```
105
+
106
+ **Available filters:** date ranges (`startedAt`, `endedAt`), entity (`entityType`, `entityId`, `entityName`), identity (`userId`, `organizationId`), correlation IDs (`runId`, `sessionId`, `threadId`), deployment (`environment`, `source`, `serviceName`), `tags`, `metadata`, and `status`.
107
+
108
+ ## New retrieval methods
109
+ - `getSpan({ traceId, spanId })` - Get a single span
110
+ - `getRootSpan({ traceId })` - Get the root span of a trace
111
+ - `getTrace({ traceId })` - Get all spans for a trace
112
+
113
+ ## Backward compatibility
114
+
115
+ The legacy `getTraces()` method continues to work. When you pass `name: "agent run: my-agent"`, it automatically transforms to `entityId: "my-agent", entityType: AGENT`.
116
+
117
+ ## Migration
118
+
119
+ **Automatic:** SQL-based stores (PostgreSQL, LibSQL, MSSQL) automatically add new columns to existing `spans` tables on initialization. Existing data is preserved with new columns set to `NULL`.
120
+
121
+ **No action required:** Your existing code continues to work. Adopt the new fields and `listTraces()` API at your convenience.
122
+
11
123
  - Renamed `MastraMessageV2` to `MastraDBMessage` ([#9255](https://github.com/mastra-ai/mastra/pull/9255))
12
124
  Made the return format of all methods that return db messages consistent. It's always `{ messages: MastraDBMessage[] }` now, and messages can be converted after that using `@mastra/ai-sdk/ui`'s `toAISdkV4/5Messages()` function
13
125
 
126
+ - Fix "MessagePartRuntime is not available" error when chatting with agents in Studio playground by replacing deprecated `useMessagePart` hook with `useAssistantState` ([#11039](https://github.com/mastra-ai/mastra/pull/11039))
127
+
14
128
  ### Patch Changes
15
129
 
130
+ - Remove redundant toolCalls from network agent finalResult ([#11189](https://github.com/mastra-ai/mastra/pull/11189))
131
+
132
+ The network agent's `finalResult` was storing `toolCalls` separately even though all tool call information is already present in the `messages` array (as `tool-call` and `tool-result` type messages). This caused significant token waste since the routing agent reads this data from memory on every iteration.
133
+
134
+ **Before:** `finalResult: { text, toolCalls, messages }`
135
+ **After:** `finalResult: { text, messages }`
136
+
137
+ +**Migration:** If you were accessing `finalResult.toolCalls`, retrieve tool calls from `finalResult.messages` by filtering for messages with `type: 'tool-call'`.
138
+
139
+ Updated `@mastra/react` to extract tool calls directly from the `messages` array instead of the removed `toolCalls` field when resolving initial messages from memory.
140
+
141
+ Fixes #11059
142
+
143
+ - Auto resume suspended tools if `autoResumeSuspendedTools: true` ([#11157](https://github.com/mastra-ai/mastra/pull/11157))
144
+
145
+ The flag can be added to `defaultAgentOptions` when creating the agent or to options in `agent.stream` or `agent.generate`
146
+
147
+ ```typescript
148
+ const agent = new Agent({
149
+ //...agent information,
150
+ defaultAgentOptions: {
151
+ autoResumeSuspendedTools: true,
152
+ },
153
+ });
154
+ ```
155
+
156
+ - Removes the deprecated `threadId` and `resourceId` options from `AgentExecutionOptions`. These have been deprecated for months in favour of the `memory` option. ([#11897](https://github.com/mastra-ai/mastra/pull/11897))
157
+
158
+ ### Breaking Changes
159
+
160
+ #### `@mastra/core`
161
+
162
+ The `threadId` and `resourceId` options have been removed from `agent.generate()` and `agent.stream()`. Use the `memory` option instead:
163
+
164
+ ```ts
165
+ // Before
166
+ await agent.stream('Hello', {
167
+ threadId: 'thread-123',
168
+ resourceId: 'user-456',
169
+ });
170
+
171
+ // After
172
+ await agent.stream('Hello', {
173
+ memory: {
174
+ thread: 'thread-123',
175
+ resource: 'user-456',
176
+ },
177
+ });
178
+ ```
179
+
180
+ #### `@mastra/server`
181
+
182
+ The `threadId`, `resourceId`, and `resourceid` fields have been removed from the main agent execution body schema. The server now expects the `memory` option format in request bodies. Legacy routes (`/api/agents/:agentId/generate-legacy` and `/api/agents/:agentId/stream-legacy`) continue to support the deprecated fields.
183
+
184
+ #### `@mastra/react`
185
+
186
+ The `useChat` hook now internally converts `threadId` to the `memory` option format when making API calls. No changes needed in component code - the hook handles the conversion automatically.
187
+
188
+ #### `@mastra/client-js`
189
+
190
+ When using the client SDK agent methods, use the `memory` option instead of `threadId`/`resourceId`:
191
+
192
+ ```ts
193
+ const agent = client.getAgent('my-agent');
194
+
195
+ // Before
196
+ await agent.generate([...], {
197
+ threadId: 'thread-123',
198
+ resourceId: 'user-456',
199
+ });
200
+
201
+ // After
202
+ await agent.generate([...], {
203
+ memory: {
204
+ thread: 'thread-123',
205
+ resource: 'user-456',
206
+ },
207
+ });
208
+ ```
209
+
210
+ - Adjust the types to accept tracingOptions ([#10742](https://github.com/mastra-ai/mastra/pull/10742))
211
+
212
+ - Add human-in-the-loop (HITL) support to agent networks ([#11678](https://github.com/mastra-ai/mastra/pull/11678))
213
+ - Add suspend/resume capabilities to agent network
214
+ - Enable auto-resume for suspended network execution via `autoResumeSuspendedTools`
215
+
216
+ `agent.resumeNetwork`, `agent.approveNetworkToolCall`, `agent.declineNetworkToolCall`
217
+
218
+ - Fix TypeScript errors during build declaration generation ([#11682](https://github.com/mastra-ai/mastra/pull/11682))
219
+
220
+ Updated test file `toUIMessage.test.ts` to match current `@mastra/core` types:
221
+ - Changed `error` property from string to `Error` object (per `StepFailure` type)
222
+ - Added missing `resumeSchema` property to `tool-call-approval` payloads (per `ToolCallApprovalPayload` type)
223
+ - Added `zod` as peer/dev dependency for test type support
224
+
225
+ - Fix text parts incorrectly merging across tool calls ([#11783](https://github.com/mastra-ai/mastra/pull/11783))
226
+
227
+ Previously, when an agent produced text before and after a tool call (e.g., "Let me search for that" → tool call → "Here's what I found"), the text parts would be merged into a single part, losing the separation. This fix introduces a `textId` property to track separate text streams, ensuring each text stream maintains its own text part in the UI message.
228
+
229
+ Fixes #11577
230
+
231
+ - Configurable resourceId in react useChat ([#10461](https://github.com/mastra-ai/mastra/pull/10461))
232
+
16
233
  - Add tool call approval ([#8649](https://github.com/mastra-ai/mastra/pull/8649))
17
234
 
235
+ - Fixes issues where thread and messages were not saved before suspension when tools require approval or call suspend() during execution. This caused conversation history to be lost if users refreshed during tool approval or suspension. ([#10369](https://github.com/mastra-ai/mastra/pull/10369))
236
+
237
+ **Backend changes (@mastra/core):**
238
+ - Add assistant messages to messageList immediately after LLM execution
239
+ - Flush messages synchronously before suspension to persist state
240
+ - Create thread if it doesn't exist before flushing
241
+ - Add metadata helpers to persist and remove tool approval state
242
+ - Pass saveQueueManager and memory context through workflow for immediate persistence
243
+
244
+ **Frontend changes (@mastra/react):**
245
+ - Extract runId from pending approvals to enable resumption after refresh
246
+ - Convert `pendingToolApprovals` (DB format) to `requireApprovalMetadata` (runtime format)
247
+ - Handle both `dynamic-tool` and `tool-{NAME}` part types for approval state
248
+ - Change runId from hardcoded `agentId` to unique `uuid()`
249
+
250
+ **UI changes (@mastra/playground-ui):**
251
+ - Handle tool calls awaiting approval in message initialization
252
+ - Convert approval metadata format when loading initial messages
253
+
254
+ Fixes #9745, #9906
255
+
256
+ - Fixed compatibility with updated `@mastra/client-js` generate and stream API signatures ([#12011](https://github.com/mastra-ai/mastra/pull/12011))
257
+
258
+ - Fixed agent network not returning text response when routing agent handles requests without delegation. ([#11497](https://github.com/mastra-ai/mastra/pull/11497))
259
+
260
+ **What changed:**
261
+ - Agent networks now correctly stream text responses when the routing agent decides to handle a request itself instead of delegating to sub-agents, workflows, or tools
262
+ - Added fallback in transformers to ensure text is always returned even if core events are missing
263
+
264
+ **Why this matters:**
265
+ Previously, when using `toAISdkV5Stream` or `networkRoute()` outside of the Mastra Studio UI, no text content was returned when the routing agent handled requests directly. This fix ensures consistent behavior across all API routes.
266
+
267
+ Fixes #11219
268
+
18
269
  - Fix multi modal in react sdk ([#9373](https://github.com/mastra-ai/mastra/pull/9373))
19
270
 
20
- - Updated dependencies [[`3852192`](https://github.com/mastra-ai/mastra/commit/3852192c81b2a4f1f883f17d80ce50e0c60dba55), [`fec5129`](https://github.com/mastra-ai/mastra/commit/fec5129de7fc64423ea03661a56cef31dc747a0d), [`3443770`](https://github.com/mastra-ai/mastra/commit/3443770662df8eb24c9df3589b2792d78cfcb811), [`f0a07e0`](https://github.com/mastra-ai/mastra/commit/f0a07e0111b3307c5fabfa4094c5c2cfb734fbe6), [`aaa40e7`](https://github.com/mastra-ai/mastra/commit/aaa40e788628b319baa8e889407d11ad626547fa), [`dd1c38d`](https://github.com/mastra-ai/mastra/commit/dd1c38d1b75f1b695c27b40d8d9d6ed00d5e0f6f), [`5948e6a`](https://github.com/mastra-ai/mastra/commit/5948e6a5146c83666ba3f294b2be576c82a513fb), [`dff01d8`](https://github.com/mastra-ai/mastra/commit/dff01d81ce1f4e4087cfac20fa868e6db138dd14), [`b7de533`](https://github.com/mastra-ai/mastra/commit/b7de53361667eb51fefd89fcaed924f3c57cee8d), [`7051bf3`](https://github.com/mastra-ai/mastra/commit/7051bf38b3b122a069008f861f7bfc004a6d9f6e), [`1ee3411`](https://github.com/mastra-ai/mastra/commit/1ee34113192b11aa8bcdd8d9d5830ae13254b345), [`dbd9db0`](https://github.com/mastra-ai/mastra/commit/dbd9db0d5c2797a210b9098e7e3e613718e5442f), [`6a86fe5`](https://github.com/mastra-ai/mastra/commit/6a86fe56b8ff53ca2eb3ed87ffc0748749ebadce), [`0793497`](https://github.com/mastra-ai/mastra/commit/079349753620c40246ffd673e3f9d7d9820beff3), [`5df9cce`](https://github.com/mastra-ai/mastra/commit/5df9cce1a753438413f64c11eeef8f845745c2a8), [`f93d992`](https://github.com/mastra-ai/mastra/commit/f93d992a37d5431ab4a71246835d403ef7c4ce85), [`c576fc0`](https://github.com/mastra-ai/mastra/commit/c576fc0b100b2085afded91a37c97a0ea0ec09c7), [`9f4a683`](https://github.com/mastra-ai/mastra/commit/9f4a6833e88b52574665c028fd5508ad5c2f6004), [`595a3b8`](https://github.com/mastra-ai/mastra/commit/595a3b8727c901f44e333909c09843c711224440), [`ea0b8de`](https://github.com/mastra-ai/mastra/commit/ea0b8dec0d4bc86a72a7e75b2f56c6017c58786d), [`eb09742`](https://github.com/mastra-ai/mastra/commit/eb09742197f66c4c38154c3beec78313e69760b2), [`a1bd7b8`](https://github.com/mastra-ai/mastra/commit/a1bd7b8571db16b94eb01588f451a74758c96d65), [`0633100`](https://github.com/mastra-ai/mastra/commit/0633100a911ad22f5256471bdf753da21c104742), [`354ad0b`](https://github.com/mastra-ai/mastra/commit/354ad0b7b1b8183ac567f236a884fc7ede6d7138), [`519d9e6`](https://github.com/mastra-ai/mastra/commit/519d9e6d31910457c54bdae8b7b7cb3a69f41831), [`844ea5d`](https://github.com/mastra-ai/mastra/commit/844ea5dc0c248961e7bf73629ae7dcff503e853c), [`dfe3f8c`](https://github.com/mastra-ai/mastra/commit/dfe3f8c7376ffe159236819e19ca522143c1f972), [`f0f8f12`](https://github.com/mastra-ai/mastra/commit/f0f8f125c308f2d0fd36942ef652fd852df7522f), [`e8dcd71`](https://github.com/mastra-ai/mastra/commit/e8dcd71fa5e473c8ba1d6dad99eef182d20a0491), [`63f2f18`](https://github.com/mastra-ai/mastra/commit/63f2f1863dffe3ad23221d0660ed4e4f2b81789d), [`c23200d`](https://github.com/mastra-ai/mastra/commit/c23200ddfd60830effb39329674ba4ca93be6aac), [`363284b`](https://github.com/mastra-ai/mastra/commit/363284bb974e850f06f40f89a28c79d9f432d7e4), [`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc), [`b7959e6`](https://github.com/mastra-ai/mastra/commit/b7959e6e25a46b480f9ea2217c4c6c588c423791), [`0bddc6d`](https://github.com/mastra-ai/mastra/commit/0bddc6d8dbd6f6008c0cba2e4960a2da75a55af1), [`a0c8c1b`](https://github.com/mastra-ai/mastra/commit/a0c8c1b87d4fee252aebda73e8637fbe01d761c9), [`c218bd3`](https://github.com/mastra-ai/mastra/commit/c218bd3759e32423735b04843a09404572631014), [`e1bb9c9`](https://github.com/mastra-ai/mastra/commit/e1bb9c94b4eb68b019ae275981be3feb769b5365)]:
21
- - @mastra/client-js@0.0.0-trace-timeline-update-20251121114225
271
+ - Display network completion validation results and scorer feedback in the Playground when viewing agent network runs, letting users see pass/fail status and actionable feedback from completion scorers ([#11562](https://github.com/mastra-ai/mastra/pull/11562))
272
+
273
+ - 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))
274
+
275
+ When a workflow contains an agent step that triggers a tripwire, the workflow returns with `status: 'tripwire'` and includes tripwire details:
276
+
277
+ ```typescript
278
+ const run = await workflow.createRun();
279
+ const result = await run.start({ inputData: { message: 'Hello' } });
280
+
281
+ if (result.status === 'tripwire') {
282
+ console.log('Workflow terminated by tripwire:', result.tripwire?.reason);
283
+ console.log('Processor ID:', result.tripwire?.processorId);
284
+ console.log('Retry requested:', result.tripwire?.retry);
285
+ }
286
+ ```
287
+
288
+ Adds new UI state for tripwire in agent chat and workflow UI.
289
+
290
+ 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).
291
+
292
+ - - Add persistence for custom data chunks (`data-*` parts) emitted via `writer.custom()` in tools ([#10884](https://github.com/mastra-ai/mastra/pull/10884))
293
+ - Data chunks are now saved to message storage so they survive page refreshes
294
+ - Update `@assistant-ui/react` to v0.11.47 with native `DataMessagePart` support
295
+ - Convert `data-*` parts to `DataMessagePart` format (`{ type: 'data', name: string, data: T }`)
296
+ - Update related `@assistant-ui/*` packages for compatibility
297
+ - Updated dependencies [[`6edf340`](https://github.com/mastra-ai/mastra/commit/6edf3402f6a46ee8def2f42a2287785251fbffd6), [`bc72b52`](https://github.com/mastra-ai/mastra/commit/bc72b529ee4478fe89ecd85a8be47ce0127b82a0), [`ed3e3dd`](https://github.com/mastra-ai/mastra/commit/ed3e3ddec69d564fe2b125e083437f76331f1283), [`c042bd0`](https://github.com/mastra-ai/mastra/commit/c042bd0b743e0e86199d0cb83344ca7690e34a9c), [`3852192`](https://github.com/mastra-ai/mastra/commit/3852192c81b2a4f1f883f17d80ce50e0c60dba55), [`fec5129`](https://github.com/mastra-ai/mastra/commit/fec5129de7fc64423ea03661a56cef31dc747a0d), [`9650cce`](https://github.com/mastra-ai/mastra/commit/9650cce52a1d917ff9114653398e2a0f5c3ba808), [`3443770`](https://github.com/mastra-ai/mastra/commit/3443770662df8eb24c9df3589b2792d78cfcb811), [`f0a07e0`](https://github.com/mastra-ai/mastra/commit/f0a07e0111b3307c5fabfa4094c5c2cfb734fbe6), [`aaa40e7`](https://github.com/mastra-ai/mastra/commit/aaa40e788628b319baa8e889407d11ad626547fa), [`695a621`](https://github.com/mastra-ai/mastra/commit/695a621528bdabeb87f83c2277cf2bb084c7f2b4), [`dd1c38d`](https://github.com/mastra-ai/mastra/commit/dd1c38d1b75f1b695c27b40d8d9d6ed00d5e0f6f), [`5948e6a`](https://github.com/mastra-ai/mastra/commit/5948e6a5146c83666ba3f294b2be576c82a513fb), [`ad7e8f1`](https://github.com/mastra-ai/mastra/commit/ad7e8f16ac843cbd16687ad47b66ba96bcffe111), [`dff01d8`](https://github.com/mastra-ai/mastra/commit/dff01d81ce1f4e4087cfac20fa868e6db138dd14), [`9d5059e`](https://github.com/mastra-ai/mastra/commit/9d5059eae810829935fb08e81a9bb7ecd5b144a7), [`e1b7118`](https://github.com/mastra-ai/mastra/commit/e1b7118f42ca0a97247afc75e57dcd5fdf987752), [`461e448`](https://github.com/mastra-ai/mastra/commit/461e448852fe999506a6046d50b1efc27d8aa378), [`441c7b6`](https://github.com/mastra-ai/mastra/commit/441c7b6665915cfa7fd625fded8c0f518530bf10), [`b7de533`](https://github.com/mastra-ai/mastra/commit/b7de53361667eb51fefd89fcaed924f3c57cee8d), [`ef756c6`](https://github.com/mastra-ai/mastra/commit/ef756c65f82d16531c43f49a27290a416611e526), [`1b85674`](https://github.com/mastra-ai/mastra/commit/1b85674123708d9b85834dccc9eae601a9d0891c), [`5a1ede1`](https://github.com/mastra-ai/mastra/commit/5a1ede1f7ab527b9ead11f7eee2f73e67aeca9e4), [`47b1c16`](https://github.com/mastra-ai/mastra/commit/47b1c16a01c7ffb6765fe1e499b49092f8b7eba3), [`7051bf3`](https://github.com/mastra-ai/mastra/commit/7051bf38b3b122a069008f861f7bfc004a6d9f6e), [`1ee3411`](https://github.com/mastra-ai/mastra/commit/1ee34113192b11aa8bcdd8d9d5830ae13254b345), [`dbd9db0`](https://github.com/mastra-ai/mastra/commit/dbd9db0d5c2797a210b9098e7e3e613718e5442f), [`6a86fe5`](https://github.com/mastra-ai/mastra/commit/6a86fe56b8ff53ca2eb3ed87ffc0748749ebadce), [`898a972`](https://github.com/mastra-ai/mastra/commit/898a9727d286c2510d6b702dfd367e6aaf5c6b0f), [`0793497`](https://github.com/mastra-ai/mastra/commit/079349753620c40246ffd673e3f9d7d9820beff3), [`66741d1`](https://github.com/mastra-ai/mastra/commit/66741d1a99c4f42cf23a16109939e8348ac6852e), [`610a70b`](https://github.com/mastra-ai/mastra/commit/610a70bdad282079f0c630e0d7bb284578f20151), [`5df9cce`](https://github.com/mastra-ai/mastra/commit/5df9cce1a753438413f64c11eeef8f845745c2a8), [`f93d992`](https://github.com/mastra-ai/mastra/commit/f93d992a37d5431ab4a71246835d403ef7c4ce85), [`c576fc0`](https://github.com/mastra-ai/mastra/commit/c576fc0b100b2085afded91a37c97a0ea0ec09c7), [`9f4a683`](https://github.com/mastra-ai/mastra/commit/9f4a6833e88b52574665c028fd5508ad5c2f6004), [`595a3b8`](https://github.com/mastra-ai/mastra/commit/595a3b8727c901f44e333909c09843c711224440), [`ea0b8de`](https://github.com/mastra-ai/mastra/commit/ea0b8dec0d4bc86a72a7e75b2f56c6017c58786d), [`d90ea65`](https://github.com/mastra-ai/mastra/commit/d90ea6536f7aa51c6545a4e9215b55858e98e16d), [`261473a`](https://github.com/mastra-ai/mastra/commit/261473ac637e633064a22076671e2e02b002214d), [`eb09742`](https://github.com/mastra-ai/mastra/commit/eb09742197f66c4c38154c3beec78313e69760b2), [`e4d366a`](https://github.com/mastra-ai/mastra/commit/e4d366aeb500371dd4210d6aa8361a4c21d87034), [`486352b`](https://github.com/mastra-ai/mastra/commit/486352b66c746602b68a95839f830de14c7fb8c0), [`d171e55`](https://github.com/mastra-ai/mastra/commit/d171e559ead9f52ec728d424844c8f7b164c4510), [`632fdb8`](https://github.com/mastra-ai/mastra/commit/632fdb8b3cd9ff6f90399256d526db439fc1758b), [`a1bd7b8`](https://github.com/mastra-ai/mastra/commit/a1bd7b8571db16b94eb01588f451a74758c96d65), [`0633100`](https://github.com/mastra-ai/mastra/commit/0633100a911ad22f5256471bdf753da21c104742), [`354ad0b`](https://github.com/mastra-ai/mastra/commit/354ad0b7b1b8183ac567f236a884fc7ede6d7138), [`519d9e6`](https://github.com/mastra-ai/mastra/commit/519d9e6d31910457c54bdae8b7b7cb3a69f41831), [`844ea5d`](https://github.com/mastra-ai/mastra/commit/844ea5dc0c248961e7bf73629ae7dcff503e853c), [`5fe71bc`](https://github.com/mastra-ai/mastra/commit/5fe71bc925dfce597df69c89241f33b378028c63), [`dfe3f8c`](https://github.com/mastra-ai/mastra/commit/dfe3f8c7376ffe159236819e19ca522143c1f972), [`f0f8f12`](https://github.com/mastra-ai/mastra/commit/f0f8f125c308f2d0fd36942ef652fd852df7522f), [`e8dcd71`](https://github.com/mastra-ai/mastra/commit/e8dcd71fa5e473c8ba1d6dad99eef182d20a0491), [`e849603`](https://github.com/mastra-ai/mastra/commit/e849603a596269069f58a438b98449ea2770493d), [`63f2f18`](https://github.com/mastra-ai/mastra/commit/63f2f1863dffe3ad23221d0660ed4e4f2b81789d), [`c23200d`](https://github.com/mastra-ai/mastra/commit/c23200ddfd60830effb39329674ba4ca93be6aac), [`9312dcd`](https://github.com/mastra-ai/mastra/commit/9312dcd1c6f5b321929e7d382e763d95fdc030f5), [`184f01d`](https://github.com/mastra-ai/mastra/commit/184f01d1f534ec0be9703d3996f2e088b4a560eb), [`363284b`](https://github.com/mastra-ai/mastra/commit/363284bb974e850f06f40f89a28c79d9f432d7e4), [`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc), [`58e3931`](https://github.com/mastra-ai/mastra/commit/58e3931af9baa5921688566210f00fb0c10479fa), [`439eaf7`](https://github.com/mastra-ai/mastra/commit/439eaf75447809b05e326666675a4dcbf9c334ce), [`b7959e6`](https://github.com/mastra-ai/mastra/commit/b7959e6e25a46b480f9ea2217c4c6c588c423791), [`a7ce182`](https://github.com/mastra-ai/mastra/commit/a7ce1822a8785ce45d62dd5c911af465e144f7d7), [`0bddc6d`](https://github.com/mastra-ai/mastra/commit/0bddc6d8dbd6f6008c0cba2e4960a2da75a55af1), [`21735a7`](https://github.com/mastra-ai/mastra/commit/21735a7ef306963554a69a89b44f06c3bcd85141), [`3bf6c5f`](https://github.com/mastra-ai/mastra/commit/3bf6c5f104c25226cd84e0c77f9dec15f2cac2db), [`08bb631`](https://github.com/mastra-ai/mastra/commit/08bb631ae2b14684b2678e3549d0b399a6f0561e), [`a0c8c1b`](https://github.com/mastra-ai/mastra/commit/a0c8c1b87d4fee252aebda73e8637fbe01d761c9), [`6cbb549`](https://github.com/mastra-ai/mastra/commit/6cbb549475201a2fbf158f0fd7323f6495f46d08), [`c218bd3`](https://github.com/mastra-ai/mastra/commit/c218bd3759e32423735b04843a09404572631014), [`e1bb9c9`](https://github.com/mastra-ai/mastra/commit/e1bb9c94b4eb68b019ae275981be3feb769b5365), [`106c960`](https://github.com/mastra-ai/mastra/commit/106c960df5d110ec15ac8f45de8858597fb90ad5)]:
298
+ - @mastra/client-js@0.0.0-type-testing-20260120105120
299
+
300
+ ## 1.0.0-beta.24
301
+
302
+ ### Major Changes
303
+
304
+ - **Fixed:** Align `Agent.network` with core and update `@mastra/react` network usage. ([#12015](https://github.com/mastra-ai/mastra/pull/12015))
305
+
306
+ ### Patch Changes
307
+
308
+ - Fixed compatibility with updated `@mastra/client-js` generate and stream API signatures ([#12011](https://github.com/mastra-ai/mastra/pull/12011))
309
+
310
+ - Updated dependencies [[`461e448`](https://github.com/mastra-ai/mastra/commit/461e448852fe999506a6046d50b1efc27d8aa378)]:
311
+ - @mastra/client-js@1.0.0-beta.24
312
+
313
+ ## 0.1.0-beta.23
314
+
315
+ ### Patch Changes
316
+
317
+ - Updated dependencies:
318
+ - @mastra/client-js@1.0.0-beta.23
319
+
320
+ ## 0.1.0-beta.22
321
+
322
+ ### Patch Changes
323
+
324
+ - Removes the deprecated `threadId` and `resourceId` options from `AgentExecutionOptions`. These have been deprecated for months in favour of the `memory` option. ([#11897](https://github.com/mastra-ai/mastra/pull/11897))
325
+
326
+ ### Breaking Changes
327
+
328
+ #### `@mastra/core`
329
+
330
+ The `threadId` and `resourceId` options have been removed from `agent.generate()` and `agent.stream()`. Use the `memory` option instead:
331
+
332
+ ```ts
333
+ // Before
334
+ await agent.stream('Hello', {
335
+ threadId: 'thread-123',
336
+ resourceId: 'user-456',
337
+ });
338
+
339
+ // After
340
+ await agent.stream('Hello', {
341
+ memory: {
342
+ thread: 'thread-123',
343
+ resource: 'user-456',
344
+ },
345
+ });
346
+ ```
347
+
348
+ #### `@mastra/server`
349
+
350
+ The `threadId`, `resourceId`, and `resourceid` fields have been removed from the main agent execution body schema. The server now expects the `memory` option format in request bodies. Legacy routes (`/api/agents/:agentId/generate-legacy` and `/api/agents/:agentId/stream-legacy`) continue to support the deprecated fields.
351
+
352
+ #### `@mastra/react`
353
+
354
+ The `useChat` hook now internally converts `threadId` to the `memory` option format when making API calls. No changes needed in component code - the hook handles the conversion automatically.
355
+
356
+ #### `@mastra/client-js`
357
+
358
+ When using the client SDK agent methods, use the `memory` option instead of `threadId`/`resourceId`:
359
+
360
+ ```ts
361
+ const agent = client.getAgent('my-agent');
362
+
363
+ // Before
364
+ await agent.generate({
365
+ messages: [...],
366
+ threadId: 'thread-123',
367
+ resourceId: 'user-456',
368
+ });
369
+
370
+ // After
371
+ await agent.generate({
372
+ messages: [...],
373
+ memory: {
374
+ thread: 'thread-123',
375
+ resource: 'user-456',
376
+ },
377
+ });
378
+ ```
379
+
380
+ - Add human-in-the-loop (HITL) support to agent networks ([#11678](https://github.com/mastra-ai/mastra/pull/11678))
381
+ - Add suspend/resume capabilities to agent network
382
+ - Enable auto-resume for suspended network execution via `autoResumeSuspendedTools`
383
+
384
+ `agent.resumeNetwork`, `agent.approveNetworkToolCall`, `agent.declineNetworkToolCall`
385
+
386
+ - Fix text parts incorrectly merging across tool calls ([#11783](https://github.com/mastra-ai/mastra/pull/11783))
387
+
388
+ Previously, when an agent produced text before and after a tool call (e.g., "Let me search for that" → tool call → "Here's what I found"), the text parts would be merged into a single part, losing the separation. This fix introduces a `textId` property to track separate text streams, ensuring each text stream maintains its own text part in the UI message.
389
+
390
+ Fixes #11577
391
+
392
+ - Updated dependencies [[`9d5059e`](https://github.com/mastra-ai/mastra/commit/9d5059eae810829935fb08e81a9bb7ecd5b144a7), [`ef756c6`](https://github.com/mastra-ai/mastra/commit/ef756c65f82d16531c43f49a27290a416611e526), [`610a70b`](https://github.com/mastra-ai/mastra/commit/610a70bdad282079f0c630e0d7bb284578f20151)]:
393
+ - @mastra/client-js@1.0.0-beta.22
394
+
395
+ ## 0.1.0-beta.21
396
+
397
+ ### Patch Changes
398
+
399
+ - Updated dependencies:
400
+ - @mastra/client-js@1.0.0-beta.21
401
+
402
+ ## 0.1.0-beta.20
403
+
404
+ ### Patch Changes
405
+
406
+ - Fix TypeScript errors during build declaration generation ([#11682](https://github.com/mastra-ai/mastra/pull/11682))
407
+
408
+ Updated test file `toUIMessage.test.ts` to match current `@mastra/core` types:
409
+ - Changed `error` property from string to `Error` object (per `StepFailure` type)
410
+ - Added missing `resumeSchema` property to `tool-call-approval` payloads (per `ToolCallApprovalPayload` type)
411
+ - Added `zod` as peer/dev dependency for test type support
412
+
413
+ - Fixed agent network not returning text response when routing agent handles requests without delegation. ([#11497](https://github.com/mastra-ai/mastra/pull/11497))
414
+
415
+ **What changed:**
416
+ - Agent networks now correctly stream text responses when the routing agent decides to handle a request itself instead of delegating to sub-agents, workflows, or tools
417
+ - Added fallback in transformers to ensure text is always returned even if core events are missing
418
+
419
+ **Why this matters:**
420
+ Previously, when using `toAISdkV5Stream` or `networkRoute()` outside of the Mastra Studio UI, no text content was returned when the routing agent handled requests directly. This fix ensures consistent behavior across all API routes.
421
+
422
+ Fixes #11219
423
+
424
+ - Display network completion validation results and scorer feedback in the Playground when viewing agent network runs, letting users see pass/fail status and actionable feedback from completion scorers ([#11562](https://github.com/mastra-ai/mastra/pull/11562))
425
+
426
+ - Updated dependencies [[`bc72b52`](https://github.com/mastra-ai/mastra/commit/bc72b529ee4478fe89ecd85a8be47ce0127b82a0), [`c042bd0`](https://github.com/mastra-ai/mastra/commit/c042bd0b743e0e86199d0cb83344ca7690e34a9c), [`e4d366a`](https://github.com/mastra-ai/mastra/commit/e4d366aeb500371dd4210d6aa8361a4c21d87034), [`58e3931`](https://github.com/mastra-ai/mastra/commit/58e3931af9baa5921688566210f00fb0c10479fa), [`08bb631`](https://github.com/mastra-ai/mastra/commit/08bb631ae2b14684b2678e3549d0b399a6f0561e), [`106c960`](https://github.com/mastra-ai/mastra/commit/106c960df5d110ec15ac8f45de8858597fb90ad5)]:
427
+ - @mastra/client-js@1.0.0-beta.20
428
+
429
+ ## 0.1.0-beta.19
430
+
431
+ ### Patch Changes
432
+
433
+ - Updated dependencies:
434
+ - @mastra/client-js@1.0.0-beta.19
435
+
436
+ ## 0.1.0-beta.18
437
+
438
+ ### Patch Changes
439
+
440
+ - Updated dependencies:
441
+ - @mastra/client-js@1.0.0-beta.18
442
+
443
+ ## 0.1.0-beta.17
444
+
445
+ ### Patch Changes
446
+
447
+ - Updated dependencies:
448
+ - @mastra/client-js@1.0.0-beta.17
449
+
450
+ ## 0.1.0-beta.16
451
+
452
+ ### Patch Changes
453
+
454
+ - Updated dependencies [[`6cbb549`](https://github.com/mastra-ai/mastra/commit/6cbb549475201a2fbf158f0fd7323f6495f46d08)]:
455
+ - @mastra/client-js@1.0.0-beta.16
456
+
457
+ ## 0.1.0-beta.15
458
+
459
+ ### Minor Changes
460
+
461
+ - Unified observability schema with entity-based span identification ([#11132](https://github.com/mastra-ai/mastra/pull/11132))
462
+
463
+ ## What changed
464
+
465
+ Spans now use a unified identification model with `entityId`, `entityType`, and `entityName` instead of separate `agentId`, `toolId`, `workflowId` fields.
466
+
467
+ **Before:**
468
+
469
+ ```typescript
470
+ // Old span structure
471
+ span.agentId; // 'my-agent'
472
+ span.toolId; // undefined
473
+ span.workflowId; // undefined
474
+ ```
475
+
476
+ **After:**
477
+
478
+ ```typescript
479
+ // New span structure
480
+ span.entityType; // EntityType.AGENT
481
+ span.entityId; // 'my-agent'
482
+ span.entityName; // 'My Agent'
483
+ ```
484
+
485
+ ## New `listTraces()` API
486
+
487
+ Query traces with filtering, pagination, and sorting:
488
+
489
+ ```typescript
490
+ const { spans, pagination } = await storage.listTraces({
491
+ filters: {
492
+ entityType: EntityType.AGENT,
493
+ entityId: 'my-agent',
494
+ userId: 'user-123',
495
+ environment: 'production',
496
+ status: TraceStatus.SUCCESS,
497
+ startedAt: { start: new Date('2024-01-01'), end: new Date('2024-01-31') },
498
+ },
499
+ pagination: { page: 0, perPage: 50 },
500
+ orderBy: { field: 'startedAt', direction: 'DESC' },
501
+ });
502
+ ```
503
+
504
+ **Available filters:** date ranges (`startedAt`, `endedAt`), entity (`entityType`, `entityId`, `entityName`), identity (`userId`, `organizationId`), correlation IDs (`runId`, `sessionId`, `threadId`), deployment (`environment`, `source`, `serviceName`), `tags`, `metadata`, and `status`.
505
+
506
+ ## New retrieval methods
507
+ - `getSpan({ traceId, spanId })` - Get a single span
508
+ - `getRootSpan({ traceId })` - Get the root span of a trace
509
+ - `getTrace({ traceId })` - Get all spans for a trace
510
+
511
+ ## Backward compatibility
512
+
513
+ The legacy `getTraces()` method continues to work. When you pass `name: "agent run: my-agent"`, it automatically transforms to `entityId: "my-agent", entityType: AGENT`.
514
+
515
+ ## Migration
516
+
517
+ **Automatic:** SQL-based stores (PostgreSQL, LibSQL, MSSQL) automatically add new columns to existing `spans` tables on initialization. Existing data is preserved with new columns set to `NULL`.
518
+
519
+ **No action required:** Your existing code continues to work. Adopt the new fields and `listTraces()` API at your convenience.
520
+
521
+ ### Patch Changes
522
+
523
+ - Updated dependencies [[`d90ea65`](https://github.com/mastra-ai/mastra/commit/d90ea6536f7aa51c6545a4e9215b55858e98e16d), [`d171e55`](https://github.com/mastra-ai/mastra/commit/d171e559ead9f52ec728d424844c8f7b164c4510), [`632fdb8`](https://github.com/mastra-ai/mastra/commit/632fdb8b3cd9ff6f90399256d526db439fc1758b), [`184f01d`](https://github.com/mastra-ai/mastra/commit/184f01d1f534ec0be9703d3996f2e088b4a560eb)]:
524
+ - @mastra/client-js@1.0.0-beta.15
525
+
526
+ ## 0.1.0-beta.14
527
+
528
+ ### Patch Changes
529
+
530
+ - Updated dependencies [[`66741d1`](https://github.com/mastra-ai/mastra/commit/66741d1a99c4f42cf23a16109939e8348ac6852e), [`a7ce182`](https://github.com/mastra-ai/mastra/commit/a7ce1822a8785ce45d62dd5c911af465e144f7d7)]:
531
+ - @mastra/client-js@1.0.0-beta.14
532
+
533
+ ## 0.1.0-beta.13
534
+
535
+ ### Patch Changes
536
+
537
+ - Updated dependencies:
538
+ - @mastra/client-js@1.0.0-beta.13
539
+
540
+ ## 0.1.0-beta.12
541
+
542
+ ### Patch Changes
543
+
544
+ - Remove redundant toolCalls from network agent finalResult ([#11189](https://github.com/mastra-ai/mastra/pull/11189))
545
+
546
+ The network agent's `finalResult` was storing `toolCalls` separately even though all tool call information is already present in the `messages` array (as `tool-call` and `tool-result` type messages). This caused significant token waste since the routing agent reads this data from memory on every iteration.
547
+
548
+ **Before:** `finalResult: { text, toolCalls, messages }`
549
+ **After:** `finalResult: { text, messages }`
550
+
551
+ +**Migration:** If you were accessing `finalResult.toolCalls`, retrieve tool calls from `finalResult.messages` by filtering for messages with `type: 'tool-call'`.
552
+
553
+ Updated `@mastra/react` to extract tool calls directly from the `messages` array instead of the removed `toolCalls` field when resolving initial messages from memory.
554
+
555
+ Fixes #11059
556
+
557
+ - Auto resume suspended tools if `autoResumeSuspendedTools: true` ([#11157](https://github.com/mastra-ai/mastra/pull/11157))
558
+
559
+ The flag can be added to `defaultAgentOptions` when creating the agent or to options in `agent.stream` or `agent.generate`
560
+
561
+ ```typescript
562
+ const agent = new Agent({
563
+ //...agent information,
564
+ defaultAgentOptions: {
565
+ autoResumeSuspendedTools: true,
566
+ },
567
+ });
568
+ ```
569
+
570
+ - Updated dependencies [[`9650cce`](https://github.com/mastra-ai/mastra/commit/9650cce52a1d917ff9114653398e2a0f5c3ba808), [`695a621`](https://github.com/mastra-ai/mastra/commit/695a621528bdabeb87f83c2277cf2bb084c7f2b4), [`1b85674`](https://github.com/mastra-ai/mastra/commit/1b85674123708d9b85834dccc9eae601a9d0891c), [`486352b`](https://github.com/mastra-ai/mastra/commit/486352b66c746602b68a95839f830de14c7fb8c0), [`439eaf7`](https://github.com/mastra-ai/mastra/commit/439eaf75447809b05e326666675a4dcbf9c334ce)]:
571
+ - @mastra/client-js@1.0.0-beta.12
572
+
573
+ ## 0.1.0-beta.11
574
+
575
+ ### Patch Changes
576
+
577
+ - 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))
578
+
579
+ When a workflow contains an agent step that triggers a tripwire, the workflow returns with `status: 'tripwire'` and includes tripwire details:
580
+
581
+ ```typescript showLineNumbers copy
582
+ const run = await workflow.createRun();
583
+ const result = await run.start({ inputData: { message: 'Hello' } });
584
+
585
+ if (result.status === 'tripwire') {
586
+ console.log('Workflow terminated by tripwire:', result.tripwire?.reason);
587
+ console.log('Processor ID:', result.tripwire?.processorId);
588
+ console.log('Retry requested:', result.tripwire?.retry);
589
+ }
590
+ ```
591
+
592
+ Adds new UI state for tripwire in agent chat and workflow UI.
593
+
594
+ 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).
595
+
596
+ - Updated dependencies [[`3bf6c5f`](https://github.com/mastra-ai/mastra/commit/3bf6c5f104c25226cd84e0c77f9dec15f2cac2db)]:
597
+ - @mastra/client-js@1.0.0-beta.11
598
+
599
+ ## 0.1.0-beta.10
600
+
601
+ ### Minor Changes
602
+
603
+ - Fix "MessagePartRuntime is not available" error when chatting with agents in Studio playground by replacing deprecated `useMessagePart` hook with `useAssistantState` ([#11039](https://github.com/mastra-ai/mastra/pull/11039))
604
+
605
+ ### Patch Changes
606
+
607
+ - fix: persist data-\* chunks from writer.custom() to memory storage ([#10884](https://github.com/mastra-ai/mastra/pull/10884))
608
+ - Add persistence for custom data chunks (`data-*` parts) emitted via `writer.custom()` in tools
609
+ - Data chunks are now saved to message storage so they survive page refreshes
610
+ - Update `@assistant-ui/react` to v0.11.47 with native `DataMessagePart` support
611
+ - Convert `data-*` parts to `DataMessagePart` format (`{ type: 'data', name: string, data: T }`)
612
+ - Update related `@assistant-ui/*` packages for compatibility
613
+
614
+ - Updated dependencies [[`261473a`](https://github.com/mastra-ai/mastra/commit/261473ac637e633064a22076671e2e02b002214d)]:
615
+ - @mastra/client-js@1.0.0-beta.10
616
+
617
+ ## 0.1.0-beta.9
618
+
619
+ ### Patch Changes
620
+
621
+ - Updated dependencies [[`5a1ede1`](https://github.com/mastra-ai/mastra/commit/5a1ede1f7ab527b9ead11f7eee2f73e67aeca9e4)]:
622
+ - @mastra/client-js@1.0.0-beta.9
623
+
624
+ ## 0.1.0-beta.8
625
+
626
+ ### Patch Changes
627
+
628
+ - Updated dependencies:
629
+ - @mastra/client-js@1.0.0-beta.8
630
+
631
+ ## 0.1.0-beta.7
632
+
633
+ ### Patch Changes
634
+
635
+ - Updated dependencies [[`5fe71bc`](https://github.com/mastra-ai/mastra/commit/5fe71bc925dfce597df69c89241f33b378028c63), [`21735a7`](https://github.com/mastra-ai/mastra/commit/21735a7ef306963554a69a89b44f06c3bcd85141)]:
636
+ - @mastra/client-js@1.0.0-beta.7
637
+
638
+ ## 0.1.0-beta.6
639
+
640
+ ### Patch Changes
641
+
642
+ - Adjust the types to accept tracingOptions ([#10742](https://github.com/mastra-ai/mastra/pull/10742))
643
+
644
+ - Updated dependencies [[`6edf340`](https://github.com/mastra-ai/mastra/commit/6edf3402f6a46ee8def2f42a2287785251fbffd6), [`ad7e8f1`](https://github.com/mastra-ai/mastra/commit/ad7e8f16ac843cbd16687ad47b66ba96bcffe111), [`e1b7118`](https://github.com/mastra-ai/mastra/commit/e1b7118f42ca0a97247afc75e57dcd5fdf987752), [`441c7b6`](https://github.com/mastra-ai/mastra/commit/441c7b6665915cfa7fd625fded8c0f518530bf10), [`e849603`](https://github.com/mastra-ai/mastra/commit/e849603a596269069f58a438b98449ea2770493d)]:
645
+ - @mastra/client-js@1.0.0-beta.6
646
+
647
+ ## 0.1.0-beta.5
648
+
649
+ ### Patch Changes
650
+
651
+ - Configurable resourceId in react useChat ([#10461](https://github.com/mastra-ai/mastra/pull/10461))
652
+
653
+ - fix(agent): persist messages before tool suspension ([#10369](https://github.com/mastra-ai/mastra/pull/10369))
654
+
655
+ Fixes issues where thread and messages were not saved before suspension when tools require approval or call suspend() during execution. This caused conversation history to be lost if users refreshed during tool approval or suspension.
656
+
657
+ **Backend changes (@mastra/core):**
658
+ - Add assistant messages to messageList immediately after LLM execution
659
+ - Flush messages synchronously before suspension to persist state
660
+ - Create thread if it doesn't exist before flushing
661
+ - Add metadata helpers to persist and remove tool approval state
662
+ - Pass saveQueueManager and memory context through workflow for immediate persistence
663
+
664
+ **Frontend changes (@mastra/react):**
665
+ - Extract runId from pending approvals to enable resumption after refresh
666
+ - Convert `pendingToolApprovals` (DB format) to `requireApprovalMetadata` (runtime format)
667
+ - Handle both `dynamic-tool` and `tool-{NAME}` part types for approval state
668
+ - Change runId from hardcoded `agentId` to unique `uuid()`
669
+
670
+ **UI changes (@mastra/playground-ui):**
671
+ - Handle tool calls awaiting approval in message initialization
672
+ - Convert approval metadata format when loading initial messages
673
+
674
+ Fixes #9745, #9906
675
+
676
+ - Updated dependencies [[`898a972`](https://github.com/mastra-ai/mastra/commit/898a9727d286c2510d6b702dfd367e6aaf5c6b0f)]:
677
+ - @mastra/client-js@1.0.0-beta.5
22
678
 
23
679
  ## 0.1.0-beta.4
24
680