/** * Runtime telemetry module, OTel-compatible tracing and metrics. * * Provides a lightweight telemetry provider factory that wires together * a RuntimeTracer and RuntimeMeter with configurable exporters. * * @example * ```ts * import { createTelemetryProvider } from './index.js'; * import { LocalLedgerExporter } from './exporters/index.js'; * * const { tracer, meter } = createTelemetryProvider({ * tracer: { * scope: 'goodvibes-sdk', * enabled: true, * exporters: [new LocalLedgerExporter({ filePath: '/tmp/spans.jsonl' })], * }, * meter: { scope: 'goodvibes-sdk' }, * }); * ``` */ import { RuntimeTracer } from './tracer.js'; import { RuntimeMeter } from './meter.js'; import type { TelemetryProviderConfig } from './types.js'; import type { FeatureFlagManager } from '../feature-flags/index.js'; import type { OtlpConfig } from './exporters/index.js'; export type { AttributeValue, SpanAttributes, SpanContext, SpanEvent, SpanKind, SpanStatus, SpanStatusCode, ReadableSpan, Span, SpanExporter, Counter, Histogram, HistogramSnapshot, Gauge, MetricLabels, TracerConfig, MeterConfig, TelemetryProviderConfig, } from './types.js'; export { SpanStatusCode as SpanStatusCodes, SpanKind as SpanKinds } from './types.js'; export { RuntimeTracer } from './tracer.js'; export { RuntimeMeter } from './meter.js'; export type { TelemetrySeverity, TelemetryViewMode, TelemetryFilter, TelemetryRecord, TelemetryPageInfo, TelemetryListResponse, TelemetryCapabilities, TelemetryAggregates, TelemetryRuntimeSnapshot, TelemetrySnapshot, } from './api.js'; export { TelemetryApiService } from './api.js'; export type { TurnSpanContext, TurnSpanEndContext, ToolSpanContext, ToolSpanEndContext, ToolPhase, LlmSpanContext, LlmSpanEndContext, LlmTokenUsage, PluginSpanContext, PluginSpanEndContext, PluginPhase, McpSpanContext, McpSpanEndContext, McpPhase, TransportSpanContext, TransportSpanEndContext, TransportPhase, TaskSpanContext, TaskSpanEndContext, TaskPhase, AgentSpanContext, AgentSpanEndContext, AgentPhase, PermissionSpanContext, PermissionSpanEndContext, PermissionPhase, SessionSpanContext, SessionSpanEndContext, SessionPhase, CompactionSpanContext, CompactionSpanEndContext, CompactionPhase, HealthCascadeSpanContext, } from './spans/index.js'; export { startTurnSpan, endTurnSpan, startToolSpan, recordToolPhase, endToolSpan, startLlmSpan, recordLlmStreamStart, endLlmSpan, startPluginSpan, recordPluginPhase, endPluginSpan, startMcpSpan, recordMcpPhase, endMcpSpan, startTransportSpan, recordTransportPhase, endTransportSpan, startTaskSpan, recordTaskPhase, endTaskSpan, startAgentSpan, recordAgentPhase, endAgentSpan, startPermissionSpan, recordPermissionPhase, endPermissionSpan, startSessionSpan, recordSessionPhase, endSessionSpan, startCompactionSpan, recordCompactionPhase, endCompactionSpan, recordHealthCascadeSpan, } from './spans/index.js'; export type { LocalLedgerConfig, ConsoleVerbosity, ConsoleExporterConfig, OtlpConfig } from './exporters/index.js'; export { LocalLedgerExporter, ConsoleExporter, OtlpExporter } from './exporters/index.js'; export type { InstrumentationHandle } from './instrumentation/index.js'; export { DomainBridge, createInstrumentation } from './instrumentation/index.js'; /** Alias for TelemetryProviderConfig to match the factory parameter name. */ export type TelemetryConfig = TelemetryProviderConfig; export interface TelemetryProviderOptions { readonly featureFlags?: Pick | null | undefined; readonly otlp?: OtlpConfig | undefined; } /** * Create a telemetry provider, a paired RuntimeTracer and RuntimeMeter. * * When no config is supplied, a no-op provider is returned: * - Tracer is disabled (all spans are no-ops). * - Meter is initialised with the default scope `'goodvibes-sdk'`. * * @param config - Optional telemetry provider configuration. * @returns An object with `tracer` and `meter` instances. */ export declare function createTelemetryProvider(config?: TelemetryConfig, options?: TelemetryProviderOptions): { tracer: RuntimeTracer; meter: RuntimeMeter; }; /** * Build the composed runtime's telemetry and make its tracer the platform's. * * The one line `createRuntimeServices` calls, and where `telemetry.otelMode` * stops being decorative: the mode drives the two feature gates * {@link createTelemetryProvider} reads, and installing the resulting tracer is * what gives the platform's instrumentation something to open spans on. Until * this existed the provider had no callers at all, so every mode behaved like * 'off'. * * Returns the provider so a host that wants the meter as well can keep it. */ export declare function installComposedTelemetry(featureFlags: Pick): { tracer: RuntimeTracer; meter: RuntimeMeter; }; //# sourceMappingURL=index.d.ts.map