December 6, 2025
Fix traceMap overwrite when multiple root spans share the same traceId (#10903)
Previously, when multiple root spans shared the same traceId (e.g., multiple agent.stream calls in the same trace), the trace data would be overwritten instead of reused. This could cause spans to be orphaned or lost.
Now both exporters check if a trace already exists before creating a new one, matching the behavior of the Langfuse and PostHog exporters.
Fix saveScore not persisting ID correctly, breaking getScoreById retrieval (#10915)
What Changed
Impact Previously, calling getScoreById after saveScore would return null because the generated ID wasn't persisted to the database. This is now fixed across all store implementations, ensuring consistent behavior and data integrity.
Fix saveScore not persisting ID correctly, breaking getScoreById retrieval (#10915)
What Changed
Impact Previously, calling getScoreById after saveScore would return null because the generated ID wasn't persisted to the database. This is now fixed across all store implementations, ensuring consistent behavior and data integrity.
Fix saveScore not persisting ID correctly, breaking getScoreById retrieval (#10915)
What Changed
Impact Previously, calling getScoreById after saveScore would return null because the generated ID wasn't persisted to the database. This is now fixed across all store implementations, ensuring consistent behavior and data integrity.
Fix saveScore not persisting ID correctly, breaking getScoreById retrieval (#10915)
What Changed
Impact Previously, calling getScoreById after saveScore would return null because the generated ID wasn't persisted to the database. This is now fixed across all store implementations, ensuring consistent behavior and data integrity.
Fix saveScore not persisting ID correctly, breaking getScoreById retrieval (#10915)
What Changed
Impact Previously, calling getScoreById after saveScore would return null because the generated ID wasn't persisted to the database. This is now fixed across all store implementations, ensuring consistent behavior and data integrity.
setState is now async (#10944)
setState must now be awaited: await setState({ key: value })stateSchema when validateInputs is enabled (default: true)Add human-in-the-loop support for workflows used in agent (#10871)
Fix tsconfig.json parsing when file contains JSONC comments (#10952)
The hasPaths() function now uses strip-json-comments to properly parse tsconfig.json files that contain comments. Previously, JSON.parse() would fail silently on JSONC comments, causing path aliases like @src/* to be incorrectly treated as npm scoped packages.
Fix saveScore not persisting ID correctly, breaking getScoreById retrieval (#10915)
What Changed
Impact Previously, calling getScoreById after saveScore would return null because the generated ID wasn't persisted to the database. This is now fixed across all store implementations, ensuring consistent behavior and data integrity.
Fix saveScore not persisting ID correctly, breaking getScoreById retrieval (#10915)
What Changed
Impact Previously, calling getScoreById after saveScore would return null because the generated ID wasn't persisted to the database. This is now fixed across all store implementations, ensuring consistent behavior and data integrity.
Fix traceMap overwrite when multiple root spans share the same traceId (#10903)
Previously, when multiple root spans shared the same traceId (e.g., multiple agent.stream calls in the same trace), the trace data would be overwritten instead of reused. This could cause spans to be orphaned or lost.
Now both exporters check if a trace already exists before creating a new one, matching the behavior of the Langfuse and PostHog exporters.
Fix saveScore not persisting ID correctly, breaking getScoreById retrieval (#10915)
What Changed
Impact Previously, calling getScoreById after saveScore would return null because the generated ID wasn't persisted to the database. This is now fixed across all store implementations, ensuring consistent behavior and data integrity.
Add redact option to PinoLogger for PII protection (#10919)
Exposes Pino's native redact option in PinoLogger, allowing sensitive data to be automatically redacted from logs.
import { PinoLogger } from '@mastra/loggers';
const logger = new PinoLogger({
name: 'MyApp',
redact: {
paths: ['*.password', '*.token', '*.apiKey', '*.email'],
censor: '[REDACTED]',
},
});
logger.info('User login', { username: 'john', password: 'secret123' });
// Output: { username: "john", password: "[REDACTED]", msg: "User login" }
Fix saveScore not persisting ID correctly, breaking getScoreById retrieval (#10915)
What Changed
Impact Previously, calling getScoreById after saveScore would return null because the generated ID wasn't persisted to the database. This is now fixed across all store implementations, ensuring consistent behavior and data integrity.
Fix saveScore not persisting ID correctly, breaking getScoreById retrieval (#10915)
What Changed
Impact Previously, calling getScoreById after saveScore would return null because the generated ID wasn't persisted to the database. This is now fixed across all store implementations, ensuring consistent behavior and data integrity.
Fix saveScore not persisting ID correctly, breaking getScoreById retrieval (#10915)
What Changed
Impact Previously, calling getScoreById after saveScore would return null because the generated ID wasn't persisted to the database. This is now fixed across all store implementations, ensuring consistent behavior and data integrity.
PostgresStore was setting this.stores = {} in the constructor and only populating it in the async init() method. This broke Memory because it checks storage.stores.memory synchronously in getInputProcessors() before init() is called. (#10943)
The fix moves domain instance creation to the constructor. This is safe because pg-promise creates database connections lazily when queries are executed.
Fix saveScore not persisting ID correctly, breaking getScoreById retrieval (#10915)
What Changed
Impact Previously, calling getScoreById after saveScore would return null because the generated ID wasn't persisted to the database. This is now fixed across all store implementations, ensuring consistent behavior and data integrity.
Fetched April 7, 2026