@fodx/codelens 2.3.0 → 2.5.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 CHANGED
@@ -11,7 +11,7 @@ your context with raw grep/read output.
11
11
 
12
12
  No chat LLM is involved — retrieval is deterministic. Surfaced as an **MCP
13
13
  server** and a **CLI**; works with any MCP-compatible client (Claude Code,
14
- Cursor, Gemini CLI, opencode, Codex CLI) or directly from the terminal.
14
+ Cursor, Gemini CLI, Kiro, opencode, Codex CLI) or directly from the terminal.
15
15
 
16
16
  - **Branch isolation** — each branch/worktree has its own index; results never
17
17
  leak across branches.
@@ -29,7 +29,7 @@ Cursor, Gemini CLI, opencode, Codex CLI) or directly from the terminal.
29
29
 
30
30
  One command builds the tool, installs the `codelens` launcher, and wires the MCP
31
31
  server into detected agents/IDEs automatically (Claude Code, Cursor, Gemini CLI,
32
- opencode, Codex CLI). Requires Node.js ≥ 22.5. The package is published on
32
+ Kiro, opencode, Codex CLI). Requires Node.js ≥ 22.5. The package is published on
33
33
  [npm as `@fodx/codelens`](https://www.npmjs.com/package/@fodx/codelens).
34
34
 
35
35
  **macOS / Linux:**
@@ -48,7 +48,7 @@ to choose targets explicitly or re-run later:
48
48
 
49
49
  ```bash
50
50
  codelens install --target all --yes # wire all agents
51
- codelens install --target claude,cursor # wire specific agents
51
+ codelens install --target claude,cursor,kiro # wire specific agents
52
52
  codelens install --target auto --location=local # project-local config
53
53
  codelens --print-config codex # print a snippet, no writes
54
54
  codelens uninstall # remove from all agents
@@ -60,15 +60,18 @@ codelens upgrade --check # is an update available?
60
60
  codelens upgrade # git pull + rebuild + refresh global agent config/routing
61
61
  ```
62
62
  Upgrade reports the rebuilt version and re-applies global agent config + routing
63
- for detected hosts. Cursor's global config attaches to the active workspace via
64
- `${workspaceFolder}`, so after upgrading just restart your agent.
63
+ for detected hosts that can be safely refreshed. Cursor's global config attaches
64
+ to the active workspace via `${workspaceFolder}`. Kiro's global config pins the
65
+ workspace where `codelens install --target kiro` is run, so rerun that command
66
+ from the desired workspace if you need to retarget Kiro. After upgrading,
67
+ restart your agent.
65
68
 
66
69
  **Uninstall everything:**
67
70
  ```bash
68
71
  curl -fsSL https://raw.githubusercontent.com/ex-git/codeLens/main/install.sh | sh -s -- --uninstall
69
72
  ```
70
73
 
71
- > Note on clients/LLMs: MCP clients (Claude Code, Cursor, …) bring their own
74
+ > Note on clients/LLMs: MCP clients (Claude Code, Cursor, Kiro, …) bring their own
72
75
  > model — CodeLens has no LLM and configures none. The installer only wires the
73
76
  > MCP server + routing instructions into each host's config.
74
77
 
@@ -84,6 +87,7 @@ instead. All writes are idempotent and removable with `codelens uninstall`.
84
87
  | Claude Code | `claude` | `~/.claude.json` → `.mcp.json` | `mcpServers.codelens = { command, args: ["--auto-index", "missing"] }` (local also adds `--cwd <workspace>`) |
85
88
  | Cursor | `cursor` | `~/.cursor/mcp.json` → `.cursor/mcp.json` | `mcpServers.codelens = { command, args: ["--cwd", "${workspaceFolder}", "--auto-index", "missing"] }` (Cursor expands the variable per-workspace) |
86
89
  | Gemini CLI | `gemini` | `~/.gemini/settings.json` → `.gemini/settings.json` | `mcpServers.codelens = { command, args: ["--auto-index", "missing"] }` (local also adds `--cwd <workspace>`) |
90
+ | Kiro | `kiro` | `~/.kiro/settings/mcp.json` → `.kiro/settings/mcp.json` | `mcpServers.codelens = { command, args: ["--cwd", "<install cwd>", "--auto-index", "missing"], disabled: false }` (global and local pin the workspace where install runs) |
87
91
  | opencode | `opencode` | `~/.config/opencode/opencode.json` → `./opencode.json` | `mcp.codelens = { type: "local", command: [cmd, "--auto-index", "missing"], enabled: true }` (local also adds `--cwd <workspace>`) |
88
92
  | Codex CLI | `codex` | `~/.codex/config.toml` → `.codex/config.toml` | TOML `[mcp_servers.codelens]` block (`command`, `args = ["--auto-index", "missing"]`; local also adds `--cwd <workspace>`) |
89
93
  | Pi Coding Agent | `pi` | `pi install npm:@fodx/codelens` (loads `adapters/pi/codelens.extension.ts`) | Pi extension that bridges the MCP server via `pi.registerTool` |
@@ -91,7 +95,9 @@ instead. All writes are idempotent and removable with `codelens uninstall`.
91
95
  `command` is the absolute path to the installed `codelens` launcher (written by
92
96
  the installer); for a manual snippet use `npx -y @fodx/codelens`. CodeLens uses
93
97
  root priority `--cwd` → MCP Roots → process cwd. **Cursor** config (global or
94
- local) attaches to the active workspace via `--cwd ${workspaceFolder}`. Other
98
+ local) attaches to the active workspace via `--cwd ${workspaceFolder}`. **Kiro**
99
+ config (global or local) pins `--cwd` to the directory where `codelens install`
100
+ was run because Kiro's user MCP config has no portable workspace variable. Other
95
101
  hosts pin the concrete workspace path for local installs and rely on MCP Roots
