@mastra/mcp-docs-server 0.0.0-error-handler-fix-20251020202607 → 0.0.0-execa-dynamic-import-20260304221256

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 (1226) hide show
  1. package/.docs/course/01-first-agent/04-project-structure.md +19 -0
  2. package/.docs/course/01-first-agent/05-running-playground.md +19 -0
  3. package/.docs/course/01-first-agent/07-creating-your-agent.md +50 -0
  4. package/.docs/course/01-first-agent/08-exporting-your-agent.md +34 -0
  5. package/.docs/course/01-first-agent/09-testing-your-agent.md +12 -0
  6. package/.docs/course/01-first-agent/11-creating-transactions-tool.md +41 -0
  7. package/.docs/course/01-first-agent/12-connecting-tool-to-agent.md +29 -0
  8. package/.docs/course/01-first-agent/13-testing-your-tool.md +15 -0
  9. package/.docs/course/01-first-agent/15-installing-memory.md +13 -0
  10. package/.docs/course/01-first-agent/16-adding-memory-to-agent.md +33 -0
  11. package/.docs/course/01-first-agent/17-testing-memory.md +15 -0
  12. package/.docs/course/02-agent-tools-mcp/03-setting-up-mcp-configuration.md +21 -0
  13. package/.docs/course/02-agent-tools-mcp/04-initializing-mcp-tools.md +11 -0
  14. package/.docs/course/02-agent-tools-mcp/05-updating-your-agent.md +20 -0
  15. package/.docs/course/02-agent-tools-mcp/07-what-is-zapier-mcp.md +23 -0
  16. package/.docs/course/02-agent-tools-mcp/08-getting-zapier-mcp-url.md +21 -0
  17. package/.docs/course/02-agent-tools-mcp/09-updating-mcp-config-zapier.md +29 -0
  18. package/.docs/course/02-agent-tools-mcp/10-updating-agent-instructions-zapier.md +29 -0
  19. package/.docs/course/02-agent-tools-mcp/12-troubleshooting-zapier.md +19 -0
  20. package/.docs/course/02-agent-tools-mcp/13-what-is-github-mcp.md +14 -0
  21. package/.docs/course/02-agent-tools-mcp/14-getting-github-mcp-url.md +40 -0
  22. package/.docs/course/02-agent-tools-mcp/15-updating-mcp-config-github.md +36 -0
  23. package/.docs/course/02-agent-tools-mcp/16-updating-agent-instructions-github.md +33 -0
  24. package/.docs/course/02-agent-tools-mcp/18-troubleshooting-github.md +17 -0
  25. package/.docs/course/02-agent-tools-mcp/20-updating-mcp-config-hackernews.md +36 -0
  26. package/.docs/course/02-agent-tools-mcp/21-updating-agent-instructions-hackernews.md +38 -0
  27. package/.docs/course/02-agent-tools-mcp/26-updating-mcp-config-filesystem.md +43 -0
  28. package/.docs/course/02-agent-tools-mcp/27-updating-agent-instructions-filesystem.md +45 -0
  29. package/.docs/course/02-agent-tools-mcp/31-enhancing-memory-configuration.md +78 -0
  30. package/.docs/course/02-agent-tools-mcp/32-conclusion.md +17 -0
  31. package/.docs/course/03-agent-memory/03-installing-memory.md +13 -0
  32. package/.docs/course/03-agent-memory/04-creating-basic-memory-agent.md +36 -0
  33. package/.docs/course/03-agent-memory/05-updating-mastra-export.md +18 -0
  34. package/.docs/course/03-agent-memory/07-understanding-memory-threads.md +49 -0
  35. package/.docs/course/03-agent-memory/08-configuring-conversation-history.md +36 -0
  36. package/.docs/course/03-agent-memory/09-using-memory-in-application.md +19 -0
  37. package/.docs/course/03-agent-memory/10-storage-configuration.md +29 -0
  38. package/.docs/course/03-agent-memory/12-handling-memory-frontend.md +62 -0
  39. package/.docs/course/03-agent-memory/13-vector-store-configuration.md +29 -0
  40. package/.docs/course/03-agent-memory/16-configuring-semantic-recall.md +42 -0
  41. package/.docs/course/03-agent-memory/18-advanced-configuration-semantic-recall.md +29 -0
  42. package/.docs/course/03-agent-memory/21-configuring-working-memory.md +64 -0
  43. package/.docs/course/03-agent-memory/22-custom-working-memory-templates.md +89 -0
  44. package/.docs/course/03-agent-memory/25-combining-memory-features.md +80 -0
  45. package/.docs/course/03-agent-memory/26-updating-mastra-export-comprehensive.md +0 -0
  46. package/.docs/course/03-agent-memory/27-creating-learning-assistant.md +103 -0
  47. package/.docs/course/04-workflows/01-introduction-to-workflows.md +44 -0
  48. package/.docs/course/04-workflows/02-understanding-steps.md +53 -0
  49. package/.docs/course/04-workflows/03-creating-your-first-step.md +57 -0
  50. package/.docs/course/04-workflows/04-creating-a-second-step.md +58 -0
  51. package/.docs/course/04-workflows/05-chaining-steps-together.md +57 -0
  52. package/.docs/course/04-workflows/06-registering-with-mastra.md +24 -0
  53. package/.docs/course/04-workflows/07-using-playground.md +58 -0
  54. package/.docs/course/04-workflows/08-running-workflows-programmatically.md +73 -0
  55. package/.docs/course/04-workflows/09-adding-a-third-step.md +68 -0
  56. package/.docs/course/04-workflows/10-updating-the-workflow.md +55 -0
  57. package/.docs/course/04-workflows/11-creating-an-ai-agent.md +66 -0
  58. package/.docs/course/04-workflows/12-using-agent-in-workflow.md +89 -0
  59. package/.docs/course/04-workflows/13-creating-ai-enhanced-workflow.md +72 -0
  60. package/.docs/course/04-workflows/14-understanding-parallel-execution.md +38 -0
  61. package/.docs/course/04-workflows/15-creating-parallel-steps.md +111 -0
  62. package/.docs/course/04-workflows/16-building-parallel-workflow.md +100 -0
  63. package/.docs/course/04-workflows/17-testing-parallel-performance.md +36 -0
  64. package/.docs/course/04-workflows/18-understanding-conditional-branching.md +61 -0
  65. package/.docs/course/04-workflows/19-creating-conditional-steps.md +124 -0
  66. package/.docs/course/04-workflows/20-building-conditional-workflow.md +55 -0
  67. package/.docs/course/04-workflows/21-testing-conditional-logic.md +58 -0
  68. package/.docs/docs/agents/adding-voice.md +349 -0
  69. package/.docs/docs/agents/agent-approval.md +588 -0
  70. package/.docs/docs/agents/agent-memory.md +209 -0
  71. package/.docs/docs/agents/guardrails.md +374 -0
  72. package/.docs/docs/agents/network-approval.md +275 -0
  73. package/.docs/docs/agents/networks.md +299 -0
  74. package/.docs/docs/agents/overview.md +304 -0
  75. package/.docs/docs/agents/processors.md +622 -0
  76. package/.docs/docs/agents/structured-output.md +273 -0
  77. package/.docs/docs/agents/supervisor-agents.md +304 -0
  78. package/.docs/docs/agents/using-tools.md +248 -0
  79. package/.docs/docs/build-with-ai/mcp-docs-server.md +238 -0
  80. package/.docs/docs/build-with-ai/skills.md +35 -0
  81. package/.docs/docs/community/contributing-templates.md +3 -0
  82. package/.docs/docs/community/discord.md +9 -0
  83. package/.docs/docs/community/licensing.md +66 -0
  84. package/.docs/docs/deployment/cloud-providers.md +15 -0
  85. package/.docs/docs/deployment/mastra-server.md +122 -0
  86. package/.docs/docs/deployment/monorepo.md +142 -0
  87. package/.docs/docs/deployment/overview.md +62 -0
  88. package/.docs/docs/deployment/studio.md +247 -0
  89. package/.docs/docs/deployment/web-framework.md +52 -0
  90. package/.docs/docs/deployment/workflow-runners.md +9 -0
  91. package/.docs/docs/evals/built-in-scorers.md +47 -0
  92. package/.docs/docs/evals/custom-scorers.md +519 -0
  93. package/.docs/docs/evals/overview.md +141 -0
  94. package/.docs/docs/evals/running-in-ci.md +124 -0
  95. package/.docs/docs/getting-started/build-with-ai.md +68 -0
  96. package/.docs/docs/getting-started/manual-install.md +226 -0
  97. package/.docs/docs/getting-started/project-structure.md +60 -0
  98. package/.docs/docs/getting-started/start.md +28 -0
  99. package/.docs/docs/getting-started/studio.md +101 -0
  100. package/.docs/docs/index.md +43 -0
  101. package/.docs/docs/mastra-cloud/deployment.md +77 -0
  102. package/.docs/docs/mastra-cloud/observability.md +38 -0
  103. package/.docs/docs/mastra-cloud/overview.md +23 -0
  104. package/.docs/docs/mastra-cloud/setup.md +42 -0
  105. package/.docs/docs/mastra-cloud/studio.md +24 -0
  106. package/.docs/docs/mcp/overview.md +373 -0
  107. package/.docs/docs/mcp/publishing-mcp-server.md +95 -0
  108. package/.docs/docs/memory/memory-processors.md +314 -0
  109. package/.docs/docs/memory/message-history.md +260 -0
  110. package/.docs/docs/memory/observational-memory.md +255 -0
  111. package/.docs/docs/memory/overview.md +45 -0
  112. package/.docs/docs/memory/semantic-recall.md +288 -0
  113. package/.docs/docs/memory/storage.md +261 -0
  114. package/.docs/docs/memory/working-memory.md +400 -0
  115. package/.docs/docs/observability/datasets/overview.md +198 -0
  116. package/.docs/docs/observability/datasets/running-experiments.md +274 -0
  117. package/.docs/docs/observability/logging.md +99 -0
  118. package/.docs/docs/observability/overview.md +70 -0
  119. package/.docs/docs/observability/tracing/bridges/otel.md +209 -0
  120. package/.docs/docs/observability/tracing/exporters/arize.md +272 -0
  121. package/.docs/docs/observability/tracing/exporters/braintrust.md +111 -0
  122. package/.docs/docs/observability/tracing/exporters/cloud.md +127 -0
  123. package/.docs/docs/observability/tracing/exporters/datadog.md +187 -0
  124. package/.docs/docs/observability/tracing/exporters/default.md +209 -0
  125. package/.docs/docs/observability/tracing/exporters/laminar.md +100 -0
  126. package/.docs/docs/observability/tracing/exporters/langfuse.md +213 -0
  127. package/.docs/docs/observability/tracing/exporters/langsmith.md +198 -0
  128. package/.docs/docs/observability/tracing/exporters/otel.md +476 -0
  129. package/.docs/docs/observability/tracing/exporters/posthog.md +148 -0
  130. package/.docs/docs/observability/tracing/exporters/sentry.md +208 -0
  131. package/.docs/docs/observability/tracing/overview.md +1112 -0
  132. package/.docs/docs/observability/tracing/processors/sensitive-data-filter.md +300 -0
  133. package/.docs/docs/rag/chunking-and-embedding.md +183 -0
  134. package/.docs/docs/rag/graph-rag.md +215 -0
  135. package/.docs/docs/rag/overview.md +72 -0
  136. package/.docs/docs/rag/retrieval.md +515 -0
  137. package/.docs/docs/rag/vector-databases.md +645 -0
  138. package/.docs/docs/server/auth/auth0.md +220 -0
  139. package/.docs/docs/server/auth/better-auth.md +220 -0
  140. package/.docs/docs/server/auth/clerk.md +132 -0
  141. package/.docs/docs/server/auth/composite-auth.md +234 -0
  142. package/.docs/docs/server/auth/custom-auth-provider.md +513 -0
  143. package/.docs/docs/server/auth/firebase.md +272 -0
  144. package/.docs/docs/server/auth/jwt.md +110 -0
  145. package/.docs/docs/server/auth/simple-auth.md +180 -0
  146. package/.docs/docs/server/auth/supabase.md +117 -0
  147. package/.docs/docs/server/auth/workos.md +186 -0
  148. package/.docs/docs/server/auth.md +38 -0
  149. package/.docs/docs/server/custom-adapters.md +378 -0
  150. package/.docs/docs/server/custom-api-routes.md +267 -0
  151. package/.docs/docs/server/mastra-client.md +243 -0
  152. package/.docs/docs/server/mastra-server.md +71 -0
  153. package/.docs/docs/server/middleware.md +225 -0
  154. package/.docs/docs/server/request-context.md +471 -0
  155. package/.docs/docs/server/server-adapters.md +547 -0
  156. package/.docs/docs/streaming/events.md +237 -0
  157. package/.docs/docs/streaming/overview.md +175 -0
  158. package/.docs/docs/streaming/tool-streaming.md +175 -0
  159. package/.docs/docs/streaming/workflow-streaming.md +109 -0
  160. package/.docs/docs/voice/overview.md +959 -0
  161. package/.docs/docs/voice/speech-to-speech.md +102 -0
  162. package/.docs/docs/voice/speech-to-text.md +79 -0
  163. package/.docs/docs/voice/text-to-speech.md +83 -0
  164. package/.docs/docs/workflows/agents-and-tools.md +166 -0
  165. package/.docs/docs/workflows/control-flow.md +822 -0
  166. package/.docs/docs/workflows/error-handling.md +360 -0
  167. package/.docs/docs/workflows/human-in-the-loop.md +215 -0
  168. package/.docs/docs/workflows/overview.md +370 -0
  169. package/.docs/docs/workflows/snapshots.md +238 -0
  170. package/.docs/docs/workflows/suspend-and-resume.md +205 -0
  171. package/.docs/docs/workflows/time-travel.md +309 -0
  172. package/.docs/docs/workflows/workflow-state.md +181 -0
  173. package/.docs/docs/workspace/filesystem.md +164 -0
  174. package/.docs/docs/workspace/overview.md +239 -0
  175. package/.docs/docs/workspace/sandbox.md +65 -0
  176. package/.docs/docs/workspace/search.md +243 -0
  177. package/.docs/docs/workspace/skills.md +169 -0
  178. package/.docs/guides/agent-frameworks/ai-sdk.md +140 -0
  179. package/.docs/guides/build-your-ui/ai-sdk-ui.md +1499 -0
  180. package/.docs/guides/build-your-ui/assistant-ui.md +156 -0
  181. package/.docs/guides/build-your-ui/copilotkit.md +289 -0
  182. package/.docs/guides/deployment/amazon-ec2.md +130 -0
  183. package/.docs/guides/deployment/aws-lambda.md +248 -0
  184. package/.docs/guides/deployment/azure-app-services.md +114 -0
  185. package/.docs/guides/deployment/cloudflare.md +99 -0
  186. package/.docs/guides/deployment/digital-ocean.md +168 -0
  187. package/.docs/guides/deployment/inngest.md +682 -0
  188. package/.docs/guides/deployment/netlify.md +77 -0
  189. package/.docs/guides/deployment/vercel.md +120 -0
  190. package/.docs/guides/getting-started/astro.md +398 -0
  191. package/.docs/guides/getting-started/electron.md +504 -0
  192. package/.docs/guides/getting-started/express.md +251 -0
  193. package/.docs/guides/getting-started/hono.md +190 -0
  194. package/.docs/guides/getting-started/next-js.md +347 -0
  195. package/.docs/guides/getting-started/nuxt.md +497 -0
  196. package/.docs/guides/getting-started/quickstart.md +67 -0
  197. package/.docs/guides/getting-started/sveltekit.md +296 -0
  198. package/.docs/guides/getting-started/vite-react.md +425 -0
  199. package/.docs/guides/guide/ai-recruiter.md +226 -0
  200. package/.docs/guides/guide/chef-michel.md +211 -0
  201. package/.docs/guides/guide/code-review-bot.md +226 -0
  202. package/.docs/guides/guide/dev-assistant.md +307 -0
  203. package/.docs/guides/guide/docs-manager.md +238 -0
  204. package/.docs/guides/guide/github-actions-pr-description.md +236 -0
  205. package/.docs/guides/guide/notes-mcp-server.md +416 -0
  206. package/.docs/guides/guide/research-assistant.md +348 -0
  207. package/.docs/guides/guide/research-coordinator.md +416 -0
  208. package/.docs/guides/guide/stock-agent.md +132 -0
  209. package/.docs/guides/guide/web-search.md +320 -0
  210. package/.docs/guides/guide/whatsapp-chat-bot.md +405 -0
  211. package/.docs/guides/index.md +22 -0
  212. package/.docs/guides/migrations/agentnetwork.md +97 -0
  213. package/.docs/guides/migrations/ai-sdk-v4-to-v5.md +112 -0
  214. package/.docs/guides/migrations/network-to-supervisor.md +261 -0
  215. package/.docs/guides/migrations/upgrade-to-v1/agent.md +404 -0
  216. package/.docs/guides/migrations/upgrade-to-v1/cli.md +57 -0
  217. package/.docs/guides/migrations/upgrade-to-v1/client.md +337 -0
  218. package/.docs/guides/migrations/upgrade-to-v1/deployment.md +37 -0
  219. package/.docs/guides/migrations/upgrade-to-v1/evals.md +239 -0
  220. package/.docs/guides/migrations/upgrade-to-v1/mastra.md +143 -0
  221. package/.docs/guides/migrations/upgrade-to-v1/mcp.md +97 -0
  222. package/.docs/guides/migrations/upgrade-to-v1/memory.md +285 -0
  223. package/.docs/guides/migrations/upgrade-to-v1/overview.md +119 -0
  224. package/.docs/guides/migrations/upgrade-to-v1/processors.md +68 -0
  225. package/.docs/guides/migrations/upgrade-to-v1/rag.md +42 -0
  226. package/.docs/guides/migrations/upgrade-to-v1/storage.md +553 -0
  227. package/.docs/guides/migrations/upgrade-to-v1/tools.md +180 -0
  228. package/.docs/guides/migrations/upgrade-to-v1/tracing.md +412 -0
  229. package/.docs/guides/migrations/upgrade-to-v1/vectors.md +87 -0
  230. package/.docs/guides/migrations/upgrade-to-v1/voice.md +30 -0
  231. package/.docs/guides/migrations/upgrade-to-v1/workflows.md +341 -0
  232. package/.docs/guides/migrations/vnext-to-standard-apis.md +362 -0
  233. package/.docs/models/embeddings.md +161 -0
  234. package/.docs/models/gateways/azure-openai.md +128 -0
  235. package/.docs/models/gateways/custom-gateways.md +545 -0
  236. package/.docs/models/gateways/netlify.md +93 -0
  237. package/.docs/models/gateways/openrouter.md +222 -0
  238. package/.docs/models/gateways/vercel.md +235 -0
  239. package/.docs/models/gateways.md +14 -0
  240. package/.docs/models/index.md +286 -0
  241. package/.docs/models/providers/302ai.md +134 -0
  242. package/.docs/models/providers/abacus.md +125 -0
  243. package/.docs/models/providers/agentrouter.md +90 -0
  244. package/.docs/models/providers/aihubmix.md +113 -0
  245. package/.docs/models/providers/alibaba-cn.md +135 -0
  246. package/.docs/models/providers/alibaba.md +111 -0
  247. package/.docs/models/providers/amazon-bedrock.md +33 -0
  248. package/.docs/models/providers/anthropic.md +154 -0
  249. package/.docs/models/providers/azure.md +33 -0
  250. package/.docs/models/providers/bailing.md +72 -0
  251. package/.docs/models/providers/baseten.md +79 -0
  252. package/.docs/models/providers/berget.md +78 -0
  253. package/.docs/models/providers/cerebras.md +101 -0
  254. package/.docs/models/providers/chutes.md +137 -0
  255. package/.docs/models/providers/cloudferro-sherlock.md +74 -0
  256. package/.docs/models/providers/cloudflare-ai-gateway.md +33 -0
  257. package/.docs/models/providers/cloudflare-workers-ai.md +109 -0
  258. package/.docs/models/providers/cohere.md +33 -0
  259. package/.docs/models/providers/cortecs.md +91 -0
  260. package/.docs/models/providers/deepinfra.md +112 -0
  261. package/.docs/models/providers/deepseek.md +88 -0
  262. package/.docs/models/providers/evroc.md +83 -0
  263. package/.docs/models/providers/fastrouter.md +84 -0
  264. package/.docs/models/providers/fireworks-ai.md +83 -0
  265. package/.docs/models/providers/firmware.md +86 -0
  266. package/.docs/models/providers/friendli.md +77 -0
  267. package/.docs/models/providers/github-models.md +125 -0
  268. package/.docs/models/providers/google-vertex.md +33 -0
  269. package/.docs/models/providers/google.md +161 -0
  270. package/.docs/models/providers/groq.md +107 -0
  271. package/.docs/models/providers/helicone.md +161 -0
  272. package/.docs/models/providers/huggingface.md +90 -0
  273. package/.docs/models/providers/iflowcn.md +84 -0
  274. package/.docs/models/providers/inception.md +72 -0
  275. package/.docs/models/providers/inference.md +79 -0
  276. package/.docs/models/providers/io-intelligence.md +87 -0
  277. package/.docs/models/providers/io-net.md +87 -0
  278. package/.docs/models/providers/jiekou.md +131 -0
  279. package/.docs/models/providers/kilo.md +333 -0
  280. package/.docs/models/providers/kimi-for-coding.md +100 -0
  281. package/.docs/models/providers/kuae-cloud-coding-plan.md +71 -0
  282. package/.docs/models/providers/llama.md +77 -0
  283. package/.docs/models/providers/lmstudio.md +73 -0
  284. package/.docs/models/providers/lucidquery.md +72 -0
  285. package/.docs/models/providers/meganova.md +89 -0
  286. package/.docs/models/providers/minimax-cn-coding-plan.md +102 -0
  287. package/.docs/models/providers/minimax-cn.md +102 -0
  288. package/.docs/models/providers/minimax-coding-plan.md +102 -0
  289. package/.docs/models/providers/minimax.md +104 -0
  290. package/.docs/models/providers/mistral.md +124 -0
  291. package/.docs/models/providers/moark.md +72 -0
  292. package/.docs/models/providers/modelscope.md +77 -0
  293. package/.docs/models/providers/moonshotai-cn.md +76 -0
  294. package/.docs/models/providers/moonshotai.md +76 -0
  295. package/.docs/models/providers/morph.md +73 -0
  296. package/.docs/models/providers/nano-gpt.md +103 -0
  297. package/.docs/models/providers/nebius.md +116 -0
  298. package/.docs/models/providers/nova.md +72 -0
  299. package/.docs/models/providers/novita-ai.md +154 -0
  300. package/.docs/models/providers/nvidia.md +141 -0
  301. package/.docs/models/providers/ollama-cloud.md +103 -0
  302. package/.docs/models/providers/ollama.md +33 -0
  303. package/.docs/models/providers/openai.md +193 -0
  304. package/.docs/models/providers/opencode-go.md +73 -0
  305. package/.docs/models/providers/opencode.md +100 -0
  306. package/.docs/models/providers/ovhcloud.md +83 -0
  307. package/.docs/models/providers/perplexity-agent.md +113 -0
  308. package/.docs/models/providers/perplexity.md +101 -0
  309. package/.docs/models/providers/poe.md +184 -0
  310. package/.docs/models/providers/privatemode-ai.md +75 -0
  311. package/.docs/models/providers/qihang-ai.md +79 -0
  312. package/.docs/models/providers/qiniu-ai.md +146 -0
  313. package/.docs/models/providers/requesty.md +90 -0
  314. package/.docs/models/providers/scaleway.md +84 -0
  315. package/.docs/models/providers/siliconflow-cn.md +142 -0
  316. package/.docs/models/providers/siliconflow.md +140 -0
  317. package/.docs/models/providers/stackit.md +78 -0
  318. package/.docs/models/providers/stepfun.md +73 -0
  319. package/.docs/models/providers/submodel.md +79 -0
  320. package/.docs/models/providers/synthetic.md +96 -0
  321. package/.docs/models/providers/togetherai.md +116 -0
  322. package/.docs/models/providers/upstage.md +73 -0
  323. package/.docs/models/providers/venice.md +95 -0
  324. package/.docs/models/providers/vivgrid.md +106 -0
  325. package/.docs/models/providers/vultr.md +75 -0
  326. package/.docs/models/providers/wandb.md +80 -0
  327. package/.docs/models/providers/xai.md +141 -0
  328. package/.docs/models/providers/xiaomi.md +71 -0
  329. package/.docs/models/providers/zai-coding-plan.md +80 -0
  330. package/.docs/models/providers/zai.md +79 -0
  331. package/.docs/models/providers/zenmux.md +165 -0
  332. package/.docs/models/providers/zhipuai-coding-plan.md +79 -0
  333. package/.docs/models/providers/zhipuai.md +79 -0
  334. package/.docs/models/providers.md +88 -0
  335. package/.docs/reference/agents/agent.md +141 -0
  336. package/.docs/reference/agents/generate.md +186 -0
  337. package/.docs/reference/agents/generateLegacy.md +173 -0
  338. package/.docs/reference/agents/getDefaultGenerateOptions.md +36 -0
  339. package/.docs/reference/agents/getDefaultOptions.md +34 -0
  340. package/.docs/reference/agents/getDefaultStreamOptions.md +36 -0
  341. package/.docs/reference/agents/getDescription.md +21 -0
  342. package/.docs/reference/agents/getInstructions.md +34 -0
  343. package/.docs/reference/agents/getLLM.md +37 -0
  344. package/.docs/reference/agents/getMemory.md +34 -0
  345. package/.docs/reference/agents/getModel.md +34 -0
  346. package/.docs/reference/agents/getTools.md +29 -0
  347. package/.docs/reference/agents/getVoice.md +34 -0
  348. package/.docs/reference/agents/listAgents.md +35 -0
  349. package/.docs/reference/agents/listScorers.md +34 -0
  350. package/.docs/reference/agents/listTools.md +34 -0
  351. package/.docs/reference/agents/listWorkflows.md +34 -0
  352. package/.docs/reference/agents/network.md +170 -0
  353. package/.docs/reference/ai-sdk/chat-route.md +82 -0
  354. package/.docs/reference/ai-sdk/handle-chat-stream.md +53 -0
  355. package/.docs/reference/ai-sdk/handle-network-stream.md +37 -0
  356. package/.docs/reference/ai-sdk/handle-workflow-stream.md +55 -0
  357. package/.docs/reference/ai-sdk/network-route.md +74 -0
  358. package/.docs/reference/ai-sdk/to-ai-sdk-stream.md +231 -0
  359. package/.docs/reference/ai-sdk/to-ai-sdk-v4-messages.md +79 -0
  360. package/.docs/reference/ai-sdk/to-ai-sdk-v5-messages.md +76 -0
  361. package/.docs/reference/ai-sdk/with-mastra.md +63 -0
  362. package/.docs/reference/ai-sdk/workflow-route.md +79 -0
  363. package/.docs/reference/auth/auth0.md +73 -0
  364. package/.docs/reference/auth/better-auth.md +71 -0
  365. package/.docs/reference/auth/clerk.md +36 -0
  366. package/.docs/reference/auth/firebase.md +80 -0
  367. package/.docs/reference/auth/jwt.md +26 -0
  368. package/.docs/reference/auth/supabase.md +33 -0
  369. package/.docs/reference/auth/workos.md +84 -0
  370. package/.docs/reference/cli/create-mastra.md +137 -0
  371. package/.docs/reference/cli/mastra.md +336 -0
  372. package/.docs/reference/client-js/agents.md +437 -0
  373. package/.docs/reference/client-js/error-handling.md +16 -0
  374. package/.docs/reference/client-js/logs.md +24 -0
  375. package/.docs/reference/client-js/mastra-client.md +63 -0
  376. package/.docs/reference/client-js/memory.md +221 -0
  377. package/.docs/reference/client-js/observability.md +72 -0
  378. package/.docs/reference/client-js/telemetry.md +20 -0
  379. package/.docs/reference/client-js/tools.md +44 -0
  380. package/.docs/reference/client-js/vectors.md +79 -0
  381. package/.docs/reference/client-js/workflows.md +199 -0
  382. package/.docs/reference/configuration.md +752 -0
  383. package/.docs/reference/core/addGateway.md +42 -0
  384. package/.docs/reference/core/getAgent.md +21 -0
  385. package/.docs/reference/core/getAgentById.md +21 -0
  386. package/.docs/reference/core/getDeployer.md +22 -0
  387. package/.docs/reference/core/getGateway.md +38 -0
  388. package/.docs/reference/core/getGatewayById.md +41 -0
  389. package/.docs/reference/core/getLogger.md +22 -0
  390. package/.docs/reference/core/getMCPServer.md +47 -0
  391. package/.docs/reference/core/getMCPServerById.md +55 -0
  392. package/.docs/reference/core/getMemory.md +50 -0
  393. package/.docs/reference/core/getScorer.md +54 -0
  394. package/.docs/reference/core/getScorerById.md +54 -0
  395. package/.docs/reference/core/getServer.md +22 -0
  396. package/.docs/reference/core/getStorage.md +22 -0
  397. package/.docs/reference/core/getStoredAgentById.md +89 -0
  398. package/.docs/reference/core/getTelemetry.md +22 -0
  399. package/.docs/reference/core/getVector.md +22 -0
  400. package/.docs/reference/core/getWorkflow.md +42 -0
  401. package/.docs/reference/core/listAgents.md +21 -0
  402. package/.docs/reference/core/listGateways.md +40 -0
  403. package/.docs/reference/core/listLogs.md +38 -0
  404. package/.docs/reference/core/listLogsByRunId.md +36 -0
  405. package/.docs/reference/core/listMCPServers.md +55 -0
  406. package/.docs/reference/core/listMemory.md +56 -0
  407. package/.docs/reference/core/listScorers.md +29 -0
  408. package/.docs/reference/core/listStoredAgents.md +93 -0
  409. package/.docs/reference/core/listVectors.md +22 -0
  410. package/.docs/reference/core/listWorkflows.md +21 -0
  411. package/.docs/reference/core/mastra-class.md +66 -0
  412. package/.docs/reference/core/mastra-model-gateway.md +153 -0
  413. package/.docs/reference/core/setLogger.md +26 -0
  414. package/.docs/reference/core/setStorage.md +27 -0
  415. package/.docs/reference/datasets/addItem.md +37 -0
  416. package/.docs/reference/datasets/addItems.md +35 -0
  417. package/.docs/reference/datasets/compareExperiments.md +52 -0
  418. package/.docs/reference/datasets/create.md +51 -0
  419. package/.docs/reference/datasets/dataset.md +82 -0
  420. package/.docs/reference/datasets/datasets-manager.md +94 -0
  421. package/.docs/reference/datasets/delete.md +25 -0
  422. package/.docs/reference/datasets/deleteExperiment.md +27 -0
  423. package/.docs/reference/datasets/deleteItem.md +27 -0
  424. package/.docs/reference/datasets/deleteItems.md +29 -0
  425. package/.docs/reference/datasets/get.md +31 -0
  426. package/.docs/reference/datasets/getDetails.md +47 -0
  427. package/.docs/reference/datasets/getExperiment.md +30 -0
  428. package/.docs/reference/datasets/getItem.md +33 -0
  429. package/.docs/reference/datasets/getItemHistory.md +31 -0
  430. package/.docs/reference/datasets/list.md +31 -0
  431. package/.docs/reference/datasets/listExperimentResults.md +39 -0
  432. package/.docs/reference/datasets/listExperiments.md +33 -0
  433. package/.docs/reference/datasets/listItems.md +46 -0
  434. package/.docs/reference/datasets/listVersions.md +33 -0
  435. package/.docs/reference/datasets/startExperiment.md +62 -0
  436. package/.docs/reference/datasets/startExperimentAsync.md +43 -0
  437. package/.docs/reference/datasets/update.md +48 -0
  438. package/.docs/reference/datasets/updateItem.md +38 -0
  439. package/.docs/reference/deployer/cloudflare.md +79 -0
  440. package/.docs/reference/deployer/netlify.md +80 -0
  441. package/.docs/reference/deployer/vercel.md +116 -0
  442. package/.docs/reference/deployer.md +100 -0
  443. package/.docs/reference/evals/answer-relevancy.md +105 -0
  444. package/.docs/reference/evals/answer-similarity.md +99 -0
  445. package/.docs/reference/evals/bias.md +120 -0
  446. package/.docs/reference/evals/completeness.md +136 -0
  447. package/.docs/reference/evals/content-similarity.md +101 -0
  448. package/.docs/reference/evals/context-precision.md +196 -0
  449. package/.docs/reference/evals/context-relevance.md +531 -0
  450. package/.docs/reference/evals/create-scorer.md +270 -0
  451. package/.docs/reference/evals/faithfulness.md +114 -0
  452. package/.docs/reference/evals/hallucination.md +213 -0
  453. package/.docs/reference/evals/keyword-coverage.md +128 -0
  454. package/.docs/reference/evals/mastra-scorer.md +123 -0
  455. package/.docs/reference/evals/noise-sensitivity.md +675 -0
  456. package/.docs/reference/evals/prompt-alignment.md +614 -0
  457. package/.docs/reference/evals/run-evals.md +179 -0
  458. package/.docs/reference/evals/scorer-utils.md +326 -0
  459. package/.docs/reference/evals/textual-difference.md +113 -0
  460. package/.docs/reference/evals/tone-consistency.md +119 -0
  461. package/.docs/reference/evals/tool-call-accuracy.md +533 -0
  462. package/.docs/reference/evals/toxicity.md +123 -0
  463. package/.docs/reference/harness/harness-class.md +760 -0
  464. package/.docs/reference/index.md +277 -0
  465. package/.docs/reference/logging/pino-logger.md +117 -0
  466. package/.docs/reference/memory/clone-utilities.md +199 -0
  467. package/.docs/reference/memory/cloneThread.md +142 -0
  468. package/.docs/reference/memory/createThread.md +68 -0
  469. package/.docs/reference/memory/deleteMessages.md +38 -0
  470. package/.docs/reference/memory/getThreadById.md +24 -0
  471. package/.docs/reference/memory/listThreads.md +145 -0
  472. package/.docs/reference/memory/memory-class.md +147 -0
  473. package/.docs/reference/memory/observational-memory.md +577 -0
  474. package/.docs/reference/memory/recall.md +91 -0
  475. package/.docs/reference/observability/tracing/bridges/otel.md +131 -0
  476. package/.docs/reference/observability/tracing/configuration.md +178 -0
  477. package/.docs/reference/observability/tracing/exporters/arize.md +141 -0
  478. package/.docs/reference/observability/tracing/exporters/braintrust.md +93 -0
  479. package/.docs/reference/observability/tracing/exporters/cloud-exporter.md +163 -0
  480. package/.docs/reference/observability/tracing/exporters/console-exporter.md +138 -0
  481. package/.docs/reference/observability/tracing/exporters/datadog.md +116 -0
  482. package/.docs/reference/observability/tracing/exporters/default-exporter.md +174 -0
  483. package/.docs/reference/observability/tracing/exporters/laminar.md +78 -0
  484. package/.docs/reference/observability/tracing/exporters/langfuse.md +134 -0
  485. package/.docs/reference/observability/tracing/exporters/langsmith.md +108 -0
  486. package/.docs/reference/observability/tracing/exporters/otel.md +199 -0
  487. package/.docs/reference/observability/tracing/exporters/posthog.md +92 -0
  488. package/.docs/reference/observability/tracing/exporters/sentry.md +184 -0
  489. package/.docs/reference/observability/tracing/instances.md +107 -0
  490. package/.docs/reference/observability/tracing/interfaces.md +743 -0
  491. package/.docs/reference/observability/tracing/processors/sensitive-data-filter.md +144 -0
  492. package/.docs/reference/observability/tracing/spans.md +224 -0
  493. package/.docs/reference/processors/batch-parts-processor.md +61 -0
  494. package/.docs/reference/processors/language-detector.md +82 -0
  495. package/.docs/reference/processors/message-history-processor.md +85 -0
  496. package/.docs/reference/processors/moderation-processor.md +104 -0
  497. package/.docs/reference/processors/pii-detector.md +108 -0
  498. package/.docs/reference/processors/processor-interface.md +521 -0
  499. package/.docs/reference/processors/prompt-injection-detector.md +72 -0
  500. package/.docs/reference/processors/semantic-recall-processor.md +117 -0
  501. package/.docs/reference/processors/system-prompt-scrubber.md +80 -0
  502. package/.docs/reference/processors/token-limiter-processor.md +115 -0
  503. package/.docs/reference/processors/tool-call-filter.md +85 -0
  504. package/.docs/reference/processors/tool-search-processor.md +111 -0
  505. package/.docs/reference/processors/unicode-normalizer.md +62 -0
  506. package/.docs/reference/processors/working-memory-processor.md +152 -0
  507. package/.docs/reference/rag/chunk.md +221 -0
  508. package/.docs/reference/rag/database-config.md +261 -0
  509. package/.docs/reference/rag/document.md +114 -0
  510. package/.docs/reference/rag/embeddings.md +92 -0
  511. package/.docs/reference/rag/extract-params.md +168 -0
  512. package/.docs/reference/rag/graph-rag.md +111 -0
  513. package/.docs/reference/rag/metadata-filters.md +216 -0
  514. package/.docs/reference/rag/rerank.md +75 -0
  515. package/.docs/reference/rag/rerankWithScorer.md +80 -0
  516. package/.docs/reference/server/create-route.md +262 -0
  517. package/.docs/reference/server/express-adapter.md +176 -0
  518. package/.docs/reference/server/fastify-adapter.md +90 -0
  519. package/.docs/reference/server/hono-adapter.md +162 -0
  520. package/.docs/reference/server/koa-adapter.md +127 -0
  521. package/.docs/reference/server/mastra-server.md +298 -0
  522. package/.docs/reference/server/register-api-route.md +249 -0
  523. package/.docs/reference/server/routes.md +306 -0
  524. package/.docs/reference/storage/cloudflare-d1.md +218 -0
  525. package/.docs/reference/storage/cloudflare.md +88 -0
  526. package/.docs/reference/storage/composite.md +235 -0
  527. package/.docs/reference/storage/convex.md +161 -0
  528. package/.docs/reference/storage/dynamodb.md +282 -0
  529. package/.docs/reference/storage/lance.md +131 -0
  530. package/.docs/reference/storage/libsql.md +135 -0
  531. package/.docs/reference/storage/mongodb.md +262 -0
  532. package/.docs/reference/storage/mssql.md +157 -0
  533. package/.docs/reference/storage/overview.md +121 -0
  534. package/.docs/reference/storage/postgresql.md +526 -0
  535. package/.docs/reference/storage/upstash.md +160 -0
  536. package/.docs/reference/streaming/ChunkType.md +292 -0
  537. package/.docs/reference/streaming/agents/MastraModelOutput.md +182 -0
  538. package/.docs/reference/streaming/agents/stream.md +255 -0
  539. package/.docs/reference/streaming/agents/streamLegacy.md +142 -0
  540. package/.docs/reference/streaming/workflows/observeStream.md +42 -0
  541. package/.docs/reference/streaming/workflows/resumeStream.md +61 -0
  542. package/.docs/reference/streaming/workflows/stream.md +88 -0
  543. package/.docs/reference/streaming/workflows/timeTravelStream.md +142 -0
  544. package/.docs/reference/templates/overview.md +194 -0
  545. package/.docs/reference/tools/create-tool.md +285 -0
  546. package/.docs/reference/tools/document-chunker-tool.md +89 -0
  547. package/.docs/reference/tools/graph-rag-tool.md +182 -0
  548. package/.docs/reference/tools/mcp-client.md +965 -0
  549. package/.docs/reference/tools/mcp-server.md +1271 -0
  550. package/.docs/reference/tools/vector-query-tool.md +459 -0
  551. package/.docs/reference/vectors/astra.md +121 -0
  552. package/.docs/reference/vectors/chroma.md +264 -0
  553. package/.docs/reference/vectors/convex.md +300 -0
  554. package/.docs/reference/vectors/couchbase.md +226 -0
  555. package/.docs/reference/vectors/duckdb.md +318 -0
  556. package/.docs/reference/vectors/elasticsearch.md +189 -0
  557. package/.docs/reference/vectors/lance.md +220 -0
  558. package/.docs/reference/vectors/libsql.md +305 -0
  559. package/.docs/reference/vectors/mongodb.md +295 -0
  560. package/.docs/reference/vectors/opensearch.md +99 -0
  561. package/.docs/reference/vectors/pg.md +408 -0
  562. package/.docs/reference/vectors/pinecone.md +168 -0
  563. package/.docs/reference/vectors/qdrant.md +222 -0
  564. package/.docs/reference/vectors/s3vectors.md +277 -0
  565. package/.docs/reference/vectors/turbopuffer.md +157 -0
  566. package/.docs/reference/vectors/upstash.md +294 -0
  567. package/.docs/reference/vectors/vectorize.md +147 -0
  568. package/.docs/reference/voice/azure.md +148 -0
  569. package/.docs/reference/voice/cloudflare.md +83 -0
  570. package/.docs/reference/voice/composite-voice.md +121 -0
  571. package/.docs/reference/voice/deepgram.md +79 -0
  572. package/.docs/reference/voice/elevenlabs.md +98 -0
  573. package/.docs/reference/voice/google-gemini-live.md +378 -0
  574. package/.docs/reference/voice/google.md +228 -0
  575. package/.docs/reference/voice/mastra-voice.md +311 -0
  576. package/.docs/reference/voice/murf.md +122 -0
  577. package/.docs/reference/voice/openai-realtime.md +203 -0
  578. package/.docs/reference/voice/openai.md +88 -0
  579. package/.docs/reference/voice/playai.md +80 -0
  580. package/.docs/reference/voice/sarvam.md +126 -0
  581. package/.docs/reference/voice/speechify.md +75 -0
  582. package/.docs/reference/voice/voice.addInstructions.md +55 -0
  583. package/.docs/reference/voice/voice.addTools.md +67 -0
  584. package/.docs/reference/voice/voice.answer.md +54 -0
  585. package/.docs/reference/voice/voice.close.md +51 -0
  586. package/.docs/reference/voice/voice.connect.md +94 -0
  587. package/.docs/reference/voice/voice.events.md +37 -0
  588. package/.docs/reference/voice/voice.getSpeakers.md +129 -0
  589. package/.docs/reference/voice/voice.listen.md +164 -0
  590. package/.docs/reference/voice/voice.off.md +54 -0
  591. package/.docs/reference/voice/voice.on.md +111 -0
  592. package/.docs/reference/voice/voice.send.md +65 -0
  593. package/.docs/reference/voice/voice.speak.md +157 -0
  594. package/.docs/reference/voice/voice.updateConfig.md +60 -0
  595. package/.docs/reference/workflows/run-methods/cancel.md +86 -0
  596. package/.docs/reference/workflows/run-methods/restart.md +33 -0
  597. package/.docs/reference/workflows/run-methods/resume.md +59 -0
  598. package/.docs/reference/workflows/run-methods/start.md +58 -0
  599. package/.docs/reference/workflows/run-methods/startAsync.md +67 -0
  600. package/.docs/reference/workflows/run-methods/timeTravel.md +142 -0
  601. package/.docs/reference/workflows/run.md +59 -0
  602. package/.docs/reference/workflows/step.md +119 -0
  603. package/.docs/reference/workflows/workflow-methods/branch.md +25 -0
  604. package/.docs/reference/workflows/workflow-methods/commit.md +17 -0
  605. package/.docs/reference/workflows/workflow-methods/create-run.md +63 -0
  606. package/.docs/reference/workflows/workflow-methods/dountil.md +25 -0
  607. package/.docs/reference/workflows/workflow-methods/dowhile.md +25 -0
  608. package/.docs/reference/workflows/workflow-methods/foreach.md +118 -0
  609. package/.docs/reference/workflows/workflow-methods/map.md +93 -0
  610. package/.docs/reference/workflows/workflow-methods/parallel.md +21 -0
  611. package/.docs/reference/workflows/workflow-methods/sleep.md +35 -0
  612. package/.docs/reference/workflows/workflow-methods/sleepUntil.md +35 -0
  613. package/.docs/reference/workflows/workflow-methods/then.md +21 -0
  614. package/.docs/reference/workflows/workflow.md +157 -0
  615. package/.docs/reference/workspace/daytona-sandbox.md +580 -0
  616. package/.docs/reference/workspace/e2b-sandbox.md +289 -0
  617. package/.docs/reference/workspace/filesystem.md +255 -0
  618. package/.docs/reference/workspace/gcs-filesystem.md +174 -0
  619. package/.docs/reference/workspace/local-filesystem.md +343 -0
  620. package/.docs/reference/workspace/local-sandbox.md +301 -0
  621. package/.docs/reference/workspace/s3-filesystem.md +177 -0
  622. package/.docs/reference/workspace/sandbox.md +87 -0
  623. package/.docs/reference/workspace/workspace-class.md +244 -0
  624. package/CHANGELOG.md +659 -4
  625. package/LICENSE.md +15 -0
  626. package/README.md +63 -125
  627. package/dist/index.d.ts.map +1 -1
  628. package/dist/logger.d.ts +3 -0
  629. package/dist/logger.d.ts.map +1 -1
  630. package/dist/prompts/migration.d.ts +6 -0
  631. package/dist/prompts/migration.d.ts.map +1 -0
  632. package/dist/stdio.js +1253 -293
  633. package/dist/stdio.js.map +1 -0
  634. package/dist/tools/course.d.ts.map +1 -1
  635. package/dist/tools/docs.d.ts.map +1 -1
  636. package/dist/tools/embedded-docs.d.ts +276 -0
  637. package/dist/tools/embedded-docs.d.ts.map +1 -0
  638. package/dist/tools/migration.d.ts +40 -0
  639. package/dist/tools/migration.d.ts.map +1 -0
  640. package/dist/utils.d.ts +0 -54
  641. package/dist/utils.d.ts.map +1 -1
  642. package/package.json +22 -21
  643. package/.docs/organized/changelogs/%40internal%2Fchangeset-cli.md +0 -9
  644. package/.docs/organized/changelogs/%40internal%2Fplayground.md +0 -3
  645. package/.docs/organized/changelogs/%40internal%2Fstorage-test-utils.md +0 -302
  646. package/.docs/organized/changelogs/%40internal%2Ftypes-builder.md +0 -49
  647. package/.docs/organized/changelogs/%40mastra%2Fagent-builder.md +0 -302
  648. package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +0 -302
  649. package/.docs/organized/changelogs/%40mastra%2Fastra.md +0 -302
  650. package/.docs/organized/changelogs/%40mastra%2Fauth.md +0 -31
  651. package/.docs/organized/changelogs/%40mastra%2Fchroma.md +0 -302
  652. package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +0 -302
  653. package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +0 -302
  654. package/.docs/organized/changelogs/%40mastra%2Fcloud.md +0 -302
  655. package/.docs/organized/changelogs/%40mastra%2Fcloudflare-d1.md +0 -302
  656. package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +0 -302
  657. package/.docs/organized/changelogs/%40mastra%2Fcore.md +0 -302
  658. package/.docs/organized/changelogs/%40mastra%2Fcouchbase.md +0 -302
  659. package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +0 -302
  660. package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +0 -302
  661. package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +0 -302
  662. package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +0 -302
  663. package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +0 -302
  664. package/.docs/organized/changelogs/%40mastra%2Fdynamodb.md +0 -302
  665. package/.docs/organized/changelogs/%40mastra%2Fevals.md +0 -302
  666. package/.docs/organized/changelogs/%40mastra%2Ffastembed.md +0 -87
  667. package/.docs/organized/changelogs/%40mastra%2Flance.md +0 -302
  668. package/.docs/organized/changelogs/%40mastra%2Flibsql.md +0 -302
  669. package/.docs/organized/changelogs/%40mastra%2Floggers.md +0 -302
  670. package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +0 -302
  671. package/.docs/organized/changelogs/%40mastra%2Fmcp-registry-registry.md +0 -302
  672. package/.docs/organized/changelogs/%40mastra%2Fmcp.md +0 -302
  673. package/.docs/organized/changelogs/%40mastra%2Fmemory.md +0 -302
  674. package/.docs/organized/changelogs/%40mastra%2Fmongodb.md +0 -302
  675. package/.docs/organized/changelogs/%40mastra%2Fmssql.md +0 -302
  676. package/.docs/organized/changelogs/%40mastra%2Fopensearch.md +0 -302
  677. package/.docs/organized/changelogs/%40mastra%2Fpg.md +0 -302
  678. package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +0 -302
  679. package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +0 -302
  680. package/.docs/organized/changelogs/%40mastra%2Fqdrant.md +0 -302
  681. package/.docs/organized/changelogs/%40mastra%2Frag.md +0 -302
  682. package/.docs/organized/changelogs/%40mastra%2Freact.md +0 -247
  683. package/.docs/organized/changelogs/%40mastra%2Fs3vectors.md +0 -149
  684. package/.docs/organized/changelogs/%40mastra%2Fschema-compat.md +0 -195
  685. package/.docs/organized/changelogs/%40mastra%2Fserver.md +0 -302
  686. package/.docs/organized/changelogs/%40mastra%2Fturbopuffer.md +0 -302
  687. package/.docs/organized/changelogs/%40mastra%2Fupstash.md +0 -302
  688. package/.docs/organized/changelogs/%40mastra%2Fvectorize.md +0 -302
  689. package/.docs/organized/changelogs/%40mastra%2Fvoice-azure.md +0 -302
  690. package/.docs/organized/changelogs/%40mastra%2Fvoice-cloudflare.md +0 -302
  691. package/.docs/organized/changelogs/%40mastra%2Fvoice-deepgram.md +0 -302
  692. package/.docs/organized/changelogs/%40mastra%2Fvoice-elevenlabs.md +0 -302
  693. package/.docs/organized/changelogs/%40mastra%2Fvoice-gladia.md +0 -302
  694. package/.docs/organized/changelogs/%40mastra%2Fvoice-google-gemini-live.md +0 -265
  695. package/.docs/organized/changelogs/%40mastra%2Fvoice-google.md +0 -302
  696. package/.docs/organized/changelogs/%40mastra%2Fvoice-murf.md +0 -302
  697. package/.docs/organized/changelogs/%40mastra%2Fvoice-openai-realtime.md +0 -302
  698. package/.docs/organized/changelogs/%40mastra%2Fvoice-openai.md +0 -302
  699. package/.docs/organized/changelogs/%40mastra%2Fvoice-playai.md +0 -302
  700. package/.docs/organized/changelogs/%40mastra%2Fvoice-sarvam.md +0 -302
  701. package/.docs/organized/changelogs/%40mastra%2Fvoice-speechify.md +0 -302
  702. package/.docs/organized/changelogs/create-mastra.md +0 -302
  703. package/.docs/organized/changelogs/mastra.md +0 -302
  704. package/.docs/organized/code-examples/a2a.md +0 -208
  705. package/.docs/organized/code-examples/agent.md +0 -1333
  706. package/.docs/organized/code-examples/agui.md +0 -173
  707. package/.docs/organized/code-examples/ai-elements.md +0 -47
  708. package/.docs/organized/code-examples/ai-sdk-useChat.md +0 -369
  709. package/.docs/organized/code-examples/ai-sdk-v5.md +0 -203
  710. package/.docs/organized/code-examples/assistant-ui.md +0 -28
  711. package/.docs/organized/code-examples/bird-checker-with-express.md +0 -223
  712. package/.docs/organized/code-examples/bird-checker-with-nextjs-and-eval.md +0 -347
  713. package/.docs/organized/code-examples/bird-checker-with-nextjs.md +0 -241
  714. package/.docs/organized/code-examples/client-side-tools.md +0 -59
  715. package/.docs/organized/code-examples/crypto-chatbot.md +0 -87
  716. package/.docs/organized/code-examples/experimental-auth-weather-agent.md +0 -564
  717. package/.docs/organized/code-examples/fireworks-r1.md +0 -148
  718. package/.docs/organized/code-examples/heads-up-game.md +0 -252
  719. package/.docs/organized/code-examples/mcp-configuration.md +0 -556
  720. package/.docs/organized/code-examples/mcp-registry-registry.md +0 -50
  721. package/.docs/organized/code-examples/memory-per-resource-example.md +0 -222
  722. package/.docs/organized/code-examples/memory-todo-agent.md +0 -152
  723. package/.docs/organized/code-examples/memory-with-context.md +0 -155
  724. package/.docs/organized/code-examples/memory-with-libsql.md +0 -190
  725. package/.docs/organized/code-examples/memory-with-pg.md +0 -211
  726. package/.docs/organized/code-examples/memory-with-processors.md +0 -594
  727. package/.docs/organized/code-examples/memory-with-upstash.md +0 -254
  728. package/.docs/organized/code-examples/openapi-spec-writer.md +0 -567
  729. package/.docs/organized/code-examples/quick-start.md +0 -156
  730. package/.docs/organized/code-examples/stock-price-tool.md +0 -111
  731. package/.docs/organized/code-examples/weather-agent.md +0 -576
  732. package/.docs/organized/code-examples/workflow-ai-recruiter.md +0 -147
  733. package/.docs/organized/code-examples/workflow-with-inline-steps.md +0 -99
  734. package/.docs/organized/code-examples/workflow-with-memory.md +0 -381
  735. package/.docs/organized/code-examples/workflow-with-separate-steps.md +0 -160
  736. package/.docs/organized/code-examples/workflow-with-suspend-resume.md +0 -182
  737. package/.docs/raw/agents/adding-voice.mdx +0 -290
  738. package/.docs/raw/agents/agent-memory.mdx +0 -158
  739. package/.docs/raw/agents/guardrails.mdx +0 -342
  740. package/.docs/raw/agents/networks.mdx +0 -235
  741. package/.docs/raw/agents/overview.mdx +0 -425
  742. package/.docs/raw/agents/using-tools.mdx +0 -95
  743. package/.docs/raw/auth/auth0.mdx +0 -235
  744. package/.docs/raw/auth/clerk.mdx +0 -142
  745. package/.docs/raw/auth/firebase.mdx +0 -285
  746. package/.docs/raw/auth/index.mdx +0 -19
  747. package/.docs/raw/auth/jwt.mdx +0 -101
  748. package/.docs/raw/auth/supabase.mdx +0 -128
  749. package/.docs/raw/auth/workos.mdx +0 -198
  750. package/.docs/raw/community/contributing-templates.mdx +0 -193
  751. package/.docs/raw/community/discord.mdx +0 -12
  752. package/.docs/raw/community/licensing.mdx +0 -71
  753. package/.docs/raw/course/01-first-agent/04-project-structure.md +0 -17
  754. package/.docs/raw/course/01-first-agent/05-running-playground.md +0 -19
  755. package/.docs/raw/course/01-first-agent/07-creating-your-agent.md +0 -51
  756. package/.docs/raw/course/01-first-agent/08-exporting-your-agent.md +0 -33
  757. package/.docs/raw/course/01-first-agent/09-testing-your-agent.md +0 -12
  758. package/.docs/raw/course/01-first-agent/11-creating-transactions-tool.md +0 -41
  759. package/.docs/raw/course/01-first-agent/12-connecting-tool-to-agent.md +0 -29
  760. package/.docs/raw/course/01-first-agent/13-testing-your-tool.md +0 -15
  761. package/.docs/raw/course/01-first-agent/15-installing-memory.md +0 -13
  762. package/.docs/raw/course/01-first-agent/16-adding-memory-to-agent.md +0 -33
  763. package/.docs/raw/course/01-first-agent/17-testing-memory.md +0 -15
  764. package/.docs/raw/course/02-agent-tools-mcp/03-setting-up-mcp-configuration.md +0 -21
  765. package/.docs/raw/course/02-agent-tools-mcp/04-initializing-mcp-tools.md +0 -11
  766. package/.docs/raw/course/02-agent-tools-mcp/05-updating-your-agent.md +0 -20
  767. package/.docs/raw/course/02-agent-tools-mcp/07-what-is-zapier-mcp.md +0 -14
  768. package/.docs/raw/course/02-agent-tools-mcp/08-getting-zapier-mcp-url.md +0 -16
  769. package/.docs/raw/course/02-agent-tools-mcp/09-updating-mcp-config-zapier.md +0 -17
  770. package/.docs/raw/course/02-agent-tools-mcp/10-updating-agent-instructions-zapier.md +0 -29
  771. package/.docs/raw/course/02-agent-tools-mcp/12-troubleshooting-zapier.md +0 -17
  772. package/.docs/raw/course/02-agent-tools-mcp/13-what-is-github-mcp.md +0 -14
  773. package/.docs/raw/course/02-agent-tools-mcp/14-getting-github-mcp-url.md +0 -35
  774. package/.docs/raw/course/02-agent-tools-mcp/15-updating-mcp-config-github.md +0 -20
  775. package/.docs/raw/course/02-agent-tools-mcp/16-updating-agent-instructions-github.md +0 -33
  776. package/.docs/raw/course/02-agent-tools-mcp/18-troubleshooting-github.md +0 -17
  777. package/.docs/raw/course/02-agent-tools-mcp/20-updating-mcp-config-hackernews.md +0 -26
  778. package/.docs/raw/course/02-agent-tools-mcp/21-updating-agent-instructions-hackernews.md +0 -38
  779. package/.docs/raw/course/02-agent-tools-mcp/26-updating-mcp-config-filesystem.md +0 -33
  780. package/.docs/raw/course/02-agent-tools-mcp/27-updating-agent-instructions-filesystem.md +0 -45
  781. package/.docs/raw/course/02-agent-tools-mcp/31-enhancing-memory-configuration.md +0 -76
  782. package/.docs/raw/course/02-agent-tools-mcp/32-conclusion.md +0 -17
  783. package/.docs/raw/course/03-agent-memory/03-installing-memory.md +0 -13
  784. package/.docs/raw/course/03-agent-memory/04-creating-basic-memory-agent.md +0 -36
  785. package/.docs/raw/course/03-agent-memory/05-updating-mastra-export.md +0 -18
  786. package/.docs/raw/course/03-agent-memory/07-understanding-memory-threads.md +0 -14
  787. package/.docs/raw/course/03-agent-memory/08-configuring-conversation-history.md +0 -37
  788. package/.docs/raw/course/03-agent-memory/09-using-memory-in-application.md +0 -19
  789. package/.docs/raw/course/03-agent-memory/10-storage-configuration.md +0 -30
  790. package/.docs/raw/course/03-agent-memory/12-handling-memory-frontend.md +0 -62
  791. package/.docs/raw/course/03-agent-memory/13-vector-store-configuration.md +0 -27
  792. package/.docs/raw/course/03-agent-memory/16-configuring-semantic-recall.md +0 -41
  793. package/.docs/raw/course/03-agent-memory/18-advanced-configuration-semantic-recall.md +0 -28
  794. package/.docs/raw/course/03-agent-memory/21-configuring-working-memory.md +0 -63
  795. package/.docs/raw/course/03-agent-memory/22-custom-working-memory-templates.md +0 -89
  796. package/.docs/raw/course/03-agent-memory/25-combining-memory-features.md +0 -80
  797. package/.docs/raw/course/03-agent-memory/26-updating-mastra-export-comprehensive.md +0 -32
  798. package/.docs/raw/course/03-agent-memory/27-creating-learning-assistant.md +0 -103
  799. package/.docs/raw/course/04-workflows/01-introduction-to-workflows.md +0 -44
  800. package/.docs/raw/course/04-workflows/02-understanding-steps.md +0 -53
  801. package/.docs/raw/course/04-workflows/03-creating-your-first-step.md +0 -57
  802. package/.docs/raw/course/04-workflows/04-creating-a-second-step.md +0 -58
  803. package/.docs/raw/course/04-workflows/05-chaining-steps-together.md +0 -57
  804. package/.docs/raw/course/04-workflows/06-registering-with-mastra.md +0 -24
  805. package/.docs/raw/course/04-workflows/07-using-playground.md +0 -58
  806. package/.docs/raw/course/04-workflows/08-running-workflows-programmatically.md +0 -77
  807. package/.docs/raw/course/04-workflows/09-adding-a-third-step.md +0 -70
  808. package/.docs/raw/course/04-workflows/10-updating-the-workflow.md +0 -55
  809. package/.docs/raw/course/04-workflows/11-creating-an-ai-agent.md +0 -67
  810. package/.docs/raw/course/04-workflows/12-using-agent-in-workflow.md +0 -91
  811. package/.docs/raw/course/04-workflows/13-creating-ai-enhanced-workflow.md +0 -75
  812. package/.docs/raw/course/04-workflows/14-understanding-parallel-execution.md +0 -38
  813. package/.docs/raw/course/04-workflows/15-creating-parallel-steps.md +0 -115
  814. package/.docs/raw/course/04-workflows/16-building-parallel-workflow.md +0 -100
  815. package/.docs/raw/course/04-workflows/17-testing-parallel-performance.md +0 -40
  816. package/.docs/raw/course/04-workflows/18-understanding-conditional-branching.md +0 -61
  817. package/.docs/raw/course/04-workflows/19-creating-conditional-steps.md +0 -128
  818. package/.docs/raw/course/04-workflows/20-building-conditional-workflow.md +0 -60
  819. package/.docs/raw/course/04-workflows/21-testing-conditional-logic.md +0 -58
  820. package/.docs/raw/deployment/cloud-providers/amazon-ec2.mdx +0 -115
  821. package/.docs/raw/deployment/cloud-providers/aws-lambda.mdx +0 -273
  822. package/.docs/raw/deployment/cloud-providers/azure-app-services.mdx +0 -137
  823. package/.docs/raw/deployment/cloud-providers/digital-ocean.mdx +0 -206
  824. package/.docs/raw/deployment/cloud-providers/index.mdx +0 -52
  825. package/.docs/raw/deployment/monorepo.mdx +0 -107
  826. package/.docs/raw/deployment/overview.mdx +0 -82
  827. package/.docs/raw/deployment/server-deployment.mdx +0 -86
  828. package/.docs/raw/deployment/serverless-platforms/cloudflare-deployer.mdx +0 -87
  829. package/.docs/raw/deployment/serverless-platforms/index.mdx +0 -52
  830. package/.docs/raw/deployment/serverless-platforms/netlify-deployer.mdx +0 -94
  831. package/.docs/raw/deployment/serverless-platforms/vercel-deployer.mdx +0 -109
  832. package/.docs/raw/deployment/web-framework.mdx +0 -63
  833. package/.docs/raw/frameworks/agentic-uis/ai-sdk.mdx +0 -675
  834. package/.docs/raw/frameworks/agentic-uis/assistant-ui.mdx +0 -125
  835. package/.docs/raw/frameworks/agentic-uis/cedar-os.mdx +0 -108
  836. package/.docs/raw/frameworks/agentic-uis/copilotkit.mdx +0 -341
  837. package/.docs/raw/frameworks/agentic-uis/openrouter.mdx +0 -165
  838. package/.docs/raw/frameworks/servers/express.mdx +0 -208
  839. package/.docs/raw/frameworks/web-frameworks/astro.mdx +0 -519
  840. package/.docs/raw/frameworks/web-frameworks/next-js.mdx +0 -336
  841. package/.docs/raw/frameworks/web-frameworks/sveltekit.mdx +0 -461
  842. package/.docs/raw/frameworks/web-frameworks/vite-react.mdx +0 -242
  843. package/.docs/raw/getting-started/installation.mdx +0 -316
  844. package/.docs/raw/getting-started/mcp-docs-server.mdx +0 -183
  845. package/.docs/raw/getting-started/project-structure.mdx +0 -72
  846. package/.docs/raw/getting-started/templates.mdx +0 -70
  847. package/.docs/raw/index.mdx +0 -58
  848. package/.docs/raw/mastra-cloud/dashboard.mdx +0 -100
  849. package/.docs/raw/mastra-cloud/observability.mdx +0 -52
  850. package/.docs/raw/mastra-cloud/overview.mdx +0 -71
  851. package/.docs/raw/mastra-cloud/setting-up.mdx +0 -92
  852. package/.docs/raw/memory/conversation-history.mdx +0 -23
  853. package/.docs/raw/memory/memory-processors.mdx +0 -136
  854. package/.docs/raw/memory/overview.mdx +0 -119
  855. package/.docs/raw/memory/semantic-recall.mdx +0 -226
  856. package/.docs/raw/memory/threads-and-resources.mdx +0 -94
  857. package/.docs/raw/memory/working-memory.mdx +0 -378
  858. package/.docs/raw/observability/ai-tracing/exporters/braintrust.mdx +0 -81
  859. package/.docs/raw/observability/ai-tracing/exporters/cloud.mdx +0 -120
  860. package/.docs/raw/observability/ai-tracing/exporters/default.mdx +0 -168
  861. package/.docs/raw/observability/ai-tracing/exporters/langfuse.mdx +0 -121
  862. package/.docs/raw/observability/ai-tracing/exporters/langsmith.mdx +0 -88
  863. package/.docs/raw/observability/ai-tracing/exporters/otel.mdx +0 -253
  864. package/.docs/raw/observability/ai-tracing/overview.mdx +0 -565
  865. package/.docs/raw/observability/ai-tracing/processors/sensitive-data-filter.mdx +0 -274
  866. package/.docs/raw/observability/logging.mdx +0 -113
  867. package/.docs/raw/observability/nextjs-tracing.mdx +0 -109
  868. package/.docs/raw/observability/otel-tracing.mdx +0 -190
  869. package/.docs/raw/observability/overview.mdx +0 -66
  870. package/.docs/raw/rag/chunking-and-embedding.mdx +0 -208
  871. package/.docs/raw/rag/overview.mdx +0 -87
  872. package/.docs/raw/rag/retrieval.mdx +0 -543
  873. package/.docs/raw/rag/vector-databases.mdx +0 -529
  874. package/.docs/raw/reference/agents/agent.mdx +0 -230
  875. package/.docs/raw/reference/agents/generate.mdx +0 -577
  876. package/.docs/raw/reference/agents/generateLegacy.mdx +0 -528
  877. package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +0 -67
  878. package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +0 -67
  879. package/.docs/raw/reference/agents/getDescription.mdx +0 -34
  880. package/.docs/raw/reference/agents/getInstructions.mdx +0 -67
  881. package/.docs/raw/reference/agents/getLLM.mdx +0 -74
  882. package/.docs/raw/reference/agents/getMemory.mdx +0 -67
  883. package/.docs/raw/reference/agents/getModel.mdx +0 -67
  884. package/.docs/raw/reference/agents/getScorers.mdx +0 -67
  885. package/.docs/raw/reference/agents/getTools.mdx +0 -67
  886. package/.docs/raw/reference/agents/getVoice.mdx +0 -67
  887. package/.docs/raw/reference/agents/getWorkflows.mdx +0 -67
  888. package/.docs/raw/reference/agents/listAgents.mdx +0 -68
  889. package/.docs/raw/reference/agents/network.mdx +0 -290
  890. package/.docs/raw/reference/auth/auth0.mdx +0 -117
  891. package/.docs/raw/reference/auth/clerk.mdx +0 -71
  892. package/.docs/raw/reference/auth/firebase.mdx +0 -128
  893. package/.docs/raw/reference/auth/jwt.mdx +0 -41
  894. package/.docs/raw/reference/auth/supabase.mdx +0 -62
  895. package/.docs/raw/reference/auth/workos.mdx +0 -128
  896. package/.docs/raw/reference/cli/create-mastra.mdx +0 -177
  897. package/.docs/raw/reference/cli/mastra.mdx +0 -258
  898. package/.docs/raw/reference/client-js/agents.mdx +0 -220
  899. package/.docs/raw/reference/client-js/error-handling.mdx +0 -23
  900. package/.docs/raw/reference/client-js/logs.mdx +0 -29
  901. package/.docs/raw/reference/client-js/mastra-client.mdx +0 -157
  902. package/.docs/raw/reference/client-js/memory.mdx +0 -130
  903. package/.docs/raw/reference/client-js/observability.mdx +0 -76
  904. package/.docs/raw/reference/client-js/telemetry.mdx +0 -25
  905. package/.docs/raw/reference/client-js/tools.mdx +0 -49
  906. package/.docs/raw/reference/client-js/vectors.mdx +0 -84
  907. package/.docs/raw/reference/client-js/workflows-legacy.mdx +0 -143
  908. package/.docs/raw/reference/client-js/workflows.mdx +0 -175
  909. package/.docs/raw/reference/core/getAgent.mdx +0 -43
  910. package/.docs/raw/reference/core/getAgentById.mdx +0 -43
  911. package/.docs/raw/reference/core/getAgents.mdx +0 -35
  912. package/.docs/raw/reference/core/getDeployer.mdx +0 -35
  913. package/.docs/raw/reference/core/getLogger.mdx +0 -35
  914. package/.docs/raw/reference/core/getLogs.mdx +0 -92
  915. package/.docs/raw/reference/core/getLogsByRunId.mdx +0 -84
  916. package/.docs/raw/reference/core/getMCPServer.mdx +0 -49
  917. package/.docs/raw/reference/core/getMCPServers.mdx +0 -35
  918. package/.docs/raw/reference/core/getMemory.mdx +0 -35
  919. package/.docs/raw/reference/core/getScorer.mdx +0 -75
  920. package/.docs/raw/reference/core/getScorerByName.mdx +0 -75
  921. package/.docs/raw/reference/core/getScorers.mdx +0 -42
  922. package/.docs/raw/reference/core/getServer.mdx +0 -35
  923. package/.docs/raw/reference/core/getStorage.mdx +0 -35
  924. package/.docs/raw/reference/core/getTelemetry.mdx +0 -35
  925. package/.docs/raw/reference/core/getVector.mdx +0 -43
  926. package/.docs/raw/reference/core/getVectors.mdx +0 -35
  927. package/.docs/raw/reference/core/getWorkflow.mdx +0 -48
  928. package/.docs/raw/reference/core/getWorkflows.mdx +0 -43
  929. package/.docs/raw/reference/core/mastra-class.mdx +0 -143
  930. package/.docs/raw/reference/core/setLogger.mdx +0 -47
  931. package/.docs/raw/reference/core/setStorage.mdx +0 -39
  932. package/.docs/raw/reference/core/setTelemetry.mdx +0 -35
  933. package/.docs/raw/reference/deployer/cloudflare.mdx +0 -91
  934. package/.docs/raw/reference/deployer/deployer.mdx +0 -165
  935. package/.docs/raw/reference/deployer/netlify.mdx +0 -20
  936. package/.docs/raw/reference/deployer/vercel.mdx +0 -46
  937. package/.docs/raw/reference/evals/answer-relevancy.mdx +0 -190
  938. package/.docs/raw/reference/evals/bias.mdx +0 -195
  939. package/.docs/raw/reference/evals/completeness.mdx +0 -184
  940. package/.docs/raw/reference/evals/content-similarity.mdx +0 -185
  941. package/.docs/raw/reference/evals/context-position.mdx +0 -198
  942. package/.docs/raw/reference/evals/context-precision.mdx +0 -196
  943. package/.docs/raw/reference/evals/context-relevancy.mdx +0 -197
  944. package/.docs/raw/reference/evals/contextual-recall.mdx +0 -197
  945. package/.docs/raw/reference/evals/faithfulness.mdx +0 -200
  946. package/.docs/raw/reference/evals/hallucination.mdx +0 -227
  947. package/.docs/raw/reference/evals/keyword-coverage.mdx +0 -186
  948. package/.docs/raw/reference/evals/prompt-alignment.mdx +0 -248
  949. package/.docs/raw/reference/evals/summarization.mdx +0 -214
  950. package/.docs/raw/reference/evals/textual-difference.mdx +0 -172
  951. package/.docs/raw/reference/evals/tone-consistency.mdx +0 -190
  952. package/.docs/raw/reference/evals/toxicity.mdx +0 -173
  953. package/.docs/raw/reference/index.mdx +0 -12
  954. package/.docs/raw/reference/legacyWorkflows/after.mdx +0 -89
  955. package/.docs/raw/reference/legacyWorkflows/afterEvent.mdx +0 -79
  956. package/.docs/raw/reference/legacyWorkflows/commit.mdx +0 -33
  957. package/.docs/raw/reference/legacyWorkflows/createRun.mdx +0 -76
  958. package/.docs/raw/reference/legacyWorkflows/else.mdx +0 -68
  959. package/.docs/raw/reference/legacyWorkflows/events.mdx +0 -305
  960. package/.docs/raw/reference/legacyWorkflows/execute.mdx +0 -110
  961. package/.docs/raw/reference/legacyWorkflows/if.mdx +0 -108
  962. package/.docs/raw/reference/legacyWorkflows/resume.mdx +0 -158
  963. package/.docs/raw/reference/legacyWorkflows/resumeWithEvent.mdx +0 -133
  964. package/.docs/raw/reference/legacyWorkflows/snapshots.mdx +0 -207
  965. package/.docs/raw/reference/legacyWorkflows/start.mdx +0 -87
  966. package/.docs/raw/reference/legacyWorkflows/step-class.mdx +0 -100
  967. package/.docs/raw/reference/legacyWorkflows/step-condition.mdx +0 -137
  968. package/.docs/raw/reference/legacyWorkflows/step-function.mdx +0 -93
  969. package/.docs/raw/reference/legacyWorkflows/step-options.mdx +0 -69
  970. package/.docs/raw/reference/legacyWorkflows/step-retries.mdx +0 -196
  971. package/.docs/raw/reference/legacyWorkflows/suspend.mdx +0 -70
  972. package/.docs/raw/reference/legacyWorkflows/then.mdx +0 -72
  973. package/.docs/raw/reference/legacyWorkflows/until.mdx +0 -168
  974. package/.docs/raw/reference/legacyWorkflows/watch.mdx +0 -124
  975. package/.docs/raw/reference/legacyWorkflows/while.mdx +0 -168
  976. package/.docs/raw/reference/legacyWorkflows/workflow.mdx +0 -234
  977. package/.docs/raw/reference/memory/Memory.mdx +0 -206
  978. package/.docs/raw/reference/memory/createThread.mdx +0 -119
  979. package/.docs/raw/reference/memory/deleteMessages.mdx +0 -60
  980. package/.docs/raw/reference/memory/getThreadById.mdx +0 -46
  981. package/.docs/raw/reference/memory/getThreadsByResourceId.mdx +0 -78
  982. package/.docs/raw/reference/memory/getThreadsByResourceIdPaginated.mdx +0 -109
  983. package/.docs/raw/reference/memory/query.mdx +0 -174
  984. package/.docs/raw/reference/observability/ai-tracing/ai-tracing.mdx +0 -182
  985. package/.docs/raw/reference/observability/ai-tracing/configuration.mdx +0 -234
  986. package/.docs/raw/reference/observability/ai-tracing/exporters/braintrust.mdx +0 -112
  987. package/.docs/raw/reference/observability/ai-tracing/exporters/cloud-exporter.mdx +0 -176
  988. package/.docs/raw/reference/observability/ai-tracing/exporters/console-exporter.mdx +0 -148
  989. package/.docs/raw/reference/observability/ai-tracing/exporters/default-exporter.mdx +0 -196
  990. package/.docs/raw/reference/observability/ai-tracing/exporters/langfuse.mdx +0 -116
  991. package/.docs/raw/reference/observability/ai-tracing/exporters/langsmith.mdx +0 -112
  992. package/.docs/raw/reference/observability/ai-tracing/exporters/otel.mdx +0 -361
  993. package/.docs/raw/reference/observability/ai-tracing/interfaces.mdx +0 -651
  994. package/.docs/raw/reference/observability/ai-tracing/processors/sensitive-data-filter.mdx +0 -178
  995. package/.docs/raw/reference/observability/ai-tracing/span.mdx +0 -371
  996. package/.docs/raw/reference/observability/logging/pino-logger.mdx +0 -148
  997. package/.docs/raw/reference/observability/otel-tracing/otel-config.mdx +0 -117
  998. package/.docs/raw/reference/observability/otel-tracing/providers/arize-ax.mdx +0 -81
  999. package/.docs/raw/reference/observability/otel-tracing/providers/arize-phoenix.mdx +0 -120
  1000. package/.docs/raw/reference/observability/otel-tracing/providers/braintrust.mdx +0 -40
  1001. package/.docs/raw/reference/observability/otel-tracing/providers/dash0.mdx +0 -40
  1002. package/.docs/raw/reference/observability/otel-tracing/providers/index.mdx +0 -22
  1003. package/.docs/raw/reference/observability/otel-tracing/providers/keywordsai.mdx +0 -73
  1004. package/.docs/raw/reference/observability/otel-tracing/providers/laminar.mdx +0 -41
  1005. package/.docs/raw/reference/observability/otel-tracing/providers/langfuse.mdx +0 -84
  1006. package/.docs/raw/reference/observability/otel-tracing/providers/langsmith.mdx +0 -48
  1007. package/.docs/raw/reference/observability/otel-tracing/providers/langwatch.mdx +0 -43
  1008. package/.docs/raw/reference/observability/otel-tracing/providers/new-relic.mdx +0 -40
  1009. package/.docs/raw/reference/observability/otel-tracing/providers/signoz.mdx +0 -40
  1010. package/.docs/raw/reference/observability/otel-tracing/providers/traceloop.mdx +0 -40
  1011. package/.docs/raw/reference/processors/batch-parts-processor.mdx +0 -111
  1012. package/.docs/raw/reference/processors/language-detector.mdx +0 -154
  1013. package/.docs/raw/reference/processors/moderation-processor.mdx +0 -145
  1014. package/.docs/raw/reference/processors/pii-detector.mdx +0 -153
  1015. package/.docs/raw/reference/processors/prompt-injection-detector.mdx +0 -130
  1016. package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +0 -145
  1017. package/.docs/raw/reference/processors/token-limiter-processor.mdx +0 -136
  1018. package/.docs/raw/reference/processors/unicode-normalizer.mdx +0 -114
  1019. package/.docs/raw/reference/rag/chunk.mdx +0 -445
  1020. package/.docs/raw/reference/rag/database-config.mdx +0 -334
  1021. package/.docs/raw/reference/rag/document.mdx +0 -131
  1022. package/.docs/raw/reference/rag/embeddings.mdx +0 -168
  1023. package/.docs/raw/reference/rag/extract-params.mdx +0 -254
  1024. package/.docs/raw/reference/rag/graph-rag.mdx +0 -186
  1025. package/.docs/raw/reference/rag/metadata-filters.mdx +0 -347
  1026. package/.docs/raw/reference/rag/rerank.mdx +0 -213
  1027. package/.docs/raw/reference/rag/rerankWithScorer.mdx +0 -213
  1028. package/.docs/raw/reference/scorers/answer-relevancy.mdx +0 -209
  1029. package/.docs/raw/reference/scorers/answer-similarity.mdx +0 -423
  1030. package/.docs/raw/reference/scorers/bias.mdx +0 -225
  1031. package/.docs/raw/reference/scorers/completeness.mdx +0 -209
  1032. package/.docs/raw/reference/scorers/content-similarity.mdx +0 -195
  1033. package/.docs/raw/reference/scorers/context-precision.mdx +0 -343
  1034. package/.docs/raw/reference/scorers/context-relevance.mdx +0 -599
  1035. package/.docs/raw/reference/scorers/create-scorer.mdx +0 -495
  1036. package/.docs/raw/reference/scorers/faithfulness.mdx +0 -233
  1037. package/.docs/raw/reference/scorers/hallucination.mdx +0 -247
  1038. package/.docs/raw/reference/scorers/keyword-coverage.mdx +0 -224
  1039. package/.docs/raw/reference/scorers/mastra-scorer.mdx +0 -182
  1040. package/.docs/raw/reference/scorers/noise-sensitivity.mdx +0 -766
  1041. package/.docs/raw/reference/scorers/prompt-alignment.mdx +0 -614
  1042. package/.docs/raw/reference/scorers/run-experiment.mdx +0 -216
  1043. package/.docs/raw/reference/scorers/textual-difference.mdx +0 -204
  1044. package/.docs/raw/reference/scorers/tone-consistency.mdx +0 -208
  1045. package/.docs/raw/reference/scorers/tool-call-accuracy.mdx +0 -567
  1046. package/.docs/raw/reference/scorers/toxicity.mdx +0 -224
  1047. package/.docs/raw/reference/storage/cloudflare-d1.mdx +0 -104
  1048. package/.docs/raw/reference/storage/cloudflare.mdx +0 -95
  1049. package/.docs/raw/reference/storage/dynamodb.mdx +0 -196
  1050. package/.docs/raw/reference/storage/lance.mdx +0 -101
  1051. package/.docs/raw/reference/storage/libsql.mdx +0 -74
  1052. package/.docs/raw/reference/storage/mssql.mdx +0 -112
  1053. package/.docs/raw/reference/storage/postgresql.mdx +0 -305
  1054. package/.docs/raw/reference/storage/upstash.mdx +0 -91
  1055. package/.docs/raw/reference/streaming/ChunkType.mdx +0 -854
  1056. package/.docs/raw/reference/streaming/agents/MastraModelOutput.mdx +0 -321
  1057. package/.docs/raw/reference/streaming/agents/stream.mdx +0 -698
  1058. package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +0 -515
  1059. package/.docs/raw/reference/streaming/workflows/observeStream.mdx +0 -49
  1060. package/.docs/raw/reference/streaming/workflows/observeStreamVNext.mdx +0 -47
  1061. package/.docs/raw/reference/streaming/workflows/resumeStreamVNext.mdx +0 -118
  1062. package/.docs/raw/reference/streaming/workflows/stream.mdx +0 -125
  1063. package/.docs/raw/reference/streaming/workflows/streamVNext.mdx +0 -144
  1064. package/.docs/raw/reference/templates/overview.mdx +0 -228
  1065. package/.docs/raw/reference/tools/client.mdx +0 -336
  1066. package/.docs/raw/reference/tools/create-tool.mdx +0 -130
  1067. package/.docs/raw/reference/tools/document-chunker-tool.mdx +0 -141
  1068. package/.docs/raw/reference/tools/graph-rag-tool.mdx +0 -262
  1069. package/.docs/raw/reference/tools/mcp-client.mdx +0 -830
  1070. package/.docs/raw/reference/tools/mcp-server.mdx +0 -1079
  1071. package/.docs/raw/reference/tools/vector-query-tool.mdx +0 -604
  1072. package/.docs/raw/reference/vectors/astra.mdx +0 -258
  1073. package/.docs/raw/reference/vectors/chroma.mdx +0 -422
  1074. package/.docs/raw/reference/vectors/couchbase.mdx +0 -345
  1075. package/.docs/raw/reference/vectors/lance.mdx +0 -451
  1076. package/.docs/raw/reference/vectors/libsql.mdx +0 -355
  1077. package/.docs/raw/reference/vectors/mongodb.mdx +0 -309
  1078. package/.docs/raw/reference/vectors/opensearch.mdx +0 -200
  1079. package/.docs/raw/reference/vectors/pg.mdx +0 -632
  1080. package/.docs/raw/reference/vectors/pinecone.mdx +0 -286
  1081. package/.docs/raw/reference/vectors/qdrant.mdx +0 -236
  1082. package/.docs/raw/reference/vectors/s3vectors.mdx +0 -386
  1083. package/.docs/raw/reference/vectors/turbopuffer.mdx +0 -249
  1084. package/.docs/raw/reference/vectors/upstash.mdx +0 -354
  1085. package/.docs/raw/reference/vectors/vectorize.mdx +0 -298
  1086. package/.docs/raw/reference/voice/azure.mdx +0 -218
  1087. package/.docs/raw/reference/voice/cloudflare.mdx +0 -154
  1088. package/.docs/raw/reference/voice/composite-voice.mdx +0 -144
  1089. package/.docs/raw/reference/voice/deepgram.mdx +0 -166
  1090. package/.docs/raw/reference/voice/elevenlabs.mdx +0 -218
  1091. package/.docs/raw/reference/voice/google-gemini-live.mdx +0 -629
  1092. package/.docs/raw/reference/voice/google.mdx +0 -203
  1093. package/.docs/raw/reference/voice/mastra-voice.mdx +0 -413
  1094. package/.docs/raw/reference/voice/murf.mdx +0 -253
  1095. package/.docs/raw/reference/voice/openai-realtime.mdx +0 -376
  1096. package/.docs/raw/reference/voice/openai.mdx +0 -169
  1097. package/.docs/raw/reference/voice/playai.mdx +0 -163
  1098. package/.docs/raw/reference/voice/sarvam.mdx +0 -260
  1099. package/.docs/raw/reference/voice/speechify.mdx +0 -147
  1100. package/.docs/raw/reference/voice/voice.addInstructions.mdx +0 -72
  1101. package/.docs/raw/reference/voice/voice.addTools.mdx +0 -83
  1102. package/.docs/raw/reference/voice/voice.answer.mdx +0 -69
  1103. package/.docs/raw/reference/voice/voice.close.mdx +0 -56
  1104. package/.docs/raw/reference/voice/voice.connect.mdx +0 -123
  1105. package/.docs/raw/reference/voice/voice.events.mdx +0 -85
  1106. package/.docs/raw/reference/voice/voice.getSpeakers.mdx +0 -298
  1107. package/.docs/raw/reference/voice/voice.listen.mdx +0 -201
  1108. package/.docs/raw/reference/voice/voice.off.mdx +0 -74
  1109. package/.docs/raw/reference/voice/voice.on.mdx +0 -132
  1110. package/.docs/raw/reference/voice/voice.send.mdx +0 -81
  1111. package/.docs/raw/reference/voice/voice.speak.mdx +0 -206
  1112. package/.docs/raw/reference/voice/voice.updateConfig.mdx +0 -92
  1113. package/.docs/raw/reference/workflows/run-methods/cancel.mdx +0 -58
  1114. package/.docs/raw/reference/workflows/run-methods/resume.mdx +0 -137
  1115. package/.docs/raw/reference/workflows/run-methods/start.mdx +0 -134
  1116. package/.docs/raw/reference/workflows/run-methods/watch.mdx +0 -74
  1117. package/.docs/raw/reference/workflows/run.mdx +0 -104
  1118. package/.docs/raw/reference/workflows/step.mdx +0 -155
  1119. package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +0 -48
  1120. package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +0 -30
  1121. package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +0 -65
  1122. package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +0 -52
  1123. package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +0 -52
  1124. package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +0 -60
  1125. package/.docs/raw/reference/workflows/workflow-methods/map.mdx +0 -43
  1126. package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +0 -43
  1127. package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +0 -70
  1128. package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +0 -61
  1129. package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +0 -61
  1130. package/.docs/raw/reference/workflows/workflow-methods/then.mdx +0 -44
  1131. package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +0 -66
  1132. package/.docs/raw/reference/workflows/workflow.mdx +0 -132
  1133. package/.docs/raw/scorers/custom-scorers.mdx +0 -473
  1134. package/.docs/raw/scorers/evals-old-api/custom-eval.mdx +0 -26
  1135. package/.docs/raw/scorers/evals-old-api/overview.mdx +0 -106
  1136. package/.docs/raw/scorers/evals-old-api/running-in-ci.mdx +0 -85
  1137. package/.docs/raw/scorers/evals-old-api/textual-evals.mdx +0 -58
  1138. package/.docs/raw/scorers/off-the-shelf-scorers.mdx +0 -48
  1139. package/.docs/raw/scorers/overview.mdx +0 -138
  1140. package/.docs/raw/server-db/custom-api-routes.mdx +0 -67
  1141. package/.docs/raw/server-db/local-dev-playground.mdx +0 -233
  1142. package/.docs/raw/server-db/mastra-client.mdx +0 -274
  1143. package/.docs/raw/server-db/middleware.mdx +0 -173
  1144. package/.docs/raw/server-db/production-server.mdx +0 -91
  1145. package/.docs/raw/server-db/runtime-context.mdx +0 -190
  1146. package/.docs/raw/server-db/storage.mdx +0 -514
  1147. package/.docs/raw/streaming/events.mdx +0 -223
  1148. package/.docs/raw/streaming/overview.mdx +0 -177
  1149. package/.docs/raw/streaming/tool-streaming.mdx +0 -143
  1150. package/.docs/raw/streaming/workflow-streaming.mdx +0 -124
  1151. package/.docs/raw/tools-mcp/advanced-usage.mdx +0 -128
  1152. package/.docs/raw/tools-mcp/mcp-overview.mdx +0 -370
  1153. package/.docs/raw/tools-mcp/overview.mdx +0 -93
  1154. package/.docs/raw/voice/overview.mdx +0 -944
  1155. package/.docs/raw/voice/speech-to-speech.mdx +0 -105
  1156. package/.docs/raw/voice/speech-to-text.mdx +0 -86
  1157. package/.docs/raw/voice/text-to-speech.mdx +0 -90
  1158. package/.docs/raw/workflows/control-flow.mdx +0 -265
  1159. package/.docs/raw/workflows/error-handling.mdx +0 -213
  1160. package/.docs/raw/workflows/inngest-workflow.mdx +0 -359
  1161. package/.docs/raw/workflows/input-data-mapping.mdx +0 -107
  1162. package/.docs/raw/workflows/overview.mdx +0 -277
  1163. package/.docs/raw/workflows/snapshots.mdx +0 -250
  1164. package/.docs/raw/workflows/suspend-and-resume.mdx +0 -298
  1165. package/.docs/raw/workflows/using-with-agents-and-tools.mdx +0 -350
  1166. package/.docs/raw/workflows-legacy/control-flow.mdx +0 -776
  1167. package/.docs/raw/workflows-legacy/dynamic-workflows.mdx +0 -237
  1168. package/.docs/raw/workflows-legacy/error-handling.mdx +0 -185
  1169. package/.docs/raw/workflows-legacy/nested-workflows.mdx +0 -354
  1170. package/.docs/raw/workflows-legacy/overview.mdx +0 -180
  1171. package/.docs/raw/workflows-legacy/runtime-variables.mdx +0 -154
  1172. package/.docs/raw/workflows-legacy/steps.mdx +0 -113
  1173. package/.docs/raw/workflows-legacy/suspend-and-resume.mdx +0 -404
  1174. package/.docs/raw/workflows-legacy/variables.mdx +0 -316
  1175. package/dist/chunk-TUAHUTTB.js +0 -356
  1176. package/dist/prepare-docs/code-examples.d.ts +0 -5
  1177. package/dist/prepare-docs/code-examples.d.ts.map +0 -1
  1178. package/dist/prepare-docs/copy-raw.d.ts +0 -2
  1179. package/dist/prepare-docs/copy-raw.d.ts.map +0 -1
  1180. package/dist/prepare-docs/package-changes.d.ts +0 -5
  1181. package/dist/prepare-docs/package-changes.d.ts.map +0 -1
  1182. package/dist/prepare-docs/prepare.d.ts +0 -2
  1183. package/dist/prepare-docs/prepare.d.ts.map +0 -1
  1184. package/dist/prepare-docs/prepare.js +0 -1
  1185. package/dist/tools/__tests__/test-setup.d.ts +0 -5
  1186. package/dist/tools/__tests__/test-setup.d.ts.map +0 -1
  1187. package/dist/tools/blog.d.ts +0 -22
  1188. package/dist/tools/blog.d.ts.map +0 -1
  1189. package/dist/tools/changes.d.ts +0 -22
  1190. package/dist/tools/changes.d.ts.map +0 -1
  1191. package/dist/tools/examples.d.ts +0 -28
  1192. package/dist/tools/examples.d.ts.map +0 -1
  1193. /package/.docs/{raw/course → course}/01-first-agent/01-introduction-to-mastra.md +0 -0
  1194. /package/.docs/{raw/course → course}/01-first-agent/02-what-is-mastra.md +0 -0
  1195. /package/.docs/{raw/course → course}/01-first-agent/03-verifying-installation.md +0 -0
  1196. /package/.docs/{raw/course → course}/01-first-agent/06-understanding-system-prompts.md +0 -0
  1197. /package/.docs/{raw/course → course}/01-first-agent/10-understanding-tools.md +0 -0
  1198. /package/.docs/{raw/course → course}/01-first-agent/14-understanding-memory.md +0 -0
  1199. /package/.docs/{raw/course → course}/01-first-agent/18-conclusion.md +0 -0
  1200. /package/.docs/{raw/course → course}/02-agent-tools-mcp/01-introduction-to-mcp.md +0 -0
  1201. /package/.docs/{raw/course → course}/02-agent-tools-mcp/02-installing-mcp.md +0 -0
  1202. /package/.docs/{raw/course → course}/02-agent-tools-mcp/06-testing-mcp-setup.md +0 -0
  1203. /package/.docs/{raw/course → course}/02-agent-tools-mcp/11-testing-zapier-integration.md +0 -0
  1204. /package/.docs/{raw/course → course}/02-agent-tools-mcp/17-testing-github-integration.md +0 -0
  1205. /package/.docs/{raw/course → course}/02-agent-tools-mcp/19-what-is-hackernews-mcp.md +0 -0
  1206. /package/.docs/{raw/course → course}/02-agent-tools-mcp/22-testing-hackernews-integration.md +0 -0
  1207. /package/.docs/{raw/course → course}/02-agent-tools-mcp/23-troubleshooting-hackernews.md +0 -0
  1208. /package/.docs/{raw/course → course}/02-agent-tools-mcp/24-what-is-filesystem-mcp.md +0 -0
  1209. /package/.docs/{raw/course → course}/02-agent-tools-mcp/25-creating-notes-directory.md +0 -0
  1210. /package/.docs/{raw/course → course}/02-agent-tools-mcp/28-testing-filesystem-integration.md +0 -0
  1211. /package/.docs/{raw/course → course}/02-agent-tools-mcp/29-troubleshooting-filesystem.md +0 -0
  1212. /package/.docs/{raw/course → course}/03-agent-memory/01-understanding-memory.md +0 -0
  1213. /package/.docs/{raw/course → course}/03-agent-memory/02-why-memory-matters.md +0 -0
  1214. /package/.docs/{raw/course → course}/03-agent-memory/06-testing-memory-agent.md +0 -0
  1215. /package/.docs/{raw/course → course}/03-agent-memory/11-testing-conversation-history.md +0 -0
  1216. /package/.docs/{raw/course → course}/03-agent-memory/14-what-is-semantic-recall.md +0 -0
  1217. /package/.docs/{raw/course → course}/03-agent-memory/15-how-semantic-recall-works.md +0 -0
  1218. /package/.docs/{raw/course → course}/03-agent-memory/17-testing-semantic-recall.md +0 -0
  1219. /package/.docs/{raw/course → course}/03-agent-memory/19-what-is-working-memory.md +0 -0
  1220. /package/.docs/{raw/course → course}/03-agent-memory/20-how-working-memory-works.md +0 -0
  1221. /package/.docs/{raw/course → course}/03-agent-memory/23-testing-working-memory.md +0 -0
  1222. /package/.docs/{raw/course → course}/03-agent-memory/24-working-memory-in-practice.md +0 -0
  1223. /package/.docs/{raw/course → course}/03-agent-memory/28-testing-memory-enhanced-agents.md +0 -0
  1224. /package/.docs/{raw/course → course}/03-agent-memory/29-memory-best-practices.md +0 -0
  1225. /package/.docs/{raw/course → course}/03-agent-memory/30-conclusion.md +0 -0
  1226. /package/.docs/{raw/course → course}/04-workflows/22-conclusion.md +0 -0
