/** * Observability Types - Unified tracing interface for all observability integrations */ export type SpanKind = 'llm' | 'tool' | 'agent' | 'workflow' | 'embedding' | 'retrieval' | 'custom'; export type SpanStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled'; /** * Attribution context for multi-agent safety */ export interface AttributionContext { agentId?: string; runId?: string; traceId?: string; sessionId?: string; parentSpanId?: string; userId?: string; teamId?: string; } /** * Provider call metadata */ export interface ProviderMetadata { provider: string; model: string; promptTokens?: number; completionTokens?: number; totalTokens?: number; latencyMs?: number; retryCount?: number; region?: string; cost?: number; finishReason?: string; } /** * Span event */ export interface SpanEvent { name: string; timestamp: number; attributes?: Record; } /** * Span data */ export interface SpanData { id: string; traceId: string; parentId?: string; name: string; kind: SpanKind; status: SpanStatus; startTime: number; endTime?: number; attributes: Record; events: SpanEvent[]; attribution?: AttributionContext; providerMetadata?: ProviderMetadata; error?: { message: string; stack?: string; code?: string; }; } /** * Trace data */ export interface TraceData { id: string; name: string; startTime: number; endTime?: number; status: SpanStatus; spans: SpanData[]; metadata: Record; attribution?: AttributionContext; } /** * Span context for active spans */ export interface SpanContext { spanId: string; traceId: string; addEvent(name: string, attributes?: Record): void; setAttributes(attributes: Record): void; setProviderMetadata(metadata: ProviderMetadata): void; recordError(error: Error): void; end(status?: SpanStatus): void; } /** * Trace context for active traces */ export interface TraceContext { traceId: string; startSpan(name: string, kind: SpanKind, parentId?: string): SpanContext; end(status?: SpanStatus): void; } /** * Unified Observability Adapter Protocol * All observability integrations must implement this interface */ export interface ObservabilityAdapter { readonly name: string; readonly isEnabled: boolean; initialize?(): Promise; shutdown?(): Promise; startTrace(name: string, metadata?: Record, attribution?: AttributionContext): TraceContext; endTrace(traceId: string, status?: SpanStatus): void; startSpan(traceId: string, name: string, kind: SpanKind, parentId?: string): SpanContext; endSpan(spanId: string, status?: SpanStatus, attributes?: Record): void; addEvent(spanId: string, name: string, attributes?: Record): void; recordError(spanId: string, error: Error): void; flush(): Promise; } /** * Observability tool configuration */ export interface ObservabilityToolConfig { name: string; apiKey?: string; baseUrl?: string; projectId?: string; environment?: string; enabled?: boolean; batchSize?: number; flushInterval?: number; debug?: boolean; headers?: Record; } /** * Supported observability tools */ export type ObservabilityToolName = 'langfuse' | 'langsmith' | 'langwatch' | 'arize' | 'axiom' | 'braintrust' | 'helicone' | 'laminar' | 'maxim' | 'patronus' | 'scorecard' | 'signoz' | 'traceloop' | 'weave' | 'console' | 'memory' | 'noop'; /** * Observability tool info */ export interface ObservabilityToolInfo { name: ObservabilityToolName; package?: string; envKey: string; description: string; features: { traces: boolean; spans: boolean; events: boolean; errors: boolean; metrics: boolean; export: boolean; }; docsUrl?: string; } /** * All supported observability tools with their configurations */ export declare const OBSERVABILITY_TOOLS: Record; /** * Get observability tool info */ export declare function getObservabilityToolInfo(name: ObservabilityToolName): ObservabilityToolInfo | undefined; /** * List all observability tools */ export declare function listObservabilityTools(): ObservabilityToolInfo[]; /** * Check if observability tool has required env var */ export declare function hasObservabilityToolEnvVar(name: ObservabilityToolName): boolean;