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.
- package/.claude-plugin/plugin.json +2 -2
- package/README.md +93 -34
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +20 -0
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +305 -44
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/go.d.ts +6 -0
- package/dist/commands/go.d.ts.map +1 -0
- package/dist/commands/go.js +132 -0
- package/dist/commands/go.js.map +1 -0
- package/dist/commands/hook.d.ts.map +1 -1
- package/dist/commands/hook.js +19 -4
- package/dist/commands/hook.js.map +1 -1
- package/dist/commands/init.d.ts +3 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +51 -38
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +5 -2
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/setup.js +7 -1
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +3 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/wizard.d.ts.map +1 -1
- package/dist/commands/wizard.js +11 -3
- package/dist/commands/wizard.js.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +9 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +8 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/context-store.d.ts.map +1 -1
- package/dist/lib/context-store.js +18 -3
- package/dist/lib/context-store.js.map +1 -1
- package/dist/lib/embeddings.d.ts +27 -0
- package/dist/lib/embeddings.d.ts.map +1 -0
- package/dist/lib/embeddings.js +121 -0
- package/dist/lib/embeddings.js.map +1 -0
- package/dist/lib/search.d.ts +9 -2
- package/dist/lib/search.d.ts.map +1 -1
- package/dist/lib/search.js +259 -21
- package/dist/lib/search.js.map +1 -1
- package/dist/mcp/server.d.ts +26 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +333 -43
- package/dist/mcp/server.js.map +1 -1
- package/package.json +1 -1
- package/server.json +12 -8
- package/skills/repomemory/SKILL.md +7 -4
- package/skills/session-end/SKILL.md +19 -0
- package/skills/session-start/SKILL.md +14 -0
package/dist/lib/search.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
28
|
-
if (
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
111
|
-
|
|
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
|
-
|
|
128
|
-
|
|
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
|
-
|
|
169
|
-
|
|
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
|
-
|
|
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
|
package/dist/lib/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,aAAa,EAAc,MAAM,IAAI,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAwB5B,IAAI,gBAAgB,GAAgC,IAAI,CAAC;AAEzD,KAAK,UAAU,QAAQ;IACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAC/C,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC;YAC9B,OAAO,SAAS,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,OAAO,WAAW;IACd,EAAE,GAAyB,IAAI,CAAC;IAChC,MAAM,CAAS;IACf,KAAK,CAAe;IACpB,WAAW,GAAG,KAAK,CAAC;IACpB,OAAO,GAAG,KAAK,CAAC;IAExB,YAAY,UAAkB,EAAE,KAAmB;QACjD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QAE5B,MAAM,GAAG,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE7B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QAED,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO;QAErB,wCAAwC;QACxC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;;;;;;;;;;;KAWX,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;QAEnF,0EAA0E;QAC1E,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;;;;;;;;;OASX,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;;;;;OAKX,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;;;;;OAKX,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;;;;;;;OAOX,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEjC,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,EAAE,CAAC,GAAG,CACJ;mCAC2B,EAC3B;gBACE,KAAK,CAAC,QAAQ;gBACd,KAAK,CAAC,QAAQ;gBACd,KAAK,CAAC,KAAK;gBACX,KAAK,CAAC,OAAO;gBACb,KAAK,CAAC,YAAY;gBAClB,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE;aACjC,CACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAmB;QAClC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEjC,EAAE,CAAC,GAAG,CACJ,2DAA2D,EAC3D,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CACjC,CAAC;QAEF,EAAE,CAAC,GAAG,CACJ;iCAC2B,EAC3B;YACE,KAAK,CAAC,QAAQ;YACd,KAAK,CAAC,QAAQ;YACd,KAAK,CAAC,KAAK;YACX,KAAK,CAAC,OAAO;YACb,KAAK,CAAC,YAAY;YAClB,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE;SACjC,CACF,CAAC;QAEF,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,QAAgB;QAClD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjC,EAAE,CAAC,GAAG,CACJ,2DAA2D,EAC3D,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACrB,CAAC;QACF,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,QAAiB,EAAE,QAAgB,EAAE;QAC/D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,gEAAgE;IACxD,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,QAAiB,EAAE,QAAgB,EAAE;QAC3E,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEjC,MAAM,KAAK,GAAG,KAAK;aAChB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;aACpB,KAAK,CAAC,KAAK,CAAC;aACZ,MAAM,CAAC,OAAO,CAAC;aACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC;aAC1B,IAAI,CAAC,GAAG,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,IAAI,GAAG,GAAG;;;;;;KAMT,CAAC;QAEF,MAAM,MAAM,GAAc,CAAC,KAAK,CAAC,CAAC;QAElC,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,IAAI,qBAAqB,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAED,GAAG,IAAI,wBAAwB,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACjD,4BAA4B;gBAC5B,MAAM,OAAO,GAAG,KAAK;qBAClB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;qBACpB,KAAK,CAAC,KAAK,CAAC;qBACZ,MAAM,CAAC,OAAO,CAAC;qBACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC;qBAC1B,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEhB,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;oBACtB,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;oBACpB,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;oBACvC,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;wBACnD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBAC9C,CAAC;gBACH,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;YACvC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,kEAAkE;IAC1D,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,QAAiB,EAAE,QAAgB,EAAE;QAC3E,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEjC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAE7B,+EAA+E;QAC/E,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,MAAM,GAAc,EAAE,CAAC;QAE7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,IAAI,GAAG,CAAC;YAC5B,UAAU,CAAC,IAAI,CAAC,uGAAuG,CAAC,CAAC;YACzH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,GAAG,GAAG;;gBAEE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;;KAGjC,CAAC;QAEF,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,IAAI,mBAAmB,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAED,GAAG,IAAI,8BAA8B,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,UAAU,CAChB,MAAkD,EAClD,KAAa;QAEb,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACjC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAW;YAC1B,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAW;YAC1B,KAAK,EAAE,GAAG,CAAC,CAAC,CAAW;YACvB,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAW,EAAE,KAAK,CAAC;YACrD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAW;YACvB,YAAY,EAAE,GAAG,CAAC,CAAC,CAAW;SAC/B,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,cAAc,CAAC,OAAe,EAAE,KAAa,EAAE,YAAoB,GAAG;QAC5E,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,aAAa,GAA0D,EAAE,CAAC;QAEhF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACjE,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACnB,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACrC,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAExD,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;IAEO,IAAI;QACV,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO;QACrB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;YAC9B,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.d.ts
CHANGED
|
@@ -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
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"
|
|
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"}
|