@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 CHANGED
@@ -1,57 +1,50 @@
1
1
  # @mastra/otel-exporter
2
2
 
3
- ## 0.3.3
3
+ ## 1.0.0-beta.0
4
4
 
5
- ### Patch Changes
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
- ### Patch Changes
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
- - Updated dependencies [[`f57a81e`](https://github.com/mastra-ai/mastra/commit/f57a81e6ce644e45bf1c9618778cc54c50a84ad4), [`2afd345`](https://github.com/mastra-ai/mastra/commit/2afd3450825b76e41f7973baddf13867ea042e40), [`fc79af3`](https://github.com/mastra-ai/mastra/commit/fc79af3915d1c456729cbd753673b0c0564340d8), [`eefc89e`](https://github.com/mastra-ai/mastra/commit/eefc89ee69f05bb71661473a807fc7dc03d56f17), [`60bd45d`](https://github.com/mastra-ai/mastra/commit/60bd45de021f0dfbe6583928f6da5169cb5585ba), [`a30093d`](https://github.com/mastra-ai/mastra/commit/a30093de98c1836dcd5dfddf09649010712b8c95), [`0fe7adb`](https://github.com/mastra-ai/mastra/commit/0fe7adb0f20f59a6bb41f235d01f8b7a880ea6e7), [`a42e496`](https://github.com/mastra-ai/mastra/commit/a42e49686a7486e2e9e9397fa98e5ff7a71dc1b0), [`3670db7`](https://github.com/mastra-ai/mastra/commit/3670db7e8e798f9d65fac5bfb732134a1f26ba7b), [`e40d4d0`](https://github.com/mastra-ai/mastra/commit/e40d4d0a0971b4505e7c9de73c656066c7565653), [`fc843ff`](https://github.com/mastra-ai/mastra/commit/fc843ff4d1d149317b6324553ce5ad7972062a78), [`ff16f9b`](https://github.com/mastra-ai/mastra/commit/ff16f9b9dbc701b26b6c4e9872f759f3880f9327), [`35e6cf7`](https://github.com/mastra-ai/mastra/commit/35e6cf722fef16ea0301eb9cf5a32fe9ccb12d22), [`30a2e36`](https://github.com/mastra-ai/mastra/commit/30a2e369485e0e59c4faa1d83c5635c2260b304c)]:
28
- - @mastra/core@0.23.2
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
- ## 0.3.2-alpha.0
13
+ const mastra = new Mastra({
14
+ ...other_config,
15
+ observability: new Observability({
16
+ default: { enabled: true }
17
+ }) // Instance
18
+ });
19
+ ```
31
20
 
32
- ### Patch Changes
21
+ Instead of:
33
22
 
34
- - Fixed import isssues in exporters. ([#9331](https://github.com/mastra-ai/mastra/pull/9331))
23
+ ```
24
+ import { Mastra } from '@mastra/core';
25
+ import '@mastra/observability/init'; // Explicit import
35
26
 
36
- - Updated dependencies [[`2afd345`](https://github.com/mastra-ai/mastra/commit/2afd3450825b76e41f7973baddf13867ea042e40), [`eefc89e`](https://github.com/mastra-ai/mastra/commit/eefc89ee69f05bb71661473a807fc7dc03d56f17), [`0fe7adb`](https://github.com/mastra-ai/mastra/commit/0fe7adb0f20f59a6bb41f235d01f8b7a880ea6e7), [`a42e496`](https://github.com/mastra-ai/mastra/commit/a42e49686a7486e2e9e9397fa98e5ff7a71dc1b0), [`3670db7`](https://github.com/mastra-ai/mastra/commit/3670db7e8e798f9d65fac5bfb732134a1f26ba7b), [`fc843ff`](https://github.com/mastra-ai/mastra/commit/fc843ff4d1d149317b6324553ce5ad7972062a78)]:
37
- - @mastra/core@0.23.2-alpha.0
27
+ const mastra = new Mastra({
28
+ ...other_config,
29
+ observability: {
30
+ default: { enabled: true }
31
+ }
32
+ });
33
+ ```
38
34
 
39
- ## 0.3.1
40
-
41
- ### Patch Changes
35
+ Also renamed a bunch of:
36
+ - `Tracing` things to `Observability` things.
37
+ - `AI-` things to just things.
42
38
 
43
- - Fix peerdependencies ([`eb7c1c8`](https://github.com/mastra-ai/mastra/commit/eb7c1c8c592d8fb16dfd250e337d9cdc73c8d5de))
39
+ - Mark as stable ([`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc))
44
40
 
45
- - Updated dependencies []:
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 AI tracing span types and attribute interfaces to use the "Model" prefix instead of "LLM":
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
- - Updated dependencies [[`f743dbb`](https://github.com/mastra-ai/mastra/commit/f743dbb8b40d1627b5c10c0e6fc154f4ebb6e394), [`5df9cce`](https://github.com/mastra-ai/mastra/commit/5df9cce1a753438413f64c11eeef8f845745c2a8), [`2060766`](https://github.com/mastra-ai/mastra/commit/20607667bf78ea104cca3e15dfb93ae0b62c9d18), [`2c4438b`](https://github.com/mastra-ai/mastra/commit/2c4438b87817ab7eed818c7990fef010475af1a3)]:
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
- Migration guide:
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), [`2060766`](https://github.com/mastra-ai/mastra/commit/20607667bf78ea104cca3e15dfb93ae0b62c9d18), [`2c4438b`](https://github.com/mastra-ai/mastra/commit/2c4438b87817ab7eed818c7990fef010475af1a3)]:
100
- - @mastra/core@0.23.0-alpha.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 AI Tracing Exporter
1
+ # OtelExporter - OpenTelemetry Tracing Exporter
2
2
 
3
- Export Mastra AI traces to any OpenTelemetry-compatible observability platform.
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 AI tracing data to OTEL-compliant attributes:
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 aiTracing = require('@mastra/core/ai-tracing');
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/ai-tracing.ts
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(aiSpan, attributes, kind, parentSpanId, resource, instrumentationLibrary) {
228
- this.name = aiSpan.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(aiSpan.startTime);
235
- this.endTime = aiSpan.endTime ? this.dateToHrTime(aiSpan.endTime) : this.startTime;
236
- this.ended = !!aiSpan.endTime;
237
- if (aiSpan.endTime) {
238
- const durationMs = aiSpan.endTime.getTime() - aiSpan.startTime.getTime();
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 (aiSpan.errorInfo) {
244
+ if (span.errorInfo) {
244
245
  this.status = {
245
246
  code: api.SpanStatusCode.ERROR,
246
- message: aiSpan.errorInfo.message
247
+ message: span.errorInfo.message
247
248
  };
248
249
  this.events.push({
249
250
  name: "exception",
250
251
  attributes: {
251
- "exception.message": aiSpan.errorInfo.message,
252
+ "exception.message": span.errorInfo.message,
252
253
  "exception.type": "Error",
253
- ...aiSpan.errorInfo.details?.stack && {
254
- "exception.stacktrace": aiSpan.errorInfo.details.stack
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 (aiSpan.endTime) {
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 (aiSpan.isEvent) {
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: aiSpan.traceId,
275
- spanId: aiSpan.id,
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: aiSpan.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
- [aiTracing.AISpanType.MODEL_GENERATION]: api.SpanKind.CLIENT,
309
- [aiTracing.AISpanType.MODEL_CHUNK]: api.SpanKind.CLIENT,
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
- [aiTracing.AISpanType.MCP_TOOL_CALL]: api.SpanKind.CLIENT,
312
+ [observability$1.SpanType.MCP_TOOL_CALL]: api.SpanKind.CLIENT,
312
313
  // Root spans for agent/workflow are SERVER (entry points)
313
- [aiTracing.AISpanType.AGENT_RUN]: api.SpanKind.SERVER,
314
- [aiTracing.AISpanType.WORKFLOW_RUN]: api.SpanKind.SERVER
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 AI span to an OpenTelemetry ReadableSpan
328
+ * Convert a Mastra Span to an OpenTelemetry ReadableSpan
328
329
  * This preserves Mastra's trace and span IDs
329
330
  */
330
- convertSpan(aiSpan) {
331
- const spanKind = this.getSpanKind(aiSpan);
332
- const attributes = this.buildAttributes(aiSpan);
333
- const spanName = this.buildSpanName(aiSpan);
334
- const otelSpan = { ...aiSpan, name: spanName };
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
- aiSpan.parentSpanId,
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(aiSpan) {
349
- if (aiSpan.isRootSpan) {
350
- if (aiSpan.type === aiTracing.AISpanType.AGENT_RUN || aiSpan.type === aiTracing.AISpanType.WORKFLOW_RUN) {
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[aiSpan.type] || api.SpanKind.INTERNAL;
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(aiSpan) {
360
- switch (aiSpan.type) {
361
- case aiTracing.AISpanType.MODEL_GENERATION: {
362
- const attrs = aiSpan.attributes;
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 aiTracing.AISpanType.TOOL_CALL:
368
- case aiTracing.AISpanType.MCP_TOOL_CALL: {
369
- const toolAttrs = aiSpan.attributes;
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 aiTracing.AISpanType.AGENT_RUN: {
374
- const agentAttrs = aiSpan.attributes;
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 aiTracing.AISpanType.WORKFLOW_RUN: {
379
- const workflowAttrs = aiSpan.attributes;
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 aiTracing.AISpanType.WORKFLOW_STEP:
384
- return aiSpan.name;
384
+ case observability$1.SpanType.WORKFLOW_STEP:
385
+ return Span.name;
385
386
  default:
386
- return aiSpan.name;
387
+ return Span.name;
387
388
  }
388
389
  }
389
390
  /**
390
- * Build OpenTelemetry attributes from Mastra AI span
391
+ * Build OpenTelemetry attributes from Mastra Span
391
392
  * Following OTEL Semantic Conventions for GenAI
392
393
  */
393
- buildAttributes(aiSpan) {
394
+ buildAttributes(Span) {
394
395
  const attributes = {};
395
- attributes["gen_ai.operation.name"] = this.getOperationName(aiSpan);
396
- attributes["span.kind"] = this.getSpanKindString(aiSpan);
397
- attributes["mastra.span.type"] = aiSpan.type;
398
- attributes["mastra.trace_id"] = aiSpan.traceId;
399
- attributes["mastra.span_id"] = aiSpan.id;
400
- if (aiSpan.parentSpanId) {
401
- attributes["mastra.parent_span_id"] = aiSpan.parentSpanId;
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 (aiSpan.input !== void 0) {
404
- const inputStr = typeof aiSpan.input === "string" ? aiSpan.input : JSON.stringify(aiSpan.input);
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 (aiSpan.type === aiTracing.AISpanType.MODEL_GENERATION) {
407
+ if (Span.type === observability$1.SpanType.MODEL_GENERATION) {
407
408
  attributes["gen_ai.prompt"] = inputStr;
408
- } else if (aiSpan.type === aiTracing.AISpanType.TOOL_CALL || aiSpan.type === aiTracing.AISpanType.MCP_TOOL_CALL) {
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 (aiSpan.output !== void 0) {
413
- const outputStr = typeof aiSpan.output === "string" ? aiSpan.output : JSON.stringify(aiSpan.output);
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 (aiSpan.type === aiTracing.AISpanType.MODEL_GENERATION) {
416
+ if (Span.type === observability$1.SpanType.MODEL_GENERATION) {
416
417
  attributes["gen_ai.completion"] = outputStr;
417
- } else if (aiSpan.type === aiTracing.AISpanType.TOOL_CALL || aiSpan.type === aiTracing.AISpanType.MCP_TOOL_CALL) {
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 (aiSpan.type === aiTracing.AISpanType.MODEL_GENERATION && aiSpan.attributes) {
422
- const modelAttrs = aiSpan.attributes;
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 ((aiSpan.type === aiTracing.AISpanType.TOOL_CALL || aiSpan.type === aiTracing.AISpanType.MCP_TOOL_CALL) && aiSpan.attributes) {
476
- const toolAttrs = aiSpan.attributes;
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 (aiSpan.type === aiTracing.AISpanType.MCP_TOOL_CALL) {
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 (aiSpan.type === aiTracing.AISpanType.AGENT_RUN && aiSpan.attributes) {
498
- const agentAttrs = aiSpan.attributes;
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 (aiSpan.type === aiTracing.AISpanType.WORKFLOW_RUN && aiSpan.attributes) {
511
- const workflowAttrs = aiSpan.attributes;
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 (aiSpan.errorInfo) {
520
+ if (Span.errorInfo) {
520
521
  attributes["error"] = true;
521
- attributes["error.type"] = aiSpan.errorInfo.id || "unknown";
522
- attributes["error.message"] = aiSpan.errorInfo.message;
523
- if (aiSpan.errorInfo.domain) {
524
- attributes["error.domain"] = aiSpan.errorInfo.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 (aiSpan.errorInfo.category) {
527
- attributes["error.category"] = aiSpan.errorInfo.category;
527
+ if (Span.errorInfo.category) {
528
+ attributes["error.category"] = Span.errorInfo.category;
528
529
  }
529
530
  }
530
- if (aiSpan.metadata) {
531
- Object.entries(aiSpan.metadata).forEach(([key, value]) => {
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 (aiSpan.startTime) {
545
- attributes["mastra.start_time"] = aiSpan.startTime.toISOString();
545
+ if (Span.startTime) {
546
+ attributes["mastra.start_time"] = Span.startTime.toISOString();
546
547
  }
547
- if (aiSpan.endTime) {
548
- attributes["mastra.end_time"] = aiSpan.endTime.toISOString();
549
- const duration = aiSpan.endTime.getTime() - aiSpan.startTime.getTime();
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(aiSpan) {
558
- switch (aiSpan.type) {
559
- case aiTracing.AISpanType.MODEL_GENERATION: {
560
- const attrs = aiSpan.attributes;
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 aiTracing.AISpanType.TOOL_CALL:
564
- case aiTracing.AISpanType.MCP_TOOL_CALL:
564
+ case observability$1.SpanType.TOOL_CALL:
565
+ case observability$1.SpanType.MCP_TOOL_CALL:
565
566
  return "tool.execute";
566
- case aiTracing.AISpanType.AGENT_RUN:
567
+ case observability$1.SpanType.AGENT_RUN:
567
568
  return "agent.run";
568
- case aiTracing.AISpanType.WORKFLOW_RUN:
569
+ case observability$1.SpanType.WORKFLOW_RUN:
569
570
  return "workflow.run";
570
571
  default:
571
- return aiSpan.type.replace(/_/g, ".");
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(aiSpan) {
578
- const kind = this.getSpanKind(aiSpan);
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/ai-tracing.ts
597
- var OtelExporter = class extends aiTracing.BaseExporter {
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(config) {
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 _exportEvent(event) {
731
- if (event.type !== aiTracing.AITracingEventType.SPAN_ENDED) {
731
+ async _exportTracingEvent(event) {
732
+ if (event.type !== observability$1.TracingEventType.SPAN_ENDED) {
732
733
  return;
733
734
  }
734
735
  const span = event.exportedSpan;