/** * OpenTelemetry configuration and setup utilities for Strands agents. * * Provides {@link setupTracer} for distributed tracing and {@link setupMeter} * for OTEL metrics export. Both use the global OTel API so any provider * registered here (or by the user) is automatically picked up by the Agent. * * This module is only loaded when the user explicitly imports and calls * {@link setupTracer} or {@link setupMeter}. The core agent loop * (tracer.ts, meter.ts) does not depend on this module. * * Uses NodeTracerProvider when available for async context propagation * across MCP server boundaries. Falls back to BasicTracerProvider in * environments without async_hooks support. */ import type { Meter as OtelMeter, TracerProvider, Tracer as OtelTracer } from '@opentelemetry/api'; import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import { MeterProvider } from '@opentelemetry/sdk-metrics'; /** * Get an OpenTelemetry Tracer instance. * * Wraps the OTel trace API to provide a consistent tracer scoped to the * configured service name. * * @returns An OTel Tracer instance from the global tracer provider * * @example * ```typescript * import { setupTracer, getTracer } from '@strands-agents/sdk/telemetry' * * // Set up telemetry first (or register your own NodeTracerProvider) * setupTracer({ exporters: { otlp: true } }) * * // Get a tracer and create custom spans * const tracer = getTracer() * const span = tracer.startSpan('my-custom-operation') * span.setAttribute('custom.key', 'value') * * // ........ * * span.end() * ``` */ export declare function getTracer(): OtelTracer; /** * Get an OpenTelemetry Meter instance. * * Wraps the OTel metrics API to provide a consistent meter scoped to the * configured service name. Returns a no-op meter until a MeterProvider is * registered (either via {@link setupMeter} or by the user directly). * * @returns An OTel Meter instance from the global meter provider * * @example * ```typescript * import { setupMeter, getMeter } from '@strands-agents/sdk/telemetry' * * setupMeter({ exporters: { otlp: true } }) * * const meter = getMeter() * const counter = meter.createCounter('my.custom.counter') * counter.add(1) * ``` */ export declare function getMeter(): OtelMeter; /** * Configuration options for setting up the tracer. */ export interface TracerConfig { /** * Custom TracerProvider instance. If not provided, NodeTracerProvider is * used when available, otherwise BasicTracerProvider. */ provider?: TracerProvider; /** * Exporter configuration. */ exporters?: { /** * Enable OTLP exporter. Uses OTEL_EXPORTER_OTLP_ENDPOINT and * OTEL_EXPORTER_OTLP_HEADERS env vars automatically. */ otlp?: boolean; /** * Enable console exporter for debugging. */ console?: boolean; }; } /** * Set up the tracer provider with the given configuration. * * When called without a custom provider, returns a BasicTracerProvider and * registers the async context manager + W3C propagators for trace propagation. * When a custom provider is passed, the caller is responsible for their own * context manager / propagator setup (e.g. via provider.register()). * * @param config - Tracer configuration options * @returns The configured tracer provider * * @example * ```typescript * import { telemetry } from '\@strands-agents/sdk' * * telemetry.setupTracer({ exporters: { otlp: true } }) * ``` */ export declare function setupTracer(config?: Omit): BasicTracerProvider; export declare function setupTracer(config: TracerConfig): TracerProvider; /** * Configuration options for setting up the OTEL meter provider. */ export interface MeterConfig { /** * Custom MeterProvider instance. When provided, it is registered as the * global meter provider and the SDK will not create one internally. */ provider?: MeterProvider; /** * Exporter configuration. */ exporters?: { /** * Enable OTLP exporter. Uses OTEL_EXPORTER_OTLP_ENDPOINT and * OTEL_EXPORTER_OTLP_HEADERS env vars automatically. */ otlp?: boolean; /** * Enable console exporter for debugging. */ console?: boolean; }; } /** * Set up the OTEL meter provider with the given configuration. * * @param config - Meter configuration options * @returns The configured meter provider * * @example * ```typescript * import { telemetry } from '\@strands-agents/sdk' * * telemetry.setupMeter({ exporters: { otlp: true } }) * ``` */ export declare function setupMeter(config?: MeterConfig): MeterProvider; //# sourceMappingURL=config.d.ts.map