codeseeker 1.9.0 → 1.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -2
- package/dist/cli/commands/services/semantic-search-orchestrator.d.ts +21 -1
- package/dist/cli/commands/services/semantic-search-orchestrator.d.ts.map +1 -1
- package/dist/cli/commands/services/semantic-search-orchestrator.js +189 -52
- package/dist/cli/commands/services/semantic-search-orchestrator.js.map +1 -1
- package/dist/cli/services/search/raptor-indexing-service.d.ts +83 -0
- package/dist/cli/services/search/raptor-indexing-service.d.ts.map +1 -0
- package/dist/cli/services/search/raptor-indexing-service.js +403 -0
- package/dist/cli/services/search/raptor-indexing-service.js.map +1 -0
- package/dist/mcp/indexing-service.d.ts +1 -1
- package/dist/mcp/indexing-service.d.ts.map +1 -1
- package/dist/mcp/indexing-service.js +25 -0
- package/dist/mcp/indexing-service.js.map +1 -1
- package/dist/mcp/mcp-server.d.ts.map +1 -1
- package/dist/mcp/mcp-server.js +13 -2
- package/dist/mcp/mcp-server.js.map +1 -1
- package/dist/storage/embedded/sqlite-vector-store.d.ts +4 -0
- package/dist/storage/embedded/sqlite-vector-store.d.ts.map +1 -1
- package/dist/storage/embedded/sqlite-vector-store.js +57 -17
- package/dist/storage/embedded/sqlite-vector-store.js.map +1 -1
- package/dist/storage/interfaces.d.ts +19 -0
- package/dist/storage/interfaces.d.ts.map +1 -1
- package/dist/storage/server/postgres-vector-store.d.ts +4 -0
- package/dist/storage/server/postgres-vector-store.d.ts.map +1 -1
- package/dist/storage/server/postgres-vector-store.js +60 -0
- package/dist/storage/server/postgres-vector-store.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -222,7 +222,10 @@ Once configured, Claude has access to these MCP tools (used automatically):
|
|
|
222
222
|
|
|
223
223
|
| Tool | Actions / Usage | What It Does |
|
|
224
224
|
|------|-----------------|-------------|
|
|
225
|
-
| `search` | `{query}` | Hybrid search: vector + text + path with RRF
|
|
225
|
+
| `search` | `{query}` | Hybrid search: vector + BM25 text + path-match, fused with RRF; RAPTOR directory summaries surface for abstract queries |
|
|
226
|
+
| `search` | `{query, search_type: "graph"}` | Hybrid search **+ Graph RAG** — follows import/call/extends edges to surface structurally connected files |
|
|
227
|
+
| `search` | `{query, search_type: "vector"}` | Pure embedding cosine-similarity search (no BM25 or path scoring) |
|
|
228
|
+
| `search` | `{query, search_type: "fts"}` | Pure BM25 text search with CamelCase tokenisation and synonym expansion |
|
|
226
229
|
| `search` | `{query, read: true}` | Search + read file contents in one step |
|
|
227
230
|
| `search` | `{filepath}` | Read a file with its related code automatically included |
|
|
228
231
|
| `analyze` | `{action: "dependencies", filepath}` | Traverse the knowledge graph (imports, calls, extends) |
|
|
@@ -266,10 +269,16 @@ First search on a new project takes 30 seconds to several minutes (depending on
|
|
|
266
269
|
| **Grep/ripgrep** | Text pattern matching | Fast, universal | No semantic understanding |
|
|
267
270
|
| **Vector search only** | Embedding similarity | Finds similar code | Misses structural relationships |
|
|
268
271
|
| **LSP-based tools** | Language server protocol | Precise symbol definitions | No semantic search, no cross-file reasoning |
|
|
269
|
-
| **CodeSeeker** | Knowledge graph + hybrid search | Semantic + structure + patterns | Requires initial indexing (30s-5min) |
|
|
272
|
+
| **CodeSeeker** | Knowledge graph + hierarchical hybrid search | Semantic + structure + directory context + patterns | Requires initial indexing (30s-5min) |
|
|
270
273
|
|
|
271
274
|
### CodeSeeker's Unique Capabilities
|
|
272
275
|
|
|
276
|
+
**Hierarchical search (RAPTOR):**
|
|
277
|
+
CodeSeeker generates *directory summary nodes* by mean-pooling the embeddings of all files in each folder, plus a *project root node* for the whole codebase. These live in the same index as regular file chunks:
|
|
278
|
+
- *Concrete queries* ("find JWT refresh logic") surface precise file chunks as usual
|
|
279
|
+
- *Abstract queries* ("what does the auth package do?") naturally score higher against directory summaries → instant package-level answers without enumerating 20 files
|
|
280
|
+
- *On sync*, a structural hash + cosine drift check skips regeneration for most edits — no extra cost for routine code changes
|
|
281
|
+
|
|
273
282
|
**What LSP tools can't do:**
|
|
274
283
|
- *"Find code that handles errors like this"* → Semantic search finds similar patterns
|
|
275
284
|
- *"What validation approach does this project use?"* → Auto-detected coding standards
|
|
@@ -283,6 +292,9 @@ First search on a new project takes 30 seconds to several minutes (depending on
|
|
|
283
292
|
|
|
284
293
|
CodeSeeker combines all three: **graph traversal** for structure, **vector search** for meaning, **text search** for precision—fused with Reciprocal Rank Fusion (RRF) for optimal results.
|
|
285
294
|
|
|
295
|
+
**Search quality guarantee:**
|
|
296
|
+
Every release is gated by a precision/recall benchmark suite that runs 104 tests across hand-curated TypeScript, Python, and Go fixtures (JWT middleware, generic repositories, async ORMs, Pydantic schemas, goroutine workers, and more). FTS, hybrid, and graph modes must all achieve R@5 = 1.0 and MRR = 1.0 for language-specific queries; a regression of more than 0.15 on any (query × mode) cell blocks the release automatically.
|
|
297
|
+
|
|
286
298
|
## Auto-Detected Coding Standards
|
|
287
299
|
|
|
288
300
|
CodeSeeker analyzes your codebase and extracts patterns:
|
|
@@ -43,6 +43,7 @@ export declare class SemanticSearchOrchestrator {
|
|
|
43
43
|
private useEmbedded;
|
|
44
44
|
private vectorStore?;
|
|
45
45
|
private projectStore?;
|
|
46
|
+
private graphStore?;
|
|
46
47
|
constructor();
|
|
47
48
|
/**
|
|
48
49
|
* Initialize storage - checks if we should use embedded or server mode
|
|
@@ -62,13 +63,32 @@ export declare class SemanticSearchOrchestrator {
|
|
|
62
63
|
* Combines vector similarity with keyword/synonym matching for better recall
|
|
63
64
|
* Returns empty array if storage unavailable or no results - Claude handles file discovery natively
|
|
64
65
|
*/
|
|
65
|
-
performSemanticSearch(query: string, projectPath: string): Promise<SemanticResult[]>;
|
|
66
|
+
performSemanticSearch(query: string, projectPath: string, searchType?: 'hybrid' | 'vector' | 'fts' | 'graph'): Promise<SemanticResult[]>;
|
|
66
67
|
/**
|
|
67
68
|
* Perform hybrid search using the storage interface abstraction
|
|
68
69
|
* Works for both embedded (SQLite + MiniSearch) and server (PostgreSQL + pgvector) modes
|
|
69
70
|
* The IVectorStore implementation handles the specific search logic internally
|
|
70
71
|
*/
|
|
71
72
|
private performHybridSearchViaInterface;
|
|
73
|
+
/**
|
|
74
|
+
* Perform vector-only semantic search (pure embedding similarity, no BM25/path matching)
|
|
75
|
+
*/
|
|
76
|
+
private performVectorOnlySearch;
|
|
77
|
+
/**
|
|
78
|
+
* Perform text/FTS-only search (BM25 + synonyms, no vector similarity)
|
|
79
|
+
*/
|
|
80
|
+
private performTextOnlySearch;
|
|
81
|
+
/**
|
|
82
|
+
* Deduplicate raw VectorSearchResults by file path, apply multi-chunk boost, and map to SemanticResult[].
|
|
83
|
+
* Shared by all search modes (vector, fts, hybrid, graph) to ensure consistent scoring behaviour.
|
|
84
|
+
*/
|
|
85
|
+
private processRawResults;
|
|
86
|
+
/**
|
|
87
|
+
* Graph RAG: expand hybrid search results by following 1-hop code relationship edges.
|
|
88
|
+
* For each of the top-5 result files, lookup its graph node and collect neighbours
|
|
89
|
+
* (files connected via imports/calls/extends). Appends new files at a discounted score.
|
|
90
|
+
*/
|
|
91
|
+
private expandWithGraphNeighbors;
|
|
72
92
|
/**
|
|
73
93
|
* Check if string is valid UUID
|
|
74
94
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-search-orchestrator.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/services/semantic-search-orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"semantic-search-orchestrator.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/services/semantic-search-orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AASH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,qBAAa,0BAA0B;IACrC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,WAAW,CAAC,CAAe;IACnC,OAAO,CAAC,YAAY,CAAC,CAAgB;IACrC,OAAO,CAAC,UAAU,CAAC,CAAc;;IAMjC;;OAEG;YACW,WAAW;IAgBzB;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;YACW,gBAAgB;IA0B9B;;;;;OAKG;IACG,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAkB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA4CxJ;;;;OAIG;YACW,+BAA+B;IA4B7C;;OAEG;YACW,uBAAuB;IAoBrC;;OAEG;YACW,qBAAqB;IAYnC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA+DzB;;;;OAIG;YACW,wBAAwB;IAsEtC;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;OAEG;IACH,OAAO,CAAC,aAAa;IA0BrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAiC1B"}
|
|
@@ -60,6 +60,7 @@ const path = __importStar(require("path"));
|
|
|
60
60
|
const logger_1 = require("../../../utils/logger");
|
|
61
61
|
const embedding_generator_adapter_1 = require("../../services/search/embedding-generator-adapter");
|
|
62
62
|
const storage_1 = require("../../../storage");
|
|
63
|
+
const raptor_indexing_service_1 = require("../../services/search/raptor-indexing-service");
|
|
63
64
|
class SemanticSearchOrchestrator {
|
|
64
65
|
logger = logger_1.Logger.getInstance();
|
|
65
66
|
projectId;
|
|
@@ -68,6 +69,7 @@ class SemanticSearchOrchestrator {
|
|
|
68
69
|
useEmbedded = false;
|
|
69
70
|
vectorStore;
|
|
70
71
|
projectStore;
|
|
72
|
+
graphStore;
|
|
71
73
|
constructor() {
|
|
72
74
|
this.embeddingGenerator = new embedding_generator_adapter_1.EmbeddingGeneratorAdapter();
|
|
73
75
|
}
|
|
@@ -82,6 +84,10 @@ class SemanticSearchOrchestrator {
|
|
|
82
84
|
this.useEmbedded = (0, storage_1.isUsingEmbeddedStorage)();
|
|
83
85
|
this.vectorStore = this.storageManager.getVectorStore();
|
|
84
86
|
this.projectStore = this.storageManager.getProjectStore();
|
|
87
|
+
try {
|
|
88
|
+
this.graphStore = this.storageManager.getGraphStore();
|
|
89
|
+
}
|
|
90
|
+
catch { /* graph store is optional */ }
|
|
85
91
|
this.logger.debug(`Semantic search using ${this.useEmbedded ? 'embedded' : 'server'} storage`);
|
|
86
92
|
}
|
|
87
93
|
catch (error) {
|
|
@@ -128,7 +134,7 @@ class SemanticSearchOrchestrator {
|
|
|
128
134
|
* Combines vector similarity with keyword/synonym matching for better recall
|
|
129
135
|
* Returns empty array if storage unavailable or no results - Claude handles file discovery natively
|
|
130
136
|
*/
|
|
131
|
-
async performSemanticSearch(query, projectPath) {
|
|
137
|
+
async performSemanticSearch(query, projectPath, searchType = 'hybrid') {
|
|
132
138
|
try {
|
|
133
139
|
// Initialize storage mode detection
|
|
134
140
|
await this.initStorage();
|
|
@@ -148,8 +154,20 @@ class SemanticSearchOrchestrator {
|
|
|
148
154
|
return [];
|
|
149
155
|
}
|
|
150
156
|
}
|
|
151
|
-
//
|
|
152
|
-
|
|
157
|
+
// Route to appropriate search method based on search_type
|
|
158
|
+
switch (searchType) {
|
|
159
|
+
case 'vector':
|
|
160
|
+
return await this.performVectorOnlySearch(query, projectPath);
|
|
161
|
+
case 'fts':
|
|
162
|
+
return await this.performTextOnlySearch(query, projectPath);
|
|
163
|
+
case 'graph': {
|
|
164
|
+
const base = await this.performHybridSearchViaInterface(query, projectPath);
|
|
165
|
+
return await this.expandWithGraphNeighbors(base, projectPath);
|
|
166
|
+
}
|
|
167
|
+
case 'hybrid':
|
|
168
|
+
default:
|
|
169
|
+
return await this.performHybridSearchViaInterface(query, projectPath);
|
|
170
|
+
}
|
|
153
171
|
}
|
|
154
172
|
catch (error) {
|
|
155
173
|
// Log at debug level - Claude handles file discovery anyway
|
|
@@ -180,62 +198,181 @@ class SemanticSearchOrchestrator {
|
|
|
180
198
|
// Request more results to allow for deduplication by file path
|
|
181
199
|
const results = await this.vectorStore.searchHybrid(query, queryEmbedding, this.projectId, 30);
|
|
182
200
|
this.logger.debug(`Hybrid search found ${results.length} results (before dedup)`);
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
201
|
+
return this.processRawResults(results, projectPath);
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
this.logger.debug(`Hybrid search error: ${error instanceof Error ? error.message : error}`);
|
|
205
|
+
return [];
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Perform vector-only semantic search (pure embedding similarity, no BM25/path matching)
|
|
210
|
+
*/
|
|
211
|
+
async performVectorOnlySearch(query, projectPath) {
|
|
212
|
+
if (!this.vectorStore || !this.projectId)
|
|
213
|
+
return [];
|
|
214
|
+
try {
|
|
215
|
+
let queryEmbedding = [];
|
|
216
|
+
try {
|
|
217
|
+
queryEmbedding = await this.embeddingGenerator.generateQueryEmbedding(query);
|
|
218
|
+
}
|
|
219
|
+
catch (e) {
|
|
220
|
+
this.logger.debug(`Vector embedding failed: ${e}`);
|
|
221
|
+
return [];
|
|
222
|
+
}
|
|
223
|
+
if (queryEmbedding.length === 0)
|
|
224
|
+
return [];
|
|
225
|
+
const results = await this.vectorStore.searchByVector(queryEmbedding, this.projectId, 30);
|
|
226
|
+
this.logger.debug(`Vector-only search found ${results.length} results`);
|
|
227
|
+
return this.processRawResults(results, projectPath);
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
this.logger.debug(`Vector search error: ${error instanceof Error ? error.message : error}`);
|
|
231
|
+
return [];
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Perform text/FTS-only search (BM25 + synonyms, no vector similarity)
|
|
236
|
+
*/
|
|
237
|
+
async performTextOnlySearch(query, projectPath) {
|
|
238
|
+
if (!this.vectorStore || !this.projectId)
|
|
239
|
+
return [];
|
|
240
|
+
try {
|
|
241
|
+
const results = await this.vectorStore.searchByText(query, this.projectId, 30);
|
|
242
|
+
this.logger.debug(`Text-only search found ${results.length} results`);
|
|
243
|
+
return this.processRawResults(results, projectPath);
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
this.logger.debug(`Text search error: ${error instanceof Error ? error.message : error}`);
|
|
247
|
+
return [];
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Deduplicate raw VectorSearchResults by file path, apply multi-chunk boost, and map to SemanticResult[].
|
|
252
|
+
* Shared by all search modes (vector, fts, hybrid, graph) to ensure consistent scoring behaviour.
|
|
253
|
+
*/
|
|
254
|
+
processRawResults(results, projectPath) {
|
|
255
|
+
// Deduplicate by file path with multi-chunk boost
|
|
256
|
+
// If multiple chunks from the same file match, that file is more relevant.
|
|
257
|
+
// Keep the highest-scoring chunk's content and boost its score.
|
|
258
|
+
const fileMap = new Map();
|
|
259
|
+
for (const r of results) {
|
|
260
|
+
const filePath = path.isAbsolute(r.document.filePath)
|
|
261
|
+
? path.relative(projectPath, r.document.filePath)
|
|
262
|
+
: r.document.filePath;
|
|
263
|
+
// RAPTOR nodes are synthetic summaries; don't merge or boost them.
|
|
264
|
+
if (raptor_indexing_service_1.RaptorIndexingService.isRaptorPath(filePath)) {
|
|
265
|
+
if (!fileMap.has(filePath)) {
|
|
266
|
+
fileMap.set(filePath, { result: r, chunkCount: 1 });
|
|
200
267
|
}
|
|
201
|
-
|
|
202
|
-
|
|
268
|
+
continue;
|
|
269
|
+
}
|
|
270
|
+
const existing = fileMap.get(filePath);
|
|
271
|
+
if (existing) {
|
|
272
|
+
existing.chunkCount++;
|
|
273
|
+
if (r.score > existing.result.score) {
|
|
274
|
+
existing.result = r;
|
|
203
275
|
}
|
|
204
276
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
277
|
+
else {
|
|
278
|
+
fileMap.set(filePath, { result: r, chunkCount: 1 });
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// Boost: +10% per additional matching chunk (capped at 50%), score capped at 1.0
|
|
282
|
+
const boostedResults = Array.from(fileMap.values()).map(entry => {
|
|
283
|
+
const chunkBoost = Math.min((entry.chunkCount - 1) * 0.10, 0.50);
|
|
284
|
+
const boostedScore = Math.min(1.0, entry.result.score * (1 + chunkBoost));
|
|
285
|
+
return { ...entry.result, score: boostedScore };
|
|
286
|
+
});
|
|
287
|
+
const uniqueResults = boostedResults.sort((a, b) => b.score - a.score).slice(0, 15);
|
|
288
|
+
this.logger.debug(`Returning ${uniqueResults.length} unique files after dedup`);
|
|
289
|
+
return uniqueResults.map(r => {
|
|
290
|
+
const rawFilePath = path.isAbsolute(r.document.filePath)
|
|
291
|
+
? path.relative(projectPath, r.document.filePath)
|
|
292
|
+
: r.document.filePath;
|
|
293
|
+
const isRaptor = raptor_indexing_service_1.RaptorIndexingService.isRaptorPath(rawFilePath);
|
|
294
|
+
const displayPath = isRaptor ? raptor_indexing_service_1.RaptorIndexingService.realPath(rawFilePath) : rawFilePath;
|
|
295
|
+
const raptorLevel = isRaptor ? r.document.metadata?.raptorLevel : undefined;
|
|
296
|
+
return {
|
|
297
|
+
file: displayPath,
|
|
298
|
+
type: isRaptor
|
|
299
|
+
? (raptorLevel === 3 ? 'root-summary' : 'directory-summary')
|
|
300
|
+
: this.determineFileType(r.document.filePath),
|
|
228
301
|
similarity: r.score,
|
|
229
302
|
content: this.formatContent(r.document.content, r.document.metadata),
|
|
230
|
-
lineStart: 1,
|
|
231
|
-
lineEnd: 20,
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
303
|
+
lineStart: isRaptor ? undefined : 1,
|
|
304
|
+
lineEnd: isRaptor ? undefined : 20,
|
|
305
|
+
debug: r.debug,
|
|
306
|
+
};
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Graph RAG: expand hybrid search results by following 1-hop code relationship edges.
|
|
311
|
+
* For each of the top-5 result files, lookup its graph node and collect neighbours
|
|
312
|
+
* (files connected via imports/calls/extends). Appends new files at a discounted score.
|
|
313
|
+
*/
|
|
314
|
+
async expandWithGraphNeighbors(results, projectPath) {
|
|
315
|
+
if (!this.graphStore || !this.projectId || results.length === 0)
|
|
316
|
+
return results;
|
|
317
|
+
try {
|
|
318
|
+
// Load all file nodes for this project once and build a filePath → nodeId map
|
|
319
|
+
const allFileNodes = await this.graphStore.findNodes(this.projectId, 'file');
|
|
320
|
+
if (allFileNodes.length === 0)
|
|
321
|
+
return results;
|
|
322
|
+
const normalize = (p) => p.replace(/\\/g, '/');
|
|
323
|
+
const filePathToNodeId = new Map();
|
|
324
|
+
for (const node of allFileNodes) {
|
|
325
|
+
// Index by both absolute and relative path to maximise matching
|
|
326
|
+
filePathToNodeId.set(normalize(node.filePath), node.id);
|
|
327
|
+
const rel = normalize(path.relative(projectPath, node.filePath));
|
|
328
|
+
if (rel && !rel.startsWith('..')) {
|
|
329
|
+
filePathToNodeId.set(rel, node.id);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
const existingPaths = new Set(results.map(r => normalize(r.file)));
|
|
333
|
+
// Only expand the top-5 hits to avoid adding noise from lower-ranked files
|
|
334
|
+
const TOP_K = Math.min(5, results.length);
|
|
335
|
+
const neighborFilePaths = new Set();
|
|
336
|
+
for (const result of results.slice(0, TOP_K)) {
|
|
337
|
+
const relNorm = normalize(result.file);
|
|
338
|
+
const absNorm = normalize(path.isAbsolute(result.file) ? result.file : path.join(projectPath, result.file));
|
|
339
|
+
const nodeId = filePathToNodeId.get(relNorm) || filePathToNodeId.get(absNorm);
|
|
340
|
+
if (!nodeId)
|
|
341
|
+
continue;
|
|
342
|
+
const neighbors = await this.graphStore.getNeighbors(nodeId);
|
|
343
|
+
for (const neighbor of neighbors) {
|
|
344
|
+
if (neighbor.type !== 'file')
|
|
345
|
+
continue;
|
|
346
|
+
const neighborRel = normalize(path.isAbsolute(neighbor.filePath)
|
|
347
|
+
? path.relative(projectPath, neighbor.filePath)
|
|
348
|
+
: neighbor.filePath);
|
|
349
|
+
if (!existingPaths.has(neighborRel)) {
|
|
350
|
+
neighborFilePaths.add(neighborRel);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
if (neighborFilePaths.size === 0)
|
|
355
|
+
return results;
|
|
356
|
+
// Score neighbors 30% below the lowest vector result
|
|
357
|
+
const worstScore = results[results.length - 1]?.similarity ?? 0.1;
|
|
358
|
+
const expansionScore = parseFloat(Math.max(0.05, worstScore * 0.7).toFixed(4));
|
|
359
|
+
const expanded = [...results];
|
|
360
|
+
for (const neighborPath of neighborFilePaths) {
|
|
361
|
+
expanded.push({
|
|
362
|
+
file: neighborPath,
|
|
363
|
+
type: this.determineFileType(neighborPath),
|
|
364
|
+
similarity: expansionScore,
|
|
365
|
+
content: '[Graph-related: connected via code relationships (imports/calls/extends)]',
|
|
366
|
+
lineStart: undefined,
|
|
367
|
+
lineEnd: undefined,
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
this.logger.debug(`Graph RAG: appended ${neighborFilePaths.size} related file(s)`);
|
|
371
|
+
return expanded;
|
|
235
372
|
}
|
|
236
373
|
catch (error) {
|
|
237
|
-
this.logger.debug(`
|
|
238
|
-
return
|
|
374
|
+
this.logger.debug(`Graph expansion error: ${error instanceof Error ? error.message : error}`);
|
|
375
|
+
return results; // Graceful fallback — return hybrid results unchanged
|
|
239
376
|
}
|
|
240
377
|
}
|
|
241
378
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-search-orchestrator.js","sourceRoot":"","sources":["../../../../src/cli/commands/services/semantic-search-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"semantic-search-orchestrator.js","sourceRoot":"","sources":["../../../../src/cli/commands/services/semantic-search-orchestrator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,2CAA6B;AAC7B,kDAA+C;AAC/C,mGAA8F;AAC9F,8CAA6F;AAE7F,2FAA0G;AAkB1G,MAAa,0BAA0B;IAC7B,MAAM,GAAG,eAAM,CAAC,WAAW,EAAE,CAAC;IAC9B,SAAS,CAAU;IACnB,kBAAkB,CAA4B;IAC9C,cAAc,GAA0B,IAAI,CAAC;IAC7C,WAAW,GAAY,KAAK,CAAC;IAC7B,WAAW,CAAgB;IAC3B,YAAY,CAAiB;IAC7B,UAAU,CAAe;IAEjC;QACE,IAAI,CAAC,kBAAkB,GAAG,IAAI,uDAAyB,EAAE,CAAC;IAC5D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW;QACvB,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI;YAAE,OAAO,CAAC,sBAAsB;QAEhE,IAAI,CAAC;YACH,IAAI,CAAC,cAAc,GAAG,MAAM,IAAA,2BAAiB,GAAE,CAAC;YAChD,IAAI,CAAC,WAAW,GAAG,IAAA,gCAAsB,GAAE,CAAC;YAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;YACxD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;YAC1D,IAAI,CAAC;gBAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,6BAA6B,CAAC,CAAC;YACtG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,UAAU,CAAC,CAAC;QACjG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAAiB;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,WAAmB;QAChD,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO,SAAS,CAAC;YAEzC,yCAAyC;YACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAChD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAE/C,uCAAuC;YACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAChC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC7C,OAAO,CAAC,CAAC,IAAI,KAAK,WAAW;oBACtB,CAAC,CAAC,IAAI,KAAK,YAAY;oBACvB,eAAe,KAAK,YAAY;oBAChC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YAEH,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,OAAO,CAAC,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACvG,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,qBAAqB,CAAC,KAAa,EAAE,WAAmB,EAAE,aAAoD,QAAQ;QAC1H,IAAI,CAAC;YACH,oCAAoC;YACpC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAEzB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAC7C,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,iFAAiF;YACjF,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;gBAC5D,IAAI,UAAU,EAAE,CAAC;oBACf,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;oBAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;oBACtE,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;YAED,0DAA0D;YAC1D,QAAQ,UAAU,EAAE,CAAC;gBACnB,KAAK,QAAQ;oBACX,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAChE,KAAK,KAAK;oBACR,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAC9D,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;oBAC5E,OAAO,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAChE,CAAC;gBACD,KAAK,QAAQ,CAAC;gBACd;oBACE,OAAO,MAAM,IAAI,CAAC,+BAA+B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAC1E,CAAC;QAEH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,4DAA4D;YAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACpG,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,+BAA+B,CAAC,KAAa,EAAE,WAAmB;QAC9E,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAEpD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAE7E,6CAA6C;YAC7C,IAAI,cAAc,GAAa,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC/E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8DAA8D,KAAK,EAAE,CAAC,CAAC;YAC3F,CAAC;YAED,4CAA4C;YAC5C,uGAAuG;YACvG,+DAA+D;YAC/D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAE/F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,OAAO,CAAC,MAAM,yBAAyB,CAAC,CAAC;YAClF,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAEtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5F,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,uBAAuB,CAAC,KAAa,EAAE,WAAmB;QACtE,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QACpD,IAAI,CAAC;YACH,IAAI,cAAc,GAAa,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC/E,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;gBACnD,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC1F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5F,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CAAC,KAAa,EAAE,WAAmB;QACpE,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC/E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1F,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,OAA6B,EAAE,WAAmB;QAC1E,kDAAkD;QAClD,2EAA2E;QAC3E,gEAAgE;QAChE,MAAM,OAAO,GAAG,IAAI,GAAG,EAA8D,CAAC;QAEtF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACnD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACjD,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAExB,mEAAmE;YACnE,IAAI,+CAAqB,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;gBACtD,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACtB,IAAI,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBACpC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,iFAAiF;QACjF,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;YACjE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;YAC1E,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,aAAa,CAAC,MAAM,2BAA2B,CAAC,CAAC;QAEhF,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACtD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACjD,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAExB,MAAM,QAAQ,GAAG,+CAAqB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACjE,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,+CAAqB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YACzF,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,QAAQ,CAAC,QAAgB,EAAE,WAAiC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE3G,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;oBACZ,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,mBAAmB,CAAC;oBAC5D,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC/C,UAAU,EAAE,CAAC,CAAC,KAAK;gBACnB,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACpE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACnC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;gBAClC,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,wBAAwB,CAAC,OAAyB,EAAE,WAAmB;QACnF,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QAChF,IAAI,CAAC;YACH,8EAA8E;YAC9E,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC7E,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC;YAE9C,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACvD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;YACnD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,gEAAgE;gBAChE,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACjE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEnE,2EAA2E;YAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;YAE5C,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5G,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC9E,IAAI,CAAC,MAAM;oBAAE,SAAS;gBAEtB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC7D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACjC,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM;wBAAE,SAAS;oBACvC,MAAM,WAAW,GAAG,SAAS,CAC3B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAChC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC;wBAC/C,CAAC,CAAC,QAAQ,CAAC,QAAQ,CACtB,CAAC;oBACF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;wBACpC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,iBAAiB,CAAC,IAAI,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC;YAEjD,qDAAqD;YACrD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,UAAU,IAAI,GAAG,CAAC;YAClE,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAE/E,MAAM,QAAQ,GAAqB,CAAC,GAAG,OAAO,CAAC,CAAC;YAChD,KAAK,MAAM,YAAY,IAAI,iBAAiB,EAAE,CAAC;gBAC7C,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;oBAC1C,UAAU,EAAE,cAAc;oBAC1B,OAAO,EAAE,2EAA2E;oBACpF,SAAS,EAAE,SAAS;oBACpB,OAAO,EAAE,SAAS;iBACnB,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,iBAAiB,CAAC,IAAI,kBAAkB,CAAC,CAAC;YACnF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9F,OAAO,OAAO,CAAC,CAAC,sDAAsD;QACxE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,GAAW;QAC7B,MAAM,SAAS,GAAG,iEAAiE,CAAC;QACpF,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,OAAe,EAAE,QAAa;QAClD,IAAI,SAAS,GAAG,OAAO,CAAC;QAExB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC5E,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,SAAS,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,SAAS,EAAE,CAAC;gBACpE,CAAC;gBACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,SAAS,GAAG,cAAc,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,SAAS,EAAE,CAAC;gBACpF,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;QACH,CAAC;QAED,+EAA+E;QAC/E,oEAAoE;QACpE,IAAI,SAAS,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YAC5B,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;QACnD,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,QAAgB;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAErD,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,OAAO,YAAY,CAAC;QACzD,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QACnD,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QACnD,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QACnD,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,OAAO,YAAY,CAAC;QACzD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,gBAAgB,CAAC;QACrF,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QACzE,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,OAAO,CAAC;QAC9E,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1E,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,eAAe,CAAC;QACxD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/E,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,WAAW,CAAC;QACrF,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,YAAY,CAAC;QAErF,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,OAAO,YAAY,CAAC;QACxD,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAClD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,gBAAgB,CAAC;QACtD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QACvE,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,OAAO,CAAC;QAC5E,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC5C,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,eAAe,CAAC;QAEvD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,QAAQ,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,eAAe,CAAC;QACrE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,eAAe,CAAC;QAElE,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AArZD,gEAqZC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RAPTOR Hierarchical Indexing Service
|
|
3
|
+
*
|
|
4
|
+
* A code-native variant of RAPTOR (Recursive Abstractive Processing for
|
|
5
|
+
* Tree-Organized Retrieval) that exploits the natural hierarchy of source code:
|
|
6
|
+
*
|
|
7
|
+
* chunk (file segment) → file → L2 (directory node) → L3 (root node)
|
|
8
|
+
*
|
|
9
|
+
* L2 nodes are created by mean-pooling the embeddings of all chunks within a
|
|
10
|
+
* directory, placing the node at the semantic centroid of that directory's content.
|
|
11
|
+
* No Claude CLI calls are needed — the centroid is computed from embeddings that
|
|
12
|
+
* already exist in the vector store.
|
|
13
|
+
*
|
|
14
|
+
* L3 is the mean of all L2 embeddings, representing the entire project.
|
|
15
|
+
*
|
|
16
|
+
* During search, L2/L3 nodes live in the same vector store as regular chunks.
|
|
17
|
+
* They surface naturally for abstract queries ("what does the auth package do?")
|
|
18
|
+
* and are invisible for concrete queries ("find the JWT refresh function").
|
|
19
|
+
*
|
|
20
|
+
* Incremental drift detection (used during sync):
|
|
21
|
+
* 1. Structural hash (sha256 of sorted child file paths) — detects file additions/deletions
|
|
22
|
+
* 2. Cosine distance between new pooled mean and stored RAPTOR embedding —
|
|
23
|
+
* skips the update when drift is below DRIFT_SKIP_THRESHOLD
|
|
24
|
+
*/
|
|
25
|
+
import type { IVectorStore } from '../../../storage/interfaces';
|
|
26
|
+
export declare const RAPTOR_FILE_PREFIX = "__raptor__/";
|
|
27
|
+
export interface RaptorGenerationResult {
|
|
28
|
+
l2NodesCreated: number;
|
|
29
|
+
l3Created: boolean;
|
|
30
|
+
durationMs: number;
|
|
31
|
+
}
|
|
32
|
+
export interface RaptorUpdateResult {
|
|
33
|
+
updatedDirs: string[];
|
|
34
|
+
skippedDirs: string[];
|
|
35
|
+
l3Updated: boolean;
|
|
36
|
+
}
|
|
37
|
+
export declare class RaptorIndexingService {
|
|
38
|
+
private logger;
|
|
39
|
+
/**
|
|
40
|
+
* Generate all RAPTOR nodes for a project immediately after file indexing.
|
|
41
|
+
* Reads embeddings back from the vector store and mean-pools per directory.
|
|
42
|
+
* Old RAPTOR nodes are purged first (idempotent on full reindex).
|
|
43
|
+
*/
|
|
44
|
+
generateForProject(projectPath: string, projectId: string, indexedFiles: string[], vectorStore: IVectorStore): Promise<RaptorGenerationResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Incrementally update RAPTOR nodes after a set of file changes.
|
|
47
|
+
* Uses structural hash + cosine drift to skip unnecessary regeneration.
|
|
48
|
+
*
|
|
49
|
+
* @param changedFiles Relative file paths that were created/modified/deleted
|
|
50
|
+
* @param deletedFiles Relative file paths that were deleted (subset of changedFiles)
|
|
51
|
+
*/
|
|
52
|
+
updateForChanges(projectPath: string, projectId: string, changedFiles: string[], deletedFiles: string[], vectorStore: IVectorStore): Promise<RaptorUpdateResult>;
|
|
53
|
+
private maybeUpdateL2Node;
|
|
54
|
+
/**
|
|
55
|
+
* Recompute the L3 root node by mean-pooling all current L2 embeddings.
|
|
56
|
+
* Called only when at least one L2 node changed.
|
|
57
|
+
*/
|
|
58
|
+
private maybeUpdateL3Node;
|
|
59
|
+
/**
|
|
60
|
+
* Return synthetic filePaths of all current L2 nodes (excludes the L3 root).
|
|
61
|
+
* Uses getFilePathsForDir with the __raptor__ prefix directory as root.
|
|
62
|
+
*/
|
|
63
|
+
private getRaptorL2Paths;
|
|
64
|
+
private groupByDirectory;
|
|
65
|
+
/** sha256 of the sorted file paths — cheap O(n log n), no parsing */
|
|
66
|
+
private computeStructuralHash;
|
|
67
|
+
private meanPool;
|
|
68
|
+
private cosineSimilarity;
|
|
69
|
+
private buildL2Content;
|
|
70
|
+
private buildL3Content;
|
|
71
|
+
/** Deterministic ID for an L2 (directory) RAPTOR node */
|
|
72
|
+
makeL2Id(projectId: string, dirPath: string): string;
|
|
73
|
+
/** Deterministic ID for the L3 (project root) RAPTOR node */
|
|
74
|
+
makeL3Id(projectId: string): string;
|
|
75
|
+
/**
|
|
76
|
+
* Utility: check whether a filePath represents a RAPTOR synthetic node.
|
|
77
|
+
* Import and call this in the search layer to distinguish RAPTOR hits.
|
|
78
|
+
*/
|
|
79
|
+
static isRaptorPath(filePath: string): boolean;
|
|
80
|
+
/** Strip the RAPTOR prefix, returning the real directory/root path */
|
|
81
|
+
static realPath(filePath: string): string;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=raptor-indexing-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raptor-indexing-service.d.ts","sourceRoot":"","sources":["../../../../src/cli/services/search/raptor-indexing-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAIhE,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AA4BhD,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;CACpB;AAID,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAwB;IAItC;;;;OAIG;IACG,kBAAkB,CACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,WAAW,EAAE,YAAY,GACxB,OAAO,CAAC,sBAAsB,CAAC;IAyFlC;;;;;;OAMG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,YAAY,EAAE,MAAM,EAAE,EACtB,WAAW,EAAE,YAAY,GACxB,OAAO,CAAC,kBAAkB,CAAC;YA+BhB,iBAAiB;IAwF/B;;;OAGG;YACW,iBAAiB;IAgD/B;;;OAGG;YACW,gBAAgB;IAwB9B,OAAO,CAAC,gBAAgB;IAWxB,qEAAqE;IACrE,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,cAAc;IAStB,yDAAyD;IACzD,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAKpD,6DAA6D;IAC7D,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI9C,sEAAsE;IACtE,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CAK1C"}
|