@fodx/codelens 2.2.1 → 2.3.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.
Files changed (45) hide show
  1. package/README.md +13 -5
  2. package/build/src/db/queries.js +40 -0
  3. package/build/src/db/queries.js.map +1 -0
  4. package/build/src/graph/edges.js +2 -2
  5. package/build/src/graph/edges.js.map +1 -1
  6. package/build/src/graph/grammars.js +8 -0
  7. package/build/src/graph/grammars.js.map +1 -1
  8. package/build/src/graph/symbols.js +1 -1
  9. package/build/src/graph/symbols.js.map +1 -1
  10. package/build/src/index/fts.js +14 -23
  11. package/build/src/index/fts.js.map +1 -1
  12. package/build/src/index/manager.js +12 -0
  13. package/build/src/index/manager.js.map +1 -1
  14. package/build/src/index/queue.js +1 -1
  15. package/build/src/index/queue.js.map +1 -1
  16. package/build/src/index/staleness.js +17 -0
  17. package/build/src/index/staleness.js.map +1 -1
  18. package/build/src/index/ttl.js +8 -12
  19. package/build/src/index/ttl.js.map +1 -1
  20. package/build/src/installer/agents.js +21 -14
  21. package/build/src/installer/agents.js.map +1 -1
  22. package/build/src/runtime/daemon.js +307 -0
  23. package/build/src/runtime/daemon.js.map +1 -0
  24. package/build/src/server.js +131 -36
  25. package/build/src/server.js.map +1 -1
  26. package/build/src/tools/expand.js +2 -7
  27. package/build/src/tools/expand.js.map +1 -1
  28. package/build/src/tools/explore.js +5 -10
  29. package/build/src/tools/explore.js.map +1 -1
  30. package/build/src/tools/impact.js +9 -19
  31. package/build/src/tools/impact.js.map +1 -1
  32. package/build/src/tools/map.js +5 -11
  33. package/build/src/tools/map.js.map +1 -1
  34. package/build/src/tools/registry.js +11 -1
  35. package/build/src/tools/registry.js.map +1 -1
  36. package/build/src/tools/related.js +8 -20
  37. package/build/src/tools/related.js.map +1 -1
  38. package/build/src/tools/search.js +6 -10
  39. package/build/src/tools/search.js.map +1 -1
  40. package/build/src/upgrade.js +38 -2
  41. package/build/src/upgrade.js.map +1 -1
  42. package/build/src/util/id.js +15 -0
  43. package/build/src/util/id.js.map +1 -0
  44. package/docs/agent-guide.md +1 -1
  45. package/package.json +1 -1
package/README.md CHANGED
@@ -19,6 +19,8 @@ Cursor, Gemini CLI, opencode, Codex CLI) or directly from the terminal.
19
19
  ranked alongside FTS5 + symbol-name matches.
20
20
  - **Fresh** — query tools auto-refresh changed files before answering, flag
21
21
  budget-limited stale results, and `cl_expand` always reads from disk.
22
+ - **Singleton runtime** — MCP entry processes for the same repo/worktree share
23
+ one local daemon, so one watcher/index coordinator serves many agent sessions.
22
24
  - **Compact** — returns ranked handles; expand only what you need.
23
25
  - **Durable** — saved contexts live in a separate DB and survive index rebuilds.
24
26
  - **Self-cleaning** — automatic TTL prunes inactive indexes.
@@ -27,7 +29,8 @@ Cursor, Gemini CLI, opencode, Codex CLI) or directly from the terminal.
27
29
 
28
30
  One command builds the tool, installs the `codelens` launcher, and wires the MCP
