Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1384 commits
Select commit Hold shift + click to select a range
20b2196
chore(repo): Set minimumReleaseAge (#16462)
LekoArts May 12, 2026
a674fc9
chore: version packages
dane-ai-mastra[bot] May 12, 2026
ce01024
fix foreach bail and legacy stream in evented workflows (#16436)
taofeeq-deru May 12, 2026
ae7f53f
add @mastra/dsql - Amazon Aurora DSQL storage provider (#10930)
vvatanabe May 12, 2026
7eaefb7
docs: add Mastra Code WezTerm integration guide (#16465)
TylerBarnes May 12, 2026
a6a1073
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 12, 2026
8298b2e
Add react-query to vite config dedupe (#16469)
greglobinski May 12, 2026
5b6887b
refactor(playground-ui, playground): DS updates and Threads migration…
damien-schneider May 12, 2026
b3dd3ee
fix(core): use payload text/object for outputText in stream onFinish …
serhiizghama May 12, 2026
d6bef1a
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 12, 2026
8373ff4
Refactor foreach loop to use fastq for fluid concurrency (#12860)
wardpeet May 12, 2026
11c1528
fix evented workflow resume issues (#16476)
taofeeq-deru May 12, 2026
edccda6
Add traces/branches switching to Observability (#16479)
greglobinski May 12, 2026
8d77d90
ci cleanup (#16474)
wardpeet May 12, 2026
5e9dab6
fix(koa): guard dispatcher-reuse against non-Koa app-like targets (#1…
roaminro May 12, 2026
f984b4d
feat(mastracode): send follow-ups through Agent signals (#16231)
TylerBarnes May 12, 2026
719e5b1
Add PR review workflow skills (#16456)
smthomas May 12, 2026
4413f2c
chore: version packages
dane-ai-mastra[bot] May 12, 2026
99a579b
feat(playground-ui): make branches the default Observability list mod…
greglobinski May 12, 2026
a3caf6f
ci: exclude first-party packages from minimumReleaseAge gate (#16495)
roaminro May 12, 2026
05dab92
feat(playground): support signal follow-up chat (#16338)
TylerBarnes May 12, 2026
cc46ea8
feat(cli): end-to-end Mastra Observability onboarding in create-mastr…
DanielSLew May 12, 2026
5337df1
chore: version packages (alpha) (#16458)
dane-ai-mastra[bot] May 12, 2026
b641e70
fix recordings (#16486)
wardpeet May 12, 2026
105e454
Mastra A2A subagents (#16348)
May 12, 2026
7671795
Pair observability prompt with CLI auth flow (#16502)
DanielSLew May 12, 2026
8781d45
fix(observability): support platform token env fallback (#16500)
DanielSLew May 12, 2026
9cd4c8e
chore: version packages (alpha) (#16501)
dane-ai-mastra[bot] May 12, 2026
a7109c3
ci: exclude first-party packages from minimumReleaseAge in snapshot E…
roaminro May 12, 2026
c991b52
ci(security): scope id-token: write to publish jobs only (#16509)
starslingdev[bot] May 12, 2026
63c7318
fix(cli): Consolidate verify into lint (#16470)
LekoArts May 12, 2026
db760bb
fix(client-js): always POST a JSON body from MCPTool.execute (#16488)
roaminro May 12, 2026
1c989ea
fix(server): defer @mastra/agent-builder import for Cloudflare Worker…
intojhanurag May 12, 2026
4cc11f3
feat(slack): forward SlackAdapter and AgentChannels options through S…
CalebBarnes May 12, 2026
bd977e6
fix(pg): keep agent listing resilient to jsonb scalar strings (#16224…
tarun-khatri May 12, 2026
cc189cc
fix(core): scheduled workflow dispatch by id and zombie schedule clea…
abhiaiyer91 May 12, 2026
13e8c5d
fix(cli): show logged-in user during auth login and create (#16512)
roaminro May 12, 2026
ca4f94e
chore: version packages (alpha) (#16511)
dane-ai-mastra[bot] May 12, 2026
4999667
feat: speed up LibSQL and Mastra Code startup (#16513)
TylerBarnes May 12, 2026
136e85f
chore: version packages (alpha) (#16516)
dane-ai-mastra[bot] May 12, 2026
10e5b2d
chore: version - exit prerelease mode
dane-ai-mastra[bot] May 13, 2026
ea4a5a7
chore(docs): Observability (#16467)
LekoArts May 13, 2026
8d4d713
chore: version - enter prerelease mode
dane-ai-mastra[bot] May 13, 2026
6ba46dc
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 13, 2026
0661e5c
chore: version packages
dane-ai-mastra[bot] May 13, 2026
8c134e7
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 13, 2026
bc386e0
implement `run.restart()` in evented workflows (#16520)
taofeeq-deru May 13, 2026
b70da87
fix(cli): re-prompt observability question when browser sign-in fails…
devin-ai-integration[bot] May 13, 2026
05e3395
docs: add A2A documentation (#16313)
May 13, 2026
dae4b12
chore: add CodeRabbit local review guidance (#16534)
mbenhamd May 13, 2026
3b827be
fix(ci): report test suite for docs-only PRs (#16552)
May 13, 2026
3e63fca
fix(mastracode): regular plan approval triggers via structured sendSi…
devin-ai-integration[bot] May 13, 2026
28a5a9f
test(playground): mock branches endpoint in agent observability tab e…
greglobinski May 13, 2026
fd1d852
feat(playground): gate agent-signals streaming behind MASTRA_AGENT_SI…
devin-ai-integration[bot] May 13, 2026
498c104
chore: version packages
dane-ai-mastra[bot] May 13, 2026
1755a82
docs(nav): refresh New/Experimental sidebar labels and rename Respons…
devin-ai-integration[bot] May 13, 2026
a8ce483
chore: version packages (alpha) (#16518)
dane-ai-mastra[bot] May 13, 2026
27739d6
fix(server): widen A2A messageSendParamsSchema to accept text|file|da…
shohair May 13, 2026
a393557
chore: version - exit prerelease mode
dane-ai-mastra[bot] May 13, 2026
3b07597
chore: version - enter prerelease mode
dane-ai-mastra[bot] May 13, 2026
8dd8859
fix: propagate agent signal request context (#16557)
TylerBarnes May 13, 2026
7cb2a2b
feat(mastracode): add Codex device login and MCP OAuth config (#16548)
mbenhamd May 13, 2026
08648d1
fix tests (#16568)
wardpeet May 13, 2026
01b9d92
Fix prebuild workflow (#16571)
wardpeet May 13, 2026
20787de
feat(acp): add ACP tool package (#16423)
wardpeet May 13, 2026
0d53730
feat(core): return media parts and metadata fallback from workspace r…
CalebBarnes May 13, 2026
784ad98
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 14, 2026
5a6fd41
chore: version packages
dane-ai-mastra[bot] May 14, 2026
bef9231
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 14, 2026
7430578
feat(playground): refresh studio shell and route headers (#16544)
damien-schneider May 14, 2026
2a43aa5
fix(nestjs): forward raw query values without pre-schema coercion (#1…
tarun-khatri May 14, 2026
c406ccc
fix(playground): handle A2A subagent badge results (#16591)
May 14, 2026
fceae1f
refactor internal background task workflow (#16590)
taofeeq-deru May 14, 2026
8da4bd7
fix(playground-ui): stop leaking relative React type paths into emitt…
damien-schneider May 14, 2026
1124a25
fix(create-mastra): flush telemetry events (#16582)
smthomas May 14, 2026
97fe629
feat(memory): honor caller-supplied tokenEstimate on file parts (#16565)
roaminro May 14, 2026
ab866a6
fix(playground-ui): align react and react-dom versions for Storybook …
damien-schneider May 14, 2026
a220506
chore(docs): Add Amazon Bedrock AgentCore deployment guide (#16429)
minorun365 May 14, 2026
e2e6978
fix(ci): preserve prebuild gate for docs-only reports (#16594)
May 14, 2026
df211a0
chore(playground): clear 11 low-risk typecheck errors (phase 2) (#16598)
damien-schneider May 14, 2026
73f7f27
feat(docker): expose sandbox hardening options (#16577)
mbenhamd May 14, 2026
522f44d
fix(core): bound process handle output retention (#16574)
mbenhamd May 14, 2026
dd86364
fix(playground): upgrade @assistant-ui/react to 0.14 to fix IME texta…
devin-ai-integration[bot] May 14, 2026
0fd3fbe
fix(memory): stabilize semantic recall replay and prompt ordering (#1…
abhiaiyer91 May 14, 2026
98986f2
feat(voice): add xAI realtime provider (#16507)
mbenhamd May 14, 2026
fed0475
fix(core): share agent signals runtime (#16581)
TylerBarnes May 14, 2026
bf02acb
fix(core): preserve durable object instructions (#16599)
May 14, 2026
3c0e050
docs: add Mastra Code goals guide (#16566)
TylerBarnes May 14, 2026
ca917f1
feat(cli): infer hosted observability API target (#16563)
DanielSLew May 14, 2026
75141fc
chore: version packages
dane-ai-mastra[bot] May 14, 2026
bdb4cbf
test(_test-utils): run InMemoryStore tests in CI (#16602)
epinzur May 14, 2026
973df7f
feat(playground-ui): add List mode filter, default to traces mode (#1…
greglobinski May 14, 2026
f0f5224
chore(skills): add builder-smoke-test skill for Agent Builder (#16579)
NikAiyer May 14, 2026
0946dae
fix(playground): align IME composition e2e assertions with @assistant…
abhiaiyer91 May 14, 2026
d3bb89e
docs(processors): fix diagram alignment and document processLLMRespon…
devin-ai-integration[bot] May 14, 2026
046cb4a
chore: version packages (alpha) (#16559)
dane-ai-mastra[bot] May 14, 2026
8b3c6f9
feat(core, auth-workos): agent-builder/ee foundation and role-listing…
NikAiyer May 14, 2026
2db1d99
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 14, 2026
af84f57
fix(core,server): coerce limit on metric discovery query schemas (#16…
roaminro May 14, 2026
090a647
Fix ToolSearchProcessor approval resume (#16365)
graysonhicks May 14, 2026
88bc0bc
fix(cli): match `deploy --project` by name and create on miss (#16569)
roaminro May 14, 2026
9ebd049
feat(cli): track observability selections (#16524)
smthomas May 14, 2026
6aac188
chore(changeset): bump auth-workos and core to minor for ee foundatio…
NikAiyer May 14, 2026
a1a5b3e
feat(core): add metadata support for code-defined agents (#16603)
intojhanurag May 14, 2026
f84447d
feat(cli): default trace list to lightweight rows (#16608)
DanielSLew May 14, 2026
b23d30d
chore: version packages (alpha) (#16611)
dane-ai-mastra[bot] May 14, 2026
b55b38e
chore: version - exit prerelease mode
dane-ai-mastra[bot] May 14, 2026
6047c1a
chore: version - enter prerelease mode
dane-ai-mastra[bot] May 14, 2026
b661349
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 15, 2026
13f4606
chore: version packages
dane-ai-mastra[bot] May 15, 2026
3f25482
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 15, 2026
d6e64b4
refactor(playground-ui): remove thread grouping from traces (#16633)
greglobinski May 15, 2026
ba41021
style(playground-ui): unify chevron icon in property filter dropdown …
greglobinski May 15, 2026
48bb49f
fix(playground-ui): fall back to traces when storage provider lacks l…
greglobinski May 15, 2026
38b8796
Exclude tsup bundled config files from ESLint (#16634)
epinzur May 15, 2026
036056a
feat(playground-ui): add Level column and Show subtraces toggle to tr…
greglobinski May 15, 2026
bad08e9
Add FGA route policy coverage controls (#16485)
graysonhicks May 15, 2026
3d42730
fix(memory): estimate local non-image file token counts from byte siz…
roaminro May 15, 2026
7bc78d9
chore: version packages
dane-ai-mastra[bot] May 15, 2026
b32ba5f
fix(core,nestjs): restore scheduled workflow and prefix handling (#16…
mbenhamd May 15, 2026
1be0793
fix(memory): clear observational memory on thread deletion (#16628)
KrishavRajSingh May 15, 2026
d332faf
fix memory test (#16575)
wardpeet May 15, 2026
9d0c547
fix(create-mastra): avoid late org prompt during observability setup …
May 15, 2026
816b974
feat(storage): favorites + visibility storage foundation (#16580)
NikAiyer May 15, 2026
3a8a6b2
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 15, 2026
fd5fbb4
chore: version packages (alpha) (#16624)
dane-ai-mastra[bot] May 15, 2026
87e0c98
fix: improve goal mode judge UX (#16654)
TylerBarnes May 15, 2026
a3855b1
fix(playground): update API endpoint prefix handling in login and sig…
xtyxtyx May 15, 2026
271c044
fix(core): preserve active signal transcript order (#16623)
TylerBarnes May 15, 2026
9fff786
chore(playground): drop cosmetic `as any` casts on `client.options` i…
roaminro May 15, 2026
75c7c38
fix(core): break workflows barrel cycle in signal-drain-step (#16661)
roaminro May 15, 2026
bbbf6d0
chore: version packages (alpha) (#16657)
dane-ai-mastra[bot] May 15, 2026
7449a3e
chore: version - exit prerelease mode
dane-ai-mastra[bot] May 15, 2026
712475e
chore: version - enter prerelease mode
dane-ai-mastra[bot] May 15, 2026
64c1e0b
feat(mastracode): add /skill/<name> command to activate skills explic…
intojhanurag May 15, 2026
1a9cc60
fix(core): CompositeAuth duck-typing detection for interface capabili…
rphansen91 May 15, 2026
40d83a9
feat(core)!: simplify AgentSignalContents and fix multimodal signal h…
CalebBarnes May 15, 2026
452036a
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 16, 2026
49a9c88
chore: version packages
dane-ai-mastra[bot] May 16, 2026
7af0c22
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 16, 2026
318b027
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 16, 2026
01e522d
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 16, 2026
6b8a53e
fix(stagehand): silence browser logs by default (#16677)
TylerBarnes May 17, 2026
1f5dad7
chore: version packages
dane-ai-mastra[bot] May 17, 2026
9430352
fix(mcp): close previous SSE transport before accepting new connectio…
devin-ai-integration[bot] May 17, 2026
16debae
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 18, 2026
7f6a053
feat(memory): start background buffering of unobserved messages when …
devin-ai-integration[bot] May 18, 2026
b5163f5
chore: version packages
dane-ai-mastra[bot] May 18, 2026
ca6a039
chore(playground): remove dead DatasetsTable + ScorersTable (#16539)
damien-schneider May 18, 2026
9c76784
feat(playground): surface Evaluation dashboard as sidebar item (#16708)
damien-schneider May 18, 2026
750edc0
docs: add "Update skill" section to skills guide (#16715)
devin-ai-integration[bot] May 18, 2026
8cdb86c
Hide internal workflow spans from Mastra-owned plumbing in traces (#1…
epinzur May 18, 2026
b2ea6b5
feat(playground-ui): move Level icon into Name column on traces list …
greglobinski May 18, 2026
32d0d87
fix(playground): make Prompts and Workflows top bar responsive (#16714)
damien-schneider May 18, 2026
408be73
fix(core): retry storage init after a rejection instead of caching it…
epinzur May 18, 2026
eda90c5
Roll up internal MODEL_GENERATION usage to visible ancestor spans (#1…
epinzur May 18, 2026
8c8974a
docs: improve A2A guide (#16731)
May 18, 2026
9692d60
fix(client-js): route client-tool continuations to /stream after resu…
NikAiyer May 18, 2026
afc004f
feat(server): support route-specific CORS configuration (#16689)
intojhanurag May 18, 2026
b3ff840
fix(playground-ui): migrate Tooltip to Base UI with bordered arrow (#…
damien-schneider May 18, 2026
a45e18f
Fix double-counted cache token costs in Metrics dashboard (#16737)
epinzur May 18, 2026
742bd18
chore: version packages
dane-ai-mastra[bot] May 18, 2026
6b25032
fix(studio): probe before opening browser-stream WebSocket, stop fram…
NikAiyer May 18, 2026
f73980d
Add FGA route policy coverage controls (#16651)
graysonhicks May 18, 2026
5ba7253
feat(server): permission foundation — array permissions, request-cont…
NikAiyer May 18, 2026
4e88dc6
fix(stream): emit pending tool calls for sub-agent streams (#16553)
intojhanurag May 18, 2026
19018f0
feat(core,editor): editor namespace polish + SkillPublishResult.files…
NikAiyer May 18, 2026
3be9b90
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 18, 2026
428262f
Revise LICENSE with updated copyright and terms (#16744)
jsumnersmith May 18, 2026
9c88701
feat(server,core,client-js): stored-entity HTTP surface + editor/buil…
NikAiyer May 18, 2026
61418af
chore: version packages
dane-ai-mastra[bot] May 19, 2026
75d54d5
Add ACP agent documentation (#16711)
wardpeet May 19, 2026
3498b49
feat(observability): add stateless delta polling for observability li…
epinzur May 19, 2026
bfadd40
fix(server): accept legacy bare-string orderBy on GET /memory/threads…
roaminro May 19, 2026
ca1152c
fix postgres pool (#16758)
wardpeet May 19, 2026
f5fb539
fix date-fns fixed import (#16757)
wardpeet May 19, 2026
a57f6bc
chore(deps): move date-fns to pnpm catalog (#16754)
damien-schneider May 19, 2026
5556cc1
fix(core): honor activeTools in durable streams (#16646)
mbenhamd May 19, 2026
8bbd317
docs: replace Experimental sidebar label with Alpha, add experimental…
devin-ai-integration[bot] May 19, 2026
7aecda0
feat(playground-ui): add live-tail polling to Traces list (#16727)
greglobinski May 19, 2026
e47bca7
fix(core): break RequestContext.toJSON infinite recursion on cross-co…
fengwuqingchen May 19, 2026
802a7f0
fix(openai-realtime): support output audio events (#16763)
mbenhamd May 19, 2026
3552b1c
Add drop event emission to MastraStorageExporter (#16755)
epinzur May 19, 2026
720a61d
feat(convex): add server cache (#16736)
mbenhamd May 19, 2026
c2e92c1
fix(playground): render Studio layout chrome optimistically on cold l…
damien-schneider May 19, 2026
1f739eb
refactor(playground-ui): drop ButtonWithTooltip in favour of Button t…
damien-schneider May 19, 2026
5499303
feat(server,editor,core): favorites API surface + scope/JSDoc fixes (…
NikAiyer May 19, 2026
b4cea75
feat: agent builder frontend helpers (#16770)
mfrachet May 19, 2026
7ab779a
fix(mastracode): track active goal pursuit time (#16690)
TylerBarnes May 19, 2026
acc5643
fix(openai-realtime): handle input transcription completion (#16759)
mbenhamd May 19, 2026
359439b
fix: inherit env for MastraCode commands (#16691)
TylerBarnes May 19, 2026
799bacc
feat(convex): add native vector search support (#16729)
mbenhamd May 19, 2026
0031d0f
fix(core): guard against undefined toolInvocation on tool-invocation …
roaminro May 19, 2026
8fcd9d0
docs(evals): guide and example for evals with memory-enabled agents (…
roaminro May 19, 2026
e8dc4c2
feat(playground-ui): refresh Button + Card design tokens (#16769)
damien-schneider May 19, 2026
13287e2
chore: version packages
dane-ai-mastra[bot] May 19, 2026
5e16cf0
feat(mastracode): return to plan after approved goal (#16676)
TylerBarnes May 19, 2026
5da2616
fix(e2e-tests/monorepo): use default import for date-fns endOfDay (#1…
damien-schneider May 19, 2026
14b69c6
feat(memory): add observeAttachments filter to ObservationalMemory (#…
CalebBarnes May 19, 2026
40de320
docs(cli): add '(use a separate terminal)' hint to npm run build in g…
devin-ai-integration[bot] May 19, 2026
96d225b
feat(fastembed): vendor fastembed-js source, remove abandoned upstrea…
devin-ai-integration[bot] May 19, 2026
9621927
fix(core): normalize field names and guard against circular refs in t…
devin-ai-integration[bot] May 19, 2026
f25d20b
fix(playground): seed Save-as-Dataset-Item fields when trace data loa…
devin-ai-integration[bot] May 19, 2026
4bd4e8e
feat(mcp): expose tool annotations to requireToolApproval (#16784)
roaminro May 19, 2026
c272d50
feat(memory): add provider-aware OM idle activation (#16663)
TylerBarnes May 19, 2026
841a222
fix(core): route agent thread stream subscriptions through pubsub (#1…
TylerBarnes May 19, 2026
6b2b6db
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 19, 2026
c960279
feat(mastracode): /om toggle to skip attachments when observer is tex…
CalebBarnes May 19, 2026
d8692af
fix(core): delegate MastraCompositeStore.init() to default and editor…
roaminro May 19, 2026
8a52e03
chore: version packages (alpha) (#16667)
dane-ai-mastra[bot] May 19, 2026
19281c7
fix(core): gate LLM background override on prior tool opt-in (#16792)
roaminro May 19, 2026
2c47b7e
Add MastraCode product analytics (#15173)
smthomas May 19, 2026
4542d3b
fix(playground): show maxSteps chat warning (#16794)
graysonhicks May 19, 2026
457143c
fix(datadog): drop empty user messages from LLM spans (#16785)
graysonhicks May 19, 2026
ac79462
feat(mastracode): add quiet mode (#16771)
TylerBarnes May 19, 2026
6209a1f
chore: version packages (alpha) (#16797)
dane-ai-mastra[bot] May 19, 2026
3ff518e
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 20, 2026
71a820b
fix(mastracode): coordinate signals over Unix socket PubSub (#16669)
TylerBarnes May 20, 2026
7dd705f
chore: version packages (alpha) (#16804)
dane-ai-mastra[bot] May 20, 2026
bb62d59
docs: fix sendSignal type and description in reference docs (#16800)
devin-ai-integration[bot] May 20, 2026
a935b0a
feat(core,react,server,deployer,hono): editor browser providers + rea…
NikAiyer May 20, 2026
2b27920
fix(mastracode): polish quiet mode follow-ups (#16807)
TylerBarnes May 20, 2026
68089ce
chore: version packages
dane-ai-mastra[bot] May 20, 2026
9aee493
fix(core): allow void in tool execute return type for suspend() (#16799)
roaminro May 20, 2026
3d2c12e
feat(playground-ui): migrate Slider to base-ui with neutral visual re…
damien-schneider May 20, 2026
5a3f337
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 20, 2026
651f29f
feat: agent builder frontend hooks (#16775)
mfrachet May 20, 2026
8d28cb9
feat(playground-ui): add ContextMenu, migrate DropdownMenu and Popove…
damien-schneider May 20, 2026
5d8003c
fix(duckdb): avoid cursor defaults that break WAL replay (#16803)
TylerBarnes May 20, 2026
7dd82ac
chore: version packages (alpha) (#16809)
dane-ai-mastra[bot] May 20, 2026
c7f7886
fix(playground): remove unused Primitives and Observability overview …
damien-schneider May 20, 2026
6d3920f
fix(clickhouse): dedupe v-next observability discovery values (#16798)
roaminro May 20, 2026
e293fd9
chore: regenerate providers and docs [skip ci]
dane-ai-mastra[bot] May 20, 2026
b699688
feat(playground-ui): migrate Dialog to Base UI (#16821)
damien-schneider May 20, 2026
eca8983
chore: version packages (alpha) (#16815)
dane-ai-mastra[bot] May 20, 2026
1698f5e
test(storage): consolidate vNext observability tests into shared suit…
abhiaiyer91 May 20, 2026
f8eed87
fix(playground): use Base UI submenu in filter menus (#16829)
damien-schneider May 20, 2026
2681e4e
chore(playground-ui): upgrade @base-ui/react to 1.5 (#16819)
damien-schneider May 20, 2026
7b74651
fix(mastracode): improve tui render scheduling (#16835)
TylerBarnes May 20, 2026
acdec89
feat(playground-ui): migrate AlertDialog to Base UI (#16824)
damien-schneider May 20, 2026
dcc7078
feat(playground-ui): migrate Collapsible to Base UI (#16825)
damien-schneider May 20, 2026
bd92c15
[codex] Add Playground typecheck gate (#16213)
graysonhicks May 20, 2026
d52b6fe
fix(core,pg,libsql): fix scheduler CPU spike — add missing indexes, a…
devin-ai-integration[bot] May 20, 2026
bf6c2a5
chore: version packages
dane-ai-mastra[bot] May 20, 2026
8534d79
feat(channels): migrate AgentChannels to agent signals API (#16517)
CalebBarnes May 20, 2026
7d36258
fix(mastracode): improve quiet mode task list contrast and alignment …
devin-ai-integration[bot] May 20, 2026
865a28e
feat(playground-ui): add custom date range to Metrics date picker (#1…
intojhanurag May 20, 2026
e146aad
fix(core): merge thread metadata and working memory on partial update…
abhiaiyer91 May 20, 2026
a702009
Added post-hog events for ee features (#16660)
jsumnersmith May 20, 2026
1ebda2d
Merge branch 'main' into nhay-claude/nifty-jennings-d20206
abhiaiyer91 May 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
109 changes: 109 additions & 0 deletions .agents/skills/testing-core-processors/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
# Testing Core Error Processors

How to write integration tests for error processors in `packages/core/src/processors/`.

## Prerequisites

- Build core before running tests: `pnpm build:core` (from repo root)
- If focused vitest runs fail to resolve `@internal/test-utils/setup`, the build step was skipped

## Mock Model Pattern

Use `MockLanguageModelV2` from `@internal/ai-sdk-v5/test` to simulate API errors and verify retry behavior.

```ts
import { APICallError } from '@internal/ai-sdk-v5';
import { convertArrayToReadableStream, MockLanguageModelV2 } from '@internal/ai-sdk-v5/test';

// Track calls and captured prompts
let callCount = 0;
const receivedPrompts: any[] = [];

const model = new MockLanguageModelV2({
doGenerate: async ({ prompt }) => {
callCount++;
receivedPrompts.push(JSON.parse(JSON.stringify(prompt)));
if (callCount === 1) {
throw new APICallError({
message: '...',
url: '...',
requestBodyValues: {},
statusCode: 400,
responseBody: '...',
isRetryable: false,
});
}
return {
rawCall: { rawPrompt: null, rawSettings: {} },
finishReason: 'stop',
usage: { inputTokens: 10, outputTokens: 20, totalTokens: 30 },
content: [{ type: 'text', text: 'response' }],
warnings: [],
};
},
doStream: async ({ prompt }) => {
// Same error logic as doGenerate
// IMPORTANT: Stream response must include all event types:
return {
rawCall: { rawPrompt: null, rawSettings: {} },
warnings: [],
stream: convertArrayToReadableStream([
{ type: 'stream-start', warnings: [] },
{ type: 'response-metadata', id: 'id-0', modelId: 'mock-model', timestamp: new Date(0) },
{ type: 'text-start', id: 'text-1' },
{ type: 'text-delta', id: 'text-1', delta: 'response text' },
{ type: 'text-end', id: 'text-1' },
{ type: 'finish', finishReason: 'stop', usage: { inputTokens: 10, outputTokens: 20, totalTokens: 30 } },
]),
};
},
});
```

### Stream Mock Gotcha

The stream mock format requires `stream-start`, `response-metadata`, `text-start`, `text-delta`, `text-end`, and `finish` events. Using only `text-delta` + `finish` (the minimal format) will result in empty text output because the AI SDK expects the full event sequence. See `prefill-error-recovery.test.ts` for the reference pattern.

## Test Structure

For each error processor, write at minimum:

1. **Happy path**: Processor catches the target error, modifies messages, retries successfully
- Assert: `agent.generate()` succeeds, mock called 2x, retry prompt has expected modifications
2. **Control test**: Same scenario without the processor — error propagates
- Assert: `agent.generate()` throws the expected error
3. **Selectivity test**: Processor ignores unrelated errors (e.g. rate limit 429)
- Assert: Error propagates, mock called only 1x

## Passing Messages with Tool Calls

When seeding conversation history for tool-related tests, pass messages as the second argument to `agent.generate()` or `agent.stream()` using the AI SDK message format:

```ts
const messages = [
{ role: 'user', content: 'Do something' },
{ role: 'assistant', content: [{ type: 'tool-call', toolCallId: 'some-id', toolName: 'myTool', args: {} }] },
{ role: 'tool', content: [{ type: 'tool-result', toolCallId: 'some-id', toolName: 'myTool', result: 'done' }] },
];
await agent.generate(messages);
```

## Running Tests

```bash
# Run focused processor tests
npx vitest run packages/core/src/processors/my-processor.test.ts

# Run all processor tests
npx vitest run packages/core/src/processors/

# Full core test suite (slower)
pnpm test:core
```

## Devin Secrets Needed

None for mock-based integration tests. For live API tests:

- `ANTHROPIC_API_KEY` — for testing against real Anthropic API
- `OPENROUTER_API_KEY` — for testing provider switching scenarios
7 changes: 0 additions & 7 deletions .changeset/@mastra_playground-ui-14584-dependencies.md

This file was deleted.

5 changes: 5 additions & 0 deletions .changeset/afraid-monkeys-buy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@mastra/voice-openai-realtime': patch
---

Fixed OpenAI Realtime voice output streaming for current audio event names.
9 changes: 9 additions & 0 deletions .changeset/auth-okta-org-server-endpoints.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
'@mastra/auth-okta': patch
---

Fix endpoint URL construction for Okta org authorization servers.

`MastraAuthOkta` concatenated `/v1/authorize` (and `/token`, `/keys`, `/logout`) directly onto `OKTA_ISSUER`. That yields the right endpoint for a custom authorization server (`https://{domain}/oauth2/default` → `.../oauth2/default/v1/authorize`), but 404s on an Okta org authorization server (`https://{domain}` → `.../v1/authorize`, whereas the real org endpoint is `.../oauth2/v1/authorize`).

An internal `endpointBase` is now derived from the issuer — verbatim when it already contains `/oauth2/`, otherwise `${issuer}/oauth2` — and used for the authorize, token, keys, and logout URLs. JWT `iss`-claim validation still uses the raw issuer so token validation stays correct on both server types. Trailing slashes on the issuer are also normalized so `OKTA_ISSUER=https://{domain}/` no longer produces `.../oauth2//v1/...`.
12 changes: 0 additions & 12 deletions .changeset/blue-bulbs-sing.md

This file was deleted.

9 changes: 9 additions & 0 deletions .changeset/blue-singers-join.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
'@mastra/playground-ui': patch
---

Added a `destructive` variant on `DropdownMenu.Item` to highlight dangerous actions like delete.

```tsx
<DropdownMenu.Item variant="destructive">Delete project</DropdownMenu.Item>
```
20 changes: 20 additions & 0 deletions .changeset/brave-caches-observe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
'@mastra/core': minor
'@mastra/memory': minor
---

Added `activateAfterIdle: "auto"` for Observational Memory early activation.

Mastra can now choose an idle activation timeout from the active model provider's prompt cache behavior. OpenAI also respects `providerOptions.openai.promptCacheRetention` when available.

```ts
const memory = new Memory({
options: {
observationalMemory: {
model: 'google/gemini-2.5-flash',
activateAfterIdle: 'auto',
activateOnProviderChange: true,
},
},
})
```
13 changes: 0 additions & 13 deletions .changeset/brave-seals-read.md

This file was deleted.

17 changes: 17 additions & 0 deletions .changeset/brave-tigers-cheer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
'@mastra/editor': minor
---

`EditorWorkspaceNamespace` can now snapshot a live `Workspace` for persistence — the reverse of `hydrateSnapshotToWorkspace()`:

```ts
const snapshot = await editor.workspace.snapshotFromWorkspace(runtimeWorkspace);
await editor.workspace.create({ id: 'my-workspace', ...snapshot });
```

`snapshotFromWorkspace()` is `async` and awaits `sandbox.getInfo()` and `filesystem.getInfo()` so async providers like `CompositeFilesystem` keep their mount metadata in the stored config.

Also includes two smaller behavioral fixes:

- `EditorSkillNamespace.publishSkillFromSource()` stores the new `files` field on the published skill version and strips `undefined` keys before calling `update()` (libsql/pg adapters reject `undefined` bind arguments).
- `CrudEditorNamespace.clearCache(id)` always calls `onCacheEvict(id)`, even when the entity wasn't cached, so subclasses can clean up runtime registries for version-specific lookups that bypass the editor cache.
5 changes: 5 additions & 0 deletions .changeset/breezy-heads-cut.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'mastracode': minor
---

Added automatic return to Plan mode when a goal started from an approved plan finishes.
5 changes: 0 additions & 5 deletions .changeset/bright-emus-fail.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/bumpy-dryers-do.md

This file was deleted.

29 changes: 29 additions & 0 deletions .changeset/busy-plants-wonder.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
'@mastra/core': minor
---

Added support for permission arrays in FGA checks and route configuration. When an array is provided, the user needs **any one** of the listed permissions (logical OR).

**Affected types**

- `FGACheckParams.permission`
- `FGARouteConfig.permission`
- `FGARouteInfo.requiresPermission`
- `FGADeniedError.permission`
- `CheckFGAOptions.permission`

Single-permission usage continues to work unchanged.

```ts
// Before — single permission only
await fga.check({
resource: { type: 'agent', id: 'abc' },
permission: 'agents:read',
});

// After — single permission or array (ANY-of)
await fga.check({
resource: { type: 'agent', id: 'abc' },
permission: ['agents:read', 'agents:execute'],
});
```
16 changes: 16 additions & 0 deletions .changeset/calm-pandas-wave.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
'@mastra/client-js': minor
---

Added `agent.browserSession(threadId?)` and `agent.closeBrowser(threadId?)` to the `Agent` resource, plus a `GetAgentBrowserSessionResponse` type.

`browserSession` probes the server's browser session state before opening a screencast WebSocket, so the connection is only made when the server has screencast support installed and an active session exists for the thread. `closeBrowser` ends the agent's browser session (or a single thread's session if `threadId` is passed). Both methods go through the configured client `baseUrl` and `apiPrefix`, so they work with servers mounted under a non-default API prefix.

```ts
const probe = await client.getAgent('my-agent').browserSession(threadId);
if (probe.screencastAvailable && probe.hasSession) {
// safe to open the screencast WebSocket
}

await client.getAgent('my-agent').closeBrowser(threadId);
```
5 changes: 0 additions & 5 deletions .changeset/chatty-clowns-clap.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/chatty-tires-juggle.md

This file was deleted.

12 changes: 0 additions & 12 deletions .changeset/chubby-ants-enjoy.md

This file was deleted.

53 changes: 53 additions & 0 deletions .changeset/chubby-pugs-refuse.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
'@mastra/convex': minor
---

Added native Convex vector search support for production workloads. The new `ConvexNativeVector` adapter uses
Convex schema-defined vector indexes and `ctx.vectorSearch` instead of loading vectors through `ConvexVector` and
scoring them in JavaScript.

Define a native vector table in `convex/schema.ts`:

```ts
import { defineSchema } from 'convex/server';
import { defineMastraNativeVectorTable } from '@mastra/convex/schema';

export default defineSchema({
docs_vectors: defineMastraNativeVectorTable({
dimensions: 1536,
}),
});
```

Export the native vector handlers:

```ts
import {
mastraNativeVectorAction,
mastraNativeVectorMutation,
mastraNativeVectorQuery,
} from '@mastra/convex/server';

export const query = mastraNativeVectorAction;
export const read = mastraNativeVectorQuery;
export const write = mastraNativeVectorMutation;
```

Then configure `ConvexNativeVector` in your Mastra app:

```ts
import { ConvexNativeVector } from '@mastra/convex';

const vectorStore = new ConvexNativeVector({
id: 'convex-native-vectors',
deploymentUrl: process.env.CONVEX_URL!,
adminAuthToken: process.env.CONVEX_ADMIN_KEY!,
indexes: {
docs: {
tableName: 'docs_vectors',
vectorIndexName: 'by_embedding',
dimension: 1536,
},
},
});
```
13 changes: 13 additions & 0 deletions .changeset/chubby-wings-obey.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
'@mastra/playground-ui': patch
---

`PopoverContent` no longer forwards the underlying library's auto-focus event handlers (`onOpenAutoFocus`, `onCloseAutoFocus`). To control focus when the popover opens or closes, use `initialFocus` and `finalFocus`.

```tsx
// Before
<PopoverContent onOpenAutoFocus={(e) => e.preventDefault()} />

// After
<PopoverContent initialFocus={false} />
```
5 changes: 0 additions & 5 deletions .changeset/clean-bears-seal.md

This file was deleted.

5 changes: 5 additions & 0 deletions .changeset/clean-seals-press.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@mastra/server': patch
---

Fixed stored resource updates to preserve existing metadata keys.
17 changes: 17 additions & 0 deletions .changeset/clear-eagles-throw.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
'@mastra/playground-ui': minor
---

Added `ContextMenu` for right-click interactions. Supports submenus, checkbox and radio items, keyboard shortcuts, and a `destructive` variant for dangerous actions like delete.

```tsx
import { ContextMenu } from '@mastra/playground-ui';

<ContextMenu>
<ContextMenu.Trigger className="…">Right click here</ContextMenu.Trigger>
<ContextMenu.Content>
<ContextMenu.Item>Rename</ContextMenu.Item>
<ContextMenu.Item variant="destructive">Delete</ContextMenu.Item>
</ContextMenu.Content>
</ContextMenu>;
```
Loading
Loading