/** * Unified Search * * Combines code and spec indexes with cross-scoring to boost results * that are linked through bidirectional mappings. * * Usage: * const results = await UnifiedSearch.unifiedSearch( * outputDir, * "validate user authentication", * embedSvc, * { limit: 10 } * ); */ import type { EmbeddingService } from './embedding-service.js'; import type { SearchResult as CodeSearchResult } from './vector-index.js'; import type { SpecSearchResult } from './spec-vector-index.js'; export interface UnifiedSearchResult { id: string; type: 'code' | 'spec' | 'both'; score: number; baseScore: number; mappingBoost: number; source: { filePath?: string; functionName?: string; className?: string; domain?: string; section?: string; title?: string; language?: string; }; linkedArtifacts: Array<{ type: 'code' | 'spec'; id: string; score: number; }>; } export interface CrossScoringConfig { directMappingBoost: number; reverseMappingBoost: number; mutualMappingBoost: number; additionalLinkBoost: number; maxAdditionalBoost: number; } /** * Build a bidirectional mapping index from mapping.json */ interface MappingEntry { domain?: string; requirement?: string; functions?: Array<{ file?: string; name?: string; }>; } export declare function buildBidirectionalMapping(mappings: MappingEntry[]): { functionToRequirements: Map>; requirementToFunctions: Map>; }; /** * Calculate cross-scoring boost based on bidirectional mappings */ export declare function calculateCrossScore(result: CodeSearchResult | SpecSearchResult, mappingIndex: { functionToRequirements: Map>; requirementToFunctions: Map>; }, config: CrossScoringConfig): { mappingBoost: number; linkedArtifacts: Array<{ type: 'code' | 'spec'; id: string; score: number; }>; }; /** * Determine result type based on source and linked artifacts */ export declare function determineResultType(result: CodeSearchResult | SpecSearchResult, linkedArtifacts: Array<{ type: 'code' | 'spec'; id: string; score: number; }>): 'code' | 'spec' | 'both'; /** * Extract source metadata from result */ export declare function extractSourceMetadata(result: CodeSearchResult | SpecSearchResult): UnifiedSearchResult['source']; export declare class UnifiedSearch { /** * Unified search that combines code and spec indexes with cross-scoring */ static unifiedSearch(outputDir: string, query: string, embedSvc: EmbeddingService | null | undefined, opts?: { limit?: number; language?: string; domain?: string; section?: string; config?: Partial; }): Promise; } /** * Check if unified search is available */ export declare function unifiedSearchAvailable(outputDir: string): Promise; export {}; //# sourceMappingURL=unified-search.d.ts.map