@mastra/otel-exporter 0.0.0-model-router-unknown-provider-20251017212006 → 0.0.0-remove-unused-model-providers-api-20251030210744

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,11 +1,91 @@
1
1
  # @mastra/otel-exporter
2
2
 
3
- ## 0.0.0-model-router-unknown-provider-20251017212006
3
+ ## 0.0.0-remove-unused-model-providers-api-20251030210744
4
+
5
+ ### Minor Changes
6
+
7
+ - Rename LLM span types and attributes to use Model prefix ([#9105](https://github.com/mastra-ai/mastra/pull/9105))
8
+
9
+ BREAKING CHANGE: This release renames AI tracing span types and attribute interfaces to use the "Model" prefix instead of "LLM":
10
+ - `AISpanType.LLM_GENERATION` → `AISpanType.MODEL_GENERATION`
11
+ - `AISpanType.LLM_STEP` → `AISpanType.MODEL_STEP`
12
+ - `AISpanType.LLM_CHUNK` → `AISpanType.MODEL_CHUNK`
13
+ - `LLMGenerationAttributes` → `ModelGenerationAttributes`
14
+ - `LLMStepAttributes` → `ModelStepAttributes`
15
+ - `LLMChunkAttributes` → `ModelChunkAttributes`
16
+ - `InternalSpans.LLM` → `InternalSpans.MODEL`
17
+
18
+ This change better reflects that these span types apply to all AI models, not just Large Language Models.
19
+
20
+ Migration guide:
21
+ - Update all imports: `import { ModelGenerationAttributes } from '@mastra/core/ai-tracing'`
22
+ - Update span type references: `AISpanType.MODEL_GENERATION`
23
+ - Update InternalSpans usage: `InternalSpans.MODEL`
24
+
25
+ ### Patch Changes
26
+
27
+ - Fixed import isssues in exporters. ([#9316](https://github.com/mastra-ai/mastra/pull/9316))
28
+
29
+ - Update peer dependencies to match core package version bump (1.0.0) ([#9237](https://github.com/mastra-ai/mastra/pull/9237))
30
+
31
+ - Updated dependencies [[`f743dbb`](https://github.com/mastra-ai/mastra/commit/f743dbb8b40d1627b5c10c0e6fc154f4ebb6e394), [`0e8ed46`](https://github.com/mastra-ai/mastra/commit/0e8ed467c54d6901a6a365f270ec15d6faadb36c), [`6c049d9`](https://github.com/mastra-ai/mastra/commit/6c049d94063fdcbd5b81c4912a2bf82a92c9cc0b), [`3443770`](https://github.com/mastra-ai/mastra/commit/3443770662df8eb24c9df3589b2792d78cfcb811), [`9e1911d`](https://github.com/mastra-ai/mastra/commit/9e1911db2b4db85e0e768c3f15e0d61e319869f6), [`ebac155`](https://github.com/mastra-ai/mastra/commit/ebac15564a590117db7078233f927a7e28a85106), [`5948e6a`](https://github.com/mastra-ai/mastra/commit/5948e6a5146c83666ba3f294b2be576c82a513fb), [`8940859`](https://github.com/mastra-ai/mastra/commit/89408593658199b4ad67f7b65e888f344e64a442), [`e629310`](https://github.com/mastra-ai/mastra/commit/e629310f1a73fa236d49ec7a1d1cceb6229dc7cc), [`4c6b492`](https://github.com/mastra-ai/mastra/commit/4c6b492c4dd591c6a592520c1f6855d6e936d71f), [`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), [`7051bf3`](https://github.com/mastra-ai/mastra/commit/7051bf38b3b122a069008f861f7bfc004a6d9f6e), [`a8f1494`](https://github.com/mastra-ai/mastra/commit/a8f1494f4bbdc2770bcf327d4c7d869e332183f1), [`5df9cce`](https://github.com/mastra-ai/mastra/commit/5df9cce1a753438413f64c11eeef8f845745c2a8), [`c576fc0`](https://github.com/mastra-ai/mastra/commit/c576fc0b100b2085afded91a37c97a0ea0ec09c7), [`3defc80`](https://github.com/mastra-ai/mastra/commit/3defc80cf2b88a1b7fc1cc4ddcb91e982a614609), [`9f4a683`](https://github.com/mastra-ai/mastra/commit/9f4a6833e88b52574665c028fd5508ad5c2f6004), [`57d157f`](https://github.com/mastra-ai/mastra/commit/57d157f0b163a95c3e6c9eae31bdb11d1bfc64f9), [`2a90c55`](https://github.com/mastra-ai/mastra/commit/2a90c55a86a9210697d5adaab5ee94584b079adc), [`d78b38d`](https://github.com/mastra-ai/mastra/commit/d78b38d898fce285260d3bbb4befade54331617f), [`c710c16`](https://github.com/mastra-ai/mastra/commit/c710c1652dccfdc4111c8412bca7a6bb1d48b441), [`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), [`f0f8f12`](https://github.com/mastra-ai/mastra/commit/f0f8f125c308f2d0fd36942ef652fd852df7522f), [`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), [`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), [`22f64bc`](https://github.com/mastra-ai/mastra/commit/22f64bc1d37149480b58bf2fefe35b79a1e3e7d5), [`bda6370`](https://github.com/mastra-ai/mastra/commit/bda637009360649aaf579919e7873e33553c273e), [`c7f1f7d`](https://github.com/mastra-ai/mastra/commit/c7f1f7d24f61f247f018cc2d1f33bf63212959a7), [`735d8c1`](https://github.com/mastra-ai/mastra/commit/735d8c1c0d19fbc09e6f8b66cf41bc7655993838), [`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), [`fa8409b`](https://github.com/mastra-ai/mastra/commit/fa8409bc39cfd8ba6643b9db5269b90b22e2a2f7), [`173c535`](https://github.com/mastra-ai/mastra/commit/173c535c0645b0da404fe09f003778f0b0d4e019)]:
32
+ - @mastra/core@0.0.0-remove-unused-model-providers-api-20251030210744
33
+
34
+ ## 0.2.0
35
+
36
+ ### Minor Changes
37
+
38
+ - feat(otel-exporter): Add customizable 'exporter' constructor parameter ([#8827](https://github.com/mastra-ai/mastra/pull/8827))
39
+
40
+ You can now pass in an instantiated `TraceExporter` inheriting class into `OtelExporter`.
41
+ This will circumvent the default package detection, no longer instantiating a `TraceExporter`
42
+ automatically if one is instead passed in to the `OtelExporter` constructor.
43
+
44
+ feat(arize): Initial release of @mastra/arize observability package
45
+
46
+ The `@mastra/arize` package exports an `ArizeExporter` class that can be used to easily send AI
47
+ traces from Mastra to Arize AX, Arize Phoenix, or any OpenInference compatible collector.
48
+ It sends traces uses `BatchSpanProcessor` over OTLP connections.
49
+ It leverages the `@mastra/otel-exporter` package, reusing `OtelExporter` for transmission and
50
+ span management.
51
+ See the README in `observability/arize/README.md` for more details
52
+
53
+ ### Patch Changes
54
+
55
+ - fix(observability): Add ParentSpanContext to MastraSpan's with parentage ([#9085](https://github.com/mastra-ai/mastra/pull/9085))
56
+
57
+ - Update peerdeps to 0.23.0-0 ([#9043](https://github.com/mastra-ai/mastra/pull/9043))
58
+
59
+ - Updated dependencies [[`c67ca32`](https://github.com/mastra-ai/mastra/commit/c67ca32e3c2cf69bfc146580770c720220ca44ac), [`efb5ed9`](https://github.com/mastra-ai/mastra/commit/efb5ed946ae7f410bc68c9430beb4b010afd25ec), [`dbc9e12`](https://github.com/mastra-ai/mastra/commit/dbc9e1216ba575ba59ead4afb727a01215f7de4f), [`99e41b9`](https://github.com/mastra-ai/mastra/commit/99e41b94957cdd25137d3ac12e94e8b21aa01b68), [`c28833c`](https://github.com/mastra-ai/mastra/commit/c28833c5b6d8e10eeffd7f7d39129d53b8bca240), [`8ea07b4`](https://github.com/mastra-ai/mastra/commit/8ea07b4bdc73e4218437dbb6dcb0f4b23e745a44), [`ba201b8`](https://github.com/mastra-ai/mastra/commit/ba201b8f8feac4c72350f2dbd52c13c7297ba7b0), [`f053e89`](https://github.com/mastra-ai/mastra/commit/f053e89160dbd0bd3333fc3492f68231b5c7c349), [`4fc4136`](https://github.com/mastra-ai/mastra/commit/4fc413652866a8d2240694fddb2562e9edbb70df), [`b78e04d`](https://github.com/mastra-ai/mastra/commit/b78e04d935a16ecb1e59c5c96e564903527edddd), [`d10baf5`](https://github.com/mastra-ai/mastra/commit/d10baf5a3c924f2a6654e23a3e318ed03f189b76), [`038c55a`](https://github.com/mastra-ai/mastra/commit/038c55a7090fc1b1513a966386d3072617f836ac), [`182f045`](https://github.com/mastra-ai/mastra/commit/182f0458f25bd70aa774e64fd923c8a483eddbf1), [`9a1a485`](https://github.com/mastra-ai/mastra/commit/9a1a4859b855e37239f652bf14b1ecd1029b8c4e), [`9257233`](https://github.com/mastra-ai/mastra/commit/9257233c4ffce09b2bedc2a9adbd70d7a83fa8e2), [`7620d2b`](https://github.com/mastra-ai/mastra/commit/7620d2bddeb4fae4c3c0a0b4e672969795fca11a), [`b2365f0`](https://github.com/mastra-ai/mastra/commit/b2365f038dd4c5f06400428b224af963f399ad50), [`0f1a4c9`](https://github.com/mastra-ai/mastra/commit/0f1a4c984fb4b104b2f0b63ba18c9fa77f567700), [`9029ba3`](https://github.com/mastra-ai/mastra/commit/9029ba34459c8859fed4c6b73efd8e2d0021e7ba), [`426cc56`](https://github.com/mastra-ai/mastra/commit/426cc561c85ae76a112ded2385532a91f9f9f074), [`00931fb`](https://github.com/mastra-ai/mastra/commit/00931fb1a21aa42c4fbc20c2c40dd62466b8fc8f), [`e473bfe`](https://github.com/mastra-ai/mastra/commit/e473bfe416c0b8e876973c2b6a6f13c394b7a93f), [`b78e04d`](https://github.com/mastra-ai/mastra/commit/b78e04d935a16ecb1e59c5c96e564903527edddd), [`2db6160`](https://github.com/mastra-ai/mastra/commit/2db6160e2022ff8827c15d30157e684683b934b5), [`8aeea37`](https://github.com/mastra-ai/mastra/commit/8aeea37efdde347c635a67fed56794943b7f74ec), [`02fe153`](https://github.com/mastra-ai/mastra/commit/02fe15351d6021d214da48ec982a0e9e4150bcee), [`648e2ca`](https://github.com/mastra-ai/mastra/commit/648e2ca42da54838c6ccbdaadc6fadd808fa6b86), [`74567b3`](https://github.com/mastra-ai/mastra/commit/74567b3d237ae3915cd0bca3cf55fa0a64e4e4a4), [`b65c5e0`](https://github.com/mastra-ai/mastra/commit/b65c5e0fe6f3c390a9a8bbcf69304d972c3a4afb), [`15a1733`](https://github.com/mastra-ai/mastra/commit/15a1733074cee8bd37370e1af34cd818e89fa7ac), [`fc2a774`](https://github.com/mastra-ai/mastra/commit/fc2a77468981aaddc3e77f83f0c4ad4a4af140da), [`4e08933`](https://github.com/mastra-ai/mastra/commit/4e08933625464dfde178347af5b6278fcf34188e)]:
60
+ - @mastra/core@0.22.0
61
+
62
+ ## 0.2.0-alpha.0
63
+
64
+ ### Minor Changes
65
+
66
+ - feat(otel-exporter): Add customizable 'exporter' constructor parameter ([#8827](https://github.com/mastra-ai/mastra/pull/8827))
67
+
68
+ You can now pass in an instantiated `TraceExporter` inheriting class into `OtelExporter`.
69
+ This will circumvent the default package detection, no longer instantiating a `TraceExporter`
70
+ automatically if one is instead passed in to the `OtelExporter` constructor.
71
+
72
+ feat(arize): Initial release of @mastra/arize observability package
73
+
74
+ The `@mastra/arize` package exports an `ArizeExporter` class that can be used to easily send AI
75
+ traces from Mastra to Arize AX, Arize Phoenix, or any OpenInference compatible collector.
76
+ It sends traces uses `BatchSpanProcessor` over OTLP connections.
77
+ It leverages the `@mastra/otel-exporter` package, reusing `OtelExporter` for transmission and
78
+ span management.
79
+ See the README in `observability/arize/README.md` for more details
4
80
 
5
81
  ### Patch Changes
6
82
 
7
- - Updated dependencies [[`691af3a`](https://github.com/mastra-ai/mastra/commit/691af3a28d87294fdb4c66fb3e14480362fcaffa), [`92b7b1c`](https://github.com/mastra-ai/mastra/commit/92b7b1ce08232a14f577715de8d9c005edeb0f05), [`a783845`](https://github.com/mastra-ai/mastra/commit/a783845ae42dbae134289cb56c79366f1d8bbb9d), [`e792061`](https://github.com/mastra-ai/mastra/commit/e7920613f9517958202602d2a414ca88df24b31d), [`2f4be87`](https://github.com/mastra-ai/mastra/commit/2f4be87e1e94547bc7bb6f5340b467ec24c7e884), [`79b1b4c`](https://github.com/mastra-ai/mastra/commit/79b1b4ca7e4447fd3041f25e64a581af93cd4dd1), [`f053e89`](https://github.com/mastra-ai/mastra/commit/f053e89160dbd0bd3333fc3492f68231b5c7c349), [`9257233`](https://github.com/mastra-ai/mastra/commit/9257233c4ffce09b2bedc2a9adbd70d7a83fa8e2), [`0f1a4c9`](https://github.com/mastra-ai/mastra/commit/0f1a4c984fb4b104b2f0b63ba18c9fa77f567700), [`8aeea37`](https://github.com/mastra-ai/mastra/commit/8aeea37efdde347c635a67fed56794943b7f74ec), [`02fe153`](https://github.com/mastra-ai/mastra/commit/02fe15351d6021d214da48ec982a0e9e4150bcee), [`eed0705`](https://github.com/mastra-ai/mastra/commit/eed070520847f0d6b621148c8ce3d18b962829d7), [`15a1733`](https://github.com/mastra-ai/mastra/commit/15a1733074cee8bd37370e1af34cd818e89fa7ac)]:
8
- - @mastra/core@0.0.0-model-router-unknown-provider-20251017212006
83
+ - fix(observability): Add ParentSpanContext to MastraSpan's with parentage ([#9085](https://github.com/mastra-ai/mastra/pull/9085))
84
+
85
+ - Update peerdeps to 0.23.0-0 ([#9043](https://github.com/mastra-ai/mastra/pull/9043))
86
+
87
+ - Updated dependencies [[`efb5ed9`](https://github.com/mastra-ai/mastra/commit/efb5ed946ae7f410bc68c9430beb4b010afd25ec), [`8ea07b4`](https://github.com/mastra-ai/mastra/commit/8ea07b4bdc73e4218437dbb6dcb0f4b23e745a44), [`ba201b8`](https://github.com/mastra-ai/mastra/commit/ba201b8f8feac4c72350f2dbd52c13c7297ba7b0), [`4fc4136`](https://github.com/mastra-ai/mastra/commit/4fc413652866a8d2240694fddb2562e9edbb70df), [`b78e04d`](https://github.com/mastra-ai/mastra/commit/b78e04d935a16ecb1e59c5c96e564903527edddd), [`d10baf5`](https://github.com/mastra-ai/mastra/commit/d10baf5a3c924f2a6654e23a3e318ed03f189b76), [`038c55a`](https://github.com/mastra-ai/mastra/commit/038c55a7090fc1b1513a966386d3072617f836ac), [`182f045`](https://github.com/mastra-ai/mastra/commit/182f0458f25bd70aa774e64fd923c8a483eddbf1), [`7620d2b`](https://github.com/mastra-ai/mastra/commit/7620d2bddeb4fae4c3c0a0b4e672969795fca11a), [`b2365f0`](https://github.com/mastra-ai/mastra/commit/b2365f038dd4c5f06400428b224af963f399ad50), [`9029ba3`](https://github.com/mastra-ai/mastra/commit/9029ba34459c8859fed4c6b73efd8e2d0021e7ba), [`426cc56`](https://github.com/mastra-ai/mastra/commit/426cc561c85ae76a112ded2385532a91f9f9f074), [`00931fb`](https://github.com/mastra-ai/mastra/commit/00931fb1a21aa42c4fbc20c2c40dd62466b8fc8f), [`e473bfe`](https://github.com/mastra-ai/mastra/commit/e473bfe416c0b8e876973c2b6a6f13c394b7a93f), [`b78e04d`](https://github.com/mastra-ai/mastra/commit/b78e04d935a16ecb1e59c5c96e564903527edddd), [`648e2ca`](https://github.com/mastra-ai/mastra/commit/648e2ca42da54838c6ccbdaadc6fadd808fa6b86), [`b65c5e0`](https://github.com/mastra-ai/mastra/commit/b65c5e0fe6f3c390a9a8bbcf69304d972c3a4afb)]:
88
+ - @mastra/core@0.22.0-alpha.1
9
89
 
10
90
  ## 0.1.0
11
91
 
package/README.md CHANGED
@@ -382,8 +382,8 @@ The exporter maps Mastra's AI tracing data to OTEL-compliant attributes:
382
382
  - `gen_ai.request.top_p` - Top-p sampling parameter
383
383
  - `gen_ai.request.top_k` - Top-k sampling parameter
384
384
  - `gen_ai.response.finish_reasons` - Reason for completion
385
- - `gen_ai.prompt` - Input prompt (for LLM spans)
386
- - `gen_ai.completion` - Model output (for LLM spans)
385
+ - `gen_ai.prompt` - Input prompt (for Model spans)
386
+ - `gen_ai.completion` - Model output (for Model spans)
387
387
 
388
388
  #### Tool Attributes
389
389
 
@@ -1,17 +1,16 @@
1
1
  /**
2
2
  * OpenTelemetry AI Tracing Exporter for Mastra
3
3
  */
4
- import type { AITracingExporter, AITracingEvent, TracingConfig } from '@mastra/core/ai-tracing';
4
+ import type { AITracingEvent, TracingConfig } from '@mastra/core/ai-tracing';
5
+ import { BaseExporter } from '@mastra/core/ai-tracing';
5
6
  import type { OtelExporterConfig } from './types.js';
6
- export declare class OtelExporter implements AITracingExporter {
7
+ export declare class OtelExporter extends BaseExporter {
7
8
  private config;
8
9
  private tracingConfig?;
9
10
  private spanConverter;
10
11
  private processor?;
11
12
  private exporter?;
12
13
  private isSetup;
13
- private isDisabled;
14
- private logger;
15
14
  name: string;
16
15
  constructor(config: OtelExporterConfig);
17
16
  /**
@@ -19,7 +18,9 @@ export declare class OtelExporter implements AITracingExporter {
19
18
  */
20
19
  init(config: TracingConfig): void;
21
20
  private setupExporter;
22
- exportEvent(event: AITracingEvent): Promise<void>;
21
+ private setupProcessor;
22
+ private setup;
23
+ protected _exportEvent(event: AITracingEvent): Promise<void>;
23
24
  private exportSpan;
24
25
  shutdown(): Promise<void>;
25
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ai-tracing.d.ts","sourceRoot":"","sources":["../src/ai-tracing.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAqB,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAiBnH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,qBAAa,YAAa,YAAW,iBAAiB;IACpD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAC,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAC,CAAe;IAChC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,MAAM,CAAgB;IAE9B,IAAI,SAAmB;gBAEX,MAAM,EAAE,kBAAkB;IAWtC;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;YAInB,aAAa;IAwHrB,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;YAgBzC,UAAU;IA8BlB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAMhC"}
1
+ {"version":3,"file":"ai-tracing.d.ts","sourceRoot":"","sources":["../src/ai-tracing.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAqB,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAsB,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAgB3E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAC,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAC,CAAe;IAChC,OAAO,CAAC,OAAO,CAAkB;IAEjC,IAAI,SAAmB;gBAEX,MAAM,EAAE,kBAAkB;IAYtC;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;YAInB,aAAa;YA6Fb,cAAc;YAqCd,KAAK;cAOH,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;YAWpD,UAAU;IA8BlB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAMhC"}
package/dist/index.cjs CHANGED
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var aiTracing = require('@mastra/core/ai-tracing');
4
- var logger = require('@mastra/core/logger');
5
4
  var api = require('@opentelemetry/api');
6
5
  var resources = require('@opentelemetry/resources');
7
6
  var sdkTraceBase = require('@opentelemetry/sdk-trace-base');
@@ -209,6 +208,7 @@ var MastraReadableSpan = class {
209
208
  name;
210
209
  kind;
211
210
  spanContext;
211
+ parentSpanContext;
212
212
  parentSpanId;
213
213
  startTime;
214
214
  endTime;
@@ -276,6 +276,14 @@ var MastraReadableSpan = class {
276
276
  traceFlags: api.TraceFlags.SAMPLED,
277
277
  isRemote: false
278
278
  });
279
+ if (parentSpanId) {
280
+ this.parentSpanContext = {
281
+ traceId: aiSpan.traceId,
282
+ spanId: parentSpanId,
283
+ traceFlags: api.TraceFlags.SAMPLED,
284
+ isRemote: false
285
+ };
286
+ }
279
287
  this.resource = resource || {};
280
288
  this.instrumentationLibrary = instrumentationLibrary || {
281
289
  name: "@mastra/otel",
@@ -296,9 +304,9 @@ var MastraReadableSpan = class {
296
304
 
297
305
  // src/span-converter.ts
298
306
  var SPAN_KIND_MAPPING = {
299
- // LLM operations are CLIENT spans (calling external AI services)
300
- [aiTracing.AISpanType.LLM_GENERATION]: api.SpanKind.CLIENT,
301
- [aiTracing.AISpanType.LLM_CHUNK]: api.SpanKind.CLIENT,
307
+ // 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,
302
310
  // MCP tool calls are CLIENT (external service calls)
303
311
  [aiTracing.AISpanType.MCP_TOOL_CALL]: api.SpanKind.CLIENT,
304
312
  // Root spans for agent/workflow are SERVER (entry points)
@@ -350,7 +358,7 @@ var SpanConverter = class {
350
358
  */
351
359
  buildSpanName(aiSpan) {
352
360
  switch (aiSpan.type) {
353
- case aiTracing.AISpanType.LLM_GENERATION: {
361
+ case aiTracing.AISpanType.MODEL_GENERATION: {
354
362
  const attrs = aiSpan.attributes;
355
363
  const operation = attrs?.resultType === "tool_selection" ? "tool_selection" : "chat";
356
364
  const model = attrs?.model || "unknown";
@@ -395,7 +403,7 @@ var SpanConverter = class {
395
403
  if (aiSpan.input !== void 0) {
396
404
  const inputStr = typeof aiSpan.input === "string" ? aiSpan.input : JSON.stringify(aiSpan.input);
397
405
  attributes["input"] = inputStr;
398
- if (aiSpan.type === aiTracing.AISpanType.LLM_GENERATION) {
406
+ if (aiSpan.type === aiTracing.AISpanType.MODEL_GENERATION) {
399
407
  attributes["gen_ai.prompt"] = inputStr;
400
408
  } else if (aiSpan.type === aiTracing.AISpanType.TOOL_CALL || aiSpan.type === aiTracing.AISpanType.MCP_TOOL_CALL) {
401
409
  attributes["gen_ai.tool.input"] = inputStr;
@@ -404,64 +412,64 @@ var SpanConverter = class {
404
412
  if (aiSpan.output !== void 0) {
405
413
  const outputStr = typeof aiSpan.output === "string" ? aiSpan.output : JSON.stringify(aiSpan.output);
406
414
  attributes["output"] = outputStr;
407
- if (aiSpan.type === aiTracing.AISpanType.LLM_GENERATION) {
415
+ if (aiSpan.type === aiTracing.AISpanType.MODEL_GENERATION) {
408
416
  attributes["gen_ai.completion"] = outputStr;
409
417
  } else if (aiSpan.type === aiTracing.AISpanType.TOOL_CALL || aiSpan.type === aiTracing.AISpanType.MCP_TOOL_CALL) {
410
418
  attributes["gen_ai.tool.output"] = outputStr;
411
419
  }
412
420
  }
413
- if (aiSpan.type === aiTracing.AISpanType.LLM_GENERATION && aiSpan.attributes) {
414
- const llmAttrs = aiSpan.attributes;
415
- if (llmAttrs.model) {
416
- attributes["gen_ai.request.model"] = llmAttrs.model;
421
+ if (aiSpan.type === aiTracing.AISpanType.MODEL_GENERATION && aiSpan.attributes) {
422
+ const modelAttrs = aiSpan.attributes;
423
+ if (modelAttrs.model) {
424
+ attributes["gen_ai.request.model"] = modelAttrs.model;
417
425
  }
418
- if (llmAttrs.provider) {
419
- attributes["gen_ai.system"] = llmAttrs.provider;
426
+ if (modelAttrs.provider) {
427
+ attributes["gen_ai.system"] = modelAttrs.provider;
420
428
  }
421
- if (llmAttrs.usage) {
422
- const inputTokens = llmAttrs.usage.inputTokens ?? llmAttrs.usage.promptTokens;
423
- const outputTokens = llmAttrs.usage.outputTokens ?? llmAttrs.usage.completionTokens;
429
+ if (modelAttrs.usage) {
430
+ const inputTokens = modelAttrs.usage.inputTokens ?? modelAttrs.usage.promptTokens;
431
+ const outputTokens = modelAttrs.usage.outputTokens ?? modelAttrs.usage.completionTokens;
424
432
  if (inputTokens !== void 0) {
425
433
  attributes["gen_ai.usage.input_tokens"] = inputTokens;
426
434
  }
427
435
  if (outputTokens !== void 0) {
428
436
  attributes["gen_ai.usage.output_tokens"] = outputTokens;
429
437
  }
430
- if (llmAttrs.usage.totalTokens !== void 0) {
431
- attributes["gen_ai.usage.total_tokens"] = llmAttrs.usage.totalTokens;
438
+ if (modelAttrs.usage.totalTokens !== void 0) {
439
+ attributes["gen_ai.usage.total_tokens"] = modelAttrs.usage.totalTokens;
432
440
  }
433
- if (llmAttrs.usage.reasoningTokens !== void 0) {
434
- attributes["gen_ai.usage.reasoning_tokens"] = llmAttrs.usage.reasoningTokens;
441
+ if (modelAttrs.usage.reasoningTokens !== void 0) {
442
+ attributes["gen_ai.usage.reasoning_tokens"] = modelAttrs.usage.reasoningTokens;
435
443
  }
436
- if (llmAttrs.usage.cachedInputTokens !== void 0) {
437
- attributes["gen_ai.usage.cached_input_tokens"] = llmAttrs.usage.cachedInputTokens;
444
+ if (modelAttrs.usage.cachedInputTokens !== void 0) {
445
+ attributes["gen_ai.usage.cached_input_tokens"] = modelAttrs.usage.cachedInputTokens;
438
446
  }
439
447
  }
440
- if (llmAttrs.parameters) {
441
- if (llmAttrs.parameters.temperature !== void 0) {
442
- attributes["gen_ai.request.temperature"] = llmAttrs.parameters.temperature;
448
+ if (modelAttrs.parameters) {
449
+ if (modelAttrs.parameters.temperature !== void 0) {
450
+ attributes["gen_ai.request.temperature"] = modelAttrs.parameters.temperature;
443
451
  }
444
- if (llmAttrs.parameters.maxOutputTokens !== void 0) {
445
- attributes["gen_ai.request.max_tokens"] = llmAttrs.parameters.maxOutputTokens;
452
+ if (modelAttrs.parameters.maxOutputTokens !== void 0) {
453
+ attributes["gen_ai.request.max_tokens"] = modelAttrs.parameters.maxOutputTokens;
446
454
  }
447
- if (llmAttrs.parameters.topP !== void 0) {
448
- attributes["gen_ai.request.top_p"] = llmAttrs.parameters.topP;
455
+ if (modelAttrs.parameters.topP !== void 0) {
456
+ attributes["gen_ai.request.top_p"] = modelAttrs.parameters.topP;
449
457
  }
450
- if (llmAttrs.parameters.topK !== void 0) {
451
- attributes["gen_ai.request.top_k"] = llmAttrs.parameters.topK;
458
+ if (modelAttrs.parameters.topK !== void 0) {
459
+ attributes["gen_ai.request.top_k"] = modelAttrs.parameters.topK;
452
460
  }
453
- if (llmAttrs.parameters.presencePenalty !== void 0) {
454
- attributes["gen_ai.request.presence_penalty"] = llmAttrs.parameters.presencePenalty;
461
+ if (modelAttrs.parameters.presencePenalty !== void 0) {
462
+ attributes["gen_ai.request.presence_penalty"] = modelAttrs.parameters.presencePenalty;
455
463
  }
456
- if (llmAttrs.parameters.frequencyPenalty !== void 0) {
457
- attributes["gen_ai.request.frequency_penalty"] = llmAttrs.parameters.frequencyPenalty;
464
+ if (modelAttrs.parameters.frequencyPenalty !== void 0) {
465
+ attributes["gen_ai.request.frequency_penalty"] = modelAttrs.parameters.frequencyPenalty;
458
466
  }
459
- if (llmAttrs.parameters.stopSequences) {
460
- attributes["gen_ai.request.stop_sequences"] = JSON.stringify(llmAttrs.parameters.stopSequences);
467
+ if (modelAttrs.parameters.stopSequences) {
468
+ attributes["gen_ai.request.stop_sequences"] = JSON.stringify(modelAttrs.parameters.stopSequences);
461
469
  }
462
470
  }
463
- if (llmAttrs.finishReason) {
464
- attributes["gen_ai.response.finish_reasons"] = llmAttrs.finishReason;
471
+ if (modelAttrs.finishReason) {
472
+ attributes["gen_ai.response.finish_reasons"] = modelAttrs.finishReason;
465
473
  }
466
474
  }
467
475
  if ((aiSpan.type === aiTracing.AISpanType.TOOL_CALL || aiSpan.type === aiTracing.AISpanType.MCP_TOOL_CALL) && aiSpan.attributes) {
@@ -490,6 +498,7 @@ var SpanConverter = class {
490
498
  const agentAttrs = aiSpan.attributes;
491
499
  if (agentAttrs.agentId) {
492
500
  attributes["agent.id"] = agentAttrs.agentId;
501
+ attributes["gen_ai.agent.id"] = agentAttrs.agentId;
493
502
  }
494
503
  if (agentAttrs.maxSteps) {
495
504
  attributes["agent.max_steps"] = agentAttrs.maxSteps;
@@ -547,7 +556,7 @@ var SpanConverter = class {
547
556
  */
548
557
  getOperationName(aiSpan) {
549
558
  switch (aiSpan.type) {
550
- case aiTracing.AISpanType.LLM_GENERATION: {
559
+ case aiTracing.AISpanType.MODEL_GENERATION: {
551
560
  const attrs = aiSpan.attributes;
552
561
  return attrs?.resultType === "tool_selection" ? "tool_selection" : "chat";
553
562
  }
@@ -585,20 +594,18 @@ var SpanConverter = class {
585
594
  };
586
595
 
587
596
  // src/ai-tracing.ts
588
- var OtelExporter = class {
597
+ var OtelExporter = class extends aiTracing.BaseExporter {
589
598
  config;
590
599
  tracingConfig;
591
600
  spanConverter;
592
601
  processor;
593
602
  exporter;
594
603
  isSetup = false;
595
- isDisabled = false;
596
- logger;
597
604
  name = "opentelemetry";
598
605
  constructor(config) {
606
+ super(config);
599
607
  this.config = config;
600
608
  this.spanConverter = new SpanConverter();
601
- this.logger = new logger.ConsoleLogger({ level: config.logLevel ?? "warn" });
602
609
  if (config.logLevel === "debug") {
603
610
  api.diag.setLogger(new api.DiagConsoleLogger(), api.DiagLogLevel.DEBUG);
604
611
  }
@@ -610,7 +617,7 @@ var OtelExporter = class {
610
617
  this.tracingConfig = config;
611
618
  }
612
619
  async setupExporter() {
613
- if (this.isSetup) return;
620
+ if (this.isSetup || this.exporter) return;
614
621
  if (!this.config.provider) {
615
622
  this.logger.error(
616
623
  '[OtelExporter] Provider configuration is required. Use the "custom" provider for generic endpoints.'
@@ -625,6 +632,10 @@ var OtelExporter = class {
625
632
  this.isSetup = true;
626
633
  return;
627
634
  }
635
+ if (this.config.exporter) {
636
+ this.exporter = this.config.exporter;
637
+ return;
638
+ }
628
639
  const endpoint = resolved.endpoint;
629
640
  const headers = resolved.headers;
630
641
  const protocol = resolved.protocol;
@@ -678,6 +689,9 @@ var OtelExporter = class {
678
689
  this.isSetup = true;
679
690
  return;
680
691
  }
692
+ }
693
+ async setupProcessor() {
694
+ if (this.processor || this.isSetup) return;
681
695
  let resource = resources.resourceFromAttributes({
682
696
  [semanticConventions.ATTR_SERVICE_NAME]: this.tracingConfig?.serviceName || "mastra-service",
683
697
  [semanticConventions.ATTR_SERVICE_VERSION]: "1.0.0",
@@ -706,12 +720,14 @@ var OtelExporter = class {
706
720
  this.logger.debug(
707
721
  `[OtelExporter] Using BatchSpanProcessor (batch size: ${this.config.batchSize || 512}, delay: 5s)`
708
722
  );
723
+ }
724
+ async setup() {
725
+ if (this.isSetup) return;
726
+ await this.setupExporter();
727
+ await this.setupProcessor();
709
728
  this.isSetup = true;
710
729
  }
711
- async exportEvent(event) {
712
- if (this.isDisabled) {
713
- return;
714
- }
730
+ async _exportEvent(event) {
715
731
  if (event.type !== aiTracing.AITracingEventType.SPAN_ENDED) {
716
732
  return;
717
733
  }
@@ -720,7 +736,7 @@ var OtelExporter = class {
720
736
  }
721
737
  async exportSpan(span) {
722
738
  if (!this.isSetup) {
723
- await this.setupExporter();
739
+ await this.setup();
724
740
  }
725
741
  if (this.isDisabled || !this.processor) {
726
742
  return;