96
102
  for global installs. Installed MCP configs default to `--auto-index missing`, so
97
103
  CodeLens starts a detached background index when a workspace/branch has no
@@ -108,6 +114,7 @@ discovery over raw grep/read:
108
114
  | Claude Code | `~/.claude/CLAUDE.md` → `./CLAUDE.md` (+ slash commands in `~/.claude/commands/codelens-*.md`) |
109
115
  | Cursor | `~/.cursor/rules/codelens.mdc` → `.cursor/rules/codelens.mdc` (dedicated, `alwaysApply`) |
110
116
  | Gemini CLI | `~/.gemini/GEMINI.md` → `./GEMINI.md` |
117
+ | Kiro | `~/.kiro/steering/codelens.md` → `.kiro/steering/codelens.md` (dedicated steering file) |
111
118
  | opencode | `~/.config/opencode/AGENTS.md` → `./AGENTS.md` |
112
119
  | Codex CLI | `~/.codex/AGENTS.md` → `./AGENTS.md` |
113
120
 
@@ -115,6 +122,7 @@ discovery over raw grep/read:
115
122
 
116
123
  ```bash
117
124
  codelens --print-config claude # JSON mcpServers snippet + target path
125
+ codelens --print-config kiro # Kiro ~/.kiro/settings/mcp.json snippet
118
126
  codelens --print-config codex # TOML [mcp_servers.codelens] block
119
127
  codelens --print-config pi # Pi extension manifest pointer
120
128
  ```
@@ -131,14 +139,14 @@ pi -e npm:@fodx/codelens # try it for one run without installing
131
139
 
132
140
  > **npm discoverability:** `package.json` is tagged `pi-package` (required for
133
141
  > the Pi gallery) plus descriptive keywords (`mcp-server`,
134
- > `modelcontextprotocol`, `claude-code`, `cursor`, `gemini-cli`, `opencode`,
135
- > `codex`) so the package is findable via npm search. Only `pi-package` is
142
+ > `modelcontextprotocol`, `claude-code`, `cursor`, `gemini-cli`, `kiro`,
143
+ > `opencode`, `codex`) so the package is findable via npm search. Only `pi-package` is
136
144
  > confirmed to trigger a host gallery listing; the others are for search
137
145
  > discoverability and do not imply auto-listing in those hosts' marketplaces.