@@ -0,0 +1,1499 @@
1
+ # Using AI SDK UI
2
+
3
+ [AI SDK UI](https://sdk.vercel.ai) is a library of React utilities and components for building AI-powered interfaces. In this guide, you'll learn how to use `@mastra/ai-sdk` to convert Mastra's output to AI SDK-compatible formats, enabling you to use its hooks and components in your frontend.
4
+
5
+ > **Note:** Migrating from AI SDK v4 to v5? See the [migration guide](https://mastra.ai/guides/migrations/ai-sdk-v4-to-v5).
6
+
7
+ > **Tip:** Want to see more examples? Visit Mastra's [**UI Dojo**](https://ui-dojo.mastra.ai/) or the [Next.js quickstart guide](https://mastra.ai/guides/getting-started/next-js).
8
+
9
+ ## Getting Started
10
+
11
+ Use Mastra and AI SDK UI together by installing the `@mastra/ai-sdk` package. `@mastra/ai-sdk` provides custom API routes and utilities for streaming Mastra agents in AI SDK-compatible formats. This includes chat, workflow, and network route handlers, along with utilities and exported types for UI integrations.
12
+
13
+ `@mastra/ai-sdk` integrates with AI SDK UI's three main hooks: [`useChat()`](https://ai-sdk.dev/docs/ai-sdk-ui/chatbot), [`useCompletion()`](https://ai-sdk.dev/docs/ai-sdk-ui/completion), and [`useObject()`](https://ai-sdk.dev/docs/ai-sdk-ui/object-generation).
14
+
15
+ Install the required packages to get started:
16
+
17
+ **npm**:
18
+
19
+ ```bash
20
+ npm install @mastra/ai-sdk@latest @ai-sdk/react ai
21
+ ```
22
+
23
+ **pnpm**:
24
+
25
+ ```bash
26
+ pnpm add @mastra/ai-sdk@latest @ai-sdk/react ai
27
+ ```
28
+
29
+ **Yarn**:
30
+
31
+ ```bash
32
+ yarn add @mastra/ai-sdk@latest @ai-sdk/react ai
33
+ ```
34
+
35
+ **Bun**:
36
+
37
+ ```bash
38
+ bun add @mastra/ai-sdk@latest @ai-sdk/react ai
39
+ ```
40
+
41
+ You're now ready to follow the integration guides and recipes below!
42
+
43
+ ## Integration Guides
44
+
45
+ Typically, you'll set up API routes that stream Mastra content in AI SDK-compatible format, and then use those routes in AI SDK UI hooks like `useChat()`. Below you'll find two main approaches to achieve this:
46
+
47
+ - [Mastra's server](#mastras-server)
48
+ - [Framework-agnostic](#framework-agnostic)
49
+
50
+ Once you have your API routes set up, you can use them in the [`useChat()`](#usechat) hook.
51
+
52
+ ### Mastra's server
53
+
54
+ Run Mastra as a standalone server and connect your frontend (e.g. using Vite + React) to its API endpoints. You'll be using Mastra's [custom API routes](https://mastra.ai/docs/server/custom-api-routes) feature for this.
55
+
56
+ > **Info:** Mastra's [**UI Dojo**](https://ui-dojo.mastra.ai/) is an example of this setup.
57
+
58
+ You can use [`chatRoute()`](https://mastra.ai/reference/ai-sdk/chat-route), [`workflowRoute()`](https://mastra.ai/reference/ai-sdk/workflow-route), and [`networkRoute()`](https://mastra.ai/reference/ai-sdk/network-route) to create API routes that stream Mastra content in AI SDK-compatible format. Once implemented, you can use these API routes in [`useChat()`](#usechat).
59
+
60
+ **chatRoute()**:
61
+
62
+ This example shows how to set up a chat route at the `/chat` endpoint that uses an agent with the ID `weatherAgent`.
63
+
64
+ ```typescript
65
+ import { Mastra } from '@mastra/core'
66
+ import { chatRoute } from '@mastra/ai-sdk'
67
+
68
+ export const mastra = new Mastra({
69
+ server: {
70
+ apiRoutes: [
71
+ chatRoute({
72
+ path: '/chat',
73
+ agent: 'weatherAgent',
74
+ }),
75
+ ],
76
+ },
77
+ })
78
+ ```
79
+
80
+ You can also use dynamic agent routing, see the [`chatRoute()` reference documentation](https://mastra.ai/reference/ai-sdk/chat-route) for more details.
81
+
82
+ **workflowRoute()**:
83
+
84
+ This example shows how to set up a workflow route at the `/workflow` endpoint that uses a workflow with the ID `weatherWorkflow`.
85
+
86
+ ```typescript
87
+ import { Mastra } from '@mastra/core'
88
+ import { workflowRoute } from '@mastra/ai-sdk'
89
+
90
+ export const mastra = new Mastra({
91
+ server: {
92
+ apiRoutes: [
93
+ workflowRoute({
94
+ path: '/workflow',
95
+ workflow: 'weatherWorkflow',
96
+ }),
97
+ ],
98
+ },
99
+ })
100
+ ```
101
+
102
+ You can also use dynamic workflow routing, see the [`workflowRoute()` reference documentation](https://mastra.ai/reference/ai-sdk/workflow-route) for more details.
103
+
104
+ > **Agent streaming in workflows:** When a workflow step pipes an agent's stream to the workflow writer (e.g., `await response.fullStream.pipeTo(writer)`), the agent's text chunks and tool calls are forwarded to the UI stream in real time, even when the agent runs inside workflow steps.
105
+ >
106
+ > See [Workflow Streaming](https://mastra.ai/docs/streaming/workflow-streaming) for more details.
107
+
108
+ **networkRoute()**:
109
+
110
+ This example shows how to set up a network route at the `/network` endpoint that uses an agent with the ID `weatherAgent`.
111
+
112
+ ```typescript
113
+ import { Mastra } from '@mastra/core'
114
+ import { networkRoute } from '@mastra/ai-sdk'
115
+
116
+ export const mastra = new Mastra({
117
+ server: {
118
+ apiRoutes: [
119
+ networkRoute({
120
+ path: '/network',
121
+ agent: 'weatherAgent',
122
+ }),
123
+ ],
124
+ },
125
+ })
126
+ ```
127
+
128
+ You can also use dynamic network routing, see the [`networkRoute()` reference documentation](https://mastra.ai/reference/ai-sdk/network-route) for more details.
129
+
130
+ ### Framework-agnostic
131
+
132
+ If you don't want to run Mastra's server and instead use frameworks like Next.js or Express, you can use the [`handleChatStream()`](https://mastra.ai/reference/ai-sdk/handle-chat-stream), [`handleWorkflowStream()`](https://mastra.ai/reference/ai-sdk/handle-workflow-stream), and [`handleNetworkStream()`](https://mastra.ai/reference/ai-sdk/handle-network-stream) functions in your own API route handlers.
133
+
134
+ They return a `ReadableStream` that you can wrap with [`createUIMessageStreamResponse()`](https://ai-sdk.dev/docs/reference/ai-sdk-ui/create-ui-message-stream-response).
135
+
136
+ The examples below show you how to use them with Next.js App Router.
137
+
138
+ **handleChatStream()**:
139
+
140
+ This example shows how to set up a chat route at the `/chat` endpoint that uses an agent with the ID `weatherAgent`.
141
+
142
+ ```typescript
143
+ import { handleChatStream } from '@mastra/ai-sdk'
144
+ import { createUIMessageStreamResponse } from 'ai'
145
+ import { mastra } from '@/src/mastra'
146
+
147
+ export async function POST(req: Request) {
148
+ const params = await req.json()
149
+ const stream = await handleChatStream({
150
+ mastra,
151
+ agentId: 'weatherAgent',
152
+ params,
153
+ })
154
+ return createUIMessageStreamResponse({ stream })
155
+ }
156
+ ```
157
+
158
+ **handleWorkflowStream()**:
159
+
160
+ This example shows how to set up a workflow route at the `/workflow` endpoint that uses a workflow with the ID `weatherWorkflow`.
161
+
162
+ ```typescript
163
+ import { handleWorkflowStream } from '@mastra/ai-sdk'
164
+ import { createUIMessageStreamResponse } from 'ai'
165
+ import { mastra } from '@/src/mastra'
166
+
167
+ export async function POST(req: Request) {
168
+ const params = await req.json()
169
+ const stream = await handleWorkflowStream({
170
+ mastra,
171
+ workflowId: 'weatherWorkflow',
172
+ params,
173
+ })
174
+ return createUIMessageStreamResponse({ stream })
175
+ }
176
+ ```
177
+
178
+ **handleNetworkStream()**:
179
+
180
+ This example shows how to set up a network route at the `/network` endpoint that uses an agent with the ID `routingAgent`.
181
+
182
+ ```typescript
183
+ import { handleNetworkStream } from '@mastra/ai-sdk'
184
+ import { createUIMessageStreamResponse } from 'ai'
185
+ import { mastra } from '@/src/mastra'
186
+
187
+ export async function POST(req: Request) {
188
+ const params = await req.json()
189
+ const stream = await handleNetworkStream({
190
+ mastra,
191
+ agentId: 'routingAgent',
192
+ params,
193
+ })
194
+ return createUIMessageStreamResponse({ stream })
195
+ }
196
+ ```
197
+
198
+ ### `useChat()`
199
+
200
+ Whether you created API routes through [Mastra's server](#mastras-server) or used a [framework of your choice](#framework-agnostic), you can now use the API endpoints in the `useChat()` hook.
201
+
202
+ Assuming you set up a route at `/chat` that uses a weather agent, you can ask it questions as seen below. It's important that you set the correct `api` URL.
203
+
204
+ ```ts
205
+ import { useChat } from '@ai-sdk/react'
206
+ import { useState } from 'react'
207
+ import { DefaultChatTransport } from 'ai'
208
+
209
+ export default function Chat() {
210
+ const [inputValue, setInputValue] = useState('')
211
+ const { messages, sendMessage } = useChat({
212
+ transport: new DefaultChatTransport({
213
+ api: 'http://localhost:4111/chat',
214
+ }),
215
+ })
216
+
217
+ const handleFormSubmit = (e: React.FormEvent) => {
218
+ e.preventDefault()
219
+ sendMessage({ text: inputValue })
220
+ }
221
+
222
+ return (
223
+ <div>
224
+ <pre>{JSON.stringify(messages, null, 2)}</pre>
225
+ <form onSubmit={handleFormSubmit}>
226
+ <input
227
+ value={inputValue}
228
+ onChange={e => setInputValue(e.target.value)}
229
+ placeholder="Name of the city"
230
+ />
231
+ </form>
232
+ </div>
233
+ )
234
+ }
235
+ ```
236
+
237
+ Use [`prepareSendMessagesRequest`](https://ai-sdk.dev/docs/reference/ai-sdk-ui/use-chat#transport.default-chat-transport.prepare-send-messages-request) to customize the request sent to the chat route, for example to pass additional configuration to the agent.
238
+
239
+ ### `useCompletion()`
240
+
241
+ The `useCompletion()` hook handles single-turn completions between your frontend and a Mastra agent, allowing you to send a prompt and receive a streamed response over HTTP.
242
+
243
+ Your frontend could look like this:
244
+
245
+ ```typescript
246
+ import { useCompletion } from '@ai-sdk/react'
247
+
248
+ export default function Page() {
249
+ const { completion, input, handleInputChange, handleSubmit } = useCompletion({
250
+ api: '/api/completion',
251
+ })
252
+
253
+ return (
254
+ <form onSubmit={handleSubmit}>
255
+ <input name="prompt" value={input} onChange={handleInputChange} id="input" />
256
+ <button type="submit">Submit</button>
257
+ <div>{completion}</div>
258
+ </form>
259
+ )
260
+ }
261
+ ```
262
+
263
+ Below are two approaches to implementing the backend:
264
+
265
+ **Mastra Server**:
266
+
267
+ ```ts
268
+ import { Mastra } from '@mastra/core/mastra'
269
+ import { registerApiRoute } from '@mastra/core/server'
270
+ import { handleChatStream } from '@mastra/ai-sdk'
271
+ import { createUIMessageStreamResponse } from 'ai'
272
+
273
+ export const mastra = new Mastra({
274
+ server: {
275
+ apiRoutes: [
276
+ registerApiRoute('/completion', {
277
+ method: 'POST',
278
+ handler: async c => {
279
+ const { prompt } = await c.req.json()
280
+ const mastra = c.get('mastra')
281
+ const stream = await handleChatStream({
282
+ mastra,
283
+ agentId: 'weatherAgent',
284
+ params: {
285
+ messages: [
286
+ {
287
+ id: '1',
288
+ role: 'user',
289
+ parts: [
290
+ {
291
+ type: 'text',
292
+ text: prompt,
293
+ },
294
+ ],
295
+ },
296
+ ],
297
+ },
298
+ })
299
+
300
+ return createUIMessageStreamResponse({ stream })
301
+ },
302
+ }),
303
+ ],
304
+ },
305
+ })
306
+ ```
307
+
308
+ **Next.js**:
309
+
310
+ ```ts
311
+ import { handleChatStream } from '@mastra/ai-sdk'
312
+ import { createUIMessageStreamResponse } from 'ai'
313
+ import { mastra } from '@/src/mastra'
314
+
315
+ // Allow streaming responses up to 30 seconds
316
+ export const maxDuration = 30
317
+
318
+ export async function POST(req: Request) {
319
+ const { prompt }: { prompt: string } = await req.json()
320
+
321
+ const stream = await handleChatStream({
322
+ mastra,
323
+ agentId: 'weatherAgent',
324
+ params: {
325
+ messages: [
326
+ {
327
+ id: '1',
328
+ role: 'user',
329
+ parts: [
330
+ {
331
+ type: 'text',
332
+ text: prompt,
333
+ },
334
+ ],
335
+ },
336
+ ],
337
+ },
338
+ })
339
+ return createUIMessageStreamResponse({ stream })
340
+ }
341
+ ```
342
+
343
+ ## Custom UI
344
+
345
+ Custom UI (also known as Generative UI) allows you to render custom React components based on data streamed from Mastra. Instead of displaying raw text or JSON, you can create visual components for tool outputs, workflow progress, agent network execution, and custom events.
346
+
347
+ Use Custom UI when you want to:
348
+
349
+ - Render tool outputs as visual components (e.g., a weather card instead of JSON)
350
+ - Display workflow step progress with status indicators
351
+ - Visualize agent network execution with step-by-step updates
352
+ - Show progress indicators or status updates during long-running operations
353
+
354
+ ### Data part types
355
+
356
+ Mastra streams data to the frontend as "parts" within messages. Each part has a `type` that determines how to render it. The `@mastra/ai-sdk` package transforms Mastra streams into AI SDK-compatible [UI Message DataParts](https://ai-sdk.dev/docs/reference/ai-sdk-core/ui-message#datauipart).
357
+
358
+ | Data Part Type | Source | Description |
359
+ | -------------------- | ----------------------- | ---------------------------------------------------------------------------------- |
360
+ | `tool-{toolKey}` | AI SDK built-in | Tool invocation with states: `input-available`, `output-available`, `output-error` |
361
+ | `data-workflow` | `workflowRoute()` | Workflow execution with step inputs, outputs, and status |
362
+ | `data-network` | `networkRoute()` | Agent network execution with ordered steps and outputs |
363
+ | `data-tool-agent` | Nested agent in tool | Agent output streamed from within a tool's `execute()` |
364
+ | `data-tool-workflow` | Nested workflow in tool | Workflow output streamed from within a tool's `execute()` |
365
+ | `data-tool-network` | Nested network in tool | Network output streamed from within a tool's `execute()` |
366
+ | `data-{custom}` | `writer.custom()` | Custom events for progress indicators, status updates, etc. |
367
+
368
+ ### Rendering tool outputs
369
+
370
+ AI SDK automatically creates `tool-{toolKey}` parts when an agent calls a tool. These parts include the tool's state and output, which you can use to render custom components.
371
+
372
+ The tool part cycles through states:
373
+
374
+ - `input-streaming`: Tool input is being streamed (when tool call streaming is enabled)
375
+ - `input-available`: Tool has been called with complete input, waiting for execution
376
+ - `output-available`: Tool execution completed with output
377
+ - `output-error`: Tool execution failed
378
+
379
+ Here's an example of rendering a weather tool's output as a custom `WeatherCard` component.
380
+
381
+ **Backend**:
382
+
383
+ Define a tool with an `outputSchema` so the frontend knows the shape of the data to render.
384
+
385
+ ```typescript
386
+ import { createTool } from '@mastra/core/tools'
387
+ import { z } from 'zod'
388
+
389
+ export const weatherTool = createTool({
390
+ id: 'get-weather',
391
+ description: 'Get current weather for a location',
392
+ inputSchema: z.object({
393
+ location: z.string().describe('The location to get the weather for'),
394
+ }),
395
+ outputSchema: z.object({
396
+ temperature: z.number(),
397
+ feelsLike: z.number(),
398
+ humidity: z.number(),
399
+ windSpeed: z.number(),
400
+ conditions: z.string(),
401
+ location: z.string(),
402
+ }),
403
+ execute: async inputData => {
404
+ const response = await fetch(
405
+ `https://api.weatherapi.com/v1/current.json?key=${process.env.WEATHER_API_KEY}&q=${inputData.location}`,
406
+ )
407
+ const data = await response.json()
408
+ return {
409
+ temperature: data.current.temp_c,
410
+ feelsLike: data.current.feelslike_c,
411
+ humidity: data.current.humidity,
412
+ windSpeed: data.current.wind_kph,
413
+ conditions: data.current.condition.text,
414
+ location: data.location.name,
415
+ }
416
+ },
417
+ })
418
+ ```
419
+
420
+ **Frontend**:
421
+
422
+ Check for `tool-{toolKey}` parts in the message and render a custom component based on the tool's state and output.
423
+
424
+ ```typescript
425
+ import { useChat } from '@ai-sdk/react'
426
+ import { DefaultChatTransport } from 'ai'
427
+ import { WeatherCard } from './weather-card'
428
+ import { Loader } from './loader'
429
+
430
+ export function Chat() {
431
+ const { messages, sendMessage } = useChat({
432
+ transport: new DefaultChatTransport({
433
+ api: 'http://localhost:4111/chat/weatherAgent',
434
+ }),
435
+ })
436
+
437
+ return (
438
+ <div>
439
+ {messages.map(message => (
440
+ <div key={message.id}>
441
+ {message.parts.map((part, index) => {
442
+ // Handle user text messages
443
+ if (part.type === 'text' && message.role === 'user') {
444
+ return <p key={index}>{part.text}</p>
445
+ }
446
+
447
+ // Handle weather tool output
448
+ if (part.type === 'tool-weatherTool') {
449
+ switch (part.state) {
450
+ case 'input-available':
451
+ return <Loader key={index} />
452
+ case 'output-available':
453
+ return <WeatherCard key={index} {...part.output} />
454
+ case 'output-error':
455
+ return <div key={index}>Error: {part.errorText}</div>
456
+ default:
457
+ return null
458
+ }
459
+ }
460
+
461
+ return null
462
+ })}
463
+ </div>
464
+ ))}
465
+ </div>
466
+ )
467
+ }
468
+ ```
469
+
470
+ > **Tip:** The tool part type follows the pattern `tool-{toolKey}`, where `toolKey` is the key used when registering the tool with the agent. For example, if you register tools as `tools: { weatherTool }`, the part type will be `tool-weatherTool`.
471
+
472
+ ### Rendering workflow data
473
+
474
+ When using `workflowRoute()` or `handleWorkflowStream()`, Mastra emits `data-workflow` parts that contain the workflow's execution state, including step statuses and outputs.
475
+
476
+ **Backend**:
477
+
478
+ Define a workflow with multiple steps that will emit `data-workflow` parts as it executes.
479
+
480
+ ```typescript
481
+ import { createStep, createWorkflow } from '@mastra/core/workflows'
482
+ import { z } from 'zod'
483
+
484
+ const fetchWeather = createStep({
485
+ id: 'fetch-weather',
486
+ inputSchema: z.object({
487
+ location: z.string(),
488
+ }),
489
+ outputSchema: z.object({
490
+ temperature: z.number(),
491
+ conditions: z.string(),
492
+ }),
493
+ execute: async ({ inputData }) => {
494
+ // Fetch weather data...
495
+ return { temperature: 22, conditions: 'Sunny' }
496
+ },
497
+ })
498
+
499
+ const planActivities = createStep({
500
+ id: 'plan-activities',
501
+ inputSchema: z.object({
502
+ temperature: z.number(),
503
+ conditions: z.string(),
504
+ }),
505
+ outputSchema: z.object({
506
+ activities: z.string(),
507
+ }),
508
+ execute: async ({ inputData, mastra }) => {
509
+ const agent = mastra?.getAgent('activityAgent')
510
+ const response = await agent?.generate(
511
+ `Suggest activities for ${inputData.conditions} weather at ${inputData.temperature}°C`,
512
+ )
513
+ return { activities: response?.text || '' }
514
+ },
515
+ })
516
+
517
+ export const activitiesWorkflow = createWorkflow({
518
+ id: 'activities-workflow',
519
+ inputSchema: z.object({
520
+ location: z.string(),
521
+ }),
522
+ outputSchema: z.object({
523
+ activities: z.string(),
524
+ }),
525
+ })
526
+ .then(fetchWeather)
527
+ .then(planActivities)
528
+
529
+ activitiesWorkflow.commit()
530
+ ```
531
+
532
+ Register the workflow with Mastra and expose it via `workflowRoute()` to stream workflow events to the frontend.
533
+
534
+ ```typescript
535
+ import { Mastra } from '@mastra/core'
536
+ import { workflowRoute } from '@mastra/ai-sdk'
537
+
538
+ export const mastra = new Mastra({
539
+ workflows: { activitiesWorkflow },
540
+ server: {
541
+ apiRoutes: [
542
+ workflowRoute({
543
+ path: '/workflow/activitiesWorkflow',
544
+ workflow: 'activitiesWorkflow',
545
+ }),
546
+ ],
547
+ },
548
+ })
549
+ ```
550
+
551
+ **Frontend**:
552
+
553
+ Check for `data-workflow` parts and render each step's status and output using the `WorkflowDataPart` type for type safety.
554
+
555
+ ```typescript
556
+ import { useChat } from '@ai-sdk/react'
557
+ import { DefaultChatTransport } from 'ai'
558
+ import type { WorkflowDataPart } from '@mastra/ai-sdk'
559
+
560
+ type WorkflowData = WorkflowDataPart['data']
561
+ type StepStatus = 'running' | 'success' | 'failed' | 'suspended' | 'waiting'
562
+
563
+ function StepIndicator({
564
+ name,
565
+ status,
566
+ output,
567
+ }: {
568
+ name: string
569
+ status: StepStatus
570
+ output: unknown
571
+ }) {
572
+ return (
573
+ <div className="step">
574
+ <div className="step-header">
575
+ <span>{name}</span>
576
+ <span className={`status status-${status}`}>{status}</span>
577
+ </div>
578
+ {status === 'success' && output && <pre>{JSON.stringify(output, null, 2)}</pre>}
579
+ </div>
580
+ )
581
+ }
582
+
583
+ export function WorkflowChat() {
584
+ const { messages, sendMessage, status } = useChat({
585
+ transport: new DefaultChatTransport({
586
+ api: 'http://localhost:4111/workflow/activitiesWorkflow',
587
+ prepareSendMessagesRequest: ({ messages }) => ({
588
+ body: {
589
+ inputData: {
590
+ location: messages[messages.length - 1]?.parts[0]?.text,
591
+ },
592
+ },
593
+ }),
594
+ }),
595
+ })
596
+
597
+ return (
598
+ <div>
599
+ {messages.map(message => (
600
+ <div key={message.id}>
601
+ {message.parts.map((part, index) => {
602
+ if (part.type === 'data-workflow') {
603
+ const workflowData = part.data as WorkflowData
604
+ const steps = Object.values(workflowData.steps)
605
+
606
+ return (
607
+ <div key={index} className="workflow-progress">
608
+ <h3>Workflow: {workflowData.name}</h3>
609
+ <p>Status: {workflowData.status}</p>
610
+ {steps.map(step => (
611
+ <StepIndicator
612
+ key={step.name}
613
+ name={step.name}
614
+ status={step.status}
615
+ output={step.output}
616
+ />
617
+ ))}
618
+ </div>
619
+ )
620
+ }
621
+ return null
622
+ })}
623
+ </div>
624
+ ))}
625
+ </div>
626
+ )
627
+ }
628
+ ```
629
+
630
+ For more details on workflow streaming, see [Workflow Streaming](https://mastra.ai/docs/streaming/workflow-streaming).
631
+
632
+ ### Rendering network data
633
+
634
+ When using `networkRoute()` or `handleNetworkStream()`, Mastra emits `data-network` parts that contain the agent network's execution state, including which agents were called and their outputs.
635
+
636
+ **Backend**:
637
+
638
+ Register agents with Mastra and expose the routing agent via `networkRoute()` to stream network execution events to the frontend.
639
+
640
+ ```typescript
641
+ import { Mastra } from '@mastra/core'
642
+ import { networkRoute } from '@mastra/ai-sdk'
643
+
644
+ export const mastra = new Mastra({
645
+ agents: { routingAgent, researchAgent, weatherAgent },
646
+ server: {
647
+ apiRoutes: [
648
+ networkRoute({
649
+ path: '/network',
650
+ agent: 'routingAgent',
651
+ }),
652
+ ],
653
+ },
654
+ })
655
+ ```
656
+
657
+ **Frontend**:
658
+
659
+ Check for `data-network` parts and render each agent's execution step using the `NetworkDataPart` type for type safety.
660
+
661
+ ```typescript
662
+ import { useChat } from '@ai-sdk/react'
663
+ import { DefaultChatTransport } from 'ai'
664
+ import type { NetworkDataPart } from '@mastra/ai-sdk'
665
+
666
+ type NetworkData = NetworkDataPart['data']
667
+
668
+ function AgentStep({ step }: { step: NetworkData['steps'][number] }) {
669
+ return (
670
+ <div className="agent-step">
671
+ <div className="step-header">
672
+ <span className="agent-name">{step.name}</span>
673
+ <span className={`status status-${step.status}`}>{step.status}</span>
674
+ </div>
675
+ {step.input && (
676
+ <div className="step-input">
677
+ <strong>Input:</strong>
678
+ <pre>{JSON.stringify(step.input, null, 2)}</pre>
679
+ </div>
680
+ )}
681
+ {step.output && (
682
+ <div className="step-output">
683
+ <strong>Output:</strong>
684
+ <pre>
685
+ {typeof step.output === 'string' ? step.output : JSON.stringify(step.output, null, 2)}
686
+ </pre>
687
+ </div>
688
+ )}
689
+ </div>
690
+ )
691
+ }
692
+
693
+ export function NetworkChat() {
694
+ const { messages, sendMessage, status } = useChat({
695
+ transport: new DefaultChatTransport({
696
+ api: 'http://localhost:4111/network',
697
+ }),
698
+ })
699
+
700
+ return (
701
+ <div>
702
+ {messages.map(message => (
703
+ <div key={message.id}>
704
+ {message.parts.map((part, index) => {
705
+ if (part.type === 'data-network') {
706
+ const networkData = part.data as NetworkData
707
+
708
+ return (
709
+ <div key={index} className="network-execution">
710
+ <div className="network-header">
711
+ <h3>Agent Network: {networkData.name}</h3>
712
+ <span className={`status status-${networkData.status}`}>
713
+ {networkData.status}
714
+ </span>
715
+ </div>
716
+ <div className="network-steps">
717
+ {networkData.steps.map((step, stepIndex) => (
718
+ <AgentStep key={stepIndex} step={step} />
719
+ ))}
720
+ </div>
721
+ </div>
722
+ )
723
+ }
724
+ return null
725
+ })}
726
+ </div>
727
+ ))}
728
+ </div>
729
+ )
730
+ }
731
+ ```
732
+
733
+ For more details on agent networks, see [Agent Networks](https://mastra.ai/docs/agents/networks).
734
+
735
+ ### Custom events
736
+
737
+ Use `writer.custom()` within a tool's `execute()` function to emit custom data parts. This is useful for progress indicators, status updates, or any custom UI updates during tool execution.
738
+
739
+ Custom event types must start with `data-` to be recognized as data parts.
740
+
741
+ > **Warning:** You must `await` the `writer.custom()` call, otherwise you may encounter a `WritableStream is locked` error.
742
+
743
+ **Backend**:
744
+
745
+ Use `writer.custom()` inside the tool's `execute()` function to emit custom `data-` prefixed events at different stages of execution.
746
+
747
+ ```typescript
748
+ import { createTool } from '@mastra/core/tools'
749
+ import { z } from 'zod'
750
+
751
+ export const taskTool = createTool({
752
+ id: 'process-task',
753
+ description: 'Process a task with progress updates',
754
+ inputSchema: z.object({
755
+ task: z.string().describe('The task to process'),
756
+ }),
757
+ outputSchema: z.object({
758
+ result: z.string(),
759
+ status: z.string(),
760
+ }),
761
+ execute: async (inputData, context) => {
762
+ const { task } = inputData
763
+
764
+ // Emit "in progress" custom event
765
+ await context?.writer?.custom({
766
+ type: 'data-tool-progress',
767
+ data: {
768
+ status: 'in-progress',
769
+ message: 'Gathering information...',
770
+ },
771
+ })
772
+
773
+ // Simulate work
774
+ await new Promise(resolve => setTimeout(resolve, 3000))
775
+
776
+ // Emit "done" custom event
777
+ await context?.writer?.custom({
778
+ type: 'data-tool-progress',
779
+ data: {
780
+ status: 'done',
781
+ message: `Successfully processed "${task}"`,
782
+ },
783
+ })
784
+
785
+ return {
786
+ result: `Task "${task}" has been completed successfully!`,
787
+ status: 'completed',
788
+ }
789
+ },
790
+ })
791
+ ```
792
+
793
+ **Frontend**:
794
+
795
+ Filter message parts for your custom event type and render a progress indicator that updates as new events arrive.
796
+
797
+ ```typescript
798
+ import { useChat } from '@ai-sdk/react'
799
+ import { DefaultChatTransport } from 'ai'
800
+ import { useMemo } from 'react'
801
+
802
+ type ProgressData = {
803
+ status: 'in-progress' | 'done'
804
+ message: string
805
+ }
806
+
807
+ function ProgressIndicator({ progress }: { progress: ProgressData }) {
808
+ return (
809
+ <div className="progress-indicator">
810
+ {progress.status === 'in-progress' ? (
811
+ <span className="spinner" />
812
+ ) : (
813
+ <span className="check-icon" />
814
+ )}
815
+ <span className={`status-${progress.status}`}>{progress.message}</span>
816
+ </div>
817
+ )
818
+ }
819
+
820
+ export function TaskChat() {
821
+ const { messages, sendMessage } = useChat({
822
+ transport: new DefaultChatTransport({
823
+ api: 'http://localhost:4111/chat/taskAgent',
824
+ }),
825
+ })
826
+
827
+ // Extract the latest progress event from messages
828
+ const latestProgress = useMemo(() => {
829
+ const allProgressParts: ProgressData[] = []
830
+ messages.forEach(message => {
831
+ message.parts.forEach(part => {
832
+ if (part.type === 'data-tool-progress') {
833
+ allProgressParts.push(part.data as ProgressData)
834
+ }
835
+ })
836
+ })
837
+ return allProgressParts[allProgressParts.length - 1]
838
+ }, [messages])
839
+
840
+ return (
841
+ <div>
842
+ {latestProgress && <ProgressIndicator progress={latestProgress} />}
843
+ {messages.map(message => (
844
+ <div key={message.id}>
845
+ {message.parts.map((part, index) => {
846
+ if (part.type === 'text') {
847
+ return <p key={index}>{part.text}</p>
848
+ }
849
+ return null
850
+ })}
851
+ </div>
852
+ ))}
853
+ </div>
854
+ )
855
+ }
856
+ ```
857
+
858
+ ### Tool streaming
859
+
860
+ Tools can also stream data using `context.writer.write()` for lower-level control, or pipe an agent's stream directly to the tool's writer. For more details, see [Tool Streaming](https://mastra.ai/docs/streaming/tool-streaming).
861
+
862
+ ### Examples
863
+
864
+ For live examples of Custom UI patterns, visit [Mastra's UI Dojo](https://ui-dojo.mastra.ai/). The repository includes implementations for:
865
+
866
+ - [Generative UIs](https://github.com/mastra-ai/ui-dojo/blob/main/src/pages/ai-sdk/generative-user-interfaces.tsx) - Custom components for tool outputs
867
+ - [Workflows](https://github.com/mastra-ai/ui-dojo/blob/main/src/pages/ai-sdk/workflow.tsx) - Workflow step visualization
868
+ - [Agent Networks](https://github.com/mastra-ai/ui-dojo/blob/main/src/pages/ai-sdk/network.tsx) - Network execution display
869
+ - [Custom Events](https://github.com/mastra-ai/ui-dojo/blob/main/src/pages/ai-sdk/generative-user-interfaces-with-custom-events.tsx) - Progress indicators with custom events
870
+
871
+ ## Recipes
872
+
873
+ ### Stream transformations
874
+
875
+ To manually transform Mastra's streams to AI SDK-compatible format, use the [`toAISdkStream()`](https://mastra.ai/reference/ai-sdk/to-ai-sdk-stream) utility. See the [examples](https://mastra.ai/reference/ai-sdk/to-ai-sdk-stream) for concrete usage patterns.
876
+
877
+ ### Loading historical messages
878
+
879
+ When loading messages from Mastra's memory to display in a chat UI, use [`toAISdkV5Messages()`](https://mastra.ai/reference/ai-sdk/to-ai-sdk-v5-messages) or [`toAISdkV4Messages()`](https://mastra.ai/reference/ai-sdk/to-ai-sdk-v4-messages) to convert them to the appropriate AI SDK format for `useChat()`'s `initialMessages`.
880
+
881
+ ### Passing additional data
882
+
883
+ [`sendMessage()`](https://ai-sdk.dev/docs/reference/ai-sdk-ui/use-chat#send-message) allows you to pass additional data from the frontend to Mastra. This data can then be used on the server as [`RequestContext`](https://mastra.ai/docs/server/request-context).
884
+
885
+ Here's an example of the frontend code:
886
+
887
+ ```typescript
888
+ import { useChat } from '@ai-sdk/react'
889
+ import { useState } from 'react'
890
+ import { DefaultChatTransport } from 'ai'
891
+
892
+ export function ChatAdditional() {
893
+ const [inputValue, setInputValue] = useState('')
894
+ const { messages, sendMessage } = useChat({
895
+ transport: new DefaultChatTransport({
896
+ api: 'http://localhost:4111/chat-extra',
897
+ }),
898
+ })
899
+
900
+ const handleFormSubmit = (e: React.FormEvent) => {
901
+ e.preventDefault()
902
+ sendMessage(
903
+ { text: inputValue },
904
+ {
905
+ body: {
906
+ data: {
907
+ userId: 'user123',
908
+ preferences: {
909
+ language: 'en',
910
+ temperature: 'celsius',
911
+ },
912
+ },
913
+ },
914
+ },
915
+ )
916
+ }
917
+
918
+ return (
919
+ <div>
920
+ <pre>{JSON.stringify(messages, null, 2)}</pre>
921
+ <form onSubmit={handleFormSubmit}>
922
+ <input
923
+ value={inputValue}
924
+ onChange={e => setInputValue(e.target.value)}
925
+ placeholder="Name of the city"
926
+ />
927
+ </form>
928
+ </div>
929
+ )
930
+ }
931
+ ```
932
+
933
+ Two examples on how to implement the backend portion of it.
934
+
935
+ **Mastra Server**:
936
+
937
+ Add a `chatRoute()` to your Mastra configuration like shown above. Then, add a server-level middleware:
938
+
939
+ ```typescript
940
+ import { Mastra } from '@mastra/core'
941
+
942
+ export const mastra = new Mastra({
943
+ server: {
944
+ middleware: [
945
+ async (c, next) => {
946
+ const requestContext = c.get('requestContext')
947
+
948
+ if (c.req.method === 'POST') {
949
+ const clonedReq = c.req.raw.clone()
950
+ const body = await clonedReq.json()
951
+
952
+ if (body?.data) {
953
+ for (const [key, value] of Object.entries(body.data)) {
954
+ requestContext.set(key, value)
955
+ }
956
+ }
957
+ }
958
+ await next()
959
+ },
960
+ ],
961
+ },
962
+ })
963
+ ```
964
+
965
+ > **Info:** You can access this data in your tools via the `requestContext` parameter. See the [Request Context documentation](https://mastra.ai/docs/server/request-context) for more details.
966
+
967
+ **Next.js**:
968
+
969
+ ```typescript
970
+ import { handleChatStream } from '@mastra/ai-sdk'
971
+ import { RequestContext } from '@mastra/core/request-context'
972
+ import { createUIMessageStreamResponse } from 'ai'
973
+ import { mastra } from '@/src/mastra'
974
+
975
+ export async function POST(req: Request) {
976
+ const { messages, data } = await req.json()
977
+
978
+ const requestContext = new RequestContext()
979
+
980
+ if (data) {
981
+ for (const [key, value] of Object.entries(data)) {
982
+ requestContext.set(key, value)
983
+ }
984
+ }
985
+
986
+ const stream = await handleChatStream({
987
+ mastra,
988
+ agentId: 'weatherAgent',
989
+ params: {
990
+ messages,
991
+ requestContext,
992
+ },
993
+ })
994
+ return createUIMessageStreamResponse({ stream })
995
+ }
996
+ ```
997
+
998
+ ### Workflow suspend/resume with user approval
999
+
1000
+ Workflows can suspend execution and wait for user input before continuing. This is useful for approval flows, confirmations, or any human-in-the-loop scenario.
1001
+
1002
+ The workflow uses:
1003
+
1004
+ - `suspendSchema` / `resumeSchema` - Define the data structure for suspend payload and resume input
1005
+ - `suspend()` - Pauses the workflow and sends the suspend payload to the UI
1006
+ - `resumeData` - Contains the user's response when the workflow resumes
1007
+ - `bail()` - Exits the workflow early (e.g., when user rejects)
1008
+
1009
+ **Backend**:
1010
+
1011
+ Create a workflow step that suspends for approval. The step checks `resumeData` to determine if it's resuming, and calls `suspend()` on first execution.
1012
+
1013
+ ```typescript
1014
+ import { createStep, createWorkflow } from '@mastra/core/workflows'
1015
+ import { z } from 'zod'
1016
+
1017
+ const requestApproval = createStep({
1018
+ id: 'request-approval',
1019
+ inputSchema: z.object({ requestId: z.string(), summary: z.string() }),
1020
+ outputSchema: z.object({
1021
+ approved: z.boolean(),
1022
+ requestId: z.string(),
1023
+ approvedBy: z.string().optional(),
1024
+ }),
1025
+ resumeSchema: z.object({
1026
+ approved: z.boolean(),
1027
+ approverName: z.string().optional(),
1028
+ }),
1029
+ suspendSchema: z.object({
1030
+ message: z.string(),
1031
+ requestId: z.string(),
1032
+ }),
1033
+ execute: async ({ inputData, resumeData, suspend, bail }) => {
1034
+ // User rejected - bail out
1035
+ if (resumeData?.approved === false) {
1036
+ return bail({ message: 'Request rejected' })
1037
+ }
1038
+ // User approved - continue
1039
+ if (resumeData?.approved) {
1040
+ return {
1041
+ approved: true,
1042
+ requestId: inputData.requestId,
1043
+ approvedBy: resumeData.approverName || 'User',
1044
+ }
1045
+ }
1046
+ // First execution - suspend and wait
1047
+ return await suspend({
1048
+ message: `Please approve: ${inputData.summary}`,
1049
+ requestId: inputData.requestId,
1050
+ })
1051
+ },
1052
+ })
1053
+
1054
+ export const approvalWorkflow = createWorkflow({
1055
+ id: 'approval-workflow',
1056
+ inputSchema: z.object({ requestId: z.string(), summary: z.string() }),
1057
+ outputSchema: z.object({
1058
+ approved: z.boolean(),
1059
+ requestId: z.string(),
1060
+ approvedBy: z.string().optional(),
1061
+ }),
1062
+ }).then(requestApproval)
1063
+
1064
+ approvalWorkflow.commit()
1065
+ ```
1066
+
1067
+ Register the workflow. Storage is required for suspend/resume to persist state.
1068
+
1069
+ ```typescript
1070
+ import { Mastra } from '@mastra/core'
1071
+ import { workflowRoute } from '@mastra/ai-sdk'
1072
+ import { LibSQLStore } from '@mastra/libsql'
1073
+
1074
+ export const mastra = new Mastra({
1075
+ workflows: { approvalWorkflow },
1076
+ storage: new LibSQLStore({
1077
+ url: 'file:../mastra.db',
1078
+ }),
1079
+ server: {
1080
+ apiRoutes: [
1081
+ workflowRoute({ path: '/workflow/approvalWorkflow', workflow: 'approvalWorkflow' }),
1082
+ ],
1083
+ },
1084
+ })
1085
+ ```
1086
+
1087
+ **Frontend**:
1088
+
1089
+ Detect when the workflow is suspended and send resume data with `runId`, `step`, and `resumeData`.
1090
+
1091
+ ```typescript
1092
+ import { useChat } from '@ai-sdk/react'
1093
+ import { DefaultChatTransport } from 'ai'
1094
+ import { useMemo, useState } from 'react'
1095
+ import type { WorkflowDataPart } from '@mastra/ai-sdk'
1096
+
1097
+ type WorkflowData = WorkflowDataPart['data']
1098
+
1099
+ export function ApprovalWorkflow() {
1100
+ const [requestId, setRequestId] = useState('')
1101
+ const [summary, setSummary] = useState('')
1102
+
1103
+ const { messages, sendMessage, setMessages, status } = useChat({
1104
+ transport: new DefaultChatTransport({
1105
+ api: 'http://localhost:4111/workflow/approvalWorkflow',
1106
+ prepareSendMessagesRequest: ({ messages }) => {
1107
+ const lastMessage = messages[messages.length - 1]
1108
+ const text = lastMessage.parts.find(p => p.type === 'text')?.text
1109
+ const metadata = lastMessage.metadata as Record<string, string>
1110
+
1111
+ // Resuming: send runId, step, and resumeData
1112
+ if (text === 'Approve' || text === 'Reject') {
1113
+ return {
1114
+ body: {
1115
+ runId: metadata.runId,
1116
+ step: 'request-approval',
1117
+ resumeData: { approved: text === 'Approve' },
1118
+ },
1119
+ }
1120
+ }
1121
+ // Starting: send inputData
1122
+ return {
1123
+ body: { inputData: { requestId: metadata.requestId, summary: metadata.summary } },
1124
+ }
1125
+ },
1126
+ }),
1127
+ })
1128
+
1129
+ // Find suspended workflow
1130
+ const suspended = useMemo(() => {
1131
+ for (const m of messages) {
1132
+ for (const p of m.parts) {
1133
+ if (p.type === 'data-workflow' && (p.data as WorkflowData).status === 'suspended') {
1134
+ return { data: p.data as WorkflowData, runId: p.id }
1135
+ }
1136
+ }
1137
+ }
1138
+ return null
1139
+ }, [messages])
1140
+
1141
+ const handleApprove = () => {
1142
+ setMessages([])
1143
+ sendMessage({ text: 'Approve', metadata: { runId: suspended?.runId } })
1144
+ }
1145
+
1146
+ const handleReject = () => {
1147
+ setMessages([])
1148
+ sendMessage({ text: 'Reject', metadata: { runId: suspended?.runId } })
1149
+ }
1150
+
1151
+ return (
1152
+ <div>
1153
+ {!suspended ? (
1154
+ <form
1155
+ onSubmit={e => {
1156
+ e.preventDefault()
1157
+ setMessages([])
1158
+ sendMessage({ text: 'Start', metadata: { requestId, summary } })
1159
+ }}
1160
+ >
1161
+ <input
1162
+ value={requestId}
1163
+ onChange={e => setRequestId(e.target.value)}
1164
+ placeholder="Request ID"
1165
+ />
1166
+ <input value={summary} onChange={e => setSummary(e.target.value)} placeholder="Summary" />
1167
+ <button type="submit" disabled={status !== 'ready'}>
1168
+ Submit
1169
+ </button>
1170
+ </form>
1171
+ ) : (
1172
+ <div>
1173
+ <p>
1174
+ {
1175
+ (suspended.data.steps['request-approval']?.suspendPayload as { message: string })
1176
+ ?.message
1177
+ }
1178
+ </p>
1179
+ <button onClick={handleApprove}>Approve</button>
1180
+ <button onClick={handleReject}>Reject</button>
1181
+ </div>
1182
+ )}
1183
+ </div>
1184
+ )
1185
+ }
1186
+ ```
1187
+
1188
+ Key points:
1189
+
1190
+ - The suspend payload is accessible via `step.suspendPayload`
1191
+ - To resume, send `runId`, `step` (the step ID), and `resumeData` in the request body
1192
+ - Storage must be configured for suspend/resume to persist workflow state
1193
+
1194
+ For a complete implementation, see the [workflow-suspend-resume example](https://github.com/mastra-ai/ui-dojo/blob/main/src/pages/ai-sdk/workflow-suspend-resume.tsx) in UI Dojo.
1195
+
1196
+ ### Nested agent streams in tools
1197
+
1198
+ Tools can call agents internally and stream the agent's output back to the UI. This creates `data-tool-agent` parts that can be rendered alongside the tool's final output.
1199
+
1200
+ The pattern uses:
1201
+
1202
+ - `context.mastra.getAgent()` - Get an agent instance from within a tool
1203
+ - `agent.stream()` - Stream the agent's response
1204
+ - `stream.fullStream.pipeTo(context.writer)` - Pipe the agent's stream to the tool's writer
1205
+
1206
+ **Backend**:
1207
+
1208
+ Create a tool that calls an agent and pipes its stream to the tool's writer.
1209
+
1210
+ ```typescript
1211
+ import { createTool } from '@mastra/core/tools'
1212
+ import { z } from 'zod'
1213
+
1214
+ export const nestedAgentTool = createTool({
1215
+ id: 'nested-agent-stream',
1216
+ description: 'Analyze weather using a nested agent',
1217
+ inputSchema: z.object({
1218
+ city: z.string().describe('The city to analyze'),
1219
+ }),
1220
+ outputSchema: z.object({
1221
+ summary: z.string(),
1222
+ }),
1223
+ execute: async (inputData, context) => {
1224
+ const agent = context?.mastra?.getAgent('weatherAgent')
1225
+ if (!agent) {
1226
+ return { summary: 'Weather agent not available' }
1227
+ }
1228
+
1229
+ const stream = await agent.stream(
1230
+ `Analyze the weather in ${inputData.city} and provide a summary.`,
1231
+ )
1232
+
1233
+ // Pipe the agent's stream to emit data-tool-agent parts
1234
+ await stream.fullStream.pipeTo(context!.writer!)
1235
+
1236
+ return { summary: (await stream.text) ?? 'No summary available' }
1237
+ },
1238
+ })
1239
+ ```
1240
+
1241
+ Create an agent that uses this tool.
1242
+
1243
+ ```typescript
1244
+ import { Agent } from '@mastra/core/agent'
1245
+ import { nestedAgentTool } from '../tools/nested-agent-tool'
1246
+
1247
+ export const forecastAgent = new Agent({
1248
+ id: 'forecast-agent',
1249
+ instructions: 'Use the nested-agent-stream tool when asked about weather.',
1250
+ model: 'openai/gpt-4o-mini',
1251
+ tools: { nestedAgentTool },
1252
+ })
1253
+ ```
1254
+
1255
+ **Frontend**:
1256
+
1257
+ Handle `data-tool-agent` parts to display the nested agent's streamed output.
1258
+
1259
+ ```typescript
1260
+ import { useChat } from '@ai-sdk/react'
1261
+ import { DefaultChatTransport } from 'ai'
1262
+ import { useState } from 'react'
1263
+ import type { AgentDataPart } from '@mastra/ai-sdk'
1264
+
1265
+ export function NestedAgentChat() {
1266
+ const [input, setInput] = useState('')
1267
+ const { messages, sendMessage, status } = useChat({
1268
+ transport: new DefaultChatTransport({
1269
+ api: 'http://localhost:4111/chat/forecastAgent',
1270
+ }),
1271
+ })
1272
+
1273
+ return (
1274
+ <div>
1275
+ <form
1276
+ onSubmit={e => {
1277
+ e.preventDefault()
1278
+ sendMessage({ text: input })
1279
+ setInput('')
1280
+ }}
1281
+ >
1282
+ <input value={input} onChange={e => setInput(e.target.value)} placeholder="Enter a city" />
1283
+ <button type="submit" disabled={status !== 'ready'}>
1284
+ Get Forecast
1285
+ </button>
1286
+ </form>
1287
+
1288
+ {messages.map(message => (
1289
+ <div key={message.id}>
1290
+ {message.parts.map((part, index) => {
1291
+ if (part.type === 'text') {
1292
+ return <p key={index}>{part.text}</p>
1293
+ }
1294
+ if (part.type === 'data-tool-agent') {
1295
+ const { id, data } = part as AgentDataPart
1296
+ return (
1297
+ <div key={index} className="nested-agent">
1298
+ <strong>Nested Agent: {id}</strong>
1299
+ {data.text && <p>{data.text}</p>}
1300
+ </div>
1301
+ )
1302
+ }
1303
+ return null
1304
+ })}
1305
+ </div>
1306
+ ))}
1307
+ </div>
1308
+ )
1309
+ }
1310
+ ```
1311
+
1312
+ Key points:
1313
+
1314
+ - Piping `fullStream` to `context.writer` creates `data-tool-agent` parts
1315
+ - The `AgentDataPart` has `id` (on the part) and `data.text` (the agent's streamed text)
1316
+ - The tool still returns its own output after the stream completes
1317
+
1318
+ For a complete implementation, see the [tool-nested-streams example](https://github.com/mastra-ai/ui-dojo/blob/main/src/pages/ai-sdk/tool-nested-streams.tsx) in UI Dojo.
1319
+
1320
+ ### Streaming agent text from workflow steps
1321
+
1322
+ Workflow steps can stream an agent's text output in real-time by piping the agent's stream to the step's `writer`. This lets users see the agent "thinking" while the workflow executes, rather than waiting for the step to complete.
1323
+
1324
+ The pattern uses:
1325
+
1326
+ - `writer` in workflow step - Pipe the agent's `fullStream` to the step's writer
1327
+ - `text` and `data-workflow` parts - The frontend receives streaming text alongside step progress
1328
+
1329
+ **Backend**:
1330
+
1331
+ Create a workflow step that streams an agent's response by piping to the step's `writer`.
1332
+
1333
+ ```typescript
1334
+ import { createStep, createWorkflow } from '@mastra/core/workflows'
1335
+ import { z } from 'zod'
1336
+ import { weatherAgent } from '../agents/weather-agent'
1337
+
1338
+ const analyzeWeather = createStep({
1339
+ id: 'analyze-weather',
1340
+ inputSchema: z.object({ location: z.string() }),
1341
+ outputSchema: z.object({ analysis: z.string(), location: z.string() }),
1342
+ execute: async ({ inputData, writer }) => {
1343
+ const response = await weatherAgent.stream(
1344
+ `Analyze the weather in ${inputData.location} and provide insights.`,
1345
+ )
1346
+
1347
+ // Pipe agent stream to step writer for real-time text streaming
1348
+ await response.fullStream.pipeTo(writer)
1349
+
1350
+ return {
1351
+ analysis: await response.text,
1352
+ location: inputData.location,
1353
+ }
1354
+ },
1355
+ })
1356
+
1357
+ const calculateScore = createStep({
1358
+ id: 'calculate-score',
1359
+ inputSchema: z.object({ analysis: z.string(), location: z.string() }),
1360
+ outputSchema: z.object({ score: z.number(), summary: z.string() }),
1361
+ execute: async ({ inputData }) => {
1362
+ const score = inputData.analysis.includes('sunny') ? 85 : 50
1363
+ return { score, summary: `Comfort score for ${inputData.location}: ${score}/100` }
1364
+ },
1365
+ })
1366
+
1367
+ export const weatherWorkflow = createWorkflow({
1368
+ id: 'weather-workflow',
1369
+ inputSchema: z.object({ location: z.string() }),
1370
+ outputSchema: z.object({ score: z.number(), summary: z.string() }),
1371
+ })
1372
+ .then(analyzeWeather)
1373
+ .then(calculateScore)
1374
+
1375
+ weatherWorkflow.commit()
1376
+ ```
1377
+
1378
+ Register the workflow with a `workflowRoute()`. Text streaming is enabled by default.
1379
+
1380
+ ```typescript
1381
+ import { Mastra } from '@mastra/core'
1382
+ import { workflowRoute } from '@mastra/ai-sdk'
1383
+
1384
+ export const mastra = new Mastra({
1385
+ agents: { weatherAgent },
1386
+ workflows: { weatherWorkflow },
1387
+ server: {
1388
+ apiRoutes: [workflowRoute({ path: '/workflow/weather', workflow: 'weatherWorkflow' })],
1389
+ },
1390
+ })
1391
+ ```
1392
+
1393
+ **Frontend**:
1394
+
1395
+ Render both `text` parts (streaming agent output) and `data-workflow` parts (step progress).
1396
+
1397
+ ```typescript
1398
+ import { useChat } from '@ai-sdk/react'
1399
+ import { DefaultChatTransport } from 'ai'
1400
+ import { useState } from 'react'
1401
+ import type { WorkflowDataPart } from '@mastra/ai-sdk'
1402
+
1403
+ type WorkflowData = WorkflowDataPart['data']
1404
+
1405
+ export function WeatherWorkflow() {
1406
+ const [location, setLocation] = useState('')
1407
+ const { messages, sendMessage, status } = useChat({
1408
+ transport: new DefaultChatTransport({
1409
+ api: 'http://localhost:4111/workflow/weather',
1410
+ prepareSendMessagesRequest: ({ messages }) => ({
1411
+ body: {
1412
+ inputData: {
1413
+ location: messages[messages.length - 1].parts.find(p => p.type === 'text')?.text,
1414
+ },
1415
+ },
1416
+ }),
1417
+ }),
1418
+ })
1419
+
1420
+ return (
1421
+ <div>
1422
+ <form
1423
+ onSubmit={e => {
1424
+ e.preventDefault()
1425
+ sendMessage({ text: location })
1426
+ setLocation('')
1427
+ }}
1428
+ >
1429
+ <input
1430
+ value={location}
1431
+ onChange={e => setLocation(e.target.value)}
1432
+ placeholder="Enter city"
1433
+ />
1434
+ <button type="submit" disabled={status !== 'ready'}>
1435
+ Analyze
1436
+ </button>
1437
+ </form>
1438
+
1439
+ {messages.map(message => (
1440
+ <div key={message.id}>
1441
+ {message.parts.map((part, index) => {
1442
+ // Streaming agent text
1443
+ if (part.type === 'text' && message.role === 'assistant') {
1444
+ return (
1445
+ <div key={index}>
1446
+ {status === 'streaming' && (
1447
+ <p>
1448
+ <em>Agent analyzing...</em>
1449
+ </p>
1450
+ )}
1451
+ <p>{part.text}</p>
1452
+ </div>
1453
+ )
1454
+ }
1455
+ // Workflow step progress
1456
+ if (part.type === 'data-workflow') {
1457
+ const workflow = part.data as WorkflowData
1458
+ return (
1459
+ <div key={index}>
1460
+ {Object.entries(workflow.steps).map(([stepId, step]) => (
1461
+ <div key={stepId}>
1462
+ <strong>{stepId}</strong>: {step.status}
1463
+ </div>
1464
+ ))}
1465
+ </div>
1466
+ )
1467
+ }
1468
+ return null
1469
+ })}
1470
+ </div>
1471
+ ))}
1472
+ </div>
1473
+ )
1474
+ }
1475
+ ```
1476
+
1477
+ Key points:
1478
+
1479
+ - The step's `writer` is available in the `execute` function (not via `context`)
1480
+ - `includeTextStreamParts` defaults to `true` on `workflowRoute()`, so text streams by default
1481
+ - Text parts stream in real-time while `data-workflow` parts update with step status
1482
+
1483
+ For a complete implementation, see the [workflow-agent-text-stream example](https://github.com/mastra-ai/ui-dojo/blob/main/src/pages/ai-sdk/workflow-agent-text-stream.tsx) in UI Dojo.
1484
+
1485
+ ### Multi-stage progress with branching workflows
1486
+
1487
+ For workflows with conditional branching (e.g., express vs standard shipping), you can track progress across different branches by including a identifier in your custom events.
1488
+
1489
+ The UI Dojo example uses a `stage` field in the event data to identify which branch is executing (e.g., `"validation"`, `"standard-processing"`, `"express-processing"`). The frontend groups events by this field to show a pipeline-style progress UI.
1490
+
1491
+ See the [branching-workflow.ts](https://github.com/mastra-ai/ui-dojo/blob/main/src/mastra/workflows/branching-workflow.ts) (backend) and [workflow-custom-events.tsx](https://github.com/mastra-ai/ui-dojo/blob/main/src/pages/ai-sdk/workflow-custom-events.tsx) (frontend) in UI Dojo.
1492
+
1493
+ ### Progress indicators in agent networks
1494
+
1495
+ When using agent networks, you can emit custom progress events from tools used by subagents to show which agent is currently active.
1496
+
1497
+ The UI Dojo example includes a `stage` field in the event data to identify which subagent is running (e.g., `"report-generation"`, `"report-review"`). The frontend groups events by this field and displays the latest status for each.
1498
+
1499
+ See the [report-generation-tool.ts](https://github.com/mastra-ai/ui-dojo/blob/main/src/mastra/tools/report-generation-tool.ts) (backend) and [agent-network-custom-events.tsx](https://github.com/mastra-ai/ui-dojo/blob/main/src/pages/ai-sdk/agent-network-custom-events.tsx) (frontend) in UI Dojo.