@mastra/mcp-docs-server 1.0.0-beta.11 → 1.0.0-beta.14
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/%40mastra%2Fagent-builder.md +29 -29
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +51 -51
- package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +180 -180
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare-d1.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Fconvex.md +68 -0
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +331 -331
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +31 -31
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +16 -16
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +41 -41
- package/.docs/organized/changelogs/%40mastra%2Fdynamodb.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Ffastembed.md +6 -0
- package/.docs/organized/changelogs/%40mastra%2Flance.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Flibsql.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +24 -24
- package/.docs/organized/changelogs/%40mastra%2Fmemory.md +24 -24
- package/.docs/organized/changelogs/%40mastra%2Fmongodb.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Fmssql.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Fpg.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +96 -96
- package/.docs/organized/changelogs/%40mastra%2Frag.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Freact.md +49 -2
- package/.docs/organized/changelogs/%40mastra%2Fschema-compat.md +6 -0
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +122 -122
- package/.docs/organized/changelogs/%40mastra%2Fupstash.md +39 -39
- package/.docs/organized/changelogs/create-mastra.md +31 -31
- package/.docs/organized/changelogs/mastra.md +51 -51
- package/.docs/organized/code-examples/agent-v6.md +151 -0
- package/.docs/organized/code-examples/ai-elements.md +1 -1
- package/.docs/organized/code-examples/quick-start.md +0 -4
- package/.docs/organized/code-examples/stock-price-tool.md +21 -2
- package/.docs/raw/agents/adding-voice.mdx +2 -3
- package/.docs/raw/agents/agent-approval.mdx +139 -6
- package/.docs/raw/agents/agent-memory.mdx +24 -32
- package/.docs/raw/agents/guardrails.mdx +61 -51
- package/.docs/raw/agents/networks.mdx +9 -13
- package/.docs/raw/agents/overview.mdx +40 -24
- package/.docs/raw/agents/processors.mdx +20 -19
- package/.docs/raw/agents/structured-output.mdx +11 -7
- package/.docs/raw/agents/using-tools.mdx +5 -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 +2 -2
- package/.docs/raw/course/03-agent-memory/04-creating-basic-memory-agent.md +1 -2
- package/.docs/raw/course/03-agent-memory/08-configuring-conversation-history.md +1 -2
- package/.docs/raw/course/03-agent-memory/16-configuring-semantic-recall.md +3 -4
- package/.docs/raw/course/03-agent-memory/21-configuring-working-memory.md +2 -3
- package/.docs/raw/course/03-agent-memory/22-custom-working-memory-templates.md +2 -3
- package/.docs/raw/course/03-agent-memory/25-combining-memory-features.md +1 -2
- package/.docs/raw/course/03-agent-memory/27-creating-learning-assistant.md +2 -3
- package/.docs/raw/course/04-workflows/11-creating-an-ai-agent.md +2 -3
- package/.docs/raw/deployment/cloud-providers.mdx +20 -0
- package/.docs/raw/deployment/{building-mastra.mdx → mastra-server.mdx} +5 -5
- package/.docs/raw/deployment/monorepo.mdx +23 -44
- package/.docs/raw/deployment/overview.mdx +32 -50
- package/.docs/raw/deployment/web-framework.mdx +15 -19
- package/.docs/raw/evals/custom-scorers.mdx +9 -6
- package/.docs/raw/evals/overview.mdx +3 -6
- package/.docs/raw/evals/running-in-ci.mdx +2 -2
- package/.docs/raw/getting-started/manual-install.mdx +20 -20
- package/.docs/raw/getting-started/mcp-docs-server.mdx +2 -2
- package/.docs/raw/getting-started/start.mdx +10 -1
- package/.docs/raw/getting-started/studio.mdx +1 -1
- package/.docs/raw/guides/agent-frameworks/ai-sdk.mdx +4 -4
- package/.docs/raw/guides/build-your-ui/ai-sdk-ui.mdx +1033 -79
- package/.docs/raw/guides/build-your-ui/assistant-ui.mdx +8 -8
- package/.docs/raw/guides/build-your-ui/copilotkit.mdx +11 -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 +12 -15
- package/.docs/raw/guides/deployment/index.mdx +32 -0
- package/.docs/raw/guides/deployment/inngest.mdx +386 -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 +170 -61
- package/.docs/raw/guides/getting-started/quickstart.mdx +4 -4
- 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 +17 -17
- package/.docs/raw/guides/guide/stock-agent.mdx +5 -5
- package/.docs/raw/guides/guide/web-search.mdx +8 -8
- package/.docs/raw/guides/guide/whatsapp-chat-bot.mdx +7 -7
- package/.docs/raw/guides/migrations/ai-sdk-v4-to-v5.mdx +2 -2
- package/.docs/raw/guides/migrations/upgrade-to-v1/agent.mdx +1 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/client.mdx +17 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/overview.mdx +6 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/workflows.mdx +0 -2
- package/.docs/raw/guides/migrations/vnext-to-standard-apis.mdx +21 -23
- package/.docs/raw/index.mdx +2 -2
- package/.docs/raw/{deployment/mastra-cloud → mastra-cloud}/dashboard.mdx +2 -6
- package/.docs/raw/{deployment/mastra-cloud → mastra-cloud}/observability.mdx +1 -5
- package/.docs/raw/{deployment/mastra-cloud → mastra-cloud}/overview.mdx +2 -6
- package/.docs/raw/{deployment/mastra-cloud → mastra-cloud}/setting-up.mdx +8 -7
- package/.docs/raw/mcp/overview.mdx +31 -13
- package/.docs/raw/mcp/publishing-mcp-server.mdx +2 -2
- package/.docs/raw/memory/memory-processors.mdx +9 -9
- package/.docs/raw/memory/message-history.mdx +69 -0
- package/.docs/raw/memory/overview.mdx +34 -76
- package/.docs/raw/memory/semantic-recall.mdx +58 -49
- package/.docs/raw/memory/storage.mdx +188 -0
- package/.docs/raw/memory/working-memory.mdx +7 -7
- package/.docs/raw/observability/logging.mdx +10 -11
- package/.docs/raw/observability/overview.mdx +0 -1
- package/.docs/raw/observability/tracing/bridges/otel.mdx +2 -2
- package/.docs/raw/observability/tracing/exporters/cloud.mdx +1 -1
- package/.docs/raw/observability/tracing/exporters/default.mdx +3 -3
- package/.docs/raw/observability/tracing/exporters/langfuse.mdx +1 -2
- package/.docs/raw/observability/tracing/overview.mdx +23 -25
- package/.docs/raw/observability/tracing/processors/sensitive-data-filter.mdx +3 -3
- package/.docs/raw/rag/chunking-and-embedding.mdx +18 -31
- package/.docs/raw/rag/graph-rag.mdx +220 -0
- package/.docs/raw/rag/overview.mdx +2 -3
- package/.docs/raw/rag/retrieval.mdx +34 -51
- package/.docs/raw/rag/vector-databases.mdx +29 -25
- package/.docs/raw/reference/agents/agent.mdx +3 -3
- package/.docs/raw/reference/agents/generate.mdx +1 -1
- package/.docs/raw/reference/agents/generateLegacy.mdx +2 -2
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +3 -3
- package/.docs/raw/reference/agents/getDefaultOptions.mdx +3 -3
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +3 -3
- package/.docs/raw/reference/agents/getDescription.mdx +1 -1
- package/.docs/raw/reference/agents/getInstructions.mdx +3 -3
- package/.docs/raw/reference/agents/getLLM.mdx +3 -3
- package/.docs/raw/reference/agents/getMemory.mdx +3 -3
- package/.docs/raw/reference/agents/getModel.mdx +3 -3
- package/.docs/raw/reference/agents/getTools.mdx +2 -2
- package/.docs/raw/reference/agents/getVoice.mdx +2 -2
- package/.docs/raw/reference/agents/listAgents.mdx +2 -2
- package/.docs/raw/reference/agents/listScorers.mdx +3 -3
- package/.docs/raw/reference/agents/listTools.mdx +2 -2
- package/.docs/raw/reference/agents/listWorkflows.mdx +2 -2
- package/.docs/raw/reference/agents/network.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/chat-route.mdx +3 -3
- package/.docs/raw/reference/ai-sdk/handle-chat-stream.mdx +2 -2
- package/.docs/raw/reference/ai-sdk/handle-network-stream.mdx +2 -2
- package/.docs/raw/reference/ai-sdk/handle-workflow-stream.mdx +2 -2
- package/.docs/raw/reference/ai-sdk/network-route.mdx +3 -3
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-stream.mdx +6 -6
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-v4-messages.mdx +127 -0
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-v5-messages.mdx +107 -0
- package/.docs/raw/reference/ai-sdk/with-mastra.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/workflow-route.mdx +3 -3
- package/.docs/raw/reference/auth/auth0.mdx +2 -3
- package/.docs/raw/reference/auth/clerk.mdx +2 -3
- package/.docs/raw/reference/auth/firebase.mdx +3 -5
- package/.docs/raw/reference/auth/jwt.mdx +2 -3
- package/.docs/raw/reference/auth/supabase.mdx +2 -3
- package/.docs/raw/reference/auth/workos.mdx +2 -3
- package/.docs/raw/reference/cli/create-mastra.mdx +10 -10
- package/.docs/raw/reference/cli/mastra.mdx +10 -10
- package/.docs/raw/reference/client-js/agents.mdx +1 -2
- package/.docs/raw/reference/client-js/mastra-client.mdx +2 -2
- package/.docs/raw/reference/client-js/workflows.mdx +20 -0
- package/.docs/raw/reference/core/getAgent.mdx +1 -1
- package/.docs/raw/reference/core/getAgentById.mdx +1 -1
- package/.docs/raw/reference/core/getDeployer.mdx +1 -1
- package/.docs/raw/reference/core/getLogger.mdx +1 -1
- package/.docs/raw/reference/core/getMCPServer.mdx +1 -1
- package/.docs/raw/reference/core/getMCPServerById.mdx +1 -1
- package/.docs/raw/reference/core/getMemory.mdx +2 -2
- package/.docs/raw/reference/core/getServer.mdx +3 -3
- package/.docs/raw/reference/core/getStorage.mdx +2 -2
- package/.docs/raw/reference/core/getStoredAgentById.mdx +3 -3
- package/.docs/raw/reference/core/getTelemetry.mdx +1 -1
- package/.docs/raw/reference/core/getVector.mdx +1 -1
- package/.docs/raw/reference/core/getWorkflow.mdx +1 -1
- package/.docs/raw/reference/core/listAgents.mdx +1 -1
- package/.docs/raw/reference/core/listLogs.mdx +1 -1
- package/.docs/raw/reference/core/listLogsByRunId.mdx +1 -1
- package/.docs/raw/reference/core/listMCPServers.mdx +1 -1
- package/.docs/raw/reference/core/listMemory.mdx +2 -2
- package/.docs/raw/reference/core/listStoredAgents.mdx +4 -4
- package/.docs/raw/reference/core/listVectors.mdx +1 -1
- package/.docs/raw/reference/core/listWorkflows.mdx +1 -1
- package/.docs/raw/reference/core/setLogger.mdx +1 -1
- package/.docs/raw/reference/core/setStorage.mdx +2 -2
- package/.docs/raw/reference/core/setTelemetry.mdx +1 -1
- package/.docs/raw/reference/deployer/cloudflare.mdx +1 -2
- package/.docs/raw/reference/deployer/deployer.mdx +0 -1
- package/.docs/raw/reference/deployer/netlify.mdx +1 -1
- package/.docs/raw/reference/deployer/vercel.mdx +2 -4
- package/.docs/raw/reference/evals/answer-relevancy.mdx +1 -1
- package/.docs/raw/reference/evals/answer-similarity.mdx +1 -1
- package/.docs/raw/reference/evals/bias.mdx +1 -1
- package/.docs/raw/reference/evals/completeness.mdx +1 -1
- package/.docs/raw/reference/evals/content-similarity.mdx +1 -1
- package/.docs/raw/reference/evals/context-precision.mdx +1 -1
- package/.docs/raw/reference/evals/faithfulness.mdx +1 -1
- package/.docs/raw/reference/evals/hallucination.mdx +1 -1
- package/.docs/raw/reference/evals/keyword-coverage.mdx +1 -1
- package/.docs/raw/reference/evals/prompt-alignment.mdx +7 -7
- package/.docs/raw/reference/evals/textual-difference.mdx +1 -1
- package/.docs/raw/reference/evals/tone-consistency.mdx +1 -1
- package/.docs/raw/reference/evals/tool-call-accuracy.mdx +10 -10
- package/.docs/raw/reference/evals/toxicity.mdx +1 -1
- package/.docs/raw/reference/logging/pino-logger.mdx +7 -8
- package/.docs/raw/reference/memory/createThread.mdx +2 -2
- package/.docs/raw/reference/memory/deleteMessages.mdx +2 -2
- package/.docs/raw/reference/memory/listThreadsByResourceId.mdx +2 -2
- package/.docs/raw/reference/memory/memory-class.mdx +3 -3
- package/.docs/raw/reference/memory/query.mdx +2 -2
- package/.docs/raw/reference/memory/recall.mdx +2 -2
- package/.docs/raw/reference/observability/tracing/exporters/langfuse.mdx +1 -1
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +2 -2
- package/.docs/raw/reference/processors/language-detector.mdx +2 -2
- package/.docs/raw/reference/processors/message-history-processor.mdx +2 -2
- package/.docs/raw/reference/processors/moderation-processor.mdx +3 -3
- package/.docs/raw/reference/processors/pii-detector.mdx +3 -3
- package/.docs/raw/reference/processors/processor-interface.mdx +13 -13
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +2 -2
- package/.docs/raw/reference/processors/semantic-recall-processor.mdx +2 -2
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +2 -2
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +2 -2
- package/.docs/raw/reference/processors/tool-call-filter.mdx +3 -3
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +2 -2
- package/.docs/raw/reference/processors/working-memory-processor.mdx +3 -3
- package/.docs/raw/reference/rag/chunk.mdx +1 -1
- package/.docs/raw/reference/rag/database-config.mdx +1 -1
- package/.docs/raw/reference/rag/extract-params.mdx +2 -2
- package/.docs/raw/reference/rag/metadata-filters.mdx +7 -7
- package/.docs/raw/reference/server/create-route.mdx +14 -14
- package/.docs/raw/reference/server/express-adapter.mdx +10 -11
- package/.docs/raw/reference/server/hono-adapter.mdx +10 -11
- package/.docs/raw/reference/server/mastra-server.mdx +22 -22
- package/.docs/raw/reference/server/routes.mdx +28 -1
- package/.docs/raw/reference/storage/cloudflare-d1.mdx +3 -3
- package/.docs/raw/reference/storage/cloudflare.mdx +2 -2
- package/.docs/raw/reference/storage/convex.mdx +6 -6
- package/.docs/raw/reference/storage/dynamodb.mdx +4 -4
- package/.docs/raw/reference/storage/lance.mdx +3 -3
- package/.docs/raw/reference/storage/libsql.mdx +69 -54
- package/.docs/raw/reference/storage/mongodb.mdx +80 -7
- package/.docs/raw/reference/storage/mssql.mdx +4 -4
- package/.docs/raw/{server-db/storage.mdx → reference/storage/overview.mdx} +13 -111
- package/.docs/raw/reference/storage/postgresql.mdx +78 -7
- package/.docs/raw/reference/storage/upstash.mdx +74 -2
- package/.docs/raw/reference/streaming/agents/stream.mdx +27 -5
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +2 -2
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/resumeStream.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/stream.mdx +35 -22
- package/.docs/raw/reference/streaming/workflows/timeTravelStream.mdx +4 -4
- package/.docs/raw/reference/templates/overview.mdx +1 -2
- package/.docs/raw/reference/tools/create-tool.mdx +24 -5
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +3 -3
- package/.docs/raw/reference/tools/vector-query-tool.mdx +4 -4
- package/.docs/raw/reference/vectors/astra.mdx +3 -3
- package/.docs/raw/reference/vectors/chroma.mdx +3 -3
- package/.docs/raw/reference/vectors/convex.mdx +12 -12
- package/.docs/raw/reference/vectors/couchbase.mdx +5 -5
- package/.docs/raw/reference/vectors/duckdb.mdx +10 -10
- package/.docs/raw/reference/vectors/elasticsearch.mdx +4 -4
- package/.docs/raw/reference/vectors/lance.mdx +4 -4
- package/.docs/raw/reference/vectors/libsql.mdx +61 -11
- package/.docs/raw/reference/vectors/mongodb.mdx +58 -5
- package/.docs/raw/reference/vectors/pg.mdx +53 -6
- package/.docs/raw/reference/vectors/pinecone.mdx +3 -3
- package/.docs/raw/reference/vectors/qdrant.mdx +3 -3
- package/.docs/raw/reference/vectors/s3vectors.mdx +6 -6
- package/.docs/raw/reference/vectors/turbopuffer.mdx +4 -4
- package/.docs/raw/reference/vectors/upstash.mdx +55 -6
- package/.docs/raw/reference/vectors/vectorize.mdx +3 -3
- package/.docs/raw/reference/workflows/run-methods/cancel.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/restart.mdx +1 -3
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/start.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/startAsync.mdx +143 -0
- package/.docs/raw/reference/workflows/run-methods/timeTravel.mdx +5 -5
- package/.docs/raw/reference/workflows/run.mdx +1 -1
- package/.docs/raw/reference/workflows/step.mdx +3 -3
- package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +37 -2
- package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +6 -6
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +7 -7
- package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow.mdx +17 -3
- package/.docs/raw/{auth → server/auth}/auth0.mdx +20 -14
- package/.docs/raw/{auth → server/auth}/clerk.mdx +16 -9
- package/.docs/raw/{auth → server/auth}/firebase.mdx +21 -15
- package/.docs/raw/{auth → server/auth}/index.mdx +6 -6
- package/.docs/raw/{auth → server/auth}/jwt.mdx +14 -7
- package/.docs/raw/{auth → server/auth}/supabase.mdx +16 -9
- package/.docs/raw/{auth → server/auth}/workos.mdx +19 -13
- package/.docs/raw/{server-db → server}/custom-adapters.mdx +13 -13
- package/.docs/raw/{server-db → server}/custom-api-routes.mdx +3 -5
- package/.docs/raw/{server-db → server}/mastra-client.mdx +26 -15
- package/.docs/raw/{server-db → server}/mastra-server.mdx +8 -8
- package/.docs/raw/{server-db → server}/middleware.mdx +9 -9
- package/.docs/raw/{server-db → server}/request-context.mdx +33 -32
- package/.docs/raw/{server-db → server}/server-adapters.mdx +12 -12
- package/.docs/raw/streaming/events.mdx +14 -7
- package/.docs/raw/streaming/overview.mdx +21 -10
- package/.docs/raw/streaming/tool-streaming.mdx +6 -6
- package/.docs/raw/streaming/workflow-streaming.mdx +6 -8
- package/.docs/raw/tools-mcp/advanced-usage.mdx +2 -2
- package/.docs/raw/tools-mcp/mcp-overview.mdx +31 -12
- package/.docs/raw/tools-mcp/overview.mdx +10 -11
- package/.docs/raw/voice/overview.mdx +1 -1
- package/.docs/raw/workflows/agents-and-tools.mdx +28 -19
- package/.docs/raw/workflows/control-flow.mdx +27 -40
- package/.docs/raw/workflows/error-handling.mdx +172 -18
- package/.docs/raw/workflows/human-in-the-loop.mdx +6 -7
- package/.docs/raw/workflows/inngest-workflow.mdx +8 -9
- package/.docs/raw/workflows/input-data-mapping.mdx +7 -7
- package/.docs/raw/workflows/overview.mdx +34 -23
- package/.docs/raw/workflows/snapshots.mdx +14 -44
- package/.docs/raw/workflows/suspend-and-resume.mdx +7 -7
- package/.docs/raw/workflows/time-travel.mdx +16 -16
- package/.docs/raw/workflows/workflow-state.mdx +5 -8
- package/CHANGELOG.md +23 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/stdio.js +53 -0
- package/package.json +4 -4
- package/.docs/organized/changelogs/%40internal%2Fai-sdk-v4.md +0 -1
- package/.docs/raw/deployment/cloud-providers/index.mdx +0 -55
- 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
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
### package.json
|
|
2
|
+
```json
|
|
3
|
+
{
|
|
4
|
+
"name": "examples-agent",
|
|
5
|
+
"dependencies": {
|
|
6
|
+
"zod": "^3",
|
|
7
|
+
"typescript": "^5.8.3",
|
|
8
|
+
"@ai-sdk/openai": "3.0.0-beta.96",
|
|
9
|
+
"@ai-sdk/provider": "3.0.0-beta.26",
|
|
10
|
+
"ai": "^6.0.0-beta.149",
|
|
11
|
+
"@mastra/client-js": "beta",
|
|
12
|
+
"@mastra/core": "beta",
|
|
13
|
+
"@mastra/evals": "beta",
|
|
14
|
+
"@mastra/libsql": "beta",
|
|
15
|
+
"@mastra/loggers": "beta",
|
|
16
|
+
"@mastra/mcp": "beta",
|
|
17
|
+
"@mastra/memory": "beta",
|
|
18
|
+
"@mastra/observability": "beta",
|
|
19
|
+
"@mastra/voice-openai": "beta"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"mastra": "beta",
|
|
23
|
+
"msw": "^2.12.2"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### js-client-structured-output-example.ts
|
|
29
|
+
```typescript
|
|
30
|
+
import z from 'zod';
|
|
31
|
+
import { MastraClient } from '@mastra/client-js';
|
|
32
|
+
|
|
33
|
+
const client = new MastraClient({
|
|
34
|
+
baseUrl: 'http://localhost:4111',
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
const agent = client.getAgent('weather-agent');
|
|
38
|
+
|
|
39
|
+
const result = await agent.generate('weather in new york', {
|
|
40
|
+
structuredOutput: {
|
|
41
|
+
schema: z.object({
|
|
42
|
+
weather: z.string(),
|
|
43
|
+
temperature: z.number(),
|
|
44
|
+
humidity: z.number(),
|
|
45
|
+
}),
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
console.log(result.object);
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### mastra/agents/index.ts
|
|
54
|
+
```typescript
|
|
55
|
+
import { Memory } from '@mastra/memory';
|
|
56
|
+
import { Agent } from '@mastra/core/agent';
|
|
57
|
+
import { openai } from '@ai-sdk/openai';
|
|
58
|
+
import { weatherInfo } from '../tools';
|
|
59
|
+
|
|
60
|
+
const memory = new Memory();
|
|
61
|
+
|
|
62
|
+
export const weatherAgent = new Agent({
|
|
63
|
+
id: 'weather-agent',
|
|
64
|
+
name: 'Weather Agent v6',
|
|
65
|
+
instructions: `Your goal is to provide weather information for cities when requested`,
|
|
66
|
+
description: `An agent that can help you get weather information for a given city`,
|
|
67
|
+
model: openai('gpt-4o-mini'),
|
|
68
|
+
tools: { weatherInfo },
|
|
69
|
+
memory,
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### mastra/index.ts
|
|
75
|
+
```typescript
|
|
76
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
77
|
+
import { PinoLogger } from '@mastra/loggers';
|
|
78
|
+
import { LibSQLStore } from '@mastra/libsql';
|
|
79
|
+
import { Observability } from '@mastra/observability';
|
|
80
|
+
|
|
81
|
+
import { weatherAgent } from './agents';
|
|
82
|
+
|
|
83
|
+
const storage = new LibSQLStore({
|
|
84
|
+
id: 'mastra-storage',
|
|
85
|
+
url: 'file:./mastra.db',
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
export const mastra = new Mastra({
|
|
89
|
+
storage,
|
|
90
|
+
agents: {
|
|
91
|
+
weatherAgent,
|
|
92
|
+
},
|
|
93
|
+
bundler: {
|
|
94
|
+
sourcemap: true,
|
|
95
|
+
},
|
|
96
|
+
server: {
|
|
97
|
+
build: {
|
|
98
|
+
swaggerUI: true,
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
logger: new PinoLogger({ name: 'Chef', level: 'debug' }),
|
|
102
|
+
observability: new Observability({
|
|
103
|
+
default: { enabled: true },
|
|
104
|
+
}),
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### mastra/tools/index.ts
|
|
110
|
+
```typescript
|
|
111
|
+
import { createTool } from '@mastra/core/tools';
|
|
112
|
+
import { z } from 'zod';
|
|
113
|
+
|
|
114
|
+
export const weatherInfo = createTool({
|
|
115
|
+
id: 'weather-info',
|
|
116
|
+
description: 'Fetches the current weather information for a given city',
|
|
117
|
+
inputSchema: z.object({
|
|
118
|
+
city: z.string(),
|
|
119
|
+
}),
|
|
120
|
+
execute: async ({ city }) => {
|
|
121
|
+
return {
|
|
122
|
+
city,
|
|
123
|
+
weather: 'sunny',
|
|
124
|
+
temperature_celsius: 19,
|
|
125
|
+
temperature_fahrenheit: 66,
|
|
126
|
+
humidity: 50,
|
|
127
|
+
wind: '10 mph',
|
|
128
|
+
};
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### structured-output-example.ts
|
|
135
|
+
```typescript
|
|
136
|
+
import z from 'zod';
|
|
137
|
+
import { weatherAgent } from './mastra/agents';
|
|
138
|
+
|
|
139
|
+
const result = await weatherAgent.generate('weather in new york', {
|
|
140
|
+
structuredOutput: {
|
|
141
|
+
schema: z.object({
|
|
142
|
+
weather: z.string(),
|
|
143
|
+
temperature: z.number(),
|
|
144
|
+
humidity: z.number(),
|
|
145
|
+
}),
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
console.log(result.object);
|
|
150
|
+
|
|
151
|
+
```
|
|
@@ -75,14 +75,10 @@ export const catOne = new Agent({
|
|
|
75
75
|
import { Mastra } from '@mastra/core/mastra';
|
|
76
76
|
import { PinoLogger } from '@mastra/loggers';
|
|
77
77
|
import { catOne } from './agents/agent';
|
|
78
|
-
import { logCatWorkflow as legacy_catWorkflow } from './legacy-workflows';
|
|
79
78
|
import { logCatWorkflow } from './workflows';
|
|
80
79
|
|
|
81
80
|
export const mastra = new Mastra({
|
|
82
81
|
agents: { catOne },
|
|
83
|
-
legacy_workflows: {
|
|
84
|
-
legacy_catWorkflow,
|
|
85
|
-
},
|
|
86
82
|
workflows: {
|
|
87
83
|
logCatWorkflow,
|
|
88
84
|
},
|
|
@@ -70,7 +70,26 @@ import { createTool } from '@mastra/core/tools';
|
|
|
70
70
|
import { z } from 'zod';
|
|
71
71
|
|
|
72
72
|
export const getStockPrice = async (symbol: string) => {
|
|
73
|
-
const
|
|
73
|
+
const response = await fetch(`https://mastra-stock-data.vercel.app/api/stock-data?symbol=${symbol}`);
|
|
74
|
+
|
|
75
|
+
if (!response.ok) {
|
|
76
|
+
const errorText = await response.text();
|
|
77
|
+
throw new Error(`Failed to fetch stock price for ${symbol}: ${response.status} ${errorText}`);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
let data;
|
|
81
|
+
try {
|
|
82
|
+
data = await response.json();
|
|
83
|
+
} catch (error) {
|
|
84
|
+
throw new Error(
|
|
85
|
+
`Failed to parse JSON response for ${symbol}: ${error instanceof Error ? error.message : String(error)}`,
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (!data.prices || !data.prices['4. close']) {
|
|
90
|
+
throw new Error(`Invalid response format for symbol ${symbol}: ${JSON.stringify(data)}`);
|
|
91
|
+
}
|
|
92
|
+
|
|
74
93
|
return data.prices['4. close'];
|
|
75
94
|
};
|
|
76
95
|
|
|
@@ -80,7 +99,7 @@ export const stockPrices = createTool({
|
|
|
80
99
|
symbol: z.string(),
|
|
81
100
|
}),
|
|
82
101
|
description: `Fetches the last day's closing stock price for a given symbol`,
|
|
83
|
-
execute: async
|
|
102
|
+
execute: async (inputData, context) => {
|
|
84
103
|
console.log('Using tool to fetch stock price for', inputData.symbol);
|
|
85
104
|
return {
|
|
86
105
|
symbol: inputData.symbol,
|
|
@@ -168,7 +168,7 @@ The following files are created:
|
|
|
168
168
|
- **hybrid-question.mp3** – Hybrid agent's spoken question.
|
|
169
169
|
- **unified-response.mp3** – Unified agent's spoken response.
|
|
170
170
|
|
|
171
|
-
```typescript title="src/test-voice-agents.ts"
|
|
171
|
+
```typescript title="src/test-voice-agents.ts"
|
|
172
172
|
import "dotenv/config";
|
|
173
173
|
|
|
174
174
|
import path from "path";
|
|
@@ -232,7 +232,6 @@ export const unifiedVoiceAgent = new Agent({
|
|
|
232
232
|
});
|
|
233
233
|
|
|
234
234
|
export const mastra = new Mastra({
|
|
235
|
-
// ...
|
|
236
235
|
agents: { hybridVoiceAgent, unifiedVoiceAgent },
|
|
237
236
|
});
|
|
238
237
|
|
|
@@ -297,7 +296,7 @@ export const agent = new Agent({
|
|
|
297
296
|
id: "aisdk-voice-agent",
|
|
298
297
|
name: "AI SDK Voice Agent",
|
|
299
298
|
instructions: `You are a helpful assistant with voice capabilities.`,
|
|
300
|
-
model: openai
|
|
299
|
+
model: "openai/gpt-5.1",
|
|
301
300
|
|
|
302
301
|
// Pass AI SDK models directly to CompositeVoice
|
|
303
302
|
voice: new CompositeVoice({
|
|
@@ -1,6 +1,6 @@
|
|
|
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
4
|
---
|
|
5
5
|
|
|
6
6
|
# Agent Approval
|
|
@@ -20,7 +20,6 @@ import { Mastra } from "@mastra/core/mastra";
|
|
|
20
20
|
import { LibSQLStore } from "@mastra/libsql";
|
|
21
21
|
|
|
22
22
|
export const mastra = new Mastra({
|
|
23
|
-
// ...
|
|
24
23
|
storage: new LibSQLStore({
|
|
25
24
|
id: "mastra-storage",
|
|
26
25
|
url: ":memory:"
|
|
@@ -33,7 +32,7 @@ export const mastra = new Mastra({
|
|
|
33
32
|
|
|
34
33
|
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
34
|
|
|
36
|
-
```typescript
|
|
35
|
+
```typescript
|
|
37
36
|
const stream = await agent.stream("What's the weather in London?", {
|
|
38
37
|
requireToolApproval: true
|
|
39
38
|
});
|
|
@@ -43,7 +42,7 @@ const stream = await agent.stream("What's the weather in London?", {
|
|
|
43
42
|
|
|
44
43
|
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
44
|
|
|
46
|
-
```typescript
|
|
45
|
+
```typescript
|
|
47
46
|
const handleApproval = async () => {
|
|
48
47
|
const approvedStream = await agent.approveToolCall({ runId: stream.runId });
|
|
49
48
|
|
|
@@ -58,7 +57,7 @@ const handleApproval = async () => {
|
|
|
58
57
|
|
|
59
58
|
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
59
|
|
|
61
|
-
```typescript
|
|
60
|
+
```typescript
|
|
62
61
|
const handleDecline = async () => {
|
|
63
62
|
const declinedStream = await agent.declineToolCall({ runId: stream.runId });
|
|
64
63
|
|
|
@@ -180,10 +179,144 @@ const handleResume = async () => {
|
|
|
180
179
|
|
|
181
180
|
```
|
|
182
181
|
|
|
182
|
+
## Automatic tool resumption
|
|
183
|
+
|
|
184
|
+
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.
|
|
185
|
+
|
|
186
|
+
### Enabling auto-resume
|
|
187
|
+
|
|
188
|
+
Set `autoResumeSuspendedTools` to `true` in the agent's default options or when calling `stream()`:
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
import { Agent } from "@mastra/core/agent";
|
|
192
|
+
import { Memory } from "@mastra/memory";
|
|
193
|
+
|
|
194
|
+
// Option 1: In agent configuration
|
|
195
|
+
const agent = new Agent({
|
|
196
|
+
id: "my-agent",
|
|
197
|
+
name: "My Agent",
|
|
198
|
+
instructions: "You are a helpful assistant",
|
|
199
|
+
model: "openai/gpt-4o-mini",
|
|
200
|
+
tools: { weatherTool },
|
|
201
|
+
memory: new Memory(),
|
|
202
|
+
defaultOptions: {
|
|
203
|
+
autoResumeSuspendedTools: true,
|
|
204
|
+
},
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
// Option 2: Per-request
|
|
208
|
+
const stream = await agent.stream("What's the weather?", {
|
|
209
|
+
autoResumeSuspendedTools: true,
|
|
210
|
+
});
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### How it works
|
|
214
|
+
|
|
215
|
+
When `autoResumeSuspendedTools` is enabled:
|
|
216
|
+
|
|
217
|
+
1. A tool suspends execution by calling `suspend()` with a payload (e.g., requesting more information)
|
|
218
|
+
2. The suspension is persisted to memory along with the conversation
|
|
219
|
+
3. When the user sends their next message on the same thread, the agent:
|
|
220
|
+
- Detects the suspended tool from message history
|
|
221
|
+
- Extracts `resumeData` from the user's message based on the tool's `resumeSchema`
|
|
222
|
+
- Automatically resumes the tool with the extracted data
|
|
223
|
+
|
|
224
|
+
### Example
|
|
225
|
+
|
|
226
|
+
```typescript
|
|
227
|
+
import { createTool } from "@mastra/core/tools";
|
|
228
|
+
import { z } from "zod";
|
|
229
|
+
|
|
230
|
+
export const weatherTool = createTool({
|
|
231
|
+
id: "weather-info",
|
|
232
|
+
description: "Fetches weather information for a city",
|
|
233
|
+
suspendSchema: z.object({
|
|
234
|
+
message: z.string(),
|
|
235
|
+
}),
|
|
236
|
+
resumeSchema: z.object({
|
|
237
|
+
city: z.string(),
|
|
238
|
+
}),
|
|
239
|
+
execute: async (_inputData, context) => {
|
|
240
|
+
// Check if this is a resume with data
|
|
241
|
+
if (!context?.agent?.resumeData) {
|
|
242
|
+
// First call - suspend and ask for the city
|
|
243
|
+
return context?.agent?.suspend({
|
|
244
|
+
message: "What city do you want to know the weather for?",
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// Resume call - city was extracted from user's message
|
|
249
|
+
const { city } = context.agent.resumeData;
|
|
250
|
+
const response = await fetch(`https://wttr.in/${city}?format=3`);
|
|
251
|
+
const weather = await response.text();
|
|
252
|
+
|
|
253
|
+
return { city, weather };
|
|
254
|
+
},
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
const agent = new Agent({
|
|
258
|
+
id: "my-agent",
|
|
259
|
+
name: "My Agent",
|
|
260
|
+
instructions: "You are a helpful assistant",
|
|
261
|
+
model: "openai/gpt-4o-mini",
|
|
262
|
+
tools: { weatherTool },
|
|
263
|
+
memory: new Memory(),
|
|
264
|
+
defaultOptions: {
|
|
265
|
+
autoResumeSuspendedTools: true,
|
|
266
|
+
},
|
|
267
|
+
});
|
|
268
|
+
|
|
269
|
+
const stream = await agent.stream("What's the weather like?");
|
|
270
|
+
|
|
271
|
+
for await (const chunk of stream.fullStream) {
|
|
272
|
+
if (chunk.type === "tool-call-suspended") {
|
|
273
|
+
console.log(chunk.payload.suspendPayload);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
const handleResume = async () => {
|
|
278
|
+
const resumedStream = await agent.stream("San Francisco");
|
|
279
|
+
|
|
280
|
+
for await (const chunk of resumedStream.textStream) {
|
|
281
|
+
process.stdout.write(chunk);
|
|
282
|
+
}
|
|
283
|
+
process.stdout.write("\n");
|
|
284
|
+
};
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
**Conversation flow:**
|
|
288
|
+
|
|
289
|
+
```
|
|
290
|
+
User: "What's the weather like?"
|
|
291
|
+
Agent: "What city do you want to know the weather for?"
|
|
292
|
+
|
|
293
|
+
User: "San Francisco"
|
|
294
|
+
Agent: "The weather in San Francisco is: San Francisco: ☀️ +72°F"
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
The second message automatically resumes the suspended tool - the agent extracts `{ city: "San Francisco" }` from the user's message and passes it as `resumeData`.
|
|
298
|
+
|
|
299
|
+
### Requirements
|
|
300
|
+
|
|
301
|
+
For automatic tool resumption to work:
|
|
302
|
+
|
|
303
|
+
- **Memory configured**: The agent needs memory to track suspended tools across messages
|
|
304
|
+
- **Same thread**: The follow-up message must use the same memory thread and resource identifiers
|
|
305
|
+
- **`resumeSchema` defined**: The tool must define a `resumeSchema` so the agent knows what data structure to extract from the user's message
|
|
306
|
+
|
|
307
|
+
### Manual vs automatic resumption
|
|
308
|
+
|
|
309
|
+
| Approach | Use case |
|
|
310
|
+
|----------|----------|
|
|
311
|
+
| Manual (`resumeStream()`) | Programmatic control, webhooks, button clicks, external triggers |
|
|
312
|
+
| Automatic (`autoResumeSuspendedTools`) | Conversational flows where users provide resume data in natural language |
|
|
313
|
+
|
|
314
|
+
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.
|
|
315
|
+
|
|
183
316
|
## Related
|
|
184
317
|
|
|
185
318
|
- [Using Tools](./using-tools)
|
|
186
319
|
- [Agent Overview](./overview)
|
|
187
320
|
- [Tools Overview](../mcp/overview)
|
|
188
321
|
- [Agent Memory](./agent-memory)
|
|
189
|
-
- [Request Context](/docs/v1/server
|
|
322
|
+
- [Request Context](/docs/v1/server/request-context)
|
|
@@ -1,6 +1,6 @@
|
|
|
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
4
|
---
|
|
5
5
|
|
|
6
6
|
import Steps from "@site/src/components/Steps";
|
|
@@ -8,9 +8,9 @@ import StepItem from "@site/src/components/StepItem";
|
|
|
8
8
|
|
|
9
9
|
# Agent memory
|
|
10
10
|
|
|
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
|
|
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 message history and recall relevant information.
|
|
12
12
|
|
|
13
|
-
Mastra agents can be configured to store
|
|
13
|
+
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
14
|
|
|
15
15
|
## When to use memory
|
|
16
16
|
|
|
@@ -20,13 +20,13 @@ Use memory when your agent needs to maintain multi-turn conversations that refer
|
|
|
20
20
|
|
|
21
21
|
To enable memory in Mastra, install the `@mastra/memory` package along with a storage provider.
|
|
22
22
|
|
|
23
|
-
```bash npm2yarn
|
|
23
|
+
```bash npm2yarn
|
|
24
24
|
npm install @mastra/memory@beta @mastra/libsql@beta
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
## Storage providers
|
|
28
28
|
|
|
29
|
-
Memory requires a storage provider to persist
|
|
29
|
+
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
30
|
|
|
31
31
|
## Configuring memory
|
|
32
32
|
|
|
@@ -35,14 +35,13 @@ Memory requires a storage provider to persist conversation history, including us
|
|
|
35
35
|
|
|
36
36
|
Enable memory by creating a `Memory` instance and passing it to the agent’s `memory` option.
|
|
37
37
|
|
|
38
|
-
```typescript {
|
|
38
|
+
```typescript {7-11} title="src/mastra/agents/memory-agent.ts"
|
|
39
39
|
import { Agent } from "@mastra/core/agent";
|
|
40
40
|
import { Memory } from "@mastra/memory";
|
|
41
41
|
|
|
42
42
|
export const memoryAgent = new Agent({
|
|
43
43
|
id: 'memory-agent',
|
|
44
44
|
name: 'Memory Agent',
|
|
45
|
-
// ...
|
|
46
45
|
memory: new Memory({
|
|
47
46
|
options: {
|
|
48
47
|
lastMessages: 20,
|
|
@@ -51,9 +50,9 @@ export const memoryAgent = new Agent({
|
|
|
51
50
|
});
|
|
52
51
|
```
|
|
53
52
|
|
|
54
|
-
:::
|
|
53
|
+
:::info
|
|
55
54
|
|
|
56
|
-
|
|
55
|
+
Visit [Memory Class](/reference/v1/memory/memory-class) for a full list of configuration options.
|
|
57
56
|
|
|
58
57
|
:::
|
|
59
58
|
|
|
@@ -63,12 +62,11 @@ See the [Memory Class](/reference/v1/memory/memory-class) docs for a full list o
|
|
|
63
62
|
|
|
64
63
|
Add a storage provider to your main Mastra instance to enable memory across all configured agents.
|
|
65
64
|
|
|
66
|
-
```typescript {
|
|
65
|
+
```typescript {5-8} title="src/mastra/index.ts"
|
|
67
66
|
import { Mastra } from "@mastra/core";
|
|
68
67
|
import { LibSQLStore } from "@mastra/libsql";
|
|
69
68
|
|
|
70
69
|
export const mastra = new Mastra({
|
|
71
|
-
// ..
|
|
72
70
|
storage: new LibSQLStore({
|
|
73
71
|
id: 'mastra-storage',
|
|
74
72
|
url: ":memory:",
|
|
@@ -76,9 +74,9 @@ export const mastra = new Mastra({
|
|
|
76
74
|
});
|
|
77
75
|
```
|
|
78
76
|
|
|
79
|
-
:::
|
|
77
|
+
:::info
|
|
80
78
|
|
|
81
|
-
|
|
79
|
+
Visit [libSQL Storage](/reference/v1/storage/libsql) for a full list of configuration options.
|
|
82
80
|
|
|
83
81
|
:::
|
|
84
82
|
|
|
@@ -87,7 +85,7 @@ See the [LibSQL Storage](/reference/v1/storage/libsql) docs for a full list of c
|
|
|
87
85
|
|
|
88
86
|
Alternatively, add storage directly to an agent’s memory to keep data separate or use different providers per agent.
|
|
89
87
|
|
|
90
|
-
```typescript {
|
|
88
|
+
```typescript {9-12} title="src/mastra/agents/memory-agent.ts"
|
|
91
89
|
import { Agent } from "@mastra/core/agent";
|
|
92
90
|
import { Memory } from "@mastra/memory";
|
|
93
91
|
import { LibSQLStore } from "@mastra/libsql";
|
|
@@ -95,7 +93,6 @@ import { LibSQLStore } from "@mastra/libsql";
|
|
|
95
93
|
export const memoryAgent = new Agent({
|
|
96
94
|
id: 'memory-agent',
|
|
97
95
|
name: 'Memory Agent',
|
|
98
|
-
// ...
|
|
99
96
|
memory: new Memory({
|
|
100
97
|
storage: new LibSQLStore({
|
|
101
98
|
id: 'mastra-storage',
|
|
@@ -105,16 +102,16 @@ export const memoryAgent = new Agent({
|
|
|
105
102
|
});
|
|
106
103
|
```
|
|
107
104
|
|
|
108
|
-
##
|
|
105
|
+
## Message history
|
|
109
106
|
|
|
110
|
-
Include a `memory` object with both `resource` and `thread` to track
|
|
107
|
+
Include a `memory` object with both `resource` and `thread` to track message history during agent calls.
|
|
111
108
|
|
|
112
109
|
- `resource`: A stable identifier for the user or entity.
|
|
113
110
|
- `thread`: An ID that isolates a specific conversation or session.
|
|
114
111
|
|
|
115
112
|
These fields tell the agent where to store and retrieve context, enabling persistent, thread-aware memory across a conversation.
|
|
116
113
|
|
|
117
|
-
```typescript {
|
|
114
|
+
```typescript {4-7}
|
|
118
115
|
const response = await memoryAgent.generate(
|
|
119
116
|
"Remember my favorite color is blue.",
|
|
120
117
|
{
|
|
@@ -128,7 +125,7 @@ const response = await memoryAgent.generate(
|
|
|
128
125
|
|
|
129
126
|
To recall information stored in memory, call the agent with the same `resource` and `thread` values used in the original conversation.
|
|
130
127
|
|
|
131
|
-
```typescript {
|
|
128
|
+
```typescript {2-5}
|
|
132
129
|
const response = await memoryAgent.generate("What's my favorite color?", {
|
|
133
130
|
memory: {
|
|
134
131
|
resource: "user-123",
|
|
@@ -141,25 +138,20 @@ To learn more about memory see the [Memory](../memory/overview) documentation.
|
|
|
141
138
|
|
|
142
139
|
## Using `RequestContext`
|
|
143
140
|
|
|
144
|
-
Use [RequestContext](/docs/v1/server
|
|
141
|
+
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
142
|
|
|
146
|
-
```typescript title="src/mastra/agents/memory-agent.ts"
|
|
143
|
+
```typescript title="src/mastra/agents/memory-agent.ts"
|
|
147
144
|
export type UserTier = {
|
|
148
145
|
"user-tier": "enterprise" | "pro";
|
|
149
146
|
};
|
|
150
147
|
|
|
151
|
-
const premiumMemory = new Memory(
|
|
152
|
-
// ...
|
|
153
|
-
});
|
|
148
|
+
const premiumMemory = new Memory();
|
|
154
149
|
|
|
155
|
-
const standardMemory = new Memory(
|
|
156
|
-
// ...
|
|
157
|
-
});
|
|
150
|
+
const standardMemory = new Memory();
|
|
158
151
|
|
|
159
152
|
export const memoryAgent = new Agent({
|
|
160
153
|
id: 'memory-agent',
|
|
161
154
|
name: 'Memory Agent',
|
|
162
|
-
// ...
|
|
163
155
|
memory: ({ requestContext }) => {
|
|
164
156
|
const userTier = requestContext.get("user-tier") as UserTier["user-tier"];
|
|
165
157
|
|
|
@@ -168,9 +160,9 @@ export const memoryAgent = new Agent({
|
|
|
168
160
|
});
|
|
169
161
|
```
|
|
170
162
|
|
|
171
|
-
:::
|
|
163
|
+
:::info
|
|
172
164
|
|
|
173
|
-
|
|
165
|
+
Visit [Request Context](/docs/v1/server/request-context) for more information.
|
|
174
166
|
|
|
175
167
|
:::
|
|
176
168
|
|
|
@@ -178,5 +170,5 @@ See [Request Context](/docs/v1/server-db/request-context) docs for more informat
|
|
|
178
170
|
|
|
179
171
|
- [Working Memory](../memory/working-memory)
|
|
180
172
|
- [Semantic Recall](../memory/semantic-recall)
|
|
181
|
-
- [
|
|
182
|
-
- [Request Context](/docs/v1/server
|
|
173
|
+
- [Storage](../memory/storage)
|
|
174
|
+
- [Request Context](/docs/v1/server/request-context)
|