@mastra/mcp-docs-server 1.0.0-beta.8 → 1.0.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/organized/changelogs/%40internal%2Fchangeset-cli.md +1 -13
- package/.docs/organized/changelogs/%40internal%2Fexternal-types.md +1 -5
- package/.docs/organized/changelogs/%40internal%2Fplayground.md +40 -0
- package/.docs/organized/changelogs/%40internal%2Fstorage-test-utils.md +8 -8
- package/.docs/organized/changelogs/%40internal%2Ftypes-builder.md +1 -53
- package/.docs/organized/changelogs/%40mastra%2Fagent-builder.md +287 -287
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +315 -315
- package/.docs/organized/changelogs/%40mastra%2Fastra.md +53 -53
- package/.docs/organized/changelogs/%40mastra%2Fauth.md +38 -0
- package/.docs/organized/changelogs/%40mastra%2Fchroma.md +66 -66
- package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +522 -212
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +658 -196
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare-d1.md +439 -234
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +450 -211
- package/.docs/organized/changelogs/%40mastra%2Fcodemod.md +208 -0
- package/.docs/organized/changelogs/%40mastra%2Fconvex.md +448 -22
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +3341 -271
- package/.docs/organized/changelogs/%40mastra%2Fcouchbase.md +60 -60
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +289 -289
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +90 -90
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +74 -74
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +70 -70
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +247 -220
- package/.docs/organized/changelogs/%40mastra%2Fduckdb.md +70 -0
- package/.docs/organized/changelogs/%40mastra%2Fdynamodb.md +403 -225
- package/.docs/organized/changelogs/%40mastra%2Felasticsearch.md +72 -0
- package/.docs/organized/changelogs/%40mastra%2Fevals.md +145 -145
- package/.docs/organized/changelogs/%40mastra%2Ffastembed.md +54 -0
- package/.docs/organized/changelogs/%40mastra%2Flance.md +456 -226
- package/.docs/organized/changelogs/%40mastra%2Flibsql.md +604 -208
- package/.docs/organized/changelogs/%40mastra%2Floggers.md +71 -71
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +247 -247
- package/.docs/organized/changelogs/%40mastra%2Fmcp-registry-registry.md +28 -28
- package/.docs/organized/changelogs/%40mastra%2Fmcp.md +285 -285
- package/.docs/organized/changelogs/%40mastra%2Fmemory.md +354 -156
- package/.docs/organized/changelogs/%40mastra%2Fmongodb.md +545 -212
- package/.docs/organized/changelogs/%40mastra%2Fmssql.md +481 -202
- package/.docs/organized/changelogs/%40mastra%2Fopensearch.md +194 -194
- package/.docs/organized/changelogs/%40mastra%2Fpg.md +759 -213
- package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +198 -198
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +636 -229
- package/.docs/organized/changelogs/%40mastra%2Fqdrant.md +163 -163
- package/.docs/organized/changelogs/%40mastra%2Frag.md +310 -310
- package/.docs/organized/changelogs/%40mastra%2Freact.md +328 -230
- package/.docs/organized/changelogs/%40mastra%2Fs3vectors.md +64 -0
- package/.docs/organized/changelogs/%40mastra%2Fschema-compat.md +160 -0
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +829 -218
- package/.docs/organized/changelogs/%40mastra%2Fturbopuffer.md +57 -57
- package/.docs/organized/changelogs/%40mastra%2Fupstash.md +479 -232
- package/.docs/organized/changelogs/%40mastra%2Fvectorize.md +53 -53
- package/.docs/organized/changelogs/%40mastra%2Fvoice-azure.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fvoice-cloudflare.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fvoice-deepgram.md +47 -47
- package/.docs/organized/changelogs/%40mastra%2Fvoice-elevenlabs.md +110 -110
- package/.docs/organized/changelogs/%40mastra%2Fvoice-gladia.md +15 -0
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google-gemini-live.md +98 -0
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google.md +54 -54
- package/.docs/organized/changelogs/%40mastra%2Fvoice-murf.md +46 -46
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai-realtime.md +93 -93
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai.md +47 -47
- package/.docs/organized/changelogs/%40mastra%2Fvoice-playai.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fvoice-sarvam.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fvoice-speechify.md +45 -45
- package/.docs/organized/changelogs/create-mastra.md +227 -227
- package/.docs/organized/changelogs/mastra.md +277 -277
- package/.docs/organized/code-examples/a2a.md +2 -2
- package/.docs/organized/code-examples/agent-v6.md +221 -0
- package/.docs/organized/code-examples/agui.md +4 -4
- package/.docs/organized/code-examples/ai-elements.md +3 -3
- package/.docs/organized/code-examples/ai-sdk-useChat.md +2 -2
- package/.docs/organized/code-examples/ai-sdk-v5.md +3 -3
- package/.docs/organized/code-examples/assistant-ui.md +5 -5
- package/.docs/organized/code-examples/bird-checker-with-express.md +1 -1
- package/.docs/organized/code-examples/bird-checker-with-nextjs-and-eval.md +2 -2
- package/.docs/organized/code-examples/bird-checker-with-nextjs.md +3 -3
- package/.docs/organized/code-examples/client-side-tools.md +4 -4
- package/.docs/organized/code-examples/crypto-chatbot.md +5 -5
- package/.docs/organized/code-examples/experimental-auth-weather-agent.md +1 -1
- package/.docs/organized/code-examples/fireworks-r1.md +2 -2
- package/.docs/organized/code-examples/heads-up-game.md +7 -7
- package/.docs/organized/code-examples/inngest.md +1075 -0
- package/.docs/organized/code-examples/mcp-configuration.md +1 -1
- package/.docs/organized/code-examples/mcp-server-adapters.md +3 -4
- package/.docs/organized/code-examples/memory-per-resource-example.md +3 -3
- package/.docs/organized/code-examples/memory-todo-agent.md +1 -1
- package/.docs/organized/code-examples/memory-with-context.md +1 -1
- package/.docs/organized/code-examples/memory-with-processors.md +1 -1
- package/.docs/organized/code-examples/openapi-spec-writer.md +3 -3
- package/.docs/organized/code-examples/processors-with-ai-sdk.md +14 -0
- package/.docs/organized/code-examples/quick-start.md +1 -5
- package/.docs/organized/code-examples/server-app-access.md +3 -3
- package/.docs/organized/code-examples/server-express-adapter.md +1 -1
- package/.docs/organized/code-examples/server-fastify-adapter.md +83 -0
- package/.docs/organized/code-examples/server-hono-adapter.md +3 -3
- package/.docs/organized/code-examples/server-koa-adapter.md +94 -0
- package/.docs/organized/code-examples/stock-price-tool.md +21 -2
- package/.docs/organized/code-examples/workflow-ai-recruiter.md +1 -1
- package/.docs/organized/code-examples/workflow-with-inline-steps.md +1 -1
- package/.docs/organized/code-examples/workflow-with-memory.md +1 -1
- package/.docs/organized/code-examples/workflow-with-separate-steps.md +1 -1
- package/.docs/organized/code-examples/workflow-with-suspend-resume.md +1 -1
- package/.docs/raw/agents/adding-voice.mdx +24 -6
- package/.docs/raw/agents/agent-approval.mdx +209 -12
- package/.docs/raw/agents/agent-memory.mdx +36 -32
- package/.docs/raw/agents/guardrails.mdx +105 -56
- package/.docs/raw/agents/network-approval.mdx +281 -0
- package/.docs/raw/agents/networks.mdx +69 -13
- package/.docs/raw/agents/overview.mdx +43 -25
- package/.docs/raw/agents/processors.mdx +234 -17
- package/.docs/raw/agents/structured-output.mdx +78 -8
- package/.docs/raw/agents/using-tools.mdx +67 -6
- package/.docs/raw/course/01-first-agent/07-creating-your-agent.md +1 -2
- package/.docs/raw/course/01-first-agent/12-connecting-tool-to-agent.md +1 -1
- package/.docs/raw/course/01-first-agent/16-adding-memory-to-agent.md +1 -2
- package/.docs/raw/course/02-agent-tools-mcp/05-updating-your-agent.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/10-updating-agent-instructions-zapier.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/16-updating-agent-instructions-github.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/21-updating-agent-instructions-hackernews.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/27-updating-agent-instructions-filesystem.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/31-enhancing-memory-configuration.md +3 -3
- package/.docs/raw/course/03-agent-memory/04-creating-basic-memory-agent.md +1 -2
- package/.docs/raw/course/03-agent-memory/07-understanding-memory-threads.md +35 -0
- package/.docs/raw/course/03-agent-memory/08-configuring-conversation-history.md +1 -2
- package/.docs/raw/course/03-agent-memory/13-vector-store-configuration.md +1 -1
- package/.docs/raw/course/03-agent-memory/16-configuring-semantic-recall.md +4 -5
- package/.docs/raw/course/03-agent-memory/18-advanced-configuration-semantic-recall.md +1 -1
- package/.docs/raw/course/03-agent-memory/21-configuring-working-memory.md +3 -4
- package/.docs/raw/course/03-agent-memory/22-custom-working-memory-templates.md +3 -4
- package/.docs/raw/course/03-agent-memory/25-combining-memory-features.md +3 -4
- package/.docs/raw/course/03-agent-memory/27-creating-learning-assistant.md +3 -4
- package/.docs/raw/course/04-workflows/11-creating-an-ai-agent.md +2 -3
- package/.docs/raw/deployment/cloud-providers.mdx +22 -0
- package/.docs/raw/deployment/mastra-server.mdx +140 -0
- package/.docs/raw/deployment/monorepo.mdx +106 -42
- package/.docs/raw/deployment/overview.mdx +35 -48
- package/.docs/raw/deployment/web-framework.mdx +17 -19
- package/.docs/raw/deployment/workflow-runners.mdx +16 -0
- package/.docs/raw/evals/built-in-scorers.mdx +2 -0
- package/.docs/raw/evals/custom-scorers.mdx +60 -12
- package/.docs/raw/evals/overview.mdx +6 -6
- package/.docs/raw/evals/running-in-ci.mdx +4 -2
- package/.docs/raw/getting-started/manual-install.mdx +20 -20
- package/.docs/raw/getting-started/mcp-docs-server.mdx +59 -2
- package/.docs/raw/getting-started/project-structure.mdx +2 -2
- package/.docs/raw/getting-started/start.mdx +17 -1
- package/.docs/raw/getting-started/studio.mdx +10 -37
- package/.docs/raw/guides/agent-frameworks/ai-sdk.mdx +151 -0
- package/.docs/raw/guides/build-your-ui/ai-sdk-ui.mdx +1034 -80
- package/.docs/raw/guides/build-your-ui/assistant-ui.mdx +8 -8
- package/.docs/raw/guides/build-your-ui/copilotkit.mdx +32 -11
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/amazon-ec2.mdx +9 -9
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/aws-lambda.mdx +13 -16
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/azure-app-services.mdx +5 -7
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/cloudflare-deployer.mdx +8 -5
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/digital-ocean.mdx +18 -23
- package/.docs/raw/guides/deployment/index.mdx +32 -0
- package/.docs/raw/guides/deployment/inngest.mdx +673 -0
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/netlify-deployer.mdx +7 -3
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/vercel-deployer.mdx +8 -5
- package/.docs/raw/guides/getting-started/astro.mdx +292 -451
- package/.docs/raw/guides/getting-started/express.mdx +72 -153
- package/.docs/raw/guides/getting-started/hono.mdx +227 -0
- package/.docs/raw/guides/getting-started/next-js.mdx +173 -61
- package/.docs/raw/guides/getting-started/nuxt.mdx +505 -0
- package/.docs/raw/guides/getting-started/quickstart.mdx +5 -5
- package/.docs/raw/guides/getting-started/sveltekit.mdx +238 -409
- package/.docs/raw/guides/getting-started/vite-react.mdx +317 -147
- package/.docs/raw/guides/guide/ai-recruiter.mdx +10 -10
- package/.docs/raw/guides/guide/chef-michel.mdx +9 -11
- package/.docs/raw/guides/guide/notes-mcp-server.mdx +15 -15
- package/.docs/raw/guides/guide/research-assistant.mdx +20 -20
- package/.docs/raw/guides/guide/stock-agent.mdx +5 -5
- package/.docs/raw/guides/guide/web-search.mdx +38 -38
- package/.docs/raw/guides/guide/whatsapp-chat-bot.mdx +7 -7
- package/.docs/raw/guides/index.mdx +0 -1
- package/.docs/raw/guides/migrations/ai-sdk-v4-to-v5.mdx +2 -2
- package/.docs/raw/guides/migrations/upgrade-to-v1/agent.mdx +105 -4
- package/.docs/raw/guides/migrations/upgrade-to-v1/cli.mdx +15 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/client.mdx +170 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/deployment.mdx +42 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/mastra.mdx +0 -35
- package/.docs/raw/guides/migrations/upgrade-to-v1/memory.mdx +40 -3
- package/.docs/raw/guides/migrations/upgrade-to-v1/overview.mdx +17 -2
- package/.docs/raw/guides/migrations/upgrade-to-v1/processors.mdx +11 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/rag.mdx +47 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/storage.mdx +271 -25
- package/.docs/raw/guides/migrations/upgrade-to-v1/tools.mdx +3 -3
- package/.docs/raw/guides/migrations/upgrade-to-v1/tracing.mdx +72 -17
- package/.docs/raw/guides/migrations/upgrade-to-v1/vectors.mdx +46 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/workflows.mdx +50 -7
- package/.docs/raw/guides/migrations/vnext-to-standard-apis.mdx +21 -23
- package/.docs/raw/index.mdx +2 -2
- package/.docs/raw/mastra-cloud/deployment.mdx +86 -0
- package/.docs/raw/mastra-cloud/observability.mdx +43 -0
- package/.docs/raw/mastra-cloud/overview.mdx +31 -0
- package/.docs/raw/mastra-cloud/setup.mdx +64 -0
- package/.docs/raw/mastra-cloud/studio.mdx +35 -0
- package/.docs/raw/mcp/overview.mdx +60 -25
- package/.docs/raw/mcp/publishing-mcp-server.mdx +7 -4
- package/.docs/raw/memory/memory-processors.mdx +17 -12
- package/.docs/raw/memory/message-history.mdx +72 -0
- package/.docs/raw/memory/overview.mdx +38 -76
- package/.docs/raw/memory/semantic-recall.mdx +65 -52
- package/.docs/raw/memory/storage.mdx +248 -0
- package/.docs/raw/memory/working-memory.mdx +24 -13
- package/.docs/raw/observability/logging.mdx +16 -15
- package/.docs/raw/observability/overview.mdx +27 -7
- package/.docs/raw/observability/tracing/bridges/otel.mdx +7 -4
- package/.docs/raw/observability/tracing/exporters/arize.mdx +61 -24
- package/.docs/raw/observability/tracing/exporters/braintrust.mdx +32 -22
- package/.docs/raw/observability/tracing/exporters/cloud.mdx +24 -5
- package/.docs/raw/observability/tracing/exporters/datadog.mdx +175 -0
- package/.docs/raw/observability/tracing/exporters/default.mdx +28 -7
- package/.docs/raw/observability/tracing/exporters/laminar.mdx +89 -0
- package/.docs/raw/observability/tracing/exporters/langfuse.mdx +31 -22
- package/.docs/raw/observability/tracing/exporters/langsmith.mdx +33 -3
- package/.docs/raw/observability/tracing/exporters/otel.mdx +194 -22
- package/.docs/raw/observability/tracing/exporters/posthog.mdx +32 -22
- package/.docs/raw/observability/tracing/exporters/sentry.mdx +198 -0
- package/.docs/raw/observability/tracing/overview.mdx +388 -108
- package/.docs/raw/observability/tracing/processors/sensitive-data-filter.mdx +27 -7
- package/.docs/raw/rag/chunking-and-embedding.mdx +22 -33
- package/.docs/raw/rag/graph-rag.mdx +223 -0
- package/.docs/raw/rag/overview.mdx +6 -3
- package/.docs/raw/rag/retrieval.mdx +53 -57
- package/.docs/raw/rag/vector-databases.mdx +55 -31
- package/.docs/raw/reference/agents/agent.mdx +17 -14
- package/.docs/raw/reference/agents/generate.mdx +172 -44
- package/.docs/raw/reference/agents/generateLegacy.mdx +5 -3
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +5 -3
- package/.docs/raw/reference/agents/getDefaultOptions.mdx +5 -3
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +5 -3
- package/.docs/raw/reference/agents/getDescription.mdx +3 -1
- package/.docs/raw/reference/agents/getInstructions.mdx +5 -3
- package/.docs/raw/reference/agents/getLLM.mdx +5 -3
- package/.docs/raw/reference/agents/getMemory.mdx +5 -3
- package/.docs/raw/reference/agents/getModel.mdx +5 -3
- package/.docs/raw/reference/agents/getTools.mdx +4 -2
- package/.docs/raw/reference/agents/getVoice.mdx +4 -2
- package/.docs/raw/reference/agents/listAgents.mdx +4 -2
- package/.docs/raw/reference/agents/listScorers.mdx +5 -3
- package/.docs/raw/reference/agents/listTools.mdx +4 -2
- package/.docs/raw/reference/agents/listWorkflows.mdx +4 -2
- package/.docs/raw/reference/agents/network.mdx +113 -1
- package/.docs/raw/reference/ai-sdk/chat-route.mdx +6 -3
- package/.docs/raw/reference/ai-sdk/handle-chat-stream.mdx +4 -2
- package/.docs/raw/reference/ai-sdk/handle-network-stream.mdx +4 -2
- package/.docs/raw/reference/ai-sdk/handle-workflow-stream.mdx +5 -3
- package/.docs/raw/reference/ai-sdk/network-route.mdx +6 -3
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-stream.mdx +10 -6
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-v4-messages.mdx +130 -0
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-v5-messages.mdx +110 -0
- package/.docs/raw/reference/ai-sdk/with-mastra.mdx +122 -0
- package/.docs/raw/reference/ai-sdk/workflow-route.mdx +7 -4
- package/.docs/raw/reference/auth/auth0.mdx +5 -3
- package/.docs/raw/reference/auth/clerk.mdx +5 -3
- package/.docs/raw/reference/auth/firebase.mdx +6 -5
- package/.docs/raw/reference/auth/jwt.mdx +5 -3
- package/.docs/raw/reference/auth/supabase.mdx +5 -3
- package/.docs/raw/reference/auth/workos.mdx +5 -3
- package/.docs/raw/reference/cli/create-mastra.mdx +12 -10
- package/.docs/raw/reference/cli/mastra.mdx +63 -15
- package/.docs/raw/reference/client-js/agents.mdx +311 -85
- package/.docs/raw/reference/client-js/error-handling.mdx +3 -3
- package/.docs/raw/reference/client-js/logs.mdx +2 -0
- package/.docs/raw/reference/client-js/mastra-client.mdx +6 -4
- package/.docs/raw/reference/client-js/memory.mdx +47 -2
- package/.docs/raw/reference/client-js/observability.mdx +2 -0
- package/.docs/raw/reference/client-js/telemetry.mdx +2 -0
- package/.docs/raw/reference/client-js/tools.mdx +2 -0
- package/.docs/raw/reference/client-js/vectors.mdx +2 -0
- package/.docs/raw/reference/client-js/workflows.mdx +47 -3
- package/.docs/raw/reference/configuration.mdx +761 -0
- package/.docs/raw/reference/core/addGateway.mdx +2 -0
- package/.docs/raw/reference/core/getAgent.mdx +3 -1
- package/.docs/raw/reference/core/getAgentById.mdx +3 -1
- package/.docs/raw/reference/core/getDeployer.mdx +3 -1
- package/.docs/raw/reference/core/getGateway.mdx +2 -0
- package/.docs/raw/reference/core/getGatewayById.mdx +2 -0
- package/.docs/raw/reference/core/getLogger.mdx +3 -1
- package/.docs/raw/reference/core/getMCPServer.mdx +3 -1
- package/.docs/raw/reference/core/getMCPServerById.mdx +3 -1
- package/.docs/raw/reference/core/getMemory.mdx +77 -0
- package/.docs/raw/reference/core/getScorer.mdx +2 -0
- package/.docs/raw/reference/core/getScorerById.mdx +2 -0
- package/.docs/raw/reference/core/getServer.mdx +6 -4
- package/.docs/raw/reference/core/getStorage.mdx +5 -3
- package/.docs/raw/reference/core/getStoredAgentById.mdx +185 -0
- package/.docs/raw/reference/core/getTelemetry.mdx +3 -1
- package/.docs/raw/reference/core/getVector.mdx +3 -1
- package/.docs/raw/reference/core/getWorkflow.mdx +3 -1
- package/.docs/raw/reference/core/listAgents.mdx +3 -1
- package/.docs/raw/reference/core/listGateways.mdx +2 -0
- package/.docs/raw/reference/core/listLogs.mdx +3 -1
- package/.docs/raw/reference/core/listLogsByRunId.mdx +3 -1
- package/.docs/raw/reference/core/listMCPServers.mdx +3 -1
- package/.docs/raw/reference/core/listMemory.mdx +74 -0
- package/.docs/raw/reference/core/listScorers.mdx +2 -0
- package/.docs/raw/reference/core/listStoredAgents.mdx +153 -0
- package/.docs/raw/reference/core/listVectors.mdx +3 -1
- package/.docs/raw/reference/core/listWorkflows.mdx +3 -1
- package/.docs/raw/reference/core/mastra-class.mdx +35 -20
- package/.docs/raw/reference/core/mastra-model-gateway.mdx +2 -0
- package/.docs/raw/reference/core/setLogger.mdx +3 -1
- package/.docs/raw/reference/core/setStorage.mdx +6 -4
- package/.docs/raw/reference/deployer/cloudflare.mdx +22 -53
- package/.docs/raw/reference/deployer/deployer.mdx +2 -1
- package/.docs/raw/reference/deployer/netlify.mdx +4 -1
- package/.docs/raw/reference/deployer/vercel.mdx +5 -4
- package/.docs/raw/reference/evals/answer-relevancy.mdx +4 -1
- package/.docs/raw/reference/evals/answer-similarity.mdx +4 -1
- package/.docs/raw/reference/evals/bias.mdx +4 -1
- package/.docs/raw/reference/evals/completeness.mdx +4 -1
- package/.docs/raw/reference/evals/content-similarity.mdx +4 -1
- package/.docs/raw/reference/evals/context-precision.mdx +4 -1
- package/.docs/raw/reference/evals/context-relevance.mdx +2 -0
- package/.docs/raw/reference/evals/create-scorer.mdx +11 -3
- package/.docs/raw/reference/evals/faithfulness.mdx +4 -1
- package/.docs/raw/reference/evals/hallucination.mdx +4 -1
- package/.docs/raw/reference/evals/keyword-coverage.mdx +4 -1
- package/.docs/raw/reference/evals/mastra-scorer.mdx +2 -0
- package/.docs/raw/reference/evals/noise-sensitivity.mdx +2 -0
- package/.docs/raw/reference/evals/prompt-alignment.mdx +9 -7
- package/.docs/raw/reference/evals/run-evals.mdx +3 -1
- package/.docs/raw/reference/evals/scorer-utils.mdx +3 -0
- package/.docs/raw/reference/evals/textual-difference.mdx +4 -1
- package/.docs/raw/reference/evals/tone-consistency.mdx +4 -1
- package/.docs/raw/reference/evals/tool-call-accuracy.mdx +25 -23
- package/.docs/raw/reference/evals/toxicity.mdx +4 -1
- package/.docs/raw/reference/index.mdx +2 -1
- package/.docs/raw/reference/logging/pino-logger.mdx +10 -8
- package/.docs/raw/reference/memory/clone-utilities.mdx +345 -0
- package/.docs/raw/reference/memory/cloneThread.mdx +237 -0
- package/.docs/raw/reference/memory/createThread.mdx +6 -4
- package/.docs/raw/reference/memory/deleteMessages.mdx +4 -2
- package/.docs/raw/reference/memory/getThreadById.mdx +3 -1
- package/.docs/raw/reference/memory/listThreads.mdx +187 -0
- package/.docs/raw/reference/memory/memory-class.mdx +27 -20
- package/.docs/raw/reference/memory/recall.mdx +6 -4
- package/.docs/raw/reference/observability/tracing/bridges/otel.mdx +6 -2
- package/.docs/raw/reference/observability/tracing/configuration.mdx +51 -0
- package/.docs/raw/reference/observability/tracing/exporters/arize.mdx +25 -6
- package/.docs/raw/reference/observability/tracing/exporters/braintrust.mdx +23 -2
- package/.docs/raw/reference/observability/tracing/exporters/cloud-exporter.mdx +10 -0
- package/.docs/raw/reference/observability/tracing/exporters/console-exporter.mdx +3 -0
- package/.docs/raw/reference/observability/tracing/exporters/datadog.mdx +172 -0
- package/.docs/raw/reference/observability/tracing/exporters/default-exporter.mdx +10 -0
- package/.docs/raw/reference/observability/tracing/exporters/laminar.mdx +139 -0
- package/.docs/raw/reference/observability/tracing/exporters/langfuse.mdx +26 -4
- package/.docs/raw/reference/observability/tracing/exporters/langsmith.mdx +10 -0
- package/.docs/raw/reference/observability/tracing/exporters/otel.mdx +51 -34
- package/.docs/raw/reference/observability/tracing/exporters/posthog.mdx +25 -4
- package/.docs/raw/reference/observability/tracing/exporters/sentry.mdx +224 -0
- package/.docs/raw/reference/observability/tracing/instances.mdx +2 -0
- package/.docs/raw/reference/observability/tracing/interfaces.mdx +20 -0
- package/.docs/raw/reference/observability/tracing/processors/sensitive-data-filter.mdx +2 -0
- package/.docs/raw/reference/observability/tracing/spans.mdx +2 -0
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +4 -2
- package/.docs/raw/reference/processors/language-detector.mdx +6 -3
- package/.docs/raw/reference/processors/message-history-processor.mdx +5 -2
- package/.docs/raw/reference/processors/moderation-processor.mdx +6 -4
- package/.docs/raw/reference/processors/pii-detector.mdx +6 -4
- package/.docs/raw/reference/processors/processor-interface.mdx +326 -23
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +5 -3
- package/.docs/raw/reference/processors/semantic-recall-processor.mdx +7 -2
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +5 -3
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +62 -19
- package/.docs/raw/reference/processors/tool-call-filter.mdx +5 -3
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +6 -3
- package/.docs/raw/reference/processors/working-memory-processor.mdx +6 -3
- package/.docs/raw/reference/rag/chunk.mdx +7 -6
- package/.docs/raw/reference/rag/database-config.mdx +8 -6
- package/.docs/raw/reference/rag/document.mdx +2 -0
- package/.docs/raw/reference/rag/embeddings.mdx +2 -0
- package/.docs/raw/reference/rag/extract-params.mdx +57 -3
- package/.docs/raw/reference/rag/graph-rag.mdx +2 -0
- package/.docs/raw/reference/rag/metadata-filters.mdx +27 -7
- package/.docs/raw/reference/rag/rerank.mdx +2 -0
- package/.docs/raw/reference/rag/rerankWithScorer.mdx +2 -0
- package/.docs/raw/reference/server/create-route.mdx +34 -18
- package/.docs/raw/reference/server/express-adapter.mdx +78 -50
- package/.docs/raw/reference/server/fastify-adapter.mdx +130 -0
- package/.docs/raw/reference/server/hono-adapter.mdx +78 -48
- package/.docs/raw/reference/server/koa-adapter.mdx +129 -0
- package/.docs/raw/reference/server/mastra-server.mdx +52 -34
- package/.docs/raw/reference/server/routes.mdx +73 -10
- package/.docs/raw/reference/storage/cloudflare-d1.mdx +10 -5
- package/.docs/raw/reference/storage/cloudflare.mdx +12 -2
- package/.docs/raw/reference/storage/composite.mdx +245 -0
- package/.docs/raw/reference/storage/convex.mdx +8 -6
- package/.docs/raw/reference/storage/dynamodb.mdx +134 -8
- package/.docs/raw/reference/storage/lance.mdx +9 -5
- package/.docs/raw/reference/storage/libsql.mdx +76 -54
- package/.docs/raw/reference/storage/mongodb.mdx +115 -16
- package/.docs/raw/reference/storage/mssql.mdx +11 -6
- package/.docs/raw/{server-db/storage.mdx → reference/storage/overview.mdx} +15 -111
- package/.docs/raw/reference/storage/postgresql.mdx +228 -83
- package/.docs/raw/reference/storage/upstash.mdx +78 -2
- package/.docs/raw/reference/streaming/ChunkType.mdx +31 -3
- package/.docs/raw/reference/streaming/agents/MastraModelOutput.mdx +67 -6
- package/.docs/raw/reference/streaming/agents/stream.mdx +48 -51
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +5 -3
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +3 -1
- package/.docs/raw/reference/streaming/workflows/resumeStream.mdx +3 -1
- package/.docs/raw/reference/streaming/workflows/stream.mdx +37 -22
- package/.docs/raw/reference/streaming/workflows/timeTravelStream.mdx +6 -4
- package/.docs/raw/reference/templates/overview.mdx +3 -2
- package/.docs/raw/reference/tools/client.mdx +3 -0
- package/.docs/raw/reference/tools/create-tool.mdx +127 -5
- package/.docs/raw/reference/tools/document-chunker-tool.mdx +2 -0
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +40 -3
- package/.docs/raw/reference/tools/mcp-client.mdx +110 -1
- package/.docs/raw/reference/tools/mcp-server.mdx +278 -24
- package/.docs/raw/reference/tools/vector-query-tool.mdx +68 -4
- package/.docs/raw/reference/vectors/astra.mdx +5 -3
- package/.docs/raw/reference/vectors/chroma.mdx +5 -3
- package/.docs/raw/reference/vectors/convex.mdx +14 -12
- package/.docs/raw/reference/vectors/couchbase.mdx +7 -5
- package/.docs/raw/reference/vectors/duckdb.mdx +12 -10
- package/.docs/raw/reference/vectors/elasticsearch.mdx +12 -4
- package/.docs/raw/reference/vectors/lance.mdx +6 -4
- package/.docs/raw/reference/vectors/libsql.mdx +66 -13
- package/.docs/raw/reference/vectors/mongodb.mdx +90 -10
- package/.docs/raw/reference/vectors/opensearch.mdx +30 -3
- package/.docs/raw/reference/vectors/pg.mdx +58 -6
- package/.docs/raw/reference/vectors/pinecone.mdx +23 -8
- package/.docs/raw/reference/vectors/qdrant.mdx +148 -4
- package/.docs/raw/reference/vectors/s3vectors.mdx +8 -6
- package/.docs/raw/reference/vectors/turbopuffer.mdx +6 -4
- package/.docs/raw/reference/vectors/upstash.mdx +60 -6
- package/.docs/raw/reference/vectors/vectorize.mdx +5 -3
- package/.docs/raw/reference/voice/azure.mdx +2 -0
- package/.docs/raw/reference/voice/cloudflare.mdx +2 -0
- package/.docs/raw/reference/voice/composite-voice.mdx +4 -0
- package/.docs/raw/reference/voice/deepgram.mdx +2 -0
- package/.docs/raw/reference/voice/elevenlabs.mdx +2 -0
- package/.docs/raw/reference/voice/google-gemini-live.mdx +3 -0
- package/.docs/raw/reference/voice/google.mdx +2 -0
- package/.docs/raw/reference/voice/mastra-voice.mdx +2 -0
- package/.docs/raw/reference/voice/murf.mdx +2 -0
- package/.docs/raw/reference/voice/openai-realtime.mdx +3 -0
- package/.docs/raw/reference/voice/openai.mdx +2 -0
- package/.docs/raw/reference/voice/playai.mdx +2 -0
- package/.docs/raw/reference/voice/sarvam.mdx +2 -0
- package/.docs/raw/reference/voice/speechify.mdx +2 -0
- package/.docs/raw/reference/voice/voice.addInstructions.mdx +3 -0
- package/.docs/raw/reference/voice/voice.addTools.mdx +3 -0
- package/.docs/raw/reference/voice/voice.answer.mdx +4 -0
- package/.docs/raw/reference/voice/voice.close.mdx +3 -0
- package/.docs/raw/reference/voice/voice.connect.mdx +5 -1
- package/.docs/raw/reference/voice/voice.events.mdx +2 -0
- package/.docs/raw/reference/voice/voice.getSpeakers.mdx +3 -0
- package/.docs/raw/reference/voice/voice.listen.mdx +6 -0
- package/.docs/raw/reference/voice/voice.off.mdx +2 -0
- package/.docs/raw/reference/voice/voice.on.mdx +5 -1
- package/.docs/raw/reference/voice/voice.send.mdx +4 -0
- package/.docs/raw/reference/voice/voice.speak.mdx +6 -0
- package/.docs/raw/reference/voice/voice.updateConfig.mdx +2 -0
- package/.docs/raw/reference/workflows/run-methods/cancel.mdx +55 -5
- package/.docs/raw/reference/workflows/run-methods/restart.mdx +3 -3
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +6 -4
- package/.docs/raw/reference/workflows/run-methods/start.mdx +7 -5
- package/.docs/raw/reference/workflows/run-methods/startAsync.mdx +145 -0
- package/.docs/raw/reference/workflows/run-methods/timeTravel.mdx +10 -8
- package/.docs/raw/reference/workflows/run.mdx +11 -3
- package/.docs/raw/reference/workflows/step.mdx +56 -3
- package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +3 -1
- package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +3 -1
- package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +39 -2
- package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +3 -1
- package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +3 -1
- package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +71 -4
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +9 -7
- package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +3 -1
- package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +4 -6
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +4 -6
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +3 -1
- package/.docs/raw/reference/workflows/workflow.mdx +193 -2
- package/.docs/raw/{auth → server/auth}/auth0.mdx +40 -21
- package/.docs/raw/{auth → server/auth}/clerk.mdx +37 -16
- package/.docs/raw/{auth → server/auth}/firebase.mdx +47 -25
- package/.docs/raw/{auth → server/auth}/index.mdx +8 -6
- package/.docs/raw/{auth → server/auth}/jwt.mdx +22 -10
- package/.docs/raw/{auth → server/auth}/supabase.mdx +45 -25
- package/.docs/raw/{auth → server/auth}/workos.mdx +39 -20
- package/.docs/raw/{server-db → server}/custom-adapters.mdx +40 -24
- package/.docs/raw/{server-db → server}/custom-api-routes.mdx +6 -6
- package/.docs/raw/{server-db → server}/mastra-client.mdx +35 -38
- package/.docs/raw/server/mastra-server.mdx +86 -0
- package/.docs/raw/{server-db → server}/middleware.mdx +11 -9
- package/.docs/raw/{server-db → server}/request-context.mdx +85 -43
- package/.docs/raw/server/server-adapters.mdx +410 -0
- package/.docs/raw/streaming/events.mdx +16 -7
- package/.docs/raw/streaming/overview.mdx +30 -17
- package/.docs/raw/streaming/tool-streaming.mdx +15 -17
- package/.docs/raw/streaming/workflow-streaming.mdx +8 -8
- package/.docs/raw/tools-mcp/advanced-usage.mdx +4 -2
- package/.docs/raw/tools-mcp/mcp-overview.mdx +46 -12
- package/.docs/raw/tools-mcp/overview.mdx +14 -13
- package/.docs/raw/voice/overview.mdx +17 -2
- package/.docs/raw/voice/speech-to-speech.mdx +5 -0
- package/.docs/raw/voice/speech-to-text.mdx +4 -0
- package/.docs/raw/voice/text-to-speech.mdx +3 -0
- package/.docs/raw/workflows/agents-and-tools.mdx +70 -21
- package/.docs/raw/workflows/control-flow.mdx +369 -34
- package/.docs/raw/workflows/error-handling.mdx +192 -18
- package/.docs/raw/workflows/human-in-the-loop.mdx +8 -7
- package/.docs/raw/workflows/input-data-mapping.mdx +9 -7
- package/.docs/raw/workflows/overview.mdx +80 -34
- package/.docs/raw/workflows/snapshots.mdx +19 -45
- package/.docs/raw/workflows/suspend-and-resume.mdx +14 -14
- package/.docs/raw/workflows/time-travel.mdx +25 -21
- package/.docs/raw/workflows/workflow-state.mdx +7 -8
- package/CHANGELOG.md +254 -0
- package/README.md +36 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/stdio.js +746 -49
- package/dist/tools/course.d.ts.map +1 -1
- package/dist/tools/embedded-docs.d.ts +276 -0
- package/dist/tools/embedded-docs.d.ts.map +1 -0
- package/package.json +9 -8
- package/.docs/organized/changelogs/%40internal%2Fai-sdk-v4.md +0 -1
- package/.docs/raw/deployment/building-mastra.mdx +0 -73
- package/.docs/raw/deployment/cloud-providers/index.mdx +0 -55
- package/.docs/raw/deployment/mastra-cloud/dashboard.mdx +0 -100
- package/.docs/raw/deployment/mastra-cloud/observability.mdx +0 -53
- package/.docs/raw/deployment/mastra-cloud/overview.mdx +0 -65
- package/.docs/raw/deployment/mastra-cloud/setting-up.mdx +0 -105
- package/.docs/raw/memory/conversation-history.mdx +0 -24
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +0 -140
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +0 -150
- package/.docs/raw/memory/storage/memory-with-pg.mdx +0 -138
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +0 -146
- package/.docs/raw/memory/threads-and-resources.mdx +0 -95
- package/.docs/raw/reference/core/setTelemetry.mdx +0 -36
- package/.docs/raw/reference/memory/listThreadsByResourceId.mdx +0 -110
- package/.docs/raw/reference/memory/query.mdx +0 -189
- package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +0 -70
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +0 -66
- package/.docs/raw/server-db/mastra-server.mdx +0 -97
- package/.docs/raw/server-db/server-adapters.mdx +0 -286
- package/.docs/raw/workflows/inngest-workflow.mdx +0 -363
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Agent Approval | Agents"
|
|
3
|
-
description: Learn how to require approvals
|
|
3
|
+
description: Learn how to require approvals, suspend tool execution, and automatically resume suspended tools while keeping humans in control of agent workflows.
|
|
4
|
+
packages:
|
|
5
|
+
- "@mastra/core"
|
|
6
|
+
- "@mastra/libsql"
|
|
7
|
+
- "@mastra/memory"
|
|
4
8
|
---
|
|
5
9
|
|
|
6
10
|
# Agent Approval
|
|
@@ -20,7 +24,6 @@ import { Mastra } from "@mastra/core/mastra";
|
|
|
20
24
|
import { LibSQLStore } from "@mastra/libsql";
|
|
21
25
|
|
|
22
26
|
export const mastra = new Mastra({
|
|
23
|
-
// ...
|
|
24
27
|
storage: new LibSQLStore({
|
|
25
28
|
id: "mastra-storage",
|
|
26
29
|
url: ":memory:"
|
|
@@ -33,7 +36,7 @@ export const mastra = new Mastra({
|
|
|
33
36
|
|
|
34
37
|
When calling an agent using `.stream()` set `requireToolApproval` to `true` which will prevent the agent from calling any of the tools defined in its configuration.
|
|
35
38
|
|
|
36
|
-
```typescript
|
|
39
|
+
```typescript
|
|
37
40
|
const stream = await agent.stream("What's the weather in London?", {
|
|
38
41
|
requireToolApproval: true
|
|
39
42
|
});
|
|
@@ -43,7 +46,7 @@ const stream = await agent.stream("What's the weather in London?", {
|
|
|
43
46
|
|
|
44
47
|
To approve a tool call, access `approveToolCall` from the `agent`, passing in the `runId` of the stream. This will let the agent know its now OK to call its tools.
|
|
45
48
|
|
|
46
|
-
```typescript
|
|
49
|
+
```typescript
|
|
47
50
|
const handleApproval = async () => {
|
|
48
51
|
const approvedStream = await agent.approveToolCall({ runId: stream.runId });
|
|
49
52
|
|
|
@@ -58,7 +61,7 @@ const handleApproval = async () => {
|
|
|
58
61
|
|
|
59
62
|
To decline a tool call, access the `declineToolCall` from the `agent`. You will see the streamed response from the agent, but it won't call its tools.
|
|
60
63
|
|
|
61
|
-
```typescript
|
|
64
|
+
```typescript
|
|
62
65
|
const handleDecline = async () => {
|
|
63
66
|
const declinedStream = await agent.declineToolCall({ runId: stream.runId });
|
|
64
67
|
|
|
@@ -69,6 +72,67 @@ const handleDecline = async () => {
|
|
|
69
72
|
};
|
|
70
73
|
```
|
|
71
74
|
|
|
75
|
+
## Tool approval with generate()
|
|
76
|
+
|
|
77
|
+
Tool approval also works with the `generate()` method for non-streaming use cases. When using `generate()` with `requireToolApproval: true`, the method returns immediately when a tool requires approval instead of executing it.
|
|
78
|
+
|
|
79
|
+
### How it works
|
|
80
|
+
|
|
81
|
+
When a tool requires approval during a `generate()` call, the response includes:
|
|
82
|
+
|
|
83
|
+
- `finishReason: 'suspended'` - indicates the agent is waiting for approval
|
|
84
|
+
- `suspendPayload` - contains tool call details (`toolCallId`, `toolName`, `args`)
|
|
85
|
+
- `runId` - needed to approve or decline the tool call
|
|
86
|
+
|
|
87
|
+
### Approving tool calls
|
|
88
|
+
|
|
89
|
+
To approve a tool call with `generate()`, use the `approveToolCallGenerate` method:
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
const output = await agent.generate("Find user John", {
|
|
93
|
+
requireToolApproval: true,
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
if (output.finishReason === "suspended") {
|
|
97
|
+
console.log("Tool requires approval:", output.suspendPayload.toolName);
|
|
98
|
+
console.log("Arguments:", output.suspendPayload.args);
|
|
99
|
+
|
|
100
|
+
// Approve the tool call and get the final result
|
|
101
|
+
const result = await agent.approveToolCallGenerate({
|
|
102
|
+
runId: output.runId,
|
|
103
|
+
toolCallId: output.suspendPayload.toolCallId,
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
console.log("Final result:", result.text);
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Declining tool calls
|
|
111
|
+
|
|
112
|
+
To decline a tool call, use the `declineToolCallGenerate` method:
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
if (output.finishReason === "suspended") {
|
|
116
|
+
const result = await agent.declineToolCallGenerate({
|
|
117
|
+
runId: output.runId,
|
|
118
|
+
toolCallId: output.suspendPayload.toolCallId,
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// Agent will respond acknowledging the declined tool
|
|
122
|
+
console.log(result.text);
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Stream vs Generate comparison
|
|
127
|
+
|
|
128
|
+
| Aspect | `stream()` | `generate()` |
|
|
129
|
+
|--------|-----------|--------------|
|
|
130
|
+
| Response type | Streaming chunks | Complete response |
|
|
131
|
+
| Approval detection | `tool-call-approval` chunk | `finishReason: 'suspended'` |
|
|
132
|
+
| Approve method | `approveToolCall({ runId })` | `approveToolCallGenerate({ runId, toolCallId })` |
|
|
133
|
+
| Decline method | `declineToolCall({ runId })` | `declineToolCallGenerate({ runId, toolCallId })` |
|
|
134
|
+
| Result | Stream to iterate | Full output object |
|
|
135
|
+
|
|
72
136
|
## Tool-level approval
|
|
73
137
|
|
|
74
138
|
There are two types of tool call approval. The first uses `requireApproval`, which is a property on the tool definition, while `requireToolApproval` is a parameter passed to `agent.stream()`. The second uses `suspend` and lets the agent provide context or confirmation prompts so the user can decide whether the tool call should continue.
|
|
@@ -90,8 +154,8 @@ export const testTool = createTool({
|
|
|
90
154
|
resumeSchema: z.object({
|
|
91
155
|
approved: z.boolean()
|
|
92
156
|
}),
|
|
93
|
-
execute: async (
|
|
94
|
-
const response = await fetch(`https://wttr.in/${location}?format=3`);
|
|
157
|
+
execute: async (inputData) => {
|
|
158
|
+
const response = await fetch(`https://wttr.in/${inputData.location}?format=3`);
|
|
95
159
|
const weather = await response.text();
|
|
96
160
|
|
|
97
161
|
return { weather };
|
|
@@ -127,7 +191,6 @@ const handleResume = async () => {
|
|
|
127
191
|
With this approach, neither the agent nor the tool uses `requireApproval`. Instead, the tool implementation calls `suspend` to pause execution and return context or confirmation prompts to the user.
|
|
128
192
|
|
|
129
193
|
```typescript
|
|
130
|
-
|
|
131
194
|
export const testToolB = createTool({
|
|
132
195
|
id: "test-tool-b",
|
|
133
196
|
description: "Fetches weather for a location",
|
|
@@ -143,14 +206,14 @@ export const testToolB = createTool({
|
|
|
143
206
|
suspendSchema: z.object({
|
|
144
207
|
reason: z.string()
|
|
145
208
|
}),
|
|
146
|
-
execute: async (
|
|
147
|
-
const { resumeData: { approved } = {}, suspend } = agent ?? {};
|
|
209
|
+
execute: async (inputData, context) => {
|
|
210
|
+
const { resumeData: { approved } = {}, suspend } = context?.agent ?? {};
|
|
148
211
|
|
|
149
212
|
if (!approved) {
|
|
150
213
|
return suspend?.({ reason: "Approval required." });
|
|
151
214
|
}
|
|
152
215
|
|
|
153
|
-
const response = await fetch(`https://wttr.in/${location}?format=3`);
|
|
216
|
+
const response = await fetch(`https://wttr.in/${inputData.location}?format=3`);
|
|
154
217
|
const weather = await response.text();
|
|
155
218
|
|
|
156
219
|
return { weather };
|
|
@@ -180,10 +243,144 @@ const handleResume = async () => {
|
|
|
180
243
|
|
|
181
244
|
```
|
|
182
245
|
|
|
246
|
+
## Automatic tool resumption
|
|
247
|
+
|
|
248
|
+
When using tools that call `suspend()`, you can enable automatic resumption so the agent resumes suspended tools based on the user's next message. This creates a conversational flow where users provide the required information naturally, without your application needing to call `resumeStream()` explicitly.
|
|
249
|
+
|
|
250
|
+
### Enabling auto-resume
|
|
251
|
+
|
|
252
|
+
Set `autoResumeSuspendedTools` to `true` in the agent's default options or when calling `stream()`:
|
|
253
|
+
|
|
254
|
+
```typescript
|
|
255
|
+
import { Agent } from "@mastra/core/agent";
|
|
256
|
+
import { Memory } from "@mastra/memory";
|
|
257
|
+
|
|
258
|
+
// Option 1: In agent configuration
|
|
259
|
+
const agent = new Agent({
|
|
260
|
+
id: "my-agent",
|
|
261
|
+
name: "My Agent",
|
|
262
|
+
instructions: "You are a helpful assistant",
|
|
263
|
+
model: "openai/gpt-4o-mini",
|
|
264
|
+
tools: { weatherTool },
|
|
265
|
+
memory: new Memory(),
|
|
266
|
+
defaultOptions: {
|
|
267
|
+
autoResumeSuspendedTools: true,
|
|
268
|
+
},
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
// Option 2: Per-request
|
|
272
|
+
const stream = await agent.stream("What's the weather?", {
|
|
273
|
+
autoResumeSuspendedTools: true,
|
|
274
|
+
});
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### How it works
|
|
278
|
+
|
|
279
|
+
When `autoResumeSuspendedTools` is enabled:
|
|
280
|
+
|
|
281
|
+
1. A tool suspends execution by calling `suspend()` with a payload (e.g., requesting more information)
|
|
282
|
+
2. The suspension is persisted to memory along with the conversation
|
|
283
|
+
3. When the user sends their next message on the same thread, the agent:
|
|
284
|
+
- Detects the suspended tool from message history
|
|
285
|
+
- Extracts `resumeData` from the user's message based on the tool's `resumeSchema`
|
|
286
|
+
- Automatically resumes the tool with the extracted data
|
|
287
|
+
|
|
288
|
+
### Example
|
|
289
|
+
|
|
290
|
+
```typescript
|
|
291
|
+
import { createTool } from "@mastra/core/tools";
|
|
292
|
+
import { z } from "zod";
|
|
293
|
+
|
|
294
|
+
export const weatherTool = createTool({
|
|
295
|
+
id: "weather-info",
|
|
296
|
+
description: "Fetches weather information for a city",
|
|
297
|
+
suspendSchema: z.object({
|
|
298
|
+
message: z.string(),
|
|
299
|
+
}),
|
|
300
|
+
resumeSchema: z.object({
|
|
301
|
+
city: z.string(),
|
|
302
|
+
}),
|
|
303
|
+
execute: async (_inputData, context) => {
|
|
304
|
+
// Check if this is a resume with data
|
|
305
|
+
if (!context?.agent?.resumeData) {
|
|
306
|
+
// First call - suspend and ask for the city
|
|
307
|
+
return context?.agent?.suspend({
|
|
308
|
+
message: "What city do you want to know the weather for?",
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
// Resume call - city was extracted from user's message
|
|
313
|
+
const { city } = context.agent.resumeData;
|
|
314
|
+
const response = await fetch(`https://wttr.in/${city}?format=3`);
|
|
315
|
+
const weather = await response.text();
|
|
316
|
+
|
|
317
|
+
return { city, weather };
|
|
318
|
+
},
|
|
319
|
+
});
|
|
320
|
+
|
|
321
|
+
const agent = new Agent({
|
|
322
|
+
id: "my-agent",
|
|
323
|
+
name: "My Agent",
|
|
324
|
+
instructions: "You are a helpful assistant",
|
|
325
|
+
model: "openai/gpt-4o-mini",
|
|
326
|
+
tools: { weatherTool },
|
|
327
|
+
memory: new Memory(),
|
|
328
|
+
defaultOptions: {
|
|
329
|
+
autoResumeSuspendedTools: true,
|
|
330
|
+
},
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
const stream = await agent.stream("What's the weather like?");
|
|
334
|
+
|
|
335
|
+
for await (const chunk of stream.fullStream) {
|
|
336
|
+
if (chunk.type === "tool-call-suspended") {
|
|
337
|
+
console.log(chunk.payload.suspendPayload);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
const handleResume = async () => {
|
|
342
|
+
const resumedStream = await agent.stream("San Francisco");
|
|
343
|
+
|
|
344
|
+
for await (const chunk of resumedStream.textStream) {
|
|
345
|
+
process.stdout.write(chunk);
|
|
346
|
+
}
|
|
347
|
+
process.stdout.write("\n");
|
|
348
|
+
};
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
**Conversation flow:**
|
|
352
|
+
|
|
353
|
+
```
|
|
354
|
+
User: "What's the weather like?"
|
|
355
|
+
Agent: "What city do you want to know the weather for?"
|
|
356
|
+
|
|
357
|
+
User: "San Francisco"
|
|
358
|
+
Agent: "The weather in San Francisco is: San Francisco: ☀️ +72°F"
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
The second message automatically resumes the suspended tool - the agent extracts `{ city: "San Francisco" }` from the user's message and passes it as `resumeData`.
|
|
362
|
+
|
|
363
|
+
### Requirements
|
|
364
|
+
|
|
365
|
+
For automatic tool resumption to work:
|
|
366
|
+
|
|
367
|
+
- **Memory configured**: The agent needs memory to track suspended tools across messages
|
|
368
|
+
- **Same thread**: The follow-up message must use the same memory thread and resource identifiers
|
|
369
|
+
- **`resumeSchema` defined**: The tool must define a `resumeSchema` so the agent knows what data structure to extract from the user's message
|
|
370
|
+
|
|
371
|
+
### Manual vs automatic resumption
|
|
372
|
+
|
|
373
|
+
| Approach | Use case |
|
|
374
|
+
|----------|----------|
|
|
375
|
+
| Manual (`resumeStream()`) | Programmatic control, webhooks, button clicks, external triggers |
|
|
376
|
+
| Automatic (`autoResumeSuspendedTools`) | Conversational flows where users provide resume data in natural language |
|
|
377
|
+
|
|
378
|
+
Both approaches work with the same tool definitions. Automatic resumption triggers only when suspended tools exist in the message history and the user sends a new message on the same thread.
|
|
379
|
+
|
|
183
380
|
## Related
|
|
184
381
|
|
|
185
382
|
- [Using Tools](./using-tools)
|
|
186
383
|
- [Agent Overview](./overview)
|
|
187
384
|
- [Tools Overview](../mcp/overview)
|
|
188
385
|
- [Agent Memory](./agent-memory)
|
|
189
|
-
- [Request Context](/docs/v1/server
|
|
386
|
+
- [Request Context](/docs/v1/server/request-context)
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Agent Memory | Agents"
|
|
3
|
-
description: Learn how to add memory to agents to store
|
|
3
|
+
description: Learn how to add memory to agents to store message history and maintain context across interactions.
|
|
4
|
+
packages:
|
|
5
|
+
- "@mastra/core"
|
|
6
|
+
- "@mastra/libsql"
|
|
7
|
+
- "@mastra/memory"
|
|
4
8
|
---
|
|
5
9
|
|
|
6
10
|
import Steps from "@site/src/components/Steps";
|
|
@@ -8,9 +12,9 @@ import StepItem from "@site/src/components/StepItem";
|
|
|
8
12
|
|
|
9
13
|
# Agent memory
|
|
10
14
|
|
|
11
|
-
Agents use memory to maintain context across interactions. LLMs are stateless and don't retain information between calls, so agents need memory to track
|
|
15
|
+
Agents use memory to maintain context across interactions. LLMs are stateless and don't retain information between calls, so agents need memory to track message history and recall relevant information.
|
|
12
16
|
|
|
13
|
-
Mastra agents can be configured to store
|
|
17
|
+
Mastra agents can be configured to store message history, with optional [working memory](../memory/working-memory) to maintain recent context or [semantic recall](../memory/semantic-recall) to retrieve past messages based on meaning.
|
|
14
18
|
|
|
15
19
|
## When to use memory
|
|
16
20
|
|
|
@@ -20,13 +24,13 @@ Use memory when your agent needs to maintain multi-turn conversations that refer
|
|
|
20
24
|
|
|
21
25
|
To enable memory in Mastra, install the `@mastra/memory` package along with a storage provider.
|
|
22
26
|
|
|
23
|
-
```bash npm2yarn
|
|
27
|
+
```bash npm2yarn
|
|
24
28
|
npm install @mastra/memory@beta @mastra/libsql@beta
|
|
25
29
|
```
|
|
26
30
|
|
|
27
31
|
## Storage providers
|
|
28
32
|
|
|
29
|
-
Memory requires a storage provider to persist
|
|
33
|
+
Memory requires a storage provider to persist message history, including user messages and agent responses. For more details on available providers and how storage works in Mastra, see the [Storage](/docs/v1/memory/storage) documentation.
|
|
30
34
|
|
|
31
35
|
## Configuring memory
|
|
32
36
|
|
|
@@ -35,14 +39,13 @@ Memory requires a storage provider to persist conversation history, including us
|
|
|
35
39
|
|
|
36
40
|
Enable memory by creating a `Memory` instance and passing it to the agent’s `memory` option.
|
|
37
41
|
|
|
38
|
-
```typescript {
|
|
42
|
+
```typescript {7-11} title="src/mastra/agents/memory-agent.ts"
|
|
39
43
|
import { Agent } from "@mastra/core/agent";
|
|
40
44
|
import { Memory } from "@mastra/memory";
|
|
41
45
|
|
|
42
46
|
export const memoryAgent = new Agent({
|
|
43
47
|
id: 'memory-agent',
|
|
44
48
|
name: 'Memory Agent',
|
|
45
|
-
// ...
|
|
46
49
|
memory: new Memory({
|
|
47
50
|
options: {
|
|
48
51
|
lastMessages: 20,
|
|
@@ -51,9 +54,9 @@ export const memoryAgent = new Agent({
|
|
|
51
54
|
});
|
|
52
55
|
```
|
|
53
56
|
|
|
54
|
-
:::
|
|
57
|
+
:::info
|
|
55
58
|
|
|
56
|
-
|
|
59
|
+
Visit [Memory Class](/reference/v1/memory/memory-class) for a full list of configuration options.
|
|
57
60
|
|
|
58
61
|
:::
|
|
59
62
|
|
|
@@ -63,12 +66,11 @@ See the [Memory Class](/reference/v1/memory/memory-class) docs for a full list o
|
|
|
63
66
|
|
|
64
67
|
Add a storage provider to your main Mastra instance to enable memory across all configured agents.
|
|
65
68
|
|
|
66
|
-
```typescript {
|
|
69
|
+
```typescript {5-8} title="src/mastra/index.ts"
|
|
67
70
|
import { Mastra } from "@mastra/core";
|
|
68
71
|
import { LibSQLStore } from "@mastra/libsql";
|
|
69
72
|
|
|
70
73
|
export const mastra = new Mastra({
|
|
71
|
-
// ..
|
|
72
74
|
storage: new LibSQLStore({
|
|
73
75
|
id: 'mastra-storage',
|
|
74
76
|
url: ":memory:",
|
|
@@ -76,9 +78,9 @@ export const mastra = new Mastra({
|
|
|
76
78
|
});
|
|
77
79
|
```
|
|
78
80
|
|
|
79
|
-
:::
|
|
81
|
+
:::info
|
|
80
82
|
|
|
81
|
-
|
|
83
|
+
Visit [libSQL Storage](/reference/v1/storage/libsql) for a full list of configuration options.
|
|
82
84
|
|
|
83
85
|
:::
|
|
84
86
|
|
|
@@ -87,7 +89,7 @@ See the [LibSQL Storage](/reference/v1/storage/libsql) docs for a full list of c
|
|
|
87
89
|
|
|
88
90
|
Alternatively, add storage directly to an agent’s memory to keep data separate or use different providers per agent.
|
|
89
91
|
|
|
90
|
-
```typescript {
|
|
92
|
+
```typescript {9-12} title="src/mastra/agents/memory-agent.ts"
|
|
91
93
|
import { Agent } from "@mastra/core/agent";
|
|
92
94
|
import { Memory } from "@mastra/memory";
|
|
93
95
|
import { LibSQLStore } from "@mastra/libsql";
|
|
@@ -95,7 +97,6 @@ import { LibSQLStore } from "@mastra/libsql";
|
|
|
95
97
|
export const memoryAgent = new Agent({
|
|
96
98
|
id: 'memory-agent',
|
|
97
99
|
name: 'Memory Agent',
|
|
98
|
-
// ...
|
|
99
100
|
memory: new Memory({
|
|
100
101
|
storage: new LibSQLStore({
|
|
101
102
|
id: 'mastra-storage',
|
|
@@ -105,16 +106,20 @@ export const memoryAgent = new Agent({
|
|
|
105
106
|
});
|
|
106
107
|
```
|
|
107
108
|
|
|
108
|
-
|
|
109
|
+
:::warning[Mastra Cloud Store limitation]
|
|
110
|
+
Agent-level storage is not supported when using [Mastra Cloud Store](/docs/v1/mastra-cloud/deployment#using-mastra-cloud-store). If you use Mastra Cloud Store, configure storage on the Mastra instance instead. This limitation does not apply if you bring your own database.
|
|
111
|
+
:::
|
|
112
|
+
|
|
113
|
+
## Message history
|
|
109
114
|
|
|
110
|
-
Include a `memory` object with both `resource` and `thread` to track
|
|
115
|
+
Include a `memory` object with both `resource` and `thread` to track message history during agent calls.
|
|
111
116
|
|
|
112
117
|
- `resource`: A stable identifier for the user or entity.
|
|
113
118
|
- `thread`: An ID that isolates a specific conversation or session.
|
|
114
119
|
|
|
115
120
|
These fields tell the agent where to store and retrieve context, enabling persistent, thread-aware memory across a conversation.
|
|
116
121
|
|
|
117
|
-
```typescript {
|
|
122
|
+
```typescript {4-7}
|
|
118
123
|
const response = await memoryAgent.generate(
|
|
119
124
|
"Remember my favorite color is blue.",
|
|
120
125
|
{
|
|
@@ -128,7 +133,7 @@ const response = await memoryAgent.generate(
|
|
|
128
133
|
|
|
129
134
|
To recall information stored in memory, call the agent with the same `resource` and `thread` values used in the original conversation.
|
|
130
135
|
|
|
131
|
-
```typescript {
|
|
136
|
+
```typescript {2-5}
|
|
132
137
|
const response = await memoryAgent.generate("What's my favorite color?", {
|
|
133
138
|
memory: {
|
|
134
139
|
resource: "user-123",
|
|
@@ -137,29 +142,28 @@ const response = await memoryAgent.generate("What's my favorite color?", {
|
|
|
137
142
|
});
|
|
138
143
|
```
|
|
139
144
|
|
|
145
|
+
:::warning
|
|
146
|
+
Each thread has an owner (`resourceId`) that cannot be changed after creation. Avoid reusing the same thread ID for threads with different owners, as this will cause errors when querying.
|
|
147
|
+
:::
|
|
148
|
+
|
|
140
149
|
To learn more about memory see the [Memory](../memory/overview) documentation.
|
|
141
150
|
|
|
142
151
|
## Using `RequestContext`
|
|
143
152
|
|
|
144
|
-
Use [RequestContext](/docs/v1/server
|
|
153
|
+
Use [RequestContext](/docs/v1/server/request-context) to access request-specific values. This lets you conditionally select different memory or storage configurations based on the context of the request.
|
|
145
154
|
|
|
146
|
-
```typescript title="src/mastra/agents/memory-agent.ts"
|
|
155
|
+
```typescript title="src/mastra/agents/memory-agent.ts"
|
|
147
156
|
export type UserTier = {
|
|
148
157
|
"user-tier": "enterprise" | "pro";
|
|
149
158
|
};
|
|
150
159
|
|
|
151
|
-
const premiumMemory = new Memory(
|
|
152
|
-
// ...
|
|
153
|
-
});
|
|
160
|
+
const premiumMemory = new Memory();
|
|
154
161
|
|
|
155
|
-
const standardMemory = new Memory(
|
|
156
|
-
// ...
|
|
157
|
-
});
|
|
162
|
+
const standardMemory = new Memory();
|
|
158
163
|
|
|
159
164
|
export const memoryAgent = new Agent({
|
|
160
165
|
id: 'memory-agent',
|
|
161
166
|
name: 'Memory Agent',
|
|
162
|
-
// ...
|
|
163
167
|
memory: ({ requestContext }) => {
|
|
164
168
|
const userTier = requestContext.get("user-tier") as UserTier["user-tier"];
|
|
165
169
|
|
|
@@ -168,9 +172,9 @@ export const memoryAgent = new Agent({
|
|
|
168
172
|
});
|
|
169
173
|
```
|
|
170
174
|
|
|
171
|
-
:::
|
|
175
|
+
:::info
|
|
172
176
|
|
|
173
|
-
|
|
177
|
+
Visit [Request Context](/docs/v1/server/request-context) for more information.
|
|
174
178
|
|
|
175
179
|
:::
|
|
176
180
|
|
|
@@ -178,5 +182,5 @@ See [Request Context](/docs/v1/server-db/request-context) docs for more informat
|
|
|
178
182
|
|
|
179
183
|
- [Working Memory](../memory/working-memory)
|
|
180
184
|
- [Semantic Recall](../memory/semantic-recall)
|
|
181
|
-
- [
|
|
182
|
-
- [Request Context](/docs/v1/server
|
|
185
|
+
- [Storage](../memory/storage)
|
|
186
|
+
- [Request Context](/docs/v1/server/request-context)
|