codebase-context 1.6.2 → 1.7.0
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/LICENSE +21 -21
- package/README.md +358 -282
- package/dist/analyzers/angular/index.d.ts.map +1 -1
- package/dist/analyzers/angular/index.js +7 -2
- package/dist/analyzers/angular/index.js.map +1 -1
- package/dist/analyzers/generic/index.d.ts +1 -0
- package/dist/analyzers/generic/index.d.ts.map +1 -1
- package/dist/analyzers/generic/index.js +89 -10
- package/dist/analyzers/generic/index.js.map +1 -1
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +240 -1
- package/dist/cli.js.map +1 -1
- package/dist/constants/codebase-context.d.ts +13 -0
- package/dist/constants/codebase-context.d.ts.map +1 -1
- package/dist/constants/codebase-context.js +13 -0
- package/dist/constants/codebase-context.js.map +1 -1
- package/dist/core/index-meta.d.ts +24 -0
- package/dist/core/index-meta.d.ts.map +1 -0
- package/dist/core/index-meta.js +204 -0
- package/dist/core/index-meta.js.map +1 -0
- package/dist/core/indexer.d.ts.map +1 -1
- package/dist/core/indexer.js +253 -14
- package/dist/core/indexer.js.map +1 -1
- package/dist/core/search.d.ts +1 -0
- package/dist/core/search.d.ts.map +1 -1
- package/dist/core/search.js +60 -5
- package/dist/core/search.js.map +1 -1
- package/dist/core/symbol-references.d.ts +21 -0
- package/dist/core/symbol-references.d.ts.map +1 -0
- package/dist/core/symbol-references.js +91 -0
- package/dist/core/symbol-references.js.map +1 -0
- package/dist/eval/harness.d.ts +5 -0
- package/dist/eval/harness.d.ts.map +1 -0
- package/dist/eval/harness.js +153 -0
- package/dist/eval/harness.js.map +1 -0
- package/dist/eval/types.d.ts +59 -0
- package/dist/eval/types.d.ts.map +1 -0
- package/dist/eval/types.js +2 -0
- package/dist/eval/types.js.map +1 -0
- package/dist/grammars/manifest.d.ts +26 -0
- package/dist/grammars/manifest.d.ts.map +1 -0
- package/dist/grammars/manifest.js +63 -0
- package/dist/grammars/manifest.js.map +1 -0
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +136 -1298
- package/dist/index.js.map +1 -1
- package/dist/preflight/evidence-lock.d.ts +6 -0
- package/dist/preflight/evidence-lock.d.ts.map +1 -1
- package/dist/preflight/evidence-lock.js +33 -1
- package/dist/preflight/evidence-lock.js.map +1 -1
- package/dist/storage/lancedb.d.ts +9 -1
- package/dist/storage/lancedb.d.ts.map +1 -1
- package/dist/storage/lancedb.js +26 -8
- package/dist/storage/lancedb.js.map +1 -1
- package/dist/tools/detect-circular-dependencies.d.ts +5 -0
- package/dist/tools/detect-circular-dependencies.d.ts.map +1 -0
- package/dist/tools/detect-circular-dependencies.js +117 -0
- package/dist/tools/detect-circular-dependencies.js.map +1 -0
- package/dist/tools/get-codebase-metadata.d.ts +5 -0
- package/dist/tools/get-codebase-metadata.d.ts.map +1 -0
- package/dist/tools/get-codebase-metadata.js +53 -0
- package/dist/tools/get-codebase-metadata.js.map +1 -0
- package/dist/tools/get-component-usage.d.ts +5 -0
- package/dist/tools/get-component-usage.d.ts.map +1 -0
- package/dist/tools/get-component-usage.js +83 -0
- package/dist/tools/get-component-usage.js.map +1 -0
- package/dist/tools/get-indexing-status.d.ts +5 -0
- package/dist/tools/get-indexing-status.d.ts.map +1 -0
- package/dist/tools/get-indexing-status.js +44 -0
- package/dist/tools/get-indexing-status.js.map +1 -0
- package/dist/tools/get-memory.d.ts +5 -0
- package/dist/tools/get-memory.d.ts.map +1 -0
- package/dist/tools/get-memory.js +89 -0
- package/dist/tools/get-memory.js.map +1 -0
- package/dist/tools/get-style-guide.d.ts +5 -0
- package/dist/tools/get-style-guide.d.ts.map +1 -0
- package/dist/tools/get-style-guide.js +151 -0
- package/dist/tools/get-style-guide.js.map +1 -0
- package/dist/tools/get-symbol-references.d.ts +5 -0
- package/dist/tools/get-symbol-references.d.ts.map +1 -0
- package/dist/tools/get-symbol-references.js +70 -0
- package/dist/tools/get-symbol-references.js.map +1 -0
- package/dist/tools/get-team-patterns.d.ts +5 -0
- package/dist/tools/get-team-patterns.d.ts.map +1 -0
- package/dist/tools/get-team-patterns.js +131 -0
- package/dist/tools/get-team-patterns.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +41 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/refresh-index.d.ts +5 -0
- package/dist/tools/refresh-index.d.ts.map +1 -0
- package/dist/tools/refresh-index.js +40 -0
- package/dist/tools/refresh-index.js.map +1 -0
- package/dist/tools/remember.d.ts +5 -0
- package/dist/tools/remember.d.ts.map +1 -0
- package/dist/tools/remember.js +101 -0
- package/dist/tools/remember.js.map +1 -0
- package/dist/tools/search-codebase.d.ts +5 -0
- package/dist/tools/search-codebase.d.ts.map +1 -0
- package/dist/tools/search-codebase.js +638 -0
- package/dist/tools/search-codebase.js.map +1 -0
- package/dist/tools/types.d.ts +31 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/ast-chunker.d.ts +71 -0
- package/dist/utils/ast-chunker.d.ts.map +1 -0
- package/dist/utils/ast-chunker.js +453 -0
- package/dist/utils/ast-chunker.js.map +1 -0
- package/dist/utils/chunking.d.ts.map +1 -1
- package/dist/utils/chunking.js +10 -3
- package/dist/utils/chunking.js.map +1 -1
- package/dist/utils/language-detection.d.ts.map +1 -1
- package/dist/utils/language-detection.js +20 -0
- package/dist/utils/language-detection.js.map +1 -1
- package/dist/utils/tree-sitter.d.ts +17 -0
- package/dist/utils/tree-sitter.d.ts.map +1 -0
- package/dist/utils/tree-sitter.js +311 -0
- package/dist/utils/tree-sitter.js.map +1 -0
- package/docs/capabilities.md +169 -92
- package/grammars/.gitkeep +0 -0
- package/grammars/tree-sitter-c.wasm +0 -0
- package/grammars/tree-sitter-c_sharp.wasm +0 -0
- package/grammars/tree-sitter-cpp.wasm +0 -0
- package/grammars/tree-sitter-go.wasm +0 -0
- package/grammars/tree-sitter-java.wasm +0 -0
- package/grammars/tree-sitter-javascript.wasm +0 -0
- package/grammars/tree-sitter-python.wasm +0 -0
- package/grammars/tree-sitter-rust.wasm +0 -0
- package/grammars/tree-sitter-tsx.wasm +0 -0
- package/grammars/tree-sitter-typescript.wasm +0 -0
- package/package.json +151 -157
package/dist/core/indexer.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Scans files, delegates to analyzers, creates embeddings, stores in vector DB
|
|
4
4
|
*/
|
|
5
5
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
6
|
+
import { randomUUID } from 'crypto';
|
|
6
7
|
import { promises as fs } from 'fs';
|
|
7
8
|
import path from 'path';
|
|
8
9
|
import { glob } from 'glob';
|
|
@@ -14,8 +15,140 @@ import { getStorageProvider } from '../storage/index.js';
|
|
|
14
15
|
import { LibraryUsageTracker, PatternDetector, ImportGraph, InternalFileGraph } from '../utils/usage-tracker.js';
|
|
15
16
|
import { mergeSmallChunks } from '../utils/chunking.js';
|
|
16
17
|
import { getFileCommitDates } from '../utils/git-dates.js';
|
|
17
|
-
import { CODEBASE_CONTEXT_DIRNAME, INDEXING_STATS_FILENAME, INTELLIGENCE_FILENAME, KEYWORD_INDEX_FILENAME, MANIFEST_FILENAME, VECTOR_DB_DIRNAME } from '../constants/codebase-context.js';
|
|
18
|
+
import { CODEBASE_CONTEXT_DIRNAME, INDEX_FORMAT_VERSION, INDEXING_STATS_FILENAME, INDEX_META_FILENAME, INDEX_META_VERSION, INTELLIGENCE_FILENAME, KEYWORD_INDEX_FILENAME, MANIFEST_FILENAME, RELATIONSHIPS_FILENAME, VECTOR_DB_DIRNAME } from '../constants/codebase-context.js';
|
|
19
|
+
const STAGING_DIRNAME = '.staging';
|
|
20
|
+
const PREVIOUS_DIRNAME = '.previous';
|
|
18
21
|
import { computeFileHashes, readManifest, writeManifest, diffManifest } from './manifest.js';
|
|
22
|
+
let cachedToolVersion = null;
|
|
23
|
+
async function getToolVersion() {
|
|
24
|
+
if (cachedToolVersion)
|
|
25
|
+
return cachedToolVersion;
|
|
26
|
+
try {
|
|
27
|
+
const pkgRaw = await fs.readFile(new URL('../../package.json', import.meta.url), 'utf-8');
|
|
28
|
+
const pkg = JSON.parse(pkgRaw);
|
|
29
|
+
if (typeof pkg.version === 'string' && pkg.version.trim()) {
|
|
30
|
+
cachedToolVersion = pkg.version;
|
|
31
|
+
return cachedToolVersion;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// Best-effort — fall back below
|
|
36
|
+
}
|
|
37
|
+
cachedToolVersion = 'unknown';
|
|
38
|
+
return cachedToolVersion;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Perform a Windows-safe atomic swap of staging artifacts into active location.
|
|
42
|
+
* Strategy: move current active to .previous, then rename staging to active.
|
|
43
|
+
* If staging rename fails, restore from .previous.
|
|
44
|
+
*/
|
|
45
|
+
async function atomicSwapStagingToActive(contextDir, stagingDir, buildId) {
|
|
46
|
+
const previousDir = path.join(contextDir, PREVIOUS_DIRNAME);
|
|
47
|
+
const activeMetaPath = path.join(contextDir, INDEX_META_FILENAME);
|
|
48
|
+
const activeIndexPath = path.join(contextDir, KEYWORD_INDEX_FILENAME);
|
|
49
|
+
const activeIntelligencePath = path.join(contextDir, INTELLIGENCE_FILENAME);
|
|
50
|
+
const activeVectorDir = path.join(contextDir, VECTOR_DB_DIRNAME);
|
|
51
|
+
const activeManifestPath = path.join(contextDir, MANIFEST_FILENAME);
|
|
52
|
+
const activeStatsPath = path.join(contextDir, INDEXING_STATS_FILENAME);
|
|
53
|
+
const activeRelationshipsPath = path.join(contextDir, RELATIONSHIPS_FILENAME);
|
|
54
|
+
const stagingMetaPath = path.join(stagingDir, INDEX_META_FILENAME);
|
|
55
|
+
const stagingIndexPath = path.join(stagingDir, KEYWORD_INDEX_FILENAME);
|
|
56
|
+
const stagingIntelligencePath = path.join(stagingDir, INTELLIGENCE_FILENAME);
|
|
57
|
+
const stagingVectorDir = path.join(stagingDir, VECTOR_DB_DIRNAME);
|
|
58
|
+
const stagingManifestPath = path.join(stagingDir, MANIFEST_FILENAME);
|
|
59
|
+
const stagingStatsPath = path.join(stagingDir, INDEXING_STATS_FILENAME);
|
|
60
|
+
const stagingRelationshipsPath = path.join(stagingDir, RELATIONSHIPS_FILENAME);
|
|
61
|
+
// Step 1: Create .previous directory and move current active there
|
|
62
|
+
await fs.mkdir(previousDir, { recursive: true });
|
|
63
|
+
const moveIfExists = async (src, dest) => {
|
|
64
|
+
try {
|
|
65
|
+
await fs.rename(src, dest);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
const code = error.code;
|
|
69
|
+
if (code !== 'ENOENT') {
|
|
70
|
+
// File doesn't exist is OK, other errors are problems
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
const moveDirIfExists = async (src, dest) => {
|
|
76
|
+
try {
|
|
77
|
+
const stat = await fs.stat(src);
|
|
78
|
+
if (stat.isDirectory()) {
|
|
79
|
+
await fs.rename(src, dest);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
const code = error.code;
|
|
84
|
+
if (code !== 'ENOENT') {
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
// Move active artifacts to .previous
|
|
90
|
+
await moveIfExists(activeMetaPath, path.join(previousDir, INDEX_META_FILENAME));
|
|
91
|
+
await moveIfExists(activeIndexPath, path.join(previousDir, KEYWORD_INDEX_FILENAME));
|
|
92
|
+
await moveIfExists(activeIntelligencePath, path.join(previousDir, INTELLIGENCE_FILENAME));
|
|
93
|
+
await moveIfExists(activeManifestPath, path.join(previousDir, MANIFEST_FILENAME));
|
|
94
|
+
await moveIfExists(activeStatsPath, path.join(previousDir, INDEXING_STATS_FILENAME));
|
|
95
|
+
await moveIfExists(activeRelationshipsPath, path.join(previousDir, RELATIONSHIPS_FILENAME));
|
|
96
|
+
await moveDirIfExists(activeVectorDir, path.join(previousDir, VECTOR_DB_DIRNAME));
|
|
97
|
+
// Step 2: Move staging artifacts to active location
|
|
98
|
+
try {
|
|
99
|
+
await moveIfExists(stagingMetaPath, activeMetaPath);
|
|
100
|
+
await moveIfExists(stagingIndexPath, activeIndexPath);
|
|
101
|
+
await moveIfExists(stagingIntelligencePath, activeIntelligencePath);
|
|
102
|
+
await moveIfExists(stagingManifestPath, activeManifestPath);
|
|
103
|
+
await moveIfExists(stagingStatsPath, activeStatsPath);
|
|
104
|
+
await moveIfExists(stagingRelationshipsPath, activeRelationshipsPath);
|
|
105
|
+
await moveDirIfExists(stagingVectorDir, activeVectorDir);
|
|
106
|
+
// Step 3: Clean up .previous and staging directories
|
|
107
|
+
await cleanupDirectory(previousDir);
|
|
108
|
+
await cleanupDirectory(stagingDir);
|
|
109
|
+
// Also clean up the parent .staging/ directory if empty
|
|
110
|
+
const stagingBase = path.join(contextDir, STAGING_DIRNAME);
|
|
111
|
+
try {
|
|
112
|
+
const remaining = await fs.readdir(stagingBase);
|
|
113
|
+
if (remaining.length === 0) {
|
|
114
|
+
await fs.rmdir(stagingBase);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
// Directory doesn't exist or not empty - ignore
|
|
119
|
+
}
|
|
120
|
+
console.error(`Atomic swap complete: build ${buildId} now active`);
|
|
121
|
+
}
|
|
122
|
+
catch (swapError) {
|
|
123
|
+
console.error('Atomic swap failed, attempting rollback:', swapError);
|
|
124
|
+
// Attempt rollback: restore from .previous
|
|
125
|
+
try {
|
|
126
|
+
await moveIfExists(path.join(previousDir, INDEX_META_FILENAME), activeMetaPath);
|
|
127
|
+
await moveIfExists(path.join(previousDir, KEYWORD_INDEX_FILENAME), activeIndexPath);
|
|
128
|
+
await moveIfExists(path.join(previousDir, INTELLIGENCE_FILENAME), activeIntelligencePath);
|
|
129
|
+
await moveIfExists(path.join(previousDir, MANIFEST_FILENAME), activeManifestPath);
|
|
130
|
+
await moveIfExists(path.join(previousDir, INDEXING_STATS_FILENAME), activeStatsPath);
|
|
131
|
+
await moveIfExists(path.join(previousDir, RELATIONSHIPS_FILENAME), activeRelationshipsPath);
|
|
132
|
+
await moveDirIfExists(path.join(previousDir, VECTOR_DB_DIRNAME), activeVectorDir);
|
|
133
|
+
console.error('Rollback successful');
|
|
134
|
+
}
|
|
135
|
+
catch (rollbackError) {
|
|
136
|
+
console.error('Rollback also failed:', rollbackError);
|
|
137
|
+
}
|
|
138
|
+
throw swapError;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Best-effort cleanup of a directory and its contents.
|
|
143
|
+
*/
|
|
144
|
+
async function cleanupDirectory(dirPath) {
|
|
145
|
+
try {
|
|
146
|
+
await fs.rm(dirPath, { recursive: true, force: true });
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
// Best-effort: ignore cleanup failures
|
|
150
|
+
}
|
|
151
|
+
}
|
|
19
152
|
export class CodebaseIndexer {
|
|
20
153
|
rootPath;
|
|
21
154
|
config;
|
|
@@ -115,7 +248,11 @@ export class CodebaseIndexer {
|
|
|
115
248
|
errors: [],
|
|
116
249
|
startedAt: new Date()
|
|
117
250
|
};
|
|
251
|
+
let stagingDir = null;
|
|
118
252
|
try {
|
|
253
|
+
const buildId = randomUUID();
|
|
254
|
+
const generatedAt = new Date().toISOString();
|
|
255
|
+
const toolVersion = await getToolVersion();
|
|
119
256
|
// Phase 1: Scanning
|
|
120
257
|
this.updateProgress('scanning', 0);
|
|
121
258
|
let files = await this.scanFiles();
|
|
@@ -177,7 +314,12 @@ export class CodebaseIndexer {
|
|
|
177
314
|
}
|
|
178
315
|
try {
|
|
179
316
|
const existingIndexPath = path.join(contextDir, KEYWORD_INDEX_FILENAME);
|
|
180
|
-
const
|
|
317
|
+
const existing = JSON.parse(await fs.readFile(existingIndexPath, 'utf-8'));
|
|
318
|
+
const existingChunks = Array.isArray(existing)
|
|
319
|
+
? existing
|
|
320
|
+
: existing && Array.isArray(existing.chunks)
|
|
321
|
+
? existing.chunks
|
|
322
|
+
: null;
|
|
181
323
|
if (Array.isArray(existingChunks)) {
|
|
182
324
|
stats.totalChunks = existingChunks.length;
|
|
183
325
|
if (stats.indexedFiles === 0) {
|
|
@@ -404,9 +546,21 @@ export class CodebaseIndexer {
|
|
|
404
546
|
}
|
|
405
547
|
// Phase 4: Storing
|
|
406
548
|
this.updateProgress('storing', 75);
|
|
407
|
-
|
|
549
|
+
// For full rebuilds, use staging directory for atomic swap
|
|
550
|
+
// For incremental, write directly to active location
|
|
551
|
+
const isFullRebuild = !diff;
|
|
552
|
+
let activeContextDir = contextDir;
|
|
553
|
+
if (isFullRebuild) {
|
|
554
|
+
// Create staging directory for atomic swap
|
|
555
|
+
const stagingBase = path.join(contextDir, STAGING_DIRNAME);
|
|
556
|
+
stagingDir = path.join(stagingBase, buildId);
|
|
557
|
+
await fs.mkdir(stagingDir, { recursive: true });
|
|
558
|
+
activeContextDir = stagingDir;
|
|
559
|
+
console.error(`Full rebuild: writing to staging ${stagingDir}`);
|
|
560
|
+
}
|
|
561
|
+
await fs.mkdir(activeContextDir, { recursive: true });
|
|
408
562
|
if (!this.config.skipEmbedding) {
|
|
409
|
-
const storagePath = path.join(
|
|
563
|
+
const storagePath = path.join(activeContextDir, VECTOR_DB_DIRNAME);
|
|
410
564
|
const storageProvider = await getStorageProvider({ path: storagePath });
|
|
411
565
|
if (diff) {
|
|
412
566
|
// Incremental: delete old chunks for changed + deleted files, then add new
|
|
@@ -424,19 +578,26 @@ export class CodebaseIndexer {
|
|
|
424
578
|
`added ${chunksWithEmbeddings.length} new chunks`);
|
|
425
579
|
}
|
|
426
580
|
else {
|
|
427
|
-
// Full: clear
|
|
428
|
-
console.error(`Storing ${chunksToEmbed.length} chunks...`);
|
|
429
|
-
await storageProvider.clear();
|
|
581
|
+
// Full rebuild: store to staging (no clear - fresh directory)
|
|
582
|
+
console.error(`Storing ${chunksToEmbed.length} chunks to staging...`);
|
|
430
583
|
await storageProvider.store(chunksWithEmbeddings);
|
|
431
584
|
}
|
|
432
585
|
}
|
|
586
|
+
// Vector DB build marker (required for version gating)
|
|
587
|
+
// Write after semantic store step so marker reflects the latest DB state.
|
|
588
|
+
const vectorDir = path.join(activeContextDir, VECTOR_DB_DIRNAME);
|
|
589
|
+
await fs.mkdir(vectorDir, { recursive: true });
|
|
590
|
+
await fs.writeFile(path.join(vectorDir, 'index-build.json'), JSON.stringify({ buildId, formatVersion: INDEX_FORMAT_VERSION }));
|
|
433
591
|
// Keyword index always uses ALL chunks (full regen)
|
|
434
|
-
const indexPath = path.join(
|
|
592
|
+
const indexPath = path.join(activeContextDir, KEYWORD_INDEX_FILENAME);
|
|
435
593
|
// Memory safety: cap keyword index too
|
|
436
594
|
const keywordChunks = allChunks.length > MAX_CHUNKS ? allChunks.slice(0, MAX_CHUNKS) : allChunks;
|
|
437
|
-
await fs.writeFile(indexPath, JSON.stringify(
|
|
595
|
+
await fs.writeFile(indexPath, JSON.stringify({
|
|
596
|
+
header: { buildId, formatVersion: INDEX_FORMAT_VERSION },
|
|
597
|
+
chunks: keywordChunks
|
|
598
|
+
}));
|
|
438
599
|
// Save library usage and pattern stats (always full regen)
|
|
439
|
-
const intelligencePath = path.join(
|
|
600
|
+
const intelligencePath = path.join(activeContextDir, INTELLIGENCE_FILENAME);
|
|
440
601
|
const libraryStats = libraryTracker.getStats();
|
|
441
602
|
// Extract tsconfig paths for AI to understand import aliases
|
|
442
603
|
let tsconfigPaths;
|
|
@@ -453,6 +614,7 @@ export class CodebaseIndexer {
|
|
|
453
614
|
// No tsconfig.json or no paths defined
|
|
454
615
|
}
|
|
455
616
|
const intelligence = {
|
|
617
|
+
header: { buildId, formatVersion: INDEX_FORMAT_VERSION },
|
|
456
618
|
libraryUsage: libraryStats,
|
|
457
619
|
patterns: patternDetector.getAllPatterns(),
|
|
458
620
|
goldenFiles: patternDetector.getGoldenFiles(5),
|
|
@@ -465,23 +627,91 @@ export class CodebaseIndexer {
|
|
|
465
627
|
},
|
|
466
628
|
// Internal file graph for circular dependency and unused export detection
|
|
467
629
|
internalFileGraph: internalFileGraph.toJSON(),
|
|
468
|
-
generatedAt
|
|
630
|
+
generatedAt
|
|
469
631
|
};
|
|
470
632
|
await fs.writeFile(intelligencePath, JSON.stringify(intelligence, null, 2));
|
|
633
|
+
// Write relationships sidecar (versioned, for fast lookup)
|
|
634
|
+
const relationshipsPath = path.join(activeContextDir, RELATIONSHIPS_FILENAME);
|
|
635
|
+
const graphData = internalFileGraph.toJSON();
|
|
636
|
+
// Build reverse import map (importedBy)
|
|
637
|
+
const importedBy = {};
|
|
638
|
+
if (graphData.imports) {
|
|
639
|
+
for (const [file, deps] of Object.entries(graphData.imports)) {
|
|
640
|
+
for (const dep of deps) {
|
|
641
|
+
if (!importedBy[dep])
|
|
642
|
+
importedBy[dep] = [];
|
|
643
|
+
importedBy[dep].push(file);
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
// Build symbol export map (exportedBy)
|
|
648
|
+
const exportedBy = {};
|
|
649
|
+
if (graphData.exports) {
|
|
650
|
+
for (const [file, exps] of Object.entries(graphData.exports)) {
|
|
651
|
+
for (const exp of exps) {
|
|
652
|
+
if (exp.name && exp.name !== 'default') {
|
|
653
|
+
if (!exportedBy[exp.name])
|
|
654
|
+
exportedBy[exp.name] = [];
|
|
655
|
+
if (!exportedBy[exp.name].includes(file)) {
|
|
656
|
+
exportedBy[exp.name].push(file);
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
const relationships = {
|
|
663
|
+
header: { buildId, formatVersion: INDEX_FORMAT_VERSION },
|
|
664
|
+
generatedAt,
|
|
665
|
+
graph: {
|
|
666
|
+
imports: graphData.imports || {},
|
|
667
|
+
importedBy,
|
|
668
|
+
exports: graphData.exports || {}
|
|
669
|
+
},
|
|
670
|
+
symbols: {
|
|
671
|
+
exportedBy
|
|
672
|
+
},
|
|
673
|
+
stats: graphData.stats || internalFileGraph.getStats()
|
|
674
|
+
};
|
|
675
|
+
await fs.writeFile(relationshipsPath, JSON.stringify(relationships, null, 2));
|
|
471
676
|
// Write manifest (both full and incremental)
|
|
677
|
+
// For full rebuild, write to staging; for incremental, write to active
|
|
678
|
+
const activeManifestPath = path.join(activeContextDir, MANIFEST_FILENAME);
|
|
472
679
|
const manifest = {
|
|
473
680
|
version: 1,
|
|
474
681
|
generatedAt: new Date().toISOString(),
|
|
475
682
|
files: currentHashes ?? (await computeFileHashes(files, this.rootPath))
|
|
476
683
|
};
|
|
477
|
-
await writeManifest(
|
|
684
|
+
await writeManifest(activeManifestPath, manifest);
|
|
478
685
|
const persistedStats = {
|
|
479
686
|
indexedFiles: stats.indexedFiles,
|
|
480
687
|
totalChunks: stats.totalChunks,
|
|
481
688
|
totalFiles: stats.totalFiles,
|
|
482
|
-
generatedAt
|
|
689
|
+
generatedAt
|
|
483
690
|
};
|
|
484
|
-
|
|
691
|
+
const activeIndexingStatsPath = path.join(activeContextDir, INDEXING_STATS_FILENAME);
|
|
692
|
+
await fs.writeFile(activeIndexingStatsPath, JSON.stringify(persistedStats, null, 2));
|
|
693
|
+
// Index meta (authoritative) — write last so readers never observe meta pointing to missing artifacts.
|
|
694
|
+
const metaPath = path.join(activeContextDir, INDEX_META_FILENAME);
|
|
695
|
+
await fs.writeFile(metaPath, JSON.stringify({
|
|
696
|
+
metaVersion: INDEX_META_VERSION,
|
|
697
|
+
formatVersion: INDEX_FORMAT_VERSION,
|
|
698
|
+
buildId,
|
|
699
|
+
generatedAt,
|
|
700
|
+
toolVersion,
|
|
701
|
+
artifacts: {
|
|
702
|
+
keywordIndex: { path: KEYWORD_INDEX_FILENAME },
|
|
703
|
+
vectorDb: { path: VECTOR_DB_DIRNAME, provider: 'lancedb' },
|
|
704
|
+
intelligence: { path: INTELLIGENCE_FILENAME },
|
|
705
|
+
manifest: { path: MANIFEST_FILENAME },
|
|
706
|
+
indexingStats: { path: INDEXING_STATS_FILENAME },
|
|
707
|
+
relationships: { path: RELATIONSHIPS_FILENAME }
|
|
708
|
+
}
|
|
709
|
+
}, null, 2));
|
|
710
|
+
// Atomic swap for full rebuilds: move staging into active location
|
|
711
|
+
if (isFullRebuild && stagingDir) {
|
|
712
|
+
console.error('Performing atomic swap of staging to active...');
|
|
713
|
+
await atomicSwapStagingToActive(contextDir, stagingDir, buildId);
|
|
714
|
+
}
|
|
485
715
|
// Phase 5: Complete
|
|
486
716
|
this.updateProgress('complete', 100);
|
|
487
717
|
stats.duration = Date.now() - startTime;
|
|
@@ -505,6 +735,11 @@ export class CodebaseIndexer {
|
|
|
505
735
|
phase: this.progress.phase,
|
|
506
736
|
timestamp: new Date()
|
|
507
737
|
});
|
|
738
|
+
// Clean up staging directory on failure (best-effort)
|
|
739
|
+
if (stagingDir) {
|
|
740
|
+
console.error('Cleaning up staging directory after failure...');
|
|
741
|
+
await cleanupDirectory(stagingDir);
|
|
742
|
+
}
|
|
508
743
|
throw error;
|
|
509
744
|
}
|
|
510
745
|
}
|
|
@@ -636,6 +871,10 @@ export class CodebaseIndexer {
|
|
|
636
871
|
const intelligencePath = path.join(this.rootPath, CODEBASE_CONTEXT_DIRNAME, INTELLIGENCE_FILENAME);
|
|
637
872
|
const intelligenceContent = await fs.readFile(intelligencePath, 'utf-8');
|
|
638
873
|
const intelligence = JSON.parse(intelligenceContent);
|
|
874
|
+
// Phase 06: ignore legacy intelligence files that lack a versioned header.
|
|
875
|
+
if (!intelligence || typeof intelligence !== 'object' || !intelligence.header) {
|
|
876
|
+
return metadata;
|
|
877
|
+
}
|
|
639
878
|
metadata.customMetadata = {
|
|
640
879
|
...metadata.customMetadata,
|
|
641
880
|
libraryUsage: intelligence.libraryUsage,
|
package/dist/core/indexer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../src/core/indexer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../src/core/indexer.ts"],"names":[],"mappings":"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"}
|
package/dist/core/search.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/core/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAa,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/core/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAa,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAgB3E,MAAM,WAAW,aAAa;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2FAA2F;IAC3F,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AA0E9E,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,SAAS,CAA0B;IAE3C,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,MAAM,CAAmB;IAEjC,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,eAAe,CAAsC;IAE7D,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,mBAAmB,CAIX;IAEhB,OAAO,CAAC,gBAAgB,CAAoC;gBAEhD,QAAQ,EAAE,MAAM;IAKtB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YA0BnB,gBAAgB;IA4C9B;;OAEG;YACW,uBAAuB;IA8ErC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqE3B,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,mBAAmB;IAoS3B,OAAO,CAAC,mBAAmB;YAuBb,oBAAoB;IAkF5B,MAAM,CACV,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAU,EACjB,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,GAAE,aAAsC,GAC9C,OAAO,CAAC,YAAY,EAAE,CAAC;IAoG1B,OAAO,CAAC,eAAe;IAiDvB,OAAO,CAAC,eAAe;YAWT,cAAc;YAmBd,aAAa;IA4E3B,OAAO,CAAC,uBAAuB;IAoBzB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAOtC,OAAO,IAAI,OAAO;CAGnB"}
|
package/dist/core/search.js
CHANGED
|
@@ -12,6 +12,7 @@ import { IndexCorruptedError } from '../errors/index.js';
|
|
|
12
12
|
import { isTestingRelatedQuery } from '../preflight/query-scope.js';
|
|
13
13
|
import { assessSearchQuality } from './search-quality.js';
|
|
14
14
|
import { rerank } from './reranker.js';
|
|
15
|
+
import { readIndexMeta, validateIndexArtifacts } from './index-meta.js';
|
|
15
16
|
import { CODEBASE_CONTEXT_DIRNAME, INTELLIGENCE_FILENAME, KEYWORD_INDEX_FILENAME, VECTOR_DB_DIRNAME } from '../constants/codebase-context.js';
|
|
16
17
|
const DEFAULT_SEARCH_OPTIONS = {
|
|
17
18
|
useSemanticSearch: true,
|
|
@@ -73,6 +74,7 @@ const QUERY_STOP_WORDS = new Set([
|
|
|
73
74
|
export class CodebaseSearcher {
|
|
74
75
|
rootPath;
|
|
75
76
|
storagePath;
|
|
77
|
+
indexMeta = null;
|
|
76
78
|
fuseIndex = null;
|
|
77
79
|
chunks = [];
|
|
78
80
|
embeddingProvider = null;
|
|
@@ -89,6 +91,9 @@ export class CodebaseSearcher {
|
|
|
89
91
|
if (this.initialized)
|
|
90
92
|
return;
|
|
91
93
|
try {
|
|
94
|
+
// Fail closed on version mismatch/corruption before serving any results.
|
|
95
|
+
this.indexMeta = await readIndexMeta(this.rootPath);
|
|
96
|
+
await validateIndexArtifacts(this.rootPath, this.indexMeta);
|
|
92
97
|
await this.loadKeywordIndex();
|
|
93
98
|
await this.loadPatternIntelligence();
|
|
94
99
|
this.embeddingProvider = await getEmbeddingProvider();
|
|
@@ -109,7 +114,15 @@ export class CodebaseSearcher {
|
|
|
109
114
|
try {
|
|
110
115
|
const indexPath = path.join(this.rootPath, CODEBASE_CONTEXT_DIRNAME, KEYWORD_INDEX_FILENAME);
|
|
111
116
|
const content = await fs.readFile(indexPath, 'utf-8');
|
|
112
|
-
|
|
117
|
+
const parsed = JSON.parse(content);
|
|
118
|
+
if (Array.isArray(parsed)) {
|
|
119
|
+
throw new IndexCorruptedError('Legacy keyword index format detected (missing header). Rebuild required.');
|
|
120
|
+
}
|
|
121
|
+
const chunks = parsed && Array.isArray(parsed.chunks) ? parsed.chunks : null;
|
|
122
|
+
if (!chunks) {
|
|
123
|
+
throw new IndexCorruptedError('Keyword index corrupted: expected { header, chunks }');
|
|
124
|
+
}
|
|
125
|
+
this.chunks = chunks;
|
|
113
126
|
this.fuseIndex = new Fuse(this.chunks, {
|
|
114
127
|
keys: [
|
|
115
128
|
{ name: 'content', weight: 0.4 },
|
|
@@ -127,9 +140,10 @@ export class CodebaseSearcher {
|
|
|
127
140
|
});
|
|
128
141
|
}
|
|
129
142
|
catch (error) {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
143
|
+
if (error instanceof IndexCorruptedError) {
|
|
144
|
+
throw error;
|
|
145
|
+
}
|
|
146
|
+
throw new IndexCorruptedError(`Keyword index load failed (rebuild required): ${error instanceof Error ? error.message : String(error)}`);
|
|
133
147
|
}
|
|
134
148
|
}
|
|
135
149
|
/**
|
|
@@ -513,6 +527,20 @@ export class CodebaseSearcher {
|
|
|
513
527
|
};
|
|
514
528
|
})
|
|
515
529
|
.sort((a, b) => b.score - a.score);
|
|
530
|
+
// SEARCH-01: Definition-first boost for EXACT_NAME intent
|
|
531
|
+
// Boost results where symbolName matches query (case-insensitive)
|
|
532
|
+
if (intent === 'EXACT_NAME') {
|
|
533
|
+
const queryNormalized = query.toLowerCase();
|
|
534
|
+
for (const result of scoredResults) {
|
|
535
|
+
const symbolName = result.metadata?.symbolName;
|
|
536
|
+
if (symbolName && symbolName.toLowerCase() === queryNormalized) {
|
|
537
|
+
result.score *= 1.15; // +15% boost for definition
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
// Re-sort after boost
|
|
541
|
+
scoredResults.sort((a, b) => b.score - a.score);
|
|
542
|
+
}
|
|
543
|
+
// File-level deduplication
|
|
516
544
|
const seenFiles = new Set();
|
|
517
545
|
const deduped = [];
|
|
518
546
|
for (const result of scoredResults) {
|
|
@@ -524,7 +552,34 @@ export class CodebaseSearcher {
|
|
|
524
552
|
if (deduped.length >= limit)
|
|
525
553
|
break;
|
|
526
554
|
}
|
|
527
|
-
|
|
555
|
+
// SEARCH-01: Symbol-level deduplication
|
|
556
|
+
// Within each symbol group (symbolPath), keep only the highest-scoring chunk
|
|
557
|
+
const seenSymbols = new Map();
|
|
558
|
+
const symbolDeduped = [];
|
|
559
|
+
for (const result of deduped) {
|
|
560
|
+
const symbolPath = result.metadata?.symbolPath;
|
|
561
|
+
if (!symbolPath) {
|
|
562
|
+
// No symbol info, keep as-is
|
|
563
|
+
symbolDeduped.push(result);
|
|
564
|
+
continue;
|
|
565
|
+
}
|
|
566
|
+
const symbolPathKey = Array.isArray(symbolPath) ? symbolPath.join('.') : String(symbolPath);
|
|
567
|
+
const existing = seenSymbols.get(symbolPathKey);
|
|
568
|
+
if (!existing || result.score > existing.score) {
|
|
569
|
+
if (existing) {
|
|
570
|
+
// Replace lower-scoring version
|
|
571
|
+
const idx = symbolDeduped.indexOf(existing);
|
|
572
|
+
if (idx >= 0) {
|
|
573
|
+
symbolDeduped[idx] = result;
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
else {
|
|
577
|
+
symbolDeduped.push(result);
|
|
578
|
+
}
|
|
579
|
+
seenSymbols.set(symbolPathKey, result);
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
const finalResults = symbolDeduped;
|
|
528
583
|
if (isNonTestQuery &&
|
|
529
584
|
finalResults.length < 3 &&
|
|
530
585
|
finalResults.length < limit &&
|