@mastra/observability 0.0.0-trace-timeline-update-20251121114225 → 0.0.0-type-testing-20260120105120

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CHANGELOG.md +840 -11
  2. package/README.md +34 -79
  3. package/dist/config.d.ts +216 -6
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/default.d.ts.map +1 -1
  6. package/dist/exporters/base.d.ts +55 -5
  7. package/dist/exporters/base.d.ts.map +1 -1
  8. package/dist/exporters/cloud.d.ts +8 -2
  9. package/dist/exporters/cloud.d.ts.map +1 -1
  10. package/dist/exporters/default.d.ts +12 -5
  11. package/dist/exporters/default.d.ts.map +1 -1
  12. package/dist/exporters/index.d.ts +4 -2
  13. package/dist/exporters/index.d.ts.map +1 -1
  14. package/dist/exporters/span-formatters.d.ts +35 -0
  15. package/dist/exporters/span-formatters.d.ts.map +1 -0
  16. package/dist/exporters/test.d.ts +13 -0
  17. package/dist/exporters/test.d.ts.map +1 -0
  18. package/dist/exporters/tracking.d.ts +470 -0
  19. package/dist/exporters/tracking.d.ts.map +1 -0
  20. package/dist/index.cjs +5947 -271
  21. package/dist/index.cjs.map +1 -1
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +5937 -272
  25. package/dist/index.js.map +1 -1
  26. package/dist/instances/base.d.ts +41 -5
  27. package/dist/instances/base.d.ts.map +1 -1
  28. package/dist/model-tracing.d.ts +16 -9
  29. package/dist/model-tracing.d.ts.map +1 -1
  30. package/dist/span_processors/sensitive-data-filter.d.ts +7 -0
  31. package/dist/span_processors/sensitive-data-filter.d.ts.map +1 -1
  32. package/dist/spans/base.d.ts +49 -18
  33. package/dist/spans/base.d.ts.map +1 -1
  34. package/dist/spans/default.d.ts.map +1 -1
  35. package/dist/spans/index.d.ts +1 -0
  36. package/dist/spans/index.d.ts.map +1 -1
  37. package/dist/spans/serialization.d.ts +46 -0
  38. package/dist/spans/serialization.d.ts.map +1 -0
  39. package/dist/tracing-options.d.ts +27 -0
  40. package/dist/tracing-options.d.ts.map +1 -0
  41. package/dist/usage.d.ts +21 -0
  42. package/dist/usage.d.ts.map +1 -0
  43. package/package.json +10 -11
@@ -4,25 +4,48 @@
4
4
  import { MastraBase } from '@mastra/core/base';
5
5
  import type { RequestContext } from '@mastra/core/di';
6
6
  import type { IMastraLogger } from '@mastra/core/logger';
7
- import type { Span, SpanType, ObservabilityExporter, SpanOutputProcessor, TracingEvent, AnySpan, StartSpanOptions, CreateSpanOptions, ObservabilityInstance, CustomSamplerOptions, AnyExportedSpan, TraceState, TracingOptions } from '@mastra/core/observability';
7
+ import type { Span, SpanType, ObservabilityExporter, ObservabilityBridge, SpanOutputProcessor, TracingEvent, AnySpan, StartSpanOptions, CreateSpanOptions, ObservabilityInstance, CustomSamplerOptions, ExportedSpan, AnyExportedSpan, TraceState, TracingOptions } from '@mastra/core/observability';
8
8
  import type { ObservabilityInstanceConfig } from '../config.js';
9
9
  /**
10
10
  * Abstract base class for all Observability implementations in Mastra.
11
11
  */
