codesift-mcp 0.15.5 → 0.17.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/dist/cli/auto-prune.d.ts +16 -0
- package/dist/cli/auto-prune.d.ts.map +1 -0
- package/dist/cli/auto-prune.js +87 -0
- package/dist/cli/auto-prune.js.map +1 -0
- package/dist/cli/commands-admin.d.ts.map +1 -1
- package/dist/cli/commands-admin.js +11 -0
- package/dist/cli/commands-admin.js.map +1 -1
- package/dist/cli/commands-daemon.d.ts.map +1 -1
- package/dist/cli/commands-daemon.js +9 -0
- package/dist/cli/commands-daemon.js.map +1 -1
- package/dist/cli/commands-index.d.ts.map +1 -1
- package/dist/cli/commands-index.js +8 -0
- package/dist/cli/commands-index.js.map +1 -1
- package/dist/cli/embed-child.js +5 -1
- package/dist/cli/embed-child.js.map +1 -1
- package/dist/cli/hooks/pre-tool-use.d.ts.map +1 -1
- package/dist/cli/hooks/pre-tool-use.js +5 -2
- package/dist/cli/hooks/pre-tool-use.js.map +1 -1
- package/dist/cli/hooks/shared.d.ts.map +1 -1
- package/dist/cli/hooks/shared.js +6 -2
- package/dist/cli/hooks/shared.js.map +1 -1
- package/dist/cli/orphan-guard.d.ts +22 -0
- package/dist/cli/orphan-guard.d.ts.map +1 -1
- package/dist/cli/orphan-guard.js +30 -0
- package/dist/cli/orphan-guard.js.map +1 -1
- package/dist/cli/service.d.ts +32 -0
- package/dist/cli/service.d.ts.map +1 -1
- package/dist/cli/service.js +67 -3
- package/dist/cli/service.js.map +1 -1
- package/dist/cli/setup/codex-project-auto.d.ts +27 -0
- package/dist/cli/setup/codex-project-auto.d.ts.map +1 -0
- package/dist/cli/setup/codex-project-auto.js +98 -0
- package/dist/cli/setup/codex-project-auto.js.map +1 -0
- package/dist/cli/setup/codex.d.ts.map +1 -1
- package/dist/cli/setup/codex.js +101 -6
- package/dist/cli/setup/codex.js.map +1 -1
- package/dist/cli/setup/cursor.d.ts.map +1 -1
- package/dist/cli/setup/cursor.js +9 -1
- package/dist/cli/setup/cursor.js.map +1 -1
- package/dist/cli/setup/gemini.d.ts.map +1 -1
- package/dist/cli/setup/gemini.js +21 -0
- package/dist/cli/setup/gemini.js.map +1 -1
- package/dist/cli/setup/mcp.d.ts +37 -1
- package/dist/cli/setup/mcp.d.ts.map +1 -1
- package/dist/cli/setup/mcp.js +57 -4
- package/dist/cli/setup/mcp.js.map +1 -1
- package/dist/cli/setup/types.d.ts +19 -1
- package/dist/cli/setup/types.d.ts.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +30 -6
- package/dist/config.js.map +1 -1
- package/dist/formatters-core.d.ts +1 -0
- package/dist/formatters-core.d.ts.map +1 -1
- package/dist/formatters-core.js +8 -2
- package/dist/formatters-core.js.map +1 -1
- package/dist/formatters-shortening.d.ts.map +1 -1
- package/dist/formatters-shortening.js +8 -2
- package/dist/formatters-shortening.js.map +1 -1
- package/dist/lsp/lsp-servers.d.ts.map +1 -1
- package/dist/lsp/lsp-servers.js +4 -1
- package/dist/lsp/lsp-servers.js.map +1 -1
- package/dist/register-tool-groups/meta.d.ts.map +1 -1
- package/dist/register-tool-groups/meta.js +23 -0
- package/dist/register-tool-groups/meta.js.map +1 -1
- package/dist/register-tools/runtime.d.ts +1 -1
- package/dist/register-tools/runtime.d.ts.map +1 -1
- package/dist/register-tools/runtime.js +9 -2
- package/dist/register-tools/runtime.js.map +1 -1
- package/dist/register-tools.d.ts +3 -1
- package/dist/register-tools.d.ts.map +1 -1
- package/dist/register-tools.js +7 -2
- package/dist/register-tools.js.map +1 -1
- package/dist/search/bm25-store.d.ts +6 -0
- package/dist/search/bm25-store.d.ts.map +1 -0
- package/dist/search/bm25-store.js +164 -0
- package/dist/search/bm25-store.js.map +1 -0
- package/dist/search/bm25.d.ts +30 -0
- package/dist/search/bm25.d.ts.map +1 -1
- package/dist/search/bm25.js +159 -34
- package/dist/search/bm25.js.map +1 -1
- package/dist/search/embed-gate.d.ts +17 -0
- package/dist/search/embed-gate.d.ts.map +1 -0
- package/dist/search/embed-gate.js +64 -0
- package/dist/search/embed-gate.js.map +1 -0
- package/dist/search/semantic.d.ts.map +1 -1
- package/dist/search/semantic.js +5 -2
- package/dist/search/semantic.js.map +1 -1
- package/dist/server-helpers/health-vitals.d.ts +45 -0
- package/dist/server-helpers/health-vitals.d.ts.map +1 -0
- package/dist/server-helpers/health-vitals.js +77 -0
- package/dist/server-helpers/health-vitals.js.map +1 -0
- package/dist/server-helpers/request-context.d.ts +34 -4
- package/dist/server-helpers/request-context.d.ts.map +1 -1
- package/dist/server-helpers/request-context.js +4 -0
- package/dist/server-helpers/request-context.js.map +1 -1
- package/dist/server.d.ts +9 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +128 -6
- package/dist/server.js.map +1 -1
- package/dist/storage/_shared.d.ts +1 -1
- package/dist/storage/_shared.d.ts.map +1 -1
- package/dist/storage/_shared.js +41 -3
- package/dist/storage/_shared.js.map +1 -1
- package/dist/storage/index-migration.d.ts.map +1 -1
- package/dist/storage/index-migration.js +6 -2
- package/dist/storage/index-migration.js.map +1 -1
- package/dist/storage/index-store.d.ts +29 -0
- package/dist/storage/index-store.d.ts.map +1 -1
- package/dist/storage/index-store.js +112 -0
- package/dist/storage/index-store.js.map +1 -1
- package/dist/storage/registry.d.ts.map +1 -1
- package/dist/storage/registry.js +13 -1
- package/dist/storage/registry.js.map +1 -1
- package/dist/storage/sqlite/accessors.d.ts +17 -0
- package/dist/storage/sqlite/accessors.d.ts.map +1 -1
- package/dist/storage/sqlite/accessors.js +20 -0
- package/dist/storage/sqlite/accessors.js.map +1 -1
- package/dist/storage/sqlite/connection.d.ts +20 -0
- package/dist/storage/sqlite/connection.d.ts.map +1 -1
- package/dist/storage/sqlite/connection.js +61 -0
- package/dist/storage/sqlite/connection.js.map +1 -1
- package/dist/storage/sqlite/index-io.d.ts +5 -0
- package/dist/storage/sqlite/index-io.d.ts.map +1 -1
- package/dist/storage/sqlite/index-io.js +98 -9
- package/dist/storage/sqlite/index-io.js.map +1 -1
- package/dist/storage/sqlite/meta.d.ts +7 -0
- package/dist/storage/sqlite/meta.d.ts.map +1 -1
- package/dist/storage/sqlite/meta.js.map +1 -1
- package/dist/storage/sqlite/queries.d.ts +66 -0
- package/dist/storage/sqlite/queries.d.ts.map +1 -0
- package/dist/storage/sqlite/queries.js +196 -0
- package/dist/storage/sqlite/queries.js.map +1 -0
- package/dist/storage/sqlite/schema.d.ts +2 -2
- package/dist/storage/sqlite/schema.d.ts.map +1 -1
- package/dist/storage/sqlite/schema.js +36 -0
- package/dist/storage/sqlite/schema.js.map +1 -1
- package/dist/storage/sqlite-index-store.d.ts +3 -1
- package/dist/storage/sqlite-index-store.d.ts.map +1 -1
- package/dist/storage/sqlite-index-store.js +4 -1
- package/dist/storage/sqlite-index-store.js.map +1 -1
- package/dist/storage/telemetry/uploader.js +1 -1
- package/dist/storage/telemetry/uploader.js.map +1 -1
- package/dist/tools/boundary-tools.js +2 -2
- package/dist/tools/boundary-tools.js.map +1 -1
- package/dist/tools/community-tools.d.ts +7 -0
- package/dist/tools/community-tools.d.ts.map +1 -1
- package/dist/tools/community-tools.js +31 -14
- package/dist/tools/community-tools.js.map +1 -1
- package/dist/tools/complexity-tools.d.ts.map +1 -1
- package/dist/tools/complexity-tools.js +65 -45
- package/dist/tools/complexity-tools.js.map +1 -1
- package/dist/tools/conversation-index-tools.js +2 -2
- package/dist/tools/conversation-index-tools.js.map +1 -1
- package/dist/tools/conversation-search-tools.js +2 -2
- package/dist/tools/conversation-search-tools.js.map +1 -1
- package/dist/tools/coupling-tools.d.ts +2 -2
- package/dist/tools/coupling-tools.d.ts.map +1 -1
- package/dist/tools/coupling-tools.js +8 -13
- package/dist/tools/coupling-tools.js.map +1 -1
- package/dist/tools/diff-tools.d.ts.map +1 -1
- package/dist/tools/diff-tools.js +8 -14
- package/dist/tools/diff-tools.js.map +1 -1
- package/dist/tools/git-exec.d.ts +42 -0
- package/dist/tools/git-exec.d.ts.map +1 -0
- package/dist/tools/git-exec.js +53 -0
- package/dist/tools/git-exec.js.map +1 -0
- package/dist/tools/graph-tools.d.ts.map +1 -1
- package/dist/tools/graph-tools.js +5 -2
- package/dist/tools/graph-tools.js.map +1 -1
- package/dist/tools/hotspot-tools.d.ts +25 -0
- package/dist/tools/hotspot-tools.d.ts.map +1 -1
- package/dist/tools/hotspot-tools.js +24 -3
- package/dist/tools/hotspot-tools.js.map +1 -1
- package/dist/tools/impact-tools.d.ts.map +1 -1
- package/dist/tools/impact-tools.js +6 -9
- package/dist/tools/impact-tools.js.map +1 -1
- package/dist/tools/index-tools/file-indexer.d.ts +4 -0
- package/dist/tools/index-tools/file-indexer.d.ts.map +1 -1
- package/dist/tools/index-tools/file-indexer.js +155 -16
- package/dist/tools/index-tools/file-indexer.js.map +1 -1
- package/dist/tools/index-tools/folder-indexer.d.ts.map +1 -1
- package/dist/tools/index-tools/folder-indexer.js +5 -5
- package/dist/tools/index-tools/folder-indexer.js.map +1 -1
- package/dist/tools/index-tools/load-gate.d.ts +15 -0
- package/dist/tools/index-tools/load-gate.d.ts.map +1 -0
- package/dist/tools/index-tools/load-gate.js +57 -0
- package/dist/tools/index-tools/load-gate.js.map +1 -0
- package/dist/tools/index-tools/overload-guard.d.ts +16 -0
- package/dist/tools/index-tools/overload-guard.d.ts.map +1 -0
- package/dist/tools/index-tools/overload-guard.js +68 -0
- package/dist/tools/index-tools/overload-guard.js.map +1 -0
- package/dist/tools/index-tools/registry.d.ts +25 -1
- package/dist/tools/index-tools/registry.d.ts.map +1 -1
- package/dist/tools/index-tools/registry.js +149 -8
- package/dist/tools/index-tools/registry.js.map +1 -1
- package/dist/tools/index-tools/state.d.ts +20 -0
- package/dist/tools/index-tools/state.d.ts.map +1 -1
- package/dist/tools/index-tools/state.js +86 -0
- package/dist/tools/index-tools/state.js.map +1 -1
- package/dist/tools/index-tools/watcher.d.ts.map +1 -1
- package/dist/tools/index-tools/watcher.js +13 -5
- package/dist/tools/index-tools/watcher.js.map +1 -1
- package/dist/tools/index-tools/worktree-seed.d.ts +39 -1
- package/dist/tools/index-tools/worktree-seed.d.ts.map +1 -1
- package/dist/tools/index-tools/worktree-seed.js +154 -21
- package/dist/tools/index-tools/worktree-seed.js.map +1 -1
- package/dist/tools/index-tools.d.ts +2 -2
- package/dist/tools/index-tools.d.ts.map +1 -1
- package/dist/tools/index-tools.js +2 -2
- package/dist/tools/index-tools.js.map +1 -1
- package/dist/tools/journal-generator-helpers.d.ts.map +1 -1
- package/dist/tools/journal-generator-helpers.js +3 -1
- package/dist/tools/journal-generator-helpers.js.map +1 -1
- package/dist/tools/patterns/execution.d.ts.map +1 -1
- package/dist/tools/patterns/execution.js +28 -10
- package/dist/tools/patterns/execution.js.map +1 -1
- package/dist/tools/review-diff/checks/coupling.js +1 -1
- package/dist/tools/review-diff/checks/coupling.js.map +1 -1
- package/dist/tools/secret-detectors.d.ts +10 -1
- package/dist/tools/secret-detectors.d.ts.map +1 -1
- package/dist/tools/secret-detectors.js +16 -2
- package/dist/tools/secret-detectors.js.map +1 -1
- package/dist/tools/secret-file-scanner.d.ts +3 -1
- package/dist/tools/secret-file-scanner.d.ts.map +1 -1
- package/dist/tools/secret-file-scanner.js +4 -2
- package/dist/tools/secret-file-scanner.js.map +1 -1
- package/dist/tools/secret-tools.d.ts.map +1 -1
- package/dist/tools/secret-tools.js +6 -3
- package/dist/tools/secret-tools.js.map +1 -1
- package/dist/tools/status-tools.d.ts +20 -0
- package/dist/tools/status-tools.d.ts.map +1 -1
- package/dist/tools/status-tools.js +46 -0
- package/dist/tools/status-tools.js.map +1 -1
- package/dist/tools/symbol-analysis-tools.d.ts.map +1 -1
- package/dist/tools/symbol-analysis-tools.js +27 -2
- package/dist/tools/symbol-analysis-tools.js.map +1 -1
- package/dist/tools/symbol-reference-tools.js +4 -4
- package/dist/tools/symbol-reference-tools.js.map +1 -1
- package/dist/tools/symbol-tool-internals.d.ts +10 -0
- package/dist/tools/symbol-tool-internals.d.ts.map +1 -1
- package/dist/tools/symbol-tool-internals.js +16 -1
- package/dist/tools/symbol-tool-internals.js.map +1 -1
- package/dist/tools/test-impact-tools.js +1 -1
- package/dist/tools/test-impact-tools.js.map +1 -1
- package/dist/tools/wiki-overview-sources.d.ts.map +1 -1
- package/dist/tools/wiki-overview-sources.js +3 -0
- package/dist/tools/wiki-overview-sources.js.map +1 -1
- package/dist/utils/import-graph/collect.d.ts +2 -3
- package/dist/utils/import-graph/collect.d.ts.map +1 -1
- package/dist/utils/import-graph/collect.js +73 -8
- package/dist/utils/import-graph/collect.js.map +1 -1
- package/dist/utils/import-graph/edge-accumulator.d.ts.map +1 -1
- package/dist/utils/import-graph/edge-accumulator.js +5 -0
- package/dist/utils/import-graph/edge-accumulator.js.map +1 -1
- package/dist/utils/import-graph/edge-cache.d.ts +15 -0
- package/dist/utils/import-graph/edge-cache.d.ts.map +1 -0
- package/dist/utils/import-graph/edge-cache.js +98 -0
- package/dist/utils/import-graph/edge-cache.js.map +1 -0
- package/dist/utils/import-graph/language-imports.d.ts +2 -2
- package/dist/utils/import-graph/language-imports.d.ts.map +1 -1
- package/dist/utils/import-graph/language-imports.js.map +1 -1
- package/dist/utils/import-graph/path-map.d.ts +2 -2
- package/dist/utils/import-graph/path-map.d.ts.map +1 -1
- package/dist/utils/import-graph/path-map.js.map +1 -1
- package/dist/utils/import-graph/python-php-edge-collectors.d.ts +2 -3
- package/dist/utils/import-graph/python-php-edge-collectors.d.ts.map +1 -1
- package/dist/utils/import-graph/python-php-edge-collectors.js.map +1 -1
- package/dist/utils/import-graph/source-edge-collector.d.ts +2 -3
- package/dist/utils/import-graph/source-edge-collector.d.ts.map +1 -1
- package/dist/utils/import-graph/types.d.ts +36 -1
- package/dist/utils/import-graph/types.d.ts.map +1 -1
- package/dist/utils/import-graph/typescript-edge-collector.d.ts +2 -3
- package/dist/utils/import-graph/typescript-edge-collector.d.ts.map +1 -1
- package/dist/utils/import-graph/typescript-edge-collector.js +6 -2
- package/dist/utils/import-graph/typescript-edge-collector.js.map +1 -1
- package/dist/utils/import-graph/workspace-alias.d.ts +2 -2
- package/dist/utils/import-graph/workspace-alias.d.ts.map +1 -1
- package/dist/utils/import-graph/workspace-alias.js.map +1 -1
- package/dist/utils/language-detect.d.ts +2 -4
- package/dist/utils/language-detect.d.ts.map +1 -1
- package/dist/utils/language-detect.js +26 -4
- package/dist/utils/language-detect.js.map +1 -1
- package/dist/utils/ts-imports.d.ts +16 -0
- package/dist/utils/ts-imports.d.ts.map +1 -1
- package/dist/utils/ts-imports.js +65 -3
- package/dist/utils/ts-imports.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { readVitals } from "../../server-helpers/health-vitals.js";
|
|
2
|
+
/**
|
|
3
|
+
* Refuse to START materialising an index while the daemon cannot afford it.
|
|
4
|
+
*
|
|
5
|
+
* A cold `getCodeIndex` reads a whole index into memory — 349 MB and hundreds of thousands of
|
|
6
|
+
* objects for the largest repo here — through a SYNCHRONOUS SQLite API. When the disk is saturated
|
|
7
|
+
* (measured 2026-09-02: 50,835 IOPS at ~6.9 KB, the process in uninterruptible I/O) that read takes
|
|
8
|
+
* minutes, and every other client waits behind it. The caller then hits its own timeout — 120 s in
|
|
9
|
+
* both harnesses — and reports "CODESIFT UNAVAILABLE", so the session runs with NO tools at all.
|
|
10
|
+
*
|
|
11
|
+
* That is the worst possible outcome and it is entirely avoidable: BM25 and the resident caches are
|
|
12
|
+
* usually still there and still answer in milliseconds. Losing semantic search is a degradation.
|
|
13
|
+
* Losing the whole server is an outage, and the difference is which one the agent is told.
|
|
14
|
+
*
|
|
15
|
+
* So this guard is deliberately narrow. It gates ONLY a cold materialisation — an index already
|
|
16
|
+
* resident is returned as normal, and every tool that does not need the full index is untouched. And
|
|
17
|
+
* it fails FAST with a message naming the condition, because two seconds of "busy, retry" is worth
|
|
18
|
+
* more to an agent than two minutes of silence followed by a timeout.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Event-loop lateness that means the thread is already oversubscribed. Below this a cold load is
|
|
22
|
+
* merely slow; above it, it is slow AND holding up everyone else, which is the part that turns one
|
|
23
|
+
* client's cold call into every client's outage.
|
|
24
|
+
*
|
|
25
|
+
* 2 s rather than something tighter: a lag of a few hundred milliseconds is ordinary during any
|
|
26
|
+
* large read, and refusing there would make the guard fire during healthy operation — an index that
|
|
27
|
+
* can never be loaded is worse than one that loads slowly.
|
|
28
|
+
*/
|
|
29
|
+
const LAG_REFUSE_MS = 2_000;
|
|
30
|
+
/** Approaching the ceiling, another 349 MB is what tips the process into an OOM restart, and a
|
|
31
|
+
* restart drops every in-flight call rather than just this one. */
|
|
32
|
+
const HEAP_REFUSE_PCT = 85;
|
|
33
|
+
export function assessOverload(vitals = readVitals()) {
|
|
34
|
+
if (vitals.event_loop_lag_ms >= LAG_REFUSE_MS) {
|
|
35
|
+
return {
|
|
36
|
+
refuse: true,
|
|
37
|
+
reason: `the daemon's event loop is ${vitals.event_loop_lag_ms} ms behind — reading a whole index ` +
|
|
38
|
+
`now would block every other client for minutes`,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
if (vitals.heap_used_pct >= HEAP_REFUSE_PCT) {
|
|
42
|
+
return {
|
|
43
|
+
refuse: true,
|
|
44
|
+
reason: `heap is at ${vitals.heap_used_mb}/${vitals.heap_limit_mb} MB (${vitals.heap_used_pct}%) — ` +
|
|
45
|
+
`loading another index risks an OOM restart, which drops every in-flight call`,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return { refuse: false };
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Thrown instead of blocking. Structural detection (`isOverloadedError`) rather than `instanceof`,
|
|
52
|
+
* for the same reason as AmbiguousSymbolIdError: a duplicated module instance across a worker or
|
|
53
|
+
* bundler boundary breaks `instanceof` and would silently reclassify this as an unknown fault.
|
|
54
|
+
*/
|
|
55
|
+
export class DaemonOverloadedError extends Error {
|
|
56
|
+
overloaded = true;
|
|
57
|
+
constructor(repoName, reason) {
|
|
58
|
+
super(`CodeSift is busy: ${reason}. "${repoName}" is not resident, so this call would have to read ` +
|
|
59
|
+
`it from disk. Nothing is broken and no retry is needed for tools that do not need the full ` +
|
|
60
|
+
`index — text and symbol search, outlines and file trees still answer. Retry this one in a ` +
|
|
61
|
+
`few seconds, or check /health (event_loop_lag_ms, heap_used_pct) to see when it clears.`);
|
|
62
|
+
this.name = "DaemonOverloadedError";
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export function isOverloadedError(err) {
|
|
66
|
+
return typeof err === "object" && err !== null && err.overloaded === true;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=overload-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overload-guard.js","sourceRoot":"","sources":["../../../src/tools/index-tools/overload-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAEnE;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;GAQG;AACH,MAAM,aAAa,GAAG,KAAK,CAAC;AAE5B;oEACoE;AACpE,MAAM,eAAe,GAAG,EAAE,CAAC;AAO3B,MAAM,UAAU,cAAc,CAAC,MAAM,GAAG,UAAU,EAAE;IAClD,IAAI,MAAM,CAAC,iBAAiB,IAAI,aAAa,EAAE,CAAC;QAC9C,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EACJ,8BAA8B,MAAM,CAAC,iBAAiB,qCAAqC;gBAC3F,gDAAgD;SACnD,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,aAAa,IAAI,eAAe,EAAE,CAAC;QAC5C,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EACJ,cAAc,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,aAAa,QAAQ,MAAM,CAAC,aAAa,OAAO;gBAC5F,8EAA8E;SACjF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACrC,UAAU,GAAG,IAAI,CAAC;IAC3B,YAAY,QAAgB,EAAE,MAAc;QAC1C,KAAK,CACH,qBAAqB,MAAM,MAAM,QAAQ,qDAAqD;YAC5F,6FAA6F;YAC7F,4FAA4F;YAC5F,yFAAyF,CAC5F,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAK,GAAgC,CAAC,UAAU,KAAK,IAAI,CAAC;AAC1G,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type IndexSummary } from "../../storage/sqlite-index-store.js";
|
|
2
|
+
import type { SymbolQuery } from "../../storage/sqlite/queries.js";
|
|
2
3
|
import type { BM25Index } from "../../search/bm25.js";
|
|
3
|
-
import type { CodeIndex, RepoMeta } from "../../types.js";
|
|
4
|
+
import type { CodeIndex, RepoMeta, CodeSymbol } from "../../types.js";
|
|
4
5
|
export interface RepoSummary {
|
|
5
6
|
name: string;
|
|
6
7
|
file_count: number;
|
|
@@ -34,6 +35,29 @@ export declare function getCodeIndex(repoName: string, options?: {
|
|
|
34
35
|
* Returns `IndexSummary`, which has no `symbols` field at all rather than an empty one: a caller
|
|
35
36
|
* that needs symbols must fail to compile, not read an empty array as "this repo has none".
|
|
36
37
|
*/
|
|
38
|
+
/**
|
|
39
|
+
* Symbols matching a predicate, without materialising the index.
|
|
40
|
+
*
|
|
41
|
+
* The tool-layer face of `findSymbols` (ADR-004 stage 2), resolving the repo name the same way
|
|
42
|
+
* `getCodeIndex` and `getIndexSummary` do so a caller never has to reach into the registry.
|
|
43
|
+
*
|
|
44
|
+
* An already-resident index answers from memory: going back to the database would be slower than
|
|
45
|
+
* filtering what is already being held, and it keeps the two paths returning the same objects.
|
|
46
|
+
* The reasoning about cache validity is `getIndexSummary`'s, unchanged.
|
|
47
|
+
*/
|
|
48
|
+
export declare function findRepoSymbols(repoName: string, query: SymbolQuery, options?: {
|
|
49
|
+
skipFreshness?: boolean;
|
|
50
|
+
}): Promise<CodeSymbol[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Fold over matching symbols in pages, for the tools that must see every symbol but never need
|
|
53
|
+
* them all resident — regex scanners, complexity scorers, adjacency builders.
|
|
54
|
+
*
|
|
55
|
+
* Returning `false` from `onBatch` stops the scan, which the wall-clock-budgeted tools need: without
|
|
56
|
+
* it a scorer that has run out of time keeps paging the rest of the table for results nobody reads.
|
|
57
|
+
*/
|
|
58
|
+
export declare function streamRepoSymbols(repoName: string, query: SymbolQuery, onBatch: (batch: CodeSymbol[]) => void | boolean | Promise<void | boolean>, options?: {
|
|
59
|
+
skipFreshness?: boolean;
|
|
60
|
+
}): Promise<void>;
|
|
37
61
|
export declare function getIndexSummary(repoName: string, options?: {
|
|
38
62
|
skipFreshness?: boolean;
|
|
39
63
|
}): Promise<IndexSummary | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/tools/index-tools/registry.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/tools/index-tools/registry.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,qCAAqC,CAAC;AAK7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAmBnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAetD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGtE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,WAAW,EAAE,GAAG,MAAM,EAAE,CAAC,CAa1I;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA+BxE;AAQD,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAiD9E;AAED;;;GAGG;AACH;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACpC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA+D3B;AAED;;;;;;;;;;;GAWG;AACH;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACpC,OAAO,CAAC,UAAU,EAAE,CAAC,CAcvB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,EAC1E,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACpC,OAAO,CAAC,IAAI,CAAC,CAmBf;AAiCD,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACpC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAyE9B;AAmBD;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CrE;AA2CD,iGAAiG;AACjG,wBAAgB,+BAA+B,IAAI,MAAM,EAAE,CAE1D;AAaD,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD;AACD,wBAAgB,kCAAkC,IAAI,IAAI,CAEzD;AAED;;;;;GAKG;AACH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,qBAAqB,CAAC,EAAE,MAAM,GAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,CAgF3C;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,CAoE3C"}
|
|
@@ -5,17 +5,21 @@ import { EXTRACTOR_VERSIONS } from "../index-shared.js";
|
|
|
5
5
|
import { loadIndex, loadIndexOrStale, loadIndexSummary, summariseIndex, collectExtractorVersionMismatches, } from "../../storage/index-store.js";
|
|
6
6
|
import { classifyStorageError, } from "../../storage/sqlite-index-store.js";
|
|
7
7
|
import { IndexStorageError } from "../../storage/sqlite-index-store.js";
|
|
8
|
+
import { assessOverload, DaemonOverloadedError } from "./overload-guard.js";
|
|
9
|
+
import { loadBM25Index, saveBM25Index } from "../../search/bm25-store.js";
|
|
10
|
+
import { findSymbols, streamSymbols } from "../../storage/index-store.js";
|
|
11
|
+
import { withIndexLoadSlot } from "./load-gate.js";
|
|
8
12
|
import { getRepo, listRepos as listRegistryRepos, removeRepo, resolveRegisteredRepoMeta, getRepoName, } from "../../storage/registry.js";
|
|
9
13
|
import { stopWatcher } from "../../storage/watcher.js";
|
|
10
14
|
import { getEmbeddingPath, getEmbeddingMetaPath, loadEmbeddings, } from "../../storage/embedding-store.js";
|
|
11
15
|
import { getChunkPath, getChunkEmbeddingPath } from "../../storage/chunk-store.js";
|
|
12
16
|
import { getGraphPath } from "../../storage/graph-store.js";
|
|
13
17
|
import { getSnapshotPath } from "../../storage/hash-snapshot.js";
|
|
14
|
-
import {
|
|
18
|
+
import { buildBM25IndexYielding } from "../../search/bm25.js";
|
|
15
19
|
import { loadConfig, localEmbeddingsDisabled, embeddingMemBudgetBytes } from "../../config.js";
|
|
16
20
|
import { ensureIndexFresh } from "./file-indexer.js";
|
|
17
21
|
import { indexFolder } from "./folder-indexer.js";
|
|
18
|
-
import { activeWatchers, bm25Indexes, codeIndexes, embeddingCaches, embeddingCacheGenerations, embeddingCacheSources, cacheEmbeddingIfGenerationCurrent, invalidateEmbeddingCache, chunkCacheKey, invalidateEmbeddingCaches, } from "./state.js";
|
|
22
|
+
import { activeWatchers, bm25Indexes, codeIndexes, embeddingCaches, embeddingCacheGenerations, embeddingCacheSources, cacheEmbeddingIfGenerationCurrent, invalidateEmbeddingCache, chunkCacheKey, invalidateEmbeddingCaches, rememberBM25Index, touchBM25Index } from "./state.js";
|
|
19
23
|
import { findWorkingTree } from "../../utils/worktree.js";
|
|
20
24
|
export async function listAllRepos(options) {
|
|
21
25
|
const config = loadConfig();
|
|
@@ -62,6 +66,11 @@ export async function invalidateCache(repoName) {
|
|
|
62
66
|
await removeRepo(config.registryPath, repoName);
|
|
63
67
|
return true;
|
|
64
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Below this, rebuilding is cheaper than the disk it would cost. 1 s is roughly where a repo is
|
|
71
|
+
* large enough that a restart is noticeable to whoever is waiting on the first search.
|
|
72
|
+
*/
|
|
73
|
+
const BM25_PERSIST_MIN_BUILD_MS = 1_000;
|
|
65
74
|
export async function getBM25Index(repoName) {
|
|
66
75
|
// Resolve through the case-insensitive registry resolver (mirrors
|
|
67
76
|
// getCodeIndex) so `local/Rewards-API` finds `local/rewards-api` and the
|
|
@@ -76,13 +85,36 @@ export async function getBM25Index(repoName) {
|
|
|
76
85
|
const { resolvedName, meta } = resolved;
|
|
77
86
|
await ensureIndexFresh(resolvedName);
|
|
78
87
|
const cached = bm25Indexes.get(resolvedName);
|
|
79
|
-
if (cached)
|
|
88
|
+
if (cached) {
|
|
89
|
+
touchBM25Index(resolvedName);
|
|
80
90
|
return cached;
|
|
91
|
+
}
|
|
81
92
|
const index = await loadIndex(meta.index_path);
|
|
82
93
|
if (!index)
|
|
83
94
|
return null;
|
|
84
|
-
|
|
85
|
-
|
|
95
|
+
// Reload before rebuilding. Measured on the largest index here (352,166 symbols, 12.9M tokens):
|
|
96
|
+
// a rebuild is 10.04 s, reconstructing the same maps from the sidecar is 0.70 s. The expensive
|
|
97
|
+
// half of a build is tokenising every symbol, and that result does not change until the index
|
|
98
|
+
// does — so it is worth writing down. A stale or unreadable sidecar returns null and we rebuild.
|
|
99
|
+
const restored = await loadBM25Index(meta.index_path, index);
|
|
100
|
+
if (restored) {
|
|
101
|
+
rememberBM25Index(resolvedName, restored);
|
|
102
|
+
return restored;
|
|
103
|
+
}
|
|
104
|
+
const buildStarted = Date.now();
|
|
105
|
+
const bm25 = await buildBM25IndexYielding(index.symbols);
|
|
106
|
+
const buildMs = Date.now() - buildStarted;
|
|
107
|
+
rememberBM25Index(resolvedName, bm25);
|
|
108
|
+
// Persist only when the rebuild actually cost something. The sidecar is not small — measured
|
|
109
|
+
// 112.5 MB for a 28k-symbol repo, more than twice its index database, and this machine has 865
|
|
110
|
+
// registered repos on the disk that is the real bottleneck. Gating on the MEASURED build time
|
|
111
|
+
// rather than a symbol count keeps the trade honest: the thing being bought back is exactly that
|
|
112
|
+
// duration, and a repo whose index rebuilds in 200 ms is not worth a hundred megabytes.
|
|
113
|
+
if (buildMs >= BM25_PERSIST_MIN_BUILD_MS) {
|
|
114
|
+
// Not awaited: the caller has a working index in memory, and making the first search wait on a
|
|
115
|
+
// cache write would spend the very seconds this exists to save.
|
|
116
|
+
void saveBM25Index(meta.index_path, bm25, index).catch(() => { });
|
|
117
|
+
}
|
|
86
118
|
return bm25;
|
|
87
119
|
}
|
|
88
120
|
/**
|
|
@@ -104,7 +136,25 @@ export async function getCodeIndex(repoName, options) {
|
|
|
104
136
|
const cached = codeIndexes.get(resolvedName);
|
|
105
137
|
if (cached)
|
|
106
138
|
return cached;
|
|
107
|
-
|
|
139
|
+
// Only a COLD load is gated: a resident index costs nothing and is returned above. See
|
|
140
|
+
// overload-guard.ts for why refusing fast beats blocking — the caller's 120 s timeout turns one
|
|
141
|
+
// slow read into a session with no CodeSift tools at all.
|
|
142
|
+
const overload = assessOverload();
|
|
143
|
+
if (overload.refuse) {
|
|
144
|
+
throw new DaemonOverloadedError(resolvedName, overload.reason ?? "overloaded");
|
|
145
|
+
}
|
|
146
|
+
const gated = await withIndexLoadSlot(async () => {
|
|
147
|
+
// Re-checked AFTER the wait, not before it. While this call queued, another may have loaded the
|
|
148
|
+
// same repo — without this the gate would only STAGGER ten sessions touching one repo into ten
|
|
149
|
+
// identical 349 MB allocations instead of preventing nine of them.
|
|
150
|
+
const nowCached = codeIndexes.get(resolvedName);
|
|
151
|
+
if (nowCached)
|
|
152
|
+
return { cached: nowCached };
|
|
153
|
+
return { fresh: await loadIndexOrStale(meta.index_path, { ...EXTRACTOR_VERSIONS }) };
|
|
154
|
+
});
|
|
155
|
+
if ("cached" in gated)
|
|
156
|
+
return gated.cached;
|
|
157
|
+
const result = gated.fresh;
|
|
108
158
|
if (!result)
|
|
109
159
|
return null;
|
|
110
160
|
if (result.status === "unreadable") {
|
|
@@ -144,6 +194,93 @@ export async function getCodeIndex(repoName, options) {
|
|
|
144
194
|
* Returns `IndexSummary`, which has no `symbols` field at all rather than an empty one: a caller
|
|
145
195
|
* that needs symbols must fail to compile, not read an empty array as "this repo has none".
|
|
146
196
|
*/
|
|
197
|
+
/**
|
|
198
|
+
* Symbols matching a predicate, without materialising the index.
|
|
199
|
+
*
|
|
200
|
+
* The tool-layer face of `findSymbols` (ADR-004 stage 2), resolving the repo name the same way
|
|
201
|
+
* `getCodeIndex` and `getIndexSummary` do so a caller never has to reach into the registry.
|
|
202
|
+
*
|
|
203
|
+
* An already-resident index answers from memory: going back to the database would be slower than
|
|
204
|
+
* filtering what is already being held, and it keeps the two paths returning the same objects.
|
|
205
|
+
* The reasoning about cache validity is `getIndexSummary`'s, unchanged.
|
|
206
|
+
*/
|
|
207
|
+
export async function findRepoSymbols(repoName, query, options) {
|
|
208
|
+
const config = loadConfig();
|
|
209
|
+
const resolved = await resolveRegisteredRepoMeta(config.registryPath, repoName);
|
|
210
|
+
if (!resolved)
|
|
211
|
+
return [];
|
|
212
|
+
const { resolvedName, meta } = resolved;
|
|
213
|
+
if (!options?.skipFreshness) {
|
|
214
|
+
await ensureIndexFresh(resolvedName);
|
|
215
|
+
}
|
|
216
|
+
const cached = codeIndexes.get(resolvedName);
|
|
217
|
+
if (cached)
|
|
218
|
+
return filterCachedSymbols(cached.symbols, query);
|
|
219
|
+
return findSymbols(meta.index_path, query);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Fold over matching symbols in pages, for the tools that must see every symbol but never need
|
|
223
|
+
* them all resident — regex scanners, complexity scorers, adjacency builders.
|
|
224
|
+
*
|
|
225
|
+
* Returning `false` from `onBatch` stops the scan, which the wall-clock-budgeted tools need: without
|
|
226
|
+
* it a scorer that has run out of time keeps paging the rest of the table for results nobody reads.
|
|
227
|
+
*/
|
|
228
|
+
export async function streamRepoSymbols(repoName, query, onBatch, options) {
|
|
229
|
+
const config = loadConfig();
|
|
230
|
+
const resolved = await resolveRegisteredRepoMeta(config.registryPath, repoName);
|
|
231
|
+
if (!resolved)
|
|
232
|
+
return;
|
|
233
|
+
const { resolvedName, meta } = resolved;
|
|
234
|
+
if (!options?.skipFreshness) {
|
|
235
|
+
await ensureIndexFresh(resolvedName);
|
|
236
|
+
}
|
|
237
|
+
// An already-resident index is folded directly: paging it back out of the database would be
|
|
238
|
+
// strictly more work than walking what is already in memory.
|
|
239
|
+
const cached = codeIndexes.get(resolvedName);
|
|
240
|
+
if (cached) {
|
|
241
|
+
await onBatch(filterCachedSymbols(cached.symbols, query));
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
return streamSymbols(meta.index_path, query, onBatch);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* The in-memory equivalent of the SQL predicate, for when the index is already resident.
|
|
248
|
+
*
|
|
249
|
+
* Kept beside its caller rather than shared with the storage layer's JSON branch: they answer the
|
|
250
|
+
* same question over different inputs, and a shared helper would have to be exported from storage
|
|
251
|
+
* into tools purely to be reused, which is how a "narrow read" acquires a dependency on the wide
|
|
252
|
+
* one. Both are asserted against the SQL by the backend-parity tests.
|
|
253
|
+
*/
|
|
254
|
+
function filterCachedSymbols(symbols, query) {
|
|
255
|
+
const ids = query.ids === undefined ? null : new Set(query.ids);
|
|
256
|
+
const out = [];
|
|
257
|
+
for (const symbol of symbols) {
|
|
258
|
+
if (query.limit !== undefined && out.length >= query.limit)
|
|
259
|
+
break;
|
|
260
|
+
if (query.file !== undefined && symbol.file !== query.file)
|
|
261
|
+
continue;
|
|
262
|
+
if (query.name !== undefined && symbol.name !== query.name)
|
|
263
|
+
continue;
|
|
264
|
+
if (query.namePrefix !== undefined && !symbol.name.startsWith(query.namePrefix))
|
|
265
|
+
continue;
|
|
266
|
+
if (query.kind !== undefined && symbol.kind !== query.kind)
|
|
267
|
+
continue;
|
|
268
|
+
if (query.parent !== undefined && symbol.parent !== query.parent)
|
|
269
|
+
continue;
|
|
270
|
+
if (ids !== null && !ids.has(symbol.id))
|
|
271
|
+
continue;
|
|
272
|
+
if (query.withSource) {
|
|
273
|
+
out.push(symbol);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
// Same contract as the SQL projection: the key is ABSENT, not undefined. A symbol carrying
|
|
277
|
+
// `source: undefined` reads as one whose source is genuinely empty.
|
|
278
|
+
const { source: _dropped, ...rest } = symbol;
|
|
279
|
+
out.push(rest);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
return out;
|
|
283
|
+
}
|
|
147
284
|
export async function getIndexSummary(repoName, options) {
|
|
148
285
|
const config = loadConfig();
|
|
149
286
|
const resolved = await resolveRegisteredRepoMeta(config.registryPath, repoName);
|
|
@@ -163,8 +300,12 @@ export async function getIndexSummary(repoName, options) {
|
|
|
163
300
|
// so there is no window in which a cached index becomes stale. Two independent reviewers read
|
|
164
301
|
// this shortcut as a missing check, which is why it is spelled out rather than left implicit.
|
|
165
302
|
const cached = codeIndexes.get(resolvedName);
|
|
303
|
+
// `indexPath` travels with the summary so consumers that cache something alongside the index —
|
|
304
|
+
// the parsed-imports cache — can find the right place without reaching into the registry
|
|
305
|
+
// themselves. Both return paths carry it, or the cache would be active on one and silently off
|
|
306
|
+
// on the other depending on whether the index happened to be resident.
|
|
166
307
|
if (cached)
|
|
167
|
-
return summariseIndex(cached);
|
|
308
|
+
return { ...summariseIndex(cached), indexPath: meta.index_path };
|
|
168
309
|
try {
|
|
169
310
|
const summary = await loadIndexSummary(meta.index_path);
|
|
170
311
|
if (summary === null)
|
|
@@ -190,7 +331,7 @@ export async function getIndexSummary(repoName, options) {
|
|
|
190
331
|
`Run index_folder to refresh.`);
|
|
191
332
|
return null;
|
|
192
333
|
}
|
|
193
|
-
return summary;
|
|
334
|
+
return { ...summary, indexPath: meta.index_path };
|
|
194
335
|
}
|
|
195
336
|
catch (err) {
|
|
196
337
|
const code = classifyStorageError(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/tools/index-tools/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/tools/index-tools/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,26 @@ import type { BM25Index } from "../../search/bm25.js";
|
|
|
2
2
|
import type { CodeIndex } from "../../types.js";
|
|
3
3
|
export declare const activeWatchers: Map<string, import("@parcel/watcher").AsyncSubscription>;
|
|
4
4
|
export declare const bm25Indexes: Map<string, BM25Index>;
|
|
5
|
+
/**
|
|
6
|
+
* Keep the BM25 cache inside a budget, evicting least-recently-used first.
|
|
7
|
+
*
|
|
8
|
+
* This cache had NO bound of any kind — no LRU, no budget, no entry cap — while every neighbour has
|
|
9
|
+
* one (`CODESIFT_MAX_INDEX_CACHE_MB` for indexes, `CODESIFT_MAX_EMBEDDING_MEM_MB` for embeddings, a
|
|
10
|
+
* watcher cap, an LRU parse cache). It survived because eviction happened by ACCIDENT: every
|
|
11
|
+
* `index_file` deleted its repo's entry, and the PostToolUse hook fires on every agent edit, so the
|
|
12
|
+
* map was constantly being emptied by the thing that looked like cache invalidation.
|
|
13
|
+
*
|
|
14
|
+
* 69a49cd made those edits update the index in place instead of dropping it — a 595x win on the
|
|
15
|
+
* edit path, and it removed the only thing keeping this map small. The daemon then climbed to the
|
|
16
|
+
* 16 GB heap ceiling and crash-looped: 15.1 GB, 16.0 GB, restart, repeat, with clients that
|
|
17
|
+
* happened to initialize during a restart window getting no tools at all for their whole session.
|
|
18
|
+
*
|
|
19
|
+
* At ~400 MB for a large repository, the budget holds two or three. That is the point: a repo
|
|
20
|
+
* evicted here is rebuilt on next use, which now costs one build rather than one per edit.
|
|
21
|
+
*/
|
|
22
|
+
export declare function rememberBM25Index(repoName: string, index: BM25Index): void;
|
|
23
|
+
/** Mark an entry as most-recently-used, so eviction drops cold repos rather than merely old ones. */
|
|
24
|
+
export declare function touchBM25Index(repoName: string): void;
|
|
5
25
|
export declare const codeIndexes: Map<string, CodeIndex>;
|
|
6
26
|
export declare const embeddingCaches: Map<string, Map<string, Float32Array<ArrayBufferLike>>>;
|
|
7
27
|
export declare const embeddingCacheGenerations: Map<string, number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/tools/index-tools/state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/tools/index-tools/state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,eAAO,MAAM,cAAc,0DAA+B,CAAC;AAC3D,eAAO,MAAM,WAAW,wBAA+B,CAAC;AAkBxD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAI1E;AAED,qGAAqG;AACrG,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKrD;AAuCD,eAAO,MAAM,WAAW,wBAA+B,CAAC;AACxD,eAAO,MAAM,eAAe,yDAA+C,CAAC;AAC5E,eAAO,MAAM,yBAAyB,qBAA4B,CAAC;AACnE,eAAO,MAAM,qBAAqB,qBAA4B,CAAC;AAE/D,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAI/D;AAED,wFAAwF;AACxF,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACrC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAKT;AAED,eAAO,MAAM,eAAe,qBAA4B,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAShE;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAa5F;AAID,2FAA2F;AAC3F,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,6DAA6D;AAC7D,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEzD"}
|
|
@@ -1,5 +1,91 @@
|
|
|
1
|
+
import { totalmem as osTotalmem } from "node:os";
|
|
1
2
|
export const activeWatchers = new Map();
|
|
2
3
|
export const bm25Indexes = new Map();
|
|
4
|
+
/**
|
|
5
|
+
* Bytes a BM25 index occupies, from its own token totals.
|
|
6
|
+
*
|
|
7
|
+
* Measured with a heapUsed delta around a real build: 352,125 symbols / 12,882,846 tokens cost
|
|
8
|
+
* 399 MB, i.e. 32.5 B per token — the postings maps dominate, so tokens are the quantity to price
|
|
9
|
+
* by, not symbols. Rounded UP to 40, on the same reasoning as the index footprint: over-reporting
|
|
10
|
+
* evicts something that would have fitted, under-reporting silently breaks the budget.
|
|
11
|
+
*/
|
|
12
|
+
function bm25FootprintBytes(index) {
|
|
13
|
+
let tokens = 0;
|
|
14
|
+
for (const field of Object.keys(index.totalFieldLengths)) {
|
|
15
|
+
tokens += index.totalFieldLengths[field];
|
|
16
|
+
}
|
|
17
|
+
return tokens * 40;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Keep the BM25 cache inside a budget, evicting least-recently-used first.
|
|
21
|
+
*
|
|
22
|
+
* This cache had NO bound of any kind — no LRU, no budget, no entry cap — while every neighbour has
|
|
23
|
+
* one (`CODESIFT_MAX_INDEX_CACHE_MB` for indexes, `CODESIFT_MAX_EMBEDDING_MEM_MB` for embeddings, a
|
|
24
|
+
* watcher cap, an LRU parse cache). It survived because eviction happened by ACCIDENT: every
|
|
25
|
+
* `index_file` deleted its repo's entry, and the PostToolUse hook fires on every agent edit, so the
|
|
26
|
+
* map was constantly being emptied by the thing that looked like cache invalidation.
|
|
27
|
+
*
|
|
28
|
+
* 69a49cd made those edits update the index in place instead of dropping it — a 595x win on the
|
|
29
|
+
* edit path, and it removed the only thing keeping this map small. The daemon then climbed to the
|
|
30
|
+
* 16 GB heap ceiling and crash-looped: 15.1 GB, 16.0 GB, restart, repeat, with clients that
|
|
31
|
+
* happened to initialize during a restart window getting no tools at all for their whole session.
|
|
32
|
+
*
|
|
33
|
+
* At ~400 MB for a large repository, the budget holds two or three. That is the point: a repo
|
|
34
|
+
* evicted here is rebuilt on next use, which now costs one build rather than one per edit.
|
|
35
|
+
*/
|
|
36
|
+
export function rememberBM25Index(repoName, index) {
|
|
37
|
+
bm25Indexes.delete(repoName);
|
|
38
|
+
bm25Indexes.set(repoName, index);
|
|
39
|
+
evictBM25OverBudget(repoName);
|
|
40
|
+
}
|
|
41
|
+
/** Mark an entry as most-recently-used, so eviction drops cold repos rather than merely old ones. */
|
|
42
|
+
export function touchBM25Index(repoName) {
|
|
43
|
+
const existing = bm25Indexes.get(repoName);
|
|
44
|
+
if (!existing)
|
|
45
|
+
return;
|
|
46
|
+
bm25Indexes.delete(repoName);
|
|
47
|
+
bm25Indexes.set(repoName, existing);
|
|
48
|
+
}
|
|
49
|
+
function evictBM25OverBudget(pinned) {
|
|
50
|
+
const budget = maxBM25CacheBytes();
|
|
51
|
+
let total = 0;
|
|
52
|
+
for (const index of bm25Indexes.values())
|
|
53
|
+
total += bm25FootprintBytes(index);
|
|
54
|
+
if (total <= budget)
|
|
55
|
+
return;
|
|
56
|
+
for (const [name, index] of bm25Indexes) {
|
|
57
|
+
if (total <= budget)
|
|
58
|
+
break;
|
|
59
|
+
// Never evict the repo being served, even when it alone exceeds the budget — otherwise every
|
|
60
|
+
// call into a large repository would rebuild and immediately discard its own index.
|
|
61
|
+
if (name === pinned)
|
|
62
|
+
continue;
|
|
63
|
+
total -= bm25FootprintBytes(index);
|
|
64
|
+
bm25Indexes.delete(name);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function maxBM25CacheBytes() {
|
|
68
|
+
const raw = process.env["CODESIFT_MAX_BM25_CACHE_MB"];
|
|
69
|
+
if (raw !== undefined) {
|
|
70
|
+
const parsed = Number.parseInt(raw, 10);
|
|
71
|
+
if (Number.isFinite(parsed) && parsed > 0)
|
|
72
|
+
return parsed * 1024 * 1024;
|
|
73
|
+
}
|
|
74
|
+
// Same RAM tiers as the index and embedding budgets, so the three agree about what a machine
|
|
75
|
+
// this size is willing to hold resident.
|
|
76
|
+
const totalGb = totalSystemMemoryBytes() / 1024 ** 3;
|
|
77
|
+
const mb = totalGb <= 16 ? 256 : totalGb <= 32 ? 512 : 1024;
|
|
78
|
+
return mb * 1024 * 1024;
|
|
79
|
+
}
|
|
80
|
+
function totalSystemMemoryBytes() {
|
|
81
|
+
try {
|
|
82
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
83
|
+
return osTotalmem();
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return 8 * 1024 ** 3;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
3
89
|
export const codeIndexes = new Map();
|
|
4
90
|
export const embeddingCaches = new Map();
|
|
5
91
|
export const embeddingCacheGenerations = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/tools/index-tools/state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/tools/index-tools/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../../src/tools/index-tools/watcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../../src/tools/index-tools/watcher.ts"],"names":[],"mappings":"AAwBA;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAiDf"}
|
|
@@ -4,6 +4,7 @@ import { startWatcher, stopWatcher } from "../../storage/watcher.js";
|
|
|
4
4
|
import { loadConfig } from "../../config.js";
|
|
5
5
|
import { onFileChanged as scanOnChanged, onFileDeleted as scanOnDeleted, scanFileForSecrets } from "../secret-scan-shared.js";
|
|
6
6
|
import { parseOneFile } from "./parse.js";
|
|
7
|
+
import { updateBM25ForFile } from "../../search/bm25.js";
|
|
7
8
|
import { activeWatchers, bm25Indexes, codeIndexes, invalidateEmbeddingCaches } from "./state.js";
|
|
8
9
|
const DEFAULT_MAX_WATCHERS = 8;
|
|
9
10
|
function getMaxWatchers() {
|
|
@@ -95,15 +96,18 @@ async function handleFileChange(repoRoot, repoName, indexPath, relativeFile) {
|
|
|
95
96
|
await saveIncremental(indexPath, relativeFile, result.symbols, result.entry);
|
|
96
97
|
if (loadConfig().secretScanEnabled) {
|
|
97
98
|
try {
|
|
98
|
-
await scanFileForSecrets(fullPath, relativeFile, repoName, result.symbols);
|
|
99
|
+
await scanFileForSecrets(fullPath, relativeFile, repoName, () => result.symbols);
|
|
99
100
|
}
|
|
100
101
|
catch (err) {
|
|
101
102
|
const message = err instanceof Error ? err.message : String(err);
|
|
102
103
|
console.warn(`[codesift] Secret scan failed for ${relativeFile}: ${message}`);
|
|
103
104
|
}
|
|
104
105
|
}
|
|
105
|
-
//
|
|
106
|
-
bm25Indexes.
|
|
106
|
+
// Swap this file's symbols in place rather than dropping the index — see updateBM25ForFile.
|
|
107
|
+
const cachedBm25 = bm25Indexes.get(repoName);
|
|
108
|
+
if (cachedBm25) {
|
|
109
|
+
updateBM25ForFile(cachedBm25, relativeFile, result.symbols);
|
|
110
|
+
}
|
|
107
111
|
codeIndexes.delete(repoName);
|
|
108
112
|
invalidateEmbeddingCaches(repoName);
|
|
109
113
|
}
|
|
@@ -113,8 +117,12 @@ async function handleFileChange(repoRoot, repoName, indexPath, relativeFile) {
|
|
|
113
117
|
*/
|
|
114
118
|
async function handleFileDelete(repoRoot, repoName, indexPath, relativeFile) {
|
|
115
119
|
await removeFileFromIndex(indexPath, relativeFile);
|
|
116
|
-
//
|
|
117
|
-
|
|
120
|
+
// A deletion is the same swap with nothing to put back: drop the file's symbols, keep the rest
|
|
121
|
+
// of the index. Dropping the whole index here would make `rm` as expensive as a reindex.
|
|
122
|
+
const cachedBm25 = bm25Indexes.get(repoName);
|
|
123
|
+
if (cachedBm25) {
|
|
124
|
+
updateBM25ForFile(cachedBm25, relativeFile, []);
|
|
125
|
+
}
|
|
118
126
|
codeIndexes.delete(repoName);
|
|
119
127
|
invalidateEmbeddingCaches(repoName);
|
|
120
128
|
scanOnDeleted(repoName, relativeFile);
|