repomemory 1.0.4 → 1.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.
Files changed (56) hide show
  1. package/.claude-plugin/plugin.json +2 -2
  2. package/README.md +93 -34
  3. package/dist/commands/analyze.d.ts.map +1 -1
  4. package/dist/commands/analyze.js +20 -0
  5. package/dist/commands/analyze.js.map +1 -1
  6. package/dist/commands/dashboard.d.ts.map +1 -1
  7. package/dist/commands/dashboard.js +305 -44
  8. package/dist/commands/dashboard.js.map +1 -1
  9. package/dist/commands/go.d.ts +6 -0
  10. package/dist/commands/go.d.ts.map +1 -0
  11. package/dist/commands/go.js +132 -0
  12. package/dist/commands/go.js.map +1 -0
  13. package/dist/commands/hook.d.ts.map +1 -1
  14. package/dist/commands/hook.js +19 -4
  15. package/dist/commands/hook.js.map +1 -1
  16. package/dist/commands/init.d.ts +3 -1
  17. package/dist/commands/init.d.ts.map +1 -1
  18. package/dist/commands/init.js +51 -38
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/serve.d.ts.map +1 -1
  21. package/dist/commands/serve.js +5 -2
  22. package/dist/commands/serve.js.map +1 -1
  23. package/dist/commands/setup.js +7 -1
  24. package/dist/commands/setup.js.map +1 -1
  25. package/dist/commands/status.d.ts.map +1 -1
  26. package/dist/commands/status.js +3 -0
  27. package/dist/commands/status.js.map +1 -1
  28. package/dist/commands/wizard.d.ts.map +1 -1
  29. package/dist/commands/wizard.js +11 -3
  30. package/dist/commands/wizard.js.map +1 -1
  31. package/dist/index.js +8 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/lib/config.d.ts +9 -0
  34. package/dist/lib/config.d.ts.map +1 -1
  35. package/dist/lib/config.js +8 -1
  36. package/dist/lib/config.js.map +1 -1
  37. package/dist/lib/context-store.d.ts.map +1 -1
  38. package/dist/lib/context-store.js +18 -3
  39. package/dist/lib/context-store.js.map +1 -1
  40. package/dist/lib/embeddings.d.ts +27 -0
  41. package/dist/lib/embeddings.d.ts.map +1 -0
  42. package/dist/lib/embeddings.js +121 -0
  43. package/dist/lib/embeddings.js.map +1 -0
  44. package/dist/lib/search.d.ts +9 -2
  45. package/dist/lib/search.d.ts.map +1 -1
  46. package/dist/lib/search.js +259 -21
  47. package/dist/lib/search.js.map +1 -1
  48. package/dist/mcp/server.d.ts +26 -0
  49. package/dist/mcp/server.d.ts.map +1 -1
  50. package/dist/mcp/server.js +333 -43
  51. package/dist/mcp/server.js.map +1 -1
  52. package/package.json +1 -1
  53. package/server.json +12 -8
  54. package/skills/repomemory/SKILL.md +7 -4
  55. package/skills/session-end/SKILL.md +19 -0
  56. package/skills/session-start/SKILL.md +14 -0
@@ -1,11 +1,15 @@
1
- import { writeFileSync } from "fs";
1
+ import { readFileSync, writeFileSync, existsSync } from "fs";
2
2
  import { join } from "path";
3
+ import { cosineSimilarity } from "./embeddings.js";
3
4
  let initSqlJsPromise = null;
