@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.
- package/CHANGELOG.md +1638 -0
- package/README.md +1 -3
- package/dist/_types/@ai-sdk_ui-utils/dist/index.d.ts +820 -0
- package/dist/_types/@internal_ai-sdk-v5/dist/index.d.ts +8511 -0
- package/dist/client.d.ts +56 -11
- package/dist/client.d.ts.map +1 -1
- package/dist/docs/README.md +33 -0
- package/dist/docs/SKILL.md +34 -0
- package/dist/docs/SOURCE_MAP.json +6 -0
- package/dist/docs/ai-sdk/01-reference.md +358 -0
- package/dist/docs/client-js/01-reference.md +1180 -0
- package/dist/docs/server/01-mastra-client.md +256 -0
- package/dist/docs/server/02-jwt.md +99 -0
- package/dist/docs/server/03-clerk.md +143 -0
- package/dist/docs/server/04-supabase.md +128 -0
- package/dist/docs/server/05-firebase.md +286 -0
- package/dist/docs/server/06-workos.md +201 -0
- package/dist/docs/server/07-auth0.md +233 -0
- package/dist/index.cjs +1690 -596
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1688 -594
- package/dist/index.js.map +1 -1
- package/dist/resources/agent-builder.d.ts +10 -26
- package/dist/resources/agent-builder.d.ts.map +1 -1
- package/dist/resources/agent.d.ts +43 -8
- package/dist/resources/agent.d.ts.map +1 -1
- package/dist/resources/index.d.ts +1 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/memory-thread.d.ts +18 -3
- package/dist/resources/memory-thread.d.ts.map +1 -1
- package/dist/resources/observability.d.ts +58 -15
- package/dist/resources/observability.d.ts.map +1 -1
- package/dist/resources/processor.d.ts +20 -0
- package/dist/resources/processor.d.ts.map +1 -0
- package/dist/resources/run.d.ts +210 -0
- package/dist/resources/run.d.ts.map +1 -0
- package/dist/resources/workflow.d.ts +19 -224
- package/dist/resources/workflow.d.ts.map +1 -1
- package/dist/tools.d.ts +2 -2
- package/dist/tools.d.ts.map +1 -1
- package/dist/types.d.ts +141 -36
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/index.d.ts +26 -0
- package/dist/utils/index.d.ts.map +1 -1
- 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
|