29
31
  server into detected agents/IDEs automatically (Claude Code, Cursor, Gemini CLI,
30
- opencode, Codex CLI). Requires Node.js ≥ 22.5.
32
+ opencode, Codex CLI). Requires Node.js ≥ 22.5. The package is published on
33
+ [npm as `@fodx/codelens`](https://www.npmjs.com/package/@fodx/codelens).
31
34
 
32
35
  **macOS / Linux:**
33
36
  ```bash
@@ -92,7 +95,10 @@ local) attaches to the active workspace via `--cwd ${workspaceFolder}`. Other
92
95
  hosts pin the concrete workspace path for local installs and rely on MCP Roots
93
96
  for global installs. Installed MCP configs default to `--auto-index missing`, so
94
97
  CodeLens starts a detached background index when a workspace/branch has no
95
- complete index yet; pass `--auto-index never` to disable.
98
+ complete index yet; pass `--auto-index never` to disable. For MCP usage,
99
+ default entry processes proxy to one local daemon per repo/worktree; that daemon
100
+ owns the file watcher and index coordinator, so multiple agent sessions do not
101
+ multiply watchers for the same checkout.
96
102
 
97
103
  **Routing instructions** are also written so the host prefers codelens tools for
98
104
  discovery over raw grep/read:
@@ -218,11 +224,13 @@ npm run eval:agent # deterministic with/without-CodeLens discovery proxy
218
224
  - **Auto-index is eager per branch** — installed MCP configs start a detached
219
225
  `--auto-index missing` build when a workspace/branch has no complete index.
220
226
  `cl_refresh` remains available for explicit rebuilds and is guarded against
221
- duplicating an active background index. The file watcher
222
- handles incremental freshness thereafter (cold index ~3.5s for 2000 files).
227
+ duplicating an active background index. A singleton repo/worktree daemon owns
228
+ the file watcher and handles incremental freshness thereafter (cold index
229
+ ~3.5s for 2000 files).
223
230
  - **Routing hooks are advisory** (soft nudges, not hard blocks) per the no-
224
231
  throttling design decision — raw reads remain allowed for editing/verification.
225
- - **npm package** — published on npm as `@fodx/codelens`; releases are
232
+ - **npm package** — published on npm as
233
+ [`@fodx/codelens`](https://www.npmjs.com/package/@fodx/codelens); releases are
226
234
  published automatically from `v*` git tags via the `publish` workflow. Use
227
235
  `npx -y @fodx/codelens` for manual MCP configuration. See
228
236
  `.github/workflows/publish.yml`.
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Centralized index-row deletion helpers (Step 24 / DRY refactor 1d).
3
+ *
4
+ * These helpers execute the DELETE statements only; the caller owns the
5
+ * surrounding transaction (per-file reindex and whole-index prune both wrap
6
+ * these in `db.transaction(...)`).
7
+ *
8
+ * `deleteFileRows` has two edge modes because the two call sites have
9
+ * intentionally different edge semantics:
10
+ * - "out": clear only THIS file's outbound edges (from_path = path). Inbound
11
+ * edges from other files stay valid while the file still exists.
12
+ * - "both": clear edges in either direction (from_path = path OR to_path =
13
+ * path), used when the file is fully removed.
14
+ */
15
+ export function deleteFileRows(db, indexId, path, edgeMode) {
16
+ db.prepare("DELETE FROM chunks_fts WHERE index_id = ? AND path = ?").run(indexId, path);
17
+ db.prepare("DELETE FROM chunks WHERE index_id = ? AND path = ?").run(indexId, path);
18
+ db.prepare("DELETE FROM symbols WHERE index_id = ? AND path = ?").run(indexId, path);
19
+ if (edgeMode === "out") {
20
+ db.prepare("DELETE FROM edges WHERE index_id = ? AND from_path = ?").run(indexId, path);
21
+ }
22
+ else {
23
+ db.prepare("DELETE FROM edges WHERE index_id = ? AND (from_path = ? OR to_path = ?)").run(indexId, path, path);
24
+ }
25
+ db.prepare("DELETE FROM files WHERE index_id = ? AND path = ?").run(indexId, path);
26
+ }
27
+ /**
28
+ * Delete every row belonging to an index, including the index row itself and
29
+ * its write lease. The caller wraps this in a transaction (e.g. pruneIndexes).
30
+ */
31
+ export function deleteIndexRows(db, indexId) {
32
+ db.prepare("DELETE FROM chunks_fts WHERE index_id = ?").run(indexId);
33
+ db.prepare("DELETE FROM chunks WHERE index_id = ?").run(indexId);
34
+ db.prepare("DELETE FROM symbols WHERE index_id = ?").run(indexId);
35
+ db.prepare("DELETE FROM edges WHERE index_id = ?").run(indexId);
36
+ db.prepare("DELETE FROM files WHERE index_id = ?").run(indexId);
37
+ db.prepare("DELETE FROM index_locks WHERE index_id = ?").run(indexId);
38
+ db.prepare("DELETE FROM indexes WHERE id = ?").run(indexId);
39
+ }
40
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/db/queries.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,MAAM,UAAU,cAAc,CAC5B,EAAqB,EACrB,OAAe,EACf,IAAY,EACZ,QAAwB;IAExB,EAAE,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxF,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpF,EAAE,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACrF,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,EAAE,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,OAAO,CAAC,yEAAyE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACjH,CAAC;IACD,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACrF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,EAAqB,EAAE,OAAe;IACpE,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrE,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjE,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAClE,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChE,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChE,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtE,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,6 +1,6 @@
1
- import { randomUUID } from "node:crypto";
2
1
  import { parseFile } from "./grammars.js";
3
2
  import { resolveImportFs, resolveImport } from "./resolve.js";
3
+ import { id } from "../util/id.js";
4
4
  // Node types that carry an import spec, per grammar.
5
5
  const IMPORT_SPEC_FIELDS = ["source", "module_name", "name", "path"];
6
6
  function importSpec(node) {
@@ -121,7 +121,7 @@ export function insertEdges(db, indexId, edges) {
121
121
  for (const e of edges) {
122
122
  if (e.type === "imports" && !e.toPath)
123
123
  continue; // unresolved → no edge
124
- stmt.run("edge_" + randomUUID(), indexId, e.fromPath, e.toPath, e.type, e.confidence);
124
+ stmt.run(id("edge_"), indexId, e.fromPath, e.toPath, e.type, e.confidence);
125
125
  }
126
126
  }
127
127
  //# sourceMappingURL=edges.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edges.js","sourceRoot":"","sources":["../../../src/graph/edges.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAmB9D,qDAAqD;AACrD,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAErE,SAAS,UAAU,CAAC,IAAuB;IACzC,0BAA0B;IAC1B,KAAK,MAAM,CAAC,IAAI,kBAAkB,EAAE,CAAC;QACnC,MAAM,KAAK,GAAI,IAAmF,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1H,IAAI,KAAK;YAAE,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IACD,4BAA4B;IAC5B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAuB;IACvC,MAAM,IAAI,CAAC;IACX,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ;QAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,mFAAmF;AACnF,SAAS,UAAU,CAAC,IAAuB,EAAE,KAAa;IACxD,OAAQ,IAAmF,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACjI,CAAC;AAED,iFAAiF;AACjF,SAAS,cAAc,CAAC,IAAuB;IAC7C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qEAAqE;AACrE,SAAS,kBAAkB,CAAC,IAAuB;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,MAAc,EAAE,QAAgB,EAAE,UAAuB,EAAE,UAA+B;IACjJ,MAAM,IAAI,GAAG,UAAU,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,CAAC;IAE5D,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,MAAM,WAAW,GAAG,CAAC,IAAmB,EAAiB,EAAE,CACzD,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjG,6EAA6E;IAC7E,kEAAkE;IAClE,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;YACpH,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAChI,IAAI,IAAI,IAAI,MAAM;gBAAE,KAAK,MAAM,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC;oBAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9F,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC3C,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACxC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACzD,sBAAsB;gBACtB,MAAM,MAAM,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAClI,CAAC;QACH,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,2EAA2E;IAC3E,0BAA0B;IAC1B,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBACpC,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBACxC,IAAI,CAAC,EAAE;oBAAE,SAAS;gBAClB,IAAI,MAAM,GAAkB,IAAI,CAAC;gBACjC,IAAI,EAAE,CAAC,IAAI,KAAK,YAAY;oBAAE,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC;qBAC1C,IAAI,EAAE,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;oBACzC,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;oBACrC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;wBAAE,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW;gBACtE,CAAC;gBACD,IAAI,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC7D,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACtB,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;gBAClI,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACvC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1F,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACvB,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC3I,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,WAAW,CAAC,EAAqB,EAAE,OAAe,EAAE,KAAsB;IACxF,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB,8HAA8H,CAC/H,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM;YAAE,SAAS,CAAC,uBAAuB;QACxE,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IACxF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"edges.js","sourceRoot":"","sources":["../../../src/graph/edges.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,14 @@ export function isSupported(lang) {
39
39
  return false;
40
40
  return loadGrammar(lang) !== null;
41
41
  }
42
+ /** Whether a language's chunks should be indexed as `content_type = "code"`.
43
+ * Single source of truth: any language with a registered tree-sitter grammar
44
+ * is "code". Adding a grammar therefore automatically classifies its chunks
45
+ * as code (previously a separate hardcoded 8-language list had to be kept in
46
+ * sync, which silently mislabeled ruby/php as prose). */
47
+ export function isCodeLanguage(lang) {
48
+ return isSupported(lang);
49
+ }
42
50
  /** Create a configured Parser for a language, or null if unavailable. */
43
51
  export function makeParser(lang) {
44
52
  const grammar = loadGrammar(lang);
@@ -1 +1 @@
1
- {"version":3,"file":"grammars.js","sourceRoot":"","sources":["../../../src/graph/grammars.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grammars.js","sourceRoot":"","sources":["../../../src/graph/grammars.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ const SYMBOL_TYPES = {
24
24
  };
25
25
  // Node types that indicate an export (TS/JS).
26
26
  const EXPORT_WRAPPERS = new Set(["export_statement", "export_declaration"]);
27
- export function extractSymbols(path, lang, source, parsedTree) {
27
+ export function extractSymbols(_path, lang, source, parsedTree) {
28
28
  const tree = parsedTree ?? parseFile(lang, source);
29
29
  if (!tree)
30
30
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../../src/graph/symbols.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../../src/graph/symbols.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,14 @@
1
- import { randomUUID } from "node:crypto";
2
1
  import { readFileSync } from "node:fs";
3
2
  import { join } from "node:path";
4
3
  import { resolveReal } from "../util/paths.js";
5
4
  import { contentHash } from "../util/hash.js";
6
5
  import { extractSymbols } from "../graph/symbols.js";
7
6
  import { extractEdges, insertEdges } from "../graph/edges.js";
8
- import { parseFile } from "../graph/grammars.js";
7
+ import { parseFile, isCodeLanguage } from "../graph/grammars.js";
9
8
  import { isTestFile, resolveTestTargets } from "../graph/tests.js";
10
9
  import { withIdentifierSubtokens } from "../search/identifiers.js";
10
+ import { deleteFileRows } from "../db/queries.js";
11
+ import { id } from "../util/id.js";
11
12
  /**
12
13
  * FTS5 chunk indexer (Step 7).
13
14
  *
@@ -216,7 +217,7 @@ export function indexFile(db, indexId, repoRoot, file, knownFiles = new Set()) {
216
217
  const abs = join(root, file.path);
217
218
  const text = readFileText(abs);
218
219
  const hash = contentHash(text);
219
- const fileId = "file_" + randomUUID();
220
+ const fileId = id("file_");
220
221
  const parserEligible = Buffer.byteLength(text, "utf8") <= STRUCTURAL_CHUNK_MAX_BYTES;
221
222
  const lang = file.language ?? "";
222
223
  const tree = parserEligible ? parseFile(lang, text) : null;
@@ -224,7 +225,7 @@ export function indexFile(db, indexId, repoRoot, file, knownFiles = new Set()) {
224
225
  const edges = tree ? extractEdges(file.path, lang, text, root, knownFiles, tree) : [];
225
226
  const lineCount = text.split("\n").length;
226
227
  const symbolRows = symbols.map((sym) => ({
227
- id: "sym_" + randomUUID(),
228
+ id: id("sym_"),
228
229
  sym,
229
230
  rangeKey: chunkSymbolRangeKey(sym, lineCount),
230
231
  }));
@@ -239,14 +240,10 @@ export function indexFile(db, indexId, repoRoot, file, knownFiles = new Set()) {
239
240
  // Remove ALL prior rows for this path+index so reindexing a changed file
240
241
  // does not leave stale symbols/edges. Without this, incremental reindex
241
242
  // would accumulate duplicate symbols + stale graph edges.
242
- db.prepare("DELETE FROM chunks_fts WHERE index_id = ? AND path = ?").run(indexId, file.path);
243
- db.prepare("DELETE FROM chunks WHERE index_id = ? AND path = ?").run(indexId, file.path);
244
- db.prepare("DELETE FROM symbols WHERE index_id = ? AND path = ?").run(indexId, file.path);
245
243
  // Only clear THIS file's outbound edges (from_path = file.path). Inbound edges
246
244
  // from other files (e.g. Y imports X) stay valid since X still exists; they
247
- // are only removed when X is deleted (deleteFileFromIndex uses from OR to).
248
- db.prepare("DELETE FROM edges WHERE index_id = ? AND from_path = ?").run(indexId, file.path);
249
- db.prepare("DELETE FROM files WHERE index_id = ? AND path = ?").run(indexId, file.path);
245
+ // are only removed when X is deleted (deleteFileFromIndex uses edgeMode "both").
246
+ deleteFileRows(db, indexId, file.path, "out");
250
247
  db.prepare(`INSERT INTO files (id, index_id, path, language, size, mtime_ms, content_hash, git_blob_sha, deleted, last_indexed_at)
251
248
  VALUES (?, ?, ?, ?, ?, ?, ?, NULL, 0, ?)`).run(fileId, indexId, file.path, file.language, file.size, file.mtimeMs, hash, Date.now());
252
249
  const insertChunk = db.prepare(`INSERT INTO chunks (id, index_id, file_id, symbol_id, path, start_line, end_line, content, content_hash, content_type, chunker, chunker_version)
@@ -260,11 +257,9 @@ export function indexFile(db, indexId, repoRoot, file, knownFiles = new Set()) {
260
257
  insertSymbol.run(row.id, indexId, fileId, file.path, sym.name, sym.kind, sym.signature ?? null, sym.startLine, sym.endLine, sym.exported ? 1 : 0);
261
258
  }
262
259
  for (const c of chunks) {
263
- const chunkId = "chk_" + randomUUID();
260
+ const chunkId = id("chk_");
264
261
  const cHash = contentHash(c.content);
265
- const ctype = file.language && ["typescript", "javascript", "python", "go", "rust", "java", "c", "cpp"].includes(file.language)
266
- ? "code"
267
- : "prose";
262
+ const ctype = isCodeLanguage(file.language) ? "code" : "prose";
268
263
  const symbolId = c.symbolRangeKey ? symbolIdByRange.get(c.symbolRangeKey) ?? null : null;
269
264
  const chunker = symbolId ? CHUNKER_NAMES.structural : CHUNKER_NAMES.line;
270
265
  insertChunk.run(chunkId, indexId, fileId, symbolId, file.path, c.startLine, c.endLine, c.content, cHash, ctype, chunker, CHUNKER_VERSION);
@@ -276,11 +271,11 @@ export function indexFile(db, indexId, repoRoot, file, knownFiles = new Set()) {
276
271
  const insertEdge = db.prepare(`INSERT INTO edges (id, index_id, from_id, to_id, from_path, to_path, type, confidence) VALUES (?, ?, NULL, NULL, ?, ?, ?, ?)`);
277
272
  for (const sym of symbols) {
278
273
  // file defines symbol (file→symbol via path; symbol_id kept NULL for path-based edges)
279
- insertEdge.run("edge_" + randomUUID(), indexId, file.path, file.path, "defines", 1.0);
274
+ insertEdge.run(id("edge_"), indexId, file.path, file.path, "defines", 1.0);
280
275
  // symbol belongs_to file
281
- insertEdge.run("edge_" + randomUUID(), indexId, file.path, file.path, "belongs_to", 1.0);
276
+ insertEdge.run(id("edge_"), indexId, file.path, file.path, "belongs_to", 1.0);
282
277
  if (sym.exported) {
283
- insertEdge.run("edge_" + randomUUID(), indexId, file.path, file.path, "exports", 1.0);
278
+ insertEdge.run(id("edge_"), indexId, file.path, file.path, "exports", 1.0);
284
279
  }
285
280
  }
286
281
  // Test edges (Step 15): if this file is a test, emit `tests` edges to
@@ -288,7 +283,7 @@ export function indexFile(db, indexId, repoRoot, file, knownFiles = new Set()) {
288
283
  if (isTestFile(file.path)) {
289
284
  const targets = resolveTestTargets(file.path, knownFiles);
290
285
  for (const t of targets) {
291
- insertEdge.run("edge_" + randomUUID(), indexId, file.path, t, "tests", 0.8);
286
+ insertEdge.run(id("edge_"), indexId, file.path, t, "tests", 0.8);
292
287
  }
293
288
  }
294
289
  });
@@ -298,11 +293,7 @@ export function indexFile(db, indexId, repoRoot, file, knownFiles = new Set()) {
298
293
  /** Mark a file as deleted (remove its rows) for an index. Transactional. */
299
294
  export function deleteFileFromIndex(db, indexId, path) {
300
295
  const tx = db.transaction(() => {
301
- db.prepare("DELETE FROM chunks_fts WHERE index_id = ? AND path = ?").run(indexId, path);
302
- db.prepare("DELETE FROM chunks WHERE index_id = ? AND path = ?").run(indexId, path);
303
- db.prepare("DELETE FROM symbols WHERE index_id = ? AND path = ?").run(indexId, path);
304
- db.prepare("DELETE FROM edges WHERE index_id = ? AND (from_path = ? OR to_path = ?)").run(indexId, path, path);
305
- db.prepare("DELETE FROM files WHERE index_id = ? AND path = ?").run(indexId, path);
296
+ deleteFileRows(db, indexId, path, "both");
306
297
  });
307
298
  tx();
308
299
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fts.js","sourceRoot":"","sources":["../../../src/index/fts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fts.js","sourceRoot":"","sources":["../../../src/index/fts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAwB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAEnC;;;;;;GAMG;AAEH,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,gCAAgC;AAC1D,MAAM,2BAA2B,GAAG,GAAG,CAAC;AACxC,MAAM,0BAA0B,GAAG,GAAG,GAAG,IAAI,CAAC;AAE9C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;CAChB,CAAC;AAuCX,2EAA2E;AAC3E,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,OAAyB,EAAE;IACjE,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,OAA0B,EAC1B,OAA+B,EAAE;IAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,0BAA0B,CAAC;IAC7D,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE5D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAEvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,WAAW,GAAG,uBAAuB,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACxE,IAAI,WAAW,GAAG,MAAM;YAAE,WAAW,GAAG,MAAM,CAAC;QAE/C,IAAI,MAAM,GAAG,WAAW,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzF,GAAG,KAAK;YACR,UAAU,EAAE,GAAG,CAAC,IAAI;YACpB,UAAU,EAAE,GAAG,CAAC,IAAI;YACpB,cAAc,EAAE,GAAG,CAAC,QAAQ;SAC7B,CAAC,CAAC,CAAC;QACJ,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED,SAAS,cAAc,CAAC,KAAe,EAAE,SAAiB,EAAE,OAAe,EAAE,IAAsB;IACjG,IAAI,SAAS,GAAG,OAAO;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,UAAU,CAAC,KAAe,EAAE,SAAiB,EAAE,IAAsB;IAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,IAAI,2BAA2B,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;IACxH,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG,GAAa,EAAE,CAAC;IACvB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,GAAG,cAAc,EAAE,OAAO,EAAE,SAAS,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxG,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YACtD,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC1B,cAAc,IAAI,QAAQ,CAAC;YAC3B,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,UAAU,GAAG;YACjB,SAAS,EAAE,SAAS,GAAG,cAAc;YACrC,OAAO,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;YACrC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;SACxB,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;YAC5F,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAe,EAAE,YAAoB;IAC9D,IAAI,YAAY,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,KAAK,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,IAAI,YAAY;YAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,SAAS,CAAC,KAAe;IAChC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA0B,EAAE,SAAiB;IACrE,MAAM,UAAU,GAAG,OAAO;SACvB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,GAAG,SAAS;YAAE,OAAO,IAAI,CAAC;QACrF,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,OAAO,GAAG,SAAS;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS;YACT,OAAO;YACP,QAAQ,EAAE,mBAAmB,CAAC,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;SACnC,CAAC;IAC/B,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,GAAG,EAA2B,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC;SACtD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtG,MAAM,IAAI,GAAuB,EAAE,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC;YAAE,SAAS;QACrG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAAE,SAAS;QAC9D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAqE,EAAE,SAAkB;IAC3H,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;IAC3E,OAAO,GAAG,GAAG,CAAC,SAAS,IAAI,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,aAAa,CAAC,CAAyC,EAAE,CAAyC;IACzG,OAAO,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC;AAC9D,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAe,EAAE,eAAuB,EAAE,UAAkB;IAC3F,IAAI,MAAM,GAAG,eAAe,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,GAAG,eAAe,CAAC;IAC5B,OAAO,MAAM,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,IAAI,KAAK,EAAE;YAAE,MAAM;QACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,KAAK,GAAG,MAAM,CAAC;YACf,MAAM,EAAE,CAAC;YACT,OAAO,MAAM,IAAI,UAAU,EAAE,CAAC;gBAC5B,KAAK,GAAG,MAAM,CAAC;gBACf,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;gBACxC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,MAAM,EAAE,CAAC;oBACT,MAAM;gBACR,CAAC;gBACD,MAAM,EAAE,CAAC;YACX,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,2BAA2B,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,KAAK,GAAG,MAAM,CAAC;YACf,MAAM,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QACD,MAAM;IACR,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,2BAA2B,CAAC,WAAmB;IACtD,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;QACjC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC;QAC3B,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC;QAC3B,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;QAC5B,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;QAC9B,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC;QAC3B,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC;QAChC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,eAAe,CAAC,MAAmB;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,EAAqB,EAAE,OAAe,EAAE,QAAgB,EAAE,IAAiB,EAAE,aAA0B,IAAI,GAAG,EAAE;IACxI,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;IAE3B,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,0BAA0B,CAAC;IACrF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACvC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC;QACd,GAAG;QACH,QAAQ,EAAE,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC;KAC9C,CAAC,CAAC,CAAC;IACJ,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,UAAU,GAAG,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChG,MAAM,MAAM,GAAsB,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAErG,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QAC7B,yEAAyE;QACzE,wEAAwE;QACxE,0DAA0D;QAC1D,+EAA+E;QAC/E,4EAA4E;QAC5E,iFAAiF;QACjF,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAE9C,EAAE,CAAC,OAAO,CACR;gDAC0C,CAC3C,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAE5F,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B;mDAC6C,CAC9C,CAAC;QACF,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAC1B,gFAAgF,CACjF,CAAC;QACF,8EAA8E;QAC9E,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAC7B;mDAC6C,CAC9C,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;YACpB,YAAY,CAAC,GAAG,CACd,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAClC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,EACrE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACrB,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/D,MAAM,QAAQ,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACzF,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;YACzE,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;YAC1I,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACjF,CAAC;QAED,mEAAmE;QACnE,iDAAiD;QACjD,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAChC,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC3B,8HAA8H,CAC/H,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,uFAAuF;YACvF,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YAC3E,yBAAyB;YACzB,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;YAC9E,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjB,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,8CAA8C;QAC9C,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC1D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,EAAE,EAAE,CAAC;IACL,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAClF,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,mBAAmB,CAAC,EAAqB,EAAE,OAAe,EAAE,IAAY;IACtF,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QAC7B,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,EAAE,EAAE,CAAC;AACP,CAAC"}
@@ -45,4 +45,16 @@ export function getActiveIndexId() {
45
45
  export function getIndex(db, indexId) {
46
46
  return db.prepare("SELECT * FROM indexes WHERE id = ?").get(indexId);
47
47
  }
48
+ /**
49
+ * Require an active index for the current process, validated against the db.
50
+ * Returns the active index id, or throws the canonical "no active index" error
51
+ * used by every query tool. Centralizes the guard so all tools reject stale or
52
+ * unknown index ids identically.
53
+ */
54
+ export function requireActiveIndex(db) {
55
+ const id = getActiveIndexId();
56
+ if (!id || !getIndex(db, id))
57
+ throw new Error("no active index — call cl_refresh first");
58
+ return id;
59
+ }
48
60
  //# sourceMappingURL=manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/index/manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAoB/C,IAAI,aAAa,GAAkB,IAAI,CAAC;AAExC,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,EAAqB,EAAE,KAAe;IACrE,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CAAC,oCAAoC,CAAC;SAC7C,GAAG,CAAC,EAAE,CAAyB,CAAC;IACnC,IAAI,QAAQ,EAAE,CAAC;QACb,EAAE,CAAC,OAAO,CAAC,4FAA4F,CAAC;aACrG,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChB,aAAa,GAAG,EAAE,CAAC;QACnB,OAAO,EAAE,GAAG,QAAQ,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACpF,CAAC;IACD,EAAE,CAAC,OAAO,CACR;qDACiD,CAClD,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACrF,aAAa,GAAG,EAAE,CAAC;IACnB,OAAO;QACL,EAAE;QACF,SAAS,EAAE,KAAK,CAAC,QAAQ;QACzB,aAAa,EAAE,KAAK,CAAC,YAAY;QACjC,WAAW,EAAE,KAAK,CAAC,MAAM;QACzB,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,UAAU,EAAE,GAAG;QACf,gBAAgB,EAAE,GAAG;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,QAAQ;KACjB,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,UAAU,CAAC,EAAqB,EAAE,OAAe;IAC/D,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9F,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,aAAa,GAAG,OAAO,CAAC;AAC1B,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,QAAQ,CAAC,EAAqB,EAAE,OAAe;IAC7D,OAAO,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAyB,CAAC;AAC/F,CAAC"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/index/manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA+B/C,IAAI,aAAa,GAAkB,IAAI,CAAC;AAExC,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,EAAqB,EAAE,KAAe;IACrE,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CAAC,oCAAoC,CAAC;SAC7C,GAAG,CAAC,EAAE,CAAyB,CAAC;IACnC,IAAI,QAAQ,EAAE,CAAC;QACb,EAAE,CAAC,OAAO,CAAC,4FAA4F,CAAC;aACrG,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChB,aAAa,GAAG,EAAE,CAAC;QACnB,OAAO,EAAE,GAAG,QAAQ,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACpF,CAAC;IACD,EAAE,CAAC,OAAO,CACR;qDACiD,CAClD,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACrF,aAAa,GAAG,EAAE,CAAC;IACnB,OAAO;QACL,EAAE;QACF,SAAS,EAAE,KAAK,CAAC,QAAQ;QACzB,aAAa,EAAE,KAAK,CAAC,YAAY;QACjC,WAAW,EAAE,KAAK,CAAC,MAAM;QACzB,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,UAAU,EAAE,GAAG;QACf,gBAAgB,EAAE,GAAG;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,QAAQ;KACjB,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,UAAU,CAAC,EAAqB,EAAE,OAAe;IAC/D,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9F,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,aAAa,GAAG,OAAO,CAAC;AAC1B,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,QAAQ,CAAC,EAAqB,EAAE,OAAe;IAC7D,OAAO,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAyB,CAAC;AAC/F,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAqB;IACtD,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACzF,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -49,7 +49,7 @@ export function acquireWriteLease(db, indexId, owner = process.pid.toString(), l
49
49
  export function releaseWriteLease(db, indexId, owner = process.pid.toString()) {
50
50
  db.prepare("DELETE FROM index_locks WHERE index_id = ? AND owner = ?").run(indexId, owner);
51
51
  }
52
- /** Generate a unique owner id (for tests that want isolation). */
52
+ /** Generate a unique owner id (for tests that want isolation). Lease-scoped, not an indexed-row id, so it intentionally stays inline rather than using util/id.ts. */
53
53
  export function newOwnerId() {
54
54
  return "own_" + randomUUID();
55
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/index/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,MAAM,KAAK,GAAe,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAErE,kEAAkE;AAClE,MAAM,UAAU,OAAO,CAAI,IAAa;IACtC,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,EAAE,CAAC;QACtB,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAe,CAAC;IAC5D,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAqC,CAAC,CAAC,CAAC;IACpE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,aAAa;IAC3B,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAqB,EAAE,OAAe,EAAE,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,GAAG,KAAK;IACvH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAC,GAAG,CAAC,OAAO,CAClD,CAAC;IACtD,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,GAAG,GAAG,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QACtE,OAAO,KAAK,CAAC,CAAC,2BAA2B;IAC3C,CAAC;IACD,EAAE,CAAC,OAAO,CACR,yEAAyE;QACvE,8FAA8F,CACjG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,iBAAiB,CAAC,EAAqB,EAAE,OAAe,EAAE,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;IACtG,EAAE,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC7F,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,UAAU;IACxB,OAAO,MAAM,GAAG,UAAU,EAAE,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/index/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,MAAM,KAAK,GAAe,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAErE,kEAAkE;AAClE,MAAM,UAAU,OAAO,CAAI,IAAa;IACtC,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,EAAE,CAAC;QACtB,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAe,CAAC;IAC5D,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAqC,CAAC,CAAC,CAAC;IACpE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,aAAa;IAC3B,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAqB,EAAE,OAAe,EAAE,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,GAAG,KAAK;IACvH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAC,GAAG,CAAC,OAAO,CAClD,CAAC;IACtD,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,GAAG,GAAG,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QACtE,OAAO,KAAK,CAAC,CAAC,2BAA2B;IAC3C,CAAC;IACD,EAAE,CAAC,OAAO,CACR,yEAAyE;QACvE,8FAA8F,CACjG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,iBAAiB,CAAC,EAAqB,EAAE,OAAe,EAAE,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;IACtG,EAAE,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC7F,CAAC;AAED,sKAAsK;AACtK,MAAM,UAAU,UAAU;IACxB,OAAO,MAAM,GAAG,UAAU,EAAE,CAAC;AAC/B,CAAC"}
@@ -13,4 +13,21 @@ export function getPendingPaths(indexId) {
13
13
  export function isPendingPath(indexId, path) {
14
14
  return pendingByIndex.get(indexId)?.has(path) ?? false;
15
15
  }
16
+ /**
17
+ * Freshness + pending-file count for a tool result, derived from pending paths.
18
+ * `pendingFiles` is omitted when 0, matching the prior conditional-assignment shape.
19
+ */
20
+ export function freshnessFromPending(indexId) {
21
+ const pending = getPendingPaths(indexId).size;
22
+ return pending > 0 ? { freshness: "partial", pendingFiles: pending } : { freshness: "fresh" };
23
+ }
24
+ /** Whether `path` is stale (pending refresh) for the given index. Semantic alias of isPendingPath. */
25
+ export function isStalePath(indexId, path) {
26
+ return isPendingPath(indexId, path);
27
+ }
28
+ /** Mark `item.stale = true` when `path` is pending refresh. Mutates only when stale. */
29
+ export function markStale(item, indexId, path) {
30
+ if (isPendingPath(indexId, path))
31
+ item.stale = true;
32
+ }
16
33
  //# sourceMappingURL=staleness.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"staleness.js","sourceRoot":"","sources":["../../../src/index/staleness.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAuB,CAAC;AAEtD,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,KAAe;IAC9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,IAAY;IACzD,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"staleness.js","sourceRoot":"","sources":["../../../src/index/staleness.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAuB,CAAC;AAEtD,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,KAAe;IAC9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,IAAY;IACzD,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IAC9C,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChG,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,IAAY;IACvD,OAAO,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,SAAS,CAAgC,IAAO,EAAE,OAAe,EAAE,IAAY;IAC7F,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;QAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtD,CAAC"}
@@ -1,4 +1,12 @@
1
1
  import { getActiveIndexId } from "./manager.js";
2
+ import { deleteIndexRows as deleteIndexRowsStmt } from "../db/queries.js";
3
+ // Re-export the whole-index deletion helper for backward-compatible callers
4
+ // (e.g. tools/prune.ts). The statements live in db/queries.ts; this thin wrapper
5
+ // preserves the transactional contract existing callers rely on.
6
+ export function deleteIndexRows(db, indexId) {
7
+ const tx = db.transaction(() => deleteIndexRowsStmt(db, indexId));
8
+ tx();
9
+ }
2
10
  /**
3
11
  * TTL pruner (Step 22).
4
12
  *
@@ -38,18 +46,6 @@ export function computeExpiry(row, _now = Date.now()) {
38
46
  }
39
47
  return row.last_accessed_at + RETENTION.inactiveBranchDays * 86400_000;
40
48
  }
41
- export function deleteIndexRows(db, indexId) {
42
- const tx = db.transaction(() => {
43
- db.prepare("DELETE FROM chunks_fts WHERE index_id = ?").run(indexId);
44
- db.prepare("DELETE FROM chunks WHERE index_id = ?").run(indexId);
45
- db.prepare("DELETE FROM symbols WHERE index_id = ?").run(indexId);
46
- db.prepare("DELETE FROM edges WHERE index_id = ?").run(indexId);
47
- db.prepare("DELETE FROM files WHERE index_id = ?").run(indexId);
48
- db.prepare("DELETE FROM index_locks WHERE index_id = ?").run(indexId);
49
- db.prepare("DELETE FROM indexes WHERE id = ?").run(indexId);
50
- });
51
- tx();
52
- }
53
49
  /** Prune expired inactive indexes. Respects never-delete guards. */
54
50
  export function pruneIndexes(db, now = Date.now()) {
55
51
  const active = getActiveIndexId();
@@ -1 +1 @@
1
- {"version":3,"file":"ttl.js","sourceRoot":"","sources":["../../../src/index/ttl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ttl.js","sourceRoot":"","sources":["../../../src/index/ttl.ts"],"names":[],"mappings":"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"}
@@ -33,9 +33,9 @@ Prefer the codelens MCP tools (\`cl_search\`, \`cl_explore\`, \`cl_related\`,
33
33
  discovery — they keep context lean and are branch-scoped.
34
34
 
35
35
  Use codelens when:
36
- - you don't know the exact name/string (semantic or conceptual search)
36
+ - you don't know the exact name/string (semantic or conceptual search via \`cl_search\`)
37
37
  - you need broad orientation in one call (\`cl_explore\`)
38
- - you need relationships (importers, tests, callers), blast radius before edits (\`cl_impact\`), or a file outline
38
+ - you need relationships (importers, tests, callers), blast radius before edits (\`cl_impact\`), or a per-file outline (\`cl_map\`)
39
39
  - the repo is large or unfamiliar, or you'd otherwise grep + read many files
40
40
 
41
41
  Raw \`grep\`/\`find\`/\`read\` is fine when:
@@ -175,10 +175,25 @@ function removeCommandFiles(dir, names) {
175
175
  });
176
176
  }
177
177
  // ── Host adapters ─────────────────────────────────────────────
178
- class ClaudeCodeTarget {
178
+ /**
179
+ * Base for JSON-MCP hosts (claude/cursor/gemini) that store our server entry
180
+ * under a stable `mcpServers.<entryKey>` key. Provides the shared `entryKey`,
181
+ * `apply` (idempotent upsert), and `remove` (delete key) so pure-JSON hosts
182
+ * only override config/instructions/detect/buildEntry. Hosts with non-standard
183
+ * config shapes (opencode `mcp` object, codex TOML) implement HostAdapter directly.
184
+ */
185
+ class BaseJsonMcpHost {
186
+ entryKey = "codelens";
187
+ apply(serverCommand, loc, autoIndex) {
188
+ return jsonApply(this.configPath(loc), "mcpServers", this.entryKey, this.buildEntry(serverCommand, loc, autoIndex));
189
+ }
190
+ remove(loc) {
191
+ return jsonRemove(this.configPath(loc), "mcpServers", this.entryKey);
192
+ }
193
+ }
194
+ class ClaudeCodeTarget extends BaseJsonMcpHost {
179
195
  id = "claude";
180
196
  name = "Claude Code";
181
- entryKey = "codelens";
182
197
  configPath(loc) {
183
198
  return loc === "global" ? join(homedir(), ".claude.json") : join(process.cwd(), ".mcp.json");
184
199
  }
@@ -191,8 +206,6 @@ class ClaudeCodeTarget {
191
206
  buildEntry(cmd, loc, autoIndex) {
192
207
  return { command: cmd, args: workspaceCwdArgs(this.id, loc, autoIndex) };
193
208
  }
194
- apply(cmd, loc, autoIndex) { return jsonApply(this.configPath(loc), "mcpServers", this.entryKey, this.buildEntry(cmd, loc, autoIndex)); }
195
- remove(loc) { return jsonRemove(this.configPath(loc), "mcpServers", this.entryKey); }
196
209
  commandsDir(loc) {
197
210
  return loc === "global" ? join(homedir(), ".claude", "commands") : join(process.cwd(), ".claude", "commands");
198
211
  }
@@ -208,10 +221,9 @@ class ClaudeCodeTarget {
208
221
  ];
209
222
  }
210
223
  }
211
- class CursorTarget {
224
+ class CursorTarget extends BaseJsonMcpHost {
212
225
  id = "cursor";
213
226
  name = "Cursor";
214
- entryKey = "codelens";
215
227
  dedicatedInstructions = true;
216
228
  configPath(loc) {
217
229
  return loc === "global" ? join(homedir(), ".cursor", "mcp.json") : join(process.cwd(), ".cursor", "mcp.json");
@@ -230,13 +242,10 @@ alwaysApply: true
230
242
  }
231
243
  detect() { return existsSync(join(homedir(), ".cursor")); }
232
244
  buildEntry(cmd, loc, autoIndex) { return { command: cmd, args: workspaceCwdArgs(this.id, loc, autoIndex) }; }
233
- apply(cmd, loc, autoIndex) { return jsonApply(this.configPath(loc), "mcpServers", this.entryKey, this.buildEntry(cmd, loc, autoIndex)); }
234
- remove(loc) { return jsonRemove(this.configPath(loc), "mcpServers", this.entryKey); }
235
245
  }
236
- class GeminiTarget {
246
+ class GeminiTarget extends BaseJsonMcpHost {
237
247
  id = "gemini";
238
248
  name = "Gemini CLI";
239
- entryKey = "codelens";
240
249
  configPath(loc) {
241
250
  return loc === "global" ? join(homedir(), ".gemini", "settings.json") : join(process.cwd(), ".gemini", "settings.json");
242
251
  }
@@ -245,8 +254,6 @@ class GeminiTarget {
245
254
  }
246
255
  detect() { return existsSync(join(homedir(), ".gemini")); }
247
256
  buildEntry(cmd, loc, autoIndex) { return { command: cmd, args: workspaceCwdArgs(this.id, loc, autoIndex) }; }
248
- apply(cmd, loc, autoIndex) { return jsonApply(this.configPath(loc), "mcpServers", this.entryKey, this.buildEntry(cmd, loc, autoIndex)); }
249
- remove(loc) { return jsonRemove(this.configPath(loc), "mcpServers", this.entryKey); }
250
257
  }
251
258
  class OpencodeTarget {
252
259
  id = "opencode";