codetree-claude 1.5.0 → 1.5.2
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 +137 -121
- package/dist/cli.js +69 -83
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +126 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +22 -0
- package/dist/config.js.map +1 -1
- package/dist/diff.d.ts +37 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +181 -0
- package/dist/diff.js.map +1 -0
- package/dist/doctor.d.ts +5 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +139 -0
- package/dist/doctor.js.map +1 -0
- package/dist/hook/post-compact.js +1 -23
- package/dist/hook/post-compact.js.map +1 -1
- package/dist/hook/post-tool-use.js +11 -27
- package/dist/hook/post-tool-use.js.map +1 -1
- package/dist/hook/pre-compact.js +1 -22
- package/dist/hook/pre-compact.js.map +1 -1
- package/dist/hook/pre-tool-use.bundled.js +49 -77
- package/dist/hook/pre-tool-use.js +23 -90
- package/dist/hook/pre-tool-use.js.map +1 -1
- package/dist/hook/session-start.js +19 -23
- package/dist/hook/session-start.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/indexer/extractor-registry.d.ts.map +1 -1
- package/dist/indexer/extractor-registry.js +6 -0
- package/dist/indexer/extractor-registry.js.map +1 -1
- package/dist/indexer/extractors/csharp.d.ts +12 -0
- package/dist/indexer/extractors/csharp.d.ts.map +1 -0
- package/dist/indexer/extractors/csharp.js +165 -0
- package/dist/indexer/extractors/csharp.js.map +1 -0
- package/dist/indexer/extractors/go.js +44 -1
- package/dist/indexer/extractors/go.js.map +1 -1
- package/dist/indexer/extractors/java.d.ts.map +1 -1
- package/dist/indexer/extractors/java.js +41 -3
- package/dist/indexer/extractors/java.js.map +1 -1
- package/dist/indexer/extractors/javascript.d.ts.map +1 -1
- package/dist/indexer/extractors/javascript.js +67 -3
- package/dist/indexer/extractors/javascript.js.map +1 -1
- package/dist/indexer/extractors/python.d.ts.map +1 -1
- package/dist/indexer/extractors/python.js +31 -2
- package/dist/indexer/extractors/python.js.map +1 -1
- package/dist/indexer/extractors/ruby.d.ts +10 -0
- package/dist/indexer/extractors/ruby.d.ts.map +1 -0
- package/dist/indexer/extractors/ruby.js +145 -0
- package/dist/indexer/extractors/ruby.js.map +1 -0
- package/dist/indexer/extractors/rust.d.ts +10 -0
- package/dist/indexer/extractors/rust.d.ts.map +1 -0
- package/dist/indexer/extractors/rust.js +194 -0
- package/dist/indexer/extractors/rust.js.map +1 -0
- package/dist/indexer/indexer.d.ts +15 -0
- package/dist/indexer/indexer.d.ts.map +1 -1
- package/dist/indexer/indexer.js +168 -4
- package/dist/indexer/indexer.js.map +1 -1
- package/dist/server/ipc.d.ts +10 -4
- package/dist/server/ipc.d.ts.map +1 -1
- package/dist/server/ipc.js +190 -109
- package/dist/server/ipc.js.map +1 -1
- package/dist/server/mcp-server.js +36 -27
- package/dist/server/mcp-server.js.map +1 -1
- package/dist/server/tools/codetree-find-refs.d.ts.map +1 -1
- package/dist/server/tools/codetree-find-refs.js +23 -14
- package/dist/server/tools/codetree-find-refs.js.map +1 -1
- package/dist/server/tools/codetree-memory.d.ts +3 -6
- package/dist/server/tools/codetree-memory.d.ts.map +1 -1
- package/dist/server/tools/codetree-memory.js +9 -10
- package/dist/server/tools/codetree-memory.js.map +1 -1
- package/dist/server/tools/codetree-outline.d.ts +57 -0
- package/dist/server/tools/codetree-outline.d.ts.map +1 -0
- package/dist/server/tools/codetree-outline.js +76 -0
- package/dist/server/tools/codetree-outline.js.map +1 -0
- package/dist/server/tools/codetree-probe.d.ts +53 -0
- package/dist/server/tools/codetree-probe.d.ts.map +1 -0
- package/dist/server/tools/codetree-probe.js +81 -0
- package/dist/server/tools/codetree-probe.js.map +1 -0
- package/dist/server/tools/codetree-read.d.ts +52 -3
- package/dist/server/tools/codetree-read.d.ts.map +1 -1
- package/dist/server/tools/codetree-read.js +237 -55
- package/dist/server/tools/codetree-read.js.map +1 -1
- package/dist/server/tools/codetree-search.d.ts +13 -1
- package/dist/server/tools/codetree-search.d.ts.map +1 -1
- package/dist/server/tools/codetree-search.js +80 -52
- package/dist/server/tools/codetree-search.js.map +1 -1
- package/dist/server/tools/codetree-structure.d.ts +25 -1
- package/dist/server/tools/codetree-structure.d.ts.map +1 -1
- package/dist/server/tools/codetree-structure.js +92 -42
- package/dist/server/tools/codetree-structure.js.map +1 -1
- package/dist/server/tools/codetree-summary.d.ts +2 -0
- package/dist/server/tools/codetree-summary.d.ts.map +1 -1
- package/dist/server/tools/codetree-summary.js +5 -0
- package/dist/server/tools/codetree-summary.js.map +1 -1
- package/dist/setup/install.d.ts +45 -1
- package/dist/setup/install.d.ts.map +1 -1
- package/dist/setup/install.js +163 -58
- package/dist/setup/install.js.map +1 -1
- package/dist/setup/template-load.d.ts +9 -0
- package/dist/setup/template-load.d.ts.map +1 -0
- package/dist/setup/template-load.js +39 -0
- package/dist/setup/template-load.js.map +1 -0
- package/dist/storage/database.d.ts +49 -0
- package/dist/storage/database.d.ts.map +1 -1
- package/dist/storage/database.js +383 -43
- package/dist/storage/database.js.map +1 -1
- package/dist/storage/disk-manager.d.ts.map +1 -1
- package/dist/storage/disk-manager.js +1 -5
- package/dist/storage/disk-manager.js.map +1 -1
- package/dist/utils.d.ts +23 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +102 -0
- package/dist/utils.js.map +1 -0
- package/package.json +46 -10
- package/templates/README.md +15 -0
- package/templates/agents-codetree.snippet.md +24 -0
- package/templates/claude-md-codetree.snippet.md +22 -0
- package/templates/claude-rules-codetree.md +23 -0
- package/templates/cursor-codetree.mdc +31 -0
- package/templates/gemini-codetree.snippet.md +6 -0
|
@@ -9,12 +9,41 @@ export class PythonExtractor {
|
|
|
9
9
|
const lines = content.split("\n");
|
|
10
10
|
const symbols = [];
|
|
11
11
|
const dependencies = [];
|
|
12
|
+
let inTripleDouble = false;
|
|
13
|
+
let inTripleSingle = false;
|
|
12
14
|
for (let i = 0; i < lines.length; i++) {
|
|
13
15
|
const line = lines[i];
|
|
14
16
|
const lineNum = i + 1;
|
|
15
17
|
const trimmed = line.trim();
|
|
16
|
-
//
|
|
17
|
-
if (
|
|
18
|
+
// Track triple-quoted strings (docstrings) across lines
|
|
19
|
+
if (inTripleDouble) {
|
|
20
|
+
if (trimmed.includes('"""')) {
|
|
21
|
+
inTripleDouble = false;
|
|
22
|
+
}
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (inTripleSingle) {
|
|
26
|
+
if (trimmed.includes("'''")) {
|
|
27
|
+
inTripleSingle = false;
|
|
28
|
+
}
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
// Skip empty lines and comments
|
|
32
|
+
if (trimmed === "" || trimmed.startsWith("#")) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
// Detect triple-quoted string start (standalone docstrings)
|
|
36
|
+
if (trimmed.startsWith('"""')) {
|
|
37
|
+
// Check if it closes on the same line (e.g. """one-liner""")
|
|
38
|
+
if (trimmed.indexOf('"""', 3) === -1) {
|
|
39
|
+
inTripleDouble = true;
|
|
40
|
+
}
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (trimmed.startsWith("'''")) {
|
|
44
|
+
if (trimmed.indexOf("'''", 3) === -1) {
|
|
45
|
+
inTripleSingle = true;
|
|
46
|
+
}
|
|
18
47
|
continue;
|
|
19
48
|
}
|
|
20
49
|
// ─── Imports ───
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/indexer/extractors/python.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,eAAe;IAC1B,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvB,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE7B,OAAO,CAAC,OAAe,EAAE,SAAiB;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,MAAM,YAAY,GAA0B,EAAE,CAAC;QAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAE5B,gCAAgC;YAChC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/indexer/extractors/python.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SymbolExtractor, ExtractionResult } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Regex-based symbol extractor for Ruby.
|
|
4
|
+
*/
|
|
5
|
+
export declare class RubyExtractor implements SymbolExtractor {
|
|
6
|
+
languages: string[];
|
|
7
|
+
extensions: string[];
|
|
8
|
+
extract(content: string, _filePath: string): ExtractionResult;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=ruby.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruby.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/ruby.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAwC,MAAM,YAAY,CAAC;AAE1G;;GAEG;AACH,qBAAa,aAAc,YAAW,eAAe;IACnD,SAAS,WAAY;IACrB,UAAU,WAAgC;IAE1C,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB;CAwH9D"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regex-based symbol extractor for Ruby.
|
|
3
|
+
*/
|
|
4
|
+
export class RubyExtractor {
|
|
5
|
+
languages = ["ruby"];
|
|
6
|
+
extensions = [".rb", ".rake", ".gemspec"];
|
|
7
|
+
extract(content, _filePath) {
|
|
8
|
+
const lines = content.split("\n");
|
|
9
|
+
const symbols = [];
|
|
10
|
+
const dependencies = [];
|
|
11
|
+
let inHeredoc = false;
|
|
12
|
+
let heredocEnd = "";
|
|
13
|
+
for (let i = 0; i < lines.length; i++) {
|
|
14
|
+
const line = lines[i];
|
|
15
|
+
const lineNum = i + 1;
|
|
16
|
+
const trimmed = line.trim();
|
|
17
|
+
// Track heredocs
|
|
18
|
+
if (inHeredoc) {
|
|
19
|
+
if (trimmed === heredocEnd)
|
|
20
|
+
inHeredoc = false;
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
if (trimmed === "" || trimmed.startsWith("#"))
|
|
24
|
+
continue;
|
|
25
|
+
// Detect heredoc start
|
|
26
|
+
const heredocMatch = trimmed.match(/<<[~-]?(\w+)/);
|
|
27
|
+
if (heredocMatch) {
|
|
28
|
+
inHeredoc = true;
|
|
29
|
+
heredocEnd = heredocMatch[1];
|
|
30
|
+
}
|
|
31
|
+
// ─── Require/require_relative ───
|
|
32
|
+
const requireMatch = trimmed.match(/^(?:require|require_relative)\s+['"]([^'"]+)['"]/);
|
|
33
|
+
if (requireMatch) {
|
|
34
|
+
dependencies.push({
|
|
35
|
+
specifier: requireMatch[1],
|
|
36
|
+
isRelative: trimmed.startsWith("require_relative"),
|
|
37
|
+
});
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
// ─── Class ───
|
|
41
|
+
const classMatch = trimmed.match(/^class\s+(\w+(?:::\w+)*)(?:\s*<\s*(\w+(?:::\w+)*))?/);
|
|
42
|
+
if (classMatch) {
|
|
43
|
+
const sig = `class ${classMatch[1]}${classMatch[2] ? ` < ${classMatch[2]}` : ""}`;
|
|
44
|
+
symbols.push({
|
|
45
|
+
name: classMatch[1],
|
|
46
|
+
kind: "class",
|
|
47
|
+
lineStart: lineNum,
|
|
48
|
+
lineEnd: findEndBlockEnd(lines, i),
|
|
49
|
+
signature: sig,
|
|
50
|
+
exported: true,
|
|
51
|
+
});
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
// ─── Module ───
|
|
55
|
+
const moduleMatch = trimmed.match(/^module\s+(\w+(?:::\w+)*)/);
|
|
56
|
+
if (moduleMatch) {
|
|
57
|
+
symbols.push({
|
|
58
|
+
name: moduleMatch[1],
|
|
59
|
+
kind: "class",
|
|
60
|
+
lineStart: lineNum,
|
|
61
|
+
lineEnd: findEndBlockEnd(lines, i),
|
|
62
|
+
signature: `module ${moduleMatch[1]}`,
|
|
63
|
+
exported: true,
|
|
64
|
+
});
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
// ─── Method (def) ───
|
|
68
|
+
const defMatch = trimmed.match(/^def\s+(self\.)?(\w+[?!=]?)\s*(\([^)]*\))?/);
|
|
69
|
+
if (defMatch) {
|
|
70
|
+
const indent = line.length - line.trimStart().length;
|
|
71
|
+
const name = defMatch[1] ? `self.${defMatch[2]}` : defMatch[2];
|
|
72
|
+
symbols.push({
|
|
73
|
+
name,
|
|
74
|
+
kind: indent > 0 ? "method" : "function",
|
|
75
|
+
lineStart: lineNum,
|
|
76
|
+
lineEnd: findEndBlockEnd(lines, i),
|
|
77
|
+
signature: trimmed.slice(0, 100),
|
|
78
|
+
exported: !defMatch[2].startsWith("_"),
|
|
79
|
+
});
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
// ─── Constants (UPPER_CASE = ...) ───
|
|
83
|
+
const constMatch = trimmed.match(/^([A-Z][A-Z0-9_]+)\s*=/);
|
|
84
|
+
if (constMatch) {
|
|
85
|
+
const indent = line.length - line.trimStart().length;
|
|
86
|
+
if (indent <= 2) {
|
|
87
|
+
symbols.push({
|
|
88
|
+
name: constMatch[1],
|
|
89
|
+
kind: "constant",
|
|
90
|
+
lineStart: lineNum,
|
|
91
|
+
lineEnd: lineNum,
|
|
92
|
+
signature: trimmed.slice(0, 80),
|
|
93
|
+
exported: true,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
// ─── attr_accessor/attr_reader/attr_writer ───
|
|
99
|
+
const attrMatch = trimmed.match(/^attr_(?:accessor|reader|writer)\s+(.+)/);
|
|
100
|
+
if (attrMatch) {
|
|
101
|
+
const attrs = attrMatch[1].split(",").map((a) => a.trim().replace(/^:/, ""));
|
|
102
|
+
for (const attr of attrs) {
|
|
103
|
+
if (attr) {
|
|
104
|
+
symbols.push({
|
|
105
|
+
name: attr,
|
|
106
|
+
kind: "variable",
|
|
107
|
+
lineStart: lineNum,
|
|
108
|
+
lineEnd: lineNum,
|
|
109
|
+
signature: trimmed.slice(0, 80),
|
|
110
|
+
exported: true,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return { symbols, dependencies };
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Find the end of a Ruby def/class/module/do block (looks for matching `end`).
|
|
121
|
+
*/
|
|
122
|
+
function findEndBlockEnd(lines, startIdx) {
|
|
123
|
+
const startLine = lines[startIdx];
|
|
124
|
+
const baseIndent = startLine.length - startLine.trimStart().length;
|
|
125
|
+
let depth = 1;
|
|
126
|
+
for (let i = startIdx + 1; i < Math.min(startIdx + 500, lines.length); i++) {
|
|
127
|
+
const line = lines[i];
|
|
128
|
+
const trimmed = line.trim();
|
|
129
|
+
if (trimmed === "" || trimmed.startsWith("#"))
|
|
130
|
+
continue;
|
|
131
|
+
const indent = line.length - line.trimStart().length;
|
|
132
|
+
// Count block openers
|
|
133
|
+
if (/^(?:def|class|module|if|unless|while|until|for|case|begin|do)\b/.test(trimmed)) {
|
|
134
|
+
depth++;
|
|
135
|
+
}
|
|
136
|
+
// Count block closers
|
|
137
|
+
if (trimmed === "end" || trimmed.startsWith("end ") || trimmed.startsWith("end;")) {
|
|
138
|
+
depth--;
|
|
139
|
+
if (depth === 0)
|
|
140
|
+
return i + 1;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return startIdx + 1;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=ruby.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruby.js","sourceRoot":"","sources":["../../../src/indexer/extractors/ruby.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SymbolExtractor, ExtractionResult } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Regex-based symbol extractor for Rust.
|
|
4
|
+
*/
|
|
5
|
+
export declare class RustExtractor implements SymbolExtractor {
|
|
6
|
+
languages: string[];
|
|
7
|
+
extensions: string[];
|
|
8
|
+
extract(content: string, _filePath: string): ExtractionResult;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=rust.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/rust.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAwC,MAAM,YAAY,CAAC;AAE1G;;GAEG;AACH,qBAAa,aAAc,YAAW,eAAe;IACnD,SAAS,WAAY;IACrB,UAAU,WAAW;IAErB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB;CAyI9D"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regex-based symbol extractor for Rust.
|
|
3
|
+
*/
|
|
4
|
+
export class RustExtractor {
|
|
5
|
+
languages = ["rust"];
|
|
6
|
+
extensions = [".rs"];
|
|
7
|
+
extract(content, _filePath) {
|
|
8
|
+
const lines = content.split("\n");
|
|
9
|
+
const symbols = [];
|
|
10
|
+
const dependencies = [];
|
|
11
|
+
let inBlockComment = false;
|
|
12
|
+
for (let i = 0; i < lines.length; i++) {
|
|
13
|
+
const line = lines[i];
|
|
14
|
+
const lineNum = i + 1;
|
|
15
|
+
const trimmed = line.trim();
|
|
16
|
+
if (inBlockComment) {
|
|
17
|
+
if (trimmed.includes("*/"))
|
|
18
|
+
inBlockComment = false;
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
if (trimmed.startsWith("//"))
|
|
22
|
+
continue;
|
|
23
|
+
if (trimmed === "")
|
|
24
|
+
continue;
|
|
25
|
+
if (trimmed.startsWith("/*")) {
|
|
26
|
+
if (!trimmed.includes("*/"))
|
|
27
|
+
inBlockComment = true;
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
// ─── Use/Extern ───
|
|
31
|
+
const useMatch = trimmed.match(/^(?:pub\s+)?use\s+(.+);/);
|
|
32
|
+
if (useMatch) {
|
|
33
|
+
dependencies.push({ specifier: useMatch[1].split("::")[0], isRelative: useMatch[1].startsWith("crate") || useMatch[1].startsWith("super") });
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
const externMatch = trimmed.match(/^extern\s+crate\s+(\w+)/);
|
|
37
|
+
if (externMatch) {
|
|
38
|
+
dependencies.push({ specifier: externMatch[1], isRelative: false });
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
// ─── Function ───
|
|
42
|
+
const funcMatch = trimmed.match(/^(pub(?:\([\w:]+\))?\s+)?(?:async\s+)?(?:unsafe\s+)?(?:const\s+)?fn\s+(\w+)\s*(<[^>]*>)?\s*\(([^)]*)\)/);
|
|
43
|
+
if (funcMatch) {
|
|
44
|
+
symbols.push({
|
|
45
|
+
name: funcMatch[2],
|
|
46
|
+
kind: "function",
|
|
47
|
+
lineStart: lineNum,
|
|
48
|
+
lineEnd: findBraceEnd(lines, i),
|
|
49
|
+
signature: trimmed.slice(0, 120),
|
|
50
|
+
exported: !!funcMatch[1]?.includes("pub"),
|
|
51
|
+
});
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
// ─── Struct ───
|
|
55
|
+
const structMatch = trimmed.match(/^(pub(?:\([\w:]+\))?\s+)?struct\s+(\w+)/);
|
|
56
|
+
if (structMatch) {
|
|
57
|
+
symbols.push({
|
|
58
|
+
name: structMatch[2],
|
|
59
|
+
kind: "class",
|
|
60
|
+
lineStart: lineNum,
|
|
61
|
+
lineEnd: findBraceEnd(lines, i),
|
|
62
|
+
signature: trimmed.slice(0, 120),
|
|
63
|
+
exported: !!structMatch[1]?.includes("pub"),
|
|
64
|
+
});
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
// ─── Enum ───
|
|
68
|
+
const enumMatch = trimmed.match(/^(pub(?:\([\w:]+\))?\s+)?enum\s+(\w+)/);
|
|
69
|
+
if (enumMatch) {
|
|
70
|
+
symbols.push({
|
|
71
|
+
name: enumMatch[2],
|
|
72
|
+
kind: "enum",
|
|
73
|
+
lineStart: lineNum,
|
|
74
|
+
lineEnd: findBraceEnd(lines, i),
|
|
75
|
+
signature: trimmed.slice(0, 100),
|
|
76
|
+
exported: !!enumMatch[1]?.includes("pub"),
|
|
77
|
+
});
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
// ─── Trait ───
|
|
81
|
+
const traitMatch = trimmed.match(/^(pub(?:\([\w:]+\))?\s+)?trait\s+(\w+)/);
|
|
82
|
+
if (traitMatch) {
|
|
83
|
+
symbols.push({
|
|
84
|
+
name: traitMatch[2],
|
|
85
|
+
kind: "interface",
|
|
86
|
+
lineStart: lineNum,
|
|
87
|
+
lineEnd: findBraceEnd(lines, i),
|
|
88
|
+
signature: trimmed.slice(0, 120),
|
|
89
|
+
exported: !!traitMatch[1]?.includes("pub"),
|
|
90
|
+
});
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
// ─── Type alias ───
|
|
94
|
+
const typeMatch = trimmed.match(/^(pub(?:\([\w:]+\))?\s+)?type\s+(\w+)/);
|
|
95
|
+
if (typeMatch) {
|
|
96
|
+
symbols.push({
|
|
97
|
+
name: typeMatch[2],
|
|
98
|
+
kind: "type",
|
|
99
|
+
lineStart: lineNum,
|
|
100
|
+
lineEnd: lineNum,
|
|
101
|
+
signature: trimmed.slice(0, 100),
|
|
102
|
+
exported: !!typeMatch[1]?.includes("pub"),
|
|
103
|
+
});
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
// ─── Const/Static ───
|
|
107
|
+
const constMatch = trimmed.match(/^(pub(?:\([\w:]+\))?\s+)?(?:const|static)\s+(\w+)\s*:/);
|
|
108
|
+
if (constMatch) {
|
|
109
|
+
symbols.push({
|
|
110
|
+
name: constMatch[2],
|
|
111
|
+
kind: "constant",
|
|
112
|
+
lineStart: lineNum,
|
|
113
|
+
lineEnd: lineNum,
|
|
114
|
+
signature: trimmed.slice(0, 80),
|
|
115
|
+
exported: !!constMatch[1]?.includes("pub"),
|
|
116
|
+
});
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
// ─── Impl block methods ───
|
|
120
|
+
const implMethodMatch = trimmed.match(/^(pub(?:\([\w:]+\))?\s+)?(?:async\s+)?fn\s+(\w+)/);
|
|
121
|
+
if (implMethodMatch) {
|
|
122
|
+
const indent = line.length - line.trimStart().length;
|
|
123
|
+
if (indent > 0) {
|
|
124
|
+
symbols.push({
|
|
125
|
+
name: implMethodMatch[2],
|
|
126
|
+
kind: "method",
|
|
127
|
+
lineStart: lineNum,
|
|
128
|
+
lineEnd: findBraceEnd(lines, i),
|
|
129
|
+
signature: trimmed.slice(0, 120),
|
|
130
|
+
exported: !!implMethodMatch[1]?.includes("pub"),
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return { symbols, dependencies };
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function findBraceEnd(lines, startIdx) {
|
|
139
|
+
let depth = 0;
|
|
140
|
+
let started = false;
|
|
141
|
+
let inBlockComment = false;
|
|
142
|
+
for (let i = startIdx; i < Math.min(startIdx + 500, lines.length); i++) {
|
|
143
|
+
const line = lines[i];
|
|
144
|
+
let inString = false;
|
|
145
|
+
let inChar = false;
|
|
146
|
+
let escaped = false;
|
|
147
|
+
for (let j = 0; j < line.length; j++) {
|
|
148
|
+
const ch = line[j];
|
|
149
|
+
if (escaped) {
|
|
150
|
+
escaped = false;
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
if (ch === "\\" && (inString || inChar)) {
|
|
154
|
+
escaped = true;
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if (inBlockComment) {
|
|
158
|
+
if (ch === "*" && j + 1 < line.length && line[j + 1] === "/") {
|
|
159
|
+
inBlockComment = false;
|
|
160
|
+
j++;
|
|
161
|
+
}
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
if (ch === "/" && j + 1 < line.length && line[j + 1] === "/")
|
|
165
|
+
break;
|
|
166
|
+
if (ch === "/" && j + 1 < line.length && line[j + 1] === "*") {
|
|
167
|
+
inBlockComment = true;
|
|
168
|
+
j++;
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
if (ch === '"' && !inChar) {
|
|
172
|
+
inString = !inString;
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
if (ch === "'" && !inString) {
|
|
176
|
+
inChar = !inChar;
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
if (inString || inChar)
|
|
180
|
+
continue;
|
|
181
|
+
if (ch === "{") {
|
|
182
|
+
depth++;
|
|
183
|
+
started = true;
|
|
184
|
+
}
|
|
185
|
+
else if (ch === "}") {
|
|
186
|
+
depth--;
|
|
187
|
+
if (started && depth === 0)
|
|
188
|
+
return i + 1;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return startIdx + 1;
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=rust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rust.js","sourceRoot":"","sources":["../../../src/indexer/extractors/rust.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,8 @@ export declare class Indexer {
|
|
|
21
21
|
private config;
|
|
22
22
|
private indexing;
|
|
23
23
|
private ready;
|
|
24
|
+
private tokenPostings;
|
|
25
|
+
private fileTokens;
|
|
24
26
|
constructor(config: CodeTreeConfig, db: Database, cache: ContentCache);
|
|
25
27
|
init(): Promise<void>;
|
|
26
28
|
isReady(): boolean;
|
|
@@ -39,6 +41,19 @@ export declare class Indexer {
|
|
|
39
41
|
* Remove a file from the index (when it's deleted from disk).
|
|
40
42
|
*/
|
|
41
43
|
removeFile(absPath: string): void;
|
|
44
|
+
private updateTokenPostings;
|
|
45
|
+
private removeTokenPostings;
|
|
46
|
+
/**
|
|
47
|
+
* Files that contain ANY of the given tokens (lowercased).
|
|
48
|
+
* If no postings exist for any token, returns empty (caller can fall back).
|
|
49
|
+
*/
|
|
50
|
+
filesContainingAny(rawTokens: string[]): Set<string>;
|
|
51
|
+
/**
|
|
52
|
+
* Files that contain ALL of the given tokens (intersection).
|
|
53
|
+
*/
|
|
54
|
+
filesContainingAll(rawTokens: string[]): Set<string>;
|
|
55
|
+
/** Whether the postings index has data for any of these tokens (heuristic for "warm"). */
|
|
56
|
+
postingsAvailableFor(rawTokens: string[]): boolean;
|
|
42
57
|
/**
|
|
43
58
|
* Invalidate all in-memory caches without deleting indexed data.
|
|
44
59
|
* Used after branch switches — forces mtime revalidation on next file access.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/indexer/indexer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,QAAQ,EAA6D,MAAM,wBAAwB,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/indexer/indexer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,QAAQ,EAA6D,MAAM,wBAAwB,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AAgDpE,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CAC1C;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;IAItB,OAAO,CAAC,aAAa,CAAuC;IAE5D,OAAO,CAAC,UAAU,CAAuC;gBAE7C,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY;IAQ/D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,OAAO,IAAI,OAAO;IAIlB,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACG,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;IA2C3D;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAkI1D;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAUjC,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,mBAAmB;IAc3B;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IAUpD;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IAgBpD,0FAA0F;IAC1F,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO;IAOlD;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAMxB,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAQ;IAE7C;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAyE1C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAatC;;OAEG;IACH,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAkBnH,QAAQ,IAAI,UAAU;IAatB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,OAAO;IAsBf,OAAO,CAAC,iBAAiB;CAa1B"}
|