@mastra/core 1.2.1-alpha.0 → 1.3.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/CHANGELOG.md +341 -0
  2. package/dist/_types/@internal_ai-sdk-v5/dist/index.d.ts +2093 -262
  3. package/dist/agent/agent-legacy.d.ts.map +1 -1
  4. package/dist/agent/agent.d.ts +12 -3
  5. package/dist/agent/agent.d.ts.map +1 -1
  6. package/dist/agent/index.cjs +13 -13
  7. package/dist/agent/index.js +2 -2
  8. package/dist/agent/message-list/index.cjs +18 -18
  9. package/dist/agent/message-list/index.js +1 -1
  10. package/dist/agent/message-list/message-list.d.ts.map +1 -1
  11. package/dist/agent/types.d.ts +6 -1
  12. package/dist/agent/types.d.ts.map +1 -1
  13. package/dist/agent/workflows/prepare-stream/index.d.ts +3 -1
  14. package/dist/agent/workflows/prepare-stream/index.d.ts.map +1 -1
  15. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts.map +1 -1
  16. package/dist/agent/workflows/prepare-stream/stream-step.d.ts +3 -1
  17. package/dist/agent/workflows/prepare-stream/stream-step.d.ts.map +1 -1
  18. package/dist/base.cjs +2 -2
  19. package/dist/base.d.ts +13 -1
  20. package/dist/base.d.ts.map +1 -1
  21. package/dist/base.js +1 -1
  22. package/dist/bundler/index.cjs +2 -2
  23. package/dist/bundler/index.js +1 -1
  24. package/dist/cache/index.cjs +3 -3
  25. package/dist/cache/index.js +1 -1
  26. package/dist/{chunk-ENCTSDWC.js → chunk-2GWTJFVM.js} +2410 -1402
  27. package/dist/chunk-2GWTJFVM.js.map +1 -0
  28. package/dist/{chunk-OB4V67IX.cjs → chunk-2K5PNW2U.cjs} +4 -4
  29. package/dist/{chunk-OB4V67IX.cjs.map → chunk-2K5PNW2U.cjs.map} +1 -1
  30. package/dist/{chunk-VZXYBFCX.cjs → chunk-2P6DD7M5.cjs} +10 -10
  31. package/dist/{chunk-VZXYBFCX.cjs.map → chunk-2P6DD7M5.cjs.map} +1 -1
  32. package/dist/{chunk-Q2D7LERO.cjs → chunk-2VD5OGOT.cjs} +4 -4
  33. package/dist/{chunk-Q2D7LERO.cjs.map → chunk-2VD5OGOT.cjs.map} +1 -1
  34. package/dist/{chunk-2DMSFLJY.cjs → chunk-6TZKQI4R.cjs} +8 -8
  35. package/dist/chunk-6TZKQI4R.cjs.map +1 -0
  36. package/dist/{chunk-4NG7CKEG.js → chunk-6VGCVSP4.js} +3 -3
  37. package/dist/{chunk-4NG7CKEG.js.map → chunk-6VGCVSP4.js.map} +1 -1
  38. package/dist/{chunk-IIZF4W7B.cjs → chunk-7UWHFWST.cjs} +52 -5
  39. package/dist/chunk-7UWHFWST.cjs.map +1 -0
  40. package/dist/{chunk-VW7YQWDW.cjs → chunk-BFIOQFGF.cjs} +28 -2
  41. package/dist/chunk-BFIOQFGF.cjs.map +1 -0
  42. package/dist/{chunk-E3VFKTIA.js → chunk-BXLLXTT4.js} +2245 -179
  43. package/dist/chunk-BXLLXTT4.js.map +1 -0
  44. package/dist/{chunk-HMCXNOF6.cjs → chunk-CGPH7CMG.cjs} +2431 -1417
  45. package/dist/chunk-CGPH7CMG.cjs.map +1 -0
  46. package/dist/{chunk-GVLPTDJA.cjs → chunk-D5JZT6EK.cjs} +236 -63
  47. package/dist/chunk-D5JZT6EK.cjs.map +1 -0
  48. package/dist/{chunk-5SOS47PH.cjs → chunk-FLHFB23E.cjs} +454 -222
  49. package/dist/chunk-FLHFB23E.cjs.map +1 -0
  50. package/dist/{chunk-XCPEEIHI.cjs → chunk-GCTAD6B7.cjs} +3012 -927
  51. package/dist/chunk-GCTAD6B7.cjs.map +1 -0
  52. package/dist/{chunk-W3AQUG66.js → chunk-GIY5BINT.js} +4 -4
  53. package/dist/{chunk-W3AQUG66.js.map → chunk-GIY5BINT.js.map} +1 -1
  54. package/dist/{chunk-M6VFJX5A.js → chunk-GMSAGYTB.js} +3 -3
  55. package/dist/{chunk-M6VFJX5A.js.map → chunk-GMSAGYTB.js.map} +1 -1
  56. package/dist/{chunk-JRJJ5VQE.cjs → chunk-GZD6443M.cjs} +99 -55
  57. package/dist/chunk-GZD6443M.cjs.map +1 -0
  58. package/dist/{chunk-Z6NRYYOH.js → chunk-ILQXPZCD.js} +9 -4
  59. package/dist/chunk-ILQXPZCD.js.map +1 -0
  60. package/dist/{chunk-5YVR7B4R.js → chunk-JQNREL64.js} +29 -9
  61. package/dist/chunk-JQNREL64.js.map +1 -0
  62. package/dist/{chunk-QOFI2WBM.cjs → chunk-JU6K7UDX.cjs} +991 -229
  63. package/dist/chunk-JU6K7UDX.cjs.map +1 -0
  64. package/dist/{chunk-HN2MSTR6.cjs → chunk-KAJNBNWP.cjs} +283 -38
  65. package/dist/chunk-KAJNBNWP.cjs.map +1 -0
  66. package/dist/{chunk-MSWXEOZC.js → chunk-KL2JPSRX.js} +5 -5
  67. package/dist/chunk-KL2JPSRX.js.map +1 -0
  68. package/dist/{chunk-MQB7XFXP.js → chunk-LHRHOPUC.js} +3 -3
  69. package/dist/{chunk-MQB7XFXP.js.map → chunk-LHRHOPUC.js.map} +1 -1
  70. package/dist/{chunk-VX7UA3SO.js → chunk-MOOJ3H3C.js} +974 -217
  71. package/dist/chunk-MOOJ3H3C.js.map +1 -0
  72. package/dist/{chunk-HU2ONA2W.cjs → chunk-ON2KVIUJ.cjs} +17 -17
  73. package/dist/{chunk-HU2ONA2W.cjs.map → chunk-ON2KVIUJ.cjs.map} +1 -1
  74. package/dist/{chunk-I66TMZJ3.cjs → chunk-OOCEAC6U.cjs} +21 -18
  75. package/dist/chunk-OOCEAC6U.cjs.map +1 -0
  76. package/dist/{chunk-MNWW2R3U.js → chunk-OV7OOUUR.js} +90 -54
  77. package/dist/chunk-OV7OOUUR.js.map +1 -0
  78. package/dist/{chunk-C4WWWQHT.cjs → chunk-RO47SMI7.cjs} +23 -3
  79. package/dist/chunk-RO47SMI7.cjs.map +1 -0
  80. package/dist/{chunk-6FG6FU5Y.cjs → chunk-RQ56ZSIR.cjs} +4 -4
  81. package/dist/{chunk-6FG6FU5Y.cjs.map → chunk-RQ56ZSIR.cjs.map} +1 -1
  82. package/dist/{chunk-IW3BNL7A.js → chunk-RS6CZXGA.js} +50 -3
  83. package/dist/chunk-RS6CZXGA.js.map +1 -0
  84. package/dist/{chunk-AIJLACR2.js → chunk-S53FKKVL.js} +27 -3
  85. package/dist/chunk-S53FKKVL.js.map +1 -0
  86. package/dist/{chunk-G6E3QNJC.js → chunk-SBPPGJL6.js} +4078 -4333
  87. package/dist/chunk-SBPPGJL6.js.map +1 -0
  88. package/dist/{chunk-UZL4H5P2.cjs → chunk-SH4PCZ3X.cjs} +5375 -5648
  89. package/dist/chunk-SH4PCZ3X.cjs.map +1 -0
  90. package/dist/{chunk-ZWM2CAIM.js → chunk-STKNQDVA.js} +4 -4
  91. package/dist/{chunk-ZWM2CAIM.js.map → chunk-STKNQDVA.js.map} +1 -1
  92. package/dist/{chunk-A5QFWX67.cjs → chunk-U2CABSMC.cjs} +79 -59
  93. package/dist/chunk-U2CABSMC.cjs.map +1 -0
  94. package/dist/{chunk-7MDVYPWX.cjs → chunk-UE2G2LRP.cjs} +9 -4
  95. package/dist/chunk-UE2G2LRP.cjs.map +1 -0
  96. package/dist/{chunk-AUF6U2BL.js → chunk-VM25PDSW.js} +5 -5
  97. package/dist/{chunk-AUF6U2BL.js.map → chunk-VM25PDSW.js.map} +1 -1
  98. package/dist/{chunk-RXD5EGQF.js → chunk-VVD56FI4.js} +228 -55
  99. package/dist/chunk-VVD56FI4.js.map +1 -0
  100. package/dist/{chunk-JIT2OY3X.js → chunk-WCAFTXGK.js} +23 -3
  101. package/dist/chunk-WCAFTXGK.js.map +1 -0
  102. package/dist/{chunk-P62OJXQ4.js → chunk-WL3AW3YA.js} +282 -37
  103. package/dist/chunk-WL3AW3YA.js.map +1 -0
  104. package/dist/{chunk-YLODOPYM.cjs → chunk-XDD5V446.cjs} +4163 -5352
  105. package/dist/chunk-XDD5V446.cjs.map +1 -0
  106. package/dist/{chunk-B4M33FCS.cjs → chunk-XQVYEOI7.cjs} +7 -7
  107. package/dist/{chunk-B4M33FCS.cjs.map → chunk-XQVYEOI7.cjs.map} +1 -1
  108. package/dist/{chunk-BP2TSCBW.js → chunk-ZATLLPIH.js} +4391 -5561
  109. package/dist/chunk-ZATLLPIH.js.map +1 -0
  110. package/dist/{chunk-T6PRRKMW.js → chunk-ZHFM7HCQ.js} +9 -6
  111. package/dist/chunk-ZHFM7HCQ.js.map +1 -0
  112. package/dist/{chunk-WFUNLRQX.js → chunk-ZRUTE56J.js} +366 -134
  113. package/dist/chunk-ZRUTE56J.js.map +1 -0
  114. package/dist/deployer/index.cjs +2 -2
  115. package/dist/deployer/index.js +1 -1
  116. package/dist/docs/SKILL.md +2 -9
  117. package/dist/docs/assets/SOURCE_MAP.json +399 -342
  118. package/dist/docs/references/docs-agents-agent-memory.md +45 -1
  119. package/dist/docs/references/docs-agents-network-approval.md +1 -1
  120. package/dist/docs/references/docs-agents-networks.md +3 -3
  121. package/dist/docs/references/docs-agents-overview.md +8 -0
  122. package/dist/docs/references/docs-agents-using-tools.md +82 -72
  123. package/dist/docs/references/docs-memory-observational-memory.md +11 -8
  124. package/dist/docs/references/docs-observability-overview.md +1 -1
  125. package/dist/docs/references/docs-observability-tracing-exporters-langsmith.md +70 -0
  126. package/dist/docs/references/docs-observability-tracing-overview.md +1 -1
  127. package/dist/docs/references/docs-server-middleware.md +0 -2
  128. package/dist/docs/references/docs-server-request-context.md +17 -0
  129. package/dist/docs/references/docs-workflows-agents-and-tools.md +2 -2
  130. package/dist/docs/references/docs-workflows-overview.md +1 -1
  131. package/dist/docs/references/docs-workspace-filesystem.md +2 -0
  132. package/dist/docs/references/docs-workspace-overview.md +3 -1
  133. package/dist/docs/references/docs-workspace-sandbox.md +2 -0
  134. package/dist/docs/references/docs-workspace-search.md +2 -0
  135. package/dist/docs/references/docs-workspace-skills.md +3 -1
  136. package/dist/docs/references/reference-agents-getTools.md +1 -6
  137. package/dist/docs/references/reference-agents-listAgents.md +1 -1
  138. package/dist/docs/references/reference-agents-network.md +0 -2
  139. package/dist/docs/references/reference-cli-mastra.md +29 -4
  140. package/dist/docs/references/reference-client-js-agents.md +1 -1
  141. package/dist/docs/references/reference-configuration.md +1 -1
  142. package/dist/docs/references/reference-core-getStoredAgentById.md +2 -2
  143. package/dist/docs/references/reference-core-listStoredAgents.md +1 -1
  144. package/dist/docs/references/reference-memory-observational-memory.md +2 -0
  145. package/dist/docs/references/reference-tools-mcp-client.md +0 -2
  146. package/dist/docs/references/reference-workflows-step.md +2 -0
  147. package/dist/docs/references/reference-workflows-workflow-methods-map.md +2 -2
  148. package/dist/docs/references/reference-workspace-filesystem.md +2 -0
  149. package/dist/docs/references/reference-workspace-local-filesystem.md +2 -0
  150. package/dist/docs/references/reference-workspace-local-sandbox.md +2 -0
  151. package/dist/docs/references/reference-workspace-sandbox.md +2 -0
  152. package/dist/docs/references/reference-workspace-workspace-class.md +2 -0
  153. package/dist/docs/references/reference.md +7 -2
  154. package/dist/editor/index.d.ts +1 -1
  155. package/dist/editor/index.d.ts.map +1 -1
  156. package/dist/editor/types.d.ts +53 -48
  157. package/dist/editor/types.d.ts.map +1 -1
  158. package/dist/evals/base.d.ts +15 -0
  159. package/dist/evals/base.d.ts.map +1 -1
  160. package/dist/evals/index.cjs +20 -20
  161. package/dist/evals/index.js +3 -3
  162. package/dist/evals/run/index.d.ts +3 -3
  163. package/dist/evals/run/index.d.ts.map +1 -1
  164. package/dist/evals/scoreTraces/index.cjs +5 -5
  165. package/dist/evals/scoreTraces/index.js +2 -2
  166. package/dist/features/index.cjs +1 -1
  167. package/dist/features/index.cjs.map +1 -1
  168. package/dist/features/index.d.ts.map +1 -1
  169. package/dist/features/index.js +1 -1
  170. package/dist/features/index.js.map +1 -1
  171. package/dist/index.cjs +4 -4
  172. package/dist/index.d.ts +3 -3
  173. package/dist/index.d.ts.map +1 -1
  174. package/dist/index.js +2 -2
  175. package/dist/integration/index.cjs +2 -2
  176. package/dist/integration/index.js +1 -1
  177. package/dist/llm/index.cjs +16 -16
  178. package/dist/llm/index.js +5 -5
  179. package/dist/llm/model/gateways/constants.d.ts.map +1 -1
  180. package/dist/llm/model/gateways/models-dev.d.ts.map +1 -1
  181. package/dist/llm/model/model.loop.d.ts +1 -1
  182. package/dist/llm/model/model.loop.d.ts.map +1 -1
  183. package/dist/llm/model/provider-types.generated.d.ts +128 -10
  184. package/dist/llm/model/resolve-model.d.ts.map +1 -1
  185. package/dist/loop/index.cjs +12 -12
  186. package/dist/loop/index.js +1 -1
  187. package/dist/loop/network/index.d.ts +3 -3
  188. package/dist/loop/network/index.d.ts.map +1 -1
  189. package/dist/loop/network/run-command-tool.d.ts +1 -1
  190. package/dist/loop/types.d.ts +13 -0
  191. package/dist/loop/types.d.ts.map +1 -1
  192. package/dist/loop/workflows/agentic-execution/index.d.ts +9 -9
  193. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts +7 -7
  194. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
  195. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts +3 -3
  196. package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts.map +1 -1
  197. package/dist/loop/workflows/agentic-loop/index.d.ts +9 -9
  198. package/dist/loop/workflows/schema.d.ts +12 -12
  199. package/dist/mastra/index.cjs +2 -2
  200. package/dist/mastra/index.d.ts +91 -5
  201. package/dist/mastra/index.d.ts.map +1 -1
  202. package/dist/mastra/index.js +1 -1
  203. package/dist/mcp/index.cjs +2 -2
  204. package/dist/mcp/index.js +1 -1
  205. package/dist/memory/index.cjs +14 -14
  206. package/dist/memory/index.js +1 -1
  207. package/dist/memory/mock.d.ts.map +1 -1
  208. package/dist/memory/types.d.ts +128 -0
  209. package/dist/memory/types.d.ts.map +1 -1
  210. package/dist/models-dev-FQVUTQ7L.js +3 -0
  211. package/dist/{models-dev-Z45JSLWD.js.map → models-dev-FQVUTQ7L.js.map} +1 -1
  212. package/dist/models-dev-PPIXUUCU.cjs +12 -0
  213. package/dist/{models-dev-OQKVMEIT.cjs.map → models-dev-PPIXUUCU.cjs.map} +1 -1
  214. package/dist/netlify-4RIKF7Y3.js +3 -0
  215. package/dist/{netlify-SSWMYSAX.js.map → netlify-4RIKF7Y3.js.map} +1 -1
  216. package/dist/netlify-V5F7JEJH.cjs +12 -0
  217. package/dist/{netlify-TXZZCT6N.cjs.map → netlify-V5F7JEJH.cjs.map} +1 -1
  218. package/dist/processors/index.cjs +41 -41
  219. package/dist/processors/index.js +1 -1
  220. package/dist/processors/step-schema.d.ts +44 -44
  221. package/dist/provider-registry-C6XCYX44.cjs +40 -0
  222. package/dist/{provider-registry-NR7FXV2Q.cjs.map → provider-registry-C6XCYX44.cjs.map} +1 -1
  223. package/dist/provider-registry-NWU4YFQW.js +3 -0
  224. package/dist/{provider-registry-RPOTQNHI.js.map → provider-registry-NWU4YFQW.js.map} +1 -1
  225. package/dist/provider-registry.json +278 -33
  226. package/dist/relevance/index.cjs +3 -3
  227. package/dist/relevance/index.js +1 -1
  228. package/dist/server/index.cjs +3 -3
  229. package/dist/server/index.js +1 -1
  230. package/dist/storage/base.d.ts +3 -1
  231. package/dist/storage/base.d.ts.map +1 -1
  232. package/dist/storage/constants.cjs +51 -19
  233. package/dist/storage/constants.d.ts +10 -2
  234. package/dist/storage/constants.d.ts.map +1 -1
  235. package/dist/storage/constants.js +1 -1
  236. package/dist/storage/domains/agents/base.d.ts +13 -164
  237. package/dist/storage/domains/agents/base.d.ts.map +1 -1
  238. package/dist/storage/domains/agents/index.d.ts +0 -1
  239. package/dist/storage/domains/agents/index.d.ts.map +1 -1
  240. package/dist/storage/domains/agents/inmemory.d.ts +6 -10
  241. package/dist/storage/domains/agents/inmemory.d.ts.map +1 -1
  242. package/dist/storage/domains/index.d.ts +3 -0
  243. package/dist/storage/domains/index.d.ts.map +1 -1
  244. package/dist/storage/domains/inmemory-db.d.ts +7 -1
  245. package/dist/storage/domains/inmemory-db.d.ts.map +1 -1
  246. package/dist/storage/domains/memory/base.d.ts +45 -5
  247. package/dist/storage/domains/memory/base.d.ts.map +1 -1
  248. package/dist/storage/domains/memory/inmemory.d.ts +7 -7
  249. package/dist/storage/domains/memory/inmemory.d.ts.map +1 -1
  250. package/dist/storage/domains/observability/types.d.ts +62 -62
  251. package/dist/storage/domains/operations/inmemory.d.ts.map +1 -1
  252. package/dist/storage/domains/prompt-blocks/base.d.ts +47 -0
  253. package/dist/storage/domains/prompt-blocks/base.d.ts.map +1 -0
  254. package/dist/storage/domains/prompt-blocks/index.d.ts +3 -0
  255. package/dist/storage/domains/prompt-blocks/index.d.ts.map +1 -0
  256. package/dist/storage/domains/prompt-blocks/inmemory.d.ts +31 -0
  257. package/dist/storage/domains/prompt-blocks/inmemory.d.ts.map +1 -0
  258. package/dist/storage/domains/scorer-definitions/base.d.ts +47 -0
  259. package/dist/storage/domains/scorer-definitions/base.d.ts.map +1 -0
  260. package/dist/storage/domains/scorer-definitions/index.d.ts +3 -0
  261. package/dist/storage/domains/scorer-definitions/index.d.ts.map +1 -0
  262. package/dist/storage/domains/scorer-definitions/inmemory.d.ts +31 -0
  263. package/dist/storage/domains/scorer-definitions/inmemory.d.ts.map +1 -0
  264. package/dist/storage/domains/versioned.d.ts +136 -0
  265. package/dist/storage/domains/versioned.d.ts.map +1 -0
  266. package/dist/storage/index.cjs +156 -104
  267. package/dist/storage/index.js +2 -2
  268. package/dist/storage/mock.d.ts.map +1 -1
  269. package/dist/storage/types.d.ts +481 -27
  270. package/dist/storage/types.d.ts.map +1 -1
  271. package/dist/stream/MastraAgentNetworkStream.d.ts +1 -1
  272. package/dist/stream/MastraWorkflowStream.d.ts +1 -1
  273. package/dist/stream/RunOutput.d.ts +1 -1
  274. package/dist/stream/RunOutput.d.ts.map +1 -1
  275. package/dist/stream/base/output.d.ts +4 -0
  276. package/dist/stream/base/output.d.ts.map +1 -1
  277. package/dist/stream/index.cjs +11 -11
  278. package/dist/stream/index.js +2 -2
  279. package/dist/test-utils/llm-mock.cjs +4 -4
  280. package/dist/test-utils/llm-mock.js +1 -1
  281. package/dist/tool-loop-agent/index.cjs +4 -4
  282. package/dist/tool-loop-agent/index.js +1 -1
  283. package/dist/tools/index.cjs +4 -4
  284. package/dist/tools/index.js +1 -1
  285. package/dist/tools/is-vercel-tool.cjs +2 -2
  286. package/dist/tools/is-vercel-tool.js +1 -1
  287. package/dist/tools/tool-builder/builder.d.ts.map +1 -1
  288. package/dist/tools/types.d.ts +15 -0
  289. package/dist/tools/types.d.ts.map +1 -1
  290. package/dist/tools/validation.d.ts.map +1 -1
  291. package/dist/tts/index.cjs +2 -2
  292. package/dist/tts/index.js +1 -1
  293. package/dist/types/zod-compat.d.ts +2 -2
  294. package/dist/types/zod-compat.d.ts.map +1 -1
  295. package/dist/utils/zod-utils.d.ts +19 -0
  296. package/dist/utils/zod-utils.d.ts.map +1 -1
  297. package/dist/utils.cjs +28 -28
  298. package/dist/utils.d.ts +7 -1
  299. package/dist/utils.d.ts.map +1 -1
  300. package/dist/utils.js +2 -2
  301. package/dist/vector/index.cjs +9 -9
  302. package/dist/vector/index.js +2 -2
  303. package/dist/voice/index.cjs +6 -6
  304. package/dist/voice/index.js +1 -1
  305. package/dist/workflows/evented/index.cjs +10 -10
  306. package/dist/workflows/evented/index.js +1 -1
  307. package/dist/workflows/evented/step-executor.d.ts.map +1 -1
  308. package/dist/workflows/evented/workflow.d.ts +3 -1
  309. package/dist/workflows/evented/workflow.d.ts.map +1 -1
  310. package/dist/workflows/execution-engine.d.ts.map +1 -1
  311. package/dist/workflows/index.cjs +25 -25
  312. package/dist/workflows/index.js +1 -1
  313. package/dist/workflows/step.d.ts +4 -3
  314. package/dist/workflows/step.d.ts.map +1 -1
  315. package/dist/workflows/types.d.ts +2 -1
  316. package/dist/workflows/types.d.ts.map +1 -1
  317. package/dist/workflows/workflow.d.ts +12 -4
  318. package/dist/workflows/workflow.d.ts.map +1 -1
  319. package/dist/workspace/errors.d.ts +6 -0
  320. package/dist/workspace/errors.d.ts.map +1 -1
  321. package/dist/workspace/filesystem/composite-filesystem.d.ts +93 -0
  322. package/dist/workspace/filesystem/composite-filesystem.d.ts.map +1 -0
  323. package/dist/workspace/filesystem/filesystem.d.ts +35 -0
  324. package/dist/workspace/filesystem/filesystem.d.ts.map +1 -1
  325. package/dist/workspace/filesystem/index.d.ts +2 -0
  326. package/dist/workspace/filesystem/index.d.ts.map +1 -1
  327. package/dist/workspace/filesystem/local-filesystem.d.ts +9 -1
  328. package/dist/workspace/filesystem/local-filesystem.d.ts.map +1 -1
  329. package/dist/workspace/filesystem/mastra-filesystem.d.ts +92 -3
  330. package/dist/workspace/filesystem/mastra-filesystem.d.ts.map +1 -1
  331. package/dist/workspace/filesystem/mount.d.ts +34 -0
  332. package/dist/workspace/filesystem/mount.d.ts.map +1 -0
  333. package/dist/workspace/index.cjs +62 -34
  334. package/dist/workspace/index.d.ts +6 -2
  335. package/dist/workspace/index.d.ts.map +1 -1
  336. package/dist/workspace/index.js +1 -1
  337. package/dist/workspace/lifecycle.d.ts +29 -0
  338. package/dist/workspace/lifecycle.d.ts.map +1 -1
  339. package/dist/workspace/sandbox/errors.d.ts +50 -0
  340. package/dist/workspace/sandbox/errors.d.ts.map +1 -0
  341. package/dist/workspace/sandbox/index.d.ts +3 -0
  342. package/dist/workspace/sandbox/index.d.ts.map +1 -1
  343. package/dist/workspace/sandbox/local-sandbox.d.ts +17 -2
  344. package/dist/workspace/sandbox/local-sandbox.d.ts.map +1 -1
  345. package/dist/workspace/sandbox/mastra-sandbox.d.ts +153 -6
  346. package/dist/workspace/sandbox/mastra-sandbox.d.ts.map +1 -1
  347. package/dist/workspace/sandbox/mount-manager.d.ts +195 -0
  348. package/dist/workspace/sandbox/mount-manager.d.ts.map +1 -0
  349. package/dist/workspace/sandbox/sandbox.d.ts +37 -84
  350. package/dist/workspace/sandbox/sandbox.d.ts.map +1 -1
  351. package/dist/workspace/sandbox/types.d.ts +92 -0
  352. package/dist/workspace/sandbox/types.d.ts.map +1 -0
  353. package/dist/workspace/tools/tools.d.ts.map +1 -1
  354. package/dist/workspace/tools/tree-formatter.d.ts.map +1 -1
  355. package/dist/workspace/workspace.d.ts +73 -3
  356. package/dist/workspace/workspace.d.ts.map +1 -1
  357. package/package.json +16 -16
  358. package/src/llm/model/provider-types.generated.d.ts +128 -10
  359. package/dist/chunk-2DMSFLJY.cjs.map +0 -1
  360. package/dist/chunk-5SOS47PH.cjs.map +0 -1
  361. package/dist/chunk-5YVR7B4R.js.map +0 -1
  362. package/dist/chunk-7MDVYPWX.cjs.map +0 -1
  363. package/dist/chunk-A5QFWX67.cjs.map +0 -1
  364. package/dist/chunk-AIJLACR2.js.map +0 -1
  365. package/dist/chunk-BP2TSCBW.js.map +0 -1
  366. package/dist/chunk-C4WWWQHT.cjs.map +0 -1
  367. package/dist/chunk-E3VFKTIA.js.map +0 -1
  368. package/dist/chunk-ENCTSDWC.js.map +0 -1
  369. package/dist/chunk-G6E3QNJC.js.map +0 -1
  370. package/dist/chunk-GVLPTDJA.cjs.map +0 -1
  371. package/dist/chunk-HMCXNOF6.cjs.map +0 -1
  372. package/dist/chunk-HN2MSTR6.cjs.map +0 -1
  373. package/dist/chunk-I66TMZJ3.cjs.map +0 -1
  374. package/dist/chunk-IIZF4W7B.cjs.map +0 -1
  375. package/dist/chunk-IW3BNL7A.js.map +0 -1
  376. package/dist/chunk-JIT2OY3X.js.map +0 -1
  377. package/dist/chunk-JRJJ5VQE.cjs.map +0 -1
  378. package/dist/chunk-MNWW2R3U.js.map +0 -1
  379. package/dist/chunk-MSWXEOZC.js.map +0 -1
  380. package/dist/chunk-P62OJXQ4.js.map +0 -1
  381. package/dist/chunk-QOFI2WBM.cjs.map +0 -1
  382. package/dist/chunk-RXD5EGQF.js.map +0 -1
  383. package/dist/chunk-T6PRRKMW.js.map +0 -1
  384. package/dist/chunk-UZL4H5P2.cjs.map +0 -1
  385. package/dist/chunk-VW7YQWDW.cjs.map +0 -1
  386. package/dist/chunk-VX7UA3SO.js.map +0 -1
  387. package/dist/chunk-WFUNLRQX.js.map +0 -1
  388. package/dist/chunk-XCPEEIHI.cjs.map +0 -1
  389. package/dist/chunk-YLODOPYM.cjs.map +0 -1
  390. package/dist/chunk-Z6NRYYOH.js.map +0 -1
  391. package/dist/docs/references/docs-tools-mcp-advanced-usage.md +0 -143
  392. package/dist/docs/references/docs-tools-mcp-mcp-overview.md +0 -383
  393. package/dist/docs/references/docs-tools-mcp-overview.md +0 -78
  394. package/dist/docs/references/docs-workflows-input-data-mapping.md +0 -102
  395. package/dist/docs/references/reference-deployer-netlify.md +0 -14
  396. package/dist/docs/references/reference-deployer-vercel.md +0 -39
  397. package/dist/docs/references/reference-tools-client.md +0 -228
  398. package/dist/models-dev-OQKVMEIT.cjs +0 -12
  399. package/dist/models-dev-Z45JSLWD.js +0 -3
  400. package/dist/netlify-SSWMYSAX.js +0 -3
  401. package/dist/netlify-TXZZCT6N.cjs +0 -12
  402. package/dist/provider-registry-NR7FXV2Q.cjs +0 -40
  403. package/dist/provider-registry-RPOTQNHI.js +0 -3
