mcp-code-context 3.6.3 → 3.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/CHANGELOG.md +140 -278
- package/INSTRUCTIONS.md +23 -9
- package/README.md +217 -97
- package/SECURITY.md +55 -21
- package/dist/src/core/cacheManager.d.ts +4 -5
- package/dist/src/core/cacheManager.js +49 -33
- package/dist/src/core/cacheManager.js.map +1 -1
- package/dist/src/core/engine.d.ts +1 -1
- package/dist/src/core/engine.js +3 -3
- package/dist/src/core/engine.js.map +1 -1
- package/dist/src/core/indexManager.d.ts +58 -0
- package/dist/src/core/indexManager.js +252 -0
- package/dist/src/core/indexManager.js.map +1 -0
- package/dist/src/core/indexManagerQueries.d.ts +14 -0
- package/dist/src/core/indexManagerQueries.js +95 -0
- package/dist/src/core/indexManagerQueries.js.map +1 -0
- package/dist/src/core/sessionManager.d.ts +117 -0
- package/dist/src/core/sessionManager.js +231 -0
- package/dist/src/core/sessionManager.js.map +1 -0
- package/dist/src/core/validator.d.ts +1 -1
- package/dist/src/core/validator.js +18 -10
- package/dist/src/core/validator.js.map +1 -1
- package/dist/src/index.d.ts +1 -13
- package/dist/src/index.js +25 -999
- package/dist/src/index.js.map +1 -1
- package/dist/src/operations/astTransform.d.ts +38 -0
- package/dist/src/operations/astTransform.js +239 -0
- package/dist/src/operations/astTransform.js.map +1 -0
- package/dist/src/operations/compress.d.ts +5 -3
- package/dist/src/operations/compress.js +73 -7
- package/dist/src/operations/compress.js.map +1 -1
- package/dist/src/operations/confirmationStore.d.ts +35 -8
- package/dist/src/operations/confirmationStore.js +112 -14
- package/dist/src/operations/confirmationStore.js.map +1 -1
- package/dist/src/operations/impactAnalysis.d.ts +9 -0
- package/dist/src/operations/impactAnalysis.js +61 -0
- package/dist/src/operations/impactAnalysis.js.map +1 -0
- package/dist/src/operations/pendingStore.d.ts +51 -0
- package/dist/src/operations/pendingStore.js +201 -0
- package/dist/src/operations/pendingStore.js.map +1 -0
- package/dist/src/operations/pendingStoreInit.d.ts +6 -0
- package/dist/src/operations/pendingStoreInit.js +42 -0
- package/dist/src/operations/pendingStoreInit.js.map +1 -0
- package/dist/src/operations/read.d.ts +6 -92
- package/dist/src/operations/read.js +4 -449
- package/dist/src/operations/read.js.map +1 -1
- package/dist/src/operations/readCore.d.ts +33 -0
- package/dist/src/operations/readCore.js +142 -0
- package/dist/src/operations/readCore.js.map +1 -0
- package/dist/src/operations/rename.d.ts +13 -0
- package/dist/src/operations/rename.js +130 -0
- package/dist/src/operations/rename.js.map +1 -0
- package/dist/src/operations/searchOperation.d.ts +16 -0
- package/dist/src/operations/searchOperation.js +113 -0
- package/dist/src/operations/searchOperation.js.map +1 -0
- package/dist/src/operations/symbolQuery.d.ts +38 -0
- package/dist/src/operations/symbolQuery.js +194 -0
- package/dist/src/operations/symbolQuery.js.map +1 -0
- package/dist/src/operations/write.d.ts +11 -14
- package/dist/src/operations/write.js +6 -125
- package/dist/src/operations/write.js.map +1 -1
- package/dist/src/parsers/base.d.ts +1 -1
- package/dist/src/parsers/base.js +1 -1
- package/dist/src/parsers/csharp.d.ts +12 -0
- package/dist/src/parsers/csharp.js +67 -0
- package/dist/src/parsers/csharp.js.map +1 -0
- package/dist/src/parsers/dartTreeSitter.d.ts +1 -1
- package/dist/src/parsers/dartTreeSitter.js +1 -1
- package/dist/src/parsers/go.d.ts +11 -0
- package/dist/src/parsers/go.js +74 -0
- package/dist/src/parsers/go.js.map +1 -0
- package/dist/src/parsers/java.d.ts +12 -0
- package/dist/src/parsers/java.js +62 -0
- package/dist/src/parsers/java.js.map +1 -0
- package/dist/src/parsers/kotlin.d.ts +12 -0
- package/dist/src/parsers/kotlin.js +75 -0
- package/dist/src/parsers/kotlin.js.map +1 -0
- package/dist/src/parsers/php.d.ts +1 -1
- package/dist/src/parsers/php.js +1 -1
- package/dist/src/parsers/python.d.ts +1 -1
- package/dist/src/parsers/python.js +1 -1
- package/dist/src/parsers/registry.d.ts +1 -1
- package/dist/src/parsers/registry.js +63 -2
- package/dist/src/parsers/registry.js.map +1 -1
- package/dist/src/parsers/ruby.d.ts +12 -0
- package/dist/src/parsers/ruby.js +73 -0
- package/dist/src/parsers/ruby.js.map +1 -0
- package/dist/src/parsers/rust.d.ts +12 -0
- package/dist/src/parsers/rust.js +66 -0
- package/dist/src/parsers/rust.js.map +1 -0
- package/dist/src/parsers/typescript.d.ts +1 -1
- package/dist/src/parsers/typescript.js +28 -38
- package/dist/src/parsers/typescript.js.map +1 -1
- package/dist/src/tools/adminHandlers.d.ts +67 -0
- package/dist/src/tools/adminHandlers.js +129 -0
- package/dist/src/tools/adminHandlers.js.map +1 -0
- package/dist/src/tools/context.d.ts +9 -0
- package/dist/src/tools/context.js +21 -0
- package/dist/src/tools/context.js.map +1 -0
- package/dist/src/tools/handlers.d.ts +4 -0
- package/dist/src/tools/handlers.js +5 -0
- package/dist/src/tools/handlers.js.map +1 -0
- package/dist/src/tools/pipeline.d.ts +6 -0
- package/dist/src/tools/pipeline.js +100 -0
- package/dist/src/tools/pipeline.js.map +1 -0
- package/dist/src/tools/readHandlers.d.ts +55 -0
- package/dist/src/tools/readHandlers.js +220 -0
- package/dist/src/tools/readHandlers.js.map +1 -0
- package/dist/src/tools/toolDefinitions.d.ts +1037 -0
- package/dist/src/tools/toolDefinitions.js +13 -0
- package/dist/src/tools/toolDefinitions.js.map +1 -0
- package/dist/src/tools/toolDefinitionsAdmin.d.ts +89 -0
- package/dist/src/tools/toolDefinitionsAdmin.js +99 -0
- package/dist/src/tools/toolDefinitionsAdmin.js.map +1 -0
- package/dist/src/tools/toolDefinitionsCore.d.ts +949 -0
- package/dist/src/tools/toolDefinitionsCore.js +267 -0
- package/dist/src/tools/toolDefinitionsCore.js.map +1 -0
- package/dist/src/tools/writeHandlers.d.ts +37 -0
- package/dist/src/tools/writeHandlers.js +199 -0
- package/dist/src/tools/writeHandlers.js.map +1 -0
- package/dist/src/utils/appDir.d.ts +19 -0
- package/dist/src/utils/appDir.js +50 -0
- package/dist/src/utils/appDir.js.map +1 -0
- package/dist/src/utils/auditLogWriter.d.ts +9 -0
- package/dist/src/utils/auditLogWriter.js +49 -0
- package/dist/src/utils/auditLogWriter.js.map +1 -0
- package/dist/src/utils/auditLogger.d.ts +1 -10
- package/dist/src/utils/auditLogger.js +14 -109
- package/dist/src/utils/auditLogger.js.map +1 -1
- package/dist/src/utils/auditQuery.d.ts +23 -0
- package/dist/src/utils/auditQuery.js +67 -0
- package/dist/src/utils/auditQuery.js.map +1 -0
- package/dist/src/utils/backupManager.d.ts +2 -2
- package/dist/src/utils/backupManager.js +29 -12
- package/dist/src/utils/backupManager.js.map +1 -1
- package/dist/src/utils/constants.d.ts +1 -1
- package/dist/src/utils/constants.js +8 -1
- package/dist/src/utils/constants.js.map +1 -1
- package/dist/src/utils/diff.d.ts +12 -1
- package/dist/src/utils/diff.js +41 -1
- package/dist/src/utils/diff.js.map +1 -1
- package/dist/src/utils/fileLock.d.ts +7 -2
- package/dist/src/utils/fileLock.js +14 -11
- package/dist/src/utils/fileLock.js.map +1 -1
- package/dist/src/utils/fileWalker.d.ts +1 -1
- package/dist/src/utils/fileWalker.js +1 -1
- package/dist/src/utils/fileWatcher.d.ts +1 -1
- package/dist/src/utils/fileWatcher.js +1 -1
- package/dist/src/utils/fuzzySearch.d.ts +1 -1
- package/dist/src/utils/fuzzySearch.js +1 -1
- package/dist/src/utils/logger.d.ts +1 -1
- package/dist/src/utils/logger.js +2 -2
- package/dist/src/utils/logger.js.map +1 -1
- package/dist/src/utils/rateLimiter.d.ts +9 -1
- package/dist/src/utils/rateLimiter.js +12 -1
- package/dist/src/utils/rateLimiter.js.map +1 -1
- package/dist/src/utils/regexValidator.d.ts +12 -0
- package/dist/src/utils/regexValidator.js +48 -0
- package/dist/src/utils/regexValidator.js.map +1 -0
- package/dist/src/utils/safeRegex.d.ts +2 -92
- package/dist/src/utils/safeRegex.js +41 -222
- package/dist/src/utils/safeRegex.js.map +1 -1
- package/dist/src/utils/safeRegexApi.d.ts +56 -0
- package/dist/src/utils/safeRegexApi.js +99 -0
- package/dist/src/utils/safeRegexApi.js.map +1 -0
- package/dist/src/utils/safeRegexPool.d.ts +7 -0
- package/dist/src/utils/safeRegexPool.js +102 -0
- package/dist/src/utils/safeRegexPool.js.map +1 -0
- package/dist/src/utils/searchTools.js +6 -6
- package/dist/src/utils/searchTools.js.map +1 -1
- package/dist/src/utils/streaming.d.ts +4 -3
- package/dist/src/utils/streaming.js +1 -1
- package/dist/src/utils/streaming.js.map +1 -1
- package/dist/src/utils/telemetry.d.ts +1 -1
- package/dist/src/utils/telemetry.js +1 -1
- package/dist/src/utils/toctou.d.ts +7 -0
- package/dist/src/utils/toctou.js +24 -0
- package/dist/src/utils/toctou.js.map +1 -0
- package/llms.txt +173 -21
- package/package.json +2 -2
- package/scripts/replace-version.js +0 -59
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cache Manager - v3.6.3
|
|
3
|
-
* WASM SQLite cache with debounced persistence
|
|
4
|
-
*/
|
|
1
|
+
/** Cache Manager - WASM SQLite cache with debounced persistence */
|
|
5
2
|
import initSqlJs from 'sql.js';
|
|
6
3
|
import * as fs from 'node:fs/promises';
|
|
7
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
4
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, copyFileSync, rmSync, renameSync } from 'fs';
|
|
8
5
|
import * as path from 'path';
|
|
9
6
|
import * as crypto from 'node:crypto';
|
|
10
7
|
import { tmpdir } from 'os';
|
|
11
8
|
import { logger } from '../utils/logger.js';
|
|
12
9
|
import { FileWatcher } from '../utils/fileWatcher.js';
|
|
10
|
+
import { getAppDir } from '../utils/appDir.js';
|
|
13
11
|
export class CacheManager {
|
|
14
12
|
db = null;
|
|
15
13
|
dbPath;
|
|
16
14
|
cacheDir;
|
|
17
15
|
isDirty = false;
|
|
16
|
+
isPersisting = false;
|
|
18
17
|
persistTimer = null;
|
|
19
18
|
initPromise;
|
|
20
19
|
watcher = null;
|
|
@@ -23,20 +22,32 @@ export class CacheManager {
|
|
|
23
22
|
misses = 0;
|
|
24
23
|
constructor(projectRoot) {
|
|
25
24
|
this.projectRoot = projectRoot;
|
|
26
|
-
const projectHash = crypto.createHash('
|
|
25
|
+
const projectHash = crypto.createHash('sha256')
|
|
27
26
|
.update(projectRoot)
|
|
28
27
|
.digest('hex')
|
|
29
28
|
.substring(0, 8);
|
|
30
|
-
this.cacheDir =
|
|
29
|
+
this.cacheDir = getAppDir(`cache/${projectHash}`);
|
|
31
30
|
this.dbPath = path.join(this.cacheDir, 'cache.db');
|
|
31
|
+
// Silent migration: move existing os.tmpdir() cache to new location
|
|
32
|
+
const legacyDb = path.join(tmpdir(), 'mcp-cache', projectHash, 'cache.db');
|
|
33
|
+
if (existsSync(legacyDb) && !existsSync(this.dbPath)) {
|
|
34
|
+
try {
|
|
35
|
+
copyFileSync(legacyDb, this.dbPath);
|
|
36
|
+
rmSync(path.dirname(legacyDb), { recursive: true, force: true });
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
// Migration is best-effort — never block normal operation
|
|
40
|
+
logger.debug({ err }, 'Legacy cache migration failed (non-blocking)');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
32
43
|
// Initialize on construction
|
|
33
44
|
this.initPromise = this.init();
|
|
34
45
|
}
|
|
35
46
|
async init() {
|
|
36
47
|
try {
|
|
37
|
-
// Ensure cache directory exists (
|
|
48
|
+
// Ensure cache directory exists (recovery if manually deleted)
|
|
38
49
|
if (!existsSync(this.cacheDir)) {
|
|
39
|
-
logger.warn({ cacheDir: this.cacheDir }, 'Cache directory
|
|
50
|
+
logger.warn({ cacheDir: this.cacheDir }, 'Cache directory missing, recreating');
|
|
40
51
|
mkdirSync(this.cacheDir, { recursive: true });
|
|
41
52
|
}
|
|
42
53
|
const SQL = await initSqlJs();
|
|
@@ -155,12 +166,12 @@ export class CacheManager {
|
|
|
155
166
|
return { totalEntries: 0, totalSize: 0, hits: 0, misses: 0, hitRate: '0%', oldestEntry: null, newestEntry: null };
|
|
156
167
|
}
|
|
157
168
|
try {
|
|
158
|
-
const stmt = this.db.prepare(`
|
|
159
|
-
SELECT
|
|
160
|
-
COUNT(*) as count,
|
|
161
|
-
MIN(cached_at) as oldest,
|
|
162
|
-
MAX(cached_at) as newest
|
|
163
|
-
FROM file_cache
|
|
169
|
+
const stmt = this.db.prepare(`
|
|
170
|
+
SELECT
|
|
171
|
+
COUNT(*) as count,
|
|
172
|
+
MIN(cached_at) as oldest,
|
|
173
|
+
MAX(cached_at) as newest
|
|
174
|
+
FROM file_cache
|
|
164
175
|
`);
|
|
165
176
|
stmt.step();
|
|
166
177
|
const row = stmt.getAsObject();
|
|
@@ -191,17 +202,23 @@ export class CacheManager {
|
|
|
191
202
|
this.persistTimer = setTimeout(() => this.persist(), 5000);
|
|
192
203
|
}
|
|
193
204
|
async persist() {
|
|
194
|
-
if (!this.isDirty || !this.db)
|
|
205
|
+
if (!this.isDirty || !this.db || this.isPersisting)
|
|
195
206
|
return;
|
|
207
|
+
this.isPersisting = true;
|
|
196
208
|
try {
|
|
197
209
|
const data = this.db.export();
|
|
198
210
|
const buffer = Buffer.from(data);
|
|
199
|
-
|
|
211
|
+
const tmpPath = `${this.dbPath}.tmp`;
|
|
212
|
+
await fs.writeFile(tmpPath, buffer);
|
|
213
|
+
await fs.rename(tmpPath, this.dbPath);
|
|
200
214
|
this.isDirty = false;
|
|
201
|
-
logger.debug({ dbPath: this.dbPath, size: buffer.length },
|
|
215
|
+
logger.debug({ dbPath: this.dbPath, size: buffer.length }, "Cache persisted");
|
|
202
216
|
}
|
|
203
217
|
catch (error) {
|
|
204
|
-
logger.error({ error },
|
|
218
|
+
logger.error({ error }, "Failed to persist cache");
|
|
219
|
+
}
|
|
220
|
+
finally {
|
|
221
|
+
this.isPersisting = false;
|
|
205
222
|
}
|
|
206
223
|
}
|
|
207
224
|
async close() {
|
|
@@ -224,38 +241,37 @@ export class CacheManager {
|
|
|
224
241
|
* CRITICAL: Only call from global shutdown hooks
|
|
225
242
|
*/
|
|
226
243
|
persistOnExit() {
|
|
227
|
-
if (!this.isDirty || !this.db)
|
|
244
|
+
if (!this.isDirty || !this.db || this.isPersisting)
|
|
228
245
|
return;
|
|
246
|
+
this.isPersisting = true;
|
|
229
247
|
try {
|
|
230
248
|
const data = this.db.export();
|
|
231
249
|
const buffer = Buffer.from(data);
|
|
232
|
-
|
|
250
|
+
const tmpPath = `${this.dbPath}.tmp`;
|
|
251
|
+
writeFileSync(tmpPath, buffer);
|
|
252
|
+
renameSync(tmpPath, this.dbPath);
|
|
233
253
|
this.isDirty = false;
|
|
234
254
|
}
|
|
235
255
|
catch (error) {
|
|
236
|
-
console.error(
|
|
256
|
+
console.error("Failed to persist cache on exit:", error);
|
|
257
|
+
}
|
|
258
|
+
finally {
|
|
259
|
+
this.isPersisting = false;
|
|
237
260
|
}
|
|
238
261
|
}
|
|
239
262
|
startWatcher(debounceMs = 500) {
|
|
240
|
-
if (this.watcher)
|
|
241
|
-
logger.warn({ projectRoot: this.projectRoot }, 'Watcher already started');
|
|
263
|
+
if (this.watcher)
|
|
242
264
|
return;
|
|
243
|
-
}
|
|
244
265
|
this.watcher = new FileWatcher({
|
|
245
266
|
debounceMs,
|
|
246
267
|
ignored: [],
|
|
247
|
-
onFileChange:
|
|
248
|
-
await this.invalidate(filePath);
|
|
249
|
-
logger.debug({ filePath }, 'Cache invalidated by file watcher');
|
|
250
|
-
},
|
|
268
|
+
onFileChange: (filePath) => { void this.invalidate(filePath); },
|
|
251
269
|
});
|
|
252
270
|
this.watcher.start(this.projectRoot);
|
|
253
271
|
}
|
|
254
272
|
stopWatcher() {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
this.watcher = null;
|
|
258
|
-
}
|
|
273
|
+
this.watcher?.stop();
|
|
274
|
+
this.watcher = null;
|
|
259
275
|
}
|
|
260
276
|
getWatcherStatus() {
|
|
261
277
|
return this.watcher ? this.watcher.getStatus() : { isWatching: false, watchedFiles: 0 };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cacheManager.js","sourceRoot":"","sources":["../../../src/core/cacheManager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cacheManager.js","sourceRoot":"","sources":["../../../src/core/cacheManager.ts"],"names":[],"mappings":"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"}
|
package/dist/src/core/engine.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Core Engine - v3.
|
|
2
|
+
* Core Engine - v3.7.0
|
|
3
3
|
* ASYNC I/O: Migrated to fs.promises
|
|
4
4
|
*/
|
|
5
5
|
import { Parser, Language } from "web-tree-sitter";
|
|
@@ -47,7 +47,7 @@ export class CodeContextEngine {
|
|
|
47
47
|
possiblePaths.unshift(path.join(path.dirname(pkgPath), "out", wasmFile));
|
|
48
48
|
}
|
|
49
49
|
catch {
|
|
50
|
-
//
|
|
50
|
+
// require.resolve probe failed — expected when running under npx or global install
|
|
51
51
|
}
|
|
52
52
|
let wasmPath = null;
|
|
53
53
|
for (const p of possiblePaths) {
|
|
@@ -57,7 +57,7 @@ export class CodeContextEngine {
|
|
|
57
57
|
break;
|
|
58
58
|
}
|
|
59
59
|
catch {
|
|
60
|
-
continue;
|
|
60
|
+
continue; // WASM file not at this path — try next candidate
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
if (!wasmPath) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/core/engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAO5C,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAe;IACrB,WAAW,GAAY,KAAK,CAAC;IAC7B,MAAM,GAAkB,IAAI,CAAC;IAC7B,SAAS,GAA0B,IAAI,GAAG,EAAE,CAAC;IAErD,YAAY,SAAuB,EAAE;QACnC,IAAI,CAAC,MAAM,GAAG;YACZ,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC;YAC1C,YAAY,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;YAC/B,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAEpB,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,QAAQ,GAAG,eAAe,IAAI,OAAO,CAAC;QAE5C,MAAM,aAAa,GAAG;YACpB,kDAAkD;YAClD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,mBAAmB,EAAE,KAAK,EAAE,QAAQ,CAAC;YACpH,wDAAwD;YACxD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,mBAAmB,EAAE,KAAK,EAAE,QAAQ,CAAC;YAC1H,+BAA+B;YAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,KAAK,EAAE,QAAQ,CAAC;SAC/E,CAAC;QAEF,iFAAiF;QACjF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;YAClE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACP,
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/core/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Index Manager - v3.7.0
|
|
3
|
+
* Persistent symbol index and dependency graph in ~/.mcp-code-context/index/
|
|
4
|
+
* Enables O(1) search_symbols and analyze_impact queries.
|
|
5
|
+
*/
|
|
6
|
+
import type { SymbolInfo } from "../parsers/base.js";
|
|
7
|
+
export interface IndexedSymbol {
|
|
8
|
+
filePath: string;
|
|
9
|
+
name: string;
|
|
10
|
+
type: string;
|
|
11
|
+
startLine: number;
|
|
12
|
+
endLine: number;
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface IndexStats {
|
|
16
|
+
filesIndexed: number;
|
|
17
|
+
symbolsIndexed: number;
|
|
18
|
+
dependenciesIndexed: number;
|
|
19
|
+
dbSizeBytes: number;
|
|
20
|
+
lastIndexedAt: number | null;
|
|
21
|
+
}
|
|
22
|
+
export declare class IndexManager {
|
|
23
|
+
private db;
|
|
24
|
+
private dbPath;
|
|
25
|
+
private indexDir;
|
|
26
|
+
private isDirty;
|
|
27
|
+
private persistTimer;
|
|
28
|
+
private initPromise;
|
|
29
|
+
constructor(projectRoot: string);
|
|
30
|
+
private init;
|
|
31
|
+
private initSchema;
|
|
32
|
+
/**
|
|
33
|
+
* Check if a file needs re-indexing based on its hash.
|
|
34
|
+
*/
|
|
35
|
+
isStale(filePath: string, currentHash: string): Promise<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* Index a single file: upsert symbols and dependencies atomically.
|
|
38
|
+
*/
|
|
39
|
+
indexFile(filePath: string, fileHash: string, symbols: SymbolInfo[], dependencies: string[]): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Remove a file from the index (called by file watcher on delete).
|
|
42
|
+
*/
|
|
43
|
+
removeFile(filePath: string): Promise<void>;
|
|
44
|
+
searchSymbols(query: string, options?: {
|
|
45
|
+
fuzzy?: boolean;
|
|
46
|
+
types?: string[];
|
|
47
|
+
maxResults?: number;
|
|
48
|
+
}): Promise<IndexedSymbol[]>;
|
|
49
|
+
getDependents(filePath: string): Promise<string[]>;
|
|
50
|
+
getDependencies(filePath: string): Promise<string[]>;
|
|
51
|
+
hasIndex(): Promise<boolean>;
|
|
52
|
+
getStats(): Promise<IndexStats>;
|
|
53
|
+
clear(): Promise<void>;
|
|
54
|
+
private schedulePersist;
|
|
55
|
+
private persist;
|
|
56
|
+
persistOnExit(): void;
|
|
57
|
+
close(): Promise<void>;
|
|
58
|
+
}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Index Manager - v3.7.0
|
|
3
|
+
* Persistent symbol index and dependency graph in ~/.mcp-code-context/index/
|
|
4
|
+
* Enables O(1) search_symbols and analyze_impact queries.
|
|
5
|
+
*/
|
|
6
|
+
import initSqlJs from "sql.js";
|
|
7
|
+
import * as fs from "node:fs/promises";
|
|
8
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, renameSync } from "fs";
|
|
9
|
+
import * as path from "path";
|
|
10
|
+
import * as crypto from "node:crypto";
|
|
11
|
+
import { logger } from "../utils/logger.js";
|
|
12
|
+
import { getAppDir } from "../utils/appDir.js";
|
|
13
|
+
import { searchSymbolsInDb, getDependentsFromDb, getDependenciesFromDb, hasIndexInDb, getIndexStatsFromDb, } from "./indexManagerQueries.js";
|
|
14
|
+
export class IndexManager {
|
|
15
|
+
db = null;
|
|
16
|
+
dbPath;
|
|
17
|
+
indexDir;
|
|
18
|
+
isDirty = false;
|
|
19
|
+
persistTimer = null;
|
|
20
|
+
initPromise;
|
|
21
|
+
constructor(projectRoot) {
|
|
22
|
+
const projectHash = crypto
|
|
23
|
+
.createHash("sha256")
|
|
24
|
+
.update(projectRoot)
|
|
25
|
+
.digest("hex")
|
|
26
|
+
.substring(0, 8);
|
|
27
|
+
this.indexDir = getAppDir(`index/${projectHash}`);
|
|
28
|
+
this.dbPath = path.join(this.indexDir, "index.db");
|
|
29
|
+
this.initPromise = this.init();
|
|
30
|
+
}
|
|
31
|
+
async init() {
|
|
32
|
+
try {
|
|
33
|
+
if (!existsSync(this.indexDir)) {
|
|
34
|
+
mkdirSync(this.indexDir, { recursive: true });
|
|
35
|
+
}
|
|
36
|
+
const SQL = await initSqlJs();
|
|
37
|
+
if (existsSync(this.dbPath)) {
|
|
38
|
+
const buffer = readFileSync(this.dbPath);
|
|
39
|
+
this.db = new SQL.Database(buffer);
|
|
40
|
+
logger.debug({ dbPath: this.dbPath }, "Loaded existing index database");
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.db = new SQL.Database();
|
|
44
|
+
this.initSchema();
|
|
45
|
+
logger.info({ dbPath: this.dbPath }, "Created new index database");
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
logger.error({ error }, "Failed to initialize index");
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
initSchema() {
|
|
54
|
+
if (!this.db)
|
|
55
|
+
return;
|
|
56
|
+
this.db.run(`
|
|
57
|
+
CREATE TABLE IF NOT EXISTS files (
|
|
58
|
+
file_path TEXT PRIMARY KEY,
|
|
59
|
+
file_hash TEXT NOT NULL,
|
|
60
|
+
indexed_at INTEGER NOT NULL
|
|
61
|
+
)
|
|
62
|
+
`);
|
|
63
|
+
this.db.run(`
|
|
64
|
+
CREATE TABLE IF NOT EXISTS symbols (
|
|
65
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
66
|
+
file_path TEXT NOT NULL,
|
|
67
|
+
name TEXT NOT NULL,
|
|
68
|
+
type TEXT NOT NULL,
|
|
69
|
+
start_line INTEGER NOT NULL DEFAULT 0,
|
|
70
|
+
end_line INTEGER NOT NULL DEFAULT 0,
|
|
71
|
+
class_name TEXT,
|
|
72
|
+
FOREIGN KEY (file_path) REFERENCES files(file_path) ON DELETE CASCADE
|
|
73
|
+
)
|
|
74
|
+
`);
|
|
75
|
+
this.db.run(`CREATE INDEX IF NOT EXISTS idx_symbols_name ON symbols(name)`);
|
|
76
|
+
this.db.run(`CREATE INDEX IF NOT EXISTS idx_symbols_file ON symbols(file_path)`);
|
|
77
|
+
this.db.run(`CREATE INDEX IF NOT EXISTS idx_symbols_name_lower ON symbols(LOWER(name))`);
|
|
78
|
+
this.db.run(`
|
|
79
|
+
CREATE TABLE IF NOT EXISTS dependencies (
|
|
80
|
+
from_file TEXT NOT NULL,
|
|
81
|
+
to_file TEXT NOT NULL,
|
|
82
|
+
import_stmt TEXT,
|
|
83
|
+
PRIMARY KEY (from_file, to_file)
|
|
84
|
+
)
|
|
85
|
+
`);
|
|
86
|
+
this.db.run(`CREATE INDEX IF NOT EXISTS idx_deps_from ON dependencies(from_file)`);
|
|
87
|
+
this.db.run(`CREATE INDEX IF NOT EXISTS idx_deps_to ON dependencies(to_file)`);
|
|
88
|
+
}
|
|
89
|
+
// ── Public API ────────────────────────────────────────────────────────────
|
|
90
|
+
/**
|
|
91
|
+
* Check if a file needs re-indexing based on its hash.
|
|
92
|
+
*/
|
|
93
|
+
async isStale(filePath, currentHash) {
|
|
94
|
+
await this.initPromise;
|
|
95
|
+
if (!this.db)
|
|
96
|
+
return true;
|
|
97
|
+
const stmt = this.db.prepare("SELECT file_hash FROM files WHERE file_path = ?");
|
|
98
|
+
stmt.bind([filePath]);
|
|
99
|
+
const exists = stmt.step();
|
|
100
|
+
const row = exists ? stmt.getAsObject() : null;
|
|
101
|
+
stmt.free();
|
|
102
|
+
return !row || row.file_hash !== currentHash;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Index a single file: upsert symbols and dependencies atomically.
|
|
106
|
+
*/
|
|
107
|
+
async indexFile(filePath, fileHash, symbols, dependencies) {
|
|
108
|
+
await this.initPromise;
|
|
109
|
+
if (!this.db)
|
|
110
|
+
return;
|
|
111
|
+
try {
|
|
112
|
+
this.db.run("BEGIN");
|
|
113
|
+
// Upsert file record
|
|
114
|
+
this.db.run("INSERT OR REPLACE INTO files (file_path, file_hash, indexed_at) VALUES (?, ?, ?)", [filePath, fileHash, Date.now()]);
|
|
115
|
+
// Delete old symbols for this file
|
|
116
|
+
this.db.run("DELETE FROM symbols WHERE file_path = ?", [filePath]);
|
|
117
|
+
// Insert new symbols
|
|
118
|
+
const symStmt = this.db.prepare(`INSERT INTO symbols (file_path, name, type, start_line, end_line, class_name)
|
|
119
|
+
VALUES (?, ?, ?, ?, ?, ?)`);
|
|
120
|
+
for (const sym of symbols) {
|
|
121
|
+
symStmt.run([
|
|
122
|
+
filePath,
|
|
123
|
+
sym.name,
|
|
124
|
+
sym.type,
|
|
125
|
+
sym.startLine ?? 0,
|
|
126
|
+
sym.endLine ?? 0,
|
|
127
|
+
sym.className ?? null,
|
|
128
|
+
]);
|
|
129
|
+
}
|
|
130
|
+
symStmt.free();
|
|
131
|
+
// Delete old dependencies from this file
|
|
132
|
+
this.db.run("DELETE FROM dependencies WHERE from_file = ?", [filePath]);
|
|
133
|
+
// Insert new dependencies
|
|
134
|
+
const depStmt = this.db.prepare("INSERT OR IGNORE INTO dependencies (from_file, to_file) VALUES (?, ?)");
|
|
135
|
+
for (const dep of dependencies) {
|
|
136
|
+
depStmt.run([filePath, dep]);
|
|
137
|
+
}
|
|
138
|
+
depStmt.free();
|
|
139
|
+
this.db.run("COMMIT");
|
|
140
|
+
this.isDirty = true;
|
|
141
|
+
this.schedulePersist();
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
this.db.run("ROLLBACK");
|
|
145
|
+
logger.error({ error, filePath }, "Failed to index file");
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Remove a file from the index (called by file watcher on delete).
|
|
150
|
+
*/
|
|
151
|
+
async removeFile(filePath) {
|
|
152
|
+
await this.initPromise;
|
|
153
|
+
if (!this.db)
|
|
154
|
+
return;
|
|
155
|
+
this.db.run("DELETE FROM files WHERE file_path = ?", [filePath]);
|
|
156
|
+
this.db.run("DELETE FROM symbols WHERE file_path = ?", [filePath]);
|
|
157
|
+
this.db.run("DELETE FROM dependencies WHERE from_file = ? OR to_file = ?", [
|
|
158
|
+
filePath,
|
|
159
|
+
filePath,
|
|
160
|
+
]);
|
|
161
|
+
this.isDirty = true;
|
|
162
|
+
this.schedulePersist();
|
|
163
|
+
}
|
|
164
|
+
async searchSymbols(query, options = {}) {
|
|
165
|
+
await this.initPromise;
|
|
166
|
+
if (!this.db)
|
|
167
|
+
return [];
|
|
168
|
+
return searchSymbolsInDb(this.db, query, options);
|
|
169
|
+
}
|
|
170
|
+
async getDependents(filePath) {
|
|
171
|
+
await this.initPromise;
|
|
172
|
+
if (!this.db)
|
|
173
|
+
return [];
|
|
174
|
+
return getDependentsFromDb(this.db, filePath);
|
|
175
|
+
}
|
|
176
|
+
async getDependencies(filePath) {
|
|
177
|
+
await this.initPromise;
|
|
178
|
+
if (!this.db)
|
|
179
|
+
return [];
|
|
180
|
+
return getDependenciesFromDb(this.db, filePath);
|
|
181
|
+
}
|
|
182
|
+
async hasIndex() {
|
|
183
|
+
await this.initPromise;
|
|
184
|
+
if (!this.db)
|
|
185
|
+
return false;
|
|
186
|
+
return hasIndexInDb(this.db);
|
|
187
|
+
}
|
|
188
|
+
async getStats() {
|
|
189
|
+
await this.initPromise;
|
|
190
|
+
if (!this.db) {
|
|
191
|
+
return { filesIndexed: 0, symbolsIndexed: 0, dependenciesIndexed: 0, dbSizeBytes: 0, lastIndexedAt: null };
|
|
192
|
+
}
|
|
193
|
+
return getIndexStatsFromDb(this.db, this.dbPath);
|
|
194
|
+
}
|
|
195
|
+
async clear() {
|
|
196
|
+
await this.initPromise;
|
|
197
|
+
if (!this.db)
|
|
198
|
+
return;
|
|
199
|
+
this.db.run("DELETE FROM dependencies");
|
|
200
|
+
this.db.run("DELETE FROM symbols");
|
|
201
|
+
this.db.run("DELETE FROM files");
|
|
202
|
+
this.isDirty = true;
|
|
203
|
+
await this.persist();
|
|
204
|
+
}
|
|
205
|
+
// ── Persistence ───────────────────────────────────────────────────────────
|
|
206
|
+
schedulePersist() {
|
|
207
|
+
if (this.persistTimer)
|
|
208
|
+
clearTimeout(this.persistTimer);
|
|
209
|
+
this.persistTimer = setTimeout(() => this.persist(), 5000);
|
|
210
|
+
}
|
|
211
|
+
async persist() {
|
|
212
|
+
if (!this.isDirty || !this.db)
|
|
213
|
+
return;
|
|
214
|
+
try {
|
|
215
|
+
const data = this.db.export();
|
|
216
|
+
const tmpPath = `${this.dbPath}.tmp`;
|
|
217
|
+
await fs.writeFile(tmpPath, Buffer.from(data));
|
|
218
|
+
await fs.rename(tmpPath, this.dbPath);
|
|
219
|
+
this.isDirty = false;
|
|
220
|
+
logger.debug({ dbPath: this.dbPath }, "Index persisted");
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
logger.error({ error }, "Failed to persist index");
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
persistOnExit() {
|
|
227
|
+
if (!this.isDirty || !this.db)
|
|
228
|
+
return;
|
|
229
|
+
try {
|
|
230
|
+
const data = this.db.export();
|
|
231
|
+
const tmpPath = `${this.dbPath}.tmp`;
|
|
232
|
+
writeFileSync(tmpPath, Buffer.from(data));
|
|
233
|
+
renameSync(tmpPath, this.dbPath);
|
|
234
|
+
this.isDirty = false;
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
console.error("Failed to persist index on exit:", error);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
async close() {
|
|
241
|
+
if (this.persistTimer) {
|
|
242
|
+
clearTimeout(this.persistTimer);
|
|
243
|
+
this.persistTimer = null;
|
|
244
|
+
}
|
|
245
|
+
await this.persist();
|
|
246
|
+
if (this.db) {
|
|
247
|
+
this.db.close();
|
|
248
|
+
this.db = null;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=indexManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexManager.js","sourceRoot":"","sources":["../../../src/core/indexManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Index Manager query operations
|
|
3
|
+
*/
|
|
4
|
+
import type { Database } from "sql.js";
|
|
5
|
+
import type { IndexedSymbol, IndexStats } from "./indexManager.js";
|
|
6
|
+
export declare function searchSymbolsInDb(db: Database, query: string, options?: {
|
|
7
|
+
fuzzy?: boolean;
|
|
8
|
+
types?: string[];
|
|
9
|
+
maxResults?: number;
|
|
10
|
+
}): IndexedSymbol[];
|
|
11
|
+
export declare function getDependentsFromDb(db: Database, filePath: string): string[];
|
|
12
|
+
export declare function getDependenciesFromDb(db: Database, filePath: string): string[];
|
|
13
|
+
export declare function hasIndexInDb(db: Database): boolean;
|
|
14
|
+
export declare function getIndexStatsFromDb(db: Database, dbPath: string): Promise<IndexStats>;
|