@mastra/mcp-docs-server 1.2.15-alpha.20 → 1.2.15-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.docs/docs/agents/code-mode.md +1 -1
- package/.docs/docs/agents/networks.md +2 -2
- package/.docs/docs/agents/overview.md +2 -2
- package/.docs/docs/agents/using-tools.md +1 -1
- package/.docs/docs/browser/overview.md +8 -8
- package/.docs/docs/browser/recording.md +2 -2
- package/.docs/docs/capabilities/{channels/overview.md → channels.md} +70 -7
- package/.docs/docs/capabilities/subagents.md +2 -2
- package/.docs/docs/deployment/cloud-providers.md +9 -9
- package/.docs/docs/deployment/overview.md +9 -9
- package/.docs/docs/deployment/sandbox.md +3 -3
- package/.docs/docs/deployment/web-framework.md +6 -6
- package/.docs/docs/deployment/workflow-runners.md +2 -2
- package/.docs/docs/harness/agent-controller.md +2 -2
- package/.docs/docs/index.md +8 -8
- package/.docs/docs/long-running-agents/durable-agents.md +2 -2
- package/.docs/docs/long-running-agents/signal-providers.md +2 -15
- package/.docs/docs/long-running-agents/signals.md +1 -1
- package/.docs/docs/mastra-platform/database.md +2 -2
- package/.docs/docs/mastra-platform/server.md +1 -1
- package/.docs/docs/mcp/overview.md +42 -0
- package/.docs/docs/memory/memory-processors.md +5 -5
- package/.docs/docs/memory/message-history.md +1 -1
- package/.docs/docs/memory/observational-memory.md +1 -1
- package/.docs/docs/observability/integrations/exporters/mastra-storage.md +16 -16
- package/.docs/docs/observability/integrations/overview.md +3 -3
- package/.docs/docs/server/auth/fga.md +1 -1
- package/.docs/docs/server/auth/simple-auth.md +1 -1
- package/.docs/docs/server/auth.md +8 -8
- package/.docs/docs/storage/overview.md +14 -13
- package/.docs/docs/studio/observability.md +1 -1
- package/.docs/docs/workflows/overview.md +1 -1
- package/.docs/docs/workflows/snapshots.md +11 -11
- package/.docs/docs/workspace/filesystem.md +15 -15
- package/.docs/docs/workspace/sandbox.md +17 -17
- package/.docs/docs/workspace/search.md +1 -1
- package/.docs/guides/agent-frameworks/ai-sdk.md +2 -2
- package/.docs/guides/deployment/mastra-workers.md +1 -1
- package/.docs/guides/getting-started/quickstart.md +3 -3
- package/.docs/guides/index.md +8 -8
- package/.docs/guides/voice/overview.md +55 -106
- package/.docs/guides/voice/speech-to-text.md +7 -7
- package/.docs/guides/voice/text-to-speech.md +9 -10
- package/.docs/{guides/build-your-ui → integrations/agentic-ui}/ai-sdk-ui.md +2 -2
- package/.docs/{guides/build-your-ui/copilotkit/overview.md → integrations/agentic-ui/copilotkit.md} +256 -3
- package/.docs/{docs/browser → integrations/browsers}/agent-browser.md +2 -2
- package/.docs/{docs/browser → integrations/browsers}/browser-viewer.md +3 -3
- package/.docs/{docs/browser → integrations/browsers}/firecrawl.md +2 -2
- package/.docs/{docs/browser → integrations/browsers}/stagehand.md +1 -1
- package/.docs/{docs/capabilities → integrations}/channels/discord.md +2 -2
- package/.docs/integrations/channels/github.md +103 -0
- package/.docs/{docs/capabilities → integrations}/channels/imessage.md +7 -5
- package/.docs/{docs/capabilities → integrations}/channels/slack.md +4 -4
- package/.docs/{docs/capabilities → integrations}/channels/teams.md +2 -2
- package/.docs/{docs/capabilities → integrations}/channels/telegram.md +2 -2
- package/.docs/{docs/capabilities → integrations}/channels/whatsapp.md +2 -2
- package/.docs/{reference/storage/dsql.md → integrations/databases/aurora-dsql.md} +1 -1
- package/.docs/{reference/storage → integrations/databases}/clickhouse.md +2 -2
- package/.docs/{reference/storage → integrations/databases}/cloudflare-d1.md +1 -1
- package/.docs/{reference/storage/cloudflare.md → integrations/databases/cloudflare-kv.md} +1 -1
- package/.docs/{reference/storage → integrations/databases}/convex.md +1 -1
- package/.docs/{reference/storage → integrations/databases}/duckdb.md +5 -5
- package/.docs/{reference/storage → integrations/databases}/dynamodb.md +1 -1
- package/.docs/{reference/storage/lance.md → integrations/databases/lancedb.md} +1 -1
- package/.docs/{reference/storage → integrations/databases}/libsql.md +2 -2
- package/.docs/{reference/storage → integrations/databases}/mongodb.md +1 -1
- package/.docs/{reference/storage → integrations/databases}/mssql.md +1 -1
- package/.docs/integrations/databases/neon.md +220 -0
- package/.docs/{reference/storage → integrations/databases}/oracledb.md +1 -1
- package/.docs/{reference/storage → integrations/databases}/postgresql.md +1 -1
- package/.docs/{reference/storage → integrations/databases}/redis.md +1 -1
- package/.docs/{reference/storage → integrations/databases}/spanner.md +1 -1
- package/.docs/{reference/storage → integrations/databases}/upstash.md +1 -1
- package/.docs/{guides/deployment → integrations/deploy}/aws-bedrock-agentcore.md +1 -1
- package/.docs/{guides/deployment → integrations/deploy}/aws-lambda.md +1 -1
- package/.docs/{guides/deployment → integrations/deploy}/azure-app-services.md +1 -1
- package/.docs/{guides/deployment → integrations/deploy}/cloudflare.md +1 -1
- package/.docs/{guides/deployment → integrations/deploy}/digital-ocean.md +1 -1
- package/.docs/{guides/deployment → integrations/deploy}/netlify.md +1 -1
- package/.docs/{guides/deployment → integrations/deploy}/vercel.md +2 -2
- package/.docs/{reference/workspace/s3-filesystem.md → integrations/file-storage/amazon-s3.md} +5 -5
- package/.docs/{reference/workspace/archil-filesystem.md → integrations/file-storage/archil.md} +3 -3
- package/.docs/{reference/workspace/azure-blob-filesystem.md → integrations/file-storage/azure-blob.md} +2 -2
- package/.docs/{reference/workspace/gcs-filesystem.md → integrations/file-storage/google-cloud-storage.md} +5 -5
- package/.docs/{reference/workspace/mesa-filesystem.md → integrations/file-storage/mesa.md} +1 -1
- package/.docs/{reference/workspace/files-sdk-filesystem.md → integrations/file-storage/vercel-files.md} +5 -5
- package/.docs/{guides/getting-started → integrations/frameworks}/astro.md +1 -1
- package/.docs/{guides/getting-started → integrations/frameworks}/electron.md +1 -1
- package/.docs/{guides/getting-started → integrations/frameworks}/next-js.md +2 -2
- package/.docs/{guides/getting-started → integrations/frameworks}/nuxt.md +1 -1
- package/.docs/{guides/getting-started → integrations/frameworks}/sveltekit.md +1 -1
- package/.docs/{guides/getting-started → integrations/frameworks}/vite-react.md +1 -1
- package/.docs/{docs/observability/integrations/exporters → integrations/observability}/arize.md +1 -1
- package/.docs/{docs/observability/integrations/exporters → integrations/observability}/arthur.md +1 -1
- package/.docs/{docs/observability/integrations/exporters → integrations/observability}/braintrust.md +1 -1
- package/.docs/{docs/observability/integrations/exporters → integrations/observability}/confident-ai.md +1 -1
- package/.docs/integrations/observability/datadog.md +538 -0
- package/.docs/{docs/observability/integrations/exporters → integrations/observability}/laminar.md +1 -1
- package/.docs/{docs/observability/integrations/exporters → integrations/observability}/langfuse.md +1 -1
- package/.docs/{docs/observability/integrations/exporters → integrations/observability}/langsmith.md +1 -1
- package/.docs/{docs/observability/integrations/exporters/otel.md → integrations/observability/opentelemetry.md} +276 -44
- package/.docs/{docs/observability/integrations/exporters → integrations/observability}/posthog.md +1 -1
- package/.docs/{docs/observability/integrations/exporters → integrations/observability}/sentry.md +1 -1
- package/.docs/{reference/workspace/apple-container-sandbox.md → integrations/sandboxes/apple-container.md} +1 -1
- package/.docs/{reference/workspace/daytona-sandbox.md → integrations/sandboxes/daytona.md} +2 -2
- package/.docs/{reference/workspace/docker-sandbox.md → integrations/sandboxes/docker.md} +1 -1
- package/.docs/{reference/workspace/e2b-sandbox.md → integrations/sandboxes/e2b.md} +3 -3
- package/.docs/{reference/workspace/modal-sandbox.md → integrations/sandboxes/modal.md} +2 -2
- package/.docs/{reference/workspace/vercel-sandbox.md → integrations/sandboxes/vercel.md} +141 -12
- package/.docs/{reference → integrations}/tools/brightdata.md +1 -1
- package/.docs/{reference → integrations}/tools/perplexity.md +1 -1
- package/.docs/{reference → integrations}/tools/tavily.md +1 -1
- package/.docs/{reference → integrations}/voice/aws-nova-sonic.md +1 -1
- package/.docs/{reference → integrations}/voice/cloudflare.md +3 -3
- package/.docs/{reference/voice/google-gemini-live.md → integrations/voice/google.md} +305 -30
- package/.docs/{reference/voice/inworld-realtime.md → integrations/voice/inworld.md} +163 -25
- package/.docs/{reference → integrations}/voice/livekit.md +437 -34
- package/.docs/{reference/voice/openai-realtime.md → integrations/voice/openai.md} +117 -20
- package/.docs/integrations.md +147 -0
- package/.docs/models/embeddings.md +2 -2
- package/.docs/models/gateways/openrouter.md +3 -1
- package/.docs/models/gateways/vercel.md +2 -1
- package/.docs/models/index.md +1 -1
- package/.docs/models/providers/kilo.md +9 -6
- package/.docs/models/providers/opencode.md +0 -1
- package/.docs/reference/agent-controller/agent-controller-class.md +32 -1
- package/.docs/reference/agents/channels.md +2 -2
- package/.docs/reference/agents/generateLegacy.md +2 -2
- package/.docs/reference/agents/getDefaultOptions.md +1 -1
- package/.docs/reference/agents/getDefaultStreamOptions.md +1 -1
- package/.docs/reference/agents/inngest-agent.md +1 -1
- package/.docs/reference/agents/network.md +1 -1
- package/.docs/reference/ai-sdk/handle-network-stream.md +1 -1
- package/.docs/reference/ai-sdk/network-route.md +1 -1
- package/.docs/reference/auth/auth0.md +1 -1
- package/.docs/reference/auth/better-auth.md +1 -1
- package/.docs/reference/auth/clerk.md +1 -1
- package/.docs/reference/auth/firebase.md +1 -1
- package/.docs/reference/auth/google.md +1 -1
- package/.docs/reference/auth/supabase.md +1 -1
- package/.docs/reference/auth/workos.md +1 -1
- package/.docs/reference/browser/agent-browser.md +1 -1
- package/.docs/reference/browser/browser-viewer.md +1 -1
- package/.docs/reference/browser/firecrawl-browser.md +1 -1
- package/.docs/reference/browser/stagehand-browser.md +1 -1
- package/.docs/reference/channels/channel-provider.md +1 -1
- package/.docs/reference/channels/slack-provider.md +2 -2
- package/.docs/reference/cli/mastra.md +2 -2
- package/.docs/reference/configuration.md +1 -26
- package/.docs/reference/core/getStorage.md +1 -1
- package/.docs/reference/core/getVector.md +2 -2
- package/.docs/reference/core/listVectors.md +2 -2
- package/.docs/reference/core/setStorage.md +1 -1
- package/.docs/reference/file-based-agents/storage.md +1 -1
- package/.docs/reference/file-based-agents/studio.md +1 -1
- package/.docs/reference/index.md +27 -55
- package/.docs/{guides → reference}/migrations/ai-sdk-v4-to-v5.md +1 -1
- package/.docs/{guides → reference}/migrations/mastra-cloud.md +1 -1
- package/.docs/{guides → reference}/migrations/upgrade-to-v1/cli.md +1 -1
- package/.docs/{guides → reference}/migrations/upgrade-to-v1/memory.md +1 -1
- package/.docs/{guides → reference}/migrations/upgrade-to-v1/overview.md +41 -41
- package/.docs/{guides → reference}/migrations/upgrade-to-v1/tools.md +1 -1
- package/.docs/{guides → reference}/migrations/upgrade-to-v1/tracing.md +10 -10
- package/.docs/reference/observability/tracing/bridges/datadog.md +2 -2
- package/.docs/reference/observability/tracing/bridges/otel.md +2 -2
- package/.docs/reference/observability/tracing/exporters/arize.md +1 -1
- package/.docs/reference/observability/tracing/exporters/arthur.md +1 -1
- package/.docs/reference/observability/tracing/exporters/confident-ai.md +1 -1
- package/.docs/reference/observability/tracing/exporters/mastra-platform-exporter.md +12 -0
- package/.docs/reference/observability/tracing/exporters/otel.md +2 -2
- package/.docs/reference/pubsub/lease-provider.md +1 -1
- package/.docs/{guides → reference}/rag/chunking-and-embedding.md +16 -19
- package/.docs/reference/rag/database-config.md +1 -1
- package/.docs/{guides/rag/graph-rag.md → reference/rag/graph-rag-guide.md} +1 -1
- package/.docs/{guides → reference}/rag/overview.md +2 -2
- package/.docs/{guides → reference}/rag/retrieval.md +1 -1
- package/.docs/{guides → reference}/rag/vector-databases.md +1 -1
- package/.docs/reference/storage/composite.md +3 -3
- package/.docs/reference/storage/retention.md +4 -4
- package/.docs/reference/streaming/ChunkType.md +3 -3
- package/.docs/reference/streaming/agents/streamLegacy.md +3 -3
- package/.docs/reference/tools/mcp-server.md +1 -1
- package/.docs/reference/vectors/convex.md +2 -2
- package/.docs/reference/vectors/oracledb.md +2 -2
- package/.docs/reference/workers/overview.md +8 -8
- package/.docs/reference/workspace/platform-filesystem.md +2 -2
- package/.docs/reference/workspace/platform-sandbox.md +2 -2
- package/.docs/reference/workspace/process-manager.md +3 -3
- package/CHANGELOG.md +9 -0
- package/dist/index.js +1 -1
- package/dist/{src-BZcgzbk9.js → src-D-W-bx5t.js} +2 -2
- package/dist/{src-BZcgzbk9.js.map → src-D-W-bx5t.js.map} +1 -1
- package/dist/stdio.js +1 -1
- package/package.json +5 -5
- package/.docs/docs/capabilities/channels/other-adapters.md +0 -68
- package/.docs/docs/observability/integrations/bridges/datadog.md +0 -219
- package/.docs/docs/observability/integrations/bridges/otel.md +0 -234
- package/.docs/docs/observability/integrations/exporters/datadog.md +0 -321
- package/.docs/guides/build-your-ui/copilotkit/channels.md +0 -86
- package/.docs/guides/build-your-ui/copilotkit/generative-ui.md +0 -174
- package/.docs/guides/guide/chef-michel.md +0 -211
- package/.docs/guides/guide/publishing-mcp-server.md +0 -137
- package/.docs/guides/guide/slack-assistant.md +0 -193
- package/.docs/guides/guide/stock-agent.md +0 -132
- package/.docs/guides/guide/web-search.md +0 -322
- package/.docs/guides/guide/whatsapp-chat-bot.md +0 -407
- package/.docs/guides/voice/realtime-voice.md +0 -430
- package/.docs/reference/voice/google.md +0 -290
- package/.docs/reference/voice/inworld.md +0 -137
- package/.docs/reference/voice/openai.md +0 -96
- package/.docs/reference/voice/playai.md +0 -82
- package/.docs/reference/workspace/vercel-serverless.md +0 -128
- /package/.docs/{guides/concepts → docs/guides}/multi-agent-systems.md +0 -0
- /package/.docs/{guides/concepts → docs/guides}/streaming.md +0 -0
- /package/.docs/{guides/build-your-ui → integrations/agentic-ui}/assistant-ui.md +0 -0
- /package/.docs/{guides/build-your-ui → integrations/agentic-ui}/openui.md +0 -0
- /package/.docs/{docs/server → integrations}/auth/auth0.md +0 -0
- /package/.docs/{docs/server → integrations}/auth/better-auth.md +0 -0
- /package/.docs/{docs/server → integrations}/auth/clerk.md +0 -0
- /package/.docs/{docs/server → integrations}/auth/firebase.md +0 -0
- /package/.docs/{docs/server → integrations}/auth/google.md +0 -0
- /package/.docs/{docs/server → integrations}/auth/okta.md +0 -0
- /package/.docs/{docs/server → integrations}/auth/supabase.md +0 -0
- /package/.docs/{docs/server → integrations}/auth/workos.md +0 -0
- /package/.docs/{guides/deployment → integrations/deploy}/amazon-ec2.md +0 -0
- /package/.docs/{guides/deployment → integrations/deploy}/inngest.md +0 -0
- /package/.docs/{guides/deployment → integrations/deploy}/kubernetes.md +0 -0
- /package/.docs/{guides/deployment → integrations/deploy}/temporal.md +0 -0
- /package/.docs/{reference/workspace/agentfs-filesystem.md → integrations/file-storage/agentfs.md} +0 -0
- /package/.docs/{reference/workspace/google-drive-filesystem.md → integrations/file-storage/google-drive.md} +0 -0
- /package/.docs/{guides/getting-started → integrations/frameworks}/express.md +0 -0
- /package/.docs/{guides/getting-started → integrations/frameworks}/hono.md +0 -0
- /package/.docs/{guides/getting-started → integrations/frameworks}/nestjs.md +0 -0
- /package/.docs/{reference/workspace/agentcore-runtime-sandbox.md → integrations/sandboxes/agentcore.md} +0 -0
- /package/.docs/{reference/workspace/blaxel-sandbox.md → integrations/sandboxes/blaxel.md} +0 -0
- /package/.docs/{reference/workspace/railway-sandbox.md → integrations/sandboxes/railway.md} +0 -0
- /package/.docs/{guides/guide → integrations/tools}/firecrawl.md +0 -0
- /package/.docs/{reference → integrations}/voice/azure.md +0 -0
- /package/.docs/{reference → integrations}/voice/deepgram.md +0 -0
- /package/.docs/{reference → integrations}/voice/elevenlabs.md +0 -0
- /package/.docs/{reference → integrations}/voice/mistral.md +0 -0
- /package/.docs/{reference → integrations}/voice/murf.md +0 -0
- /package/.docs/{reference → integrations}/voice/sarvam.md +0 -0
- /package/.docs/{reference → integrations}/voice/speechify.md +0 -0
- /package/.docs/{reference/voice/xai-realtime.md → integrations/voice/xai.md} +0 -0
- /package/.docs/{guides/getting-started → reference}/manual-install.md +0 -0
- /package/.docs/{guides → reference}/migrations/agentnetwork.md +0 -0
- /package/.docs/{guides → reference}/migrations/network-to-supervisor.md +0 -0
- /package/.docs/{guides → reference}/migrations/upgrade-to-v1/agent.md +0 -0
- /package/.docs/{guides → reference}/migrations/upgrade-to-v1/client.md +0 -0
- /package/.docs/{guides → reference}/migrations/upgrade-to-v1/deployment.md +0 -0
- /package/.docs/{guides → reference}/migrations/upgrade-to-v1/evals.md +0 -0
- /package/.docs/{guides → reference}/migrations/upgrade-to-v1/mastra.md +0 -0
- /package/.docs/{guides → reference}/migrations/upgrade-to-v1/mcp.md +0 -0
- /package/.docs/{guides → reference}/migrations/upgrade-to-v1/processors.md +0 -0
- /package/.docs/{guides → reference}/migrations/upgrade-to-v1/rag.md +0 -0
- /package/.docs/{guides → reference}/migrations/upgrade-to-v1/storage.md +0 -0
- /package/.docs/{guides → reference}/migrations/upgrade-to-v1/vectors.md +0 -0
- /package/.docs/{guides → reference}/migrations/upgrade-to-v1/voice.md +0 -0
- /package/.docs/{guides → reference}/migrations/upgrade-to-v1/workflows.md +0 -0
- /package/.docs/{guides → reference}/migrations/vnext-to-standard-apis.md +0 -0
package/dist/stdio.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { i as writeErrorLog, r as setLogLevel, t as runServer } from "./src-
|
|
2
|
+
import { i as writeErrorLog, r as setLogLevel, t as runServer } from "./src-D-W-bx5t.js";
|
|
3
3
|
//#region src/stdio.ts
|
|
4
4
|
function parseLogLevel() {
|
|
5
5
|
const args = process.argv.slice(2);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/mcp-docs-server",
|
|
3
|
-
"version": "1.2.15-alpha.
|
|
3
|
+
"version": "1.2.15-alpha.21",
|
|
4
4
|
"description": "MCP server for accessing Mastra.ai documentation, changelogs, and news.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"jsdom": "^26.1.0",
|
|
29
29
|
"local-pkg": "^1.1.2",
|
|
30
30
|
"zod": "^4.4.3",
|
|
31
|
-
"@mastra/
|
|
32
|
-
"@mastra/
|
|
31
|
+
"@mastra/mcp": "^1.16.0-alpha.2",
|
|
32
|
+
"@mastra/core": "1.58.0-alpha.14"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@hono/node-server": "^2.0.0",
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"typescript": "^6.0.3",
|
|
47
47
|
"vitest": "4.1.10",
|
|
48
48
|
"@internal/lint": "0.0.121",
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
49
|
+
"@internal/types-builder": "0.0.96",
|
|
50
|
+
"@mastra/core": "1.58.0-alpha.14"
|
|
51
51
|
},
|
|
52
52
|
"homepage": "https://mastra.ai",
|
|
53
53
|
"repository": {
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
> Discover all available pages from the documentation index: https://mastra.ai/llms.txt
|
|
2
|
-
|
|
3
|
-
# More
|
|
4
|
-
|
|
5
|
-
Mastra channels use Chat SDK adapters, so the pages in this section aren't the full list of supported platforms. Use any Chat SDK platform adapter that exports an adapter factory compatible with `channels.adapters`.
|
|
6
|
-
|
|
7
|
-
## Adapter catalog
|
|
8
|
-
|
|
9
|
-
The [Chat SDK adapter catalog](https://chat-sdk.dev/adapters) is the canonical source for available adapters. The list below is only a snapshot and may not always be up to date.
|
|
10
|
-
|
|
11
|
-
At the time of writing, Chat SDK lists adapters for:
|
|
12
|
-
|
|
13
|
-
- AgentPhone
|
|
14
|
-
- Baileys WhatsApp
|
|
15
|
-
- Discord
|
|
16
|
-
- Google Chat
|
|
17
|
-
- GitHub
|
|
18
|
-
- iMessage
|
|
19
|
-
- Kapso
|
|
20
|
-
- Lark / Feishu
|
|
21
|
-
- Linear
|
|
22
|
-
- Liveblocks
|
|
23
|
-
- Matrix
|
|
24
|
-
- Messenger
|
|
25
|
-
- Mattermost
|
|
26
|
-
- Novu
|
|
27
|
-
- Resend
|
|
28
|
-
- Sendblue
|
|
29
|
-
- Telegram
|
|
30
|
-
- Twilio
|
|
31
|
-
- Velt
|
|
32
|
-
- Web
|
|
33
|
-
- Webex
|
|
34
|
-
- WeChat
|
|
35
|
-
- WhatsApp Business Cloud
|
|
36
|
-
- X
|
|
37
|
-
- Zalo
|
|
38
|
-
- Zernio
|
|
39
|
-
|
|
40
|
-
Check the adapter's docs for its package name, credential variables, webhook requirements, and platform-specific behavior.
|
|
41
|
-
|
|
42
|
-
## Use the same Mastra wiring
|
|
43
|
-
|
|
44
|
-
The Mastra side of each Chat SDK adapter follows the same setup. Install the adapter package and add its factory to `channels.adapters`. Then configure the platform credentials and point its webhook to the generated Mastra route.
|
|
45
|
-
|
|
46
|
-
Use one of the platform pages in this section as a reference for the Mastra wiring:
|
|
47
|
-
|
|
48
|
-
- [Slack](https://mastra.ai/docs/capabilities/channels/slack)
|
|
49
|
-
- [Microsoft Teams](https://mastra.ai/docs/capabilities/channels/teams)
|
|
50
|
-
- [Discord](https://mastra.ai/docs/capabilities/channels/discord)
|
|
51
|
-
- [Telegram](https://mastra.ai/docs/capabilities/channels/telegram)
|
|
52
|
-
- [WhatsApp](https://mastra.ai/docs/capabilities/channels/whatsapp)
|
|
53
|
-
|
|
54
|
-
## What to check in adapter docs
|
|
55
|
-
|
|
56
|
-
Before wiring a new adapter into Mastra, check the adapter docs for:
|
|
57
|
-
|
|
58
|
-
- Credential environment variables.
|
|
59
|
-
- Required platform permissions or scopes.
|
|
60
|
-
- Webhook verification behavior.
|
|
61
|
-
- Whether the platform needs separate routes for setup, events, or interactions.
|
|
62
|
-
- Whether regular messages require long-running listeners or polling.
|
|
63
|
-
- Attachment, card, and rich message support.
|
|
64
|
-
|
|
65
|
-
## Related
|
|
66
|
-
|
|
67
|
-
- [Channels overview](https://mastra.ai/docs/capabilities/channels/overview)
|
|
68
|
-
- [Channels reference](https://mastra.ai/reference/agents/channels)
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
> Discover all available pages from the documentation index: https://mastra.ai/llms.txt
|
|
2
|
-
|
|
3
|
-
# Datadog bridge
|
|
4
|
-
|
|
5
|
-
> **Warning:** The Datadog Bridge is currently **experimental**. APIs and configuration options may change in future releases.
|
|
6
|
-
|
|
7
|
-
The Datadog Bridge enables bidirectional integration between Mastra's tracing system and Datadog. Unlike exporters that send trace data after execution completes, the bridge creates native dd-trace spans in real time so that auto-instrumented APM operations (HTTP calls, database queries, etc.) inside your tools and processors are correctly nested under their parent Mastra spans.
|
|
8
|
-
|
|
9
|
-
> **Not using dd-trace APM?:** If you only need to send LLM Observability data and don't use `dd-trace` APM auto-instrumentation, the [Datadog Exporter](https://mastra.ai/docs/observability/integrations/exporters/datadog) is simpler, it supports agentless mode and sends spans directly to Datadog without a local agent.
|
|
10
|
-
|
|
11
|
-
## When to use the bridge
|
|
12
|
-
|
|
13
|
-
Use the DatadogBridge when you:
|
|
14
|
-
|
|
15
|
-
- Use `dd-trace` auto-instrumentation in your application (HTTP servers, database clients, etc.)
|
|
16
|
-
- Want APM service calls made by tools, MCP tools, or output processors to appear under their parent Mastra span instead of the request handler
|
|
17
|
-
- Need both APM traces and LLM Observability data to share a consistent trace topology
|
|
18
|
-
- Are building a distributed system where Datadog trace context must propagate across services
|
|
19
|
-
|
|
20
|
-
## How it works
|
|
21
|
-
|
|
22
|
-
The DatadogBridge participates in two parts of the dd-trace pipeline:
|
|
23
|
-
|
|
24
|
-
**APM context propagation (real time):**
|
|
25
|
-
|
|
26
|
-
- Creates a dd-trace APM span via `tracer.startSpan()` when each Mastra span is created
|
|
27
|
-
- Activates the APM span in dd-trace's scope via `tracer.scope().activate()` during execution
|
|
28
|
-
- Auto-instrumented operations inside the active scope are parented to the correct Mastra span
|
|
29
|
-
- Inherits the active dd-trace context (e.g., an incoming request span) when no explicit Mastra parent exists
|
|
30
|
-
|
|
31
|
-
**LLM Observability emission (on span end):**
|
|
32
|
-
|
|
33
|
-
- Emits annotations (model info, token usage, input/output, errors) through `dd-trace`'s LLM Observability pipeline
|
|
34
|
-
- Maintains parent-child relationships in Datadog LLM Observability using nested `llmobs.trace()` calls
|
|
35
|
-
- Reuses the same data shape and span-kind mapping as the [Datadog Exporter](https://mastra.ai/docs/observability/integrations/exporters/datadog)
|
|
36
|
-
|
|
37
|
-
## Trace and log correlation
|
|
38
|
-
|
|
39
|
-
Without the bridge, the Datadog Exporter only creates LLM Observability spans after a trace completes. During execution, no `dd-trace` span is active in scope, so any HTTP or database call made by a tool falls back to whatever `dd-trace` span is active at the time, typically the incoming request handler. The result is that service calls from MCP tools or output processors appear as children of the request span instead of the agent or processor span that actually made them.
|
|
40
|
-
|
|
41
|
-
The bridge fixes this by creating real dd-trace spans up front, so the scope is correct when auto-instrumentation runs.
|
|
42
|
-
|
|
43
|
-
## Installation
|
|
44
|
-
|
|
45
|
-
**npm**:
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
npm install @mastra/datadog dd-trace
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
**pnpm**:
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
pnpm add @mastra/datadog dd-trace
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
**Yarn**:
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
yarn add @mastra/datadog dd-trace
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
**Bun**:
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
bun add @mastra/datadog dd-trace
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
The bridge requires `dd-trace` to be installed and a local Datadog Agent (or compatible OTLP receiver) to receive APM data. See the [APM prerequisites](https://mastra.ai/docs/observability/integrations/exporters/datadog) on the exporter page for agent setup details.
|
|
70
|
-
|
|
71
|
-
## Configuration
|
|
72
|
-
|
|
73
|
-
Using the DatadogBridge requires two steps:
|
|
74
|
-
|
|
75
|
-
1. Initialize `dd-trace` so its auto-instrumentation patches HTTP, database, and framework libraries
|
|
76
|
-
2. Add the DatadogBridge to your Mastra observability config
|
|
77
|
-
|
|
78
|
-
### Step 1: Initialize dd-trace
|
|
79
|
-
|
|
80
|
-
`dd-trace` must be initialized before any other imports so its auto-instrumentation can patch libraries at load time. The bridge will detect an already-initialized tracer and reuse it.
|
|
81
|
-
|
|
82
|
-
```typescript
|
|
83
|
-
import tracer from 'dd-trace'
|
|
84
|
-
|
|
85
|
-
tracer.init({
|
|
86
|
-
service: process.env.DD_SERVICE || 'my-mastra-app',
|
|
87
|
-
env: process.env.DD_ENV || 'production',
|
|
88
|
-
version: process.env.DD_VERSION,
|
|
89
|
-
})
|
|
90
|
-
|
|
91
|
-
import { Mastra } from '@mastra/core'
|
|
92
|
-
import { Observability } from '@mastra/observability'
|
|
93
|
-
import { DatadogBridge } from '@mastra/datadog'
|
|
94
|
-
|
|
95
|
-
// ...
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
> **Note:** Import and initialize `dd-trace` at the very top of your application's entry file, before any other imports.
|
|
99
|
-
|
|
100
|
-
### Step 2: Mastra Configuration
|
|
101
|
-
|
|
102
|
-
Add the DatadogBridge to your Mastra observability config:
|
|
103
|
-
|
|
104
|
-
```typescript
|
|
105
|
-
export const mastra = new Mastra({
|
|
106
|
-
observability: new Observability({
|
|
107
|
-
configs: {
|
|
108
|
-
default: {
|
|
109
|
-
serviceName: 'my-mastra-app',
|
|
110
|
-
bridge: new DatadogBridge({
|
|
111
|
-
mlApp: process.env.DD_LLMOBS_ML_APP!,
|
|
112
|
-
}),
|
|
113
|
-
},
|
|
114
|
-
},
|
|
115
|
-
}),
|
|
116
|
-
bundler: {
|
|
117
|
-
externals: [
|
|
118
|
-
'dd-trace',
|
|
119
|
-
'@datadog/native-metrics',
|
|
120
|
-
'@datadog/native-appsec',
|
|
121
|
-
'@datadog/native-iast-taint-tracking',
|
|
122
|
-
'@datadog/pprof',
|
|
123
|
-
],
|
|
124
|
-
},
|
|
125
|
-
})
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
```bash
|
|
129
|
-
DD_SERVICE=my-mastra-app
|
|
130
|
-
DD_ENV=production
|
|
131
|
-
DD_VERSION=1.0.0
|
|
132
|
-
DD_LLMOBS_ML_APP=my-llm-app
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
When `dd-trace` is initialized, it routes APM data to your local Datadog Agent on `localhost:8126`. The bridge enables LLM Observability on top of the same tracer, so both sets of data appear under the same service in Datadog.
|
|
136
|
-
|
|
137
|
-
No Mastra exporters are required when using the bridge, both APM and LLM Observability data flow through `dd-trace`. You can still add Mastra exporters if you want to send traces to additional destinations.
|
|
138
|
-
|
|
139
|
-
## Agent vs. agentless mode
|
|
140
|
-
|
|
141
|
-
The bridge defaults to **agent mode** (`agentless: false`). This assumes a local Datadog Agent is running on `localhost:8126` to receive both APM and LLM Observability data. This is the typical setup when using `dd-trace` auto-instrumentation, since APM data always routes through the agent.
|
|
142
|
-
|
|
143
|
-
If you don't have a local Datadog Agent and only need LLM Observability data (no APM auto-instrumentation), you can enable agentless mode to send data directly to Datadog. In this case, you must provide an API key.
|
|
144
|
-
|
|
145
|
-
```typescript
|
|
146
|
-
new DatadogBridge({
|
|
147
|
-
mlApp: process.env.DD_LLMOBS_ML_APP!,
|
|
148
|
-
apiKey: process.env.DD_API_KEY!,
|
|
149
|
-
agentless: true,
|
|
150
|
-
})
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
> **Note:** For most bridge users, agent mode is the right choice. APM data can't be sent in agentless mode, so enabling agentless splits LLM Observability traffic away from APM traffic. If you want LLM Observability only without an agent, use the [Datadog Exporter](https://mastra.ai/docs/observability/integrations/exporters/datadog) instead.
|
|
154
|
-
|
|
155
|
-
## Trace hierarchy
|
|
156
|
-
|
|
157
|
-
With the DatadogBridge, your traces maintain proper hierarchy across dd-trace and Mastra boundaries. Service calls made by tools and processors appear under the correct Mastra span:
|
|
158
|
-
|
|
159
|
-
```text
|
|
160
|
-
HTTP POST /api/chat (from web framework instrumentation)
|
|
161
|
-
└── agent.orchestrator (from Mastra via DatadogBridge)
|
|
162
|
-
├── chat gpt-5.4 (LLM call)
|
|
163
|
-
├── tool.execute search (tool execution)
|
|
164
|
-
│ └── HTTP GET api.example.com (auto-instrumented from inside the tool)
|
|
165
|
-
└── processor.guardrail (output processor)
|
|
166
|
-
└── HTTP POST guardrail-service/check (auto-instrumented from inside the processor)
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
In Datadog, the APM trace shows this full topology, and the LLM Observability product shows the agent and LLM-specific spans with their inputs, outputs, and token metrics.
|
|
170
|
-
|
|
171
|
-
## Span type mapping
|
|
172
|
-
|
|
173
|
-
The bridge uses the same span-kind mapping as the Datadog Exporter for LLM Observability. See [span type mapping](https://mastra.ai/docs/observability/integrations/exporters/datadog) on the exporter page.
|
|
174
|
-
|
|
175
|
-
## Using tags
|
|
176
|
-
|
|
177
|
-
Tags help you categorize and filter traces in Datadog. Add tags when executing agents or workflows:
|
|
178
|
-
|
|
179
|
-
```typescript
|
|
180
|
-
const result = await agent.generate('Hello', {
|
|
181
|
-
tracingOptions: {
|
|
182
|
-
tags: ['production', 'experiment-v2', 'user-request'],
|
|
183
|
-
},
|
|
184
|
-
})
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
Tags formatted as `key:value` (e.g., `instance_name:career-scout-api`) are split into structured tag entries. Tags without a colon are set with a `true` value.
|
|
188
|
-
|
|
189
|
-
## Promoting context keys to flat tags
|
|
190
|
-
|
|
191
|
-
Use `requestContextKeys` to promote specific keys from the request context or span attributes into flat, indexable LLM Observability tags. This makes them filterable in the Datadog UI:
|
|
192
|
-
|
|
193
|
-
```typescript
|
|
194
|
-
new DatadogBridge({
|
|
195
|
-
mlApp: process.env.DD_LLMOBS_ML_APP!,
|
|
196
|
-
requestContextKeys: ['tenantId', 'agentId'],
|
|
197
|
-
})
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
Promoted keys are removed from `annotations.metadata` and added as flat tags on each LLM Observability span.
|
|
201
|
-
|
|
202
|
-
## Troubleshooting
|
|
203
|
-
|
|
204
|
-
If APM spans aren't connecting to Mastra spans as expected:
|
|
205
|
-
|
|
206
|
-
- Verify `dd-trace` is initialized **before** any other imports (it patches libraries at load time)
|
|
207
|
-
- Verify a local Datadog Agent is running and reachable at `localhost:8126`
|
|
208
|
-
- Ensure the DatadogBridge is set as `bridge` (not as an entry in `exporters`) in your observability config
|
|
209
|
-
- Confirm you haven't also added the `DatadogExporter` to `exporters`: using both will double-emit LLM Observability data
|
|
210
|
-
|
|
211
|
-
For native-module compatibility issues with `dd-trace` and bundler externals, see the [Datadog exporter troubleshooting](https://mastra.ai/docs/observability/integrations/exporters/datadog) section.
|
|
212
|
-
|
|
213
|
-
## Related
|
|
214
|
-
|
|
215
|
-
- [Tracing Overview](https://mastra.ai/docs/observability/tracing/overview)
|
|
216
|
-
- [Datadog Exporter](https://mastra.ai/docs/observability/integrations/exporters/datadog) - LLM Observability only, no `dd-trace` APM
|
|
217
|
-
- [DatadogBridge Reference](https://mastra.ai/reference/observability/tracing/bridges/datadog) - API documentation
|
|
218
|
-
- [Datadog APM documentation](https://docs.datadoghq.com/tracing/)
|
|
219
|
-
- [Datadog LLM Observability documentation](https://docs.datadoghq.com/llm_observability/)
|
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
> Discover all available pages from the documentation index: https://mastra.ai/llms.txt
|
|
2
|
-
|
|
3
|
-
# OpenTelemetry bridge
|
|
4
|
-
|
|
5
|
-
> **Warning:** The OpenTelemetry Bridge is currently **experimental**. APIs and configuration options may change in future releases.
|
|
6
|
-
|
|
7
|
-
The OpenTelemetry (OTEL) Bridge enables bidirectional integration between Mastra's tracing system and existing OpenTelemetry infrastructure. Unlike exporters that send trace data to external platforms, the bridge creates native OTEL spans that participate in your distributed tracing context.
|
|
8
|
-
|
|
9
|
-
> **Looking to send traces without existing OTEL infrastructure?:** If you don't have existing OpenTelemetry instrumentation, the [OpenTelemetry Exporter](https://mastra.ai/docs/observability/integrations/exporters/otel) may be simpler, it sends traces directly without requiring an OTEL SDK setup.
|
|
10
|
-
|
|
11
|
-
## When to use the bridge
|
|
12
|
-
|
|
13
|
-
Use the OtelBridge when you:
|
|
14
|
-
|
|
15
|
-
- Have existing OTEL instrumentation in your application (HTTP servers, database clients, etc.)
|
|
16
|
-
- Want Mastra operations to appear as child spans of your existing OTEL traces
|
|
17
|
-
- Need OTEL-instrumented code inside Mastra tools to maintain proper parent-child relationships
|
|
18
|
-
- Are building a distributed system where trace context must propagate across services
|
|
19
|
-
|
|
20
|
-
## How it works
|
|
21
|
-
|
|
22
|
-
The OtelBridge provides two-way integration:
|
|
23
|
-
|
|
24
|
-
**From OTEL to Mastra:**
|
|
25
|
-
|
|
26
|
-
- Reads from OTEL ambient context (AsyncLocalStorage) automatically
|
|
27
|
-
- Inherits trace ID and parent span ID from active OTEL spans
|
|
28
|
-
- Respects OTEL sampling decisions: if a trace isn't sampled, Mastra won't create spans for it
|
|
29
|
-
- No manual trace ID passing required when OTEL auto-instrumentation is active
|
|
30
|
-
|
|
31
|
-
**From Mastra to OTEL:**
|
|
32
|
-
|
|
33
|
-
- Creates native OTEL spans for Mastra operations (agents, LLM calls, tools, workflows)
|
|
34
|
-
- Maintains proper parent-child relationships in distributed traces
|
|
35
|
-
- Allows OTEL-instrumented code (HTTP clients, database calls) within Mastra operations to nest correctly
|
|
36
|
-
- Forwards Mastra log events to the globally-registered OTEL `LoggerProvider`. Logs that originate inside a Mastra span are emitted under that span's OTEL context so backends correlate them with the trace. If no `LoggerProvider` is registered, log emission is a silent no-op.
|
|
37
|
-
|
|
38
|
-
## Installation
|
|
39
|
-
|
|
40
|
-
**npm**:
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
npm install @mastra/otel-bridge
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**pnpm**:
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
pnpm add @mastra/otel-bridge
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
**Yarn**:
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
yarn add @mastra/otel-bridge
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
**Bun**:
|
|
59
|
-
|
|
60
|
-
```bash
|
|
61
|
-
bun add @mastra/otel-bridge
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
The bridge works with your existing OpenTelemetry setup. Depending on your configuration, you may also need some of these packages:
|
|
65
|
-
|
|
66
|
-
- `@opentelemetry/sdk-node` - Core Node.js SDK for OTEL
|
|
67
|
-
- `@opentelemetry/auto-instrumentations-node` - Auto-instrumentation for common libraries
|
|
68
|
-
- `@opentelemetry/exporter-trace-otlp-proto` - OTLP exporter (Protobuf over HTTP)
|
|
69
|
-
- `@opentelemetry/exporter-trace-otlp-http` - OTLP exporter (JSON over HTTP)
|
|
70
|
-
- `@opentelemetry/exporter-trace-otlp-grpc` - OTLP exporter (gRPC)
|
|
71
|
-
- `@opentelemetry/sdk-trace-base` - Base tracing SDK (for BatchSpanProcessor, etc.)
|
|
72
|
-
- `@opentelemetry/core` - Core utilities (for W3CTraceContextPropagator, etc.)
|
|
73
|
-
- `@opentelemetry/sdk-logs` and an OTLP log exporter (e.g. `@opentelemetry/exporter-logs-otlp-http`) - Required if you want the bridge to forward Mastra log events too
|
|
74
|
-
|
|
75
|
-
## Configuration
|
|
76
|
-
|
|
77
|
-
Using the OtelBridge requires two steps:
|
|
78
|
-
|
|
79
|
-
1. Configure OpenTelemetry instrumentation in your application
|
|
80
|
-
2. Add the OtelBridge to your Mastra observability config
|
|
81
|
-
|
|
82
|
-
### Step 1: OpenTelemetry Instrumentation
|
|
83
|
-
|
|
84
|
-
Create an instrumentation file that initializes OTEL. This must run before your application code:
|
|
85
|
-
|
|
86
|
-
```typescript
|
|
87
|
-
import { NodeSDK } from '@opentelemetry/sdk-node'
|
|
88
|
-
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node'
|
|
89
|
-
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto'
|
|
90
|
-
import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base'
|
|
91
|
-
import { W3CTraceContextPropagator } from '@opentelemetry/core'
|
|
92
|
-
|
|
93
|
-
const sdk = new NodeSDK({
|
|
94
|
-
serviceName: 'my-service',
|
|
95
|
-
spanProcessors: [
|
|
96
|
-
new BatchSpanProcessor(
|
|
97
|
-
new OTLPTraceExporter({
|
|
98
|
-
url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT || 'http://localhost:4318/v1/traces',
|
|
99
|
-
}),
|
|
100
|
-
),
|
|
101
|
-
],
|
|
102
|
-
instrumentations: [getNodeAutoInstrumentations()],
|
|
103
|
-
textMapPropagator: new W3CTraceContextPropagator(),
|
|
104
|
-
})
|
|
105
|
-
|
|
106
|
-
sdk.start()
|
|
107
|
-
|
|
108
|
-
export { sdk }
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### Step 2: Mastra Configuration
|
|
112
|
-
|
|
113
|
-
Add the OtelBridge to your Mastra observability config:
|
|
114
|
-
|
|
115
|
-
```typescript
|
|
116
|
-
import { Mastra } from '@mastra/core'
|
|
117
|
-
import { Observability } from '@mastra/observability'
|
|
118
|
-
import { OtelBridge } from '@mastra/otel-bridge'
|
|
119
|
-
|
|
120
|
-
export const mastra = new Mastra({
|
|
121
|
-
observability: new Observability({
|
|
122
|
-
configs: {
|
|
123
|
-
default: {
|
|
124
|
-
serviceName: 'my-service',
|
|
125
|
-
bridge: new OtelBridge(),
|
|
126
|
-
},
|
|
127
|
-
},
|
|
128
|
-
}),
|
|
129
|
-
agents: {/* your agents */},
|
|
130
|
-
})
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
No Mastra exporters are required when using the bridge, traces are sent via your OTEL SDK configuration. You can optionally add Mastra exporters if you want to send traces to additional destinations.
|
|
134
|
-
|
|
135
|
-
### Forwarding logs (optional)
|
|
136
|
-
|
|
137
|
-
The bridge also forwards Mastra log events to the globally-registered OTEL `LoggerProvider`. To wire up logs alongside traces, register a `logRecordProcessor` on `NodeSDK`:
|
|
138
|
-
|
|
139
|
-
```typescript
|
|
140
|
-
import { NodeSDK } from '@opentelemetry/sdk-node'
|
|
141
|
-
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http'
|
|
142
|
-
import { BatchLogRecordProcessor } from '@opentelemetry/sdk-logs'
|
|
143
|
-
|
|
144
|
-
const sdk = new NodeSDK({
|
|
145
|
-
// ...trace config as usual
|
|
146
|
-
logRecordProcessor: new BatchLogRecordProcessor(
|
|
147
|
-
new OTLPLogExporter({
|
|
148
|
-
url: process.env.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT || 'http://localhost:4318/v1/logs',
|
|
149
|
-
}),
|
|
150
|
-
),
|
|
151
|
-
})
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
Logs that originate inside a Mastra span are emitted under that span's OTEL context, so backends like Datadog, Grafana, and Honeycomb correlate them with the surrounding trace automatically. Logs without trace context use the currently active OTEL context.
|
|
155
|
-
|
|
156
|
-
If you don't register a `LoggerProvider`, log emission is a silent no-op, traces continue to work as configured.
|
|
157
|
-
|
|
158
|
-
### Running Your Application
|
|
159
|
-
|
|
160
|
-
Use the `--import` flag to ensure instrumentation loads before your application:
|
|
161
|
-
|
|
162
|
-
```bash
|
|
163
|
-
tsx --import ./instrumentation.ts ./src/index.ts
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
## Semantic conventions
|
|
167
|
-
|
|
168
|
-
The OtelBridge exports Mastra spans using [OpenTelemetry Semantic Conventions for GenAI v1.38.0](https://github.com/open-telemetry/semantic-conventions/tree/v1.38.0/docs/gen-ai). This includes standardized span names (`chat {model}`, `execute_tool {tool_name}`, etc.) and attributes (`gen_ai.usage.input_tokens`, `gen_ai.request.model`, etc.).
|
|
169
|
-
|
|
170
|
-
For details on span naming and attributes, see the [OpenTelemetry Exporter semantic conventions](https://mastra.ai/docs/observability/integrations/exporters/otel).
|
|
171
|
-
|
|
172
|
-
## Trace hierarchy
|
|
173
|
-
|
|
174
|
-
With the OtelBridge, your traces maintain proper hierarchy across OTEL and Mastra boundaries:
|
|
175
|
-
|
|
176
|
-
```text
|
|
177
|
-
HTTP POST /api/chat (from Hono middleware)
|
|
178
|
-
└── agent.assistant (from Mastra via OtelBridge)
|
|
179
|
-
├── chat gpt-5.4 (LLM call)
|
|
180
|
-
├── tool.execute search (tool execution)
|
|
181
|
-
│ └── HTTP GET api.example.com (from OTEL auto-instrumentation)
|
|
182
|
-
└── chat gpt-5.4 (follow-up LLM call)
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
## Multi-service distributed tracing
|
|
186
|
-
|
|
187
|
-
The OtelBridge enables trace propagation across service boundaries. When Service A calls Service B via HTTP, trace context propagates automatically:
|
|
188
|
-
|
|
189
|
-
```text
|
|
190
|
-
Service A: HTTP POST /api/process
|
|
191
|
-
└── HTTP POST service-b/api/analyze (outgoing call)
|
|
192
|
-
|
|
193
|
-
Service B: HTTP POST /api/analyze (incoming call - same trace!)
|
|
194
|
-
└── agent.analyzer (Mastra agent inherits trace context)
|
|
195
|
-
└── chat gpt-5.4
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
Both services must have:
|
|
199
|
-
|
|
200
|
-
1. OTEL instrumentation configured
|
|
201
|
-
2. W3C Trace Context propagator enabled
|
|
202
|
-
3. Mastra with OtelBridge configured
|
|
203
|
-
|
|
204
|
-
## Using tags
|
|
205
|
-
|
|
206
|
-
Tags help you categorize and filter traces in your OTEL backend. Add tags when executing agents or workflows:
|
|
207
|
-
|
|
208
|
-
```typescript
|
|
209
|
-
const result = await agent.generate('Hello', {
|
|
210
|
-
tracingOptions: {
|
|
211
|
-
tags: ['production', 'experiment-v2', 'user-request'],
|
|
212
|
-
},
|
|
213
|
-
})
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
Tags are exported as a JSON string in the `mastra.tags` span attribute for broad backend compatibility. Common use cases include:
|
|
217
|
-
|
|
218
|
-
- Environment labels: `"production"`, `"staging"`
|
|
219
|
-
- Experiment tracking: `"experiment-v1"`, `"control-group"`
|
|
220
|
-
- Priority levels: `"priority-high"`, `"batch-job"`
|
|
221
|
-
|
|
222
|
-
## Troubleshooting
|
|
223
|
-
|
|
224
|
-
If traces aren't displaying or connecting as expected:
|
|
225
|
-
|
|
226
|
-
- Verify OTEL SDK is initialized before Mastra (use `--import` flag or import at top of entry point)
|
|
227
|
-
- Ensure the OtelBridge is added to your observability config
|
|
228
|
-
- Check that your OTEL backend is running and accessible
|
|
229
|
-
|
|
230
|
-
## Related
|
|
231
|
-
|
|
232
|
-
- [Tracing Overview](https://mastra.ai/docs/observability/tracing/overview)
|
|
233
|
-
- [OpenTelemetry Exporter](https://mastra.ai/docs/observability/integrations/exporters/otel): For sending traces to OTEL backends
|
|
234
|
-
- [OtelBridge Reference](https://mastra.ai/reference/observability/tracing/bridges/otel): API documentation
|