/** * Agentic QE v3 - Semantic Analyzer Service * Semantic code analysis using vector embeddings and HNSW search */ import { Result } from '../../../shared/types'; import { MemoryBackend } from '../../../kernel/interfaces'; import { NomicEmbedderConfig, IEmbeddingProvider } from '../../../shared/embeddings'; import { SearchRequest, SearchResults, SearchResult } from '../interfaces'; /** * Interface for the semantic analyzer service */ export interface ISemanticAnalyzerService { /** Perform semantic search across codebase */ search(request: SearchRequest): Promise>; /** Index code for semantic search */ indexCode(file: string, content: string): Promise>; /** Find semantically similar code */ findSimilar(code: string, limit?: number): Promise>; /** Analyze code semantics */ analyze(code: string): Promise>; /** Get code embeddings */ getEmbedding(code: string): Promise; } /** * Semantic analysis result */ export interface SemanticAnalysis { concepts: string[]; patterns: string[]; complexity: CodeComplexity; dependencies: string[]; suggestions: string[]; } /** * Code complexity metrics */ export interface CodeComplexity { cyclomatic: number; cognitive: number; halstead: HalsteadMetrics; } /** * Halstead complexity metrics */ export interface HalsteadMetrics { vocabulary: number; length: number; difficulty: number; effort: number; time: number; bugs: number; } /** * Configuration for the semantic analyzer */ export interface SemanticAnalyzerConfig { /** Embedding vector dimension (768 for Nomic, 384 for fallback) */ embeddingDimension: number; /** Minimum similarity score threshold */ minScore: number; /** Maximum search results */ maxResults: number; /** Storage namespace */ namespace: string; /** Enable embedding caching */ enableCaching: boolean; /** Cache size limit */ cacheSize: number; /** Use Nomic embeddings via Ollama when available */ useNomicEmbeddings: boolean; /** Nomic embedder configuration */ nomicConfig?: NomicEmbedderConfig; /** Custom embedding provider (for testing/DI) */ embeddingProvider?: IEmbeddingProvider; } /** * Semantic Analyzer Service Implementation * Provides O(log n) semantic search using HNSW vector index */ export declare class SemanticAnalyzerService implements ISemanticAnalyzerService { private readonly memory; private readonly config; private readonly embeddingCache; private readonly analysisCache; private embedder; private embedderInitialized; constructor(memory: MemoryBackend, config?: Partial); /** * Initialize the Nomic embedder lazily */ private initializeEmbedder; /** * Perform semantic search across indexed code */ search(request: SearchRequest): Promise>; /** * Index code content for semantic search */ indexCode(file: string, content: string): Promise>; /** * Find semantically similar code */ findSimilar(code: string, limit?: number): Promise>; /** * Analyze code semantics */ analyze(code: string): Promise>; /** * Get embedding vector for code * Uses Nomic embeddings via Ollama when available, falls back to pseudo-embeddings */ getEmbedding(code: string): Promise; /** * Check if using real Nomic embeddings */ isUsingNomicEmbeddings(): boolean; private semanticSearch; private exactSearch; private fuzzySearch; private extractConcepts; private detectPatterns; private calculateComplexity; private extractDependencies; private generateSuggestions; private generateCodeEmbedding; private extractCodeMetadata; private detectLanguage; private tokenize; private calculateFuzzyScore; private matchesFilters; private extractSnippet; private extractSnippetAround; private getLineNumber; private findHighlights; private findSemanticHighlights; private fileToKey; private hashCode; private cacheEmbedding; private cacheAnalysis; } //# sourceMappingURL=semantic-analyzer.d.ts.map