@mastra/mcp-docs-server 0.13.37 → 0.13.39-alpha.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 (450) hide show
  1. package/.docs/organized/changelogs/%40internal%2Fchangeset-cli.md +2 -0
  2. package/.docs/organized/changelogs/%40internal%2Fexternal-types.md +2 -0
  3. package/.docs/organized/changelogs/%40internal%2Fstorage-test-utils.md +8 -8
  4. package/.docs/organized/changelogs/%40internal%2Ftypes-builder.md +2 -0
  5. package/.docs/organized/changelogs/%40mastra%2Fagent-builder.md +11 -11
  6. package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +16 -16
  7. package/.docs/organized/changelogs/%40mastra%2Fastra.md +10 -10
  8. package/.docs/organized/changelogs/%40mastra%2Fauth.md +6 -0
  9. package/.docs/organized/changelogs/%40mastra%2Fchroma.md +11 -11
  10. package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +10 -10
  11. package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +38 -38
  12. package/.docs/organized/changelogs/%40mastra%2Fcloud.md +10 -10
  13. package/.docs/organized/changelogs/%40mastra%2Fcloudflare-d1.md +10 -10
  14. package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +10 -10
  15. package/.docs/organized/changelogs/%40mastra%2Fcore.md +88 -88
  16. package/.docs/organized/changelogs/%40mastra%2Fcouchbase.md +11 -11
  17. package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +28 -28
  18. package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +27 -27
  19. package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +27 -27
  20. package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +27 -27
  21. package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +59 -59
  22. package/.docs/organized/changelogs/%40mastra%2Fdynamodb.md +11 -11
  23. package/.docs/organized/changelogs/%40mastra%2Fevals.md +11 -11
  24. package/.docs/organized/changelogs/%40mastra%2Ffastembed.md +6 -0
  25. package/.docs/organized/changelogs/%40mastra%2Flance.md +10 -10
  26. package/.docs/organized/changelogs/%40mastra%2Flibsql.md +11 -11
  27. package/.docs/organized/changelogs/%40mastra%2Floggers.md +11 -11
  28. package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +25 -25
  29. package/.docs/organized/changelogs/%40mastra%2Fmcp-registry-registry.md +10 -10
  30. package/.docs/organized/changelogs/%40mastra%2Fmcp.md +11 -11
  31. package/.docs/organized/changelogs/%40mastra%2Fmemory.md +11 -11
  32. package/.docs/organized/changelogs/%40mastra%2Fmongodb.md +10 -10
  33. package/.docs/organized/changelogs/%40mastra%2Fmssql.md +11 -11
  34. package/.docs/organized/changelogs/%40mastra%2Fopensearch.md +10 -10
  35. package/.docs/organized/changelogs/%40mastra%2Fpg.md +10 -10
  36. package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +10 -10
  37. package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +48 -48
  38. package/.docs/organized/changelogs/%40mastra%2Fqdrant.md +11 -11
  39. package/.docs/organized/changelogs/%40mastra%2Frag.md +10 -10
  40. package/.docs/organized/changelogs/%40mastra%2Freact.md +24 -24
  41. package/.docs/organized/changelogs/%40mastra%2Fs3vectors.md +9 -0
  42. package/.docs/organized/changelogs/%40mastra%2Fschema-compat.md +6 -0
  43. package/.docs/organized/changelogs/%40mastra%2Fserver.md +40 -40
  44. package/.docs/organized/changelogs/%40mastra%2Fturbopuffer.md +10 -10
  45. package/.docs/organized/changelogs/%40mastra%2Fupstash.md +10 -10
  46. package/.docs/organized/changelogs/%40mastra%2Fvectorize.md +10 -10
  47. package/.docs/organized/changelogs/%40mastra%2Fvoice-azure.md +10 -10
  48. package/.docs/organized/changelogs/%40mastra%2Fvoice-cloudflare.md +11 -11
  49. package/.docs/organized/changelogs/%40mastra%2Fvoice-deepgram.md +11 -11
  50. package/.docs/organized/changelogs/%40mastra%2Fvoice-elevenlabs.md +11 -11
  51. package/.docs/organized/changelogs/%40mastra%2Fvoice-gladia.md +11 -11
  52. package/.docs/organized/changelogs/%40mastra%2Fvoice-google-gemini-live.md +11 -1
  53. package/.docs/organized/changelogs/%40mastra%2Fvoice-google.md +10 -10
  54. package/.docs/organized/changelogs/%40mastra%2Fvoice-murf.md +11 -11
  55. package/.docs/organized/changelogs/%40mastra%2Fvoice-openai-realtime.md +10 -10
  56. package/.docs/organized/changelogs/%40mastra%2Fvoice-openai.md +10 -10
  57. package/.docs/organized/changelogs/%40mastra%2Fvoice-playai.md +11 -11
  58. package/.docs/organized/changelogs/%40mastra%2Fvoice-sarvam.md +11 -11
  59. package/.docs/organized/changelogs/%40mastra%2Fvoice-speechify.md +10 -10
  60. package/.docs/organized/changelogs/create-mastra.md +11 -11
  61. package/.docs/organized/changelogs/mastra.md +34 -34
  62. package/.docs/raw/agents/adding-voice.mdx +20 -9
  63. package/.docs/raw/agents/agent-memory.mdx +55 -39
  64. package/.docs/raw/agents/guardrails.mdx +68 -61
  65. package/.docs/raw/agents/networks.mdx +50 -46
  66. package/.docs/raw/agents/overview.mdx +126 -89
  67. package/.docs/raw/agents/using-tools.mdx +14 -15
  68. package/.docs/raw/auth/auth0.mdx +28 -27
  69. package/.docs/raw/auth/clerk.mdx +22 -20
  70. package/.docs/raw/auth/firebase.mdx +42 -39
  71. package/.docs/raw/auth/index.mdx +1 -1
  72. package/.docs/raw/auth/jwt.mdx +18 -16
  73. package/.docs/raw/auth/supabase.mdx +20 -18
  74. package/.docs/raw/auth/workos.mdx +32 -26
  75. package/.docs/raw/community/contributing-templates.mdx +7 -7
  76. package/.docs/raw/community/discord.mdx +2 -2
  77. package/.docs/raw/community/licensing.mdx +1 -1
  78. package/.docs/raw/course/02-agent-tools-mcp/04-initializing-mcp-tools.md +2 -2
  79. package/.docs/raw/course/03-agent-memory/18-advanced-configuration-semantic-recall.md +1 -1
  80. package/.docs/raw/course/03-agent-memory/26-updating-mastra-export-comprehensive.md +0 -32
  81. package/.docs/raw/deployment/cloud-providers/amazon-ec2.mdx +41 -22
  82. package/.docs/raw/deployment/cloud-providers/aws-lambda.mdx +48 -29
  83. package/.docs/raw/deployment/cloud-providers/azure-app-services.mdx +52 -24
  84. package/.docs/raw/deployment/cloud-providers/digital-ocean.mdx +86 -55
  85. package/.docs/raw/deployment/cloud-providers/index.mdx +16 -13
  86. package/.docs/raw/deployment/monorepo.mdx +32 -42
  87. package/.docs/raw/deployment/overview.mdx +15 -15
  88. package/.docs/raw/deployment/server-deployment.mdx +18 -23
  89. package/.docs/raw/deployment/serverless-platforms/cloudflare-deployer.mdx +16 -17
  90. package/.docs/raw/deployment/serverless-platforms/index.mdx +15 -12
  91. package/.docs/raw/deployment/serverless-platforms/netlify-deployer.mdx +14 -23
  92. package/.docs/raw/deployment/serverless-platforms/vercel-deployer.mdx +16 -23
  93. package/.docs/raw/deployment/web-framework.mdx +14 -14
  94. package/.docs/raw/frameworks/agentic-uis/ai-sdk.mdx +130 -121
  95. package/.docs/raw/frameworks/agentic-uis/assistant-ui.mdx +54 -43
  96. package/.docs/raw/frameworks/agentic-uis/cedar-os.mdx +51 -36
  97. package/.docs/raw/frameworks/agentic-uis/copilotkit.mdx +161 -120
  98. package/.docs/raw/frameworks/agentic-uis/openrouter.mdx +60 -49
  99. package/.docs/raw/frameworks/servers/express.mdx +46 -45
  100. package/.docs/raw/frameworks/web-frameworks/astro.mdx +245 -162
  101. package/.docs/raw/frameworks/web-frameworks/next-js.mdx +112 -69
  102. package/.docs/raw/frameworks/web-frameworks/sveltekit.mdx +171 -130
  103. package/.docs/raw/frameworks/web-frameworks/vite-react.mdx +94 -81
  104. package/.docs/raw/getting-started/installation.mdx +165 -134
  105. package/.docs/raw/getting-started/mcp-docs-server.mdx +36 -39
  106. package/.docs/raw/getting-started/project-structure.mdx +34 -42
  107. package/.docs/raw/getting-started/studio.mdx +42 -50
  108. package/.docs/raw/getting-started/templates.mdx +18 -15
  109. package/.docs/raw/index.mdx +9 -9
  110. package/.docs/raw/mastra-cloud/dashboard.mdx +12 -12
  111. package/.docs/raw/mastra-cloud/observability.mdx +9 -10
  112. package/.docs/raw/mastra-cloud/overview.mdx +17 -23
  113. package/.docs/raw/mastra-cloud/setting-up.mdx +33 -20
  114. package/.docs/raw/memory/conversation-history.mdx +2 -2
  115. package/.docs/raw/memory/overview.mdx +22 -24
  116. package/.docs/raw/memory/semantic-recall.mdx +16 -17
  117. package/.docs/raw/memory/storage/memory-with-libsql.mdx +27 -28
  118. package/.docs/raw/memory/storage/memory-with-pg.mdx +26 -26
  119. package/.docs/raw/memory/storage/memory-with-upstash.mdx +26 -27
  120. package/.docs/raw/memory/threads-and-resources.mdx +24 -21
  121. package/.docs/raw/memory/working-memory.mdx +27 -38
  122. package/.docs/raw/observability/ai-tracing/exporters/arize.mdx +30 -29
  123. package/.docs/raw/observability/ai-tracing/exporters/braintrust.mdx +8 -9
  124. package/.docs/raw/observability/ai-tracing/exporters/cloud.mdx +17 -16
  125. package/.docs/raw/observability/ai-tracing/exporters/default.mdx +37 -38
  126. package/.docs/raw/observability/ai-tracing/exporters/langfuse.mdx +18 -17
  127. package/.docs/raw/observability/ai-tracing/exporters/langsmith.mdx +14 -14
  128. package/.docs/raw/observability/ai-tracing/exporters/otel.mdx +56 -46
  129. package/.docs/raw/observability/ai-tracing/overview.mdx +151 -128
  130. package/.docs/raw/observability/ai-tracing/processors/sensitive-data-filter.mdx +57 -36
  131. package/.docs/raw/observability/logging.mdx +14 -17
  132. package/.docs/raw/observability/nextjs-tracing.mdx +5 -5
  133. package/.docs/raw/observability/otel-tracing.mdx +17 -18
  134. package/.docs/raw/observability/overview.mdx +15 -11
  135. package/.docs/raw/rag/chunking-and-embedding.mdx +10 -8
  136. package/.docs/raw/rag/overview.mdx +5 -5
  137. package/.docs/raw/rag/retrieval.mdx +125 -107
  138. package/.docs/raw/rag/vector-databases.mdx +232 -223
  139. package/.docs/raw/reference/agents/agent.mdx +56 -43
  140. package/.docs/raw/reference/agents/generate.mdx +367 -261
  141. package/.docs/raw/reference/agents/generateLegacy.mdx +260 -178
  142. package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +7 -5
  143. package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +7 -5
  144. package/.docs/raw/reference/agents/getDescription.mdx +3 -2
  145. package/.docs/raw/reference/agents/getInstructions.mdx +7 -5
  146. package/.docs/raw/reference/agents/getLLM.mdx +11 -7
  147. package/.docs/raw/reference/agents/getMemory.mdx +7 -5
  148. package/.docs/raw/reference/agents/getModel.mdx +7 -5
  149. package/.docs/raw/reference/agents/getScorers.mdx +7 -5
  150. package/.docs/raw/reference/agents/getTools.mdx +7 -5
  151. package/.docs/raw/reference/agents/getVoice.mdx +7 -5
  152. package/.docs/raw/reference/agents/getWorkflows.mdx +7 -5
  153. package/.docs/raw/reference/agents/listAgents.mdx +6 -4
  154. package/.docs/raw/reference/agents/listScorers.mdx +69 -0
  155. package/.docs/raw/reference/agents/listTools.mdx +69 -0
  156. package/.docs/raw/reference/agents/listWorkflows.mdx +69 -0
  157. package/.docs/raw/reference/agents/network.mdx +171 -116
  158. package/.docs/raw/reference/auth/auth0.mdx +18 -14
  159. package/.docs/raw/reference/auth/clerk.mdx +15 -12
  160. package/.docs/raw/reference/auth/firebase.mdx +23 -16
  161. package/.docs/raw/reference/auth/jwt.mdx +7 -6
  162. package/.docs/raw/reference/auth/supabase.mdx +13 -10
  163. package/.docs/raw/reference/auth/workos.mdx +17 -13
  164. package/.docs/raw/reference/cli/create-mastra.mdx +61 -44
  165. package/.docs/raw/reference/cli/mastra.mdx +11 -11
  166. package/.docs/raw/reference/client-js/agents.mdx +41 -44
  167. package/.docs/raw/reference/client-js/error-handling.mdx +1 -1
  168. package/.docs/raw/reference/client-js/logs.mdx +2 -2
  169. package/.docs/raw/reference/client-js/mastra-client.mdx +28 -20
  170. package/.docs/raw/reference/client-js/memory.mdx +7 -3
  171. package/.docs/raw/reference/client-js/observability.mdx +10 -9
  172. package/.docs/raw/reference/client-js/telemetry.mdx +1 -1
  173. package/.docs/raw/reference/client-js/tools.mdx +2 -2
  174. package/.docs/raw/reference/client-js/vectors.mdx +1 -1
  175. package/.docs/raw/reference/client-js/workflows-legacy.mdx +1 -1
  176. package/.docs/raw/reference/client-js/workflows.mdx +8 -8
  177. package/.docs/raw/reference/core/getAgent.mdx +6 -5
  178. package/.docs/raw/reference/core/getAgentById.mdx +5 -4
  179. package/.docs/raw/reference/core/getAgents.mdx +3 -3
  180. package/.docs/raw/reference/core/getDeployer.mdx +4 -3
  181. package/.docs/raw/reference/core/getLogger.mdx +4 -3
  182. package/.docs/raw/reference/core/getLogs.mdx +10 -6
  183. package/.docs/raw/reference/core/getLogsByRunId.mdx +8 -5
  184. package/.docs/raw/reference/core/getMCPServer.mdx +8 -5
  185. package/.docs/raw/reference/core/getMCPServers.mdx +4 -3
  186. package/.docs/raw/reference/core/getMemory.mdx +4 -3
  187. package/.docs/raw/reference/core/getScorer.mdx +15 -12
  188. package/.docs/raw/reference/core/getScorerByName.mdx +13 -10
  189. package/.docs/raw/reference/core/getScorers.mdx +3 -2
  190. package/.docs/raw/reference/core/getServer.mdx +4 -3
  191. package/.docs/raw/reference/core/getStorage.mdx +4 -3
  192. package/.docs/raw/reference/core/getTelemetry.mdx +4 -3
  193. package/.docs/raw/reference/core/getVector.mdx +6 -4
  194. package/.docs/raw/reference/core/getVectors.mdx +4 -3
  195. package/.docs/raw/reference/core/getWorkflow.mdx +7 -4
  196. package/.docs/raw/reference/core/getWorkflows.mdx +5 -3
  197. package/.docs/raw/reference/core/listAgents.mdx +35 -0
  198. package/.docs/raw/reference/core/listLogs.mdx +96 -0
  199. package/.docs/raw/reference/core/listLogsByRunId.mdx +87 -0
  200. package/.docs/raw/reference/core/listScorers.mdx +43 -0
  201. package/.docs/raw/reference/core/listWorkflows.mdx +45 -0
  202. package/.docs/raw/reference/core/mastra-class.mdx +16 -16
  203. package/.docs/raw/reference/core/setLogger.mdx +6 -4
  204. package/.docs/raw/reference/core/setStorage.mdx +4 -4
  205. package/.docs/raw/reference/core/setTelemetry.mdx +4 -3
  206. package/.docs/raw/reference/deployer/cloudflare.mdx +11 -7
  207. package/.docs/raw/reference/deployer/deployer.mdx +2 -1
  208. package/.docs/raw/reference/deployer/netlify.mdx +4 -4
  209. package/.docs/raw/reference/deployer/vercel.mdx +6 -6
  210. package/.docs/raw/reference/evals/answer-relevancy.mdx +4 -5
  211. package/.docs/raw/reference/evals/bias.mdx +4 -5
  212. package/.docs/raw/reference/evals/completeness.mdx +4 -5
  213. package/.docs/raw/reference/evals/content-similarity.mdx +4 -5
  214. package/.docs/raw/reference/evals/context-position.mdx +4 -5
  215. package/.docs/raw/reference/evals/context-precision.mdx +4 -5
  216. package/.docs/raw/reference/evals/context-relevancy.mdx +4 -5
  217. package/.docs/raw/reference/evals/contextual-recall.mdx +4 -5
  218. package/.docs/raw/reference/evals/faithfulness.mdx +4 -5
  219. package/.docs/raw/reference/evals/hallucination.mdx +4 -6
  220. package/.docs/raw/reference/evals/keyword-coverage.mdx +4 -5
  221. package/.docs/raw/reference/evals/prompt-alignment.mdx +4 -6
  222. package/.docs/raw/reference/evals/summarization.mdx +4 -6
  223. package/.docs/raw/reference/evals/textual-difference.mdx +4 -5
  224. package/.docs/raw/reference/evals/tone-consistency.mdx +4 -7
  225. package/.docs/raw/reference/evals/toxicity.mdx +4 -5
  226. package/.docs/raw/reference/index.mdx +3 -3
  227. package/.docs/raw/reference/legacyWorkflows/after.mdx +5 -5
  228. package/.docs/raw/reference/legacyWorkflows/afterEvent.mdx +5 -5
  229. package/.docs/raw/reference/legacyWorkflows/commit.mdx +5 -5
  230. package/.docs/raw/reference/legacyWorkflows/createRun.mdx +4 -4
  231. package/.docs/raw/reference/legacyWorkflows/else.mdx +5 -5
  232. package/.docs/raw/reference/legacyWorkflows/events.mdx +7 -7
  233. package/.docs/raw/reference/legacyWorkflows/execute.mdx +4 -4
  234. package/.docs/raw/reference/legacyWorkflows/if.mdx +5 -5
  235. package/.docs/raw/reference/legacyWorkflows/resume.mdx +5 -5
  236. package/.docs/raw/reference/legacyWorkflows/resumeWithEvent.mdx +6 -6
  237. package/.docs/raw/reference/legacyWorkflows/snapshots.mdx +6 -6
  238. package/.docs/raw/reference/legacyWorkflows/start.mdx +6 -6
  239. package/.docs/raw/reference/legacyWorkflows/step-class.mdx +4 -4
  240. package/.docs/raw/reference/legacyWorkflows/step-condition.mdx +4 -4
  241. package/.docs/raw/reference/legacyWorkflows/step-function.mdx +5 -5
  242. package/.docs/raw/reference/legacyWorkflows/step-options.mdx +6 -6
  243. package/.docs/raw/reference/legacyWorkflows/step-retries.mdx +4 -4
  244. package/.docs/raw/reference/legacyWorkflows/suspend.mdx +4 -4
  245. package/.docs/raw/reference/legacyWorkflows/then.mdx +5 -5
  246. package/.docs/raw/reference/legacyWorkflows/until.mdx +4 -4
  247. package/.docs/raw/reference/legacyWorkflows/watch.mdx +3 -3
  248. package/.docs/raw/reference/legacyWorkflows/while.mdx +4 -4
  249. package/.docs/raw/reference/legacyWorkflows/workflow.mdx +7 -7
  250. package/.docs/raw/reference/memory/createThread.mdx +10 -10
  251. package/.docs/raw/reference/memory/deleteMessages.mdx +7 -5
  252. package/.docs/raw/reference/memory/getThreadById.mdx +6 -5
  253. package/.docs/raw/reference/memory/getThreadsByResourceId.mdx +11 -10
  254. package/.docs/raw/reference/memory/getThreadsByResourceIdPaginated.mdx +10 -9
  255. package/.docs/raw/reference/memory/{Memory.mdx → memory-class.mdx} +55 -47
  256. package/.docs/raw/reference/memory/query.mdx +39 -25
  257. package/.docs/raw/reference/observability/ai-tracing/ai-tracing.mdx +9 -6
  258. package/.docs/raw/reference/observability/ai-tracing/configuration.mdx +26 -22
  259. package/.docs/raw/reference/observability/ai-tracing/exporters/arize.mdx +16 -12
  260. package/.docs/raw/reference/observability/ai-tracing/exporters/braintrust.mdx +14 -14
  261. package/.docs/raw/reference/observability/ai-tracing/exporters/cloud-exporter.mdx +16 -11
  262. package/.docs/raw/reference/observability/ai-tracing/exporters/console-exporter.mdx +10 -6
  263. package/.docs/raw/reference/observability/ai-tracing/exporters/default-exporter.mdx +23 -15
  264. package/.docs/raw/reference/observability/ai-tracing/exporters/langfuse.mdx +6 -6
  265. package/.docs/raw/reference/observability/ai-tracing/exporters/langsmith.mdx +13 -13
  266. package/.docs/raw/reference/observability/ai-tracing/exporters/otel.mdx +44 -36
  267. package/.docs/raw/reference/observability/ai-tracing/interfaces.mdx +116 -107
  268. package/.docs/raw/reference/observability/ai-tracing/processors/sensitive-data-filter.mdx +37 -32
  269. package/.docs/raw/reference/observability/ai-tracing/span.mdx +29 -26
  270. package/.docs/raw/reference/observability/logging/pino-logger.mdx +13 -15
  271. package/.docs/raw/reference/observability/otel-tracing/otel-config.mdx +2 -2
  272. package/.docs/raw/reference/observability/otel-tracing/providers/arize-ax.mdx +3 -3
  273. package/.docs/raw/reference/observability/otel-tracing/providers/arize-phoenix.mdx +2 -1
  274. package/.docs/raw/reference/observability/otel-tracing/providers/dash0.mdx +1 -1
  275. package/.docs/raw/reference/observability/otel-tracing/providers/index.mdx +12 -14
  276. package/.docs/raw/reference/observability/otel-tracing/providers/keywordsai.mdx +4 -4
  277. package/.docs/raw/reference/observability/otel-tracing/providers/laminar.mdx +1 -1
  278. package/.docs/raw/reference/observability/otel-tracing/providers/langfuse.mdx +4 -4
  279. package/.docs/raw/reference/observability/otel-tracing/providers/langsmith.mdx +1 -1
  280. package/.docs/raw/reference/observability/otel-tracing/providers/langwatch.mdx +2 -2
  281. package/.docs/raw/reference/observability/otel-tracing/providers/new-relic.mdx +1 -1
  282. package/.docs/raw/reference/observability/otel-tracing/providers/signoz.mdx +1 -1
  283. package/.docs/raw/reference/observability/otel-tracing/providers/traceloop.mdx +1 -1
  284. package/.docs/raw/reference/processors/batch-parts-processor.mdx +3 -4
  285. package/.docs/raw/reference/processors/language-detector.mdx +6 -8
  286. package/.docs/raw/reference/processors/moderation-processor.mdx +36 -11
  287. package/.docs/raw/reference/processors/pii-detector.mdx +34 -9
  288. package/.docs/raw/reference/processors/prompt-injection-detector.mdx +6 -8
  289. package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +14 -10
  290. package/.docs/raw/reference/processors/token-limiter-processor.mdx +3 -5
  291. package/.docs/raw/reference/processors/unicode-normalizer.mdx +3 -4
  292. package/.docs/raw/reference/rag/chunk.mdx +41 -23
  293. package/.docs/raw/reference/rag/database-config.mdx +56 -38
  294. package/.docs/raw/reference/rag/embeddings.mdx +1 -1
  295. package/.docs/raw/reference/rag/extract-params.mdx +1 -1
  296. package/.docs/raw/reference/rag/graph-rag.mdx +1 -1
  297. package/.docs/raw/reference/rag/metadata-filters.mdx +23 -26
  298. package/.docs/raw/reference/rag/rerank.mdx +1 -1
  299. package/.docs/raw/reference/rag/rerankWithScorer.mdx +2 -2
  300. package/.docs/raw/reference/scorers/answer-relevancy.mdx +35 -17
  301. package/.docs/raw/reference/scorers/answer-similarity.mdx +84 -68
  302. package/.docs/raw/reference/scorers/bias.mdx +22 -19
  303. package/.docs/raw/reference/scorers/completeness.mdx +21 -16
  304. package/.docs/raw/reference/scorers/content-similarity.mdx +12 -10
  305. package/.docs/raw/reference/scorers/context-precision.mdx +73 -64
  306. package/.docs/raw/reference/scorers/context-relevance.mdx +142 -126
  307. package/.docs/raw/reference/scorers/create-scorer.mdx +93 -61
  308. package/.docs/raw/reference/scorers/faithfulness.mdx +21 -13
  309. package/.docs/raw/reference/scorers/hallucination.mdx +17 -12
  310. package/.docs/raw/reference/scorers/keyword-coverage.mdx +32 -27
  311. package/.docs/raw/reference/scorers/mastra-scorer.mdx +39 -33
  312. package/.docs/raw/reference/scorers/noise-sensitivity.mdx +203 -152
  313. package/.docs/raw/reference/scorers/prompt-alignment.mdx +186 -132
  314. package/.docs/raw/reference/scorers/run-experiment.mdx +41 -32
  315. package/.docs/raw/reference/scorers/textual-difference.mdx +25 -26
  316. package/.docs/raw/reference/scorers/tone-consistency.mdx +29 -26
  317. package/.docs/raw/reference/scorers/tool-call-accuracy.mdx +180 -176
  318. package/.docs/raw/reference/scorers/toxicity.mdx +35 -31
  319. package/.docs/raw/reference/storage/cloudflare-d1.mdx +1 -1
  320. package/.docs/raw/reference/storage/cloudflare.mdx +1 -1
  321. package/.docs/raw/reference/storage/dynamodb.mdx +1 -1
  322. package/.docs/raw/reference/storage/lance.mdx +1 -1
  323. package/.docs/raw/reference/storage/libsql.mdx +2 -2
  324. package/.docs/raw/reference/storage/mongodb.mdx +4 -5
  325. package/.docs/raw/reference/storage/mssql.mdx +8 -7
  326. package/.docs/raw/reference/storage/postgresql.mdx +35 -33
  327. package/.docs/raw/reference/storage/upstash.mdx +6 -5
  328. package/.docs/raw/reference/streaming/ChunkType.mdx +788 -314
  329. package/.docs/raw/reference/streaming/agents/MastraModelOutput.mdx +265 -109
  330. package/.docs/raw/reference/streaming/agents/stream.mdx +375 -266
  331. package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +233 -162
  332. package/.docs/raw/reference/streaming/workflows/observeStream.mdx +4 -4
  333. package/.docs/raw/reference/streaming/workflows/observeStreamVNext.mdx +5 -5
  334. package/.docs/raw/reference/streaming/workflows/resumeStreamVNext.mdx +25 -21
  335. package/.docs/raw/reference/streaming/workflows/stream.mdx +36 -27
  336. package/.docs/raw/reference/streaming/workflows/streamVNext.mdx +37 -28
  337. package/.docs/raw/reference/templates/overview.mdx +16 -39
  338. package/.docs/raw/reference/tools/client.mdx +1 -1
  339. package/.docs/raw/reference/tools/create-tool.mdx +45 -35
  340. package/.docs/raw/reference/tools/document-chunker-tool.mdx +2 -2
  341. package/.docs/raw/reference/tools/graph-rag-tool.mdx +12 -12
  342. package/.docs/raw/reference/tools/mcp-client.mdx +78 -72
  343. package/.docs/raw/reference/tools/mcp-server.mdx +91 -78
  344. package/.docs/raw/reference/tools/vector-query-tool.mdx +48 -38
  345. package/.docs/raw/reference/vectors/astra.mdx +1 -1
  346. package/.docs/raw/reference/vectors/chroma.mdx +25 -19
  347. package/.docs/raw/reference/vectors/couchbase.mdx +4 -4
  348. package/.docs/raw/reference/vectors/lance.mdx +5 -6
  349. package/.docs/raw/reference/vectors/libsql.mdx +1 -1
  350. package/.docs/raw/reference/vectors/mongodb.mdx +1 -1
  351. package/.docs/raw/reference/vectors/opensearch.mdx +1 -1
  352. package/.docs/raw/reference/vectors/pg.mdx +8 -4
  353. package/.docs/raw/reference/vectors/pinecone.mdx +1 -1
  354. package/.docs/raw/reference/vectors/qdrant.mdx +1 -1
  355. package/.docs/raw/reference/vectors/s3vectors.mdx +35 -27
  356. package/.docs/raw/reference/vectors/turbopuffer.mdx +1 -1
  357. package/.docs/raw/reference/vectors/upstash.mdx +33 -25
  358. package/.docs/raw/reference/vectors/vectorize.mdx +1 -1
  359. package/.docs/raw/reference/voice/azure.mdx +1 -1
  360. package/.docs/raw/reference/voice/cloudflare.mdx +1 -1
  361. package/.docs/raw/reference/voice/composite-voice.mdx +1 -1
  362. package/.docs/raw/reference/voice/deepgram.mdx +1 -1
  363. package/.docs/raw/reference/voice/elevenlabs.mdx +1 -1
  364. package/.docs/raw/reference/voice/google-gemini-live.mdx +7 -5
  365. package/.docs/raw/reference/voice/google.mdx +1 -1
  366. package/.docs/raw/reference/voice/mastra-voice.mdx +1 -1
  367. package/.docs/raw/reference/voice/murf.mdx +1 -1
  368. package/.docs/raw/reference/voice/openai-realtime.mdx +1 -1
  369. package/.docs/raw/reference/voice/openai.mdx +1 -1
  370. package/.docs/raw/reference/voice/playai.mdx +1 -1
  371. package/.docs/raw/reference/voice/sarvam.mdx +1 -1
  372. package/.docs/raw/reference/voice/speechify.mdx +1 -1
  373. package/.docs/raw/reference/voice/voice.addInstructions.mdx +1 -1
  374. package/.docs/raw/reference/voice/voice.addTools.mdx +1 -1
  375. package/.docs/raw/reference/voice/voice.answer.mdx +1 -1
  376. package/.docs/raw/reference/voice/voice.close.mdx +1 -1
  377. package/.docs/raw/reference/voice/voice.connect.mdx +1 -1
  378. package/.docs/raw/reference/voice/voice.events.mdx +1 -1
  379. package/.docs/raw/reference/voice/voice.getSpeakers.mdx +23 -30
  380. package/.docs/raw/reference/voice/voice.listen.mdx +1 -1
  381. package/.docs/raw/reference/voice/voice.off.mdx +1 -1
  382. package/.docs/raw/reference/voice/voice.on.mdx +1 -1
  383. package/.docs/raw/reference/voice/voice.send.mdx +1 -1
  384. package/.docs/raw/reference/voice/voice.speak.mdx +1 -1
  385. package/.docs/raw/reference/voice/voice.updateConfig.mdx +1 -1
  386. package/.docs/raw/reference/workflows/run-methods/cancel.mdx +4 -3
  387. package/.docs/raw/reference/workflows/run-methods/resume.mdx +49 -34
  388. package/.docs/raw/reference/workflows/run-methods/start.mdx +43 -31
  389. package/.docs/raw/reference/workflows/run-methods/watch.mdx +7 -8
  390. package/.docs/raw/reference/workflows/run.mdx +7 -10
  391. package/.docs/raw/reference/workflows/step.mdx +16 -13
  392. package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +2 -2
  393. package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +1 -1
  394. package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +7 -7
  395. package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +2 -2
  396. package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +2 -2
  397. package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +1 -1
  398. package/.docs/raw/reference/workflows/workflow-methods/map.mdx +74 -3
  399. package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +1 -1
  400. package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +5 -5
  401. package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +3 -2
  402. package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +3 -2
  403. package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
  404. package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +3 -3
  405. package/.docs/raw/reference/workflows/workflow.mdx +12 -23
  406. package/.docs/raw/scorers/custom-scorers.mdx +58 -48
  407. package/.docs/raw/scorers/evals-old-api/custom-eval.mdx +6 -8
  408. package/.docs/raw/scorers/evals-old-api/overview.mdx +8 -8
  409. package/.docs/raw/scorers/evals-old-api/running-in-ci.mdx +9 -9
  410. package/.docs/raw/scorers/evals-old-api/textual-evals.mdx +5 -5
  411. package/.docs/raw/scorers/off-the-shelf-scorers.mdx +3 -1
  412. package/.docs/raw/scorers/overview.mdx +23 -22
  413. package/.docs/raw/server-db/custom-api-routes.mdx +8 -8
  414. package/.docs/raw/server-db/mastra-client.mdx +56 -54
  415. package/.docs/raw/server-db/middleware.mdx +15 -11
  416. package/.docs/raw/server-db/production-server.mdx +5 -7
  417. package/.docs/raw/server-db/runtime-context.mdx +41 -38
  418. package/.docs/raw/server-db/storage.mdx +82 -87
  419. package/.docs/raw/streaming/events.mdx +24 -16
  420. package/.docs/raw/streaming/overview.mdx +17 -18
  421. package/.docs/raw/streaming/tool-streaming.mdx +9 -10
  422. package/.docs/raw/streaming/workflow-streaming.mdx +14 -12
  423. package/.docs/raw/tools-mcp/advanced-usage.mdx +2 -2
  424. package/.docs/raw/tools-mcp/mcp-overview.mdx +92 -102
  425. package/.docs/raw/tools-mcp/overview.mdx +10 -15
  426. package/.docs/raw/voice/overview.mdx +273 -250
  427. package/.docs/raw/voice/speech-to-speech.mdx +14 -12
  428. package/.docs/raw/voice/speech-to-text.mdx +2 -2
  429. package/.docs/raw/voice/text-to-speech.mdx +2 -2
  430. package/.docs/raw/workflows/agents-and-tools.mdx +27 -30
  431. package/.docs/raw/workflows/control-flow.mdx +213 -170
  432. package/.docs/raw/workflows/error-handling.mdx +15 -17
  433. package/.docs/raw/workflows/human-in-the-loop.mdx +39 -39
  434. package/.docs/raw/workflows/inngest-workflow.mdx +35 -31
  435. package/.docs/raw/workflows/overview.mdx +108 -56
  436. package/.docs/raw/workflows/snapshots.mdx +54 -36
  437. package/.docs/raw/workflows/suspend-and-resume.mdx +52 -65
  438. package/.docs/raw/workflows-legacy/control-flow.mdx +15 -17
  439. package/.docs/raw/workflows-legacy/dynamic-workflows.mdx +3 -1
  440. package/.docs/raw/workflows-legacy/error-handling.mdx +8 -6
  441. package/.docs/raw/workflows-legacy/nested-workflows.mdx +6 -0
  442. package/.docs/raw/workflows-legacy/overview.mdx +28 -26
  443. package/.docs/raw/workflows-legacy/runtime-variables.mdx +4 -2
  444. package/.docs/raw/workflows-legacy/steps.mdx +5 -3
  445. package/.docs/raw/workflows-legacy/suspend-and-resume.mdx +10 -8
  446. package/.docs/raw/workflows-legacy/variables.mdx +10 -8
  447. package/CHANGELOG.md +24 -0
  448. package/package.json +5 -5
  449. package/.docs/raw/memory/storage/memory-with-mongodb.mdx +0 -148
  450. package/.docs/raw/workflows/input-data-mapping.mdx +0 -107
