@cstart/coldstart 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +236 -0
- package/dist/cache/disk-cache.d.ts +14 -0
- package/dist/cache/disk-cache.d.ts.map +1 -0
- package/dist/cache/disk-cache.js +371 -0
- package/dist/cache/disk-cache.js.map +1 -0
- package/dist/cli.d.ts +18 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +206 -0
- package/dist/cli.js.map +1 -0
- package/dist/constants.d.ts +8 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +111 -0
- package/dist/constants.js.map +1 -0
- package/dist/daemon-lock.d.ts +63 -0
- package/dist/daemon-lock.d.ts.map +1 -0
- package/dist/daemon-lock.js +218 -0
- package/dist/daemon-lock.js.map +1 -0
- package/dist/daemon-log.d.ts +26 -0
- package/dist/daemon-log.d.ts.map +1 -0
- package/dist/daemon-log.js +110 -0
- package/dist/daemon-log.js.map +1 -0
- package/dist/index-manager.d.ts +103 -0
- package/dist/index-manager.d.ts.map +1 -0
- package/dist/index-manager.js +361 -0
- package/dist/index-manager.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +724 -0
- package/dist/index.js.map +1 -0
- package/dist/indexer/content-tokens.d.ts +74 -0
- package/dist/indexer/content-tokens.d.ts.map +1 -0
- package/dist/indexer/content-tokens.js +406 -0
- package/dist/indexer/content-tokens.js.map +1 -0
- package/dist/indexer/cpp-include-roots.d.ts +7 -0
- package/dist/indexer/cpp-include-roots.d.ts.map +1 -0
- package/dist/indexer/cpp-include-roots.js +166 -0
- package/dist/indexer/cpp-include-roots.js.map +1 -0
- package/dist/indexer/csharp-synthetic.d.ts +9 -0
- package/dist/indexer/csharp-synthetic.d.ts.map +1 -0
- package/dist/indexer/csharp-synthetic.js +51 -0
- package/dist/indexer/csharp-synthetic.js.map +1 -0
- package/dist/indexer/django-synthetic.d.ts +12 -0
- package/dist/indexer/django-synthetic.d.ts.map +1 -0
- package/dist/indexer/django-synthetic.js +49 -0
- package/dist/indexer/django-synthetic.js.map +1 -0
- package/dist/indexer/extractors/angularjs.d.ts +16 -0
- package/dist/indexer/extractors/angularjs.d.ts.map +1 -0
- package/dist/indexer/extractors/angularjs.js +49 -0
- package/dist/indexer/extractors/angularjs.js.map +1 -0
- package/dist/indexer/extractors/cpp.d.ts +9 -0
- package/dist/indexer/extractors/cpp.d.ts.map +1 -0
- package/dist/indexer/extractors/cpp.js +254 -0
- package/dist/indexer/extractors/cpp.js.map +1 -0
- package/dist/indexer/extractors/csharp.d.ts +19 -0
- package/dist/indexer/extractors/csharp.d.ts.map +1 -0
- package/dist/indexer/extractors/csharp.js +327 -0
- package/dist/indexer/extractors/csharp.js.map +1 -0
- package/dist/indexer/extractors/env.d.ts +9 -0
- package/dist/indexer/extractors/env.d.ts.map +1 -0
- package/dist/indexer/extractors/env.js +43 -0
- package/dist/indexer/extractors/env.js.map +1 -0
- package/dist/indexer/extractors/go.d.ts +9 -0
- package/dist/indexer/extractors/go.d.ts.map +1 -0
- package/dist/indexer/extractors/go.js +227 -0
- package/dist/indexer/extractors/go.js.map +1 -0
- package/dist/indexer/extractors/graphql.d.ts +22 -0
- package/dist/indexer/extractors/graphql.d.ts.map +1 -0
- package/dist/indexer/extractors/graphql.js +88 -0
- package/dist/indexer/extractors/graphql.js.map +1 -0
- package/dist/indexer/extractors/groovy.d.ts +9 -0
- package/dist/indexer/extractors/groovy.d.ts.map +1 -0
- package/dist/indexer/extractors/groovy.js +356 -0
- package/dist/indexer/extractors/groovy.js.map +1 -0
- package/dist/indexer/extractors/java.d.ts +10 -0
- package/dist/indexer/extractors/java.d.ts.map +1 -0
- package/dist/indexer/extractors/java.js +586 -0
- package/dist/indexer/extractors/java.js.map +1 -0
- package/dist/indexer/extractors/kotlin.d.ts +10 -0
- package/dist/indexer/extractors/kotlin.d.ts.map +1 -0
- package/dist/indexer/extractors/kotlin.js +398 -0
- package/dist/indexer/extractors/kotlin.js.map +1 -0
- package/dist/indexer/extractors/node-helpers.d.ts +13 -0
- package/dist/indexer/extractors/node-helpers.d.ts.map +1 -0
- package/dist/indexer/extractors/node-helpers.js +17 -0
- package/dist/indexer/extractors/node-helpers.js.map +1 -0
- package/dist/indexer/extractors/parser-factory.d.ts +4 -0
- package/dist/indexer/extractors/parser-factory.d.ts.map +1 -0
- package/dist/indexer/extractors/parser-factory.js +28 -0
- package/dist/indexer/extractors/parser-factory.js.map +1 -0
- package/dist/indexer/extractors/php.d.ts +17 -0
- package/dist/indexer/extractors/php.d.ts.map +1 -0
- package/dist/indexer/extractors/php.js +363 -0
- package/dist/indexer/extractors/php.js.map +1 -0
- package/dist/indexer/extractors/python.d.ts +14 -0
- package/dist/indexer/extractors/python.d.ts.map +1 -0
- package/dist/indexer/extractors/python.js +449 -0
- package/dist/indexer/extractors/python.js.map +1 -0
- package/dist/indexer/extractors/ruby.d.ts +10 -0
- package/dist/indexer/extractors/ruby.d.ts.map +1 -0
- package/dist/indexer/extractors/ruby.js +996 -0
- package/dist/indexer/extractors/ruby.js.map +1 -0
- package/dist/indexer/extractors/rust.d.ts +9 -0
- package/dist/indexer/extractors/rust.d.ts.map +1 -0
- package/dist/indexer/extractors/rust.js +322 -0
- package/dist/indexer/extractors/rust.js.map +1 -0
- package/dist/indexer/extractors/toml.d.ts +9 -0
- package/dist/indexer/extractors/toml.d.ts.map +1 -0
- package/dist/indexer/extractors/toml.js +84 -0
- package/dist/indexer/extractors/toml.js.map +1 -0
- package/dist/indexer/extractors/xml.d.ts +9 -0
- package/dist/indexer/extractors/xml.d.ts.map +1 -0
- package/dist/indexer/extractors/xml.js +163 -0
- package/dist/indexer/extractors/xml.js.map +1 -0
- package/dist/indexer/extractors/yaml.d.ts +9 -0
- package/dist/indexer/extractors/yaml.d.ts.map +1 -0
- package/dist/indexer/extractors/yaml.js +117 -0
- package/dist/indexer/extractors/yaml.js.map +1 -0
- package/dist/indexer/git.d.ts +19 -0
- package/dist/indexer/git.d.ts.map +1 -0
- package/dist/indexer/git.js +55 -0
- package/dist/indexer/git.js.map +1 -0
- package/dist/indexer/graph.d.ts +7 -0
- package/dist/indexer/graph.d.ts.map +1 -0
- package/dist/indexer/graph.js +20 -0
- package/dist/indexer/graph.js.map +1 -0
- package/dist/indexer/indexed-file.d.ts +15 -0
- package/dist/indexer/indexed-file.d.ts.map +1 -0
- package/dist/indexer/indexed-file.js +50 -0
- package/dist/indexer/indexed-file.js.map +1 -0
- package/dist/indexer/invariants.d.ts +15 -0
- package/dist/indexer/invariants.d.ts.map +1 -0
- package/dist/indexer/invariants.js +96 -0
- package/dist/indexer/invariants.js.map +1 -0
- package/dist/indexer/laravel-synthetic.d.ts +10 -0
- package/dist/indexer/laravel-synthetic.d.ts.map +1 -0
- package/dist/indexer/laravel-synthetic.js +78 -0
- package/dist/indexer/laravel-synthetic.js.map +1 -0
- package/dist/indexer/parser.d.ts +4 -0
- package/dist/indexer/parser.d.ts.map +1 -0
- package/dist/indexer/parser.js +499 -0
- package/dist/indexer/parser.js.map +1 -0
- package/dist/indexer/patch.d.ts +3 -0
- package/dist/indexer/patch.d.ts.map +1 -0
- package/dist/indexer/patch.js +291 -0
- package/dist/indexer/patch.js.map +1 -0
- package/dist/indexer/rails-synthetic.d.ts +11 -0
- package/dist/indexer/rails-synthetic.d.ts.map +1 -0
- package/dist/indexer/rails-synthetic.js +80 -0
- package/dist/indexer/rails-synthetic.js.map +1 -0
- package/dist/indexer/reconcile.d.ts +9 -0
- package/dist/indexer/reconcile.d.ts.map +1 -0
- package/dist/indexer/reconcile.js +96 -0
- package/dist/indexer/reconcile.js.map +1 -0
- package/dist/indexer/resolvers/cpp.d.ts +15 -0
- package/dist/indexer/resolvers/cpp.d.ts.map +1 -0
- package/dist/indexer/resolvers/cpp.js +35 -0
- package/dist/indexer/resolvers/cpp.js.map +1 -0
- package/dist/indexer/resolvers/csharp.d.ts +2 -0
- package/dist/indexer/resolvers/csharp.d.ts.map +1 -0
- package/dist/indexer/resolvers/csharp.js +89 -0
- package/dist/indexer/resolvers/csharp.js.map +1 -0
- package/dist/indexer/resolvers/generic.d.ts +10 -0
- package/dist/indexer/resolvers/generic.d.ts.map +1 -0
- package/dist/indexer/resolvers/generic.js +35 -0
- package/dist/indexer/resolvers/generic.js.map +1 -0
- package/dist/indexer/resolvers/go.d.ts +2 -0
- package/dist/indexer/resolvers/go.d.ts.map +1 -0
- package/dist/indexer/resolvers/go.js +171 -0
- package/dist/indexer/resolvers/go.js.map +1 -0
- package/dist/indexer/resolvers/index.d.ts +26 -0
- package/dist/indexer/resolvers/index.d.ts.map +1 -0
- package/dist/indexer/resolvers/index.js +301 -0
- package/dist/indexer/resolvers/index.js.map +1 -0
- package/dist/indexer/resolvers/java.d.ts +17 -0
- package/dist/indexer/resolvers/java.d.ts.map +1 -0
- package/dist/indexer/resolvers/java.js +104 -0
- package/dist/indexer/resolvers/java.js.map +1 -0
- package/dist/indexer/resolvers/php.d.ts +2 -0
- package/dist/indexer/resolvers/php.d.ts.map +1 -0
- package/dist/indexer/resolvers/php.js +108 -0
- package/dist/indexer/resolvers/php.js.map +1 -0
- package/dist/indexer/resolvers/python.d.ts +17 -0
- package/dist/indexer/resolvers/python.d.ts.map +1 -0
- package/dist/indexer/resolvers/python.js +63 -0
- package/dist/indexer/resolvers/python.js.map +1 -0
- package/dist/indexer/resolvers/ruby.d.ts +13 -0
- package/dist/indexer/resolvers/ruby.d.ts.map +1 -0
- package/dist/indexer/resolvers/ruby.js +199 -0
- package/dist/indexer/resolvers/ruby.js.map +1 -0
- package/dist/indexer/resolvers/rust.d.ts +12 -0
- package/dist/indexer/resolvers/rust.d.ts.map +1 -0
- package/dist/indexer/resolvers/rust.js +61 -0
- package/dist/indexer/resolvers/rust.js.map +1 -0
- package/dist/indexer/resolvers/shared.d.ts +18 -0
- package/dist/indexer/resolvers/shared.d.ts.map +1 -0
- package/dist/indexer/resolvers/shared.js +71 -0
- package/dist/indexer/resolvers/shared.js.map +1 -0
- package/dist/indexer/rust-workspace.d.ts +25 -0
- package/dist/indexer/rust-workspace.d.ts.map +1 -0
- package/dist/indexer/rust-workspace.js +155 -0
- package/dist/indexer/rust-workspace.js.map +1 -0
- package/dist/indexer/symbol-edges.d.ts +19 -0
- package/dist/indexer/symbol-edges.d.ts.map +1 -0
- package/dist/indexer/symbol-edges.js +117 -0
- package/dist/indexer/symbol-edges.js.map +1 -0
- package/dist/indexer/tokenize.d.ts +26 -0
- package/dist/indexer/tokenize.d.ts.map +1 -0
- package/dist/indexer/tokenize.js +200 -0
- package/dist/indexer/tokenize.js.map +1 -0
- package/dist/indexer/ts-parser.d.ts +10 -0
- package/dist/indexer/ts-parser.d.ts.map +1 -0
- package/dist/indexer/ts-parser.js +605 -0
- package/dist/indexer/ts-parser.js.map +1 -0
- package/dist/indexer/walker.d.ts +9 -0
- package/dist/indexer/walker.d.ts.map +1 -0
- package/dist/indexer/walker.js +91 -0
- package/dist/indexer/walker.js.map +1 -0
- package/dist/init.d.ts +111 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +787 -0
- package/dist/init.js.map +1 -0
- package/dist/kb/cli.d.ts +2 -0
- package/dist/kb/cli.d.ts.map +1 -0
- package/dist/kb/cli.js +377 -0
- package/dist/kb/cli.js.map +1 -0
- package/dist/kb/commit.d.ts +6 -0
- package/dist/kb/commit.d.ts.map +1 -0
- package/dist/kb/commit.js +84 -0
- package/dist/kb/commit.js.map +1 -0
- package/dist/kb/fold.d.ts +42 -0
- package/dist/kb/fold.d.ts.map +1 -0
- package/dist/kb/fold.js +285 -0
- package/dist/kb/fold.js.map +1 -0
- package/dist/kb/freshness.d.ts +9 -0
- package/dist/kb/freshness.d.ts.map +1 -0
- package/dist/kb/freshness.js +52 -0
- package/dist/kb/freshness.js.map +1 -0
- package/dist/kb/git.d.ts +4 -0
- package/dist/kb/git.d.ts.map +1 -0
- package/dist/kb/git.js +28 -0
- package/dist/kb/git.js.map +1 -0
- package/dist/kb/ids.d.ts +8 -0
- package/dist/kb/ids.d.ts.map +1 -0
- package/dist/kb/ids.js +42 -0
- package/dist/kb/ids.js.map +1 -0
- package/dist/kb/lint.d.ts +23 -0
- package/dist/kb/lint.d.ts.map +1 -0
- package/dist/kb/lint.js +102 -0
- package/dist/kb/lint.js.map +1 -0
- package/dist/kb/lookup.d.ts +55 -0
- package/dist/kb/lookup.d.ts.map +1 -0
- package/dist/kb/lookup.js +92 -0
- package/dist/kb/lookup.js.map +1 -0
- package/dist/kb/notes-index.d.ts +31 -0
- package/dist/kb/notes-index.d.ts.map +1 -0
- package/dist/kb/notes-index.js +0 -0
- package/dist/kb/notes-index.js.map +1 -0
- package/dist/kb/raw-log.d.ts +34 -0
- package/dist/kb/raw-log.d.ts.map +1 -0
- package/dist/kb/raw-log.js +106 -0
- package/dist/kb/raw-log.js.map +1 -0
- package/dist/kb/render.d.ts +17 -0
- package/dist/kb/render.d.ts.map +1 -0
- package/dist/kb/render.js +101 -0
- package/dist/kb/render.js.map +1 -0
- package/dist/kb/search.d.ts +110 -0
- package/dist/kb/search.d.ts.map +1 -0
- package/dist/kb/search.js +453 -0
- package/dist/kb/search.js.map +1 -0
- package/dist/kb/store.d.ts +35 -0
- package/dist/kb/store.d.ts.map +1 -0
- package/dist/kb/store.js +160 -0
- package/dist/kb/store.js.map +1 -0
- package/dist/kb/types.d.ts +142 -0
- package/dist/kb/types.d.ts.map +1 -0
- package/dist/kb/types.js +13 -0
- package/dist/kb/types.js.map +1 -0
- package/dist/kb/view-template.d.ts +8 -0
- package/dist/kb/view-template.d.ts.map +1 -0
- package/dist/kb/view-template.js +8 -0
- package/dist/kb/view-template.js.map +1 -0
- package/dist/kb/view.d.ts +42 -0
- package/dist/kb/view.d.ts.map +1 -0
- package/dist/kb/view.js +118 -0
- package/dist/kb/view.js.map +1 -0
- package/dist/kb/write.d.ts +72 -0
- package/dist/kb/write.d.ts.map +1 -0
- package/dist/kb/write.js +345 -0
- package/dist/kb/write.js.map +1 -0
- package/dist/keeper-state.d.ts +29 -0
- package/dist/keeper-state.d.ts.map +1 -0
- package/dist/keeper-state.js +89 -0
- package/dist/keeper-state.js.map +1 -0
- package/dist/keeper.d.ts +23 -0
- package/dist/keeper.d.ts.map +1 -0
- package/dist/keeper.js +105 -0
- package/dist/keeper.js.map +1 -0
- package/dist/migrate.d.ts +9 -0
- package/dist/migrate.d.ts.map +1 -0
- package/dist/migrate.js +102 -0
- package/dist/migrate.js.map +1 -0
- package/dist/restart.d.ts +15 -0
- package/dist/restart.d.ts.map +1 -0
- package/dist/restart.js +48 -0
- package/dist/restart.js.map +1 -0
- package/dist/server/find.d.ts +39 -0
- package/dist/server/find.d.ts.map +1 -0
- package/dist/server/find.js +979 -0
- package/dist/server/find.js.map +1 -0
- package/dist/server/mcp.d.ts +117 -0
- package/dist/server/mcp.d.ts.map +1 -0
- package/dist/server/mcp.js +301 -0
- package/dist/server/mcp.js.map +1 -0
- package/dist/server/searcher.d.ts +14 -0
- package/dist/server/searcher.d.ts.map +1 -0
- package/dist/server/searcher.js +146 -0
- package/dist/server/searcher.js.map +1 -0
- package/dist/server/tools.d.ts +17 -0
- package/dist/server/tools.d.ts.map +1 -0
- package/dist/server/tools.js +875 -0
- package/dist/server/tools.js.map +1 -0
- package/dist/status.d.ts +12 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +157 -0
- package/dist/status.js.map +1 -0
- package/dist/types.d.ts +138 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/watcher.d.ts +11 -0
- package/dist/watcher.d.ts.map +1 -0
- package/dist/watcher.js +67 -0
- package/dist/watcher.js.map +1 -0
- package/hooks/canonical-find-key.mjs +68 -0
- package/hooks/codex-find-nudge.mjs +15 -0
- package/hooks/codex-find-preguard.mjs +14 -0
- package/hooks/codex-kb-elicit.mjs +329 -0
- package/hooks/codex-kb-recall.mjs +151 -0
- package/hooks/codex-nudge-handler.mjs +370 -0
- package/hooks/codex-preguard-handler.mjs +75 -0
- package/hooks/codex-run-hook.mjs +132 -0
- package/hooks/coldstart-call.mjs +58 -0
- package/hooks/cursor-find-nudge.mjs +15 -0
- package/hooks/cursor-find-preguard.mjs +14 -0
- package/hooks/cursor-input.mjs +72 -0
- package/hooks/cursor-kb-elicit.mjs +335 -0
- package/hooks/cursor-kb-recall.mjs +138 -0
- package/hooks/cursor-nudge-handler.mjs +33 -0
- package/hooks/cursor-preguard-handler.mjs +39 -0
- package/hooks/cursor-run-hook.mjs +129 -0
- package/hooks/find-nudge.mjs +15 -0
- package/hooks/find-preguard.mjs +14 -0
- package/hooks/kb-elicit.mjs +334 -0
- package/hooks/kb-recall.mjs +151 -0
- package/hooks/nudge-handler.mjs +370 -0
- package/hooks/preguard-handler.mjs +75 -0
- package/hooks/run-hook.mjs +132 -0
- package/package.json +69 -0
- package/templates/coldstart.cli.md +60 -0
- package/templates/coldstart.mcp.md +59 -0
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
import { watch } from 'node:fs';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { stat } from 'node:fs/promises';
|
|
4
|
+
import { join, basename } from 'node:path';
|
|
5
|
+
import { startWatcher } from './watcher.js';
|
|
6
|
+
import { renderIds, notebookExists } from './kb/store.js';
|
|
7
|
+
import { buildKbNotesIndex, saveKbNotesIndex } from './kb/notes-index.js';
|
|
8
|
+
import { patchIndex } from './indexer/patch.js';
|
|
9
|
+
import { getGitHead } from './indexer/git.js';
|
|
10
|
+
import { lintIndexInvariants } from './indexer/invariants.js';
|
|
11
|
+
import { saveCachedIndex, getCacheDir } from './cache/disk-cache.js';
|
|
12
|
+
import { updateKeeperState, appendRepairLog } from './keeper-state.js';
|
|
13
|
+
import { patchThreshold } from './constants.js';
|
|
14
|
+
/**
|
|
15
|
+
* Owns the live in-memory index and orchestrates incremental patches vs full rebuilds.
|
|
16
|
+
*
|
|
17
|
+
* Decision logic (fires on each debounced batch from the file watcher):
|
|
18
|
+
* - batch.size === 0 → no-op
|
|
19
|
+
* - batch.size <= 30 → incremental patch (serial, ~2-5ms per file)
|
|
20
|
+
* - batch.size > 30 → full rebuild in background, serve stale index until complete
|
|
21
|
+
* - patch throws → fallback to full rebuild
|
|
22
|
+
*
|
|
23
|
+
* Changes that arrive WHILE a rebuild is running are collected into a pending set.
|
|
24
|
+
* After the rebuild completes, the pending set is processed as a new batch so no
|
|
25
|
+
* changes are silently dropped.
|
|
26
|
+
*
|
|
27
|
+
* Tool calls always read `getContext().index` which is the last stable snapshot.
|
|
28
|
+
* Index swaps are atomic (single JS assignment).
|
|
29
|
+
*/
|
|
30
|
+
export class IndexManager {
|
|
31
|
+
rebuild;
|
|
32
|
+
cacheDir;
|
|
33
|
+
noCache;
|
|
34
|
+
quiet;
|
|
35
|
+
activeIndex;
|
|
36
|
+
rebuilding = false;
|
|
37
|
+
stopWatcherFn = null;
|
|
38
|
+
stopCacheWatcherFn = null;
|
|
39
|
+
pendingCacheSave = null;
|
|
40
|
+
/**
|
|
41
|
+
* Paths that changed while a rebuild was in progress.
|
|
42
|
+
* Processed as a follow-up batch once the rebuild completes.
|
|
43
|
+
*/
|
|
44
|
+
pendingDuringRebuild = new Set();
|
|
45
|
+
constructor(initialIndex, rebuild, cacheDir, noCache, quiet) {
|
|
46
|
+
this.rebuild = rebuild;
|
|
47
|
+
this.cacheDir = cacheDir;
|
|
48
|
+
this.noCache = noCache;
|
|
49
|
+
this.quiet = quiet;
|
|
50
|
+
this.activeIndex = initialIndex;
|
|
51
|
+
}
|
|
52
|
+
/** Returns the current index snapshot and rebuild status for tool calls. */
|
|
53
|
+
getContext() {
|
|
54
|
+
return { index: this.activeIndex, isRebuilding: this.rebuilding };
|
|
55
|
+
}
|
|
56
|
+
/** Start watching the project root for file changes. */
|
|
57
|
+
startWatching() {
|
|
58
|
+
this.stopWatcherFn = startWatcher(this.activeIndex.rootDir, (batch) => { void this.handleBatch(batch); }, (batch) => { this.handleNotebookRawBatch(batch); });
|
|
59
|
+
this.log('[coldstart] File watcher active');
|
|
60
|
+
// Fix #2: Watch cache directory for manual deletes
|
|
61
|
+
this.stopCacheWatcherFn = this.startCacheWatcher();
|
|
62
|
+
// Seed the KB notes index so kb readers (which never load the code index)
|
|
63
|
+
// have lane-2 inventories + absence stamps from the first query on.
|
|
64
|
+
void this.refreshKbNotesIndex();
|
|
65
|
+
}
|
|
66
|
+
/** Stop watching (called on process exit). */
|
|
67
|
+
stopWatching() {
|
|
68
|
+
this.stopWatcherFn?.();
|
|
69
|
+
this.stopWatcherFn = null;
|
|
70
|
+
this.stopCacheWatcherFn?.();
|
|
71
|
+
this.stopCacheWatcherFn = null;
|
|
72
|
+
if (this.pendingCacheSave)
|
|
73
|
+
clearTimeout(this.pendingCacheSave);
|
|
74
|
+
if (this.rebuildRetryTimer)
|
|
75
|
+
clearTimeout(this.rebuildRetryTimer);
|
|
76
|
+
}
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
// Internal
|
|
79
|
+
// ---------------------------------------------------------------------------
|
|
80
|
+
log(...args) {
|
|
81
|
+
if (!this.quiet)
|
|
82
|
+
process.stderr.write(args.join(' ') + '\n');
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Notebook `.raw` logs changed (an agent wrote a note, or a git merge
|
|
86
|
+
* unioned two logs) — re-fold and re-render the derived md for those ids.
|
|
87
|
+
* Never touches the code index; md here is a browsability nicety (search
|
|
88
|
+
* folds from `.raw` directly), so failures only log.
|
|
89
|
+
*/
|
|
90
|
+
handleNotebookRawBatch(batch) {
|
|
91
|
+
try {
|
|
92
|
+
const ids = [...batch]
|
|
93
|
+
.filter((p) => p.endsWith('.jsonl'))
|
|
94
|
+
.map((p) => basename(p, '.jsonl'));
|
|
95
|
+
if (!ids.length)
|
|
96
|
+
return;
|
|
97
|
+
const rendered = renderIds(this.activeIndex.rootDir, ids);
|
|
98
|
+
this.log(`[coldstart] notebook: re-rendered ${rendered.length} note(s)`);
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
this.log(`[coldstart] notebook render failed: ${err}`);
|
|
102
|
+
}
|
|
103
|
+
// Note anchors / absence terms may have changed — refresh the notes index.
|
|
104
|
+
void this.refreshKbNotesIndex();
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Rebuild the keeper-maintained KB notes index (per-anchor symbol
|
|
108
|
+
* inventories + absence verdict stamps) from the live code index, and
|
|
109
|
+
* persist it beside the cache. Single-flight: a refresh landing while one
|
|
110
|
+
* runs is coalesced into one follow-up pass, so stamps never go stale
|
|
111
|
+
* silently. kb readers only ever READ this file (C1 decoupling).
|
|
112
|
+
*/
|
|
113
|
+
refreshingKb = false;
|
|
114
|
+
kbRefreshQueued = false;
|
|
115
|
+
async refreshKbNotesIndex() {
|
|
116
|
+
if (this.noCache)
|
|
117
|
+
return; // disk writes disabled
|
|
118
|
+
if (!notebookExists(this.activeIndex.rootDir))
|
|
119
|
+
return;
|
|
120
|
+
if (this.refreshingKb) {
|
|
121
|
+
this.kbRefreshQueued = true;
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
this.refreshingKb = true;
|
|
125
|
+
try {
|
|
126
|
+
const kb = await buildKbNotesIndex(this.activeIndex, this.activeIndex.rootDir);
|
|
127
|
+
await saveKbNotesIndex(this.activeIndex.rootDir, kb, this.cacheDir);
|
|
128
|
+
this.log(`[coldstart] KB notes index refreshed (${Object.keys(kb.anchors).length} anchors, ${Object.keys(kb.absence).length} absence stamps)`);
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
this.log(`[coldstart] KB notes index refresh failed: ${err}`);
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
this.refreshingKb = false;
|
|
135
|
+
if (this.kbRefreshQueued) {
|
|
136
|
+
this.kbRefreshQueued = false;
|
|
137
|
+
void this.refreshKbNotesIndex();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async handleBatch(batch) {
|
|
142
|
+
if (batch.size === 0)
|
|
143
|
+
return;
|
|
144
|
+
if (this.rebuilding) {
|
|
145
|
+
// Collect changes that arrive mid-rebuild. They are processed as a
|
|
146
|
+
// follow-up batch once the rebuild completes (see triggerRebuild finally).
|
|
147
|
+
for (const p of batch)
|
|
148
|
+
this.pendingDuringRebuild.add(p);
|
|
149
|
+
this.log(`[coldstart] Rebuild in progress — queued ${batch.size} change(s) for post-rebuild patch`);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const threshold = patchThreshold(this.activeIndex.files.size);
|
|
153
|
+
if (batch.size <= threshold) {
|
|
154
|
+
this.log(`[coldstart] ${batch.size} file(s) changed — patching incrementally`);
|
|
155
|
+
try {
|
|
156
|
+
await patchIndex(this.activeIndex, batch, this.activeIndex.rootDir);
|
|
157
|
+
// Invariant lint: a patch that left the graph inconsistent must not
|
|
158
|
+
// be served or persisted — rebuild from scratch instead.
|
|
159
|
+
const problems = lintIndexInvariants(this.activeIndex);
|
|
160
|
+
if (problems.length > 0) {
|
|
161
|
+
this.log(`[coldstart] INVARIANT VIOLATION after patch — rebuilding. ${problems.join(' | ')}`);
|
|
162
|
+
void this.report('invariant-violation', problems.join(' | '));
|
|
163
|
+
await this.triggerRebuild();
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
this.log('[coldstart] Incremental patch done');
|
|
167
|
+
void this.stamp({ lastPatch: { at: Date.now(), detail: `${batch.size} file(s)` } });
|
|
168
|
+
this.scheduleCacheSave();
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
this.log(`[coldstart] Patch failed (${err}) — falling back to full rebuild`);
|
|
172
|
+
void this.report('patch-failed', String(err));
|
|
173
|
+
await this.triggerRebuild();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
this.log(`[coldstart] ${batch.size} files changed (> ${threshold}) — triggering full rebuild`);
|
|
178
|
+
await this.triggerRebuild();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/** Best-effort observability writers (skipped under --no-cache). Stamps are
|
|
182
|
+
* serialized through one promise chain: updateKeeperState is read-merge-
|
|
183
|
+
* write, so two in-flight stamps would silently drop each other's fields. */
|
|
184
|
+
stampChain = Promise.resolve();
|
|
185
|
+
async stamp(patch) {
|
|
186
|
+
if (this.noCache)
|
|
187
|
+
return;
|
|
188
|
+
this.stampChain = this.stampChain
|
|
189
|
+
.then(() => updateKeeperState(this.activeIndex.rootDir, patch, this.cacheDir))
|
|
190
|
+
.catch(() => { });
|
|
191
|
+
await this.stampChain;
|
|
192
|
+
}
|
|
193
|
+
async report(event, detail) {
|
|
194
|
+
if (this.noCache)
|
|
195
|
+
return;
|
|
196
|
+
await appendRepairLog(this.activeIndex.rootDir, event, detail, this.cacheDir);
|
|
197
|
+
}
|
|
198
|
+
async triggerRebuild() {
|
|
199
|
+
if (this.rebuilding)
|
|
200
|
+
return;
|
|
201
|
+
this.rebuilding = true;
|
|
202
|
+
try {
|
|
203
|
+
const newIndex = await this.rebuild();
|
|
204
|
+
this.activeIndex = newIndex; // atomic swap
|
|
205
|
+
this.log(`[coldstart] Rebuild complete (${newIndex.files.size} files)`);
|
|
206
|
+
this.rebuildFailures = 0;
|
|
207
|
+
void this.stamp({ lastRebuild: { at: Date.now(), detail: `${newIndex.files.size} files` } });
|
|
208
|
+
this.scheduleCacheSave();
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
this.log(`[coldstart] Rebuild failed: ${err}`);
|
|
212
|
+
void this.report('rebuild-failed', String(err));
|
|
213
|
+
this.scheduleRebuildRetry();
|
|
214
|
+
}
|
|
215
|
+
finally {
|
|
216
|
+
this.rebuilding = false;
|
|
217
|
+
// Process any changes that arrived while the rebuild was running.
|
|
218
|
+
// These may not be reflected in the freshly built snapshot.
|
|
219
|
+
if (this.pendingDuringRebuild.size > 0) {
|
|
220
|
+
const pending = new Set(this.pendingDuringRebuild);
|
|
221
|
+
this.pendingDuringRebuild.clear();
|
|
222
|
+
this.log(`[coldstart] Processing ${pending.size} change(s) that arrived during rebuild`);
|
|
223
|
+
void this.handleBatch(pending);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* A failed rebuild leaves the keeper serving a stale snapshot with no
|
|
229
|
+
* guarantee another change event ever arrives — retry on a timer, backing
|
|
230
|
+
* off, and give up (until the next real change) after a few attempts.
|
|
231
|
+
*/
|
|
232
|
+
rebuildFailures = 0;
|
|
233
|
+
rebuildRetryTimer = null;
|
|
234
|
+
scheduleRebuildRetry() {
|
|
235
|
+
this.rebuildFailures++;
|
|
236
|
+
if (this.rebuildFailures > 3) {
|
|
237
|
+
this.log(`[coldstart] Rebuild failed ${this.rebuildFailures - 1} time(s) — giving up until the next file change`);
|
|
238
|
+
this.rebuildFailures = 0;
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
const delayMs = 60_000 * this.rebuildFailures;
|
|
242
|
+
this.log(`[coldstart] Retrying rebuild in ${delayMs / 1000}s (attempt ${this.rebuildFailures})`);
|
|
243
|
+
if (this.rebuildRetryTimer)
|
|
244
|
+
clearTimeout(this.rebuildRetryTimer);
|
|
245
|
+
this.rebuildRetryTimer = setTimeout(() => {
|
|
246
|
+
this.rebuildRetryTimer = null;
|
|
247
|
+
void this.triggerRebuild();
|
|
248
|
+
}, delayMs);
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Sampled fingerprint audit — after each cache save, stat a rotating window
|
|
252
|
+
* of indexed files against their parse-time fingerprints. Catches changes
|
|
253
|
+
* the watcher missed (dropped fs events, edits in paths fs.watch didn't
|
|
254
|
+
* cover); drifted files are re-fed through the normal patch path.
|
|
255
|
+
*/
|
|
256
|
+
auditCursor = 0;
|
|
257
|
+
async auditFingerprints(sample = 50) {
|
|
258
|
+
const files = [...this.activeIndex.files.values()];
|
|
259
|
+
if (files.length === 0)
|
|
260
|
+
return;
|
|
261
|
+
const n = Math.min(sample, files.length);
|
|
262
|
+
const stale = new Set();
|
|
263
|
+
for (let i = 0; i < n; i++) {
|
|
264
|
+
const f = files[(this.auditCursor + i) % files.length];
|
|
265
|
+
try {
|
|
266
|
+
const st = await stat(f.path);
|
|
267
|
+
if (f.mtimeMs === undefined || f.sizeBytes === undefined
|
|
268
|
+
|| st.mtimeMs !== f.mtimeMs || st.size !== f.sizeBytes)
|
|
269
|
+
stale.add(f.path);
|
|
270
|
+
}
|
|
271
|
+
catch {
|
|
272
|
+
stale.add(f.path); // gone — patch plans the delete
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
this.auditCursor = (this.auditCursor + n) % files.length;
|
|
276
|
+
if (stale.size > 0) {
|
|
277
|
+
this.log(`[coldstart] Fingerprint audit: ${stale.size}/${n} sampled file(s) drifted — re-patching (watcher may have missed events)`);
|
|
278
|
+
void this.handleBatch(stale);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
/** Debounced cache write — avoids hammering disk on rapid successive patches. */
|
|
282
|
+
savingCache = false;
|
|
283
|
+
scheduleCacheSave() {
|
|
284
|
+
if (this.noCache)
|
|
285
|
+
return; // --no-cache: watcher is active but disk writes are disabled
|
|
286
|
+
if (this.pendingCacheSave)
|
|
287
|
+
clearTimeout(this.pendingCacheSave);
|
|
288
|
+
this.pendingCacheSave = setTimeout(() => {
|
|
289
|
+
this.pendingCacheSave = null;
|
|
290
|
+
this.savingCache = true;
|
|
291
|
+
// Refresh the stored head at save time: watcher patches track file
|
|
292
|
+
// content but a checkout also moves HEAD, and a save stamped with the
|
|
293
|
+
// old head makes every reader burn the full HEAD-drift wait forever.
|
|
294
|
+
getGitHead(this.activeIndex.rootDir)
|
|
295
|
+
.then((head) => {
|
|
296
|
+
if (head)
|
|
297
|
+
this.activeIndex.gitHead = head;
|
|
298
|
+
return saveCachedIndex(this.activeIndex, this.cacheDir);
|
|
299
|
+
})
|
|
300
|
+
.then(() => this.stamp({ lastSave: { at: Date.now(), detail: `${this.activeIndex.files.size} files` } }))
|
|
301
|
+
.then(() => this.auditFingerprints())
|
|
302
|
+
.catch(err => this.log(`[coldstart] Cache write failed: ${err}`))
|
|
303
|
+
.finally(() => { this.savingCache = false; });
|
|
304
|
+
// Code changed → anchored files' symbols and absence-search results may
|
|
305
|
+
// have too; re-stamp the KB notes index alongside the cache save.
|
|
306
|
+
void this.refreshKbNotesIndex();
|
|
307
|
+
}, 5_000); // write 5s after last change settles
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Fix #2: Watch the cache directory for manual deletes (e.g., user runs
|
|
311
|
+
* `rm -rf ~/.coldstart/indexes/<x>/meta.json`). If meta.json is missing,
|
|
312
|
+
* trigger a rebuild so the cache is recreated.
|
|
313
|
+
*
|
|
314
|
+
* Uses fs.watch on the parent directory (Windows quirk) and checks for
|
|
315
|
+
* meta.json existence. The existence check prevents a loop: the daemon
|
|
316
|
+
* itself writes meta.json on every save, which would fire the watch event,
|
|
317
|
+
* but we only rebuild if meta.json is MISSING.
|
|
318
|
+
*/
|
|
319
|
+
startCacheWatcher() {
|
|
320
|
+
if (this.noCache)
|
|
321
|
+
return () => { }; // No cache watching if caching is disabled
|
|
322
|
+
const cacheDir = getCacheDir(this.activeIndex.rootDir, this.cacheDir);
|
|
323
|
+
const metaPath = join(cacheDir, 'meta.json');
|
|
324
|
+
let debounceTimer = null;
|
|
325
|
+
let watcher = null;
|
|
326
|
+
try {
|
|
327
|
+
watcher = watch(cacheDir, { recursive: false }, (_eventType, filename) => {
|
|
328
|
+
// Watch fires on file changes in the cache dir. Only rebuild if meta.json
|
|
329
|
+
// is missing (e.g., user deleted it via `rm meta.json`).
|
|
330
|
+
// The existence check is the safety gate: if meta.json was just written
|
|
331
|
+
// by the daemon, it exists and we don't rebuild.
|
|
332
|
+
if (debounceTimer)
|
|
333
|
+
clearTimeout(debounceTimer);
|
|
334
|
+
debounceTimer = setTimeout(() => {
|
|
335
|
+
debounceTimer = null;
|
|
336
|
+
// Only rebuild if meta.json is missing (user deleted cache manually).
|
|
337
|
+
// Stand down while a rebuild or save is already in flight: the keeper
|
|
338
|
+
// itself writes to this dir between rebuild and (debounced) meta save
|
|
339
|
+
// (keeper-state stamps, segments), and treating those events as "cache
|
|
340
|
+
// still missing" turned one heal into an infinite rebuild loop.
|
|
341
|
+
if (!existsSync(metaPath)) {
|
|
342
|
+
if (this.rebuilding || this.pendingCacheSave !== null || this.savingCache)
|
|
343
|
+
return;
|
|
344
|
+
this.log('[coldstart] Cache meta.json missing — triggering rebuild');
|
|
345
|
+
void this.triggerRebuild();
|
|
346
|
+
}
|
|
347
|
+
}, 200);
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
catch (err) {
|
|
351
|
+
this.log(`[coldstart] Cache watcher unavailable: ${err}`);
|
|
352
|
+
return () => { };
|
|
353
|
+
}
|
|
354
|
+
return () => {
|
|
355
|
+
if (debounceTimer)
|
|
356
|
+
clearTimeout(debounceTimer);
|
|
357
|
+
watcher?.close();
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=index-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-manager.js","sourceRoot":"","sources":["../src/index-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAgDA,OAAO,KAAK,EAAE,aAAa,EAA2B,MAAM,YAAY,CAAC;AAqFzE,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,EAAE,MAAM,EAAE,EAClB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,aAAa,CAAC,CA8IxB"}
|