12
12
  export declare abstract class BaseObservabilityInstance extends MastraBase implements ObservabilityInstance {
13
- protected config: Required<ObservabilityInstanceConfig>;
13
+ protected config: ObservabilityInstanceConfig;
14
14
  constructor(config: ObservabilityInstanceConfig);
15
15
  /**
16
16
  * Override setLogger to add Observability specific initialization log
17
- * and propagate logger to exporters
17
+ * and propagate logger to exporters and bridge
18
18
  */
19
19
  __setLogger(logger: IMastraLogger): void;
20
20
  protected get exporters(): ObservabilityExporter[];
21
21
  protected get spanOutputProcessors(): SpanOutputProcessor[];
22
22
  /**
23
23
  * Start a new span of a specific SpanType
24
+ *
25
+ * Sampling Decision:
26
+ * - For root spans (no parent): Perform sampling check using the configured strategy
27
+ * - For child spans: Inherit the sampling decision from the parent
28
+ * - If parent is a NoOpSpan (not sampled), child is also a NoOpSpan
29
+ * - If parent is a valid span (sampled), child is also sampled
30
+ *
31
+ * This ensures trace-level sampling: either all spans in a trace are sampled or none are.
32
+ * See: https://github.com/mastra-ai/mastra/issues/11504
24
33
  */
25
34
  startSpan<TType extends SpanType>(options: StartSpanOptions<TType>): Span<TType>;
35
+ /**
36
+ * Rebuild a span from exported data for lifecycle operations.
37
+ * Used by durable execution engines (e.g., Inngest) to end/update spans
38
+ * that were created in a previous durable operation.
39
+ *
40
+ * The rebuilt span:
41
+ * - Does NOT emit SPAN_STARTED (assumes original span already did)
42
+ * - Can have end(), update(), error() called on it
43
+ * - Will emit SPAN_ENDED or SPAN_UPDATED when those methods are called
44
+ *
45
+ * @param cached - The exported span data to rebuild from
46
+ * @returns A span that can have lifecycle methods called on it
47
+ */
48
+ rebuildSpan<TType extends SpanType>(cached: ExportedSpan<TType>): Span<TType>;
26
49
  /**
27
50
  * Create a new span (called after sampling)
28
51
  *
@@ -39,7 +62,7 @@ export declare abstract class BaseObservabilityInstance extends MastraBase imple
39
62
  /**
40
63
  * Get current configuration
41
64
  */
42
- getConfig(): Readonly<Required<ObservabilityInstanceConfig>>;
65
+ getConfig(): Readonly<ObservabilityInstanceConfig>;
43
66
  /**
44
67
  * Get all exporters
45
68
  */
@@ -48,6 +71,10 @@ export declare abstract class BaseObservabilityInstance extends MastraBase imple
48
71
  * Get all span output processors
49
72
  */
50
73
  getSpanOutputProcessors(): readonly SpanOutputProcessor[];
74
+ /**
75
+ * Get the bridge instance if configured
76
+ */
77
+ getBridge(): ObservabilityBridge | undefined;
51
78
  /**
52
79
  * Get the logger instance (for exporters and other components)
53
80
  */
@@ -91,13 +118,22 @@ export declare abstract class BaseObservabilityInstance extends MastraBase imple
91
118
  */
92
119
  protected emitSpanUpdated(span: AnySpan): void;
93
120
  /**
94
- * Export tracing event through all exporters (realtime mode)
121
+ * Export tracing event through all exporters and bridge (realtime mode)
95
122
  */
96
123
  protected exportTracingEvent(event: TracingEvent): Promise<void>;
97
124
  /**
98
125
  * Initialize Observability (called by Mastra during component registration)
99
126
  */
100
127
  init(): void;
128
+ /**
129
+ * Force flush any buffered/queued spans from all exporters and the bridge
130
+ * without shutting down the observability instance.
131
+ *
132
+ * This is useful in serverless environments (like Vercel's fluid compute) where
133
+ * you need to ensure all spans are exported before the runtime instance is
134
+ * terminated, while keeping the observability system active for future requests.
135
+ */
136
+ flush(): Promise<void>;
101
137
  /**
102
138
  * Shutdown Observability and clean up resources
103
139
  */
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/instances/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EACV,IAAI,EACJ,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,OAAO,EAGP,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,UAAU,EACV,cAAc,EACf,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAQ7D;;GAEG;AACH,8BAAsB,yBAA0B,SAAQ,UAAW,YAAW,qBAAqB;IACjG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,2BAA2B,CAAC,CAAC;gBAE5C,MAAM,EAAE,2BAA2B;IAe/C;;;OAGG;IACH,WAAW,CAAC,MAAM,EAAE,aAAa;IAoBjC,SAAS,KAAK,SAAS,IAAI,qBAAqB,EAAE,CAEjD;IAED,SAAS,KAAK,oBAAoB,IAAI,mBAAmB,EAAE,CAE1D;IAMD;;OAEG;IACH,SAAS,CAAC,KAAK,SAAS,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;IA4ChF;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,SAAS,QAAQ,EAAE,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;IAMrG;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IAQ5D;;OAEG;IACH,YAAY,IAAI,SAAS,qBAAqB,EAAE;IAIhD;;OAEG;IACH,uBAAuB,IAAI,SAAS,mBAAmB,EAAE;IAIzD;;OAEG;IACH,SAAS;IAQT;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAkCzB;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO;IAwB/D;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,UAAU,GAAG,SAAS;IAgBpF;;OAEG;IACH,SAAS,CAAC,iCAAiC,CACzC,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACjD,UAAU,EAAE,UAAU,GAAG,SAAS,GACjC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS;IAkBlC;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,cAAc,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IA2B1F;;OAEG;IACH,OAAO,CAAC,WAAW;IAqBnB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS;IAQ5D;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAS9C;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAS5C;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAS9C;;OAEG;cACa,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBtE;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAahC"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/instances/base.ts"],"names":[],"mappings":"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"}
@@ -8,13 +8,8 @@
8
8
  * Hierarchy: MODEL_GENERATION -> MODEL_STEP -> MODEL_CHUNK
