@mastra/core 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (453) hide show
  1. package/CHANGELOG.md +236 -0
  2. package/dist/agent/agent.d.ts +6 -0
  3. package/dist/agent/agent.d.ts.map +1 -1
  4. package/dist/agent/index.cjs +8 -8
  5. package/dist/agent/index.js +1 -1
  6. package/dist/{chunk-VJWRJWSC.cjs → chunk-2X66GWF5.cjs} +94 -16
  7. package/dist/chunk-2X66GWF5.cjs.map +1 -0
  8. package/dist/{chunk-YM6245EM.js → chunk-6OXW5E2O.js} +3 -3
  9. package/dist/{chunk-YM6245EM.js.map → chunk-6OXW5E2O.js.map} +1 -1
  10. package/dist/{chunk-XWZAKKFT.cjs → chunk-6QBN6MZY.cjs} +14 -14
  11. package/dist/{chunk-XWZAKKFT.cjs.map → chunk-6QBN6MZY.cjs.map} +1 -1
  12. package/dist/{chunk-AYHSPIT6.cjs → chunk-7UAJ6LMR.cjs} +820 -259
  13. package/dist/chunk-7UAJ6LMR.cjs.map +1 -0
  14. package/dist/{chunk-RZNHRIM7.cjs → chunk-A72NTLFT.cjs} +5 -5
  15. package/dist/{chunk-RZNHRIM7.cjs.map → chunk-A72NTLFT.cjs.map} +1 -1
  16. package/dist/{chunk-EEU5NHHU.js → chunk-DFCRXDVK.js} +3 -3
  17. package/dist/{chunk-EEU5NHHU.js.map → chunk-DFCRXDVK.js.map} +1 -1
  18. package/dist/{chunk-5K45E5VE.js → chunk-GPJGPARM.js} +3 -2
  19. package/dist/chunk-GPJGPARM.js.map +1 -0
  20. package/dist/{chunk-LNKS4TJ6.cjs → chunk-HB6T4554.cjs} +8 -7
  21. package/dist/chunk-HB6T4554.cjs.map +1 -0
  22. package/dist/{chunk-DGS2KGDI.js → chunk-KUXNBWN7.js} +6 -5
  23. package/dist/chunk-KUXNBWN7.js.map +1 -0
  24. package/dist/{chunk-IHDE4CJV.js → chunk-QSHV7GPT.js} +89 -12
  25. package/dist/chunk-QSHV7GPT.js.map +1 -0
  26. package/dist/{chunk-3U3XFMGJ.cjs → chunk-QTAS3HND.cjs} +13 -8
  27. package/dist/chunk-QTAS3HND.cjs.map +1 -0
  28. package/dist/{chunk-RHKNKJNM.js → chunk-QWTB53GS.js} +4 -4
  29. package/dist/{chunk-RHKNKJNM.js.map → chunk-QWTB53GS.js.map} +1 -1
  30. package/dist/{chunk-4WG5K4CK.js → chunk-R4N65TLG.js} +7 -7
  31. package/dist/{chunk-4WG5K4CK.js.map → chunk-R4N65TLG.js.map} +1 -1
  32. package/dist/{chunk-5VQPSWPG.cjs → chunk-RABITNTG.cjs} +48 -48
  33. package/dist/{chunk-5VQPSWPG.cjs.map → chunk-RABITNTG.cjs.map} +1 -1
  34. package/dist/{chunk-TVPANHLE.cjs → chunk-SBOHDNIZ.cjs} +3 -2
  35. package/dist/chunk-SBOHDNIZ.cjs.map +1 -0
  36. package/dist/{chunk-MWGGSA5Q.js → chunk-T6GAM3SQ.js} +10 -5
  37. package/dist/chunk-T6GAM3SQ.js.map +1 -0
  38. package/dist/{chunk-TL2TTA4X.cjs → chunk-YQG7NBPR.cjs} +9 -9
  39. package/dist/{chunk-TL2TTA4X.cjs.map → chunk-YQG7NBPR.cjs.map} +1 -1
  40. package/dist/{chunk-XB3DA67Q.js → chunk-ZSBM2SVU.js} +818 -259
  41. package/dist/chunk-ZSBM2SVU.js.map +1 -0
  42. package/dist/datasets/experiment/scorer.d.ts.map +1 -1
  43. package/dist/datasets/index.cjs +17 -17
  44. package/dist/datasets/index.js +2 -2
  45. package/dist/evals/index.cjs +20 -20
  46. package/dist/evals/index.js +3 -3
  47. package/dist/evals/scoreTraces/index.cjs +7 -6
  48. package/dist/evals/scoreTraces/index.cjs.map +1 -1
  49. package/dist/evals/scoreTraces/index.js +4 -3
  50. package/dist/evals/scoreTraces/index.js.map +1 -1
  51. package/dist/evals/scoreTraces/scoreTracesWorkflow.d.ts.map +1 -1
  52. package/dist/harness/harness.d.ts +21 -1
  53. package/dist/harness/harness.d.ts.map +1 -1
  54. package/dist/harness/index.cjs +422 -5
  55. package/dist/harness/index.cjs.map +1 -1
  56. package/dist/harness/index.d.ts +2 -1
  57. package/dist/harness/index.d.ts.map +1 -1
  58. package/dist/harness/index.js +418 -3
  59. package/dist/harness/index.js.map +1 -1
  60. package/dist/harness/types.d.ts +151 -0
  61. package/dist/harness/types.d.ts.map +1 -1
  62. package/dist/index.cjs +2 -2
  63. package/dist/index.js +1 -1
  64. package/dist/loop/index.cjs +12 -12
  65. package/dist/loop/index.js +1 -1
  66. package/dist/loop/test-utils/tools.d.ts.map +1 -1
  67. package/dist/loop/workflows/agentic-loop/index.d.ts.map +1 -1
  68. package/dist/mastra/hooks.d.ts.map +1 -1
  69. package/dist/mastra/index.cjs +2 -2
  70. package/dist/mastra/index.js +1 -1
  71. package/dist/memory/index.cjs +14 -14
  72. package/dist/memory/index.js +1 -1
  73. package/dist/processor-provider/index.cjs +10 -10
  74. package/dist/processor-provider/index.js +1 -1
  75. package/dist/processors/index.cjs +45 -41
  76. package/dist/processors/index.js +1 -1
  77. package/dist/processors/processors/index.d.ts +1 -0
  78. package/dist/processors/processors/index.d.ts.map +1 -1
  79. package/dist/processors/processors/workspace-instructions.d.ts +50 -0
  80. package/dist/processors/processors/workspace-instructions.d.ts.map +1 -0
  81. package/dist/relevance/index.cjs +3 -3
  82. package/dist/relevance/index.js +1 -1
  83. package/dist/storage/constants.cjs +56 -56
  84. package/dist/storage/constants.d.ts.map +1 -1
  85. package/dist/storage/constants.js +1 -1
  86. package/dist/storage/index.cjs +160 -160
  87. package/dist/storage/index.js +2 -2
  88. package/dist/storage/types.d.ts +2 -0
  89. package/dist/storage/types.d.ts.map +1 -1
  90. package/dist/stream/aisdk/v5/compat/prepare-tools.d.ts.map +1 -1
  91. package/dist/stream/base/output.d.ts.map +1 -1
  92. package/dist/stream/index.cjs +8 -8
  93. package/dist/stream/index.js +1 -1
  94. package/dist/tool-loop-agent/index.cjs +4 -4
  95. package/dist/tool-loop-agent/index.js +1 -1
  96. package/dist/vector/index.cjs +7 -7
  97. package/dist/vector/index.js +1 -1
  98. package/dist/workflows/evented/index.cjs +10 -10
  99. package/dist/workflows/evented/index.js +1 -1
  100. package/dist/workflows/index.cjs +25 -25
  101. package/dist/workflows/index.js +1 -1
  102. package/dist/workspace/constants/index.d.ts +2 -0
  103. package/dist/workspace/constants/index.d.ts.map +1 -1
  104. package/dist/workspace/errors.d.ts +1 -1
  105. package/dist/workspace/errors.d.ts.map +1 -1
  106. package/dist/workspace/filesystem/composite-filesystem.d.ts +4 -1
  107. package/dist/workspace/filesystem/composite-filesystem.d.ts.map +1 -1
  108. package/dist/workspace/filesystem/file-write-lock.d.ts +35 -0
  109. package/dist/workspace/filesystem/file-write-lock.d.ts.map +1 -0
  110. package/dist/workspace/filesystem/filesystem.d.ts +5 -1
  111. package/dist/workspace/filesystem/filesystem.d.ts.map +1 -1
  112. package/dist/workspace/filesystem/index.d.ts +1 -0
  113. package/dist/workspace/filesystem/index.d.ts.map +1 -1
  114. package/dist/workspace/filesystem/local-filesystem.d.ts +17 -1
  115. package/dist/workspace/filesystem/local-filesystem.d.ts.map +1 -1
  116. package/dist/workspace/index.cjs +72 -64
  117. package/dist/workspace/index.d.ts +3 -2
  118. package/dist/workspace/index.d.ts.map +1 -1
  119. package/dist/workspace/index.js +1 -1
  120. package/dist/workspace/lifecycle.d.ts +1 -9
  121. package/dist/workspace/lifecycle.d.ts.map +1 -1
  122. package/dist/workspace/sandbox/index.d.ts +2 -0
  123. package/dist/workspace/sandbox/index.d.ts.map +1 -1
  124. package/dist/workspace/sandbox/local-process-manager.d.ts +18 -0
  125. package/dist/workspace/sandbox/local-process-manager.d.ts.map +1 -0
  126. package/dist/workspace/sandbox/local-sandbox.d.ts +49 -35
  127. package/dist/workspace/sandbox/local-sandbox.d.ts.map +1 -1
  128. package/dist/workspace/sandbox/mastra-sandbox.d.ts +45 -11
  129. package/dist/workspace/sandbox/mastra-sandbox.d.ts.map +1 -1
  130. package/dist/workspace/sandbox/native-sandbox/bubblewrap.d.ts +2 -3
  131. package/dist/workspace/sandbox/native-sandbox/bubblewrap.d.ts.map +1 -1
  132. package/dist/workspace/sandbox/native-sandbox/seatbelt.d.ts +2 -3
  133. package/dist/workspace/sandbox/native-sandbox/seatbelt.d.ts.map +1 -1
  134. package/dist/workspace/sandbox/native-sandbox/wrapper.d.ts +4 -5
  135. package/dist/workspace/sandbox/native-sandbox/wrapper.d.ts.map +1 -1
  136. package/dist/workspace/sandbox/process-manager/index.d.ts +4 -0
  137. package/dist/workspace/sandbox/process-manager/index.d.ts.map +1 -0
  138. package/dist/workspace/sandbox/process-manager/process-handle.d.ts +107 -0
  139. package/dist/workspace/sandbox/process-manager/process-handle.d.ts.map +1 -0
  140. package/dist/workspace/sandbox/process-manager/process-manager.d.ts +59 -0
  141. package/dist/workspace/sandbox/process-manager/process-manager.d.ts.map +1 -0
  142. package/dist/workspace/sandbox/process-manager/types.d.ts +24 -0
  143. package/dist/workspace/sandbox/process-manager/types.d.ts.map +1 -0
  144. package/dist/workspace/sandbox/sandbox.d.ts +38 -2
  145. package/dist/workspace/sandbox/sandbox.d.ts.map +1 -1
  146. package/dist/workspace/sandbox/types.d.ts +9 -2
  147. package/dist/workspace/sandbox/types.d.ts.map +1 -1
  148. package/dist/workspace/sandbox/utils.d.ts +7 -0
  149. package/dist/workspace/sandbox/utils.d.ts.map +1 -0
  150. package/dist/workspace/tools/execute-command.d.ts +53 -2
  151. package/dist/workspace/tools/execute-command.d.ts.map +1 -1
  152. package/dist/workspace/tools/get-process-output.d.ts +6 -0
  153. package/dist/workspace/tools/get-process-output.d.ts.map +1 -0
  154. package/dist/workspace/tools/index.d.ts +4 -1
  155. package/dist/workspace/tools/index.d.ts.map +1 -1
  156. package/dist/workspace/tools/kill-process.d.ts +4 -0
  157. package/dist/workspace/tools/kill-process.d.ts.map +1 -0
  158. package/dist/workspace/tools/output-helpers.d.ts +21 -0
  159. package/dist/workspace/tools/output-helpers.d.ts.map +1 -0
  160. package/dist/workspace/tools/tools.d.ts.map +1 -1
  161. package/dist/workspace/types.d.ts +31 -0
  162. package/dist/workspace/types.d.ts.map +1 -1
  163. package/dist/workspace/utils.d.ts +11 -0
  164. package/dist/workspace/utils.d.ts.map +1 -0
  165. package/dist/workspace/workspace.d.ts +36 -0
  166. package/dist/workspace/workspace.d.ts.map +1 -1
  167. package/package.json +7 -7
  168. package/dist/chunk-3U3XFMGJ.cjs.map +0 -1
  169. package/dist/chunk-5K45E5VE.js.map +0 -1
  170. package/dist/chunk-AYHSPIT6.cjs.map +0 -1
  171. package/dist/chunk-DGS2KGDI.js.map +0 -1
  172. package/dist/chunk-IHDE4CJV.js.map +0 -1
  173. package/dist/chunk-LNKS4TJ6.cjs.map +0 -1
  174. package/dist/chunk-MWGGSA5Q.js.map +0 -1
  175. package/dist/chunk-TVPANHLE.cjs.map +0 -1
  176. package/dist/chunk-VJWRJWSC.cjs.map +0 -1
  177. package/dist/chunk-XB3DA67Q.js.map +0 -1
  178. package/dist/docs/SKILL.md +0 -301
  179. package/dist/docs/assets/SOURCE_MAP.json +0 -1413
  180. package/dist/docs/references/docs-agents-adding-voice.md +0 -353
  181. package/dist/docs/references/docs-agents-agent-approval.md +0 -377
  182. package/dist/docs/references/docs-agents-agent-memory.md +0 -212
  183. package/dist/docs/references/docs-agents-guardrails.md +0 -382
  184. package/dist/docs/references/docs-agents-network-approval.md +0 -275
  185. package/dist/docs/references/docs-agents-networks.md +0 -290
  186. package/dist/docs/references/docs-agents-overview.md +0 -309
  187. package/dist/docs/references/docs-agents-processors.md +0 -632
  188. package/dist/docs/references/docs-agents-structured-output.md +0 -271
  189. package/dist/docs/references/docs-agents-using-tools.md +0 -214
  190. package/dist/docs/references/docs-evals-custom-scorers.md +0 -519
  191. package/dist/docs/references/docs-evals-overview.md +0 -146
  192. package/dist/docs/references/docs-evals-running-in-ci.md +0 -106
  193. package/dist/docs/references/docs-mcp-overview.md +0 -370
  194. package/dist/docs/references/docs-mcp-publishing-mcp-server.md +0 -95
  195. package/dist/docs/references/docs-memory-memory-processors.md +0 -316
  196. package/dist/docs/references/docs-memory-observational-memory.md +0 -246
  197. package/dist/docs/references/docs-memory-overview.md +0 -45
  198. package/dist/docs/references/docs-memory-semantic-recall.md +0 -272
  199. package/dist/docs/references/docs-memory-storage.md +0 -261
  200. package/dist/docs/references/docs-memory-working-memory.md +0 -400
  201. package/dist/docs/references/docs-observability-datasets-overview.md +0 -188
  202. package/dist/docs/references/docs-observability-datasets-running-experiments.md +0 -266
  203. package/dist/docs/references/docs-observability-logging.md +0 -99
  204. package/dist/docs/references/docs-observability-overview.md +0 -70
  205. package/dist/docs/references/docs-observability-tracing-bridges-otel.md +0 -209
  206. package/dist/docs/references/docs-observability-tracing-exporters-arize.md +0 -274
  207. package/dist/docs/references/docs-observability-tracing-exporters-braintrust.md +0 -111
  208. package/dist/docs/references/docs-observability-tracing-exporters-cloud.md +0 -129
  209. package/dist/docs/references/docs-observability-tracing-exporters-datadog.md +0 -187
  210. package/dist/docs/references/docs-observability-tracing-exporters-default.md +0 -211
  211. package/dist/docs/references/docs-observability-tracing-exporters-laminar.md +0 -100
  212. package/dist/docs/references/docs-observability-tracing-exporters-langfuse.md +0 -217
  213. package/dist/docs/references/docs-observability-tracing-exporters-langsmith.md +0 -202
  214. package/dist/docs/references/docs-observability-tracing-exporters-otel.md +0 -479
  215. package/dist/docs/references/docs-observability-tracing-exporters-posthog.md +0 -148
  216. package/dist/docs/references/docs-observability-tracing-overview.md +0 -1114
  217. package/dist/docs/references/docs-rag-chunking-and-embedding.md +0 -183
  218. package/dist/docs/references/docs-rag-graph-rag.md +0 -215
  219. package/dist/docs/references/docs-rag-overview.md +0 -72
  220. package/dist/docs/references/docs-rag-retrieval.md +0 -521
  221. package/dist/docs/references/docs-rag-vector-databases.md +0 -648
  222. package/dist/docs/references/docs-server-auth-auth0.md +0 -222
  223. package/dist/docs/references/docs-server-auth-clerk.md +0 -132
  224. package/dist/docs/references/docs-server-auth-composite-auth.md +0 -234
  225. package/dist/docs/references/docs-server-auth-custom-auth-provider.md +0 -513
  226. package/dist/docs/references/docs-server-auth-firebase.md +0 -272
  227. package/dist/docs/references/docs-server-auth-jwt.md +0 -110
  228. package/dist/docs/references/docs-server-auth-simple-auth.md +0 -178
  229. package/dist/docs/references/docs-server-auth-supabase.md +0 -117
  230. package/dist/docs/references/docs-server-auth-workos.md +0 -190
  231. package/dist/docs/references/docs-server-custom-adapters.md +0 -374
  232. package/dist/docs/references/docs-server-custom-api-routes.md +0 -267
  233. package/dist/docs/references/docs-server-mastra-client.md +0 -243
  234. package/dist/docs/references/docs-server-mastra-server.md +0 -71
  235. package/dist/docs/references/docs-server-middleware.md +0 -228
  236. package/dist/docs/references/docs-server-request-context.md +0 -478
  237. package/dist/docs/references/docs-streaming-events.md +0 -247
  238. package/dist/docs/references/docs-streaming-tool-streaming.md +0 -178
  239. package/dist/docs/references/docs-streaming-workflow-streaming.md +0 -109
  240. package/dist/docs/references/docs-voice-overview.md +0 -979
  241. package/dist/docs/references/docs-voice-speech-to-speech.md +0 -103
  242. package/dist/docs/references/docs-voice-speech-to-text.md +0 -80
  243. package/dist/docs/references/docs-voice-text-to-speech.md +0 -84
  244. package/dist/docs/references/docs-workflows-agents-and-tools.md +0 -170
  245. package/dist/docs/references/docs-workflows-control-flow.md +0 -823
  246. package/dist/docs/references/docs-workflows-error-handling.md +0 -360
  247. package/dist/docs/references/docs-workflows-human-in-the-loop.md +0 -213
  248. package/dist/docs/references/docs-workflows-overview.md +0 -372
  249. package/dist/docs/references/docs-workflows-snapshots.md +0 -238
  250. package/dist/docs/references/docs-workflows-suspend-and-resume.md +0 -205
  251. package/dist/docs/references/docs-workflows-time-travel.md +0 -309
  252. package/dist/docs/references/docs-workflows-workflow-state.md +0 -181
  253. package/dist/docs/references/docs-workspace-filesystem.md +0 -162
  254. package/dist/docs/references/docs-workspace-overview.md +0 -239
  255. package/dist/docs/references/docs-workspace-sandbox.md +0 -63
  256. package/dist/docs/references/docs-workspace-search.md +0 -219
  257. package/dist/docs/references/docs-workspace-skills.md +0 -126
  258. package/dist/docs/references/guides-agent-frameworks-ai-sdk.md +0 -140
  259. package/dist/docs/references/reference-agents-agent.md +0 -142
  260. package/dist/docs/references/reference-agents-generate.md +0 -174
  261. package/dist/docs/references/reference-agents-generateLegacy.md +0 -176
  262. package/dist/docs/references/reference-agents-getDefaultGenerateOptions.md +0 -36
  263. package/dist/docs/references/reference-agents-getDefaultOptions.md +0 -34
  264. package/dist/docs/references/reference-agents-getDefaultStreamOptions.md +0 -36
  265. package/dist/docs/references/reference-agents-getDescription.md +0 -21
  266. package/dist/docs/references/reference-agents-getInstructions.md +0 -34
  267. package/dist/docs/references/reference-agents-getLLM.md +0 -37
  268. package/dist/docs/references/reference-agents-getMemory.md +0 -34
  269. package/dist/docs/references/reference-agents-getModel.md +0 -34
  270. package/dist/docs/references/reference-agents-getTools.md +0 -29
  271. package/dist/docs/references/reference-agents-getVoice.md +0 -34
  272. package/dist/docs/references/reference-agents-listAgents.md +0 -35
  273. package/dist/docs/references/reference-agents-listScorers.md +0 -34
  274. package/dist/docs/references/reference-agents-listTools.md +0 -34
  275. package/dist/docs/references/reference-agents-listWorkflows.md +0 -34
  276. package/dist/docs/references/reference-agents-network.md +0 -134
  277. package/dist/docs/references/reference-ai-sdk-chat-route.md +0 -82
  278. package/dist/docs/references/reference-ai-sdk-network-route.md +0 -74
  279. package/dist/docs/references/reference-ai-sdk-to-ai-sdk-stream.md +0 -232
  280. package/dist/docs/references/reference-ai-sdk-with-mastra.md +0 -59
  281. package/dist/docs/references/reference-ai-sdk-workflow-route.md +0 -79
  282. package/dist/docs/references/reference-auth-auth0.md +0 -73
  283. package/dist/docs/references/reference-auth-clerk.md +0 -36
  284. package/dist/docs/references/reference-auth-firebase.md +0 -80
  285. package/dist/docs/references/reference-auth-jwt.md +0 -26
  286. package/dist/docs/references/reference-auth-supabase.md +0 -33
  287. package/dist/docs/references/reference-auth-workos.md +0 -84
  288. package/dist/docs/references/reference-client-js-agents.md +0 -438
  289. package/dist/docs/references/reference-configuration.md +0 -749
  290. package/dist/docs/references/reference-core-addGateway.md +0 -42
  291. package/dist/docs/references/reference-core-getAgent.md +0 -21
  292. package/dist/docs/references/reference-core-getAgentById.md +0 -21
  293. package/dist/docs/references/reference-core-getDeployer.md +0 -22
  294. package/dist/docs/references/reference-core-getGateway.md +0 -38
  295. package/dist/docs/references/reference-core-getGatewayById.md +0 -41
  296. package/dist/docs/references/reference-core-getLogger.md +0 -22
  297. package/dist/docs/references/reference-core-getMCPServer.md +0 -45
  298. package/dist/docs/references/reference-core-getMCPServerById.md +0 -53
  299. package/dist/docs/references/reference-core-getMemory.md +0 -50
  300. package/dist/docs/references/reference-core-getScorer.md +0 -54
  301. package/dist/docs/references/reference-core-getScorerById.md +0 -54
  302. package/dist/docs/references/reference-core-getServer.md +0 -22
  303. package/dist/docs/references/reference-core-getStorage.md +0 -22
  304. package/dist/docs/references/reference-core-getStoredAgentById.md +0 -89
  305. package/dist/docs/references/reference-core-getTelemetry.md +0 -22
  306. package/dist/docs/references/reference-core-getVector.md +0 -22
  307. package/dist/docs/references/reference-core-getWorkflow.md +0 -40
  308. package/dist/docs/references/reference-core-listAgents.md +0 -21
  309. package/dist/docs/references/reference-core-listGateways.md +0 -40
  310. package/dist/docs/references/reference-core-listLogs.md +0 -38
  311. package/dist/docs/references/reference-core-listLogsByRunId.md +0 -36
  312. package/dist/docs/references/reference-core-listMCPServers.md +0 -51
  313. package/dist/docs/references/reference-core-listMemory.md +0 -56
  314. package/dist/docs/references/reference-core-listScorers.md +0 -29
  315. package/dist/docs/references/reference-core-listStoredAgents.md +0 -93
  316. package/dist/docs/references/reference-core-listVectors.md +0 -22
  317. package/dist/docs/references/reference-core-listWorkflows.md +0 -21
  318. package/dist/docs/references/reference-core-mastra-class.md +0 -66
  319. package/dist/docs/references/reference-core-mastra-model-gateway.md +0 -153
  320. package/dist/docs/references/reference-core-setLogger.md +0 -26
  321. package/dist/docs/references/reference-core-setStorage.md +0 -27
  322. package/dist/docs/references/reference-datasets-addItem.md +0 -35
  323. package/dist/docs/references/reference-datasets-addItems.md +0 -33
  324. package/dist/docs/references/reference-datasets-compareExperiments.md +0 -48
  325. package/dist/docs/references/reference-datasets-create.md +0 -49
  326. package/dist/docs/references/reference-datasets-dataset.md +0 -78
  327. package/dist/docs/references/reference-datasets-datasets-manager.md +0 -84
  328. package/dist/docs/references/reference-datasets-delete.md +0 -23
  329. package/dist/docs/references/reference-datasets-deleteExperiment.md +0 -25
  330. package/dist/docs/references/reference-datasets-deleteItem.md +0 -25
  331. package/dist/docs/references/reference-datasets-deleteItems.md +0 -27
  332. package/dist/docs/references/reference-datasets-get.md +0 -29
  333. package/dist/docs/references/reference-datasets-getDetails.md +0 -45
  334. package/dist/docs/references/reference-datasets-getExperiment.md +0 -28
  335. package/dist/docs/references/reference-datasets-getItem.md +0 -31
  336. package/dist/docs/references/reference-datasets-getItemHistory.md +0 -29
  337. package/dist/docs/references/reference-datasets-list.md +0 -29
  338. package/dist/docs/references/reference-datasets-listExperimentResults.md +0 -37
  339. package/dist/docs/references/reference-datasets-listExperiments.md +0 -31
  340. package/dist/docs/references/reference-datasets-listItems.md +0 -44
  341. package/dist/docs/references/reference-datasets-listVersions.md +0 -31
  342. package/dist/docs/references/reference-datasets-startExperiment.md +0 -60
  343. package/dist/docs/references/reference-datasets-startExperimentAsync.md +0 -41
  344. package/dist/docs/references/reference-datasets-update.md +0 -46
  345. package/dist/docs/references/reference-datasets-updateItem.md +0 -36
  346. package/dist/docs/references/reference-evals-answer-relevancy.md +0 -105
  347. package/dist/docs/references/reference-evals-answer-similarity.md +0 -99
  348. package/dist/docs/references/reference-evals-bias.md +0 -120
  349. package/dist/docs/references/reference-evals-completeness.md +0 -137
  350. package/dist/docs/references/reference-evals-content-similarity.md +0 -101
  351. package/dist/docs/references/reference-evals-context-precision.md +0 -196
  352. package/dist/docs/references/reference-evals-create-scorer.md +0 -270
  353. package/dist/docs/references/reference-evals-faithfulness.md +0 -114
  354. package/dist/docs/references/reference-evals-hallucination.md +0 -220
  355. package/dist/docs/references/reference-evals-keyword-coverage.md +0 -128
  356. package/dist/docs/references/reference-evals-mastra-scorer.md +0 -123
  357. package/dist/docs/references/reference-evals-run-evals.md +0 -138
  358. package/dist/docs/references/reference-evals-scorer-utils.md +0 -330
  359. package/dist/docs/references/reference-evals-textual-difference.md +0 -113
  360. package/dist/docs/references/reference-evals-tone-consistency.md +0 -119
  361. package/dist/docs/references/reference-evals-toxicity.md +0 -123
  362. package/dist/docs/references/reference-harness-harness-class.md +0 -645
  363. package/dist/docs/references/reference-logging-pino-logger.md +0 -117
  364. package/dist/docs/references/reference-memory-deleteMessages.md +0 -40
  365. package/dist/docs/references/reference-memory-memory-class.md +0 -147
  366. package/dist/docs/references/reference-memory-observational-memory.md +0 -565
  367. package/dist/docs/references/reference-observability-tracing-bridges-otel.md +0 -131
  368. package/dist/docs/references/reference-observability-tracing-configuration.md +0 -178
  369. package/dist/docs/references/reference-observability-tracing-exporters-console-exporter.md +0 -138
  370. package/dist/docs/references/reference-observability-tracing-exporters-datadog.md +0 -116
  371. package/dist/docs/references/reference-observability-tracing-instances.md +0 -109
  372. package/dist/docs/references/reference-observability-tracing-interfaces.md +0 -749
  373. package/dist/docs/references/reference-observability-tracing-processors-sensitive-data-filter.md +0 -144
  374. package/dist/docs/references/reference-observability-tracing-spans.md +0 -224
  375. package/dist/docs/references/reference-processors-batch-parts-processor.md +0 -61
  376. package/dist/docs/references/reference-processors-language-detector.md +0 -81
  377. package/dist/docs/references/reference-processors-message-history-processor.md +0 -85
  378. package/dist/docs/references/reference-processors-moderation-processor.md +0 -104
  379. package/dist/docs/references/reference-processors-pii-detector.md +0 -107
  380. package/dist/docs/references/reference-processors-processor-interface.md +0 -525
  381. package/dist/docs/references/reference-processors-prompt-injection-detector.md +0 -71
  382. package/dist/docs/references/reference-processors-semantic-recall-processor.md +0 -123
  383. package/dist/docs/references/reference-processors-system-prompt-scrubber.md +0 -80
  384. package/dist/docs/references/reference-processors-token-limiter-processor.md +0 -113
  385. package/dist/docs/references/reference-processors-tool-call-filter.md +0 -85
  386. package/dist/docs/references/reference-processors-tool-search-processor.md +0 -113
  387. package/dist/docs/references/reference-processors-unicode-normalizer.md +0 -62
  388. package/dist/docs/references/reference-processors-working-memory-processor.md +0 -154
  389. package/dist/docs/references/reference-rag-database-config.md +0 -264
  390. package/dist/docs/references/reference-rag-embeddings.md +0 -92
  391. package/dist/docs/references/reference-server-mastra-server.md +0 -298
  392. package/dist/docs/references/reference-server-register-api-route.md +0 -249
  393. package/dist/docs/references/reference-storage-cloudflare-d1.md +0 -218
  394. package/dist/docs/references/reference-storage-composite.md +0 -235
  395. package/dist/docs/references/reference-storage-lance.md +0 -131
  396. package/dist/docs/references/reference-storage-libsql.md +0 -135
  397. package/dist/docs/references/reference-storage-mongodb.md +0 -262
  398. package/dist/docs/references/reference-storage-mssql.md +0 -155
  399. package/dist/docs/references/reference-storage-overview.md +0 -121
  400. package/dist/docs/references/reference-storage-postgresql.md +0 -529
  401. package/dist/docs/references/reference-storage-upstash.md +0 -160
  402. package/dist/docs/references/reference-streaming-ChunkType.md +0 -292
  403. package/dist/docs/references/reference-streaming-agents-MastraModelOutput.md +0 -182
  404. package/dist/docs/references/reference-streaming-agents-streamLegacy.md +0 -142
  405. package/dist/docs/references/reference-streaming-workflows-observeStream.md +0 -42
  406. package/dist/docs/references/reference-streaming-workflows-resumeStream.md +0 -61
  407. package/dist/docs/references/reference-streaming-workflows-stream.md +0 -88
  408. package/dist/docs/references/reference-streaming-workflows-timeTravelStream.md +0 -142
  409. package/dist/docs/references/reference-templates-overview.md +0 -194
  410. package/dist/docs/references/reference-tools-create-tool.md +0 -237
  411. package/dist/docs/references/reference-tools-graph-rag-tool.md +0 -185
  412. package/dist/docs/references/reference-tools-mcp-client.md +0 -962
  413. package/dist/docs/references/reference-tools-mcp-server.md +0 -1275
  414. package/dist/docs/references/reference-tools-vector-query-tool.md +0 -459
  415. package/dist/docs/references/reference-vectors-libsql.md +0 -305
  416. package/dist/docs/references/reference-vectors-mongodb.md +0 -295
  417. package/dist/docs/references/reference-vectors-pg.md +0 -408
  418. package/dist/docs/references/reference-vectors-upstash.md +0 -294
  419. package/dist/docs/references/reference-voice-composite-voice.md +0 -121
  420. package/dist/docs/references/reference-voice-mastra-voice.md +0 -313
  421. package/dist/docs/references/reference-voice-voice.addInstructions.md +0 -56
  422. package/dist/docs/references/reference-voice-voice.addTools.md +0 -67
  423. package/dist/docs/references/reference-voice-voice.connect.md +0 -94
  424. package/dist/docs/references/reference-voice-voice.events.md +0 -37
  425. package/dist/docs/references/reference-voice-voice.listen.md +0 -164
  426. package/dist/docs/references/reference-voice-voice.on.md +0 -111
  427. package/dist/docs/references/reference-voice-voice.speak.md +0 -157
  428. package/dist/docs/references/reference-workflows-run-methods-cancel.md +0 -86
  429. package/dist/docs/references/reference-workflows-run-methods-restart.md +0 -33
  430. package/dist/docs/references/reference-workflows-run-methods-resume.md +0 -59
  431. package/dist/docs/references/reference-workflows-run-methods-start.md +0 -58
  432. package/dist/docs/references/reference-workflows-run-methods-startAsync.md +0 -67
  433. package/dist/docs/references/reference-workflows-run-methods-timeTravel.md +0 -142
  434. package/dist/docs/references/reference-workflows-run.md +0 -59
  435. package/dist/docs/references/reference-workflows-step.md +0 -119
  436. package/dist/docs/references/reference-workflows-workflow-methods-branch.md +0 -25
  437. package/dist/docs/references/reference-workflows-workflow-methods-commit.md +0 -17
  438. package/dist/docs/references/reference-workflows-workflow-methods-create-run.md +0 -63
  439. package/dist/docs/references/reference-workflows-workflow-methods-dountil.md +0 -25
  440. package/dist/docs/references/reference-workflows-workflow-methods-dowhile.md +0 -25
  441. package/dist/docs/references/reference-workflows-workflow-methods-foreach.md +0 -118
  442. package/dist/docs/references/reference-workflows-workflow-methods-map.md +0 -93
  443. package/dist/docs/references/reference-workflows-workflow-methods-parallel.md +0 -21
  444. package/dist/docs/references/reference-workflows-workflow-methods-sleep.md +0 -35
  445. package/dist/docs/references/reference-workflows-workflow-methods-sleepUntil.md +0 -35
  446. package/dist/docs/references/reference-workflows-workflow-methods-then.md +0 -21
  447. package/dist/docs/references/reference-workflows-workflow.md +0 -157
  448. package/dist/docs/references/reference-workspace-filesystem.md +0 -202
  449. package/dist/docs/references/reference-workspace-local-filesystem.md +0 -327
  450. package/dist/docs/references/reference-workspace-local-sandbox.md +0 -285
  451. package/dist/docs/references/reference-workspace-sandbox.md +0 -81
  452. package/dist/docs/references/reference-workspace-workspace-class.md +0 -226
  453. package/dist/docs/references/reference.md +0 -276
