@blamechris/repo-memory 0.8.0 → 0.10.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 +19 -5
- package/dist/cache/store.d.ts +10 -0
- package/dist/cache/store.d.ts.map +1 -1
- package/dist/cache/store.js +21 -0
- package/dist/cache/store.js.map +1 -1
- package/dist/cli/index-command.d.ts +30 -0
- package/dist/cli/index-command.d.ts.map +1 -0
- package/dist/cli/index-command.js +110 -0
- package/dist/cli/index-command.js.map +1 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -0
- package/dist/config.js.map +1 -1
- package/dist/grammars/tree-sitter-go.wasm +0 -0
- package/dist/grammars/tree-sitter-javascript.wasm +0 -0
- package/dist/grammars/tree-sitter-python.wasm +0 -0
- package/dist/grammars/tree-sitter-rust.wasm +0 -0
- package/dist/grammars/tree-sitter-tsx.wasm +0 -0
- package/dist/grammars/tree-sitter-typescript.wasm +0 -0
- package/dist/indexer/ast-summarizer.d.ts +10 -0
- package/dist/indexer/ast-summarizer.d.ts.map +1 -0
- package/dist/indexer/ast-summarizer.js +958 -0
- package/dist/indexer/ast-summarizer.js.map +1 -0
- package/dist/indexer/project-map.d.ts.map +1 -1
- package/dist/indexer/project-map.js +5 -3
- package/dist/indexer/project-map.js.map +1 -1
- package/dist/indexer/smart-summarizer.d.ts +2 -2
- package/dist/indexer/smart-summarizer.d.ts.map +1 -1
- package/dist/indexer/smart-summarizer.js +4 -4
- package/dist/indexer/smart-summarizer.js.map +1 -1
- package/dist/indexer/summarize.d.ts +21 -0
- package/dist/indexer/summarize.d.ts.map +1 -0
- package/dist/indexer/summarize.js +56 -0
- package/dist/indexer/summarize.js.map +1 -0
- package/dist/indexer/summarizer.js +1 -1
- package/dist/indexer/summarizer.js.map +1 -1
- package/dist/persistence/db.d.ts +2 -0
- package/dist/persistence/db.d.ts.map +1 -1
- package/dist/persistence/db.js +16 -1
- package/dist/persistence/db.js.map +1 -1
- package/dist/server.js +14 -5
- package/dist/server.js.map +1 -1
- package/dist/tools/force-reread.d.ts.map +1 -1
- package/dist/tools/force-reread.js +3 -2
- package/dist/tools/force-reread.js.map +1 -1
- package/dist/tools/get-file-summary.d.ts.map +1 -1
- package/dist/tools/get-file-summary.js +3 -2
- package/dist/tools/get-file-summary.js.map +1 -1
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -34,6 +34,17 @@ npm install -g @blamechris/repo-memory
|
|
|
34
34
|
repo-memory # starts MCP server on stdio
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
+
### Prewarm the cache
|
|
38
|
+
The first time an agent touches a file it pays full price — the summary has to be generated. You can pay that cost ahead of time (post-pull hook, CI step) so the first session starts with cache hits:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
repo-memory index # index the current directory
|
|
42
|
+
repo-memory index /path/to/project
|
|
43
|
+
repo-memory index --quiet # no output on success (for scripts/CI)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Only missing or stale entries are re-summarized; unchanged files are left untouched.
|
|
47
|
+
|
|
37
48
|
## How It Works
|
|
38
49
|
|
|
39
50
|
### The problem
|
|
@@ -181,6 +192,7 @@ Create a `.repo-memory.json` in your project root to customize behavior:
|
|
|
181
192
|
{
|
|
182
193
|
"ignore": ["dist", "node_modules", "*.generated.ts"],
|
|
183
194
|
"maxFiles": 5000,
|
|
195
|
+
"summarizer": "ast",
|
|
184
196
|
"gc": {
|
|
185
197
|
"cacheMaxAgeDays": 30,
|
|
186
198
|
"taskMaxAgeDays": 30,
|
|
@@ -193,6 +205,8 @@ Create a `.repo-memory.json` in your project root to customize behavior:
|
|
|
193
205
|
}
|
|
194
206
|
```
|
|
195
207
|
|
|
208
|
+
`summarizer` selects the summary engine: `"regex"` (default) or `"ast"`. AST mode parses TypeScript/JavaScript files (`.ts/.tsx/.js/.jsx/.mjs/.cjs`) with tree-sitter, producing accurate exports/declarations and a semantic `purpose` line that names the dominant symbols (e.g. `class CacheStore (9 methods)` instead of `source`) — which is what `search_by_purpose` matches against. TS/JS only for now; other languages, unsupported extensions, and files with parse errors fall back to the regex summarizer automatically. Switching modes regenerates summaries lazily on next access.
|
|
209
|
+
|
|
196
210
|
The `tools` block toggles tool groups. `navigation` and `summaries` are **on by default** (set `"summaries": false` to drop the summary tools); `tasks` and `telemetry` are **off by default** (set them to `true` to enable).
|
|
197
211
|
|
|
198
212
|
The `gc` block controls garbage collection, which runs automatically on server startup:
|
|
@@ -206,11 +220,11 @@ Config validation is per-key: an invalid value is skipped with a warning on stde
|
|
|
206
220
|
|
|
207
221
|
## Language Support
|
|
208
222
|
|
|
209
|
-
Summaries are extracted via regex analysis. Supported languages:
|
|
210
|
-
- **TypeScript / JavaScript** — exports, imports, declarations, purpose classification
|
|
211
|
-
- **Python** — functions, classes, `__all__`, `from`/`import` statements
|
|
212
|
-
- **Go** — exported names (uppercase), imports, type/func/var/const declarations
|
|
213
|
-
- **Rust** — `pub` items, `use`/`mod` statements, structs/enums/traits/impls
|
|
223
|
+
Summaries are extracted via regex analysis, or from tree-sitter parse trees when `"summarizer": "ast"` is set. All four language families below have AST support in `ast` mode, which adds semantic purpose lines derived from doc comments; regex stays as the universal fallback for other languages and unparseable files. Supported languages:
|
|
224
|
+
- **TypeScript / JavaScript** — exports, imports, declarations, purpose classification; AST mode adds JSDoc-derived purpose lines
|
|
225
|
+
- **Python** — functions, classes (incl. `async def`), `__all__`, `from`/`import` statements; AST mode adds docstring-derived purpose lines
|
|
226
|
+
- **Go** — exported names (uppercase), imports, type/func/var/const declarations; AST mode adds doc-comment purpose lines and grouped `var (…)` / `const (…)` support
|
|
227
|
+
- **Rust** — `pub` items, `use`/`mod` statements, structs/enums/traits/impls; AST mode adds `///` doc-comment purpose lines and `pub use` re-exports
|
|
214
228
|
|
|
215
229
|
Config files (JSON, YAML, TOML) and other file types get basic classification.
|
|
216
230
|
|
package/dist/cache/store.d.ts
CHANGED
|
@@ -11,6 +11,16 @@ export declare class CacheStore {
|
|
|
11
11
|
hash: string;
|
|
12
12
|
summary?: FileSummary | null;
|
|
13
13
|
}>): void;
|
|
14
|
+
/** Read a value from the meta key/value table. */
|
|
15
|
+
getMeta(key: string): string | null;
|
|
16
|
+
/** Write a value to the meta key/value table. */
|
|
17
|
+
setMeta(key: string, value: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* Drop all cached summaries while keeping hashes and timestamps. Used when
|
|
20
|
+
* the summarizer implementation changes: change detection stays intact and
|
|
21
|
+
* summaries regenerate lazily on next access.
|
|
22
|
+
*/
|
|
23
|
+
clearAllSummaries(): void;
|
|
14
24
|
getStaleEntries(maxAge: number): CacheEntry[];
|
|
15
25
|
}
|
|
16
26
|
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAkB3D,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,WAAW,EAAE,MAAM;IAI/B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IASzC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAevE,aAAa,IAAI,UAAU,EAAE;IAS7B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK/B,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;KAAE,CAAC,GAAG,IAAI;IAsB9F,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;CAW9C"}
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAkB3D,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,WAAW,EAAE,MAAM;IAI/B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IASzC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAevE,aAAa,IAAI,UAAU,EAAE;IAS7B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK/B,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;KAAE,CAAC,GAAG,IAAI;IAsB9F,kDAAkD;IAClD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQnC,iDAAiD;IACjD,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQzC;;;;OAIG;IACH,iBAAiB,IAAI,IAAI;IAKzB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;CAW9C"}
|
package/dist/cache/store.js
CHANGED
|
@@ -58,6 +58,27 @@ export class CacheStore {
|
|
|
58
58
|
});
|
|
59
59
|
runBatch();
|
|
60
60
|
}
|
|
61
|
+
/** Read a value from the meta key/value table. */
|
|
62
|
+
getMeta(key) {
|
|
63
|
+
const db = getDatabase(this.projectRoot);
|
|
64
|
+
const row = db.prepare('SELECT value FROM meta WHERE key = ?').get(key);
|
|
65
|
+
return row?.value ?? null;
|
|
66
|
+
}
|
|
67
|
+
/** Write a value to the meta key/value table. */
|
|
68
|
+
setMeta(key, value) {
|
|
69
|
+
const db = getDatabase(this.projectRoot);
|
|
70
|
+
db.prepare(`INSERT INTO meta (key, value) VALUES (?, ?)
|
|
71
|
+
ON CONFLICT(key) DO UPDATE SET value = excluded.value`).run(key, value);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Drop all cached summaries while keeping hashes and timestamps. Used when
|
|
75
|
+
* the summarizer implementation changes: change detection stays intact and
|
|
76
|
+
* summaries regenerate lazily on next access.
|
|
77
|
+
*/
|
|
78
|
+
clearAllSummaries() {
|
|
79
|
+
const db = getDatabase(this.projectRoot);
|
|
80
|
+
db.prepare('UPDATE files SET summary_json = NULL').run();
|
|
81
|
+
}
|
|
61
82
|
getStaleEntries(maxAge) {
|
|
62
83
|
const db = getDatabase(this.projectRoot);
|
|
63
84
|
const cutoff = Date.now() - maxAge;
|
package/dist/cache/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface IndexOptions {
|
|
2
|
+
/** Suppress the human-readable report printed to stdout. */
|
|
3
|
+
quiet?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export interface IndexReport {
|
|
6
|
+
projectRoot: string;
|
|
7
|
+
cacheDbPath: string;
|
|
8
|
+
scanned: number;
|
|
9
|
+
summarized: number;
|
|
10
|
+
fresh: number;
|
|
11
|
+
skipped: number;
|
|
12
|
+
skippedPaths: string[];
|
|
13
|
+
elapsedMs: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Prewarm the summary cache for a project: scan all indexable files and run
|
|
17
|
+
* each one through the same hash/compare/summarize/store path the
|
|
18
|
+
* `get_file_summary` tool uses, so a later MCP session starts with cache hits.
|
|
19
|
+
*
|
|
20
|
+
* Files whose hash already matches the cache are left untouched ("fresh");
|
|
21
|
+
* files that cannot be read or summarized are counted as skipped rather than
|
|
22
|
+
* aborting the run.
|
|
23
|
+
*/
|
|
24
|
+
export declare function runIndex(projectRoot: string, options?: IndexOptions): Promise<IndexReport>;
|
|
25
|
+
/**
|
|
26
|
+
* Thin argv wrapper for `repo-memory index [projectRoot] [--quiet]`.
|
|
27
|
+
* Exits 0 on success, 1 on error (message to stderr).
|
|
28
|
+
*/
|
|
29
|
+
export declare function runIndexCli(argv: string[]): Promise<never>;
|
|
30
|
+
//# sourceMappingURL=index-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-command.d.ts","sourceRoot":"","sources":["../../src/cli/index-command.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAC5B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CAoDtB;AAeD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CA4BhE"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { existsSync, statSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { scanProject } from '../indexer/scanner.js';
|
|
4
|
+
import { ensureSummaryGeneration } from '../indexer/summarize.js';
|
|
5
|
+
import { getDatabasePath } from '../persistence/db.js';
|
|
6
|
+
import { getFileSummary } from '../tools/get-file-summary.js';
|
|
7
|
+
/**
|
|
8
|
+
* Prewarm the summary cache for a project: scan all indexable files and run
|
|
9
|
+
* each one through the same hash/compare/summarize/store path the
|
|
10
|
+
* `get_file_summary` tool uses, so a later MCP session starts with cache hits.
|
|
11
|
+
*
|
|
12
|
+
* Files whose hash already matches the cache are left untouched ("fresh");
|
|
13
|
+
* files that cannot be read or summarized are counted as skipped rather than
|
|
14
|
+
* aborting the run.
|
|
15
|
+
*/
|
|
16
|
+
export async function runIndex(projectRoot, options = {}) {
|
|
17
|
+
const root = resolve(projectRoot);
|
|
18
|
+
if (!existsSync(root) || !statSync(root).isDirectory()) {
|
|
19
|
+
throw new Error(`project root does not exist or is not a directory: ${root}`);
|
|
20
|
+
}
|
|
21
|
+
const started = Date.now();
|
|
22
|
+
// Verify cached summaries match the configured summarizer mode/generation
|
|
23
|
+
// before any cache comparisons happen.
|
|
24
|
+
ensureSummaryGeneration(root);
|
|
25
|
+
const files = await scanProject(root);
|
|
26
|
+
let summarized = 0;
|
|
27
|
+
let fresh = 0;
|
|
28
|
+
const skippedPaths = [];
|
|
29
|
+
for (const file of files) {
|
|
30
|
+
try {
|
|
31
|
+
// Reuses the exact cache-read/write semantics of the get_file_summary
|
|
32
|
+
// tool: hash, compare, regenerate only when missing/stale.
|
|
33
|
+
const result = await getFileSummary(root, file);
|
|
34
|
+
if (result.fromCache) {
|
|
35
|
+
fresh += 1;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
summarized += 1;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// Unreadable entries (deleted since scan, gitlinks, permission errors).
|
|
43
|
+
skippedPaths.push(file);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const report = {
|
|
47
|
+
projectRoot: root,
|
|
48
|
+
cacheDbPath: getDatabasePath(root),
|
|
49
|
+
scanned: files.length,
|
|
50
|
+
summarized,
|
|
51
|
+
fresh,
|
|
52
|
+
skipped: skippedPaths.length,
|
|
53
|
+
skippedPaths,
|
|
54
|
+
elapsedMs: Date.now() - started,
|
|
55
|
+
};
|
|
56
|
+
if (!options.quiet) {
|
|
57
|
+
// stdout is safe here — the index command never runs while the MCP stdio
|
|
58
|
+
// transport is active, so this cannot corrupt the protocol channel.
|
|
59
|
+
process.stdout.write(formatReport(report));
|
|
60
|
+
}
|
|
61
|
+
return report;
|
|
62
|
+
}
|
|
63
|
+
function formatReport(report) {
|
|
64
|
+
const lines = [
|
|
65
|
+
`Indexed ${report.projectRoot}`,
|
|
66
|
+
` scanned: ${report.scanned}`,
|
|
67
|
+
` summarized: ${report.summarized}`,
|
|
68
|
+
` already fresh: ${report.fresh}`,
|
|
69
|
+
` skipped: ${report.skipped}`,
|
|
70
|
+
` elapsed: ${(report.elapsedMs / 1000).toFixed(2)}s`,
|
|
71
|
+
` cache db: ${report.cacheDbPath}`,
|
|
72
|
+
];
|
|
73
|
+
return lines.join('\n') + '\n';
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Thin argv wrapper for `repo-memory index [projectRoot] [--quiet]`.
|
|
77
|
+
* Exits 0 on success, 1 on error (message to stderr).
|
|
78
|
+
*/
|
|
79
|
+
export async function runIndexCli(argv) {
|
|
80
|
+
let quiet = false;
|
|
81
|
+
let projectRoot;
|
|
82
|
+
for (const arg of argv) {
|
|
83
|
+
if (arg === '--quiet' || arg === '-q') {
|
|
84
|
+
quiet = true;
|
|
85
|
+
}
|
|
86
|
+
else if (arg.startsWith('-')) {
|
|
87
|
+
process.stderr.write(`repo-memory index: unknown option '${arg}'\n`);
|
|
88
|
+
process.stderr.write('Usage: repo-memory index [projectRoot] [--quiet]\n');
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
else if (projectRoot === undefined) {
|
|
92
|
+
projectRoot = arg;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
process.stderr.write(`repo-memory index: unexpected argument '${arg}'\n`);
|
|
96
|
+
process.stderr.write('Usage: repo-memory index [projectRoot] [--quiet]\n');
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
await runIndex(projectRoot ?? process.cwd(), { quiet });
|
|
102
|
+
process.exit(0);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
106
|
+
process.stderr.write(`repo-memory index: ${message}\n`);
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=index-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-command.js","sourceRoot":"","sources":["../../src/cli/index-command.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export interface ToolGroupConfig {
|
|
|
6
6
|
export interface RepoMemoryConfig {
|
|
7
7
|
ignore?: string[];
|
|
8
8
|
maxFiles?: number;
|
|
9
|
+
/** Summary engine for TS/JS files: 'regex' (default) or 'ast' (tree-sitter). */
|
|
10
|
+
summarizer?: 'regex' | 'ast';
|
|
9
11
|
gc?: {
|
|
10
12
|
cacheMaxAgeDays?: number;
|
|
11
13
|
taskMaxAgeDays?: number;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAQD,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAqBhE;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC7B,EAAE,CAAC,EAAE;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAQD,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAqBhE;AAiFD,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
|
package/dist/config.js
CHANGED
|
@@ -52,6 +52,14 @@ function validateConfig(raw) {
|
|
|
52
52
|
warn('"maxFiles" must be a positive number; ignoring it');
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
+
if ('summarizer' in obj) {
|
|
56
|
+
if (obj.summarizer === 'regex' || obj.summarizer === 'ast') {
|
|
57
|
+
config.summarizer = obj.summarizer;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
warn('"summarizer" must be "regex" or "ast"; ignoring it');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
55
63
|
if ('gc' in obj) {
|
|
56
64
|
if (typeof obj.gc === 'object' && obj.gc !== null && !Array.isArray(obj.gc)) {
|
|
57
65
|
const gc = obj.gc;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,eAAe,GAAG,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { FileSummary } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Summarize a TS/JS, Python, Go or Rust file from its syntax tree. Falls back
|
|
4
|
+
* to the regex summarizer for unsupported extensions, empty files, parse
|
|
5
|
+
* errors, or when the WASM runtime cannot be loaded.
|
|
6
|
+
*/
|
|
7
|
+
export declare function summarizeFileAst(filePath: string, contents: string): Promise<FileSummary>;
|
|
8
|
+
/** True when the AST summarizer handles this file natively (vs regex fallback). */
|
|
9
|
+
export declare function isAstSupported(filePath: string): boolean;
|
|
10
|
+
//# sourceMappingURL=ast-summarizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-summarizer.d.ts","sourceRoot":"","sources":["../../src/indexer/ast-summarizer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAy7B/C;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAqC/F;AAED,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD"}
|