December 4, 2025
braintrustLogger as a parameter to BraintrustExporter allowing developers to pass in their own braintrust logger. (#10698)getWorkflowRuns
Add automatic restart to restart active workflow runs when server startsAdd support for custom fetch function in MastraClient to enable environments like Tauri that require custom fetch implementations to avoid timeout errors. (#10679)
You can now pass a custom fetch function when creating a MastraClient:
import { MastraClient } from '@mastra/client-js';
// Before: Only global fetch was available
const client = new MastraClient({
baseUrl: 'http://your-api-url',
});
// After: Custom fetch can be passed
const client = new MastraClient({
baseUrl: 'http://your-api-url',
fetch: customFetch, // Your custom fetch implementation
});
If no custom fetch is provided, it falls back to the global fetch function, maintaining backward compatibility.
Fixes #10673
Add timeTravel APIs and add timeTravel feature to studio (#10757)
feat: Add partial response support for agent and workflow list endpoints (#10906)
Add optional partial query parameter to /api/agents and /api/workflows endpoints to return minimal data without schemas, reducing payload size for list views:
partial=true: tool schemas (inputSchema, outputSchema) are omittedpartial=true: workflow steps are replaced with stepCount integerpartial=true: workflow root schemas (inputSchema, outputSchema) are omitted# Get partial agent data (no tool schemas)
GET /api/agents?partial=true
# Get full agent data (default behavior)
GET /api/agents
# Get partial workflow data (stepCount instead of steps, no schemas)
GET /api/workflows?partial=true
# Get full workflow data (default behavior)
GET /api/workflows
import { MastraClient } from '@mastra/client-js';
const client = new MastraClient({ baseUrl: 'http://localhost:4111' });
// Get partial agent list (smaller payload)
const partialAgents = await client.listAgents({ partial: true });
// Get full agent list with tool schemas
const fullAgents = await client.listAgents();
// Get partial workflow list (smaller payload)
const partialWorkflows = await client.listWorkflows({ partial: true });
// Get full workflow list with steps and schemas
const fullWorkflows = await client.listWorkflows();
feat: Add partial response support for agent and workflow list endpoints (#10906)
Add optional partial query parameter to /api/agents and /api/workflows endpoints to return minimal data without schemas, reducing payload size for list views:
partial=true: tool schemas (inputSchema, outputSchema) are omittedpartial=true: workflow steps are replaced with stepCount integerpartial=true: workflow root schemas (inputSchema, outputSchema) are omitted# Get partial agent data (no tool schemas)
GET /api/agents?partial=true
# Get full agent data (default behavior)
GET /api/agents
# Get partial workflow data (stepCount instead of steps, no schemas)
GET /api/workflows?partial=true
# Get full workflow data (default behavior)
GET /api/workflows
import { MastraClient } from '@mastra/client-js';
const client = new MastraClient({ baseUrl: 'http://localhost:4111' });
// Get partial agent list (smaller payload)
const partialAgents = await client.listAgents({ partial: true });
// Get full agent list with tool schemas
const fullAgents = await client.listAgents();
// Get partial workflow list (smaller payload)
const partialWorkflows = await client.listWorkflows({ partial: true });
// Get full workflow list with steps and schemas
const fullWorkflows = await client.listWorkflows();
getWorkflowRuns
Add automatic restart to restart active workflow runs when server startsgetWorkflowRuns
Add automatic restart to restart active workflow runs when server startsunexpected json parse issue, log error but dont fail (#10640)
Emit error chunk and call onError when agent workflow step fails (#10905)
When a workflow step fails (e.g., tool not found), the error is now properly emitted as an error chunk to the stream and the onError callback is called. This fixes the issue where agent.generate() would throw "promise 'text' was not resolved or rejected" instead of the actual error message.
Improved typing for workflow.then to allow the provided steps inputSchema to be a subset of the previous steps outputSchema. Also errors if the provided steps inputSchema is a superset of the previous steps outputSchema. (#10775)
Add timeTravel APIs and add timeTravel feature to studio (#10757)
Fix backport (#10599)
Fix type issue with workflow .parallel() when passing multiple steps, one or more of which has a resumeSchema provided. (#10712)
Handle state update and bailing in foreach steps (#10826)
Fix discriminatedUnion schema information lost when json schema is converted to zod (#10764)
Add restart method to workflow run that allows restarting an active workflow run (#10703)
Add status filter to getWorkflowRuns
Add automatic restart to restart active workflow runs when server starts
Add timeTravel to workflows. This makes it possible to start a workflow run from a particular step in the workflow (#10717)
Example code:
const result = await run.timeTravel({
step: 'step2',
inputData: {
value: 'input',
},
});
Fixed OpenAI reasoning message merging so distinct reasoning items are no longer dropped when they share a message ID. Prevents downstream errors where a function call is missing its required "reasoning" item. See #9005. (#10729)
Commit registered uncommitted workflows automatically (#10829)
Safe stringify objects in telemetry (#10918)
Improve nested ts-config paths resolution for NX users (#10766)
Fix dev playground auth to allow non-protected paths to bypass authentication when MASTRA_DEV=true, while still requiring the x-mastra-dev-playground header for protected endpoints (#10723)
Fixed a bug where ESM shims were incorrectly injected even when the user had already declared __filename or __dirname (#10823)
Add restart method to workflow run that allows restarting an active workflow run (#10703)
Add status filter to getWorkflowRuns
Add automatic restart to restart active workflow runs when server starts
Fix installing external peer deps for cloud deployer (#10787)
Adds --force and --legacy-peer-deps=false flags to npm install command to ensure peer dependencies for external packages are properly installed in the mastra output directory. The --legacy-peer-deps=false flag overrides package manager settings (like pnpm's default of true) to ensure consistent behavior.
Fix backport (#10599)
getWorkflowRuns
Add automatic restart to restart active workflow runs when server startsHandle state update and bailing in foreach steps (#10826)
Add restart method to workflow run that allows restarting an active workflow run (#10703)
Add status filter to getWorkflowRuns
Add automatic restart to restart active workflow runs when server starts
Add timeTravel to workflows. This makes it possible to start a workflow run from a particular step in the workflow (#10717)
Example code:
const result = await run.timeTravel({
step: 'step2',
inputData: {
value: 'input',
},
});
getWorkflowRuns
Add automatic restart to restart active workflow runs when server startsgetWorkflowRuns
Add automatic restart to restart active workflow runs when server startsgetWorkflowRuns
Add automatic restart to restart active workflow runs when server startsgetWorkflowRuns
Add automatic restart to restart active workflow runs when server startsgetWorkflowRuns
Add automatic restart to restart active workflow runs when server startsFix select options overflow when list is long by adding maximum height (#10833)
Add timeTravel APIs and add timeTravel feature to studio (#10757)
Fix discriminatedUnion schema information lost when json schema is converted to zod (#10764)
Add timeTravel APIs and add timeTravel feature to studio (#10757)
feat: Add partial response support for agent and workflow list endpoints (#10906)
Add optional partial query parameter to /api/agents and /api/workflows endpoints to return minimal data without schemas, reducing payload size for list views:
partial=true: tool schemas (inputSchema, outputSchema) are omittedpartial=true: workflow steps are replaced with stepCount integerpartial=true: workflow root schemas (inputSchema, outputSchema) are omitted# Get partial agent data (no tool schemas)
GET /api/agents?partial=true
# Get full agent data (default behavior)
GET /api/agents
# Get partial workflow data (stepCount instead of steps, no schemas)
GET /api/workflows?partial=true
# Get full workflow data (default behavior)
GET /api/workflows
import { MastraClient } from '@mastra/client-js';
const client = new MastraClient({ baseUrl: 'http://localhost:4111' });
// Get partial agent list (smaller payload)
const partialAgents = await client.listAgents({ partial: true });
// Get full agent list with tool schemas
const fullAgents = await client.listAgents();
// Get partial workflow list (smaller payload)
const partialWorkflows = await client.listWorkflows({ partial: true });
// Get full workflow list with steps and schemas
const fullWorkflows = await client.listWorkflows();
getWorkflowRuns
Add automatic restart to restart active workflow runs when server startsFix select options overflow when list is long by adding maximum height (#10833)
Add timeTravel APIs and add timeTravel feature to studio (#10757)
Fix discriminatedUnion schema information lost when json schema is converted to zod (#10764)
Fix select options overflow when list is long by adding maximum height (#10833)
Add timeTravel APIs and add timeTravel feature to studio (#10757)
Fix discriminatedUnion schema information lost when json schema is converted to zod (#10764)
Add restart method to workflow run that allows restarting an active workflow run (#10703)
Add status filter to getWorkflowRuns
Add automatic restart to restart active workflow runs when server starts
Fetched April 7, 2026