/** * Observability Lens * * Measures OpenTelemetry instrumentation coverage by analyzing which implementation files * contain the events documented in .otel.canvas storyboard files. * * Uses lifecycle state tracking (draft/approved/implemented) to determine file health: * - Green: All implemented events are present in code * - Red: Missing implemented events (broken contract) * - Purple: Approved events pending implementation * * Uses direct API integration with @principal-ai/principal-view-core for coverage analysis. */ import { BaseLens } from '../base/BaseLens.js'; import type { LensResult, ExecuteResult, LensRequirements } from '../../types/index.js'; /** * Coverage metrics from principal-view-core */ interface CoverageMetrics { totalImplementationFiles: number; filesWithInstrumentation: number; coveragePercentage: number; fileCoverage: FileInstrumentation[]; canvasFiles: string[]; totalExpectedEvents: number; totalFoundEvents: number; nodeStatus: NodeStatusBreakdown; validationErrors: ValidationError[]; } interface FileInstrumentation { filePath: string; expectedEvents: string[]; foundEvents: string[]; instrumentationCount: number; hasInstrumentation: boolean; missingEvents: string[]; isImplementationFile: boolean; } interface NodeStatusBreakdown { missingStatusCount: number; draftCount: number; approvedCount: number; approvedWithFilesCount: number; implementedCount: number; implementedWithFilesCount: number; } interface ValidationError { nodeId: string; canvasPath: string; error: string; status?: string; } /** * Requirements for the observability lens */ export declare const OBSERVABILITY_REQUIREMENTS: LensRequirements; /** * Lens for measuring observability instrumentation coverage */ export declare class ObservabilityLens extends BaseLens { readonly name = "observability"; readonly description = "OpenTelemetry instrumentation coverage tracking"; readonly languages: string[]; readonly supportedTools: string[]; readonly requirements: LensRequirements; private pathMapper?; /** * Execute observability coverage analysis using principal-view-core API * * This lens uses direct API integration rather than shelling out to a CLI. * The ExecuteResult contains JSON-encoded coverage metrics. */ execute(): Promise; /** * Parse the coverage metrics from execute() */ parse(output: ExecuteResult): CoverageMetrics; /** * Format coverage metrics into standardized LensResult */ format(parsed: CoverageMetrics): LensResult; /** * Get or create path mapper */ private getPathMapper; /** * Dynamically import principal-view-core * Returns null if not installed (optional peer dependency) */ private importPrincipalViewCore; } export {}; //# sourceMappingURL=ObservabilityLens.d.ts.map