UNPKG

@knath2000/codebase-indexing-mcp

Version:

MCP server for codebase indexing with Voyage AI embeddings and Qdrant vector storage

142 lines (141 loc) 4.55 kB
import { WorkspaceManager } from './workspace-manager.js'; import { Config, SearchQuery, SearchResult, ChunkType, CodeChunk, CodeReference, SearchStats, HealthStatus } from '../types.js'; export declare class SearchService { private voyageClient; private qdrantClient; private config; private llmReranker; private hybridSearch; private contextManager; private searchCache; private workspaceManager; private currentWorkspace; private searchStats; constructor(config: Config, workspaceManager?: WorkspaceManager); /** * Helper to build SearchQuery objects with optional properties handled correctly */ buildSearchQuery(args: { query: string; language?: string; chunkType?: ChunkType; filePath?: string; limit?: number; threshold?: number; enableHybrid?: boolean; enableReranking?: boolean; llmRerankerTimeoutMs?: number; maxFilesPerType?: number; preferFunctions?: boolean; preferClasses?: boolean; preferImplementation?: boolean; }): SearchQuery; /** * Initialize the search service with workspace detection */ initialize(): Promise<void>; /** * Update Qdrant client for workspace-specific collection */ private updateQdrantClientForWorkspace; /** * Enhanced search with caching, hybrid retrieval, and LLM re-ranking (Cursor-style @codebase functionality) */ search(query: SearchQuery): Promise<SearchResult[]>; /** * Search for functions by name or description */ searchFunctions(query: SearchQuery): Promise<SearchResult[]>; /** * Search for classes by name or description */ searchClasses(query: SearchQuery): Promise<SearchResult[]>; /** * Search for interfaces by name or description */ searchInterfaces(query: SearchQuery): Promise<SearchResult[]>; /** * Search within a specific file */ searchInFile(query: SearchQuery): Promise<SearchResult[]>; /** * Search for code by programming language */ searchByLanguage(query: SearchQuery): Promise<SearchResult[]>; /** * Find similar code chunks to a given chunk */ findSimilar(query: SearchQuery): Promise<SearchResult[]>; /** * Get suggestions for code completion or exploration */ getSuggestions(query: SearchQuery, type?: 'function' | 'class' | 'variable' | 'any'): Promise<SearchResult[]>; /** * Search for code patterns or implementation examples */ searchPatterns(query: SearchQuery): Promise<SearchResult[]>; /** * Advanced search with multiple criteria */ advancedSearch(query: SearchQuery): Promise<SearchResult[]>; /** * Get code chunk by ID */ getChunkById(chunkId: string): Promise<CodeChunk | null>; /** * Get code context around a chunk */ getCodeContext(chunkId: string, contextLines?: number): Promise<{ chunk: CodeChunk; context: string; } | null>; /** * Get embeddings for a text (utility function) */ getEmbedding(text: string): Promise<number[]>; /** * Get comprehensive search statistics (enhanced for Cursor-like codebase insights) */ getSearchStats(): Promise<SearchStats>; /** * Get comprehensive health status of all services (enhanced for Cursor-like codebase insights) */ getHealthStatus(): Promise<HealthStatus>; /** * Get enhanced search statistics (enhanced for Cursor-like codebase insights) */ getEnhancedSearchStats(): SearchStats; invalidateFileCache(filePath: string): void; clearCaches(): void; /** * Boost implementation code results over documentation */ private boostImplementationResults; /** * Post-process search results */ private postProcessResults; /** * Enhance snippet with query highlighting */ private enhanceSnippet; /** * Generate context description for a chunk */ private generateContext; /** * Search and return Cursor-style code references with token budgeting */ searchForCodeReferences(query: SearchQuery, maxTokens?: number): Promise<{ references: CodeReference[]; truncated: boolean; summary?: string; metadata: { totalResults: number; searchTime: number; cacheHit: boolean; hybridUsed: boolean; reranked: boolean; }; }>; }