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
|
@@ -9,10 +9,25 @@
|
|
|
9
9
|
* answered `Repository "local/" not found`, because `resolveRepoFromCwd("/")`
|
|
10
10
|
* matches nothing and falls back to `local/` + basename("/") = "".
|
|
11
11
|
*
|
|
12
|
-
* So the CWD has to travel with the request rather than with the process.
|
|
13
|
-
*
|
|
14
|
-
* session's requests inside this context
|
|
15
|
-
* fall through to `process.cwd()`, exactly as before.
|
|
12
|
+
* So the CWD has to travel with the request rather than with the process. It
|
|
13
|
+
* travels in the URL: `setup <client> --http` writes `?cwd=<abs path>` and the
|
|
14
|
+
* daemon runs that session's requests inside this context. stdio callers get an
|
|
15
|
+
* empty store and fall through to `process.cwd()`, exactly as before.
|
|
16
|
+
*
|
|
17
|
+
* NOT from MCP roots. This comment used to say the daemon asks each client for
|
|
18
|
+
* its roots once per session; nothing implements that — `roots/list` appears
|
|
19
|
+
* nowhere in the server. The claim cost a reader a full investigation before the
|
|
20
|
+
* grep came back empty, which is why it is called out rather than quietly
|
|
21
|
+
* deleted.
|
|
22
|
+
*
|
|
23
|
+
* The consequence is structural and worth stating here, because it decides how
|
|
24
|
+
* many processes a machine runs: an HTTP entry is inherently PER-PROJECT, since
|
|
25
|
+
* one URL carries one directory. A client that keeps ONE GLOBAL MCP config
|
|
26
|
+
* therefore cannot use the shared daemon at all and falls back to stdio — one
|
|
27
|
+
* process per session. Measured on this machine: Claude Code, which stores MCP
|
|
28
|
+
* config per project, had 114 projects on the daemon; Codex, which has only
|
|
29
|
+
* ~/.codex/config.toml, had 36 stdio processes. Implementing `roots/list` is
|
|
30
|
+
* what would close that gap.
|
|
16
31
|
*
|
|
17
32
|
* AsyncLocalStorage rather than a parameter thread because the consumers sit
|
|
18
33
|
* deep under `wrapTool` — repo resolution, hint generation — and every one of
|
|
@@ -22,6 +37,19 @@
|
|
|
22
37
|
export interface RequestContext {
|
|
23
38
|
/** Directory the calling client is working in. */
|
|
24
39
|
cwd: string;
|
|
40
|
+
/**
|
|
41
|
+
* Which client is asking, from `?client=` in the URL.
|
|
42
|
+
*
|
|
43
|
+
* Needed because clients disagree about what a good tool list is, and one daemon answers all of
|
|
44
|
+
* them. Codex freezes its list at session start, so anything not offered up front is unreachable
|
|
45
|
+
* for the whole session; Claude Code refreshes on demand and measurably STOPS USING CodeSift when
|
|
46
|
+
* handed the full list (3e1ec6c, adoption down >90%). A single shared answer cannot satisfy both.
|
|
47
|
+
*
|
|
48
|
+
* It travels in the URL for the same reason `cwd` does: stateless serving has no session to have
|
|
49
|
+
* learned it, and the `initialized` notification lands on an instance that never saw `initialize`
|
|
50
|
+
* — measured, it arrives with an empty clientInfo.
|
|
51
|
+
*/
|
|
52
|
+
client?: string;
|
|
25
53
|
/**
|
|
26
54
|
* Aborted when the client-facing timeout fires.
|
|
27
55
|
*
|
|
@@ -45,6 +73,8 @@ export declare function runWithRequestContext<T>(ctx: RequestContext, fn: () =>
|
|
|
45
73
|
* process's otherwise. The fallback is what keeps stdio behaviour identical.
|
|
46
74
|
*/
|
|
47
75
|
export declare function currentCwd(): string;
|
|
76
|
+
/** Which client this request belongs to, when its URL said so. */
|
|
77
|
+
export declare function currentClient(): string | undefined;
|
|
48
78
|
/**
|
|
49
79
|
* The ambient cancellation signal, if a request is in scope.
|
|
50
80
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/server-helpers/request-context.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/server-helpers/request-context.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAID,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE5E;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,kEAAkE;AAClE,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CAElD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,GAAG,SAAS,CAE5D;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,IAAI,cAAc,GAAG,SAAS,CAElE;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}
|
|
@@ -11,6 +11,10 @@ export function runWithRequestContext(ctx, fn) {
|
|
|
11
11
|
export function currentCwd() {
|
|
12
12
|
return storage.getStore()?.cwd ?? process.cwd();
|
|
13
13
|
}
|
|
14
|
+
/** Which client this request belongs to, when its URL said so. */
|
|
15
|
+
export function currentClient() {
|
|
16
|
+
return storage.getStore()?.client;
|
|
17
|
+
}
|
|
14
18
|
/**
|
|
15
19
|
* The ambient cancellation signal, if a request is in scope.
|
|
16
20
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/server-helpers/request-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/server-helpers/request-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAwErD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAkB,CAAC;AAExD,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAI,GAAmB,EAAE,EAAW;IACvE,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AAClD,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC;AACpC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,qBAAqB;IACnC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAC;AAC1C,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -13,6 +13,15 @@ export interface HttpServerHandle {
|
|
|
13
13
|
sessionCount: () => number;
|
|
14
14
|
close: () => Promise<void>;
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Which client this connection belongs to, from `?client=` in the URL.
|
|
18
|
+
*
|
|
19
|
+
* Written by `codesift setup <platform> --http`. It travels in the URL for the same reason `cwd`
|
|
20
|
+
* does: stateless serving has no session, and the `initialized` notification arrives on an instance
|
|
21
|
+
* that never handled `initialize`, so its clientInfo is empty — measured, not assumed.
|
|
22
|
+
*/
|
|
23
|
+
export declare function clientFromUrl(rawUrl: string): string | undefined;
|
|
24
|
+
export declare function cwdFromUrl(rawUrl: string): string | undefined;
|
|
16
25
|
export declare function startIdleCacheRelease(): NodeJS.Timeout | null;
|
|
17
26
|
export declare function startHttpServer(opts?: {
|
|
18
27
|
port?: number;
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AA4BzD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AA0E1D,qFAAqF;AACrF,wBAAgB,oBAAoB,IAAI,SAAS,CAOhD;AAMD,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,kFAAkF;IAClF,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAwGD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWhE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAkC7D;AAqCD,wBAAgB,qBAAqB,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAiB7D;AAED,wBAAsB,eAAe,CACnC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1D,OAAO,CAAC,gBAAgB,CAAC,CAoL3B"}
|
package/dist/server.js
CHANGED
|
@@ -13,8 +13,10 @@ import { setupHooksForPlatform } from "./cli/setup.js";
|
|
|
13
13
|
import { detectPlatform, detectPlatformFromClientInfo } from "./cli/platform.js";
|
|
14
14
|
import { createRequire } from "node:module";
|
|
15
15
|
import { timingSafeEqual } from "node:crypto";
|
|
16
|
-
import { resolve as pathResolve } from "node:path";
|
|
16
|
+
import { resolve as pathResolve, isAbsolute, join } from "node:path";
|
|
17
|
+
import { homedir } from "node:os";
|
|
17
18
|
import { statSync } from "node:fs";
|
|
19
|
+
import { readVitals, classifyVitals, startVitals } from "./server-helpers/health-vitals.js";
|
|
18
20
|
import { fileURLToPath } from "node:url";
|
|
19
21
|
import { isLoopbackHost } from "./utils/loopback.js";
|
|
20
22
|
import { runWithRequestContext } from "./server-helpers/request-context.js";
|
|
@@ -149,8 +151,65 @@ function codeReplacedUnderUs() {
|
|
|
149
151
|
* nothing. Not a security boundary (the daemon is loopback-only and already
|
|
150
152
|
* serves every indexed repo to any local caller) but it keeps a typo from
|
|
151
153
|
* silently resolving every repo to garbage.
|
|
154
|
+
*
|
|
155
|
+
* Two shapes come from VS Code-derived clients writing `?cwd=${workspaceFolder}`,
|
|
156
|
+
* which is what lets ONE GLOBAL entry serve every project on a client that has no
|
|
157
|
+
* per-project MCP config. Both were measured against Cursor 1.0 (probe, 2026-08-27):
|
|
158
|
+
*
|
|
159
|
+
* - `~/DEV/thing` — Cursor expands the variable to a TILDE path, not an absolute
|
|
160
|
+
* one. `pathResolve` expands `~` against the process cwd, which for a
|
|
161
|
+
* launchd-started daemon is `/`, producing `/~/DEV/thing`; that fails `statSync`
|
|
162
|
+
* and the directory silently vanished. Expanding it here is what makes the
|
|
163
|
+
* single-entry configuration work at all.
|
|
164
|
+
* - `${workspaceFolder}` verbatim — a window with NO folder open leaves the
|
|
165
|
+
* placeholder unexpanded. It must not become a directory name.
|
|
166
|
+
*
|
|
167
|
+
* A rejected value is announced once. The whole reason this cost a full
|
|
168
|
+
* investigation is that an unusable cwd degraded into "no cwd" without a word,
|
|
169
|
+
* and the symptom surfaced far away as `Repository "local/" not found`.
|
|
170
|
+
*/
|
|
171
|
+
const warnedCwdValues = new Set();
|
|
172
|
+
const MAX_WARNED_CWD_VALUES = 32;
|
|
173
|
+
function warnUnusableCwd(value, why) {
|
|
174
|
+
// Bounded: the value comes from a URL, so an unbounded set is a memory leak a
|
|
175
|
+
// client could drive. Past the cap we stay quiet rather than grow.
|
|
176
|
+
if (warnedCwdValues.has(value) || warnedCwdValues.size >= MAX_WARNED_CWD_VALUES)
|
|
177
|
+
return;
|
|
178
|
+
warnedCwdValues.add(value);
|
|
179
|
+
console.error(`[codesift] ignoring ?cwd=${value} — ${why}. Repo auto-resolution will fail for this ` +
|
|
180
|
+
`client; pass an absolute path, or an explicit repo argument.`);
|
|
181
|
+
}
|
|
182
|
+
/** Expand a leading `~`. `~user` is left alone — it cannot be resolved reliably. */
|
|
183
|
+
function expandTilde(value) {
|
|
184
|
+
if (value === "~")
|
|
185
|
+
return homedir();
|
|
186
|
+
if (value.startsWith("~/"))
|
|
187
|
+
return join(homedir(), value.slice(2));
|
|
188
|
+
return value;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Which client this connection belongs to, from `?client=` in the URL.
|
|
192
|
+
*
|
|
193
|
+
* Written by `codesift setup <platform> --http`. It travels in the URL for the same reason `cwd`
|
|
194
|
+
* does: stateless serving has no session, and the `initialized` notification arrives on an instance
|
|
195
|
+
* that never handled `initialize`, so its clientInfo is empty — measured, not assumed.
|
|
152
196
|
*/
|
|
153
|
-
function
|
|
197
|
+
export function clientFromUrl(rawUrl) {
|
|
198
|
+
const q = rawUrl.indexOf("?");
|
|
199
|
+
if (q < 0)
|
|
200
|
+
return undefined;
|
|
201
|
+
try {
|
|
202
|
+
const value = new URLSearchParams(rawUrl.slice(q + 1)).get("client");
|
|
203
|
+
// Bounded and alphanumeric: this selects a code path, so it is not a place for free text.
|
|
204
|
+
if (!value || !/^[a-z][a-z0-9-]{0,31}$/i.test(value))
|
|
205
|
+
return undefined;
|
|
206
|
+
return value.toLowerCase();
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
return undefined;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
export function cwdFromUrl(rawUrl) {
|
|
154
213
|
const q = rawUrl.indexOf("?");
|
|
155
214
|
if (q < 0)
|
|
156
215
|
return undefined;
|
|
@@ -163,11 +222,27 @@ function cwdFromUrl(rawUrl) {
|
|
|
163
222
|
}
|
|
164
223
|
if (!value)
|
|
165
224
|
return undefined;
|
|
225
|
+
// An unexpanded client-side placeholder, not a path.
|
|
226
|
+
if (value.includes("${")) {
|
|
227
|
+
warnUnusableCwd(value, "the client did not expand this variable (window with no folder open?)");
|
|
228
|
+
return undefined;
|
|
229
|
+
}
|
|
230
|
+
const expanded = expandTilde(value);
|
|
231
|
+
if (!isAbsolute(expanded)) {
|
|
232
|
+
// Resolving a relative path against the daemon's cwd (`/` under launchd) is
|
|
233
|
+
// meaningless and would silently name the wrong directory.
|
|
234
|
+
warnUnusableCwd(value, "not an absolute path");
|
|
235
|
+
return undefined;
|
|
236
|
+
}
|
|
166
237
|
try {
|
|
167
|
-
const resolved = pathResolve(
|
|
168
|
-
|
|
238
|
+
const resolved = pathResolve(expanded);
|
|
239
|
+
if (statSync(resolved).isDirectory())
|
|
240
|
+
return resolved;
|
|
241
|
+
warnUnusableCwd(value, "not a directory");
|
|
242
|
+
return undefined;
|
|
169
243
|
}
|
|
170
244
|
catch {
|
|
245
|
+
warnUnusableCwd(value, "no such directory");
|
|
171
246
|
return undefined;
|
|
172
247
|
}
|
|
173
248
|
}
|
|
@@ -267,7 +342,37 @@ export async function startHttpServer(opts = {}) {
|
|
|
267
342
|
* makes more than one process — or a remote host — possible at all without a
|
|
268
343
|
* shared session store.
|
|
269
344
|
*/
|
|
270
|
-
const
|
|
345
|
+
const envPlatformForHttp = detectPlatform();
|
|
346
|
+
/** Set by the HTTP handler just before delegating, read by the server factory. */
|
|
347
|
+
let clientForNextServer;
|
|
348
|
+
/**
|
|
349
|
+
* One daemon, clients that want different lists.
|
|
350
|
+
*
|
|
351
|
+
* Codex freezes its tool list at session start, so a tool not offered up front is unreachable for
|
|
352
|
+
* the whole session — measured 2026-08-29, a Codex client on the daemon saw 90 tools where the
|
|
353
|
+
* same build over stdio gives it 181, and `find_dead_code` did not exist as far as it was
|
|
354
|
+
* concerned. Claude Code is the opposite: it refreshes on demand and STOPS USING CodeSift when
|
|
355
|
+
* handed everything (3e1ec6c, adoption down >90%).
|
|
356
|
+
*
|
|
357
|
+
* So the decision is made per REQUEST, from `?client=`, and the front-load is deliberately not
|
|
358
|
+
* remembered at process scope — otherwise one Codex session would hand every Claude Code session
|
|
359
|
+
* the full list too.
|
|
360
|
+
*/
|
|
361
|
+
const handler = createMcpHandler(() => {
|
|
362
|
+
const s = createCodesiftServer();
|
|
363
|
+
// NOT from the async context: the handler builds this server outside the request's
|
|
364
|
+
// AsyncLocalStorage scope — measured, `currentClient()` is undefined here even when the URL
|
|
365
|
+
// carried one. The value is stashed by the HTTP handler immediately before it delegates, on the
|
|
366
|
+
// same tick, which is the only moment both are in scope.
|
|
367
|
+
const client = clientForNextServer;
|
|
368
|
+
const platform = envPlatformForHttp !== "unknown"
|
|
369
|
+
? envPlatformForHttp
|
|
370
|
+
: detectPlatformFromClientInfo(client ?? "");
|
|
371
|
+
if (client && shouldFrontLoadHiddenTools(platform)) {
|
|
372
|
+
frontLoadHiddenToolsForFrozenHost({ remember: false });
|
|
373
|
+
}
|
|
374
|
+
return s;
|
|
375
|
+
}, { legacy: "stateless" });
|
|
271
376
|
const nodeHandler = toNodeHandler(handler);
|
|
272
377
|
let inFlight = 0;
|
|
273
378
|
const httpServer = http.createServer((req, res) => {
|
|
@@ -288,7 +393,20 @@ export async function startHttpServer(opts = {}) {
|
|
|
288
393
|
reason: "the files this daemon started from were replaced (rebuild); lazily imported modules will fail until it restarts",
|
|
289
394
|
remedy: "launchctl kickstart -k gui/$(id -u)/com.codesift.daemon",
|
|
290
395
|
}
|
|
291
|
-
:
|
|
396
|
+
: (() => {
|
|
397
|
+
// Liveness was never the question — the daemon was alive through all three
|
|
398
|
+
// incidents. `busy` keeps the 200 on purpose: slow is not down, and a session
|
|
399
|
+
// told "down" stops using tools it could still have used.
|
|
400
|
+
const vitals = readVitals();
|
|
401
|
+
const { status, reasons } = classifyVitals(vitals);
|
|
402
|
+
return {
|
|
403
|
+
status,
|
|
404
|
+
sessions: inFlight,
|
|
405
|
+
version: PKG_VERSION,
|
|
406
|
+
vitals,
|
|
407
|
+
...(reasons.length > 0 ? { reasons } : {}),
|
|
408
|
+
};
|
|
409
|
+
})()));
|
|
292
410
|
return;
|
|
293
411
|
}
|
|
294
412
|
if (token) {
|
|
@@ -302,6 +420,9 @@ export async function startHttpServer(opts = {}) {
|
|
|
302
420
|
// The caller's directory, pinned per request. Statelessness makes this
|
|
303
421
|
// the natural carrier: there is no session to have learned it once.
|
|
304
422
|
const cwd = cwdFromUrl(url);
|
|
423
|
+
// Stashed for the server factory, which runs outside this request's async context —
|
|
424
|
+
// measured: currentClient() is undefined there even when the URL carried one.
|
|
425
|
+
clientForNextServer = clientFromUrl(url);
|
|
305
426
|
inFlight++;
|
|
306
427
|
try {
|
|
307
428
|
await (cwd
|
|
@@ -325,6 +446,7 @@ export async function startHttpServer(opts = {}) {
|
|
|
325
446
|
}
|
|
326
447
|
})();
|
|
327
448
|
});
|
|
449
|
+
startVitals();
|
|
328
450
|
await new Promise((resolve) => httpServer.listen(opts.port ?? 0, host, resolve));
|
|
329
451
|
const addr = httpServer.address();
|
|
330
452
|
const port = typeof addr === "object" && addr ? addr.port : (opts.port ?? 0);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,iCAAiC,EACjC,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,4BAA4B,EAAqB,MAAM,mBAAmB,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,mCAAmC;AACnC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnF,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAY,OAAO,CAAC,iBAAiB,CAAyB,CAAC,OAAO,CAAC;AAExF,uDAAuD;AACvD,qBAAqB,EAAE,CAAC;AAExB,2CAA2C;AAC3C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;IACtB,cAAc,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAU,EAAE,EAAE;IAC7C,OAAO,CAAC,KAAK,CACX,gEAAgE,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAClG,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAe,EAAE,EAAE;IACnD,MAAM,OAAO,GAAG,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,OAAO,CAAC,KAAK,CACX,iEAAiE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CACvG,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,SAAS,oBAAoB,CAAC,MAAc;IAC1C,IAAI,YAAY;QAAE,OAAO;IACzB,YAAY,GAAG,IAAI,CAAC;IACpB,OAAO,CAAC,KAAK,CAAC,2BAA2B,MAAM,aAAa,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AACD,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAU,EAAE,CAAC;IAC3D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,CAAC;AACD,+EAA+E;AAC/E,8EAA8E;AAC9E,yEAAyE;AAEzE,UAAU,EAAE,CAAC;AAEb,qFAAqF;AACrF,MAAM,UAAU,oBAAoB;IAClC,MAAM,CAAC,GAAG,IAAI,SAAS,CACrB,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,EAC9C,EAAE,YAAY,EAAE,mBAAmB,EAAE,EAAE,CACxC,CAAC;IACF,aAAa,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;AAetC;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAEjD,SAAS,SAAS;IAChB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC9B,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,mEAAmE;IAClF,CAAC;AACH,CAAC;AAED,MAAM,mBAAmB,GAAG,SAAS,EAAE,CAAC;AAExC;;;;;GAKG;AACH,SAAS,mBAAmB;IAC1B,OAAO,SAAS,EAAE,KAAK,mBAAmB,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;AAC1C,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC,SAAS,eAAe,CAAC,KAAa,EAAE,GAAW;IACjD,8EAA8E;IAC9E,mEAAmE;IACnE,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,IAAI,IAAI,qBAAqB;QAAE,OAAO;IACxF,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,CAAC,KAAK,CACX,4BAA4B,KAAK,MAAM,GAAG,4CAA4C;QACpF,8DAA8D,CACjE,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,OAAO,EAAE,CAAC;IACpC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrE,0FAA0F;QAC1F,IAAI,CAAC,KAAK,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACvE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,KAAoB,CAAC;IACzB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAE7B,qDAAqD;IACrD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,eAAe,CAAC,KAAK,EAAE,uEAAuE,CAAC,CAAC;QAChG,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,4EAA4E;QAC5E,2DAA2D;QAC3D,eAAe,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;YAAE,OAAO,QAAQ,CAAC;QACtD,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,eAAe,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QAC5C,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,aAAa,CAAC,MAAqC,EAAE,KAAa;IACzE,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACpD,OAAO,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAGD;;;;;;;;;;;;;;GAcG;AACH,MAAM,uBAAuB,GAAG,EAAE,GAAG,MAAM,CAAC;AAE5C,MAAM,UAAU,qBAAqB;IACnC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,uBAAuB,CAAC,CAAC;IAC9F,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjE,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,IAAI,uBAAuB,EAAE,GAAG,UAAU;YAAE,OAAO;QACnD,MAAM,KAAK,GAAG,oBAAoB,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACpD,OAAO,CAAC,KAAK,CACX,mBAAmB,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,IAAI,CAAC,eAAe;kBAC5E,GAAG,KAAK,CAAC,OAAO,eAAe,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,UAAU,uBAAuB;kBAC1F,+BAA+B,CAClC,CAAC;QACJ,CAAC;IACH,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IACjC,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAI,GAAqD,EAAE;IAE3D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;IAC1E,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAErE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC,wCAAwC;IAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAE/D,sEAAsE;IACtE,EAAE;IACF,2EAA2E;IAC3E,0EAA0E;IAC1E,yEAAyE;IACzE,EAAE;IACF,6EAA6E;IAC7E,4EAA4E;IAC5E,2EAA2E;IAC3E,yEAAyE;IACzE,4BAA4B;IAC5B,EAAE;IACF,uEAAuE;IACvE,qEAAqE;IACrE,oDAAoD;IACpD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,mDAAmD,IAAI,sBAAsB;cAC3E,2DAA2D;cAC3D,oEAAoE,CACvE,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,kBAAkB,GAAG,cAAc,EAAE,CAAC;IAC5C,kFAAkF;IAClF,IAAI,mBAAuC,CAAC;IAE5C;;;;;;;;;;;;OAYG;IACH,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE;QACpC,MAAM,CAAC,GAAG,oBAAoB,EAAE,CAAC;QACjC,mFAAmF;QACnF,4FAA4F;QAC5F,gGAAgG;QAChG,yDAAyD;QACzD,MAAM,MAAM,GAAG,mBAAmB,CAAC;QACnC,MAAM,QAAQ,GAAG,kBAAkB,KAAK,SAAS;YAC/C,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,4BAA4B,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAC/C,IAAI,MAAM,IAAI,0BAA0B,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,iCAAiC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5B,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAE3C,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAChD,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;gBAC3B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBACpD,qFAAqF;oBACrF,yFAAyF;oBACzF,wFAAwF;oBACxF,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAC;oBACpC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBACzE,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CACZ,KAAK;wBACH,CAAC,CAAC;4BACE,MAAM,EAAE,OAAO;4BACf,QAAQ,EAAE,QAAQ;4BAClB,OAAO,EAAE,WAAW;4BACpB,MAAM,EACJ,iHAAiH;4BACnH,MAAM,EAAE,yDAAyD;yBAClE;wBACH,CAAC,CAAC,CAAC,GAAG,EAAE;4BACJ,2EAA2E;4BAC3E,8EAA8E;4BAC9E,0DAA0D;4BAC1D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;4BAC5B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;4BACnD,OAAO;gCACL,MAAM;gCACN,QAAQ,EAAE,QAAQ;gCAClB,OAAO,EAAE,WAAW;gCACpB,MAAM;gCACN,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;6BAC3C,CAAC;wBACJ,CAAC,CAAC,EAAE,CACT,CACF,CAAC;oBACF,OAAO;gBACT,CAAC;gBACD,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;oBAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;wBAChC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;wBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;wBAC9F,OAAO;oBACT,CAAC;gBACH,CAAC;gBAED,uEAAuE;gBACvE,oEAAoE;gBACpE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC5B,oFAAoF;gBACpF,8EAA8E;gBAC9E,mBAAmB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;gBACzC,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC;oBACH,MAAM,CAAC,GAAG;wBACR,iEAAiE;wBACjE,8DAA8D;wBAC9D,CAAC,CAAC,qBAAqB,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAY,EAAE,GAAG,CAAC,CAAC;wBACtE,CAAC,CAAC,WAAW,CAAC,GAAY,EAAE,GAAG,CAAC,CAAC,CAAC;gBACtC,CAAC;wBAAS,CAAC;oBACT,QAAQ,EAAE,CAAC;gBACb,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACrB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAC3D,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CAAC;wBACb,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,mBAAoB,GAAa,CAAC,OAAO,EAAE,EAAE;qBAC9E,CAAC,CACH,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,WAAW,EAAE,CAAC;IACd,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACvF,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAE7E,OAAO;QACL,IAAI;QACJ,GAAG,EAAE,UAAU,IAAI,IAAI,IAAI,MAAM;QACjC,wEAAwE;QACxE,kCAAkC;QAClC,YAAY,EAAE,GAAG,EAAE,CAAC,QAAQ;QAC5B,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,uCAAuC,CAAC,GAAW;IAChE,IAAI,CAAC;QACH,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7E,IAAI,cAAc,IAAI,IAAI,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;YACvD,MAAM,OAAO,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;YACpD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,mBAAmB,OAAO,CAAC,MAAM,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,6EAA6E;IAC7E,qEAAqE;IACrE,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,MAAM,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,IAAI,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,+BAA+B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3D,uCAAuC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACvE,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACzD,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,yBAAyB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YAC9D,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,GAAG,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,8EAA8E;IAC9E,6DAA6D;IAC7D,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC;IAErE,qBAAqB,EAAE,CAAC;IACxB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,6EAA6E;IAC7E,qFAAqF;IACrF,6EAA6E;IAC7E,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;QACvB,OAAO,CAAC,KAAK,CAAC,yCAAyC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC;QACjF,yEAAyE;QACzE,2EAA2E;QAC3E,4EAA4E;QAC5E,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAC1C,CAAC,CAAC;IACF,SAAS,CAAC,OAAO,GAAG,CAAC,GAAU,EAAE,EAAE;QACjC,OAAO,CAAC,KAAK,CAAC,wCAAwC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAChG,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,IAAI,iBAAiB,GAAwB,IAAI,CAAC;IAClD,MAAM,YAAY,GAAG,CAAC,QAAsB,EAAE,MAAc,EAAQ,EAAE;QACpE,IAAI,QAAQ,KAAK,SAAS,IAAI,iBAAiB,KAAK,IAAI;YAAE,OAAO;QACjE,iBAAiB,GAAG,QAAQ,CAAC;QAC7B,qBAAqB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACrD,OAAO,CAAC,KAAK,CAAC,wCAAwC,MAAM,IAAI,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,CAAC,MAAM,CAAC,aAAa,GAAG,GAAG,EAAE;QACjC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC;QAChE,MAAM,cAAc,GAAG,4BAA4B,CAAC,UAAU,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC;QAE1E,0EAA0E;QAC1E,6EAA6E;QAC7E,2EAA2E;QAC3E,qEAAqE;QACrE,IAAI,0BAA0B,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,iCAAiC,EAAE,CAAC;YACpD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,KAAK,CACX,cAAc,QAAQ,IAAI,MAAM,gDAAgD;oBAC9E,QAAQ,OAAO,CAAC,MAAM,6CAA6C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1F,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,iBAAiB,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO;QACpE,YAAY,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,IAAI,UAAU,CAAC,CAAC;IACnG,CAAC,CAAC;IAEF,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAE7C,wEAAwE;IACxE,2EAA2E;IAC3E,wBAAwB,EAAE,CAAC;IAC3B,mBAAmB,EAAE,CAAC;IAEtB,0FAA0F;IAC1F,uCAAuC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAEvE,kEAAkE;IAClE,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACzD,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,yBAAyB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC9D,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,4DAA4D;IAC5D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,mEAAmE;AACnE,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE;IACzB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,UAAU,CAA8B,CAAC;QAC3E,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,SAAS,CAA6B,CAAC;QACxE,OAAO,OAAO,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AAEL,IAAI,YAAY,EAAE,CAAC;IACjB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -44,7 +44,7 @@ export declare function atomicWriteBuffer(targetPath: string, buf: Buffer): Prom
|
|
|
44
44
|
* sqlitePathFor, …) rather than written out independently, and asserted against them in
|
|
45
45
|
* tests, so adding an artifact kind without teaching prune about it fails the build.
|
|
46
46
|
*/
|
|
47
|
-
export declare const ARTIFACT_SUFFIXES: readonly ["index.json", "index.db", "index.db-wal", "index.db-shm", "embeddings.ndjson", "embeddings.meta.json", "chunks.ndjson", "chunk-embeddings.ndjson", "bm25.json", "graph.json", "snapshot.json"];
|
|
47
|
+
export declare const ARTIFACT_SUFFIXES: readonly ["index.json", "index.db", "index.db-wal", "index.db-shm", "embeddings.ndjson", "embeddings.meta.json", "chunks.ndjson", "chunk-embeddings.ndjson", "bm25.json", "bm25.ndjson", "import-edges.ndjson", "graph.json", "snapshot.json"];
|
|
48
48
|
/**
|
|
49
49
|
* Matches `<hash>.<known artifact suffix>`, with an optional `.tmp.<ts>` tail so the
|
|
50
50
|
* abandoned halves of an interrupted atomic write are reclaimed too. Capture group 1 is the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../src/storage/_shared.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,QAAQ,SAAiB,GACxB,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../src/storage/_shared.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,QAAQ,SAAiB,GACxB,OAAO,CAAC,MAAM,CAAC,CA2BjB;AAuBD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,YAC5B,YAAY,EACZ,UAAU,EACV,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,yBAAyB,EACzB,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,eAAe,CACP,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAQxC"}
|
package/dist/storage/_shared.js
CHANGED
|
@@ -16,12 +16,22 @@ import { basename, dirname, join } from "node:path";
|
|
|
16
16
|
*/
|
|
17
17
|
export async function cleanupOrphanTempFiles(targetPath, minAgeMs = 60 * 60 * 1000) {
|
|
18
18
|
const dir = dirname(targetPath);
|
|
19
|
-
const
|
|
19
|
+
const base = basename(targetPath);
|
|
20
|
+
// TWO shapes, not one. `atomicWriteFile` writes `<target>.tmp.<ts>`; `chunk-store` writes
|
|
21
|
+
// `<target>.generation.<pid>.<uuid>`. Only the first was ever swept, so the second accumulated
|
|
22
|
+
// untouched — measured 2026-09-05: 164 files, 19.6 GB, across 26 process ids of which 24 were
|
|
23
|
+
// long dead. They are invisible to `prune` too until the pattern above learns the tail.
|
|
24
|
+
const prefixes = [`${base}.tmp.`, `${base}.generation.`];
|
|
20
25
|
let removed = 0;
|
|
21
26
|
try {
|
|
22
27
|
const cutoff = Date.now() - minAgeMs;
|
|
23
28
|
for (const entry of await readdir(dir)) {
|
|
24
|
-
if (!entry.startsWith(prefix))
|
|
29
|
+
if (!prefixes.some((prefix) => entry.startsWith(prefix)))
|
|
30
|
+
continue;
|
|
31
|
+
// A generation file whose WRITER IS STILL RUNNING is an in-flight write, not an orphan. The
|
|
32
|
+
// age guard alone would eventually delete one: a large embedding batch can outlive the hour,
|
|
33
|
+
// and deleting it mid-write turns a slow save into a corrupt one.
|
|
34
|
+
if (writerIsAlive(entry))
|
|
25
35
|
continue;
|
|
26
36
|
const full = join(dir, entry);
|
|
27
37
|
try {
|
|
@@ -37,6 +47,29 @@ export async function cleanupOrphanTempFiles(targetPath, minAgeMs = 60 * 60 * 10
|
|
|
37
47
|
catch { /* unreadable dir — nothing to clean */ }
|
|
38
48
|
return removed;
|
|
39
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* True when a `.generation.<pid>.<uuid>` name belongs to a process that still exists.
|
|
52
|
+
*
|
|
53
|
+
* `kill(pid, 0)` sends no signal; it only asks whether the id is addressable. EPERM means the
|
|
54
|
+
* process exists and belongs to someone else — still alive, so still hands off. Anything else, and
|
|
55
|
+
* any name without a parsable pid, is treated as dead: this runs beside an age guard, and the cost
|
|
56
|
+
* of being wrong in that direction is one orphan surviving another hour.
|
|
57
|
+
*/
|
|
58
|
+
function writerIsAlive(entry) {
|
|
59
|
+
const match = /\.generation\.(\d+)\./.exec(entry);
|
|
60
|
+
if (!match)
|
|
61
|
+
return false;
|
|
62
|
+
const pid = Number(match[1]);
|
|
63
|
+
if (!Number.isInteger(pid) || pid <= 0)
|
|
64
|
+
return false;
|
|
65
|
+
try {
|
|
66
|
+
process.kill(pid, 0);
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
return err.code === "EPERM";
|
|
71
|
+
}
|
|
72
|
+
}
|
|
40
73
|
/**
|
|
41
74
|
* Write content to a file atomically using a write-rename strategy.
|
|
42
75
|
* 1. Ensures the parent directory exists (mkdir -p).
|
|
@@ -111,6 +144,8 @@ export const ARTIFACT_SUFFIXES = [
|
|
|
111
144
|
"chunks.ndjson",
|
|
112
145
|
"chunk-embeddings.ndjson",
|
|
113
146
|
"bm25.json",
|
|
147
|
+
"bm25.ndjson",
|
|
148
|
+
"import-edges.ndjson",
|
|
114
149
|
"graph.json",
|
|
115
150
|
"snapshot.json",
|
|
116
151
|
];
|
|
@@ -121,6 +156,9 @@ export const ARTIFACT_SUFFIXES = [
|
|
|
121
156
|
*/
|
|
122
157
|
export function artifactPattern() {
|
|
123
158
|
const suffixes = ARTIFACT_SUFFIXES.map((s) => s.replace(/[.\\+*?[^\]$(){}=!<>|:#-]/g, "\\$&"));
|
|
124
|
-
|
|
159
|
+
// The abandoned-write tails are BOTH shapes. `.tmp.<ts>` comes from `atomicWriteFile`;
|
|
160
|
+
// `.generation.<pid>.<uuid>` comes from `chunk-store`, and prune could not see it — measured
|
|
161
|
+
// 2026-09-05, 164 such files holding 19.6 GB that neither cleanup path could reach.
|
|
162
|
+
return new RegExp(`^([0-9a-f]{8,})\\.(?:${suffixes.join("|")})(?:\\.tmp\\..*|\\.generation\\..*)?$`);
|
|
125
163
|
}
|
|
126
164
|
//# sourceMappingURL=_shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../src/storage/_shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEpD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAkB,EAClB,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAEzB,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,MAAM,
|
|
1
|
+
{"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../src/storage/_shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-migration.d.ts","sourceRoot":"","sources":["../../src/storage/index-migration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;AAU7C,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,YAAY,CAAC,CAGjE;AAgBD,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAED,mFAAmF;AACnF,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAMhE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED,KAAK,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;AAK1E;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,iBAAiB,GACjC,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index-migration.d.ts","sourceRoot":"","sources":["../../src/storage/index-migration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;AAU7C,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,YAAY,CAAC,CAGjE;AAgBD,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAED,mFAAmF;AACnF,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAMhE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED,KAAK,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;AAK1E;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,iBAAiB,GACjC,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { importLegacyIndexIfEmpty,
|
|
1
|
+
import { importLegacyIndexIfEmpty, indexDbIsPopulated, isSqliteAvailable, } from "./sqlite-index-store.js";
|
|
2
2
|
/**
|
|
3
3
|
* Which on-disk format to use.
|
|
4
4
|
*
|
|
@@ -54,7 +54,11 @@ export async function ensureSqliteMigrated(indexPath, dbPath, loadLegacyIndex) {
|
|
|
54
54
|
if (inFlight)
|
|
55
55
|
return inFlight;
|
|
56
56
|
const run = (async () => {
|
|
57
|
-
|
|
57
|
+
// An EXISTENCE check, not a load. This used to call `loadIndexSqlite(dbPath)` and discard the
|
|
58
|
+
// result, so every cold entry to a repository materialised the whole index twice — once to
|
|
59
|
+
// answer "is it empty", once for real. Measured on the largest index here, that is ~349 MB of
|
|
60
|
+
// objects built and thrown away, plus the GC pressure the allocation storm creates.
|
|
61
|
+
if (await indexDbIsPopulated(dbPath))
|
|
58
62
|
return;
|
|
59
63
|
const legacy = await loadLegacyIndex(indexPath);
|
|
60
64
|
// The importer re-checks emptiness under its write lock, so racing processes cannot
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-migration.js","sourceRoot":"","sources":["../../src/storage/index-migration.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,
|
|
1
|
+
{"version":3,"file":"index-migration.js","sourceRoot":"","sources":["../../src/storage/index-migration.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAIjC;;;;;GAKG;AACH,IAAI,cAAiD,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,cAAc,KAAK,mBAAmB,EAAE,CAAC;IACzC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACvD,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACvC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,cAAc,GAAG,SAAS,CAAC;AAC7B,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACxD,IAAI,4CAA4C,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,SAAS,CACjB,mEAAmE,SAAS,EAAE,CAC/E,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACpC,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;QAChC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAC7C,CAAC,CAAC,GAAG,SAAS,KAAK,CAAC;AACxB,CAAC;AAID,kEAAkE;AAClE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,SAAiB,EACjB,MAAc,EACd,eAAkC;IAElC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE;QACtB,8FAA8F;QAC9F,2FAA2F;QAC3F,8FAA8F;QAC9F,oFAAoF;QACpF,IAAI,MAAM,kBAAkB,CAAC,MAAM,CAAC;YAAE,OAAO;QAC7C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;QAChD,oFAAoF;QACpF,yCAAyC;QACzC,IAAI,MAAM;YAAE,MAAM,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,EAAE,CAAC;IAEL,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,CAAC;IACZ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wFAAwF;QACxF,mFAAmF;QACnF,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,UAAU,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CodeIndex, CodeSymbol, FileEntry } from "../types.js";
|
|
2
|
+
import { type IndexMeta, type SymbolQuery } from "./sqlite/queries.js";
|
|
2
3
|
import { type IndexSummary } from "./sqlite-index-store.js";
|
|
3
4
|
import { type IndexOrStaleResult } from "./index-version.js";
|
|
4
5
|
export { getIndexCacheBytesForTesting, getIndexCacheSizeForTesting, resetIndexCacheForTesting, resetSummaryCacheForTesting, } from "./index-cache.js";
|
|
@@ -35,6 +36,34 @@ export declare function loadIndex(indexPath: string, currentVersions?: Record<st
|
|
|
35
36
|
* The JSON backend keeps the old cost; there is no way to read one record out of a blob.
|
|
36
37
|
*/
|
|
37
38
|
export declare function getFileEntry(indexPath: string, filePath: string): Promise<FileEntry | undefined>;
|
|
39
|
+
/**
|
|
40
|
+
* Symbols matching a predicate, without constructing the rest of the index.
|
|
41
|
+
*
|
|
42
|
+
* The narrow read the tool layer has never had. Of the 159 call sites that materialise a whole
|
|
43
|
+
* `CodeIndex`, 31% need nothing more than this or `getIndexMeta` — a keyed lookup or a metadata
|
|
44
|
+
* field — and pay 349 MB and ~10 s for it on the largest repo here. Measured against that:
|
|
45
|
+
* `WHERE name = ?` 9 ms, `WHERE file = ?` 10 ms, `WHERE kind = ?` 32 ms.
|
|
46
|
+
*
|
|
47
|
+
* The JSON backend keeps the old cost — there is no way to read one record out of a blob — so this
|
|
48
|
+
* is parity there, not a speedup. It exists so a caller is written once against the narrow shape
|
|
49
|
+
* instead of branching on the backend, exactly as `getFileEntry` above.
|
|
50
|
+
*/
|
|
51
|
+
export declare function findSymbols(indexPath: string, query: SymbolQuery): Promise<CodeSymbol[]>;
|
|
52
|
+
/**
|
|
53
|
+
* Fold over matching symbols in pages instead of holding them all.
|
|
54
|
+
*
|
|
55
|
+
* For the callers that genuinely have to see every symbol — regex scanners, adjacency builders,
|
|
56
|
+
* vocabulary collectors — but never need them resident at once. They fold and discard, so the
|
|
57
|
+
* array was never the requirement; it was only how the data arrived.
|
|
58
|
+
*/
|
|
59
|
+
export declare function streamSymbols(indexPath: string, query: SymbolQuery, onBatch: (batch: CodeSymbol[]) => void | boolean | Promise<void | boolean>): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Root, repo and counts, with no symbol construction at all.
|
|
62
|
+
*
|
|
63
|
+
* 26 of the 159 call sites read only `index.root` or `index.repo`, and two materialise the whole
|
|
64
|
+
* index purely to check that it exists.
|
|
65
|
+
*/
|
|
66
|
+
export declare function getIndexMeta(indexPath: string): Promise<IndexMeta | null>;
|
|
38
67
|
/**
|
|
39
68
|
* Read an index's files and metadata WITHOUT constructing its symbols (ADR-004 stage 2).
|
|
40
69
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-store.d.ts","sourceRoot":"","sources":["../../src/storage/index-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAUL,KAAK,YAAY,EAClB,MAAM,yBAAyB,CAAC;AAcjC,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,YAAY,EACjB,2BAA2B,EAC3B,6BAA6B,EAC7B,mBAAmB,EACnB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,iCAAiC,EACjC,yBAAyB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EAChC,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AAMnC;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,EAChB,IAAI,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GAClC,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAK3B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAShC;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAsBtF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY,CAkB7D;AAuDD,wBAAgB,mCAAmC,IAAI,IAAI,CAE1D;AAwDD;;;;4BAI4B;AAC5B;;;;;;;;;;;;;;;;wCAgBwC;AACxC,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAEpC;AAID;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EAAE,EACxB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOtE"}
|
|
1
|
+
{"version":3,"file":"index-store.d.ts","sourceRoot":"","sources":["../../src/storage/index-store.ts"],"names":[],"mappings":"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"}
|