sverklo 0.20.0 → 0.20.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/src/init.js CHANGED
@@ -6,7 +6,12 @@ import { homedir } from "node:os";
6
6
  import { track, hasBeenNudged, markNudged } from "./telemetry/index.js";
7
7
  const __filename = fileURLToPath(import.meta.url);
8
8
  const __dirname = dirname(__filename);
9
- const CLAUDE_MD_SNIPPET = `
9
+ /**
10
+ * Shared prefer-sverklo instructions written to CLAUDE.md, AGENTS.md,
11
+ * and .github/copilot-instructions.md. Single source of truth — divergence
12
+ * across agents would silently desync guidance.
13
+ */
14
+ export const SVERKLO_SNIPPET = `
10
15
  ## Sverklo — Code Intelligence
11
16
 
12
17
  Sverklo is a sharper tool for specific kinds of work. Use it where it fits, not as a blanket replacement for Grep/Read.
@@ -144,6 +149,65 @@ export function resolveAgentsFileTarget(inputs) {
144
149
  path: claudeMd.path,
145
150
  };
146
151
  }
152
+ /**
153
+ * Decide whether to write `.github/copilot-instructions.md` and how.
154
+ *
155
+ * Copilot reads this file as a preamble appended to every Chat prompt
156
+ * (per github.com/copilot docs, custom-instructions). Without it, even
157
+ * with sverklo's MCP server wired up, Copilot keeps grep-ing because
158
+ * nothing tells it to prefer sverklo's tools.
159
+ *
160
+ * Signals (any one is enough — Copilot has no project-level marker file):
161
+ * - `.github/copilot-instructions.md` already exists (definite — append/skip)
162
+ * - `.github/` dir exists (project uses GitHub conventions)
163
+ * - `.vscode/` dir exists (VS Code is THE Copilot host)
164
+ * - `~/.vscode/extensions/github.copilot*` present (Copilot installed)
165
+ *
166
+ * If none of those, skip silently — don't create `.github/` or
167
+ * `.vscode/` for projects that have nothing to do with either. Match
168
+ * resolveAgentsFileTarget's "we only modify files the user has opted
169
+ * into" philosophy.
170
+ */
171
+ export function resolveCopilotInstructionsTarget(inputs) {
172
+ const { copilotFile, githubDirExists, vscodeDirExists, copilotExtensionDetected, sentinel } = inputs;
173
+ if (copilotFile.exists && snippetAlreadyPresent(copilotFile.content, sentinel)) {
174
+ return { action: "skip-already-present", path: copilotFile.path };
175
+ }
176
+ if (copilotFile.exists) {
177
+ return { action: "append", path: copilotFile.path, existingContent: copilotFile.content };
178
+ }
179
+ const hasSignal = githubDirExists || vscodeDirExists || copilotExtensionDetected;
180
+ if (!hasSignal) {
181
+ return { action: "skip-no-signal" };
182
+ }
183
+ return { action: "create", path: copilotFile.path };
184
+ }
185
+ /**
186
+ * Best-effort scan for the GitHub Copilot VS Code extension. Returns
187
+ * true if any directory under ~/.vscode/extensions/ or
188
+ * ~/.vscode-insiders/extensions/ matches `github.copilot*`. Silent on
189
+ * failure (unreadable home, no extensions dir) — never throws.
190
+ */
191
+ export function detectCopilotExtension() {
192
+ const candidates = [
193
+ join(homedir(), ".vscode", "extensions"),
194
+ join(homedir(), ".vscode-insiders", "extensions"),
195
+ join(homedir(), ".vscode-server", "extensions"),
196
+ ];
197
+ for (const dir of candidates) {
198
+ try {
199
+ if (!existsSync(dir))
200
+ continue;
201
+ const entries = readdirSync(dir);
202
+ if (entries.some((e) => /^github\.copilot/i.test(e)))
203
+ return true;
204
+ }
205
+ catch {
206
+ // unreadable — fall through
207
+ }
208
+ }
209
+ return false;
210
+ }
147
211
  /**
148
212
  * Resolve the absolute path to the sverklo binary.
149
213
  * Using a full path is more reliable than relying on PATH inheritance
@@ -249,11 +313,11 @@ export async function initProject(projectPath, options = {}) {
249
313
  console.log(` ${agentsTarget.fileName} — already has sverklo instructions, skipping`);
250
314
  break;
251
315
  case "append":
252
- writeFileSync(agentsTarget.path, agentsTarget.existingContent + "\n" + CLAUDE_MD_SNIPPET);
316
+ writeFileSync(agentsTarget.path, agentsTarget.existingContent + "\n" + SVERKLO_SNIPPET);
253
317
  console.log(` ${agentsTarget.fileName} — appended sverklo instructions${agentsTarget.note ? ` (${agentsTarget.note})` : ""}`);
254
318
  break;
255
319
  case "create-claude-md":
256
- writeFileSync(agentsTarget.path, CLAUDE_MD_SNIPPET.trim() + "\n");
320
+ writeFileSync(agentsTarget.path, SVERKLO_SNIPPET.trim() + "\n");
257
321
  console.log(" CLAUDE.md — created with sverklo instructions");
258
322
  claudeMdCreatedByInit = true;
259
323
  break;
@@ -261,6 +325,82 @@ export async function initProject(projectPath, options = {}) {
261
325
  // Carry the legacy variable name forward for the rest of initProject —
262
326
  // ingestion logic in step 5 keys off "did init create CLAUDE.md".
263
327
  const claudeMdPath = join(projectPath, "CLAUDE.md");
328
+ // 1.5. GitHub Copilot — issue #24. Copilot Chat reads
329
+ // `.github/copilot-instructions.md` as a preamble for every prompt.
330
+ // Without it, even with `.vscode/mcp.json` wired up, Copilot
331
+ // keeps grep-ing because nothing tells it to prefer sverklo.
332
+ // MCP integration is already covered by VS Code's `.vscode/mcp.json`
333
+ // below, so this block is purely about behavioral steering.
334
+ const copilotInstructionsPath = join(projectPath, ".github", "copilot-instructions.md");
335
+ const copilotExtensionDetected = detectCopilotExtension();
336
+ const copilotTarget = resolveCopilotInstructionsTarget({
337
+ projectPath,
338
+ copilotFile: readFileMaybe(copilotInstructionsPath),
339
+ githubDirExists: existsSync(join(projectPath, ".github")),
340
+ vscodeDirExists: existsSync(join(projectPath, ".vscode")),
341
+ copilotExtensionDetected,
342
+ sentinel: "sverklo_search",
343
+ });
344
+ switch (copilotTarget.action) {
345
+ case "skip-no-signal":
346
+ // Silent — most projects don't use GitHub Copilot, no need for noise.
347
+ break;
348
+ case "skip-already-present":
349
+ console.log(" .github/copilot-instructions.md — already has sverklo instructions, skipping");
350
+ break;
351
+ case "append":
352
+ writeFileSync(copilotTarget.path, copilotTarget.existingContent + "\n" + SVERKLO_SNIPPET);
353
+ console.log(" .github/copilot-instructions.md — appended sverklo instructions");
354
+ break;
355
+ case "create": {
356
+ // Capture trigger reason BEFORE mkdirSync — otherwise `.github/`
357
+ // would always show as the reason since mkdirSync creates it.
358
+ const why = copilotExtensionDetected
359
+ ? "Copilot extension detected"
360
+ : existsSync(join(projectPath, ".github"))
361
+ ? ".github/ exists"
362
+ : ".vscode/ exists";
363
+ mkdirSync(dirname(copilotTarget.path), { recursive: true });
364
+ writeFileSync(copilotTarget.path, SVERKLO_SNIPPET.trim() + "\n");
365
+ console.log(` .github/copilot-instructions.md — created with sverklo instructions (${why})`);
366
+ break;
367
+ }
368
+ }
369
+ // 1.6. VS Code settings.json — flip on `useInstructionFiles` so
370
+ // Copilot actually reads `.github/copilot-instructions.md`.
371
+ // The default varies across VS Code versions, and a Copilot user
372
+ // with the file but the setting off gets a silent no-op (sverklo
373
+ // took the blame). Only touch this key — preserve everything else.
374
+ if (copilotTarget.action === "create" ||
375
+ copilotTarget.action === "append" ||
376
+ copilotTarget.action === "skip-already-present") {
377
+ const vscodeDir = join(projectPath, ".vscode");
378
+ const vscodeSettingsPath = join(vscodeDir, "settings.json");
379
+ if (existsSync(vscodeDir)) {
380
+ let vsSettings = {};
381
+ let parsedOk = true;
382
+ if (existsSync(vscodeSettingsPath)) {
383
+ try {
384
+ vsSettings = JSON.parse(readFileSync(vscodeSettingsPath, "utf-8"));
385
+ }
386
+ catch {
387
+ // Don't clobber a broken-but-user-edited file.
388
+ parsedOk = false;
389
+ }
390
+ }
391
+ if (parsedOk) {
392
+ const KEY = "github.copilot.chat.codeGeneration.useInstructionFiles";
393
+ if (vsSettings[KEY] !== true) {
394
+ vsSettings[KEY] = true;
395
+ writeFileSync(vscodeSettingsPath, JSON.stringify(vsSettings, null, 2) + "\n");
396
+ console.log(` .vscode/settings.json — set ${KEY}: true`);
397
+ }
398
+ }
399
+ else {
400
+ console.log(" .vscode/settings.json — invalid JSON, skipping Copilot instructionFiles toggle");
401
+ }
402
+ }
403
+ }
264
404
  // 2. MCP server config — Claude Code reads .mcp.json AT PROJECT ROOT for project-scoped servers.
265
405
  // .claude/mcp.json is NOT read by Claude Code (verified Apr 2026).
266
406
  const mcpConfigPath = join(projectPath, ".mcp.json");
@@ -485,6 +625,10 @@ export async function initProject(projectPath, options = {}) {
485
625
  if (existsSync(join(homedir(), ".gemini", "antigravity"))) {
486
626
  void track("init.detected.antigravity");
487
627
  }
628
+ if (copilotExtensionDetected ||
629
+ existsSync(join(projectPath, ".github", "copilot-instructions.md"))) {
630
+ void track("init.detected.copilot");
631
+ }
488
632
  // 8. First-run nudge: ask once whether the user wants to opt in. Stored in
489
633
  // ~/.sverklo/init-nudged so it never asks again, even across projects.
490
634
  // Stays one line to avoid feeling pushy.
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ export interface ReceiptOptions {
2
+ /** Window in days. Default 7. */
3
+ sinceDays?: number;
4
+ /** Output format. */
5
+ format?: "plain" | "json";
6
+ /** Override session-log root (testing). */
7
+ rootDir?: string;
8
+ }
9
+ interface ToolStat {
10
+ calls: number;
11
+ resultBytes: number;
12
+ }
13
+ export interface ReceiptStats {
14
+ sessions: number;
15
+ windowDays: number;
16
+ inputTokens: number;
17
+ cacheReadTokens: number;
18
+ cacheCreationTokens: number;
19
+ outputTokens: number;
20
+ /** Sum of bytes returned by tool_result blocks. */
21
+ toolResultBytes: number;
22
+ /** Per-tool aggregates, sorted by resultBytes desc. */
23
+ byTool: Array<{
24
+ name: string;
25
+ } & ToolStat>;
26
+ /** Worst single tool call (largest tool_result payload). */
27
+ worstCall: {
28
+ tool: string;
29
+ bytes: number;
30
+ sessionFile: string;
31
+ } | null;
32
+ }
33
+ export interface CostEstimate {
34
+ /** Sonnet ratecard: $3/M input, $15/M output. */
35
+ sonnetUsd: number;
36
+ /** Opus ratecard: $15/M input, $75/M output. */
37
+ opusUsd: number;
38
+ projectedYearlyUsd: number;
39
+ }
40
+ /**
41
+ * Walk the Claude Code session-log root and return every `.jsonl` file
42
+ * modified within the last `sinceDays` days. Cursor logs are not yet
43
+ * standardized in a known location; deferred.
44
+ */
45
+ export declare function findSessionLogs(opts?: ReceiptOptions): string[];
46
+ /**
47
+ * Build the receipt from all session logs in the window. Pure aggregation;
48
+ * no I/O outside `findSessionLogs` and `readFileSync`.
49
+ */
50
+ export declare function generateReceipt(opts?: ReceiptOptions): ReceiptStats;
51
+ export declare function estimateCost(stats: ReceiptStats): CostEstimate;
52
+ /**
53
+ * Render the receipt for the terminal. Plain ASCII, no color — meant
54
+ * to be screenshotable without garbled escape codes.
55
+ */
56
+ export declare function renderReceipt(stats: ReceiptStats, cost: CostEstimate): string;
57
+ /** Convenience wrapper for the CLI. */
58
+ export declare function runReceipt(opts?: ReceiptOptions): string;
59
+ export {};
@@ -0,0 +1,257 @@
1
+ // `sverklo receipt` — Spotify-Wrapped-style summary of how many tokens
2
+ // your Claude Code (and Cursor, when their logs land in a known path)
3
+ // agent burned this week, and where. The point is to make the cost
4
+ // concrete so the share-instinct kicks in.
5
+ //
6
+ // Parses ~/.claude/projects/**/*.jsonl session logs. Each line is a
7
+ // JSON event; we care about `assistant` (model usage + tool_use blocks)
8
+ // and `user` (tool_result payloads).
9
+ import { readdirSync, readFileSync, statSync } from "node:fs";
10
+ import { join } from "node:path";
11
+ import { homedir } from "node:os";
12
+ /**
13
+ * Walk the Claude Code session-log root and return every `.jsonl` file
14
+ * modified within the last `sinceDays` days. Cursor logs are not yet
15
+ * standardized in a known location; deferred.
16
+ */
17
+ export function findSessionLogs(opts = {}) {
18
+ const root = opts.rootDir ?? join(homedir(), ".claude", "projects");
19
+ const sinceDays = opts.sinceDays ?? 7;
20
+ const cutoff = Date.now() - sinceDays * 86_400_000;
21
+ const out = [];
22
+ let projects;
23
+ try {
24
+ projects = readdirSync(root);
25
+ }
26
+ catch {
27
+ return out;
28
+ }
29
+ for (const proj of projects) {
30
+ const projDir = join(root, proj);
31
+ let entries;
32
+ try {
33
+ entries = readdirSync(projDir);
34
+ }
35
+ catch {
36
+ continue;
37
+ }
38
+ for (const e of entries) {
39
+ if (!e.endsWith(".jsonl"))
40
+ continue;
41
+ const p = join(projDir, e);
42
+ try {
43
+ if (statSync(p).mtimeMs >= cutoff)
44
+ out.push(p);
45
+ }
46
+ catch {
47
+ /* skip unreadable */
48
+ }
49
+ }
50
+ }
51
+ return out;
52
+ }
53
+ /**
54
+ * Parse one session log and return its contribution to the running
55
+ * stats. Streams line-by-line so a 40 MB jsonl doesn't blow the heap.
56
+ */
57
+ function accumulate(file, agg) {
58
+ let raw;
59
+ try {
60
+ raw = readFileSync(file, "utf8");
61
+ }
62
+ catch {
63
+ return;
64
+ }
65
+ agg.sessions++;
66
+ const lines = raw.split("\n");
67
+ for (const line of lines) {
68
+ if (!line)
69
+ continue;
70
+ let o;
71
+ try {
72
+ o = JSON.parse(line);
73
+ }
74
+ catch {
75
+ continue;
76
+ }
77
+ if (typeof o !== "object" || o === null)
78
+ continue;
79
+ const ev = o;
80
+ const type = ev.type;
81
+ if (type === "assistant") {
82
+ const msg = ev.message;
83
+ const usage = msg?.usage;
84
+ if (usage) {
85
+ agg.inputTokens += usage.input_tokens ?? 0;
86
+ agg.cacheReadTokens += usage.cache_read_input_tokens ?? 0;
87
+ agg.cacheCreationTokens += usage.cache_creation_input_tokens ?? 0;
88
+ agg.outputTokens += usage.output_tokens ?? 0;
89
+ }
90
+ const content = msg?.content;
91
+ if (Array.isArray(content)) {
92
+ for (const c of content) {
93
+ if (c?.type === "tool_use") {
94
+ const name = c.name ?? "unknown";
95
+ const stat = ensureTool(agg, name);
96
+ stat.calls++;
97
+ }
98
+ }
99
+ }
100
+ }
101
+ else if (type === "user") {
102
+ const msg = ev.message;
103
+ const content = msg?.content;
104
+ if (Array.isArray(content)) {
105
+ for (const c of content) {
106
+ if (c?.type === "tool_result") {
107
+ const bytes = approxBytes(c.content);
108
+ agg.toolResultBytes += bytes;
109
+ if (!agg.worstCall || bytes > agg.worstCall.bytes) {
110
+ agg.worstCall = { tool: "unknown", bytes, sessionFile: file };
111
+ }
112
+ }
113
+ }
114
+ }
115
+ }
116
+ }
117
+ }
118
+ function ensureTool(agg, name) {
119
+ let entry = agg.byTool.find((t) => t.name === name);
120
+ if (!entry) {
121
+ entry = { name, calls: 0, resultBytes: 0 };
122
+ agg.byTool.push(entry);
123
+ }
124
+ return entry;
125
+ }
126
+ function approxBytes(content) {
127
+ if (content == null)
128
+ return 0;
129
+ if (typeof content === "string")
130
+ return content.length;
131
+ try {
132
+ return JSON.stringify(content).length;
133
+ }
134
+ catch {
135
+ return 0;
136
+ }
137
+ }
138
+ /**
139
+ * Build the receipt from all session logs in the window. Pure aggregation;
140
+ * no I/O outside `findSessionLogs` and `readFileSync`.
141
+ */
142
+ export function generateReceipt(opts = {}) {
143
+ const sinceDays = opts.sinceDays ?? 7;
144
+ const stats = {
145
+ sessions: 0,
146
+ windowDays: sinceDays,
147
+ inputTokens: 0,
148
+ cacheReadTokens: 0,
149
+ cacheCreationTokens: 0,
150
+ outputTokens: 0,
151
+ toolResultBytes: 0,
152
+ byTool: [],
153
+ worstCall: null,
154
+ };
155
+ const files = findSessionLogs(opts);
156
+ for (const f of files)
157
+ accumulate(f, stats);
158
+ stats.byTool.sort((a, b) => b.calls - a.calls);
159
+ return stats;
160
+ }
161
+ /** Anthropic public ratecards as of May 2026. Source: docs.anthropic.com. */
162
+ const RATES = {
163
+ sonnet: { input: 3, output: 15 }, // USD per 1M tokens
164
+ opus: { input: 15, output: 75 },
165
+ cacheReadDiscount: 0.1, // cache reads bill at 10% of input rate
166
+ };
167
+ export function estimateCost(stats) {
168
+ const totalIn = stats.inputTokens + stats.cacheCreationTokens;
169
+ const cacheBilled = stats.cacheReadTokens * RATES.cacheReadDiscount;
170
+ const sonnetUsd = ((totalIn + cacheBilled) * RATES.sonnet.input + stats.outputTokens * RATES.sonnet.output) /
171
+ 1_000_000;
172
+ const opusUsd = ((totalIn + cacheBilled) * RATES.opus.input + stats.outputTokens * RATES.opus.output) /
173
+ 1_000_000;
174
+ const dailyAvg = sonnetUsd / stats.windowDays;
175
+ return {
176
+ sonnetUsd,
177
+ opusUsd,
178
+ projectedYearlyUsd: dailyAvg * 365,
179
+ };
180
+ }
181
+ /**
182
+ * Render the receipt for the terminal. Plain ASCII, no color — meant
183
+ * to be screenshotable without garbled escape codes.
184
+ */
185
+ export function renderReceipt(stats, cost) {
186
+ const lines = [];
187
+ const fmt = (n) => n.toLocaleString("en-US");
188
+ const usd = (n) => `$${n.toFixed(2)}`;
189
+ const bar = "─".repeat(58);
190
+ lines.push("sverklo receipt");
191
+ lines.push(bar);
192
+ lines.push(`Last ${stats.windowDays} days · ${stats.sessions} session${stats.sessions === 1 ? "" : "s"} · ${stats.byTool.reduce((a, t) => a + t.calls, 0)} tool calls`);
193
+ lines.push("");
194
+ lines.push("Token spend");
195
+ lines.push(` Input (new): ${fmt(stats.inputTokens).padStart(13)}`);
196
+ lines.push(` Cache reads (cheap): ${fmt(stats.cacheReadTokens).padStart(13)}`);
197
+ lines.push(` Cache writes (full price): ${fmt(stats.cacheCreationTokens).padStart(13)}`);
198
+ lines.push(` Output: ${fmt(stats.outputTokens).padStart(13)}`);
199
+ lines.push("");
200
+ lines.push("Estimated cost");
201
+ lines.push(` Sonnet rates: ${usd(cost.sonnetUsd).padStart(13)}`);
202
+ lines.push(` Opus rates: ${usd(cost.opusUsd).padStart(13)}`);
203
+ lines.push(` Projected yearly (Sonnet): ${usd(cost.projectedYearlyUsd).padStart(13)}`);
204
+ lines.push("");
205
+ if (stats.byTool.length) {
206
+ lines.push(`Top tool consumers`);
207
+ const top = stats.byTool.slice(0, 8);
208
+ const widest = Math.max(...top.map((t) => t.name.length));
209
+ for (const t of top) {
210
+ const calls = `${t.calls} call${t.calls === 1 ? "" : "s"}`;
211
+ lines.push(` ${t.name.padEnd(widest)} ${calls.padStart(10)}`);
212
+ }
213
+ lines.push("");
214
+ }
215
+ if (stats.worstCall && stats.worstCall.bytes > 0) {
216
+ const kb = (stats.worstCall.bytes / 1024).toFixed(1);
217
+ const approxTokens = Math.round(stats.worstCall.bytes / 4);
218
+ lines.push(`Worst single tool result: ${kb} KB (~${fmt(approxTokens)} tokens)`);
219
+ lines.push("");
220
+ }
221
+ // Stop-the-bleeding CTA.
222
+ lines.push("Stop the bleeding — paste this into ~/.cursor/mcp.json");
223
+ lines.push("(or run `sverklo init` to auto-detect your agent and write it):");
224
+ lines.push("");
225
+ lines.push(` {`);
226
+ lines.push(` "mcpServers": {`);
227
+ lines.push(` "sverklo": { "command": "npx", "args": ["-y", "sverklo"] }`);
228
+ lines.push(` }`);
229
+ lines.push(` }`);
230
+ lines.push("");
231
+ lines.push("Then run `sverklo receipt` again next week to compare.");
232
+ lines.push(bar);
233
+ return lines.join("\n");
234
+ }
235
+ /** Convenience wrapper for the CLI. */
236
+ export function runReceipt(opts = {}) {
237
+ const stats = generateReceipt(opts);
238
+ if (stats.sessions === 0) {
239
+ return [
240
+ "sverklo receipt",
241
+ "─".repeat(58),
242
+ "",
243
+ `No Claude Code sessions found in the last ${opts.sinceDays ?? 7} days at`,
244
+ ` ${opts.rootDir ?? join(homedir(), ".claude", "projects")}`,
245
+ "",
246
+ "If you use Claude Code, this directory should populate automatically.",
247
+ "If you only use Cursor, log support is on the roadmap — open an issue:",
248
+ " https://github.com/sverklo/sverklo/issues/new",
249
+ "",
250
+ ].join("\n");
251
+ }
252
+ if (opts.format === "json") {
253
+ return JSON.stringify({ stats, cost: estimateCost(stats) }, null, 2);
254
+ }
255
+ return renderReceipt(stats, estimateCost(stats));
256
+ }
257
+ //# sourceMappingURL=receipt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../src/receipt.ts"],"names":[],"mappings":"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"}
@@ -68,13 +68,24 @@ export class ChunkStore {
68
68
  * prepared statements over the files table.
69
69
  */
70
70
  getByNameWithFile(namePattern, limit = 20) {
71
+ // Match-quality sort: exact match first, then prefix match, then
72
+ // substring. Without this, looking up `map` on lodash returns
73
+ // `arrayMap`, `mapToArray`, `MapCache` etc. ranked by file
74
+ // pagerank — burying the actual `map` function past the lookup's
75
+ // result limit. Bench P1 on lodash went 0/10 → 9/10 once this
76
+ // was added on top of the parser fix.
71
77
  return this.db
72
- .prepare(`SELECT c.*, f.path as filePath, f.pagerank, f.language as fileLanguage
78
+ .prepare(`SELECT c.*, f.path as filePath, f.pagerank, f.language as fileLanguage,
79
+ CASE
80
+ WHEN c.name = ? THEN 0
81
+ WHEN c.name LIKE ? THEN 1
82
+ ELSE 2
83
+ END as match_quality
73
84
  FROM chunks c JOIN files f ON c.file_id = f.id
74
85
  WHERE c.name LIKE ?
75
- ORDER BY f.pagerank DESC
86
+ ORDER BY match_quality ASC, f.pagerank DESC
76
87
  LIMIT ?`)
77
- .all(`%${namePattern}%`, limit);
88
+ .all(namePattern, `${namePattern}%`, `%${namePattern}%`, limit);
78
89
  }
79
90
  count() {
80
91
  return this.db.prepare("SELECT COUNT(*) as c FROM chunks").get().c;
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-store.js","sourceRoot":"","sources":["../../../src/storage/chunk-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chunk-store.js","sourceRoot":"","sources":["../../../src/storage/chunk-store.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  export type Os = "darwin" | "linux" | "win32" | "other";
2
2
  export type Outcome = "ok" | "error" | "timeout";
3
- export type EventType = "init.run" | "init.detected.claude-code" | "init.detected.cursor" | "init.detected.windsurf" | "init.detected.vscode" | "init.detected.jetbrains" | "init.detected.antigravity" | "doctor.run" | "doctor.issue" | "index.cold_start" | "index.refresh" | "tool.call" | "memory.write" | "memory.read" | "memory.staleness_detected" | "session.heartbeat" | "opt_in" | "opt_out";
3
+ export type EventType = "init.run" | "init.detected.claude-code" | "init.detected.cursor" | "init.detected.windsurf" | "init.detected.vscode" | "init.detected.jetbrains" | "init.detected.antigravity" | "init.detected.copilot" | "doctor.run" | "doctor.issue" | "index.cold_start" | "index.refresh" | "tool.call" | "memory.write" | "memory.read" | "memory.staleness_detected" | "session.heartbeat" | "opt_in" | "opt_out";
4
4
  export interface Event {
5
5
  install_id: string;
6
6
  version: string;