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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +1638 -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,1643 @@
1
1
  # @mastra/client-js
2
2
 
3
+ ## 1.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - Moving scorers under the eval domain, api method consistency, prebuilt evals, scorers require ids. ([#9589](https://github.com/mastra-ai/mastra/pull/9589))
8
+
9
+ - 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))
10
+
11
+ - Remove `getMessagesPaginated()` and add `perPage: false` support ([#9670](https://github.com/mastra-ai/mastra/pull/9670))
12
+
13
+ Removes deprecated `getMessagesPaginated()` method. The `listMessages()` API and score handlers now support `perPage: false` to fetch all records without pagination limits.
14
+
15
+ **Storage changes:**
16
+ - `StoragePagination.perPage` type changed from `number` to `number | false`
17
+ - All storage implementations support `perPage: false`:
18
+ - Memory: `listMessages()`
19
+ - Scores: `listScoresBySpan()`, `listScoresByRunId()`, `listScoresByExecutionId()`
20
+ - HTTP query parser accepts `"false"` string (e.g., `?perPage=false`)
21
+
22
+ **Memory changes:**
23
+ - `memory.query()` parameter type changed from `StorageGetMessagesArg` to `StorageListMessagesInput`
24
+ - Uses flat parameters (`page`, `perPage`, `include`, `filter`, `vectorSearchString`) instead of `selectBy` object
25
+
26
+ **Stricter validation:**
27
+ - `listMessages()` requires non-empty, non-whitespace `threadId` (throws error instead of returning empty results)
28
+
29
+ **Migration:**
30
+
31
+ ```typescript
32
+ // Storage/Memory: Replace getMessagesPaginated with listMessages
33
+ - storage.getMessagesPaginated({ threadId, selectBy: { pagination: { page: 0, perPage: 20 } } })
34
+ + storage.listMessages({ threadId, page: 0, perPage: 20 })
35
+ + storage.listMessages({ threadId, page: 0, perPage: false }) // Fetch all
36
+
37
+ // Memory: Replace selectBy with flat parameters
38
+ - memory.query({ threadId, selectBy: { last: 20, include: [...] } })
39
+ + memory.query({ threadId, perPage: 20, include: [...] })
40
+
41
+ // Client SDK
42
+ - thread.getMessagesPaginated({ selectBy: { pagination: { page: 0 } } })
43
+ + thread.listMessages({ page: 0, perPage: 20 })
44
+ ```
45
+
46
+ - **Removed `storage.getMessages()`** ([#9695](https://github.com/mastra-ai/mastra/pull/9695))
47
+
48
+ The `getMessages()` method has been removed from all storage implementations. Use `listMessages()` instead, which provides pagination support.
49
+
50
+ **Migration:**
51
+
52
+ ```typescript
53
+ // Before
54
+ const messages = await storage.getMessages({ threadId: 'thread-1' });
55
+
56
+ // After
57
+ const result = await storage.listMessages({
58
+ threadId: 'thread-1',
59
+ page: 0,
60
+ perPage: 50,
61
+ });
62
+ const messages = result.messages; // Access messages array
63
+ console.log(result.total); // Total count
64
+ console.log(result.hasMore); // Whether more pages exist
65
+ ```
66
+
67
+ **Message ordering default**
68
+
69
+ `listMessages()` defaults to ASC (oldest first) ordering by `createdAt`, matching the previous `getMessages()` behavior.
70
+
71
+ **To use DESC ordering (newest first):**
72
+
73
+ ```typescript
74
+ const result = await storage.listMessages({
75
+ threadId: 'thread-1',
76
+ orderBy: { field: 'createdAt', direction: 'DESC' },
77
+ });
78
+ ```
79
+
80
+ **Renamed `client.getThreadMessages()` → `client.listThreadMessages()`**
81
+
82
+ **Migration:**
83
+
84
+ ```typescript
85
+ // Before
86
+ const response = await client.getThreadMessages(threadId, { agentId });
87
+
88
+ // After
89
+ const response = await client.listThreadMessages(threadId, { agentId });
90
+ ```
91
+
92
+ The response format remains the same.
93
+
94
+ **Removed `StorageGetMessagesArg` type**
95
+
96
+ Use `StorageListMessagesInput` instead:
97
+
98
+ ```typescript
99
+ // Before
100
+ import type { StorageGetMessagesArg } from '@mastra/core';
101
+
102
+ // After
103
+ import type { StorageListMessagesInput } from '@mastra/core';
104
+ ```
105
+
106
+ - Bump minimum required Node.js version to 22.13.0 ([#9706](https://github.com/mastra-ai/mastra/pull/9706))
107
+
108
+ - 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))
109
+
110
+ - **Fixed:** Align `Agent.network` with core and update `@mastra/react` network usage. ([#12015](https://github.com/mastra-ai/mastra/pull/12015))
111
+
112
+ - Rename RuntimeContext to RequestContext ([#9511](https://github.com/mastra-ai/mastra/pull/9511))
113
+
114
+ - 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))
115
+
116
+ - **Breaking Change**: Convert OUTPUT generic from `OutputSchema` constraint to plain generic ([#11741](https://github.com/mastra-ai/mastra/pull/11741))
117
+
118
+ 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.
119
+ - All generic type parameters previously constrained to `OutputSchema` (e.g., `<OUTPUT extends OutputSchema = undefined>`) are now plain generics with defaults (e.g., `<OUTPUT = undefined>`)
120
+ - Affects all public APIs including `Agent`, `MastraModelOutput`, `AgentExecutionOptions`, and stream/generate methods
121
+ - `InferSchemaOutput<OUTPUT>` replaced with `OUTPUT` throughout
122
+ - `PartialSchemaOutput<OUTPUT>` replaced with `Partial<OUTPUT>`
123
+ - Schema fields now use `NonNullable<OutputSchema<OUTPUT>>` instead of `OUTPUT` directly
124
+ - Added `FullOutput<OUTPUT>` type representing complete output with all fields
125
+ - Added `AgentExecutionOptionsBase<OUTPUT>` type
126
+ - `getFullOutput()` method now returns `Promise<FullOutput<OUTPUT>>`
127
+ - `Agent` class now generic: `Agent<TAgentId, TTools, TOutput>`
128
+ - `agent.generate()` and `agent.stream()` methods have updated signatures
129
+ - `MastraModelOutput<OUTPUT>` no longer requires `OutputSchema` constraint
130
+ - Network route and streaming APIs updated to use plain OUTPUT generic
131
+
132
+ **Before:**
133
+
134
+ ```typescript
135
+ const output = await agent.generate<z.ZodType>([...], {
136
+ structuredOutput: { schema: mySchema }
137
+ });
138
+
139
+ **After:**
140
+ const output = await agent.generate<z.infer<typeof mySchema>>([...], {
141
+ structuredOutput: { schema: mySchema }
142
+ });
143
+ // Or rely on type inference:
144
+ const output = await agent.generate([...], {
145
+ structuredOutput: { schema: mySchema }
146
+ });
147
+
148
+ ```
149
+
150
+ - Remove deprecated methods from client-js ([#9480](https://github.com/mastra-ai/mastra/pull/9480))
151
+
152
+ - Renamed a bunch of observability/tracing-related things to drop the AI prefix. ([#9744](https://github.com/mastra-ai/mastra/pull/9744))
153
+
154
+ - **Breaking Change**: Remove legacy v1 watch events and consolidate on v2 implementation. ([#9252](https://github.com/mastra-ai/mastra/pull/9252))
155
+
156
+ This change simplifies the workflow watching API by removing the legacy v1 event system and promoting v2 as the standard (renamed to just `watch`).
157
+
158
+ **What's Changed**
159
+ - Removed legacy v1 watch event handlers and types
160
+ - Renamed `watch-v2` to `watch` throughout the codebase
161
+ - Removed `.watch()` method from client-js SDK (`Workflow` and `AgentBuilder` classes)
162
+ - Removed `/watch` HTTP endpoints from server and deployer
163
+ - Removed `WorkflowWatchResult` and v1 `WatchEvent` types
164
+
165
+ - Pagination APIs now use `page`/`perPage` instead of `offset`/`limit` ([#9592](https://github.com/mastra-ai/mastra/pull/9592))
166
+
167
+ 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.
168
+
169
+ **Affected APIs:**
170
+ - `Memory.listThreadsByResourceId()`
171
+ - `Memory.listMessages()`
172
+ - `Storage.listWorkflowRuns()`
173
+
174
+ **Migration:**
175
+
176
+ ```typescript
177
+ // Before
178
+ await memory.listThreadsByResourceId({
179
+ resourceId: 'user-123',
180
+ offset: 20,
181
+ limit: 10,
182
+ });
183
+
184
+ // After
185
+ await memory.listThreadsByResourceId({
186
+ resourceId: 'user-123',
187
+ page: 2, // page = Math.floor(offset / limit)
188
+ perPage: 10,
189
+ });
190
+
191
+ // Before
192
+ await memory.listMessages({
193
+ threadId: 'thread-456',
194
+ offset: 20,
195
+ limit: 10,
196
+ });
197
+
198
+ // After
199
+ await memory.listMessages({
200
+ threadId: 'thread-456',
201
+ page: 2,
202
+ perPage: 10,
203
+ });
204
+
205
+ // Before
206
+ await storage.listWorkflowRuns({
207
+ workflowName: 'my-workflow',
208
+ offset: 20,
209
+ limit: 10,
210
+ });
211
+
212
+ // After
213
+ await storage.listWorkflowRuns({
214
+ workflowName: 'my-workflow',
215
+ page: 2,
216
+ perPage: 10,
217
+ });
218
+ ```
219
+
220
+ **Additional improvements:**
221
+ - Added validation for negative `page` values in all storage implementations
222
+ - Improved `perPage` validation to handle edge cases (negative values, `0`, `false`)
223
+ - Added reusable query parser utilities for consistent validation in handlers
224
+
225
+ - ```ts ([#9709](https://github.com/mastra-ai/mastra/pull/9709))
226
+ import { Mastra } from '@mastra/core';
227
+ import { Observability } from '@mastra/observability'; // Explicit import
228
+
229
+ const mastra = new Mastra({
230
+ ...other_config,
231
+ observability: new Observability({
232
+ default: { enabled: true },
233
+ }), // Instance
234
+ });
235
+ ```
236
+
237
+ Instead of:
238
+
239
+ ```ts
240
+ import { Mastra } from '@mastra/core';
241
+ import '@mastra/observability/init'; // Explicit import
242
+
243
+ const mastra = new Mastra({
244
+ ...other_config,
245
+ observability: {
246
+ default: { enabled: true },
247
+ },
248
+ });
249
+ ```
250
+
251
+ Also renamed a bunch of:
252
+ - `Tracing` things to `Observability` things.
253
+ - `AI-` things to just things.
254
+
255
+ - Changing getAgents -> listAgents, getTools -> listTools, getWorkflows -> listWorkflows ([#9495](https://github.com/mastra-ai/mastra/pull/9495))
256
+
257
+ - Removed old tracing code based on OpenTelemetry ([#9237](https://github.com/mastra-ai/mastra/pull/9237))
258
+
259
+ - Mark as stable ([`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc))
260
+
261
+ - Renamed `MastraMessageV2` to `MastraDBMessage` ([#9255](https://github.com/mastra-ai/mastra/pull/9255))
262
+ 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
263
+
264
+ - moved ai-tracing code into @mastra/observability ([#9661](https://github.com/mastra-ai/mastra/pull/9661))
265
+
266
+ - Remove legacy evals from Mastra ([#9491](https://github.com/mastra-ai/mastra/pull/9491))
267
+
268
+ ### Minor Changes
269
+
270
+ - 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))
271
+
272
+ You can now pass a custom fetch function when creating a MastraClient:
273
+
274
+ ```typescript
275
+ import { MastraClient } from '@mastra/client-js';
276
+
277
+ // Before: Only global fetch was available
278
+ const client = new MastraClient({
279
+ baseUrl: 'http://your-api-url',
280
+ });
281
+
282
+ // After: Custom fetch can be passed
283
+ const client = new MastraClient({
284
+ baseUrl: 'http://your-api-url',
285
+ fetch: customFetch, // Your custom fetch implementation
286
+ });
287
+ ```
288
+
289
+ If no custom fetch is provided, it falls back to the global fetch function, maintaining backward compatibility.
290
+
291
+ Fixes #10673
292
+
293
+ - Added human-in-the-loop (HITL) tool approval support for `generate()` method. ([#12056](https://github.com/mastra-ai/mastra/pull/12056))
294
+
295
+ **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.
296
+
297
+ Previously, tool approval with `requireToolApproval` only worked with `stream()`. Now you can use the same approval flow with `generate()` for non-streaming use cases.
298
+
299
+ **Using tool approval with generate()**
300
+
301
+ ```typescript
302
+ const output = await agent.generate('Find user John', {
303
+ requireToolApproval: true,
304
+ });
305
+
306
+ // Check if a tool is waiting for approval
307
+ if (output.finishReason === 'suspended') {
308
+ console.log('Tool requires approval:', output.suspendPayload.toolName);
309
+
310
+ // Approve the tool call
311
+ const result = await agent.approveToolCallGenerate({
312
+ runId: output.runId,
313
+ toolCallId: output.suspendPayload.toolCallId,
314
+ });
315
+
316
+ console.log(result.text);
317
+ }
318
+ ```
319
+
320
+ **Declining a tool call**
321
+
322
+ ```typescript
323
+ if (output.finishReason === 'suspended') {
324
+ const result = await agent.declineToolCallGenerate({
325
+ runId: output.runId,
326
+ toolCallId: output.suspendPayload.toolCallId,
327
+ });
328
+ }
329
+ ```
330
+
331
+ **New methods added:**
332
+ - `agent.approveToolCallGenerate({ runId, toolCallId })` - Approves a pending tool call and returns the complete result
333
+ - `agent.declineToolCallGenerate({ runId, toolCallId })` - Declines a pending tool call and returns the complete result
334
+
335
+ **Server routes added:**
336
+ - `POST /api/agents/:agentId/approve-tool-call-generate`
337
+ - `POST /api/agents/:agentId/decline-tool-call-generate`
338
+
339
+ The playground UI now also supports tool approval when using generate mode.
340
+
341
+ - Add observeStream support for agent-builder template installation ([#9372](https://github.com/mastra-ai/mastra/pull/9372))
342
+ - Add observeStream, observeStreamVNext, observeStreamLegacy, and resumeStream methods to agent-builder client SDK
343
+ - Add corresponding server handlers and deployer routes for observe streaming
344
+ - Add tracingOptions parameter to existing agent-builder handlers for parity with workflows
345
+ - Update template installation processor to support both legacy and VNext streaming event formats
346
+
347
+ - 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))
348
+
349
+ ```typescript
350
+ // List all processors
351
+ const processors = await client.listProcessors();
352
+
353
+ // Get processor details
354
+ const details = await client.getProcessor('my-processor').details();
355
+
356
+ // Execute a processor
357
+ const result = await client.getProcessor('my-processor').execute({
358
+ phase: 'input',
359
+ messages: [{ role: 'user', content: { format: 2, parts: [{ type: 'text', text: 'Hello' }] } }],
360
+ });
361
+ ```
362
+
363
+ - Unified observability schema with entity-based span identification ([#11132](https://github.com/mastra-ai/mastra/pull/11132))
364
+
365
+ ## What changed
366
+
367
+ Spans now use a unified identification model with `entityId`, `entityType`, and `entityName` instead of separate `agentId`, `toolId`, `workflowId` fields.
368
+
369
+ **Before:**
370
+
371
+ ```typescript
372
+ // Old span structure
373
+ span.agentId; // 'my-agent'
374
+ span.toolId; // undefined
375
+ span.workflowId; // undefined
376
+ ```
377
+
378
+ **After:**
379
+
380
+ ```typescript
381
+ // New span structure
382
+ span.entityType; // EntityType.AGENT
383
+ span.entityId; // 'my-agent'
384
+ span.entityName; // 'My Agent'
385
+ ```
386
+
387
+ ## New `listTraces()` API
388
+
389
+ Query traces with filtering, pagination, and sorting:
390
+
391
+ ```typescript
392
+ const { spans, pagination } = await storage.listTraces({
393
+ filters: {
394
+ entityType: EntityType.AGENT,
395
+ entityId: 'my-agent',
396
+ userId: 'user-123',
397
+ environment: 'production',
398
+ status: TraceStatus.SUCCESS,
399
+ startedAt: { start: new Date('2024-01-01'), end: new Date('2024-01-31') },
400
+ },
401
+ pagination: { page: 0, perPage: 50 },
402
+ orderBy: { field: 'startedAt', direction: 'DESC' },
403
+ });
404
+ ```
405
+
406
+ **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`.
407
+
408
+ ## New retrieval methods
409
+ - `getSpan({ traceId, spanId })` - Get a single span
410
+ - `getRootSpan({ traceId })` - Get the root span of a trace
411
+ - `getTrace({ traceId })` - Get all spans for a trace
412
+
413
+ ## Backward compatibility
414
+
415
+ The legacy `getTraces()` method continues to work. When you pass `name: "agent run: my-agent"`, it automatically transforms to `entityId: "my-agent", entityType: AGENT`.
416
+
417
+ ## Migration
418
+
419
+ **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`.
420
+
421
+ **No action required:** Your existing code continues to work. Adopt the new fields and `listTraces()` API at your convenience.
422
+
423
+ - Added new `listThreads` method for flexible thread filtering across all storage adapters. ([#11832](https://github.com/mastra-ai/mastra/pull/11832))
424
+
425
+ **New Features**
426
+ - Filter threads by `resourceId`, `metadata`, or both (with AND logic for metadata key-value pairs)
427
+ - All filter parameters are optional, allowing you to list all threads or filter as needed
428
+ - Full pagination and sorting support
429
+
430
+ **Example Usage**
431
+
432
+ ```typescript
433
+ // List all threads
434
+ const allThreads = await memory.listThreads({});
435
+
436
+ // Filter by resourceId only
437
+ const userThreads = await memory.listThreads({
438
+ filter: { resourceId: 'user-123' },
439
+ });
440
+
441
+ // Filter by metadata only
442
+ const supportThreads = await memory.listThreads({
443
+ filter: { metadata: { category: 'support' } },
444
+ });
445
+
446
+ // Filter by both with pagination
447
+ const filteredThreads = await memory.listThreads({
448
+ filter: {
449
+ resourceId: 'user-123',
450
+ metadata: { priority: 'high', status: 'open' },
451
+ },
452
+ orderBy: { field: 'updatedAt', direction: 'DESC' },
453
+ page: 0,
454
+ perPage: 20,
455
+ });
456
+ ```
457
+
458
+ **Security Improvements**
459
+ - Added validation to prevent SQL injection via malicious metadata keys
460
+ - Added pagination parameter validation to prevent integer overflow attacks
461
+
462
+ - 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))
463
+
464
+ **What changed:**
465
+ - `getWorkflowRunById` now returns a unified `WorkflowState` object containing metadata (runId, workflowName, resourceId, createdAt, updatedAt) along with processed execution state (status, result, error, payload, steps)
466
+ - Added optional `fields` parameter to request only specific fields for better performance
467
+ - Added optional `withNestedWorkflows` parameter to control nested workflow step inclusion
468
+ - Removed `getWorkflowRunExecutionResult` - use `getWorkflowRunById` instead (breaking change)
469
+ - Removed `/execution-result` API endpoints from server (breaking change)
470
+ - Removed `runExecutionResult()` method from client SDK (breaking change)
471
+ - Removed `GetWorkflowRunExecutionResultResponse` type from client SDK (breaking change)
472
+
473
+ **Before:**
474
+
475
+ ```typescript
476
+ // Had to call two different methods for different data
477
+ const run = await workflow.getWorkflowRunById(runId); // Returns raw WorkflowRun with snapshot
478
+ const result = await workflow.getWorkflowRunExecutionResult(runId); // Returns processed execution state
479
+ ```
480
+
481
+ **After:**
482
+
483
+ ```typescript
484
+ // Single method returns everything
485
+ const run = await workflow.getWorkflowRunById(runId);
486
+ // Returns: { runId, workflowName, resourceId, createdAt, updatedAt, status, result, error, payload, steps }
487
+
488
+ // Request only specific fields for better performance (avoids expensive step fetching)
489
+ const status = await workflow.getWorkflowRunById(runId, { fields: ['status'] });
490
+
491
+ // Skip nested workflow steps for faster response
492
+ const run = await workflow.getWorkflowRunById(runId, { withNestedWorkflows: false });
493
+ ```
494
+
495
+ **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.
496
+
497
+ ### Patch Changes
498
+
499
+ - Add embedded documentation support for Mastra packages ([#11472](https://github.com/mastra-ai/mastra/pull/11472))
500
+
501
+ 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`.
502
+
503
+ Each package includes:
504
+ - **SKILL.md** - Entry point explaining the package's purpose and capabilities
505
+ - **SOURCE_MAP.json** - Machine-readable index mapping exports to types and implementation files
506
+ - **Topic folders** - Conceptual documentation organized by feature area
507
+
508
+ 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.
509
+
510
+ - Remove `streamVNext`, `resumeStreamVNext`, and `observeStreamVNext` methods, call `stream`, `resumeStream` and `observeStream` directly ([#11499](https://github.com/mastra-ai/mastra/pull/11499))
511
+
512
+ ```diff
513
+ + const run = await workflow.createRun({ runId: '123' });
514
+ - const stream = await run.streamVNext({ inputData: { ... } });
515
+ + const stream = await run.stream({ inputData: { ... } });
516
+ ```
517
+
518
+ - Make step optional in all resume APIs ([#9454](https://github.com/mastra-ai/mastra/pull/9454))
519
+
520
+ - Embed AI types to fix peerdeps mismatches ([`9650cce`](https://github.com/mastra-ai/mastra/commit/9650cce52a1d917ff9114653398e2a0f5c3ba808))
521
+
522
+ - Add resourceId to workflow routes ([#11166](https://github.com/mastra-ai/mastra/pull/11166))
523
+
524
+ - 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))
525
+
526
+ 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.
527
+
528
+ Also removes the now-unused `zod-to-json-schema` dependency from client-js.
529
+
530
+ - Update tool execution signature ([#9587](https://github.com/mastra-ai/mastra/pull/9587))
531
+
532
+ Consolidated the 3 different execution contexts to one
533
+
534
+ ```typescript
535
+ // before depending on the context the tool was executed in
536
+ tool.execute({ context: data });
537
+ tool.execute({ context: { inputData: data } });
538
+ tool.execute(data);
539
+
540
+ // now, for all contexts
541
+ tool.execute(data, context);
542
+ ```
543
+
544
+ **Before:**
545
+
546
+ ```typescript
547
+ inputSchema: z.object({ something: z.string() }),
548
+ execute: async ({ context, tracingContext, runId, ... }) => {
549
+ return doSomething(context.string);
550
+ }
551
+ ```
552
+
553
+ **After:**
554
+
555
+ ```typescript
556
+ inputSchema: z.object({ something: z.string() }),
557
+ execute: async (inputData, context) => {
558
+ const { agent, mcp, workflow, ...sharedContext } = context
559
+
560
+ // context that only an agent would get like toolCallId, messages, suspend, resume, etc
561
+ if (agent) {
562
+ doSomething(inputData.something, agent)
563
+ // context that only a workflow would get like runId, state, suspend, resume, etc
564
+ } else if (workflow) {
565
+ doSomething(inputData.something, workflow)
566
+ // context that only a workflow would get like "extra", "elicitation"
567
+ } else if (mcp) {
568
+ doSomething(inputData.something, mcp)
569
+ } else {
570
+ // Running a tool in no execution context
571
+ return doSomething(inputData.something);
572
+ }
573
+ }
574
+ ```
575
+
576
+ - 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))
577
+
578
+ ### Breaking Changes
579
+
580
+ #### `@mastra/core`
581
+
582
+ The `threadId` and `resourceId` options have been removed from `agent.generate()` and `agent.stream()`. Use the `memory` option instead:
583
+
584
+ ```ts
585
+ // Before
586
+ await agent.stream('Hello', {
587
+ threadId: 'thread-123',
588
+ resourceId: 'user-456',
589
+ });
590
+
591
+ // After
592
+ await agent.stream('Hello', {
593
+ memory: {
594
+ thread: 'thread-123',
595
+ resource: 'user-456',
596
+ },
597
+ });
598
+ ```
599
+
600
+ #### `@mastra/server`
601
+
602
+ 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.
603
+
604
+ #### `@mastra/react`
605
+
606
+ 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.
607
+
608
+ #### `@mastra/client-js`
609
+
610
+ When using the client SDK agent methods, use the `memory` option instead of `threadId`/`resourceId`:
611
+
612
+ ```ts
613
+ const agent = client.getAgent('my-agent');
614
+
615
+ // Before
616
+ await agent.generate([...], {
617
+ threadId: 'thread-123',
618
+ resourceId: 'user-456',
619
+ });
620
+
621
+ // After
622
+ await agent.generate([...], {
623
+ memory: {
624
+ thread: 'thread-123',
625
+ resource: 'user-456',
626
+ },
627
+ });
628
+ ```
629
+
630
+ - Fix wrong arguments type in list workflow runs ([#10755](https://github.com/mastra-ai/mastra/pull/10755))
631
+
632
+ - Adjust the generate / stream types to accept tracingOptions ([#10742](https://github.com/mastra-ai/mastra/pull/10742))
633
+
634
+ - Add human-in-the-loop (HITL) support to agent networks ([#11678](https://github.com/mastra-ai/mastra/pull/11678))
635
+ - Add suspend/resume capabilities to agent network
636
+ - Enable auto-resume for suspended network execution via `autoResumeSuspendedTools`
637
+
638
+ `agent.resumeNetwork`, `agent.approveNetworkToolCall`, `agent.declineNetworkToolCall`
639
+
640
+ - 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))
641
+ With this change, run methods cannot be called directly on workflow instance anymore
642
+
643
+ ```diff
644
+ - const result = await workflow.stream({ runId: '123', inputData: { ... } });
645
+ + const run = await workflow.createRun({ runId: '123' });
646
+ + const stream = await run.stream({ inputData: { ... } });
647
+ ```
648
+
649
+ - 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))
650
+
651
+ - Add search memory in client-js ([#9326](https://github.com/mastra-ai/mastra/pull/9326))
652
+
653
+ - Fix clientTools execution in client js ([#9880](https://github.com/mastra-ai/mastra/pull/9880))
654
+
655
+ - Include agentId parameter in listMessages API call ([#10270](https://github.com/mastra-ai/mastra/pull/10270))
656
+
657
+ - Add timeTravel APIs and add timeTravel feature to studio ([#10361](https://github.com/mastra-ai/mastra/pull/10361))
658
+
659
+ - Improve type handling with Zod ([#12091](https://github.com/mastra-ai/mastra/pull/12091))
660
+
661
+ - feat: Add field filtering and nested workflow control to workflow execution result endpoint ([#11246](https://github.com/mastra-ai/mastra/pull/11246))
662
+
663
+ Adds two optional query parameters to `/api/workflows/:workflowId/runs/:runId/execution-result` endpoint:
664
+ - `fields`: Request only specific fields (e.g., `status`, `result`, `error`)
665
+ - `withNestedWorkflows`: Control whether to fetch nested workflow data
666
+
667
+ This significantly reduces response payload size and improves response times for large workflows.
668
+
669
+ ## Server Endpoint Usage
670
+
671
+ ```http
672
+ # Get only status (minimal payload - fastest)
673
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status
674
+
675
+ # Get status and result
676
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status,result
677
+
678
+ # Get all fields but without nested workflow data (faster)
679
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?withNestedWorkflows=false
680
+
681
+ # Get only specific fields without nested workflow data
682
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status,steps&withNestedWorkflows=false
683
+
684
+ # Get full data (default behavior)
685
+ GET /api/workflows/:workflowId/runs/:runId/execution-result
686
+ ```
687
+
688
+ ## Client SDK Usage
689
+
690
+ ```typescript
691
+ import { MastraClient } from '@mastra/client-js';
692
+
693
+ const client = new MastraClient({ baseUrl: 'http://localhost:4111' });
694
+ const workflow = client.getWorkflow('myWorkflow');
695
+
696
+ // Get only status (minimal payload - fastest)
697
+ const statusOnly = await workflow.runExecutionResult(runId, {
698
+ fields: ['status'],
699
+ });
700
+ console.log(statusOnly.status); // 'success' | 'failed' | 'running' | etc.
701
+
702
+ // Get status and result
703
+ const statusAndResult = await workflow.runExecutionResult(runId, {
704
+ fields: ['status', 'result'],
705
+ });
706
+
707
+ // Get all fields but without nested workflow data (faster)
708
+ const resultWithoutNested = await workflow.runExecutionResult(runId, {
709
+ withNestedWorkflows: false,
710
+ });
711
+
712
+ // Get specific fields without nested workflow data
713
+ const optimized = await workflow.runExecutionResult(runId, {
714
+ fields: ['status', 'steps'],
715
+ withNestedWorkflows: false,
716
+ });
717
+
718
+ // Get full execution result (default behavior)
719
+ const fullResult = await workflow.runExecutionResult(runId);
720
+ ```
721
+
722
+ ## Core API Changes
723
+
724
+ The `Workflow.getWorkflowRunExecutionResult` method now accepts an options object:
725
+
726
+ ```typescript
727
+ await workflow.getWorkflowRunExecutionResult(runId, {
728
+ withNestedWorkflows: false, // default: true, set to false to skip nested workflow data
729
+ fields: ['status', 'result'], // optional field filtering
730
+ });
731
+ ```
732
+
733
+ ## Inngest Compatibility
734
+
735
+ 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.
736
+
737
+ ## Performance Impact
738
+
739
+ For workflows with large step outputs:
740
+ - Requesting only `status`: ~99% reduction in payload size
741
+ - Requesting `status,result,error`: ~95% reduction in payload size
742
+ - Using `withNestedWorkflows=false`: Avoids expensive nested workflow data fetching
743
+ - Combining both: Maximum performance optimization
744
+
745
+ - Add tool call approval ([#8649](https://github.com/mastra-ai/mastra/pull/8649))
746
+
747
+ - 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))
748
+
749
+ - 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))
750
+
751
+ - Added optional `description` field to `GetAgentResponse` to support richer agent metadata ([#10300](https://github.com/mastra-ai/mastra/pull/10300))
752
+
753
+ - Move the enhance instruction fetch call to client-js ([#9302](https://github.com/mastra-ai/mastra/pull/9302))
754
+
755
+ - Add debugger-like click-through UI to workflow graph ([#11350](https://github.com/mastra-ai/mastra/pull/11350))
756
+
757
+ - Add delete workflow run API ([#10991](https://github.com/mastra-ai/mastra/pull/10991))
758
+
759
+ ```typescript
760
+ await workflow.deleteWorkflowRunById(runId);
761
+ ```
762
+
763
+ - Add initial state input to workflow form in studio ([#11560](https://github.com/mastra-ai/mastra/pull/11560))
764
+
765
+ - Deserialize workflow errors on the client side ([#10992](https://github.com/mastra-ai/mastra/pull/10992))
766
+
767
+ 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.
768
+
769
+ **Before:**
770
+
771
+ ```typescript
772
+ const result = await workflow.startAsync({ input });
773
+ if (result.status === 'failed') {
774
+ // result.error was a plain object, couldn't use instanceof
775
+ console.log(result.error.message); // TypeScript error
776
+ }
777
+ ```
778
+
779
+ **After:**
780
+
781
+ ```typescript
782
+ const result = await workflow.startAsync({ input });
783
+ if (result.status === 'failed') {
784
+ // result.error is now a proper Error instance
785
+ if (result.error instanceof MyCustomError) {
786
+ console.log(result.error.statusCode); // Works!
787
+ }
788
+ }
789
+ ```
790
+
791
+ 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.
792
+
793
+ Features:
794
+ - `instanceof Error` checks
795
+ - Access to `error.message`, `error.name`, `error.stack`
796
+ - Preservation of custom error properties (e.g., `statusCode`, `responseHeaders`)
797
+ - Nested error tracking via `error.cause`
798
+
799
+ Affected methods:
800
+ - `startAsync()`
801
+ - `resumeAsync()`
802
+ - `restartAsync()`
803
+ - `timeTravelAsync()`
804
+
805
+ - Add `getSystemPackages()` method to retrieve installed Mastra packages and their versions from the server ([#11211](https://github.com/mastra-ai/mastra/pull/11211))
806
+
807
+ - fix list memory ([#9751](https://github.com/mastra-ai/mastra/pull/9751))
808
+
809
+ - Standardize pagination params to page/perPage with backwards compatibility for limit/offset ([#10790](https://github.com/mastra-ai/mastra/pull/10790))
810
+ - Server now accepts both `page`/`perPage` and legacy `limit`/`offset` params for workflow runs and MCP server listing endpoints
811
+ - Client SDK sends both param formats to support older server versions
812
+ - Added `createCombinedPaginationSchema` helper for endpoints needing backwards compatibility
813
+ - Marked `limit` and `offset` as deprecated in client types
814
+
815
+ - Remove unused /model-providers API ([#9533](https://github.com/mastra-ai/mastra/pull/9533))
816
+
817
+ - Backward compat for list threads ([#9758](https://github.com/mastra-ai/mastra/pull/9758))
818
+
819
+ - **Client (`@mastra/client-js`):** ([#10653](https://github.com/mastra-ai/mastra/pull/10653))
820
+ - Fixed `sendStreamingMessage` to properly return a streaming response instead of attempting to parse it as JSON
821
+
822
+ **Server (`@mastra/server`):**
823
+ - Fixed A2A message handler to pass `contextId` as `threadId` for memory persistence across conversations
824
+ - Added support for user-provided `resourceId` via `params.metadata.resourceId` or `message.metadata.resourceId`, falling back to `agentId`
825
+
826
+ - add client-js function to fetch model providers ([#9376](https://github.com/mastra-ai/mastra/pull/9376))
827
+
828
+ - Fix undefined runtimeContext using memory from playground ([#9328](https://github.com/mastra-ai/mastra/pull/9328))
829
+
830
+ - Fix error parsing json body for reset agent endpoint ([#11379](https://github.com/mastra-ai/mastra/pull/11379))
831
+
832
+ - Make step optional in resumeStreamVNext API ([#9453](https://github.com/mastra-ai/mastra/pull/9453))
833
+
834
+ - Adds thread cloning to create independent copies of conversations that can diverge. ([#11517](https://github.com/mastra-ai/mastra/pull/11517))
835
+
836
+ ```typescript
837
+ // Clone a thread
838
+ const { thread, clonedMessages } = await memory.cloneThread({
839
+ sourceThreadId: 'thread-123',
840
+ title: 'My Clone',
841
+ options: {
842
+ messageLimit: 10, // optional: only copy last N messages
843
+ },
844
+ });
845
+
846
+ // Check if a thread is a clone
847
+ if (memory.isClone(thread)) {
848
+ const source = await memory.getSourceThread(thread.id);
849
+ }
850
+
851
+ // List all clones of a thread
852
+ const clones = await memory.listClones('thread-123');
853
+ ```
854
+
855
+ Includes:
856
+ - Storage implementations for InMemory, PostgreSQL, LibSQL, Upstash
857
+ - API endpoint: `POST /api/memory/threads/:threadId/clone`
858
+ - Embeddings created for cloned messages (semantic recall)
859
+ - Clone button in playground UI Memory tab
860
+
861
+ - Add missing status parameter to workflow.runs() method ([#11095](https://github.com/mastra-ai/mastra/pull/11095))
862
+
863
+ The `status` parameter was supported by the server API but was missing from the TypeScript types in @mastra/client-js.
864
+
865
+ Now you can filter workflow runs by status:
866
+
867
+ ```typescript
868
+ // Get only running workflows
869
+ const runningRuns = await workflow.runs({ status: 'running' });
870
+
871
+ // Get completed workflows
872
+ const completedRuns = await workflow.runs({ status: 'success' });
873
+ ```
874
+
875
+ - 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))
876
+
877
+ - Fix delayed promises rejecting when stream suspends on tool-call-approval ([#11278](https://github.com/mastra-ai/mastra/pull/11278))
878
+
879
+ 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.
880
+
881
+ Also improves generic type inference for `LLMStepResult` and related types throughout the streaming infrastructure.
882
+
883
+ - 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))
884
+ - When `partial=true`: tool schemas (inputSchema, outputSchema) are omitted
885
+ - When `partial=true`: workflow steps are replaced with stepCount integer
886
+ - When `partial=true`: workflow root schemas (inputSchema, outputSchema) are omitted
887
+ - Maintains backward compatibility when partial parameter is not provided
888
+
889
+ **Server Endpoint Usage**
890
+
891
+ ```bash
892
+ # Get partial agent data (no tool schemas)
893
+ GET /api/agents?partial=true
894
+
895
+ # Get full agent data (default behavior)
896
+ GET /api/agents
897
+
898
+ # Get partial workflow data (stepCount instead of steps, no schemas)
899
+ GET /api/workflows?partial=true
900
+
901
+ # Get full workflow data (default behavior)
902
+ GET /api/workflows
903
+ ```
904
+
905
+ **Client SDK Usage**
906
+
907
+ ```typescript
908
+ import { MastraClient } from '@mastra/client-js';
909
+
910
+ const client = new MastraClient({ baseUrl: 'http://localhost:4111' });
911
+
912
+ // Get partial agent list (smaller payload)
913
+ const partialAgents = await client.listAgents({ partial: true });
914
+
915
+ // Get full agent list with tool schemas
916
+ const fullAgents = await client.listAgents();
917
+
918
+ // Get partial workflow list (smaller payload)
919
+ const partialWorkflows = await client.listWorkflows({ partial: true });
920
+
921
+ // Get full workflow list with steps and schemas
922
+ const fullWorkflows = await client.listWorkflows();
923
+ ```
924
+
925
+ - 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))
926
+
927
+ When a workflow contains an agent step that triggers a tripwire, the workflow returns with `status: 'tripwire'` and includes tripwire details:
928
+
929
+ ```typescript
930
+ const run = await workflow.createRun();
931
+ const result = await run.start({ inputData: { message: 'Hello' } });
932
+
933
+ if (result.status === 'tripwire') {
934
+ console.log('Workflow terminated by tripwire:', result.tripwire?.reason);
935
+ console.log('Processor ID:', result.tripwire?.processorId);
936
+ console.log('Retry requested:', result.tripwire?.retry);
937
+ }
938
+ ```
939
+
940
+ Adds new UI state for tripwire in agent chat and workflow UI.
941
+
942
+ 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).
943
+
944
+ - 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))
945
+
946
+ - Remove unused dependencies ([#10019](https://github.com/mastra-ai/mastra/pull/10019))
947
+
948
+ - Make agentId optional for memory read operations (getThread, listThreads, listMessages) ([#11540](https://github.com/mastra-ai/mastra/pull/11540))
949
+
950
+ 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.
951
+
952
+ - 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)]:
953
+ - @mastra/core@1.0.0
954
+ - @mastra/schema-compat@1.0.0
955
+
956
+ ## 1.0.0-beta.27
957
+
958
+ ### Patch Changes
959
+
960
+ - Updated dependencies [[`50fd320`](https://github.com/mastra-ai/mastra/commit/50fd320003d0d93831c230ef531bef41f5ba7b3a)]:
961
+ - @mastra/core@1.0.0-beta.27
962
+
963
+ ## 1.0.0-beta.26
964
+
965
+ ### Patch Changes
966
+
967
+ - Improve type handling with Zod ([#12091](https://github.com/mastra-ai/mastra/pull/12091))
968
+
969
+ - Updated dependencies [[`026b848`](https://github.com/mastra-ai/mastra/commit/026b8483fbf5b6d977be8f7e6aac8d15c75558ac), [`ffa553a`](https://github.com/mastra-ai/mastra/commit/ffa553a3edc1bd17d73669fba66d6b6f4ac10897)]:
970
+ - @mastra/core@1.0.0-beta.26
971
+
972
+ ## 1.0.0-beta.25
973
+
974
+ ### Minor Changes
975
+
976
+ - Added human-in-the-loop (HITL) tool approval support for `generate()` method. ([#12056](https://github.com/mastra-ai/mastra/pull/12056))
977
+
978
+ **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.
979
+
980
+ Previously, tool approval with `requireToolApproval` only worked with `stream()`. Now you can use the same approval flow with `generate()` for non-streaming use cases.
981
+
982
+ **Using tool approval with generate()**
983
+
984
+ ```typescript
985
+ const output = await agent.generate('Find user John', {
986
+ requireToolApproval: true,
987
+ });
988
+
989
+ // Check if a tool is waiting for approval
990
+ if (output.finishReason === 'suspended') {
991
+ console.log('Tool requires approval:', output.suspendPayload.toolName);
992
+
993
+ // Approve the tool call
994
+ const result = await agent.approveToolCallGenerate({
995
+ runId: output.runId,
996
+ toolCallId: output.suspendPayload.toolCallId,
997
+ });
998
+
999
+ console.log(result.text);
1000
+ }
1001
+ ```
1002
+
1003
+ **Declining a tool call**
1004
+
1005
+ ```typescript
1006
+ if (output.finishReason === 'suspended') {
1007
+ const result = await agent.declineToolCallGenerate({
1008
+ runId: output.runId,
1009
+ toolCallId: output.suspendPayload.toolCallId,
1010
+ });
1011
+ }
1012
+ ```
1013
+
1014
+ **New methods added:**
1015
+ - `agent.approveToolCallGenerate({ runId, toolCallId })` - Approves a pending tool call and returns the complete result
1016
+ - `agent.declineToolCallGenerate({ runId, toolCallId })` - Declines a pending tool call and returns the complete result
1017
+
1018
+ **Server routes added:**
1019
+ - `POST /api/agents/:agentId/approve-tool-call-generate`
1020
+ - `POST /api/agents/:agentId/decline-tool-call-generate`
1021
+
1022
+ The playground UI now also supports tool approval when using generate mode.
1023
+
1024
+ - 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))
1025
+
1026
+ ```typescript
1027
+ // List all processors
1028
+ const processors = await client.listProcessors();
1029
+
1030
+ // Get processor details
1031
+ const details = await client.getProcessor('my-processor').details();
1032
+
1033
+ // Execute a processor
1034
+ const result = await client.getProcessor('my-processor').execute({
1035
+ phase: 'input',
1036
+ messages: [{ role: 'user', content: { format: 2, parts: [{ type: 'text', text: 'Hello' }] } }],
1037
+ });
1038
+ ```
1039
+
1040
+ - Added new `listThreads` method for flexible thread filtering across all storage adapters. ([#11832](https://github.com/mastra-ai/mastra/pull/11832))
1041
+
1042
+ **New Features**
1043
+ - Filter threads by `resourceId`, `metadata`, or both (with AND logic for metadata key-value pairs)
1044
+ - All filter parameters are optional, allowing you to list all threads or filter as needed
1045
+ - Full pagination and sorting support
1046
+
1047
+ **Example Usage**
1048
+
1049
+ ```typescript
1050
+ // List all threads
1051
+ const allThreads = await memory.listThreads({});
1052
+
1053
+ // Filter by resourceId only
1054
+ const userThreads = await memory.listThreads({
1055
+ filter: { resourceId: 'user-123' },
1056
+ });
1057
+
1058
+ // Filter by metadata only
1059
+ const supportThreads = await memory.listThreads({
1060
+ filter: { metadata: { category: 'support' } },
1061
+ });
1062
+
1063
+ // Filter by both with pagination
1064
+ const filteredThreads = await memory.listThreads({
1065
+ filter: {
1066
+ resourceId: 'user-123',
1067
+ metadata: { priority: 'high', status: 'open' },
1068
+ },
1069
+ orderBy: { field: 'updatedAt', direction: 'DESC' },
1070
+ page: 0,
1071
+ perPage: 20,
1072
+ });
1073
+ ```
1074
+
1075
+ **Security Improvements**
1076
+ - Added validation to prevent SQL injection via malicious metadata keys
1077
+ - Added pagination parameter validation to prevent integer overflow attacks
1078
+
1079
+ ### Patch Changes
1080
+
1081
+ - 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)]:
1082
+ - @mastra/core@1.0.0-beta.25
1083
+ - @mastra/schema-compat@1.0.0-beta.8
1084
+
1085
+ ## 1.0.0-beta.24
1086
+
1087
+ ### Major Changes
1088
+
1089
+ - **Fixed:** Align `Agent.network` with core and update `@mastra/react` network usage. ([#12015](https://github.com/mastra-ai/mastra/pull/12015))
1090
+
1091
+ ### Patch Changes
1092
+
1093
+ - 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)]:
1094
+ - @mastra/core@1.0.0-beta.24
1095
+ - @mastra/schema-compat@1.0.0-beta.7
1096
+
1097
+ ## 1.0.0-beta.23
1098
+
1099
+ ### Patch Changes
1100
+
1101
+ - Updated dependencies [[`c8417b4`](https://github.com/mastra-ai/mastra/commit/c8417b41d9f3486854dc7842d977fbe5e2166264), [`dd4f34c`](https://github.com/mastra-ai/mastra/commit/dd4f34c78cbae24063463475b0619575c415f9b8)]:
1102
+ - @mastra/core@1.0.0-beta.23
1103
+
1104
+ ## 1.0.0-beta.22
1105
+
1106
+ ### Major Changes
1107
+
1108
+ - **Breaking Change**: Convert OUTPUT generic from `OutputSchema` constraint to plain generic ([#11741](https://github.com/mastra-ai/mastra/pull/11741))
1109
+
1110
+ 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.
1111
+ - All generic type parameters previously constrained to `OutputSchema` (e.g., `<OUTPUT extends OutputSchema = undefined>`) are now plain generics with defaults (e.g., `<OUTPUT = undefined>`)
1112
+ - Affects all public APIs including `Agent`, `MastraModelOutput`, `AgentExecutionOptions`, and stream/generate methods
1113
+ - `InferSchemaOutput<OUTPUT>` replaced with `OUTPUT` throughout
1114
+ - `PartialSchemaOutput<OUTPUT>` replaced with `Partial<OUTPUT>`
1115
+ - Schema fields now use `NonNullable<OutputSchema<OUTPUT>>` instead of `OUTPUT` directly
1116
+ - Added `FullOutput<OUTPUT>` type representing complete output with all fields
1117
+ - Added `AgentExecutionOptionsBase<OUTPUT>` type
1118
+ - `getFullOutput()` method now returns `Promise<FullOutput<OUTPUT>>`
1119
+ - `Agent` class now generic: `Agent<TAgentId, TTools, TOutput>`
1120
+ - `agent.generate()` and `agent.stream()` methods have updated signatures
1121
+ - `MastraModelOutput<OUTPUT>` no longer requires `OutputSchema` constraint
1122
+ - Network route and streaming APIs updated to use plain OUTPUT generic
1123
+
1124
+ **Before:**
1125
+
1126
+ ```typescript
1127
+ const output = await agent.generate<z.ZodType>({
1128
+ messages: [...],
1129
+ structuredOutput: { schema: mySchema }
1130
+ });
1131
+
1132
+ **After:**
1133
+ const output = await agent.generate<z.infer<typeof mySchema>>({
1134
+ messages: [...],
1135
+ structuredOutput: { schema: mySchema }
1136
+ });
1137
+ // Or rely on type inference:
1138
+ const output = await agent.generate({
1139
+ messages: [...],
1140
+ structuredOutput: { schema: mySchema }
1141
+ });
1142
+
1143
+ ```
1144
+
1145
+ ### Patch Changes
1146
+
1147
+ - 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))
1148
+
1149
+ ### Breaking Changes
1150
+
1151
+ #### `@mastra/core`
1152
+
1153
+ The `threadId` and `resourceId` options have been removed from `agent.generate()` and `agent.stream()`. Use the `memory` option instead:
1154
+
1155
+ ```ts
1156
+ // Before
1157
+ await agent.stream('Hello', {
1158
+ threadId: 'thread-123',
1159
+ resourceId: 'user-456',
1160
+ });
1161
+
1162
+ // After
1163
+ await agent.stream('Hello', {
1164
+ memory: {
1165
+ thread: 'thread-123',
1166
+ resource: 'user-456',
1167
+ },
1168
+ });
1169
+ ```
1170
+
1171
+ #### `@mastra/server`
1172
+
1173
+ 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.
1174
+
1175
+ #### `@mastra/react`
1176
+
1177
+ 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.
1178
+
1179
+ #### `@mastra/client-js`
1180
+
1181
+ When using the client SDK agent methods, use the `memory` option instead of `threadId`/`resourceId`:
1182
+
1183
+ ```ts
1184
+ const agent = client.getAgent('my-agent');
1185
+
1186
+ // Before
1187
+ await agent.generate({
1188
+ messages: [...],
1189
+ threadId: 'thread-123',
1190
+ resourceId: 'user-456',
1191
+ });
1192
+
1193
+ // After
1194
+ await agent.generate({
1195
+ messages: [...],
1196
+ memory: {
1197
+ thread: 'thread-123',
1198
+ resource: 'user-456',
1199
+ },
1200
+ });
1201
+ ```
1202
+
1203
+ - Add human-in-the-loop (HITL) support to agent networks ([#11678](https://github.com/mastra-ai/mastra/pull/11678))
1204
+ - Add suspend/resume capabilities to agent network
1205
+ - Enable auto-resume for suspended network execution via `autoResumeSuspendedTools`
1206
+
1207
+ `agent.resumeNetwork`, `agent.approveNetworkToolCall`, `agent.declineNetworkToolCall`
1208
+
1209
+ - 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)]:
1210
+ - @mastra/core@1.0.0-beta.22
1211
+
1212
+ ## 1.0.0-beta.21
1213
+
1214
+ ### Patch Changes
1215
+
1216
+ - 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)]:
1217
+ - @mastra/core@1.0.0-beta.21
1218
+ - @mastra/schema-compat@1.0.0-beta.6
1219
+
1220
+ ## 1.0.0-beta.20
1221
+
1222
+ ### Minor Changes
1223
+
1224
+ - 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))
1225
+
1226
+ **What changed:**
1227
+ - `getWorkflowRunById` now returns a unified `WorkflowState` object containing metadata (runId, workflowName, resourceId, createdAt, updatedAt) along with processed execution state (status, result, error, payload, steps)
1228
+ - Added optional `fields` parameter to request only specific fields for better performance
1229
+ - Added optional `withNestedWorkflows` parameter to control nested workflow step inclusion
1230
+ - Removed `getWorkflowRunExecutionResult` - use `getWorkflowRunById` instead (breaking change)
1231
+ - Removed `/execution-result` API endpoints from server (breaking change)
1232
+ - Removed `runExecutionResult()` method from client SDK (breaking change)
1233
+ - Removed `GetWorkflowRunExecutionResultResponse` type from client SDK (breaking change)
1234
+
1235
+ **Before:**
1236
+
1237
+ ```typescript
1238
+ // Had to call two different methods for different data
1239
+ const run = await workflow.getWorkflowRunById(runId); // Returns raw WorkflowRun with snapshot
1240
+ const result = await workflow.getWorkflowRunExecutionResult(runId); // Returns processed execution state
1241
+ ```
1242
+
1243
+ **After:**
1244
+
1245
+ ```typescript
1246
+ // Single method returns everything
1247
+ const run = await workflow.getWorkflowRunById(runId);
1248
+ // Returns: { runId, workflowName, resourceId, createdAt, updatedAt, status, result, error, payload, steps }
1249
+
1250
+ // Request only specific fields for better performance (avoids expensive step fetching)
1251
+ const status = await workflow.getWorkflowRunById(runId, { fields: ['status'] });
1252
+
1253
+ // Skip nested workflow steps for faster response
1254
+ const run = await workflow.getWorkflowRunById(runId, { withNestedWorkflows: false });
1255
+ ```
1256
+
1257
+ **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.
1258
+
1259
+ ### Patch Changes
1260
+
1261
+ - Add embedded documentation support for Mastra packages ([#11472](https://github.com/mastra-ai/mastra/pull/11472))
1262
+
1263
+ 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`.
1264
+
1265
+ Each package includes:
1266
+ - **SKILL.md** - Entry point explaining the package's purpose and capabilities
1267
+ - **SOURCE_MAP.json** - Machine-readable index mapping exports to types and implementation files
1268
+ - **Topic folders** - Conceptual documentation organized by feature area
1269
+
1270
+ 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.
1271
+
1272
+ - Remove `streamVNext`, `resumeStreamVNext`, and `observeStreamVNext` methods, call `stream`, `resumeStream` and `observeStream` directly ([#11499](https://github.com/mastra-ai/mastra/pull/11499))
1273
+
1274
+ ```diff
1275
+ + const run = await workflow.createRun({ runId: '123' });
1276
+ - const stream = await run.streamVNext({ inputData: { ... } });
1277
+ + const stream = await run.stream({ inputData: { ... } });
1278
+ ```
1279
+
1280
+ - Add initial state input to workflow form in studio ([#11560](https://github.com/mastra-ai/mastra/pull/11560))
1281
+
1282
+ - Adds thread cloning to create independent copies of conversations that can diverge. ([#11517](https://github.com/mastra-ai/mastra/pull/11517))
1283
+
1284
+ ```typescript
1285
+ // Clone a thread
1286
+ const { thread, clonedMessages } = await memory.cloneThread({
1287
+ sourceThreadId: 'thread-123',
1288
+ title: 'My Clone',
1289
+ options: {
1290
+ messageLimit: 10, // optional: only copy last N messages
1291
+ },
1292
+ });
1293
+
1294
+ // Check if a thread is a clone
1295
+ if (memory.isClone(thread)) {
1296
+ const source = await memory.getSourceThread(thread.id);
1297
+ }
1298
+
1299
+ // List all clones of a thread
1300
+ const clones = await memory.listClones('thread-123');
1301
+ ```
1302
+
1303
+ Includes:
1304
+ - Storage implementations for InMemory, PostgreSQL, LibSQL, Upstash
1305
+ - API endpoint: `POST /api/memory/threads/:threadId/clone`
1306
+ - Embeddings created for cloned messages (semantic recall)
1307
+ - Clone button in playground UI Memory tab
1308
+
1309
+ - Make agentId optional for memory read operations (getThread, listThreads, listMessages) ([#11540](https://github.com/mastra-ai/mastra/pull/11540))
1310
+
1311
+ 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.
1312
+
1313
+ - 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)]:
1314
+ - @mastra/core@1.0.0-beta.20
1315
+
1316
+ ## 1.0.0-beta.19
1317
+
1318
+ ### Patch Changes
1319
+
1320
+ - 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)]:
1321
+ - @mastra/core@1.0.0-beta.19
1322
+ - @mastra/schema-compat@1.0.0-beta.5
1323
+
1324
+ ## 1.0.0-beta.18
1325
+
1326
+ ### Patch Changes
1327
+
1328
+ - Updated dependencies [[`5947fcd`](https://github.com/mastra-ai/mastra/commit/5947fcdd425531f29f9422026d466c2ee3113c93)]:
1329
+ - @mastra/core@1.0.0-beta.18
1330
+
1331
+ ## 1.0.0-beta.17
1332
+
1333
+ ### Patch Changes
1334
+
1335
+ - Updated dependencies [[`b5dc973`](https://github.com/mastra-ai/mastra/commit/b5dc9733a5158850298dfb103acb3babdba8a318), [`af56599`](https://github.com/mastra-ai/mastra/commit/af56599d73244ae3bf0d7bcade656410f8ded37b)]:
1336
+ - @mastra/core@1.0.0-beta.17
1337
+ - @mastra/schema-compat@1.0.0-beta.4
1338
+
1339
+ ## 1.0.0-beta.16
1340
+
1341
+ ### Patch Changes
1342
+
1343
+ - 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))
1344
+
1345
+ - 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)]:
1346
+ - @mastra/core@1.0.0-beta.16
1347
+
1348
+ ## 1.0.0-beta.15
1349
+
1350
+ ### Minor Changes
1351
+
1352
+ - Unified observability schema with entity-based span identification ([#11132](https://github.com/mastra-ai/mastra/pull/11132))
1353
+
1354
+ ## What changed
1355
+
1356
+ Spans now use a unified identification model with `entityId`, `entityType`, and `entityName` instead of separate `agentId`, `toolId`, `workflowId` fields.
1357
+
1358
+ **Before:**
1359
+
1360
+ ```typescript
1361
+ // Old span structure
1362
+ span.agentId; // 'my-agent'
1363
+ span.toolId; // undefined
1364
+ span.workflowId; // undefined
1365
+ ```
1366
+
1367
+ **After:**
1368
+
1369
+ ```typescript
1370
+ // New span structure
1371
+ span.entityType; // EntityType.AGENT
1372
+ span.entityId; // 'my-agent'
1373
+ span.entityName; // 'My Agent'
1374
+ ```
1375
+
1376
+ ## New `listTraces()` API
1377
+
1378
+ Query traces with filtering, pagination, and sorting:
1379
+
1380
+ ```typescript
1381
+ const { spans, pagination } = await storage.listTraces({
1382
+ filters: {
1383
+ entityType: EntityType.AGENT,
1384
+ entityId: 'my-agent',
1385
+ userId: 'user-123',
1386
+ environment: 'production',
1387
+ status: TraceStatus.SUCCESS,
1388
+ startedAt: { start: new Date('2024-01-01'), end: new Date('2024-01-31') },
1389
+ },
1390
+ pagination: { page: 0, perPage: 50 },
1391
+ orderBy: { field: 'startedAt', direction: 'DESC' },
1392
+ });
1393
+ ```
1394
+
1395
+ **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`.
1396
+
1397
+ ## New retrieval methods
1398
+ - `getSpan({ traceId, spanId })` - Get a single span
1399
+ - `getRootSpan({ traceId })` - Get the root span of a trace
1400
+ - `getTrace({ traceId })` - Get all spans for a trace
1401
+
1402
+ ## Backward compatibility
1403
+
1404
+ The legacy `getTraces()` method continues to work. When you pass `name: "agent run: my-agent"`, it automatically transforms to `entityId: "my-agent", entityType: AGENT`.
1405
+
1406
+ ## Migration
1407
+
1408
+ **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`.
1409
+
1410
+ **No action required:** Your existing code continues to work. Adopt the new fields and `listTraces()` API at your convenience.
1411
+
1412
+ ### Patch Changes
1413
+
1414
+ - Add debugger-like click-through UI to workflow graph ([#11350](https://github.com/mastra-ai/mastra/pull/11350))
1415
+
1416
+ - Add `getSystemPackages()` method to retrieve installed Mastra packages and their versions from the server ([#11211](https://github.com/mastra-ai/mastra/pull/11211))
1417
+
1418
+ - Fix error parsing json body for reset agent endpoint ([#11379](https://github.com/mastra-ai/mastra/pull/11379))
1419
+
1420
+ - 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)]:
1421
+ - @mastra/core@1.0.0-beta.15
1422
+
1423
+ ## 1.0.0-beta.14
1424
+
1425
+ ### Patch Changes
1426
+
1427
+ - feat: Add field filtering and nested workflow control to workflow execution result endpoint ([#11246](https://github.com/mastra-ai/mastra/pull/11246))
1428
+
1429
+ Adds two optional query parameters to `/api/workflows/:workflowId/runs/:runId/execution-result` endpoint:
1430
+ - `fields`: Request only specific fields (e.g., `status`, `result`, `error`)
1431
+ - `withNestedWorkflows`: Control whether to fetch nested workflow data
1432
+
1433
+ This significantly reduces response payload size and improves response times for large workflows.
1434
+
1435
+ ## Server Endpoint Usage
1436
+
1437
+ ```http
1438
+ # Get only status (minimal payload - fastest)
1439
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status
1440
+
1441
+ # Get status and result
1442
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status,result
1443
+
1444
+ # Get all fields but without nested workflow data (faster)
1445
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?withNestedWorkflows=false
1446
+
1447
+ # Get only specific fields without nested workflow data
1448
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status,steps&withNestedWorkflows=false
1449
+
1450
+ # Get full data (default behavior)
1451
+ GET /api/workflows/:workflowId/runs/:runId/execution-result
1452
+ ```
1453
+
1454
+ ## Client SDK Usage
1455
+
1456
+ ```typescript
1457
+ import { MastraClient } from '@mastra/client-js';
1458
+
1459
+ const client = new MastraClient({ baseUrl: 'http://localhost:4111' });
1460
+ const workflow = client.getWorkflow('myWorkflow');
1461
+
1462
+ // Get only status (minimal payload - fastest)
1463
+ const statusOnly = await workflow.runExecutionResult(runId, {
1464
+ fields: ['status'],
1465
+ });
1466
+ console.log(statusOnly.status); // 'success' | 'failed' | 'running' | etc.
1467
+
1468
+ // Get status and result
1469
+ const statusAndResult = await workflow.runExecutionResult(runId, {
1470
+ fields: ['status', 'result'],
1471
+ });
1472
+
1473
+ // Get all fields but without nested workflow data (faster)
1474
+ const resultWithoutNested = await workflow.runExecutionResult(runId, {
1475
+ withNestedWorkflows: false,
1476
+ });
1477
+
1478
+ // Get specific fields without nested workflow data
1479
+ const optimized = await workflow.runExecutionResult(runId, {
1480
+ fields: ['status', 'steps'],
1481
+ withNestedWorkflows: false,
1482
+ });
1483
+
1484
+ // Get full execution result (default behavior)
1485
+ const fullResult = await workflow.runExecutionResult(runId);
1486
+ ```
1487
+
1488
+ ## Core API Changes
1489
+
1490
+ The `Workflow.getWorkflowRunExecutionResult` method now accepts an options object:
1491
+
1492
+ ```typescript
1493
+ await workflow.getWorkflowRunExecutionResult(runId, {
1494
+ withNestedWorkflows: false, // default: true, set to false to skip nested workflow data
1495
+ fields: ['status', 'result'], // optional field filtering
1496
+ });
1497
+ ```
1498
+
1499
+ ## Inngest Compatibility
1500
+
1501
+ 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.
1502
+
1503
+ ## Performance Impact
1504
+
1505
+ For workflows with large step outputs:
1506
+ - Requesting only `status`: ~99% reduction in payload size
1507
+ - Requesting `status,result,error`: ~95% reduction in payload size
1508
+ - Using `withNestedWorkflows=false`: Avoids expensive nested workflow data fetching
1509
+ - Combining both: Maximum performance optimization
1510
+
1511
+ - Fix delayed promises rejecting when stream suspends on tool-call-approval ([#11278](https://github.com/mastra-ai/mastra/pull/11278))
1512
+
1513
+ 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.
1514
+
1515
+ Also improves generic type inference for `LLMStepResult` and related types throughout the streaming infrastructure.
1516
+
1517
+ - 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)]:
1518
+ - @mastra/core@1.0.0-beta.14
1519
+
1520
+ ## 1.0.0-beta.13
1521
+
1522
+ ### Patch Changes
1523
+
1524
+ - Updated dependencies [[`919a22b`](https://github.com/mastra-ai/mastra/commit/919a22b25876f9ed5891efe5facbe682c30ff497)]:
1525
+ - @mastra/core@1.0.0-beta.13
1526
+
1527
+ ## 1.0.0-beta.12
1528
+
1529
+ ### Patch Changes
1530
+
1531
+ - Embed AI types to fix peerdeps mismatches ([`9650cce`](https://github.com/mastra-ai/mastra/commit/9650cce52a1d917ff9114653398e2a0f5c3ba808))
1532
+
1533
+ - Add resourceId to workflow routes ([#11166](https://github.com/mastra-ai/mastra/pull/11166))
1534
+
1535
+ - 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))
1536
+ With this change, run methods cannot be called directly on workflow instance anymore
1537
+
1538
+ ```diff
1539
+ - const result = await workflow.stream({ runId: '123', inputData: { ... } });
1540
+ + const run = await workflow.createRun({ runId: '123' });
1541
+ + const stream = await run.stream({ inputData: { ... } });
1542
+ ```
1543
+
1544
+ - Deserialize workflow errors on the client side ([#10992](https://github.com/mastra-ai/mastra/pull/10992))
1545
+
1546
+ 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.
1547
+
1548
+ **Before:**
1549
+
1550
+ ```typescript
1551
+ const result = await workflow.startAsync({ input });
1552
+ if (result.status === 'failed') {
1553
+ // result.error was a plain object, couldn't use instanceof
1554
+ console.log(result.error.message); // TypeScript error
1555
+ }
1556
+ ```
1557
+
1558
+ **After:**
1559
+
1560
+ ```typescript
1561
+ const result = await workflow.startAsync({ input });
1562
+ if (result.status === 'failed') {
1563
+ // result.error is now a proper Error instance
1564
+ if (result.error instanceof MyCustomError) {
1565
+ console.log(result.error.statusCode); // Works!
1566
+ }
1567
+ }
1568
+ ```
1569
+
1570
+ 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.
1571
+
1572
+ Features:
1573
+ - `instanceof Error` checks
1574
+ - Access to `error.message`, `error.name`, `error.stack`
1575
+ - Preservation of custom error properties (e.g., `statusCode`, `responseHeaders`)
1576
+ - Nested error tracking via `error.cause`
1577
+
1578
+ Affected methods:
1579
+ - `startAsync()`
1580
+ - `resumeAsync()`
1581
+ - `restartAsync()`
1582
+ - `timeTravelAsync()`
1583
+
1584
+ - Add missing status parameter to workflow.runs() method ([#11095](https://github.com/mastra-ai/mastra/pull/11095))
1585
+
1586
+ The `status` parameter was supported by the server API but was missing from the TypeScript types in @mastra/client-js.
1587
+
1588
+ Now you can filter workflow runs by status:
1589
+
1590
+ ```typescript
1591
+ // Get only running workflows
1592
+ const runningRuns = await workflow.runs({ status: 'running' });
1593
+
1594
+ // Get completed workflows
1595
+ const completedRuns = await workflow.runs({ status: 'success' });
1596
+ ```
1597
+
1598
+ - 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)]:
1599
+ - @mastra/core@1.0.0-beta.12
1600
+ - @mastra/schema-compat@1.0.0-beta.3
1601
+
1602
+ ## 1.0.0-beta.11
1603
+
1604
+ ### Patch Changes
1605
+
1606
+ - 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))
1607
+
1608
+ When a workflow contains an agent step that triggers a tripwire, the workflow returns with `status: 'tripwire'` and includes tripwire details:
1609
+
1610
+ ```typescript showLineNumbers copy
1611
+ const run = await workflow.createRun();
1612
+ const result = await run.start({ inputData: { message: 'Hello' } });
1613
+
1614
+ if (result.status === 'tripwire') {
1615
+ console.log('Workflow terminated by tripwire:', result.tripwire?.reason);
1616
+ console.log('Processor ID:', result.tripwire?.processorId);
1617
+ console.log('Retry requested:', result.tripwire?.retry);
1618
+ }
1619
+ ```
1620
+
1621
+ Adds new UI state for tripwire in agent chat and workflow UI.
1622
+
1623
+ 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).
1624
+
1625
+ - 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)]:
1626
+ - @mastra/core@1.0.0-beta.11
1627
+
1628
+ ## 1.0.0-beta.10
1629
+
1630
+ ### Patch Changes
1631
+
1632
+ - Add delete workflow run API ([#10991](https://github.com/mastra-ai/mastra/pull/10991))
1633
+
1634
+ ```typescript
1635
+ await workflow.deleteWorkflowRunById(runId);
1636
+ ```
1637
+
1638
+ - 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)]:
1639
+ - @mastra/core@1.0.0-beta.10
1640
+
3
1641
  ## 1.0.0-beta.9
4
1642
 
5
1643
  ### Patch Changes