@mastra/mcp-docs-server 1.1.5 → 1.1.6-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +8 -0
- package/package.json +5 -5
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# Cloudflare D1 Storage
|
|
2
|
+
|
|
3
|
+
The Cloudflare D1 storage implementation provides a serverless SQL database solution using Cloudflare D1, supporting relational operations and transactional consistency.
|
|
4
|
+
|
|
5
|
+
> **Observability Not Supported:** Cloudflare D1 storage **does not support the observability domain**. Traces from the `DefaultExporter` cannot be persisted to D1, and Mastra Studio's observability features won't work with D1 as your only storage provider. To enable observability, use [composite storage](https://mastra.ai/reference/storage/composite) to route observability data to a supported provider like ClickHouse or PostgreSQL.
|
|
6
|
+
|
|
7
|
+
> **Row Size Limit:** Cloudflare D1 enforces a **1 MiB maximum row size**. This limit can be exceeded when storing messages with base64-encoded attachments such as images. See [Handling large attachments](https://mastra.ai/docs/memory/storage) for workarounds including uploading attachments to external storage.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
**npm**:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install @mastra/cloudflare-d1@latest
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**pnpm**:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pnpm add @mastra/cloudflare-d1@latest
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Yarn**:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
yarn add @mastra/cloudflare-d1@latest
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Bun**:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
bun add @mastra/cloudflare-d1@latest
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Usage
|
|
36
|
+
|
|
37
|
+
### Using with Cloudflare Workers
|
|
38
|
+
|
|
39
|
+
When using D1Store in a Cloudflare Worker, you need to access the D1 binding from the worker's `env` parameter at runtime. The `D1Database` in your type definition is only for TypeScript type checking—the actual binding is provided by the Workers runtime.
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
import { D1Store } from '@mastra/cloudflare-d1'
|
|
43
|
+
import { Mastra } from '@mastra/core'
|
|
44
|
+
import { CloudflareDeployer } from '@mastra/deployer-cloudflare'
|
|
45
|
+
|
|
46
|
+
type Env = {
|
|
47
|
+
D1Database: D1Database // TypeScript type definition
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Factory function to create Mastra with D1 binding
|
|
51
|
+
function createMastra(env: Env) {
|
|
52
|
+
const storage = new D1Store({
|
|
53
|
+
binding: env.D1Database, // ✅ Access the actual binding from env
|
|
54
|
+
tablePrefix: 'dev_', // Optional: isolate tables per environment
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
return new Mastra({
|
|
58
|
+
storage,
|
|
59
|
+
deployer: new CloudflareDeployer({
|
|
60
|
+
name: 'my-worker',
|
|
61
|
+
d1_databases: [
|
|
62
|
+
{
|
|
63
|
+
binding: 'D1Database', // Must match the property name in Env type
|
|
64
|
+
database_name: 'your-database-name',
|
|
65
|
+
database_id: 'your-database-id',
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
}),
|
|
69
|
+
})
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Cloudflare Worker export
|
|
73
|
+
export default {
|
|
74
|
+
async fetch(request: Request, env: Env, ctx: ExecutionContext) {
|
|
75
|
+
const mastra = createMastra(env)
|
|
76
|
+
|
|
77
|
+
// Your handler logic here
|
|
78
|
+
return new Response('Hello from Mastra with D1!')
|
|
79
|
+
},
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
> **Important: Understanding D1 Bindings:** In the `Env` type definition, `D1Database: D1Database` serves two purposes:
|
|
84
|
+
>
|
|
85
|
+
> - The **property name** (`D1Database`) must match the `binding` name in your `wrangler.toml`
|
|
86
|
+
> - The **type** (`: D1Database`) is from `@cloudflare/workers-types` for TypeScript type checking
|
|
87
|
+
>
|
|
88
|
+
> At runtime, Cloudflare Workers provides the actual D1 database instance via `env.D1Database`. You cannot use `D1Database` directly outside of the worker's context.
|
|
89
|
+
|
|
90
|
+
### Using with REST API
|
|
91
|
+
|
|
92
|
+
For non-Workers environments (Node.js, serverless functions, etc.), use the REST API approach:
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
import { D1Store } from '@mastra/cloudflare-d1'
|
|
96
|
+
|
|
97
|
+
const storage = new D1Store({
|
|
98
|
+
accountId: process.env.CLOUDFLARE_ACCOUNT_ID!, // Cloudflare Account ID
|
|
99
|
+
databaseId: process.env.CLOUDFLARE_D1_DATABASE_ID!, // D1 Database ID
|
|
100
|
+
apiToken: process.env.CLOUDFLARE_API_TOKEN!, // Cloudflare API Token
|
|
101
|
+
tablePrefix: 'dev_', // Optional: isolate tables per environment
|
|
102
|
+
})
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Wrangler Configuration
|
|
106
|
+
|
|
107
|
+
Add the D1 database binding to your `wrangler.toml`:
|
|
108
|
+
|
|
109
|
+
```toml
|
|
110
|
+
[[d1_databases]]
|
|
111
|
+
binding = "D1Database" # Must match the property name in your Env type
|
|
112
|
+
database_name = "your-database-name"
|
|
113
|
+
database_id = "your-database-id"
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Or in `wrangler.jsonc`:
|
|
117
|
+
|
|
118
|
+
```jsonc
|
|
119
|
+
{
|
|
120
|
+
"d1_databases": [
|
|
121
|
+
{
|
|
122
|
+
"binding": "D1Database",
|
|
123
|
+
"database_name": "your-database-name",
|
|
124
|
+
"database_id": "your-database-id",
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Parameters
|
|
131
|
+
|
|
132
|
+
**binding?:** (`D1Database`): Cloudflare D1 Workers binding (for Workers runtime)
|
|
133
|
+
|
|
134
|
+
**accountId?:** (`string`): Cloudflare Account ID (for REST API)
|
|
135
|
+
|
|
136
|
+
**databaseId?:** (`string`): Cloudflare D1 Database ID (for REST API)
|
|
137
|
+
|
|
138
|
+
**apiToken?:** (`string`): Cloudflare API Token (for REST API)
|
|
139
|
+
|
|
140
|
+
**tablePrefix?:** (`string`): Optional prefix for all table names (useful for environment isolation)
|
|
141
|
+
|
|
142
|
+
## Additional Notes
|
|
143
|
+
|
|
144
|
+
### Schema Management
|
|
145
|
+
|
|
146
|
+
The storage implementation handles schema creation and updates automatically. It creates the following tables:
|
|
147
|
+
|
|
148
|
+
- `threads`: Stores conversation threads
|
|
149
|
+
- `messages`: Stores individual messages
|
|
150
|
+
- `metadata`: Stores additional metadata for threads and messages
|
|
151
|
+
|
|
152
|
+
### Initialization
|
|
153
|
+
|
|
154
|
+
When you pass storage to the Mastra class, `init()` is called automatically before any storage operation:
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
import { Mastra } from '@mastra/core'
|
|
158
|
+
import { D1Store } from '@mastra/cloudflare-d1'
|
|
159
|
+
|
|
160
|
+
type Env = {
|
|
161
|
+
D1Database: D1Database
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// In a Cloudflare Worker
|
|
165
|
+
export default {
|
|
166
|
+
async fetch(request: Request, env: Env, ctx: ExecutionContext) {
|
|
167
|
+
const storage = new D1Store({
|
|
168
|
+
binding: env.D1Database, // ✅ Use env.D1Database
|
|
169
|
+
})
|
|
170
|
+
|
|
171
|
+
const mastra = new Mastra({
|
|
172
|
+
storage, // init() is called automatically
|
|
173
|
+
})
|
|
174
|
+
|
|
175
|
+
// Your handler logic here
|
|
176
|
+
return new Response('Success')
|
|
177
|
+
},
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
If you're using storage directly without Mastra, you must call `init()` explicitly to create the tables:
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
import { D1Store } from '@mastra/cloudflare-d1'
|
|
185
|
+
|
|
186
|
+
type Env = {
|
|
187
|
+
D1Database: D1Database
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// In a Cloudflare Worker
|
|
191
|
+
export default {
|
|
192
|
+
async fetch(request: Request, env: Env, ctx: ExecutionContext) {
|
|
193
|
+
const storage = new D1Store({
|
|
194
|
+
id: 'd1-storage',
|
|
195
|
+
binding: env.D1Database, // ✅ Use env.D1Database
|
|
196
|
+
})
|
|
197
|
+
|
|
198
|
+
// Required when using storage directly
|
|
199
|
+
await storage.init()
|
|
200
|
+
|
|
201
|
+
// Access domain-specific stores via getStore()
|
|
202
|
+
const memoryStore = await storage.getStore('memory')
|
|
203
|
+
const thread = await memoryStore?.getThreadById({ threadId: '...' })
|
|
204
|
+
|
|
205
|
+
return new Response('Success')
|
|
206
|
+
},
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
> **Warning:** If `init()` is not called, tables won't be created and storage operations will fail silently or throw errors.
|
|
211
|
+
|
|
212
|
+
### Transactions & Consistency
|
|
213
|
+
|
|
214
|
+
Cloudflare D1 provides transactional guarantees for single-row operations. This means that multiple operations can be executed as a single, all-or-nothing unit of work.
|
|
215
|
+
|
|
216
|
+
### Table Creation & Migrations
|
|
217
|
+
|
|
218
|
+
Tables are created automatically when storage is initialized (and can be isolated per environment using the `tablePrefix` option), but advanced schema changes—such as adding columns, changing data types, or modifying indexes—require manual migration and careful planning to avoid data loss.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Cloudflare Storage
|
|
2
|
+
|
|
3
|
+
The Cloudflare KV storage implementation provides a globally distributed, serverless key-value store solution using Cloudflare Workers KV.
|
|
4
|
+
|
|
5
|
+
> **Observability Not Supported:** Cloudflare KV storage **does not support the observability domain**. Traces from the `DefaultExporter` cannot be persisted to KV, and Mastra Studio's observability features won't work with Cloudflare KV as your only storage provider. To enable observability, use [composite storage](https://mastra.ai/reference/storage/composite) to route observability data to a supported provider like ClickHouse or PostgreSQL.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
**npm**:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install @mastra/cloudflare@latest
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**pnpm**:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pnpm add @mastra/cloudflare@latest
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Yarn**:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
yarn add @mastra/cloudflare@latest
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Bun**:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
bun add @mastra/cloudflare@latest
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Usage
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
import { CloudflareStore } from '@mastra/cloudflare'
|
|
37
|
+
|
|
38
|
+
// --- Example 1: Using Workers Binding ---
|
|
39
|
+
const storageWorkers = new CloudflareStore({
|
|
40
|
+
id: 'cloudflare-workers-storage',
|
|
41
|
+
bindings: {
|
|
42
|
+
threads: THREADS_KV, // KVNamespace binding for threads table
|
|
43
|
+
messages: MESSAGES_KV, // KVNamespace binding for messages table
|
|
44
|
+
// Add other tables as needed
|
|
45
|
+
},
|
|
46
|
+
keyPrefix: 'dev_', // Optional: isolate keys per environment
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
// --- Example 2: Using REST API ---
|
|
50
|
+
const storageRest = new CloudflareStore({
|
|
51
|
+
id: 'cloudflare-rest-storage',
|
|
52
|
+
accountId: process.env.CLOUDFLARE_ACCOUNT_ID!, // Cloudflare Account ID
|
|
53
|
+
apiToken: process.env.CLOUDFLARE_API_TOKEN!, // Cloudflare API Token
|
|
54
|
+
namespacePrefix: 'dev_', // Optional: isolate namespaces per environment
|
|
55
|
+
})
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Parameters
|
|
59
|
+
|
|
60
|
+
**id:** (`string`): Unique identifier for this storage instance.
|
|
61
|
+
|
|
62
|
+
**bindings?:** (`Record<string, KVNamespace>`): Cloudflare Workers KV bindings (for Workers runtime)
|
|
63
|
+
|
|
64
|
+
**accountId?:** (`string`): Cloudflare Account ID (for REST API)
|
|
65
|
+
|
|
66
|
+
**apiToken?:** (`string`): Cloudflare API Token (for REST API)
|
|
67
|
+
|
|
68
|
+
**namespacePrefix?:** (`string`): Optional prefix for all namespace names (useful for environment isolation)
|
|
69
|
+
|
|
70
|
+
**keyPrefix?:** (`string`): Optional prefix for all keys (useful for environment isolation)
|
|
71
|
+
|
|
72
|
+
### Additional Notes
|
|
73
|
+
|
|
74
|
+
### Schema Management
|
|
75
|
+
|
|
76
|
+
The storage implementation handles schema creation and updates automatically. It creates the following tables:
|
|
77
|
+
|
|
78
|
+
- `threads`: Stores conversation threads
|
|
79
|
+
- `messages`: Stores individual messages
|
|
80
|
+
- `metadata`: Stores additional metadata for threads and messages
|
|
81
|
+
|
|
82
|
+
### Consistency & Propagation
|
|
83
|
+
|
|
84
|
+
Cloudflare KV is an eventually consistent store, meaning that data may not be immediately available across all regions after a write.
|
|
85
|
+
|
|
86
|
+
### Key Structure & Namespacing
|
|
87
|
+
|
|
88
|
+
Keys in Cloudflare KV are structured as a combination of a configurable prefix and a table-specific format (e.g., `threads:threadId`). For Workers deployments, `keyPrefix` is used to isolate data within a namespace; for REST API deployments, `namespacePrefix` is used to isolate entire namespaces between environments or applications.
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# Composite Storage
|
|
2
|
+
|
|
3
|
+
`MastraCompositeStore` can compose storage domains from different providers. Use it when you need different databases for different purposes. For example, use LibSQL for memory and PostgreSQL for workflows.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
`MastraCompositeStore` is included in `@mastra/core`:
|
|
8
|
+
|
|
9
|
+
**npm**:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install @mastra/core@latest
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**pnpm**:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pnpm add @mastra/core@latest
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Yarn**:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
yarn add @mastra/core@latest
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Bun**:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
bun add @mastra/core@latest
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
You'll also need to install the storage providers you want to compose:
|
|
34
|
+
|
|
35
|
+
**npm**:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm install @mastra/pg@latest @mastra/libsql@latest
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**pnpm**:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pnpm add @mastra/pg@latest @mastra/libsql@latest
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Yarn**:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
yarn add @mastra/pg@latest @mastra/libsql@latest
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Bun**:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
bun add @mastra/pg@latest @mastra/libsql@latest
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Storage domains
|
|
60
|
+
|
|
61
|
+
Mastra organizes storage into five specialized domains, each handling a specific type of data. Each domain can be backed by a different storage adapter, and domain classes are exported from each storage package.
|
|
62
|
+
|
|
63
|
+
| Domain | Description |
|
|
64
|
+
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
65
|
+
| `memory` | Conversation persistence for agents. Stores threads (conversation sessions), messages, resources (user identities), and working memory (persistent context across conversations). |
|
|
66
|
+
| `workflows` | Workflow execution state. When workflows suspend for human input, external events, or scheduled resumption, their state is persisted here to enable resumption after server restarts. |
|
|
67
|
+
| `scores` | Evaluation results from Mastra's evals system. Scores and metrics are persisted here for analysis and comparison over time. |
|
|
68
|
+
| `observability` | Telemetry data including traces and spans. Agent interactions, tool calls, and LLM requests generate spans collected into traces for debugging and performance analysis. |
|
|
69
|
+
| `agents` | Agent configurations for stored agents. Enables agents to be defined and updated at runtime without code deployments. |
|
|
70
|
+
|
|
71
|
+
## Usage
|
|
72
|
+
|
|
73
|
+
### Basic composition
|
|
74
|
+
|
|
75
|
+
Import domain classes directly from each store package and compose them:
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
import { MastraCompositeStore } from '@mastra/core/storage'
|
|
79
|
+
import { WorkflowsPG, ScoresPG } from '@mastra/pg'
|
|
80
|
+
import { MemoryLibSQL } from '@mastra/libsql'
|
|
81
|
+
import { Mastra } from '@mastra/core'
|
|
82
|
+
|
|
83
|
+
export const mastra = new Mastra({
|
|
84
|
+
storage: new MastraCompositeStore({
|
|
85
|
+
id: 'composite',
|
|
86
|
+
domains: {
|
|
87
|
+
memory: new MemoryLibSQL({ url: 'file:./local.db' }),
|
|
88
|
+
workflows: new WorkflowsPG({ connectionString: process.env.DATABASE_URL }),
|
|
89
|
+
scores: new ScoresPG({ connectionString: process.env.DATABASE_URL }),
|
|
90
|
+
},
|
|
91
|
+
}),
|
|
92
|
+
})
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### With a default storage
|
|
96
|
+
|
|
97
|
+
Use `default` to specify a fallback storage, then override specific domains:
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
import { MastraCompositeStore } from '@mastra/core/storage'
|
|
101
|
+
import { PostgresStore } from '@mastra/pg'
|
|
102
|
+
import { MemoryLibSQL } from '@mastra/libsql'
|
|
103
|
+
import { Mastra } from '@mastra/core'
|
|
104
|
+
|
|
105
|
+
const pgStore = new PostgresStore({
|
|
106
|
+
id: 'pg',
|
|
107
|
+
connectionString: process.env.DATABASE_URL,
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
export const mastra = new Mastra({
|
|
111
|
+
storage: new MastraCompositeStore({
|
|
112
|
+
id: 'composite',
|
|
113
|
+
default: pgStore,
|
|
114
|
+
domains: {
|
|
115
|
+
memory: new MemoryLibSQL({ url: 'file:./local.db' }),
|
|
116
|
+
},
|
|
117
|
+
}),
|
|
118
|
+
})
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Options
|
|
122
|
+
|
|
123
|
+
**id:** (`string`): Unique identifier for this storage instance.
|
|
124
|
+
|
|
125
|
+
**default?:** (`MastraCompositeStore`): Default storage adapter. Domains not explicitly specified in \`domains\` will use this storage's domains as fallbacks.
|
|
126
|
+
|
|
127
|
+
**domains?:** (`object`): Individual domain overrides. Each domain can come from a different storage adapter. These take precedence over the default storage.
|
|
128
|
+
|
|
129
|
+
**domains.memory?:** (`MemoryStorage`): Storage for threads, messages, and resources.
|
|
130
|
+
|
|
131
|
+
**domains.workflows?:** (`WorkflowsStorage`): Storage for workflow snapshots.
|
|
132
|
+
|
|
133
|
+
**domains.scores?:** (`ScoresStorage`): Storage for evaluation scores.
|
|
134
|
+
|
|
135
|
+
**domains.observability?:** (`ObservabilityStorage`): Storage for traces and spans.
|
|
136
|
+
|
|
137
|
+
**domains.agents?:** (`AgentsStorage`): Storage for stored agent configurations.
|
|
138
|
+
|
|
139
|
+
**disableInit?:** (`boolean`): When true, automatic initialization is disabled. You must call init() explicitly.
|
|
140
|
+
|
|
141
|
+
## Initialization
|
|
142
|
+
|
|
143
|
+
`MastraCompositeStore` initializes each configured domain independently. When passed to the Mastra class, `init()` is called automatically:
|
|
144
|
+
|
|
145
|
+
```typescript
|
|
146
|
+
import { MastraCompositeStore } from '@mastra/core/storage'
|
|
147
|
+
import { MemoryPG, WorkflowsPG, ScoresPG } from '@mastra/pg'
|
|
148
|
+
import { Mastra } from '@mastra/core'
|
|
149
|
+
|
|
150
|
+
const storage = new MastraCompositeStore({
|
|
151
|
+
id: 'composite',
|
|
152
|
+
domains: {
|
|
153
|
+
memory: new MemoryPG({ connectionString: process.env.DATABASE_URL }),
|
|
154
|
+
workflows: new WorkflowsPG({ connectionString: process.env.DATABASE_URL }),
|
|
155
|
+
scores: new ScoresPG({ connectionString: process.env.DATABASE_URL }),
|
|
156
|
+
},
|
|
157
|
+
})
|
|
158
|
+
|
|
159
|
+
export const mastra = new Mastra({
|
|
160
|
+
storage, // init() called automatically
|
|
161
|
+
})
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
If using storage directly, call `init()` explicitly:
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
import { MastraCompositeStore } from '@mastra/core/storage'
|
|
168
|
+
import { MemoryPG } from '@mastra/pg'
|
|
169
|
+
|
|
170
|
+
const storage = new MastraCompositeStore({
|
|
171
|
+
id: 'composite',
|
|
172
|
+
domains: {
|
|
173
|
+
memory: new MemoryPG({ connectionString: process.env.DATABASE_URL }),
|
|
174
|
+
},
|
|
175
|
+
})
|
|
176
|
+
|
|
177
|
+
await storage.init()
|
|
178
|
+
|
|
179
|
+
// Access domain-specific stores via getStore()
|
|
180
|
+
const memoryStore = await storage.getStore('memory')
|
|
181
|
+
const thread = await memoryStore?.getThreadById({ threadId: '...' })
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Use cases
|
|
185
|
+
|
|
186
|
+
### Separate databases for different workloads
|
|
187
|
+
|
|
188
|
+
Use a local database for development while keeping production data in a managed service:
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
import { MastraCompositeStore } from '@mastra/core/storage'
|
|
192
|
+
import { MemoryPG, WorkflowsPG, ScoresPG } from '@mastra/pg'
|
|
193
|
+
import { MemoryLibSQL } from '@mastra/libsql'
|
|
194
|
+
|
|
195
|
+
const storage = new MastraCompositeStore({
|
|
196
|
+
id: 'composite',
|
|
197
|
+
domains: {
|
|
198
|
+
// Use local SQLite for development, PostgreSQL for production
|
|
199
|
+
memory:
|
|
200
|
+
process.env.NODE_ENV === 'development'
|
|
201
|
+
? new MemoryLibSQL({ url: 'file:./dev.db' })
|
|
202
|
+
: new MemoryPG({ connectionString: process.env.DATABASE_URL }),
|
|
203
|
+
workflows: new WorkflowsPG({ connectionString: process.env.DATABASE_URL }),
|
|
204
|
+
scores: new ScoresPG({ connectionString: process.env.DATABASE_URL }),
|
|
205
|
+
},
|
|
206
|
+
})
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Specialized storage for observability
|
|
210
|
+
|
|
211
|
+
Observability data can quickly overwhelm general-purpose databases in production. A single agent interaction can generate hundreds of spans, and high-traffic applications can produce thousands of traces per day.
|
|
212
|
+
|
|
213
|
+
**ClickHouse** is recommended for production observability because it's optimized for high-volume, write-heavy analytics workloads. Use composite storage to route observability to ClickHouse while keeping other data in your primary database:
|
|
214
|
+
|
|
215
|
+
```typescript
|
|
216
|
+
import { MastraCompositeStore } from '@mastra/core/storage'
|
|
217
|
+
import { MemoryPG, WorkflowsPG, ScoresPG } from '@mastra/pg'
|
|
218
|
+
import { ObservabilityStorageClickhouse } from '@mastra/clickhouse'
|
|
219
|
+
|
|
220
|
+
const storage = new MastraCompositeStore({
|
|
221
|
+
id: 'composite',
|
|
222
|
+
domains: {
|
|
223
|
+
memory: new MemoryPG({ connectionString: process.env.DATABASE_URL }),
|
|
224
|
+
workflows: new WorkflowsPG({ connectionString: process.env.DATABASE_URL }),
|
|
225
|
+
scores: new ScoresPG({ connectionString: process.env.DATABASE_URL }),
|
|
226
|
+
observability: new ObservabilityStorageClickhouse({
|
|
227
|
+
url: process.env.CLICKHOUSE_URL,
|
|
228
|
+
username: process.env.CLICKHOUSE_USERNAME,
|
|
229
|
+
password: process.env.CLICKHOUSE_PASSWORD,
|
|
230
|
+
}),
|
|
231
|
+
},
|
|
232
|
+
})
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
> **Info:** This approach is also required when using storage providers that don't support observability (like Convex, DynamoDB, or Cloudflare). See the [DefaultExporter documentation](https://mastra.ai/docs/observability/tracing/exporters/default) for the full list of supported providers.
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# Convex Storage
|
|
2
|
+
|
|
3
|
+
The Convex storage implementation provides a serverless storage solution using [Convex](https://convex.dev), a full-stack TypeScript development platform with real-time sync and automatic caching.
|
|
4
|
+
|
|
5
|
+
> **Observability Not Supported:** Convex storage **does not support the observability domain**. Traces from the `DefaultExporter` cannot be persisted to Convex, and Mastra Studio's observability features won't work with Convex as your only storage provider. To enable observability, use [composite storage](https://mastra.ai/reference/storage/composite) to route observability data to a supported provider like ClickHouse or PostgreSQL.
|
|
6
|
+
|
|
7
|
+
> **Record Size Limit:** Convex enforces a **1 MiB maximum record size**. This limit can be exceeded when storing messages with base64-encoded attachments such as images. See [Handling large attachments](https://mastra.ai/docs/memory/storage) for workarounds including uploading attachments to external storage like S3, Cloudflare R2, or [Convex file storage](https://docs.convex.dev/file-storage).
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
**npm**:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install @mastra/convex@latest
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**pnpm**:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pnpm add @mastra/convex@latest
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Yarn**:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
yarn add @mastra/convex@latest
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Bun**:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
bun add @mastra/convex@latest
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Convex Setup
|
|
36
|
+
|
|
37
|
+
Before using `ConvexStore`, you need to set up the Convex schema and storage handler in your Convex project.
|
|
38
|
+
|
|
39
|
+
### 1. Set up Convex Schema
|
|
40
|
+
|
|
41
|
+
In `convex/schema.ts`:
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import { defineSchema } from 'convex/server'
|
|
45
|
+
import {
|
|
46
|
+
mastraThreadsTable,
|
|
47
|
+
mastraMessagesTable,
|
|
48
|
+
mastraResourcesTable,
|
|
49
|
+
mastraWorkflowSnapshotsTable,
|
|
50
|
+
mastraScoresTable,
|
|
51
|
+
mastraVectorIndexesTable,
|
|
52
|
+
mastraVectorsTable,
|
|
53
|
+
mastraDocumentsTable,
|
|
54
|
+
} from '@mastra/convex/schema'
|
|
55
|
+
|
|
56
|
+
export default defineSchema({
|
|
57
|
+
mastra_threads: mastraThreadsTable,
|
|
58
|
+
mastra_messages: mastraMessagesTable,
|
|
59
|
+
mastra_resources: mastraResourcesTable,
|
|
60
|
+
mastra_workflow_snapshots: mastraWorkflowSnapshotsTable,
|
|
61
|
+
mastra_scorers: mastraScoresTable,
|
|
62
|
+
mastra_vector_indexes: mastraVectorIndexesTable,
|
|
63
|
+
mastra_vectors: mastraVectorsTable,
|
|
64
|
+
mastra_documents: mastraDocumentsTable,
|
|
65
|
+
})
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 2. Create the Storage Handler
|
|
69
|
+
|
|
70
|
+
In `convex/mastra/storage.ts`:
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
import { mastraStorage } from '@mastra/convex/server'
|
|
74
|
+
|
|
75
|
+
export const handle = mastraStorage
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 3. Deploy to Convex
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
npx convex dev
|
|
82
|
+
# or for production
|
|
83
|
+
npx convex deploy
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Usage
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
import { ConvexStore } from '@mastra/convex'
|
|
90
|
+
|
|
91
|
+
const storage = new ConvexStore({
|
|
92
|
+
id: 'convex-storage',
|
|
93
|
+
deploymentUrl: process.env.CONVEX_URL!,
|
|
94
|
+
adminAuthToken: process.env.CONVEX_ADMIN_KEY!,
|
|
95
|
+
})
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Parameters
|
|
99
|
+
|
|
100
|
+
**deploymentUrl:** (`string`): Convex deployment URL (e.g., https\://your-project.convex.cloud)
|
|
101
|
+
|
|
102
|
+
**adminAuthToken:** (`string`): Convex admin authentication token for backend access
|
|
103
|
+
|
|
104
|
+
**storageFunction?:** (`string`): Path to the storage mutation function (default: 'mastra/storage:handle') (Default: `mastra/storage:handle`)
|
|
105
|
+
|
|
106
|
+
## Constructor Examples
|
|
107
|
+
|
|
108
|
+
```ts
|
|
109
|
+
import { ConvexStore } from '@mastra/convex'
|
|
110
|
+
|
|
111
|
+
// Basic configuration
|
|
112
|
+
const store = new ConvexStore({
|
|
113
|
+
id: 'convex-storage',
|
|
114
|
+
deploymentUrl: 'https://your-project.convex.cloud',
|
|
115
|
+
adminAuthToken: 'your-admin-token',
|
|
116
|
+
})
|
|
117
|
+
|
|
118
|
+
// With custom storage function path
|
|
119
|
+
const storeCustom = new ConvexStore({
|
|
120
|
+
id: 'convex-storage',
|
|
121
|
+
deploymentUrl: 'https://your-project.convex.cloud',
|
|
122
|
+
adminAuthToken: 'your-admin-token',
|
|
123
|
+
storageFunction: 'custom/path:handler',
|
|
124
|
+
})
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Additional Notes
|
|
128
|
+
|
|
129
|
+
### Schema Management
|
|
130
|
+
|
|
131
|
+
The storage implementation uses typed Convex tables for each Mastra domain:
|
|
132
|
+
|
|
133
|
+
| Domain | Convex Table | Purpose |
|
|
134
|
+
| --------- | --------------------------- | -------------------- |
|
|
135
|
+
| Threads | `mastra_threads` | Conversation threads |
|
|
136
|
+
| Messages | `mastra_messages` | Chat messages |
|
|
137
|
+
| Resources | `mastra_resources` | User working memory |
|
|
138
|
+
| Workflows | `mastra_workflow_snapshots` | Workflow state |
|
|
139
|
+
| Scorers | `mastra_scorers` | Evaluation data |
|
|
140
|
+
| Fallback | `mastra_documents` | Unknown tables |
|
|
141
|
+
|
|
142
|
+
### Architecture
|
|
143
|
+
|
|
144
|
+
All typed tables include:
|
|
145
|
+
|
|
146
|
+
- An `id` field for Mastra's record ID (distinct from Convex's auto-generated `_id`)
|
|
147
|
+
- A `by_record_id` index for efficient lookups by Mastra ID
|
|
148
|
+
|
|
149
|
+
This design ensures compatibility with Mastra's storage contract while leveraging Convex's automatic indexing and real-time capabilities.
|
|
150
|
+
|
|
151
|
+
### Environment Variables
|
|
152
|
+
|
|
153
|
+
Set these environment variables for your deployment:
|
|
154
|
+
|
|
155
|
+
- `CONVEX_URL` – Your Convex deployment URL
|
|
156
|
+
- `CONVEX_ADMIN_KEY` – Admin authentication token (get from Convex dashboard)
|
|
157
|
+
|
|
158
|
+
## Related
|
|
159
|
+
|
|
160
|
+
- [Convex Vector Store](https://mastra.ai/reference/vectors/convex)
|
|
161
|
+
- [Convex Documentation](https://docs.convex.dev/)
|