@mastra/mcp-docs-server 0.13.37 → 0.13.38
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 +2 -0
- package/.docs/organized/changelogs/%40internal%2Fexternal-types.md +2 -0
- package/.docs/organized/changelogs/%40internal%2Fstorage-test-utils.md +8 -8
- package/.docs/organized/changelogs/%40internal%2Ftypes-builder.md +2 -0
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +23 -23
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +69 -69
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +25 -25
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +15 -15
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +27 -27
- package/.docs/organized/changelogs/%40mastra%2Freact.md +15 -15
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +23 -23
- package/.docs/organized/changelogs/create-mastra.md +5 -5
- package/.docs/organized/changelogs/mastra.md +17 -17
- package/.docs/raw/agents/adding-voice.mdx +20 -9
- package/.docs/raw/agents/agent-memory.mdx +55 -39
- package/.docs/raw/agents/guardrails.mdx +68 -61
- package/.docs/raw/agents/networks.mdx +50 -46
- package/.docs/raw/agents/overview.mdx +125 -88
- package/.docs/raw/agents/using-tools.mdx +14 -15
- package/.docs/raw/auth/auth0.mdx +28 -27
- package/.docs/raw/auth/clerk.mdx +22 -20
- package/.docs/raw/auth/firebase.mdx +42 -39
- package/.docs/raw/auth/index.mdx +1 -1
- package/.docs/raw/auth/jwt.mdx +18 -16
- package/.docs/raw/auth/supabase.mdx +20 -18
- package/.docs/raw/auth/workos.mdx +32 -26
- package/.docs/raw/community/contributing-templates.mdx +7 -7
- package/.docs/raw/community/discord.mdx +2 -2
- package/.docs/raw/community/licensing.mdx +1 -1
- package/.docs/raw/course/03-agent-memory/26-updating-mastra-export-comprehensive.md +0 -32
- package/.docs/raw/deployment/cloud-providers/amazon-ec2.mdx +41 -22
- package/.docs/raw/deployment/cloud-providers/aws-lambda.mdx +48 -29
- package/.docs/raw/deployment/cloud-providers/azure-app-services.mdx +52 -24
- package/.docs/raw/deployment/cloud-providers/digital-ocean.mdx +86 -55
- package/.docs/raw/deployment/cloud-providers/index.mdx +16 -13
- package/.docs/raw/deployment/monorepo.mdx +32 -42
- package/.docs/raw/deployment/overview.mdx +15 -15
- package/.docs/raw/deployment/server-deployment.mdx +18 -23
- package/.docs/raw/deployment/serverless-platforms/cloudflare-deployer.mdx +16 -17
- package/.docs/raw/deployment/serverless-platforms/index.mdx +15 -12
- package/.docs/raw/deployment/serverless-platforms/netlify-deployer.mdx +14 -23
- package/.docs/raw/deployment/serverless-platforms/vercel-deployer.mdx +16 -23
- package/.docs/raw/deployment/web-framework.mdx +14 -14
- package/.docs/raw/frameworks/agentic-uis/ai-sdk.mdx +138 -145
- package/.docs/raw/frameworks/agentic-uis/assistant-ui.mdx +54 -43
- package/.docs/raw/frameworks/agentic-uis/cedar-os.mdx +51 -36
- package/.docs/raw/frameworks/agentic-uis/copilotkit.mdx +161 -120
- package/.docs/raw/frameworks/agentic-uis/openrouter.mdx +59 -48
- package/.docs/raw/frameworks/servers/express.mdx +45 -44
- package/.docs/raw/frameworks/web-frameworks/astro.mdx +245 -162
- package/.docs/raw/frameworks/web-frameworks/next-js.mdx +112 -69
- package/.docs/raw/frameworks/web-frameworks/sveltekit.mdx +189 -164
- package/.docs/raw/frameworks/web-frameworks/vite-react.mdx +94 -81
- package/.docs/raw/getting-started/installation.mdx +164 -133
- package/.docs/raw/getting-started/mcp-docs-server.mdx +36 -39
- package/.docs/raw/getting-started/project-structure.mdx +34 -42
- package/.docs/raw/getting-started/studio.mdx +40 -58
- package/.docs/raw/getting-started/templates.mdx +22 -27
- package/.docs/raw/index.mdx +9 -9
- package/.docs/raw/mastra-cloud/dashboard.mdx +10 -10
- package/.docs/raw/mastra-cloud/observability.mdx +7 -8
- package/.docs/raw/mastra-cloud/overview.mdx +16 -22
- package/.docs/raw/mastra-cloud/setting-up.mdx +33 -20
- package/.docs/raw/memory/conversation-history.mdx +2 -2
- package/.docs/raw/memory/overview.mdx +21 -23
- package/.docs/raw/memory/semantic-recall.mdx +14 -13
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +27 -28
- package/.docs/raw/memory/storage/memory-with-pg.mdx +26 -26
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +26 -27
- package/.docs/raw/memory/threads-and-resources.mdx +23 -20
- package/.docs/raw/memory/working-memory.mdx +27 -38
- package/.docs/raw/observability/ai-tracing/exporters/arize.mdx +30 -29
- package/.docs/raw/observability/ai-tracing/exporters/braintrust.mdx +8 -9
- package/.docs/raw/observability/ai-tracing/exporters/cloud.mdx +17 -16
- package/.docs/raw/observability/ai-tracing/exporters/default.mdx +31 -32
- package/.docs/raw/observability/ai-tracing/exporters/langfuse.mdx +18 -17
- package/.docs/raw/observability/ai-tracing/exporters/langsmith.mdx +14 -14
- package/.docs/raw/observability/ai-tracing/exporters/otel.mdx +56 -46
- package/.docs/raw/observability/ai-tracing/overview.mdx +145 -122
- package/.docs/raw/observability/ai-tracing/processors/sensitive-data-filter.mdx +57 -36
- package/.docs/raw/observability/logging.mdx +14 -17
- package/.docs/raw/observability/nextjs-tracing.mdx +5 -5
- package/.docs/raw/observability/otel-tracing.mdx +17 -18
- package/.docs/raw/observability/overview.mdx +14 -10
- package/.docs/raw/rag/chunking-and-embedding.mdx +10 -8
- package/.docs/raw/rag/overview.mdx +5 -5
- package/.docs/raw/rag/retrieval.mdx +125 -107
- package/.docs/raw/rag/vector-databases.mdx +232 -223
- package/.docs/raw/reference/agents/agent.mdx +54 -41
- package/.docs/raw/reference/agents/generate.mdx +367 -261
- package/.docs/raw/reference/agents/generateLegacy.mdx +260 -178
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +7 -5
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +7 -5
- package/.docs/raw/reference/agents/getDescription.mdx +3 -2
- package/.docs/raw/reference/agents/getInstructions.mdx +7 -5
- package/.docs/raw/reference/agents/getLLM.mdx +11 -7
- package/.docs/raw/reference/agents/getMemory.mdx +7 -5
- package/.docs/raw/reference/agents/getModel.mdx +7 -5
- package/.docs/raw/reference/agents/getScorers.mdx +7 -5
- package/.docs/raw/reference/agents/getTools.mdx +7 -5
- package/.docs/raw/reference/agents/getVoice.mdx +7 -5
- package/.docs/raw/reference/agents/getWorkflows.mdx +7 -5
- package/.docs/raw/reference/agents/listAgents.mdx +6 -4
- package/.docs/raw/reference/agents/network.mdx +171 -116
- package/.docs/raw/reference/auth/auth0.mdx +18 -14
- package/.docs/raw/reference/auth/clerk.mdx +15 -12
- package/.docs/raw/reference/auth/firebase.mdx +23 -16
- package/.docs/raw/reference/auth/jwt.mdx +7 -6
- package/.docs/raw/reference/auth/supabase.mdx +13 -10
- package/.docs/raw/reference/auth/workos.mdx +17 -13
- package/.docs/raw/reference/cli/create-mastra.mdx +61 -44
- package/.docs/raw/reference/cli/mastra.mdx +11 -11
- package/.docs/raw/reference/client-js/agents.mdx +40 -43
- package/.docs/raw/reference/client-js/error-handling.mdx +1 -1
- package/.docs/raw/reference/client-js/logs.mdx +1 -1
- package/.docs/raw/reference/client-js/mastra-client.mdx +21 -13
- package/.docs/raw/reference/client-js/memory.mdx +6 -2
- package/.docs/raw/reference/client-js/observability.mdx +10 -9
- package/.docs/raw/reference/client-js/telemetry.mdx +1 -1
- package/.docs/raw/reference/client-js/tools.mdx +1 -1
- package/.docs/raw/reference/client-js/vectors.mdx +1 -1
- package/.docs/raw/reference/client-js/workflows-legacy.mdx +1 -1
- package/.docs/raw/reference/client-js/workflows.mdx +7 -7
- package/.docs/raw/reference/core/getAgent.mdx +6 -5
- package/.docs/raw/reference/core/getAgentById.mdx +5 -4
- package/.docs/raw/reference/core/getAgents.mdx +3 -3
- package/.docs/raw/reference/core/getDeployer.mdx +4 -3
- package/.docs/raw/reference/core/getLogger.mdx +4 -3
- package/.docs/raw/reference/core/getLogs.mdx +10 -6
- package/.docs/raw/reference/core/getLogsByRunId.mdx +8 -5
- package/.docs/raw/reference/core/getMCPServer.mdx +8 -5
- package/.docs/raw/reference/core/getMCPServers.mdx +4 -3
- package/.docs/raw/reference/core/getMemory.mdx +4 -3
- package/.docs/raw/reference/core/getScorer.mdx +15 -12
- package/.docs/raw/reference/core/getScorerByName.mdx +12 -9
- package/.docs/raw/reference/core/getScorers.mdx +3 -2
- package/.docs/raw/reference/core/getServer.mdx +4 -3
- package/.docs/raw/reference/core/getStorage.mdx +4 -3
- package/.docs/raw/reference/core/getTelemetry.mdx +4 -3
- package/.docs/raw/reference/core/getVector.mdx +6 -4
- package/.docs/raw/reference/core/getVectors.mdx +4 -3
- package/.docs/raw/reference/core/getWorkflow.mdx +7 -4
- package/.docs/raw/reference/core/getWorkflows.mdx +5 -3
- package/.docs/raw/reference/core/mastra-class.mdx +16 -16
- package/.docs/raw/reference/core/setLogger.mdx +6 -4
- package/.docs/raw/reference/core/setStorage.mdx +4 -4
- package/.docs/raw/reference/core/setTelemetry.mdx +4 -3
- package/.docs/raw/reference/deployer/cloudflare.mdx +11 -7
- package/.docs/raw/reference/deployer/deployer.mdx +2 -1
- package/.docs/raw/reference/deployer/netlify.mdx +4 -4
- package/.docs/raw/reference/deployer/vercel.mdx +6 -6
- package/.docs/raw/reference/evals/answer-relevancy.mdx +4 -5
- package/.docs/raw/reference/evals/bias.mdx +4 -5
- package/.docs/raw/reference/evals/completeness.mdx +4 -5
- package/.docs/raw/reference/evals/content-similarity.mdx +4 -5
- package/.docs/raw/reference/evals/context-position.mdx +4 -5
- package/.docs/raw/reference/evals/context-precision.mdx +4 -5
- package/.docs/raw/reference/evals/context-relevancy.mdx +4 -5
- package/.docs/raw/reference/evals/contextual-recall.mdx +4 -5
- package/.docs/raw/reference/evals/faithfulness.mdx +4 -5
- package/.docs/raw/reference/evals/hallucination.mdx +4 -6
- package/.docs/raw/reference/evals/keyword-coverage.mdx +4 -5
- package/.docs/raw/reference/evals/prompt-alignment.mdx +4 -6
- package/.docs/raw/reference/evals/summarization.mdx +4 -6
- package/.docs/raw/reference/evals/textual-difference.mdx +4 -5
- package/.docs/raw/reference/evals/tone-consistency.mdx +4 -7
- package/.docs/raw/reference/evals/toxicity.mdx +4 -5
- package/.docs/raw/reference/index.mdx +3 -3
- package/.docs/raw/reference/legacyWorkflows/after.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/afterEvent.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/commit.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/createRun.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/else.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/events.mdx +7 -7
- package/.docs/raw/reference/legacyWorkflows/execute.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/if.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/resume.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/resumeWithEvent.mdx +6 -6
- package/.docs/raw/reference/legacyWorkflows/snapshots.mdx +6 -6
- package/.docs/raw/reference/legacyWorkflows/start.mdx +6 -6
- package/.docs/raw/reference/legacyWorkflows/step-class.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/step-condition.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/step-function.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/step-options.mdx +6 -6
- package/.docs/raw/reference/legacyWorkflows/step-retries.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/suspend.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/then.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/until.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/watch.mdx +3 -3
- package/.docs/raw/reference/legacyWorkflows/while.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/workflow.mdx +7 -7
- package/.docs/raw/reference/memory/createThread.mdx +10 -10
- package/.docs/raw/reference/memory/deleteMessages.mdx +7 -5
- package/.docs/raw/reference/memory/getThreadById.mdx +6 -5
- package/.docs/raw/reference/memory/getThreadsByResourceId.mdx +11 -10
- package/.docs/raw/reference/memory/getThreadsByResourceIdPaginated.mdx +10 -9
- package/.docs/raw/reference/memory/{Memory.mdx → memory-class.mdx} +53 -46
- package/.docs/raw/reference/memory/query.mdx +39 -25
- package/.docs/raw/reference/observability/ai-tracing/ai-tracing.mdx +9 -5
- package/.docs/raw/reference/observability/ai-tracing/configuration.mdx +26 -22
- package/.docs/raw/reference/observability/ai-tracing/exporters/arize.mdx +16 -12
- package/.docs/raw/reference/observability/ai-tracing/exporters/braintrust.mdx +14 -14
- package/.docs/raw/reference/observability/ai-tracing/exporters/cloud-exporter.mdx +16 -11
- package/.docs/raw/reference/observability/ai-tracing/exporters/console-exporter.mdx +10 -6
- package/.docs/raw/reference/observability/ai-tracing/exporters/default-exporter.mdx +23 -15
- package/.docs/raw/reference/observability/ai-tracing/exporters/langfuse.mdx +6 -6
- package/.docs/raw/reference/observability/ai-tracing/exporters/langsmith.mdx +13 -13
- package/.docs/raw/reference/observability/ai-tracing/exporters/otel.mdx +44 -36
- package/.docs/raw/reference/observability/ai-tracing/interfaces.mdx +115 -106
- package/.docs/raw/reference/observability/ai-tracing/processors/sensitive-data-filter.mdx +37 -32
- package/.docs/raw/reference/observability/ai-tracing/span.mdx +29 -26
- package/.docs/raw/reference/observability/logging/pino-logger.mdx +13 -15
- package/.docs/raw/reference/observability/otel-tracing/otel-config.mdx +2 -2
- package/.docs/raw/reference/observability/otel-tracing/providers/arize-ax.mdx +3 -3
- package/.docs/raw/reference/observability/otel-tracing/providers/arize-phoenix.mdx +2 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/dash0.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/index.mdx +12 -14
- package/.docs/raw/reference/observability/otel-tracing/providers/keywordsai.mdx +3 -3
- package/.docs/raw/reference/observability/otel-tracing/providers/laminar.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/langfuse.mdx +4 -4
- package/.docs/raw/reference/observability/otel-tracing/providers/langsmith.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/langwatch.mdx +2 -2
- package/.docs/raw/reference/observability/otel-tracing/providers/new-relic.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/signoz.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/traceloop.mdx +1 -1
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +13 -10
- package/.docs/raw/reference/processors/language-detector.mdx +27 -17
- package/.docs/raw/reference/processors/moderation-processor.mdx +26 -17
- package/.docs/raw/reference/processors/pii-detector.mdx +28 -18
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +25 -17
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +26 -17
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +22 -15
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +13 -12
- package/.docs/raw/reference/rag/chunk.mdx +41 -23
- package/.docs/raw/reference/rag/database-config.mdx +56 -38
- package/.docs/raw/reference/rag/document.mdx +1 -1
- package/.docs/raw/reference/rag/embeddings.mdx +1 -1
- package/.docs/raw/reference/rag/extract-params.mdx +1 -1
- package/.docs/raw/reference/rag/graph-rag.mdx +1 -1
- package/.docs/raw/reference/rag/metadata-filters.mdx +23 -26
- package/.docs/raw/reference/rag/rerank.mdx +1 -1
- package/.docs/raw/reference/rag/rerankWithScorer.mdx +2 -2
- package/.docs/raw/reference/scorers/answer-relevancy.mdx +35 -17
- package/.docs/raw/reference/scorers/answer-similarity.mdx +84 -68
- package/.docs/raw/reference/scorers/bias.mdx +22 -19
- package/.docs/raw/reference/scorers/completeness.mdx +21 -16
- package/.docs/raw/reference/scorers/content-similarity.mdx +12 -10
- package/.docs/raw/reference/scorers/context-precision.mdx +73 -64
- package/.docs/raw/reference/scorers/context-relevance.mdx +142 -126
- package/.docs/raw/reference/scorers/create-scorer.mdx +93 -61
- package/.docs/raw/reference/scorers/faithfulness.mdx +21 -13
- package/.docs/raw/reference/scorers/hallucination.mdx +17 -12
- package/.docs/raw/reference/scorers/keyword-coverage.mdx +32 -27
- package/.docs/raw/reference/scorers/mastra-scorer.mdx +39 -33
- package/.docs/raw/reference/scorers/noise-sensitivity.mdx +203 -152
- package/.docs/raw/reference/scorers/prompt-alignment.mdx +186 -132
- package/.docs/raw/reference/scorers/run-experiment.mdx +40 -31
- package/.docs/raw/reference/scorers/textual-difference.mdx +25 -26
- package/.docs/raw/reference/scorers/tone-consistency.mdx +29 -26
- package/.docs/raw/reference/scorers/tool-call-accuracy.mdx +180 -176
- package/.docs/raw/reference/scorers/toxicity.mdx +35 -31
- package/.docs/raw/reference/storage/cloudflare-d1.mdx +1 -1
- package/.docs/raw/reference/storage/cloudflare.mdx +1 -1
- package/.docs/raw/reference/storage/dynamodb.mdx +1 -1
- package/.docs/raw/reference/storage/lance.mdx +1 -1
- package/.docs/raw/reference/storage/libsql.mdx +2 -2
- package/.docs/raw/reference/storage/mongodb.mdx +4 -5
- package/.docs/raw/reference/storage/mssql.mdx +5 -4
- package/.docs/raw/reference/storage/postgresql.mdx +35 -33
- package/.docs/raw/reference/storage/upstash.mdx +6 -5
- package/.docs/raw/reference/streaming/ChunkType.mdx +788 -314
- package/.docs/raw/reference/streaming/agents/MastraModelOutput.mdx +265 -109
- package/.docs/raw/reference/streaming/agents/stream.mdx +375 -266
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +233 -162
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +4 -4
- package/.docs/raw/reference/streaming/workflows/observeStreamVNext.mdx +5 -5
- package/.docs/raw/reference/streaming/workflows/resumeStreamVNext.mdx +24 -20
- package/.docs/raw/reference/streaming/workflows/stream.mdx +35 -26
- package/.docs/raw/reference/streaming/workflows/streamVNext.mdx +36 -27
- package/.docs/raw/reference/templates/overview.mdx +16 -39
- package/.docs/raw/reference/tools/client.mdx +1 -1
- package/.docs/raw/reference/tools/create-tool.mdx +45 -35
- package/.docs/raw/reference/tools/document-chunker-tool.mdx +2 -2
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +12 -12
- package/.docs/raw/reference/tools/mcp-client.mdx +70 -64
- package/.docs/raw/reference/tools/mcp-server.mdx +91 -78
- package/.docs/raw/reference/tools/vector-query-tool.mdx +48 -38
- package/.docs/raw/reference/vectors/astra.mdx +1 -1
- package/.docs/raw/reference/vectors/chroma.mdx +25 -19
- package/.docs/raw/reference/vectors/couchbase.mdx +4 -4
- package/.docs/raw/reference/vectors/lance.mdx +5 -6
- package/.docs/raw/reference/vectors/libsql.mdx +1 -1
- package/.docs/raw/reference/vectors/mongodb.mdx +1 -1
- package/.docs/raw/reference/vectors/opensearch.mdx +1 -1
- package/.docs/raw/reference/vectors/pg.mdx +8 -4
- package/.docs/raw/reference/vectors/pinecone.mdx +1 -1
- package/.docs/raw/reference/vectors/qdrant.mdx +1 -1
- package/.docs/raw/reference/vectors/s3vectors.mdx +35 -27
- package/.docs/raw/reference/vectors/turbopuffer.mdx +1 -1
- package/.docs/raw/reference/vectors/upstash.mdx +33 -25
- package/.docs/raw/reference/vectors/vectorize.mdx +1 -1
- package/.docs/raw/reference/voice/azure.mdx +1 -1
- package/.docs/raw/reference/voice/cloudflare.mdx +1 -1
- package/.docs/raw/reference/voice/composite-voice.mdx +1 -1
- package/.docs/raw/reference/voice/deepgram.mdx +1 -1
- package/.docs/raw/reference/voice/elevenlabs.mdx +1 -1
- package/.docs/raw/reference/voice/google-gemini-live.mdx +6 -4
- package/.docs/raw/reference/voice/google.mdx +1 -1
- package/.docs/raw/reference/voice/mastra-voice.mdx +1 -1
- package/.docs/raw/reference/voice/murf.mdx +1 -1
- package/.docs/raw/reference/voice/openai-realtime.mdx +1 -1
- package/.docs/raw/reference/voice/openai.mdx +1 -1
- package/.docs/raw/reference/voice/playai.mdx +1 -1
- package/.docs/raw/reference/voice/sarvam.mdx +1 -1
- package/.docs/raw/reference/voice/speechify.mdx +1 -1
- package/.docs/raw/reference/voice/voice.addInstructions.mdx +1 -1
- package/.docs/raw/reference/voice/voice.addTools.mdx +1 -1
- package/.docs/raw/reference/voice/voice.answer.mdx +1 -1
- package/.docs/raw/reference/voice/voice.close.mdx +1 -1
- package/.docs/raw/reference/voice/voice.connect.mdx +1 -1
- package/.docs/raw/reference/voice/voice.events.mdx +1 -1
- package/.docs/raw/reference/voice/voice.getSpeakers.mdx +23 -30
- package/.docs/raw/reference/voice/voice.listen.mdx +1 -1
- package/.docs/raw/reference/voice/voice.off.mdx +1 -1
- package/.docs/raw/reference/voice/voice.on.mdx +1 -1
- package/.docs/raw/reference/voice/voice.send.mdx +1 -1
- package/.docs/raw/reference/voice/voice.speak.mdx +1 -1
- package/.docs/raw/reference/voice/voice.updateConfig.mdx +1 -1
- package/.docs/raw/reference/workflows/run-methods/cancel.mdx +4 -3
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +49 -34
- package/.docs/raw/reference/workflows/run-methods/start.mdx +43 -31
- package/.docs/raw/reference/workflows/run-methods/watch.mdx +7 -8
- package/.docs/raw/reference/workflows/run.mdx +7 -10
- package/.docs/raw/reference/workflows/step.mdx +15 -12
- package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +7 -7
- package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +3 -2
- package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +5 -5
- package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +3 -2
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +3 -2
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +3 -3
- package/.docs/raw/reference/workflows/workflow.mdx +13 -10
- package/.docs/raw/scorers/custom-scorers.mdx +58 -48
- package/.docs/raw/scorers/evals-old-api/custom-eval.mdx +6 -8
- package/.docs/raw/scorers/evals-old-api/overview.mdx +8 -8
- package/.docs/raw/scorers/evals-old-api/running-in-ci.mdx +9 -9
- package/.docs/raw/scorers/evals-old-api/textual-evals.mdx +5 -5
- package/.docs/raw/scorers/off-the-shelf-scorers.mdx +3 -1
- package/.docs/raw/scorers/overview.mdx +20 -19
- package/.docs/raw/server-db/custom-api-routes.mdx +8 -8
- package/.docs/raw/server-db/mastra-client.mdx +56 -54
- package/.docs/raw/server-db/middleware.mdx +11 -7
- package/.docs/raw/server-db/production-server.mdx +5 -7
- package/.docs/raw/server-db/runtime-context.mdx +41 -38
- package/.docs/raw/server-db/storage.mdx +82 -87
- package/.docs/raw/streaming/events.mdx +24 -16
- package/.docs/raw/streaming/overview.mdx +17 -18
- package/.docs/raw/streaming/tool-streaming.mdx +9 -10
- package/.docs/raw/streaming/workflow-streaming.mdx +14 -12
- package/.docs/raw/tools-mcp/advanced-usage.mdx +2 -2
- package/.docs/raw/tools-mcp/mcp-overview.mdx +92 -102
- package/.docs/raw/tools-mcp/overview.mdx +9 -14
- package/.docs/raw/voice/overview.mdx +273 -250
- package/.docs/raw/voice/speech-to-speech.mdx +14 -12
- package/.docs/raw/voice/speech-to-text.mdx +2 -2
- package/.docs/raw/voice/text-to-speech.mdx +2 -2
- package/.docs/raw/workflows/agents-and-tools.mdx +29 -28
- package/.docs/raw/workflows/control-flow.mdx +24 -24
- package/.docs/raw/workflows/error-handling.mdx +15 -17
- package/.docs/raw/workflows/human-in-the-loop.mdx +39 -39
- package/.docs/raw/workflows/inngest-workflow.mdx +33 -29
- package/.docs/raw/workflows/input-data-mapping.mdx +9 -9
- package/.docs/raw/workflows/overview.mdx +60 -60
- package/.docs/raw/workflows/snapshots.mdx +54 -36
- package/.docs/raw/workflows/suspend-and-resume.mdx +52 -57
- package/.docs/raw/workflows-legacy/control-flow.mdx +15 -17
- package/.docs/raw/workflows-legacy/dynamic-workflows.mdx +3 -1
- package/.docs/raw/workflows-legacy/error-handling.mdx +8 -6
- package/.docs/raw/workflows-legacy/nested-workflows.mdx +6 -0
- package/.docs/raw/workflows-legacy/overview.mdx +28 -26
- package/.docs/raw/workflows-legacy/runtime-variables.mdx +4 -2
- package/.docs/raw/workflows-legacy/steps.mdx +5 -3
- package/.docs/raw/workflows-legacy/suspend-and-resume.mdx +10 -8
- package/.docs/raw/workflows-legacy/variables.mdx +10 -8
- package/CHANGELOG.md +14 -0
- package/package.json +5 -5
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +0 -148
|
@@ -3,8 +3,6 @@ title: "AI Tracing | Observability | Mastra Docs"
|
|
|
3
3
|
description: "Set up AI tracing for Mastra applications"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
import { Callout } from "nextra/components";
|
|
7
|
-
|
|
8
6
|
# AI Tracing
|
|
9
7
|
|
|
10
8
|
AI Tracing provides specialized monitoring and debugging for the AI-related operations in your application. When enabled, Mastra automatically creates traces for agent runs, LLM generations, tool calls, and workflow steps with AI-specific context and metadata.
|
|
@@ -23,7 +21,7 @@ AI Traces are created by:
|
|
|
23
21
|
|
|
24
22
|
### Basic Config
|
|
25
23
|
|
|
26
|
-
```ts
|
|
24
|
+
```ts title="src/mastra/index.ts" showLineNumbers copy
|
|
27
25
|
export const mastra = new Mastra({
|
|
28
26
|
// ... other config
|
|
29
27
|
observability: {
|
|
@@ -36,6 +34,7 @@ export const mastra = new Mastra({
|
|
|
36
34
|
```
|
|
37
35
|
|
|
38
36
|
When enabled, the default configuration automatically includes:
|
|
37
|
+
|
|
39
38
|
- **Service Name**: `"mastra"`
|
|
40
39
|
- **Sampling**: `"always"`- Sample (100% of traces)
|
|
41
40
|
- **Exporters**:
|
|
@@ -47,8 +46,12 @@ When enabled, the default configuration automatically includes:
|
|
|
47
46
|
|
|
48
47
|
This default configuration is a minimal helper that equates to this more verbose configuration:
|
|
49
48
|
|
|
50
|
-
```ts
|
|
51
|
-
import {
|
|
49
|
+
```ts title="src/mastra/index.ts" showLineNumbers copy
|
|
50
|
+
import {
|
|
51
|
+
CloudExporter,
|
|
52
|
+
DefaultExporter,
|
|
53
|
+
SensitiveDataFilter,
|
|
54
|
+
} from "@mastra/core/ai-tracing";
|
|
52
55
|
|
|
53
56
|
export const mastra = new Mastra({
|
|
54
57
|
// ... other config
|
|
@@ -56,16 +59,11 @@ export const mastra = new Mastra({
|
|
|
56
59
|
configs: {
|
|
57
60
|
default: {
|
|
58
61
|
serviceName: "mastra",
|
|
59
|
-
sampling: { type:
|
|
60
|
-
processors: [
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
new CloudExporter(),
|
|
65
|
-
new DefaultExporter(),
|
|
66
|
-
],
|
|
67
|
-
}
|
|
68
|
-
}
|
|
62
|
+
sampling: { type: "always" },
|
|
63
|
+
processors: [new SensitiveDataFilter()],
|
|
64
|
+
exporters: [new CloudExporter(), new DefaultExporter()],
|
|
65
|
+
},
|
|
66
|
+
},
|
|
69
67
|
},
|
|
70
68
|
storage: new LibSQLStore({
|
|
71
69
|
url: "file:./mastra.db", // Storage is required for tracing
|
|
@@ -73,7 +71,6 @@ export const mastra = new Mastra({
|
|
|
73
71
|
});
|
|
74
72
|
```
|
|
75
73
|
|
|
76
|
-
|
|
77
74
|
## Exporters
|
|
78
75
|
|
|
79
76
|
Exporters determine where your AI trace data is sent and how it's stored. Choosing the right exporters allows you to integrate with your existing observability stack, comply with data residency requirements, and optimize for cost and performance. You can use multiple exporters simultaneously to send the same trace data to different destinations — for example, storing detailed traces locally for debugging while sending sampled data to a cloud provider for production monitoring.
|
|
@@ -103,20 +100,27 @@ Sampling allows you to control which traces are collected, helping you balance b
|
|
|
103
100
|
Mastra supports four sampling strategies:
|
|
104
101
|
|
|
105
102
|
### Always Sample
|
|
103
|
+
|
|
106
104
|
Collects 100% of traces. Best for development, debugging, or low-traffic scenarios where you need complete visibility.
|
|
107
105
|
|
|
108
106
|
```ts
|
|
109
|
-
sampling: {
|
|
107
|
+
sampling: {
|
|
108
|
+
type: "always";
|
|
109
|
+
}
|
|
110
110
|
```
|
|
111
111
|
|
|
112
112
|
### Never Sample
|
|
113
|
+
|
|
113
114
|
Disables tracing entirely. Useful for specific environments where tracing adds no value or when you need to temporarily disable tracing without removing configuration.
|
|
114
115
|
|
|
115
116
|
```ts
|
|
116
|
-
sampling: {
|
|
117
|
+
sampling: {
|
|
118
|
+
type: "never";
|
|
119
|
+
}
|
|
117
120
|
```
|
|
118
121
|
|
|
119
122
|
### Ratio-Based Sampling
|
|
123
|
+
|
|
120
124
|
Randomly samples a percentage of traces. Ideal for production environments where you want statistical insights without the cost of full tracing. The probability value ranges from 0 (no traces) to 1 (all traces).
|
|
121
125
|
|
|
122
126
|
```ts
|
|
@@ -127,6 +131,7 @@ sampling: {
|
|
|
127
131
|
```
|
|
128
132
|
|
|
129
133
|
### Custom Sampling
|
|
134
|
+
|
|
130
135
|
Implements your own sampling logic based on runtime context, metadata, or business rules. Perfect for complex scenarios like sampling based on user tier, request type, or error conditions.
|
|
131
136
|
|
|
132
137
|
```ts
|
|
@@ -146,19 +151,19 @@ sampling: {
|
|
|
146
151
|
|
|
147
152
|
### Complete Example
|
|
148
153
|
|
|
149
|
-
```ts
|
|
154
|
+
```ts title="src/mastra/index.ts" showLineNumbers copy
|
|
150
155
|
export const mastra = new Mastra({
|
|
151
156
|
observability: {
|
|
152
157
|
configs: {
|
|
153
158
|
"10_percent": {
|
|
154
|
-
serviceName:
|
|
159
|
+
serviceName: "my-service",
|
|
155
160
|
// Sample 10% of traces
|
|
156
161
|
sampling: {
|
|
157
|
-
type:
|
|
158
|
-
probability: 0.1
|
|
162
|
+
type: "ratio",
|
|
163
|
+
probability: 0.1,
|
|
159
164
|
},
|
|
160
165
|
exporters: [new DefaultExporter()],
|
|
161
|
-
}
|
|
166
|
+
},
|
|
162
167
|
},
|
|
163
168
|
},
|
|
164
169
|
});
|
|
@@ -169,57 +174,60 @@ export const mastra = new Mastra({
|
|
|
169
174
|
Complex applications often require different tracing configurations for different scenarios. You might want detailed traces with full sampling during development, sampled traces sent to external providers in production, and specialized configurations for specific features or customer segments. The `configSelector` function enables dynamic configuration selection at runtime, allowing you to route traces based on request context, environment variables, feature flags, or any custom logic.
|
|
170
175
|
|
|
171
176
|
This approach is particularly valuable when:
|
|
177
|
+
|
|
172
178
|
- Running A/B tests with different observability requirements
|
|
173
179
|
- Providing enhanced debugging for specific customers or support cases
|
|
174
180
|
- Gradually rolling out new tracing providers without affecting existing monitoring
|
|
175
181
|
- Optimizing costs by using different sampling rates for different request types
|
|
176
182
|
- Maintaining separate trace streams for compliance or data residency requirements
|
|
177
183
|
|
|
178
|
-
|
|
184
|
+
:::info
|
|
185
|
+
|
|
179
186
|
Note that only a single config can be used for a specific execution. But a single config can send data to multiple exporters simultaneously.
|
|
180
|
-
|
|
187
|
+
|
|
188
|
+
:::
|
|
181
189
|
|
|
182
190
|
### Dynamic Configuration Selection
|
|
183
191
|
|
|
184
192
|
Use `configSelector` to choose the appropriate tracing configuration based on runtime context:
|
|
185
193
|
|
|
186
|
-
```ts
|
|
194
|
+
```ts title="src/mastra/index.ts" showLineNumbers copy
|
|
187
195
|
export const mastra = new Mastra({
|
|
188
196
|
observability: {
|
|
189
197
|
default: { enabled: true }, // Provides 'default' instance
|
|
190
198
|
configs: {
|
|
191
199
|
langfuse: {
|
|
192
|
-
serviceName:
|
|
200
|
+
serviceName: "langfuse-service",
|
|
193
201
|
exporters: [langfuseExporter],
|
|
194
202
|
},
|
|
195
203
|
braintrust: {
|
|
196
|
-
serviceName:
|
|
204
|
+
serviceName: "braintrust-service",
|
|
197
205
|
exporters: [braintrustExporter],
|
|
198
206
|
},
|
|
199
207
|
debug: {
|
|
200
|
-
serviceName:
|
|
201
|
-
sampling: { type:
|
|
208
|
+
serviceName: "debug-service",
|
|
209
|
+
sampling: { type: "always" },
|
|
202
210
|
exporters: [new DefaultExporter()],
|
|
203
211
|
},
|
|
204
212
|
},
|
|
205
213
|
configSelector: (context, availableTracers) => {
|
|
206
214
|
// Use debug config for support requests
|
|
207
|
-
if (context.runtimeContext?.get(
|
|
208
|
-
return
|
|
215
|
+
if (context.runtimeContext?.get("supportMode")) {
|
|
216
|
+
return "debug";
|
|
209
217
|
}
|
|
210
218
|
|
|
211
219
|
// Route specific customers to different providers
|
|
212
|
-
const customerId = context.runtimeContext?.get(
|
|
220
|
+
const customerId = context.runtimeContext?.get("customerId");
|
|
213
221
|
if (customerId && premiumCustomers.includes(customerId)) {
|
|
214
|
-
return
|
|
222
|
+
return "braintrust";
|
|
215
223
|
}
|
|
216
224
|
|
|
217
225
|
// Route specific requests to langfuse
|
|
218
|
-
if (context.runtimeContext?.get(
|
|
219
|
-
return
|
|
226
|
+
if (context.runtimeContext?.get("useExternalTracing")) {
|
|
227
|
+
return "langfuse";
|
|
220
228
|
}
|
|
221
229
|
|
|
222
|
-
return
|
|
230
|
+
return "default";
|
|
223
231
|
},
|
|
224
232
|
},
|
|
225
233
|
});
|
|
@@ -229,28 +237,28 @@ export const mastra = new Mastra({
|
|
|
229
237
|
|
|
230
238
|
A common pattern is to select configurations based on deployment environment:
|
|
231
239
|
|
|
232
|
-
```ts
|
|
240
|
+
```ts title="src/mastra/index.ts" showLineNumbers copy
|
|
233
241
|
export const mastra = new Mastra({
|
|
234
242
|
observability: {
|
|
235
243
|
configs: {
|
|
236
244
|
development: {
|
|
237
|
-
serviceName:
|
|
238
|
-
sampling: { type:
|
|
245
|
+
serviceName: "my-service-dev",
|
|
246
|
+
sampling: { type: "always" },
|
|
239
247
|
exporters: [new DefaultExporter()],
|
|
240
248
|
},
|
|
241
249
|
staging: {
|
|
242
|
-
serviceName:
|
|
243
|
-
sampling: { type:
|
|
250
|
+
serviceName: "my-service-staging",
|
|
251
|
+
sampling: { type: "ratio", probability: 0.5 },
|
|
244
252
|
exporters: [langfuseExporter],
|
|
245
253
|
},
|
|
246
254
|
production: {
|
|
247
|
-
serviceName:
|
|
248
|
-
sampling: { type:
|
|
255
|
+
serviceName: "my-service-prod",
|
|
256
|
+
sampling: { type: "ratio", probability: 0.01 },
|
|
249
257
|
exporters: [cloudExporter, langfuseExporter],
|
|
250
258
|
},
|
|
251
259
|
},
|
|
252
260
|
configSelector: (context, availableTracers) => {
|
|
253
|
-
const env = process.env.NODE_ENV ||
|
|
261
|
+
const env = process.env.NODE_ENV || "development";
|
|
254
262
|
return env;
|
|
255
263
|
},
|
|
256
264
|
},
|
|
@@ -263,13 +271,13 @@ export const mastra = new Mastra({
|
|
|
263
271
|
|
|
264
272
|
When you have both the default config enabled and custom configs defined, **the default config will always be used** unless you explicitly select a different config:
|
|
265
273
|
|
|
266
|
-
```ts
|
|
274
|
+
```ts title="src/mastra/index.ts" showLineNumbers copy
|
|
267
275
|
export const mastra = new Mastra({
|
|
268
276
|
observability: {
|
|
269
277
|
default: { enabled: true }, // This will always be used!
|
|
270
278
|
configs: {
|
|
271
279
|
langfuse: {
|
|
272
|
-
serviceName:
|
|
280
|
+
serviceName: "my-service",
|
|
273
281
|
exporters: [langfuseExporter], // This won't be reached
|
|
274
282
|
},
|
|
275
283
|
},
|
|
@@ -280,17 +288,21 @@ export const mastra = new Mastra({
|
|
|
280
288
|
**Solutions:**
|
|
281
289
|
|
|
282
290
|
1. **Disable the default** and use only custom configs:
|
|
291
|
+
|
|
283
292
|
```ts
|
|
284
293
|
observability: {
|
|
285
294
|
// comment out or remove this line to disable the default config
|
|
286
295
|
// default: { enabled: true },
|
|
287
296
|
configs: {
|
|
288
|
-
langfuse: {
|
|
297
|
+
langfuse: {
|
|
298
|
+
/* ... */
|
|
299
|
+
}
|
|
289
300
|
}
|
|
290
301
|
}
|
|
291
302
|
```
|
|
292
303
|
|
|
293
304
|
2. **Use a configSelector** to choose between configs:
|
|
305
|
+
|
|
294
306
|
```ts
|
|
295
307
|
observability: {
|
|
296
308
|
default: { enabled: true },
|
|
@@ -308,23 +320,24 @@ observability: {
|
|
|
308
320
|
|
|
309
321
|
When creating a custom config with external exporters, you might lose access to Mastra Playground and Cloud. To maintain access while adding external exporters, include the default exporters in your custom config:
|
|
310
322
|
|
|
311
|
-
```ts
|
|
312
|
-
import { DefaultExporter, CloudExporter } from
|
|
313
|
-
import { ArizeExporter } from
|
|
323
|
+
```ts title="src/mastra/index.ts" showLineNumbers copy
|
|
324
|
+
import { DefaultExporter, CloudExporter } from "@mastra/core/ai-tracing";
|
|
325
|
+
import { ArizeExporter } from "@mastra/arize";
|
|
314
326
|
|
|
315
327
|
export const mastra = new Mastra({
|
|
316
328
|
observability: {
|
|
317
329
|
default: { enabled: false }, // Disable default to use custom
|
|
318
330
|
configs: {
|
|
319
331
|
production: {
|
|
320
|
-
serviceName:
|
|
332
|
+
serviceName: "my-service",
|
|
321
333
|
exporters: [
|
|
322
|
-
new ArizeExporter({
|
|
334
|
+
new ArizeExporter({
|
|
335
|
+
// External exporter
|
|
323
336
|
endpoint: process.env.PHOENIX_ENDPOINT,
|
|
324
337
|
apiKey: process.env.PHOENIX_API_KEY,
|
|
325
338
|
}),
|
|
326
|
-
new DefaultExporter(),
|
|
327
|
-
new CloudExporter(),
|
|
339
|
+
new DefaultExporter(), // Keep Playground access
|
|
340
|
+
new CloudExporter(), // Keep Cloud access
|
|
328
341
|
],
|
|
329
342
|
},
|
|
330
343
|
},
|
|
@@ -333,13 +346,16 @@ export const mastra = new Mastra({
|
|
|
333
346
|
```
|
|
334
347
|
|
|
335
348
|
This configuration sends traces to all three destinations simultaneously:
|
|
349
|
+
|
|
336
350
|
- **Arize Phoenix/AX** for external observability
|
|
337
351
|
- **DefaultExporter** for local Playground access
|
|
338
352
|
- **CloudExporter** for Mastra Cloud dashboard
|
|
339
353
|
|
|
340
|
-
|
|
354
|
+
:::info
|
|
355
|
+
|
|
341
356
|
Remember: A single trace can be sent to multiple exporters. You don't need separate configs for each exporter unless you want different sampling rates or processors.
|
|
342
|
-
|
|
357
|
+
|
|
358
|
+
:::
|
|
343
359
|
|
|
344
360
|
## Adding Custom Metadata
|
|
345
361
|
|
|
@@ -360,11 +376,11 @@ execute: async ({ inputData, tracingContext }) => {
|
|
|
360
376
|
responseTimeMs: Date.now() - startTime,
|
|
361
377
|
userTier: inputData.userTier,
|
|
362
378
|
region: process.env.AWS_REGION,
|
|
363
|
-
}
|
|
379
|
+
},
|
|
364
380
|
});
|
|
365
381
|
|
|
366
382
|
return await response.json();
|
|
367
|
-
}
|
|
383
|
+
};
|
|
368
384
|
```
|
|
369
385
|
|
|
370
386
|
Metadata set here will be shown in all configured exporters.
|
|
@@ -377,13 +393,13 @@ Instead of manually adding metadata to each span, you can configure Mastra to au
|
|
|
377
393
|
|
|
378
394
|
Define which RuntimeContext keys to extract in your tracing configuration. These keys will be automatically included as metadata for all spans created with this configuration:
|
|
379
395
|
|
|
380
|
-
```ts
|
|
396
|
+
```ts title="src/mastra/index.ts" showLineNumbers copy
|
|
381
397
|
export const mastra = new Mastra({
|
|
382
398
|
observability: {
|
|
383
399
|
configs: {
|
|
384
400
|
default: {
|
|
385
|
-
serviceName:
|
|
386
|
-
runtimeContextKeys: [
|
|
401
|
+
serviceName: "my-service",
|
|
402
|
+
runtimeContextKeys: ["userId", "environment", "tenantId"],
|
|
387
403
|
exporters: [new DefaultExporter()],
|
|
388
404
|
},
|
|
389
405
|
},
|
|
@@ -395,13 +411,13 @@ Now when you execute agents or workflows with a RuntimeContext, these values are
|
|
|
395
411
|
|
|
396
412
|
```ts showLineNumbers copy
|
|
397
413
|
const runtimeContext = new RuntimeContext();
|
|
398
|
-
runtimeContext.set(
|
|
399
|
-
runtimeContext.set(
|
|
400
|
-
runtimeContext.set(
|
|
414
|
+
runtimeContext.set("userId", "user-123");
|
|
415
|
+
runtimeContext.set("environment", "production");
|
|
416
|
+
runtimeContext.set("tenantId", "tenant-456");
|
|
401
417
|
|
|
402
418
|
// All spans in this trace automatically get userId, environment, and tenantId metadata
|
|
403
419
|
const result = await agent.generate({
|
|
404
|
-
messages: [{ role:
|
|
420
|
+
messages: [{ role: "user", content: "Hello" }],
|
|
405
421
|
runtimeContext,
|
|
406
422
|
});
|
|
407
423
|
```
|
|
@@ -412,15 +428,15 @@ You can add trace-specific keys using `tracingOptions.runtimeContextKeys`. These
|
|
|
412
428
|
|
|
413
429
|
```ts showLineNumbers copy
|
|
414
430
|
const runtimeContext = new RuntimeContext();
|
|
415
|
-
runtimeContext.set(
|
|
416
|
-
runtimeContext.set(
|
|
417
|
-
runtimeContext.set(
|
|
431
|
+
runtimeContext.set("userId", "user-123");
|
|
432
|
+
runtimeContext.set("environment", "production");
|
|
433
|
+
runtimeContext.set("experimentId", "exp-789");
|
|
418
434
|
|
|
419
435
|
const result = await agent.generate({
|
|
420
|
-
messages: [{ role:
|
|
436
|
+
messages: [{ role: "user", content: "Hello" }],
|
|
421
437
|
runtimeContext,
|
|
422
438
|
tracingOptions: {
|
|
423
|
-
runtimeContextKeys: [
|
|
439
|
+
runtimeContextKeys: ["experimentId"], // Adds to configured keys
|
|
424
440
|
},
|
|
425
441
|
});
|
|
426
442
|
|
|
@@ -436,7 +452,7 @@ export const mastra = new Mastra({
|
|
|
436
452
|
observability: {
|
|
437
453
|
configs: {
|
|
438
454
|
default: {
|
|
439
|
-
runtimeContextKeys: [
|
|
455
|
+
runtimeContextKeys: ["user.id", "session.data.experimentId"],
|
|
440
456
|
exporters: [new DefaultExporter()],
|
|
441
457
|
},
|
|
442
458
|
},
|
|
@@ -444,8 +460,8 @@ export const mastra = new Mastra({
|
|
|
444
460
|
});
|
|
445
461
|
|
|
446
462
|
const runtimeContext = new RuntimeContext();
|
|
447
|
-
runtimeContext.set(
|
|
448
|
-
runtimeContext.set(
|
|
463
|
+
runtimeContext.set("user", { id: "user-456", name: "John Doe" });
|
|
464
|
+
runtimeContext.set("session", { data: { experimentId: "exp-999" } });
|
|
449
465
|
|
|
450
466
|
// Metadata will include: { user: { id: 'user-456' }, session: { data: { experimentId: 'exp-999' } } }
|
|
451
467
|
```
|
|
@@ -465,23 +481,23 @@ When creating child spans within tools or workflow steps, you can pass the `runt
|
|
|
465
481
|
execute: async ({ tracingContext, runtimeContext }) => {
|
|
466
482
|
// Create child span WITH runtimeContext - gets metadata extraction
|
|
467
483
|
const dbSpan = tracingContext.currentSpan?.createChildSpan({
|
|
468
|
-
type:
|
|
469
|
-
name:
|
|
470
|
-
runtimeContext,
|
|
484
|
+
type: "generic",
|
|
485
|
+
name: "database-query",
|
|
486
|
+
runtimeContext, // Pass to enable metadata extraction
|
|
471
487
|
});
|
|
472
488
|
|
|
473
|
-
const results = await db.query(
|
|
489
|
+
const results = await db.query("SELECT * FROM users");
|
|
474
490
|
dbSpan?.end({ output: results });
|
|
475
491
|
|
|
476
492
|
// Or create child span WITHOUT runtimeContext - no metadata extraction
|
|
477
493
|
const cacheSpan = tracingContext.currentSpan?.createChildSpan({
|
|
478
|
-
type:
|
|
479
|
-
name:
|
|
494
|
+
type: "generic",
|
|
495
|
+
name: "cache-check",
|
|
480
496
|
// No runtimeContext - won't extract metadata
|
|
481
497
|
});
|
|
482
498
|
|
|
483
499
|
return results;
|
|
484
|
-
}
|
|
500
|
+
};
|
|
485
501
|
```
|
|
486
502
|
|
|
487
503
|
This gives you fine-grained control over which child spans include RuntimeContext metadata. Root spans (agent/workflow executions) always extract metadata automatically, while child spans only extract when you explicitly pass `runtimeContext`.
|
|
@@ -496,10 +512,10 @@ Create child spans inside a tool call or workflow step to track specific operati
|
|
|
496
512
|
execute: async ({ input, tracingContext }) => {
|
|
497
513
|
// Create another child span for the main database operation
|
|
498
514
|
const querySpan = tracingContext.currentSpan?.createChildSpan({
|
|
499
|
-
type:
|
|
500
|
-
name:
|
|
515
|
+
type: "generic",
|
|
516
|
+
name: "database-query",
|
|
501
517
|
input: { query: input.query },
|
|
502
|
-
metadata: { database:
|
|
518
|
+
metadata: { database: "production" },
|
|
503
519
|
});
|
|
504
520
|
|
|
505
521
|
try {
|
|
@@ -509,18 +525,18 @@ execute: async ({ input, tracingContext }) => {
|
|
|
509
525
|
metadata: {
|
|
510
526
|
rowsReturned: results.length,
|
|
511
527
|
queryTimeMs: results.executionTime,
|
|
512
|
-
cacheHit: results.fromCache
|
|
513
|
-
}
|
|
528
|
+
cacheHit: results.fromCache,
|
|
529
|
+
},
|
|
514
530
|
});
|
|
515
531
|
return results;
|
|
516
532
|
} catch (error) {
|
|
517
533
|
querySpan?.error({
|
|
518
534
|
error,
|
|
519
|
-
metadata: { retryable: isRetryableError(error) }
|
|
535
|
+
metadata: { retryable: isRetryableError(error) },
|
|
520
536
|
});
|
|
521
537
|
throw error;
|
|
522
538
|
}
|
|
523
|
-
}
|
|
539
|
+
};
|
|
524
540
|
```
|
|
525
541
|
|
|
526
542
|
Child spans automatically inherit the trace context from their parent, maintaining the relationship hierarchy in your observability platform.
|
|
@@ -531,20 +547,20 @@ Span processors allow you to transform, filter, or enrich trace data before it's
|
|
|
531
547
|
|
|
532
548
|
### Built-in Processors
|
|
533
549
|
|
|
534
|
-
|
|
550
|
+
- [Sensitive Data Filter](/docs/observability/ai-tracing/processors/sensitive-data-filter) redacts sensitive information. It is enabled in the default observability config.
|
|
535
551
|
|
|
536
552
|
### Creating Custom Processors
|
|
537
553
|
|
|
538
554
|
You can create custom span processors by implementing the `AISpanProcessor` interface. Here's a simple example that converts all input text in spans to lowercase:
|
|
539
555
|
|
|
540
|
-
```ts
|
|
541
|
-
import type { AISpanProcessor, AnyAISpan } from
|
|
556
|
+
```ts title="src/processors/lowercase-input-processor.ts" showLineNumbers copy
|
|
557
|
+
import type { AISpanProcessor, AnyAISpan } from "@mastra/core/ai-tracing";
|
|
542
558
|
|
|
543
559
|
export class LowercaseInputProcessor implements AISpanProcessor {
|
|
544
|
-
name =
|
|
560
|
+
name = "lowercase-processor";
|
|
545
561
|
|
|
546
562
|
process(span: AnyAISpan): AnyAISpan {
|
|
547
|
-
span.input = `${span.input}`.toLowerCase()
|
|
563
|
+
span.input = `${span.input}`.toLowerCase();
|
|
548
564
|
return span;
|
|
549
565
|
}
|
|
550
566
|
|
|
@@ -558,10 +574,7 @@ export const mastra = new Mastra({
|
|
|
558
574
|
observability: {
|
|
559
575
|
configs: {
|
|
560
576
|
development: {
|
|
561
|
-
processors: [
|
|
562
|
-
new LowercaseInputProcessor(),
|
|
563
|
-
new SensitiveDataFilter(),
|
|
564
|
-
],
|
|
577
|
+
processors: [new LowercaseInputProcessor(), new SensitiveDataFilter()],
|
|
565
578
|
exporters: [new DefaultExporter()],
|
|
566
579
|
},
|
|
567
580
|
},
|
|
@@ -570,6 +583,7 @@ export const mastra = new Mastra({
|
|
|
570
583
|
```
|
|
571
584
|
|
|
572
585
|
Processors are executed in the order they're defined, allowing you to chain multiple transformations. Common use cases for custom processors include:
|
|
586
|
+
|
|
573
587
|
- Adding environment-specific metadata
|
|
574
588
|
- Filtering out spans based on criteria
|
|
575
589
|
- Normalizing data formats
|
|
@@ -587,17 +601,17 @@ Both `generate` and `stream` methods return the trace ID in their response:
|
|
|
587
601
|
```ts showLineNumbers copy
|
|
588
602
|
// Using generate
|
|
589
603
|
const result = await agent.generate({
|
|
590
|
-
messages: [{ role:
|
|
604
|
+
messages: [{ role: "user", content: "Hello" }],
|
|
591
605
|
});
|
|
592
606
|
|
|
593
|
-
console.log(
|
|
607
|
+
console.log("Trace ID:", result.traceId);
|
|
594
608
|
|
|
595
609
|
// Using stream
|
|
596
610
|
const streamResult = await agent.stream({
|
|
597
|
-
messages: [{ role:
|
|
611
|
+
messages: [{ role: "user", content: "Tell me a story" }],
|
|
598
612
|
});
|
|
599
613
|
|
|
600
|
-
console.log(
|
|
614
|
+
console.log("Trace ID:", streamResult.traceId);
|
|
601
615
|
```
|
|
602
616
|
|
|
603
617
|
### Workflow Trace IDs
|
|
@@ -606,23 +620,23 @@ Workflow executions also return trace IDs:
|
|
|
606
620
|
|
|
607
621
|
```ts showLineNumbers copy
|
|
608
622
|
// Create a workflow run
|
|
609
|
-
const run = await mastra.getWorkflow(
|
|
623
|
+
const run = await mastra.getWorkflow("myWorkflow").createRunAsync();
|
|
610
624
|
|
|
611
625
|
// Start the workflow
|
|
612
626
|
const result = await run.start({
|
|
613
|
-
inputData: { data:
|
|
627
|
+
inputData: { data: "process this" },
|
|
614
628
|
});
|
|
615
629
|
|
|
616
|
-
console.log(
|
|
630
|
+
console.log("Trace ID:", result.traceId);
|
|
617
631
|
|
|
618
632
|
// Or stream the workflow
|
|
619
633
|
const { stream, getWorkflowState } = run.stream({
|
|
620
|
-
inputData: { data:
|
|
634
|
+
inputData: { data: "process this" },
|
|
621
635
|
});
|
|
622
636
|
|
|
623
637
|
// Get the final state which includes the trace ID
|
|
624
638
|
const finalState = await getWorkflowState();
|
|
625
|
-
console.log(
|
|
639
|
+
console.log("Trace ID:", finalState.traceId);
|
|
626
640
|
```
|
|
627
641
|
|
|
628
642
|
### Using Trace IDs
|
|
@@ -647,14 +661,14 @@ Use the `tracingOptions` parameter to specify the trace context from your parent
|
|
|
647
661
|
```ts showLineNumbers copy
|
|
648
662
|
// Get trace context from your existing tracing system
|
|
649
663
|
const parentTraceId = getCurrentTraceId(); // Your tracing system
|
|
650
|
-
const parentSpanId = getCurrentSpanId();
|
|
664
|
+
const parentSpanId = getCurrentSpanId(); // Your tracing system
|
|
651
665
|
|
|
652
666
|
// Execute Mastra operations as part of the parent trace
|
|
653
|
-
const result = await agent.generate(
|
|
667
|
+
const result = await agent.generate("Analyze this data", {
|
|
654
668
|
tracingOptions: {
|
|
655
669
|
traceId: parentTraceId,
|
|
656
670
|
parentSpanId: parentSpanId,
|
|
657
|
-
}
|
|
671
|
+
},
|
|
658
672
|
});
|
|
659
673
|
|
|
660
674
|
// The Mastra trace will now appear as a child in your distributed trace
|
|
@@ -665,7 +679,7 @@ const result = await agent.generate('Analyze this data', {
|
|
|
665
679
|
Integration with OpenTelemetry allows Mastra traces to appear seamlessly in your existing observability platform:
|
|
666
680
|
|
|
667
681
|
```ts showLineNumbers copy
|
|
668
|
-
import { trace } from
|
|
682
|
+
import { trace } from "@opentelemetry/api";
|
|
669
683
|
|
|
670
684
|
// Get the current OpenTelemetry span
|
|
671
685
|
const currentSpan = trace.getActiveSpan();
|
|
@@ -676,7 +690,7 @@ if (spanContext) {
|
|
|
676
690
|
tracingOptions: {
|
|
677
691
|
traceId: spanContext.traceId,
|
|
678
692
|
parentSpanId: spanContext.spanId,
|
|
679
|
-
}
|
|
693
|
+
},
|
|
680
694
|
});
|
|
681
695
|
}
|
|
682
696
|
```
|
|
@@ -686,15 +700,15 @@ if (spanContext) {
|
|
|
686
700
|
Workflows support the same pattern for trace propagation:
|
|
687
701
|
|
|
688
702
|
```ts showLineNumbers copy
|
|
689
|
-
const workflow = mastra.getWorkflow(
|
|
703
|
+
const workflow = mastra.getWorkflow("data-pipeline");
|
|
690
704
|
const run = await workflow.createRunAsync();
|
|
691
705
|
|
|
692
706
|
const result = await run.start({
|
|
693
|
-
inputData: { data:
|
|
707
|
+
inputData: { data: "..." },
|
|
694
708
|
tracingOptions: {
|
|
695
709
|
traceId: externalTraceId,
|
|
696
710
|
parentSpanId: externalSpanId,
|
|
697
|
-
}
|
|
711
|
+
},
|
|
698
712
|
});
|
|
699
713
|
```
|
|
700
714
|
|
|
@@ -706,6 +720,7 @@ Mastra validates trace and span IDs to ensure compatibility:
|
|
|
706
720
|
- **Span IDs**: 1-16 hexadecimal characters (OpenTelemetry uses 16)
|
|
707
721
|
|
|
708
722
|
Invalid IDs are handled gracefully — Mastra logs an error and continues:
|
|
723
|
+
|
|
709
724
|
- Invalid trace ID → generates a new trace ID
|
|
710
725
|
- Invalid parent span ID → ignores the parent relationship
|
|
711
726
|
|
|
@@ -716,21 +731,23 @@ This ensures tracing never crashes your application, even with malformed input.
|
|
|
716
731
|
Here's a complete example showing trace propagation in an Express application:
|
|
717
732
|
|
|
718
733
|
```ts showLineNumbers copy
|
|
719
|
-
import { trace } from
|
|
720
|
-
import express from
|
|
734
|
+
import { trace } from "@opentelemetry/api";
|
|
735
|
+
import express from "express";
|
|
721
736
|
|
|
722
737
|
const app = express();
|
|
723
738
|
|
|
724
|
-
app.post(
|
|
739
|
+
app.post("/api/analyze", async (req, res) => {
|
|
725
740
|
// Get current OpenTelemetry context
|
|
726
741
|
const currentSpan = trace.getActiveSpan();
|
|
727
742
|
const spanContext = currentSpan?.spanContext();
|
|
728
743
|
|
|
729
744
|
const result = await agent.generate(req.body.message, {
|
|
730
|
-
tracingOptions: spanContext
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
745
|
+
tracingOptions: spanContext
|
|
746
|
+
? {
|
|
747
|
+
traceId: spanContext.traceId,
|
|
748
|
+
parentSpanId: spanContext.spanId,
|
|
749
|
+
}
|
|
750
|
+
: undefined,
|
|
734
751
|
});
|
|
735
752
|
|
|
736
753
|
res.json(result);
|
|
@@ -744,12 +761,14 @@ This creates a single distributed trace that includes both the HTTP request hand
|
|
|
744
761
|
Mastra automatically creates spans for:
|
|
745
762
|
|
|
746
763
|
### Agent Operations
|
|
764
|
+
|
|
747
765
|
- **Agent runs** - Complete execution with instructions and tools
|
|
748
766
|
- **LLM calls** - Model interactions with tokens and parameters
|
|
749
767
|
- **Tool executions** - Function calls with inputs and outputs
|
|
750
768
|
- **Memory operations** - Thread and semantic recall
|
|
751
769
|
|
|
752
770
|
### Workflow Operations
|
|
771
|
+
|
|
753
772
|
- **Workflow runs** - Full execution from start to finish
|
|
754
773
|
- **Individual steps** - Step processing with inputs/outputs
|
|
755
774
|
- **Control flow** - Conditionals, loops, parallel execution
|
|
@@ -768,15 +787,18 @@ Traces are available in multiple locations:
|
|
|
768
787
|
## See Also
|
|
769
788
|
|
|
770
789
|
### Examples
|
|
790
|
+
|
|
771
791
|
- [Basic AI Tracing Example](/examples/observability/basic-ai-tracing) - Working implementation
|
|
772
792
|
|
|
773
793
|
### Reference Documentation
|
|
794
|
+
|
|
774
795
|
- [Configuration API](/reference/observability/ai-tracing/configuration) - ObservabilityConfig details
|
|
775
|
-
- [AITracing Classes](/reference/observability/ai-tracing/
|
|
796
|
+
- [AITracing Classes](/reference/observability/ai-tracing/) - Core classes and methods
|
|
776
797
|
- [Span Interfaces](/reference/observability/ai-tracing/span) - Span types and lifecycle
|
|
777
798
|
- [Type Definitions](/reference/observability/ai-tracing/interfaces) - Complete interface reference
|
|
778
799
|
|
|
779
800
|
### Exporters
|
|
801
|
+
|
|
780
802
|
- [DefaultExporter](/reference/observability/ai-tracing/exporters/default-exporter) - Storage persistence
|
|
781
803
|
- [CloudExporter](/reference/observability/ai-tracing/exporters/cloud-exporter) - Mastra Cloud integration
|
|
782
804
|
- [ConsoleExporter](/reference/observability/ai-tracing/exporters/console-exporter) - Debug output
|
|
@@ -786,4 +808,5 @@ Traces are available in multiple locations:
|
|
|
786
808
|
- [OpenTelemetry](/reference/observability/ai-tracing/exporters/otel) - OTEL-compatible platforms
|
|
787
809
|
|
|
788
810
|
### Processors
|
|
811
|
+
|
|
789
812
|
- [Sensitive Data Filter](/docs/observability/ai-tracing/processors/sensitive-data-filter) - Data redaction
|