sverklo 0.2.12 → 0.2.14

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 (116) hide show
  1. package/README.md +102 -13
  2. package/dist/bin/sverklo.js +69 -1
  3. package/dist/bin/sverklo.js.map +1 -1
  4. package/dist/src/audit-prompt.d.ts +2 -0
  5. package/dist/src/audit-prompt.js +91 -0
  6. package/dist/src/audit-prompt.js.map +1 -0
  7. package/dist/src/doctor.js +55 -0
  8. package/dist/src/doctor.js.map +1 -1
  9. package/dist/src/indexer/embedding-providers.d.ts +34 -0
  10. package/dist/src/indexer/embedding-providers.js +215 -0
  11. package/dist/src/indexer/embedding-providers.js.map +1 -0
  12. package/dist/src/indexer/embedding-providers.test.d.ts +1 -0
  13. package/dist/src/indexer/embedding-providers.test.js +83 -0
  14. package/dist/src/indexer/embedding-providers.test.js.map +1 -0
  15. package/dist/src/indexer/indexer-freshness.test.d.ts +1 -0
  16. package/dist/src/indexer/indexer-freshness.test.js +109 -0
  17. package/dist/src/indexer/indexer-freshness.test.js.map +1 -0
  18. package/dist/src/indexer/indexer-provider-integration.test.d.ts +1 -0
  19. package/dist/src/indexer/indexer-provider-integration.test.js +142 -0
  20. package/dist/src/indexer/indexer-provider-integration.test.js.map +1 -0
  21. package/dist/src/indexer/indexer.d.ts +44 -0
  22. package/dist/src/indexer/indexer.js +153 -10
  23. package/dist/src/indexer/indexer.js.map +1 -1
  24. package/dist/src/indexer/migration.test.d.ts +1 -0
  25. package/dist/src/indexer/migration.test.js +144 -0
  26. package/dist/src/indexer/migration.test.js.map +1 -0
  27. package/dist/src/indexer/symbol-extractor.js +17 -5
  28. package/dist/src/indexer/symbol-extractor.js.map +1 -1
  29. package/dist/src/indexer/symbol-extractor.test.d.ts +1 -0
  30. package/dist/src/indexer/symbol-extractor.test.js +88 -0
  31. package/dist/src/indexer/symbol-extractor.test.js.map +1 -0
  32. package/dist/src/indexer/watcher.js +4 -0
  33. package/dist/src/indexer/watcher.js.map +1 -1
  34. package/dist/src/memory/journal.d.ts +62 -0
  35. package/dist/src/memory/journal.js +136 -0
  36. package/dist/src/memory/journal.js.map +1 -0
  37. package/dist/src/memory/journal.test.d.ts +1 -0
  38. package/dist/src/memory/journal.test.js +98 -0
  39. package/dist/src/memory/journal.test.js.map +1 -0
  40. package/dist/src/modes.d.ts +16 -0
  41. package/dist/src/modes.js +104 -0
  42. package/dist/src/modes.js.map +1 -0
  43. package/dist/src/modes.test.d.ts +1 -0
  44. package/dist/src/modes.test.js +48 -0
  45. package/dist/src/modes.test.js.map +1 -0
  46. package/dist/src/search/hybrid-search.d.ts +22 -0
  47. package/dist/src/search/hybrid-search.js +169 -7
  48. package/dist/src/search/hybrid-search.js.map +1 -1
  49. package/dist/src/search/hybrid-search.test.d.ts +1 -0
  50. package/dist/src/search/hybrid-search.test.js +112 -0
  51. package/dist/src/search/hybrid-search.test.js.map +1 -0
  52. package/dist/src/search/token-budget.d.ts +1 -0
  53. package/dist/src/search/token-budget.js +34 -6
  54. package/dist/src/search/token-budget.js.map +1 -1
  55. package/dist/src/server/mcp-server.js +32 -25
  56. package/dist/src/server/mcp-server.js.map +1 -1
  57. package/dist/src/server/tool-overrides.d.ts +16 -0
  58. package/dist/src/server/tool-overrides.js +102 -0
  59. package/dist/src/server/tool-overrides.js.map +1 -0
  60. package/dist/src/server/tool-overrides.test.d.ts +1 -0
  61. package/dist/src/server/tool-overrides.test.js +124 -0
  62. package/dist/src/server/tool-overrides.test.js.map +1 -0
  63. package/dist/src/server/tools/context-budget.test.d.ts +1 -0
  64. package/dist/src/server/tools/context-budget.test.js +150 -0
  65. package/dist/src/server/tools/context-budget.test.js.map +1 -0
  66. package/dist/src/server/tools/context.d.ts +11 -1
  67. package/dist/src/server/tools/context.js +202 -8
  68. package/dist/src/server/tools/context.js.map +1 -1
  69. package/dist/src/server/tools/diff-heuristics.d.ts +28 -0
  70. package/dist/src/server/tools/diff-heuristics.js +213 -0
  71. package/dist/src/server/tools/diff-heuristics.js.map +1 -0
  72. package/dist/src/server/tools/diff-heuristics.test.d.ts +1 -0
  73. package/dist/src/server/tools/diff-heuristics.test.js +151 -0
  74. package/dist/src/server/tools/diff-heuristics.test.js.map +1 -0
  75. package/dist/src/server/tools/find-references.d.ts +4 -0
  76. package/dist/src/server/tools/find-references.js +46 -6
  77. package/dist/src/server/tools/find-references.js.map +1 -1
  78. package/dist/src/server/tools/find-references.test.d.ts +1 -0
  79. package/dist/src/server/tools/find-references.test.js +98 -0
  80. package/dist/src/server/tools/find-references.test.js.map +1 -0
  81. package/dist/src/server/tools/forget.js +3 -0
  82. package/dist/src/server/tools/forget.js.map +1 -1
  83. package/dist/src/server/tools/index-status.js +16 -0
  84. package/dist/src/server/tools/index-status.js.map +1 -1
  85. package/dist/src/server/tools/lookup.js +21 -13
  86. package/dist/src/server/tools/lookup.js.map +1 -1
  87. package/dist/src/server/tools/lookup.test.d.ts +1 -0
  88. package/dist/src/server/tools/lookup.test.js +110 -0
  89. package/dist/src/server/tools/lookup.test.js.map +1 -0
  90. package/dist/src/server/tools/recall.d.ts +5 -1
  91. package/dist/src/server/tools/recall.js +68 -6
  92. package/dist/src/server/tools/recall.js.map +1 -1
  93. package/dist/src/server/tools/recall.test.d.ts +1 -0
  94. package/dist/src/server/tools/recall.test.js +116 -0
  95. package/dist/src/server/tools/recall.test.js.map +1 -0
  96. package/dist/src/server/tools/remember.js +16 -2
  97. package/dist/src/server/tools/remember.js.map +1 -1
  98. package/dist/src/server/tools/review-diff.js +31 -0
  99. package/dist/src/server/tools/review-diff.js.map +1 -1
  100. package/dist/src/server/tools/search.js +29 -4
  101. package/dist/src/server/tools/search.js.map +1 -1
  102. package/dist/src/server/tools/search.test.d.ts +1 -0
  103. package/dist/src/server/tools/search.test.js +118 -0
  104. package/dist/src/server/tools/search.test.js.map +1 -0
  105. package/dist/src/server/tools/tier.js +25 -1
  106. package/dist/src/server/tools/tier.js.map +1 -1
  107. package/dist/src/storage/chunk-store.d.ts +12 -0
  108. package/dist/src/storage/chunk-store.js +16 -0
  109. package/dist/src/storage/chunk-store.js.map +1 -1
  110. package/dist/src/storage/chunk-store.test.d.ts +1 -0
  111. package/dist/src/storage/chunk-store.test.js +69 -0
  112. package/dist/src/storage/chunk-store.test.js.map +1 -0
  113. package/dist/src/storage/database.d.ts +13 -0
  114. package/dist/src/storage/database.js +47 -0
  115. package/dist/src/storage/database.js.map +1 -1
  116. package/package.json +5 -2