@@ -1,265 +1,308 @@
1
1
  ---
2
- title: "Branching, Merging, Conditions | Workflows | Mastra Docs"
2
+ title: "Control Flow | Workflows | Mastra Docs"
3
3
  description: "Control flow in Mastra workflows allows you to manage branching, merging, and conditions to construct workflows that meet your logic requirements."
4
4
  ---
5
5
 
6
6
  # Control Flow
7
7
 
8
- When you build a workflow, you typically break down operations into smaller tasks that can be linked and reused. **Steps** provide a structured way to manage these tasks by defining inputs, outputs, and execution logic.
8
+ Workflows run a sequence of predefined tasks, and you can control how that flow is executed. Tasks are divided into **steps**, which can be executed in different ways depending on your requirements. They can run sequentially, in parallel, or follow different paths based on conditions.
9
9
 
10
- - If the schemas match, the `outputSchema` from each step is automatically passed to the `inputSchema` of the next step.
11
- - If the schemas don't match, use [Input data mapping](./input-data-mapping.mdx) to transform the `outputSchema` into the expected `inputSchema`.
10
+ Each step connects to the next in the workflow through defined schemas that keep data controlled and consistent.
11
+
12
+ ## Core principles
13
+
14
+ - The first step’s `inputSchema` must match the workflow’s `inputSchema`.
15
+ - The final step’s `outputSchema` must match the workflow’s `outputSchema`.
16
+ - Each step’s `outputSchema` must match the next step’s `inputSchema`.
17
+ - If it doesn’t, use [Input data mapping](#input-data-mapping) to transform the data into the required shape.
12
18
 
13
19
  ## Chaining steps with `.then()`
14
20
 
15
- Chain steps to execute sequentially using `.then()`:
21
+ Use `.then()` to run steps in order, allowing each step to access the result of the step before it.
16
22
 
17
- ![Chaining steps with .then()](/image/workflows/workflows-control-flow-then.jpg)
23
+ ![Chaining steps with .then()](/img/workflows/workflows-control-flow-then.jpg)
18
24
 
19
- ```typescript {8-9,4-5} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
20
- import { createWorkflow, createStep } from "@mastra/core/workflows";
21
- import { z } from "zod";
25
+ ```typescript {30-31} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
26
+ const step1 = createStep({
27
+ //...
28
+ inputSchema: z.object({
29
+ message: z.string()
30
+ }),
31
+ outputSchema: z.object({
32
+ formatted: z.string()
33
+ })
34
+ });
22
35
 
23
- const step1 = createStep({...});
24
- const step2 = createStep({...});
36
+ const step2 = createStep({
37
+ // ...
38
+ inputSchema: z.object({
39
+ formatted: z.string()
40
+ }),
41
+ outputSchema: z.object({
42
+ emphasized: z.string()
43
+ })
44
+ });
25
45
 
26
- export const testWorkflow = createWorkflow({...})
46
+ export const testWorkflow = createWorkflow({
47
+ // ...
48
+ inputSchema: z.object({
49
+ message: z.string()
50
+ }),
51
+ outputSchema: z.object({
52
+ emphasized: z.string()
53
+ })
54
+ })
27
55
  .then(step1)
28
56
  .then(step2)
29
57
  .commit();
30
58
  ```
31
59
 
32
- This does what you'd expect: it executes `step1`, then it executes `step2`.
33
-
34
60
  ## Simultaneous steps with `.parallel()`
35
61
 
36
- Execute steps simultaneously using `.parallel()`:
62
+ Use `.parallel()` to run steps at the same time. Each step's `id` is used when defining a following step's `inputSchema` and becomes the key on the `inputData` object used to access the previous step's values. The outputs of parallel steps can then be referenced or combined by a following step.
37
63
 
38
- ![Concurrent steps with .parallel()](/image/workflows/workflows-control-flow-parallel.jpg)
64
+ ![Concurrent steps with .parallel()](/img/workflows/workflows-control-flow-parallel.jpg)
39
65
 
40
- ```typescript {9,4-5} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
41
- import { createWorkflow, createStep } from "@mastra/core/workflows";
42
- import { z } from "zod";
66
+ ```typescript {42} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
67
+ const step1 = createStep({
68
+ id: "step-1",
69
+ // ...
70
+ });
43
71
 
44
- const step1 = createStep({...});
45
- const step2 = createStep({...});
46
- const step3 = createStep({...});
72
+ const step2 = createStep({
73
+ id: "step-2",
74
+ // ...
75
+ });
47
76
 
48
- export const testWorkflow = createWorkflow({...})
77
+ const step3 = createStep({
78
+ id: "step-3",
79
+ inputSchema: z.object({
80
+ "step-1": z.object({
81
+ formatted: z.string()
82
+ }),
83
+ "step-2": z.object({
84
+ emphasized: z.string()
85
+ })
86
+ }),
87
+ outputSchema: z.object({
88
+ combined: z.string()
89
+ }),
90
+ execute: async ({ inputData }) => {
91
+ const { formatted } = inputData["step-1"];
92
+ const { emphasized } = inputData["step-2"];
93
+ return {
94
+ combined: `${formatted} | ${emphasized}`
95
+ };
96
+ }
97
+ });
98
+
99
+ export const testWorkflow = createWorkflow({
100
+ // ...
101
+ inputSchema: z.object({
102
+ message: z.string()
103
+ }),
104
+ outputSchema: z.object({
105
+ combined: z.string()
106
+ })
107
+ })
49
108
  .parallel([step1, step2])
50
109
  .then(step3)
51
110
  .commit();
52
111
  ```
53
112
 
54
- This executes `step1` and `step2` concurrently, then continues to `step3` after both complete.
55
-
56
- > See [Parallel Execution with Steps](../../examples/workflows/parallel-steps.mdx) for more information.
57
-
58
113
  > 📹 Watch: How to run steps in parallel and optimize your Mastra workflow → [YouTube (3 minutes)](https://youtu.be/GQJxve5Hki4)
59
114
 
60
115
  ## Conditional logic with `.branch()`
61
116
 
62
- Execute steps conditionally using `.branch()`:
117
+ Use `.branch()` to choose which step to run based on a condition. All steps in a branch need the same `inputSchema` and `outputSchema` because branching requires consistent schemas so workflows can follow different paths.
118
+
119
+ ![Conditional branching with .branch()](/img/workflows/workflows-control-flow-branch.jpg)
63
120
 
64
- ![Conditional branching with .branch()](/image/workflows/workflows-control-flow-branch.jpg)
121
+ ```typescript {33-36} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
122
+ const step1 = createStep({...})
65
123
 
66
- ```typescript {8-11,4-5} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
67
- import { createWorkflow, createStep } from "@mastra/core/workflows";
68
- import { z } from "zod";
124
+ const stepA = createStep({
125
+ // ...
126
+ inputSchema: z.object({
127
+ value: z.number()
128
+ }),
129
+ outputSchema: z.object({
130
+ result: z.string()
131
+ })
132
+ });
69
133
 
70
- const lessThanStep = createStep({...});
71
- const greaterThanStep = createStep({...});
134
+ const stepB = createStep({
135
+ // ...
136
+ inputSchema: z.object({
137
+ value: z.number()
138
+ }),
139
+ outputSchema: z.object({
140
+ result: z.string()
141
+ })
142
+ });
72
143
 
73
- export const testWorkflow = createWorkflow({...})
144
+ export const testWorkflow = createWorkflow({
145
+ // ...
146
+ inputSchema: z.object({
147
+ value: z.number()
148
+ }),
149
+ outputSchema: z.object({
150
+ result: z.string()
151
+ })
152
+ })
153
+ .then(step1)
74
154
  .branch([
75
- [async ({ inputData: { value } }) => value <= 10, lessThanStep],
76
- [async ({ inputData: { value } }) => value > 10, greaterThanStep]
155
+ [async ({ inputData: { value } }) => value > 10, stepA],
156
+ [async ({ inputData: { value } }) => value <= 10, stepB]
77
157
  ])
78
158
  .commit();
79
159
  ```
80
160
 
81
- Branch conditions are evaluated sequentially, but steps with matching conditions are executed in parallel.
82
-
83
- > See [Workflow with Conditional Branching](../../examples/workflows/conditional-branching.mdx) for more information.
84
-
85
- ## Looping steps
86
-
87
- Workflows support two types of loops. When looping a step, or any step-compatible construct like a nested workflow, the initial `inputData` is sourced from the output of the previous step.
161
+ ## Input data mapping
88
162
 
89
- To ensure compatibility, the loop’s initial input must either match the shape of the previous step’s output, or be explicitly transformed using the `map` function.
163
+ When using `.then()`, `.parallel()`, or `.branch()`, it is sometimes necessary to transform the output of a previous step to match the input of the next. In these cases you can use `.map()` to access the `inputData` and transform it to create a suitable data shape for the next step.
90
164
 
91
- - Match the shape of the previous step’s output, or
92
- - Be explicitly transformed using the `map` function.
165
+ ![Mapping with .map()](/img/workflows/workflows-data-mapping-map.jpg)
93
166
 
94
- ### Repeating with `.dowhile()`
95
-
96
- Executes step repeatedly while a condition is true.
97
-
98
- ![Repeating with .dowhile()](/image/workflows/workflows-control-flow-dowhile.jpg)
99
-
100
- ```typescript {7} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
101
- import { createWorkflow, createStep } from "@mastra/core/workflows";
102
- import { z } from "zod";
103
-
104
- const counterStep = createStep({...});
167
+ ```typescript {9} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
168
+ const step1 = createStep({...});
169
+ const step2 = createStep({...});
105
170
 
106
171
  export const testWorkflow = createWorkflow({...})
107
- .dowhile(counterStep, async ({ inputData: { number } }) => number < 10)
172
+ .then(step1)
173
+ .map(async ({ inputData }) => {
174
+ const { foo } = inputData;
175
+ return {
176
+ bar: `new ${foo}`,
177
+ };
178
+ })
179
+ .then(step2)
108
180
  .commit();
109
181
  ```
110
182
 
111
- ### Repeating with `.dountil()`
112
-
113
- Executes step repeatedly until a condition becomes true.
183
+ The `.map()` method provides additional helper functions for more complex mapping scenarios.
114
184
 
115
- ![Repeating with .dountil()](/image/workflows/workflows-control-flow-dountil.jpg)
185
+ **Available helper functions:**
116
186
 
117
- ```typescript {7} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
118
- import { createWorkflow, createStep } from "@mastra/core/workflows";
119
- import { z } from "zod";
120
-
121
- const counterStep = createStep({...});
122
-
123
- export const testWorkflow = createWorkflow({...})
124
- .dountil(counterStep, async ({ inputData: { number } }) => number > 10)
125
- .commit();
126
- ```
127
-
128
- ### Loop management
129
-
130
- Loop conditions can be implemented in different ways depending on how you want the loop to end. Common patterns include checking values returned in `inputData`, setting a maximum number of iterations, or aborting execution when a limit is reached.
187
+ - [`getStepResult()`](/reference/workflows/workflow-methods/map#using-getstepresult): Access a specific step's full output
188
+ - [`getInitData()`](/reference/workflows/workflow-methods/map#using-getinitdata): Access the workflow's initial input data
189
+ - [`mapVariable()`](/reference/workflows/workflow-methods/map#using-mapvariable): Use declarative object syntax to extract and rename fields
131
190
 
132
- #### Conditional loops
133
-
134
- The `inputData` for a loop step is the output of a previous step. Use the values in `inputData` to determine whether the loop should continue or stop.
135
-
136
- ```typescript {7} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
137
- import { createWorkflow, createStep } from "@mastra/core/workflows";
138
- import { z } from "zod";
191
+ ## Looping steps
139
192
 
140
- const counterStep = createStep({...});
193
+ Workflows support different looping methods that let you repeat steps until or while a condition is met, or iterate over arrays. Loops can be combined with other control methods like `.then()`.
141
194
 
142
- export const testWorkflow = createWorkflow({...})
143
- .dountil(nestedWorkflowStep, async ({ inputData: { userResponse } }) => userResponse === "yes")
144
- .commit();
145
- ```
195
+ ### Looping with `.dountil()`
146
196
 
147
- #### Limiting loops
197
+ Use `.dountil()` to run a step repeatedly until a condition becomes true.
148
198
 
149
- The `iterationCount` tracks how many times the loop step has run. You can use this to limit the number of iterations and prevent infinite loops. Combine it with `inputData` values to stop the loop after a set number of attempts.
199
+ ![Repeating with .dountil()](/img/workflows/workflows-control-flow-dountil.jpg)
150
200
 
151
- ```typescript {7} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
152
- import { createWorkflow, createStep } from "@mastra/core/workflows";
153
- import { z } from "zod";
201
+ ```typescript {17} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
202
+ const step1 = createStep({...});
154
203
 
155
- const counterStep = createStep({...});
204
+ const step2 = createStep({
205
+ // ...
206
+ execute: async ({ inputData }) => {
207
+ const { number } = inputData;
208
+ return {
209
+ number: number + 1
210
+ };
211
+ }
212
+ });
156
213
 
157
- export const testWorkflow = createWorkflow({...})
158
- .dountil(nestedWorkflowStep, async ({ inputData: { userResponse, iterationCount } }) => userResponse === "yes" || iterationCount >= 10)
159
- .commit();
214
+ export const testWorkflow = createWorkflow({
215
+ // ...
216
+ })
217
+ .then(step1)
218
+ .dountil(step2, async ({ inputData: { number } }) => number > 10)
219
+ .commit();
160
220
  ```
161
221
 
162
- #### Aborting loops
222
+ ### Looping with `.dowhile()`
163
223
 
164
- Use `iterationCount` to limit how many times a loop runs. If the count exceeds your threshold, throw an error to fail the step and stop the workflow.
224
+ Use `.dowhile()` to run a step repeatedly while a condition remains true.
165
225
 
166
- ```typescript {7} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
167
- import { createWorkflow, createStep } from "@mastra/core/workflows";
168
- import { z } from "zod";
226
+ ![Repeating with .dowhile()](/img/workflows/workflows-control-flow-dowhile.jpg)
169
227
 
170
- const counterStep = createStep({...});
228
+ ```typescript {17} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
229
+ const step1 = createStep({...});
171
230
 
172
- export const testWorkflow = createWorkflow({...})
173
- .dountil(nestedWorkflowStep, async ({ inputData: { userResponse, iterationCount } }) => {
174
- if (iterationCount >= 10) {
175
- throw new Error("Maximum iterations reached");
231
+ const step2 = createStep({
232
+ // ...
233
+ execute: async ({ inputData }) => {
234
+ const { number } = inputData;
235
+ return {
236
+ number: number + 1
237
+ };
176
238
  }
177
- return userResponse === "yes";
239
+ });
240
+
241
+ export const testWorkflow = createWorkflow({
242
+ // ...
178
243
  })
179
- .commit();
244
+ .then(step1)
245
+ .dowhile(step2, async ({ inputData: { number } }) => number < 10)
246
+ .commit();
180
247
  ```
181
248
 
182
- ### Repeating with `.foreach()`
249
+ ### Looping with `.foreach()`
183
250
 
184
- Sequentially executes the same step for each item from the `inputSchema`.
251
+ Use `.foreach()` to run the same step for each item in an array. The input must be of type `array` so the loop can iterate over its values, applying the step’s logic to each one.
185
252
 
186
- ![Repeating with .foreach()](/image/workflows/workflows-control-flow-foreach.jpg)
253
+ ![Repeating with .foreach()](/img/workflows/workflows-control-flow-foreach.jpg)
187
254
 
188
- ```typescript {7} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
189
- import { createWorkflow, createStep } from "@mastra/core/workflows";
190
- import { z } from "zod";
255
+ ```typescript {17} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
256
+ const step1 = createStep({
257
+ // ...
258
+ inputSchema: z.string(),
259
+ outputSchema: z.string(),
260
+ execute: async ({ inputData }) => {
261
+ return inputData.toUpperCase();
262
+ }
263
+ });
191
264
 
192
- const mapStep = createStep({...});
265
+ const step2 = createStep({...});
193
266
 
194
- export const testWorkflow = createWorkflow({...})
195
- .foreach(mapStep)
267
+ export const testWorkflow = createWorkflow({
268
+ // ...
269
+ inputSchema: z.array(z.string()),
270
+ outputSchema: z.array(z.string())
271
+ })
272
+ .foreach(step1)
273
+ .then(step2)
196
274
  .commit();
197
275
  ```
198
276
 
199
- #### Setting concurrency limits
200
-
201
- Use `concurrency` to execute steps in parallel with a limit on the number of concurrent executions.
277
+ #### Concurrency limits
202
278
 
203
- ```typescript {7} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
204
- import { createWorkflow, createStep } from "@mastra/core/workflows";
205
- import { z } from "zod";
279
+ Use `concurrency` to control the number of array items processed at the same time. The default is `1`, which runs steps sequentially. Increasing the value allows `.foreach()` to process multiple items simultaneously.
206
280
 
207
- const mapStep = createStep({...})
281
+ ```typescript title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
282
+ const step1 = createStep({...})
208
283
 
209
284
  export const testWorkflow = createWorkflow({...})
210
- .foreach(mapStep, { concurrency: 2 })
285
+ .foreach(step1, { concurrency: 4 })
211
286
  .commit();
212
287
  ```
213
288
 
214
- ## Using a nested workflow
215
-
216
- Use a nested workflow as a step by passing it to `.then()`. This runs each of its steps in sequence as part of the parent workflow.
217
-
218
- ```typescript {4,7} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
219
- import { createWorkflow, createStep } from "@mastra/core/workflows";
220
- import { z } from "zod";
221
-
222
- export const nestedWorkflow = createWorkflow({...})
289
+ ## Loop management
223
290
 
224
- export const testWorkflow = createWorkflow({...})
225
- .then(nestedWorkflow)
226
- .commit();
227
- ```
228
-
229
- ## Cloning a workflow
291
+ Loop conditions can be implemented in different ways depending on how you want the loop to end. Common patterns include checking values returned in `inputData`, setting a maximum number of iterations, or aborting execution when a limit is reached.
230
292
 
231
- Use `cloneWorkflow` to duplicate an existing workflow. This lets you reuse its structure while overriding parameters like `id`.
293
+ ### Aborting loops
232
294
 
233
- ```typescript {6,10} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
234
- import { createWorkflow, createStep, cloneWorkflow } from "@mastra/core/workflows";
235
- import { z } from "zod";
295
+ Use `iterationCount` to limit how many times a loop runs. If the count exceeds your threshold, throw an error to fail the step and stop the workflow.
236
296
 
297
+ ```typescript title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
237
298
  const step1 = createStep({...});
238
- const parentWorkflow = createWorkflow({...})
239
- const clonedWorkflow = cloneWorkflow(parentWorkflow, { id: "cloned-workflow" });
240
299
 
241
300
  export const testWorkflow = createWorkflow({...})
242
- .then(step1)
243
- .then(clonedWorkflow)
301
+ .dountil(step1, async ({ inputData: { userResponse, iterationCount } }) => {
302
+ if (iterationCount >= 10) {
303
+ throw new Error("Maximum iterations reached");
304
+ }
305
+ return userResponse === "yes";
306
+ })
244
307
  .commit();
245
308
  ```
246
-
247
- ## Example Run Instance
248
-
249
- The following example demonstrates how to start a run with multiple inputs. Each input will pass through the `mapStep` sequentially.
250
-
251
- ```typescript {6} filename="src/test-workflow.ts" showLineNumbers copy
252
- import { mastra } from "./mastra";
253
-
254
- const run = await mastra.getWorkflow("testWorkflow").createRunAsync();
255
-
256
- const result = await run.start({
257
- inputData: [{ number: 10 }, { number: 100 }, { number: 200 }]
258
- });
259
- ```
260
-
261
- To execute this run from your terminal:
262
-
263
- ```bash copy
264
- npx tsx src/test-workflow.ts
265
- ```
@@ -1,5 +1,5 @@
1
1
  ---
2
- title: "Error Handling in Workflows | Workflows | Mastra Docs"
2
+ title: "Error Handling | Workflows | Mastra Docs"
3
3
  description: "Learn how to handle errors in Mastra workflows using step retries, conditional branching, and monitoring."
4
4
  ---
5
5
 
@@ -11,7 +11,7 @@ Mastra provides a built-in retry mechanism for workflows or steps that fail due
11
11
 
12
12
  You can configure retries at the workflow level, which applies to all steps in the workflow:
13
13
 
14
- ```typescript {8-11} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
14
+ ```typescript {8-11} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
15
15
  import { createWorkflow, createStep } from "@mastra/core/workflows";
16
16
  import { z } from "zod";
17
17
 
@@ -32,7 +32,7 @@ export const testWorkflow = createWorkflow({
32
32
 
33
33
  You can configure retries for individual steps using the `retries` property. This overrides the workflow-level retry configuration for that specific step:
34
34
 
35
- ```typescript {17} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
35
+ ```typescript {17} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
36
36
  import { createWorkflow, createStep } from "@mastra/core/workflows";
37
37
  import { z } from "zod";
38
38
 
@@ -57,7 +57,7 @@ const step1 = createStep({
57
57
 
58
58
  You can create alternative workflow paths based on the success or failure of previous steps using conditional logic:
59
59
 
60
- ```typescript {15,19,33-34} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
60
+ ```typescript {15,19,33-34} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
61
61
  import { createWorkflow, createStep } from "@mastra/core/workflows";
62
62
  import { z } from "zod";
63
63
 
@@ -100,7 +100,7 @@ export const testWorkflow = createWorkflow({
100
100
 
101
101
  Use `getStepResult()` to inspect a previous step’s results.
102
102
 
103
- ```typescript {10} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
103
+ ```typescript {10} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
104
104
  import { createStep } from "@mastra/core/workflows";
105
105
  import { z } from "zod";
106
106
 
@@ -123,7 +123,7 @@ const step2 = createStep({
123
123
 
124
124
  Use `bail()` in a step to exit early with a successful result. This returns the provided payload as the step output and ends workflow execution.
125
125
 
126
- ```typescript {7} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
126
+ ```typescript {7} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
127
127
  import { createWorkflow, createStep } from "@mastra/core/workflows";
128
128
  import { z } from "zod";
129
129
 
@@ -145,7 +145,7 @@ export const testWorkflow = createWorkflow({...})
145
145
 
146
146
  Use `throw new Error()` in a step to exit with an error.
147
147
 
148
- ```typescript {7} filename="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
148
+ ```typescript {7} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
149
149
  import { createWorkflow, createStep } from "@mastra/core/workflows";
150
150
  import { z } from "zod";
151
151
 
@@ -167,7 +167,7 @@ export const testWorkflow = createWorkflow({...})
167
167
 
168
168
  You can monitor workflows for errors using the `watch` method:
169
169
 
170
- ```typescript {11} filename="src/test-workflow.ts" showLineNumbers copy
170
+ ```typescript {11} title="src/test-workflow.ts" showLineNumbers copy
171
171
  import { mastra } from "../src/mastra";
172
172
 
173
173
  const workflow = mastra.getWorkflow("testWorkflow");
@@ -175,19 +175,18 @@ const run = await workflow.createRunAsync();
175
175
 
176
176
  run.watch((event) => {
177
177
  const {
178
- payload: { currentStep }
178
+ payload: { currentStep },
179
179
  } = event;
180
180
 
181
181
  console.log(currentStep?.payload?.status);
182
182
  });
183
-
184
183
  ```
185
184
 
186
185
  ## Monitor errors with `stream()`
187
186
 
188
187
  You can monitor workflows for errors using `stream`:
189
188
 
190
- ```typescript {11} filename="src/test-workflow.ts" showLineNumbers copy
189
+ ```typescript {11} title="src/test-workflow.ts" showLineNumbers copy
191
190
  import { mastra } from "../src/mastra";
192
191
 
193
192
  const workflow = mastra.getWorkflow("testWorkflow");
@@ -196,18 +195,17 @@ const run = await workflow.createRunAsync();
196
195
 
197
196
  const stream = await run.stream({
198
197
  inputData: {
199
- value: "initial data"
200
- }
198
+ value: "initial data",
199
+ },
201
200
  });
202
201
 
203
202
  for await (const chunk of stream.stream) {
204
203
  console.log(chunk.payload.output.stats);
205
204
  }
206
-
207
205
  ```
208
206
 
209
207
  ## Related
210
208
 
211
- - [Control Flow](./control-flow.mdx)
212
- - [Conditional Branching](./control-flow.mdx#conditional-logic-with-branch)
213
- - [Running Workflows](../../examples/workflows/running-workflows.mdx)
209
+ - [Control Flow](./control-flow)
210
+ - [Conditional Branching](./control-flow#conditional-logic-with-branch)
211
+ - [Running Workflows](/examples/workflows_legacy/creating-a-workflow)