@mastra/mcp-docs-server 1.0.0-beta.1 → 1.0.0-beta.10
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.
- package/.docs/organized/changelogs/%40internal%2Fchangeset-cli.md +1 -15
- package/.docs/organized/changelogs/%40internal%2Fexternal-types.md +1 -7
- package/.docs/organized/changelogs/%40internal%2Fstorage-test-utils.md +201 -1
- package/.docs/organized/changelogs/%40internal%2Ftypes-builder.md +1 -55
- package/.docs/organized/changelogs/%40mastra%2Fagent-builder.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +250 -50
- package/.docs/organized/changelogs/%40mastra%2Fastra.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fauth.md +6 -0
- package/.docs/organized/changelogs/%40mastra%2Fchroma.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare-d1.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fcodemod.md +26 -0
- package/.docs/organized/changelogs/%40mastra%2Fconvex.md +89 -0
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +393 -193
- package/.docs/organized/changelogs/%40mastra%2Fcouchbase.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fduckdb.md +42 -0
- package/.docs/organized/changelogs/%40mastra%2Fdynamodb.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Felasticsearch.md +61 -0
- package/.docs/organized/changelogs/%40mastra%2Fevals.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Flance.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Flibsql.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Floggers.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmcp-registry-registry.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmcp.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmemory.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmongodb.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmssql.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fopensearch.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fpg.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +234 -34
- package/.docs/organized/changelogs/%40mastra%2Fqdrant.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Frag.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Freact.md +128 -1
- package/.docs/organized/changelogs/%40mastra%2Fs3vectors.md +18 -0
- package/.docs/organized/changelogs/%40mastra%2Fschema-compat.md +42 -0
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +244 -44
- package/.docs/organized/changelogs/%40mastra%2Fturbopuffer.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fupstash.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvectorize.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-azure.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-cloudflare.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-deepgram.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-elevenlabs.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-gladia.md +92 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google-gemini-live.md +67 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-murf.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai-realtime.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-playai.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-sarvam.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-speechify.md +201 -1
- package/.docs/organized/changelogs/create-mastra.md +201 -1
- package/.docs/organized/changelogs/mastra.md +201 -1
- package/.docs/organized/code-examples/agui.md +1 -0
- package/.docs/organized/code-examples/ai-elements.md +2 -2
- package/.docs/organized/code-examples/ai-sdk-useChat.md +2 -2
- package/.docs/organized/code-examples/ai-sdk-v5.md +3 -2
- package/.docs/organized/code-examples/assistant-ui.md +2 -2
- package/.docs/organized/code-examples/bird-checker-with-express.md +1 -1
- package/.docs/organized/code-examples/bird-checker-with-nextjs-and-eval.md +2 -2
- package/.docs/organized/code-examples/bird-checker-with-nextjs.md +2 -2
- package/.docs/organized/code-examples/client-side-tools.md +1 -1
- package/.docs/organized/code-examples/crypto-chatbot.md +2 -2
- package/.docs/organized/code-examples/fireworks-r1.md +1 -1
- package/.docs/organized/code-examples/heads-up-game.md +1 -1
- package/.docs/organized/code-examples/mcp-configuration.md +0 -3
- package/.docs/organized/code-examples/mcp-server-adapters.md +720 -0
- package/.docs/organized/code-examples/memory-per-resource-example.md +1 -1
- package/.docs/organized/code-examples/memory-with-processors.md +1 -1
- package/.docs/organized/code-examples/openapi-spec-writer.md +1 -1
- package/.docs/organized/code-examples/processors-with-ai-sdk.md +14 -0
- package/.docs/organized/code-examples/quick-start.md +2 -2
- package/.docs/organized/code-examples/server-app-access.md +342 -0
- package/.docs/organized/code-examples/server-express-adapter.md +87 -0
- package/.docs/organized/code-examples/server-hono-adapter.md +85 -0
- package/.docs/organized/code-examples/stock-price-tool.md +1 -21
- package/.docs/organized/code-examples/workflow-ai-recruiter.md +1 -1
- package/.docs/organized/code-examples/workflow-with-inline-steps.md +1 -1
- package/.docs/organized/code-examples/workflow-with-memory.md +1 -1
- package/.docs/organized/code-examples/workflow-with-separate-steps.md +1 -1
- package/.docs/organized/code-examples/workflow-with-suspend-resume.md +1 -1
- package/.docs/raw/agents/adding-voice.mdx +56 -10
- package/.docs/raw/agents/agent-approval.mdx +189 -0
- package/.docs/raw/agents/agent-memory.mdx +1 -1
- package/.docs/raw/agents/guardrails.mdx +27 -24
- package/.docs/raw/agents/networks.mdx +3 -3
- package/.docs/raw/agents/overview.mdx +18 -167
- package/.docs/raw/agents/processors.mdx +279 -0
- package/.docs/raw/agents/structured-output.mdx +224 -0
- package/.docs/raw/agents/using-tools.mdx +14 -14
- package/.docs/raw/auth/auth0.mdx +1 -1
- package/.docs/raw/auth/clerk.mdx +1 -1
- package/.docs/raw/auth/firebase.mdx +1 -1
- package/.docs/raw/auth/index.mdx +1 -1
- package/.docs/raw/auth/jwt.mdx +1 -1
- package/.docs/raw/auth/supabase.mdx +1 -1
- package/.docs/raw/auth/workos.mdx +1 -1
- package/.docs/raw/community/contributing-templates.mdx +1 -1
- package/.docs/raw/community/discord.mdx +2 -2
- package/.docs/raw/community/licensing.mdx +1 -1
- package/.docs/raw/course/01-first-agent/05-running-playground.md +5 -5
- package/.docs/raw/course/01-first-agent/09-testing-your-agent.md +3 -3
- package/.docs/raw/course/01-first-agent/13-testing-your-tool.md +3 -3
- package/.docs/raw/course/01-first-agent/17-testing-memory.md +2 -2
- package/.docs/raw/course/04-workflows/07-using-playground.md +1 -1
- package/.docs/raw/deployment/{server-deployment.mdx → building-mastra.mdx} +4 -4
- package/.docs/raw/deployment/cloud-providers/amazon-ec2.mdx +2 -2
- package/.docs/raw/deployment/cloud-providers/aws-lambda.mdx +3 -3
- package/.docs/raw/deployment/cloud-providers/azure-app-services.mdx +2 -2
- package/.docs/raw/deployment/{serverless-platforms → cloud-providers}/cloudflare-deployer.mdx +1 -1
- package/.docs/raw/deployment/cloud-providers/digital-ocean.mdx +2 -2
- package/.docs/raw/deployment/cloud-providers/index.mdx +26 -29
- package/.docs/raw/deployment/{serverless-platforms → cloud-providers}/netlify-deployer.mdx +45 -14
- package/.docs/raw/deployment/{serverless-platforms → cloud-providers}/vercel-deployer.mdx +1 -1
- package/.docs/raw/{mastra-cloud → deployment/mastra-cloud}/dashboard.mdx +3 -3
- package/.docs/raw/deployment/mastra-cloud/observability.mdx +53 -0
- package/.docs/raw/{mastra-cloud → deployment/mastra-cloud}/overview.mdx +3 -3
- package/.docs/raw/{mastra-cloud → deployment/mastra-cloud}/setting-up.mdx +4 -4
- package/.docs/raw/deployment/monorepo.mdx +3 -3
- package/.docs/raw/deployment/overview.mdx +7 -7
- package/.docs/raw/deployment/web-framework.mdx +6 -6
- package/.docs/raw/evals/{off-the-shelf-scorers.mdx → built-in-scorers.mdx} +17 -15
- package/.docs/raw/evals/custom-scorers.mdx +4 -6
- package/.docs/raw/evals/overview.mdx +5 -6
- package/.docs/raw/evals/running-in-ci.mdx +2 -4
- package/.docs/raw/getting-started/{installation.mdx → manual-install.mdx} +6 -80
- package/.docs/raw/getting-started/mcp-docs-server.mdx +6 -6
- package/.docs/raw/getting-started/project-structure.mdx +2 -2
- package/.docs/raw/getting-started/start.mdx +72 -0
- package/.docs/raw/getting-started/studio.mdx +8 -6
- package/.docs/raw/guides/agent-frameworks/ai-sdk.mdx +147 -0
- package/.docs/raw/guides/build-your-ui/ai-sdk-ui.mdx +627 -0
- package/.docs/raw/{frameworks/agentic-uis → guides/build-your-ui}/assistant-ui.mdx +71 -19
- package/.docs/raw/guides/build-your-ui/copilotkit.mdx +206 -0
- package/.docs/raw/{frameworks/web-frameworks → guides/getting-started}/astro.mdx +24 -26
- package/.docs/raw/{frameworks/servers → guides/getting-started}/express.mdx +4 -5
- package/.docs/raw/guides/{quickstarts/nextjs.mdx → getting-started/next-js.mdx} +26 -25
- package/.docs/raw/guides/getting-started/quickstart.mdx +97 -0
- package/.docs/raw/{frameworks/web-frameworks → guides/getting-started}/sveltekit.mdx +24 -26
- package/.docs/raw/{frameworks/web-frameworks → guides/getting-started}/vite-react.mdx +7 -7
- package/.docs/raw/guides/guide/ai-recruiter.mdx +2 -3
- package/.docs/raw/guides/guide/chef-michel.mdx +2 -3
- package/.docs/raw/guides/guide/notes-mcp-server.mdx +2 -2
- package/.docs/raw/guides/guide/research-assistant.mdx +7 -8
- package/.docs/raw/guides/guide/stock-agent.mdx +4 -6
- package/.docs/raw/guides/guide/web-search.mdx +12 -10
- package/.docs/raw/guides/guide/whatsapp-chat-bot.mdx +421 -0
- package/.docs/raw/guides/index.mdx +3 -35
- package/.docs/raw/guides/migrations/agentnetwork.mdx +4 -4
- package/.docs/raw/guides/migrations/ai-sdk-v4-to-v5.mdx +119 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/agent.mdx +51 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/client.mdx +42 -2
- package/.docs/raw/guides/migrations/upgrade-to-v1/evals.mdx +31 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/mastra.mdx +27 -3
- package/.docs/raw/guides/migrations/upgrade-to-v1/mcp.mdx +1 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/memory.mdx +28 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/overview.mdx +25 -3
- package/.docs/raw/guides/migrations/upgrade-to-v1/storage.mdx +80 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/tools.mdx +68 -3
- package/.docs/raw/guides/migrations/upgrade-to-v1/vectors.mdx +25 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/workflows.mdx +174 -1
- package/.docs/raw/guides/migrations/vnext-to-standard-apis.mdx +2 -2
- package/.docs/raw/index.mdx +3 -3
- package/.docs/raw/mcp/overview.mdx +358 -0
- package/.docs/raw/mcp/publishing-mcp-server.mdx +139 -0
- package/.docs/raw/memory/conversation-history.mdx +1 -1
- package/.docs/raw/memory/memory-processors.mdx +265 -80
- package/.docs/raw/memory/overview.mdx +2 -2
- package/.docs/raw/memory/semantic-recall.mdx +9 -9
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +3 -8
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +150 -0
- package/.docs/raw/memory/storage/memory-with-pg.mdx +3 -8
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +3 -8
- package/.docs/raw/memory/threads-and-resources.mdx +4 -4
- package/.docs/raw/memory/working-memory.mdx +16 -8
- package/.docs/raw/{logging.mdx → observability/logging.mdx} +7 -7
- package/.docs/raw/observability/overview.mdx +3 -4
- package/.docs/raw/observability/tracing/bridges/otel.mdx +200 -0
- package/.docs/raw/observability/tracing/exporters/arize.mdx +37 -1
- package/.docs/raw/observability/tracing/exporters/braintrust.mdx +20 -1
- package/.docs/raw/observability/tracing/exporters/cloud.mdx +2 -2
- package/.docs/raw/observability/tracing/exporters/default.mdx +1 -1
- package/.docs/raw/observability/tracing/exporters/langfuse.mdx +84 -1
- package/.docs/raw/observability/tracing/exporters/langsmith.mdx +13 -1
- package/.docs/raw/observability/tracing/exporters/otel.mdx +123 -25
- package/.docs/raw/observability/tracing/exporters/posthog.mdx +127 -0
- package/.docs/raw/observability/tracing/overview.mdx +80 -9
- package/.docs/raw/observability/tracing/processors/sensitive-data-filter.mdx +1 -2
- package/.docs/raw/rag/chunking-and-embedding.mdx +16 -17
- package/.docs/raw/rag/overview.mdx +4 -3
- package/.docs/raw/rag/retrieval.mdx +44 -39
- package/.docs/raw/rag/vector-databases.mdx +94 -3
- package/.docs/raw/reference/agents/agent.mdx +8 -12
- package/.docs/raw/reference/agents/generate.mdx +67 -99
- package/.docs/raw/reference/agents/generateLegacy.mdx +3 -3
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getDefaultOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getDescription.mdx +1 -1
- package/.docs/raw/reference/agents/getInstructions.mdx +1 -1
- package/.docs/raw/reference/agents/getLLM.mdx +2 -2
- package/.docs/raw/reference/agents/getMemory.mdx +1 -1
- package/.docs/raw/reference/agents/getModel.mdx +1 -1
- package/.docs/raw/reference/agents/getTools.mdx +69 -0
- package/.docs/raw/reference/agents/getVoice.mdx +1 -1
- package/.docs/raw/reference/agents/listAgents.mdx +1 -1
- package/.docs/raw/reference/agents/listScorers.mdx +1 -1
- package/.docs/raw/reference/agents/listTools.mdx +2 -2
- package/.docs/raw/reference/agents/listWorkflows.mdx +1 -1
- package/.docs/raw/reference/agents/network.mdx +33 -72
- package/.docs/raw/reference/ai-sdk/chat-route.mdx +127 -0
- package/.docs/raw/reference/ai-sdk/handle-chat-stream.mdx +117 -0
- package/.docs/raw/reference/ai-sdk/handle-network-stream.mdx +64 -0
- package/.docs/raw/reference/ai-sdk/handle-workflow-stream.mdx +116 -0
- package/.docs/raw/reference/ai-sdk/network-route.mdx +99 -0
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-stream.mdx +289 -0
- package/.docs/raw/reference/ai-sdk/with-mastra.mdx +119 -0
- package/.docs/raw/reference/ai-sdk/workflow-route.mdx +110 -0
- package/.docs/raw/reference/auth/auth0.mdx +1 -1
- package/.docs/raw/reference/auth/clerk.mdx +1 -1
- package/.docs/raw/reference/auth/firebase.mdx +1 -1
- package/.docs/raw/reference/auth/jwt.mdx +1 -1
- package/.docs/raw/reference/auth/supabase.mdx +1 -1
- package/.docs/raw/reference/auth/workos.mdx +1 -1
- package/.docs/raw/reference/cli/create-mastra.mdx +1 -1
- package/.docs/raw/reference/cli/mastra.mdx +19 -6
- package/.docs/raw/reference/client-js/agents.mdx +252 -68
- package/.docs/raw/reference/client-js/error-handling.mdx +1 -1
- package/.docs/raw/reference/client-js/logs.mdx +1 -1
- package/.docs/raw/reference/client-js/mastra-client.mdx +4 -4
- package/.docs/raw/reference/client-js/memory.mdx +48 -2
- package/.docs/raw/reference/client-js/observability.mdx +1 -1
- package/.docs/raw/reference/client-js/telemetry.mdx +1 -1
- package/.docs/raw/reference/client-js/tools.mdx +1 -1
- package/.docs/raw/reference/client-js/vectors.mdx +1 -1
- package/.docs/raw/reference/client-js/workflows.mdx +93 -64
- package/.docs/raw/reference/core/addGateway.mdx +59 -0
- package/.docs/raw/reference/core/getAgent.mdx +1 -1
- package/.docs/raw/reference/core/getAgentById.mdx +1 -1
- package/.docs/raw/reference/core/getDeployer.mdx +1 -1
- package/.docs/raw/reference/core/getGateway.mdx +59 -0
- package/.docs/raw/reference/core/getGatewayById.mdx +62 -0
- package/.docs/raw/reference/core/getLogger.mdx +2 -2
- package/.docs/raw/reference/core/getMCPServer.mdx +2 -2
- package/.docs/raw/reference/core/getMCPServerById.mdx +2 -2
- package/.docs/raw/reference/core/getMemory.mdx +73 -0
- package/.docs/raw/reference/core/getScorer.mdx +1 -1
- package/.docs/raw/reference/core/getScorerById.mdx +1 -1
- package/.docs/raw/reference/core/getServer.mdx +2 -2
- package/.docs/raw/reference/core/getStorage.mdx +1 -1
- package/.docs/raw/reference/core/getStoredAgentById.mdx +183 -0
- package/.docs/raw/reference/core/getTelemetry.mdx +1 -1
- package/.docs/raw/reference/core/getVector.mdx +1 -1
- package/.docs/raw/reference/core/getWorkflow.mdx +1 -1
- package/.docs/raw/reference/core/listAgents.mdx +1 -1
- package/.docs/raw/reference/core/listGateways.mdx +53 -0
- package/.docs/raw/reference/core/listLogs.mdx +2 -2
- package/.docs/raw/reference/core/listLogsByRunId.mdx +2 -2
- package/.docs/raw/reference/core/listMCPServers.mdx +2 -2
- package/.docs/raw/reference/core/listMemory.mdx +70 -0
- package/.docs/raw/reference/core/listScorers.mdx +1 -1
- package/.docs/raw/reference/core/listStoredAgents.mdx +151 -0
- package/.docs/raw/reference/core/listVectors.mdx +1 -1
- package/.docs/raw/reference/core/listWorkflows.mdx +1 -1
- package/.docs/raw/reference/core/mastra-class.mdx +17 -1
- package/.docs/raw/reference/core/mastra-model-gateway.mdx +227 -0
- package/.docs/raw/reference/core/setLogger.mdx +2 -2
- package/.docs/raw/reference/core/setStorage.mdx +1 -1
- package/.docs/raw/reference/core/setTelemetry.mdx +2 -2
- package/.docs/raw/reference/deployer/cloudflare.mdx +1 -1
- package/.docs/raw/reference/deployer/deployer.mdx +1 -1
- package/.docs/raw/reference/deployer/netlify.mdx +2 -3
- package/.docs/raw/reference/deployer/vercel.mdx +1 -1
- package/.docs/raw/reference/evals/answer-relevancy.mdx +29 -99
- package/.docs/raw/reference/evals/answer-similarity.mdx +13 -259
- package/.docs/raw/reference/evals/bias.mdx +30 -88
- package/.docs/raw/reference/evals/completeness.mdx +32 -91
- package/.docs/raw/reference/evals/content-similarity.mdx +29 -89
- package/.docs/raw/reference/evals/context-precision.mdx +29 -131
- package/.docs/raw/reference/evals/context-relevance.mdx +12 -12
- package/.docs/raw/reference/evals/create-scorer.mdx +1 -1
- package/.docs/raw/reference/evals/faithfulness.mdx +29 -102
- package/.docs/raw/reference/evals/hallucination.mdx +29 -104
- package/.docs/raw/reference/evals/keyword-coverage.mdx +29 -108
- package/.docs/raw/reference/evals/mastra-scorer.mdx +1 -1
- package/.docs/raw/reference/evals/noise-sensitivity.mdx +12 -12
- package/.docs/raw/reference/evals/prompt-alignment.mdx +16 -16
- package/.docs/raw/reference/evals/run-evals.mdx +1 -1
- package/.docs/raw/reference/evals/scorer-utils.mdx +362 -0
- package/.docs/raw/reference/evals/textual-difference.mdx +28 -101
- package/.docs/raw/reference/evals/tone-consistency.mdx +26 -99
- package/.docs/raw/reference/evals/tool-call-accuracy.mdx +8 -8
- package/.docs/raw/reference/evals/toxicity.mdx +30 -93
- package/.docs/raw/reference/index.mdx +1 -0
- package/.docs/raw/reference/logging/pino-logger.mdx +2 -2
- package/.docs/raw/reference/memory/createThread.mdx +1 -1
- package/.docs/raw/reference/memory/deleteMessages.mdx +1 -1
- package/.docs/raw/reference/memory/getThreadById.mdx +1 -1
- package/.docs/raw/reference/memory/listThreadsByResourceId.mdx +1 -1
- package/.docs/raw/reference/memory/memory-class.mdx +6 -8
- package/.docs/raw/reference/memory/query.mdx +1 -1
- package/.docs/raw/reference/memory/recall.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/bridges/otel.mdx +177 -0
- package/.docs/raw/reference/observability/tracing/configuration.mdx +1 -5
- package/.docs/raw/reference/observability/tracing/exporters/arize.mdx +30 -1
- package/.docs/raw/reference/observability/tracing/exporters/braintrust.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/exporters/cloud-exporter.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/exporters/console-exporter.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/exporters/default-exporter.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/exporters/langfuse.mdx +44 -1
- package/.docs/raw/reference/observability/tracing/exporters/langsmith.mdx +18 -2
- package/.docs/raw/reference/observability/tracing/exporters/otel.mdx +34 -44
- package/.docs/raw/reference/observability/tracing/exporters/posthog.mdx +132 -0
- package/.docs/raw/reference/observability/tracing/instances.mdx +1 -5
- package/.docs/raw/reference/observability/tracing/interfaces.mdx +30 -5
- package/.docs/raw/reference/observability/tracing/processors/sensitive-data-filter.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/spans.mdx +1 -5
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +2 -2
- package/.docs/raw/reference/processors/language-detector.mdx +11 -4
- package/.docs/raw/reference/processors/message-history-processor.mdx +131 -0
- package/.docs/raw/reference/processors/moderation-processor.mdx +13 -6
- package/.docs/raw/reference/processors/pii-detector.mdx +13 -6
- package/.docs/raw/reference/processors/processor-interface.mdx +502 -0
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +11 -4
- package/.docs/raw/reference/processors/semantic-recall-processor.mdx +197 -0
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +4 -5
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +3 -3
- package/.docs/raw/reference/processors/tool-call-filter.mdx +125 -0
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +2 -2
- package/.docs/raw/reference/processors/working-memory-processor.mdx +221 -0
- package/.docs/raw/reference/rag/chunk.mdx +1 -1
- package/.docs/raw/reference/rag/database-config.mdx +1 -1
- package/.docs/raw/reference/rag/document.mdx +1 -1
- package/.docs/raw/reference/rag/embeddings.mdx +6 -6
- package/.docs/raw/reference/rag/extract-params.mdx +1 -1
- package/.docs/raw/reference/rag/graph-rag.mdx +1 -1
- package/.docs/raw/reference/rag/metadata-filters.mdx +1 -1
- package/.docs/raw/reference/rag/rerank.mdx +2 -3
- package/.docs/raw/reference/rag/rerankWithScorer.mdx +1 -2
- package/.docs/raw/reference/server/create-route.mdx +328 -0
- package/.docs/raw/reference/server/express-adapter.mdx +260 -0
- package/.docs/raw/reference/server/hono-adapter.mdx +242 -0
- package/.docs/raw/reference/server/mastra-server.mdx +345 -0
- package/.docs/raw/reference/server/routes.mdx +250 -0
- package/.docs/raw/reference/storage/cloudflare-d1.mdx +38 -1
- package/.docs/raw/reference/storage/cloudflare.mdx +1 -1
- package/.docs/raw/reference/storage/convex.mdx +164 -0
- package/.docs/raw/reference/storage/dynamodb.mdx +1 -1
- package/.docs/raw/reference/storage/lance.mdx +34 -1
- package/.docs/raw/reference/storage/libsql.mdx +38 -1
- package/.docs/raw/reference/storage/mongodb.mdx +40 -1
- package/.docs/raw/reference/storage/mssql.mdx +38 -1
- package/.docs/raw/reference/storage/postgresql.mdx +38 -1
- package/.docs/raw/reference/storage/upstash.mdx +1 -1
- package/.docs/raw/reference/streaming/ChunkType.mdx +2 -2
- package/.docs/raw/reference/streaming/agents/MastraModelOutput.mdx +1 -1
- package/.docs/raw/reference/streaming/agents/stream.mdx +68 -95
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +8 -10
- package/.docs/raw/reference/streaming/workflows/{resumeStreamVNext.mdx → resumeStream.mdx} +51 -11
- package/.docs/raw/reference/streaming/workflows/stream.mdx +84 -25
- package/.docs/raw/reference/streaming/workflows/timeTravelStream.mdx +170 -0
- package/.docs/raw/reference/templates/overview.mdx +2 -5
- package/.docs/raw/reference/tools/client.mdx +2 -3
- package/.docs/raw/reference/tools/create-tool.mdx +135 -4
- package/.docs/raw/reference/tools/document-chunker-tool.mdx +1 -1
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +7 -7
- package/.docs/raw/reference/tools/mcp-client.mdx +131 -23
- package/.docs/raw/reference/tools/mcp-server.mdx +56 -8
- package/.docs/raw/reference/tools/vector-query-tool.mdx +16 -17
- package/.docs/raw/reference/vectors/astra.mdx +1 -1
- package/.docs/raw/reference/vectors/chroma.mdx +82 -2
- package/.docs/raw/reference/vectors/convex.mdx +429 -0
- package/.docs/raw/reference/vectors/couchbase.mdx +25 -18
- package/.docs/raw/reference/vectors/duckdb.mdx +462 -0
- package/.docs/raw/reference/vectors/elasticsearch.mdx +310 -0
- package/.docs/raw/reference/vectors/lance.mdx +39 -23
- package/.docs/raw/reference/vectors/libsql.mdx +36 -3
- package/.docs/raw/reference/vectors/mongodb.mdx +36 -3
- package/.docs/raw/reference/vectors/opensearch.mdx +38 -17
- package/.docs/raw/reference/vectors/pg.mdx +44 -37
- package/.docs/raw/reference/vectors/pinecone.mdx +70 -3
- package/.docs/raw/reference/vectors/qdrant.mdx +37 -2
- package/.docs/raw/reference/vectors/s3vectors.mdx +1 -1
- package/.docs/raw/reference/vectors/turbopuffer.mdx +75 -1
- package/.docs/raw/reference/vectors/upstash.mdx +1 -1
- package/.docs/raw/reference/vectors/vectorize.mdx +1 -1
- package/.docs/raw/reference/voice/azure.mdx +96 -81
- package/.docs/raw/reference/voice/cloudflare.mdx +1 -1
- package/.docs/raw/reference/voice/composite-voice.mdx +72 -29
- package/.docs/raw/reference/voice/deepgram.mdx +1 -1
- package/.docs/raw/reference/voice/elevenlabs.mdx +1 -1
- package/.docs/raw/reference/voice/google-gemini-live.mdx +1 -1
- package/.docs/raw/reference/voice/google.mdx +160 -21
- package/.docs/raw/reference/voice/mastra-voice.mdx +1 -1
- package/.docs/raw/reference/voice/murf.mdx +1 -1
- package/.docs/raw/reference/voice/openai-realtime.mdx +3 -3
- package/.docs/raw/reference/voice/openai.mdx +1 -1
- package/.docs/raw/reference/voice/playai.mdx +1 -1
- package/.docs/raw/reference/voice/sarvam.mdx +1 -1
- package/.docs/raw/reference/voice/speechify.mdx +1 -1
- package/.docs/raw/reference/voice/voice.addInstructions.mdx +3 -4
- package/.docs/raw/reference/voice/voice.addTools.mdx +2 -2
- package/.docs/raw/reference/voice/voice.answer.mdx +2 -2
- package/.docs/raw/reference/voice/voice.close.mdx +2 -2
- package/.docs/raw/reference/voice/voice.connect.mdx +2 -2
- package/.docs/raw/reference/voice/voice.events.mdx +1 -1
- package/.docs/raw/reference/voice/voice.getSpeakers.mdx +1 -1
- package/.docs/raw/reference/voice/voice.listen.mdx +87 -53
- package/.docs/raw/reference/voice/voice.off.mdx +2 -2
- package/.docs/raw/reference/voice/voice.on.mdx +2 -2
- package/.docs/raw/reference/voice/voice.send.mdx +2 -2
- package/.docs/raw/reference/voice/voice.speak.mdx +76 -41
- package/.docs/raw/reference/voice/voice.updateConfig.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/cancel.mdx +1 -1
- package/.docs/raw/reference/workflows/run-methods/restart.mdx +142 -0
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +45 -1
- package/.docs/raw/reference/workflows/run-methods/start.mdx +48 -4
- package/.docs/raw/reference/workflows/run-methods/timeTravel.mdx +310 -0
- package/.docs/raw/reference/workflows/run.mdx +28 -6
- package/.docs/raw/reference/workflows/step.mdx +65 -1
- package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow.mdx +21 -2
- package/.docs/raw/server-db/custom-adapters.mdx +386 -0
- package/.docs/raw/server-db/custom-api-routes.mdx +6 -6
- package/.docs/raw/server-db/mastra-client.mdx +3 -4
- package/.docs/raw/server-db/{production-server.mdx → mastra-server.mdx} +16 -8
- package/.docs/raw/server-db/middleware.mdx +31 -31
- package/.docs/raw/server-db/request-context.mdx +3 -4
- package/.docs/raw/server-db/server-adapters.mdx +312 -0
- package/.docs/raw/server-db/storage.mdx +12 -1
- package/.docs/raw/streaming/events.mdx +1 -1
- package/.docs/raw/streaming/overview.mdx +27 -16
- package/.docs/raw/streaming/tool-streaming.mdx +58 -19
- package/.docs/raw/streaming/workflow-streaming.mdx +6 -12
- package/.docs/raw/tools-mcp/advanced-usage.mdx +2 -3
- package/.docs/raw/tools-mcp/mcp-overview.mdx +4 -6
- package/.docs/raw/tools-mcp/overview.mdx +1 -1
- package/.docs/raw/voice/overview.mdx +88 -41
- package/.docs/raw/voice/speech-to-speech.mdx +5 -5
- package/.docs/raw/voice/speech-to-text.mdx +2 -3
- package/.docs/raw/voice/text-to-speech.mdx +2 -3
- package/.docs/raw/workflows/agents-and-tools.mdx +43 -5
- package/.docs/raw/workflows/control-flow.mdx +186 -1
- package/.docs/raw/workflows/error-handling.mdx +5 -4
- package/.docs/raw/workflows/human-in-the-loop.mdx +160 -213
- package/.docs/raw/workflows/inngest-workflow.mdx +1 -1
- package/.docs/raw/workflows/input-data-mapping.mdx +1 -1
- package/.docs/raw/workflows/overview.mdx +67 -47
- package/.docs/raw/workflows/snapshots.mdx +5 -3
- package/.docs/raw/workflows/suspend-and-resume.mdx +121 -204
- package/.docs/raw/workflows/time-travel.mdx +313 -0
- package/.docs/raw/workflows/workflow-state.mdx +190 -0
- package/CHANGELOG.md +81 -0
- package/dist/{chunk-5NJC7NRO.js → chunk-4CM2BQNP.js} +24 -4
- package/dist/prepare-docs/package-changes.d.ts.map +1 -1
- package/dist/prepare-docs/prepare.js +1 -1
- package/dist/stdio.js +17 -19
- package/package.json +11 -15
- package/.docs/raw/deployment/serverless-platforms/index.mdx +0 -58
- package/.docs/raw/frameworks/agentic-uis/ai-sdk.mdx +0 -688
- package/.docs/raw/frameworks/agentic-uis/cedar-os.mdx +0 -123
- package/.docs/raw/frameworks/agentic-uis/copilotkit.mdx +0 -382
- package/.docs/raw/frameworks/agentic-uis/openrouter.mdx +0 -179
- package/.docs/raw/frameworks/web-frameworks/next-js.mdx +0 -379
- package/.docs/raw/getting-started/templates.mdx +0 -73
- package/.docs/raw/mastra-cloud/observability.mdx +0 -51
- package/.docs/raw/reference/streaming/workflows/observeStreamVNext.mdx +0 -47
- package/.docs/raw/reference/streaming/workflows/streamVNext.mdx +0 -153
|
@@ -1,688 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Using Vercel AI SDK | Frameworks | Mastra Docs"
|
|
3
|
-
description: "Learn how Mastra leverages the Vercel AI SDK library and how you can leverage it further with Mastra"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
import Tabs from "@theme/Tabs";
|
|
7
|
-
import TabItem from "@theme/TabItem";
|
|
8
|
-
|
|
9
|
-
# Using Vercel AI SDK
|
|
10
|
-
|
|
11
|
-
Mastra integrates with [Vercel's AI SDK](https://sdk.vercel.ai) to support model routing, React Hooks, and data streaming methods.
|
|
12
|
-
|
|
13
|
-
## Model Routing
|
|
14
|
-
|
|
15
|
-
When creating agents in Mastra, you can specify any AI SDK-supported model.
|
|
16
|
-
|
|
17
|
-
```typescript {6} title="agents/weather-agent.ts" copy
|
|
18
|
-
import { Agent } from "@mastra/core/agent";
|
|
19
|
-
|
|
20
|
-
export const weatherAgent = new Agent({
|
|
21
|
-
id: "weather-agent",
|
|
22
|
-
name: "Weather Agent",
|
|
23
|
-
instructions: "Instructions for the agent...",
|
|
24
|
-
model: "openai/gpt-4-turbo",
|
|
25
|
-
});
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
> See [Using AI SDK with Mastra](/models/v1#use-ai-sdk-with-mastra) for more information.
|
|
29
|
-
|
|
30
|
-
## Streaming
|
|
31
|
-
|
|
32
|
-
The recommended way of using Mastra and AI SDK together is 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. Including chat, workflow, and network route handlers, along with utilities and exported types for UI integrations.
|
|
33
|
-
|
|
34
|
-
<Tabs>
|
|
35
|
-
<TabItem value="npm" label="npm">
|
|
36
|
-
```bash copy
|
|
37
|
-
npm install @mastra/ai-sdk@beta
|
|
38
|
-
```
|
|
39
|
-
</TabItem>
|
|
40
|
-
<TabItem value="pnpm" label="pnpm">
|
|
41
|
-
```bash copy
|
|
42
|
-
pnpm add @mastra/ai-sdk@beta
|
|
43
|
-
```
|
|
44
|
-
</TabItem>
|
|
45
|
-
<TabItem value="yarn" label="yarn">
|
|
46
|
-
```bash copy
|
|
47
|
-
yarn add @mastra/ai-sdk@beta
|
|
48
|
-
```
|
|
49
|
-
</TabItem>
|
|
50
|
-
<TabItem value="bun" label="bun">
|
|
51
|
-
```bash copy
|
|
52
|
-
bun add @mastra/ai-sdk@beta
|
|
53
|
-
```
|
|
54
|
-
</TabItem>
|
|
55
|
-
</Tabs>
|
|
56
|
-
|
|
57
|
-
### `chatRoute()`
|
|
58
|
-
|
|
59
|
-
When setting up a [custom API route](/docs/v1/server-db/custom-api-routes), use the `chatRoute()` utility to create a route handler that automatically formats the agent stream into an AI SDK-compatible format.
|
|
60
|
-
|
|
61
|
-
```typescript title="src/mastra/index.ts" copy
|
|
62
|
-
import { Mastra } from "@mastra/core";
|
|
63
|
-
import { chatRoute } from "@mastra/ai-sdk";
|
|
64
|
-
|
|
65
|
-
export const mastra = new Mastra({
|
|
66
|
-
server: {
|
|
67
|
-
apiRoutes: [
|
|
68
|
-
chatRoute({
|
|
69
|
-
path: "/chat",
|
|
70
|
-
agent: "weatherAgent",
|
|
71
|
-
}),
|
|
72
|
-
],
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
Once you have your `/chat` API route set up, you can call the `useChat()` hook in your application.
|
|
78
|
-
|
|
79
|
-
```typescript
|
|
80
|
-
const { error, status, sendMessage, messages, regenerate, stop } = useChat({
|
|
81
|
-
transport: new DefaultChatTransport({
|
|
82
|
-
api: "http://localhost:4111/chat",
|
|
83
|
-
}),
|
|
84
|
-
});
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
Pass extra agent stream execution options:
|
|
88
|
-
|
|
89
|
-
```typescript
|
|
90
|
-
const { error, status, sendMessage, messages, regenerate, stop } = useChat({
|
|
91
|
-
transport: new DefaultChatTransport({
|
|
92
|
-
api: "http://localhost:4111/chat",
|
|
93
|
-
prepareSendMessagesRequest({ messages }) {
|
|
94
|
-
return {
|
|
95
|
-
body: {
|
|
96
|
-
messages,
|
|
97
|
-
// Pass memory config
|
|
98
|
-
memory: {
|
|
99
|
-
thread: "user-1",
|
|
100
|
-
resource: "user-1",
|
|
101
|
-
},
|
|
102
|
-
},
|
|
103
|
-
};
|
|
104
|
-
},
|
|
105
|
-
}),
|
|
106
|
-
});
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### `workflowRoute()`
|
|
110
|
-
|
|
111
|
-
Use the `workflowRoute()` utility to create a route handler that automatically formats the workflow stream into an AI SDK-compatible format.
|
|
112
|
-
|
|
113
|
-
```typescript title="src/mastra/index.ts" copy
|
|
114
|
-
import { Mastra } from "@mastra/core";
|
|
115
|
-
import { workflowRoute } from "@mastra/ai-sdk";
|
|
116
|
-
|
|
117
|
-
export const mastra = new Mastra({
|
|
118
|
-
server: {
|
|
119
|
-
apiRoutes: [
|
|
120
|
-
workflowRoute({
|
|
121
|
-
path: "/workflow",
|
|
122
|
-
agent: "weatherAgent",
|
|
123
|
-
}),
|
|
124
|
-
],
|
|
125
|
-
},
|
|
126
|
-
});
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
Once you have your `/workflow` API route set up, you can call the `useChat()` hook in your application.
|
|
130
|
-
|
|
131
|
-
```typescript
|
|
132
|
-
const { error, status, sendMessage, messages, regenerate, stop } = useChat({
|
|
133
|
-
transport: new DefaultChatTransport({
|
|
134
|
-
api: "http://localhost:4111/workflow",
|
|
135
|
-
prepareSendMessagesRequest({ messages }) {
|
|
136
|
-
return {
|
|
137
|
-
body: {
|
|
138
|
-
inputData: {
|
|
139
|
-
city: messages[messages.length - 1].parts[0].text,
|
|
140
|
-
},
|
|
141
|
-
},
|
|
142
|
-
};
|
|
143
|
-
},
|
|
144
|
-
}),
|
|
145
|
-
});
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### `networkRoute()`
|
|
149
|
-
|
|
150
|
-
Use the `networkRoute()` utility to create a route handler that automatically formats the agent network stream into an AI SDK-compatible format.
|
|
151
|
-
|
|
152
|
-
```typescript title="src/mastra/index.ts" copy
|
|
153
|
-
import { Mastra } from "@mastra/core";
|
|
154
|
-
import { networkRoute } from "@mastra/ai-sdk";
|
|
155
|
-
|
|
156
|
-
export const mastra = new Mastra({
|
|
157
|
-
server: {
|
|
158
|
-
apiRoutes: [
|
|
159
|
-
networkRoute({
|
|
160
|
-
path: "/network",
|
|
161
|
-
agent: "weatherAgent",
|
|
162
|
-
}),
|
|
163
|
-
],
|
|
164
|
-
},
|
|
165
|
-
});
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
Once you have your `/network` API route set up, you can call the `useChat()` hook in your application.
|
|
169
|
-
|
|
170
|
-
```typescript
|
|
171
|
-
const { error, status, sendMessage, messages, regenerate, stop } = useChat({
|
|
172
|
-
transport: new DefaultChatTransport({
|
|
173
|
-
api: "http://localhost:4111/network",
|
|
174
|
-
}),
|
|
175
|
-
});
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
### Custom UI
|
|
179
|
-
|
|
180
|
-
The `@mastra/ai-sdk` package transforms and emits Mastra streams (e.g workflow, network streams) into AI SDK-compatible [uiMessages DataParts](https://ai-sdk.dev/docs/reference/ai-sdk-core/ui-message#datauipart) format.
|
|
181
|
-
|
|
182
|
-
- **Top-level parts**: These are streamed via direct workflow and network stream transformations (e.g in `workflowRoute()` and `networkRoute()`)
|
|
183
|
-
- `data-workflow`: Aggregates a workflow run with step inputs/outputs and final usage.
|
|
184
|
-
- `data-network`: Aggregates a routing/network run with ordered steps (agent/workflow/tool executions) and outputs.
|
|
185
|
-
|
|
186
|
-
- **Nested parts**: These are streamed via nested and merged streams from within a tool's `execute()` method.
|
|
187
|
-
- `data-tool-workflow`: Nested workflow emitted from within a tool stream.
|
|
188
|
-
- `data-tool-network`: Nested network emitted from within an tool stream.
|
|
189
|
-
- `data-tool-agent`: Nested agent emitted from within an tool stream.
|
|
190
|
-
|
|
191
|
-
Here's an example: For a [nested agent stream within a tool](/docs/v1/streaming/tool-streaming#tool-using-an-agent), `data-tool-agent` UI message parts will be emitted and can be leveraged on the client as documented below:
|
|
192
|
-
|
|
193
|
-
```typescript title="app/page.tsx" copy
|
|
194
|
-
"use client";
|
|
195
|
-
|
|
196
|
-
import { useChat } from "@ai-sdk/react";
|
|
197
|
-
import { AgentTool } from '../ui/agent-tool';
|
|
198
|
-
import { DefaultChatTransport } from 'ai';
|
|
199
|
-
import type { AgentDataPart } from "@mastra/ai-sdk";
|
|
200
|
-
|
|
201
|
-
export default function Page() {
|
|
202
|
-
const { messages } = useChat({
|
|
203
|
-
transport: new DefaultChatTransport({
|
|
204
|
-
api: 'http://localhost:4111/chat',
|
|
205
|
-
}),
|
|
206
|
-
});
|
|
207
|
-
|
|
208
|
-
return (
|
|
209
|
-
<div>
|
|
210
|
-
{messages.map((message) => (
|
|
211
|
-
<div key={message.id}>
|
|
212
|
-
{message.parts.map((part, i) => {
|
|
213
|
-
switch (part.type) {
|
|
214
|
-
case 'data-tool-agent':
|
|
215
|
-
return (
|
|
216
|
-
<AgentTool {...part.data as AgentDataPart} key={`${message.id}-${i}`} />
|
|
217
|
-
);
|
|
218
|
-
default:
|
|
219
|
-
return null;
|
|
220
|
-
}
|
|
221
|
-
})}
|
|
222
|
-
</div>
|
|
223
|
-
))}
|
|
224
|
-
</div>
|
|
225
|
-
);
|
|
226
|
-
}
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
```typescript title="ui/agent-tool.ts" copy
|
|
230
|
-
import { Tool, ToolContent, ToolHeader, ToolOutput } from "../ai-elements/tool";
|
|
231
|
-
import type { AgentDataPart } from "@mastra/ai-sdk";
|
|
232
|
-
|
|
233
|
-
export const AgentTool = ({ id, text, status }: AgentDataPart) => {
|
|
234
|
-
return (
|
|
235
|
-
<Tool>
|
|
236
|
-
<ToolHeader
|
|
237
|
-
type={`${id}`}
|
|
238
|
-
state={status === 'finished' ? 'output-available' : 'input-available'}
|
|
239
|
-
/>
|
|
240
|
-
<ToolContent>
|
|
241
|
-
<ToolOutput output={text} />
|
|
242
|
-
</ToolContent>
|
|
243
|
-
</Tool>
|
|
244
|
-
);
|
|
245
|
-
};
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
### Custom Tool streaming
|
|
249
|
-
|
|
250
|
-
To stream custom data parts from within your tool execution function, use the
|
|
251
|
-
`writer.custom()` method.
|
|
252
|
-
|
|
253
|
-
```typescript {5,8,15} showLineNumbers copy
|
|
254
|
-
import { createTool } from "@mastra/core/tools";
|
|
255
|
-
|
|
256
|
-
export const testTool = createTool({
|
|
257
|
-
// ...
|
|
258
|
-
execute: async ({ context, writer }) => {
|
|
259
|
-
const { value } = context;
|
|
260
|
-
|
|
261
|
-
await writer?.custom({
|
|
262
|
-
type: "data-tool-progress",
|
|
263
|
-
status: "pending"
|
|
264
|
-
});
|
|
265
|
-
|
|
266
|
-
const response = await fetch(...);
|
|
267
|
-
|
|
268
|
-
await writer?.custom({
|
|
269
|
-
type: "data-tool-progress",
|
|
270
|
-
status: "success"
|
|
271
|
-
});
|
|
272
|
-
|
|
273
|
-
return {
|
|
274
|
-
value: ""
|
|
275
|
-
};
|
|
276
|
-
}
|
|
277
|
-
});
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
For more information about tool streaming see [Tool streaming documentation](/docs/v1/streaming/tool-streaming)
|
|
281
|
-
|
|
282
|
-
### Stream Transformations
|
|
283
|
-
|
|
284
|
-
To manually transform Mastra's streams to AI SDK-compatible format, use the `toAISdkFormat()` utility.
|
|
285
|
-
|
|
286
|
-
```typescript title="app/api/chat/route.ts" copy {3,13}
|
|
287
|
-
import { mastra } from "../../mastra";
|
|
288
|
-
import { createUIMessageStream, createUIMessageStreamResponse } from "ai";
|
|
289
|
-
import { toAISdkFormat } from "@mastra/ai-sdk";
|
|
290
|
-
|
|
291
|
-
export async function POST(req: Request) {
|
|
292
|
-
const { messages } = await req.json();
|
|
293
|
-
const myAgent = mastra.getAgent("weatherAgent");
|
|
294
|
-
const stream = await myAgent.stream(messages);
|
|
295
|
-
|
|
296
|
-
// Transform stream into AI SDK format and create UI messages stream
|
|
297
|
-
const uiMessageStream = createUIMessageStream({
|
|
298
|
-
execute: async ({ writer }) => {
|
|
299
|
-
for await (const part of toAISdkFormat(stream, { from: "agent" })!) {
|
|
300
|
-
writer.write(part);
|
|
301
|
-
}
|
|
302
|
-
},
|
|
303
|
-
});
|
|
304
|
-
|
|
305
|
-
// Create a Response that streams the UI message stream to the client
|
|
306
|
-
return createUIMessageStreamResponse({
|
|
307
|
-
stream: uiMessageStream,
|
|
308
|
-
});
|
|
309
|
-
}
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
### Client Side Stream Transformations
|
|
313
|
-
|
|
314
|
-
If you have a client-side `response` from `agent.stream(...)` and want AI SDK-formatted parts without custom SSE parsing, wrap `response.processDataStream` into a `ReadableStream<ChunkType>` and pipe it through `toAISdkFormat`:
|
|
315
|
-
|
|
316
|
-
```typescript title="client-stream-to-ai-sdk.ts" copy
|
|
317
|
-
import { createUIMessageStream } from "ai";
|
|
318
|
-
import { toAISdkFormat } from "@mastra/ai-sdk";
|
|
319
|
-
import type { ChunkType, MastraModelOutput } from "@mastra/core/stream";
|
|
320
|
-
|
|
321
|
-
// Client SDK agent stream
|
|
322
|
-
const response = await agent.stream({
|
|
323
|
-
messages: "What is the weather in Tokyo",
|
|
324
|
-
});
|
|
325
|
-
|
|
326
|
-
const chunkStream: ReadableStream<ChunkType> = new ReadableStream<ChunkType>({
|
|
327
|
-
start(controller) {
|
|
328
|
-
response
|
|
329
|
-
.processDataStream({
|
|
330
|
-
onChunk: async (chunk) => {
|
|
331
|
-
controller.enqueue(chunk as ChunkType);
|
|
332
|
-
},
|
|
333
|
-
})
|
|
334
|
-
.finally(() => controller.close());
|
|
335
|
-
},
|
|
336
|
-
});
|
|
337
|
-
|
|
338
|
-
const uiMessageStream = createUIMessageStream({
|
|
339
|
-
execute: async ({ writer }) => {
|
|
340
|
-
for await (const part of toAISdkFormat(
|
|
341
|
-
chunkStream as unknown as MastraModelOutput,
|
|
342
|
-
{ from: "agent" },
|
|
343
|
-
)) {
|
|
344
|
-
writer.write(part);
|
|
345
|
-
}
|
|
346
|
-
},
|
|
347
|
-
});
|
|
348
|
-
|
|
349
|
-
for await (const part of uiMessageStream) {
|
|
350
|
-
console.log(part);
|
|
351
|
-
}
|
|
352
|
-
```
|
|
353
|
-
|
|
354
|
-
## UI Hooks
|
|
355
|
-
|
|
356
|
-
Mastra supports AI SDK UI hooks for connecting frontend components directly to agents using HTTP streams.
|
|
357
|
-
|
|
358
|
-
Install the required AI SDK React package:
|
|
359
|
-
|
|
360
|
-
<Tabs>
|
|
361
|
-
<TabItem value="npm" label="npm">
|
|
362
|
-
```bash copy
|
|
363
|
-
npm install @ai-sdk/react
|
|
364
|
-
```
|
|
365
|
-
</TabItem>
|
|
366
|
-
<TabItem value="pnpm" label="pnpm">
|
|
367
|
-
```bash copy
|
|
368
|
-
pnpm add @ai-sdk/react
|
|
369
|
-
```
|
|
370
|
-
</TabItem>
|
|
371
|
-
<TabItem value="yarn" label="yarn">
|
|
372
|
-
```bash copy
|
|
373
|
-
yarn add @ai-sdk/react
|
|
374
|
-
```
|
|
375
|
-
</TabItem>
|
|
376
|
-
<TabItem value="bun" label="bun">
|
|
377
|
-
```bash copy
|
|
378
|
-
bun add @ai-sdk/react
|
|
379
|
-
```
|
|
380
|
-
</TabItem>
|
|
381
|
-
</Tabs>
|
|
382
|
-
|
|
383
|
-
### Using `useChat()`
|
|
384
|
-
|
|
385
|
-
The `useChat()` hook handles real-time chat interactions between your frontend and a Mastra agent, enabling you to send prompts and receive streaming responses over HTTP.
|
|
386
|
-
|
|
387
|
-
```typescript {8-12} title="app/test/chat.tsx" copy
|
|
388
|
-
"use client";
|
|
389
|
-
|
|
390
|
-
import { useChat } from "@ai-sdk/react";
|
|
391
|
-
import { useState } from "react";
|
|
392
|
-
import { DefaultChatTransport } from 'ai';
|
|
393
|
-
|
|
394
|
-
export function Chat() {
|
|
395
|
-
const [inputValue, setInputValue] = useState('')
|
|
396
|
-
const { messages, sendMessage} = useChat({
|
|
397
|
-
transport: new DefaultChatTransport({
|
|
398
|
-
api: 'http://localhost:4111/chat',
|
|
399
|
-
}),
|
|
400
|
-
});
|
|
401
|
-
|
|
402
|
-
const handleFormSubmit = (e: React.FormEvent) => {
|
|
403
|
-
e.preventDefault();
|
|
404
|
-
sendMessage({ text: inputValue });
|
|
405
|
-
};
|
|
406
|
-
|
|
407
|
-
return (
|
|
408
|
-
<div>
|
|
409
|
-
<pre>{JSON.stringify(messages, null, 2)}</pre>
|
|
410
|
-
<form onSubmit={handleFormSubmit}>
|
|
411
|
-
<input value={inputValue} onChange={e=>setInputValue(e.target.value)} placeholder="Name of city" />
|
|
412
|
-
</form>
|
|
413
|
-
</div>
|
|
414
|
-
);
|
|
415
|
-
}
|
|
416
|
-
```
|
|
417
|
-
|
|
418
|
-
Requests sent using the `useChat()` hook are handled by a standard server route. This example shows how to define a POST route using a Next.js Route Handler.
|
|
419
|
-
|
|
420
|
-
```typescript title="app/api/chat/route.ts" copy
|
|
421
|
-
import { mastra } from "../../mastra";
|
|
422
|
-
|
|
423
|
-
export async function POST(req: Request) {
|
|
424
|
-
const { messages } = await req.json();
|
|
425
|
-
const myAgent = mastra.getAgent("weatherAgent");
|
|
426
|
-
const stream = await myAgent.stream(messages, { format: "aisdk" });
|
|
427
|
-
|
|
428
|
-
return stream.toUIMessageStreamResponse();
|
|
429
|
-
}
|
|
430
|
-
```
|
|
431
|
-
|
|
432
|
-
> When using `useChat()` with agent memory, refer to the [Agent Memory section](/docs/v1/agents/agent-memory) for key implementation details.
|
|
433
|
-
|
|
434
|
-
### Using `useCompletion()`
|
|
435
|
-
|
|
436
|
-
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.
|
|
437
|
-
|
|
438
|
-
```typescript {6-8} title="app/test/completion.tsx" copy
|
|
439
|
-
"use client";
|
|
440
|
-
|
|
441
|
-
import { useCompletion } from "@ai-sdk/react";
|
|
442
|
-
|
|
443
|
-
export function Completion() {
|
|
444
|
-
const { completion, input, handleInputChange, handleSubmit } = useCompletion({
|
|
445
|
-
api: "api/completion"
|
|
446
|
-
});
|
|
447
|
-
|
|
448
|
-
return (
|
|
449
|
-
<div>
|
|
450
|
-
<form onSubmit={handleSubmit}>
|
|
451
|
-
<input value={input} onChange={handleInputChange} placeholder="Name of city" />
|
|
452
|
-
</form>
|
|
453
|
-
<p>Completion result: {completion}</p>
|
|
454
|
-
</div>
|
|
455
|
-
);
|
|
456
|
-
}
|
|
457
|
-
```
|
|
458
|
-
|
|
459
|
-
Requests sent using the `useCompletion()` hook are handled by a standard server route. This example shows how to define a POST route using a Next.js Route Handler.
|
|
460
|
-
|
|
461
|
-
```typescript title="app/api/completion/route.ts" copy
|
|
462
|
-
import { mastra } from "../../../mastra";
|
|
463
|
-
|
|
464
|
-
export async function POST(req: Request) {
|
|
465
|
-
const { prompt } = await req.json();
|
|
466
|
-
const myAgent = mastra.getAgent("weatherAgent");
|
|
467
|
-
const stream = await myAgent.stream([{ role: "user", content: prompt }], {
|
|
468
|
-
format: "aisdk",
|
|
469
|
-
});
|
|
470
|
-
|
|
471
|
-
return stream.toUIMessageStreamResponse();
|
|
472
|
-
}
|
|
473
|
-
```
|
|
474
|
-
|
|
475
|
-
### Passing additional data
|
|
476
|
-
|
|
477
|
-
`sendMessage()` allows you to pass additional data from the frontend to Mastra. This data can then be used on the server as `RequestContext`.
|
|
478
|
-
|
|
479
|
-
```typescript {16-26} title="app/test/chat-extra.tsx" copy
|
|
480
|
-
"use client";
|
|
481
|
-
|
|
482
|
-
import { useChat } from "@ai-sdk/react";
|
|
483
|
-
import { useState } from "react";
|
|
484
|
-
import { DefaultChatTransport } from 'ai';
|
|
485
|
-
|
|
486
|
-
export function ChatExtra() {
|
|
487
|
-
const [inputValue, setInputValue] = useState('')
|
|
488
|
-
const { messages, sendMessage } = useChat({
|
|
489
|
-
transport: new DefaultChatTransport({
|
|
490
|
-
api: 'http://localhost:4111/chat',
|
|
491
|
-
}),
|
|
492
|
-
});
|
|
493
|
-
|
|
494
|
-
const handleFormSubmit = (e: React.FormEvent) => {
|
|
495
|
-
e.preventDefault();
|
|
496
|
-
sendMessage({ text: inputValue }, {
|
|
497
|
-
body: {
|
|
498
|
-
data: {
|
|
499
|
-
userId: "user123",
|
|
500
|
-
preferences: {
|
|
501
|
-
language: "en",
|
|
502
|
-
temperature: "celsius"
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
});
|
|
507
|
-
};
|
|
508
|
-
|
|
509
|
-
return (
|
|
510
|
-
<div>
|
|
511
|
-
<pre>{JSON.stringify(messages, null, 2)}</pre>
|
|
512
|
-
<form onSubmit={handleFormSubmit}>
|
|
513
|
-
<input value={inputValue} onChange={e=>setInputValue(e.target.value)} placeholder="Name of city" />
|
|
514
|
-
</form>
|
|
515
|
-
</div>
|
|
516
|
-
);
|
|
517
|
-
}
|
|
518
|
-
```
|
|
519
|
-
|
|
520
|
-
```typescript {8,12} title="app/api/chat-extra/route.ts" copy
|
|
521
|
-
import { mastra } from "../../../mastra";
|
|
522
|
-
import { RequestContext } from "@mastra/core/request-context";
|
|
523
|
-
|
|
524
|
-
export async function POST(req: Request) {
|
|
525
|
-
const { messages, data } = await req.json();
|
|
526
|
-
const myAgent = mastra.getAgent("weatherAgent");
|
|
527
|
-
|
|
528
|
-
const requestContext = new RequestContext();
|
|
529
|
-
|
|
530
|
-
if (data) {
|
|
531
|
-
for (const [key, value] of Object.entries(data)) {
|
|
532
|
-
requestContext.set(key, value);
|
|
533
|
-
}
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
const stream = await myAgent.stream(messages, {
|
|
537
|
-
requestContext,
|
|
538
|
-
format: "aisdk",
|
|
539
|
-
});
|
|
540
|
-
return stream.toUIMessageStreamResponse();
|
|
541
|
-
}
|
|
542
|
-
```
|
|
543
|
-
|
|
544
|
-
### Handling `requestContext` with `server.middleware`
|
|
545
|
-
|
|
546
|
-
You can also populate the `RequestContext` by reading custom data in a server middleware:
|
|
547
|
-
|
|
548
|
-
```typescript {8,17} title="mastra/index.ts" copy
|
|
549
|
-
import { Mastra } from "@mastra/core";
|
|
550
|
-
|
|
551
|
-
export const mastra = new Mastra({
|
|
552
|
-
agents: { weatherAgent },
|
|
553
|
-
server: {
|
|
554
|
-
middleware: [
|
|
555
|
-
async (c, next) => {
|
|
556
|
-
const requestContext = c.get("requestContext");
|
|
557
|
-
|
|
558
|
-
if (c.req.method === "POST") {
|
|
559
|
-
try {
|
|
560
|
-
const clonedReq = c.req.raw.clone();
|
|
561
|
-
const body = await clonedReq.json();
|
|
562
|
-
|
|
563
|
-
if (body?.data) {
|
|
564
|
-
for (const [key, value] of Object.entries(body.data)) {
|
|
565
|
-
requestContext.set(key, value);
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
} catch {}
|
|
569
|
-
}
|
|
570
|
-
await next();
|
|
571
|
-
},
|
|
572
|
-
],
|
|
573
|
-
},
|
|
574
|
-
});
|
|
575
|
-
```
|
|
576
|
-
|
|
577
|
-
> You can then access this data in your tools via the `requestContext` parameter. See the [Request Context documentation](/docs/v1/server-db/request-context) for more details.
|
|
578
|
-
|
|
579
|
-
## Migrating from AI SDK v4 to v5
|
|
580
|
-
|
|
581
|
-
Follow the official [AI SDK v5 Migration Guide](https://v5.ai-sdk.dev/docs/migration-guides/migration-guide-5-0) for all AI SDK core breaking changes, package updates, and API changes.
|
|
582
|
-
|
|
583
|
-
This guide covers only the Mastra-specific aspects of the migration.
|
|
584
|
-
|
|
585
|
-
- **Data compatibility**: New data stored in v5 format will no longer work if you downgrade from v5 to v4
|
|
586
|
-
- **Backup recommendation**: Keep DB backups from before you upgrade to v5
|
|
587
|
-
|
|
588
|
-
### Memory and Storage
|
|
589
|
-
|
|
590
|
-
Mastra automatically handles AI SDK v4 data using its internal `MessageList` class, which manages format conversion—including v4 to v5. No database migrations are required; your existing messages are translated on the fly and continue working after you upgrade.
|
|
591
|
-
|
|
592
|
-
### Message Format Conversion
|
|
593
|
-
|
|
594
|
-
For cases where you need to manually convert messages between AI SDK and Mastra formats, use the `convertMessages()` utility:
|
|
595
|
-
|
|
596
|
-
```typescript
|
|
597
|
-
import { convertMessages } from "@mastra/core/agent";
|
|
598
|
-
|
|
599
|
-
// Convert AI SDK v4 messages to v5
|
|
600
|
-
const aiv5Messages = convertMessages(aiv4Messages).to("AIV5.UI");
|
|
601
|
-
|
|
602
|
-
// Convert Mastra messages to AI SDK v5
|
|
603
|
-
const aiv5Messages = convertMessages(mastraMessages).to("AIV5.Core");
|
|
604
|
-
|
|
605
|
-
// Supported output formats:
|
|
606
|
-
// 'Mastra.V2', 'AIV4.UI', 'AIV5.UI', 'AIV5.Core', 'AIV5.Model'
|
|
607
|
-
```
|
|
608
|
-
|
|
609
|
-
This utility is helpful when you want to fetch messages directly from your storage DB and convert them for use in AI SDK.
|
|
610
|
-
|
|
611
|
-
### Type Inference for Tools
|
|
612
|
-
|
|
613
|
-
When using tools with TypeScript in AI SDK v5, Mastra provides type inference helpers to ensure type safety for your tool inputs and outputs.
|
|
614
|
-
|
|
615
|
-
#### `InferUITool`
|
|
616
|
-
|
|
617
|
-
The `InferUITool` type helper infers the input and output types of a single Mastra tool:
|
|
618
|
-
|
|
619
|
-
```typescript title="app/types.ts" copy
|
|
620
|
-
import { InferUITool, createTool } from "@mastra/core/tools";
|
|
621
|
-
import { z } from "zod";
|
|
622
|
-
|
|
623
|
-
const weatherTool = createTool({
|
|
624
|
-
id: "get-weather",
|
|
625
|
-
description: "Get the current weather",
|
|
626
|
-
inputSchema: z.object({
|
|
627
|
-
location: z.string().describe("The city and state"),
|
|
628
|
-
}),
|
|
629
|
-
outputSchema: z.object({
|
|
630
|
-
temperature: z.number(),
|
|
631
|
-
conditions: z.string(),
|
|
632
|
-
}),
|
|
633
|
-
execute: async (inputData) => {
|
|
634
|
-
return {
|
|
635
|
-
temperature: 72,
|
|
636
|
-
conditions: "sunny",
|
|
637
|
-
};
|
|
638
|
-
},
|
|
639
|
-
});
|
|
640
|
-
|
|
641
|
-
// Infer the types from the tool
|
|
642
|
-
type WeatherUITool = InferUITool<typeof weatherTool>;
|
|
643
|
-
// This creates:
|
|
644
|
-
// {
|
|
645
|
-
// input: { location: string };
|
|
646
|
-
// output: { temperature: number; conditions: string };
|
|
647
|
-
// }
|
|
648
|
-
```
|
|
649
|
-
|
|
650
|
-
#### `InferUITools`
|
|
651
|
-
|
|
652
|
-
The `InferUITools` type helper infers the input and output types of multiple tools:
|
|
653
|
-
|
|
654
|
-
```typescript title="app/mastra/tools.ts" copy
|
|
655
|
-
import { InferUITools, createTool } from "@mastra/core/tools";
|
|
656
|
-
import { z } from "zod";
|
|
657
|
-
|
|
658
|
-
// Using weatherTool from the previous example
|
|
659
|
-
const tools = {
|
|
660
|
-
weather: weatherTool,
|
|
661
|
-
calculator: createTool({
|
|
662
|
-
id: "calculator",
|
|
663
|
-
description: "Perform basic arithmetic",
|
|
664
|
-
inputSchema: z.object({
|
|
665
|
-
operation: z.enum(["add", "subtract", "multiply", "divide"]),
|
|
666
|
-
a: z.number(),
|
|
667
|
-
b: z.number(),
|
|
668
|
-
}),
|
|
669
|
-
outputSchema: z.object({
|
|
670
|
-
result: z.number(),
|
|
671
|
-
}),
|
|
672
|
-
execute: async (inputData) => {
|
|
673
|
-
// implementation...
|
|
674
|
-
return { result: 0 };
|
|
675
|
-
},
|
|
676
|
-
}),
|
|
677
|
-
};
|
|
678
|
-
|
|
679
|
-
// Infer types from the tool set
|
|
680
|
-
export type MyUITools = InferUITools<typeof tools>;
|
|
681
|
-
// This creates:
|
|
682
|
-
// {
|
|
683
|
-
// weather: { input: { location: string }; output: { temperature: number; conditions: string } };
|
|
684
|
-
// calculator: { input: { operation: "add" | "subtract" | "multiply" | "divide"; a: number; b: number }; output: { result: number } };
|
|
685
|
-
// }
|
|
686
|
-
```
|
|
687
|
-
|
|
688
|
-
These type helpers provide full TypeScript support when using Mastra tools with AI SDK v5 UI components, ensuring type safety across your application.
|