@fodx/codelens 2.0.1 → 2.1.1

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.
@@ -12,23 +12,28 @@ import { FileWatcher } from "./index/watcher.js";
12
12
  import { cli } from "./cli.js";
13
13
  import { registerWatcher } from "./index/reindex.js";
14
14
  import { VERSION } from "./version.js";
15
+ import { detectScope } from "./git/scope.js";
16
+ import { parseCwdArg, resolveCwd, isUsableCwd } from "./runtime/root.js";
15
17
  import { createHash } from "node:crypto";
16
- import { mkdirSync } from "node:fs";
18
+ import { mkdirSync, rmSync } from "node:fs";
17
19
  import { homedir } from "node:os";
18
20
  import { join } from "node:path";
21
+ import { fileURLToPath } from "node:url";
19
22
  /**
20
23
  * CodeLens MCP server (Step 24 wiring).
21
24
  *
22
25
  * Resolves the repo root from cwd, opens the core index DB and the contexts DB
23
- * (separate file), registers all 10 tools from the registry, and starts the
24
- * stdio transport. Auto-prune runs on startup + periodic idle timer.
26
+ * (separate file), registers all tools from the registry, and starts the stdio
27
+ * transport. Auto-prune runs on startup + periodic idle timer.
25
28
  */
26
- function createServer(ctx) {
29
+ function createServer(ctx, beforeTool) {
27
30
  const server = new McpServer({ name: "codelens", version: VERSION });
28
31
  for (const tool of TOOLS) {
29
32
  server.tool(tool.name, tool.description, tool.schema, async (args) => {
30
33
  const usage = new UsageTracker(openGlobalUsageDb());
31
34
  try {
35
+ if (beforeTool)
36
+ await beforeTool();
32
37
  const result = await tool.handler(ctx, args);
33
38
  const text = JSON.stringify(result);
34
39
  let savedOverride;
@@ -60,8 +65,8 @@ function createServer(ctx) {
60
65
  }
61
66
  return server;
62
67
  }
63
- function repoRootFromCwd() {
64
- return resolveReal(process.cwd());
68
+ function repoRootFromCwd(cwd) {
69
+ return resolveCwd(cwd);
65
70
  }
66
71
  const CLI_COMMANDS = new Set(["current", "index", "refresh", "search", "related", "stats", "usage", "doctor", "install", "uninstall", "upgrade", "version", "--print-config", "-v", "--version", "--help", "-h"]);
67
72
  export async function main() {
@@ -69,10 +74,11 @@ export async function main() {
69
74
  // `install` or a flag-style one like `--print-config`/`--version`), run the
70
75
  // CLI with the FULL arg list so --target/--command/--yes are preserved.
71
76
  // Otherwise start the MCP stdio server.
72
- const fullArgs = process.argv.slice(2);
77
+ const parsed = parseCwdArg(process.argv.slice(2));
78
+ const fullArgs = parsed.args;
73
79
  const head = fullArgs[0];
74
80
  if (head && CLI_COMMANDS.has(head)) {
75
- const code = await cli(fullArgs);
81
+ const code = await cli(process.argv.slice(2));
76
82
  process.exit(code);
77
83
  return;
78
84
  }
@@ -84,7 +90,48 @@ export async function main() {
84
90
  console.log(JSON.stringify({ ok: true, tools: TOOLS.map((t) => t.name) }));
85
91
  return;
86
92
  }
87
- const repoRoot = repoRootFromCwd();
93
+ const initialRoot = repoRootFromCwd(parsed.cwd);
94
+ const runtime = openRuntime(initialRoot);
95
+ const ctx = runtime.ctx;
96
+ let watcher = runtime.watcher;
97
+ let stopPrune = runtime.stopPrune;
98
+ // Only treat root resolution as settled when an explicit, usable --cwd was
99
+ // given. If --cwd was missing/unusable (e.g. unexpanded ${workspaceFolder}),
100
+ // we fell back to process.cwd() and should still query MCP Roots.
101
+ let rootsChecked = isUsableCwd(parsed.cwd);
102
+ const serverRef = {};
103
+ async function switchRoot(repoRoot) {
104
+ if (repoRoot === ctx.repoRoot)
105
+ return;
106
+ // Open the new runtime first; only tear down the old one if it succeeds, so
107
+ // a failure (e.g. DB permission error) leaves the working root intact.
108
+ const next = openRuntime(repoRoot);
109
+ watcher.stop();
110
+ stopPrune();
111
+ ctx.coreDb.close();
112
+ ctx.ctxDb.close();
113
+ ctx.repoRoot = next.ctx.repoRoot;
114
+ ctx.coreDb = next.ctx.coreDb;
115
+ ctx.ctxDb = next.ctx.ctxDb;
116
+ watcher = next.watcher;
117
+ stopPrune = next.stopPrune;
118
+ }
119
+ async function beforeTool() {
120
+ if (rootsChecked)
121
+ return;
122
+ rootsChecked = true;
123
+ if (!serverRef.current)
124
+ return;
125
+ const root = await rootFromMcpRoots(serverRef.current);
126
+ if (root)
127
+ await switchRoot(root);
128
+ }
129
+ const server = createServer(ctx, beforeTool);
130
+ serverRef.current = server;
131
+ const transport = new StdioServerTransport();
132
+ await server.connect(transport);
133
+ }
134
+ function openRuntime(repoRoot) {
88
135
  let coreDb;
89
136
  try {
90
137
  coreDb = openDb(dbPathFor(repoRoot));
@@ -92,7 +139,6 @@ export async function main() {
92
139
  catch (err) {
93
140
  if (err instanceof CorruptDb) {
94
141
  // Production recovery: delete the corrupt DB file and rebuild on next refresh.
95
- const { rmSync } = await import("node:fs");
96
142
  try {
97
143
  rmSync(dbPathFor(repoRoot));
98
144
  }
@@ -104,14 +150,29 @@ export async function main() {
104
150
  }
105
151
  }
106
152
  const ctxDb = openContextDb(repoRoot);
107
- const ctx = { coreDb, ctxDb, repoRoot };
108
- scheduleAutoPrune(coreDb);
153
+ const stopPrune = scheduleAutoPrune(coreDb);
109
154
  const watcher = new FileWatcher(repoRoot);
110
155
  watcher.start();
111
156
  registerWatcher(watcher);
112
- const server = createServer(ctx);
113
- const transport = new StdioServerTransport();
114
- await server.connect(transport);
157
+ return { ctx: { coreDb, ctxDb, repoRoot }, watcher, stopPrune };
158
+ }
159
+ async function rootFromMcpRoots(server) {
160
+ try {
161
+ if (!server.server.getClientCapabilities()?.roots)
162
+ return null;
163
+ const result = await server.server.listRoots(undefined, { timeout: 1000 });
164
+ for (const root of result.roots) {
165
+ if (!root.uri.startsWith("file://"))
166
+ continue;
167
+ const candidate = resolveReal(fileURLToPath(root.uri));
168
+ if (detectScope(candidate))
169
+ return candidate;
170
+ }
171
+ }
172
+ catch {
173
+ // Best-effort only. Fallback remains explicit --cwd or process.cwd().
174
+ }
175
+ return null;
115
176
  }
116
177
  function dbPathFor(repoRoot) {
117
178
  const dir = join(homedir(), ".codelens", "indexes");
@@ -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":"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"}
@@ -3,9 +3,17 @@ import { getPendingPaths } from "../index/staleness.js";
3
3
  import { neighbors } from "../graph/query.js";
4
4
  import { ctxSearch } from "./search.js";
5
5
  const DEFAULT_LIMIT = 8;
6
+ const DEFAULT_MAX_FILES = 6;
7
+ const DEFAULT_MAX_RESULTS_PER_FILE = 3;
8
+ const DEFAULT_MAX_RELATED = 20;
6
9
  const DEFAULT_RELATED_DEPTH = 1;
7
10
  const MAX_RELATED_DEPTH = 3;
8
11
  const RELATED_SOURCE_LIMIT = 3;
12
+ function clampPositive(value, fallback, max) {
13
+ if (value === undefined)
14
+ return fallback;
15
+ return Math.min(Math.max(1, Math.floor(value)), max);
16
+ }
9
17
  function signatureFor(db, indexId, handle) {
10
18
  if (!handle)
11
19
  return undefined;
@@ -73,10 +81,28 @@ export function ctxExplore(db, query, opts) {
73
81
  file.results.push(toExploreItem(hit));
74
82
  }
75
83
  }
84
+ const maxFiles = clampPositive(opts?.maxFiles, DEFAULT_MAX_FILES, 50);
85
+ const maxResultsPerFile = clampPositive(opts?.maxResultsPerFile, DEFAULT_MAX_RESULTS_PER_FILE, 20);
86
+ const maxRelated = clampPositive(opts?.maxRelated, DEFAULT_MAX_RELATED, 100);
87
+ let omittedResults = 0;
88
+ for (const file of byFile.values()) {
89
+ file.results.sort((a, b) => b.score - a.score || a.lines.localeCompare(b.lines));
90
+ if (file.results.length > maxResultsPerFile) {
91
+ omittedResults += file.results.length - maxResultsPerFile;
92
+ file.results = file.results.slice(0, maxResultsPerFile);
93
+ }
94
+ }
95
+ const orderedFiles = [...byFile.values()].sort((a, b) => {
96
+ const aScore = a.results[0]?.score ?? 0;
97
+ const bScore = b.results[0]?.score ?? 0;
98
+ return bScore - aScore || a.path.localeCompare(b.path);
99
+ });
100
+ const omittedFiles = Math.max(0, orderedFiles.length - maxFiles);
101
+ const files = orderedFiles.slice(0, maxFiles);
76
102
  const relatedDepth = Math.min(Math.max(1, opts?.relatedDepth ?? DEFAULT_RELATED_DEPTH), MAX_RELATED_DEPTH);
77
103
  const related = [];
78
104
  const seenRelated = new Set();
79
- for (const sourcePath of [...byFile.keys()].slice(0, RELATED_SOURCE_LIMIT)) {
105
+ for (const sourcePath of files.map((f) => f.path).slice(0, RELATED_SOURCE_LIMIT)) {
80
106
  try {
81
107
  for (const n of neighbors(db, indexId, sourcePath, { types: ["imports", "imported_by", "tests", "calls", "references"], depth: relatedDepth })) {
82
108
  const key = `${sourcePath}\0${n.path}\0${n.edgeType}\0${n.hops}`;
@@ -93,14 +119,25 @@ export function ctxExplore(db, query, opts) {
93
119
  // Graph is best-effort; search results remain useful without it.
94
120
  }
95
121
  }
122
+ related.sort((a, b) => a.hops - b.hops || b.confidence - a.confidence || a.sourcePath.localeCompare(b.sourcePath) || a.path.localeCompare(b.path));
123
+ const omittedRelated = Math.max(0, related.length - maxRelated);
96
124
  const out = {
97
125
  indexId,
98
126
  query: search.query,
99
127
  count: search.count,
100
- files: [...byFile.values()],
101
- related,
128
+ files,
129
+ related: related.slice(0, maxRelated),
102
130
  freshness: search.freshness,
103
131
  };
132
+ const truncated = {};
133
+ if (omittedFiles > 0)
134
+ truncated.files = omittedFiles;
135
+ if (omittedResults > 0)
136
+ truncated.results = omittedResults;
137
+ if (omittedRelated > 0)
138
+ truncated.related = omittedRelated;
139
+ if (Object.keys(truncated).length > 0)
140
+ out.truncated = truncated;
104
141
  if (search.pendingFiles !== undefined)
105
142
  out.pendingFiles = search.pendingFiles;
106
143
  if (search.nextCursor)
@@ -1 +1 @@
1
- {"version":3,"file":"explore.js","sourceRoot":"","sources":["../../../src/tools/explore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explore.js","sourceRoot":"","sources":["../../../src/tools/explore.ts"],"names":[],"mappings":"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"}
@@ -6,13 +6,22 @@ const MAX_DEPTH = 3;
6
6
  function clampDepth(depth) {
7
7
  return Math.min(Math.max(1, depth ?? DEFAULT_DEPTH), MAX_DEPTH);
8
8
  }
9
- function staleAware(indexId, n) {
9
+ function confidenceLabel(confidence) {
10
+ if (confidence >= 0.8)
11
+ return "high";
12
+ if (confidence >= 0.5)
13
+ return "medium";
14
+ return "low";
15
+ }
16
+ function staleAware(indexId, n, provenance = "graph") {
10
17
  const item = {
11
18
  handle: `rel:${n.path}`,
12
19
  path: n.path,
13
20
  edgeType: n.edgeType,
14
21
  hops: n.hops,
15
22
  confidence: n.confidence,
23
+ provenance,
24
+ confidenceLabel: confidenceLabel(n.confidence),
16
25
  };
17
26
  if (getPendingPaths(indexId).has(n.path))
18
27
  item.stale = true;
@@ -30,7 +39,7 @@ function uniq(handles) {
30
39
  byKey.set(key, h);
31
40
  }
32
41
  }
33
- return [...byKey.values()].sort((a, b) => a.hops - b.hops || b.confidence - a.confidence || a.path.localeCompare(b.path));
42
+ return [...byKey.values()].sort((a, b) => a.hops - b.hops || b.confidence - a.confidence || a.edgeType.localeCompare(b.edgeType) || a.path.localeCompare(b.path));
34
43
  }
35
44
  function resolveSymbol(db, indexId, symbol, path) {
36
45
  const pathClause = path ? " AND path = ?" : "";
@@ -48,6 +57,7 @@ function resolveSymbol(db, indexId, symbol, path) {
48
57
  function candidateFrom(row, stale) {
49
58
  const c = {
50
59
  id: row.id,
60
+ symbolId: row.id,
51
61
  path: row.path,
52
62
  symbol: row.name,
53
63
  kind: row.kind,
@@ -67,6 +77,7 @@ function targetFrom(row, path, stale) {
67
77
  }
68
78
  const target = {
69
79
  path: row.path,
80
+ symbolId: row.id,
70
81
  symbol: row.name,
71
82
  kind: row.kind,
72
83
  signature: row.signature,
@@ -137,8 +148,8 @@ export function ctxImpact(db, opts) {
137
148
  ? uniq([
138
149
  ...testsFor(db, indexId, targetPath).map((n) => staleAware(indexId, n)),
139
150
  ...affectedFiles.flatMap((f) => testsFor(db, indexId, f.path).map((n) => staleAware(indexId, n))),
140
- ...affectedFiles.filter((f) => isTestPath(f.path)).map((f) => ({ ...f, edgeType: "tests" })),
141
- ...callers.filter((f) => isTestPath(f.path)).map((f) => ({ ...f, edgeType: "tests" })),
151
+ ...affectedFiles.filter((f) => isTestPath(f.path)).map((f) => ({ ...f, edgeType: "tests", confidence: Math.min(f.confidence, 0.6), confidenceLabel: "medium", provenance: "path-heuristic" })),
152
+ ...callers.filter((f) => isTestPath(f.path)).map((f) => ({ ...f, edgeType: "tests", confidence: Math.min(f.confidence, 0.6), confidenceLabel: "medium", provenance: "path-heuristic" })),
142
153
  ])
143
154
  : [];
144
155
  const out = {
@@ -149,7 +160,13 @@ export function ctxImpact(db, opts) {
149
160
  affectedFiles,
150
161
  affectedTests,
151
162
  depth,
152
- confidenceNote: "Impact is derived from indexed file/symbol edges. calls/references are currently strongest for TS/JS; lower-confidence or sparse languages may need cl_search/cl_expand follow-up.",
163
+ summary: {
164
+ callers: callers.length,
165
+ callees: callees.length,
166
+ affectedFiles: affectedFiles.length,
167
+ affectedTests: affectedTests.length,
168
+ },
169
+ confidenceNote: "Impact is derived from indexed file/symbol edges. calls/references are currently strongest for TS/JS; path-heuristic tests are conservative and lower-confidence; sparse languages may need cl_search/cl_expand follow-up.",
153
170
  freshness: pendingPaths.size > 0 ? "partial" : "fresh",
154
171
  };
155
172
  if (pendingPaths.size > 0)
@@ -1 +1 @@
1
- {"version":3,"file":"impact.js","sourceRoot":"","sources":["../../../src/tools/impact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"impact.js","sourceRoot":"","sources":["../../../src/tools/impact.ts"],"names":[],"mappings":"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"}
@@ -77,7 +77,7 @@ export const TOOLS = [
77
77
  },
78
78
  {
79
79
  name: "cl_explore",
80
- description: "One-call code exploration over the current branch index: hybrid search grouped by file, compact source previews, signature-collapse, and a relationship/blast map. Use for broad questions like 'how does X work?' before falling back to separate search/expand/related calls.\n\nRETURNS: {indexId, query, count, files:[{path, stale?, results:[{handle,lines,score,why,preview,signature?,collapsed?,stale?}]}], related:[{sourcePath,path,edgeType,hops,confidence,stale?}], freshness, pendingFiles?, nextCursor?}\n\nEXAMPLE: cl_explore(query: \"session validation flow\", limit: 8)",
80
+ description: "One-call code exploration over the current branch index: hybrid search grouped by file, compact source previews, signature-collapse, and a relationship/blast map. Use for broad questions like 'how does X work?' before falling back to separate search/expand/related calls.\n\nRETURNS: {indexId, query, count, files:[{path, stale?, results:[{handle,lines,score,why,preview,signature?,collapsed?,stale?}]}], related:[{sourcePath,path,edgeType,hops,confidence,stale?}], freshness, pendingFiles?, nextCursor?, truncated?}\n\nEXAMPLE: cl_explore(query: \"session validation flow\", limit: 8)",
81
81
  schema: {
82
82
  query: z.string().describe("Exploration query (2-6 specific technical terms recommended)."),
83
83
  limit: z.coerce.number().optional().default(8).describe("Maximum ranked chunks to group into files (default 8)."),
@@ -85,6 +85,9 @@ export const TOOLS = [
85
85
  contentType: z.enum(["code", "prose"]).optional().describe("Filter by chunk type: 'code' or 'prose'."),
86
86
  snippet: z.enum(["none", "headline", "compact", "full"]).optional().describe("Preview verbosity. Default compact."),
87
87
  relatedDepth: z.coerce.number().optional().default(1).describe("Relationship map depth (default 1, capped at 3)."),
88
+ maxFiles: z.coerce.number().optional().default(6).describe("Maximum file groups to return (default 6)."),
89
+ maxResultsPerFile: z.coerce.number().optional().default(3).describe("Maximum result previews per file group (default 3)."),
90
+ maxRelated: z.coerce.number().optional().default(20).describe("Maximum relationship-map entries (default 20)."),
88
91
  },
89
92
  handler: (ctx, args) => {
90
93
  ensureActive(ctx);
@@ -94,6 +97,9 @@ export const TOOLS = [
94
97
  contentType: args.contentType,
95
98
  snippet: args.snippet,
96
99
  relatedDepth: args.relatedDepth,
100
+ maxFiles: args.maxFiles,
101
+ maxResultsPerFile: args.maxResultsPerFile,
102
+ maxRelated: args.maxRelated,
97
103
  });
98
104
  },
99
105
  },
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/tools/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/tools/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ # How CodeLens works
2
+
3
+ CodeLens is a **branch-aware local code knowledge retrieval engine**. It indexes
4
+ the current repo/branch into SQLite and lets coding agents ask "what code is
5
+ relevant to X?" via compact ranked handles — instead of grep/find/read flooding
6
+ their context window. No chat LLM is used anywhere in the core path.
7
+
8
+ ## Architecture
9
+
10
+ ```
11
+ Agent (Pi / Claude Code / Cursor / Gemini / opencode / Codex)
12
+ │ MCP stdio
13
+
14
+ CodeLens MCP server ──▶ CLI (codelens <subcommand>)
15
+
16
+ ├── Git scope detector (repo / worktree / branch / HEAD / dirty)
17
+ ├── Index manager (per-branch index identity)
18
+ ├── File scanner (.gitignore-aware, binary/size filters)
19
+ ├── FTS5 indexer (structure-aware chunks + content hash)
20
+ ├── Tree-sitter symbol extractor (11 grammars, text fallback)
21
+ ├── Source graph builder (imports / defines / tests / belongs_to)
22
+ ├── Graph query (recursive CTE + bounded BFS)
23
+ ├── Freshness checker (mtime/size fast → hash on suspicion)
24
+ ├── TTL pruner (never-delete guards)
25
+ ├── Saved-context store (separate DB, survives rebuilds)
26
+ └── Usage tracker (global, actual-file-size savings)
27
+
28
+
29
+ SQLite
30
+ ├── per-branch index DB (~/.codelens/indexes/index-<repoId>.db)
31
+ ├── saved-contexts DB (~/.codelens/contexts/contexts-<repoId>.db)
32
+ └── global usage DB (~/.codelens/usage.db)
33
+ ```
34
+
35
+ ## The index layers
36
+
37
+ 1. **Files**: path, language, size, mtime, content hash.
38
+ 2. **FTS5 lexical**: structure-aware code chunks with line-based fallback and
39
+ Porter-stemming/BM25 ranking. Code files with extractable symbols are chunked
40
+ around outermost functions/classes/methods/types; oversized symbols and non-structural
41
+ gaps (imports, top-level statements, inter-symbol regions) are line-chunked.
42
+ Leading comment/decorator blocks are attached to the following symbol chunk.
43
+ Line fallback uses small overlap to reduce boundary loss. Chunks carry
44
+ `code` vs `prose`, `chunker`, `chunker_version`, and `symbol_id` when aligned
45
+ to a symbol. The match-only FTS text preserves the original chunk and appends
46
+ bounded, deduplicated identifier subtokens (for example `validateSession` →
47
+ `validate session`) so code-identifier queries can match without changing
48
+ snippets or `cl_expand` content.
49
+ 3. **Symbols** (tree-sitter): functions/classes/methods/types/exports/imports
50
+ with line ranges + signatures + exported flag. Parser-eligible files are
51
+ parsed once and the same tree-sitter tree is reused for symbols and edges;
52
+ structure-aware chunking consumes those extracted symbol ranges. 11 grammars
53
+ shipped; unknown languages fall back to text-only FTS.
54
+ 4. **Source graph**: edges `imports`, `defines`, `belongs_to`, `exports`,
55
+ `tests` (filename heuristics). Resolution handles TS ESM `.js`→`.ts`
56
+ substitution. Unresolved imports emit no edge (no wrong edges).
57
+ 5. *(No vector/semantic layer — removed; ranking is FTS + symbol + graph.)*
58
+
59
+ ## Branch isolation (the core idea)
60
+
61
+ Every index is scoped to `repoRoot + worktreePath + branch + HEAD`:
62
+
63
+ ```
64
+ index_id = sha256(repoRoot | worktreePath | branch | headSha)
65
+ ```
66
+
67
+ Every table row carries `index_id`; every query filters by it. So `git checkout`
68
+ activates/creates a different index automatically — results from `main` never
69
+ leak into `feature-b`. `cl_current` reports which index is active.
70
+
71
+ ## Freshness (local files are source of truth)
72
+
73
+ Before query tools answer (`cl_search`, `cl_explore`, `cl_related`, `cl_impact`, `cl_map`), `ensureFreshIndex` runs:
74
+ 1. Detect current git scope → activate/create the branch index.
75
+ 2. Scan files, diff `mtime`+`size` vs indexed rows (fast); hash only
76
+ changed/suspicious files.
77
+ 3. Reindex changed/new files in per-file transactions; drop deleted. Files with
78
+ chunks from an older/unknown `chunker_version` are also treated as changed, so
79
+ chunker improvements roll forward on the next refresh.
80
+ 4. Budget-bounded (default 500ms); if incomplete, surface
81
+ `freshness:"partial"` + `pendingFiles`. A chunker-version bump can require a
82
+ full budget-bounded re-chunk over several refresh cycles.
83
+
84
+ `cl_expand` **always reads current disk** (never stale stored text). A file
85
+ watcher (server mode) short-circuits the scan when nothing changed, with a 5s
86
+ periodic full-scan backstop.
87
+
88
+ **Edit behavior:** when the agent edits a file, the *next query tool call*
89
+ auto-refreshes and reindexes it (lazy, not eager at edit time). If the refresh
90
+ budget is exhausted, known-stale paths are surfaced with `stale:true` and
91
+ `freshness:"partial"` so the agent can read those files directly.
92
+
93
+ ## Ranking (hybrid)
94
+
95
+ `cl_search` fuses lexical, structural, graph, path, and code/prose signals with
96
+ weights from `src/search/rank.ts`:
97
+
98
+ ```
99
+ score = fts×0.34 + symbol×0.18 + graph×0.22 + code×0.08 + path×0.08 + exact×0.10
100
+ ```
101
+
102
+ - `fts`: BM25 normalized. Queries are expanded with the same bounded identifier
103
+ splitter used at index time, then quoted through the FTS path; expansion is
104
+ capped to avoid broadening queries or hurting latency.
105
+ - `symbol`: full signal when the chunk's `symbol_id` name partially matches a
106
+ query term; lower-strength file-level symbol match is kept as fallback.
107
+ - `exact`: full signal when the chunk's `symbol_id` name exactly matches a query
108
+ term; lower-strength file-level exact match is kept as fallback.
109
+ - `graph`: 1 if the file is graph-proximate to top lexical results.
110
+ - `path`: query term appears in the file path/name.
111
+ - `code`: modest boost for `code` chunks over `prose` (docs), so code discovery
112
+ isn't drowned out by markdown. Pass `contentType:"code"` to filter to source
113
+ only.
114
+
115
+ `cl_related` runs a recursive-CTE BFS over the `edges` table (direction-aware,
116
+ cycle-guarded, depth-capped at 3).
117
+
118
+ ## Concurrency & recovery
119
+
120
+ - **WAL mode** + a single-writer queue + a cross-process advisory lease
121
+ (`index_locks`) so two agent processes on the same repo never corrupt rows;
122
+ readers see the prior committed snapshot.
123
+ - **Corruption recovery:** `PRAGMA quick_check` on startup + on query error →
124
+ rebuild the core index. Saved contexts live in a **separate DB** and survive.
125
+ - **Schema versioning:** version guard refuses a newer-than-code DB; migrations
126
+ are transactional with a pre-migration backup.
127
+
128
+ ## TTL
129
+
130
+ Inactive indexes are pruned automatically (startup + periodic): inactive branch
131
+ 14d, detached 3d, worktree 48h. **Never** deletes the active index, pinned
132
+ indexes, locked indexes, or recently-accessed ones. `cl_prune` (manual),
133
+ `cl_drop` (explicit, refuses active/pinned).
134
+
135
+ ## Saved contexts
136
+
137
+ `cl_save`/`cl_load` persist named handle sets + notes in a **separate**
138
+ contexts DB (`~/.codelens/contexts/`), keyed by repo. They survive core-index
139
+ rebuilds. Items reference path+symbol (stable across reindex), not chunk ids.
140
+ Pin to prevent TTL deletion.
141
+
142
+ ## Usage tracking
143
+
144
+ Global (`~/.codelens/usage.db`): per-tool calls, bytes served, and an estimated
145
+ context saving computed from **actual indexed file sizes** of the result files.
146
+ Discovery tools (`cl_search`, `cl_explore`, `cl_related`, `cl_impact`) accrue savings. See
147
+ [`docs/usage-metrics.md`](usage-metrics.md).
148
+
149
+ ## Distribution
150
+
151
+ Currently builds from source (Node ≥ 22.5) via `install.sh`/`install.ps1`,
152
+ which also wires agent configs + slash commands. A self-contained bundle
153
+ (vendored Node) like some other tools is future work once published. The `cl_*`
154
+ MCP tools are the same surface across every host.