/** * Telemetry - AI SDK v6 Compatible Telemetry * * Provides telemetry settings compatible with AI SDK v6's experimental_telemetry. * Optionally bridges to OpenTelemetry for production observability. */ /** * Telemetry settings compatible with AI SDK v6. */ export interface TelemetrySettings { /** Enable telemetry (default: false) */ isEnabled?: boolean; /** Record input data (default: true when enabled) */ recordInputs?: boolean; /** Record output data (default: true when enabled) */ recordOutputs?: boolean; /** Function identifier for grouping telemetry */ functionId?: string; /** Additional metadata */ metadata?: Record; /** Custom tracer (OpenTelemetry compatible) */ tracer?: Tracer; } /** * OpenTelemetry-compatible tracer interface. */ export interface Tracer { startSpan(name: string, options?: SpanOptions): Span; startActiveSpan(name: string, fn: (span: Span) => T): T; startActiveSpan(name: string, options: SpanOptions, fn: (span: Span) => T): T; } /** * OpenTelemetry-compatible span interface. */ export interface Span { setAttribute(key: string, value: string | number | boolean): this; setAttributes(attributes: Record): this; addEvent(name: string, attributes?: Record): this; setStatus(status: SpanStatus): this; end(): void; recordException(exception: Error): void; isRecording(): boolean; } export interface SpanOptions { attributes?: Record; kind?: SpanKind; } export type SpanKind = 'internal' | 'server' | 'client' | 'producer' | 'consumer'; export interface SpanStatus { code: 'ok' | 'error' | 'unset'; message?: string; } /** * Configure global telemetry settings. * * @example * ```typescript * configureTelemetry({ * isEnabled: true, * functionId: 'my-app', * metadata: { version: '1.0.0' } * }); * ``` */ export declare function configureTelemetry(settings: TelemetrySettings): void; /** * Get current telemetry settings. */ export declare function getTelemetrySettings(): TelemetrySettings; /** * Enable telemetry globally. */ export declare function enableTelemetry(options?: Omit): void; /** * Disable telemetry globally. */ export declare function disableTelemetry(): void; /** * Check if telemetry is enabled. */ export declare function isTelemetryEnabled(): boolean; /** * Initialize OpenTelemetry integration. * * @example * ```typescript * import { trace } from '@opentelemetry/api'; * * initOpenTelemetry({ * tracer: trace.getTracer('praisonai'), * serviceName: 'my-ai-app' * }); * ``` */ export declare function initOpenTelemetry(options?: { tracer?: Tracer; serviceName?: string; endpoint?: string; }): Promise; /** * Get the OpenTelemetry tracer. */ export declare function getTracer(): Tracer | null; /** * Create a span for an AI operation. * * @example * ```typescript * const span = createAISpan('generateText', { * model: 'gpt-4o', * provider: 'openai' * }); * * try { * const result = await generateText({ ... }); * span.setAttribute('tokens', result.usage.totalTokens); * span.setStatus({ code: 'ok' }); * } catch (error) { * span.recordException(error); * span.setStatus({ code: 'error', message: error.message }); * } finally { * span.end(); * } * ``` */ export declare function createAISpan(name: string, attributes?: Record): Span; /** * Execute a function within a span. */ export declare function withSpan(name: string, attributes: Record, fn: (span: Span) => Promise): Promise; /** * Create middleware that adds telemetry to AI SDK calls. */ export declare function createTelemetryMiddleware(settings?: TelemetrySettings): any; export interface TelemetryEvent { name: string; timestamp: number; attributes: Record; spanId?: string; traceId?: string; } /** * Record a telemetry event. */ export declare function recordEvent(name: string, attributes?: Record): void; /** * Get recorded events. */ export declare function getEvents(): TelemetryEvent[]; /** * Clear recorded events. */ export declare function clearEvents(): void; /** * Create telemetry settings for AI SDK calls. */ export declare function createTelemetrySettings(options?: { functionId?: string; metadata?: Record; recordInputs?: boolean; recordOutputs?: boolean; }): TelemetrySettings | undefined;