UNPKG

@mastra/core

Version:

Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack.

226 lines (155 loc) • 5.58 kB
# Spans ## `BaseSpan` Base interface for all span types. ```typescript interface BaseSpan<TType extends SpanType> { /** Unique span identifier */ id: string /** OpenTelemetry-compatible trace ID (32 hex chars) */ traceId: string /** Name of the span */ name: string /** Type of the span */ type: TType /** When span started */ startTime: Date /** When span ended */ endTime?: Date /** Type-specific attributes */ attributes?: SpanTypeMap[TType] /** User-defined metadata */ metadata?: Record<string, any> /** Input passed at the start of the span */ input?: any /** Output generated at the end of the span */ output?: any /** Error information if span failed */ errorInfo?: { message: string id?: string domain?: string category?: string details?: Record<string, any> } /** Snapshot of the RequestContext */ requestContext?: Record<string, any> /** Is an event span? (occurs at startTime, has no endTime) */ isEvent: boolean } ``` ## Span Span interface, used internally for tracing. Extends BaseSpan with lifecycle methods and properties. ```typescript interface Span<TType extends SpanType> extends BaseSpan<TType> { /** Is an internal span? (spans internal to the operation of mastra) */ isInternal: boolean /** Parent span reference (undefined for root spans) */ parent?: AnySpan /** Pointer to the ObservabilityInstance instance */ observabilityInstance: ObservabilityInstance } ``` ### Properties ```typescript /** Returns TRUE if the span is the root span of a trace */ get isRootSpan(): boolean /** Returns TRUE if the span is a valid span (not a NO-OP Span) */ get isValid(): boolean /** Get the closest parent spanId that isn't an internal span */ getParentSpanId(includeInternalSpans?: boolean): string | undefined /** Returns a lightweight span ready for export */ exportSpan(includeInternalSpans?: boolean): ExportedSpan<TType> | undefined ``` ### Methods #### end ```typescript end(options?: EndSpanOptions<TType>): void ``` Ends the span and triggers export to configured exporters. Sets the `endTime` and optionally updates `output`, `metadata`, and `attributes`. #### error ```typescript error(options: ErrorSpanOptions<TType>): void ``` Records an error on the span. Sets the `errorInfo` field and can optionally end the span. #### update ```typescript update(options: UpdateSpanOptions<TType>): void ``` Updates span data while it's still active. Can modify `input`, `output`, `metadata`, and `attributes`. #### `createChildSpan` ```typescript createChildSpan<TChildType extends SpanType>( options: ChildSpanOptions<TChildType> ): Span<TChildType> ``` Creates a child span under this span. Child spans track sub-operations and inherit the trace context. #### `createEventSpan` ```typescript createEventSpan<TChildType extends SpanType>( options: ChildEventOptions<TChildType> ): Span<TChildType> ``` Creates an event span under this span. Event spans represent point-in-time occurrences with no duration. ## `ExportedSpan` Exported Span interface, used for tracing exporters. A lightweight version of Span without methods or circular references. ```typescript interface ExportedSpan<TType extends SpanType> extends BaseSpan<TType> { /** Parent span id reference (undefined for root spans) */ parentSpanId?: string /** TRUE if the span is the root span of a trace */ isRootSpan: boolean } ``` ## Span lifecycle events Events emitted during the span lifecycle. ### `TracingEventType` ```typescript enum TracingEventType { /** Emitted when a span is created and started */ SPAN_STARTED = 'span_started', /** Emitted when a span is updated via update() */ SPAN_UPDATED = 'span_updated', /** Emitted when a span is ended via end() or error() */ SPAN_ENDED = 'span_ended', } ``` ### `TracingEvent` ```typescript type TracingEvent = | { type: 'span_started'; exportedSpan: AnyExportedSpan } | { type: 'span_updated'; exportedSpan: AnyExportedSpan } | { type: 'span_ended'; exportedSpan: AnyExportedSpan } ``` Exporters receive these events to process and send trace data to observability platforms. ## Union types ### `AnySpan` ```typescript type AnySpan = Span<keyof SpanTypeMap> ``` Union type for cases that need to handle any span type. ### `AnyExportedSpan` ```typescript type AnyExportedSpan = ExportedSpan<keyof SpanTypeMap> ``` Union type for cases that need to handle any exported span type. ## NO-OP spans When tracing is disabled (sampling returns false), NO-OP spans are returned: ### `NoOpSpan` ```typescript class NoOpSpan<TType extends SpanType> extends BaseSpan<TType> ``` A span that performs no operations. All methods are no-ops: - `id` returns `'no-op'` - `traceId` returns `'no-op-trace'` - `isValid` returns `false` - `end()`, `error()`, `update()` do nothing - `createChildSpan()` returns another NO-OP span ## See also ### Documentation - [Tracing Overview](https://mastra.ai/docs/observability/tracing/overview): Concepts and usage - [Creating Child Spans](https://mastra.ai/docs/observability/tracing/overview): Practical examples - [Retrieving Trace IDs](https://mastra.ai/docs/observability/tracing/overview): Using trace IDs ### Reference - [Tracing Classes](https://mastra.ai/reference/observability/tracing/instances): Core tracing classes - [Interfaces](https://mastra.ai/reference/observability/tracing/interfaces): Complete type reference - [Configuration](https://mastra.ai/reference/observability/tracing/configuration): Configuration options