@mastra/mcp-docs-server 1.0.0-beta.9 → 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 +3 -1
- package/.docs/organized/changelogs/%40internal%2Fexternal-types.md +3 -1
- 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 +3 -1
- package/.docs/organized/changelogs/%40mastra%2Fagent-builder.md +287 -287
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +299 -299
- 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 +662 -200
- 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 +202 -0
- package/.docs/organized/changelogs/%40mastra%2Fconvex.md +448 -22
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +3359 -289
- 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 +248 -221
- 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 +625 -229
- 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 +281 -281
- 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 +781 -235
- package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +198 -198
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +655 -248
- 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 -237
- 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 +850 -239
- 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 +215 -215
- package/.docs/organized/changelogs/mastra.md +278 -278
- 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 +2 -2
- 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/quick-start.md +1 -5
- package/.docs/organized/code-examples/server-app-access.md +2 -2
- 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 +2 -2
- 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 +6 -35
- package/.docs/raw/guides/agent-frameworks/ai-sdk.mdx +23 -33
- 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/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 +77 -35
- 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 +4 -2
- package/.docs/raw/reference/client-js/memory.mdx +43 -1
- 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 +7 -3
- 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 +6 -4
- 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 +8 -4
- package/.docs/raw/reference/core/listScorers.mdx +2 -0
- package/.docs/raw/reference/core/listStoredAgents.mdx +7 -5
- 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 +27 -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 +27 -51
- package/.docs/raw/reference/server/fastify-adapter.mdx +130 -0
- package/.docs/raw/reference/server/hono-adapter.mdx +27 -51
- 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-db → server}/server-adapters.mdx +154 -33
- package/.docs/raw/streaming/events.mdx +16 -7
- package/.docs/raw/streaming/overview.mdx +30 -17
- package/.docs/raw/streaming/tool-streaming.mdx +8 -6
- 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 +246 -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/workflows/inngest-workflow.mdx +0 -363
|
@@ -1,26 +1,31 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Semantic Recall | Memory"
|
|
3
3
|
description: "Learn how to use semantic recall in Mastra to retrieve relevant messages from past conversations using vector search and embeddings."
|
|
4
|
+
packages:
|
|
5
|
+
- "@mastra/core"
|
|
6
|
+
- "@mastra/fastembed"
|
|
7
|
+
- "@mastra/libsql"
|
|
8
|
+
- "@mastra/memory"
|
|
9
|
+
- "@mastra/pg"
|
|
4
10
|
---
|
|
5
11
|
|
|
6
12
|
# Semantic Recall
|
|
7
13
|
|
|
8
14
|
If you ask your friend what they did last weekend, they will search in their memory for events associated with "last weekend" and then tell you what they did. That's sort of like how semantic recall works in Mastra.
|
|
9
15
|
|
|
10
|
-
|
|
16
|
+
:::tip[Watch 📹]
|
|
17
|
+
|
|
18
|
+
What semantic recall is, how it works, and how to configure it in Mastra → [YouTube (5 minutes)](https://youtu.be/UVZtK8cK8xQ)
|
|
19
|
+
|
|
20
|
+
:::
|
|
11
21
|
|
|
12
22
|
## How Semantic Recall Works
|
|
13
23
|
|
|
14
|
-
Semantic recall is RAG-based search that helps agents maintain context across longer interactions when messages are no longer within [recent
|
|
24
|
+
Semantic recall is RAG-based search that helps agents maintain context across longer interactions when messages are no longer within [recent message history](./message-history).
|
|
15
25
|
|
|
16
26
|
It uses vector embeddings of messages for similarity search, integrates with various vector stores, and has configurable context windows around retrieved messages.
|
|
17
27
|
|
|
18
|
-
|
|
19
|
-
<img
|
|
20
|
-
src="/img/semantic-recall.png"
|
|
21
|
-
alt="Diagram showing Mastra Memory semantic recall"
|
|
22
|
-
width={800}
|
|
23
|
-
/>
|
|
28
|
+

|
|
24
29
|
|
|
25
30
|
When it's enabled, new messages are used to query a vector DB for semantically similar messages.
|
|
26
31
|
|
|
@@ -30,7 +35,7 @@ After getting a response from the LLM, all new messages (user, assistant, and to
|
|
|
30
35
|
|
|
31
36
|
Semantic recall is enabled by default, so if you give your agent memory it will be included:
|
|
32
37
|
|
|
33
|
-
```typescript {
|
|
38
|
+
```typescript {9}
|
|
34
39
|
import { Agent } from "@mastra/core/agent";
|
|
35
40
|
import { Memory } from "@mastra/memory";
|
|
36
41
|
|
|
@@ -43,33 +48,11 @@ const agent = new Agent({
|
|
|
43
48
|
});
|
|
44
49
|
```
|
|
45
50
|
|
|
46
|
-
##
|
|
47
|
-
|
|
48
|
-
The three main parameters that control semantic recall behavior are:
|
|
49
|
-
|
|
50
|
-
1. **topK**: How many semantically similar messages to retrieve
|
|
51
|
-
2. **messageRange**: How much surrounding context to include with each match
|
|
52
|
-
3. **scope**: Whether to search within the current thread or across all threads owned by a resource (the default is resource scope).
|
|
53
|
-
|
|
54
|
-
```typescript {5-7}
|
|
55
|
-
const agent = new Agent({
|
|
56
|
-
memory: new Memory({
|
|
57
|
-
options: {
|
|
58
|
-
semanticRecall: {
|
|
59
|
-
topK: 3, // Retrieve 3 most similar messages
|
|
60
|
-
messageRange: 2, // Include 2 messages before and after each match
|
|
61
|
-
scope: "resource", // Search across all threads for this user (default setting if omitted)
|
|
62
|
-
},
|
|
63
|
-
},
|
|
64
|
-
}),
|
|
65
|
-
});
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### Storage configuration
|
|
51
|
+
## Storage configuration
|
|
69
52
|
|
|
70
53
|
Semantic recall relies on a [storage and vector db](/reference/v1/memory/memory-class) to store messages and their embeddings.
|
|
71
54
|
|
|
72
|
-
```ts {8-
|
|
55
|
+
```ts {8-16}
|
|
73
56
|
import { Memory } from "@mastra/memory";
|
|
74
57
|
import { Agent } from "@mastra/core/agent";
|
|
75
58
|
import { LibSQLStore, LibSQLVector } from "@mastra/libsql";
|
|
@@ -84,20 +67,55 @@ const agent = new Agent({
|
|
|
84
67
|
// this is the default vector db if omitted
|
|
85
68
|
vector: new LibSQLVector({
|
|
86
69
|
id: 'agent-vector',
|
|
87
|
-
|
|
70
|
+
url: "file:./local.db",
|
|
88
71
|
}),
|
|
89
72
|
}),
|
|
90
73
|
});
|
|
91
74
|
```
|
|
92
75
|
|
|
93
|
-
|
|
76
|
+
Each vector store page below includes installation instructions, configuration parameters, and usage examples:
|
|
77
|
+
|
|
78
|
+
- [Astra](/reference/v1/vectors/astra)
|
|
79
|
+
- [Chroma](/reference/v1/vectors/chroma)
|
|
80
|
+
- [Cloudflare Vectorize](/reference/v1/vectors/vectorize)
|
|
81
|
+
- [Convex](/reference/v1/vectors/convex)
|
|
82
|
+
- [Couchbase](/reference/v1/vectors/couchbase)
|
|
83
|
+
- [DuckDB](/reference/v1/vectors/duckdb)
|
|
84
|
+
- [Elasticsearch](/reference/v1/vectors/elasticsearch)
|
|
85
|
+
- [LanceDB](/reference/v1/vectors/lance)
|
|
86
|
+
- [libSQL](/reference/v1/vectors/libsql)
|
|
87
|
+
- [MongoDB](/reference/v1/vectors/mongodb)
|
|
88
|
+
- [OpenSearch](/reference/v1/vectors/opensearch)
|
|
89
|
+
- [Pinecone](/reference/v1/vectors/pinecone)
|
|
90
|
+
- [PostgreSQL](/reference/v1/vectors/pg)
|
|
91
|
+
- [Qdrant](/reference/v1/vectors/qdrant)
|
|
92
|
+
- [S3 Vectors](/reference/v1/vectors/s3vectors)
|
|
93
|
+
- [Turbopuffer](/reference/v1/vectors/turbopuffer)
|
|
94
|
+
- [Upstash](/reference/v1/vectors/upstash)
|
|
95
|
+
|
|
96
|
+
## Recall configuration
|
|
94
97
|
|
|
95
|
-
|
|
96
|
-
- [MongoDB](/docs/v1/memory/storage/memory-with-mongodb)
|
|
97
|
-
- [Postgres](/docs/v1/memory/storage/memory-with-pg)
|
|
98
|
-
- [Upstash](/docs/v1/memory/storage/memory-with-upstash)
|
|
98
|
+
The three main parameters that control semantic recall behavior are:
|
|
99
99
|
|
|
100
|
-
|
|
100
|
+
1. **topK**: How many semantically similar messages to retrieve
|
|
101
|
+
2. **messageRange**: How much surrounding context to include with each match
|
|
102
|
+
3. **scope**: Whether to search within the current thread or across all threads owned by a resource (the default is resource scope).
|
|
103
|
+
|
|
104
|
+
```typescript {5-7}
|
|
105
|
+
const agent = new Agent({
|
|
106
|
+
memory: new Memory({
|
|
107
|
+
options: {
|
|
108
|
+
semanticRecall: {
|
|
109
|
+
topK: 3, // Retrieve 3 most similar messages
|
|
110
|
+
messageRange: 2, // Include 2 messages before and after each match
|
|
111
|
+
scope: "resource", // Search across all threads for this user (default setting if omitted)
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
}),
|
|
115
|
+
});
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Embedder configuration
|
|
101
119
|
|
|
102
120
|
Semantic recall relies on an [embedding model](/reference/v1/memory/memory-class) to convert messages into embeddings. Mastra supports embedding models through the model router using `provider/model` strings, or you can use any [embedding model](https://sdk.vercel.ai/docs/ai-sdk-core/embeddings) compatible with the AI SDK.
|
|
103
121
|
|
|
@@ -112,7 +130,6 @@ import { ModelRouterEmbeddingModel } from "@mastra/core/llm";
|
|
|
112
130
|
|
|
113
131
|
const agent = new Agent({
|
|
114
132
|
memory: new Memory({
|
|
115
|
-
// ... other memory options
|
|
116
133
|
embedder: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
117
134
|
}),
|
|
118
135
|
});
|
|
@@ -136,7 +153,6 @@ import { ModelRouterEmbeddingModel } from "@mastra/core/llm";
|
|
|
136
153
|
|
|
137
154
|
const agent = new Agent({
|
|
138
155
|
memory: new Memory({
|
|
139
|
-
// ... other memory options
|
|
140
156
|
embedder: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
141
157
|
}),
|
|
142
158
|
});
|
|
@@ -146,32 +162,31 @@ const agent = new Agent({
|
|
|
146
162
|
|
|
147
163
|
To use FastEmbed (a local embedding model), install `@mastra/fastembed`:
|
|
148
164
|
|
|
149
|
-
```bash npm2yarn
|
|
165
|
+
```bash npm2yarn
|
|
150
166
|
npm install @mastra/fastembed@beta
|
|
151
167
|
```
|
|
152
168
|
|
|
153
169
|
Then configure it in your memory:
|
|
154
170
|
|
|
155
|
-
```ts {3,
|
|
171
|
+
```ts {3,7}
|
|
156
172
|
import { Memory } from "@mastra/memory";
|
|
157
173
|
import { Agent } from "@mastra/core/agent";
|
|
158
174
|
import { fastembed } from "@mastra/fastembed";
|
|
159
175
|
|
|
160
176
|
const agent = new Agent({
|
|
161
177
|
memory: new Memory({
|
|
162
|
-
// ... other memory options
|
|
163
178
|
embedder: fastembed,
|
|
164
179
|
}),
|
|
165
180
|
});
|
|
166
181
|
```
|
|
167
182
|
|
|
168
|
-
|
|
183
|
+
## PostgreSQL Index Optimization
|
|
169
184
|
|
|
170
185
|
When using PostgreSQL as your vector store, you can optimize semantic recall performance by configuring the vector index. This is particularly important for large-scale deployments with thousands of messages.
|
|
171
186
|
|
|
172
187
|
PostgreSQL supports both IVFFlat and HNSW indexes. By default, Mastra creates an IVFFlat index, but HNSW indexes typically provide better performance, especially with OpenAI embeddings which use inner product distance.
|
|
173
188
|
|
|
174
|
-
```typescript {
|
|
189
|
+
```typescript {18-23}
|
|
175
190
|
import { Memory } from "@mastra/memory";
|
|
176
191
|
import { PgStore, PgVector } from "@mastra/pg";
|
|
177
192
|
|
|
@@ -203,7 +218,7 @@ const agent = new Agent({
|
|
|
203
218
|
|
|
204
219
|
For detailed information about index configuration options and performance tuning, see the [PgVector configuration guide](/reference/v1/vectors/pg#index-configuration-guide).
|
|
205
220
|
|
|
206
|
-
|
|
221
|
+
## Disabling
|
|
207
222
|
|
|
208
223
|
There is a performance impact to using semantic recall. New messages are converted into embeddings and used to query a vector database before new messages are sent to the LLM.
|
|
209
224
|
|
|
@@ -221,11 +236,9 @@ const agent = new Agent({
|
|
|
221
236
|
|
|
222
237
|
You might want to disable semantic recall in scenarios like:
|
|
223
238
|
|
|
224
|
-
- When
|
|
239
|
+
- When message history provides sufficient context for the current conversation.
|
|
225
240
|
- In performance-sensitive applications, like realtime two-way audio, where the added latency of creating embeddings and running vector queries is noticeable.
|
|
226
241
|
|
|
227
242
|
## Viewing Recalled Messages
|
|
228
243
|
|
|
229
|
-
When tracing is enabled, any messages retrieved via semantic recall will appear in the agent
|
|
230
|
-
|
|
231
|
-
For more info on viewing message traces, see [Viewing Retrieved Messages](./overview#viewing-retrieved-messages).
|
|
244
|
+
When tracing is enabled, any messages retrieved via semantic recall will appear in the agent's trace output, alongside recent message history (if configured).
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Storage | Memory"
|
|
3
|
+
description: Configure storage for Mastra's memory system to persist conversations, workflows, and traces.
|
|
4
|
+
packages:
|
|
5
|
+
- "@mastra/core"
|
|
6
|
+
- "@mastra/libsql"
|
|
7
|
+
- "@mastra/memory"
|
|
8
|
+
- "@mastra/pg"
|
|
9
|
+
- "@mastra/pinecone"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Storage
|
|
13
|
+
|
|
14
|
+
For Mastra to remember previous interactions, you must configure a storage adapter. Mastra is designed to work with your preferred database provider - choose from the [supported providers](#supported-providers) and pass it to your Mastra instance.
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
```typescript title="src/mastra/index.ts"
|
|
18
|
+
import { Mastra } from "@mastra/core";
|
|
19
|
+
import { LibSQLStore } from "@mastra/libsql";
|
|
20
|
+
|
|
21
|
+
export const mastra = new Mastra({
|
|
22
|
+
storage: new LibSQLStore({
|
|
23
|
+
id: 'mastra-storage',
|
|
24
|
+
url: "file:./mastra.db",
|
|
25
|
+
}),
|
|
26
|
+
});
|
|
27
|
+
```
|
|
28
|
+
On first interaction, Mastra automatically creates the necessary tables following the [core schema](/reference/v1/storage/overview#core-schema). This includes tables for messages, threads, resources, workflows, traces, and evaluation datasets.
|
|
29
|
+
|
|
30
|
+
## Supported providers
|
|
31
|
+
|
|
32
|
+
Each provider page includes installation instructions, configuration parameters, and usage examples:
|
|
33
|
+
|
|
34
|
+
- [libSQL Storage](/reference/v1/storage/libsql)
|
|
35
|
+
- [PostgreSQL Storage](/reference/v1/storage/postgresql)
|
|
36
|
+
- [MongoDB Storage](/reference/v1/storage/mongodb)
|
|
37
|
+
- [Upstash Storage](/reference/v1/storage/upstash)
|
|
38
|
+
- [Cloudflare D1](/reference/v1/storage/cloudflare-d1)
|
|
39
|
+
- [Cloudflare Durable Objects](/reference/v1/storage/cloudflare)
|
|
40
|
+
- [Convex](/reference/v1/storage/convex)
|
|
41
|
+
- [DynamoDB](/reference/v1/storage/dynamodb)
|
|
42
|
+
- [LanceDB](/reference/v1/storage/lance)
|
|
43
|
+
- [Microsoft SQL Server](/reference/v1/storage/mssql)
|
|
44
|
+
|
|
45
|
+
:::tip
|
|
46
|
+
libSQL is the easiest way to get started because it doesn’t require running a separate database server
|
|
47
|
+
:::
|
|
48
|
+
|
|
49
|
+
## Configuration scope
|
|
50
|
+
|
|
51
|
+
You can configure storage at two different scopes:
|
|
52
|
+
|
|
53
|
+
### Instance-level storage
|
|
54
|
+
|
|
55
|
+
Add storage to your Mastra instance so all agents, workflows, observability traces and scores share the same memory provider:
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
import { Mastra } from "@mastra/core";
|
|
59
|
+
import { PostgresStore } from "@mastra/pg";
|
|
60
|
+
|
|
61
|
+
export const mastra = new Mastra({
|
|
62
|
+
storage: new PostgresStore({
|
|
63
|
+
id: 'mastra-storage',
|
|
64
|
+
connectionString: process.env.DATABASE_URL,
|
|
65
|
+
}),
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
// All agents automatically use this storage
|
|
69
|
+
const agent1 = new Agent({ id: "agent-1", memory: new Memory() });
|
|
70
|
+
const agent2 = new Agent({ id: "agent-2", memory: new Memory() });
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
This is useful when all primitives share the same storage backend and have similar performance, scaling, and operational requirements.
|
|
74
|
+
|
|
75
|
+
#### Composite storage
|
|
76
|
+
|
|
77
|
+
Add storage to your Mastra instance using `MastraCompositeStore` and configure individual storage domains to use different storage providers.
|
|
78
|
+
|
|
79
|
+
```typescript title="src/mastra/index.ts"
|
|
80
|
+
import { Mastra } from "@mastra/core";
|
|
81
|
+
import { MastraCompositeStore } from "@mastra/core/storage";
|
|
82
|
+
import { MemoryLibSQL } from "@mastra/libsql";
|
|
83
|
+
import { WorkflowsPG } from "@mastra/pg";
|
|
84
|
+
import { ObservabilityStorageClickhouse } from "@mastra/clickhouse";
|
|
85
|
+
|
|
86
|
+
export const mastra = new Mastra({
|
|
87
|
+
storage: new MastraCompositeStore({
|
|
88
|
+
id: "composite",
|
|
89
|
+
domains: {
|
|
90
|
+
memory: new MemoryLibSQL({ url: "file:./memory.db" }),
|
|
91
|
+
workflows: new WorkflowsPG({ connectionString: process.env.DATABASE_URL }),
|
|
92
|
+
observability: new ObservabilityStorageClickhouse({
|
|
93
|
+
url: process.env.CLICKHOUSE_URL,
|
|
94
|
+
username: process.env.CLICKHOUSE_USERNAME,
|
|
95
|
+
password: process.env.CLICKHOUSE_PASSWORD,
|
|
96
|
+
}),
|
|
97
|
+
},
|
|
98
|
+
}),
|
|
99
|
+
});
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
This is useful when different types of data have different performance or operational requirements, such as low-latency storage for memory, durable storage for workflows, and high-throughput storage for observability.
|
|
103
|
+
|
|
104
|
+
:::info
|
|
105
|
+
See [Storage Domains](/reference/v1/storage/composite#storage-domains) for more information.
|
|
106
|
+
:::
|
|
107
|
+
|
|
108
|
+
### Agent-level storage
|
|
109
|
+
|
|
110
|
+
Agent-level storage overrides storage configured at the instance-level. Add storage to a specific agent when you need data boundaries or compliance requirements:
|
|
111
|
+
|
|
112
|
+
```typescript title="src/mastra/agents/memory-agent.ts"
|
|
113
|
+
import { Agent } from "@mastra/core/agent";
|
|
114
|
+
import { Memory } from "@mastra/memory";
|
|
115
|
+
import { PostgresStore } from "@mastra/pg";
|
|
116
|
+
|
|
117
|
+
export const agent = new Agent({
|
|
118
|
+
id: "agent",
|
|
119
|
+
memory: new Memory({
|
|
120
|
+
storage: new PostgresStore({
|
|
121
|
+
id: 'agent-storage',
|
|
122
|
+
connectionString: process.env.AGENT_DATABASE_URL,
|
|
123
|
+
}),
|
|
124
|
+
}),
|
|
125
|
+
});
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
This is useful when different agents need to store data in separate databases for security, compliance, or organizational reasons.
|
|
129
|
+
|
|
130
|
+
:::warning[Mastra Cloud Store limitation]
|
|
131
|
+
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.
|
|
132
|
+
:::
|
|
133
|
+
|
|
134
|
+
## Threads and resources
|
|
135
|
+
|
|
136
|
+
Mastra organizes memory into threads using two identifiers:
|
|
137
|
+
|
|
138
|
+
- **Thread**: A conversation session containing a sequence of messages (e.g., `convo_123`)
|
|
139
|
+
- **Resource**: An identifier for the entity the thread belongs to, typically a user (e.g., `user_123`)
|
|
140
|
+
|
|
141
|
+
Both identifiers are required for agents to store and recall information:
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
const stream = await agent.stream("message for agent", {
|
|
145
|
+
memory: {
|
|
146
|
+
thread: "convo_123",
|
|
147
|
+
resource: "user_123",
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
:::note
|
|
153
|
+
[Studio](/docs/v1/getting-started/studio) automatically generates a thread and resource ID for you. Remember to to pass these explicitly when calling `stream` or `generate` yourself.
|
|
154
|
+
:::
|
|
155
|
+
|
|
156
|
+
### Thread and resource relationship
|
|
157
|
+
|
|
158
|
+
Each thread has an owner (its `resourceId`) that is set when the thread is created and cannot be changed. When you query a thread, you must use the correct owner's resource ID. Attempting to query a thread with a different resource ID will result in an error:
|
|
159
|
+
|
|
160
|
+
```text
|
|
161
|
+
Thread with id <thread_id> is for resource with id <resource_a>
|
|
162
|
+
but resource <resource_b> was queried
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Note that while each thread has one owner, messages within that thread can have different `resourceId` values. This is used for message attribution and filtering (e.g., distinguishing between different agents in a multi-agent system, or filtering messages for analytics).
|
|
166
|
+
|
|
167
|
+
**Security:** Memory is a storage layer, not an authorization layer. Your application must implement access control before calling memory APIs. The `resourceId` parameter controls both validation and filtering - provide it to validate ownership and filter messages, or omit it for server-side access without validation.
|
|
168
|
+
|
|
169
|
+
To avoid accidentally reusing thread IDs across different owners, use UUIDs: `crypto.randomUUID()`
|
|
170
|
+
|
|
171
|
+
### Thread title generation
|
|
172
|
+
|
|
173
|
+
Mastra can automatically generate descriptive thread titles based on the user's first message.
|
|
174
|
+
|
|
175
|
+
Use this option when implementing a ChatGPT-style chat interface to render a title alongside each thread in the conversation list (for example, in a sidebar) derived from the thread’s initial user message.
|
|
176
|
+
|
|
177
|
+
```typescript
|
|
178
|
+
export const testAgent = new Agent({
|
|
179
|
+
id: "test-agent",
|
|
180
|
+
memory: new Memory({
|
|
181
|
+
options: {
|
|
182
|
+
generateTitle: true,
|
|
183
|
+
},
|
|
184
|
+
}),
|
|
185
|
+
});
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Title generation runs asynchronously after the agent responds and does not affect response time.
|
|
189
|
+
|
|
190
|
+
To optimize cost or behavior, provide a smaller `model` and custom `instructions`:
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
export const testAgent = new Agent({
|
|
194
|
+
id: "test-agent",
|
|
195
|
+
memory: new Memory({
|
|
196
|
+
options: {
|
|
197
|
+
generateTitle: {
|
|
198
|
+
model: "openai/gpt-4o-mini",
|
|
199
|
+
instructions: "Generate a concise title based on the user's first message",
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
}),
|
|
203
|
+
});
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## Semantic recall
|
|
207
|
+
|
|
208
|
+
Semantic recall uses vector embeddings to retrieve relevant past messages based on meaning rather than recency. This requires a vector database instance, which can be configured at the instance or agent level.
|
|
209
|
+
|
|
210
|
+
The vector database doesn't have to be the same as your storage provider. For example, you might use PostgreSQL for storage and Pinecone for vectors:
|
|
211
|
+
|
|
212
|
+
```typescript
|
|
213
|
+
import { Mastra } from "@mastra/core";
|
|
214
|
+
import { Agent } from "@mastra/core/agent";
|
|
215
|
+
import { Memory } from "@mastra/memory";
|
|
216
|
+
import { PostgresStore } from "@mastra/pg";
|
|
217
|
+
import { PineconeVector } from "@mastra/pinecone";
|
|
218
|
+
|
|
219
|
+
// Instance-level vector configuration
|
|
220
|
+
export const mastra = new Mastra({
|
|
221
|
+
storage: new PostgresStore({
|
|
222
|
+
id: 'mastra-storage',
|
|
223
|
+
connectionString: process.env.DATABASE_URL,
|
|
224
|
+
}),
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
// Agent-level vector configuration
|
|
228
|
+
export const agent = new Agent({
|
|
229
|
+
id: "agent",
|
|
230
|
+
memory: new Memory({
|
|
231
|
+
vector: new PineconeVector({
|
|
232
|
+
id: 'agent-vector',
|
|
233
|
+
apiKey: process.env.PINECONE_API_KEY,
|
|
234
|
+
}),
|
|
235
|
+
options: {
|
|
236
|
+
semanticRecall: {
|
|
237
|
+
topK: 5,
|
|
238
|
+
messageRange: 2,
|
|
239
|
+
},
|
|
240
|
+
},
|
|
241
|
+
}),
|
|
242
|
+
});
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
We support all popular vector providers including [Pinecone](/reference/v1/vectors/pinecone), [Chroma](/reference/v1/vectors/chroma), [Qdrant](/reference/v1/vectors/qdrant), and many more.
|
|
246
|
+
|
|
247
|
+
For more information on configuring semantic recall, see the [Semantic Recall](./semantic-recall) documentation.
|
|
248
|
+
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Working Memory | Memory"
|
|
3
3
|
description: "Learn how to configure working memory in Mastra to store persistent user data, preferences."
|
|
4
|
+
packages:
|
|
5
|
+
- "@mastra/core"
|
|
6
|
+
- "@mastra/libsql"
|
|
7
|
+
- "@mastra/memory"
|
|
8
|
+
- "@mastra/mongodb"
|
|
9
|
+
- "@mastra/pg"
|
|
10
|
+
- "@mastra/upstash"
|
|
4
11
|
---
|
|
5
12
|
|
|
6
13
|
import YouTube from "@site/src/components/YouTube-player";
|
|
7
14
|
|
|
8
15
|
# Working Memory
|
|
9
16
|
|
|
10
|
-
While [
|
|
17
|
+
While [message history](/docs/v1/memory/message-history) and [semantic recall](./semantic-recall) help agents remember conversations, working memory allows them to maintain persistent information about users across interactions.
|
|
11
18
|
|
|
12
19
|
Think of it as the agent's active thoughts or scratchpad – the key information they keep available about the user or task. It's similar to how a person would naturally remember someone's name, preferences, or important details during a conversation.
|
|
13
20
|
|
|
@@ -24,7 +31,7 @@ Working memory can persist at two different scopes:
|
|
|
24
31
|
|
|
25
32
|
Here's a minimal example of setting up an agent with working memory:
|
|
26
33
|
|
|
27
|
-
```typescript {11-
|
|
34
|
+
```typescript {11-15}
|
|
28
35
|
import { Agent } from "@mastra/core/agent";
|
|
29
36
|
import { Memory } from "@mastra/memory";
|
|
30
37
|
|
|
@@ -85,13 +92,15 @@ const memory = new Memory({
|
|
|
85
92
|
|
|
86
93
|
### Usage with Agents
|
|
87
94
|
|
|
88
|
-
When using resource-scoped memory, make sure to pass the `
|
|
95
|
+
When using resource-scoped memory, make sure to pass the `resource` parameter in the memory options:
|
|
89
96
|
|
|
90
97
|
```typescript
|
|
91
|
-
// Resource-scoped memory requires
|
|
98
|
+
// Resource-scoped memory requires resource
|
|
92
99
|
const response = await agent.generate("Hello!", {
|
|
93
|
-
|
|
94
|
-
|
|
100
|
+
memory: {
|
|
101
|
+
thread: "conversation-123",
|
|
102
|
+
resource: "user-alice-456", // Same user across different threads
|
|
103
|
+
},
|
|
95
104
|
});
|
|
96
105
|
```
|
|
97
106
|
|
|
@@ -126,9 +135,9 @@ const memory = new Memory({
|
|
|
126
135
|
|
|
127
136
|
Resource-scoped working memory requires specific storage adapters that support the `mastra_resources` table:
|
|
128
137
|
|
|
129
|
-
###
|
|
138
|
+
### Supported Storage Adapters
|
|
130
139
|
|
|
131
|
-
- **
|
|
140
|
+
- **libSQL** (`@mastra/libsql`)
|
|
132
141
|
- **PostgreSQL** (`@mastra/pg`)
|
|
133
142
|
- **Upstash** (`@mastra/upstash`)
|
|
134
143
|
- **MongoDB** (`@mastra/mongodb`)
|
|
@@ -325,7 +334,7 @@ While agents typically update working memory through the `updateWorkingMemory` t
|
|
|
325
334
|
|
|
326
335
|
When creating a thread, you can provide initial working memory through the metadata's `workingMemory` key:
|
|
327
336
|
|
|
328
|
-
```typescript title="src/app/medical-consultation.ts"
|
|
337
|
+
```typescript title="src/app/medical-consultation.ts"
|
|
329
338
|
// Create a thread with initial working memory
|
|
330
339
|
const thread = await memory.createThread({
|
|
331
340
|
threadId: "thread-123",
|
|
@@ -344,8 +353,10 @@ const thread = await memory.createThread({
|
|
|
344
353
|
|
|
345
354
|
// The agent will now have access to this information in all messages
|
|
346
355
|
await agent.generate("What's my blood type?", {
|
|
347
|
-
|
|
348
|
-
|
|
356
|
+
memory: {
|
|
357
|
+
thread: thread.id,
|
|
358
|
+
resource: "user-456",
|
|
359
|
+
},
|
|
349
360
|
});
|
|
350
361
|
// Response: "Your blood type is O+."
|
|
351
362
|
```
|
|
@@ -354,7 +365,7 @@ await agent.generate("What's my blood type?", {
|
|
|
354
365
|
|
|
355
366
|
You can also update an existing thread's working memory:
|
|
356
367
|
|
|
357
|
-
```typescript title="src/app/medical-consultation.ts"
|
|
368
|
+
```typescript title="src/app/medical-consultation.ts"
|
|
358
369
|
// Update thread metadata to add/modify working memory
|
|
359
370
|
await memory.updateThread({
|
|
360
371
|
id: "thread-123",
|
|
@@ -376,7 +387,7 @@ await memory.updateThread({
|
|
|
376
387
|
|
|
377
388
|
Alternatively, use the `updateWorkingMemory` method directly:
|
|
378
389
|
|
|
379
|
-
```typescript title="src/app/medical-consultation.ts"
|
|
390
|
+
```typescript title="src/app/medical-consultation.ts"
|
|
380
391
|
await memory.updateWorkingMemory({
|
|
381
392
|
threadId: "thread-123",
|
|
382
393
|
resourceId: "user-456", // Required for resource-scoped memory
|
|
@@ -1,24 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Logging | Observability"
|
|
3
3
|
description: Learn how to use logging in Mastra to monitor execution, capture application behavior, and improve the accuracy of AI applications.
|
|
4
|
+
packages:
|
|
5
|
+
- "@mastra/core"
|
|
6
|
+
- "@mastra/loggers"
|
|
4
7
|
---
|
|
5
8
|
|
|
6
9
|
# Logging
|
|
7
10
|
|
|
8
11
|
Mastra's logging system captures function execution, input data, and output responses in a structured format.
|
|
9
12
|
|
|
10
|
-
When deploying to Mastra Cloud, logs are shown on the [Logs](/docs/v1/
|
|
13
|
+
When deploying to Mastra Cloud, logs are shown on the [Logs](/docs/v1/mastra-cloud/observability) page. In self-hosted or custom environments, logs can be directed to files or external services depending on the configured transports.
|
|
11
14
|
|
|
12
15
|
## Configuring logs with PinoLogger
|
|
13
16
|
|
|
14
17
|
When [initializing a new Mastra project](/guides/v1/getting-started/quickstart) using the CLI, `PinoLogger` is included by default.
|
|
15
18
|
|
|
16
|
-
```typescript title="src/mastra/index.ts"
|
|
19
|
+
```typescript title="src/mastra/index.ts"
|
|
17
20
|
import { Mastra } from "@mastra/core/mastra";
|
|
18
21
|
import { PinoLogger } from "@mastra/loggers";
|
|
19
22
|
|
|
20
23
|
export const mastra = new Mastra({
|
|
21
|
-
// ...
|
|
22
24
|
logger: new PinoLogger({
|
|
23
25
|
name: "Mastra",
|
|
24
26
|
level: "info",
|
|
@@ -26,7 +28,11 @@ export const mastra = new Mastra({
|
|
|
26
28
|
});
|
|
27
29
|
```
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
:::info
|
|
32
|
+
|
|
33
|
+
Visit [PinoLogger](/reference/v1/logging/pino-logger) for all available configuration options.
|
|
34
|
+
|
|
35
|
+
:::
|
|
30
36
|
|
|
31
37
|
## Customizing logs
|
|
32
38
|
|
|
@@ -36,14 +42,12 @@ Mastra provides access to a logger instance via the `mastra.getLogger()` method,
|
|
|
36
42
|
|
|
37
43
|
Within a workflow step, access the logger via the `mastra` parameter inside the `execute` function. This allows you to log messages relevant to the step’s execution.
|
|
38
44
|
|
|
39
|
-
```typescript {
|
|
45
|
+
```typescript {6-7} title="src/mastra/workflows/test-workflow.ts"
|
|
40
46
|
import { createWorkflow, createStep } from "@mastra/core/workflows";
|
|
41
47
|
import { z } from "zod";
|
|
42
48
|
|
|
43
49
|
const step1 = createStep({
|
|
44
|
-
//...
|
|
45
50
|
execute: async ({ mastra }) => {
|
|
46
|
-
|
|
47
51
|
const logger = mastra.getLogger();
|
|
48
52
|
logger.info("workflow info log");
|
|
49
53
|
|
|
@@ -62,14 +66,13 @@ export const testWorkflow = createWorkflow({...})
|
|
|
62
66
|
|
|
63
67
|
Similarly, tools have access to the logger instance via the `mastra` parameter. Use this to log tool specific activity during execution.
|
|
64
68
|
|
|
65
|
-
```typescript {
|
|
69
|
+
```typescript {6-7} title="src/mastra/tools/test-tool.ts"
|
|
66
70
|
import { createTool } from "@mastra/core/tools";
|
|
67
71
|
import { z } from "zod";
|
|
68
72
|
|
|
69
73
|
export const testTool = createTool({
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const logger = mastra?.getLogger();
|
|
74
|
+
execute: async (inputData, context) => {
|
|
75
|
+
const logger = context?.mastra.getLogger();
|
|
73
76
|
logger?.info("tool info log");
|
|
74
77
|
|
|
75
78
|
return {
|
|
@@ -85,17 +88,15 @@ Logger methods accept an optional second argument for additional data. This can
|
|
|
85
88
|
|
|
86
89
|
In this example, the log message includes an object with a key of `agent` and a value of the `testAgent` instance.
|
|
87
90
|
|
|
88
|
-
```typescript {
|
|
91
|
+
```typescript {9} title="src/mastra/workflows/test-workflow.ts"
|
|
89
92
|
import { createWorkflow, createStep } from "@mastra/core/workflows";
|
|
90
93
|
import { z } from "zod";
|
|
91
94
|
|
|
92
95
|
const step1 = createStep({
|
|
93
|
-
//...
|
|
94
96
|
execute: async ({ mastra }) => {
|
|
95
|
-
|
|
96
97
|
const testAgent = mastra.getAgent("testAgent");
|
|
97
|
-
|
|
98
98
|
const logger = mastra.getLogger();
|
|
99
|
+
|
|
99
100
|
logger.info("workflow info log", { agent: testAgent });
|
|
100
101
|
|
|
101
102
|
return {
|