@mastra/mcp-docs-server 1.1.35-alpha.8 → 1.1.35

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.
Files changed (108) hide show
  1. package/.docs/course/03-agent-memory/18-advanced-configuration-semantic-recall.md +48 -4
  2. package/.docs/docs/agents/background-tasks.md +62 -2
  3. package/.docs/docs/agents/processors.md +9 -1
  4. package/.docs/docs/agents/response-caching.md +148 -0
  5. package/.docs/docs/agents/signals.md +151 -0
  6. package/.docs/docs/agents/using-tools.md +8 -0
  7. package/.docs/docs/browser/agent-browser.md +15 -0
  8. package/.docs/docs/browser/stagehand.md +25 -1
  9. package/.docs/docs/editor/tools.md +1 -1
  10. package/.docs/docs/index.md +2 -2
  11. package/.docs/docs/mastra-platform/configuration.md +1 -1
  12. package/.docs/docs/mastra-platform/overview.md +1 -1
  13. package/.docs/docs/memory/observational-memory.md +61 -13
  14. package/.docs/docs/memory/semantic-recall.md +68 -6
  15. package/.docs/docs/observability/logging.md +2 -2
  16. package/.docs/docs/observability/metrics/overview.md +4 -4
  17. package/.docs/docs/observability/overview.md +6 -6
  18. package/.docs/docs/observability/tracing/bridges/otel.md +25 -0
  19. package/.docs/docs/observability/tracing/exporters/arize.md +5 -5
  20. package/.docs/docs/observability/tracing/exporters/braintrust.md +37 -0
  21. package/.docs/docs/observability/tracing/exporters/langfuse.md +21 -0
  22. package/.docs/docs/observability/tracing/exporters/{cloud.md → mastra-platform.md} +28 -26
  23. package/.docs/docs/observability/tracing/exporters/{default.md → mastra-storage.md} +56 -19
  24. package/.docs/docs/observability/tracing/exporters/otel.md +79 -2
  25. package/.docs/docs/observability/tracing/overview.md +30 -29
  26. package/.docs/docs/observability/tracing/processors/sensitive-data-filter.md +6 -6
  27. package/.docs/docs/server/mastra-server.md +30 -19
  28. package/.docs/docs/studio/observability.md +4 -4
  29. package/.docs/docs/studio/overview.md +6 -0
  30. package/.docs/docs/voice/overview.md +84 -0
  31. package/.docs/docs/workflows/suspend-and-resume.md +28 -1
  32. package/.docs/guides/deployment/inngest.md +23 -0
  33. package/.docs/guides/migrations/mastra-cloud.md +6 -6
  34. package/.docs/guides/migrations/upgrade-to-v1/tracing.md +19 -17
  35. package/.docs/models/gateways/netlify.md +2 -1
  36. package/.docs/models/gateways/openrouter.md +4 -1
  37. package/.docs/models/gateways/vercel.md +2 -1
  38. package/.docs/models/index.md +1 -1
  39. package/.docs/models/providers/chutes.md +23 -54
  40. package/.docs/models/providers/databricks.md +96 -0
  41. package/.docs/models/providers/deepseek.md +3 -1
  42. package/.docs/models/providers/digitalocean.md +9 -2
  43. package/.docs/models/providers/firepass.md +71 -0
  44. package/.docs/models/providers/google.md +3 -2
  45. package/.docs/models/providers/kilo.md +5 -3
  46. package/.docs/models/providers/llmgateway.md +7 -1
  47. package/.docs/models/providers/nebius.md +37 -55
  48. package/.docs/models/providers/novita-ai.md +5 -5
  49. package/.docs/models/providers/nvidia.md +59 -49
  50. package/.docs/models/providers/ollama-cloud.md +1 -1
  51. package/.docs/models/providers/openai.md +2 -0
  52. package/.docs/models/providers/opencode.md +44 -43
  53. package/.docs/models/providers/poe.md +4 -1
  54. package/.docs/models/providers/sarvam.md +72 -0
  55. package/.docs/models/providers/wafer.ai.md +2 -1
  56. package/.docs/models/providers/xiaomi-token-plan-ams.md +6 -5
  57. package/.docs/models/providers/xiaomi-token-plan-cn.md +6 -5
  58. package/.docs/models/providers/xiaomi-token-plan-sgp.md +6 -5
  59. package/.docs/models/providers.md +3 -1
  60. package/.docs/reference/agents/agent.md +85 -0
  61. package/.docs/reference/browser/agent-browser.md +37 -11
  62. package/.docs/reference/browser/stagehand-browser.md +35 -9
  63. package/.docs/reference/cli/mastra.md +33 -1
  64. package/.docs/reference/client-js/agents.md +115 -1
  65. package/.docs/reference/client-js/responses.md +4 -0
  66. package/.docs/reference/configuration.md +6 -6
  67. package/.docs/reference/editor/tool-provider.md +3 -3
  68. package/.docs/reference/harness/harness-class.md +21 -8
  69. package/.docs/reference/index.md +5 -0
  70. package/.docs/reference/memory/observational-memory.md +11 -1
  71. package/.docs/reference/observability/metrics/automatic-metrics.md +2 -4
  72. package/.docs/reference/observability/tracing/bridges/datadog.md +2 -2
  73. package/.docs/reference/observability/tracing/bridges/otel.md +26 -4
  74. package/.docs/reference/observability/tracing/configuration.md +6 -3
  75. package/.docs/reference/observability/tracing/exporters/arize.md +1 -1
  76. package/.docs/reference/observability/tracing/exporters/braintrust.md +2 -0
  77. package/.docs/reference/observability/tracing/exporters/cloud-exporter.md +3 -1
  78. package/.docs/reference/observability/tracing/exporters/console-exporter.md +2 -2
  79. package/.docs/reference/observability/tracing/exporters/default-exporter.md +7 -1
  80. package/.docs/reference/observability/tracing/exporters/mastra-platform-exporter.md +263 -0
  81. package/.docs/reference/observability/tracing/exporters/mastra-storage-exporter.md +194 -0
  82. package/.docs/reference/observability/tracing/exporters/otel.md +12 -8
  83. package/.docs/reference/observability/tracing/instances.md +2 -2
  84. package/.docs/reference/observability/tracing/interfaces.md +37 -2
  85. package/.docs/reference/observability/tracing/processors/sensitive-data-filter.md +22 -0
  86. package/.docs/reference/observability/tracing/span-filtering.md +2 -2
  87. package/.docs/reference/processors/prefill-error-handler.md +3 -3
  88. package/.docs/reference/processors/response-cache.md +114 -0
  89. package/.docs/reference/processors/tool-call-filter.md +28 -0
  90. package/.docs/reference/storage/clickhouse.md +8 -8
  91. package/.docs/reference/storage/cloudflare-d1.md +1 -1
  92. package/.docs/reference/storage/cloudflare.md +1 -1
  93. package/.docs/reference/storage/composite.md +1 -1
  94. package/.docs/reference/storage/convex.md +1 -1
  95. package/.docs/reference/storage/dsql.md +428 -0
  96. package/.docs/reference/storage/duckdb.md +3 -3
  97. package/.docs/reference/storage/dynamodb.md +1 -1
  98. package/.docs/reference/storage/lance.md +1 -1
  99. package/.docs/reference/storage/libsql.md +1 -1
  100. package/.docs/reference/storage/postgresql.md +1 -1
  101. package/.docs/reference/storage/upstash.md +1 -1
  102. package/.docs/reference/streaming/ChunkType.md +44 -0
  103. package/.docs/reference/tools/brightdata.md +167 -0
  104. package/.docs/reference/tools/create-tool.md +46 -0
  105. package/.docs/reference/voice/inworld.md +133 -0
  106. package/.docs/reference/workflows/workflow-state-reader.md +113 -0
  107. package/CHANGELOG.md +106 -0
  108. package/package.json +5 -5