@@ -1,228 +0,0 @@
1
- # Middleware
2
-
3
- Mastra servers can execute custom middleware functions before or after an API route handler is invoked. This is useful for things like authentication, logging, injecting request-specific context or adding CORS headers.
4
-
5
- A middleware receives the [Hono](https://hono.dev) `Context` (`c`) and a `next` function. If it returns a `Response` the request is short-circuited. Calling `next()` continues processing the next middleware or route handler.
6
-
7
- ```typescript
8
- import { Mastra } from "@mastra/core";
9
-
10
- export const mastra = new Mastra({
11
- server: {
12
- middleware: [
13
- {
14
- handler: async (c, next) => {
15
- // Example: Add authentication check
16
- const authHeader = c.req.header("Authorization");
17
- if (!authHeader) {
18
- return new Response("Unauthorized", { status: 401 });
19
- }
20
-
21
- await next();
22
- },
23
- path: "/api/*",
24
- },
25
- // Add a global request logger
26
- async (c, next) => {
27
- console.log(`${c.req.method} ${c.req.url}`);
28
- await next();
29
- },
30
- ],
31
- },
32
- });
33
- ```
34
-
35
- To attach middleware to a single route pass the `middleware` option to `registerApiRoute`:
36
-
37
- ```typescript
38
- registerApiRoute("/my-custom-route", {
39
- method: "GET",
40
- middleware: [
41
- async (c, next) => {
42
- console.log(`${c.req.method} ${c.req.url}`);
43
- await next();
44
- },
45
- ],
46
- handler: async (c) => {
47
- const mastra = c.get("mastra");
48
- return c.json({ message: "Hello, world!" });
49
- },
50
- });
51
- ```
52
-
53
- ## Common examples
54
-
55
- ### Using `RequestContext`
56
-
57
- You can populate `RequestContext` dynamically in server middleware by extracting information from the request. In this example, the `temperature-unit` is set based on the Cloudflare `CF-IPCountry` header to ensure responses match the user's locale.
58
-
59
- ```typescript
60
- import { Mastra } from "@mastra/core";
61
- import { RequestContext } from "@mastra/core/request-context";
62
- import { testWeatherAgent } from "./agents/test-weather-agent";
63
-
64
- export const mastra = new Mastra({
65
- agents: { testWeatherAgent },
66
- server: {
67
- middleware: [
68
- async (context, next) => {
69
- const country = context.req.header("CF-IPCountry");
70
- const requestContext = context.get("requestContext");
71
-
72
- requestContext.set(
73
- "temperature-unit",
74
- country === "US" ? "fahrenheit" : "celsius",
75
- );
76
-
77
- await next();
78
- },
79
- ],
80
- },
81
- });
82
- ```
83
-
84
- ### Authentication
85
-
86
- ```typescript
87
- {
88
- handler: async (c, next) => {
89
- const authHeader = c.req.header('Authorization');
90
- if (!authHeader || !authHeader.startsWith('Bearer ')) {
91
- return new Response('Unauthorized', { status: 401 });
92
- }
93
-
94
- // Validate token here
95
- await next();
96
- },
97
- path: '/api/*',
98
- }
99
- ```
100
-
101
- ### Authorization (User Isolation)
102
-
103
- Authentication verifies who the user is. Authorization controls what they can access. Without authorization middleware, an authenticated user could access other users' threads by guessing IDs or manipulating the `resourceId` parameter.
104
-
105
- Mastra provides reserved context keys that, when set by middleware, take precedence over client-provided values. The server automatically enforces these keys across memory and agent endpoints:
106
-
107
- ```typescript
108
- import { Mastra } from "@mastra/core";
109
- import { MASTRA_RESOURCE_ID_KEY } from "@mastra/core/request-context";
110
-
111
- export const mastra = new Mastra({
112
- server: {
113
- auth: {
114
- authenticateToken: async (token) => {
115
- // Your auth logic returns the user
116
- return verifyToken(token); // { id: 'user-123', ... }
117
- },
118
- },
119
- middleware: [
120
- {
121
- path: '/api/*',
122
- handler: async (c, next) => {
123
- const requestContext = c.get('requestContext');
124
- const user = requestContext.get('user');
125
-
126
- if (!user) {
127
- return c.json({ error: 'Unauthorized' }, 401);
128
- }
129
-
130
- // Force all API operations to use this user's ID
131
- // This takes precedence over any client-provided resourceId
132
- requestContext.set(MASTRA_RESOURCE_ID_KEY, user.id);
133
-
134
- return next();
135
- },
136
- },
137
- ],
138
- },
139
- });
140
- ```
141
-
142
- With this middleware, the server automatically:
143
-
144
- - **Filters thread listing** to only return threads owned by the user
145
- - **Validates thread access** and returns 403 if accessing another user's thread
146
- - **Forces thread creation** to use the authenticated user's ID
147
- - **Validates message operations** including deletion, ensuring messages belong to owned threads
148
-
149
- Even if a client passes `?resourceId=other-user-id`, the middleware-set value takes precedence. Attempts to access threads or messages owned by other users will return a 403 error.
150
-
151
- #### Using `MASTRA_THREAD_ID_KEY`
152
-
153
- You can also set `MASTRA_THREAD_ID_KEY` to override the client-provided thread ID:
154
-
155
- ```typescript
156
- import { MASTRA_RESOURCE_ID_KEY, MASTRA_THREAD_ID_KEY } from "@mastra/core/request-context";
157
-
158
- // Force operations to use a specific thread
159
- requestContext.set(MASTRA_THREAD_ID_KEY, validatedThreadId);
160
- ```
161
-
162
- This is useful when you want to restrict operations to a specific thread that you've validated through other means.
163
-
164
- ### CORS support
165
-
166
- ```typescript
167
- {
168
- handler: async (c, next) => {
169
- c.header('Access-Control-Allow-Origin', '*');
170
- c.header(
171
- 'Access-Control-Allow-Methods',
172
- 'GET, POST, PUT, DELETE, OPTIONS',
173
- );
174
- c.header(
175
- 'Access-Control-Allow-Headers',
176
- 'Content-Type, Authorization',
177
- );
178
-
179
- if (c.req.method === 'OPTIONS') {
180
- return new Response(null, { status: 204 });
181
- }
182
-
183
- await next();
184
- },
185
- }
186
- ```
187
-
188
- ### Request logging
189
-
190
- ```typescript
191
- {
192
- handler: async (c, next) => {
193
- const start = Date.now();
194
- await next();
195
- const duration = Date.now() - start;
196
- console.log(`${c.req.method} ${c.req.url} - ${duration}ms`);
197
- },
198
- }
199
- ```
200
-
201
- ### Special Mastra headers
202
-
203
- When integrating with Mastra Cloud or custom clients the following headers can be inspected by middleware to tailor behavior:
204
-
205
- ```typescript
206
- {
207
- handler: async (c, next) => {
208
- const isFromMastraCloud = c.req.header('x-mastra-cloud') === 'true';
209
- const clientType = c.req.header('x-mastra-client-type');
210
- const isStudio =
211
- c.req.header('x-studio') === 'true';
212
-
213
- if (isFromMastraCloud) {
214
- // Special handling
215
- }
216
- await next();
217
- },
218
- }
219
- ```
220
-
221
- - `x-mastra-cloud`: request originates from Mastra Cloud
222
- - `x-mastra-client-type`: identifies the client SDK, e.g. `js` or `python`
223
- - `x-studio`: request triggered from Studio
224
-
225
- # Related
226
-
227
- - [Request Context](https://mastra.ai/docs/server/request-context)
228
- - [Reserved Keys](https://mastra.ai/docs/server/request-context)
@@ -1,478 +0,0 @@
1
- # Request Context
2
-
3
- Agents, tools, and workflows can all accept `RequestContext` as a parameter, making request-specific values available to the underlying primitives.
4
-
5
- ## When to use `RequestContext`
6
-
7
- Use `RequestContext` when a primitive's behavior should change based on runtime conditions. For example, you might switch models or storage backends based on user attributes, or adjust instructions and tool selection based on language.
8
-
9
- > **Note:** **Note:** `RequestContext` is primarily used for passing data into specific requests. It's distinct from agent memory, which handles conversation history and state persistence across multiple calls.
10
-
11
- ## Setting values
12
-
13
- Pass `requestContext` into an agent, network, workflow, or tool call to make values available to all underlying primitives during execution. Use `.set()` to define values before making the call.
14
-
15
- The `.set()` method takes two arguments:
16
-
17
- 1. **key**: The name used to identify the value.
18
- 2. **value**: The data to associate with that key.
19
-
20
- ```typescript
21
- import { RequestContext } from "@mastra/core/request-context";
22
-
23
- export type UserTier = {
24
- "user-tier": "enterprise" | "pro";
25
- };
26
-
27
- const requestContext = new RequestContext<UserTier>();
28
- requestContext.set("user-tier", "enterprise");
29
-
30
- const agent = mastra.getAgent("weatherAgent");
31
- await agent.generate("What's the weather in London?", {
32
- requestContext,
33
- });
34
-
35
- const routingAgent = mastra.getAgent("routingAgent");
36
- routingAgent.network("What's the weather in London?", {
37
- requestContext,
38
- });
39
-
40
- const run = await mastra.getWorkflow("weatherWorkflow").createRun();
41
- await run.start({
42
- inputData: {
43
- location: "London",
44
- },
45
- requestContext,
46
- });
47
- await run.resume({
48
- resumeData: {
49
- city: "New York",
50
- },
51
- requestContext,
52
- });
53
-
54
- await weatherTool.execute(
55
- { location: "London" },
56
- { requestContext },
57
- );
58
- ```
59
-
60
- ### Setting values based on request headers
61
-
62
- You can populate `requestContext` dynamically in server middleware by extracting information from the request. In this example, the `temperature-unit` is set based on the Cloudflare `CF-IPCountry` header to ensure responses match the user's locale.
63
-
64
- ```typescript
65
- import { Mastra } from "@mastra/core";
66
- import { RequestContext } from "@mastra/core/request-context";
67
- import { testWeatherAgent } from "./agents/test-weather-agent";
68
-
69
- export const mastra = new Mastra({
70
- agents: { testWeatherAgent },
71
- server: {
72
- middleware: [
73
- async (context, next) => {
74
- const country = context.req.header("CF-IPCountry");
75
- const requestContext = context.get("requestContext");
76
-
77
- requestContext.set(
78
- "temperature-unit",
79
- country === "US" ? "fahrenheit" : "celsius",
80
- );
81
-
82
- await next();
83
- },
84
- ],
85
- },
86
- });
87
- ```
88
-
89
- > **Info:** Visit [Middleware](https://mastra.ai/docs/server/middleware) for how to use server middleware.
90
-
91
- ## Accessing values with agents
92
-
93
- You can access the `requestContext` argument from any supported configuration options in agents. These functions can be sync or `async`. Use the `.get()` method to read values from `requestContext`.
94
-
95
- ```typescript
96
- export type UserTier = {
97
- "user-tier": "enterprise" | "pro";
98
- };
99
-
100
- export const weatherAgent = new Agent({
101
- id: "weather-agent",
102
- name: "Weather Agent",
103
- instructions: async ({ requestContext }) => {
104
- const userTier = requestContext.get("user-tier") as UserTier["user-tier"];
105
-
106
- if (userTier === "enterprise") {}
107
- },
108
- model: ({ requestContext }) => {},
109
- tools: ({ requestContext }) => {},
110
- memory: ({ requestContext }) => {},
111
- });
112
- ```
113
-
114
- You can also use `requestContext` with other options like `agents`, `workflows`, `scorers`, `inputProcessors`, and `outputProcessors`.
115
-
116
- ### Dynamic instructions
117
-
118
- Agent instructions can be provided as an async function, enabling you to resolve prompts dynamically at runtime. Combined with `requestContext`, this enables patterns like:
119
-
120
- - **Personalization**: Tailor instructions based on user attributes, preferences, or tier
121
- - **Localization**: Adjust tone, language, or behavior based on locale
122
- - **A/B testing**: Serve different prompt variants for experimentation
123
- - **External prompt management**: Fetch prompts from registry services without redeploying
124
-
125
- ```typescript
126
- import { Agent } from "@mastra/core/agent";
127
-
128
- export const dynamicAgent = new Agent({
129
- id: "dynamic-agent",
130
- name: "Dynamic Agent",
131
- instructions: async ({ requestContext }) => {
132
- const userTier = requestContext?.get("user-tier");
133
- const locale = requestContext?.get("locale");
134
-
135
- // Personalize based on user tier
136
- const basePrompt = userTier === "enterprise"
137
- ? "You are a premium support agent. Provide detailed, thorough responses with technical depth."
138
- : "You are a helpful assistant. Be concise and friendly.";
139
-
140
- // Localize behavior
141
- const localeInstructions = locale === "ja"
142
- ? "Respond in Japanese using formal keigo."
143
- : "";
144
-
145
- return `${basePrompt} ${localeInstructions}`.trim();
146
- },
147
- model: "openai/gpt-5.1",
148
- });
149
- ```
150
-
151
- #### Fetching from a prompt registry
152
-
153
- If your organization uses a prompt registry service for central prompt management, you can fetch instructions at runtime. This allows you to update prompts without redeploying, run experiments with variants, and track prompt usage across your agents.
154
-
155
- ```typescript
156
- import { Agent } from "@mastra/core/agent";
157
-
158
- // Your prompt registry client
159
- import { promptRegistry } from "../lib/prompt-registry";
160
-
161
- export const registryAgent = new Agent({
162
- id: "registry-agent",
163
- name: "Registry Agent",
164
- instructions: async ({ requestContext }) => {
165
- const prompt = await promptRegistry.getPrompt({
166
- promptId: "customer-support-agent",
167
- // Pass context for variant selection or tracking
168
- variant: requestContext?.get("experiment-variant"),
169
- userId: requestContext?.get("user-id"),
170
- });
171
-
172
- return prompt.content;
173
- },
174
- model: "openai/gpt-5.1",
175
- });
176
- ```
177
-
178
- > **Info:** Visit [Agent](https://mastra.ai/reference/agents/agent) for a full list of configuration options.
179
-
180
- ## Accessing values from workflow steps
181
-
182
- You can access the `requestContext` argument from a workflow step's `execute` function. This function can be sync or async. Use the `.get()` method to read values from `requestContext`.
183
-
184
- ```typescript
185
- export type UserTier = {
186
- "user-tier": "enterprise" | "pro";
187
- };
188
-
189
- const stepOne = createStep({
190
- id: "step-one",
191
- execute: async ({ requestContext }) => {
192
- const userTier = requestContext.get("user-tier") as UserTier["user-tier"];
193
-
194
- if (userTier === "enterprise") {}
195
- },
196
- });
197
- ```
198
-
199
- > **Info:** Visit [createStep()](https://mastra.ai/reference/workflows/step) for a full list of configuration options.
200
-
201
- ## Accessing values with tools
202
-
203
- You can access the `requestContext` argument from a tool's `execute` function. This function is `async`. Use the `.get()` method to read values from `requestContext`.
204
-
205
- ```typescript
206
- export type UserTier = {
207
- "user-tier": "enterprise" | "pro";
208
- };
209
-
210
- export const weatherTool = createTool({
211
- id: "weather-tool",
212
- execute: async (inputData, context) => {
213
- const userTier = context?.requestContext?.get("user-tier") as UserTier["user-tier"] | undefined;
214
-
215
- if (userTier === "enterprise") {}
216
- },
217
- });
218
- ```
219
-
220
- > **Info:** Visit [createTool()](https://mastra.ai/reference/tools/create-tool) for a full list of configuration options.
221
-
222
- ## Reserved keys
223
-
224
- Mastra reserves special context keys for security purposes. When set by middleware, these keys take precedence over client-provided values. The server automatically validates ownership and returns 403 errors when users attempt to access resources they don't own.
225
-
226
- ```typescript
227
- import {
228
- MASTRA_RESOURCE_ID_KEY,
229
- MASTRA_THREAD_ID_KEY,
230
- } from "@mastra/core/request-context";
231
-
232
- // In middleware: force memory operations to use authenticated user's ID
233
- requestContext.set(MASTRA_RESOURCE_ID_KEY, user.id);
234
-
235
- // In middleware: set validated thread ID
236
- requestContext.set(MASTRA_THREAD_ID_KEY, threadId);
237
- ```
238
-
239
- | Key | Purpose |
240
- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ |
241
- | `MASTRA_RESOURCE_ID_KEY` | Forces all memory operations to use this resource ID. The server validates that accessed threads belong to this resource and returns 403 if not. |
242
- | `MASTRA_THREAD_ID_KEY` | Forces thread operations to use this thread ID, overriding client-provided values |
243
-
244
- These keys are used to implement user isolation in multi-tenant applications. See [Authorization middleware](https://mastra.ai/docs/server/middleware) for usage examples.
245
-
246
- ## TypeScript support
247
-
248
- When you provide a type parameter to `RequestContext`, all methods are fully typed:
249
-
250
- ```typescript
251
- import { RequestContext } from "@mastra/core/request-context";
252
-
253
- type MyContext = {
254
- userId: string;
255
- maxTokens: number;
256
- isPremium: boolean;
257
- };
258
-
259
- const ctx = new RequestContext<MyContext>();
260
-
261
- // set() enforces correct value types
262
- ctx.set("userId", "user-123"); // ✓ valid
263
- ctx.set("maxTokens", 4096); // ✓ valid
264
- ctx.set("maxTokens", "wrong"); // ✗ TypeScript error: expected number
265
-
266
- // get() returns the correct type automatically
267
- const tokens = ctx.get("maxTokens"); // inferred as number
268
- const id = ctx.get("userId"); // inferred as string
269
-
270
- // keys() returns typed keys
271
- for (const key of ctx.keys()) {
272
- // key is "userId" | "maxTokens" | "isPremium"
273
- }
274
-
275
- // entries() supports type narrowing
276
- for (const [key, value] of ctx.entries()) {
277
- if (key === "maxTokens") {
278
- // TypeScript knows value is number here
279
- console.log(value.toFixed(2));
280
- }
281
- if (key === "userId") {
282
- // TypeScript knows value is string here
283
- console.log(value.toUpperCase());
284
- }
285
- }
286
- ```
287
-
288
- ## Schema validation
289
-
290
- Use `requestContextSchema` to define a Zod schema that validates request context values at runtime. This catches missing or invalid context values early, provides clear error messages, and gives you type inference within your component.
291
-
292
- ### Agent schema validation
293
-
294
- When you define `requestContextSchema` on an agent, the context is validated at the start of `generate()` or `stream()`. If validation fails, the agent throws a `MastraError` before any LLM calls are made.
295
-
296
- ```typescript
297
- import { Agent } from "@mastra/core/agent";
298
- import { z } from "zod";
299
-
300
- export const validatedAgent = new Agent({
301
- id: "validated-agent",
302
- name: "Validated Agent",
303
- requestContextSchema: z.object({
304
- userId: z.string(),
305
- apiKey: z.string(),
306
- }),
307
- instructions: ({ requestContext }) => {
308
- // Access all values as a typed object
309
- const { userId, apiKey } = requestContext.all;
310
- // { userId: string; apiKey: string }
311
-
312
- // Or retrieve individual values with .get()
313
- const id = requestContext.get("userId");
314
- // string
315
-
316
- return `You are helping user ${userId}`;
317
- },
318
- model: "openai/gpt-4o",
319
- });
320
- ```
321
-
322
- When validation fails, the error includes the agent ID and details about which fields failed:
323
-
324
- ```text
325
- Request context validation failed for agent 'validated-agent':
326
- - apiKey: Required
327
- ```
328
-
329
- ### Tool schema validation
330
-
331
- When you define `requestContextSchema` on a tool, the context is validated before `execute()` runs. Unlike agents, tools return a validation error object instead of throwing:
332
-
333
- ```typescript
334
- import { createTool } from "@mastra/core/tools";
335
- import { z } from "zod";
336
-
337
- export const validatedTool = createTool({
338
- id: "validated-tool",
339
- description: "A tool that requires authenticated context",
340
- inputSchema: z.object({
341
- query: z.string(),
342
- }),
343
- requestContextSchema: z.object({
344
- userId: z.string(),
345
- }),
346
- execute: async (inputData, context) => {
347
- // Access all values as a typed object
348
- const { userId } = context.requestContext?.all ?? {};
349
- // { userId: string }
350
-
351
- // Or retrieve individual values with .get()
352
- const id = context.requestContext?.get("userId");
353
- // string | undefined
354
-
355
- return { result: `Processed for ${userId}` };
356
- },
357
- });
358
- ```
359
-
360
- When validation fails, the tool returns an error object instead of throwing:
361
-
362
- ```json
363
- {
364
- "error": true,
365
- "message": "Request context validation failed for validated-tool. Please fix the following errors and try again:\n- userId: Required\n\nProvided context: {}"
366
- }
367
- ```
368
-
369
- ### Workflow schema validation
370
-
371
- When you define `requestContextSchema` on a workflow, the context is validated at the start of `run.start()`. If validation fails, the workflow throws an error before any steps execute.
372
-
373
- ```typescript
374
- import { createWorkflow, createStep } from "@mastra/core/workflows";
375
- import { z } from "zod";
376
-
377
- // Define schema once and share between workflow and steps
378
- const workflowContextSchema = z.object({
379
- tenantId: z.string(),
380
- });
381
-
382
- const step1 = createStep({
383
- id: "step-1",
384
- inputSchema: z.object({ message: z.string() }),
385
- outputSchema: z.object({ result: z.string() }),
386
- // Add schema to step for type inference
387
- requestContextSchema: workflowContextSchema,
388
- execute: async ({ inputData, requestContext }) => {
389
- // Access all values as a typed object
390
- const { tenantId } = requestContext.all;
391
- // { tenantId: string }
392
-
393
- // Or retrieve individual values with .get()
394
- const id = requestContext.get("tenantId");
395
- // string
396
-
397
- return { result: `Processed for tenant ${tenantId}` };
398
- },
399
- });
400
-
401
- export const validatedWorkflow = createWorkflow({
402
- id: "validated-workflow",
403
- inputSchema: z.object({ message: z.string() }),
404
- outputSchema: z.object({ result: z.string() }),
405
- requestContextSchema: workflowContextSchema,
406
- })
407
- .then(step1)
408
- .commit();
409
- ```
410
-
411
- When validation fails, the workflow throws an error:
412
-
413
- ```text
414
- Request context validation failed for workflow 'validated-workflow':
415
- - tenantId: Required
416
- ```
417
-
418
- Steps can also define their own `requestContextSchema` for step-level validation. Step validation runs before the step's `execute()` function.
419
-
420
- ### Validation behavior
421
-
422
- | Component | Property | Validation timing | On failure |
423
- | --------- | ---------------------- | ---------------------------------- | --------------------- |
424
- | Agent | `requestContextSchema` | Start of `generate()` / `stream()` | Throws `MastraError` |
425
- | Tool | `requestContextSchema` | Before `execute()` | Returns error object |
426
- | Workflow | `requestContextSchema` | Start of `run.start()` | Throws `Error` |
427
- | Step | `requestContextSchema` | Before step `execute()` | Step fails with error |
428
-
429
- ### Best practices
430
-
431
- **Match your middleware**: Define the same required fields in your schema that your middleware sets. This ensures the contract between middleware and components is explicit and validated.
432
-
433
- ```typescript
434
- // Middleware sets these fields
435
- requestContext.set("userId", user.id);
436
- requestContext.set("tenantId", tenant.id);
437
-
438
- // Schema validates they exist
439
- requestContextSchema: z.object({
440
- userId: z.string(),
441
- tenantId: z.string(),
442
- })
443
- ```
444
-
445
- **Use optional fields for conditional context**: Use `.optional()` for values that may not always be present.
446
-
447
- ```typescript
448
- requestContextSchema: z.object({
449
- userId: z.string(), // Always required
450
- experimentVariant: z.string().optional(), // May not be set
451
- })
452
- ```
453
-
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
-
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
-
473
- ## Related
474
-
475
- - [Agent Request Context](https://mastra.ai/docs/agents/overview)
476
- - [Workflow Request Context](https://mastra.ai/docs/workflows/overview)
477
- - [Server Middleware](https://mastra.ai/docs/server/middleware)
478
- - [Authorization Middleware](https://mastra.ai/docs/server/middleware)