9
9
  */
10
10
  import { SpanType } from '@mastra/core/observability';
11
- import type { Span, EndSpanOptions, ErrorSpanOptions, TracingContext, UpdateSpanOptions } from '@mastra/core/observability';
12
- /**
13
- * Manages MODEL_STEP and MODEL_CHUNK span tracking for streaming Model responses.
14
- *
15
- * Should be instantiated once per MODEL_GENERATION span and shared across
16
- * all streaming steps (including after tool calls).
17
- */
11
+ import type { Span, EndGenerationOptions, ErrorSpanOptions, TracingContext, UpdateSpanOptions } from '@mastra/core/observability';
12
+ import type { StepStartPayload } from '@mastra/core/stream';
18
13
  export declare class ModelSpanTracker {
19
14
  #private;
20
15
  constructor(modelSpan?: Span<SpanType.MODEL_GENERATION>);
@@ -28,13 +23,25 @@ export declare class ModelSpanTracker {
28
23
  */
29
24
  reportGenerationError(options: ErrorSpanOptions<SpanType.MODEL_GENERATION>): void;
30
25
  /**
31
- * End the generation span
26
+ * End the generation span with optional raw usage data.
27
+ * If usage is provided, it will be converted to UsageStats with cache token details.
32
28
  */
33
- endGeneration(options?: EndSpanOptions<SpanType.MODEL_GENERATION>): void;
29
+ endGeneration(options?: EndGenerationOptions): void;
34
30
  /**
35
31
  * Update the generation span
36
32
  */
37
33
  updateGeneration(options: UpdateSpanOptions<SpanType.MODEL_GENERATION>): void;
34
+ /**
35
+ * Start a new Model execution step.
36
+ * This should be called at the beginning of LLM execution to capture accurate startTime.
37
+ * The step-start chunk payload can be passed later via updateStep() if needed.
38
+ */
39
+ startStep(payload?: StepStartPayload): void;
40
+ /**
41
+ * Update the current step span with additional payload data.
42
+ * Called when step-start chunk arrives with request/warnings info.
43
+ */
44
+ updateStep(payload?: StepStartPayload): void;
38
45
  /**
39
46
  * Wraps a stream with model tracing transform to track MODEL_STEP and MODEL_CHUNK spans.
40
47
  *
@@ -1 +1 @@
1
- {"version":3,"file":"model-tracing.d.ts","sourceRoot":"","sources":["../src/model-tracing.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,KAAK,EACV,IAAI,EACJ,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AAGpC;;;;;GAKG;AACH,qBAAa,gBAAgB;;gBAQf,SAAS,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAIvD;;;OAGG;IACH,iBAAiB,IAAI,cAAc;IAMnC;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAIjF;;OAEG;IACH,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAIxE;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI;IA4O7E;;;;;OAKG;IACH,UAAU,CAAC,CAAC,SAAS;QAAE,WAAW,EAAE,QAAQ,CAAA;KAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC;CAyE9D"}
1
+ {"version":3,"file":"model-tracing.d.ts","sourceRoot":"","sources":["../src/model-tracing.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,KAAK,EACV,IAAI,EACJ,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAa,gBAAgB,EAAqB,MAAM,qBAAqB,CAAC;AAsB1F,qBAAa,gBAAgB;;gBAaf,SAAS,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAcvD;;;OAGG;IACH,iBAAiB,IAAI,cAAc;IAMnC;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAIjF;;;OAGG;IACH,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,IAAI;IAWnD;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAI7E;;;;OAIG;IACH,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAoB3C;;;OAGG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAwV5C;;;;;OAKG;IACH,UAAU,CAAC,CAAC,SAAS;QAAE,WAAW,EAAE,QAAQ,CAAA;KAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC;CA6G9D"}
@@ -34,6 +34,7 @@ export interface SensitiveDataFilterOptions {
34
34
  * - Sensitive keys are matched case-insensitively, normalized to remove separators.
35
35
  * - Sensitive values are redacted using either full or partial redaction.
36
36
  * - Partial redaction always keeps 3 chars at the start and end.
37
+ * - JSON strings containing sensitive fields are parsed and redacted.
37
38
  * - If filtering a field fails, the field is replaced with:
38
39
  * `{ error: { processor: "sensitive-data-filter" } }`
39
40
  */
@@ -54,6 +55,7 @@ export declare class SensitiveDataFilter implements SpanOutputProcessor {
54
55
  /**
55
56
  * Recursively filter objects/arrays for sensitive keys.
56
57
  * Handles circular references by replacing with a marker.
58
+ * Also attempts to parse and redact JSON strings.
57
59
  */
58
60
  private deepFilter;
59
61
  private tryFilter;
@@ -72,6 +74,11 @@ export declare class SensitiveDataFilter implements SpanOutputProcessor {
72
74
  * - "promptTokens", "prompt_tokens" normalize to "prompttokens" → DOES NOT MATCH "token"
73
75
  */
74
76
  private isSensitive;
77
+ /**
78
+ * Attempt to parse a string as JSON and redact sensitive fields within it.
79
+ * If parsing fails or no sensitive data is found, returns the original string.
80
+ */
81
+ private redactJsonString;
75
82
  /**
76
83
  * Redact a sensitive value.
77
84
  * - Full style: replaces with a fixed token.
@@ -1 +1 @@
1
- {"version":3,"file":"sensitive-data-filter.d.ts","sourceRoot":"","sources":["../../src/span_processors/sensitive-data-filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE/E,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;;;;;;;;;GAUG;AACH,qBAAa,mBAAoB,YAAW,mBAAmB;IAC7D,IAAI,SAA2B;IAC/B,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAiB;gBAE3B,OAAO,GAAE,0BAA+B;IAyBpD;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAS/B;;;OAGG;IACH,OAAO,CAAC,UAAU;IAgClB,OAAO,CAAC,SAAS;IAQjB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IAOnB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAab,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGhC"}
1
+ {"version":3,"file":"sensitive-data-filter.d.ts","sourceRoot":"","sources":["../../src/span_processors/sensitive-data-filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE/E,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAoB,YAAW,mBAAmB;IAC7D,IAAI,SAA2B;IAC/B,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAiB;gBAE3B,OAAO,GAAE,0BAA+B;IAyBpD;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAS/B;;;;OAIG;IACH,OAAO,CAAC,UAAU;IA8ClB,OAAO,CAAC,SAAS;IAQjB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IAOnB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAmBxB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAab,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGhC"}
@@ -1,5 +1,34 @@
1
- import type { Span, SpanTypeMap, AnySpan, ChildSpanOptions, ChildEventOptions, EndSpanOptions, ErrorSpanOptions, UpdateSpanOptions, CreateSpanOptions, ObservabilityInstance, ExportedSpan, TraceState, IModelSpanTracker, AIModelGenerationSpan } from '@mastra/core/observability';
1
+ import type { Span, SpanTypeMap, AnySpan, ChildSpanOptions, ChildEventOptions, EndSpanOptions, ErrorSpanOptions, UpdateSpanOptions, CreateSpanOptions, ObservabilityInstance, ExportedSpan, TraceState, IModelSpanTracker, AIModelGenerationSpan, EntityType } from '@mastra/core/observability';
2
2
  import { SpanType } from '@mastra/core/observability';
3
+ import type { DeepCleanOptions } from './serialization.js';
4
+ /**
5
+ * Get the external parent span ID from CreateSpanOptions.
6
+ *
7
+ * If the parent is internal, walks up the parent chain to find
8
+ * the closest external ancestor. If the parent is already external,
9
+ * returns its ID directly.
10
+ *
11
+ * This is useful when exporting spans to external observability systems
12
+ * that shouldn't include internal framework spans.
13
+ *
14
+ * @param options - Span creation options
15
+ * @returns The external parent span ID, or undefined if no external parent exists
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * // Parent is external - returns parent.id
20
+ * const externalParent = { id: 'span-123', isInternal: false };
21
+ * const options = { parent: externalParent, ... };
22
+ * getExternalParentId(options); // 'span-123'
23
+ *
24
+ * // Parent is internal - walks up to find external ancestor
25
+ * const externalGrandparent = { id: 'span-456', isInternal: false };
26
+ * const internalParent = { id: 'span-123', isInternal: true, parent: externalGrandparent };
27
+ * const options = { parent: internalParent, ... };
28
+ * getExternalParentId(options); // 'span-456'
29
+ * ```
30
+ */
31
+ export declare function getExternalParentId(options: CreateSpanOptions<any>): string | undefined;
3
32
  export declare abstract class BaseSpan<TType extends SpanType = any> implements Span<TType> {
4
33
  abstract id: string;
5
34
  abstract traceId: string;
@@ -22,9 +51,18 @@ export declare abstract class BaseSpan<TType extends SpanType = any> implements
22
51
  details?: Record<string, any>;
23
52
  };
24
53
  metadata?: Record<string, any>;
54
+ tags?: string[];
25
55
  traceState?: TraceState;
56
+ /** Entity type that created the span (e.g., agent, workflow) */
57
+ entityType?: EntityType;
58
+ /** Entity ID that created the span */
59
+ entityId?: string;
60
+ /** Entity name that created the span */
61
+ entityName?: string;
26
62
  /** Parent span ID (for root spans that are children of external spans) */
27
63
  protected parentSpanId?: string;
64
+ /** Deep clean options for serialization */
65
+ protected deepCleanOptions: DeepCleanOptions;
28
66
  constructor(options: CreateSpanOptions<TType>, observabilityInstance: ObservabilityInstance);
29
67
  /** End the span */
30
68
  abstract end(options?: EndSpanOptions<TType>): void;
@@ -50,22 +88,15 @@ export declare abstract class BaseSpan<TType extends SpanType = any> implements
50
88
  /** Returns a lightweight span ready for export */
51
89
  exportSpan(includeInternalSpans?: boolean): ExportedSpan<TType>;
52
90
  get externalTraceId(): string | undefined;
91
+ /**
92
+ * Execute an async function within this span's tracing context.
93
+ * Delegates to the bridge if available.
94
+ */
95
+ executeInContext<T>(fn: () => Promise<T>): Promise<T>;
96
+ /**
97
+ * Execute a synchronous function within this span's tracing context.
98
+ * Delegates to the bridge if available.
99
+ */
100
+ executeInContextSync<T>(fn: () => T): T;
53
101
  }
54
- export interface DeepCleanOptions {
55
- keysToStrip?: Set<string>;
56
- maxDepth?: number;
57
- }
58
- /**
59
- * Recursively cleans a value by removing circular references and stripping problematic or sensitive keys.
60
- * Circular references are replaced with "[Circular]". Unserializable values are replaced with error messages.
61
- * Keys like "logger" and "tracingContext" are stripped by default.
62
- * A maximum recursion depth is enforced to avoid stack overflow or excessive memory usage.
63
- *
64
- * @param value - The value to clean (object, array, primitive, etc.)
65
- * @param options - Optional configuration:
66
- * - keysToStrip: Set of keys to remove from objects (default: logger, tracingContext)
67
- * - maxDepth: Maximum recursion depth before values are replaced with "[MaxDepth]" (default: 10)
68
- * @returns A cleaned version of the input with circular references, specified keys, and overly deep values handled
69
- */
70
- export declare function deepClean(value: any, options?: DeepCleanOptions, _seen?: WeakSet<any>, _depth?: number): any;
71
102
  //# sourceMappingURL=base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/spans/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/spans/base.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/spans/default.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAa,MAAM,QAAQ,CAAC;AAE7C,qBAAa,WAAW,CAAC,KAAK,SAAS,QAAQ,CAAE,SAAQ,QAAQ,CAAC,KAAK,CAAC;IAC/D,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;gBAEX,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,qBAAqB,EAAE,qBAAqB;IAmC3F,GAAG,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI;IAiB1C,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,IAAI;IAoC7C,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI;IAoB/C,IAAI,OAAO,IAAI,OAAO,CAErB;IAEK,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;CAUhC"}
1
+ {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/spans/default.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGlC,qBAAa,WAAW,CAAC,KAAK,SAAS,QAAQ,CAAE,SAAQ,QAAQ,CAAC,KAAK,CAAC;IAC/D,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;gBAEX,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,qBAAqB,EAAE,qBAAqB;IA+C3F,GAAG,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI;IAiB1C,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,IAAI;IAoC7C,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI;IAoB/C,IAAI,OAAO,IAAI,OAAO,CAErB;IAEK,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;CAUhC"}
@@ -4,4 +4,5 @@
4
4
  export * from './base.js';
5
5
  export * from './default.js';
6
6
  export * from './no-op.js';
7
+ export * from './serialization.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spans/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spans/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Bounded serialization utilities for AI tracing.
3
+ *
4
+ * These utilities prevent memory issues by enforcing strict limits on
5
+ * string lengths, array sizes, object depths, and total output size.
6
+ * They are designed to be used across all tracing/telemetry systems.
7
+ */
8
+ /**
9
+ * Default keys to strip from objects during deep cleaning.
10
+ * These are typically internal/sensitive fields that shouldn't be traced.
11
+ */
12
+ export declare const DEFAULT_KEYS_TO_STRIP: Set<string>;
13
+ export interface DeepCleanOptions {
14
+ keysToStrip: Set<string>;
15
+ maxDepth: number;
16
+ maxStringLength: number;
17
+ maxArrayLength: number;
18
+ maxObjectKeys: number;
19
+ }
20
+ export declare const DEFAULT_DEEP_CLEAN_OPTIONS: DeepCleanOptions;
21
+ /**
22
+ * Merge user-provided serialization options with defaults.
23
+ * Returns a complete DeepCleanOptions object.
24
+ */
25
+ export declare function mergeSerializationOptions(userOptions?: {
26
+ maxStringLength?: number;
27
+ maxDepth?: number;
28
+ maxArrayLength?: number;
29
+ maxObjectKeys?: number;
30
+ }): DeepCleanOptions;
31
+ /**
32
+ * Hard-cap any string to prevent unbounded growth.
33
+ */
34
+ export declare function truncateString(s: string, maxChars: number): string;
35
+ /**
36
+ * Recursively cleans a value by removing circular references, stripping problematic keys,
37
+ * and enforcing size limits on strings, arrays, and objects.
38
+ *
39
+ * This is used by AI tracing spans to sanitize input/output data before storing.
40
+ *
41
+ * @param value - The value to clean (object, array, primitive, etc.)
42
+ * @param options - Optional configuration for cleaning behavior
43
+ * @returns A cleaned version of the input with size limits enforced
44
+ */
45
+ export declare function deepClean(value: any, options?: DeepCleanOptions): any;
46
+ //# sourceMappingURL=serialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../src/spans/serialization.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,eAAO,MAAM,qBAAqB,aAMhC,CAAC;AAEH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,0BAA0B,EAAE,gBAMvC,CAAC;AAEH;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,CAAC,EAAE;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,gBAAgB,CAWnB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,GAAE,gBAA6C,GAAG,GAAG,CA4GjG"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Composable Tracing Options Builder
3
+ */
4
+ import type { TracingOptions } from '@mastra/core/observability';
5
+ /**
6
+ * A function that updates TracingOptions.
7
+ */
8
+ export type TracingOptionsUpdater = (options: TracingOptions) => TracingOptions;
9
+ /**
10
+ * Builds TracingOptions by composing one or more updater functions.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { buildTracingOptions } from '@mastra/observability';
15
+ * import { withLangfusePrompt } from '@mastra/langfuse';
16
+ *
17
+ * const prompt = await langfuse.getPrompt('my-prompt');
18
+ *
19
+ * const agent = new Agent({
20
+ * defaultGenerateOptions: {
21
+ * tracingOptions: buildTracingOptions(withLangfusePrompt(prompt)),
22
+ * },
23
+ * });
24
+ * ```
25
+ */
26
+ export declare function buildTracingOptions(...updaters: TracingOptionsUpdater[]): TracingOptions;
27
+ //# sourceMappingURL=tracing-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing-options.d.ts","sourceRoot":"","sources":["../src/tracing-options.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,cAAc,CAAC;AAEhF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,QAAQ,EAAE,qBAAqB,EAAE,GAAG,cAAc,CAExF"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Usage extraction utilities for converting AI SDK usage to Mastra UsageStats
3
+ */
4
+ import type { UsageStats } from '@mastra/core/observability';
5
+ import type { LanguageModelUsage, ProviderMetadata } from '@mastra/core/stream';
6
+ /**
7
+ * Extracts and normalizes token usage from AI SDK response, including
8
+ * provider-specific cache tokens from providerMetadata.
9
+ *
10
+ * Handles:
11
+ * - OpenAI: cachedInputTokens in usage object
12
+ * - Anthropic: cacheCreationInputTokens, cacheReadInputTokens in providerMetadata.anthropic
13
+ * - Google/Gemini: cachedContentTokenCount, thoughtsTokenCount in providerMetadata.google.usageMetadata
14
+ * - OpenRouter: Uses OpenAI-compatible structure (cache tokens in usage)
15
+ *
16
+ * @param usage - The LanguageModelV2Usage from AI SDK response
17
+ * @param providerMetadata - Optional provider-specific metadata
18
+ * @returns UsageStats with inputDetails and outputDetails
19
+ */
20
+ export declare function extractUsageMetrics(usage?: LanguageModelUsage, providerMetadata?: ProviderMetadata): UsageStats;
21
+ //# sourceMappingURL=usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAyC,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAoBhF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,UAAU,CA4E/G"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/observability",
3
- "version": "0.0.0-trace-timeline-update-20251121114225",
3
+ "version": "0.0.0-type-testing-20260120105120",
4
4
  "description": "Core observability package for Mastra - includes tracing and scoring features",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -24,23 +24,22 @@
24
24
  },
25
25
  "license": "Apache-2.0",
26
26
  "devDependencies": {
27
- "@microsoft/api-extractor": "^7.52.8",
28
27
  "@types/node": "22.13.17",
29
28
  "@vitest/coverage-v8": "4.0.12",
30
29
  "@vitest/ui": "4.0.12",
31
30
  "eslint": "^9.37.0",
32
31
  "tsup": "^8.5.0",
33
- "typescript": "^5.8.3",
34
- "vitest": "4.0.12",
35
- "@internal/lint": "0.0.0-trace-timeline-update-20251121114225",
36
- "@internal/types-builder": "0.0.0-trace-timeline-update-20251121114225",
37
- "@mastra/core": "0.0.0-trace-timeline-update-20251121114225"
38
- },
39
- "dependencies": {
40
- "zod": "^3.25.76"
32
+ "typescript": "^5.9.3",
33
+ "vitest": "4.0.16",
34
+ "zod": "^3.25.76",
35
+ "@internal/lint": "0.0.0-type-testing-20260120105120",
36
+ "@internal/types-builder": "0.0.0-type-testing-20260120105120",
37
+ "@internal/ai-sdk-v4": "0.0.0-type-testing-20260120105120",
38
+ "@internal/ai-sdk-v5": "0.0.0-type-testing-20260120105120",
39
+ "@mastra/core": "0.0.0-type-testing-20260120105120"
41
40
  },
42
41
  "peerDependencies": {
43
- "@mastra/core": "0.0.0-trace-timeline-update-20251121114225"
42
+ "@mastra/core": "0.0.0-type-testing-20260120105120"
44
43
  },
45
44
  "homepage": "https://mastra.ai",
46
45
  "repository": {