@mastra/client-js 1.0.0-beta.9 → 1.0.1

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 (45) hide show
  1. package/CHANGELOG.md +1652 -0
  2. package/README.md +1 -3
  3. package/dist/_types/@ai-sdk_ui-utils/dist/index.d.ts +820 -0
  4. package/dist/_types/@internal_ai-sdk-v5/dist/index.d.ts +8511 -0
  5. package/dist/client.d.ts +56 -11
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/docs/README.md +33 -0
  8. package/dist/docs/SKILL.md +34 -0
  9. package/dist/docs/SOURCE_MAP.json +6 -0
  10. package/dist/docs/ai-sdk/01-reference.md +358 -0
  11. package/dist/docs/client-js/01-reference.md +1180 -0
  12. package/dist/docs/server/01-mastra-client.md +256 -0
  13. package/dist/docs/server/02-jwt.md +99 -0
  14. package/dist/docs/server/03-clerk.md +143 -0
  15. package/dist/docs/server/04-supabase.md +128 -0
  16. package/dist/docs/server/05-firebase.md +286 -0
  17. package/dist/docs/server/06-workos.md +201 -0
  18. package/dist/docs/server/07-auth0.md +233 -0
  19. package/dist/index.cjs +1690 -596
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.js +1688 -594
  22. package/dist/index.js.map +1 -1
  23. package/dist/resources/agent-builder.d.ts +10 -26
  24. package/dist/resources/agent-builder.d.ts.map +1 -1
  25. package/dist/resources/agent.d.ts +43 -8
  26. package/dist/resources/agent.d.ts.map +1 -1
  27. package/dist/resources/index.d.ts +1 -0
  28. package/dist/resources/index.d.ts.map +1 -1
  29. package/dist/resources/memory-thread.d.ts +18 -3
  30. package/dist/resources/memory-thread.d.ts.map +1 -1
  31. package/dist/resources/observability.d.ts +58 -15
  32. package/dist/resources/observability.d.ts.map +1 -1
  33. package/dist/resources/processor.d.ts +20 -0
  34. package/dist/resources/processor.d.ts.map +1 -0
  35. package/dist/resources/run.d.ts +210 -0
  36. package/dist/resources/run.d.ts.map +1 -0
  37. package/dist/resources/workflow.d.ts +19 -224
  38. package/dist/resources/workflow.d.ts.map +1 -1
  39. package/dist/tools.d.ts +2 -2
  40. package/dist/tools.d.ts.map +1 -1
  41. package/dist/types.d.ts +141 -36
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/utils/index.d.ts +26 -0
  44. package/dist/utils/index.d.ts.map +1 -1
  45. package/package.json +13 -12
package/CHANGELOG.md CHANGED
@@ -1,5 +1,1657 @@
1
1
  # @mastra/client-js
2
2
 
