mcp-codebase-intelligence 0.1.0 → 0.3.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 +97 -16
- package/dist/graph/code-graph.d.ts +16 -0
- package/dist/graph/code-graph.js +30 -4
- package/dist/graph/code-graph.js.map +1 -1
- package/dist/graph/schema.js +1 -0
- package/dist/graph/schema.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +61 -60
- package/dist/index.js.map +1 -1
- package/dist/indexer/docstring-extractor.d.ts +7 -0
- package/dist/indexer/docstring-extractor.js +118 -0
- package/dist/indexer/docstring-extractor.js.map +1 -0
- package/dist/indexer/file-watcher.d.ts +2 -2
- package/dist/indexer/file-watcher.js +24 -15
- package/dist/indexer/file-watcher.js.map +1 -1
- package/dist/indexer/lang-cpp.d.ts +3 -0
- package/dist/indexer/lang-cpp.js +469 -0
- package/dist/indexer/lang-cpp.js.map +1 -0
- package/dist/indexer/lang-go.js +4 -0
- package/dist/indexer/lang-go.js.map +1 -1
- package/dist/indexer/lang-java.js +4 -0
- package/dist/indexer/lang-java.js.map +1 -1
- package/dist/indexer/lang-python.js +3 -0
- package/dist/indexer/lang-python.js.map +1 -1
- package/dist/indexer/lang-rust.js +5 -0
- package/dist/indexer/lang-rust.js.map +1 -1
- package/dist/indexer/tree-sitter-indexer.js +5 -0
- package/dist/indexer/tree-sitter-indexer.js.map +1 -1
- package/dist/project-manager.d.ts +63 -0
- package/dist/project-manager.js +479 -0
- package/dist/project-manager.js.map +1 -0
- package/dist/tools/find-symbol.js +2 -1
- package/dist/tools/find-symbol.js.map +1 -1
- package/dist/tools/project-tools.d.ts +38 -0
- package/dist/tools/project-tools.js +72 -0
- package/dist/tools/project-tools.js.map +1 -0
- package/dist/tools/search-codebase.d.ts +39 -0
- package/dist/tools/search-codebase.js +59 -0
- package/dist/tools/search-codebase.js.map +1 -0
- package/package.json +8 -6
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
// Extract preceding comments and docstrings from AST nodes.
|
|
2
|
+
// Supports: JSDoc, Javadoc, Doxygen, Python docstrings, Go comments, Rust doc comments.
|
|
3
|
+
export function getPrecedingComment(node) {
|
|
4
|
+
const parent = node.parent;
|
|
5
|
+
if (!parent)
|
|
6
|
+
return undefined;
|
|
7
|
+
// For decorated definitions (Python), check before the decorator
|
|
8
|
+
const targetNode = parent.type === "decorated_definition" ? parent : node;
|
|
9
|
+
const container = targetNode.parent;
|
|
10
|
+
if (!container)
|
|
11
|
+
return undefined;
|
|
12
|
+
// Find this node's index in parent
|
|
13
|
+
let nodeIndex = -1;
|
|
14
|
+
for (let i = 0; i < container.childCount; i++) {
|
|
15
|
+
if (container.child(i)?.id === targetNode.id) {
|
|
16
|
+
nodeIndex = i;
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (nodeIndex <= 0)
|
|
21
|
+
return undefined;
|
|
22
|
+
// Collect consecutive comment nodes immediately preceding this node
|
|
23
|
+
const commentLines = [];
|
|
24
|
+
for (let i = nodeIndex - 1; i >= 0; i--) {
|
|
25
|
+
const sibling = container.child(i);
|
|
26
|
+
if (!sibling)
|
|
27
|
+
break;
|
|
28
|
+
if (isCommentNode(sibling)) {
|
|
29
|
+
commentLines.unshift(sibling.text);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (commentLines.length === 0)
|
|
36
|
+
return undefined;
|
|
37
|
+
return cleanComment(commentLines.join("\n"));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Extract Python docstring — first expression_statement containing a string
|
|
41
|
+
* in the function/class body.
|
|
42
|
+
*/
|
|
43
|
+
export function getPythonDocstring(node) {
|
|
44
|
+
const body = node.childForFieldName("body");
|
|
45
|
+
if (!body)
|
|
46
|
+
return undefined;
|
|
47
|
+
const firstStmt = body.namedChild(0);
|
|
48
|
+
if (!firstStmt)
|
|
49
|
+
return undefined;
|
|
50
|
+
// Python docstring is an expression_statement containing a string
|
|
51
|
+
if (firstStmt.type === "expression_statement") {
|
|
52
|
+
const expr = firstStmt.namedChild(0);
|
|
53
|
+
if (expr && (expr.type === "string" || expr.type === "concatenated_string")) {
|
|
54
|
+
return cleanPythonDocstring(expr.text);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
function isCommentNode(node) {
|
|
60
|
+
return node.type === "comment" ||
|
|
61
|
+
node.type === "line_comment" ||
|
|
62
|
+
node.type === "block_comment" ||
|
|
63
|
+
node.type === "doc_comment";
|
|
64
|
+
}
|
|
65
|
+
function cleanComment(text) {
|
|
66
|
+
return text
|
|
67
|
+
.split("\n")
|
|
68
|
+
.map(line => {
|
|
69
|
+
let l = line.trim();
|
|
70
|
+
// Remove block comment delimiters
|
|
71
|
+
if (l.startsWith("/**"))
|
|
72
|
+
l = l.slice(3);
|
|
73
|
+
else if (l.startsWith("/*"))
|
|
74
|
+
l = l.slice(2);
|
|
75
|
+
if (l.endsWith("*/"))
|
|
76
|
+
l = l.slice(0, -2);
|
|
77
|
+
// Remove line comment prefix
|
|
78
|
+
if (l.startsWith("///"))
|
|
79
|
+
l = l.slice(3);
|
|
80
|
+
else if (l.startsWith("//!"))
|
|
81
|
+
l = l.slice(3);
|
|
82
|
+
else if (l.startsWith("//"))
|
|
83
|
+
l = l.slice(2);
|
|
84
|
+
// Remove leading * from Javadoc/JSDoc/Doxygen style
|
|
85
|
+
if (l.startsWith("*"))
|
|
86
|
+
l = l.slice(1);
|
|
87
|
+
// Remove leading # from Python comments
|
|
88
|
+
if (l.startsWith("#"))
|
|
89
|
+
l = l.slice(1);
|
|
90
|
+
return l.trim();
|
|
91
|
+
})
|
|
92
|
+
.filter(l => l.length > 0)
|
|
93
|
+
.join("\n")
|
|
94
|
+
.trim() || undefined;
|
|
95
|
+
}
|
|
96
|
+
function cleanPythonDocstring(text) {
|
|
97
|
+
// Remove triple quotes
|
|
98
|
+
let s = text;
|
|
99
|
+
if (s.startsWith('"""') && s.endsWith('"""')) {
|
|
100
|
+
s = s.slice(3, -3);
|
|
101
|
+
}
|
|
102
|
+
else if (s.startsWith("'''") && s.endsWith("'''")) {
|
|
103
|
+
s = s.slice(3, -3);
|
|
104
|
+
}
|
|
105
|
+
else if (s.startsWith('"') && s.endsWith('"')) {
|
|
106
|
+
s = s.slice(1, -1);
|
|
107
|
+
}
|
|
108
|
+
else if (s.startsWith("'") && s.endsWith("'")) {
|
|
109
|
+
s = s.slice(1, -1);
|
|
110
|
+
}
|
|
111
|
+
return s
|
|
112
|
+
.split("\n")
|
|
113
|
+
.map(l => l.trim())
|
|
114
|
+
.filter(l => l.length > 0)
|
|
115
|
+
.join("\n")
|
|
116
|
+
.trim();
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=docstring-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docstring-extractor.js","sourceRoot":"","sources":["../../src/indexer/docstring-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { CodeGraph } from "../graph/code-graph.js";
|
|
2
2
|
export declare class FileWatcher {
|
|
3
|
-
private rootPath;
|
|
4
3
|
private graph;
|
|
5
4
|
private watcher;
|
|
6
5
|
private indexing;
|
|
7
|
-
|
|
6
|
+
private rootPaths;
|
|
7
|
+
constructor(rootPathOrPaths: string | string[], graph: CodeGraph);
|
|
8
8
|
initialIndex(): Promise<void>;
|
|
9
9
|
startWatching(): void;
|
|
10
10
|
private handleFileChange;
|
|
@@ -14,37 +14,41 @@ function isTargetFile(filePath) {
|
|
|
14
14
|
return extensions.some((ext) => filePath.endsWith(ext));
|
|
15
15
|
}
|
|
16
16
|
export class FileWatcher {
|
|
17
|
-
rootPath;
|
|
18
17
|
graph;
|
|
19
18
|
watcher = null;
|
|
20
19
|
indexing = false;
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
rootPaths;
|
|
21
|
+
constructor(rootPathOrPaths, graph) {
|
|
23
22
|
this.graph = graph;
|
|
23
|
+
this.rootPaths = Array.isArray(rootPathOrPaths) ? rootPathOrPaths : [rootPathOrPaths];
|
|
24
24
|
}
|
|
25
25
|
async initialIndex() {
|
|
26
26
|
if (this.indexing)
|
|
27
27
|
return;
|
|
28
28
|
this.indexing = true;
|
|
29
|
-
logger.info(`Starting initial index of ${this.
|
|
29
|
+
logger.info(`Starting initial index of ${this.rootPaths.length} root(s): ${this.rootPaths.join(", ")}`);
|
|
30
30
|
const startTime = Date.now();
|
|
31
31
|
try {
|
|
32
32
|
const extensions = getAllExtensions();
|
|
33
33
|
const patterns = extensions.map((ext) => `**/*${ext}`);
|
|
34
34
|
const files = [];
|
|
35
|
-
for (const
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
for (const rootPath of this.rootPaths) {
|
|
36
|
+
for (const pattern of patterns) {
|
|
37
|
+
const matched = await glob(pattern, {
|
|
38
|
+
cwd: rootPath,
|
|
39
|
+
absolute: true,
|
|
40
|
+
ignore: IGNORE_PATTERNS,
|
|
41
|
+
});
|
|
42
|
+
files.push(...matched);
|
|
43
|
+
}
|
|
42
44
|
}
|
|
43
|
-
|
|
45
|
+
// Deduplicate (in case roots overlap)
|
|
46
|
+
const uniqueFiles = [...new Set(files)];
|
|
47
|
+
logger.info(`Found ${uniqueFiles.length} files to index`);
|
|
44
48
|
// Parse all files first (CPU-bound, tree-sitter)
|
|
45
49
|
const parseStart = Date.now();
|
|
46
50
|
const parsed = [];
|
|
47
|
-
for (const file of
|
|
51
|
+
for (const file of uniqueFiles) {
|
|
48
52
|
const result = parseFile(file);
|
|
49
53
|
if (result) {
|
|
50
54
|
parsed.push({ filePath: file, content: result.content, symbols: result.symbols, references: result.references, imports: result.imports });
|
|
@@ -67,7 +71,12 @@ export class FileWatcher {
|
|
|
67
71
|
}
|
|
68
72
|
startWatching() {
|
|
69
73
|
const extensions = getAllExtensions();
|
|
70
|
-
const watchPatterns =
|
|
74
|
+
const watchPatterns = [];
|
|
75
|
+
for (const rootPath of this.rootPaths) {
|
|
76
|
+
for (const ext of extensions) {
|
|
77
|
+
watchPatterns.push(path.join(rootPath, "**", `*${ext}`));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
71
80
|
this.watcher = watch(watchPatterns, {
|
|
72
81
|
ignored: IGNORE_PATTERNS,
|
|
73
82
|
persistent: true,
|
|
@@ -78,7 +87,7 @@ export class FileWatcher {
|
|
|
78
87
|
.on("add", (filePath) => this.handleFileChange(filePath))
|
|
79
88
|
.on("change", (filePath) => this.handleFileChange(filePath))
|
|
80
89
|
.on("unlink", (filePath) => this.handleFileRemove(filePath));
|
|
81
|
-
logger.info(`Watching for file changes in ${this.
|
|
90
|
+
logger.info(`Watching for file changes in ${this.rootPaths.length} root(s)`);
|
|
82
91
|
}
|
|
83
92
|
handleFileChange(filePath) {
|
|
84
93
|
if (!isTargetFile(filePath))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-watcher.js","sourceRoot":"","sources":["../../src/indexer/file-watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAkB,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,eAAe,GAAG;IACtB,oBAAoB,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB;IACjF,mBAAmB,EAAE,YAAY,EAAE,aAAa;IAChD,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY;CAC3D,CAAC;AAEF,SAAS,YAAY,CAAC,QAAgB;IACpC,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,OAAO,WAAW;
|
|
1
|
+
{"version":3,"file":"file-watcher.js","sourceRoot":"","sources":["../../src/indexer/file-watcher.ts"],"names":[],"mappings":"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"}
|