/** * K-means clustering for semantic code grouping. * Groups code chunks by similarity to discover concept areas in the codebase. */ /** * Represents a discovered concept cluster */ export interface ConceptCluster { /** Unique cluster identifier (0-indexed) */ id: number; /** Human-readable label derived from representative chunks */ label: string; /** Number of code chunks in this cluster */ size: number; /** Representative chunk IDs for this cluster */ representativeChunks: string[]; /** Centroid vector for this cluster */ centroid: number[]; /** Keywords extracted from representative chunks */ keywords: string[]; } /** * Result of clustering operation */ export interface ClusteringResult { /** Total number of clusters created */ clusterCount: number; /** All discovered concept clusters */ clusters: ConceptCluster[]; /** Mapping from chunk ID to cluster ID */ assignments: Map; } /** * Options for clustering operation */ export interface ClusteringOptions { /** Target number of clusters (default: auto-determined based on chunk count) */ numClusters?: number; /** Maximum iterations for k-means (default: 100) */ maxIterations?: number; /** Convergence threshold (default: 0.001) */ convergenceThreshold?: number; /** Number of representative chunks to store per cluster (default: 3) */ numRepresentatives?: number; } /** * Chunk data needed for clustering */ export interface ChunkForClustering { id: string; content: string; filepath: string; embedding: number[]; symbolName?: string; symbolType?: string; } /** * Calculate cosine similarity between two vectors */ export declare function cosineSimilarity(a: number[], b: number[]): number; /** * Calculate Euclidean distance between two vectors */ export declare function euclideanDistance(a: number[], b: number[]): number; /** * Perform k-means clustering on embeddings */ export declare function kMeansClustering(chunks: ChunkForClustering[], options?: ClusteringOptions): ClusteringResult; /** * Find the cluster ID for a given embedding (nearest centroid) */ export declare function assignToCluster(embedding: number[], clusters: ConceptCluster[]): number; /** * Calculate silhouette score for clustering quality assessment */ export declare function calculateSilhouetteScore(chunks: ChunkForClustering[], assignments: Map, clusters: ConceptCluster[]): number; //# sourceMappingURL=clustering.d.ts.map