@@ -5,6 +5,7 @@ import { GraphStore } from "../storage/graph-store.js";
5
5
  import { MemoryStore } from "../storage/memory-store.js";
6
6
  import { MemoryEmbeddingStore } from "../storage/memory-embedding-store.js";
7
7
  import { SymbolRefStore } from "../storage/symbol-ref-store.js";
8
+ import { MemoryJournal } from "../memory/journal.js";
8
9
  import type { ProjectConfig, IndexStatus } from "../types/index.js";
9
10
  export declare class Indexer {
10
11
  private config;
@@ -16,11 +17,48 @@ export declare class Indexer {
16
17
  memoryStore: MemoryStore;
17
18
  memoryEmbeddingStore: MemoryEmbeddingStore;
18
19
  symbolRefStore: SymbolRefStore;
20
+ memoryJournal: MemoryJournal;
21
+ private embeddingProvider;
19
22
  private indexing;
20
23
  private progress;
21
24
  private lastIndexedTime;
25
+ private freshnessCache;
26
+ private static readonly FRESHNESS_CACHE_MS;
22
27
  constructor(config: ProjectConfig);
28
+ /**
29
+ * Bring the on-disk data layer up to CURRENT_DATA_VERSION. Runs
30
+ * once on Indexer construction and is a no-op on already-current
31
+ * databases.
32
+ *
33
+ * Migrations are intentionally side-effecting on this instance's
34
+ * stores; each one should be small, deterministic, and fast.
35
+ */
36
+ private runDataMigrations;
23
37
  get rootPath(): string;
38
+ /**
39
+ * Embed a batch of texts using the selected provider. Callers should
40
+ * prefer this over importing the legacy embed() directly so that a
41
+ * single env-var change (SVERKLO_EMBEDDING_PROVIDER) actually takes
42
+ * effect across every query path.
43
+ *
44
+ * If the provider hasn't been lazily initialized yet (embed() called
45
+ * before the first index() run), we init the default provider
46
+ * synchronously via the bundled ONNX module so read-path tools like
47
+ * search / recall / remember still work during bootstrap.
48
+ */
49
+ embed(texts: string[]): Promise<Float32Array[]>;
50
+ /**
51
+ * Human-readable name of the active embedding provider. Used by
52
+ * sverklo_status and sverklo doctor to show the user which provider
53
+ * their env vars actually selected. Returns "default" if the
54
+ * provider hasn't been initialized yet.
55
+ */
56
+ get embeddingProviderName(): string;
57
+ /**
58
+ * Dimensions of the active embedding provider. Surfaced in status
59
+ * so users can spot a dimension mismatch that would require reindex.
60
+ */
61
+ get embeddingDimensions(): number;
24
62
  index(): Promise<void>;
25
63
  reindexFile(relativePath: string, absolutePath: string, language: string): Promise<void>;
26
64
  removeFile(relativePath: string): void;
@@ -38,6 +76,12 @@ export declare class Indexer {
38
76
  dirtyFiles: string[];
39
77
  missingFiles: string[];
40
78
  };
79
+ /**
80
+ * Drop the freshness cache. Called by the file watcher when a real
81
+ * change event fires so the next sverklo_status reflects reality
82
+ * without waiting for the 2-second TTL.
83
+ */
84
+ invalidateFreshnessCache(): void;
41
85
  close(): void;
42
86
  /**
43
87
  * Delete the index database entirely and reinitialize empty stores.
@@ -1,6 +1,6 @@
1
1
  import { readFileSync, existsSync, unlinkSync } from "node:fs";
2
2
  import { createHash } from "node:crypto";
3
- import { createDatabase } from "../storage/database.js";
3
+ import { createDatabase, getDataVersion, setDataVersion, CURRENT_DATA_VERSION, } from "../storage/database.js";
4
4
  import { FileStore } from "../storage/file-store.js";
5
5
  import { ChunkStore } from "../storage/chunk-store.js";
6
6
  import { EmbeddingStore } from "../storage/embedding-store.js";
@@ -8,10 +8,12 @@ import { GraphStore } from "../storage/graph-store.js";
8
8
  import { MemoryStore } from "../storage/memory-store.js";
9
9
  import { MemoryEmbeddingStore } from "../storage/memory-embedding-store.js";
10
10
  import { SymbolRefStore } from "../storage/symbol-ref-store.js";
11
+ import { MemoryJournal } from "../memory/journal.js";
11
12
  import { discoverFiles } from "./file-discovery.js";
12
13
  import { parseFile } from "./parser.js";
13
14
  import { describeChunk } from "./describer.js";
14
- import { embed, initEmbedder } from "./embedder.js";
15
+ import { embed as legacyEmbed, initEmbedder } from "./embedder.js";
16
+ import { createEmbeddingProvider, } from "./embedding-providers.js";
15
17
  import { buildGraph } from "./graph-builder.js";
16
18
  import { extractReferences } from "./symbol-extractor.js";
17
19
  import { createIgnoreFilter } from "../utils/ignore.js";
@@ -28,9 +30,23 @@ export class Indexer {
28
30
  memoryStore;
29
31
  memoryEmbeddingStore;
30
32
  symbolRefStore;
33
+ memoryJournal;
34
+ // Issue #9 wiring (caught during dogfood session, 2026-04-08):
35
+ // The pluggable provider factory existed but the indexer was still
36
+ // calling the bundled ONNX embed() directly, so SVERKLO_EMBEDDING_PROVIDER
37
+ // had no effect. We lazily select a provider on the first index() call,
38
+ // then use it everywhere via the public embed() method below.
39
+ embeddingProvider = null;
31
40
  indexing = false;
32
41
  progress = { done: 0, total: 0 };
33
42
  lastIndexedTime = null;
43
+ // Freshness result cache. The disk walk in getFreshness() dominates the
44
+ // cost of sverklo_status (~95ms on a 150-file repo before this cache was
45
+ // added — see issue #6). Status is a read-only advisory call and the
46
+ // filesystem doesn't meaningfully change in a 2-second window, so we
47
+ // memoize briefly. The file watcher invalidates on real changes below.
48
+ freshnessCache = null;
49
+ static FRESHNESS_CACHE_MS = 2000;
34
50
  constructor(config) {
35
51
  this.config = config;
36
52
  this.db = createDatabase(config.dbPath);
@@ -41,21 +57,116 @@ export class Indexer {
41
57
  this.memoryStore = new MemoryStore(this.db);
42
58
  this.memoryEmbeddingStore = new MemoryEmbeddingStore(this.db);
43
59
  this.symbolRefStore = new SymbolRefStore(this.db);
60
+ this.memoryJournal = new MemoryJournal(config.rootPath);
61
+ // Run any outstanding data migrations before any query code touches
62
+ // the stores. Migrations are surgical — they operate on the existing
63
+ // data and never require a full reindex — so the user sees zero
64
+ // downtime on upgrade.
65
+ this.runDataMigrations();
66
+ }
67
+ /**
68
+ * Bring the on-disk data layer up to CURRENT_DATA_VERSION. Runs
69
+ * once on Indexer construction and is a no-op on already-current
70
+ * databases.
71
+ *
72
+ * Migrations are intentionally side-effecting on this instance's
73
+ * stores; each one should be small, deterministic, and fast.
74
+ */
75
+ runDataMigrations() {
76
+ const stored = getDataVersion(this.db);
77
+ if (stored >= CURRENT_DATA_VERSION)
78
+ return;
79
+ // A fresh database has version 0 and no data yet — we'll stamp it
80
+ // below without running any migrations. Only existing data needs
81
+ // upgrading.
82
+ const chunkCount = this.chunkStore.count();
83
+ if (stored < 2 && chunkCount > 0) {
84
+ // Migration 1 → 2: re-extract symbol references from every
85
+ // existing chunk. Fixes github.com/sverklo/sverklo/issues/13
86
+ // where v0.2.13 and earlier collapsed repeat calls of the
87
+ // same symbol in one chunk to a single symbol_refs row.
88
+ //
89
+ // We drop the old symbol_refs rows and re-run extractReferences
90
+ // in-process. No file I/O, no re-parsing — just regex over the
91
+ // chunk bodies we already have in the DB.
92
+ log(`[migration] data_version ${stored} → 2: re-extracting symbol refs for ${chunkCount} chunks (fixes #13)`);
93
+ const t0 = Date.now();
94
+ this.db.exec("DELETE FROM symbol_refs");
95
+ // Pull chunks one at a time to keep memory bounded on huge repos.
96
+ const rows = this.db
97
+ .prepare("SELECT id, name, start_line, content FROM chunks")
98
+ .all();
99
+ let totalRefs = 0;
100
+ const insertTxn = this.db.transaction(() => {
101
+ for (const row of rows) {
102
+ const refs = extractReferences(row.content, row.name);
103
+ for (const ref of refs) {
104
+ this.symbolRefStore.insert(row.id, ref.name, row.start_line + ref.line);
105
+ totalRefs++;
106
+ }
107
+ }
108
+ });
109
+ insertTxn();
110
+ log(`[migration] extracted ${totalRefs} symbol refs in ${Date.now() - t0}ms`);
111
+ }
112
+ setDataVersion(this.db, CURRENT_DATA_VERSION);
44
113
  }
45
114
  get rootPath() {
46
115
  return this.config.rootPath;
47
116
  }
117
+ /**
118
+ * Embed a batch of texts using the selected provider. Callers should
119
+ * prefer this over importing the legacy embed() directly so that a
120
+ * single env-var change (SVERKLO_EMBEDDING_PROVIDER) actually takes
121
+ * effect across every query path.
122
+ *
123
+ * If the provider hasn't been lazily initialized yet (embed() called
124
+ * before the first index() run), we init the default provider
125
+ * synchronously via the bundled ONNX module so read-path tools like
126
+ * search / recall / remember still work during bootstrap.
127
+ */
128
+ async embed(texts) {
129
+ if (this.embeddingProvider) {
130
+ return this.embeddingProvider.embed(texts);
131
+ }
132
+ // Fallback: lazy-init the default provider. Happens if search /
133
+ // recall is called before index() completes.
134
+ await initEmbedder();
135
+ return legacyEmbed(texts);
136
+ }
137
+ /**
138
+ * Human-readable name of the active embedding provider. Used by
139
+ * sverklo_status and sverklo doctor to show the user which provider
140
+ * their env vars actually selected. Returns "default" if the
141
+ * provider hasn't been initialized yet.
142
+ */
143
+ get embeddingProviderName() {
144
+ return this.embeddingProvider?.name ?? "default";
145
+ }
146
+ /**
147
+ * Dimensions of the active embedding provider. Surfaced in status
148
+ * so users can spot a dimension mismatch that would require reindex.
149
+ */
150
+ get embeddingDimensions() {
151
+ return this.embeddingProvider?.dimensions ?? 384;
152
+ }
48
153
  async index() {
49
154
  if (this.indexing)
50
155
  return;
51
156
  this.indexing = true;
52
157
  // Cold-start vs refresh detection: cold start = no file records yet.
53
- // Computed before initEmbedder so we don't count model download in duration.
158
+ // Computed before provider init so we don't count model download in duration.
54
159
  const __isColdStart = this.fileStore.count() === 0;
55
160
  try {
56
161
  log(`Indexing ${this.config.rootPath}...`);
57
162
  const startTime = Date.now();
58
- await initEmbedder();
163
+ // Select the embedding provider lazily on first index. This
164
+ // reads SVERKLO_EMBEDDING_PROVIDER + related env vars and falls
165
+ // back to the bundled ONNX model on any failure. Only runs once
166
+ // per Indexer instance — subsequent index() calls reuse it.
167
+ if (!this.embeddingProvider) {
168
+ this.embeddingProvider = await createEmbeddingProvider();
169
+ }
59
170
  // 1. Discover files
60
171
  const ignoreFilter = createIgnoreFilter(this.config.rootPath);
61
172
  const files = discoverFiles(this.config.rootPath, ignoreFilter);
@@ -132,7 +243,7 @@ export class Indexer {
132
243
  for (let i = 0; i < embeddingBatch.length; i += BATCH_SIZE) {
133
244
  const batch = embeddingBatch.slice(i, i + BATCH_SIZE);
134
245
  const texts = batch.map((b) => b.text);
135
- const vectors = await embed(texts);
246
+ const vectors = await this.embed(texts);
136
247
  for (let j = 0; j < batch.length; j++) {
137
248
  this.embeddingStore.insert(batch[j].chunkId, vectors[j]);
138
249
  }
@@ -144,6 +255,11 @@ export class Indexer {
144
255
  buildGraph(fileImports, this.fileStore, this.graphStore, this.config.rootPath);
145
256
  // 8. Update project metadata
146
257
  this.lastIndexedTime = Date.now();
258
+ // Any full reindex invalidates the freshness cache: the disk
259
+ // walk we cached is stale relative to the new index state.
260
+ // Skipping this left sverklo_status showing the old dirty list
261
+ // for up to FRESHNESS_CACHE_MS after a forced rebuild.
262
+ this.freshnessCache = null;
147
263
  const elapsed = this.lastIndexedTime - startTime;
148
264
  log(`Indexing complete: ${this.fileStore.count()} files, ` +
149
265
  `${this.chunkStore.count()} chunks in ${elapsed}ms`);
@@ -185,7 +301,7 @@ export class Indexer {
185
301
  this.symbolRefStore.insert(chunkId, ref.name, chunk.startLine + ref.line);
186
302
  }
187
303
  const embText = description + "\n" + chunk.content.slice(0, 512);
188
- const [vector] = await embed([embText]);
304
+ const [vector] = await this.embed([embText]);
189
305
  this.embeddingStore.insert(chunkId, vector);
190
306
  }
191
307
  }
@@ -217,6 +333,18 @@ export class Indexer {
217
333
  * is a low-frequency call (start of session) so the cost is acceptable.
218
334
  */
219
335
  getFreshness() {
336
+ // Serve from cache if recent. Issue #6 — this call dominated the
337
+ // wall-clock cost of sverklo_status, which agents can hit multiple
338
+ // times per session.
339
+ if (this.freshnessCache &&
340
+ Date.now() - this.freshnessCache.ts < Indexer.FRESHNESS_CACHE_MS) {
341
+ // Refresh ageSeconds (wall-clock keeps moving) but reuse the
342
+ // expensive disk-walk result.
343
+ const ageSeconds = this.lastIndexedTime === null
344
+ ? null
345
+ : Math.floor((Date.now() - this.lastIndexedTime) / 1000);
346
+ return { ...this.freshnessCache.result, ageSeconds };
347
+ }
220
348
  const ageSeconds = this.lastIndexedTime === null
221
349
  ? null
222
350
  : Math.floor((Date.now() - this.lastIndexedTime) / 1000);
@@ -226,8 +354,13 @@ export class Indexer {
226
354
  const ignoreFilter = createIgnoreFilter(this.config.rootPath);
227
355
  const onDisk = discoverFiles(this.config.rootPath, ignoreFilter);
228
356
  const onDiskMap = new Map(onDisk.map((f) => [f.relativePath, f.lastModified]));
229
- // Files indexed but missing or stale on disk
230
- for (const indexed of this.fileStore.getAll()) {
357
+ // Single pass over the indexed file list the previous version
358
+ // called fileStore.getAll() twice, doubling the SQLite scan cost
359
+ // on large repos.
360
+ const indexedFiles = this.fileStore.getAll();
361
+ const indexedPaths = new Set();
362
+ for (const indexed of indexedFiles) {
363
+ indexedPaths.add(indexed.path);
231
364
  const diskMtime = onDiskMap.get(indexed.path);
232
365
  if (diskMtime === undefined) {
233
366
  missingFiles.push(indexed.path);
@@ -237,7 +370,6 @@ export class Indexer {
237
370
  }
238
371
  }
239
372
  // Files on disk but not in the index (new since last index)
240
- const indexedPaths = new Set(this.fileStore.getAll().map((f) => f.path));
241
373
  for (const f of onDisk) {
242
374
  if (!indexedPaths.has(f.relativePath)) {
243
375
  dirtyFiles.push(f.relativePath);
@@ -247,7 +379,17 @@ export class Indexer {
247
379
  catch (err) {
248
380
  logError("getFreshness: disk walk failed", err);
249
381
  }
250
- return { ageSeconds, dirtyFiles, missingFiles };
382
+ const result = { ageSeconds, dirtyFiles, missingFiles };
383
+ this.freshnessCache = { ts: Date.now(), result };
384
+ return result;
385
+ }
386
+ /**
387
+ * Drop the freshness cache. Called by the file watcher when a real
388
+ * change event fires so the next sverklo_status reflects reality
389
+ * without waiting for the 2-second TTL.
390
+ */
391
+ invalidateFreshnessCache() {
392
+ this.freshnessCache = null;
251
393
  }
252
394
  close() {
253
395
  this.db.close();
@@ -290,6 +432,7 @@ export class Indexer {
290
432
  this.indexing = false;
291
433
  this.progress = { done: 0, total: 0 };
292
434
  this.lastIndexedTime = null;
435
+ this.freshnessCache = null;
293
436
  }
294
437
  }
295
438
  function hashFile(filePath) {
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../../src/indexer/indexer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../../src/indexer/indexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,144 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
+ import { mkdtempSync, rmSync, writeFileSync, mkdirSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { Indexer } from "./indexer.js";
6
+ import { getProjectConfig } from "../utils/config.js";
7
+ import { createDatabase, getDataVersion, setDataVersion, CURRENT_DATA_VERSION, } from "../storage/database.js";
8
+ // Tests for the data-version migration runner (issue #13 rollout).
9
+ //
10
+ // Scenario: a user upgrades from v0.2.13 (where symbol_refs rows
11
+ // were lossy due to chunk-wide dedupe) to v0.2.14 (where the bug
12
+ // is fixed). Their existing index is still lossy until we re-extract
13
+ // references from the chunks we already have.
14
+ //
15
+ // The migration:
16
+ // 1. runs on Indexer construction if stored data_version < 2
17
+ // 2. drops all symbol_refs rows
18
+ // 3. re-runs extractReferences over every chunk.content already in the db
19
+ // 4. stamps data_version = 2 so subsequent constructions are a no-op
20
+ describe("data-version migration", () => {
21
+ let tmpRoot;
22
+ beforeEach(() => {
23
+ tmpRoot = mkdtempSync(join(tmpdir(), "sverklo-migration-"));
24
+ mkdirSync(join(tmpRoot, "src"), { recursive: true });
25
+ // A file with a symbol called twice in the same function.
26
+ // Under v0.2.13, extractReferences would produce ONE symbol_ref
27
+ // row for 'helper' from this function, not two.
28
+ //
29
+ // Note: we use `declare function` for helper rather than a real
30
+ // definition because the current chunker only chunks the first
31
+ // top-level function when a file has multiple — that's a
32
+ // separate bug worth filing, but not blocking the migration
33
+ // tests here.
34
+ writeFileSync(join(tmpRoot, "src", "a.ts"), [
35
+ "declare function helper(): number;",
36
+ "export function run() {",
37
+ " const a = helper();",
38
+ " const b = helper();",
39
+ " return a + b;",
40
+ "}",
41
+ ].join("\n"), "utf-8");
42
+ });
43
+ afterEach(() => {
44
+ try {
45
+ rmSync(tmpRoot, { recursive: true, force: true });
46
+ }
47
+ catch { }
48
+ });
49
+ it("fresh database stamps data_version = CURRENT_DATA_VERSION on first index", async () => {
50
+ const cfg = getProjectConfig(tmpRoot);
51
+ const indexer = new Indexer(cfg);
52
+ try {
53
+ await indexer.index();
54
+ const v = getDataVersion(indexer.db);
55
+ expect(v).toBe(CURRENT_DATA_VERSION);
56
+ }
57
+ finally {
58
+ indexer.close();
59
+ }
60
+ });
61
+ it("upgrading from v1 re-extracts symbol refs", async () => {
62
+ // Step 1: build an index the "old" way. We create a database,
63
+ // set data_version = 1, and insert a single lossy symbol_ref
64
+ // row for 'helper' on the first call site only. This simulates
65
+ // what v0.2.13 would have produced.
66
+ const cfg = getProjectConfig(tmpRoot);
67
+ {
68
+ const indexer = new Indexer(cfg);
69
+ await indexer.index();
70
+ indexer.close();
71
+ }
72
+ // Simulate an old (v0.2.13) index by:
73
+ // - manually deleting all symbol_refs
74
+ // - inserting ONE lossy row for helper at the first call site
75
+ // - setting data_version = 1
76
+ {
77
+ const db = createDatabase(cfg.dbPath);
78
+ db.exec("DELETE FROM symbol_refs");
79
+ // Find the chunk id of the `run` function
80
+ const runChunk = db
81
+ .prepare("SELECT id FROM chunks WHERE name = 'run'")
82
+ .get();
83
+ if (runChunk) {
84
+ db.prepare("INSERT INTO symbol_refs (source_chunk_id, target_name, line) VALUES (?, ?, ?)").run(runChunk.id, "helper", 2);
85
+ }
86
+ setDataVersion(db, 1);
87
+ db.close();
88
+ }
89
+ // Step 2: open the index with a new Indexer. The migration
90
+ // should run and re-extract all references.
91
+ const indexer2 = new Indexer(cfg);
92
+ try {
93
+ const db = indexer2.db;
94
+ // data_version should now be CURRENT
95
+ expect(getDataVersion(db)).toBe(CURRENT_DATA_VERSION);
96
+ // symbol_refs should now include BOTH helper calls, not just one
97
+ const helperRefs = db
98
+ .prepare("SELECT COUNT(*) as c FROM symbol_refs WHERE target_name = 'helper'")
99
+ .get();
100
+ expect(helperRefs.c).toBeGreaterThanOrEqual(2);
101
+ }
102
+ finally {
103
+ indexer2.close();
104
+ }
105
+ });
106
+ it("a second Indexer construction on a current database is a no-op", async () => {
107
+ const cfg = getProjectConfig(tmpRoot);
108
+ {
109
+ const indexer = new Indexer(cfg);
110
+ await indexer.index();
111
+ indexer.close();
112
+ }
113
+ // Capture the symbol_refs count after the initial index
114
+ const db = createDatabase(cfg.dbPath);
115
+ const initial = db.prepare("SELECT COUNT(*) as c FROM symbol_refs").get().c;
116
+ db.close();
117
+ // Construct again — migration should skip
118
+ const indexer2 = new Indexer(cfg);
119
+ try {
120
+ const db2 = indexer2.db;
121
+ const after = db2.prepare("SELECT COUNT(*) as c FROM symbol_refs").get().c;
122
+ // Same count — no rebuild happened
123
+ expect(after).toBe(initial);
124
+ }
125
+ finally {
126
+ indexer2.close();
127
+ }
128
+ });
129
+ it("migration handles an empty database (no chunks) without erroring", () => {
130
+ // Case: someone installs sverklo, opens a project, but no files
131
+ // have been indexed yet. Database is empty. Migration should
132
+ // still stamp the version and return cleanly.
133
+ const cfg = getProjectConfig(tmpRoot);
134
+ const emptyIndexer = new Indexer(cfg);
135
+ try {
136
+ const db = emptyIndexer.db;
137
+ expect(getDataVersion(db)).toBe(CURRENT_DATA_VERSION);
138
+ }
139
+ finally {
140
+ emptyIndexer.close();
141
+ }
142
+ });
143
+ });
144
+ //# sourceMappingURL=migration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.test.js","sourceRoot":"","sources":["../../../src/indexer/migration.test.ts"],"names":[],"mappings":"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"}
@@ -45,9 +45,21 @@ const NEW_RE = /\bnew\s+([A-Z][a-zA-Z0-9_]{2,})/g;
45
45
  */
46
46
  export function extractReferences(content, selfName = null) {
47
47
  const refs = [];
48
- const seen = new Set(); // dedupe within a chunk
49
48
  const lines = content.split("\n");
50
49
  for (let i = 0; i < lines.length; i++) {
50
+ // Dedupe scope is per LINE, not per chunk.
51
+ //
52
+ // Issue #13: the old implementation used a chunk-wide `seen` set,
53
+ // which meant a symbol called twice in the same function got one
54
+ // symbol_ref row at the first call site — the second call was
55
+ // silently dropped. That made sverklo_impact a lossy tool and
56
+ // caused it to under-report blast radius on any real refactor.
57
+ //
58
+ // Per-line dedupe still catches the case where two regexes (CALL_RE
59
+ // and NEW_RE) both fire on `new Foo()`, while letting repeat calls
60
+ // across lines each contribute their own row. The (chunk, name,
61
+ // line) UNIQUE constraint on symbol_refs prevents exact duplicates.
62
+ const seenOnLine = new Set();
51
63
  const line = lines[i];
52
64
  // Strip string literals and comments to reduce false positives
53
65
  const stripped = stripStringsAndComments(line);
@@ -59,18 +71,18 @@ export function extractReferences(content, selfName = null) {
59
71
  if (name === selfName ||
60
72
  KEYWORDS.has(name) ||
61
73
  COMMON_BUILTINS.has(name) ||
62
- seen.has(name))
74
+ seenOnLine.has(name))
63
75
  continue;
64
- seen.add(name);
76
+ seenOnLine.add(name);
65
77
  refs.push({ name, line: i });
66
78
  }
67
79
  // Constructor calls: new Foo
68
80
  NEW_RE.lastIndex = 0;
69
81
  while ((m = NEW_RE.exec(stripped)) !== null) {
70
82
  const name = m[1];
71
- if (name === selfName || KEYWORDS.has(name) || seen.has(name))
83
+ if (name === selfName || KEYWORDS.has(name) || seenOnLine.has(name))
72
84
  continue;
73
- seen.add(name);
85
+ seenOnLine.add(name);
74
86
  refs.push({ name, line: i });
75
87
  }
76
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"symbol-extractor.js","sourceRoot":"","sources":["../../../src/indexer/symbol-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"symbol-extractor.js","sourceRoot":"","sources":["../../../src/indexer/symbol-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};