claude-ex 1.4.0 → 1.5.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/README.md +12 -1
- package/dist/claude/installer.d.ts +8 -0
- package/dist/claude/installer.js +93 -1
- package/dist/claude/installer.js.map +1 -1
- package/dist/claude/mcp.d.ts +3 -1
- package/dist/claude/mcp.js +288 -14
- package/dist/claude/mcp.js.map +1 -1
- package/dist/db/schema.d.ts +2 -0
- package/dist/db/schema.js +86 -19
- package/dist/db/schema.js.map +1 -1
- package/dist/index.js +15 -5
- package/dist/index.js.map +1 -1
- package/dist/indexer/collector.js +1 -1
- package/dist/indexer/collector.js.map +1 -1
- package/dist/indexer/index.d.ts +4 -1
- package/dist/indexer/index.js +42 -10
- package/dist/indexer/index.js.map +1 -1
- package/dist/query/engine.d.ts +67 -0
- package/dist/query/engine.js +303 -20
- package/dist/query/engine.js.map +1 -1
- package/dist/watcher/daemon.js +69 -18
- package/dist/watcher/daemon.js.map +1 -1
- package/package.json +1 -1
package/dist/watcher/daemon.js
CHANGED
|
@@ -41,18 +41,44 @@ const fs = __importStar(require("fs"));
|
|
|
41
41
|
const path = __importStar(require("path"));
|
|
42
42
|
const child_process = __importStar(require("child_process"));
|
|
43
43
|
const indexer_1 = require("../indexer");
|
|
44
|
+
const collector_1 = require("../indexer/collector");
|
|
44
45
|
const parser_1 = require("../indexer/parser");
|
|
45
46
|
const utils_1 = require("../utils");
|
|
46
|
-
const
|
|
47
|
-
'
|
|
48
|
-
'
|
|
49
|
-
'
|
|
50
|
-
'
|
|
51
|
-
|
|
47
|
+
const IGNORE_DIRS = new Set([
|
|
48
|
+
'node_modules', '.git', '.hg', '.svn', '.codex', '.claude', '.local',
|
|
49
|
+
'dist', 'build', 'out', '.next', '.nuxt', '__pycache__', '.pytest_cache',
|
|
50
|
+
'target', 'vendor', 'coverage', '.vscode', '.idea', 'venv', '.venv',
|
|
51
|
+
'.tox', 'bower_components', '.cache', '.parcel-cache', 'tmp', 'temp',
|
|
52
|
+
'.turbo', '.vercel', '.netlify',
|
|
53
|
+
]);
|
|
54
|
+
function shouldIgnorePath(rootDir, fullPath) {
|
|
55
|
+
const absPath = path.isAbsolute(fullPath) ? fullPath : path.resolve(rootDir, fullPath);
|
|
56
|
+
const relPath = path.relative(rootDir, absPath);
|
|
57
|
+
if (!relPath || relPath === '')
|
|
58
|
+
return false;
|
|
59
|
+
return relPath.split(path.sep).some(part => IGNORE_DIRS.has(part));
|
|
60
|
+
}
|
|
61
|
+
function getWatchTargets(rootDir) {
|
|
62
|
+
const targets = new Set();
|
|
63
|
+
for (const relPath of (0, collector_1.collectFiles)(rootDir)) {
|
|
64
|
+
const parts = relPath.split(/[\\/]+/);
|
|
65
|
+
if (parts.length <= 1) {
|
|
66
|
+
targets.add(path.join(rootDir, relPath));
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
targets.add(path.join(rootDir, parts[0]));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return [...targets];
|
|
73
|
+
}
|
|
52
74
|
async function startWatcher(rootDir, db, onReindex) {
|
|
53
75
|
const chokidar = await Promise.resolve().then(() => __importStar(require('chokidar')));
|
|
54
|
-
const
|
|
55
|
-
|
|
76
|
+
const watchTargets = getWatchTargets(rootDir);
|
|
77
|
+
if (watchTargets.length === 0) {
|
|
78
|
+
return { close: () => Promise.resolve() };
|
|
79
|
+
}
|
|
80
|
+
const watcher = chokidar.watch(watchTargets, {
|
|
81
|
+
ignored: (fullPath) => shouldIgnorePath(rootDir, fullPath),
|
|
56
82
|
persistent: true,
|
|
57
83
|
ignoreInitial: true,
|
|
58
84
|
awaitWriteFinish: { stabilityThreshold: 200, pollInterval: 50 },
|
|
@@ -60,29 +86,45 @@ async function startWatcher(rootDir, db, onReindex) {
|
|
|
60
86
|
// Batch debounce: collect changed files, reindex in one burst
|
|
61
87
|
const pendingFiles = new Set();
|
|
62
88
|
let batchTimeout = null;
|
|
89
|
+
let flushing = false;
|
|
63
90
|
const BATCH_DELAY = 300; // ms — wait for burst of saves to settle
|
|
91
|
+
function scheduleFlush() {
|
|
92
|
+
if (batchTimeout)
|
|
93
|
+
clearTimeout(batchTimeout);
|
|
94
|
+
batchTimeout = setTimeout(flushBatch, BATCH_DELAY);
|
|
95
|
+
}
|
|
64
96
|
function flushBatch() {
|
|
65
97
|
batchTimeout = null;
|
|
98
|
+
if (flushing) {
|
|
99
|
+
scheduleFlush();
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
flushing = true;
|
|
66
103
|
const files = [...pendingFiles];
|
|
67
104
|
pendingFiles.clear();
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
105
|
+
try {
|
|
106
|
+
for (const relPath of files) {
|
|
107
|
+
try {
|
|
108
|
+
(0, indexer_1.reindexFile)(rootDir, relPath, db);
|
|
109
|
+
onReindex?.(relPath);
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
process.stderr.write(`[codex] reindex error ${relPath}: ${err}\n`);
|
|
113
|
+
}
|
|
75
114
|
}
|
|
76
115
|
}
|
|
116
|
+
finally {
|
|
117
|
+
flushing = false;
|
|
118
|
+
if (pendingFiles.size > 0)
|
|
119
|
+
scheduleFlush();
|
|
120
|
+
}
|
|
77
121
|
}
|
|
78
122
|
function handleChange(fullPath) {
|
|
79
123
|
const relPath = path.relative(rootDir, fullPath);
|
|
80
124
|
if (!(0, parser_1.isSupportedFile)(relPath))
|
|
81
125
|
return;
|
|
82
126
|
pendingFiles.add(relPath);
|
|
83
|
-
|
|
84
|
-
clearTimeout(batchTimeout);
|
|
85
|
-
batchTimeout = setTimeout(flushBatch, BATCH_DELAY);
|
|
127
|
+
scheduleFlush();
|
|
86
128
|
}
|
|
87
129
|
function handleDelete(fullPath) {
|
|
88
130
|
const relPath = path.relative(rootDir, fullPath);
|
|
@@ -96,6 +138,15 @@ async function startWatcher(rootDir, db, onReindex) {
|
|
|
96
138
|
watcher.on('change', handleChange);
|
|
97
139
|
watcher.on('add', handleChange);
|
|
98
140
|
watcher.on('unlink', handleDelete);
|
|
141
|
+
let closedAfterError = false;
|
|
142
|
+
watcher.on('error', (err) => {
|
|
143
|
+
const suffix = err?.path ? ` (${err.path})` : '';
|
|
144
|
+
process.stderr.write(`[codex] watcher error: ${err}${suffix}\n`);
|
|
145
|
+
if (!closedAfterError && (err?.code === 'EMFILE' || err?.code === 'ENOSPC')) {
|
|
146
|
+
closedAfterError = true;
|
|
147
|
+
watcher.close().catch(() => { });
|
|
148
|
+
}
|
|
149
|
+
});
|
|
99
150
|
return watcher;
|
|
100
151
|
}
|
|
101
152
|
function startDaemon(rootDir) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/watcher/daemon.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/watcher/daemon.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-ex",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "Local code intelligence layer for Claude Code — indexes codebases into a SQLite graph database with symbols, dependency edges, and PageRank",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|