138
146
 
139
147
  ## Install (MCP) — manual alternative
140
148
 
141
- Add to your MCP client config (Claude Code, Cursor, OpenCode, Gemini CLI,
149
+ Add to your MCP client config (Claude Code, Cursor, Kiro, OpenCode, Gemini CLI,
142
150
  Codex CLI):
143
151
 
144
152
  ```json
@@ -195,8 +203,88 @@ codelens search "session validation" # ranked search
195
203
  codelens related src/auth/session.ts # graph neighbors
196
204
  codelens stats # index counts
197
205
  codelens current # repo/branch status
206
+ codelens eval . # automatic repository evaluation + scorecard
198
207
  ```
199
208
 
209
+ ## Evaluate CodeLens on any repository
210
+
211
+ Run one command against a Git repository:
212
+
213
+ ```bash
214
+ codelens eval /path/to/repo
215
+ ```
216
+
217
+ The evaluator inventories the repository, creates deterministic tasks from
218
+ symbol locations, file/module caller and test relationships, and usable Git
219
+ history. It then compares four retrieval arms: full CodeLens, lexical ranking
220
+ without graph weight, FTS-only ranking, and a targeted `rg` baseline. The
221
+ default comprehensive run evaluates 500-file,
222
+ 2000-file, and all-file tiers (deduplicated for smaller repositories), applies
223
+ quality thresholds, and verifies edit/delete freshness in a detached temporary
224
+ Git worktree. Large repositories can take several minutes because every tier
225
+ builds a fresh index and the freshness probe builds a separate worktree index.
226
+ Phase, file, retrieval, freshness, report, and failure progress is printed to
227
+ stderr with elapsed time throughout the run.
228
+
229
+ It prints a scorecard and writes reproducible artifacts outside the target
230
+ repository under `~/.codelens/evals/`:
231
+
232
+ ```text
233
+ results.json # complete measurements and pass/fail evidence
234
+ report.md # human-readable scorecard
235
+ tasks.json # generated tasks, labels, origins, and confidence
236
+ ```
237
+
238
+ Useful modes:
239
+
240
+ ```bash
241
+ codelens eval . --quick # 20 tasks, up to 500 files, no freshness probe
242
+ codelens eval . --tasks 200 --repeats 3 # broader repeated run
243
+ codelens eval . --scales 1000,5000,all # custom deterministic tiers
244
+ codelens eval . --seed 42 --output /tmp/eval # reproducible custom output
245
+ codelens eval . --no-freshness # skip temporary-worktree mutation test
246
+ codelens eval . --json # JSON on stdout; progress remains on stderr
247
+ ```
248
+
249
+ For a bounded diagnostic on a large repository, use `--quick` or explicitly
250
+ choose a tier such as `--scales 500 --tasks 20 --no-freshness`. Use the default
251
+ run when you want comprehensive scale and freshness measurements.
252
+
253
+ The target worktree is treated as read-only. Freshness mutations occur only in
254
+ a detached temporary worktree, which is removed even after errors, and output
255
+ paths inside the target repository are rejected. Exit code `0` means configured
256
+ thresholds passed, `2` means evaluation completed but thresholds failed, and
257
+ `1` means the evaluator could not run.
258
+
259
+ This is a deterministic retrieval/graph/freshness evaluation, not an end-to-end
260
+ LLM benchmark. Relationship tasks use file-level graph edges and path-derived
261
+ module labels; automatically generated labels remain high-confidence proxies
262
+ and may not represent every valid implementation location.
263
+
264
+ ## Representative retrieval evaluation
265
+
266
+ On an anonymized 3,747-file monorepo containing 31,701 indexed chunks,
267
+ `codelens eval` generated 100 deterministic locate, caller, test, and Git-history
268
+ tasks across 500-file, 2,000-file, and all-file tiers using the default seed and
269
+ result limit. The all-file tier contained 33 tasks:
270
+
271
+ | Retrieval arm | Recall@10 | MRR | Success |
272
+ |---|---:|---:|---:|
273
+ | Full CodeLens | **80.3%** | **0.801** | **90.9%** |
274
+ | Lexical ranking | 48.0% | 0.453 | 57.6% |
275
+ | FTS-only | 51.5% | 0.458 | 60.6% |
276
+ | Targeted `rg` | 41.2% | 0.233 | 48.5% |
277
+
278
+ The full CodeLens arm—including ranked search plus graph-aware caller, test, and
279
+ impact retrieval—substantially outperformed lexical ranking, FTS-only retrieval,
280
+ and targeted `rg` in this run. The detached-worktree edit/delete freshness probe
281
+ also passed.
282
+
283
+ These results are representative, not universal. Automatically generated labels
284
+ are proxies, performance varies by repository, and this evaluation does not run
285
+ or grade an LLM. Run `codelens eval <repo>` to measure behavior on your own
286
+ codebase.
287
+
200
288
  ## Development
201
289
 
202
290
  ```bash
@@ -148,30 +148,26 @@ class McpStdioClient {
148
148
  const ROUTING = `
149
149
  ## CodeLens (code context index) — routing
150
150
 
151
- A local branch-scoped code index is available via these tools:
152
- - cl_current — repo/branch/index status (call if unsure whether the index is ready)
153
- - cl_search — ranked semantic+lexical search → compact handles (path + line range + score)
154
- - cl_explore — one-call grouped search + previews + relationship map for broad orientation
155
- - cl_related — graph neighbors of a file/symbol (imports/importers/tests/callers)
156
- - cl_impact — callers/callees/affected files/tests before edits
157
- - cl_map — per-file symbol outline (repo map) for quick orientation
158
- - cl_expand — exact current file content by path/range (reads disk, never stale)
151
+ Use the branch-scoped cl_* tools for code discovery before broad raw searches
152
+ or bulk file reads. Choose by intent:
159
153
 
160
- Prefer cl_* for discovery when:
161
- - you don't know the exact name/string (semantic or conceptual search)
162
- - you need broad orientation, relationships (importers, tests, callers), blast radius, or a quick outline
163
- - the repo is large or unfamiliar, or you'd otherwise grep + read many files
164
- - branch-scoped correctness matters (results won't leak across branches)
154
+ - Unknown area, conceptual question, or execution flow: start with cl_explore.
155
+ - Find a symbol, behavior, or likely implementation location: use ranked hybrid cl_search.
156
+ - Find callers, importers, tests, or dependencies of a known file: use cl_related.
157
+ - Assess blast radius before changing shared code: use cl_impact. Pass symbol +
158
+ path when known; pass path alone for module/file impact when the symbol is uncertain.
159
+ - Get a cheap structural outline: use cl_map.
160
+ - Read exact current code after choosing a target: use cl_expand or a raw read.
165
161
 
166
- Raw grep/find/read is fine (or better) when:
167
- - you already know an exact string/symbol/path
168
- - you're reading or editing a single known file
169
- - the repo is tiny or familiar
162
+ Do not start with broad grep/find/bulk read when the target is unknown or the
163
+ question concerns relationships. Raw tools remain appropriate for known exact
164
+ strings/paths, logs/generated output, and exact verification or editing.
170
165
 
171
- If a result has stale:true or freshness:"partial", read that file directly before relying on indexed snippets/edges.
172
- Always use cl_expand or a raw read for the exact file you're about to edit.
173
- After \`git checkout\`, results auto-scope to the new branch; call cl_current to
174
- confirm. You do NOT need the user's permission to use these tools.`;
166
+ Call cl_current when index readiness is uncertain and after \`git checkout\`.
167
+ If a result has stale:true or freshness:"partial", read the target directly
168
+ before relying on it. If CodeLens is not attached, tell the user instead of
169
+ silently falling back to broad raw discovery. You do NOT need the user's
170
+ permission to use these tools.`;
175
171
 
176
172
  // ── Extension entry ──────────────────────────────────────────
177
173
 
package/build/src/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { createHash } from "node:crypto";
2
- import { mkdirSync, rmSync } from "node:fs";
2
+ import { existsSync, mkdirSync, rmSync } from "node:fs";
3
3
  import { homedir } from "node:os";
4
- import { join, dirname } from "node:path";
4
+ import { join, dirname, resolve } from "node:path";
5
5
  import { openDb } from "./db/db.js";
6
6
  import { openContextDb } from "./context/store.js";
7
7
  import { detectScope } from "./git/scope.js";
@@ -18,7 +18,8 @@ import { runInstall, runUninstall, printConfig, HOSTS } from "./installer/agents
18
18
  import { VERSION } from "./version.js";
19
19
  import { checkUpgrade, performUpgrade } from "./upgrade.js";
20
20
  import { parseCwdArg, resolveCwd } from "./runtime/root.js";
21
- import { existsSync } from "node:fs";
21
+ import { defaultEvalOptions, quickEvalOptions, runRepositoryEval } from "./eval/evaluator.js";
22
+ import { consoleSummary } from "./eval/report.js";
22
23
  import { fileURLToPath } from "node:url";
23
24
  /**
24
25
  * Minimal CLI (Gap #9): lets non-MCP users run diagnostics, build the index,
@@ -65,7 +66,7 @@ export async function cli(args) {
65
66
  const cmd = args[0];
66
67
  const repoRoot = resolveCwd(parsed.cwd);
67
68
  if (!cmd || cmd === "--help" || cmd === "-h") {
68
- console.log("codelens [--cwd <path>] [current|index|search <q>|related <path>|stats|doctor|install|uninstall|upgrade|version]");
69
+ console.log("codelens [--cwd <path>] [current|index|search <q>|related <path>|stats|doctor|eval [repo]|install|uninstall|upgrade|version]");
69
70
  return 0;
70
71
  }
71
72
  // ── DB-free commands (no repo/index needed) ──────────────────
@@ -132,6 +133,23 @@ export async function cli(args) {
132
133
  console.log(r.message);
133
134
  return r.ok ? 0 : 1;
134
135
  }
136
+ if (cmd === "eval") {
137
+ try {
138
+ const parsedEval = parseEvalArgs(args.slice(1), repoRoot);
139
+ if (parsedEval.help) {
140
+ console.log(EVAL_HELP);
141
+ return 0;
142
+ }
143
+ parsedEval.options.onProgress = (event) => console.error(formatEvalProgress(event));
144
+ const result = runRepositoryEval(parsedEval.options);
145
+ console.log(parsedEval.json ? JSON.stringify(result, null, 2) : consoleSummary(result));
146
+ return result.pass ? 0 : 2;
147
+ }
148
+ catch (error) {
149
+ console.error(`eval failed: ${error instanceof Error ? error.message : String(error)}`);
150
+ return 1;
151
+ }
152
+ }
135
153
  const coreDb = openCore(repoRoot);
136
154
  const ctxDb = openContextDb(repoRoot);
137
155
  void ctxDb;
@@ -228,6 +246,13 @@ export async function cli(args) {
228
246
  coreDb.close();
229
247
  }
230
248
  }
249
+ function formatEvalProgress(event) {
250
+ const status = event.status.toUpperCase().padEnd(8);
251
+ const elapsed = event.elapsedMs < 60_000
252
+ ? `${(event.elapsedMs / 1000).toFixed(1)}s`
253
+ : `${Math.floor(event.elapsedMs / 60_000)}m ${Math.floor((event.elapsedMs % 60_000) / 1000)}s`;
254
+ return `[eval ${elapsed}] ${status} ${event.phase}: ${event.message}`;
255
+ }
231
256
  function fmt(n) {
232
257
  if (n < 1024)
233
258
  return `${n}B`;
@@ -250,6 +275,146 @@ function defaultServerCommand() {
250
275
  catch { /* ignore */ }
251
276
  return null;
252
277
  }