3
+ ## 1.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies:
8
+ - @mastra/core@1.0.4
9
+
10
+ ## 1.0.1-alpha.0
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies:
15
+ - @mastra/core@1.0.4-alpha.0
16
+
17
+ ## 1.0.0
18
+
19
+ ### Major Changes
20
+
21
+ - Moving scorers under the eval domain, api method consistency, prebuilt evals, scorers require ids. ([#9589](https://github.com/mastra-ai/mastra/pull/9589))
22
+
23
+ - Update handlers to use `listWorkflowRuns` instead of `getWorkflowRuns`. Fix type names from `StoragelistThreadsByResourceIdInput/Output` to `StorageListThreadsByResourceIdInput/Output`. ([#9507](https://github.com/mastra-ai/mastra/pull/9507))
24
+
25
+ - Remove `getMessagesPaginated()` and add `perPage: false` support ([#9670](https://github.com/mastra-ai/mastra/pull/9670))
26
+
27
+ Removes deprecated `getMessagesPaginated()` method. The `listMessages()` API and score handlers now support `perPage: false` to fetch all records without pagination limits.
28
+
29
+ **Storage changes:**
30
+ - `StoragePagination.perPage` type changed from `number` to `number | false`
31
+ - All storage implementations support `perPage: false`:
32
+ - Memory: `listMessages()`
33
+ - Scores: `listScoresBySpan()`, `listScoresByRunId()`, `listScoresByExecutionId()`
34
+ - HTTP query parser accepts `"false"` string (e.g., `?perPage=false`)
35
+
36
+ **Memory changes:**
37
+ - `memory.query()` parameter type changed from `StorageGetMessagesArg` to `StorageListMessagesInput`
38
+ - Uses flat parameters (`page`, `perPage`, `include`, `filter`, `vectorSearchString`) instead of `selectBy` object
39
+
40
+ **Stricter validation:**
41
+ - `listMessages()` requires non-empty, non-whitespace `threadId` (throws error instead of returning empty results)
42
+
43
+ **Migration:**
44
+
45
+ ```typescript
46
+ // Storage/Memory: Replace getMessagesPaginated with listMessages
47
+ - storage.getMessagesPaginated({ threadId, selectBy: { pagination: { page: 0, perPage: 20 } } })
48
+ + storage.listMessages({ threadId, page: 0, perPage: 20 })
49
+ + storage.listMessages({ threadId, page: 0, perPage: false }) // Fetch all
50
+
51
+ // Memory: Replace selectBy with flat parameters
52
+ - memory.query({ threadId, selectBy: { last: 20, include: [...] } })
53
+ + memory.query({ threadId, perPage: 20, include: [...] })
54
+
55
+ // Client SDK
56
+ - thread.getMessagesPaginated({ selectBy: { pagination: { page: 0 } } })
57
+ + thread.listMessages({ page: 0, perPage: 20 })
58
+ ```
59
+
60
+ - **Removed `storage.getMessages()`** ([#9695](https://github.com/mastra-ai/mastra/pull/9695))
61
+
62
+ The `getMessages()` method has been removed from all storage implementations. Use `listMessages()` instead, which provides pagination support.
63
+
64
+ **Migration:**
65
+
66
+ ```typescript
67
+ // Before
68
+ const messages = await storage.getMessages({ threadId: 'thread-1' });
69
+
70
+ // After
71
+ const result = await storage.listMessages({
72
+ threadId: 'thread-1',
73
+ page: 0,
74
+ perPage: 50,
75
+ });
76
+ const messages = result.messages; // Access messages array
77
+ console.log(result.total); // Total count
78
+ console.log(result.hasMore); // Whether more pages exist
79
+ ```
80
+
81
+ **Message ordering default**
82
+
83
+ `listMessages()` defaults to ASC (oldest first) ordering by `createdAt`, matching the previous `getMessages()` behavior.
84
+
85
+ **To use DESC ordering (newest first):**
86
+
87
+ ```typescript
88
+ const result = await storage.listMessages({
89
+ threadId: 'thread-1',
90
+ orderBy: { field: 'createdAt', direction: 'DESC' },
91
+ });
92
+ ```
93
+
94
+ **Renamed `client.getThreadMessages()` → `client.listThreadMessages()`**
95
+
96
+ **Migration:**
97
+
98
+ ```typescript
99
+ // Before
100
+ const response = await client.getThreadMessages(threadId, { agentId });
101
+
102
+ // After
103
+ const response = await client.listThreadMessages(threadId, { agentId });
104
+ ```
105
+
106
+ The response format remains the same.
107
+
108
+ **Removed `StorageGetMessagesArg` type**
109
+
110
+ Use `StorageListMessagesInput` instead:
111
+
112
+ ```typescript
113
+ // Before
114
+ import type { StorageGetMessagesArg } from '@mastra/core';
115
+
116
+ // After
117
+ import type { StorageListMessagesInput } from '@mastra/core';
118
+ ```
119
+
120
+ - Bump minimum required Node.js version to 22.13.0 ([#9706](https://github.com/mastra-ai/mastra/pull/9706))
121
+
122
+ - Replace `getThreadsByResourceIdPaginated` with `listThreadsByResourceId` across memory handlers. Update client SDK to use `listThreads()` with `offset`/`limit` parameters instead of deprecated `getMemoryThreads()`. Consolidate `/api/memory/threads` routes to single paginated endpoint. ([#9508](https://github.com/mastra-ai/mastra/pull/9508))
123
+
124
+ - **Fixed:** Align `Agent.network` with core and update `@mastra/react` network usage. ([#12015](https://github.com/mastra-ai/mastra/pull/12015))
125
+
126
+ - Rename RuntimeContext to RequestContext ([#9511](https://github.com/mastra-ai/mastra/pull/9511))
127
+
128
+ - Rename `defaultVNextStreamOptions` to `defaultOptions`. Add "Legacy" suffix to v1 option properties and methods (`defaultGenerateOptions` → `defaultGenerateOptionsLegacy`, `defaultStreamOptions` → `defaultStreamOptionsLegacy`). ([#9535](https://github.com/mastra-ai/mastra/pull/9535))
129
+
130
+ - **Breaking Change**: Convert OUTPUT generic from `OutputSchema` constraint to plain generic ([#11741](https://github.com/mastra-ai/mastra/pull/11741))
131
+
132
+ This change removes the direct dependency on Zod typings in the public API by converting all `OUTPUT extends OutputSchema` generic constraints to plain `OUTPUT` generics throughout the codebase. This is preparation for moving to a standard schema approach.
133
+ - All generic type parameters previously constrained to `OutputSchema` (e.g., `<OUTPUT extends OutputSchema = undefined>`) are now plain generics with defaults (e.g., `<OUTPUT = undefined>`)
134
+ - Affects all public APIs including `Agent`, `MastraModelOutput`, `AgentExecutionOptions`, and stream/generate methods
135
+ - `InferSchemaOutput<OUTPUT>` replaced with `OUTPUT` throughout
136
+ - `PartialSchemaOutput<OUTPUT>` replaced with `Partial<OUTPUT>`
137
+ - Schema fields now use `NonNullable<OutputSchema<OUTPUT>>` instead of `OUTPUT` directly
138
+ - Added `FullOutput<OUTPUT>` type representing complete output with all fields
139
+ - Added `AgentExecutionOptionsBase<OUTPUT>` type
140
+ - `getFullOutput()` method now returns `Promise<FullOutput<OUTPUT>>`
141
+ - `Agent` class now generic: `Agent<TAgentId, TTools, TOutput>`
142
+ - `agent.generate()` and `agent.stream()` methods have updated signatures
143
+ - `MastraModelOutput<OUTPUT>` no longer requires `OutputSchema` constraint
144
+ - Network route and streaming APIs updated to use plain OUTPUT generic
145
+
146
+ **Before:**
147
+
148
+ ```typescript
149
+ const output = await agent.generate<z.ZodType>([...], {
150
+ structuredOutput: { schema: mySchema }
151
+ });
152
+
153
+ **After:**
154
+ const output = await agent.generate<z.infer<typeof mySchema>>([...], {
155
+ structuredOutput: { schema: mySchema }
156
+ });
157
+ // Or rely on type inference:
158
+ const output = await agent.generate([...], {
159
+ structuredOutput: { schema: mySchema }
160
+ });
161
+
162
+ ```
163
+
164
+ - Remove deprecated methods from client-js ([#9480](https://github.com/mastra-ai/mastra/pull/9480))
165
+
166
+ - Renamed a bunch of observability/tracing-related things to drop the AI prefix. ([#9744](https://github.com/mastra-ai/mastra/pull/9744))
167
+
168
+ - **Breaking Change**: Remove legacy v1 watch events and consolidate on v2 implementation. ([#9252](https://github.com/mastra-ai/mastra/pull/9252))
169
+
170
+ This change simplifies the workflow watching API by removing the legacy v1 event system and promoting v2 as the standard (renamed to just `watch`).
171
+
172
+ **What's Changed**
173
+ - Removed legacy v1 watch event handlers and types
174
+ - Renamed `watch-v2` to `watch` throughout the codebase
175
+ - Removed `.watch()` method from client-js SDK (`Workflow` and `AgentBuilder` classes)
176
+ - Removed `/watch` HTTP endpoints from server and deployer
177
+ - Removed `WorkflowWatchResult` and v1 `WatchEvent` types
178
+
179
+ - Pagination APIs now use `page`/`perPage` instead of `offset`/`limit` ([#9592](https://github.com/mastra-ai/mastra/pull/9592))
180
+
181
+ All storage and memory pagination APIs have been updated to use `page` (0-indexed) and `perPage` instead of `offset` and `limit`, aligning with standard REST API patterns.
182
+
183
+ **Affected APIs:**
184
+ - `Memory.listThreadsByResourceId()`
185
+ - `Memory.listMessages()`
186
+ - `Storage.listWorkflowRuns()`
187
+
188
+ **Migration:**
189
+
190
+ ```typescript
191
+ // Before
192
+ await memory.listThreadsByResourceId({
193
+ resourceId: 'user-123',
194
+ offset: 20,
195
+ limit: 10,
196
+ });
197
+
198
+ // After
199
+ await memory.listThreadsByResourceId({
200
+ resourceId: 'user-123',
201
+ page: 2, // page = Math.floor(offset / limit)
202
+ perPage: 10,
203
+ });
204
+
205
+ // Before
206
+ await memory.listMessages({
207
+ threadId: 'thread-456',
208
+ offset: 20,
209
+ limit: 10,
210
+ });
211
+
212
+ // After
213
+ await memory.listMessages({
214
+ threadId: 'thread-456',
215
+ page: 2,
216
+ perPage: 10,
217
+ });
218
+
219
+ // Before
220
+ await storage.listWorkflowRuns({
221
+ workflowName: 'my-workflow',
222
+ offset: 20,
223
+ limit: 10,
224
+ });
225
+
226
+ // After
227
+ await storage.listWorkflowRuns({
228
+ workflowName: 'my-workflow',
229
+ page: 2,
230
+ perPage: 10,
231
+ });
232
+ ```
233
+
234
+ **Additional improvements:**
235
+ - Added validation for negative `page` values in all storage implementations
236
+ - Improved `perPage` validation to handle edge cases (negative values, `0`, `false`)
237
+ - Added reusable query parser utilities for consistent validation in handlers
238
+
239
+ - ```ts ([#9709](https://github.com/mastra-ai/mastra/pull/9709))
240
+ import { Mastra } from '@mastra/core';
241
+ import { Observability } from '@mastra/observability'; // Explicit import
242
+
243
+ const mastra = new Mastra({
244
+ ...other_config,
245
+ observability: new Observability({
246
+ default: { enabled: true },
247
+ }), // Instance
248
+ });
249
+ ```
250
+
251
+ Instead of:
252
+
253
+ ```ts
254
+ import { Mastra } from '@mastra/core';
255
+ import '@mastra/observability/init'; // Explicit import
256
+
257
+ const mastra = new Mastra({
258
+ ...other_config,
259
+ observability: {
260
+ default: { enabled: true },
261
+ },
262
+ });
263
+ ```
264
+
265
+ Also renamed a bunch of:
266
+ - `Tracing` things to `Observability` things.
267
+ - `AI-` things to just things.
268
+
269
+ - Changing getAgents -> listAgents, getTools -> listTools, getWorkflows -> listWorkflows ([#9495](https://github.com/mastra-ai/mastra/pull/9495))
270
+
271
+ - Removed old tracing code based on OpenTelemetry ([#9237](https://github.com/mastra-ai/mastra/pull/9237))
272
+
273
+ - Mark as stable ([`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc))
274
+
275
+ - Renamed `MastraMessageV2` to `MastraDBMessage` ([#9255](https://github.com/mastra-ai/mastra/pull/9255))
276
+ 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
277
+
278
+ - moved ai-tracing code into @mastra/observability ([#9661](https://github.com/mastra-ai/mastra/pull/9661))
279
+
280
+ - Remove legacy evals from Mastra ([#9491](https://github.com/mastra-ai/mastra/pull/9491))
281
+
282
+ ### Minor Changes
283
+
284
+ - Add support for custom fetch function in MastraClient to enable environments like Tauri that require custom fetch implementations to avoid timeout errors. ([#10677](https://github.com/mastra-ai/mastra/pull/10677))
285
+
286
+ You can now pass a custom fetch function when creating a MastraClient:
287
+
288
+ ```typescript
289
+ import { MastraClient } from '@mastra/client-js';
290
+
291
+ // Before: Only global fetch was available
292
+ const client = new MastraClient({
293
+ baseUrl: 'http://your-api-url',
294
+ });
295
+
296
+ // After: Custom fetch can be passed
297
+ const client = new MastraClient({
298
+ baseUrl: 'http://your-api-url',
299
+ fetch: customFetch, // Your custom fetch implementation
300
+ });
301
+ ```
302
+
303
+ If no custom fetch is provided, it falls back to the global fetch function, maintaining backward compatibility.
304
+
305
+ Fixes #10673
306
+
307
+ - Added human-in-the-loop (HITL) tool approval support for `generate()` method. ([#12056](https://github.com/mastra-ai/mastra/pull/12056))
308
+
309
+ **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.
310
+
311
+ Previously, tool approval with `requireToolApproval` only worked with `stream()`. Now you can use the same approval flow with `generate()` for non-streaming use cases.
312
+
313
+ **Using tool approval with generate()**
314
+
315
+ ```typescript
316
+ const output = await agent.generate('Find user John', {
317
+ requireToolApproval: true,
318
+ });
319
+
320
+ // Check if a tool is waiting for approval
321
+ if (output.finishReason === 'suspended') {
322
+ console.log('Tool requires approval:', output.suspendPayload.toolName);
323
+
324
+ // Approve the tool call
325
+ const result = await agent.approveToolCallGenerate({
326
+ runId: output.runId,
327
+ toolCallId: output.suspendPayload.toolCallId,
328
+ });
329
+
330
+ console.log(result.text);
331
+ }
332
+ ```
333
+
334
+ **Declining a tool call**
335
+
336
+ ```typescript
337
+ if (output.finishReason === 'suspended') {
338
+ const result = await agent.declineToolCallGenerate({
339
+ runId: output.runId,
340
+ toolCallId: output.suspendPayload.toolCallId,
341
+ });
342
+ }
343
+ ```
344
+
345
+ **New methods added:**
346
+ - `agent.approveToolCallGenerate({ runId, toolCallId })` - Approves a pending tool call and returns the complete result
347
+ - `agent.declineToolCallGenerate({ runId, toolCallId })` - Declines a pending tool call and returns the complete result
348
+
349
+ **Server routes added:**
350
+ - `POST /api/agents/:agentId/approve-tool-call-generate`
351
+ - `POST /api/agents/:agentId/decline-tool-call-generate`
352
+
353
+ The playground UI now also supports tool approval when using generate mode.
354
+
355
+ - Add observeStream support for agent-builder template installation ([#9372](https://github.com/mastra-ai/mastra/pull/9372))
356
+ - Add observeStream, observeStreamVNext, observeStreamLegacy, and resumeStream methods to agent-builder client SDK
357
+ - Add corresponding server handlers and deployer routes for observe streaming
358
+ - Add tracingOptions parameter to existing agent-builder handlers for parity with workflows
359
+ - Update template installation processor to support both legacy and VNext streaming event formats
360
+
361
+ - Added processor resource to the JavaScript client SDK. You can now list processors, get processor details, and execute processors via the client: ([#12059](https://github.com/mastra-ai/mastra/pull/12059))
362
+
363
+ ```typescript
364
+ // List all processors
365
+ const processors = await client.listProcessors();
366
+
367
+ // Get processor details
368
+ const details = await client.getProcessor('my-processor').details();
369
+
370
+ // Execute a processor
371
+ const result = await client.getProcessor('my-processor').execute({
372
+ phase: 'input',
373
+ messages: [{ role: 'user', content: { format: 2, parts: [{ type: 'text', text: 'Hello' }] } }],
374
+ });
375
+ ```
376
+
377
+ - Unified observability schema with entity-based span identification ([#11132](https://github.com/mastra-ai/mastra/pull/11132))
378
+
379
+ ## What changed
380
+
381
+ Spans now use a unified identification model with `entityId`, `entityType`, and `entityName` instead of separate `agentId`, `toolId`, `workflowId` fields.
382
+
383
+ **Before:**
384
+
385
+ ```typescript
386
+ // Old span structure
387
+ span.agentId; // 'my-agent'
388
+ span.toolId; // undefined
389
+ span.workflowId; // undefined
390
+ ```
391
+
392
+ **After:**
393
+
394
+ ```typescript
395
+ // New span structure
396
+ span.entityType; // EntityType.AGENT
397
+ span.entityId; // 'my-agent'
398
+ span.entityName; // 'My Agent'
399
+ ```
400
+
401
+ ## New `listTraces()` API
402
+
403
+ Query traces with filtering, pagination, and sorting:
404
+
405
+ ```typescript
406
+ const { spans, pagination } = await storage.listTraces({
407
+ filters: {
408
+ entityType: EntityType.AGENT,
409
+ entityId: 'my-agent',
410
+ userId: 'user-123',
411
+ environment: 'production',
412
+ status: TraceStatus.SUCCESS,
413
+ startedAt: { start: new Date('2024-01-01'), end: new Date('2024-01-31') },
414
+ },
415
+ pagination: { page: 0, perPage: 50 },
416
+ orderBy: { field: 'startedAt', direction: 'DESC' },
417
+ });
418
+ ```
419
+
420
+ **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`.
421
+
422
+ ## New retrieval methods
423
+ - `getSpan({ traceId, spanId })` - Get a single span
424
+ - `getRootSpan({ traceId })` - Get the root span of a trace
425
+ - `getTrace({ traceId })` - Get all spans for a trace
426
+
427
+ ## Backward compatibility
428
+
429
+ The legacy `getTraces()` method continues to work. When you pass `name: "agent run: my-agent"`, it automatically transforms to `entityId: "my-agent", entityType: AGENT`.
430
+
431
+ ## Migration
432
+
433
+ **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`.
434
+
435
+ **No action required:** Your existing code continues to work. Adopt the new fields and `listTraces()` API at your convenience.
436
+
437
+ - Added new `listThreads` method for flexible thread filtering across all storage adapters. ([#11832](https://github.com/mastra-ai/mastra/pull/11832))
438
+
439
+ **New Features**
440
+ - Filter threads by `resourceId`, `metadata`, or both (with AND logic for metadata key-value pairs)
441
+ - All filter parameters are optional, allowing you to list all threads or filter as needed
442
+ - Full pagination and sorting support
443
+
444
+ **Example Usage**
445
+
446
+ ```typescript
447
+ // List all threads
448
+ const allThreads = await memory.listThreads({});
449
+
450
+ // Filter by resourceId only
451
+ const userThreads = await memory.listThreads({
452
+ filter: { resourceId: 'user-123' },
453
+ });
454
+
455
+ // Filter by metadata only
456
+ const supportThreads = await memory.listThreads({
457
+ filter: { metadata: { category: 'support' } },
458
+ });
459
+
460
+ // Filter by both with pagination
461
+ const filteredThreads = await memory.listThreads({
462
+ filter: {
463
+ resourceId: 'user-123',
464
+ metadata: { priority: 'high', status: 'open' },
465
+ },
466
+ orderBy: { field: 'updatedAt', direction: 'DESC' },
467
+ page: 0,
468
+ perPage: 20,
469
+ });
470
+ ```
471
+
472
+ **Security Improvements**
473
+ - Added validation to prevent SQL injection via malicious metadata keys
474
+ - Added pagination parameter validation to prevent integer overflow attacks
475
+
476
+ - Unified `getWorkflowRunById` and `getWorkflowRunExecutionResult` into a single API that returns `WorkflowState` with both metadata and execution state. ([#11429](https://github.com/mastra-ai/mastra/pull/11429))
477
+
478
+ **What changed:**
479
+ - `getWorkflowRunById` now returns a unified `WorkflowState` object containing metadata (runId, workflowName, resourceId, createdAt, updatedAt) along with processed execution state (status, result, error, payload, steps)
480
+ - Added optional `fields` parameter to request only specific fields for better performance
481
+ - Added optional `withNestedWorkflows` parameter to control nested workflow step inclusion
482
+ - Removed `getWorkflowRunExecutionResult` - use `getWorkflowRunById` instead (breaking change)
483
+ - Removed `/execution-result` API endpoints from server (breaking change)
484
+ - Removed `runExecutionResult()` method from client SDK (breaking change)
485
+ - Removed `GetWorkflowRunExecutionResultResponse` type from client SDK (breaking change)
486
+
487
+ **Before:**
488
+
489
+ ```typescript
490
+ // Had to call two different methods for different data
491
+ const run = await workflow.getWorkflowRunById(runId); // Returns raw WorkflowRun with snapshot
492
+ const result = await workflow.getWorkflowRunExecutionResult(runId); // Returns processed execution state
493
+ ```
494
+
495
+ **After:**
496
+
497
+ ```typescript
498
+ // Single method returns everything
499
+ const run = await workflow.getWorkflowRunById(runId);
500
+ // Returns: { runId, workflowName, resourceId, createdAt, updatedAt, status, result, error, payload, steps }
501
+
502
+ // Request only specific fields for better performance (avoids expensive step fetching)
503
+ const status = await workflow.getWorkflowRunById(runId, { fields: ['status'] });
504
+
505
+ // Skip nested workflow steps for faster response
506
+ const run = await workflow.getWorkflowRunById(runId, { withNestedWorkflows: false });
507
+ ```
508
+
509
+ **Why:** The previous API required calling two separate methods to get complete workflow run information. This unification simplifies the API surface and gives users control over performance - fetching all steps (especially nested workflows) can be expensive, so the `fields` and `withNestedWorkflows` options let users request only what they need.
510
+
511
+ ### Patch Changes
512
+
513
+ - Add embedded documentation support for Mastra packages ([#11472](https://github.com/mastra-ai/mastra/pull/11472))
514
+
515
+ Mastra packages now include embedded documentation in the published npm package under `dist/docs/`. This enables coding agents and AI assistants to understand and use the framework by reading documentation directly from `node_modules`.
516
+
517
+ Each package includes:
518
+ - **SKILL.md** - Entry point explaining the package's purpose and capabilities
519
+ - **SOURCE_MAP.json** - Machine-readable index mapping exports to types and implementation files
520
+ - **Topic folders** - Conceptual documentation organized by feature area
521
+
522
+ Documentation is driven by the `packages` frontmatter field in MDX files, which maps docs to their corresponding packages. CI validation ensures all docs include this field.
523
+
524
+ - Remove `streamVNext`, `resumeStreamVNext`, and `observeStreamVNext` methods, call `stream`, `resumeStream` and `observeStream` directly ([#11499](https://github.com/mastra-ai/mastra/pull/11499))
525
+
526
+ ```diff
527
+ + const run = await workflow.createRun({ runId: '123' });
528
+ - const stream = await run.streamVNext({ inputData: { ... } });
529
+ + const stream = await run.stream({ inputData: { ... } });
530
+ ```
531
+
532
+ - Make step optional in all resume APIs ([#9454](https://github.com/mastra-ai/mastra/pull/9454))
533
+
534
+ - Embed AI types to fix peerdeps mismatches ([`9650cce`](https://github.com/mastra-ai/mastra/commit/9650cce52a1d917ff9114653398e2a0f5c3ba808))
535
+
536
+ - Add resourceId to workflow routes ([#11166](https://github.com/mastra-ai/mastra/pull/11166))
537
+
538
+ - The client-js package had its own simpler zodToJsonSchema implementation that was missing critical features from schema-compat. This could cause issues when users pass Zod schemas with `z.record()` or `z.date()` through the MastraClient. ([#10730](https://github.com/mastra-ai/mastra/pull/10730))
539
+
540
+ Now the client uses the same implementation as the rest of the codebase, which includes the Zod v4 `z.record()` bug fix, date-time format conversion for `z.date()`, and proper handling of unrepresentable types.
541
+
542
+ Also removes the now-unused `zod-to-json-schema` dependency from client-js.
543
+
544
+ - Update tool execution signature ([#9587](https://github.com/mastra-ai/mastra/pull/9587))
545
+
546
+ Consolidated the 3 different execution contexts to one
547
+
548
+ ```typescript
549
+ // before depending on the context the tool was executed in
550
+ tool.execute({ context: data });
551
+ tool.execute({ context: { inputData: data } });
552
+ tool.execute(data);
553
+
554
+ // now, for all contexts
555
+ tool.execute(data, context);
556
+ ```
557
+
558
+ **Before:**
559
+
560
+ ```typescript
561
+ inputSchema: z.object({ something: z.string() }),
562
+ execute: async ({ context, tracingContext, runId, ... }) => {
563
+ return doSomething(context.string);
564
+ }
565
+ ```
566
+
567
+ **After:**
568
+
569
+ ```typescript
570
+ inputSchema: z.object({ something: z.string() }),
571
+ execute: async (inputData, context) => {
572
+ const { agent, mcp, workflow, ...sharedContext } = context
573
+
574
+ // context that only an agent would get like toolCallId, messages, suspend, resume, etc
575
+ if (agent) {
576
+ doSomething(inputData.something, agent)
577
+ // context that only a workflow would get like runId, state, suspend, resume, etc
578
+ } else if (workflow) {
579
+ doSomething(inputData.something, workflow)
580
+ // context that only a workflow would get like "extra", "elicitation"
581
+ } else if (mcp) {
582
+ doSomething(inputData.something, mcp)
583
+ } else {
584
+ // Running a tool in no execution context
585
+ return doSomething(inputData.something);
586
+ }
587
+ }
588
+ ```
589
+
590
+ - 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))
591
+
592
+ ### Breaking Changes
593
+
594
+ #### `@mastra/core`
595
+
596
+ The `threadId` and `resourceId` options have been removed from `agent.generate()` and `agent.stream()`. Use the `memory` option instead:
597
+
598
+ ```ts
599
+ // Before
600
+ await agent.stream('Hello', {
601
+ threadId: 'thread-123',
602
+ resourceId: 'user-456',
603
+ });
604
+
605
+ // After
606
+ await agent.stream('Hello', {
607
+ memory: {
608
+ thread: 'thread-123',
609
+ resource: 'user-456',
610
+ },
611
+ });
612
+ ```
613
+
614
+ #### `@mastra/server`
615
+
616
+ 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.
617
+
618
+ #### `@mastra/react`
619
+
620
+ 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.
621
+
622
+ #### `@mastra/client-js`
623
+
624
+ When using the client SDK agent methods, use the `memory` option instead of `threadId`/`resourceId`:
625
+
626
+ ```ts
627
+ const agent = client.getAgent('my-agent');
628
+
629
+ // Before
630
+ await agent.generate([...], {
631
+ threadId: 'thread-123',
632
+ resourceId: 'user-456',
633
+ });
634
+
635
+ // After
636
+ await agent.generate([...], {
637
+ memory: {
638
+ thread: 'thread-123',
639
+ resource: 'user-456',
640
+ },
641
+ });
642
+ ```
643
+
644
+ - Fix wrong arguments type in list workflow runs ([#10755](https://github.com/mastra-ai/mastra/pull/10755))
645
+
646
+ - Adjust the generate / stream types to accept tracingOptions ([#10742](https://github.com/mastra-ai/mastra/pull/10742))
647
+
648
+ - Add human-in-the-loop (HITL) support to agent networks ([#11678](https://github.com/mastra-ai/mastra/pull/11678))
649
+ - Add suspend/resume capabilities to agent network
650
+ - Enable auto-resume for suspended network execution via `autoResumeSuspendedTools`
651
+
652
+ `agent.resumeNetwork`, `agent.approveNetworkToolCall`, `agent.declineNetworkToolCall`
653
+
654
+ - Add `Run` instance to client-js. `workflow.createRun` returns the `Run` instance which can be used for the different run methods. ([#11207](https://github.com/mastra-ai/mastra/pull/11207))
655
+ With this change, run methods cannot be called directly on workflow instance anymore
656
+
657
+ ```diff
658
+ - const result = await workflow.stream({ runId: '123', inputData: { ... } });
659
+ + const run = await workflow.createRun({ runId: '123' });
660
+ + const stream = await run.stream({ inputData: { ... } });
661
+ ```
662
+
663
+ - Fix `saveMessageToMemory` return type to match API response. The method now correctly returns `{ messages: (MastraMessageV1 | MastraDBMessage)[] }` instead of `(MastraMessageV1 | MastraDBMessage)[]` to align with the server endpoint response schema. ([#10996](https://github.com/mastra-ai/mastra/pull/10996))
664
+
665
+ - Add search memory in client-js ([#9326](https://github.com/mastra-ai/mastra/pull/9326))
666
+
667
+ - Fix clientTools execution in client js ([#9880](https://github.com/mastra-ai/mastra/pull/9880))
668
+
669
+ - Include agentId parameter in listMessages API call ([#10270](https://github.com/mastra-ai/mastra/pull/10270))
670
+
671
+ - Add timeTravel APIs and add timeTravel feature to studio ([#10361](https://github.com/mastra-ai/mastra/pull/10361))
672
+
673
+ - Improve type handling with Zod ([#12091](https://github.com/mastra-ai/mastra/pull/12091))
674
+
675
+ - feat: Add field filtering and nested workflow control to workflow execution result endpoint ([#11246](https://github.com/mastra-ai/mastra/pull/11246))
676
+
677
+ Adds two optional query parameters to `/api/workflows/:workflowId/runs/:runId/execution-result` endpoint:
678
+ - `fields`: Request only specific fields (e.g., `status`, `result`, `error`)
679
+ - `withNestedWorkflows`: Control whether to fetch nested workflow data
680
+
681
+ This significantly reduces response payload size and improves response times for large workflows.
682
+
683
+ ## Server Endpoint Usage
684
+
685
+ ```http
686
+ # Get only status (minimal payload - fastest)
687
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status
688
+
689
+ # Get status and result
690
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status,result
691
+
692
+ # Get all fields but without nested workflow data (faster)
693
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?withNestedWorkflows=false
694
+
695
+ # Get only specific fields without nested workflow data
696
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status,steps&withNestedWorkflows=false
697
+
698
+ # Get full data (default behavior)
699
+ GET /api/workflows/:workflowId/runs/:runId/execution-result
700
+ ```
701
+
702
+ ## Client SDK Usage
703
+
704
+ ```typescript
705
+ import { MastraClient } from '@mastra/client-js';
706
+
707
+ const client = new MastraClient({ baseUrl: 'http://localhost:4111' });
708
+ const workflow = client.getWorkflow('myWorkflow');
709
+
710
+ // Get only status (minimal payload - fastest)
711
+ const statusOnly = await workflow.runExecutionResult(runId, {
712
+ fields: ['status'],
713
+ });
714
+ console.log(statusOnly.status); // 'success' | 'failed' | 'running' | etc.
715
+
716
+ // Get status and result
717
+ const statusAndResult = await workflow.runExecutionResult(runId, {
718
+ fields: ['status', 'result'],
719
+ });
720
+
721
+ // Get all fields but without nested workflow data (faster)
722
+ const resultWithoutNested = await workflow.runExecutionResult(runId, {
723
+ withNestedWorkflows: false,
724
+ });
725
+
726
+ // Get specific fields without nested workflow data
727
+ const optimized = await workflow.runExecutionResult(runId, {
728
+ fields: ['status', 'steps'],
729
+ withNestedWorkflows: false,
730
+ });
731
+
732
+ // Get full execution result (default behavior)
733
+ const fullResult = await workflow.runExecutionResult(runId);
734
+ ```
735
+
736
+ ## Core API Changes
737
+
738
+ The `Workflow.getWorkflowRunExecutionResult` method now accepts an options object:
739
+
740
+ ```typescript
741
+ await workflow.getWorkflowRunExecutionResult(runId, {
742
+ withNestedWorkflows: false, // default: true, set to false to skip nested workflow data
743
+ fields: ['status', 'result'], // optional field filtering
744
+ });
745
+ ```
746
+
747
+ ## Inngest Compatibility
748
+
749
+ The `@mastra/inngest` package has been updated to use the new options object API. This is a non-breaking internal change - no action required from inngest workflow users.
750
+
751
+ ## Performance Impact
752
+
753
+ For workflows with large step outputs:
754
+ - Requesting only `status`: ~99% reduction in payload size
755
+ - Requesting `status,result,error`: ~95% reduction in payload size
756
+ - Using `withNestedWorkflows=false`: Avoids expensive nested workflow data fetching
757
+ - Combining both: Maximum performance optimization
758
+
759
+ - Add tool call approval ([#8649](https://github.com/mastra-ai/mastra/pull/8649))
760
+
761
+ - Fix error handling and serialization in agent streaming to ensure errors are consistently exposed and preserved. ([#9144](https://github.com/mastra-ai/mastra/pull/9144))
762
+
763
+ - Fixes issue where clicking the reset button in the model picker would fail to restore the original LanguageModelV2 (or any other types) object that was passed during agent construction. ([#9481](https://github.com/mastra-ai/mastra/pull/9481))
764
+
765
+ - Added optional `description` field to `GetAgentResponse` to support richer agent metadata ([#10300](https://github.com/mastra-ai/mastra/pull/10300))
766
+
767
+ - Move the enhance instruction fetch call to client-js ([#9302](https://github.com/mastra-ai/mastra/pull/9302))
768
+
769
+ - Add debugger-like click-through UI to workflow graph ([#11350](https://github.com/mastra-ai/mastra/pull/11350))
770
+
771
+ - Add delete workflow run API ([#10991](https://github.com/mastra-ai/mastra/pull/10991))
772
+
773
+ ```typescript
774
+ await workflow.deleteWorkflowRunById(runId);
775
+ ```
776
+
777
+ - Add initial state input to workflow form in studio ([#11560](https://github.com/mastra-ai/mastra/pull/11560))
778
+
779
+ - Deserialize workflow errors on the client side ([#10992](https://github.com/mastra-ai/mastra/pull/10992))
780
+
781
+ When workflows fail, the server sends error data as JSON over HTTP. This change deserializes those errors back to proper `Error` instances on the client.
782
+
783
+ **Before:**
784
+
785
+ ```typescript
786
+ const result = await workflow.startAsync({ input });
787
+ if (result.status === 'failed') {
788
+ // result.error was a plain object, couldn't use instanceof
789
+ console.log(result.error.message); // TypeScript error
790
+ }
791
+ ```
792
+
793
+ **After:**
794
+
795
+ ```typescript
796
+ const result = await workflow.startAsync({ input });
797
+ if (result.status === 'failed') {
798
+ // result.error is now a proper Error instance
799
+ if (result.error instanceof MyCustomError) {
800
+ console.log(result.error.statusCode); // Works!
801
+ }
802
+ }
803
+ ```
804
+
805
+ This enables proper error handling and type checking in client applications, allowing developers to implement error-specific recovery logic based on custom error types and properties.
806
+
807
+ Features:
808
+ - `instanceof Error` checks
809
+ - Access to `error.message`, `error.name`, `error.stack`
810
+ - Preservation of custom error properties (e.g., `statusCode`, `responseHeaders`)
811
+ - Nested error tracking via `error.cause`
812
+
813
+ Affected methods:
814
+ - `startAsync()`
815
+ - `resumeAsync()`
816
+ - `restartAsync()`
817
+ - `timeTravelAsync()`
818
+
819
+ - Add `getSystemPackages()` method to retrieve installed Mastra packages and their versions from the server ([#11211](https://github.com/mastra-ai/mastra/pull/11211))
820
+
821
+ - fix list memory ([#9751](https://github.com/mastra-ai/mastra/pull/9751))
822
+
823
+ - Standardize pagination params to page/perPage with backwards compatibility for limit/offset ([#10790](https://github.com/mastra-ai/mastra/pull/10790))
824
+ - Server now accepts both `page`/`perPage` and legacy `limit`/`offset` params for workflow runs and MCP server listing endpoints
825
+ - Client SDK sends both param formats to support older server versions
826
+ - Added `createCombinedPaginationSchema` helper for endpoints needing backwards compatibility
827
+ - Marked `limit` and `offset` as deprecated in client types
828
+
829
+ - Remove unused /model-providers API ([#9533](https://github.com/mastra-ai/mastra/pull/9533))
830
+
831
+ - Backward compat for list threads ([#9758](https://github.com/mastra-ai/mastra/pull/9758))
832
+
833
+ - **Client (`@mastra/client-js`):** ([#10653](https://github.com/mastra-ai/mastra/pull/10653))
834
+ - Fixed `sendStreamingMessage` to properly return a streaming response instead of attempting to parse it as JSON
835
+
836
+ **Server (`@mastra/server`):**
837
+ - Fixed A2A message handler to pass `contextId` as `threadId` for memory persistence across conversations
838
+ - Added support for user-provided `resourceId` via `params.metadata.resourceId` or `message.metadata.resourceId`, falling back to `agentId`
839
+
840
+ - add client-js function to fetch model providers ([#9376](https://github.com/mastra-ai/mastra/pull/9376))
841
+
842
+ - Fix undefined runtimeContext using memory from playground ([#9328](https://github.com/mastra-ai/mastra/pull/9328))
843
+
844
+ - Fix error parsing json body for reset agent endpoint ([#11379](https://github.com/mastra-ai/mastra/pull/11379))
845
+
846
+ - Make step optional in resumeStreamVNext API ([#9453](https://github.com/mastra-ai/mastra/pull/9453))
847
+
848
+ - Adds thread cloning to create independent copies of conversations that can diverge. ([#11517](https://github.com/mastra-ai/mastra/pull/11517))
849
+
850
+ ```typescript
851
+ // Clone a thread
852
+ const { thread, clonedMessages } = await memory.cloneThread({
853
+ sourceThreadId: 'thread-123',
854
+ title: 'My Clone',
855
+ options: {
856
+ messageLimit: 10, // optional: only copy last N messages
857
+ },
858
+ });
859
+
860
+ // Check if a thread is a clone
861
+ if (memory.isClone(thread)) {
862
+ const source = await memory.getSourceThread(thread.id);
863
+ }
864
+
865
+ // List all clones of a thread
866
+ const clones = await memory.listClones('thread-123');
867
+ ```
868
+
869
+ Includes:
870
+ - Storage implementations for InMemory, PostgreSQL, LibSQL, Upstash
871
+ - API endpoint: `POST /api/memory/threads/:threadId/clone`
872
+ - Embeddings created for cloned messages (semantic recall)
873
+ - Clone button in playground UI Memory tab
874
+
875
+ - Add missing status parameter to workflow.runs() method ([#11095](https://github.com/mastra-ai/mastra/pull/11095))
876
+
877
+ The `status` parameter was supported by the server API but was missing from the TypeScript types in @mastra/client-js.
878
+
879
+ Now you can filter workflow runs by status:
880
+
881
+ ```typescript
882
+ // Get only running workflows
883
+ const runningRuns = await workflow.runs({ status: 'running' });
884
+
885
+ // Get completed workflows
886
+ const completedRuns = await workflow.runs({ status: 'success' });
887
+ ```
888
+
889
+ - Remove `waitForEvent` from workflows. `waitForEvent` is now removed, please use suspend & resume flow instead. See https://mastra.ai/en/docs/workflows/suspend-and-resume for more details on suspend & resume flow. ([#9214](https://github.com/mastra-ai/mastra/pull/9214))
890
+
891
+ - Fix delayed promises rejecting when stream suspends on tool-call-approval ([#11278](https://github.com/mastra-ai/mastra/pull/11278))
892
+
893
+ When a stream ends in suspended state (e.g., requiring tool approval), the delayed promises like `toolResults`, `toolCalls`, `text`, etc. now resolve with partial results instead of rejecting with an error. This allows consumers to access data that was produced before the suspension.
894
+
895
+ Also improves generic type inference for `LLMStepResult` and related types throughout the streaming infrastructure.
896
+
897
+ - Add optional `partial` query parameter to `/api/agents` and `/api/workflows` endpoints to return minimal data without schemas, reducing payload size for list views: ([#10886](https://github.com/mastra-ai/mastra/pull/10886))
898
+ - When `partial=true`: tool schemas (inputSchema, outputSchema) are omitted
899
+ - When `partial=true`: workflow steps are replaced with stepCount integer
900
+ - When `partial=true`: workflow root schemas (inputSchema, outputSchema) are omitted
901
+ - Maintains backward compatibility when partial parameter is not provided
902
+
903
+ **Server Endpoint Usage**
904
+
905
+ ```bash
906
+ # Get partial agent data (no tool schemas)
907
+ GET /api/agents?partial=true
908
+
909
+ # Get full agent data (default behavior)
910
+ GET /api/agents
911
+
912
+ # Get partial workflow data (stepCount instead of steps, no schemas)
913
+ GET /api/workflows?partial=true
914
+
915
+ # Get full workflow data (default behavior)
916
+ GET /api/workflows
917
+ ```
918
+
919
+ **Client SDK Usage**
920
+
921
+ ```typescript
922
+ import { MastraClient } from '@mastra/client-js';
923
+
924
+ const client = new MastraClient({ baseUrl: 'http://localhost:4111' });
925
+
926
+ // Get partial agent list (smaller payload)
927
+ const partialAgents = await client.listAgents({ partial: true });
928
+
929
+ // Get full agent list with tool schemas
930
+ const fullAgents = await client.listAgents();
931
+
932
+ // Get partial workflow list (smaller payload)
933
+ const partialWorkflows = await client.listWorkflows({ partial: true });
934
+
935
+ // Get full workflow list with steps and schemas
936
+ const fullWorkflows = await client.listWorkflows();
937
+ ```
938
+
939
+ - 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))
940
+
941
+ When a workflow contains an agent step that triggers a tripwire, the workflow returns with `status: 'tripwire'` and includes tripwire details:
942
+
943
+ ```typescript
944
+ const run = await workflow.createRun();
945
+ const result = await run.start({ inputData: { message: 'Hello' } });
946
+
947
+ if (result.status === 'tripwire') {
948
+ console.log('Workflow terminated by tripwire:', result.tripwire?.reason);
949
+ console.log('Processor ID:', result.tripwire?.processorId);
950
+ console.log('Retry requested:', result.tripwire?.retry);
951
+ }
952
+ ```
953
+
954
+ Adds new UI state for tripwire in agent chat and workflow UI.
955
+
956
+ 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).
957
+
958
+ - Add `cancel()` method as an alias for `cancelRun()` in the Run class. The new method provides a more concise API while maintaining backward compatibility. Includes comprehensive documentation about abort signals and how steps can respond to cancellation. ([#11417](https://github.com/mastra-ai/mastra/pull/11417))
959
+
960
+ - Remove unused dependencies ([#10019](https://github.com/mastra-ai/mastra/pull/10019))
961
+
962
+ - Make agentId optional for memory read operations (getThread, listThreads, listMessages) ([#11540](https://github.com/mastra-ai/mastra/pull/11540))
963
+
964
+ When workflows use multiple agents sharing the same threadId/resourceId, users can now retrieve threads and messages without specifying an agentId. The server falls back to using storage directly when agentId is not provided.
965
+
966
+ - Updated dependencies [[`ac0d2f4`](https://github.com/mastra-ai/mastra/commit/ac0d2f4ff8831f72c1c66c2be809706d17f65789), [`2319326`](https://github.com/mastra-ai/mastra/commit/2319326f8c64e503a09bbcf14be2dd65405445e0), [`d2d3e22`](https://github.com/mastra-ai/mastra/commit/d2d3e22a419ee243f8812a84e3453dd44365ecb0), [`08766f1`](https://github.com/mastra-ai/mastra/commit/08766f15e13ac0692fde2a8bd366c2e16e4321df), [`72df8ae`](https://github.com/mastra-ai/mastra/commit/72df8ae595584cdd7747d5c39ffaca45e4507227), [`ebae12a`](https://github.com/mastra-ai/mastra/commit/ebae12a2dd0212e75478981053b148a2c246962d), [`c8417b4`](https://github.com/mastra-ai/mastra/commit/c8417b41d9f3486854dc7842d977fbe5e2166264), [`bc72b52`](https://github.com/mastra-ai/mastra/commit/bc72b529ee4478fe89ecd85a8be47ce0127b82a0), [`39c9743`](https://github.com/mastra-ai/mastra/commit/39c97432d084294f8ba85fbf3ef28098ff21459e), [`1dbd8c7`](https://github.com/mastra-ai/mastra/commit/1dbd8c729fb6536ec52f00064d76b80253d346e9), [`c61a0a5`](https://github.com/mastra-ai/mastra/commit/c61a0a5de4904c88fd8b3718bc26d1be1c2ec6e7), [`05b8bee`](https://github.com/mastra-ai/mastra/commit/05b8bee9e50e6c2a4a2bf210eca25ee212ca24fa), [`3076c67`](https://github.com/mastra-ai/mastra/commit/3076c6778b18988ae7d5c4c5c466366974b2d63f), [`3d93a15`](https://github.com/mastra-ai/mastra/commit/3d93a15796b158c617461c8b98bede476ebb43e2), [`9198899`](https://github.com/mastra-ai/mastra/commit/91988995c427b185c33714b7f3be955367911324), [`ed3e3dd`](https://github.com/mastra-ai/mastra/commit/ed3e3ddec69d564fe2b125e083437f76331f1283), [`c59e13c`](https://github.com/mastra-ai/mastra/commit/c59e13c7688284bd96b2baee3e314335003548de), [`c042bd0`](https://github.com/mastra-ai/mastra/commit/c042bd0b743e0e86199d0cb83344ca7690e34a9c), [`f743dbb`](https://github.com/mastra-ai/mastra/commit/f743dbb8b40d1627b5c10c0e6fc154f4ebb6e394), [`21a15de`](https://github.com/mastra-ai/mastra/commit/21a15de369fe82aac26bb642ed7be73505475e8b), [`e54953e`](https://github.com/mastra-ai/mastra/commit/e54953ed8ce1b28c0d62a19950163039af7834b4), [`ae8baf7`](https://github.com/mastra-ai/mastra/commit/ae8baf7d8adcb0ff9dac11880400452bc49b33ff), [`fec5129`](https://github.com/mastra-ai/mastra/commit/fec5129de7fc64423ea03661a56cef31dc747a0d), [`940a2b2`](https://github.com/mastra-ai/mastra/commit/940a2b27480626ed7e74f55806dcd2181c1dd0c2), [`1a0d3fc`](https://github.com/mastra-ai/mastra/commit/1a0d3fc811482c9c376cdf79ee615c23bae9b2d6), [`85d7ee1`](https://github.com/mastra-ai/mastra/commit/85d7ee18ff4e14d625a8a30ec6656bb49804989b), [`c6c1092`](https://github.com/mastra-ai/mastra/commit/c6c1092f8fbf76109303f69e000e96fd1960c4ce), [`0491e7c`](https://github.com/mastra-ai/mastra/commit/0491e7c9b714cb0ba22187ee062147ec2dd7c712), [`f6f4903`](https://github.com/mastra-ai/mastra/commit/f6f4903397314f73362061dc5a3e8e7c61ea34aa), [`d5ed981`](https://github.com/mastra-ai/mastra/commit/d5ed981c8701c1b8a27a5f35a9a2f7d9244e695f), [`85a628b`](https://github.com/mastra-ai/mastra/commit/85a628b1224a8f64cd82ea7f033774bf22df7a7e), [`0e8ed46`](https://github.com/mastra-ai/mastra/commit/0e8ed467c54d6901a6a365f270ec15d6faadb36c), [`33a4d2e`](https://github.com/mastra-ai/mastra/commit/33a4d2e4ed8af51f69256232f00c34d6b6b51d48), [`b9b7ffd`](https://github.com/mastra-ai/mastra/commit/b9b7ffdad6936a7d50b6b814b5bbe54e19087f66), [`9650cce`](https://github.com/mastra-ai/mastra/commit/9650cce52a1d917ff9114653398e2a0f5c3ba808), [`6c049d9`](https://github.com/mastra-ai/mastra/commit/6c049d94063fdcbd5b81c4912a2bf82a92c9cc0b), [`910db9e`](https://github.com/mastra-ai/mastra/commit/910db9e0312888495eb5617b567f247d03303814), [`2f897df`](https://github.com/mastra-ai/mastra/commit/2f897df208508f46f51b7625e5dd20c37f93e0e3), [`d629361`](https://github.com/mastra-ai/mastra/commit/d629361a60f6565b5bfb11976fdaf7308af858e2), [`4f94ed8`](https://github.com/mastra-ai/mastra/commit/4f94ed8177abfde3ec536e3574883e075423350c), [`feb7ee4`](https://github.com/mastra-ai/mastra/commit/feb7ee4d09a75edb46c6669a3beaceec78811747), [`4aaa844`](https://github.com/mastra-ai/mastra/commit/4aaa844a4f19d054490f43638a990cc57bda8d2f), [`c237233`](https://github.com/mastra-ai/mastra/commit/c23723399ccedf7f5744b3f40997b79246bfbe64), [`38380b6`](https://github.com/mastra-ai/mastra/commit/38380b60fca905824bdf6b43df307a58efb1aa15), [`6833c69`](https://github.com/mastra-ai/mastra/commit/6833c69607418d257750bbcdd84638993d343539), [`932d63d`](https://github.com/mastra-ai/mastra/commit/932d63dd51be9c8bf1e00e3671fe65606c6fb9cd), [`4a1a6cb`](https://github.com/mastra-ai/mastra/commit/4a1a6cb3facad54b2bb6780b00ce91d6de1edc08), [`08c31c1`](https://github.com/mastra-ai/mastra/commit/08c31c188ebccd598acaf55e888b6397d01f7eae), [`919a22b`](https://github.com/mastra-ai/mastra/commit/919a22b25876f9ed5891efe5facbe682c30ff497), [`15f9e21`](https://github.com/mastra-ai/mastra/commit/15f9e216177201ea6e3f6d0bfb063fcc0953444f), [`3443770`](https://github.com/mastra-ai/mastra/commit/3443770662df8eb24c9df3589b2792d78cfcb811), [`69136e7`](https://github.com/mastra-ai/mastra/commit/69136e748e32f57297728a4e0f9a75988462f1a7), [`b0e2ea5`](https://github.com/mastra-ai/mastra/commit/b0e2ea5b52c40fae438b9e2f7baee6f0f89c5442), [`f0a07e0`](https://github.com/mastra-ai/mastra/commit/f0a07e0111b3307c5fabfa4094c5c2cfb734fbe6), [`ff94dea`](https://github.com/mastra-ai/mastra/commit/ff94dea935f4e34545c63bcb6c29804732698809), [`0d41fe2`](https://github.com/mastra-ai/mastra/commit/0d41fe245355dfc66d61a0d9c85d9400aac351ff), [`b760b73`](https://github.com/mastra-ai/mastra/commit/b760b731aca7c8a3f041f61d57a7f125ae9cb215), [`aaa40e7`](https://github.com/mastra-ai/mastra/commit/aaa40e788628b319baa8e889407d11ad626547fa), [`1521d71`](https://github.com/mastra-ai/mastra/commit/1521d716e5daedc74690c983fbd961123c56756b), [`449aed2`](https://github.com/mastra-ai/mastra/commit/449aed2ba9d507b75bf93d427646ea94f734dfd1), [`eb648a2`](https://github.com/mastra-ai/mastra/commit/eb648a2cc1728f7678768dd70cd77619b448dab9), [`695a621`](https://github.com/mastra-ai/mastra/commit/695a621528bdabeb87f83c2277cf2bb084c7f2b4), [`9e1911d`](https://github.com/mastra-ai/mastra/commit/9e1911db2b4db85e0e768c3f15e0d61e319869f6), [`ac3cc23`](https://github.com/mastra-ai/mastra/commit/ac3cc2397d1966bc0fc2736a223abc449d3c7719), [`c456e01`](https://github.com/mastra-ai/mastra/commit/c456e0149e3c176afcefdbd9bb1d2c5917723725), [`ebac155`](https://github.com/mastra-ai/mastra/commit/ebac15564a590117db7078233f927a7e28a85106), [`a86f4df`](https://github.com/mastra-ai/mastra/commit/a86f4df0407311e0d2ea49b9a541f0938810d6a9), [`dd1c38d`](https://github.com/mastra-ai/mastra/commit/dd1c38d1b75f1b695c27b40d8d9d6ed00d5e0f6f), [`5948e6a`](https://github.com/mastra-ai/mastra/commit/5948e6a5146c83666ba3f294b2be576c82a513fb), [`5b2ff46`](https://github.com/mastra-ai/mastra/commit/5b2ff4651df70c146523a7fca773f8eb0a2272f8), [`edb07e4`](https://github.com/mastra-ai/mastra/commit/edb07e49283e0c28bd094a60e03439bf6ecf0221), [`e0941c3`](https://github.com/mastra-ai/mastra/commit/e0941c3d7fc75695d5d258e7008fd5d6e650800c), [`f93e2f5`](https://github.com/mastra-ai/mastra/commit/f93e2f575e775e627e5c1927cefdd72db07858ed), [`db41688`](https://github.com/mastra-ai/mastra/commit/db4168806d007417e2e60b4f68656dca4e5f40c9), [`2b459f4`](https://github.com/mastra-ai/mastra/commit/2b459f466fd91688eeb2a44801dc23f7f8a887ab), [`798d0c7`](https://github.com/mastra-ai/mastra/commit/798d0c740232653b1d754870e6b43a55c364ffe2), [`0c0580a`](https://github.com/mastra-ai/mastra/commit/0c0580a42f697cd2a7d5973f25bfe7da9055038a), [`8940859`](https://github.com/mastra-ai/mastra/commit/89408593658199b4ad67f7b65e888f344e64a442), [`486352b`](https://github.com/mastra-ai/mastra/commit/486352b66c746602b68a95839f830de14c7fb8c0), [`ab035c2`](https://github.com/mastra-ai/mastra/commit/ab035c2ef6d8cc7bb25f06f1a38508bd9e6f126b), [`e629310`](https://github.com/mastra-ai/mastra/commit/e629310f1a73fa236d49ec7a1d1cceb6229dc7cc), [`0131105`](https://github.com/mastra-ai/mastra/commit/0131105532e83bdcbb73352fc7d0879eebf140dc), [`5ca599d`](https://github.com/mastra-ai/mastra/commit/5ca599d0bb59a1595f19f58473fcd67cc71cef58), [`09e4bae`](https://github.com/mastra-ai/mastra/commit/09e4bae18dd5357d2ae078a4a95a2af32168ab08), [`47b1c16`](https://github.com/mastra-ai/mastra/commit/47b1c16a01c7ffb6765fe1e499b49092f8b7eba3), [`4c6b492`](https://github.com/mastra-ai/mastra/commit/4c6b492c4dd591c6a592520c1f6855d6e936d71f), [`bff1145`](https://github.com/mastra-ai/mastra/commit/bff114556b3cbadad9b2768488708f8ad0e91475), [`dff01d8`](https://github.com/mastra-ai/mastra/commit/dff01d81ce1f4e4087cfac20fa868e6db138dd14), [`9d5059e`](https://github.com/mastra-ai/mastra/commit/9d5059eae810829935fb08e81a9bb7ecd5b144a7), [`ffe84d5`](https://github.com/mastra-ai/mastra/commit/ffe84d54f3b0f85167fe977efd027dba027eb998), [`5c8ca24`](https://github.com/mastra-ai/mastra/commit/5c8ca247094e0cc2cdbd7137822fb47241f86e77), [`9d819d5`](https://github.com/mastra-ai/mastra/commit/9d819d54b61481639f4008e4694791bddf187edd), [`24b76d8`](https://github.com/mastra-ai/mastra/commit/24b76d8e17656269c8ed09a0c038adb9cc2ae95a), [`31d13d5`](https://github.com/mastra-ai/mastra/commit/31d13d5fdc2e2380e2e3ee3ec9fb29d2a00f265d), [`ef756c6`](https://github.com/mastra-ai/mastra/commit/ef756c65f82d16531c43f49a27290a416611e526), [`e191844`](https://github.com/mastra-ai/mastra/commit/e1918444ca3f80e82feef1dad506cd4ec6e2875f), [`243a823`](https://github.com/mastra-ai/mastra/commit/243a8239c5906f5c94e4f78b54676793f7510ae3), [`b00ccd3`](https://github.com/mastra-ai/mastra/commit/b00ccd325ebd5d9e37e34dd0a105caae67eb568f), [`28f5f89`](https://github.com/mastra-ai/mastra/commit/28f5f89705f2409921e3c45178796c0e0d0bbb64), [`22553f1`](https://github.com/mastra-ai/mastra/commit/22553f11c63ee5e966a9c034a349822249584691), [`4c62166`](https://github.com/mastra-ai/mastra/commit/4c621669f4a29b1f443eca3ba70b814afa286266), [`e601b27`](https://github.com/mastra-ai/mastra/commit/e601b272c70f3a5ecca610373aa6223012704892), [`7d56d92`](https://github.com/mastra-ai/mastra/commit/7d56d9213886e8353956d7d40df10045fd12b299), [`81dc110`](https://github.com/mastra-ai/mastra/commit/81dc11008d147cf5bdc8996ead1aa61dbdebb6fc), [`7bcbf10`](https://github.com/mastra-ai/mastra/commit/7bcbf10133516e03df964b941f9a34e9e4ab4177), [`029540c`](https://github.com/mastra-ai/mastra/commit/029540ca1e582fc2dd8d288ecd4a9b0f31a954ef), [`7237163`](https://github.com/mastra-ai/mastra/commit/72371635dbf96a87df4b073cc48fc655afbdce3d), [`2500740`](https://github.com/mastra-ai/mastra/commit/2500740ea23da067d6e50ec71c625ab3ce275e64), [`4353600`](https://github.com/mastra-ai/mastra/commit/43536005a65988a8eede236f69122e7f5a284ba2), [`653e65a`](https://github.com/mastra-ai/mastra/commit/653e65ae1f9502c2958a32f47a5a2df11e612a92), [`873ecbb`](https://github.com/mastra-ai/mastra/commit/873ecbb517586aa17d2f1e99283755b3ebb2863f), [`6986fb0`](https://github.com/mastra-ai/mastra/commit/6986fb064f5db6ecc24aa655e1d26529087b43b3), [`3d3366f`](https://github.com/mastra-ai/mastra/commit/3d3366f31683e7137d126a3a57174a222c5801fb), [`5a4953f`](https://github.com/mastra-ai/mastra/commit/5a4953f7d25bb15ca31ed16038092a39cb3f98b3), [`4f9bbe5`](https://github.com/mastra-ai/mastra/commit/4f9bbe5968f42c86f4930b8193de3c3c17e5bd36), [`efe406a`](https://github.com/mastra-ai/mastra/commit/efe406a1353c24993280ebc2ed61dd9f65b84b26), [`eb9e522`](https://github.com/mastra-ai/mastra/commit/eb9e522ce3070a405e5b949b7bf5609ca51d7fe2), [`fd3d338`](https://github.com/mastra-ai/mastra/commit/fd3d338a2c362174ed5b383f1f011ad9fb0302aa), [`20e6f19`](https://github.com/mastra-ai/mastra/commit/20e6f1971d51d3ff6dd7accad8aaaae826d540ed), [`053e979`](https://github.com/mastra-ai/mastra/commit/053e9793b28e970086b0507f7f3b76ea32c1e838), [`02e51fe`](https://github.com/mastra-ai/mastra/commit/02e51feddb3d4155cfbcc42624fd0d0970d032c0), [`71c8d6c`](https://github.com/mastra-ai/mastra/commit/71c8d6c161253207b2b9588bdadb7eed604f7253), [`7aedb74`](https://github.com/mastra-ai/mastra/commit/7aedb74883adf66af38e270e4068fd42e7a37036), [`3bdfa75`](https://github.com/mastra-ai/mastra/commit/3bdfa7507a91db66f176ba8221aa28dd546e464a), [`119e5c6`](https://github.com/mastra-ai/mastra/commit/119e5c65008f3e5cfca954eefc2eb85e3bf40da4), [`c6fd6fe`](https://github.com/mastra-ai/mastra/commit/c6fd6fedd09e9cf8004b03a80925f5e94826ad7e), [`8f02d80`](https://github.com/mastra-ai/mastra/commit/8f02d800777397e4b45d7f1ad041988a8b0c6630), [`fdac646`](https://github.com/mastra-ai/mastra/commit/fdac646033a0930a1a4e00d13aa64c40bb7f1e02), [`6179a9b`](https://github.com/mastra-ai/mastra/commit/6179a9ba36ffac326de3cc3c43cdc8028d37c251), [`8f3fa3a`](https://github.com/mastra-ai/mastra/commit/8f3fa3a652bb77da092f913ec51ae46e3a7e27dc), [`d07b568`](https://github.com/mastra-ai/mastra/commit/d07b5687819ea8cb1dffa776d0c1765faf4aa1ae), [`e770de9`](https://github.com/mastra-ai/mastra/commit/e770de941a287a49b1964d44db5a5763d19890a6), [`e26dc9c`](https://github.com/mastra-ai/mastra/commit/e26dc9c3ccfec54ae3dc3e2b2589f741f9ae60a6), [`55edf73`](https://github.com/mastra-ai/mastra/commit/55edf7302149d6c964fbb7908b43babfc2b52145), [`c30400a`](https://github.com/mastra-ai/mastra/commit/c30400a49b994b1b97256fe785eb6c906fc2b232), [`486352b`](https://github.com/mastra-ai/mastra/commit/486352b66c746602b68a95839f830de14c7fb8c0), [`00f4921`](https://github.com/mastra-ai/mastra/commit/00f4921dd2c91a1e5446799599ef7116a8214a1a), [`1a46a56`](https://github.com/mastra-ai/mastra/commit/1a46a566f45a3fcbadc1cf36bf86d351f264bfa3), [`ca8041c`](https://github.com/mastra-ai/mastra/commit/ca8041cce0379fda22ed293a565bcb5b6ddca68a), [`b5dc973`](https://github.com/mastra-ai/mastra/commit/b5dc9733a5158850298dfb103acb3babdba8a318), [`7051bf3`](https://github.com/mastra-ai/mastra/commit/7051bf38b3b122a069008f861f7bfc004a6d9f6e), [`a8f1494`](https://github.com/mastra-ai/mastra/commit/a8f1494f4bbdc2770bcf327d4c7d869e332183f1), [`52e2716`](https://github.com/mastra-ai/mastra/commit/52e2716b42df6eff443de72360ae83e86ec23993), [`d7aad50`](https://github.com/mastra-ai/mastra/commit/d7aad501ce61646b76b4b511e558ac4eea9884d0), [`4f0b3c6`](https://github.com/mastra-ai/mastra/commit/4f0b3c66f196c06448487f680ccbb614d281e2f7), [`27b4040`](https://github.com/mastra-ai/mastra/commit/27b4040bfa1a95d92546f420a02a626b1419a1d6), [`c61fac3`](https://github.com/mastra-ai/mastra/commit/c61fac3add96f0dcce0208c07415279e2537eb62), [`6f14f70`](https://github.com/mastra-ai/mastra/commit/6f14f706ccaaf81b69544b6c1b75ab66a41e5317), [`69e0a87`](https://github.com/mastra-ai/mastra/commit/69e0a878896a2da9494945d86e056a5f8f05b851), [`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), [`3cf540b`](https://github.com/mastra-ai/mastra/commit/3cf540b9fbfea8f4fc8d3a2319a4e6c0b0cbfd52), [`352a5d6`](https://github.com/mastra-ai/mastra/commit/352a5d625cfe09849b21e8f52a24c9f0366759d5), [`1c6ce51`](https://github.com/mastra-ai/mastra/commit/1c6ce51f875915ab57fd36873623013699a2a65d), [`74c4f22`](https://github.com/mastra-ai/mastra/commit/74c4f22ed4c71e72598eacc346ba95cdbc00294f), [`3a76a80`](https://github.com/mastra-ai/mastra/commit/3a76a80284cb71a0faa975abb3d4b2a9631e60cd), [`898a972`](https://github.com/mastra-ai/mastra/commit/898a9727d286c2510d6b702dfd367e6aaf5c6b0f), [`0793497`](https://github.com/mastra-ai/mastra/commit/079349753620c40246ffd673e3f9d7d9820beff3), [`09e4bae`](https://github.com/mastra-ai/mastra/commit/09e4bae18dd5357d2ae078a4a95a2af32168ab08), [`026b848`](https://github.com/mastra-ai/mastra/commit/026b8483fbf5b6d977be8f7e6aac8d15c75558ac), [`2c212e7`](https://github.com/mastra-ai/mastra/commit/2c212e704c90e2db83d4109e62c03f0f6ebd2667), [`a97003a`](https://github.com/mastra-ai/mastra/commit/a97003aa1cf2f4022a41912324a1e77263b326b8), [`f9a2509`](https://github.com/mastra-ai/mastra/commit/f9a25093ea72d210a5e52cfcb3bcc8b5e02dc25c), [`66741d1`](https://github.com/mastra-ai/mastra/commit/66741d1a99c4f42cf23a16109939e8348ac6852e), [`ccc141e`](https://github.com/mastra-ai/mastra/commit/ccc141ed27da0abc3a3fc28e9e5128152e8e37f4), [`27c0009`](https://github.com/mastra-ai/mastra/commit/27c0009777a6073d7631b0eb7b481d94e165b5ca), [`01f8878`](https://github.com/mastra-ai/mastra/commit/01f88783de25e4de048c1c8aace43e26373c6ea5), [`dee388d`](https://github.com/mastra-ai/mastra/commit/dee388dde02f2e63c53385ae69252a47ab6825cc), [`610a70b`](https://github.com/mastra-ai/mastra/commit/610a70bdad282079f0c630e0d7bb284578f20151), [`5df9cce`](https://github.com/mastra-ai/mastra/commit/5df9cce1a753438413f64c11eeef8f845745c2a8), [`b7e17d3`](https://github.com/mastra-ai/mastra/commit/b7e17d3f5390bb5a71efc112204413656fcdc18d), [`4c77209`](https://github.com/mastra-ai/mastra/commit/4c77209e6c11678808b365d545845918c40045c8), [`a854ede`](https://github.com/mastra-ai/mastra/commit/a854ede62bf5ac0945a624ac48913dd69c73aabf), [`fe3b897`](https://github.com/mastra-ai/mastra/commit/fe3b897c2ccbcd2b10e81b099438c7337feddf89), [`c576fc0`](https://github.com/mastra-ai/mastra/commit/c576fc0b100b2085afded91a37c97a0ea0ec09c7), [`3defc80`](https://github.com/mastra-ai/mastra/commit/3defc80cf2b88a1b7fc1cc4ddcb91e982a614609), [`00123ba`](https://github.com/mastra-ai/mastra/commit/00123ba96dc9e5cd0b110420ebdba56d8f237b25), [`16153fe`](https://github.com/mastra-ai/mastra/commit/16153fe7eb13c99401f48e6ca32707c965ee28b9), [`9f4a683`](https://github.com/mastra-ai/mastra/commit/9f4a6833e88b52574665c028fd5508ad5c2f6004), [`bc94344`](https://github.com/mastra-ai/mastra/commit/bc943444a1342d8a662151b7bce1df7dae32f59c), [`4ca4306`](https://github.com/mastra-ai/mastra/commit/4ca430614daa5fa04730205a302a43bf4accfe9f), [`cccf9c8`](https://github.com/mastra-ai/mastra/commit/cccf9c8b2d2dfc1a5e63919395b83d78c89682a0), [`74e504a`](https://github.com/mastra-ai/mastra/commit/74e504a3b584eafd2f198001c6a113bbec589fd3), [`29c4309`](https://github.com/mastra-ai/mastra/commit/29c4309f818b24304c041bcb4a8f19b5f13f6b62), [`16785ce`](https://github.com/mastra-ai/mastra/commit/16785ced928f6f22638f4488cf8a125d99211799), [`57d157f`](https://github.com/mastra-ai/mastra/commit/57d157f0b163a95c3e6c9eae31bdb11d1bfc64f9), [`61a5705`](https://github.com/mastra-ai/mastra/commit/61a570551278b6743e64243b3ce7d73de915ca8a), [`903f67d`](https://github.com/mastra-ai/mastra/commit/903f67d184504a273893818c02b961f5423a79ad), [`3f3fc30`](https://github.com/mastra-ai/mastra/commit/3f3fc3096f24c4a26cffeecfe73085928f72aa63), [`d827d08`](https://github.com/mastra-ai/mastra/commit/d827d0808ffe1f3553a84e975806cc989b9735dd), [`e33fdbd`](https://github.com/mastra-ai/mastra/commit/e33fdbd07b33920d81e823122331b0c0bee0bb59), [`4524734`](https://github.com/mastra-ai/mastra/commit/45247343e384717a7c8404296275c56201d6470f), [`7a010c5`](https://github.com/mastra-ai/mastra/commit/7a010c56b846a313a49ae42fccd3d8de2b9f292d), [`2a90c55`](https://github.com/mastra-ai/mastra/commit/2a90c55a86a9210697d5adaab5ee94584b079adc), [`2a53598`](https://github.com/mastra-ai/mastra/commit/2a53598c6d8cfeb904a7fc74e57e526d751c8fa6), [`51acef9`](https://github.com/mastra-ai/mastra/commit/51acef95b5977826594fe3ee24475842bd3d5780), [`81b6a8f`](https://github.com/mastra-ai/mastra/commit/81b6a8ff79f49a7549d15d66624ac1a0b8f5f971), [`8538a0d`](https://github.com/mastra-ai/mastra/commit/8538a0d232619bf55dad7ddc2a8b0ca77c679a87), [`af56599`](https://github.com/mastra-ai/mastra/commit/af56599d73244ae3bf0d7bcade656410f8ded37b), [`d90ea65`](https://github.com/mastra-ai/mastra/commit/d90ea6536f7aa51c6545a4e9215b55858e98e16d), [`db70a48`](https://github.com/mastra-ai/mastra/commit/db70a48aeeeeb8e5f92007e8ede52c364ce15287), [`261473a`](https://github.com/mastra-ai/mastra/commit/261473ac637e633064a22076671e2e02b002214d), [`70b300e`](https://github.com/mastra-ai/mastra/commit/70b300ebc631dfc0aa14e61547fef7994adb4ea6), [`eb09742`](https://github.com/mastra-ai/mastra/commit/eb09742197f66c4c38154c3beec78313e69760b2), [`de8239b`](https://github.com/mastra-ai/mastra/commit/de8239bdcb1d8c0cfa06da21f1569912a66bbc8a), [`e4d366a`](https://github.com/mastra-ai/mastra/commit/e4d366aeb500371dd4210d6aa8361a4c21d87034), [`23c10a1`](https://github.com/mastra-ai/mastra/commit/23c10a1efdd9a693c405511ab2dc8a1236603162), [`b5e6cd7`](https://github.com/mastra-ai/mastra/commit/b5e6cd77fc8c8e64e0494c1d06cee3d84e795d1e), [`d171e55`](https://github.com/mastra-ai/mastra/commit/d171e559ead9f52ec728d424844c8f7b164c4510), [`f0fdc14`](https://github.com/mastra-ai/mastra/commit/f0fdc14ee233d619266b3d2bbdeea7d25cfc6d13), [`a4f010b`](https://github.com/mastra-ai/mastra/commit/a4f010b22e4355a5fdee70a1fe0f6e4a692cc29e), [`c7cd3c7`](https://github.com/mastra-ai/mastra/commit/c7cd3c7a187d7aaf79e2ca139de328bf609a14b4), [`db18bc9`](https://github.com/mastra-ai/mastra/commit/db18bc9c3825e2c1a0ad9a183cc9935f6691bfa1), [`96d35f6`](https://github.com/mastra-ai/mastra/commit/96d35f61376bc2b1bf148648a2c1985bd51bef55), [`68ec97d`](https://github.com/mastra-ai/mastra/commit/68ec97d4c07c6393fcf95c2481fc5d73da99f8c8), [`8dc7f55`](https://github.com/mastra-ai/mastra/commit/8dc7f55900395771da851dc7d78d53ae84fe34ec), [`cfabdd4`](https://github.com/mastra-ai/mastra/commit/cfabdd4aae7a726b706942d6836eeca110fb6267), [`9b37b56`](https://github.com/mastra-ai/mastra/commit/9b37b565e1f2a76c24f728945cc740c2b09be9da), [`01b20fe`](https://github.com/mastra-ai/mastra/commit/01b20fefb7c67c2b7d79417598ef4e60256d1225), [`dd4f34c`](https://github.com/mastra-ai/mastra/commit/dd4f34c78cbae24063463475b0619575c415f9b8), [`8379099`](https://github.com/mastra-ai/mastra/commit/8379099fc467af6bef54dd7f80c9bd75bf8bbddf), [`0dbf199`](https://github.com/mastra-ai/mastra/commit/0dbf199110f22192ce5c95b1c8148d4872b4d119), [`5cbe88a`](https://github.com/mastra-ai/mastra/commit/5cbe88aefbd9f933bca669fd371ea36bf939ac6d), [`41a23c3`](https://github.com/mastra-ai/mastra/commit/41a23c32f9877d71810f37e24930515df2ff7a0f), [`a1bd7b8`](https://github.com/mastra-ai/mastra/commit/a1bd7b8571db16b94eb01588f451a74758c96d65), [`d78b38d`](https://github.com/mastra-ai/mastra/commit/d78b38d898fce285260d3bbb4befade54331617f), [`a0a5b4b`](https://github.com/mastra-ai/mastra/commit/a0a5b4bbebe6c701ebbadf744873aa0d5ca01371), [`ce0a73a`](https://github.com/mastra-ai/mastra/commit/ce0a73abeaa75b10ca38f9e40a255a645d50ebfb), [`5d171ad`](https://github.com/mastra-ai/mastra/commit/5d171ad9ef340387276b77c2bb3e83e83332d729), [`0633100`](https://github.com/mastra-ai/mastra/commit/0633100a911ad22f5256471bdf753da21c104742), [`3759cb0`](https://github.com/mastra-ai/mastra/commit/3759cb064935b5f74c65ac2f52a1145f7352899d), [`929f69c`](https://github.com/mastra-ai/mastra/commit/929f69c3436fa20dd0f0e2f7ebe8270bd82a1529), [`c710c16`](https://github.com/mastra-ai/mastra/commit/c710c1652dccfdc4111c8412bca7a6bb1d48b441), [`10c2735`](https://github.com/mastra-ai/mastra/commit/10c27355edfdad1ee2b826b897df74125eb81fb8), [`354ad0b`](https://github.com/mastra-ai/mastra/commit/354ad0b7b1b8183ac567f236a884fc7ede6d7138), [`cfae733`](https://github.com/mastra-ai/mastra/commit/cfae73394f4920635e6c919c8e95ff9a0788e2e5), [`8c0ec25`](https://github.com/mastra-ai/mastra/commit/8c0ec25646c8a7df253ed1e5ff4863a0d3f1316c), [`e3dfda7`](https://github.com/mastra-ai/mastra/commit/e3dfda7b11bf3b8c4bb55637028befb5f387fc74), [`69ea758`](https://github.com/mastra-ai/mastra/commit/69ea758358edd7117f191c2e69c8bb5fc79e7a1a), [`73b0bb3`](https://github.com/mastra-ai/mastra/commit/73b0bb394dba7c9482eb467a97ab283dbc0ef4db), [`651e772`](https://github.com/mastra-ai/mastra/commit/651e772eb1475fb13e126d3fcc01751297a88214), [`a02e542`](https://github.com/mastra-ai/mastra/commit/a02e542d23179bad250b044b17ff023caa61739f), [`f03ae60`](https://github.com/mastra-ai/mastra/commit/f03ae60500fe350c9d828621006cdafe1975fdd8), [`6b3ba91`](https://github.com/mastra-ai/mastra/commit/6b3ba91494cc10394df96782f349a4f7b1e152cc), [`3bf08bf`](https://github.com/mastra-ai/mastra/commit/3bf08bf9c7c73818ac937b5a69d90e205653115f), [`a372c64`](https://github.com/mastra-ai/mastra/commit/a372c640ad1fd12e8f0613cebdc682fc156b4d95), [`993ad98`](https://github.com/mastra-ai/mastra/commit/993ad98d7ad3bebda9ecef5fec5c94349a0d04bc), [`676ccc7`](https://github.com/mastra-ai/mastra/commit/676ccc7fe92468d2d45d39c31a87825c89fd1ea0), [`3ff2c17`](https://github.com/mastra-ai/mastra/commit/3ff2c17a58e312fad5ea37377262c12d92ca0908), [`a0e437f`](https://github.com/mastra-ai/mastra/commit/a0e437fac561b28ee719e0302d72b2f9b4c138f0), [`d1e74a0`](https://github.com/mastra-ai/mastra/commit/d1e74a0a293866dece31022047f5dbab65a304d0), [`844ea5d`](https://github.com/mastra-ai/mastra/commit/844ea5dc0c248961e7bf73629ae7dcff503e853c), [`5627a8c`](https://github.com/mastra-ai/mastra/commit/5627a8c6dc11fe3711b3fa7a6ffd6eb34100a306), [`398fde3`](https://github.com/mastra-ai/mastra/commit/398fde3f39e707cda79372cdae8f9870e3b57c8d), [`c10398d`](https://github.com/mastra-ai/mastra/commit/c10398d5b88f1d4af556f4267ff06f1d11e89179), [`3ff45d1`](https://github.com/mastra-ai/mastra/commit/3ff45d10e0c80c5335a957ab563da72feb623520), [`f0f8f12`](https://github.com/mastra-ai/mastra/commit/f0f8f125c308f2d0fd36942ef652fd852df7522f), [`b61b93f`](https://github.com/mastra-ai/mastra/commit/b61b93f9e058b11dd2eec169853175d31dbdd567), [`bae33d9`](https://github.com/mastra-ai/mastra/commit/bae33d91a63fbb64d1e80519e1fc1acaed1e9013), [`39e7869`](https://github.com/mastra-ai/mastra/commit/39e7869bc7d0ee391077ce291474d8a84eedccff), [`0d7618b`](https://github.com/mastra-ai/mastra/commit/0d7618bc650bf2800934b243eca5648f4aeed9c2), [`7b763e5`](https://github.com/mastra-ai/mastra/commit/7b763e52fc3eaf699c2a99f2adf418dd46e4e9a5), [`251df45`](https://github.com/mastra-ai/mastra/commit/251df4531407dfa46d805feb40ff3fb49769f455), [`d36cfbb`](https://github.com/mastra-ai/mastra/commit/d36cfbbb6565ba5f827883cc9bb648eb14befdc1), [`f894d14`](https://github.com/mastra-ai/mastra/commit/f894d148946629af7b1f452d65a9cf864cec3765), [`8846867`](https://github.com/mastra-ai/mastra/commit/8846867ffa9a3746767618e314bebac08eb77d87), [`1924cf0`](https://github.com/mastra-ai/mastra/commit/1924cf06816e5e4d4d5333065ec0f4bb02a97799), [`c0b731f`](https://github.com/mastra-ai/mastra/commit/c0b731fb27d712dc8582e846df5c0332a6a0c5ba), [`5761926`](https://github.com/mastra-ai/mastra/commit/57619260c4a2cdd598763abbacd90de594c6bc76), [`c2b9547`](https://github.com/mastra-ai/mastra/commit/c2b9547bf435f56339f23625a743b2147ab1c7a6), [`3697853`](https://github.com/mastra-ai/mastra/commit/3697853deeb72017d90e0f38a93c1e29221aeca0), [`c900fdd`](https://github.com/mastra-ai/mastra/commit/c900fdd504c41348efdffb205cfe80d48c38fa33), [`9312dcd`](https://github.com/mastra-ai/mastra/commit/9312dcd1c6f5b321929e7d382e763d95fdc030f5), [`b2e45ec`](https://github.com/mastra-ai/mastra/commit/b2e45eca727a8db01a81ba93f1a5219c7183c839), [`5d7000f`](https://github.com/mastra-ai/mastra/commit/5d7000f757cd65ea9dc5b05e662fd83dfd44e932), [`43ca8f2`](https://github.com/mastra-ai/mastra/commit/43ca8f2c7334851cc7b4d3d2f037d8784bfbdd5f), [`d6d49f7`](https://github.com/mastra-ai/mastra/commit/d6d49f7b8714fa19a52ff9c7cf7fb7e73751901e), [`00c2387`](https://github.com/mastra-ai/mastra/commit/00c2387f5f04a365316f851e58666ac43f8c4edf), [`a534e95`](https://github.com/mastra-ai/mastra/commit/a534e9591f83b3cc1ebff99c67edf4cda7bf81d3), [`9d0e7fe`](https://github.com/mastra-ai/mastra/commit/9d0e7feca8ed98de959f53476ee1456073673348), [`53d927c`](https://github.com/mastra-ai/mastra/commit/53d927cc6f03bff33655b7e2b788da445a08731d), [`ad6250d`](https://github.com/mastra-ai/mastra/commit/ad6250dbdaad927e29f74a27b83f6c468b50a705), [`580b592`](https://github.com/mastra-ai/mastra/commit/580b5927afc82fe460dfdf9a38a902511b6b7e7f), [`604a79f`](https://github.com/mastra-ai/mastra/commit/604a79fecf276e26a54a3fe01bb94e65315d2e0e), [`42a42cf`](https://github.com/mastra-ai/mastra/commit/42a42cf3132b9786feecbb8c13c583dce5b0e198), [`3f2faf2`](https://github.com/mastra-ai/mastra/commit/3f2faf2e2d685d6c053cc5af1bf9fedf267b2ce5), [`22f64bc`](https://github.com/mastra-ai/mastra/commit/22f64bc1d37149480b58bf2fefe35b79a1e3e7d5), [`ff4d9a6`](https://github.com/mastra-ai/mastra/commit/ff4d9a6704fc87b31a380a76ed22736fdedbba5a), [`50fd320`](https://github.com/mastra-ai/mastra/commit/50fd320003d0d93831c230ef531bef41f5ba7b3a), [`847c212`](https://github.com/mastra-ai/mastra/commit/847c212caba7df0d6f2fc756b494ac3c75c3720d), [`69821ef`](https://github.com/mastra-ai/mastra/commit/69821ef806482e2c44e2197ac0b050c3fe3a5285), [`3a73998`](https://github.com/mastra-ai/mastra/commit/3a73998fa4ebeb7f3dc9301afe78095fc63e7999), [`ffa553a`](https://github.com/mastra-ai/mastra/commit/ffa553a3edc1bd17d73669fba66d6b6f4ac10897), [`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc), [`58e3931`](https://github.com/mastra-ai/mastra/commit/58e3931af9baa5921688566210f00fb0c10479fa), [`ae08bf0`](https://github.com/mastra-ai/mastra/commit/ae08bf0ebc6a4e4da992b711c4a389c32ba84cf4), [`0bed332`](https://github.com/mastra-ai/mastra/commit/0bed332843f627202c6520eaf671771313cd20f3), [`887f0b4`](https://github.com/mastra-ai/mastra/commit/887f0b4746cdbd7cb7d6b17ac9f82aeb58037ea5), [`2562143`](https://github.com/mastra-ai/mastra/commit/256214336b4faa78646c9c1776612393790d8784), [`b7959e6`](https://github.com/mastra-ai/mastra/commit/b7959e6e25a46b480f9ea2217c4c6c588c423791), [`a7ce182`](https://github.com/mastra-ai/mastra/commit/a7ce1822a8785ce45d62dd5c911af465e144f7d7), [`bda6370`](https://github.com/mastra-ai/mastra/commit/bda637009360649aaf579919e7873e33553c273e), [`d7acd8e`](https://github.com/mastra-ai/mastra/commit/d7acd8e987b5d7eff4fd98b0906c17c06a2e83d5), [`c7f1f7d`](https://github.com/mastra-ai/mastra/commit/c7f1f7d24f61f247f018cc2d1f33bf63212959a7), [`0bddc6d`](https://github.com/mastra-ai/mastra/commit/0bddc6d8dbd6f6008c0cba2e4960a2da75a55af1), [`bec5efd`](https://github.com/mastra-ai/mastra/commit/bec5efde96653ccae6604e68c696d1bc6c1a0bf5), [`5947fcd`](https://github.com/mastra-ai/mastra/commit/5947fcdd425531f29f9422026d466c2ee3113c93), [`4aa55b3`](https://github.com/mastra-ai/mastra/commit/4aa55b383cf06043943359ea316572fd969861a7), [`21735a7`](https://github.com/mastra-ai/mastra/commit/21735a7ef306963554a69a89b44f06c3bcd85141), [`735d8c1`](https://github.com/mastra-ai/mastra/commit/735d8c1c0d19fbc09e6f8b66cf41bc7655993838), [`7907fd1`](https://github.com/mastra-ai/mastra/commit/7907fd1c5059813b7b870b81ca71041dc807331b), [`1ed5716`](https://github.com/mastra-ai/mastra/commit/1ed5716830867b3774c4a1b43cc0d82935f32b96), [`acf322e`](https://github.com/mastra-ai/mastra/commit/acf322e0f1fd0189684cf529d91c694bea918a45), [`2ca67cc`](https://github.com/mastra-ai/mastra/commit/2ca67cc3bb1f6a617353fdcab197d9efebe60d6f), [`9eedf7d`](https://github.com/mastra-ai/mastra/commit/9eedf7de1d6e0022a2f4e5e9e6fe1ec468f9b43c), [`b339816`](https://github.com/mastra-ai/mastra/commit/b339816df0984d0243d944ac2655d6ba5f809cde), [`e16d553`](https://github.com/mastra-ai/mastra/commit/e16d55338403c7553531cc568125c63d53653dff), [`6f941c4`](https://github.com/mastra-ai/mastra/commit/6f941c438ca5f578619788acc7608fc2e23bd176), [`4186bdd`](https://github.com/mastra-ai/mastra/commit/4186bdd00731305726fa06adba0b076a1d50b49f), [`08bb631`](https://github.com/mastra-ai/mastra/commit/08bb631ae2b14684b2678e3549d0b399a6f0561e), [`c942802`](https://github.com/mastra-ai/mastra/commit/c942802a477a925b01859a7b8688d4355715caaa), [`4f0331a`](https://github.com/mastra-ai/mastra/commit/4f0331a79bf6eb5ee598a5086e55de4b5a0ada03), [`a0c8c1b`](https://github.com/mastra-ai/mastra/commit/a0c8c1b87d4fee252aebda73e8637fbe01d761c9), [`1d877b8`](https://github.com/mastra-ai/mastra/commit/1d877b8d7b536a251c1a7a18db7ddcf4f68d6f8b), [`cc34739`](https://github.com/mastra-ai/mastra/commit/cc34739c34b6266a91bea561119240a7acf47887), [`c218bd3`](https://github.com/mastra-ai/mastra/commit/c218bd3759e32423735b04843a09404572631014), [`9e67002`](https://github.com/mastra-ai/mastra/commit/9e67002b52c9be19936c420a489dbee9c5fd6a78), [`7aaf973`](https://github.com/mastra-ai/mastra/commit/7aaf973f83fbbe9521f1f9e7a4fd99b8de464617), [`2c4438b`](https://github.com/mastra-ai/mastra/commit/2c4438b87817ab7eed818c7990fef010475af1a3), [`35edc49`](https://github.com/mastra-ai/mastra/commit/35edc49ac0556db609189641d6341e76771b81fc), [`4d59f58`](https://github.com/mastra-ai/mastra/commit/4d59f58de2d90d6e2810a19d4518e38ddddb9038), [`ef11a61`](https://github.com/mastra-ai/mastra/commit/ef11a61920fa0ed08a5b7ceedd192875af119749), [`2b8893c`](https://github.com/mastra-ai/mastra/commit/2b8893cb108ef9acb72ee7835cd625610d2c1a4a), [`8e5c75b`](https://github.com/mastra-ai/mastra/commit/8e5c75bdb1d08a42d45309a4c72def4b6890230f), [`e1bb9c9`](https://github.com/mastra-ai/mastra/commit/e1bb9c94b4eb68b019ae275981be3feb769b5365), [`351a11f`](https://github.com/mastra-ai/mastra/commit/351a11fcaf2ed1008977fa9b9a489fc422e51cd4), [`8a73529`](https://github.com/mastra-ai/mastra/commit/8a73529ca01187f604b1f3019d0a725ac63ae55f), [`e59e0d3`](https://github.com/mastra-ai/mastra/commit/e59e0d32afb5fcf2c9f3c00c8f81f6c21d3a63fa), [`4fba91b`](https://github.com/mastra-ai/mastra/commit/4fba91bec7c95911dc28e369437596b152b04cd0), [`465ac05`](https://github.com/mastra-ai/mastra/commit/465ac0526a91d175542091c675181f1a96c98c46), [`fa8409b`](https://github.com/mastra-ai/mastra/commit/fa8409bc39cfd8ba6643b9db5269b90b22e2a2f7), [`8a000da`](https://github.com/mastra-ai/mastra/commit/8a000da0c09c679a2312f6b3aa05b2ca78ca7393), [`e7266a2`](https://github.com/mastra-ai/mastra/commit/e7266a278db02035c97a5e9cd9d1669a6b7a535d), [`173c535`](https://github.com/mastra-ai/mastra/commit/173c535c0645b0da404fe09f003778f0b0d4e019), [`12b0cc4`](https://github.com/mastra-ai/mastra/commit/12b0cc4077d886b1a552637dedb70a7ade93528c), [`3bf6c5f`](https://github.com/mastra-ai/mastra/commit/3bf6c5f104c25226cd84e0c77f9dec15f2cac2db)]:
967
+ - @mastra/core@1.0.0
968
+ - @mastra/schema-compat@1.0.0
969
+
970
+ ## 1.0.0-beta.27
971
+
972
+ ### Patch Changes
973
+
974
+ - Updated dependencies [[`50fd320`](https://github.com/mastra-ai/mastra/commit/50fd320003d0d93831c230ef531bef41f5ba7b3a)]:
975
+ - @mastra/core@1.0.0-beta.27
976
+
977
+ ## 1.0.0-beta.26
978
+
979
+ ### Patch Changes
980
+
981
+ - Improve type handling with Zod ([#12091](https://github.com/mastra-ai/mastra/pull/12091))
982
+
983
+ - Updated dependencies [[`026b848`](https://github.com/mastra-ai/mastra/commit/026b8483fbf5b6d977be8f7e6aac8d15c75558ac), [`ffa553a`](https://github.com/mastra-ai/mastra/commit/ffa553a3edc1bd17d73669fba66d6b6f4ac10897)]:
984
+ - @mastra/core@1.0.0-beta.26
985
+
986
+ ## 1.0.0-beta.25
987
+
988
+ ### Minor Changes
989
+
990
+ - Added human-in-the-loop (HITL) tool approval support for `generate()` method. ([#12056](https://github.com/mastra-ai/mastra/pull/12056))
991
+
992
+ **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.
993
+
994
+ Previously, tool approval with `requireToolApproval` only worked with `stream()`. Now you can use the same approval flow with `generate()` for non-streaming use cases.
995
+
996
+ **Using tool approval with generate()**
997
+
998
+ ```typescript
999
+ const output = await agent.generate('Find user John', {
1000
+ requireToolApproval: true,
1001
+ });
1002
+
1003
+ // Check if a tool is waiting for approval
1004
+ if (output.finishReason === 'suspended') {
1005
+ console.log('Tool requires approval:', output.suspendPayload.toolName);
1006
+
1007
+ // Approve the tool call
1008
+ const result = await agent.approveToolCallGenerate({
1009
+ runId: output.runId,
1010
+ toolCallId: output.suspendPayload.toolCallId,
1011
+ });
1012
+
1013
+ console.log(result.text);
1014
+ }
1015
+ ```
1016
+
1017
+ **Declining a tool call**
1018
+
1019
+ ```typescript
1020
+ if (output.finishReason === 'suspended') {
1021
+ const result = await agent.declineToolCallGenerate({
1022
+ runId: output.runId,
1023
+ toolCallId: output.suspendPayload.toolCallId,
1024
+ });
1025
+ }
1026
+ ```
1027
+
1028
+ **New methods added:**
1029
+ - `agent.approveToolCallGenerate({ runId, toolCallId })` - Approves a pending tool call and returns the complete result
1030
+ - `agent.declineToolCallGenerate({ runId, toolCallId })` - Declines a pending tool call and returns the complete result
1031
+
1032
+ **Server routes added:**
1033
+ - `POST /api/agents/:agentId/approve-tool-call-generate`
1034
+ - `POST /api/agents/:agentId/decline-tool-call-generate`
1035
+
1036
+ The playground UI now also supports tool approval when using generate mode.
1037
+
1038
+ - Added processor resource to the JavaScript client SDK. You can now list processors, get processor details, and execute processors via the client: ([#12059](https://github.com/mastra-ai/mastra/pull/12059))
1039
+
1040
+ ```typescript
1041
+ // List all processors
1042
+ const processors = await client.listProcessors();
1043
+
1044
+ // Get processor details
1045
+ const details = await client.getProcessor('my-processor').details();
1046
+
1047
+ // Execute a processor
1048
+ const result = await client.getProcessor('my-processor').execute({
1049
+ phase: 'input',
1050
+ messages: [{ role: 'user', content: { format: 2, parts: [{ type: 'text', text: 'Hello' }] } }],
1051
+ });
1052
+ ```
1053
+
1054
+ - Added new `listThreads` method for flexible thread filtering across all storage adapters. ([#11832](https://github.com/mastra-ai/mastra/pull/11832))
1055
+
1056
+ **New Features**
1057
+ - Filter threads by `resourceId`, `metadata`, or both (with AND logic for metadata key-value pairs)
1058
+ - All filter parameters are optional, allowing you to list all threads or filter as needed
1059
+ - Full pagination and sorting support
1060
+
1061
+ **Example Usage**
1062
+
1063
+ ```typescript
1064
+ // List all threads
1065
+ const allThreads = await memory.listThreads({});
1066
+
1067
+ // Filter by resourceId only
1068
+ const userThreads = await memory.listThreads({
1069
+ filter: { resourceId: 'user-123' },
1070
+ });
1071
+
1072
+ // Filter by metadata only
1073
+ const supportThreads = await memory.listThreads({
1074
+ filter: { metadata: { category: 'support' } },
1075
+ });
1076
+
1077
+ // Filter by both with pagination
1078
+ const filteredThreads = await memory.listThreads({
1079
+ filter: {
1080
+ resourceId: 'user-123',
1081
+ metadata: { priority: 'high', status: 'open' },
1082
+ },
1083
+ orderBy: { field: 'updatedAt', direction: 'DESC' },
1084
+ page: 0,
1085
+ perPage: 20,
1086
+ });
1087
+ ```
1088
+
1089
+ **Security Improvements**
1090
+ - Added validation to prevent SQL injection via malicious metadata keys
1091
+ - Added pagination parameter validation to prevent integer overflow attacks
1092
+
1093
+ ### Patch Changes
1094
+
1095
+ - Updated dependencies [[`ed3e3dd`](https://github.com/mastra-ai/mastra/commit/ed3e3ddec69d564fe2b125e083437f76331f1283), [`6833c69`](https://github.com/mastra-ai/mastra/commit/6833c69607418d257750bbcdd84638993d343539), [`47b1c16`](https://github.com/mastra-ai/mastra/commit/47b1c16a01c7ffb6765fe1e499b49092f8b7eba3), [`3a76a80`](https://github.com/mastra-ai/mastra/commit/3a76a80284cb71a0faa975abb3d4b2a9631e60cd), [`8538a0d`](https://github.com/mastra-ai/mastra/commit/8538a0d232619bf55dad7ddc2a8b0ca77c679a87), [`9312dcd`](https://github.com/mastra-ai/mastra/commit/9312dcd1c6f5b321929e7d382e763d95fdc030f5)]:
1096
+ - @mastra/core@1.0.0-beta.25
1097
+ - @mastra/schema-compat@1.0.0-beta.8
1098
+
1099
+ ## 1.0.0-beta.24
1100
+
1101
+ ### Major Changes
1102
+
1103
+ - **Fixed:** Align `Agent.network` with core and update `@mastra/react` network usage. ([#12015](https://github.com/mastra-ai/mastra/pull/12015))
1104
+
1105
+ ### Patch Changes
1106
+
1107
+ - Updated dependencies [[`1dbd8c7`](https://github.com/mastra-ai/mastra/commit/1dbd8c729fb6536ec52f00064d76b80253d346e9), [`c59e13c`](https://github.com/mastra-ai/mastra/commit/c59e13c7688284bd96b2baee3e314335003548de), [`f93e2f5`](https://github.com/mastra-ai/mastra/commit/f93e2f575e775e627e5c1927cefdd72db07858ed), [`f9a2509`](https://github.com/mastra-ai/mastra/commit/f9a25093ea72d210a5e52cfcb3bcc8b5e02dc25c), [`7a010c5`](https://github.com/mastra-ai/mastra/commit/7a010c56b846a313a49ae42fccd3d8de2b9f292d)]:
1108
+ - @mastra/core@1.0.0-beta.24
1109
+ - @mastra/schema-compat@1.0.0-beta.7
1110
+
1111
+ ## 1.0.0-beta.23
1112
+
1113
+ ### Patch Changes
1114
+
1115
+ - Updated dependencies [[`c8417b4`](https://github.com/mastra-ai/mastra/commit/c8417b41d9f3486854dc7842d977fbe5e2166264), [`dd4f34c`](https://github.com/mastra-ai/mastra/commit/dd4f34c78cbae24063463475b0619575c415f9b8)]:
1116
+ - @mastra/core@1.0.0-beta.23
1117
+
1118
+ ## 1.0.0-beta.22
1119
+
1120
+ ### Major Changes
1121
+
1122
+ - **Breaking Change**: Convert OUTPUT generic from `OutputSchema` constraint to plain generic ([#11741](https://github.com/mastra-ai/mastra/pull/11741))
1123
+
1124
+ This change removes the direct dependency on Zod typings in the public API by converting all `OUTPUT extends OutputSchema` generic constraints to plain `OUTPUT` generics throughout the codebase. This is preparation for moving to a standard schema approach.
1125
+ - All generic type parameters previously constrained to `OutputSchema` (e.g., `<OUTPUT extends OutputSchema = undefined>`) are now plain generics with defaults (e.g., `<OUTPUT = undefined>`)
1126
+ - Affects all public APIs including `Agent`, `MastraModelOutput`, `AgentExecutionOptions`, and stream/generate methods
1127
+ - `InferSchemaOutput<OUTPUT>` replaced with `OUTPUT` throughout
1128
+ - `PartialSchemaOutput<OUTPUT>` replaced with `Partial<OUTPUT>`
1129
+ - Schema fields now use `NonNullable<OutputSchema<OUTPUT>>` instead of `OUTPUT` directly
1130
+ - Added `FullOutput<OUTPUT>` type representing complete output with all fields
1131
+ - Added `AgentExecutionOptionsBase<OUTPUT>` type
1132
+ - `getFullOutput()` method now returns `Promise<FullOutput<OUTPUT>>`
1133
+ - `Agent` class now generic: `Agent<TAgentId, TTools, TOutput>`
1134
+ - `agent.generate()` and `agent.stream()` methods have updated signatures
1135
+ - `MastraModelOutput<OUTPUT>` no longer requires `OutputSchema` constraint
1136
+ - Network route and streaming APIs updated to use plain OUTPUT generic
1137
+
1138
+ **Before:**
1139
+
1140
+ ```typescript
1141
+ const output = await agent.generate<z.ZodType>({
1142
+ messages: [...],
1143
+ structuredOutput: { schema: mySchema }
1144
+ });
1145
+
1146
+ **After:**
1147
+ const output = await agent.generate<z.infer<typeof mySchema>>({
1148
+ messages: [...],
1149
+ structuredOutput: { schema: mySchema }
1150
+ });
1151
+ // Or rely on type inference:
1152
+ const output = await agent.generate({
1153
+ messages: [...],
1154
+ structuredOutput: { schema: mySchema }
1155
+ });
1156
+
1157
+ ```
1158
+
1159
+ ### Patch Changes
1160
+
1161
+ - 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))
1162
+
1163
+ ### Breaking Changes
1164
+
1165
+ #### `@mastra/core`
1166
+
1167
+ The `threadId` and `resourceId` options have been removed from `agent.generate()` and `agent.stream()`. Use the `memory` option instead:
1168
+
1169
+ ```ts
1170
+ // Before
1171
+ await agent.stream('Hello', {
1172
+ threadId: 'thread-123',
1173
+ resourceId: 'user-456',
1174
+ });
1175
+
1176
+ // After
1177
+ await agent.stream('Hello', {
1178
+ memory: {
1179
+ thread: 'thread-123',
1180
+ resource: 'user-456',
1181
+ },
1182
+ });
1183
+ ```
1184
+
1185
+ #### `@mastra/server`
1186
+
1187
+ 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.
1188
+
1189
+ #### `@mastra/react`
1190
+
1191
+ 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.
1192
+
1193
+ #### `@mastra/client-js`
1194
+
1195
+ When using the client SDK agent methods, use the `memory` option instead of `threadId`/`resourceId`:
1196
+
1197
+ ```ts
1198
+ const agent = client.getAgent('my-agent');
1199
+
1200
+ // Before
1201
+ await agent.generate({
1202
+ messages: [...],
1203
+ threadId: 'thread-123',
1204
+ resourceId: 'user-456',
1205
+ });
1206
+
1207
+ // After
1208
+ await agent.generate({
1209
+ messages: [...],
1210
+ memory: {
1211
+ thread: 'thread-123',
1212
+ resource: 'user-456',
1213
+ },
1214
+ });
1215
+ ```
1216
+
1217
+ - Add human-in-the-loop (HITL) support to agent networks ([#11678](https://github.com/mastra-ai/mastra/pull/11678))
1218
+ - Add suspend/resume capabilities to agent network
1219
+ - Enable auto-resume for suspended network execution via `autoResumeSuspendedTools`
1220
+
1221
+ `agent.resumeNetwork`, `agent.approveNetworkToolCall`, `agent.declineNetworkToolCall`
1222
+
1223
+ - Updated dependencies [[`ebae12a`](https://github.com/mastra-ai/mastra/commit/ebae12a2dd0212e75478981053b148a2c246962d), [`c61a0a5`](https://github.com/mastra-ai/mastra/commit/c61a0a5de4904c88fd8b3718bc26d1be1c2ec6e7), [`69136e7`](https://github.com/mastra-ai/mastra/commit/69136e748e32f57297728a4e0f9a75988462f1a7), [`449aed2`](https://github.com/mastra-ai/mastra/commit/449aed2ba9d507b75bf93d427646ea94f734dfd1), [`eb648a2`](https://github.com/mastra-ai/mastra/commit/eb648a2cc1728f7678768dd70cd77619b448dab9), [`0131105`](https://github.com/mastra-ai/mastra/commit/0131105532e83bdcbb73352fc7d0879eebf140dc), [`9d5059e`](https://github.com/mastra-ai/mastra/commit/9d5059eae810829935fb08e81a9bb7ecd5b144a7), [`ef756c6`](https://github.com/mastra-ai/mastra/commit/ef756c65f82d16531c43f49a27290a416611e526), [`b00ccd3`](https://github.com/mastra-ai/mastra/commit/b00ccd325ebd5d9e37e34dd0a105caae67eb568f), [`3bdfa75`](https://github.com/mastra-ai/mastra/commit/3bdfa7507a91db66f176ba8221aa28dd546e464a), [`e770de9`](https://github.com/mastra-ai/mastra/commit/e770de941a287a49b1964d44db5a5763d19890a6), [`52e2716`](https://github.com/mastra-ai/mastra/commit/52e2716b42df6eff443de72360ae83e86ec23993), [`27b4040`](https://github.com/mastra-ai/mastra/commit/27b4040bfa1a95d92546f420a02a626b1419a1d6), [`610a70b`](https://github.com/mastra-ai/mastra/commit/610a70bdad282079f0c630e0d7bb284578f20151), [`8dc7f55`](https://github.com/mastra-ai/mastra/commit/8dc7f55900395771da851dc7d78d53ae84fe34ec), [`8379099`](https://github.com/mastra-ai/mastra/commit/8379099fc467af6bef54dd7f80c9bd75bf8bbddf), [`8c0ec25`](https://github.com/mastra-ai/mastra/commit/8c0ec25646c8a7df253ed1e5ff4863a0d3f1316c), [`ff4d9a6`](https://github.com/mastra-ai/mastra/commit/ff4d9a6704fc87b31a380a76ed22736fdedbba5a), [`69821ef`](https://github.com/mastra-ai/mastra/commit/69821ef806482e2c44e2197ac0b050c3fe3a5285), [`1ed5716`](https://github.com/mastra-ai/mastra/commit/1ed5716830867b3774c4a1b43cc0d82935f32b96), [`4186bdd`](https://github.com/mastra-ai/mastra/commit/4186bdd00731305726fa06adba0b076a1d50b49f), [`7aaf973`](https://github.com/mastra-ai/mastra/commit/7aaf973f83fbbe9521f1f9e7a4fd99b8de464617)]:
1224
+ - @mastra/core@1.0.0-beta.22
1225
+
1226
+ ## 1.0.0-beta.21
1227
+
1228
+ ### Patch Changes
1229
+
1230
+ - Updated dependencies [[`08766f1`](https://github.com/mastra-ai/mastra/commit/08766f15e13ac0692fde2a8bd366c2e16e4321df), [`ae8baf7`](https://github.com/mastra-ai/mastra/commit/ae8baf7d8adcb0ff9dac11880400452bc49b33ff), [`cfabdd4`](https://github.com/mastra-ai/mastra/commit/cfabdd4aae7a726b706942d6836eeca110fb6267), [`3bf08bf`](https://github.com/mastra-ai/mastra/commit/3bf08bf9c7c73818ac937b5a69d90e205653115f), [`a0e437f`](https://github.com/mastra-ai/mastra/commit/a0e437fac561b28ee719e0302d72b2f9b4c138f0), [`bec5efd`](https://github.com/mastra-ai/mastra/commit/bec5efde96653ccae6604e68c696d1bc6c1a0bf5), [`9eedf7d`](https://github.com/mastra-ai/mastra/commit/9eedf7de1d6e0022a2f4e5e9e6fe1ec468f9b43c)]:
1231
+ - @mastra/core@1.0.0-beta.21
1232
+ - @mastra/schema-compat@1.0.0-beta.6
1233
+
1234
+ ## 1.0.0-beta.20
1235
+
1236
+ ### Minor Changes
1237
+
1238
+ - Unified `getWorkflowRunById` and `getWorkflowRunExecutionResult` into a single API that returns `WorkflowState` with both metadata and execution state. ([#11429](https://github.com/mastra-ai/mastra/pull/11429))
1239
+
1240
+ **What changed:**
1241
+ - `getWorkflowRunById` now returns a unified `WorkflowState` object containing metadata (runId, workflowName, resourceId, createdAt, updatedAt) along with processed execution state (status, result, error, payload, steps)
1242
+ - Added optional `fields` parameter to request only specific fields for better performance
1243
+ - Added optional `withNestedWorkflows` parameter to control nested workflow step inclusion
1244
+ - Removed `getWorkflowRunExecutionResult` - use `getWorkflowRunById` instead (breaking change)
1245
+ - Removed `/execution-result` API endpoints from server (breaking change)
1246
+ - Removed `runExecutionResult()` method from client SDK (breaking change)
1247
+ - Removed `GetWorkflowRunExecutionResultResponse` type from client SDK (breaking change)
1248
+
1249
+ **Before:**
1250
+
1251
+ ```typescript
1252
+ // Had to call two different methods for different data
1253
+ const run = await workflow.getWorkflowRunById(runId); // Returns raw WorkflowRun with snapshot
1254
+ const result = await workflow.getWorkflowRunExecutionResult(runId); // Returns processed execution state
1255
+ ```
1256
+
1257
+ **After:**
1258
+
1259
+ ```typescript
1260
+ // Single method returns everything
1261
+ const run = await workflow.getWorkflowRunById(runId);
1262
+ // Returns: { runId, workflowName, resourceId, createdAt, updatedAt, status, result, error, payload, steps }
1263
+
1264
+ // Request only specific fields for better performance (avoids expensive step fetching)
1265
+ const status = await workflow.getWorkflowRunById(runId, { fields: ['status'] });
1266
+
1267
+ // Skip nested workflow steps for faster response
1268
+ const run = await workflow.getWorkflowRunById(runId, { withNestedWorkflows: false });
1269
+ ```
1270
+
1271
+ **Why:** The previous API required calling two separate methods to get complete workflow run information. This unification simplifies the API surface and gives users control over performance - fetching all steps (especially nested workflows) can be expensive, so the `fields` and `withNestedWorkflows` options let users request only what they need.
1272
+
1273
+ ### Patch Changes
1274
+
1275
+ - Add embedded documentation support for Mastra packages ([#11472](https://github.com/mastra-ai/mastra/pull/11472))
1276
+
1277
+ Mastra packages now include embedded documentation in the published npm package under `dist/docs/`. This enables coding agents and AI assistants to understand and use the framework by reading documentation directly from `node_modules`.
1278
+
1279
+ Each package includes:
1280
+ - **SKILL.md** - Entry point explaining the package's purpose and capabilities
1281
+ - **SOURCE_MAP.json** - Machine-readable index mapping exports to types and implementation files
1282
+ - **Topic folders** - Conceptual documentation organized by feature area
1283
+
1284
+ Documentation is driven by the `packages` frontmatter field in MDX files, which maps docs to their corresponding packages. CI validation ensures all docs include this field.
1285
+
1286
+ - Remove `streamVNext`, `resumeStreamVNext`, and `observeStreamVNext` methods, call `stream`, `resumeStream` and `observeStream` directly ([#11499](https://github.com/mastra-ai/mastra/pull/11499))
1287
+
1288
+ ```diff
1289
+ + const run = await workflow.createRun({ runId: '123' });
1290
+ - const stream = await run.streamVNext({ inputData: { ... } });
1291
+ + const stream = await run.stream({ inputData: { ... } });
1292
+ ```
1293
+
1294
+ - Add initial state input to workflow form in studio ([#11560](https://github.com/mastra-ai/mastra/pull/11560))
1295
+
1296
+ - Adds thread cloning to create independent copies of conversations that can diverge. ([#11517](https://github.com/mastra-ai/mastra/pull/11517))
1297
+
1298
+ ```typescript
1299
+ // Clone a thread
1300
+ const { thread, clonedMessages } = await memory.cloneThread({
1301
+ sourceThreadId: 'thread-123',
1302
+ title: 'My Clone',
1303
+ options: {
1304
+ messageLimit: 10, // optional: only copy last N messages
1305
+ },
1306
+ });
1307
+
1308
+ // Check if a thread is a clone
1309
+ if (memory.isClone(thread)) {
1310
+ const source = await memory.getSourceThread(thread.id);
1311
+ }
1312
+
1313
+ // List all clones of a thread
1314
+ const clones = await memory.listClones('thread-123');
1315
+ ```
1316
+
1317
+ Includes:
1318
+ - Storage implementations for InMemory, PostgreSQL, LibSQL, Upstash
1319
+ - API endpoint: `POST /api/memory/threads/:threadId/clone`
1320
+ - Embeddings created for cloned messages (semantic recall)
1321
+ - Clone button in playground UI Memory tab
1322
+
1323
+ - Make agentId optional for memory read operations (getThread, listThreads, listMessages) ([#11540](https://github.com/mastra-ai/mastra/pull/11540))
1324
+
1325
+ When workflows use multiple agents sharing the same threadId/resourceId, users can now retrieve threads and messages without specifying an agentId. The server falls back to using storage directly when agentId is not provided.
1326
+
1327
+ - Updated dependencies [[`d2d3e22`](https://github.com/mastra-ai/mastra/commit/d2d3e22a419ee243f8812a84e3453dd44365ecb0), [`bc72b52`](https://github.com/mastra-ai/mastra/commit/bc72b529ee4478fe89ecd85a8be47ce0127b82a0), [`05b8bee`](https://github.com/mastra-ai/mastra/commit/05b8bee9e50e6c2a4a2bf210eca25ee212ca24fa), [`c042bd0`](https://github.com/mastra-ai/mastra/commit/c042bd0b743e0e86199d0cb83344ca7690e34a9c), [`940a2b2`](https://github.com/mastra-ai/mastra/commit/940a2b27480626ed7e74f55806dcd2181c1dd0c2), [`e0941c3`](https://github.com/mastra-ai/mastra/commit/e0941c3d7fc75695d5d258e7008fd5d6e650800c), [`0c0580a`](https://github.com/mastra-ai/mastra/commit/0c0580a42f697cd2a7d5973f25bfe7da9055038a), [`28f5f89`](https://github.com/mastra-ai/mastra/commit/28f5f89705f2409921e3c45178796c0e0d0bbb64), [`e601b27`](https://github.com/mastra-ai/mastra/commit/e601b272c70f3a5ecca610373aa6223012704892), [`3d3366f`](https://github.com/mastra-ai/mastra/commit/3d3366f31683e7137d126a3a57174a222c5801fb), [`5a4953f`](https://github.com/mastra-ai/mastra/commit/5a4953f7d25bb15ca31ed16038092a39cb3f98b3), [`eb9e522`](https://github.com/mastra-ai/mastra/commit/eb9e522ce3070a405e5b949b7bf5609ca51d7fe2), [`20e6f19`](https://github.com/mastra-ai/mastra/commit/20e6f1971d51d3ff6dd7accad8aaaae826d540ed), [`4f0b3c6`](https://github.com/mastra-ai/mastra/commit/4f0b3c66f196c06448487f680ccbb614d281e2f7), [`74c4f22`](https://github.com/mastra-ai/mastra/commit/74c4f22ed4c71e72598eacc346ba95cdbc00294f), [`81b6a8f`](https://github.com/mastra-ai/mastra/commit/81b6a8ff79f49a7549d15d66624ac1a0b8f5f971), [`e4d366a`](https://github.com/mastra-ai/mastra/commit/e4d366aeb500371dd4210d6aa8361a4c21d87034), [`a4f010b`](https://github.com/mastra-ai/mastra/commit/a4f010b22e4355a5fdee70a1fe0f6e4a692cc29e), [`73b0bb3`](https://github.com/mastra-ai/mastra/commit/73b0bb394dba7c9482eb467a97ab283dbc0ef4db), [`5627a8c`](https://github.com/mastra-ai/mastra/commit/5627a8c6dc11fe3711b3fa7a6ffd6eb34100a306), [`3ff45d1`](https://github.com/mastra-ai/mastra/commit/3ff45d10e0c80c5335a957ab563da72feb623520), [`251df45`](https://github.com/mastra-ai/mastra/commit/251df4531407dfa46d805feb40ff3fb49769f455), [`f894d14`](https://github.com/mastra-ai/mastra/commit/f894d148946629af7b1f452d65a9cf864cec3765), [`c2b9547`](https://github.com/mastra-ai/mastra/commit/c2b9547bf435f56339f23625a743b2147ab1c7a6), [`580b592`](https://github.com/mastra-ai/mastra/commit/580b5927afc82fe460dfdf9a38a902511b6b7e7f), [`58e3931`](https://github.com/mastra-ai/mastra/commit/58e3931af9baa5921688566210f00fb0c10479fa), [`08bb631`](https://github.com/mastra-ai/mastra/commit/08bb631ae2b14684b2678e3549d0b399a6f0561e), [`4fba91b`](https://github.com/mastra-ai/mastra/commit/4fba91bec7c95911dc28e369437596b152b04cd0), [`12b0cc4`](https://github.com/mastra-ai/mastra/commit/12b0cc4077d886b1a552637dedb70a7ade93528c)]:
1328
+ - @mastra/core@1.0.0-beta.20
1329
+
1330
+ ## 1.0.0-beta.19
1331
+
1332
+ ### Patch Changes
1333
+
1334
+ - Updated dependencies [[`e54953e`](https://github.com/mastra-ai/mastra/commit/e54953ed8ce1b28c0d62a19950163039af7834b4), [`7d56d92`](https://github.com/mastra-ai/mastra/commit/7d56d9213886e8353956d7d40df10045fd12b299), [`fdac646`](https://github.com/mastra-ai/mastra/commit/fdac646033a0930a1a4e00d13aa64c40bb7f1e02), [`d07b568`](https://github.com/mastra-ai/mastra/commit/d07b5687819ea8cb1dffa776d0c1765faf4aa1ae), [`70b300e`](https://github.com/mastra-ai/mastra/commit/70b300ebc631dfc0aa14e61547fef7994adb4ea6), [`68ec97d`](https://github.com/mastra-ai/mastra/commit/68ec97d4c07c6393fcf95c2481fc5d73da99f8c8), [`4aa55b3`](https://github.com/mastra-ai/mastra/commit/4aa55b383cf06043943359ea316572fd969861a7)]:
1335
+ - @mastra/core@1.0.0-beta.19
1336
+ - @mastra/schema-compat@1.0.0-beta.5
1337
+
1338
+ ## 1.0.0-beta.18
1339
+
1340
+ ### Patch Changes
1341
+
1342
+ - Updated dependencies [[`5947fcd`](https://github.com/mastra-ai/mastra/commit/5947fcdd425531f29f9422026d466c2ee3113c93)]:
1343
+ - @mastra/core@1.0.0-beta.18
1344
+
1345
+ ## 1.0.0-beta.17
1346
+
1347
+ ### Patch Changes
1348
+
1349
+ - Updated dependencies [[`b5dc973`](https://github.com/mastra-ai/mastra/commit/b5dc9733a5158850298dfb103acb3babdba8a318), [`af56599`](https://github.com/mastra-ai/mastra/commit/af56599d73244ae3bf0d7bcade656410f8ded37b)]:
1350
+ - @mastra/core@1.0.0-beta.17
1351
+ - @mastra/schema-compat@1.0.0-beta.4
1352
+
1353
+ ## 1.0.0-beta.16
1354
+
1355
+ ### Patch Changes
1356
+
1357
+ - Add `cancel()` method as an alias for `cancelRun()` in the Run class. The new method provides a more concise API while maintaining backward compatibility. Includes comprehensive documentation about abort signals and how steps can respond to cancellation. ([#11417](https://github.com/mastra-ai/mastra/pull/11417))
1358
+
1359
+ - Updated dependencies [[`3d93a15`](https://github.com/mastra-ai/mastra/commit/3d93a15796b158c617461c8b98bede476ebb43e2), [`efe406a`](https://github.com/mastra-ai/mastra/commit/efe406a1353c24993280ebc2ed61dd9f65b84b26), [`119e5c6`](https://github.com/mastra-ai/mastra/commit/119e5c65008f3e5cfca954eefc2eb85e3bf40da4), [`74e504a`](https://github.com/mastra-ai/mastra/commit/74e504a3b584eafd2f198001c6a113bbec589fd3), [`e33fdbd`](https://github.com/mastra-ai/mastra/commit/e33fdbd07b33920d81e823122331b0c0bee0bb59), [`929f69c`](https://github.com/mastra-ai/mastra/commit/929f69c3436fa20dd0f0e2f7ebe8270bd82a1529), [`8a73529`](https://github.com/mastra-ai/mastra/commit/8a73529ca01187f604b1f3019d0a725ac63ae55f)]:
1360
+ - @mastra/core@1.0.0-beta.16
1361
+
1362
+ ## 1.0.0-beta.15
1363
+
1364
+ ### Minor Changes
1365
+
1366
+ - Unified observability schema with entity-based span identification ([#11132](https://github.com/mastra-ai/mastra/pull/11132))
1367
+
1368
+ ## What changed
1369
+
1370
+ Spans now use a unified identification model with `entityId`, `entityType`, and `entityName` instead of separate `agentId`, `toolId`, `workflowId` fields.
1371
+
1372
+ **Before:**
1373
+
1374
+ ```typescript
1375
+ // Old span structure
1376
+ span.agentId; // 'my-agent'
1377
+ span.toolId; // undefined
1378
+ span.workflowId; // undefined
1379
+ ```
1380
+
1381
+ **After:**
1382
+
1383
+ ```typescript
1384
+ // New span structure
1385
+ span.entityType; // EntityType.AGENT
1386
+ span.entityId; // 'my-agent'
1387
+ span.entityName; // 'My Agent'
1388
+ ```
1389
+
1390
+ ## New `listTraces()` API
1391
+
1392
+ Query traces with filtering, pagination, and sorting:
1393
+
1394
+ ```typescript
1395
+ const { spans, pagination } = await storage.listTraces({
1396
+ filters: {
1397
+ entityType: EntityType.AGENT,
1398
+ entityId: 'my-agent',
1399
+ userId: 'user-123',
1400
+ environment: 'production',
1401
+ status: TraceStatus.SUCCESS,
1402
+ startedAt: { start: new Date('2024-01-01'), end: new Date('2024-01-31') },
1403
+ },
1404
+ pagination: { page: 0, perPage: 50 },
1405
+ orderBy: { field: 'startedAt', direction: 'DESC' },
1406
+ });
1407
+ ```
1408
+
1409
+ **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`.
1410
+
1411
+ ## New retrieval methods
1412
+ - `getSpan({ traceId, spanId })` - Get a single span
1413
+ - `getRootSpan({ traceId })` - Get the root span of a trace
1414
+ - `getTrace({ traceId })` - Get all spans for a trace
1415
+
1416
+ ## Backward compatibility
1417
+
1418
+ The legacy `getTraces()` method continues to work. When you pass `name: "agent run: my-agent"`, it automatically transforms to `entityId: "my-agent", entityType: AGENT`.
1419
+
1420
+ ## Migration
1421
+
1422
+ **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`.
1423
+
1424
+ **No action required:** Your existing code continues to work. Adopt the new fields and `listTraces()` API at your convenience.
1425
+
1426
+ ### Patch Changes
1427
+
1428
+ - Add debugger-like click-through UI to workflow graph ([#11350](https://github.com/mastra-ai/mastra/pull/11350))
1429
+
1430
+ - Add `getSystemPackages()` method to retrieve installed Mastra packages and their versions from the server ([#11211](https://github.com/mastra-ai/mastra/pull/11211))
1431
+
1432
+ - Fix error parsing json body for reset agent endpoint ([#11379](https://github.com/mastra-ai/mastra/pull/11379))
1433
+
1434
+ - Updated dependencies [[`33a4d2e`](https://github.com/mastra-ai/mastra/commit/33a4d2e4ed8af51f69256232f00c34d6b6b51d48), [`4aaa844`](https://github.com/mastra-ai/mastra/commit/4aaa844a4f19d054490f43638a990cc57bda8d2f), [`4a1a6cb`](https://github.com/mastra-ai/mastra/commit/4a1a6cb3facad54b2bb6780b00ce91d6de1edc08), [`31d13d5`](https://github.com/mastra-ai/mastra/commit/31d13d5fdc2e2380e2e3ee3ec9fb29d2a00f265d), [`4c62166`](https://github.com/mastra-ai/mastra/commit/4c621669f4a29b1f443eca3ba70b814afa286266), [`7bcbf10`](https://github.com/mastra-ai/mastra/commit/7bcbf10133516e03df964b941f9a34e9e4ab4177), [`4353600`](https://github.com/mastra-ai/mastra/commit/43536005a65988a8eede236f69122e7f5a284ba2), [`6986fb0`](https://github.com/mastra-ai/mastra/commit/6986fb064f5db6ecc24aa655e1d26529087b43b3), [`053e979`](https://github.com/mastra-ai/mastra/commit/053e9793b28e970086b0507f7f3b76ea32c1e838), [`e26dc9c`](https://github.com/mastra-ai/mastra/commit/e26dc9c3ccfec54ae3dc3e2b2589f741f9ae60a6), [`55edf73`](https://github.com/mastra-ai/mastra/commit/55edf7302149d6c964fbb7908b43babfc2b52145), [`27c0009`](https://github.com/mastra-ai/mastra/commit/27c0009777a6073d7631b0eb7b481d94e165b5ca), [`dee388d`](https://github.com/mastra-ai/mastra/commit/dee388dde02f2e63c53385ae69252a47ab6825cc), [`3f3fc30`](https://github.com/mastra-ai/mastra/commit/3f3fc3096f24c4a26cffeecfe73085928f72aa63), [`d90ea65`](https://github.com/mastra-ai/mastra/commit/d90ea6536f7aa51c6545a4e9215b55858e98e16d), [`d171e55`](https://github.com/mastra-ai/mastra/commit/d171e559ead9f52ec728d424844c8f7b164c4510), [`10c2735`](https://github.com/mastra-ai/mastra/commit/10c27355edfdad1ee2b826b897df74125eb81fb8), [`1924cf0`](https://github.com/mastra-ai/mastra/commit/1924cf06816e5e4d4d5333065ec0f4bb02a97799), [`b339816`](https://github.com/mastra-ai/mastra/commit/b339816df0984d0243d944ac2655d6ba5f809cde)]:
1435
+ - @mastra/core@1.0.0-beta.15
1436
+
1437
+ ## 1.0.0-beta.14
1438
+
1439
+ ### Patch Changes
1440
+
1441
+ - feat: Add field filtering and nested workflow control to workflow execution result endpoint ([#11246](https://github.com/mastra-ai/mastra/pull/11246))
1442
+
1443
+ Adds two optional query parameters to `/api/workflows/:workflowId/runs/:runId/execution-result` endpoint:
1444
+ - `fields`: Request only specific fields (e.g., `status`, `result`, `error`)
1445
+ - `withNestedWorkflows`: Control whether to fetch nested workflow data
1446
+
1447
+ This significantly reduces response payload size and improves response times for large workflows.
1448
+
1449
+ ## Server Endpoint Usage
1450
+
1451
+ ```http
1452
+ # Get only status (minimal payload - fastest)
1453
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status
1454
+
1455
+ # Get status and result
1456
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status,result
1457
+
1458
+ # Get all fields but without nested workflow data (faster)
1459
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?withNestedWorkflows=false
1460
+
1461
+ # Get only specific fields without nested workflow data
1462
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status,steps&withNestedWorkflows=false
1463
+
1464
+ # Get full data (default behavior)
1465
+ GET /api/workflows/:workflowId/runs/:runId/execution-result
1466
+ ```
1467
+
1468
+ ## Client SDK Usage
1469
+
1470
+ ```typescript
1471
+ import { MastraClient } from '@mastra/client-js';
1472
+
1473
+ const client = new MastraClient({ baseUrl: 'http://localhost:4111' });
1474
+ const workflow = client.getWorkflow('myWorkflow');
1475
+
1476
+ // Get only status (minimal payload - fastest)
1477
+ const statusOnly = await workflow.runExecutionResult(runId, {
1478
+ fields: ['status'],
1479
+ });
1480
+ console.log(statusOnly.status); // 'success' | 'failed' | 'running' | etc.
1481
+
1482
+ // Get status and result
1483
+ const statusAndResult = await workflow.runExecutionResult(runId, {
1484
+ fields: ['status', 'result'],
1485
+ });
1486
+
1487
+ // Get all fields but without nested workflow data (faster)
1488
+ const resultWithoutNested = await workflow.runExecutionResult(runId, {
1489
+ withNestedWorkflows: false,
1490
+ });
1491
+
1492
+ // Get specific fields without nested workflow data
1493
+ const optimized = await workflow.runExecutionResult(runId, {
1494
+ fields: ['status', 'steps'],
1495
+ withNestedWorkflows: false,
1496
+ });
1497
+
1498
+ // Get full execution result (default behavior)
1499
+ const fullResult = await workflow.runExecutionResult(runId);
1500
+ ```
1501
+
1502
+ ## Core API Changes
1503
+
1504
+ The `Workflow.getWorkflowRunExecutionResult` method now accepts an options object:
1505
+
1506
+ ```typescript
1507
+ await workflow.getWorkflowRunExecutionResult(runId, {
1508
+ withNestedWorkflows: false, // default: true, set to false to skip nested workflow data
1509
+ fields: ['status', 'result'], // optional field filtering
1510
+ });
1511
+ ```
1512
+
1513
+ ## Inngest Compatibility
1514
+
1515
+ The `@mastra/inngest` package has been updated to use the new options object API. This is a non-breaking internal change - no action required from inngest workflow users.
1516
+
1517
+ ## Performance Impact
1518
+
1519
+ For workflows with large step outputs:
1520
+ - Requesting only `status`: ~99% reduction in payload size
1521
+ - Requesting `status,result,error`: ~95% reduction in payload size
1522
+ - Using `withNestedWorkflows=false`: Avoids expensive nested workflow data fetching
1523
+ - Combining both: Maximum performance optimization
1524
+
1525
+ - Fix delayed promises rejecting when stream suspends on tool-call-approval ([#11278](https://github.com/mastra-ai/mastra/pull/11278))
1526
+
1527
+ When a stream ends in suspended state (e.g., requiring tool approval), the delayed promises like `toolResults`, `toolCalls`, `text`, etc. now resolve with partial results instead of rejecting with an error. This allows consumers to access data that was produced before the suspension.
1528
+
1529
+ Also improves generic type inference for `LLMStepResult` and related types throughout the streaming infrastructure.
1530
+
1531
+ - 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)]:
1532
+ - @mastra/core@1.0.0-beta.14
1533
+
1534
+ ## 1.0.0-beta.13
1535
+
1536
+ ### Patch Changes
1537
+
1538
+ - Updated dependencies [[`919a22b`](https://github.com/mastra-ai/mastra/commit/919a22b25876f9ed5891efe5facbe682c30ff497)]:
1539
+ - @mastra/core@1.0.0-beta.13
1540
+
1541
+ ## 1.0.0-beta.12
1542
+
1543
+ ### Patch Changes
1544
+
1545
+ - Embed AI types to fix peerdeps mismatches ([`9650cce`](https://github.com/mastra-ai/mastra/commit/9650cce52a1d917ff9114653398e2a0f5c3ba808))
1546
+
1547
+ - Add resourceId to workflow routes ([#11166](https://github.com/mastra-ai/mastra/pull/11166))
1548
+
1549
+ - Add `Run` instance to client-js. `workflow.createRun` returns the `Run` instance which can be used for the different run methods. ([#11207](https://github.com/mastra-ai/mastra/pull/11207))
1550
+ With this change, run methods cannot be called directly on workflow instance anymore
1551
+
1552
+ ```diff
1553
+ - const result = await workflow.stream({ runId: '123', inputData: { ... } });
1554
+ + const run = await workflow.createRun({ runId: '123' });
1555
+ + const stream = await run.stream({ inputData: { ... } });
1556
+ ```
1557
+
1558
+ - Deserialize workflow errors on the client side ([#10992](https://github.com/mastra-ai/mastra/pull/10992))
1559
+
1560
+ When workflows fail, the server sends error data as JSON over HTTP. This change deserializes those errors back to proper `Error` instances on the client.
1561
+
1562
+ **Before:**
1563
+
1564
+ ```typescript
1565
+ const result = await workflow.startAsync({ input });
1566
+ if (result.status === 'failed') {
1567
+ // result.error was a plain object, couldn't use instanceof
1568
+ console.log(result.error.message); // TypeScript error
1569
+ }
1570
+ ```
1571
+
1572
+ **After:**
1573
+
1574
+ ```typescript
1575
+ const result = await workflow.startAsync({ input });
1576
+ if (result.status === 'failed') {
1577
+ // result.error is now a proper Error instance
1578
+ if (result.error instanceof MyCustomError) {
1579
+ console.log(result.error.statusCode); // Works!
1580
+ }
1581
+ }
1582
+ ```
1583
+
1584
+ This enables proper error handling and type checking in client applications, allowing developers to implement error-specific recovery logic based on custom error types and properties.
1585
+
1586
+ Features:
1587
+ - `instanceof Error` checks
1588
+ - Access to `error.message`, `error.name`, `error.stack`
1589
+ - Preservation of custom error properties (e.g., `statusCode`, `responseHeaders`)
1590
+ - Nested error tracking via `error.cause`
1591
+
1592
+ Affected methods:
1593
+ - `startAsync()`
1594
+ - `resumeAsync()`
1595
+ - `restartAsync()`
1596
+ - `timeTravelAsync()`
1597
+
1598
+ - Add missing status parameter to workflow.runs() method ([#11095](https://github.com/mastra-ai/mastra/pull/11095))
1599
+
1600
+ The `status` parameter was supported by the server API but was missing from the TypeScript types in @mastra/client-js.
1601
+
1602
+ Now you can filter workflow runs by status:
1603
+
1604
+ ```typescript
1605
+ // Get only running workflows
1606
+ const runningRuns = await workflow.runs({ status: 'running' });
1607
+
1608
+ // Get completed workflows
1609
+ const completedRuns = await workflow.runs({ status: 'success' });
1610
+ ```
1611
+
1612
+ - 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)]:
1613
+ - @mastra/core@1.0.0-beta.12
1614
+ - @mastra/schema-compat@1.0.0-beta.3
1615
+
1616
+ ## 1.0.0-beta.11
1617
+
1618
+ ### Patch Changes
1619
+
1620
+ - 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))
1621
+
1622
+ When a workflow contains an agent step that triggers a tripwire, the workflow returns with `status: 'tripwire'` and includes tripwire details:
1623
+
1624
+ ```typescript showLineNumbers copy
1625
+ const run = await workflow.createRun();
1626
+ const result = await run.start({ inputData: { message: 'Hello' } });
1627
+
1628
+ if (result.status === 'tripwire') {
1629
+ console.log('Workflow terminated by tripwire:', result.tripwire?.reason);
1630
+ console.log('Processor ID:', result.tripwire?.processorId);
1631
+ console.log('Retry requested:', result.tripwire?.retry);
1632
+ }
1633
+ ```
1634
+
1635
+ Adds new UI state for tripwire in agent chat and workflow UI.
1636
+
1637
+ 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).
1638
+
1639
+ - 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)]:
1640
+ - @mastra/core@1.0.0-beta.11
1641
+
1642
+ ## 1.0.0-beta.10
1643
+
1644
+ ### Patch Changes
1645
+
1646
+ - Add delete workflow run API ([#10991](https://github.com/mastra-ai/mastra/pull/10991))
1647
+
1648
+ ```typescript
1649
+ await workflow.deleteWorkflowRunById(runId);
1650
+ ```
1651
+
1652
+ - Updated dependencies [[`edb07e4`](https://github.com/mastra-ai/mastra/commit/edb07e49283e0c28bd094a60e03439bf6ecf0221), [`b7e17d3`](https://github.com/mastra-ai/mastra/commit/b7e17d3f5390bb5a71efc112204413656fcdc18d), [`261473a`](https://github.com/mastra-ai/mastra/commit/261473ac637e633064a22076671e2e02b002214d), [`5d7000f`](https://github.com/mastra-ai/mastra/commit/5d7000f757cd65ea9dc5b05e662fd83dfd44e932), [`4f0331a`](https://github.com/mastra-ai/mastra/commit/4f0331a79bf6eb5ee598a5086e55de4b5a0ada03), [`8a000da`](https://github.com/mastra-ai/mastra/commit/8a000da0c09c679a2312f6b3aa05b2ca78ca7393)]:
1653
+ - @mastra/core@1.0.0-beta.10
1654
+
3
1655
  ## 1.0.0-beta.9
4
1656
 
5
1657
  ### Patch Changes