/** * Agentic QE v3 - Coverage Embedder Service * * Converts code coverage data into dense vector embeddings for efficient * similarity search using HNSW index. The embedder creates multi-dimensional * representations that capture coverage patterns, risk factors, and file * characteristics. * * Embedding Strategy: * - Dimensions 0-15: Coverage metrics (line, branch, function, statement) * - Dimensions 16-31: Gap characteristics (size, distribution, density) * - Dimensions 32-47: Risk factors (complexity, change frequency, defect history) * - Dimensions 48-63: File characteristics (size, type, depth) * - Dimensions 64-127: Derived features and semantic signals * * @module coverage-analysis/coverage-embedder */ import { FileCoverage, CoverageGap } from '../interfaces'; import { CoverageVectorMetadata } from './hnsw-index'; /** * Configuration for coverage embedding generation */ export interface CoverageEmbedderConfig { /** Number of dimensions for the embedding (default: 128) */ dimensions: number; /** Include file path features in embedding */ includePathFeatures: boolean; /** Include temporal features (last modified, etc.) */ includeTemporalFeatures: boolean; /** Normalization method for embeddings */ normalization: 'l2' | 'minmax' | 'none'; } /** * Default embedder configuration */ export declare const DEFAULT_EMBEDDER_CONFIG: CoverageEmbedderConfig; /** * Interface for coverage embedding generation */ export interface ICoverageEmbedder { /** Create embedding from file coverage data */ embedFileCoverage(coverage: FileCoverage): EmbeddingResult; /** Create embedding from coverage gap */ embedCoverageGap(gap: CoverageGap): EmbeddingResult; /** Create embedding from query parameters */ embedQuery(query: CoverageQuery): EmbeddingResult; /** Batch embed multiple file coverages */ batchEmbed(coverages: FileCoverage[]): EmbeddingResult[]; } /** * Query parameters for coverage search */ export interface CoverageQuery { /** Minimum line coverage threshold */ minLineCoverage?: number; /** Maximum line coverage threshold */ maxLineCoverage?: number; /** Minimum branch coverage threshold */ minBranchCoverage?: number; /** Maximum branch coverage threshold */ maxBranchCoverage?: number; /** Minimum risk score */ minRiskScore?: number; /** Maximum risk score */ maxRiskScore?: number; /** File path pattern (for similarity) */ filePattern?: string; /** Maximum uncovered lines to find */ maxUncoveredLines?: number; } /** * Result of embedding generation */ export interface EmbeddingResult { /** The embedding vector */ vector: number[]; /** Metadata for the embedding */ metadata: CoverageVectorMetadata; /** Quality score (0-1) indicating embedding confidence */ confidence: number; } /** * Coverage Embedder Service * * Generates dense vector embeddings from coverage data for use with * HNSW-based similarity search. The embeddings capture coverage patterns, * risk profiles, and file characteristics to enable efficient O(log n) * gap detection. * * @example * ```typescript * const embedder = new CoverageEmbedder(); * const result = embedder.embedFileCoverage(fileCoverage); * await index.insert(fileCoverage.path, result.vector, result.metadata); * ``` */ export declare class CoverageEmbedder implements ICoverageEmbedder { private readonly config; constructor(config?: Partial); /** * Create embedding from file coverage data * * Generates a dense vector representation of the file's coverage * characteristics for similarity search. * * @param coverage - File coverage data to embed * @returns Embedding result with vector and metadata */ embedFileCoverage(coverage: FileCoverage): EmbeddingResult; /** * Create embedding from coverage gap * * Generates a vector representation of a coverage gap for finding * similar gaps in the codebase. * * @param gap - Coverage gap to embed * @returns Embedding result with vector and metadata */ embedCoverageGap(gap: CoverageGap): EmbeddingResult; /** * Create embedding from query parameters * * Generates a query vector for finding files matching specific * coverage criteria. * * @param query - Query parameters * @returns Embedding result optimized for similarity search */ embedQuery(query: CoverageQuery): EmbeddingResult; /** * Batch embed multiple file coverages * * Efficiently processes multiple files in parallel. * * @param coverages - Array of file coverages to embed * @returns Array of embedding results */ batchEmbed(coverages: FileCoverage[]): EmbeddingResult[]; private encodeCoverageMetrics; private encodeGapCharacteristics; private encodeRiskFactors; private encodeFileCharacteristics; private encodeDerivedFeatures; private normalize; private l2Normalize; private minMaxNormalize; private createMetadata; private calculateConfidence; private calculateOverallCoverage; private calculateRiskScore; private countContiguousRegions; private calculateLargeGapRatio; private calculateGapConcentration; private extractPathFeatures; private hashString; private severityToNumber; } /** * Create a new coverage embedder instance * * @param config - Optional configuration overrides * @returns Configured coverage embedder */ export declare function createCoverageEmbedder(config?: Partial): CoverageEmbedder; //# sourceMappingURL=coverage-embedder.d.ts.map