@mastra/mcp-docs-server 1.1.5 → 1.1.6
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/docs/agents/adding-voice.md +349 -0
- package/.docs/docs/agents/agent-approval.md +558 -0
- package/.docs/docs/agents/agent-memory.md +209 -0
- package/.docs/docs/agents/guardrails.md +374 -0
- package/.docs/docs/agents/network-approval.md +275 -0
- package/.docs/docs/agents/networks.md +299 -0
- package/.docs/docs/agents/overview.md +304 -0
- package/.docs/docs/agents/processors.md +622 -0
- package/.docs/docs/agents/structured-output.md +273 -0
- package/.docs/docs/agents/supervisor-agents.md +304 -0
- package/.docs/docs/agents/using-tools.md +214 -0
- package/.docs/docs/build-with-ai/mcp-docs-server.md +238 -0
- package/.docs/docs/build-with-ai/skills.md +35 -0
- package/.docs/docs/community/contributing-templates.md +3 -0
- package/.docs/docs/community/discord.md +9 -0
- package/.docs/docs/community/licensing.md +66 -0
- package/.docs/docs/deployment/cloud-providers.md +15 -0
- package/.docs/docs/deployment/mastra-server.md +122 -0
- package/.docs/docs/deployment/monorepo.md +142 -0
- package/.docs/docs/deployment/overview.md +62 -0
- package/.docs/docs/deployment/studio.md +239 -0
- package/.docs/docs/deployment/web-framework.md +52 -0
- package/.docs/docs/deployment/workflow-runners.md +9 -0
- package/.docs/docs/evals/built-in-scorers.md +47 -0
- package/.docs/docs/evals/custom-scorers.md +519 -0
- package/.docs/docs/evals/overview.md +141 -0
- package/.docs/docs/evals/running-in-ci.md +124 -0
- package/.docs/docs/getting-started/build-with-ai.md +68 -0
- package/.docs/docs/getting-started/manual-install.md +226 -0
- package/.docs/docs/getting-started/project-structure.md +60 -0
- package/.docs/docs/getting-started/start.md +28 -0
- package/.docs/docs/getting-started/studio.md +101 -0
- package/.docs/docs/index.md +43 -0
- package/.docs/docs/mastra-cloud/deployment.md +77 -0
- package/.docs/docs/mastra-cloud/observability.md +38 -0
- package/.docs/docs/mastra-cloud/overview.md +23 -0
- package/.docs/docs/mastra-cloud/setup.md +42 -0
- package/.docs/docs/mastra-cloud/studio.md +24 -0
- package/.docs/docs/mastra-code/configuration.md +299 -0
- package/.docs/docs/mastra-code/customization.md +228 -0
- package/.docs/docs/mastra-code/modes.md +104 -0
- package/.docs/docs/mastra-code/overview.md +135 -0
- package/.docs/docs/mastra-code/tools.md +229 -0
- package/.docs/docs/mcp/overview.md +373 -0
- package/.docs/docs/mcp/publishing-mcp-server.md +95 -0
- package/.docs/docs/memory/memory-processors.md +314 -0
- package/.docs/docs/memory/message-history.md +260 -0
- package/.docs/docs/memory/observational-memory.md +248 -0
- package/.docs/docs/memory/overview.md +45 -0
- package/.docs/docs/memory/semantic-recall.md +272 -0
- package/.docs/docs/memory/storage.md +261 -0
- package/.docs/docs/memory/working-memory.md +400 -0
- package/.docs/docs/observability/datasets/overview.md +198 -0
- package/.docs/docs/observability/datasets/running-experiments.md +274 -0
- package/.docs/docs/observability/logging.md +99 -0
- package/.docs/docs/observability/overview.md +70 -0
- package/.docs/docs/observability/tracing/bridges/otel.md +209 -0
- package/.docs/docs/observability/tracing/exporters/arize.md +272 -0
- package/.docs/docs/observability/tracing/exporters/braintrust.md +111 -0
- package/.docs/docs/observability/tracing/exporters/cloud.md +127 -0
- package/.docs/docs/observability/tracing/exporters/datadog.md +187 -0
- package/.docs/docs/observability/tracing/exporters/default.md +209 -0
- package/.docs/docs/observability/tracing/exporters/laminar.md +100 -0
- package/.docs/docs/observability/tracing/exporters/langfuse.md +213 -0
- package/.docs/docs/observability/tracing/exporters/langsmith.md +198 -0
- package/.docs/docs/observability/tracing/exporters/otel.md +476 -0
- package/.docs/docs/observability/tracing/exporters/posthog.md +148 -0
- package/.docs/docs/observability/tracing/exporters/sentry.md +208 -0
- package/.docs/docs/observability/tracing/overview.md +1112 -0
- package/.docs/docs/observability/tracing/processors/sensitive-data-filter.md +300 -0
- package/.docs/docs/rag/chunking-and-embedding.md +183 -0
- package/.docs/docs/rag/graph-rag.md +215 -0
- package/.docs/docs/rag/overview.md +72 -0
- package/.docs/docs/rag/retrieval.md +515 -0
- package/.docs/docs/rag/vector-databases.md +645 -0
- package/.docs/docs/server/auth/auth0.md +220 -0
- package/.docs/docs/server/auth/better-auth.md +203 -0
- package/.docs/docs/server/auth/clerk.md +132 -0
- package/.docs/docs/server/auth/composite-auth.md +234 -0
- package/.docs/docs/server/auth/custom-auth-provider.md +513 -0
- package/.docs/docs/server/auth/firebase.md +272 -0
- package/.docs/docs/server/auth/jwt.md +110 -0
- package/.docs/docs/server/auth/simple-auth.md +180 -0
- package/.docs/docs/server/auth/supabase.md +117 -0
- package/.docs/docs/server/auth/workos.md +186 -0
- package/.docs/docs/server/auth.md +38 -0
- package/.docs/docs/server/custom-adapters.md +378 -0
- package/.docs/docs/server/custom-api-routes.md +267 -0
- package/.docs/docs/server/mastra-client.md +243 -0
- package/.docs/docs/server/mastra-server.md +71 -0
- package/.docs/docs/server/middleware.md +225 -0
- package/.docs/docs/server/request-context.md +471 -0
- package/.docs/docs/server/server-adapters.md +547 -0
- package/.docs/docs/streaming/events.md +237 -0
- package/.docs/docs/streaming/overview.md +175 -0
- package/.docs/docs/streaming/tool-streaming.md +175 -0
- package/.docs/docs/streaming/workflow-streaming.md +109 -0
- package/.docs/docs/voice/overview.md +959 -0
- package/.docs/docs/voice/speech-to-speech.md +102 -0
- package/.docs/docs/voice/speech-to-text.md +79 -0
- package/.docs/docs/voice/text-to-speech.md +83 -0
- package/.docs/docs/workflows/agents-and-tools.md +166 -0
- package/.docs/docs/workflows/control-flow.md +822 -0
- package/.docs/docs/workflows/error-handling.md +360 -0
- package/.docs/docs/workflows/human-in-the-loop.md +215 -0
- package/.docs/docs/workflows/overview.md +370 -0
- package/.docs/docs/workflows/snapshots.md +238 -0
- package/.docs/docs/workflows/suspend-and-resume.md +205 -0
- package/.docs/docs/workflows/time-travel.md +309 -0
- package/.docs/docs/workflows/workflow-state.md +181 -0
- package/.docs/docs/workspace/filesystem.md +164 -0
- package/.docs/docs/workspace/overview.md +239 -0
- package/.docs/docs/workspace/sandbox.md +63 -0
- package/.docs/docs/workspace/search.md +243 -0
- package/.docs/docs/workspace/skills.md +169 -0
- package/.docs/guides/agent-frameworks/ai-sdk.md +140 -0
- package/.docs/guides/build-your-ui/ai-sdk-ui.md +1499 -0
- package/.docs/guides/build-your-ui/assistant-ui.md +156 -0
- package/.docs/guides/build-your-ui/copilotkit.md +289 -0
- package/.docs/guides/deployment/amazon-ec2.md +130 -0
- package/.docs/guides/deployment/aws-lambda.md +248 -0
- package/.docs/guides/deployment/azure-app-services.md +114 -0
- package/.docs/guides/deployment/cloudflare.md +99 -0
- package/.docs/guides/deployment/digital-ocean.md +168 -0
- package/.docs/guides/deployment/inngest.md +682 -0
- package/.docs/guides/deployment/netlify.md +77 -0
- package/.docs/guides/deployment/vercel.md +101 -0
- package/.docs/guides/getting-started/astro.md +398 -0
- package/.docs/guides/getting-started/electron.md +504 -0
- package/.docs/guides/getting-started/express.md +251 -0
- package/.docs/guides/getting-started/hono.md +190 -0
- package/.docs/guides/getting-started/next-js.md +347 -0
- package/.docs/guides/getting-started/nuxt.md +497 -0
- package/.docs/guides/getting-started/quickstart.md +67 -0
- package/.docs/guides/getting-started/sveltekit.md +296 -0
- package/.docs/guides/getting-started/vite-react.md +425 -0
- package/.docs/guides/guide/ai-recruiter.md +226 -0
- package/.docs/guides/guide/chef-michel.md +211 -0
- package/.docs/guides/guide/code-review-bot.md +226 -0
- package/.docs/guides/guide/dev-assistant.md +307 -0
- package/.docs/guides/guide/docs-manager.md +238 -0
- package/.docs/guides/guide/github-actions-pr-description.md +236 -0
- package/.docs/guides/guide/notes-mcp-server.md +416 -0
- package/.docs/guides/guide/research-assistant.md +348 -0
- package/.docs/guides/guide/research-coordinator.md +416 -0
- package/.docs/guides/guide/stock-agent.md +132 -0
- package/.docs/guides/guide/web-search.md +320 -0
- package/.docs/guides/guide/whatsapp-chat-bot.md +405 -0
- package/.docs/guides/index.md +3 -0
- package/.docs/guides/migrations/agentnetwork.md +97 -0
- package/.docs/guides/migrations/ai-sdk-v4-to-v5.md +112 -0
- package/.docs/guides/migrations/network-to-supervisor.md +261 -0
- package/.docs/guides/migrations/upgrade-to-v1/agent.md +404 -0
- package/.docs/guides/migrations/upgrade-to-v1/cli.md +57 -0
- package/.docs/guides/migrations/upgrade-to-v1/client.md +337 -0
- package/.docs/guides/migrations/upgrade-to-v1/deployment.md +37 -0
- package/.docs/guides/migrations/upgrade-to-v1/evals.md +239 -0
- package/.docs/guides/migrations/upgrade-to-v1/mastra.md +143 -0
- package/.docs/guides/migrations/upgrade-to-v1/mcp.md +97 -0
- package/.docs/guides/migrations/upgrade-to-v1/memory.md +285 -0
- package/.docs/guides/migrations/upgrade-to-v1/overview.md +119 -0
- package/.docs/guides/migrations/upgrade-to-v1/processors.md +68 -0
- package/.docs/guides/migrations/upgrade-to-v1/rag.md +42 -0
- package/.docs/guides/migrations/upgrade-to-v1/storage.md +553 -0
- package/.docs/guides/migrations/upgrade-to-v1/tools.md +180 -0
- package/.docs/guides/migrations/upgrade-to-v1/tracing.md +412 -0
- package/.docs/guides/migrations/upgrade-to-v1/vectors.md +87 -0
- package/.docs/guides/migrations/upgrade-to-v1/voice.md +30 -0
- package/.docs/guides/migrations/upgrade-to-v1/workflows.md +341 -0
- package/.docs/guides/migrations/vnext-to-standard-apis.md +362 -0
- package/.docs/models/embeddings.md +161 -0
- package/.docs/models/gateways/azure-openai.md +128 -0
- package/.docs/models/gateways/custom-gateways.md +545 -0
- package/.docs/models/gateways/netlify.md +88 -0
- package/.docs/models/gateways/openrouter.md +219 -0
- package/.docs/models/gateways/vercel.md +225 -0
- package/.docs/models/gateways.md +14 -0
- package/.docs/models/index.md +286 -0
- package/.docs/models/providers/302ai.md +134 -0
- package/.docs/models/providers/abacus.md +125 -0
- package/.docs/models/providers/agentrouter.md +90 -0
- package/.docs/models/providers/aihubmix.md +107 -0
- package/.docs/models/providers/alibaba-cn.md +135 -0
- package/.docs/models/providers/alibaba.md +111 -0
- package/.docs/models/providers/amazon-bedrock.md +33 -0
- package/.docs/models/providers/anthropic.md +153 -0
- package/.docs/models/providers/azure.md +33 -0
- package/.docs/models/providers/bailing.md +72 -0
- package/.docs/models/providers/baseten.md +77 -0
- package/.docs/models/providers/berget.md +78 -0
- package/.docs/models/providers/cerebras.md +101 -0
- package/.docs/models/providers/chutes.md +136 -0
- package/.docs/models/providers/cloudflare-ai-gateway.md +33 -0
- package/.docs/models/providers/cloudflare-workers-ai.md +109 -0
- package/.docs/models/providers/cohere.md +33 -0
- package/.docs/models/providers/cortecs.md +91 -0
- package/.docs/models/providers/deepinfra.md +112 -0
- package/.docs/models/providers/deepseek.md +88 -0
- package/.docs/models/providers/fastrouter.md +84 -0
- package/.docs/models/providers/fireworks-ai.md +89 -0
- package/.docs/models/providers/firmware.md +85 -0
- package/.docs/models/providers/friendli.md +78 -0
- package/.docs/models/providers/github-models.md +125 -0
- package/.docs/models/providers/google-vertex.md +33 -0
- package/.docs/models/providers/google.md +159 -0
- package/.docs/models/providers/groq.md +107 -0
- package/.docs/models/providers/helicone.md +161 -0
- package/.docs/models/providers/huggingface.md +90 -0
- package/.docs/models/providers/iflowcn.md +84 -0
- package/.docs/models/providers/inception.md +72 -0
- package/.docs/models/providers/inference.md +79 -0
- package/.docs/models/providers/io-intelligence.md +87 -0
- package/.docs/models/providers/io-net.md +87 -0
- package/.docs/models/providers/jiekou.md +131 -0
- package/.docs/models/providers/kilo.md +333 -0
- package/.docs/models/providers/kimi-for-coding.md +100 -0
- package/.docs/models/providers/kuae-cloud-coding-plan.md +71 -0
- package/.docs/models/providers/llama.md +77 -0
- package/.docs/models/providers/lmstudio.md +73 -0
- package/.docs/models/providers/lucidquery.md +72 -0
- package/.docs/models/providers/minimax-cn-coding-plan.md +102 -0
- package/.docs/models/providers/minimax-cn.md +102 -0
- package/.docs/models/providers/minimax-coding-plan.md +102 -0
- package/.docs/models/providers/minimax.md +104 -0
- package/.docs/models/providers/mistral.md +124 -0
- package/.docs/models/providers/moark.md +72 -0
- package/.docs/models/providers/modelscope.md +77 -0
- package/.docs/models/providers/moonshotai-cn.md +76 -0
- package/.docs/models/providers/moonshotai.md +76 -0
- package/.docs/models/providers/morph.md +73 -0
- package/.docs/models/providers/nano-gpt.md +103 -0
- package/.docs/models/providers/nebius.md +116 -0
- package/.docs/models/providers/nova.md +72 -0
- package/.docs/models/providers/novita-ai.md +154 -0
- package/.docs/models/providers/nvidia.md +141 -0
- package/.docs/models/providers/ollama-cloud.md +103 -0
- package/.docs/models/providers/ollama.md +33 -0
- package/.docs/models/providers/openai.md +193 -0
- package/.docs/models/providers/opencode.md +100 -0
- package/.docs/models/providers/ovhcloud.md +83 -0
- package/.docs/models/providers/perplexity.md +100 -0
- package/.docs/models/providers/poe.md +183 -0
- package/.docs/models/providers/privatemode-ai.md +75 -0
- package/.docs/models/providers/requesty.md +90 -0
- package/.docs/models/providers/scaleway.md +84 -0
- package/.docs/models/providers/siliconflow-cn.md +138 -0
- package/.docs/models/providers/siliconflow.md +140 -0
- package/.docs/models/providers/stackit.md +78 -0
- package/.docs/models/providers/stepfun.md +73 -0
- package/.docs/models/providers/submodel.md +79 -0
- package/.docs/models/providers/synthetic.md +96 -0
- package/.docs/models/providers/togetherai.md +115 -0
- package/.docs/models/providers/upstage.md +73 -0
- package/.docs/models/providers/venice.md +95 -0
- package/.docs/models/providers/vivgrid.md +106 -0
- package/.docs/models/providers/vultr.md +75 -0
- package/.docs/models/providers/wandb.md +80 -0
- package/.docs/models/providers/xai.md +141 -0
- package/.docs/models/providers/xiaomi.md +71 -0
- package/.docs/models/providers/zai-coding-plan.md +80 -0
- package/.docs/models/providers/zai.md +79 -0
- package/.docs/models/providers/zenmux.md +161 -0
- package/.docs/models/providers/zhipuai-coding-plan.md +79 -0
- package/.docs/models/providers/zhipuai.md +79 -0
- package/.docs/models/providers.md +81 -0
- package/.docs/reference/agents/agent.md +141 -0
- package/.docs/reference/agents/generate.md +186 -0
- package/.docs/reference/agents/generateLegacy.md +173 -0
- package/.docs/reference/agents/getDefaultGenerateOptions.md +36 -0
- package/.docs/reference/agents/getDefaultOptions.md +34 -0
- package/.docs/reference/agents/getDefaultStreamOptions.md +36 -0
- package/.docs/reference/agents/getDescription.md +21 -0
- package/.docs/reference/agents/getInstructions.md +34 -0
- package/.docs/reference/agents/getLLM.md +37 -0
- package/.docs/reference/agents/getMemory.md +34 -0
- package/.docs/reference/agents/getModel.md +34 -0
- package/.docs/reference/agents/getTools.md +29 -0
- package/.docs/reference/agents/getVoice.md +34 -0
- package/.docs/reference/agents/listAgents.md +35 -0
- package/.docs/reference/agents/listScorers.md +34 -0
- package/.docs/reference/agents/listTools.md +34 -0
- package/.docs/reference/agents/listWorkflows.md +34 -0
- package/.docs/reference/agents/network.md +133 -0
- package/.docs/reference/ai-sdk/chat-route.md +82 -0
- package/.docs/reference/ai-sdk/handle-chat-stream.md +53 -0
- package/.docs/reference/ai-sdk/handle-network-stream.md +37 -0
- package/.docs/reference/ai-sdk/handle-workflow-stream.md +55 -0
- package/.docs/reference/ai-sdk/network-route.md +74 -0
- package/.docs/reference/ai-sdk/to-ai-sdk-stream.md +231 -0
- package/.docs/reference/ai-sdk/to-ai-sdk-v4-messages.md +79 -0
- package/.docs/reference/ai-sdk/to-ai-sdk-v5-messages.md +76 -0
- package/.docs/reference/ai-sdk/with-mastra.md +59 -0
- package/.docs/reference/ai-sdk/workflow-route.md +79 -0
- package/.docs/reference/auth/auth0.md +73 -0
- package/.docs/reference/auth/better-auth.md +71 -0
- package/.docs/reference/auth/clerk.md +36 -0
- package/.docs/reference/auth/firebase.md +80 -0
- package/.docs/reference/auth/jwt.md +26 -0
- package/.docs/reference/auth/supabase.md +33 -0
- package/.docs/reference/auth/workos.md +84 -0
- package/.docs/reference/cli/create-mastra.md +137 -0
- package/.docs/reference/cli/mastra.md +336 -0
- package/.docs/reference/client-js/agents.md +437 -0
- package/.docs/reference/client-js/error-handling.md +16 -0
- package/.docs/reference/client-js/logs.md +24 -0
- package/.docs/reference/client-js/mastra-client.md +63 -0
- package/.docs/reference/client-js/memory.md +221 -0
- package/.docs/reference/client-js/observability.md +72 -0
- package/.docs/reference/client-js/telemetry.md +20 -0
- package/.docs/reference/client-js/tools.md +44 -0
- package/.docs/reference/client-js/vectors.md +79 -0
- package/.docs/reference/client-js/workflows.md +199 -0
- package/.docs/reference/configuration.md +752 -0
- package/.docs/reference/core/addGateway.md +42 -0
- package/.docs/reference/core/getAgent.md +21 -0
- package/.docs/reference/core/getAgentById.md +21 -0
- package/.docs/reference/core/getDeployer.md +22 -0
- package/.docs/reference/core/getGateway.md +38 -0
- package/.docs/reference/core/getGatewayById.md +41 -0
- package/.docs/reference/core/getLogger.md +22 -0
- package/.docs/reference/core/getMCPServer.md +47 -0
- package/.docs/reference/core/getMCPServerById.md +55 -0
- package/.docs/reference/core/getMemory.md +50 -0
- package/.docs/reference/core/getScorer.md +54 -0
- package/.docs/reference/core/getScorerById.md +54 -0
- package/.docs/reference/core/getServer.md +22 -0
- package/.docs/reference/core/getStorage.md +22 -0
- package/.docs/reference/core/getStoredAgentById.md +89 -0
- package/.docs/reference/core/getTelemetry.md +22 -0
- package/.docs/reference/core/getVector.md +22 -0
- package/.docs/reference/core/getWorkflow.md +42 -0
- package/.docs/reference/core/listAgents.md +21 -0
- package/.docs/reference/core/listGateways.md +40 -0
- package/.docs/reference/core/listLogs.md +38 -0
- package/.docs/reference/core/listLogsByRunId.md +36 -0
- package/.docs/reference/core/listMCPServers.md +55 -0
- package/.docs/reference/core/listMemory.md +56 -0
- package/.docs/reference/core/listScorers.md +29 -0
- package/.docs/reference/core/listStoredAgents.md +93 -0
- package/.docs/reference/core/listVectors.md +22 -0
- package/.docs/reference/core/listWorkflows.md +21 -0
- package/.docs/reference/core/mastra-class.md +66 -0
- package/.docs/reference/core/mastra-model-gateway.md +153 -0
- package/.docs/reference/core/setLogger.md +26 -0
- package/.docs/reference/core/setStorage.md +27 -0
- package/.docs/reference/datasets/addItem.md +37 -0
- package/.docs/reference/datasets/addItems.md +35 -0
- package/.docs/reference/datasets/compareExperiments.md +52 -0
- package/.docs/reference/datasets/create.md +51 -0
- package/.docs/reference/datasets/dataset.md +82 -0
- package/.docs/reference/datasets/datasets-manager.md +94 -0
- package/.docs/reference/datasets/delete.md +25 -0
- package/.docs/reference/datasets/deleteExperiment.md +27 -0
- package/.docs/reference/datasets/deleteItem.md +27 -0
- package/.docs/reference/datasets/deleteItems.md +29 -0
- package/.docs/reference/datasets/get.md +31 -0
- package/.docs/reference/datasets/getDetails.md +47 -0
- package/.docs/reference/datasets/getExperiment.md +30 -0
- package/.docs/reference/datasets/getItem.md +33 -0
- package/.docs/reference/datasets/getItemHistory.md +31 -0
- package/.docs/reference/datasets/list.md +31 -0
- package/.docs/reference/datasets/listExperimentResults.md +39 -0
- package/.docs/reference/datasets/listExperiments.md +33 -0
- package/.docs/reference/datasets/listItems.md +46 -0
- package/.docs/reference/datasets/listVersions.md +33 -0
- package/.docs/reference/datasets/startExperiment.md +62 -0
- package/.docs/reference/datasets/startExperimentAsync.md +43 -0
- package/.docs/reference/datasets/update.md +48 -0
- package/.docs/reference/datasets/updateItem.md +38 -0
- package/.docs/reference/deployer/cloudflare.md +79 -0
- package/.docs/reference/deployer/netlify.md +80 -0
- package/.docs/reference/deployer/vercel.md +91 -0
- package/.docs/reference/deployer.md +100 -0
- package/.docs/reference/evals/answer-relevancy.md +105 -0
- package/.docs/reference/evals/answer-similarity.md +99 -0
- package/.docs/reference/evals/bias.md +120 -0
- package/.docs/reference/evals/completeness.md +136 -0
- package/.docs/reference/evals/content-similarity.md +101 -0
- package/.docs/reference/evals/context-precision.md +196 -0
- package/.docs/reference/evals/context-relevance.md +531 -0
- package/.docs/reference/evals/create-scorer.md +270 -0
- package/.docs/reference/evals/faithfulness.md +114 -0
- package/.docs/reference/evals/hallucination.md +213 -0
- package/.docs/reference/evals/keyword-coverage.md +128 -0
- package/.docs/reference/evals/mastra-scorer.md +123 -0
- package/.docs/reference/evals/noise-sensitivity.md +675 -0
- package/.docs/reference/evals/prompt-alignment.md +614 -0
- package/.docs/reference/evals/run-evals.md +179 -0
- package/.docs/reference/evals/scorer-utils.md +326 -0
- package/.docs/reference/evals/textual-difference.md +113 -0
- package/.docs/reference/evals/tone-consistency.md +119 -0
- package/.docs/reference/evals/tool-call-accuracy.md +533 -0
- package/.docs/reference/evals/toxicity.md +123 -0
- package/.docs/reference/harness/harness-class.md +708 -0
- package/.docs/reference/index.md +277 -0
- package/.docs/reference/logging/pino-logger.md +117 -0
- package/.docs/reference/mastra-code/createMastraCode.md +108 -0
- package/.docs/reference/memory/clone-utilities.md +199 -0
- package/.docs/reference/memory/cloneThread.md +130 -0
- package/.docs/reference/memory/createThread.md +68 -0
- package/.docs/reference/memory/deleteMessages.md +38 -0
- package/.docs/reference/memory/getThreadById.md +24 -0
- package/.docs/reference/memory/listThreads.md +145 -0
- package/.docs/reference/memory/memory-class.md +147 -0
- package/.docs/reference/memory/observational-memory.md +565 -0
- package/.docs/reference/memory/recall.md +91 -0
- package/.docs/reference/observability/tracing/bridges/otel.md +131 -0
- package/.docs/reference/observability/tracing/configuration.md +178 -0
- package/.docs/reference/observability/tracing/exporters/arize.md +141 -0
- package/.docs/reference/observability/tracing/exporters/braintrust.md +93 -0
- package/.docs/reference/observability/tracing/exporters/cloud-exporter.md +163 -0
- package/.docs/reference/observability/tracing/exporters/console-exporter.md +138 -0
- package/.docs/reference/observability/tracing/exporters/datadog.md +116 -0
- package/.docs/reference/observability/tracing/exporters/default-exporter.md +174 -0
- package/.docs/reference/observability/tracing/exporters/laminar.md +78 -0
- package/.docs/reference/observability/tracing/exporters/langfuse.md +134 -0
- package/.docs/reference/observability/tracing/exporters/langsmith.md +108 -0
- package/.docs/reference/observability/tracing/exporters/otel.md +199 -0
- package/.docs/reference/observability/tracing/exporters/posthog.md +92 -0
- package/.docs/reference/observability/tracing/exporters/sentry.md +184 -0
- package/.docs/reference/observability/tracing/instances.md +107 -0
- package/.docs/reference/observability/tracing/interfaces.md +743 -0
- package/.docs/reference/observability/tracing/processors/sensitive-data-filter.md +144 -0
- package/.docs/reference/observability/tracing/spans.md +224 -0
- package/.docs/reference/processors/batch-parts-processor.md +61 -0
- package/.docs/reference/processors/language-detector.md +82 -0
- package/.docs/reference/processors/message-history-processor.md +85 -0
- package/.docs/reference/processors/moderation-processor.md +104 -0
- package/.docs/reference/processors/pii-detector.md +108 -0
- package/.docs/reference/processors/processor-interface.md +521 -0
- package/.docs/reference/processors/prompt-injection-detector.md +72 -0
- package/.docs/reference/processors/semantic-recall-processor.md +117 -0
- package/.docs/reference/processors/system-prompt-scrubber.md +80 -0
- package/.docs/reference/processors/token-limiter-processor.md +115 -0
- package/.docs/reference/processors/tool-call-filter.md +85 -0
- package/.docs/reference/processors/tool-search-processor.md +111 -0
- package/.docs/reference/processors/unicode-normalizer.md +62 -0
- package/.docs/reference/processors/working-memory-processor.md +152 -0
- package/.docs/reference/rag/chunk.md +221 -0
- package/.docs/reference/rag/database-config.md +261 -0
- package/.docs/reference/rag/document.md +114 -0
- package/.docs/reference/rag/embeddings.md +92 -0
- package/.docs/reference/rag/extract-params.md +168 -0
- package/.docs/reference/rag/graph-rag.md +111 -0
- package/.docs/reference/rag/metadata-filters.md +216 -0
- package/.docs/reference/rag/rerank.md +75 -0
- package/.docs/reference/rag/rerankWithScorer.md +80 -0
- package/.docs/reference/server/create-route.md +262 -0
- package/.docs/reference/server/express-adapter.md +176 -0
- package/.docs/reference/server/fastify-adapter.md +90 -0
- package/.docs/reference/server/hono-adapter.md +162 -0
- package/.docs/reference/server/koa-adapter.md +127 -0
- package/.docs/reference/server/mastra-server.md +298 -0
- package/.docs/reference/server/register-api-route.md +249 -0
- package/.docs/reference/server/routes.md +306 -0
- package/.docs/reference/storage/cloudflare-d1.md +218 -0
- package/.docs/reference/storage/cloudflare.md +88 -0
- package/.docs/reference/storage/composite.md +235 -0
- package/.docs/reference/storage/convex.md +161 -0
- package/.docs/reference/storage/dynamodb.md +282 -0
- package/.docs/reference/storage/lance.md +131 -0
- package/.docs/reference/storage/libsql.md +135 -0
- package/.docs/reference/storage/mongodb.md +262 -0
- package/.docs/reference/storage/mssql.md +157 -0
- package/.docs/reference/storage/overview.md +121 -0
- package/.docs/reference/storage/postgresql.md +526 -0
- package/.docs/reference/storage/upstash.md +160 -0
- package/.docs/reference/streaming/ChunkType.md +292 -0
- package/.docs/reference/streaming/agents/MastraModelOutput.md +182 -0
- package/.docs/reference/streaming/agents/stream.md +221 -0
- package/.docs/reference/streaming/agents/streamLegacy.md +142 -0
- package/.docs/reference/streaming/workflows/observeStream.md +42 -0
- package/.docs/reference/streaming/workflows/resumeStream.md +61 -0
- package/.docs/reference/streaming/workflows/stream.md +88 -0
- package/.docs/reference/streaming/workflows/timeTravelStream.md +142 -0
- package/.docs/reference/templates/overview.md +194 -0
- package/.docs/reference/tools/create-tool.md +237 -0
- package/.docs/reference/tools/document-chunker-tool.md +89 -0
- package/.docs/reference/tools/graph-rag-tool.md +182 -0
- package/.docs/reference/tools/mcp-client.md +954 -0
- package/.docs/reference/tools/mcp-server.md +1271 -0
- package/.docs/reference/tools/vector-query-tool.md +459 -0
- package/.docs/reference/vectors/astra.md +121 -0
- package/.docs/reference/vectors/chroma.md +264 -0
- package/.docs/reference/vectors/convex.md +300 -0
- package/.docs/reference/vectors/couchbase.md +226 -0
- package/.docs/reference/vectors/duckdb.md +318 -0
- package/.docs/reference/vectors/elasticsearch.md +189 -0
- package/.docs/reference/vectors/lance.md +220 -0
- package/.docs/reference/vectors/libsql.md +305 -0
- package/.docs/reference/vectors/mongodb.md +295 -0
- package/.docs/reference/vectors/opensearch.md +99 -0
- package/.docs/reference/vectors/pg.md +408 -0
- package/.docs/reference/vectors/pinecone.md +168 -0
- package/.docs/reference/vectors/qdrant.md +222 -0
- package/.docs/reference/vectors/s3vectors.md +277 -0
- package/.docs/reference/vectors/turbopuffer.md +157 -0
- package/.docs/reference/vectors/upstash.md +294 -0
- package/.docs/reference/vectors/vectorize.md +147 -0
- package/.docs/reference/voice/azure.md +148 -0
- package/.docs/reference/voice/cloudflare.md +83 -0
- package/.docs/reference/voice/composite-voice.md +121 -0
- package/.docs/reference/voice/deepgram.md +79 -0
- package/.docs/reference/voice/elevenlabs.md +98 -0
- package/.docs/reference/voice/google-gemini-live.md +378 -0
- package/.docs/reference/voice/google.md +228 -0
- package/.docs/reference/voice/mastra-voice.md +311 -0
- package/.docs/reference/voice/murf.md +122 -0
- package/.docs/reference/voice/openai-realtime.md +203 -0
- package/.docs/reference/voice/openai.md +88 -0
- package/.docs/reference/voice/playai.md +80 -0
- package/.docs/reference/voice/sarvam.md +126 -0
- package/.docs/reference/voice/speechify.md +75 -0
- package/.docs/reference/voice/voice.addInstructions.md +55 -0
- package/.docs/reference/voice/voice.addTools.md +67 -0
- package/.docs/reference/voice/voice.answer.md +54 -0
- package/.docs/reference/voice/voice.close.md +51 -0
- package/.docs/reference/voice/voice.connect.md +94 -0
- package/.docs/reference/voice/voice.events.md +37 -0
- package/.docs/reference/voice/voice.getSpeakers.md +129 -0
- package/.docs/reference/voice/voice.listen.md +164 -0
- package/.docs/reference/voice/voice.off.md +54 -0
- package/.docs/reference/voice/voice.on.md +111 -0
- package/.docs/reference/voice/voice.send.md +65 -0
- package/.docs/reference/voice/voice.speak.md +157 -0
- package/.docs/reference/voice/voice.updateConfig.md +60 -0
- package/.docs/reference/workflows/run-methods/cancel.md +86 -0
- package/.docs/reference/workflows/run-methods/restart.md +33 -0
- package/.docs/reference/workflows/run-methods/resume.md +59 -0
- package/.docs/reference/workflows/run-methods/start.md +58 -0
- package/.docs/reference/workflows/run-methods/startAsync.md +67 -0
- package/.docs/reference/workflows/run-methods/timeTravel.md +142 -0
- package/.docs/reference/workflows/run.md +59 -0
- package/.docs/reference/workflows/step.md +119 -0
- package/.docs/reference/workflows/workflow-methods/branch.md +25 -0
- package/.docs/reference/workflows/workflow-methods/commit.md +17 -0
- package/.docs/reference/workflows/workflow-methods/create-run.md +63 -0
- package/.docs/reference/workflows/workflow-methods/dountil.md +25 -0
- package/.docs/reference/workflows/workflow-methods/dowhile.md +25 -0
- package/.docs/reference/workflows/workflow-methods/foreach.md +118 -0
- package/.docs/reference/workflows/workflow-methods/map.md +93 -0
- package/.docs/reference/workflows/workflow-methods/parallel.md +21 -0
- package/.docs/reference/workflows/workflow-methods/sleep.md +35 -0
- package/.docs/reference/workflows/workflow-methods/sleepUntil.md +35 -0
- package/.docs/reference/workflows/workflow-methods/then.md +21 -0
- package/.docs/reference/workflows/workflow.md +157 -0
- package/.docs/reference/workspace/e2b-sandbox.md +289 -0
- package/.docs/reference/workspace/filesystem.md +255 -0
- package/.docs/reference/workspace/gcs-filesystem.md +174 -0
- package/.docs/reference/workspace/local-filesystem.md +343 -0
- package/.docs/reference/workspace/local-sandbox.md +301 -0
- package/.docs/reference/workspace/s3-filesystem.md +175 -0
- package/.docs/reference/workspace/sandbox.md +87 -0
- package/.docs/reference/workspace/workspace-class.md +244 -0
- package/CHANGELOG.md +16 -0
- package/package.json +6 -6
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Deploy Mastra to Netlify
|
|
2
|
+
|
|
3
|
+
Use `@mastra/deployer-netlify` to deploy your Mastra server as serverless functions on Netlify. The deployer bundles your code and generates a `.netlify` directory conforming to Netlify's [frameworks API](https://docs.netlify.com/build/frameworks/frameworks-api/#netlifyv1functions), ready to deploy.
|
|
4
|
+
|
|
5
|
+
> **Info:** This guide covers deploying the [Mastra server](https://mastra.ai/docs/server/mastra-server). If you're using a [server adapter](https://mastra.ai/docs/server/server-adapters) or [web framework](https://mastra.ai/docs/deployment/web-framework), deploy the way you normally would for that framework.
|
|
6
|
+
|
|
7
|
+
## Before you begin
|
|
8
|
+
|
|
9
|
+
You'll need a [Mastra application](https://mastra.ai/guides/getting-started/quickstart) and a [Netlify](https://www.netlify.com/) account.
|
|
10
|
+
|
|
11
|
+
Netlify Functions use an ephemeral filesystem, so any storage you configure (including observability storage) must be hosted externally. If you're using [LibSQLStore](https://mastra.ai/reference/storage/libsql) with a file URL, switch to a remotely hosted database.
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
Add the `@mastra/deployer-netlify` package to your project:
|
|
16
|
+
|
|
17
|
+
**npm**:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install @mastra/deployer-netlify@latest
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**pnpm**:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pnpm add @mastra/deployer-netlify@latest
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Yarn**:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
yarn add @mastra/deployer-netlify@latest
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Bun**:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
bun add @mastra/deployer-netlify@latest
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Import [`NetlifyDeployer`](https://mastra.ai/reference/deployer/netlify) and set it as the deployer in your Mastra configuration:
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import { Mastra } from '@mastra/core'
|
|
45
|
+
import { NetlifyDeployer } from '@mastra/deployer-netlify'
|
|
46
|
+
|
|
47
|
+
export const mastra = new Mastra({
|
|
48
|
+
deployer: new NetlifyDeployer(),
|
|
49
|
+
})
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Create a `netlify.toml` file with the following contents in your project root:
|
|
53
|
+
|
|
54
|
+
```toml
|
|
55
|
+
[build]
|
|
56
|
+
command = "mastra build"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Deploy
|
|
60
|
+
|
|
61
|
+
After setting up your project, push it to your remote Git provider of choice (e.g. GitHub).
|
|
62
|
+
|
|
63
|
+
1. Connect your repository to Netlify. During the setup process, Netlify will detect your `netlify.toml` file and set the build command to `mastra build`.
|
|
64
|
+
|
|
65
|
+
> **Note:** Remember to set your environment variables needed to run your application (e.g. your [model provider](https://mastra.ai/models/providers) API key).
|
|
66
|
+
|
|
67
|
+
2. Once you're ready, click the **Deploy** button and wait for the first deployment to complete. It'll tell you that one function has been deployed.
|
|
68
|
+
|
|
69
|
+
3. Verify your deployment at `https://<random-slug>.netlify.app/api/agents`, which should return a JSON list of your agents.
|
|
70
|
+
|
|
71
|
+
Since the [Mastra server](https://mastra.ai/docs/server/mastra-server) prefixes every API endpoint with `/api`, you have to add it to your URLs when making requests.
|
|
72
|
+
|
|
73
|
+
> **Info:** Netlify functions are typically deployed at `https://<random-slug>.netlify.app/.netlify/functions/api`. The `NetlifyDeployer` redirects any request from `/*` to `/.netlify/functions/api/:splat`, so you don't need to include the `.netlify/functions` prefix in your URLs.
|
|
74
|
+
|
|
75
|
+
4. You can now call your Mastra endpoints over HTTP.
|
|
76
|
+
|
|
77
|
+
> **Warning:** Set up [authentication](https://mastra.ai/docs/server/auth) before exposing your endpoints publicly.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Deploy Mastra to Vercel
|
|
2
|
+
|
|
3
|
+
Use `@mastra/deployer-vercel` to deploy your Mastra server as serverless functions on Vercel. The deployer bundles your code and generates a `.vercel/output` directory conforming to Vercel's [Build Output API](https://vercel.com/docs/build-output-api/v3), ready to deploy with no additional configuration.
|
|
4
|
+
|
|
5
|
+
> **Info:** This guide covers deploying the [Mastra server](https://mastra.ai/docs/server/mastra-server). If you're using a [server adapter](https://mastra.ai/docs/server/server-adapters) or [web framework](https://mastra.ai/docs/deployment/web-framework), deploy the way you normally would for that framework.
|
|
6
|
+
|
|
7
|
+
## Before you begin
|
|
8
|
+
|
|
9
|
+
You'll need a [Mastra application](https://mastra.ai/guides/getting-started/quickstart) and a [Vercel](https://vercel.com/) account.
|
|
10
|
+
|
|
11
|
+
Vercel Functions use an ephemeral filesystem, so any storage you configure (including observability storage) must be hosted externally. If you're using [LibSQLStore](https://mastra.ai/reference/storage/libsql) with a file URL, switch to a remotely hosted database.
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
Add the `@mastra/deployer-vercel` package to your project:
|
|
16
|
+
|
|
17
|
+
**npm**:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install @mastra/deployer-vercel@latest
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**pnpm**:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pnpm add @mastra/deployer-vercel@latest
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Yarn**:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
yarn add @mastra/deployer-vercel@latest
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Bun**:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
bun add @mastra/deployer-vercel@latest
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Import [`VercelDeployer`](https://mastra.ai/reference/deployer/vercel) and set it as the deployer in your Mastra configuration:
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import { Mastra } from '@mastra/core'
|
|
45
|
+
import { VercelDeployer } from '@mastra/deployer-vercel'
|
|
46
|
+
|
|
47
|
+
export const mastra = new Mastra({
|
|
48
|
+
deployer: new VercelDeployer(),
|
|
49
|
+
})
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Deploy
|
|
53
|
+
|
|
54
|
+
1. Push your project to a remote Git provider (e.g. GitHub) and connect your repository to Vercel.
|
|
55
|
+
|
|
56
|
+
By default, Vercel runs `npm run build`, which triggers `mastra build`. If you don't have a build script, add `"build": "mastra build"` to your `package.json`.
|
|
57
|
+
|
|
58
|
+
> **Note:** Remember to set your environment variables needed to run your application (e.g. your [model provider](https://mastra.ai/models/providers) API key).
|
|
59
|
+
|
|
60
|
+
2. Once you're ready, click **Deploy** and wait for the first deployment to complete.
|
|
61
|
+
|
|
62
|
+
3. Verify your deployment at `https://<your-project>.vercel.app/api/agents`, which should return a JSON list of your agents.
|
|
63
|
+
|
|
64
|
+
Since the Mastra server prefixes every endpoint with `/api`, you have to add it to your URLs when making requests.
|
|
65
|
+
|
|
66
|
+
4. You can now call your Mastra endpoints over HTTP.
|
|
67
|
+
|
|
68
|
+
> **Warning:** Set up [authentication](https://mastra.ai/docs/server/auth) before exposing your endpoints publicly.
|
|
69
|
+
|
|
70
|
+
## Optional overrides
|
|
71
|
+
|
|
72
|
+
The Vercel deployer supports configuration options that are written to the Vercel Output API function config. See the [`VercelDeployer` reference](https://mastra.ai/reference/deployer/vercel) for available options like `maxDuration`, `memory`, and `regions`.
|
|
73
|
+
|
|
74
|
+
## Observability
|
|
75
|
+
|
|
76
|
+
Serverless functions can terminate immediately after returning a response. Any pending async work - like sending telemetry - may get killed before completing. Awaiting `flush()` ensures all traces are sent before the function exits.
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
import type { VercelRequest, VercelResponse } from '@vercel/node'
|
|
80
|
+
import { mastra } from '../src/mastra'
|
|
81
|
+
|
|
82
|
+
export default async function handler(req: VercelRequest, res: VercelResponse) {
|
|
83
|
+
const { message } = req.body
|
|
84
|
+
const agent = mastra.getAgent('myAgent')
|
|
85
|
+
const result = await agent.generate([{ role: 'user', content: message }])
|
|
86
|
+
|
|
87
|
+
const observability = mastra.getObservability()
|
|
88
|
+
await observability?.flush()
|
|
89
|
+
|
|
90
|
+
return res.json(result)
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
> **Warning:** The Vercel deployer doesn't include `flush` calls. If you need this, you'll need to wrap the handler yourself to add the logic before returning the response. Alternatively, deploy to a long-running server like a [virtual machine](https://mastra.ai/guides/deployment/digital-ocean) where this isn't an issue.
|
|
95
|
+
|
|
96
|
+
## Related
|
|
97
|
+
|
|
98
|
+
- [VercelDeployer reference](https://mastra.ai/reference/deployer/vercel)
|
|
99
|
+
- [Deployment overview](https://mastra.ai/docs/deployment/overview)
|
|
100
|
+
- [Server adapters](https://mastra.ai/docs/server/server-adapters)
|
|
101
|
+
- [Web framework integration](https://mastra.ai/docs/deployment/web-framework)
|
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
# Integrate Mastra in your Astro project
|
|
2
|
+
|
|
3
|
+
In this guide, you'll build a tool-calling AI agent using Mastra, then connect it to Astro by importing and calling the agent directly from your routes.
|
|
4
|
+
|
|
5
|
+
You'll use [AI SDK UI](https://ai-sdk.dev/docs/ai-sdk-ui/overview) and [AI Elements](https://ai-sdk.dev/elements) to create a beautiful, interactive chat experience.
|
|
6
|
+
|
|
7
|
+
> **Note:** While this guide shows you how to use Astro with React and full server-side rendering (SSR), there are many ways to use Astro with Mastra. You can [opt-in to SSR](https://docs.astro.build/en/guides/on-demand-rendering/#enabling-on-demand-rendering) on a per-file basis and use other frameworks like Svelte, Vue, Solid, or Preact. You can use Astro to build out a chat interface and call endpoints [natively in Astro](https://docs.astro.build/en/recipes/call-endpoints/).
|
|
8
|
+
|
|
9
|
+
## Before you begin
|
|
10
|
+
|
|
11
|
+
- You'll need an API key from a supported [model provider](https://mastra.ai/models). If you don't have a preference, use [OpenAI](https://mastra.ai/models/providers/openai).
|
|
12
|
+
- Install Node.js `v22.13.0` or later
|
|
13
|
+
|
|
14
|
+
## Create a new Astro app (optional)
|
|
15
|
+
|
|
16
|
+
If you already have an Astro app, skip to the next step. Your Astro app should be setup like this:
|
|
17
|
+
|
|
18
|
+
- Use SSR (`output: "server"` in `astro.config.mjs`)
|
|
19
|
+
- Use the [React integration](https://docs.astro.build/en/guides/integrations-guide/react/)
|
|
20
|
+
- Tailwind installed
|
|
21
|
+
|
|
22
|
+
To support [on-demand rendering](https://docs.astro.build/en/guides/on-demand-rendering/) this guide will use the [Node.js adapter](https://docs.astro.build/en/guides/integrations-guide/node/) but any of the supported server adapters will work.
|
|
23
|
+
|
|
24
|
+
**npm**:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm create astro@latest mastra-astro -- --add node --add react --add tailwind --install --skip-houston --template minimal --git
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**pnpm**:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
pnpm create astro mastra-astro --add node --add react --add tailwind --install --skip-houston --template minimal --git
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Yarn**:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
yarn create astro mastra-astro --add node --add react --add tailwind --install --skip-houston --template minimal --git
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Bun**:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
bunx create-astro mastra-astro --add node --add react --add tailwind --install --skip-houston --template minimal --git
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
This creates a project called `mastra-astro`, but you can replace it with any name you want.
|
|
49
|
+
|
|
50
|
+
`cd` into your project and edit the `astro.config.mjs` file to set the [`output` setting](https://docs.astro.build/en/reference/configuration-reference/#output) to `"server"`:
|
|
51
|
+
|
|
52
|
+
```js
|
|
53
|
+
// @ts-check
|
|
54
|
+
import { defineConfig } from 'astro/config'
|
|
55
|
+
|
|
56
|
+
import node from '@astrojs/node'
|
|
57
|
+
import react from '@astrojs/react'
|
|
58
|
+
import tailwindcss from '@tailwindcss/vite'
|
|
59
|
+
|
|
60
|
+
// https://astro.build/config
|
|
61
|
+
export default defineConfig({
|
|
62
|
+
output: 'server',
|
|
63
|
+
adapter: node({
|
|
64
|
+
mode: 'standalone',
|
|
65
|
+
}),
|
|
66
|
+
|
|
67
|
+
integrations: [react()],
|
|
68
|
+
|
|
69
|
+
vite: {
|
|
70
|
+
plugins: [tailwindcss()],
|
|
71
|
+
},
|
|
72
|
+
})
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Lastly, edit the `tsconfig.json` to resolve paths:
|
|
76
|
+
|
|
77
|
+
```jsonc
|
|
78
|
+
{
|
|
79
|
+
"compilerOptions": {
|
|
80
|
+
// ...
|
|
81
|
+
"baseUrl": ".",
|
|
82
|
+
"paths": {
|
|
83
|
+
"@/*": ["./src/*"],
|
|
84
|
+
},
|
|
85
|
+
// ...
|
|
86
|
+
},
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Initialize Mastra
|
|
91
|
+
|
|
92
|
+
Run [`mastra init`](https://mastra.ai/reference/cli/mastra). When prompted, choose a provider (e.g. OpenAI) and enter your key:
|
|
93
|
+
|
|
94
|
+
**npm**:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
npx mastra@latest init
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**pnpm**:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
pnpm dlx mastra@latest init
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**Yarn**:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
yarn dlx mastra@latest init
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Bun**:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
bun x mastra@latest init
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
This creates a `src/mastra` folder with an example weather agent and the following files:
|
|
119
|
+
|
|
120
|
+
- `index.ts` - Mastra config, including memory
|
|
121
|
+
- `tools/weather-tool.ts` - a tool to fetch weather for a given location
|
|
122
|
+
- `agents/weather-agent.ts`- a weather agent with a prompt that uses the tool
|
|
123
|
+
|
|
124
|
+
You'll call `weather-agent.ts` from your Astro routes in the next steps.
|
|
125
|
+
|
|
126
|
+
## Install AI SDK UI & AI Elements
|
|
127
|
+
|
|
128
|
+
Install AI SDK UI along with the Mastra adapter:
|
|
129
|
+
|
|
130
|
+
**npm**:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
npm install @mastra/ai-sdk@latest @ai-sdk/react ai
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**pnpm**:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
pnpm add @mastra/ai-sdk@latest @ai-sdk/react ai
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Yarn**:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
yarn add @mastra/ai-sdk@latest @ai-sdk/react ai
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Bun**:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
bun add @mastra/ai-sdk@latest @ai-sdk/react ai
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Next, initialize AI Elements. When prompted, choose the default options:
|
|
155
|
+
|
|
156
|
+
**npm**:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
npx ai-elements@latest
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**pnpm**:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
pnpm dlx ai-elements@latest
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**Yarn**:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
yarn dlx ai-elements@latest
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Bun**:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
bun x ai-elements@latest
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
This downloads the entire AI Elements UI component library into a `@/components/ai-elements` folder.
|
|
181
|
+
|
|
182
|
+
## Create a chat route
|
|
183
|
+
|
|
184
|
+
Create `src/pages/api/chat.ts`:
|
|
185
|
+
|
|
186
|
+
```ts
|
|
187
|
+
import type { APIRoute } from 'astro'
|
|
188
|
+
import { handleChatStream } from '@mastra/ai-sdk'
|
|
189
|
+
import { toAISdkV5Messages } from '@mastra/ai-sdk/ui'
|
|
190
|
+
import { createUIMessageStreamResponse } from 'ai'
|
|
191
|
+
import { mastra } from '@/mastra'
|
|
192
|
+
|
|
193
|
+
const THREAD_ID = 'example-user-id'
|
|
194
|
+
const RESOURCE_ID = 'weather-chat'
|
|
195
|
+
|
|
196
|
+
export const POST: APIRoute = async ({ request }) => {
|
|
197
|
+
const params = await request.json()
|
|
198
|
+
const stream = await handleChatStream({
|
|
199
|
+
mastra,
|
|
200
|
+
agentId: 'weather-agent',
|
|
201
|
+
params: {
|
|
202
|
+
...params,
|
|
203
|
+
memory: {
|
|
204
|
+
...params.memory,
|
|
205
|
+
thread: THREAD_ID,
|
|
206
|
+
resource: RESOURCE_ID,
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
})
|
|
210
|
+
|
|
211
|
+
return createUIMessageStreamResponse({ stream })
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
export const GET: APIRoute = async () => {
|
|
215
|
+
const memory = await mastra.getAgentById('weather-agent').getMemory()
|
|
216
|
+
let response = null
|
|
217
|
+
|
|
218
|
+
try {
|
|
219
|
+
response = await memory?.recall({
|
|
220
|
+
threadId: THREAD_ID,
|
|
221
|
+
resourceId: RESOURCE_ID,
|
|
222
|
+
})
|
|
223
|
+
} catch {
|
|
224
|
+
console.log('No previous messages found.')
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
const uiMessages = toAISdkV5Messages(response?.messages || [])
|
|
228
|
+
|
|
229
|
+
return Response.json(uiMessages)
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
The `POST` route accepts a prompt and streams the agent's response back in AI SDK format, while the `GET` route fetches message history from memory so the UI can be hydrated when the client reloads.
|
|
234
|
+
|
|
235
|
+
## Create a chat component
|
|
236
|
+
|
|
237
|
+
Create `src/components/chat.tsx`:
|
|
238
|
+
|
|
239
|
+
```tsx
|
|
240
|
+
import '@/styles/global.css'
|
|
241
|
+
import { useEffect, useState } from 'react'
|
|
242
|
+
import { DefaultChatTransport, type ToolUIPart } from 'ai'
|
|
243
|
+
import { useChat } from '@ai-sdk/react'
|
|
244
|
+
|
|
245
|
+
import {
|
|
246
|
+
PromptInput,
|
|
247
|
+
PromptInputBody,
|
|
248
|
+
PromptInputTextarea,
|
|
249
|
+
} from '@/components/ai-elements/prompt-input'
|
|
250
|
+
|
|
251
|
+
import {
|
|
252
|
+
Conversation,
|
|
253
|
+
ConversationContent,
|
|
254
|
+
ConversationScrollButton,
|
|
255
|
+
} from '@/components/ai-elements/conversation'
|
|
256
|
+
|
|
257
|
+
import { Message, MessageContent, MessageResponse } from '@/components/ai-elements/message'
|
|
258
|
+
|
|
259
|
+
import { Tool, ToolHeader, ToolContent, ToolInput, ToolOutput } from '@/components/ai-elements/tool'
|
|
260
|
+
|
|
261
|
+
function Chat() {
|
|
262
|
+
const [input, setInput] = useState<string>('')
|
|
263
|
+
|
|
264
|
+
const { messages, setMessages, sendMessage, status } = useChat({
|
|
265
|
+
transport: new DefaultChatTransport({
|
|
266
|
+
api: '/api/chat',
|
|
267
|
+
}),
|
|
268
|
+
})
|
|
269
|
+
|
|
270
|
+
useEffect(() => {
|
|
271
|
+
const fetchMessages = async () => {
|
|
272
|
+
const res = await fetch('/api/chat')
|
|
273
|
+
const data = await res.json()
|
|
274
|
+
setMessages([...data])
|
|
275
|
+
}
|
|
276
|
+
fetchMessages()
|
|
277
|
+
}, [setMessages])
|
|
278
|
+
|
|
279
|
+
const handleSubmit = async () => {
|
|
280
|
+
if (!input.trim()) return
|
|
281
|
+
|
|
282
|
+
sendMessage({ text: input })
|
|
283
|
+
setInput('')
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
return (
|
|
287
|
+
<div className="relative size-full h-screen w-full p-6">
|
|
288
|
+
<div className="flex h-full flex-col">
|
|
289
|
+
<Conversation className="h-full">
|
|
290
|
+
<ConversationContent>
|
|
291
|
+
{messages.map(message => (
|
|
292
|
+
<div key={message.id}>
|
|
293
|
+
{message.parts?.map((part, i) => {
|
|
294
|
+
if (part.type === 'text') {
|
|
295
|
+
return (
|
|
296
|
+
<Message key={`${message.id}-${i}`} from={message.role}>
|
|
297
|
+
<MessageContent>
|
|
298
|
+
<MessageResponse>{part.text}</MessageResponse>
|
|
299
|
+
</MessageContent>
|
|
300
|
+
</Message>
|
|
301
|
+
)
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
if (part.type?.startsWith('tool-')) {
|
|
305
|
+
return (
|
|
306
|
+
<Tool key={`${message.id}-${i}`}>
|
|
307
|
+
<ToolHeader
|
|
308
|
+
type={(part as ToolUIPart).type}
|
|
309
|
+
state={(part as ToolUIPart).state || 'output-available'}
|
|
310
|
+
className="cursor-pointer"
|
|
311
|
+
/>
|
|
312
|
+
<ToolContent>
|
|
313
|
+
<ToolInput input={(part as ToolUIPart).input || {}} />
|
|
314
|
+
<ToolOutput
|
|
315
|
+
output={(part as ToolUIPart).output}
|
|
316
|
+
errorText={(part as ToolUIPart).errorText}
|
|
317
|
+
/>
|
|
318
|
+
</ToolContent>
|
|
319
|
+
</Tool>
|
|
320
|
+
)
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
return null
|
|
324
|
+
})}
|
|
325
|
+
</div>
|
|
326
|
+
))}
|
|
327
|
+
<ConversationScrollButton />
|
|
328
|
+
</ConversationContent>
|
|
329
|
+
</Conversation>
|
|
330
|
+
|
|
331
|
+
<PromptInput onSubmit={handleSubmit} className="mt-20">
|
|
332
|
+
<PromptInputBody>
|
|
333
|
+
<PromptInputTextarea
|
|
334
|
+
onChange={e => setInput(e.target.value)}
|
|
335
|
+
className="md:leading-10"
|
|
336
|
+
value={input}
|
|
337
|
+
placeholder="Type your message..."
|
|
338
|
+
disabled={status !== 'ready'}
|
|
339
|
+
/>
|
|
340
|
+
</PromptInputBody>
|
|
341
|
+
</PromptInput>
|
|
342
|
+
</div>
|
|
343
|
+
</div>
|
|
344
|
+
)
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
export default Chat
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
This component connects [`useChat()`](https://ai-sdk.dev/docs/reference/ai-sdk-ui/use-chat) to the `api/chat` endpoint, sending prompts there and streaming the response back in chunks.
|
|
351
|
+
|
|
352
|
+
It renders the response text using the [`<MessageResponse>`](https://ai-sdk.dev/elements/components/message#messageresponse-) component, and shows any tool invocations with the [`<Tool>`](https://ai-sdk.dev/elements/components/tool) component.
|
|
353
|
+
|
|
354
|
+
## Render the chat component
|
|
355
|
+
|
|
356
|
+
The last step is to render the chat component on your index page. Edit `src/pages/index.astro`:
|
|
357
|
+
|
|
358
|
+
```html
|
|
359
|
+
---
|
|
360
|
+
import Chat from '@/components/chat';
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
<html lang="en">
|
|
364
|
+
<head>
|
|
365
|
+
<meta charset="utf-8" />
|
|
366
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
367
|
+
<meta name="viewport" content="width=device-width" />
|
|
368
|
+
<meta name="generator" content="{Astro.generator}" />
|
|
369
|
+
<title>Astro</title>
|
|
370
|
+
</head>
|
|
371
|
+
<body>
|
|
372
|
+
<Chat client:load />
|
|
373
|
+
</body>
|
|
374
|
+
</html>
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
Import the `Chat` component and add it to the body with the `client:load` [directive](https://docs.astro.build/en/reference/directives-reference/#client-directives) so it runs on the client side.
|
|
378
|
+
|
|
379
|
+
## Test your agent
|
|
380
|
+
|
|
381
|
+
1. Run your Astro app with `npm run dev`
|
|
382
|
+
2. Open the chat at <http://localhost:4321>
|
|
383
|
+
3. Try asking about the weather. If your API key is set up correctly, you'll get a response
|
|
384
|
+
|
|
385
|
+
## Next steps
|
|
386
|
+
|
|
387
|
+
Congratulations on building your Mastra agent with Astro! 🎉
|
|
388
|
+
|
|
389
|
+
From here, you can extend the project with your own tools and logic:
|
|
390
|
+
|
|
391
|
+
- Learn more about [agents](https://mastra.ai/docs/agents/overview)
|
|
392
|
+
- Give your agent its own [tools](https://mastra.ai/docs/agents/using-tools)
|
|
393
|
+
- Add human-like [memory](https://mastra.ai/docs/agents/agent-memory) to your agent
|
|
394
|
+
|
|
395
|
+
When you're ready, read more about how Mastra integrates with AI SDK UI and how to deploy your agent anywhere:
|
|
396
|
+
|
|
397
|
+
- Integrate Mastra with [AI SDK UI](https://mastra.ai/guides/build-your-ui/ai-sdk-ui)
|
|
398
|
+
- Deploy your agent [anywhere](https://mastra.ai/docs/deployment/overview)
|