4
5
  async function getSqlJs() {
5
6
  if (!initSqlJsPromise) {
6
7
  initSqlJsPromise = import("sql.js").then((mod) => {
7
8
  const initSqlJs = mod.default;
8
9
  return initSqlJs();
10
+ }).catch((err) => {
11
+ initSqlJsPromise = null; // Allow retry on failure
12
+ throw err;
9
13
  });
10
14
  }
11
15
  return initSqlJsPromise;
@@ -14,21 +18,57 @@ export class SearchIndex {
14
18
  db = null;
15
19
  dbPath;
16
20
  store;
17
- initialized = false;
18
21
  hasFts5 = false;
19
- constructor(contextDir, store) {
22
+ embeddingProvider;
23
+ alpha;
24
+ constructor(contextDir, store, embeddingProvider, alpha) {
20
25
  this.dbPath = join(contextDir, ".search.db");
21
26
  this.store = store;
27
+ this.embeddingProvider = embeddingProvider ?? null;
28
+ this.alpha = alpha ?? 0.5;
22
29
  }
23
30
  async ensureDb() {
24
31
  if (this.db)
25
32
  return this.db;
26
33
  const SQL = await getSqlJs();
27
- this.db = new SQL.Database();
28
- if (!this.initialized) {
29
- this.initSchema();
30
- this.initialized = true;
34
+ // Try to load existing DB from disk
35
+ if (existsSync(this.dbPath)) {
36
+ try {
37
+ const data = readFileSync(this.dbPath);
38
+ this.db = new SQL.Database(data);
39
+ // Detect FTS5 availability
40
+ try {
41
+ this.db.exec("SELECT * FROM documents_fts LIMIT 0");
42
+ this.hasFts5 = true;
43
+ }
44
+ catch {
45
+ this.hasFts5 = false;
46
+ }
47
+ // Ensure embedding columns exist (migration for v1.0 → v1.1)
48
+ try {
49
+ this.db.exec("SELECT embedding FROM documents LIMIT 0");
50
+ }
51
+ catch {
52
+ // Columns don't exist yet, add them
53
+ try {
54
+ this.db.run("ALTER TABLE documents ADD COLUMN embedding BLOB");
55
+ this.db.run("ALTER TABLE documents ADD COLUMN embedding_dims INTEGER DEFAULT 0");
56
+ }
57
+ catch {
58
+ // If ALTER fails, we'll rebuild from scratch
59
+ this.db.close();
60
+ this.db = new SQL.Database();
61
+ this.initSchema();
62
+ }
63
+ }
64
+ return this.db;
65
+ }
66
+ catch {
67
+ // Corrupt DB, start fresh
68
+ }
31
69
  }
70
+ this.db = new SQL.Database();
71
+ this.initSchema();
32
72
  return this.db;
33
73
  }
34
74
  initSchema() {
@@ -44,6 +84,8 @@ export class SearchIndex {
44
84
  content TEXT NOT NULL,
45
85
  relative_path TEXT NOT NULL,
46
86
  updated_at TEXT NOT NULL,
87
+ embedding BLOB,
88
+ embedding_dims INTEGER DEFAULT 0,
47
89
  UNIQUE(category, filename)
48
90
  )
49
91
  `);
@@ -89,32 +131,118 @@ export class SearchIndex {
89
131
  }
90
132
  async rebuild() {
91
133
  const db = await this.ensureDb();
92
- db.run("DELETE FROM documents");
93
134
  const entries = this.store.listEntries();
135
+ // Build map of existing DB entries to enable incremental updates.
136
+ // This preserves embeddings for unchanged entries (avoids costly re-embedding).
137
+ const existingMap = new Map();
138
+ try {
139
+ const result = db.exec("SELECT category, filename, updated_at FROM documents");
140
+ if (result.length > 0) {
141
+ for (const row of result[0].values) {
142
+ existingMap.set(`${row[0]}/${row[1]}`, row[2]);
143
+ }
144
+ }
145
+ }
146
+ catch {
147
+ // Table may not exist yet on first run
148
+ }
149
+ const currentKeys = new Set();
94
150
  for (const entry of entries) {
95
- db.run(`INSERT OR REPLACE INTO documents (category, filename, title, content, relative_path, updated_at)
151
+ const key = `${entry.category}/${entry.filename}`;
152
+ currentKeys.add(key);
153
+ const existingTimestamp = existingMap.get(key);
154
+ const entryTimestamp = entry.lastModified.toISOString();
155
+ // Skip if unchanged — preserves existing embeddings
156
+ if (existingTimestamp === entryTimestamp)
157
+ continue;
158
+ // Remove old entry (triggers FTS5 delete trigger if applicable)
159
+ db.run("DELETE FROM documents WHERE category = ? AND filename = ?", [entry.category, entry.filename]);
160
+ db.run(`INSERT INTO documents (category, filename, title, content, relative_path, updated_at)
96
161
  VALUES (?, ?, ?, ?, ?, ?)`, [
97
162
  entry.category,
98
163
  entry.filename,
99
164
  entry.title,
100
165
  entry.content,
101
166
  entry.relativePath,
102
- entry.lastModified.toISOString(),
167
+ entryTimestamp,
103
168
  ]);
104
169
  }
170
+ // Remove entries that were deleted from disk
171
+ for (const key of existingMap.keys()) {
172
+ if (!currentKeys.has(key)) {
173
+ const slashIdx = key.indexOf("/");
174
+ const cat = key.slice(0, slashIdx);
175
+ const fname = key.slice(slashIdx + 1);
176
+ db.run("DELETE FROM documents WHERE category = ? AND filename = ?", [cat, fname]);
177
+ }
178
+ }
179
+ // Only embed entries that don't have embeddings yet (new/changed ones)
180
+ if (this.embeddingProvider) {
181
+ await this.embedMissingEntries(entries);
182
+ }
105
183
  this.save();
106
184
  }
185
+ async embedMissingEntries(entries) {
186
+ if (!this.embeddingProvider || !this.db)
187
+ return;
188
+ // Find entries without embeddings
189
+ const result = this.db.exec("SELECT category, filename FROM documents WHERE embedding IS NULL OR embedding_dims = 0");
190
+ if (!result.length || !result[0].values.length)
191
+ return;
192
+ const missing = result[0].values.map((row) => ({
193
+ category: row[0],
194
+ filename: row[1],
195
+ }));
196
+ // Batch embed (up to 20 at a time to avoid API limits)
197
+ const batchSize = 20;
198
+ for (let i = 0; i < missing.length; i += batchSize) {
199
+ const batch = missing.slice(i, i + batchSize);
200
+ const texts = batch.map((m) => {
201
+ const entry = entries.find((e) => e.category === m.category && e.filename === m.filename);
202
+ if (!entry)
203
+ return "";
204
+ return `${entry.title}\n\n${entry.content}`.slice(0, 8000);
205
+ });
206
+ try {
207
+ const embeddings = await this.embeddingProvider.embed(texts);
208
+ for (let j = 0; j < batch.length; j++) {
209
+ const blob = new Uint8Array(embeddings[j].buffer);
210
+ this.db.run("UPDATE documents SET embedding = ?, embedding_dims = ? WHERE category = ? AND filename = ?", [blob, this.embeddingProvider.dimensions, batch[j].category, batch[j].filename]);
211
+ }
212
+ }
213
+ catch {
214
+ // Skip this batch's embedding failures — keyword search still works
215
+ continue;
216
+ }
217
+ }
218
+ }
107
219
  async indexEntry(entry) {
108
220
  const db = await this.ensureDb();
109
221
  db.run("DELETE FROM documents WHERE category = ? AND filename = ?", [entry.category, entry.filename]);
110
- db.run(`INSERT INTO documents (category, filename, title, content, relative_path, updated_at)
111
- VALUES (?, ?, ?, ?, ?, ?)`, [
222
+ // Compute embedding if provider available
223
+ let embeddingBlob = null;
224
+ let dims = 0;
225
+ if (this.embeddingProvider) {
226
+ try {
227
+ const textToEmbed = `${entry.title}\n\n${entry.content}`.slice(0, 8000);
228
+ const [embedding] = await this.embeddingProvider.embed([textToEmbed]);
229
+ embeddingBlob = new Uint8Array(embedding.buffer);
230
+ dims = this.embeddingProvider.dimensions;
231
+ }
232
+ catch {
233
+ // Silently fall back to keyword-only for this entry
234
+ }
235
+ }
236
+ db.run(`INSERT INTO documents (category, filename, title, content, relative_path, updated_at, embedding, embedding_dims)
237
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [
112
238
  entry.category,
113
239
  entry.filename,
114
240
  entry.title,
115
241
  entry.content,
116
242
  entry.relativePath,
117
243
  entry.lastModified.toISOString(),
244
+ embeddingBlob,
245
+ dims,
118
246
  ]);
119
247
  this.save();
120
248
  }
@@ -124,10 +252,25 @@ export class SearchIndex {
124
252
  this.save();
125
253
  }
126
254
  async search(query, category, limit = 10) {
127
- if (this.hasFts5) {
128
- return this.searchFts5(query, category, limit);
255
+ // Get keyword results
256
+ const keywordResults = this.hasFts5
257
+ ? await this.searchFts5(query, category, limit * 2)
258
+ : await this.searchLike(query, category, limit * 2);
259
+ // If no embedding provider, return keyword results only
260
+ if (!this.embeddingProvider) {
261
+ return keywordResults.slice(0, limit);
262
+ }
263
+ // Attempt hybrid search
264
+ try {
265
+ const semanticResults = await this.searchSemantic(query, category, limit * 2);
266
+ if (semanticResults.length === 0) {
267
+ return keywordResults.slice(0, limit);
268
+ }
269
+ return this.hybridMerge(keywordResults, semanticResults, query, limit);
270
+ }
271
+ catch {
272
+ return keywordResults.slice(0, limit);
129
273
  }
130
- return this.searchLike(query, category, limit);
131
274
  }
132
275
  /** Fast FTS5 search — used when the sql.js build supports it */
133
276
  async searchFts5(query, category, limit = 10) {
@@ -157,7 +300,7 @@ export class SearchIndex {
157
300
  try {
158
301
  const results = db.exec(sql, params);
159
302
  if (!results.length || !results[0].values.length) {
160
- // Fall back to OR semantics
303
+ // Fall back to OR semantics with a fresh query
161
304
  const orTerms = query
162
305
  .replace(/['"]/g, "")
163
306
  .split(/\s+/)
@@ -165,8 +308,21 @@ export class SearchIndex {
165
308
  .map((term) => `"${term}"`)
166
309
  .join(" OR ");
167
310
  if (orTerms !== terms) {
168
- params[0] = orTerms;
169
- const orResults = db.exec(sql, params);
311
+ let orSql = `
312
+ SELECT d.category, d.filename, d.title, d.content, d.relative_path,
313
+ rank * -1 as score
314
+ FROM documents_fts
315
+ JOIN documents d ON d.id = documents_fts.rowid
316
+ WHERE documents_fts MATCH ?
317
+ `;
318
+ const orParams = [orTerms];
319
+ if (category) {
320
+ orSql += " AND d.category = ?";
321
+ orParams.push(category);
322
+ }
323
+ orSql += " ORDER BY rank LIMIT ?";
324
+ orParams.push(limit);
325
+ const orResults = db.exec(orSql, orParams);
170
326
  if (orResults.length && orResults[0].values.length) {
171
327
  return this.mapResults(orResults[0], query);
172
328
  }
@@ -216,6 +372,89 @@ export class SearchIndex {
216
372
  return [];
217
373
  }
218
374
  }
375
+ /** Semantic search using embeddings + cosine similarity */
376
+ async searchSemantic(query, category, limit = 10) {
377
+ if (!this.embeddingProvider)
378
+ return [];
379
+ const db = await this.ensureDb();
380
+ const [queryEmbedding] = await this.embeddingProvider.embed([query]);
381
+ // Get all documents with embeddings
382
+ let sql = "SELECT id, category, filename, title, content, relative_path, embedding, embedding_dims FROM documents WHERE embedding IS NOT NULL AND embedding_dims > 0";
383
+ const params = [];
384
+ if (category) {
385
+ sql += " AND category = ?";
386
+ params.push(category);
387
+ }
388
+ const results = db.exec(sql, params);
389
+ if (!results.length || !results[0].values.length)
390
+ return [];
391
+ // Compute cosine similarity for each
392
+ const scored = [];
393
+ for (const row of results[0].values) {
394
+ const embBlob = row[6];
395
+ const dims = row[7];
396
+ if (!embBlob || embBlob.byteLength !== dims * 4)
397
+ continue;
398
+ if (dims !== queryEmbedding.length)
399
+ continue;
400
+ // Copy the buffer to avoid sharing with sql.js internals
401
+ const buffer = new ArrayBuffer(dims * 4);
402
+ new Uint8Array(buffer).set(new Uint8Array(embBlob.buffer, embBlob.byteOffset, dims * 4));
403
+ const docEmbedding = new Float32Array(buffer);
404
+ const similarity = cosineSimilarity(queryEmbedding, docEmbedding);
405
+ scored.push({
406
+ category: row[1],
407
+ filename: row[2],
408
+ title: row[3],
409
+ snippet: this.extractSnippet(row[4], query),
410
+ score: similarity,
411
+ relativePath: row[5],
412
+ });
413
+ }
414
+ return scored
415
+ .sort((a, b) => b.score - a.score)
416
+ .slice(0, limit);
417
+ }
418
+ /** Merge keyword and semantic results with weighted scoring */
419
+ hybridMerge(keywordResults, semanticResults, query, limit) {
420
+ // Normalize scores to [0, 1] using min-max normalization (handles negative FTS5 scores)
421
+ const minKeyword = Math.min(...keywordResults.map((r) => r.score), 0);
422
+ const maxKeyword = Math.max(...keywordResults.map((r) => r.score), 0);
423
+ const keywordRange = maxKeyword - minKeyword || 0.001;
424
+ const minSemantic = Math.min(...semanticResults.map((r) => r.score), 0);
425
+ const maxSemantic = Math.max(...semanticResults.map((r) => r.score), 0);
426
+ const semanticRange = maxSemantic - minSemantic || 0.001;
427
+ const scoreMap = new Map();
428
+ for (const r of keywordResults) {
429
+ const key = `${r.category}/${r.filename}`;
430
+ scoreMap.set(key, {
431
+ keyword: (r.score - minKeyword) / keywordRange,
432
+ semantic: 0,
433
+ result: r,
434
+ });
435
+ }
436
+ for (const r of semanticResults) {
437
+ const key = `${r.category}/${r.filename}`;
438
+ const existing = scoreMap.get(key);
439
+ if (existing) {
440
+ existing.semantic = (r.score - minSemantic) / semanticRange;
441
+ }
442
+ else {
443
+ scoreMap.set(key, {
444
+ keyword: 0,
445
+ semantic: (r.score - minSemantic) / semanticRange,
446
+ result: r,
447
+ });
448
+ }
449
+ }
450
+ return Array.from(scoreMap.values())
451
+ .map(({ keyword, semantic, result }) => ({
452
+ ...result,
453
+ score: this.alpha * keyword + (1 - this.alpha) * semantic,
454
+ }))
455
+ .sort((a, b) => b.score - a.score)
456
+ .slice(0, limit);
457
+ }
219
458
  mapResults(result, query) {
220
459
  return result.values.map((row) => ({
221
460
  category: row[0],
@@ -253,8 +492,8 @@ export class SearchIndex {
253
492
  const data = this.db.export();
254
493
  writeFileSync(this.dbPath, Buffer.from(data));
255
494
  }
256
- catch {
257
- // Silently fail search degradation is acceptable
495
+ catch (e) {
496
+ console.error("Warning: Could not save search index:", e);
258
497
  }
259
498
  }
260
499
  close() {
@@ -263,7 +502,6 @@ export class SearchIndex {
263
502
  this.db.close();
264
503
  this.db = null;
265
504
  }
266
- this.initialized = false;
267
505
  }
268
506
  }
269
507
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,29 @@
1
1
  import type { RepoContextConfig } from "../lib/config.js";
2
+ interface SessionTracker {
3
+ startTime: Date;
4
+ toolCalls: {
5
+ tool: string;
6
+ timestamp: Date;
7
+ }[];
8
+ searchQueries: string[];
9
+ entriesRead: string[];
10
+ entriesWritten: string[];
11
+ entriesDeleted: string[];
12
+ writeCallMade: boolean;
13
+ readCallCount: number;
14
+ }
15
+ export declare function buildSessionSummary(session: SessionTracker, durationSeconds: number): string;
16
+ /**
17
+ * Detect the most likely category for a search query using keyword heuristics.
18
+ * Returns undefined if no category can be confidently inferred.
19
+ *
20
+ * Precedence order is intentional: decisions > regressions > preferences > sessions > facts.
21
+ * For ambiguous queries (e.g., "why did the login crash"), decisions wins because
22
+ * understanding the "why" is usually more actionable. The caller retries without
23
+ * category filter if the routed search returns 0 results.
24
+ */
25
+ export declare function detectQueryCategory(query: string): string | undefined;
2
26
  export declare function startMcpServer(repoRoot: string, config: RepoContextConfig): Promise<void>;
27
+ export declare function getRelativeTime(date: Date): string;
28
+ export {};
3
29
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAI1D,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,IAAI,CAAC,CAujBf"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAU1D,UAAU,cAAc;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,EAAE,CAAC;IAC/C,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AAeD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CA0B5F;AAID;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAmBrE;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,IAAI,CAAC,CAyzBf;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAOlD"}