@@ -2,7 +2,7 @@
2
2
 
3
3
  Agents use memory to maintain context across interactions. LLMs are stateless and don't retain information between calls, so agents need memory to track message history and recall relevant information.
4
4
 
5
- Mastra agents can be configured to store message history, with optional [working memory](https://mastra.ai/docs/memory/working-memory) to maintain recent context or [semantic recall](https://mastra.ai/docs/memory/semantic-recall) to retrieve past messages based on meaning.
5
+ Mastra agents can be configured to store message history, with optional [working memory](https://mastra.ai/docs/memory/working-memory) to maintain recent context, [semantic recall](https://mastra.ai/docs/memory/semantic-recall) to retrieve past messages based on meaning, or [observational memory](https://mastra.ai/docs/memory/observational-memory) for automatic long-term memory that compresses conversations as they grow.
6
6
 
7
7
  ## When to use memory
8
8
 
@@ -134,6 +134,49 @@ const response = await memoryAgent.generate("What's my favorite color?", {
134
134
 
135
135
  To learn more about memory see the [Memory](https://mastra.ai/docs/memory/overview) documentation.
136
136
 
137
+ ## Observational Memory
138
+
139
+ For long-running conversations, raw message history grows until it fills the context window, degrading agent performance. [Observational Memory](https://mastra.ai/docs/memory/observational-memory) solves this by running background agents that compress old messages into dense observations, keeping the context window small while preserving long-term memory.
140
+
141
+ ```typescript
142
+ import { Agent } from "@mastra/core/agent";
143
+ import { Memory } from "@mastra/memory";
144
+
145
+ export const memoryAgent = new Agent({
146
+ id: 'memory-agent',
147
+ name: 'Memory Agent',
148
+ memory: new Memory({
149
+ options: {
150
+ observationalMemory: true,
151
+ },
152
+ }),
153
+ });
154
+ ```
155
+
156
+ Setting `observationalMemory: true` uses `google/gemini-2.5-flash` as the default model for the Observer and Reflector. To use a different model or customize thresholds, pass a config object:
157
+
158
+ ```typescript
159
+ import { Agent } from "@mastra/core/agent";
160
+ import { Memory } from "@mastra/memory";
161
+
162
+ export const memoryAgent = new Agent({
163
+ id: 'memory-agent',
164
+ name: 'Memory Agent',
165
+ memory: new Memory({
166
+ options: {
167
+ observationalMemory: {
168
+ model: "deepseek/deepseek-reasoner",
169
+ observation: {
170
+ messageTokens: 20_000,
171
+ },
172
+ },
173
+ },
174
+ }),
175
+ });
176
+ ```
177
+
178
+ > **Info:** See [Observational Memory](https://mastra.ai/docs/memory/observational-memory) for details on how observations and reflections work, and [the reference](https://mastra.ai/reference/memory/observational-memory) for all configuration options.
179
+
137
180
  ## Using `RequestContext`
138
181
 
139
182
  Use [RequestContext](https://mastra.ai/docs/server/request-context) to access request-specific values. This lets you conditionally select different memory or storage configurations based on the context of the request.
@@ -162,6 +205,7 @@ export const memoryAgent = new Agent({
162
205
 
163
206
  ## Related
164
207
 
208
+ - [Observational Memory](https://mastra.ai/docs/memory/observational-memory)
165
209
  - [Working Memory](https://mastra.ai/docs/memory/working-memory)
166
210
  - [Semantic Recall](https://mastra.ai/docs/memory/semantic-recall)
167
211
  - [Storage](https://mastra.ai/docs/memory/storage)
@@ -1,6 +1,6 @@
1
1
  # Network Approval
2
2
 
3
- Agent networks can require the same [human-in-the-loop](https://mastra.ai/docs/workflows/human-in-the-loop) oversight used in individual agents and workflows. When a tool, sub-agent, or workflow within a network requires approval or suspends execution, the network pauses and emits events that allow your application to collect user input before resuming.
3
+ Agent networks can require the same [human-in-the-loop](https://mastra.ai/docs/workflows/human-in-the-loop) oversight used in individual agents and workflows. When a tool, subagent, or workflow within a network requires approval or suspends execution, the network pauses and emits events that allow your application to collect user input before resuming.
4
4
 
5
5
  ## Storage
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Agent Networks
2
2
 
3
- Agent networks in Mastra coordinate multiple agents, workflows, and tools to handle tasks that aren't clearly defined upfront but can be inferred from the user's message or context. A top-level **routing agent** (a Mastra agent with other agents, workflows, and tools configured) uses an LLM to interpret the request and decide which primitives (sub-agents, workflows, or tools) to call, in what order, and with what data.
3
+ Agent networks in Mastra coordinate multiple agents, workflows, and tools to handle tasks that aren't clearly defined upfront but can be inferred from the user's message or context. A top-level **routing agent** (a Mastra agent with other agents, workflows, and tools configured) uses an LLM to interpret the request and decide which primitives (subagents, workflows, or tools) to call, in what order, and with what data.
4
4
 
5
5
  ## When to use networks
6
6
 
@@ -16,7 +16,7 @@ Mastra agent networks operate using these principles:
16
16
 
17
17
  ## Creating an agent network
18
18
 
19
- An agent network is built around a top-level routing agent that delegates tasks to agents, workflows, and tools defined in its configuration. Memory is configured on the routing agent using the `memory` option, and `instructions` define the agent's routing behavior.
19
+ An agent network is built around a top-level routing agent that delegates tasks to subagents, workflows, and tools defined in its configuration. Memory is configured on the routing agent using the `memory` option, and `instructions` define the agent's routing behavior.
20
20
 
21
21
  ```typescript
22
22
  import { Agent } from "@mastra/core/agent";
@@ -64,7 +64,7 @@ When configuring a Mastra agent network, each primitive (agent, workflow, or too
64
64
 
65
65
  #### Agent descriptions
66
66
 
67
- Each agent in a network should include a clear `description` that explains what the agent does.
67
+ Each subagent in a network should include a clear `description` that explains what the agent does.
68
68
 
69
69
  ```typescript
70
70
  export const researchAgent = new Agent({
@@ -119,6 +119,14 @@ export const mastra = new Mastra({
119
119
  });
120
120
  ```
121
121
 
122
+ ### Registering subagents
123
+
124
+ You can register subagents within an agent. They'll be executed as tools from the parent agent. Read the [using agents as tools](https://mastra.ai/docs/agents/using-tools) documentation to learn more.
125
+
126
+ ### Registering subworkflows
127
+
128
+ You can register subworkflows within an agent. They'll be executed as tools from the parent agent. Read the [using workflows as tools](https://mastra.ai/docs/agents/using-tools) documentation to learn more.
129
+
122
130
  ## Referencing an agent
123
131
 
124
132
  You can call agents from workflow steps, tools, the Mastra Client, or the command line. Get a reference by calling `.getAgent()` on your `mastra` or `mastraClient` instance, depending on your setup:
@@ -57,84 +57,49 @@ export const weatherAgent = new Agent({
57
57
  });
58
58
  ```
59
59
 
60
- ## Controlling `toolName` in stream responses
60
+ ## Using multiple tools
61
61
 
62
- The `toolName` in stream responses is determined by the **object key** you use, not the `id` property of the tool, agent, or workflow.
62
+ When multiple tools are available, the agent may choose to use one, several, or none, depending on what's needed to answer the query.
63
63
 
64
64
  ```typescript
65
- // Tool defined with id: "weather-tool"
66
- export const weatherTool = createTool({
67
- id: "weather-tool",
68
- // ...
69
- });
70
-
71
- // Using the variable name as the key
72
- tools: { weatherTool }
73
- // Stream returns: toolName: "weatherTool"
74
-
75
- // Using the tool's id as the key
76
- tools: { [weatherTool.id]: weatherTool }
77
- // Stream returns: toolName: "weather-tool"
65
+ import { weatherTool } from "../tools/weather-tool";
66
+ import { activitiesTool } from "../tools/activities-tool";
78
67
 
79
- // Using a custom key
80
- tools: { "my-custom-name": weatherTool }
81
- // Stream returns: toolName: "my-custom-name"
68
+ export const weatherAgent = new Agent({
69
+ id: "weather-agent",
70
+ name: "Weather Agent",
71
+ tools: { weatherTool, activitiesTool },
72
+ });
82
73
  ```
83
74
 
84
- This lets you specify how tools are identified in the stream. If you want the `toolName` to match the tool's `id`, use the tool's `id` as the object key.
85
-
86
- ### Sub-agents and workflows as tools
87
-
88
- Sub-agents and workflows follow the same pattern. They are converted to tools with a prefix followed by your object key:
75
+ ## Using agents as tools
89
76
 
90
- | Property | Prefix | Example key | `toolName` |
91
- | ----------- | ----------- | ----------- | ------------------- |
92
- | `agents` | `agent-` | `weather` | `agent-weather` |
93
- | `workflows` | `workflow-` | `research` | `workflow-research` |
77
+ Agents can be added to other agents through the `agents` configuration. When you add a subagent, Mastra automatically converts it to a tool that the parent agent can call. The generated tool is named `agent-<agentName>`.
94
78
 
95
79
  ```typescript
96
- const orchestrator = new Agent({
97
- // ...
80
+ import { Agent } from "@mastra/core/agent";
81
+
82
+ export const parentAgent = new Agent({
83
+ id: "parent-agent",
84
+ name: "Parent Agent",
85
+ description: "Take care in writing a good description here",
86
+ instructions: `Instructions`,
87
+ model: "openai/gpt-5.1",
98
88
  agents: {
99
- weather: weatherAgent, // toolName: "agent-weather"
100
- },
101
- workflows: {
102
- research: researchWorkflow, // toolName: "workflow-research"
89
+ subAgent,
103
90
  },
104
91
  });
105
- ```
106
-
107
- Note that for sub-agents, you'll see two different identifiers in stream responses:
108
92
 
109
- - `toolName: "agent-weather"` in tool call events — the generated tool wrapper name
110
- - `id: "weather-agent"` in `data-tool-agent` chunks — the sub-agent's actual `id` property
111
-
112
- ## Calling an agent
113
-
114
- The agent uses the tool's `inputSchema` to infer what data the tool expects. In this case, it extracts `London` as the `location` from the message and passes it to the tool's inputData parameter.
115
-
116
- ```typescript
117
- import { mastra } from "./mastra";
118
-
119
- const agent = mastra.getAgent("weatherAgent");
120
-
121
- const result = await agent.generate("What's the weather in London?");
93
+ const subAgent = new Agent({
94
+ id: "sub-agent",
95
+ name: "Sub Agent",
96
+ description: "Take care in writing a good description here",
97
+ instructions: `Instructions`,
98
+ model: "openai/gpt-5.1",
99
+ })
122
100
  ```
123
101
 
124
- ## Using multiple tools
125
-
126
- When multiple tools are available, the agent may choose to use one, several, or none, depending on what's needed to answer the query.
127
-
128
- ```typescript
129
- import { weatherTool } from "../tools/weather-tool";
130
- import { activitiesTool } from "../tools/activities-tool";
131
-
132
- export const weatherAgent = new Agent({
133
- id: "weather-agent",
134
- name: "Weather Agent",
135
- tools: { weatherTool, activitiesTool },
136
- });
137
- ```
102
+ The subagent should include a `description` to help the parent agent understand when to use it. See the [`toolName` docs](#subagents-and-workflows-as-tools) to learn more about the tool naming scheme.
138
103
 
139
104
  ## Using workflows as tools
140
105
 
@@ -169,16 +134,8 @@ import { z } from "zod";
169
134
  export const researchWorkflow = createWorkflow({
170
135
  id: "research-workflow",
171
136
  description: "Gathers information on a topic and compiles a summary report.",
172
- inputSchema: z.object({
173
- topic: z.string(),
174
- }),
175
- outputSchema: z.object({
176
- summary: z.string(),
177
- sources: z.array(z.string()),
178
- }),
137
+ // Rest of the workflow...
179
138
  })
180
- .then(gatherSourcesStep)
181
- .then(compileReportStep)
182
139
  .commit();
183
140
  ```
184
141
 
@@ -191,6 +148,59 @@ When the agent calls the workflow tool, it receives a response containing the wo
191
148
  }
192
149
  ```
193
150
 
151
+ See the [`toolName` docs](#subagents-and-workflows-as-tools) to learn more about the tool naming scheme.
152
+
153
+ ## Controlling `toolName` in stream responses
154
+
155
+ The `toolName` in stream responses is determined by the **object key** you use, not the `id` property of the tool, agent, or workflow.
156
+
157
+ ```typescript
158
+ // Tool defined with id: "weather-tool"
159
+ export const weatherTool = createTool({
160
+ id: "weather-tool",
161
+ // ...
162
+ });
163
+
164
+ // Using the variable name as the key
165
+ tools: { weatherTool }
166
+ // Stream returns: toolName: "weatherTool"
167
+
168
+ // Using the tool's id as the key
169
+ tools: { [weatherTool.id]: weatherTool }
170
+ // Stream returns: toolName: "weather-tool"
171
+
172
+ // Using a custom key
173
+ tools: { "my-custom-name": weatherTool }
174
+ // Stream returns: toolName: "my-custom-name"
175
+ ```
176
+
177
+ This lets you specify how tools are identified in the stream. If you want the `toolName` to match the tool's `id`, use the tool's `id` as the object key.
178
+
179
+ ### Subagents and workflows as tools
180
+
181
+ Subagents and workflows follow the same pattern. They are converted to tools with a prefix followed by your object key:
182
+
183
+ | Property | Prefix | Example key | `toolName` |
184
+ | ----------- | ----------- | ----------- | ------------------- |
185
+ | `agents` | `agent-` | `weather` | `agent-weather` |
186
+ | `workflows` | `workflow-` | `research` | `workflow-research` |
187
+
188
+ ```typescript
189
+ const orchestrator = new Agent({
190
+ agents: {
191
+ weather: weatherAgent, // toolName: "agent-weather"
192
+ },
193
+ workflows: {
194
+ research: researchWorkflow, // toolName: "workflow-research"
195
+ },
196
+ });
197
+ ```
198
+
199
+ Note that for subagents, you'll see two different identifiers in stream responses:
200
+
201
+ - `toolName: "agent-weather"` in tool call events — the generated tool wrapper name
202
+ - `id: "weather-agent"` in `data-tool-agent` chunks — the subagent's actual `id` property
203
+
194
204
  ## Tools with structured output
195
205
 
196
206
  When using tools with [structured output](https://mastra.ai/docs/agents/structured-output), some models don't support combining both features in the same API call. If your tools aren't being called when structured output is enabled, or you receive errors about incompatible options, see [Combining tools and structured output](https://mastra.ai/docs/agents/structured-output) for model compatibility information and workarounds.
@@ -1,9 +1,13 @@
1
1
  # Observational Memory
2
2
 
3
+ **Added in:** `@mastra/memory@1.1.0`
4
+
3
5
  Observational Memory (OM) is Mastra's memory system for long-context agentic memory. Two background agents — an **Observer** and a **Reflector** — watch your agent's conversations and maintain a dense observation log that replaces raw message history as it grows.
4
6
 
5
7
  ## Quick Start
6
8
 
9
+ Enable `observationalMemory` in the memory options when creating your agent:
10
+
7
11
  ```typescript
8
12
  import { Memory } from "@mastra/memory";
9
13
  import { Agent } from "@mastra/core/agent";
@@ -65,9 +69,9 @@ When observations exceed their threshold (default: 40,000 tokens), the Reflector
65
69
 
66
70
  The result is a three-tier system:
67
71
 
68
- 1. **Recent messages** exact conversation history for the current task
69
- 2. **Observations** a log of what the Observer has seen
70
- 3. **Reflections** condensed observations when memory becomes too long
72
+ 1. **Recent messages**: Exact conversation history for the current task
73
+ 2. **Observations**: A log of what the Observer has seen
74
+ 3. **Reflections**: Condensed observations when memory becomes too long
71
75
 
72
76
  ## Models
73
77
 
@@ -149,10 +153,9 @@ Mastra Studio shows OM status in real time in the memory tab: token usage, which
149
153
 
150
154
  ## Comparing OM with other memory features
151
155
 
152
- - **[Message history](https://mastra.ai/docs/memory/message-history)** — high-fidelity record of the current conversation
153
- - **[Working memory](https://mastra.ai/docs/memory/working-memory)** — small, structured state (JSON or markdown) for user preferences, names, goals
154
- - **[Semantic Recall](https://mastra.ai/docs/memory/semantic-recall)** RAG-based retrieval of relevant past messages
155
- - **Observational Memory** — long-context agentic memory that compresses extended sessions
156
+ - **[Message history](https://mastra.ai/docs/memory/message-history)**: High-fidelity record of the current conversation
157
+ - **[Working memory](https://mastra.ai/docs/memory/working-memory)**: Small, structured state (JSON or markdown) for user preferences, names, goals
158
+ - **[Semantic Recall](https://mastra.ai/docs/memory/semantic-recall)**: RAG-based retrieval of relevant past messages
156
159
 
157
160
  If you're using working memory to store conversation summaries or ongoing state that grows over time, OM is a better fit. Working memory is for small, structured data; OM is for long-running event logs. OM also manages message history automatically—the `messageTokens` setting controls how much raw history remains before observation runs.
158
161
 
@@ -160,7 +163,7 @@ In practical terms, OM replaces both working memory and message history, and has
160
163
 
161
164
  ## Related
162
165
 
163
- - [Observational Memory Reference](https://mastra.ai/reference/memory/observational-memory) — configuration options and API
166
+ - [Observational Memory Reference](https://mastra.ai/reference/memory/observational-memory)
164
167
  - [Memory Overview](https://mastra.ai/docs/memory/overview)
165
168
  - [Message History](https://mastra.ai/docs/memory/message-history)
166
169
  - [Memory Processors](https://mastra.ai/docs/memory/memory-processors)
@@ -57,7 +57,7 @@ export const mastra = new Mastra({
57
57
  });
58
58
  ```
59
59
 
60
- > **Serverless environments:** The `file:./mastra.db` storage URL uses the local filesystem, which doesn't work in serverless environments like Vercel, AWS Lambda, or Cloudflare Workers. For serverless deployments, use external storage. See the [Vercel deployment guide](https://mastra.ai/guides/deployment/vercel-deployer) for a complete example.
60
+ > **Serverless environments:** The `file:./mastra.db` storage URL uses the local filesystem, which doesn't work in serverless environments like Vercel, AWS Lambda, or Cloudflare Workers. For serverless deployments, use external storage. See the [Vercel deployment guide](https://mastra.ai/guides/deployment/vercel) for a complete example.
61
61
 
62
62
  With this basic setup, you will see Traces and Logs in both Studio and in Mastra Cloud.
63
63
 
@@ -126,6 +126,76 @@ new LangSmithExporter({
126
126
 
127
127
  The `projectName` config option takes precedence over the `LANGCHAIN_PROJECT` environment variable, allowing you to programmatically route traces to different projects.
128
128
 
129
+ ## Dynamic Configuration
130
+
131
+ You can dynamically override LangSmith settings per-span using `withLangsmithMetadata`. This is useful for routing traces to different projects based on runtime conditions (e.g., customer, environment, or feature).
132
+
133
+ ### Using the Helper
134
+
135
+ Use `withLangsmithMetadata` with `buildTracingOptions` to set LangSmith-specific options:
136
+
137
+ ```typescript
138
+ import { Agent } from "@mastra/core/agent";
139
+ import { buildTracingOptions } from "@mastra/observability";
140
+ import { withLangsmithMetadata } from "@mastra/langsmith";
141
+
142
+ export const supportAgent = new Agent({
143
+ id: "support-agent",
144
+ name: "support-agent",
145
+ instructions: "You are a helpful support agent.",
146
+ model: "openai/gpt-4o",
147
+ defaultOptions: {
148
+ tracingOptions: buildTracingOptions(
149
+ withLangsmithMetadata({ projectName: "customer-support" }),
150
+ ),
151
+ },
152
+ });
153
+ ```
154
+
155
+ ### Dynamic Project Routing
156
+
157
+ Use `requestContext` to route traces to different projects based on runtime conditions.
158
+
159
+ ```typescript
160
+ import { Agent } from "@mastra/core/agent";
161
+ import { buildTracingOptions } from "@mastra/observability";
162
+ import { withLangsmithMetadata } from "@mastra/langsmith";
163
+
164
+ export const supportAgent = new Agent({
165
+ id: "support-agent",
166
+ name: "support-agent",
167
+ instructions: "You are a helpful support agent.",
168
+ model: "openai/gpt-4o",
169
+ defaultOptions: ({ requestContext }) => {
170
+ const userTier = requestContext?.get("user-tier") as string;
171
+ const userId = requestContext?.get("user-id") as string;
172
+
173
+ return {
174
+ tracingOptions: buildTracingOptions(
175
+ withLangsmithMetadata({
176
+ projectName: userTier === "enterprise"
177
+ ? "enterprise-traces"
178
+ : "standard-traces",
179
+ sessionId: userId,
180
+ }),
181
+ ),
182
+ };
183
+ },
184
+ });
185
+ ```
186
+
187
+ ### Available Fields
188
+
189
+ The `withLangsmithMetadata` helper accepts these fields:
190
+
191
+ | Field | Type | Description |
192
+ | ------------- | ------ | ----------------------------------- |
193
+ | `projectName` | string | Override the project for this trace |
194
+ | `sessionId` | string | Group related traces by session |
195
+ | `sessionName` | string | Display name for the session |
196
+
197
+ All fields are optional. The helper merges with any existing metadata, so you can call it multiple times or combine with other tracing options.
198
+
129
199
  ## Related
130
200
 
131
201
  - [Tracing Overview](https://mastra.ai/docs/observability/tracing/overview)
@@ -1023,7 +1023,7 @@ This creates a single distributed trace that includes both the HTTP request hand
1023
1023
 
1024
1024
  In serverless environments like Vercel's fluid compute, AWS Lambda, or Cloudflare Workers, runtime instances can be reused across multiple requests. The `flush()` method allows you to ensure all buffered spans are exported before the runtime terminates, without shutting down the exporter (which would prevent future exports).
1025
1025
 
1026
- > **Storage requirements:** Serverless environments have ephemeral filesystems. Use external storage instead of local file storage (`file:./mastra.db`). See the [Vercel deployment guide](https://mastra.ai/guides/deployment/vercel-deployer) for a complete setup example.
1026
+ > **Storage requirements:** Serverless environments have ephemeral filesystems. Use external storage instead of local file storage (`file:./mastra.db`). See the [Vercel deployment guide](https://mastra.ai/guides/deployment/vercel) for a complete setup example.
1027
1027
 
1028
1028
  ### Using flush()
1029
1029
 
@@ -50,8 +50,6 @@ registerApiRoute("/my-custom-route", {
50
50
  });
51
51
  ```
52
52
 
53
- ***
54
-
55
53
  ## Common examples
56
54
 
57
55
  ### Using `RequestContext`
@@ -453,6 +453,23 @@ requestContextSchema: z.object({
453
453
 
454
454
  **Handle tool validation errors**: Since tools return error objects instead of throwing, check for errors in your agent or workflow logic when tool execution is critical.
455
455
 
456
+ ## Testing with Studio presets
457
+
458
+ When developing locally, you can define named presets in a JSON file and load them into Studio with the [`--request-context-presets`](https://mastra.ai/reference/cli/mastra) CLI flag. This adds a dropdown to the request context editor in Studio so you can quickly switch between configurations without manually editing JSON each time.
459
+
460
+ ```bash
461
+ mastra dev --request-context-presets ./presets.json
462
+ ```
463
+
464
+ ```json
465
+ {
466
+ "development": { "userId": "dev-user", "env": "development" },
467
+ "production": { "userId": "prod-user", "env": "production" }
468
+ }
469
+ ```
470
+
471
+ When you select a preset from the dropdown, the JSON editor populates with that preset's values. Editing the JSON manually switches the dropdown back to "Custom".
472
+
456
473
  ## Related
457
474
 
458
475
  - [Agent Request Context](https://mastra.ai/docs/agents/overview)
@@ -57,7 +57,7 @@ export const testWorkflow = createWorkflow({
57
57
  .commit();
58
58
  ```
59
59
 
60
- > **Info:** Visit [Input Data Mapping](https://mastra.ai/docs/workflows/input-data-mapping) for more information.
60
+ > **Info:** Visit [Input Data Mapping](https://mastra.ai/docs/workflows/control-flow) for more information.
61
61
 
62
62
  When no `structuredOutput` option is provided, Mastra agents use a default schema that expects a `prompt` string as input and returns a `text` string as output:
63
63
 
@@ -162,7 +162,7 @@ export const testWorkflow = createWorkflow({})
162
162
  .commit();
163
163
  ```
164
164
 
165
- > **Info:** Visit [Input Data Mapping](https://mastra.ai/docs/workflows/input-data-mapping) for more information.
165
+ > **Info:** Visit [Input Data Mapping](https://mastra.ai/docs/workflows/control-flow) for more information.
166
166
 
167
167
  ## Related
168
168
 
@@ -8,7 +8,7 @@ Workflows let you define complex sequences of tasks using clear, structured step
8
8
 
9
9
  Use workflows for tasks that are clearly defined upfront and involve multiple steps with a specific execution order. They give you fine-grained control over how data flows and transforms between steps, and which primitives are called at each stage.
10
10
 
11
- > **📹 Watch**: An introduction to workflows, and how they compare to agents [YouTube (7 minutes)](https://youtu.be/0jg2g3sNvgw)
11
+ > **Watch an introduction:** An introduction to workflows, and how they compare to agents [YouTube (7 minutes)](https://youtu.be/0jg2g3sNvgw)
12
12
 
13
13
  ## Core principles
14
14
 
@@ -1,5 +1,7 @@
1
1
  # Filesystem
2
2
 
3
+ **Added in:** `@mastra/core@1.1.0`
4
+
3
5
  Filesystem providers give agents the ability to read, write, and manage files. When you configure a filesystem on a workspace, agents receive tools for file operations.
4
6
 
5
7
  A filesystem provider handles all file operations for a workspace:
@@ -1,4 +1,6 @@
1
- # Workspace
1
+ # Workspaces
2
+
3
+ **Added in:** `@mastra/core@1.1.0`
2
4
 
3
5
  A Mastra workspace gives agents a persistent environment for storing files and executing commands. Agents use workspace tools to read and write files, run shell commands, and search indexed content.
4
6
 
@@ -1,5 +1,7 @@
1
1
  # Sandbox
2
2
 
3
+ **Added in:** `@mastra/core@1.1.0`
4
+
3
5
  Sandbox providers give agents the ability to execute shell commands. When you configure a sandbox on a workspace, agents can run commands as part of their tasks.
4
6
 
5
7
  A sandbox provider executes commands in a controlled environment:
@@ -1,5 +1,7 @@
1
1
  # Search and Indexing
2
2
 
3
+ **Added in:** `@mastra/core@1.1.0`
4
+
3
5
  Search lets agents find relevant content in indexed workspace files. When an agent needs to answer a question or find information, it can search the indexed content instead of reading every file.
4
6
 
5
7
  ## How it works
@@ -1,4 +1,6 @@
1
- # Skills
1
+ # Workspace Skills
2
+
3
+ **Added in:** `@mastra/core@1.1.0`
2
4
 
3
5
  Skills are reusable instructions that teach agents how to perform specific tasks. They follow the [Agent Skills specification](https://agentskills.io) - an open standard for packaging agent capabilities.
4
6
 
@@ -26,9 +26,4 @@ await agent.getTools({
26
26
 
27
27
  ### Options parameters
28
28
 
29
- **requestContext?:** (`RequestContext`): Runtime context for dependency injection and contextual information. (Default: `new RequestContext()`)
30
-
31
- ## Related
32
-
33
- - [Using tools with agents](https://mastra.ai/docs/agents/using-tools)
34
- - [MCP Overview](https://mastra.ai/docs/mcp/overview)
29
+ **requestContext?:** (`RequestContext`): Runtime context for dependency injection and contextual information. (Default: `new RequestContext()`)
@@ -1,6 +1,6 @@
1
1
  # Agent.listAgents()
2
2
 
3
- The `.listAgents()` method retrieves the sub-agents configured for an agent, resolving them if they're a function. These sub-agents enable the agent to access other agents and perform complex actions.
3
+ The `.listAgents()` method retrieves the subagents configured for an agent, resolving them if they're a function. These subagents enable the agent to access other agents and perform complex actions.
4
4
 
5
5
  ## Usage example
6
6
 
@@ -1,7 +1,5 @@
1
1
  # Agent.network()
2
2
 
3
- > **Experimental Feature:** This is an experimental API that may change in future versions. The `network()` method enables multi-agent collaboration and workflow orchestration. Use with caution in production environments.
4
-
5
3
  The `.network()` method enables multi-agent collaboration and routing. This method accepts messages and optional execution options.
6
4
 
7
5
  ## Usage example