@@ -8,13 +8,11 @@ For setup instructions, see the [Metrics overview](https://mastra.ai/docs/observ
8
8
 
9
9
  Metrics are extracted from spans when they end. The observability layer inspects each completed span, calculates duration, and (for model generation spans) reads token usage data. No manual instrumentation is needed.
10
10
 
11
- Metrics are routed through an internal event bus to the `DefaultExporter`, which batches and flushes them to storage.
12
-
13
11
  ### What affects whether a metric is available
14
12
 
15
13
  Two conditions must be true for a metric to reach storage:
16
14
 
17
- 1. `DefaultExporter` is configured as an exporter.
15
+ 1. `MastraStorageExporter` is configured as an exporter.
18
16
  2. The storage backend supports metrics (ClickHouse or DuckDB).
19
17
 
20
18
  If metrics aren't appearing, see [troubleshooting](#troubleshooting).
@@ -117,7 +115,7 @@ When you spot a spike in latency or token usage on the Metrics dashboard, correl
117
115
  ### No metrics are appearing
118
116
 
119
117
  - **Observability is configured**: Verify that your `Mastra` instance has an `observability` config with at least one exporter.
120
- - **`DefaultExporter` is present**: Other exporters (Datadog, Langfuse, etc.) don't persist metrics to Mastra storage. `DefaultExporter` is required for the Studio dashboard.
118
+ - **`MastraStorageExporter` or `MastraPlatformExporter` is present**: Other exporters (Datadog, Langfuse, etc.) don't surface metrics in Mastra. `MastraStorageExporter` is required for the local Studio dashboard, and `MastraPlatformExporter` is required to view metrics in Mastra Platform.
121
119
  - **Storage supports metrics**: Metrics require an OLAP-capable store (ClickHouse or DuckDB). Row-oriented databases (PostgreSQL, LibSQL, MSSQL) and document stores (MongoDB) are not supported for metrics.
122
120
  - **Sampling isn't 0%**: If sampling probability is `0` or strategy is `never`, all spans become no-ops and no metrics are extracted.
123
121
 
@@ -129,7 +129,7 @@ The bridge can be combined with non-Datadog exporters to send traces to addition
129
129
 
130
130
  ```typescript
131
131
  import { Mastra } from '@mastra/core'
132
- import { Observability, DefaultExporter } from '@mastra/observability'
132
+ import { Observability, MastraStorageExporter } from '@mastra/observability'
133
133
  import { DatadogBridge } from '@mastra/datadog'
134
134
 
135
135
  const mastra = new Mastra({
@@ -141,7 +141,7 @@ const mastra = new Mastra({
141
141
  mlApp: process.env.DD_LLMOBS_ML_APP!,
142
142
  }),
143
143
  exporters: [
144
- new DefaultExporter(), // Studio access
144
+ new MastraStorageExporter(), // Studio access
145
145
  ],
146
146
  },
147
147
  },
@@ -2,7 +2,7 @@
2
2
 
3
3
  > **Warning:** The OpenTelemetry Bridge is currently **experimental**. APIs and configuration options may change in future releases.
4
4
 
5
- Enables bidirectional integration between Mastra tracing and OpenTelemetry infrastructure. Creates native OTEL spans for Mastra operations and inherits context from active OTEL spans.
5
+ Enables bidirectional integration between Mastra tracing and OpenTelemetry infrastructure. Creates native OTEL spans for Mastra operations and inherits context from active OTEL spans. Also forwards Mastra log events to the globally-registered OTEL `LoggerProvider`, emitting each log under the OTEL context of the originating Mastra span so trace-log correlation works automatically.
6
6
 
7
7
  ## Constructor
8
8
 
@@ -32,7 +32,29 @@ Executes a synchronous function within the OTEL context of a Mastra span.
32
32
 
33
33
  **Returns:** `T` - The result of the function execution.
34
34
 
35
- ### shutdown
35
+ ### `onLogEvent`
36
+
37
+ ```typescript
38
+ async onLogEvent(event: LogEvent): Promise<void>
39
+ ```
40
+
41
+ Forwards a Mastra log event to the globally-registered OTEL `LoggerProvider`. Trace correlation is resolved in this order:
42
+
43
+ 1. If the log carries a `spanId` the bridge has an OTEL span for, the log is emitted under that span's stored OTEL context.
44
+ 2. Otherwise, if the log carries `traceId` and `spanId`, those IDs are attached to the emitted log record's `SpanContext`.
45
+ 3. Otherwise, the log is emitted under whatever OTEL context is currently active.
46
+
47
+ If no `LoggerProvider` is registered globally, emission is a silent no-op.
48
+
49
+ ### `flush`
50
+
51
+ ```typescript
52
+ async flush(): Promise<void>
53
+ ```
54
+
55
+ Force flushes the global OTEL tracer provider and logger provider if they support `forceFlush`. Useful in serverless environments where you need to drain telemetry before the runtime terminates.
56
+
57
+ ### `shutdown`
36
58
 
37
59
  ```typescript
38
60
  async shutdown(): Promise<void>
@@ -68,7 +90,7 @@ The bridge can be used alongside exporters. The bridge handles OTEL context, whi
68
90
 
69
91
  ```typescript
70
92
  import { Mastra } from '@mastra/core'
71
- import { Observability, DefaultExporter } from '@mastra/observability'
93
+ import { Observability, MastraStorageExporter } from '@mastra/observability'
72
94
  import { OtelBridge } from '@mastra/otel-bridge'
73
95
  import { LangfuseExporter } from '@mastra/langfuse'
74
96
 
@@ -79,7 +101,7 @@ const mastra = new Mastra({
79
101
  serviceName: 'my-service',
80
102
  bridge: new OtelBridge(), // Handles OTEL context
81
103
  exporters: [
82
- new DefaultExporter(), // Studio access
104
+ new MastraStorageExporter(), // Studio access
83
105
  new LangfuseExporter({
84
106
  // Additional destination
85
107
  publicKey: process.env.LANGFUSE_PUBLIC_KEY,
@@ -7,15 +7,18 @@ interface ObservabilityRegistryConfig {
7
7
  default?: { enabled?: boolean }
8
8
  configs?: Record<string, Omit<ObservabilityInstanceConfig, 'name'> | ObservabilityInstance>
9
9
  configSelector?: ConfigSelector
10
+ sensitiveDataFilter?: boolean | SensitiveDataFilterOptions
10
11
  }
11
12
  ```
12
13
 
13
- **default** (`{ enabled?: boolean }`): Enable default configuration with DefaultExporter and CloudExporter
14
+ **default** (`{ enabled?: boolean }`): Enable default configuration with MastraStorageExporter and MastraPlatformExporter
14
15
 
15
16
  **configs** (`Record<string, Omit<ObservabilityInstanceConfig, 'name'> | ObservabilityInstance>`): Named observability instance configurations or pre-instantiated instances
16
17
 
17
18
  **configSelector** (`ConfigSelector`): Runtime configuration selector function
18
19
 
20
+ **sensitiveDataFilter** (`boolean | SensitiveDataFilterOptions`): Controls whether a \[SensitiveDataFilter]\(/reference/observability/tracing/processors/sensitive-data-filter) is auto-applied to every configured instance. Defaults to \`true\`. Pass \`false\` to opt out, or pass a \`SensitiveDataFilterOptions\` object to customize fields, redaction token, or redaction style. If a config already includes a \`SensitiveDataFilter\` in \`spanOutputProcessors\`, it is not duplicated. Pre-instantiated instances are not modified.
21
+
19
22
  ## `ObservabilityInstanceConfig`
20
23
 
21
24
  ```typescript
@@ -201,8 +204,8 @@ Shuts down all observability instances and clears the registry.
201
204
 
202
205
  ### Exporters
203
206
 
204
- - [DefaultExporter](https://mastra.ai/reference/observability/tracing/exporters/default-exporter): Storage configuration
205
- - [CloudExporter](https://mastra.ai/reference/observability/tracing/exporters/cloud-exporter): Cloud setup
207
+ - [MastraStorageExporter](https://mastra.ai/reference/observability/tracing/exporters/mastra-storage-exporter): Persists observability events to Mastra Storage
208
+ - [MastraPlatformExporter](https://mastra.ai/reference/observability/tracing/exporters/mastra-platform-exporter): Sends observability events to Mastra Platform
206
209
  - [Braintrust](https://mastra.ai/reference/observability/tracing/exporters/braintrust): Braintrust integration
207
210
  - [Langfuse](https://mastra.ai/reference/observability/tracing/exporters/langfuse): Langfuse integration
208
211
  - [LangSmith](https://mastra.ai/reference/observability/tracing/exporters/langsmith): LangSmith integration
@@ -77,7 +77,7 @@ Flushes pending data and shuts down the client.
77
77
  ```typescript
78
78
  import { ArizeExporter } from '@mastra/arize'
79
79
 
80
- // For Phoenix: Set PHOENIX_ENDPOINT, PHOENIX_API_KEY, PHOENIX_PROJECT_NAME
80
+ // For Phoenix: Set PHOENIX_COLLECTOR_ENDPOINT, PHOENIX_API_KEY, PHOENIX_PROJECT_NAME
81
81
  // For Arize AX: Set ARIZE_SPACE_ID, ARIZE_API_KEY, ARIZE_PROJECT_NAME
82
82
  const exporter = new ArizeExporter()
83
83
  ```
@@ -15,6 +15,8 @@ interface BraintrustExporterConfig extends BaseExporterConfig {
15
15
  apiKey?: string
16
16
  endpoint?: string
17
17
  projectName?: string
18
+ braintrustLogger?: Logger<true>
19
+ currentSpan?: () => Span | undefined
18
20
  tuningParameters?: Record<string, any>
19
21
  }
20
22
  ```
@@ -1,6 +1,8 @@
1
1
  # CloudExporter
2
2
 
3
- **Added in:** `@mastra/observability@1.8.0`
3
+ **Added in:** `@mastra/observability@1.8.0`. **Deprecated in `1.12.0`** in favor of [`MastraPlatformExporter`](https://mastra.ai/reference/observability/tracing/exporters/mastra-platform-exporter).
4
+
5
+ > **Deprecated:** `CloudExporter` is retained for backward compatibility and will be removed in a future major version. Use [`MastraPlatformExporter`](https://mastra.ai/reference/observability/tracing/exporters/mastra-platform-exporter) for new projects. The two classes share the same constructor, environment variables, and runtime behavior; `CloudExporter` keeps its original `mastra-cloud-observability-exporter` exporter `name` and `CLOUD_EXPORTER_*` error IDs so monitoring rules built against it keep working.
4
6
 
5
7
  Sends tracing spans, logs, metrics, scores, and feedback to the Mastra platform for online visualization and monitoring.
6
8
 
@@ -124,8 +124,8 @@ const exporterWithLogger = new ConsoleExporter({
124
124
 
125
125
  ### Other Exporters
126
126
 
127
- - [DefaultExporter](https://mastra.ai/reference/observability/tracing/exporters/default-exporter): Storage persistence
128
- - [CloudExporter](https://mastra.ai/reference/observability/tracing/exporters/cloud-exporter): Mastra platform
127
+ - [MastraStorageExporter](https://mastra.ai/reference/observability/tracing/exporters/mastra-storage-exporter): Storage persistence
128
+ - [MastraPlatformExporter](https://mastra.ai/reference/observability/tracing/exporters/mastra-platform-exporter): Mastra platform
129
129
  - [Langfuse](https://mastra.ai/reference/observability/tracing/exporters/langfuse): Langfuse integration
130
130
  - [Braintrust](https://mastra.ai/reference/observability/tracing/exporters/braintrust): Braintrust integration
131
131
 
@@ -1,6 +1,10 @@
1
1
  # DefaultExporter
2
2
 
3
- Persists traces to Mastra's configured storage with automatic batching and retry logic.
3
+ **Deprecated in `@mastra/observability@1.12.0`** in favor of [`MastraStorageExporter`](https://mastra.ai/reference/observability/tracing/exporters/mastra-storage-exporter).
4
+
5
+ > **Deprecated:** `DefaultExporter` is retained for backward compatibility and will be removed in a future major version. Use [`MastraStorageExporter`](https://mastra.ai/reference/observability/tracing/exporters/mastra-storage-exporter) for new projects. The two classes share the same constructor, configuration, and runtime behavior; `DefaultExporter` keeps its original `mastra-default-observability-exporter` exporter `name` so monitoring rules built against it keep working.
6
+
7
+ Persists observability events to Mastra Storage with automatic batching and retry logic.
4
8
 
5
9
  ## Constructor
6
10
 
@@ -128,6 +132,8 @@ Failed flushes are retried with exponential backoff:
128
132
  - Maximum attempts: `maxRetries`
129
133
  - Batch is dropped after all retries fail
130
134
 
135
+ When storage does not support a signal or retries are exhausted, `DefaultExporter` emits an `ObservabilityDropEvent` through `onDroppedEvent` handlers registered on exporters and bridges. The drop event includes the signal, reason, count, exporter name, storage name when known, and sanitized error details.
136
+
131
137
  ### Out-of-Order Handling
132
138
 
133
139
  For `batch-with-updates` strategy:
@@ -0,0 +1,263 @@
1
+ # MastraPlatformExporter
2
+
3
+ **Added in:** `@mastra/observability@1.12.0`. Earlier releases (`@mastra/observability@1.8.0` through `1.11.x`) export the same exporter as the deprecated `CloudExporter`.
4
+
5
+ Sends tracing spans, logs, metrics, scores, and feedback to the Mastra platform for online visualization and monitoring.
6
+
7
+ > **Note:** `MastraPlatformExporter` was previously called `CloudExporter`. The original `CloudExporter` class is still exported from `@mastra/observability` so existing imports keep working, but it is deprecated and will be removed in a future major version. New code should use `MastraPlatformExporter`.
8
+
9
+ ## Constructor
10
+
11
+ ```typescript
12
+ new MastraPlatformExporter(config?: MastraPlatformExporterConfig)
13
+ ```
14
+
15
+ ## `MastraPlatformExporterConfig`
16
+
17
+ ```typescript
18
+ interface MastraPlatformExporterConfig extends BaseExporterConfig {
19
+ /** Maximum number of buffered events per batch (spans, logs, metrics, scores, feedback). Default: 1000 */
20
+ maxBatchSize?: number
21
+
22
+ /** Maximum wait time before flushing in milliseconds. Default: 5000 */
23
+ maxBatchWaitMs?: number
24
+
25
+ /** Maximum retry attempts. Default: 3 */
26
+ maxRetries?: number
27
+
28
+ /** Mastra Observability access token (from env or config) */
29
+ accessToken?: string
30
+
31
+ /** Project ID for project-scoped collector routes (letters, numbers, hyphens, underscores) */
32
+ projectId?: string
33
+
34
+ /** Base observability endpoint */
35
+ endpoint?: string
36
+
37
+ /** Explicit traces endpoint override */
38
+ tracesEndpoint?: string
39
+
40
+ /** Explicit logs endpoint override */
41
+ logsEndpoint?: string
42
+
43
+ /** Explicit metrics endpoint override */
44
+ metricsEndpoint?: string
45
+
46
+ /** Explicit scores endpoint override */
47
+ scoresEndpoint?: string
48
+
49
+ /** Explicit feedback endpoint override */
50
+ feedbackEndpoint?: string
51
+ }
52
+ ```
53
+
54
+ Extends `BaseExporterConfig`, which includes:
55
+
56
+ - `logger?: IMastraLogger` - Logger instance
57
+ - `logLevel?: LogLevel | 'debug' | 'info' | 'warn' | 'error'` - Log level (default: INFO)
58
+
59
+ ## Environment variables
60
+
61
+ The exporter reads these environment variables if not provided in config:
62
+
63
+ - `MASTRA_CLOUD_ACCESS_TOKEN` - Authentication token for `MastraPlatformExporter` requests
64
+ - `MASTRA_PROJECT_ID` - Project ID to use when deriving project-scoped collector routes such as `/projects/:projectId/ai/spans/publish`
65
+ - `MASTRA_CLOUD_TRACES_ENDPOINT` - Traces endpoint override. Pass either a base origin or a full traces publish URL. Defaults to `https://observability.mastra.ai` in `@mastra/observability@1.9.2` and later
66
+
67
+ ## Properties
68
+
69
+ ```typescript
70
+ readonly name = 'mastra-platform-exporter';
71
+ ```
72
+
73
+ The deprecated `CloudExporter` class continues to use `'mastra-cloud-observability-exporter'` as its `name` for backward compatibility.
74
+
75
+ ## Methods
76
+
77
+ ### `exportTracingEvent`
78
+
79
+ ```typescript
80
+ async exportTracingEvent(event: TracingEvent): Promise<void>
81
+ ```
82
+
83
+ Processes tracing events for export to the Mastra platform.
84
+
85
+ Only `SPAN_ENDED` tracing events are exported. `SPAN_STARTED` and `SPAN_UPDATED` are ignored. Matching spans are buffered and uploaded to the traces endpoint on the next flush.
86
+
87
+ **Returns:** `Promise<void>` after the tracing event has been accepted for buffering or ignored.
88
+
89
+ ### `onLogEvent`
90
+
91
+ ```typescript
92
+ async onLogEvent(event: LogEvent): Promise<void>
93
+ ```
94
+
95
+ Processes log signals for export.
96
+
97
+ Every `LogEvent` passed to this handler is buffered and exported to the logs endpoint derived from the configured base endpoint. Unlike tracing, there is no additional event-status filtering at the `MastraPlatformExporter` level. If the exporter is disabled, this method becomes a no-op.
98
+
99
+ **Returns:** `Promise<void>` after the log event has been accepted for buffering.
100
+
101
+ ### `onMetricEvent`
102
+
103
+ ```typescript
104
+ async onMetricEvent(event: MetricEvent): Promise<void>
105
+ ```
106
+
107
+ Processes metric signals for export.
108
+
109
+ Every `MetricEvent` passed to this handler is buffered and exported to the metrics endpoint derived from the configured base endpoint. There is no additional filtering by metric subtype or status inside `MastraPlatformExporter`; the exporter forwards every metric event it receives unless it is disabled.
110
+
111
+ **Returns:** `Promise<void>` after the metric event has been accepted for buffering.
112
+
113
+ ### `onScoreEvent`
114
+
115
+ ```typescript
116
+ async onScoreEvent(event: ScoreEvent): Promise<void>
117
+ ```
118
+
119
+ Processes score signals for export.
120
+
121
+ Every `ScoreEvent` passed to this handler is buffered and exported to the scores endpoint derived from the configured base endpoint. There is no extra filtering at the exporter layer beyond the disabled-exporter check, so all score events received by this method are forwarded.
122
+
123
+ **Returns:** `Promise<void>` after the score event has been accepted for buffering.
124
+
125
+ ### `onFeedbackEvent`
126
+
127
+ ```typescript
128
+ async onFeedbackEvent(event: FeedbackEvent): Promise<void>
129
+ ```
130
+
131
+ Processes feedback signals for export.
132
+
133
+ Every `FeedbackEvent` passed to this handler is buffered and exported to the feedback endpoint derived from the configured base endpoint. There is no feedback-type filtering inside `MastraPlatformExporter`; all feedback events received here are forwarded unless the exporter is disabled.
134
+
135
+ **Returns:** `Promise<void>` after the feedback event has been accepted for buffering.
136
+
137
+ ### flush
138
+
139
+ ```typescript
140
+ async flush(): Promise<void>
141
+ ```
142
+
143
+ Force flushes any buffered events to the Mastra platform without shutting down the exporter. Useful in serverless environments where you need to ensure spans are exported before the runtime terminates.
144
+
145
+ ### shutdown
146
+
147
+ ```typescript
148
+ async shutdown(): Promise<void>
149
+ ```
150
+
151
+ Flushes remaining events and performs cleanup.
152
+
153
+ ## Behavior
154
+
155
+ ### Authentication
156
+
157
+ If no access token is provided via config or environment variable, the exporter:
158
+
159
+ - Logs a warning with sign-up information
160
+ - Operates as a no-op (discards all events)
161
+
162
+ ### Batching
163
+
164
+ The exporter batches tracing spans, logs, metrics, scores, and feedback for efficient network usage:
165
+
166
+ - Flushes when total buffered event count reaches `maxBatchSize`
167
+ - Flushes when `maxBatchWaitMs` elapsed since the first buffered signal in the batch
168
+ - Flushes on `shutdown()`
169
+
170
+ ### Error handling
171
+
172
+ - Uses exponential backoff retry with `maxRetries` attempts
173
+ - Drops batches after all retries fail
174
+ - Logs errors but continues processing new events
175
+
176
+ Errors raised by `MastraPlatformExporter` use the `MASTRA_PLATFORM_EXPORTER_*` `id` prefix. The deprecated `CloudExporter` continues to emit `CLOUD_EXPORTER_*` `id`s.
177
+
178
+ ### Endpoint routing
179
+
180
+ - Base origins derive signal endpoints automatically
181
+ - Without `projectId`, derived routes use `/ai/{signal}/publish`
182
+ - With `projectId` or `MASTRA_PROJECT_ID`, derived routes use `/projects/:projectId/ai/{signal}/publish`
183
+ - Explicit full publish URLs are used as-is, even when `projectId` is configured
184
+
185
+ ### Signal Processing
186
+
187
+ - `exportTracingEvent()` only exports `SPAN_ENDED` tracing events
188
+ - `onLogEvent()`, `onMetricEvent()`, `onScoreEvent()`, and `onFeedbackEvent()` buffer every event they receive for their respective signal type
189
+ - All supported signal batches are uploaded to their matching publish endpoints during `flush()` and `shutdown()`
190
+
191
+ ## Span wire format
192
+
193
+ The shape of each span sent to Mastra Platform is documented here for reference only — it is not exported from `@mastra/observability` and should not be imported. The exporter spreads the original `AnyExportedSpan` (so the source field names are preserved) and layers a small set of platform-friendly aliases on top:
194
+
195
+ ```typescript
196
+ type MastraPlatformSpanRecord = AnyExportedSpan & {
197
+ // Aliases derived from the source span
198
+ spanId: string // alias for span.id
199
+ spanType: string // alias for span.type
200
+ startedAt: Date // alias for span.startTime
201
+ endedAt: Date | null // alias for span.endTime ?? null
202
+ error: AnyExportedSpan['errorInfo'] | null
203
+
204
+ // Stamped at export time
205
+ createdAt: Date
206
+ updatedAt: Date | null
207
+ }
208
+ ```
209
+
210
+ The spread `AnyExportedSpan` also carries the original `id`, `type`, `name`, `traceId`, `parentSpanId`, `isRootSpan`, `isEvent`, `startTime`, `endTime`, `entityType`, `entityId`, `entityName`, `tags`, `attributes`, `metadata`, `input`, `output`, and `errorInfo`. See [Interfaces](https://mastra.ai/reference/observability/tracing/interfaces) for `AnyExportedSpan`.
211
+
212
+ ## Usage
213
+
214
+ ```typescript
215
+ import { MastraPlatformExporter } from '@mastra/observability'
216
+
217
+ // Uses environment variable for token
218
+ const exporter = new MastraPlatformExporter()
219
+
220
+ // Explicit configuration
221
+ const customExporter = new MastraPlatformExporter({
222
+ accessToken: 'your-token',
223
+ projectId: 'project_123',
224
+ maxBatchSize: 500,
225
+ maxBatchWaitMs: 2000,
226
+ logLevel: 'debug',
227
+ })
228
+ ```
229
+
230
+ ## Migrating from `CloudExporter`
231
+
232
+ The two classes share the same constructor signature, environment variables, and behavior. To migrate, replace the import and constructor:
233
+
234
+ ```typescript
235
+ // Before
236
+ import { CloudExporter } from '@mastra/observability'
237
+ const exporter = new CloudExporter()
238
+
239
+ // After
240
+ import { MastraPlatformExporter } from '@mastra/observability'
241
+ const exporter = new MastraPlatformExporter()
242
+ ```
243
+
244
+ The original `CloudExporter` is preserved unchanged so dashboards or alert rules that match the previous `CLOUD_EXPORTER_*` error IDs or `mastra-cloud-observability-exporter` exporter name keep working until you migrate.
245
+
246
+ ## See also
247
+
248
+ ### Documentation
249
+
250
+ - [Tracing Overview](https://mastra.ai/docs/observability/tracing/overview): Complete guide
251
+ - [Exporters](https://mastra.ai/docs/observability/tracing/overview): Exporter concepts
252
+
253
+ ### Other Exporters
254
+
255
+ - [MastraStorageExporter](https://mastra.ai/reference/observability/tracing/exporters/mastra-storage-exporter): Storage persistence
256
+ - [ConsoleExporter](https://mastra.ai/reference/observability/tracing/exporters/console-exporter): Debug output
257
+ - [Langfuse](https://mastra.ai/reference/observability/tracing/exporters/langfuse): Langfuse integration
258
+ - [Braintrust](https://mastra.ai/reference/observability/tracing/exporters/braintrust): Braintrust integration
259
+
260
+ ### Reference
261
+
262
+ - [Configuration](https://mastra.ai/reference/observability/tracing/configuration): Configuration options
263
+ - [Interfaces](https://mastra.ai/reference/observability/tracing/interfaces): Type definitions
@@ -0,0 +1,194 @@
1
+ # MastraStorageExporter
2
+
3
+ Persists traces to Mastra's configured storage with automatic batching and retry logic.
4
+
5
+ > **Note:** `MastraStorageExporter` was previously called `DefaultExporter`. The original `DefaultExporter` class is still exported from `@mastra/observability` so existing imports keep working, but it is deprecated and will be removed in a future major version. New code should use `MastraStorageExporter`.
6
+
7
+ ## Constructor
8
+
9
+ ```typescript
10
+ new MastraStorageExporter(config?: MastraStorageExporterConfig)
11
+ ```
12
+
13
+ ## `MastraStorageExporterConfig`
14
+
15
+ ```typescript
16
+ interface MastraStorageExporterConfig extends BaseExporterConfig {
17
+ /** Maximum number of spans per batch. Default: 1000 */
18
+ maxBatchSize?: number
19
+
20
+ /** Maximum total buffer size before emergency flush. Default: 10000 */
21
+ maxBufferSize?: number
22
+
23
+ /** Maximum time to wait before flushing batch in milliseconds. Default: 5000 */
24
+ maxBatchWaitMs?: number
25
+
26
+ /** Maximum number of retry attempts. Default: 4 */
27
+ maxRetries?: number
28
+
29
+ /** Base retry delay in milliseconds (uses exponential backoff). Default: 500 */
30
+ retryDelayMs?: number
31
+
32
+ /** Tracing storage strategy or 'auto' for automatic selection. Default: 'auto' */
33
+ strategy?: TracingStorageStrategy | 'auto'
34
+ }
35
+ ```
36
+
37
+ Extends `BaseExporterConfig`, which includes:
38
+
39
+ - `logger?: IMastraLogger` - Logger instance
40
+ - `logLevel?: LogLevel | 'debug' | 'info' | 'warn' | 'error'` - Log level (default: INFO)
41
+
42
+ ## `TracingStorageStrategy`
43
+
44
+ ```typescript
45
+ type TracingStorageStrategy = 'realtime' | 'batch-with-updates' | 'insert-only'
46
+ ```
47
+
48
+ ### Strategy Behaviors
49
+
50
+ - **realtime**: Immediately persists each event to storage
51
+ - **batch-with-updates**: Batches creates and updates separately, applies in order
52
+ - **insert-only**: Only processes SPAN\_ENDED events, ignores updates
53
+
54
+ ## Properties
55
+
56
+ ```typescript
57
+ readonly name = 'mastra-storage-exporter';
58
+ ```
59
+
60
+ The deprecated `DefaultExporter` class continues to use `'mastra-default-observability-exporter'` as its `name` for backward compatibility.
61
+
62
+ ## Methods
63
+
64
+ ### init
65
+
66
+ ```typescript
67
+ init(options: InitExporterOptions): void
68
+ ```
69
+
70
+ Initializes the exporter after dependencies are ready. Resolves tracing strategy based on storage capabilities.
71
+
72
+ ### `exportTracingEvent`
73
+
74
+ ```typescript
75
+ async exportTracingEvent(event: TracingEvent): Promise<void>
76
+ ```
77
+
78
+ Processes a tracing event according to the resolved strategy.
79
+
80
+ ### flush
81
+
82
+ ```typescript
83
+ async flush(): Promise<void>
84
+ ```
85
+
86
+ Force flushes any buffered events to storage without shutting down the exporter. Useful in serverless environments where you need to ensure spans are exported before the runtime terminates.
87
+
88
+ ### shutdown
89
+
90
+ ```typescript
91
+ async shutdown(): Promise<void>
92
+ ```
93
+
94
+ Flushes remaining buffered events and performs cleanup.
95
+
96
+ ## Automatic strategy selection
97
+
98
+ When `strategy: 'auto'` (default), the exporter queries the storage adapter for its capabilities:
99
+
100
+ ```typescript
101
+ interface TracingStrategy {
102
+ /** Strategies supported by this adapter */
103
+ supported: TracingStorageStrategy[]
104
+
105
+ /** Preferred strategy for optimal performance */
106
+ preferred: TracingStorageStrategy
107
+ }
108
+ ```
109
+
110
+ The exporter will:
111
+
112
+ 1. Use the storage adapter's preferred strategy if available
113
+ 2. Fall back to the first supported strategy if preferred isn't available
114
+ 3. Log a warning if a user-specified strategy isn't supported
115
+
116
+ ## Batching behavior
117
+
118
+ ### Flush Triggers
119
+
120
+ The buffer flushes when any of these conditions are met:
121
+
122
+ - Buffer size reaches `maxBatchSize`
123
+ - Time since first buffered event exceeds `maxBatchWaitMs`
124
+ - Buffer size reaches `maxBufferSize` (emergency flush)
125
+ - `shutdown()` is called
126
+
127
+ ### Retry Logic
128
+
129
+ Failed flushes are retried with exponential backoff:
130
+
131
+ - Retry delay: `retryDelayMs * 2^attempt`
132
+ - Maximum attempts: `maxRetries`
133
+ - Batch is dropped after all retries fail
134
+
135
+ ### Out-of-Order Handling
136
+
137
+ For `batch-with-updates` strategy:
138
+
139
+ - Tracks which spans have been created
140
+ - Rejects updates/ends for spans not yet created
141
+ - Logs warnings for out-of-order events
142
+ - Maintains sequence numbers for ordered updates
143
+
144
+ ## Usage
145
+
146
+ ```typescript
147
+ import { MastraStorageExporter } from '@mastra/observability'
148
+
149
+ // Default configuration
150
+ const exporter = new MastraStorageExporter()
151
+
152
+ // Custom batching configuration
153
+ const customExporter = new MastraStorageExporter({
154
+ maxBatchSize: 500,
155
+ maxBatchWaitMs: 2000,
156
+ strategy: 'batch-with-updates',
157
+ logLevel: 'debug',
158
+ })
159
+ ```
160
+
161
+ ## Migrating from `DefaultExporter`
162
+
163
+ The two classes share the same constructor signature and behavior. To migrate, replace the import and constructor:
164
+
165
+ ```typescript
166
+ // Before
167
+ import { DefaultExporter } from '@mastra/observability'
168
+ const exporter = new DefaultExporter()
169
+
170
+ // After
171
+ import { MastraStorageExporter } from '@mastra/observability'
172
+ const exporter = new MastraStorageExporter()
173
+ ```
174
+
175
+ The original `DefaultExporter` is preserved unchanged so dashboards or alert rules that match the previous `mastra-default-observability-exporter` exporter name keep working until you migrate.
176
+
177
+ ## See also
178
+
179
+ ### Documentation
180
+
181
+ - [Tracing Overview](https://mastra.ai/docs/observability/tracing/overview): Complete guide
182
+ - [Exporters](https://mastra.ai/docs/observability/tracing/overview): Exporter concepts
183
+
184
+ ### Other Exporters
185
+
186
+ - [MastraPlatformExporter](https://mastra.ai/reference/observability/tracing/exporters/mastra-platform-exporter): Mastra platform
187
+ - [ConsoleExporter](https://mastra.ai/reference/observability/tracing/exporters/console-exporter): Debug output
188
+ - [Langfuse](https://mastra.ai/reference/observability/tracing/exporters/langfuse): Langfuse integration
189
+ - [Braintrust](https://mastra.ai/reference/observability/tracing/exporters/braintrust): Braintrust integration
190
+
191
+ ### Reference
192
+
193
+ - [Configuration](https://mastra.ai/reference/observability/tracing/configuration): Configuration options
194
+ - [Interfaces](https://mastra.ai/reference/observability/tracing/interfaces): Type definitions