@mastra/otel-exporter 0.3.3 → 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -64
- package/README.md +10 -10
- package/dist/index.cjs +107 -106
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +106 -105
- package/dist/index.js.map +1 -1
- package/dist/mastra-span.d.ts +2 -2
- package/dist/mastra-span.d.ts.map +1 -1
- package/dist/span-converter.d.ts +5 -5
- package/dist/span-converter.d.ts.map +1 -1
- package/dist/{ai-tracing.d.ts → tracing.d.ts} +6 -6
- package/dist/tracing.d.ts.map +1 -0
- package/dist/types.d.ts +3 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +9 -12
- package/dist/ai-tracing.d.ts.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,57 +1,50 @@
|
|
|
1
1
|
# @mastra/otel-exporter
|
|
2
2
|
|
|
3
|
-
## 0.
|
|
3
|
+
## 1.0.0-beta.0
|
|
4
4
|
|
|
5
|
-
###
|
|
6
|
-
|
|
7
|
-
- update peerdeps ([`5ca1cca`](https://github.com/mastra-ai/mastra/commit/5ca1ccac61ffa7141e6d9fa8f22d3ad4d03bf5dc))
|
|
8
|
-
|
|
9
|
-
- Updated dependencies [[`5ca1cca`](https://github.com/mastra-ai/mastra/commit/5ca1ccac61ffa7141e6d9fa8f22d3ad4d03bf5dc), [`6d7e90d`](https://github.com/mastra-ai/mastra/commit/6d7e90db09713e6250f4d6c3d3cff1b4740e50f9), [`f78b908`](https://github.com/mastra-ai/mastra/commit/f78b9080e11af765969b36b4a619761056030840), [`23c2614`](https://github.com/mastra-ai/mastra/commit/23c26140fdbf04b8c59e8d7d52106d67dad962ec), [`e365eda`](https://github.com/mastra-ai/mastra/commit/e365eda45795b43707310531cac1e2ce4e5a0712)]:
|
|
10
|
-
- @mastra/core@0.24.0
|
|
11
|
-
|
|
12
|
-
## 0.3.3-alpha.0
|
|
13
|
-
|
|
14
|
-
### Patch Changes
|
|
15
|
-
|
|
16
|
-
- update peerdeps ([`5ca1cca`](https://github.com/mastra-ai/mastra/commit/5ca1ccac61ffa7141e6d9fa8f22d3ad4d03bf5dc))
|
|
17
|
-
|
|
18
|
-
- Updated dependencies [[`5ca1cca`](https://github.com/mastra-ai/mastra/commit/5ca1ccac61ffa7141e6d9fa8f22d3ad4d03bf5dc), [`6d7e90d`](https://github.com/mastra-ai/mastra/commit/6d7e90db09713e6250f4d6c3d3cff1b4740e50f9), [`f78b908`](https://github.com/mastra-ai/mastra/commit/f78b9080e11af765969b36b4a619761056030840), [`23c2614`](https://github.com/mastra-ai/mastra/commit/23c26140fdbf04b8c59e8d7d52106d67dad962ec), [`e365eda`](https://github.com/mastra-ai/mastra/commit/e365eda45795b43707310531cac1e2ce4e5a0712)]:
|
|
19
|
-
- @mastra/core@0.24.0-alpha.0
|
|
20
|
-
|
|
21
|
-
## 0.3.2
|
|
5
|
+
### Major Changes
|
|
22
6
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
- Fixed import isssues in exporters. ([#9331](https://github.com/mastra-ai/mastra/pull/9331))
|
|
7
|
+
- Bump minimum required Node.js version to 22.13.0 ([#9706](https://github.com/mastra-ai/mastra/pull/9706))
|
|
26
8
|
|
|
27
|
-
-
|
|
28
|
-
|
|
9
|
+
- ```([#9709](https://github.com/mastra-ai/mastra/pull/9709))
|
|
10
|
+
import { Mastra } from '@mastra/core';
|
|
11
|
+
import { Observability } from '@mastra/observability'; // Explicit import
|
|
29
12
|
|
|
30
|
-
|
|
13
|
+
const mastra = new Mastra({
|
|
14
|
+
...other_config,
|
|
15
|
+
observability: new Observability({
|
|
16
|
+
default: { enabled: true }
|
|
17
|
+
}) // Instance
|
|
18
|
+
});
|
|
19
|
+
```
|
|
31
20
|
|
|
32
|
-
|
|
21
|
+
Instead of:
|
|
33
22
|
|
|
34
|
-
|
|
23
|
+
```
|
|
24
|
+
import { Mastra } from '@mastra/core';
|
|
25
|
+
import '@mastra/observability/init'; // Explicit import
|
|
35
26
|
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
const mastra = new Mastra({
|
|
28
|
+
...other_config,
|
|
29
|
+
observability: {
|
|
30
|
+
default: { enabled: true }
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
```
|
|
38
34
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
Also renamed a bunch of:
|
|
36
|
+
- `Tracing` things to `Observability` things.
|
|
37
|
+
- `AI-` things to just things.
|
|
42
38
|
|
|
43
|
-
-
|
|
39
|
+
- Mark as stable ([`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc))
|
|
44
40
|
|
|
45
|
-
-
|
|
46
|
-
- @mastra/core@0.23.1
|
|
47
|
-
|
|
48
|
-
## 0.3.0
|
|
41
|
+
- moved ai-tracing code into @mastra/observability ([#9661](https://github.com/mastra-ai/mastra/pull/9661))
|
|
49
42
|
|
|
50
43
|
### Minor Changes
|
|
51
44
|
|
|
52
45
|
- Rename LLM span types and attributes to use Model prefix ([#9105](https://github.com/mastra-ai/mastra/pull/9105))
|
|
53
46
|
|
|
54
|
-
BREAKING CHANGE: This release renames
|
|
47
|
+
BREAKING CHANGE: This release renames tracing span types and attribute interfaces to use the "Model" prefix instead of "LLM":
|
|
55
48
|
- `AISpanType.LLM_GENERATION` → `AISpanType.MODEL_GENERATION`
|
|
56
49
|
- `AISpanType.LLM_STEP` → `AISpanType.MODEL_STEP`
|
|
57
50
|
- `AISpanType.LLM_CHUNK` → `AISpanType.MODEL_CHUNK`
|
|
@@ -69,35 +62,13 @@
|
|
|
69
62
|
|
|
70
63
|
### Patch Changes
|
|
71
64
|
|
|
72
|
-
-
|
|
73
|
-
- @mastra/core@0.23.0
|
|
74
|
-
|
|
75
|
-
## 0.3.0-alpha.0
|
|
76
|
-
|
|
77
|
-
### Minor Changes
|
|
78
|
-
|
|
79
|
-
- Rename LLM span types and attributes to use Model prefix ([#9105](https://github.com/mastra-ai/mastra/pull/9105))
|
|
80
|
-
|
|
81
|
-
BREAKING CHANGE: This release renames AI tracing span types and attribute interfaces to use the "Model" prefix instead of "LLM":
|
|
82
|
-
- `AISpanType.LLM_GENERATION` → `AISpanType.MODEL_GENERATION`
|
|
83
|
-
- `AISpanType.LLM_STEP` → `AISpanType.MODEL_STEP`
|
|
84
|
-
- `AISpanType.LLM_CHUNK` → `AISpanType.MODEL_CHUNK`
|
|
85
|
-
- `LLMGenerationAttributes` → `ModelGenerationAttributes`
|
|
86
|
-
- `LLMStepAttributes` → `ModelStepAttributes`
|
|
87
|
-
- `LLMChunkAttributes` → `ModelChunkAttributes`
|
|
88
|
-
- `InternalSpans.LLM` → `InternalSpans.MODEL`
|
|
89
|
-
|
|
90
|
-
This change better reflects that these span types apply to all AI models, not just Large Language Models.
|
|
65
|
+
- Fixed import isssues in exporters. ([#9316](https://github.com/mastra-ai/mastra/pull/9316))
|
|
91
66
|
|
|
92
|
-
|
|
93
|
-
- Update all imports: `import { ModelGenerationAttributes } from '@mastra/core/ai-tracing'`
|
|
94
|
-
- Update span type references: `AISpanType.MODEL_GENERATION`
|
|
95
|
-
- Update InternalSpans usage: `InternalSpans.MODEL`
|
|
96
|
-
|
|
97
|
-
### Patch Changes
|
|
67
|
+
- Update peer dependencies to match core package version bump (1.0.0) ([#9237](https://github.com/mastra-ai/mastra/pull/9237))
|
|
98
68
|
|
|
99
|
-
- Updated dependencies [[`f743dbb`](https://github.com/mastra-ai/mastra/commit/f743dbb8b40d1627b5c10c0e6fc154f4ebb6e394), [`5df9cce`](https://github.com/mastra-ai/mastra/commit/5df9cce1a753438413f64c11eeef8f845745c2a8), [`
|
|
100
|
-
- @mastra/core@0.
|
|
69
|
+
- Updated dependencies [[`39c9743`](https://github.com/mastra-ai/mastra/commit/39c97432d084294f8ba85fbf3ef28098ff21459e), [`f743dbb`](https://github.com/mastra-ai/mastra/commit/f743dbb8b40d1627b5c10c0e6fc154f4ebb6e394), [`fec5129`](https://github.com/mastra-ai/mastra/commit/fec5129de7fc64423ea03661a56cef31dc747a0d), [`0491e7c`](https://github.com/mastra-ai/mastra/commit/0491e7c9b714cb0ba22187ee062147ec2dd7c712), [`f6f4903`](https://github.com/mastra-ai/mastra/commit/f6f4903397314f73362061dc5a3e8e7c61ea34aa), [`0e8ed46`](https://github.com/mastra-ai/mastra/commit/0e8ed467c54d6901a6a365f270ec15d6faadb36c), [`6c049d9`](https://github.com/mastra-ai/mastra/commit/6c049d94063fdcbd5b81c4912a2bf82a92c9cc0b), [`2f897df`](https://github.com/mastra-ai/mastra/commit/2f897df208508f46f51b7625e5dd20c37f93e0e3), [`3443770`](https://github.com/mastra-ai/mastra/commit/3443770662df8eb24c9df3589b2792d78cfcb811), [`f0a07e0`](https://github.com/mastra-ai/mastra/commit/f0a07e0111b3307c5fabfa4094c5c2cfb734fbe6), [`aaa40e7`](https://github.com/mastra-ai/mastra/commit/aaa40e788628b319baa8e889407d11ad626547fa), [`1521d71`](https://github.com/mastra-ai/mastra/commit/1521d716e5daedc74690c983fbd961123c56756b), [`9e1911d`](https://github.com/mastra-ai/mastra/commit/9e1911db2b4db85e0e768c3f15e0d61e319869f6), [`ebac155`](https://github.com/mastra-ai/mastra/commit/ebac15564a590117db7078233f927a7e28a85106), [`dd1c38d`](https://github.com/mastra-ai/mastra/commit/dd1c38d1b75f1b695c27b40d8d9d6ed00d5e0f6f), [`5948e6a`](https://github.com/mastra-ai/mastra/commit/5948e6a5146c83666ba3f294b2be576c82a513fb), [`83b08dc`](https://github.com/mastra-ai/mastra/commit/83b08dcf1bfcc915efab23c09207df90fa247908), [`8940859`](https://github.com/mastra-ai/mastra/commit/89408593658199b4ad67f7b65e888f344e64a442), [`f0f8f12`](https://github.com/mastra-ai/mastra/commit/f0f8f125c308f2d0fd36942ef652fd852df7522f), [`e629310`](https://github.com/mastra-ai/mastra/commit/e629310f1a73fa236d49ec7a1d1cceb6229dc7cc), [`4c6b492`](https://github.com/mastra-ai/mastra/commit/4c6b492c4dd591c6a592520c1f6855d6e936d71f), [`dff01d8`](https://github.com/mastra-ai/mastra/commit/dff01d81ce1f4e4087cfac20fa868e6db138dd14), [`9d819d5`](https://github.com/mastra-ai/mastra/commit/9d819d54b61481639f4008e4694791bddf187edd), [`71c8d6c`](https://github.com/mastra-ai/mastra/commit/71c8d6c161253207b2b9588bdadb7eed604f7253), [`6179a9b`](https://github.com/mastra-ai/mastra/commit/6179a9ba36ffac326de3cc3c43cdc8028d37c251), [`00f4921`](https://github.com/mastra-ai/mastra/commit/00f4921dd2c91a1e5446799599ef7116a8214a1a), [`ca8041c`](https://github.com/mastra-ai/mastra/commit/ca8041cce0379fda22ed293a565bcb5b6ddca68a), [`7051bf3`](https://github.com/mastra-ai/mastra/commit/7051bf38b3b122a069008f861f7bfc004a6d9f6e), [`a8f1494`](https://github.com/mastra-ai/mastra/commit/a8f1494f4bbdc2770bcf327d4c7d869e332183f1), [`0793497`](https://github.com/mastra-ai/mastra/commit/079349753620c40246ffd673e3f9d7d9820beff3), [`5df9cce`](https://github.com/mastra-ai/mastra/commit/5df9cce1a753438413f64c11eeef8f845745c2a8), [`a854ede`](https://github.com/mastra-ai/mastra/commit/a854ede62bf5ac0945a624ac48913dd69c73aabf), [`c576fc0`](https://github.com/mastra-ai/mastra/commit/c576fc0b100b2085afded91a37c97a0ea0ec09c7), [`3defc80`](https://github.com/mastra-ai/mastra/commit/3defc80cf2b88a1b7fc1cc4ddcb91e982a614609), [`f111eac`](https://github.com/mastra-ai/mastra/commit/f111eac5de509b2e5fccfc1882e7f74cda264c74), [`16153fe`](https://github.com/mastra-ai/mastra/commit/16153fe7eb13c99401f48e6ca32707c965ee28b9), [`9f4a683`](https://github.com/mastra-ai/mastra/commit/9f4a6833e88b52574665c028fd5508ad5c2f6004), [`bc94344`](https://github.com/mastra-ai/mastra/commit/bc943444a1342d8a662151b7bce1df7dae32f59c), [`57d157f`](https://github.com/mastra-ai/mastra/commit/57d157f0b163a95c3e6c9eae31bdb11d1bfc64f9), [`903f67d`](https://github.com/mastra-ai/mastra/commit/903f67d184504a273893818c02b961f5423a79ad), [`2a90c55`](https://github.com/mastra-ai/mastra/commit/2a90c55a86a9210697d5adaab5ee94584b079adc), [`eb09742`](https://github.com/mastra-ai/mastra/commit/eb09742197f66c4c38154c3beec78313e69760b2), [`96d35f6`](https://github.com/mastra-ai/mastra/commit/96d35f61376bc2b1bf148648a2c1985bd51bef55), [`5cbe88a`](https://github.com/mastra-ai/mastra/commit/5cbe88aefbd9f933bca669fd371ea36bf939ac6d), [`a1bd7b8`](https://github.com/mastra-ai/mastra/commit/a1bd7b8571db16b94eb01588f451a74758c96d65), [`d78b38d`](https://github.com/mastra-ai/mastra/commit/d78b38d898fce285260d3bbb4befade54331617f), [`0633100`](https://github.com/mastra-ai/mastra/commit/0633100a911ad22f5256471bdf753da21c104742), [`c710c16`](https://github.com/mastra-ai/mastra/commit/c710c1652dccfdc4111c8412bca7a6bb1d48b441), [`354ad0b`](https://github.com/mastra-ai/mastra/commit/354ad0b7b1b8183ac567f236a884fc7ede6d7138), [`cfae733`](https://github.com/mastra-ai/mastra/commit/cfae73394f4920635e6c919c8e95ff9a0788e2e5), [`e3dfda7`](https://github.com/mastra-ai/mastra/commit/e3dfda7b11bf3b8c4bb55637028befb5f387fc74), [`844ea5d`](https://github.com/mastra-ai/mastra/commit/844ea5dc0c248961e7bf73629ae7dcff503e853c), [`398fde3`](https://github.com/mastra-ai/mastra/commit/398fde3f39e707cda79372cdae8f9870e3b57c8d), [`f0f8f12`](https://github.com/mastra-ai/mastra/commit/f0f8f125c308f2d0fd36942ef652fd852df7522f), [`0d7618b`](https://github.com/mastra-ai/mastra/commit/0d7618bc650bf2800934b243eca5648f4aeed9c2), [`7b763e5`](https://github.com/mastra-ai/mastra/commit/7b763e52fc3eaf699c2a99f2adf418dd46e4e9a5), [`d36cfbb`](https://github.com/mastra-ai/mastra/commit/d36cfbbb6565ba5f827883cc9bb648eb14befdc1), [`3697853`](https://github.com/mastra-ai/mastra/commit/3697853deeb72017d90e0f38a93c1e29221aeca0), [`b2e45ec`](https://github.com/mastra-ai/mastra/commit/b2e45eca727a8db01a81ba93f1a5219c7183c839), [`d6d49f7`](https://github.com/mastra-ai/mastra/commit/d6d49f7b8714fa19a52ff9c7cf7fb7e73751901e), [`a534e95`](https://github.com/mastra-ai/mastra/commit/a534e9591f83b3cc1ebff99c67edf4cda7bf81d3), [`9d0e7fe`](https://github.com/mastra-ai/mastra/commit/9d0e7feca8ed98de959f53476ee1456073673348), [`53d927c`](https://github.com/mastra-ai/mastra/commit/53d927cc6f03bff33655b7e2b788da445a08731d), [`3f2faf2`](https://github.com/mastra-ai/mastra/commit/3f2faf2e2d685d6c053cc5af1bf9fedf267b2ce5), [`22f64bc`](https://github.com/mastra-ai/mastra/commit/22f64bc1d37149480b58bf2fefe35b79a1e3e7d5), [`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc), [`b7959e6`](https://github.com/mastra-ai/mastra/commit/b7959e6e25a46b480f9ea2217c4c6c588c423791), [`bda6370`](https://github.com/mastra-ai/mastra/commit/bda637009360649aaf579919e7873e33553c273e), [`d7acd8e`](https://github.com/mastra-ai/mastra/commit/d7acd8e987b5d7eff4fd98b0906c17c06a2e83d5), [`c7f1f7d`](https://github.com/mastra-ai/mastra/commit/c7f1f7d24f61f247f018cc2d1f33bf63212959a7), [`0bddc6d`](https://github.com/mastra-ai/mastra/commit/0bddc6d8dbd6f6008c0cba2e4960a2da75a55af1), [`735d8c1`](https://github.com/mastra-ai/mastra/commit/735d8c1c0d19fbc09e6f8b66cf41bc7655993838), [`acf322e`](https://github.com/mastra-ai/mastra/commit/acf322e0f1fd0189684cf529d91c694bea918a45), [`c942802`](https://github.com/mastra-ai/mastra/commit/c942802a477a925b01859a7b8688d4355715caaa), [`a0c8c1b`](https://github.com/mastra-ai/mastra/commit/a0c8c1b87d4fee252aebda73e8637fbe01d761c9), [`cc34739`](https://github.com/mastra-ai/mastra/commit/cc34739c34b6266a91bea561119240a7acf47887), [`c218bd3`](https://github.com/mastra-ai/mastra/commit/c218bd3759e32423735b04843a09404572631014), [`2c4438b`](https://github.com/mastra-ai/mastra/commit/2c4438b87817ab7eed818c7990fef010475af1a3), [`2b8893c`](https://github.com/mastra-ai/mastra/commit/2b8893cb108ef9acb72ee7835cd625610d2c1a4a), [`8e5c75b`](https://github.com/mastra-ai/mastra/commit/8e5c75bdb1d08a42d45309a4c72def4b6890230f), [`e59e0d3`](https://github.com/mastra-ai/mastra/commit/e59e0d32afb5fcf2c9f3c00c8f81f6c21d3a63fa), [`fa8409b`](https://github.com/mastra-ai/mastra/commit/fa8409bc39cfd8ba6643b9db5269b90b22e2a2f7), [`173c535`](https://github.com/mastra-ai/mastra/commit/173c535c0645b0da404fe09f003778f0b0d4e019)]:
|
|
70
|
+
- @mastra/core@1.0.0-beta.0
|
|
71
|
+
- @mastra/observability@1.0.0-beta.0
|
|
101
72
|
|
|
102
73
|
## 0.2.0
|
|
103
74
|
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# OtelExporter - OpenTelemetry
|
|
1
|
+
# OtelExporter - OpenTelemetry Tracing Exporter
|
|
2
2
|
|
|
3
|
-
Export Mastra
|
|
3
|
+
Export Mastra traces to any OpenTelemetry-compatible observability platform.
|
|
4
4
|
|
|
5
5
|
> **⚠️ Important:** This package requires you to install an additional exporter package based on your provider. Each provider section below includes the specific installation command.
|
|
6
6
|
|
|
@@ -19,7 +19,7 @@ npm install @mastra/otel-exporter @opentelemetry/exporter-trace-otlp-grpc @grpc/
|
|
|
19
19
|
|
|
20
20
|
```typescript
|
|
21
21
|
import { OtelExporter } from '@mastra/otel-exporter';
|
|
22
|
-
import { Mastra } from '@mastra/core';
|
|
22
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
23
23
|
|
|
24
24
|
const mastra = new Mastra({
|
|
25
25
|
...,
|
|
@@ -58,7 +58,7 @@ npm install @mastra/otel-exporter @opentelemetry/exporter-trace-otlp-proto
|
|
|
58
58
|
|
|
59
59
|
```typescript
|
|
60
60
|
import { OtelExporter } from '@mastra/otel-exporter';
|
|
61
|
-
import { Mastra } from '@mastra/core';
|
|
61
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
62
62
|
|
|
63
63
|
const mastra = new Mastra({
|
|
64
64
|
...,
|
|
@@ -95,7 +95,7 @@ npm install @mastra/otel-exporter @opentelemetry/exporter-trace-otlp-proto
|
|
|
95
95
|
|
|
96
96
|
```typescript
|
|
97
97
|
import { OtelExporter } from '@mastra/otel-exporter';
|
|
98
|
-
import { Mastra } from '@mastra/core';
|
|
98
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
99
99
|
|
|
100
100
|
const mastra = new Mastra({
|
|
101
101
|
...,
|
|
@@ -132,7 +132,7 @@ npm install @mastra/otel-exporter @opentelemetry/exporter-trace-otlp-http
|
|
|
132
132
|
|
|
133
133
|
```typescript
|
|
134
134
|
import { OtelExporter } from '@mastra/otel-exporter';
|
|
135
|
-
import { Mastra } from '@mastra/core';
|
|
135
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
136
136
|
|
|
137
137
|
const mastra = new Mastra({
|
|
138
138
|
...,
|
|
@@ -169,7 +169,7 @@ npm install @mastra/otel-exporter @opentelemetry/exporter-trace-otlp-proto
|
|
|
169
169
|
|
|
170
170
|
```typescript
|
|
171
171
|
import { OtelExporter } from '@mastra/otel-exporter';
|
|
172
|
-
import { Mastra } from '@mastra/core';
|
|
172
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
173
173
|
|
|
174
174
|
const mastra = new Mastra({
|
|
175
175
|
...,
|
|
@@ -208,7 +208,7 @@ npm install @mastra/otel-exporter @opentelemetry/exporter-zipkin
|
|
|
208
208
|
|
|
209
209
|
```typescript
|
|
210
210
|
import { OtelExporter } from '@mastra/otel-exporter';
|
|
211
|
-
import { Mastra } from '@mastra/core';
|
|
211
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
212
212
|
|
|
213
213
|
const mastra = new Mastra({
|
|
214
214
|
...,
|
|
@@ -258,7 +258,7 @@ Most providers recommend HTTP/Protobuf for production use.
|
|
|
258
258
|
|
|
259
259
|
```typescript
|
|
260
260
|
import { OtelExporter } from '@mastra/otel-exporter';
|
|
261
|
-
import { Mastra } from '@mastra/core';
|
|
261
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
262
262
|
|
|
263
263
|
const mastra = new Mastra({
|
|
264
264
|
...,
|
|
@@ -364,7 +364,7 @@ Spans are named following OTEL conventions:
|
|
|
364
364
|
|
|
365
365
|
### Attributes
|
|
366
366
|
|
|
367
|
-
The exporter maps Mastra's
|
|
367
|
+
The exporter maps Mastra's tracing data to OTEL-compliant attributes:
|
|
368
368
|
|
|
369
369
|
#### Core Attributes
|
|
370
370
|
|
package/dist/index.cjs
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var observability$1 = require('@mastra/core/observability');
|
|
4
|
+
var observability = require('@mastra/observability');
|
|
4
5
|
var api = require('@opentelemetry/api');
|
|
5
6
|
var resources = require('@opentelemetry/resources');
|
|
6
7
|
var sdkTraceBase = require('@opentelemetry/sdk-trace-base');
|
|
7
8
|
var semanticConventions = require('@opentelemetry/semantic-conventions');
|
|
8
9
|
|
|
9
|
-
// src/
|
|
10
|
+
// src/tracing.ts
|
|
10
11
|
|
|
11
12
|
// src/loadExporter.ts
|
|
12
13
|
var OTLPHttpExporter;
|
|
@@ -224,45 +225,45 @@ var MastraReadableSpan = class {
|
|
|
224
225
|
droppedAttributesCount = 0;
|
|
225
226
|
droppedEventsCount = 0;
|
|
226
227
|
droppedLinksCount = 0;
|
|
227
|
-
constructor(
|
|
228
|
-
this.name =
|
|
228
|
+
constructor(span, attributes, kind, parentSpanId, resource, instrumentationLibrary) {
|
|
229
|
+
this.name = span.name;
|
|
229
230
|
this.kind = kind;
|
|
230
231
|
this.attributes = attributes;
|
|
231
232
|
this.parentSpanId = parentSpanId;
|
|
232
233
|
this.links = [];
|
|
233
234
|
this.events = [];
|
|
234
|
-
this.startTime = this.dateToHrTime(
|
|
235
|
-
this.endTime =
|
|
236
|
-
this.ended = !!
|
|
237
|
-
if (
|
|
238
|
-
const durationMs =
|
|
235
|
+
this.startTime = this.dateToHrTime(span.startTime);
|
|
236
|
+
this.endTime = span.endTime ? this.dateToHrTime(span.endTime) : this.startTime;
|
|
237
|
+
this.ended = !!span.endTime;
|
|
238
|
+
if (span.endTime) {
|
|
239
|
+
const durationMs = span.endTime.getTime() - span.startTime.getTime();
|
|
239
240
|
this.duration = [Math.floor(durationMs / 1e3), durationMs % 1e3 * 1e6];
|
|
240
241
|
} else {
|
|
241
242
|
this.duration = [0, 0];
|
|
242
243
|
}
|
|
243
|
-
if (
|
|
244
|
+
if (span.errorInfo) {
|
|
244
245
|
this.status = {
|
|
245
246
|
code: api.SpanStatusCode.ERROR,
|
|
246
|
-
message:
|
|
247
|
+
message: span.errorInfo.message
|
|
247
248
|
};
|
|
248
249
|
this.events.push({
|
|
249
250
|
name: "exception",
|
|
250
251
|
attributes: {
|
|
251
|
-
"exception.message":
|
|
252
|
+
"exception.message": span.errorInfo.message,
|
|
252
253
|
"exception.type": "Error",
|
|
253
|
-
...
|
|
254
|
-
"exception.stacktrace":
|
|
254
|
+
...span.errorInfo.details?.stack && {
|
|
255
|
+
"exception.stacktrace": span.errorInfo.details.stack
|
|
255
256
|
}
|
|
256
257
|
},
|
|
257
258
|
time: this.startTime,
|
|
258
259
|
droppedAttributesCount: 0
|
|
259
260
|
});
|
|
260
|
-
} else if (
|
|
261
|
+
} else if (span.endTime) {
|
|
261
262
|
this.status = { code: api.SpanStatusCode.OK };
|
|
262
263
|
} else {
|
|
263
264
|
this.status = { code: api.SpanStatusCode.UNSET };
|
|
264
265
|
}
|
|
265
|
-
if (
|
|
266
|
+
if (span.isEvent) {
|
|
266
267
|
this.events.push({
|
|
267
268
|
name: "instant_event",
|
|
268
269
|
attributes: {},
|
|
@@ -271,14 +272,14 @@ var MastraReadableSpan = class {
|
|
|
271
272
|
});
|
|
272
273
|
}
|
|
273
274
|
this.spanContext = () => ({
|
|
274
|
-
traceId:
|
|
275
|
-
spanId:
|
|
275
|
+
traceId: span.traceId,
|
|
276
|
+
spanId: span.id,
|
|
276
277
|
traceFlags: api.TraceFlags.SAMPLED,
|
|
277
278
|
isRemote: false
|
|
278
279
|
});
|
|
279
280
|
if (parentSpanId) {
|
|
280
281
|
this.parentSpanContext = {
|
|
281
|
-
traceId:
|
|
282
|
+
traceId: span.traceId,
|
|
282
283
|
spanId: parentSpanId,
|
|
283
284
|
traceFlags: api.TraceFlags.SAMPLED,
|
|
284
285
|
isRemote: false
|
|
@@ -305,13 +306,13 @@ var MastraReadableSpan = class {
|
|
|
305
306
|
// src/span-converter.ts
|
|
306
307
|
var SPAN_KIND_MAPPING = {
|
|
307
308
|
// Model operations are CLIENT spans (calling external AI services)
|
|
308
|
-
[
|
|
309
|
-
[
|
|
309
|
+
[observability$1.SpanType.MODEL_GENERATION]: api.SpanKind.CLIENT,
|
|
310
|
+
[observability$1.SpanType.MODEL_CHUNK]: api.SpanKind.CLIENT,
|
|
310
311
|
// MCP tool calls are CLIENT (external service calls)
|
|
311
|
-
[
|
|
312
|
+
[observability$1.SpanType.MCP_TOOL_CALL]: api.SpanKind.CLIENT,
|
|
312
313
|
// Root spans for agent/workflow are SERVER (entry points)
|
|
313
|
-
[
|
|
314
|
-
[
|
|
314
|
+
[observability$1.SpanType.AGENT_RUN]: api.SpanKind.SERVER,
|
|
315
|
+
[observability$1.SpanType.WORKFLOW_RUN]: api.SpanKind.SERVER
|
|
315
316
|
};
|
|
316
317
|
var SpanConverter = class {
|
|
317
318
|
resource;
|
|
@@ -324,19 +325,19 @@ var SpanConverter = class {
|
|
|
324
325
|
};
|
|
325
326
|
}
|
|
326
327
|
/**
|
|
327
|
-
* Convert a Mastra
|
|
328
|
+
* Convert a Mastra Span to an OpenTelemetry ReadableSpan
|
|
328
329
|
* This preserves Mastra's trace and span IDs
|
|
329
330
|
*/
|
|
330
|
-
convertSpan(
|
|
331
|
-
const spanKind = this.getSpanKind(
|
|
332
|
-
const attributes = this.buildAttributes(
|
|
333
|
-
const spanName = this.buildSpanName(
|
|
334
|
-
const otelSpan = { ...
|
|
331
|
+
convertSpan(Span) {
|
|
332
|
+
const spanKind = this.getSpanKind(Span);
|
|
333
|
+
const attributes = this.buildAttributes(Span);
|
|
334
|
+
const spanName = this.buildSpanName(Span);
|
|
335
|
+
const otelSpan = { ...Span, name: spanName };
|
|
335
336
|
return new MastraReadableSpan(
|
|
336
337
|
otelSpan,
|
|
337
338
|
attributes,
|
|
338
339
|
spanKind,
|
|
339
|
-
|
|
340
|
+
Span.parentSpanId,
|
|
340
341
|
// Use the parentSpanId from the Mastra span directly
|
|
341
342
|
this.resource,
|
|
342
343
|
this.instrumentationLibrary
|
|
@@ -345,81 +346,81 @@ var SpanConverter = class {
|
|
|
345
346
|
/**
|
|
346
347
|
* Get the appropriate SpanKind based on span type and context
|
|
347
348
|
*/
|
|
348
|
-
getSpanKind(
|
|
349
|
-
if (
|
|
350
|
-
if (
|
|
349
|
+
getSpanKind(Span) {
|
|
350
|
+
if (Span.isRootSpan) {
|
|
351
|
+
if (Span.type === observability$1.SpanType.AGENT_RUN || Span.type === observability$1.SpanType.WORKFLOW_RUN) {
|
|
351
352
|
return api.SpanKind.SERVER;
|
|
352
353
|
}
|
|
353
354
|
}
|
|
354
|
-
return SPAN_KIND_MAPPING[
|
|
355
|
+
return SPAN_KIND_MAPPING[Span.type] || api.SpanKind.INTERNAL;
|
|
355
356
|
}
|
|
356
357
|
/**
|
|
357
358
|
* Build OTEL-compliant span name based on span type and attributes
|
|
358
359
|
*/
|
|
359
|
-
buildSpanName(
|
|
360
|
-
switch (
|
|
361
|
-
case
|
|
362
|
-
const attrs =
|
|
360
|
+
buildSpanName(Span) {
|
|
361
|
+
switch (Span.type) {
|
|
362
|
+
case observability$1.SpanType.MODEL_GENERATION: {
|
|
363
|
+
const attrs = Span.attributes;
|
|
363
364
|
const operation = attrs?.resultType === "tool_selection" ? "tool_selection" : "chat";
|
|
364
365
|
const model = attrs?.model || "unknown";
|
|
365
366
|
return `${operation} ${model}`;
|
|
366
367
|
}
|
|
367
|
-
case
|
|
368
|
-
case
|
|
369
|
-
const toolAttrs =
|
|
368
|
+
case observability$1.SpanType.TOOL_CALL:
|
|
369
|
+
case observability$1.SpanType.MCP_TOOL_CALL: {
|
|
370
|
+
const toolAttrs = Span.attributes;
|
|
370
371
|
const toolName = toolAttrs?.toolId || "unknown";
|
|
371
372
|
return `tool.execute ${toolName}`;
|
|
372
373
|
}
|
|
373
|
-
case
|
|
374
|
-
const agentAttrs =
|
|
374
|
+
case observability$1.SpanType.AGENT_RUN: {
|
|
375
|
+
const agentAttrs = Span.attributes;
|
|
375
376
|
const agentId = agentAttrs?.agentId || "unknown";
|
|
376
377
|
return `agent.${agentId}`;
|
|
377
378
|
}
|
|
378
|
-
case
|
|
379
|
-
const workflowAttrs =
|
|
379
|
+
case observability$1.SpanType.WORKFLOW_RUN: {
|
|
380
|
+
const workflowAttrs = Span.attributes;
|
|
380
381
|
const workflowId = workflowAttrs?.workflowId || "unknown";
|
|
381
382
|
return `workflow.${workflowId}`;
|
|
382
383
|
}
|
|
383
|
-
case
|
|
384
|
-
return
|
|
384
|
+
case observability$1.SpanType.WORKFLOW_STEP:
|
|
385
|
+
return Span.name;
|
|
385
386
|
default:
|
|
386
|
-
return
|
|
387
|
+
return Span.name;
|
|
387
388
|
}
|
|
388
389
|
}
|
|
389
390
|
/**
|
|
390
|
-
* Build OpenTelemetry attributes from Mastra
|
|
391
|
+
* Build OpenTelemetry attributes from Mastra Span
|
|
391
392
|
* Following OTEL Semantic Conventions for GenAI
|
|
392
393
|
*/
|
|
393
|
-
buildAttributes(
|
|
394
|
+
buildAttributes(Span) {
|
|
394
395
|
const attributes = {};
|
|
395
|
-
attributes["gen_ai.operation.name"] = this.getOperationName(
|
|
396
|
-
attributes["span.kind"] = this.getSpanKindString(
|
|
397
|
-
attributes["mastra.span.type"] =
|
|
398
|
-
attributes["mastra.trace_id"] =
|
|
399
|
-
attributes["mastra.span_id"] =
|
|
400
|
-
if (
|
|
401
|
-
attributes["mastra.parent_span_id"] =
|
|
396
|
+
attributes["gen_ai.operation.name"] = this.getOperationName(Span);
|
|
397
|
+
attributes["span.kind"] = this.getSpanKindString(Span);
|
|
398
|
+
attributes["mastra.span.type"] = Span.type;
|
|
399
|
+
attributes["mastra.trace_id"] = Span.traceId;
|
|
400
|
+
attributes["mastra.span_id"] = Span.id;
|
|
401
|
+
if (Span.parentSpanId) {
|
|
402
|
+
attributes["mastra.parent_span_id"] = Span.parentSpanId;
|
|
402
403
|
}
|
|
403
|
-
if (
|
|
404
|
-
const inputStr = typeof
|
|
404
|
+
if (Span.input !== void 0) {
|
|
405
|
+
const inputStr = typeof Span.input === "string" ? Span.input : JSON.stringify(Span.input);
|
|
405
406
|
attributes["input"] = inputStr;
|
|
406
|
-
if (
|
|
407
|
+
if (Span.type === observability$1.SpanType.MODEL_GENERATION) {
|
|
407
408
|
attributes["gen_ai.prompt"] = inputStr;
|
|
408
|
-
} else if (
|
|
409
|
+
} else if (Span.type === observability$1.SpanType.TOOL_CALL || Span.type === observability$1.SpanType.MCP_TOOL_CALL) {
|
|
409
410
|
attributes["gen_ai.tool.input"] = inputStr;
|
|
410
411
|
}
|
|
411
412
|
}
|
|
412
|
-
if (
|
|
413
|
-
const outputStr = typeof
|
|
413
|
+
if (Span.output !== void 0) {
|
|
414
|
+
const outputStr = typeof Span.output === "string" ? Span.output : JSON.stringify(Span.output);
|
|
414
415
|
attributes["output"] = outputStr;
|
|
415
|
-
if (
|
|
416
|
+
if (Span.type === observability$1.SpanType.MODEL_GENERATION) {
|
|
416
417
|
attributes["gen_ai.completion"] = outputStr;
|
|
417
|
-
} else if (
|
|
418
|
+
} else if (Span.type === observability$1.SpanType.TOOL_CALL || Span.type === observability$1.SpanType.MCP_TOOL_CALL) {
|
|
418
419
|
attributes["gen_ai.tool.output"] = outputStr;
|
|
419
420
|
}
|
|
420
421
|
}
|
|
421
|
-
if (
|
|
422
|
-
const modelAttrs =
|
|
422
|
+
if (Span.type === observability$1.SpanType.MODEL_GENERATION && Span.attributes) {
|
|
423
|
+
const modelAttrs = Span.attributes;
|
|
423
424
|
if (modelAttrs.model) {
|
|
424
425
|
attributes["gen_ai.request.model"] = modelAttrs.model;
|
|
425
426
|
}
|
|
@@ -472,12 +473,12 @@ var SpanConverter = class {
|
|
|
472
473
|
attributes["gen_ai.response.finish_reasons"] = modelAttrs.finishReason;
|
|
473
474
|
}
|
|
474
475
|
}
|
|
475
|
-
if ((
|
|
476
|
-
const toolAttrs =
|
|
476
|
+
if ((Span.type === observability$1.SpanType.TOOL_CALL || Span.type === observability$1.SpanType.MCP_TOOL_CALL) && Span.attributes) {
|
|
477
|
+
const toolAttrs = Span.attributes;
|
|
477
478
|
if (toolAttrs.toolId) {
|
|
478
479
|
attributes["gen_ai.tool.name"] = toolAttrs.toolId;
|
|
479
480
|
}
|
|
480
|
-
if (
|
|
481
|
+
if (Span.type === observability$1.SpanType.MCP_TOOL_CALL) {
|
|
481
482
|
const mcpAttrs = toolAttrs;
|
|
482
483
|
if (mcpAttrs.mcpServer) {
|
|
483
484
|
attributes["mcp.server"] = mcpAttrs.mcpServer;
|
|
@@ -494,8 +495,8 @@ var SpanConverter = class {
|
|
|
494
495
|
attributes["gen_ai.tool.success"] = toolAttrs.success;
|
|
495
496
|
}
|
|
496
497
|
}
|
|
497
|
-
if (
|
|
498
|
-
const agentAttrs =
|
|
498
|
+
if (Span.type === observability$1.SpanType.AGENT_RUN && Span.attributes) {
|
|
499
|
+
const agentAttrs = Span.attributes;
|
|
499
500
|
if (agentAttrs.agentId) {
|
|
500
501
|
attributes["agent.id"] = agentAttrs.agentId;
|
|
501
502
|
attributes["gen_ai.agent.id"] = agentAttrs.agentId;
|
|
@@ -507,8 +508,8 @@ var SpanConverter = class {
|
|
|
507
508
|
attributes["agent.available_tools"] = JSON.stringify(agentAttrs.availableTools);
|
|
508
509
|
}
|
|
509
510
|
}
|
|
510
|
-
if (
|
|
511
|
-
const workflowAttrs =
|
|
511
|
+
if (Span.type === observability$1.SpanType.WORKFLOW_RUN && Span.attributes) {
|
|
512
|
+
const workflowAttrs = Span.attributes;
|
|
512
513
|
if (workflowAttrs.workflowId) {
|
|
513
514
|
attributes["workflow.id"] = workflowAttrs.workflowId;
|
|
514
515
|
}
|
|
@@ -516,19 +517,19 @@ var SpanConverter = class {
|
|
|
516
517
|
attributes["workflow.status"] = workflowAttrs.status;
|
|
517
518
|
}
|
|
518
519
|
}
|
|
519
|
-
if (
|
|
520
|
+
if (Span.errorInfo) {
|
|
520
521
|
attributes["error"] = true;
|
|
521
|
-
attributes["error.type"] =
|
|
522
|
-
attributes["error.message"] =
|
|
523
|
-
if (
|
|
524
|
-
attributes["error.domain"] =
|
|
522
|
+
attributes["error.type"] = Span.errorInfo.id || "unknown";
|
|
523
|
+
attributes["error.message"] = Span.errorInfo.message;
|
|
524
|
+
if (Span.errorInfo.domain) {
|
|
525
|
+
attributes["error.domain"] = Span.errorInfo.domain;
|
|
525
526
|
}
|
|
526
|
-
if (
|
|
527
|
-
attributes["error.category"] =
|
|
527
|
+
if (Span.errorInfo.category) {
|
|
528
|
+
attributes["error.category"] = Span.errorInfo.category;
|
|
528
529
|
}
|
|
529
530
|
}
|
|
530
|
-
if (
|
|
531
|
-
Object.entries(
|
|
531
|
+
if (Span.metadata) {
|
|
532
|
+
Object.entries(Span.metadata).forEach(([key, value]) => {
|
|
532
533
|
if (!attributes[key]) {
|
|
533
534
|
if (value === null || value === void 0) {
|
|
534
535
|
return;
|
|
@@ -541,12 +542,12 @@ var SpanConverter = class {
|
|
|
541
542
|
}
|
|
542
543
|
});
|
|
543
544
|
}
|
|
544
|
-
if (
|
|
545
|
-
attributes["mastra.start_time"] =
|
|
545
|
+
if (Span.startTime) {
|
|
546
|
+
attributes["mastra.start_time"] = Span.startTime.toISOString();
|
|
546
547
|
}
|
|
547
|
-
if (
|
|
548
|
-
attributes["mastra.end_time"] =
|
|
549
|
-
const duration =
|
|
548
|
+
if (Span.endTime) {
|
|
549
|
+
attributes["mastra.end_time"] = Span.endTime.toISOString();
|
|
550
|
+
const duration = Span.endTime.getTime() - Span.startTime.getTime();
|
|
550
551
|
attributes["mastra.duration_ms"] = duration;
|
|
551
552
|
}
|
|
552
553
|
return attributes;
|
|
@@ -554,28 +555,28 @@ var SpanConverter = class {
|
|
|
554
555
|
/**
|
|
555
556
|
* Get the operation name based on span type for gen_ai.operation.name
|
|
556
557
|
*/
|
|
557
|
-
getOperationName(
|
|
558
|
-
switch (
|
|
559
|
-
case
|
|
560
|
-
const attrs =
|
|
558
|
+
getOperationName(Span) {
|
|
559
|
+
switch (Span.type) {
|
|
560
|
+
case observability$1.SpanType.MODEL_GENERATION: {
|
|
561
|
+
const attrs = Span.attributes;
|
|
561
562
|
return attrs?.resultType === "tool_selection" ? "tool_selection" : "chat";
|
|
562
563
|
}
|
|
563
|
-
case
|
|
564
|
-
case
|
|
564
|
+
case observability$1.SpanType.TOOL_CALL:
|
|
565
|
+
case observability$1.SpanType.MCP_TOOL_CALL:
|
|
565
566
|
return "tool.execute";
|
|
566
|
-
case
|
|
567
|
+
case observability$1.SpanType.AGENT_RUN:
|
|
567
568
|
return "agent.run";
|
|
568
|
-
case
|
|
569
|
+
case observability$1.SpanType.WORKFLOW_RUN:
|
|
569
570
|
return "workflow.run";
|
|
570
571
|
default:
|
|
571
|
-
return
|
|
572
|
+
return Span.type.replace(/_/g, ".");
|
|
572
573
|
}
|
|
573
574
|
}
|
|
574
575
|
/**
|
|
575
576
|
* Get span kind as string for attribute
|
|
576
577
|
*/
|
|
577
|
-
getSpanKindString(
|
|
578
|
-
const kind = this.getSpanKind(
|
|
578
|
+
getSpanKindString(Span) {
|
|
579
|
+
const kind = this.getSpanKind(Span);
|
|
579
580
|
switch (kind) {
|
|
580
581
|
case api.SpanKind.SERVER:
|
|
581
582
|
return "server";
|
|
@@ -593,8 +594,8 @@ var SpanConverter = class {
|
|
|
593
594
|
}
|
|
594
595
|
};
|
|
595
596
|
|
|
596
|
-
// src/
|
|
597
|
-
var OtelExporter = class extends
|
|
597
|
+
// src/tracing.ts
|
|
598
|
+
var OtelExporter = class extends observability.BaseExporter {
|
|
598
599
|
config;
|
|
599
600
|
tracingConfig;
|
|
600
601
|
spanConverter;
|
|
@@ -613,8 +614,8 @@ var OtelExporter = class extends aiTracing.BaseExporter {
|
|
|
613
614
|
/**
|
|
614
615
|
* Initialize with tracing configuration
|
|
615
616
|
*/
|
|
616
|
-
init(
|
|
617
|
-
this.tracingConfig = config;
|
|
617
|
+
init(options) {
|
|
618
|
+
this.tracingConfig = options.config;
|
|
618
619
|
}
|
|
619
620
|
async setupExporter() {
|
|
620
621
|
if (this.isSetup || this.exporter) return;
|
|
@@ -727,8 +728,8 @@ var OtelExporter = class extends aiTracing.BaseExporter {
|
|
|
727
728
|
await this.setupProcessor();
|
|
728
729
|
this.isSetup = true;
|
|
729
730
|
}
|
|
730
|
-
async
|
|
731
|
-
if (event.type !==
|
|
731
|
+
async _exportTracingEvent(event) {
|
|
732
|
+
if (event.type !== observability$1.TracingEventType.SPAN_ENDED) {
|
|
732
733
|
return;
|
|
733
734
|
}
|
|
734
735
|
const span = event.exportedSpan;
|