@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,632 +0,0 @@
1
- # Processors
2
-
3
- Processors transform, validate, or control messages as they pass through an agent. They run at specific points in the agent's execution pipeline, allowing you to modify inputs before they reach the language model or outputs before they're returned to users.
4
-
5
- Processors are configured as:
6
-
7
- - **`inputProcessors`**: Run before messages reach the language model.
8
- - **`outputProcessors`**: Run after the language model generates a response, but before it's returned to users.
9
-
10
- You can use individual `Processor` objects or compose them into workflows using Mastra's workflow primitives. Workflows give you advanced control over processor execution order, parallel processing, and conditional logic.
11
-
12
- Some processors implement both input and output logic and can be used in either array depending on where the transformation should occur.
13
-
14
- ## When to use processors
15
-
16
- Use processors to:
17
-
18
- - Normalize or validate user input
19
- - Add guardrails to your agent
20
- - Detect and prevent prompt injection or jailbreak attempts
21
- - Moderate content for safety or compliance
22
- - Transform messages (e.g., translate languages, filter tool calls)
23
- - Limit token usage or message history length
24
- - Redact sensitive information (PII)
25
- - Apply custom business logic to messages
26
-
27
- Mastra includes several processors for common use cases. You can also create custom processors for application-specific requirements.
28
-
29
- ## Adding processors to an agent
30
-
31
- Import and instantiate the processor, then pass it to the agent's `inputProcessors` or `outputProcessors` array:
32
-
33
- ```typescript
34
- import { Agent } from "@mastra/core/agent";
35
- import { ModerationProcessor } from "@mastra/core/processors";
36
-
37
- export const moderatedAgent = new Agent({
38
- name: "moderated-agent",
39
- instructions: "You are a helpful assistant",
40
- model: "openai/gpt-4o-mini",
41
- inputProcessors: [
42
- new ModerationProcessor({
43
- model: "openai/gpt-4.1-nano",
44
- categories: ["hate", "harassment", "violence"],
45
- threshold: 0.7,
46
- strategy: "block",
47
- }),
48
- ],
49
- });
50
- ```
51
-
52
- ## Execution order
53
-
54
- Processors run in the order they appear in the array:
55
-
56
- ```typescript
57
- inputProcessors: [
58
- new UnicodeNormalizer(),
59
- new PromptInjectionDetector(),
60
- new ModerationProcessor(),
61
- ];
62
- ```
63
-
64
- For output processors, the order determines the sequence of transformations applied to the model's response.
65
-
66
- ### With memory enabled
67
-
68
- When memory is enabled on an agent, memory processors are automatically added to the pipeline:
69
-
70
- **Input processors:**
71
-
72
- ```text
73
- [Memory Processors] → [Your inputProcessors]
74
- ```
75
-
76
- Memory loads message history first, then your processors run.
77
-
78
- **Output processors:**
79
-
80
- ```text
81
- [Your outputProcessors] → [Memory Processors]
82
- ```
83
-
84
- Your processors run first, then memory persists messages.
85
-
86
- This ordering ensures that if your output guardrail calls `abort()`, memory processors are skipped and no messages are saved. See [Memory Processors](https://mastra.ai/docs/memory/memory-processors) for details.
87
-
88
- ## Creating custom processors
89
-
90
- Custom processors implement the `Processor` interface:
91
-
92
- ### Custom input processor
93
-
94
- ```typescript
95
- import type {
96
- Processor,
97
- MastraDBMessage,
98
- RequestContext,
99
- } from "@mastra/core";
100
-
101
- export class CustomInputProcessor implements Processor {
102
- id = "custom-input";
103
-
104
- async processInput({
105
- messages,
106
- systemMessages,
107
- context,
108
- }: {
109
- messages: MastraDBMessage[];
110
- systemMessages: CoreMessage[];
111
- context: RequestContext;
112
- }): Promise<MastraDBMessage[]> {
113
- // Transform messages before they reach the LLM
114
- return messages.map((msg) => ({
115
- ...msg,
116
- content: {
117
- ...msg.content,
118
- content: msg.content.content.toLowerCase(),
119
- },
120
- }));
121
- }
122
- }
123
- ```
124
-
125
- The `processInput` method receives:
126
-
127
- - `messages`: User and assistant messages (not system messages)
128
- - `systemMessages`: All system messages (agent instructions, memory context, user-provided system prompts)
129
- - `messageList`: The full MessageList instance for advanced use cases
130
- - `abort`: Function to stop processing and return early
131
- - `requestContext`: Execution metadata like `threadId` and `resourceId`
132
-
133
- The method can return:
134
-
135
- - `MastraDBMessage[]` — Transformed messages array (backward compatible)
136
- - `{ messages: MastraDBMessage[]; systemMessages: CoreMessage[] }` — Both messages and modified system messages
137
-
138
- The framework handles both return formats, so modifying system messages is optional and existing processors continue to work.
139
-
140
- ### Modifying system messages
141
-
142
- To modify system messages (e.g., trim verbose prompts for smaller models), return an object with both `messages` and `systemMessages`:
143
-
144
- ```typescript
145
- import type { Processor, CoreMessage, MastraDBMessage } from "@mastra/core";
146
-
147
- export class SystemTrimmer implements Processor {
148
- id = "system-trimmer";
149
-
150
- async processInput({
151
- messages,
152
- systemMessages,
153
- }): Promise<{ messages: MastraDBMessage[]; systemMessages: CoreMessage[] }> {
154
- // Trim system messages for smaller models
155
- const trimmedSystemMessages = systemMessages.map((msg) => ({
156
- ...msg,
157
- content:
158
- typeof msg.content === "string"
159
- ? msg.content.substring(0, 500)
160
- : msg.content,
161
- }));
162
-
163
- return { messages, systemMessages: trimmedSystemMessages };
164
- }
165
- }
166
- ```
167
-
168
- This is useful for:
169
-
170
- - Trimming verbose system prompts for models with smaller context windows
171
- - Filtering or modifying semantic recall content to prevent "prompt too long" errors
172
- - Dynamically adjusting system instructions based on the conversation
173
-
174
- ### Per-step processing with processInputStep
175
-
176
- While `processInput` runs once at the start of agent execution, `processInputStep` runs at **each step** of the agentic loop (including tool call continuations). This enables per-step configuration changes like dynamic model switching or tool choice modifications.
177
-
178
- ```typescript
179
- import type { Processor, ProcessInputStepArgs, ProcessInputStepResult } from "@mastra/core";
180
-
181
- export class DynamicModelProcessor implements Processor {
182
- id = "dynamic-model";
183
-
184
- async processInputStep({
185
- stepNumber,
186
- model,
187
- toolChoice,
188
- messageList,
189
- }: ProcessInputStepArgs): Promise<ProcessInputStepResult> {
190
- // Use a fast model for initial response
191
- if (stepNumber === 0) {
192
- return { model: "openai/gpt-4o-mini" };
193
- }
194
-
195
- // Disable tools after 5 steps to force completion
196
- if (stepNumber > 5) {
197
- return { toolChoice: "none" };
198
- }
199
-
200
- // No changes for other steps
201
- return {};
202
- }
203
- }
204
- ```
205
-
206
- The `processInputStep` method receives:
207
-
208
- - `stepNumber`: Current step in the agentic loop (0-indexed)
209
- - `steps`: Results from previous steps
210
- - `messages`: Current messages snapshot (read-only)
211
- - `systemMessages`: Current system messages (read-only)
212
- - `messageList`: The full MessageList instance for mutations
213
- - `model`: Current model being used
214
- - `tools`: Current tools available for this step
215
- - `toolChoice`: Current tool choice setting
216
- - `activeTools`: Currently active tools
217
- - `providerOptions`: Provider-specific options
218
- - `modelSettings`: Model settings like temperature
219
- - `structuredOutput`: Structured output configuration
220
-
221
- The method can return any combination of:
222
-
223
- - `model`: Change the model for this step
224
- - `tools`: Replace or add tools (use spread to merge: `{ tools: { ...tools, newTool } }`)
225
- - `toolChoice`: Change tool selection behavior
226
- - `activeTools`: Filter which tools are available
227
- - `messages`: Replace messages (applied to messageList)
228
- - `systemMessages`: Replace all system messages
229
- - `providerOptions`: Modify provider options
230
- - `modelSettings`: Modify model settings
231
- - `structuredOutput`: Modify structured output configuration
232
-
233
- #### Ensuring a final response with maxSteps
234
-
235
- When using `maxSteps` to limit agent execution, the agent may return an empty response if it attempts a tool call on the final step. Use `processInputStep` to force a text response on the last step:
236
-
237
- ```typescript
238
- import { Processor, ProcessInputStepArgs, ProcessInputStepResult } from "@mastra/core/processors";
239
-
240
- export class EnsureFinalResponseProcessor implements Processor {
241
- readonly id = "ensure-final-response";
242
-
243
- private maxSteps: number;
244
-
245
- constructor(maxSteps: number) {
246
- this.maxSteps = maxSteps;
247
- }
248
-
249
- async processInputStep({ stepNumber, systemMessages }: ProcessInputStepArgs): Promise<ProcessInputStepResult> {
250
- // On the last step, prevent tool calls and instruct the LLM to summarize
251
- if (stepNumber === this.maxSteps - 1) {
252
- return {
253
- tools: {},
254
- toolChoice: "none",
255
- systemMessages: [
256
- ...systemMessages,
257
- {
258
- role: "system",
259
- content:
260
- "You have reached the maximum number of steps. Summarize your progress so far and provide a best-effort response. If the task is incomplete, clearly indicate what remains to be done.",
261
- },
262
- ],
263
- };
264
- }
265
- return {};
266
- }
267
- }
268
- ```
269
-
270
- Use it with your agent:
271
-
272
- ```typescript
273
- import { Agent } from "@mastra/core/agent";
274
- import { EnsureFinalResponseProcessor } from "../processors/ensure-final-response";
275
-
276
- const MAX_STEPS = 5;
277
-
278
- const agent = new Agent({
279
- id: "bounded-agent",
280
- name: "Bounded Agent",
281
- model: "openai/gpt-4o-mini",
282
- tools: { /* your tools */ },
283
- inputProcessors: [new EnsureFinalResponseProcessor(MAX_STEPS)],
284
- });
285
-
286
- // Pass maxSteps when calling generate/stream
287
- const result = await agent.generate("Your prompt", { maxSteps: MAX_STEPS });
288
- ```
289
-
290
- This ensures that on the final allowed step (step 4 when `maxSteps` is 5, since steps are 0-indexed), the LLM generates a summary instead of attempting another tool call, and clearly indicates if the task is incomplete.
291
-
292
- #### Using prepareStep callback
293
-
294
- For simpler per-step logic, you can use the `prepareStep` callback on `generate()` or `stream()` instead of creating a full processor:
295
-
296
- ```typescript
297
- await agent.generate("Complex task", {
298
- prepareStep: async ({ stepNumber, model }) => {
299
- if (stepNumber === 0) {
300
- return { model: "openai/gpt-4o-mini" };
301
- }
302
- if (stepNumber > 5) {
303
- return { toolChoice: "none" };
304
- }
305
- },
306
- });
307
- ```
308
-
309
- ### Custom output processor
310
-
311
- ```typescript
312
- import type {
313
- Processor,
314
- MastraDBMessage,
315
- RequestContext,
316
- } from "@mastra/core";
317
-
318
- export class CustomOutputProcessor implements Processor {
319
- id = "custom-output";
320
-
321
- async processOutputResult({
322
- messages,
323
- context,
324
- }: {
325
- messages: MastraDBMessage[];
326
- context: RequestContext;
327
- }): Promise<MastraDBMessage[]> {
328
- // Transform messages after the LLM generates them
329
- return messages.filter((msg) => msg.role !== "system");
330
- }
331
-
332
- async processOutputStream({
333
- stream,
334
- context,
335
- }: {
336
- stream: ReadableStream;
337
- context: RequestContext;
338
- }): Promise<ReadableStream> {
339
- // Transform streaming responses
340
- return stream;
341
- }
342
- }
343
- ```
344
-
345
- #### Emitting custom stream events with writer
346
-
347
- Output processors receive a `writer` object that lets you emit custom data chunks back to the client during streaming. This is useful for use cases like streaming moderation results or sending UI update signals without blocking the original stream.
348
-
349
- ```typescript
350
- import type { Processor, ChunkType, MastraDBMessage } from "@mastra/core";
351
-
352
- export class ModerationProcessor implements Processor {
353
- id = "moderation";
354
-
355
- async processOutputResult({ messages, writer }) {
356
- // Run moderation on the final output
357
- const text = messages
358
- .filter((m) => m.role === "assistant")
359
- .flatMap((m) => m.content.parts?.filter((p) => p.type === "text"))
360
- .map((p) => p.text)
361
- .join(" ");
362
-
363
- const result = await runModeration(text);
364
-
365
- if (result.requiresChange) {
366
- // Emit a custom event to the client with the moderated text
367
- await writer?.custom({
368
- type: "data-moderation-update",
369
- data: {
370
- originalText: text,
371
- moderatedText: result.moderatedText,
372
- reason: result.reason,
373
- },
374
- });
375
- }
376
-
377
- return messages;
378
- }
379
- }
380
- ```
381
-
382
- On the client, listen for the custom chunk type in the stream:
383
-
384
- ```typescript
385
- const stream = await agent.stream("Hello");
386
-
387
- for await (const chunk of stream.fullStream) {
388
- if (chunk.type === "data-moderation-update") {
389
- // Update the UI with moderated text
390
- updateDisplayedMessage(chunk.data.moderatedText);
391
- }
392
- }
393
- ```
394
-
395
- Custom chunk types must use the `data-` prefix (e.g., `data-moderation-update`, `data-status`).
396
-
397
- #### Adding metadata in output processors
398
-
399
- You can add custom metadata to messages in `processOutputResult`. This metadata is accessible via the response object:
400
-
401
- ```typescript
402
- import type { Processor, MastraDBMessage } from "@mastra/core";
403
-
404
- export class MetadataProcessor implements Processor {
405
- id = "metadata-processor";
406
-
407
- async processOutputResult({
408
- messages,
409
- }: {
410
- messages: MastraDBMessage[];
411
- }): Promise<MastraDBMessage[]> {
412
- return messages.map((msg) => {
413
- if (msg.role === "assistant") {
414
- return {
415
- ...msg,
416
- content: {
417
- ...msg.content,
418
- metadata: {
419
- ...msg.content.metadata,
420
- processedAt: new Date().toISOString(),
421
- customData: "your data here",
422
- },
423
- },
424
- };
425
- }
426
- return msg;
427
- });
428
- }
429
- }
430
- ```
431
-
432
- Access the metadata with `generate()`:
433
-
434
- ```typescript
435
- const result = await agent.generate("Hello");
436
-
437
- // The response includes uiMessages with processor-added metadata
438
- const assistantMessage = result.response?.uiMessages?.find((m) => m.role === "assistant");
439
- console.log(assistantMessage?.metadata?.customData);
440
- ```
441
-
442
- Access the metadata when streaming:
443
-
444
- ```typescript
445
- const stream = await agent.stream("Hello");
446
-
447
- for await (const chunk of stream.fullStream) {
448
- if (chunk.type === "finish") {
449
- // Access response with processor-added metadata from the finish chunk
450
- const uiMessages = chunk.payload.response?.uiMessages;
451
- const assistantMessage = uiMessages?.find((m) => m.role === "assistant");
452
- console.log(assistantMessage?.metadata?.customData);
453
- }
454
- }
455
-
456
- // Or via the response promise after consuming the stream
457
- const response = await stream.response;
458
- console.log(response.uiMessages);
459
- ```
460
-
461
- ## Built-in Utility Processors
462
-
463
- Mastra provides utility processors for common tasks:
464
-
465
- **For security and validation processors**, see the [Guardrails](https://mastra.ai/docs/agents/guardrails) page for input/output guardrails and moderation processors. **For memory-specific processors**, see the [Memory Processors](https://mastra.ai/docs/memory/memory-processors) page for processors that handle message history, semantic recall, and working memory.
466
-
467
- ### TokenLimiter
468
-
469
- Prevents context window overflow by removing older messages when the total token count exceeds a specified limit.
470
-
471
- ```typescript
472
- import { Agent } from "@mastra/core/agent";
473
- import { TokenLimiter } from "@mastra/core/processors";
474
-
475
- const agent = new Agent({
476
- name: "my-agent",
477
- model: "openai/gpt-4o",
478
- inputProcessors: [
479
- // Ensure the total tokens don't exceed ~127k
480
- new TokenLimiter(127000),
481
- ],
482
- });
483
- ```
484
-
485
- The `TokenLimiter` uses the `o200k_base` encoding by default (suitable for GPT-4o). You can specify other encodings for different models:
486
-
487
- ```typescript
488
- import cl100k_base from "js-tiktoken/ranks/cl100k_base";
489
-
490
- const agent = new Agent({
491
- name: "my-agent",
492
- inputProcessors: [
493
- new TokenLimiter({
494
- limit: 16000, // Example limit for a 16k context model
495
- encoding: cl100k_base,
496
- }),
497
- ],
498
- });
499
- ```
500
-
501
- ### ToolCallFilter
502
-
503
- Removes tool calls from messages sent to the LLM, saving tokens by excluding potentially verbose tool interactions.
504
-
505
- ```typescript
506
- import { Agent } from "@mastra/core/agent";
507
- import { ToolCallFilter, TokenLimiter } from "@mastra/core/processors";
508
-
509
- const agent = new Agent({
510
- name: "my-agent",
511
- model: "openai/gpt-4o",
512
- inputProcessors: [
513
- // Example 1: Remove all tool calls/results
514
- new ToolCallFilter(),
515
-
516
- // Example 2: Remove only specific tool calls
517
- new ToolCallFilter({ exclude: ["generateImageTool"] }),
518
-
519
- // Always place TokenLimiter last
520
- new TokenLimiter(127000),
521
- ],
522
- });
523
- ```
524
-
525
- > **Note:** The example above filters tool calls and limits tokens for the LLM, but these filtered messages will still be saved to memory. To also filter messages before they're saved to memory, manually add memory processors before utility processors. See [Memory Processors](https://mastra.ai/docs/memory/memory-processors) for details.
526
-
527
- ### ToolSearchProcessor
528
-
529
- Enables dynamic tool discovery and loading for agents with large tool libraries. Instead of providing all tools upfront, the agent searches for tools by keyword and loads them on demand, reducing context token usage.
530
-
531
- ```typescript
532
- import { Agent } from "@mastra/core/agent";
533
- import { ToolSearchProcessor } from "@mastra/core/processors";
534
-
535
- const agent = new Agent({
536
- name: "my-agent",
537
- model: "openai/gpt-4o",
538
- inputProcessors: [
539
- new ToolSearchProcessor({
540
- tools: {
541
- createIssue: githubTools.createIssue,
542
- sendEmail: emailTools.send,
543
- // ... hundreds of tools
544
- },
545
- search: { topK: 5, minScore: 0.1 },
546
- }),
547
- ],
548
- });
549
- ```
550
-
551
- The processor gives the agent two meta-tools: `search_tools` to find tools by keyword and `load_tool` to add a tool to the conversation. Loaded tools persist within the thread. See the [ToolSearchProcessor reference](https://mastra.ai/reference/processors/tool-search-processor) for full configuration options.
552
-
553
- ## Using workflows as processors
554
-
555
- You can use Mastra workflows as processors to create complex processing pipelines with parallel execution, conditional branching, and error handling:
556
-
557
- ```typescript
558
- import { createWorkflow, createStep } from "@mastra/core/workflows";
559
- import { ProcessorStepSchema } from "@mastra/core/processors";
560
- import { Agent } from "@mastra/core/agent";
561
-
562
- // Create a workflow that runs multiple checks in parallel
563
- const moderationWorkflow = createWorkflow({
564
- id: "moderation-pipeline",
565
- inputSchema: ProcessorStepSchema,
566
- outputSchema: ProcessorStepSchema,
567
- })
568
- .then(createStep(new LengthValidator({ maxLength: 10000 })))
569
- .parallel([
570
- createStep(new PIIDetector({ strategy: "redact" })),
571
- createStep(new ToxicityChecker({ threshold: 0.8 })),
572
- ])
573
- .commit();
574
-
575
- // Use the workflow as an input processor
576
- const agent = new Agent({
577
- id: "moderated-agent",
578
- name: "Moderated Agent",
579
- model: "openai/gpt-4o",
580
- inputProcessors: [moderationWorkflow],
581
- });
582
- ```
583
-
584
- When an agent is registered with Mastra, processor workflows are automatically registered as workflows, allowing you to view and debug them in the [Studio](https://mastra.ai/docs/getting-started/studio).
585
-
586
- ## Retry mechanism
587
-
588
- Processors can request that the LLM retry its response with feedback. This is useful for implementing quality checks, output validation, or iterative refinement:
589
-
590
- ```typescript
591
- import type { Processor } from "@mastra/core";
592
-
593
- export class QualityChecker implements Processor {
594
- id = "quality-checker";
595
-
596
- async processOutputStep({ text, abort, retryCount }) {
597
- const qualityScore = await evaluateQuality(text);
598
-
599
- if (qualityScore < 0.7 && retryCount < 3) {
600
- // Request a retry with feedback for the LLM
601
- abort("Response quality score too low. Please provide a more detailed answer.", {
602
- retry: true,
603
- metadata: { score: qualityScore },
604
- });
605
- }
606
-
607
- return [];
608
- }
609
- }
610
-
611
- const agent = new Agent({
612
- id: "quality-agent",
613
- name: "Quality Agent",
614
- model: "openai/gpt-4o",
615
- outputProcessors: [new QualityChecker()],
616
- maxProcessorRetries: 3, // Maximum retry attempts (default: 3)
617
- });
618
- ```
619
-
620
- The retry mechanism:
621
-
622
- - Only works in `processOutputStep` and `processInputStep` methods
623
- - Replays the step with the abort reason added as context for the LLM
624
- - Tracks retry count via the `retryCount` parameter
625
- - Respects `maxProcessorRetries` limit on the agent
626
-
627
- ## Related documentation
628
-
629
- - [Guardrails](https://mastra.ai/docs/agents/guardrails) - Security and validation processors
630
- - [Memory Processors](https://mastra.ai/docs/memory/memory-processors) - Memory-specific processors and automatic integration
631
- - [Processor Interface](https://mastra.ai/reference/processors/processor-interface) - Full API reference for processors
632
- - [ToolSearchProcessor Reference](https://mastra.ai/reference/processors/tool-search-processor) - API reference for dynamic tool search