278
+ const EVAL_HELP = `codelens eval [repo] [options]
279
+
280
+ Automatically generate retrieval tasks, compare CodeLens with ranking ablations
281
+ and a targeted rg baseline, validate freshness safely, and write scorecards.
282
+
283
+ Options:
284
+ --quick 20 tasks, up to 500 files, no freshness probe
285
+ --tasks <n> Maximum generated tasks across scales (default 100)
286
+ --seed <n> Deterministic sampling seed (default 42)
287
+ --repeats <n> Repeat every task/arm (default 1)
288
+ --limit <n> Results considered per task (default 10)
289
+ --scales <list> Comma list such as 500,2000,all
290
+ --output <dir> Report directory; must be outside the target repo
291
+ --no-freshness Skip detached-worktree edit/delete probes
292
+ --min-recall <0..1> Full-arm recall threshold (default 0.6)
293
+ --min-mrr <0..1> Full-arm MRR threshold (default 0.5)
294
+ --min-success <0..1> Full-arm success threshold (default 0.7)
295
+ --json Print the complete JSON result
296
+ --help Show this help`;
297
+ const EVAL_VALUE_OPTIONS = new Set(["--tasks", "--seed", "--repeats", "--limit", "--scales", "--output", "--min-recall", "--min-mrr", "--min-success"]);
298
+ function parseEvalArgs(args, fallbackRepo) {
299
+ const positional = findEvalRepoArg(args);
300
+ const repoRoot = resolve(positional?.value ?? fallbackRepo);
301
+ const quick = args.includes("--quick");
302
+ const options = quick ? quickEvalOptions(repoRoot) : defaultEvalOptions(repoRoot);
303
+ let json = false;
304
+ let help = false;
305
+ for (let i = 0; i < args.length; i++) {
306
+ const arg = args[i];
307
+ if (i === positional?.index)
308
+ continue;
309
+ const [key, inline] = arg.split("=", 2);
310
+ const value = inline ?? ((key && EVAL_VALUE_OPTIONS.has(key)) ? args[++i] : undefined);
311
+ if (key === "--quick")
312
+ continue;
313
+ if (key === "--json") {
314
+ json = true;
315
+ continue;
316
+ }
317
+ if (key === "--help" || key === "-h") {
318
+ help = true;
319
+ continue;
320
+ }
321
+ if (key === "--no-freshness") {
322
+ options.freshness = false;
323
+ continue;
324
+ }
325
+ if (key === "--tasks") {
326
+ options.taskLimit = boundedPositiveInt(value, key, 10_000);
327
+ continue;
328
+ }
329
+ if (key === "--seed") {
330
+ options.seed = integer(value, key);
331
+ continue;
332
+ }
333
+ if (key === "--repeats") {
334
+ options.repeats = boundedPositiveInt(value, key, 100);
335
+ continue;
336
+ }
337
+ if (key === "--limit") {
338
+ options.resultLimit = boundedPositiveInt(value, key, 1_000);
339
+ continue;
340
+ }
341
+ if (key === "--scales") {
342
+ options.scales = parseScales(value);
343
+ continue;
344
+ }
345
+ if (key === "--output") {
346
+ if (!value)
347
+ throw new Error("--output requires a directory");
348
+ options.outputDir = resolve(value);
349
+ continue;
350
+ }
351
+ if (key === "--min-recall") {
352
+ options.thresholds.minRecallAtK = ratio(value, key);
353
+ continue;
354
+ }
355
+ if (key === "--min-mrr") {
356
+ options.thresholds.minMrr = ratio(value, key);
357
+ continue;
358
+ }
359
+ if (key === "--min-success") {
360
+ options.thresholds.minSuccessRate = ratio(value, key);
361
+ continue;
362
+ }
363
+ if (arg.startsWith("-"))
364
+ throw new Error(`unknown eval option: ${arg}`);
365
+ throw new Error(`unexpected eval argument: ${arg}`);
366
+ }
367
+ return { options, json, help };
368
+ }
369
+ function findEvalRepoArg(args) {
370
+ for (let i = 0; i < args.length; i++) {
371
+ const arg = args[i];
372
+ const key = arg.split("=", 1)[0];
373
+ if (arg.startsWith("-")) {
374
+ if (!arg.includes("=") && EVAL_VALUE_OPTIONS.has(key))
375
+ i++;
376
+ continue;
377
+ }
378
+ return { value: arg, index: i };
379
+ }
380
+ return undefined;
381
+ }
382
+ function parseScales(value) {
383
+ if (!value)
384
+ throw new Error("--scales requires a comma-separated list");
385
+ const scales = value.split(",").map((item) => item.trim()).filter(Boolean).map((item) => {
386
+ if (item === "all")
387
+ return "all";
388
+ return boundedPositiveInt(item, "--scales", 10_000_000);
389
+ });
390
+ if (scales.length === 0)
391
+ throw new Error("--scales requires at least one scale");
392
+ return scales;
393
+ }
394
+ function boundedPositiveInt(value, option, maximum) {
395
+ const parsed = integer(value, option);
396
+ if (parsed < 1)
397
+ throw new Error(`${option} must be at least 1`);
398
+ if (parsed > maximum)
399
+ throw new Error(`${option} must be at most ${maximum}`);
400
+ return parsed;
401
+ }
402
+ function integer(value, option) {
403
+ if (value === undefined || !/^-?\d+$/.test(value))
404
+ throw new Error(`${option} requires an integer`);
405
+ const parsed = Number(value);
406
+ if (!Number.isSafeInteger(parsed))
407
+ throw new Error(`${option} requires a safe integer`);
408
+ return parsed;
409
+ }
410
+ function ratio(value, option) {
411
+ if (value === undefined)
412
+ throw new Error(`${option} requires a number from 0 to 1`);
413
+ const parsed = Number(value);
414
+ if (!Number.isFinite(parsed) || parsed < 0 || parsed > 1)
415
+ throw new Error(`${option} must be between 0 and 1`);
416
+ return parsed;
417
+ }
253
418
  function parseInstallArgs(args) {
254
419
  let target = "auto";
255
420
  let location = "global";
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,15 @@ export const MIGRATIONS = [
32
32
  ALTER TABLE chunks ADD COLUMN chunker_version INTEGER;
33
33
  `,
34
34
  },
35
+ {
36
+ version: 3,
37
+ description: "search path indexes",
38
+ sql: `
39
+ CREATE INDEX idx_symbols_index_path_name ON symbols(index_id, path, name);
40
+ CREATE INDEX idx_edges_index_from_path ON edges(index_id, from_path);
41
+ CREATE INDEX idx_edges_index_to_path ON edges(index_id, to_path);
42
+ `,
43
+ },
35
44
  ];
36
45
  export const CODE_SCHEMA_VERSION = MIGRATIONS.reduce((m, x) => Math.max(m, x.version), 0);
37
46
  /** Read the highest applied version from the DB (0 if fresh). */
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../src/db/migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../src/db/migrations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE5E;;;;;;;;;GASG;AAEH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACvB;IAA0B;IAA7C,YAAmB,SAAiB,EAAS,WAAmB;QAC9D,KAAK,CAAC,qBAAqB,SAAS,uBAAuB,WAAW,oBAAoB,CAAC,CAAC;QAD3E,cAAS,GAAT,SAAS,CAAQ;QAAS,gBAAW,GAAX,WAAW,CAAQ;QAE9D,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAQD,oDAAoD;AACpD,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,EAAE,SAAS,EAAE;IAC7D;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,kBAAkB;QAC/B,GAAG,EAAE;;;KAGJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,qBAAqB;QAClC,GAAG,EAAE;;;;KAIJ;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AAE1F,iEAAiE;AACjE,SAAS,cAAc,CAAC,EAAqB;IAC3C,wDAAwD;IACxD,MAAM,GAAG,GAAG,EAAE;SACX,OAAO,CAAC,6EAA6E,CAAC;SACtF,GAAG,EAAmC,CAAC;IAC1C,IAAI,CAAC,GAAG,EAAE,IAAI;QAAE,OAAO,CAAC,CAAC;IACzB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAA0B,CAAC;IACnG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,EAAqB,EAAE,MAAe;IAClE,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IACnC,IAAI,OAAO,GAAG,mBAAmB,EAAE,CAAC;QAClC,MAAM,IAAI,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;IAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAEzC,2EAA2E;IAC3E,EAAE,CAAC,IAAI,CAAC,sGAAsG,CAAC,CAAC;IAEhH,iFAAiF;IACjF,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;QAC5C,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;gBAChC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACf,EAAE,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC,GAAG,CAC9E,CAAC,CAAC,OAAO,EACT,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,KAAK,EAAE,CAAC;QACV,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,iDAAiD;YACjD,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;gBACrB,IAAI,CAAC;oBAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,75 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { statSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { queryTokens } from "../search/query.js";
5
+ const STOP_WORDS = new Set(["a", "an", "and", "change", "find", "for", "from", "impact", "in", "of", "on", "the", "to"]);
6
+ export function runRgBaseline(repoRoot, task, limit) {
7
+ const start = performance.now();
8
+ const terms = queryTokens(task.query)
9
+ .map((term) => term.toLowerCase())
10
+ .filter((term) => term.length >= 3 && !STOP_WORDS.has(term));
11
+ const uniqueTerms = [...new Set(terms)].slice(0, 8);
12
+ if (uniqueTerms.length === 0) {
13
+ return emptyObservation(start, "query has no usable rg terms");
14
+ }
15
+ const pattern = uniqueTerms.map(escapeRegex).join("|");
16
+ const args = [
17
+ "-l", "-i", "--hidden", "--max-count", "1",
18
+ "--glob", "!.git/**", "--glob", "!node_modules/**", "--glob", "!build/**",
19
+ "--glob", "!dist/**", "--glob", "!coverage/**", "--", pattern, ".",
20
+ ];
21
+ const result = spawnSync("rg", args, {
22
+ cwd: repoRoot,
23
+ encoding: "utf-8",
24
+ maxBuffer: 16 * 1024 * 1024,
25
+ });
26
+ if (result.error) {
27
+ const code = result.error.code;
28
+ return emptyObservation(start, code === "ENOENT" ? "ripgrep is not installed" : result.error.message);
29
+ }
30
+ if (result.status !== 0 && result.status !== 1) {
31
+ return emptyObservation(start, (result.stderr ?? "").trim() || `rg exited ${result.status}`);
32
+ }
33
+ const rawPaths = (result.stdout ?? "")
34
+ .split(/\r?\n/)
35
+ .map((path) => path.replace(/^\.\//, "").replaceAll("\\", "/").trim())
36
+ .filter(Boolean);
37
+ const foundPaths = rankPaths(rawPaths, uniqueTerms).slice(0, limit);
38
+ let bytesRead = 0;
39
+ for (const path of foundPaths) {
40
+ try {
41
+ bytesRead += statSync(join(repoRoot, path)).size;
42
+ }
43
+ catch { /* best-effort */ }
44
+ }
45
+ return {
46
+ foundPaths,
47
+ toolCalls: 1,
48
+ bytesServed: Buffer.byteLength(JSON.stringify({ foundPaths })),
49
+ bytesRead,
50
+ elapsedMs: performance.now() - start,
51
+ };
52
+ }
53
+ function rankPaths(paths, terms) {
54
+ return [...new Set(paths)].sort((a, b) => {
55
+ const aLower = a.toLowerCase();
56
+ const bLower = b.toLowerCase();
57
+ const aScore = terms.reduce((score, term) => score + (aLower.includes(term) ? 1 : 0), 0);
58
+ const bScore = terms.reduce((score, term) => score + (bLower.includes(term) ? 1 : 0), 0);
59
+ return bScore - aScore || a.localeCompare(b);
60
+ });
61
+ }
62
+ function emptyObservation(start, error) {
63
+ return {
64
+ foundPaths: [],
65
+ toolCalls: 1,
66
+ bytesServed: 0,
67
+ bytesRead: 0,
68
+ elapsedMs: performance.now() - start,
69
+ error,
70
+ };
71
+ }
72
+ function escapeRegex(value) {
73
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
74
+ }
75
+ //# sourceMappingURL=baseline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../../src/eval/baseline.ts"],"names":[],"mappings":"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"}