ai-mind-map 1.1.3 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +66 -33
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +52 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +3 -0
  7. package/dist/config.js.map +1 -1
  8. package/dist/index.js +273 -23
  9. package/dist/index.js.map +1 -1
  10. package/dist/install.d.ts.map +1 -1
  11. package/dist/install.js +69 -56
  12. package/dist/install.js.map +1 -1
  13. package/dist/knowledge-graph/changelog.d.ts +175 -0
  14. package/dist/knowledge-graph/changelog.d.ts.map +1 -0
  15. package/dist/knowledge-graph/changelog.js +509 -0
  16. package/dist/knowledge-graph/changelog.js.map +1 -0
  17. package/dist/knowledge-graph/graph.d.ts +40 -0
  18. package/dist/knowledge-graph/graph.d.ts.map +1 -1
  19. package/dist/knowledge-graph/graph.js +73 -10
  20. package/dist/knowledge-graph/graph.js.map +1 -1
  21. package/dist/knowledge-graph/indexer.d.ts +15 -0
  22. package/dist/knowledge-graph/indexer.d.ts.map +1 -1
  23. package/dist/knowledge-graph/indexer.js +155 -34
  24. package/dist/knowledge-graph/indexer.js.map +1 -1
  25. package/dist/knowledge-graph/parser.d.ts +11 -0
  26. package/dist/knowledge-graph/parser.d.ts.map +1 -1
  27. package/dist/knowledge-graph/parser.js +70 -11
  28. package/dist/knowledge-graph/parser.js.map +1 -1
  29. package/dist/knowledge-graph/semantic-search.d.ts +166 -0
  30. package/dist/knowledge-graph/semantic-search.d.ts.map +1 -0
  31. package/dist/knowledge-graph/semantic-search.js +601 -0
  32. package/dist/knowledge-graph/semantic-search.js.map +1 -0
  33. package/dist/memory/shared-sync.d.ts +47 -0
  34. package/dist/memory/shared-sync.d.ts.map +1 -0
  35. package/dist/memory/shared-sync.js +219 -0
  36. package/dist/memory/shared-sync.js.map +1 -0
  37. package/dist/tools/advanced-tools.d.ts +2 -1
  38. package/dist/tools/advanced-tools.d.ts.map +1 -1
  39. package/dist/tools/advanced-tools.js +38 -1
  40. package/dist/tools/advanced-tools.js.map +1 -1
  41. package/dist/tools/digest-tools.d.ts +15 -0
  42. package/dist/tools/digest-tools.d.ts.map +1 -0
  43. package/dist/tools/digest-tools.js +332 -0
  44. package/dist/tools/digest-tools.js.map +1 -0
  45. package/dist/tools/semantic-tools.d.ts +20 -0
  46. package/dist/tools/semantic-tools.d.ts.map +1 -0
  47. package/dist/tools/semantic-tools.js +141 -0
  48. package/dist/tools/semantic-tools.js.map +1 -0
  49. package/dist/tools/session-tools.d.ts +17 -0
  50. package/dist/tools/session-tools.d.ts.map +1 -0
  51. package/dist/tools/session-tools.js +233 -0
  52. package/dist/tools/session-tools.js.map +1 -0
  53. package/dist/tools/smart-tools.d.ts +2 -1
  54. package/dist/tools/smart-tools.d.ts.map +1 -1
  55. package/dist/tools/smart-tools.js +55 -3
  56. package/dist/tools/smart-tools.js.map +1 -1
  57. package/dist/types.d.ts +6 -0
  58. package/dist/types.d.ts.map +1 -1
  59. package/dist/types.js +3 -0
  60. package/dist/types.js.map +1 -1
  61. package/package.json +9 -3
@@ -0,0 +1,509 @@
1
+ /**
2
+ * AI Mind Map — Changelog Engine
3
+ *
4
+ * Tracks node-level changes (added / modified / deleted symbols) across
5
+ * re-indexing runs, and maintains AI agent session history.
6
+ *
7
+ * This is the core component that lets AI agents ask "what changed since
8
+ * I last looked?" instead of re-reading entire files.
9
+ *
10
+ * Tables managed:
11
+ * changelog — per-symbol change records
12
+ * sessions — AI agent session tracking
13
+ * session_files — files touched per session
14
+ * file_hotspots — change frequency tracking
15
+ * digest_cache — cached codebase digests
16
+ */
17
+ // ============================================================
18
+ // Schema SQL
19
+ // ============================================================
20
+ export const CHANGELOG_SCHEMA_SQL = `
21
+ -- Node-level change history
22
+ CREATE TABLE IF NOT EXISTS changelog (
23
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
24
+ timestamp INTEGER NOT NULL,
25
+ session_id TEXT,
26
+ file_path TEXT NOT NULL,
27
+ change_type TEXT NOT NULL,
28
+ symbol_name TEXT NOT NULL,
29
+ symbol_type TEXT NOT NULL,
30
+ old_signature TEXT,
31
+ new_signature TEXT,
32
+ old_hash TEXT,
33
+ new_hash TEXT,
34
+ old_start_line INTEGER,
35
+ old_end_line INTEGER,
36
+ new_start_line INTEGER,
37
+ new_end_line INTEGER
38
+ );
39
+
40
+ CREATE INDEX IF NOT EXISTS idx_changelog_file ON changelog(file_path);
41
+ CREATE INDEX IF NOT EXISTS idx_changelog_time ON changelog(timestamp);
42
+ CREATE INDEX IF NOT EXISTS idx_changelog_session ON changelog(session_id);
43
+
44
+ -- AI agent session tracking
45
+ CREATE TABLE IF NOT EXISTS sessions (
46
+ id TEXT PRIMARY KEY,
47
+ agent_name TEXT NOT NULL DEFAULT 'unknown',
48
+ task_description TEXT,
49
+ started_at INTEGER NOT NULL,
50
+ ended_at INTEGER,
51
+ files_modified TEXT,
52
+ summary TEXT,
53
+ tokens_saved_estimate INTEGER DEFAULT 0
54
+ );
55
+
56
+ CREATE INDEX IF NOT EXISTS idx_sessions_started ON sessions(started_at);
57
+
58
+ -- Change frequency hotspots
59
+ CREATE TABLE IF NOT EXISTS file_hotspots (
60
+ file_path TEXT PRIMARY KEY,
61
+ change_count INTEGER NOT NULL DEFAULT 0,
62
+ last_changed_at INTEGER NOT NULL,
63
+ symbols_changed TEXT
64
+ );
65
+
66
+ -- Codebase digest cache
67
+ CREATE TABLE IF NOT EXISTS digest_cache (
68
+ key TEXT PRIMARY KEY,
69
+ content TEXT NOT NULL,
70
+ generated_at INTEGER NOT NULL,
71
+ valid_until INTEGER NOT NULL
72
+ );
73
+ `;
74
+ // ============================================================
75
+ // ChangelogEngine Class
76
+ // ============================================================
77
+ /** Auto-prune: max entries to keep */
78
+ const MAX_CHANGELOG_ENTRIES = 5000;
79
+ /** Auto-prune: max age in ms (30 days) */
80
+ const MAX_CHANGELOG_AGE_MS = 30 * 24 * 60 * 60 * 1000;
81
+ /** Session auto-end after 30 minutes of inactivity */
82
+ const SESSION_TIMEOUT_MS = 30 * 60 * 1000;
83
+ export class ChangelogEngine {
84
+ db;
85
+ currentSessionId = null;
86
+ constructor(db) {
87
+ this.db = db;
88
+ this.ensureSchema();
89
+ }
90
+ /** Create changelog tables if they don't exist */
91
+ ensureSchema() {
92
+ this.db.exec(CHANGELOG_SCHEMA_SQL);
93
+ }
94
+ // ── Node-Level Change Recording ─────────────────────────
95
+ /**
96
+ * Compare old nodes vs new nodes for a file and record the diffs.
97
+ * Called during re-indexing when a file is updated.
98
+ */
99
+ recordChanges(filePath, oldNodes, newNodes) {
100
+ const now = Date.now();
101
+ const sessionId = this.currentSessionId;
102
+ // Build maps keyed by qualifiedName for matching
103
+ const oldMap = new Map();
104
+ const newMap = new Map();
105
+ for (const n of oldNodes) {
106
+ if (n.type !== 'file')
107
+ oldMap.set(n.qualifiedName, n);
108
+ }
109
+ for (const n of newNodes) {
110
+ if (n.type !== 'file')
111
+ newMap.set(n.qualifiedName, n);
112
+ }
113
+ const changelog = {
114
+ filePath,
115
+ added: [],
116
+ modified: [],
117
+ deleted: [],
118
+ };
119
+ const insertStmt = this.db.prepare(`
120
+ INSERT INTO changelog (
121
+ timestamp, session_id, file_path, change_type,
122
+ symbol_name, symbol_type,
123
+ old_signature, new_signature,
124
+ old_hash, new_hash,
125
+ old_start_line, old_end_line,
126
+ new_start_line, new_end_line
127
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
128
+ `);
129
+ const recordInTransaction = this.db.transaction(() => {
130
+ // 1. Find ADDED symbols (in new but not in old)
131
+ for (const [qName, newNode] of newMap) {
132
+ if (!oldMap.has(qName)) {
133
+ const entry = {
134
+ id: 0,
135
+ timestamp: now,
136
+ sessionId,
137
+ filePath,
138
+ changeType: 'added',
139
+ symbolName: newNode.name,
140
+ symbolType: newNode.type,
141
+ oldSignature: null,
142
+ newSignature: newNode.signature || null,
143
+ oldHash: null,
144
+ newHash: newNode.hash,
145
+ oldStartLine: null,
146
+ oldEndLine: null,
147
+ newStartLine: newNode.startLine,
148
+ newEndLine: newNode.endLine,
149
+ };
150
+ insertStmt.run(now, sessionId, filePath, 'added', newNode.name, newNode.type, null, newNode.signature || null, null, newNode.hash, null, null, newNode.startLine, newNode.endLine);
151
+ changelog.added.push(entry);
152
+ }
153
+ }
154
+ // 2. Find DELETED symbols (in old but not in new)
155
+ for (const [qName, oldNode] of oldMap) {
156
+ if (!newMap.has(qName)) {
157
+ const entry = {
158
+ id: 0,
159
+ timestamp: now,
160
+ sessionId,
161
+ filePath,
162
+ changeType: 'deleted',
163
+ symbolName: oldNode.name,
164
+ symbolType: oldNode.type,
165
+ oldSignature: oldNode.signature || null,
166
+ newSignature: null,
167
+ oldHash: oldNode.hash,
168
+ newHash: null,
169
+ oldStartLine: oldNode.startLine,
170
+ oldEndLine: oldNode.endLine,
171
+ newStartLine: null,
172
+ newEndLine: null,
173
+ };
174
+ insertStmt.run(now, sessionId, filePath, 'deleted', oldNode.name, oldNode.type, oldNode.signature || null, null, oldNode.hash, null, oldNode.startLine, oldNode.endLine, null, null);
175
+ changelog.deleted.push(entry);
176
+ }
177
+ }
178
+ // 3. Find MODIFIED symbols (in both, but hash changed)
179
+ for (const [qName, newNode] of newMap) {
180
+ const oldNode = oldMap.get(qName);
181
+ if (oldNode && oldNode.hash !== newNode.hash) {
182
+ const entry = {
183
+ id: 0,
184
+ timestamp: now,
185
+ sessionId,
186
+ filePath,
187
+ changeType: 'modified',
188
+ symbolName: newNode.name,
189
+ symbolType: newNode.type,
190
+ oldSignature: oldNode.signature || null,
191
+ newSignature: newNode.signature || null,
192
+ oldHash: oldNode.hash,
193
+ newHash: newNode.hash,
194
+ oldStartLine: oldNode.startLine,
195
+ oldEndLine: oldNode.endLine,
196
+ newStartLine: newNode.startLine,
197
+ newEndLine: newNode.endLine,
198
+ };
199
+ insertStmt.run(now, sessionId, filePath, 'modified', newNode.name, newNode.type, oldNode.signature || null, newNode.signature || null, oldNode.hash, newNode.hash, oldNode.startLine, oldNode.endLine, newNode.startLine, newNode.endLine);
200
+ changelog.modified.push(entry);
201
+ }
202
+ }
203
+ // Update hotspot tracking
204
+ const totalChanges = changelog.added.length + changelog.modified.length + changelog.deleted.length;
205
+ if (totalChanges > 0) {
206
+ const symbolChanges = {};
207
+ for (const e of [...changelog.added, ...changelog.modified, ...changelog.deleted]) {
208
+ symbolChanges[e.symbolName] = (symbolChanges[e.symbolName] || 0) + 1;
209
+ }
210
+ // Upsert hotspot
211
+ const existing = this.db.prepare('SELECT change_count, symbols_changed FROM file_hotspots WHERE file_path = ?').get(filePath);
212
+ if (existing) {
213
+ const prevSymbols = JSON.parse(existing.symbols_changed || '{}');
214
+ for (const [name, count] of Object.entries(symbolChanges)) {
215
+ prevSymbols[name] = (prevSymbols[name] || 0) + count;
216
+ }
217
+ this.db.prepare('UPDATE file_hotspots SET change_count = change_count + ?, last_changed_at = ?, symbols_changed = ? WHERE file_path = ?').run(totalChanges, now, JSON.stringify(prevSymbols), filePath);
218
+ }
219
+ else {
220
+ this.db.prepare('INSERT INTO file_hotspots (file_path, change_count, last_changed_at, symbols_changed) VALUES (?, ?, ?, ?)').run(filePath, totalChanges, now, JSON.stringify(symbolChanges));
221
+ }
222
+ // Track file in current session
223
+ if (sessionId) {
224
+ const sess = this.db.prepare('SELECT files_modified FROM sessions WHERE id = ?').get(sessionId);
225
+ if (sess) {
226
+ const files = JSON.parse(sess.files_modified || '[]');
227
+ if (!files.includes(filePath)) {
228
+ files.push(filePath);
229
+ this.db.prepare('UPDATE sessions SET files_modified = ? WHERE id = ?')
230
+ .run(JSON.stringify(files), sessionId);
231
+ }
232
+ }
233
+ }
234
+ }
235
+ });
236
+ recordInTransaction();
237
+ return changelog;
238
+ }
239
+ // ── Query Changes ───────────────────────────────────────
240
+ /**
241
+ * Get all changes since a timestamp.
242
+ * Returns a compact summary grouped by file.
243
+ */
244
+ getChangesSince(since) {
245
+ const rows = this.db.prepare('SELECT * FROM changelog WHERE timestamp > ? ORDER BY timestamp DESC').all(since);
246
+ // Group by file
247
+ const fileMap = new Map();
248
+ for (const row of rows) {
249
+ if (!fileMap.has(row.file_path)) {
250
+ fileMap.set(row.file_path, { added: [], modified: [], deleted: [] });
251
+ }
252
+ const entry = fileMap.get(row.file_path);
253
+ if (row.change_type === 'added') {
254
+ entry.added.push({
255
+ name: row.symbol_name,
256
+ type: row.symbol_type,
257
+ signature: row.new_signature || undefined,
258
+ });
259
+ }
260
+ else if (row.change_type === 'modified') {
261
+ entry.modified.push({
262
+ name: row.symbol_name,
263
+ type: row.symbol_type,
264
+ oldSignature: row.old_signature || undefined,
265
+ newSignature: row.new_signature || undefined,
266
+ });
267
+ }
268
+ else if (row.change_type === 'deleted') {
269
+ entry.deleted.push({
270
+ name: row.symbol_name,
271
+ type: row.symbol_type,
272
+ });
273
+ }
274
+ }
275
+ // Calculate "since" label
276
+ const ageMs = Date.now() - since;
277
+ let sinceLabel = '';
278
+ if (ageMs < 3600_000)
279
+ sinceLabel = `${Math.round(ageMs / 60_000)} minutes ago`;
280
+ else if (ageMs < 86400_000)
281
+ sinceLabel = `${Math.round(ageMs / 3600_000)} hours ago`;
282
+ else
283
+ sinceLabel = `${Math.round(ageMs / 86400_000)} days ago`;
284
+ return {
285
+ since,
286
+ sinceLabel,
287
+ totalChanges: rows.length,
288
+ filesChanged: fileMap.size,
289
+ files: Array.from(fileMap.entries()).map(([filePath, changes]) => ({
290
+ filePath,
291
+ ...changes,
292
+ })),
293
+ };
294
+ }
295
+ /**
296
+ * Get changes for a specific file.
297
+ */
298
+ getFileChanges(filePath, limit = 50) {
299
+ const rows = this.db.prepare('SELECT * FROM changelog WHERE file_path = ? ORDER BY timestamp DESC LIMIT ?').all(filePath, limit);
300
+ return rows.map(this.rowToEntry);
301
+ }
302
+ /**
303
+ * Get changes for a specific session.
304
+ */
305
+ getSessionChanges(sessionId) {
306
+ const rows = this.db.prepare('SELECT * FROM changelog WHERE session_id = ? ORDER BY timestamp ASC').all(sessionId);
307
+ return rows.map(this.rowToEntry);
308
+ }
309
+ /**
310
+ * Get file hotspots — most frequently changed files.
311
+ */
312
+ getHotspots(limit = 20) {
313
+ const rows = this.db.prepare('SELECT * FROM file_hotspots ORDER BY change_count DESC LIMIT ?').all(limit);
314
+ return rows.map((r) => ({
315
+ filePath: r.file_path,
316
+ changeCount: r.change_count,
317
+ lastChangedAt: r.last_changed_at,
318
+ symbolChanges: JSON.parse(r.symbols_changed || '{}'),
319
+ }));
320
+ }
321
+ // ── Session Management ──────────────────────────────────
322
+ /**
323
+ * Start a new AI agent session.
324
+ */
325
+ startSession(agentName = 'unknown', taskDescription) {
326
+ // Auto-end any stale session
327
+ this.autoEndStaleSession();
328
+ const id = `session_${Date.now()}_${Math.random().toString(36).substring(2, 8)}`;
329
+ const now = Date.now();
330
+ this.db.prepare('INSERT INTO sessions (id, agent_name, task_description, started_at, files_modified) VALUES (?, ?, ?, ?, ?)').run(id, agentName, taskDescription || null, now, '[]');
331
+ this.currentSessionId = id;
332
+ return id;
333
+ }
334
+ /**
335
+ * End the current session with a summary.
336
+ */
337
+ endSession(sessionId, summary) {
338
+ const id = sessionId || this.currentSessionId;
339
+ if (!id)
340
+ return;
341
+ const now = Date.now();
342
+ this.db.prepare('UPDATE sessions SET ended_at = ?, summary = ? WHERE id = ? AND ended_at IS NULL').run(now, summary || null, id);
343
+ if (id === this.currentSessionId) {
344
+ this.currentSessionId = null;
345
+ }
346
+ }
347
+ /**
348
+ * Get the current active session.
349
+ */
350
+ getCurrentSession() {
351
+ if (!this.currentSessionId)
352
+ return null;
353
+ return this.getSession(this.currentSessionId);
354
+ }
355
+ /**
356
+ * Get a session by ID.
357
+ */
358
+ getSession(sessionId) {
359
+ const row = this.db.prepare('SELECT * FROM sessions WHERE id = ?').get(sessionId);
360
+ if (!row)
361
+ return null;
362
+ return this.rowToSession(row);
363
+ }
364
+ /**
365
+ * Get the most recent completed session.
366
+ */
367
+ getLastSession() {
368
+ const row = this.db.prepare('SELECT * FROM sessions WHERE ended_at IS NOT NULL ORDER BY ended_at DESC LIMIT 1').get();
369
+ if (!row)
370
+ return null;
371
+ return this.rowToSession(row);
372
+ }
373
+ /**
374
+ * Get recent sessions.
375
+ */
376
+ getRecentSessions(limit = 10) {
377
+ const rows = this.db.prepare('SELECT * FROM sessions ORDER BY started_at DESC LIMIT ?').all(limit);
378
+ return rows.map(this.rowToSession);
379
+ }
380
+ /**
381
+ * Get the current session ID (for use by indexer).
382
+ */
383
+ getCurrentSessionId() {
384
+ return this.currentSessionId;
385
+ }
386
+ /**
387
+ * Ensure a session exists — auto-start one if needed.
388
+ * Called on first tool invocation.
389
+ */
390
+ ensureSession(agentName = 'ai-agent') {
391
+ // If there's an active session, reuse it
392
+ if (this.currentSessionId) {
393
+ const session = this.getSession(this.currentSessionId);
394
+ if (session && !session.endedAt)
395
+ return this.currentSessionId;
396
+ }
397
+ // Check if there's a recent unclosed session (< 30 min old)
398
+ const recent = this.db.prepare('SELECT id FROM sessions WHERE ended_at IS NULL AND started_at > ? ORDER BY started_at DESC LIMIT 1').get(Date.now() - SESSION_TIMEOUT_MS);
399
+ if (recent) {
400
+ this.currentSessionId = recent.id;
401
+ return recent.id;
402
+ }
403
+ // Auto-end old sessions and start a new one
404
+ return this.startSession(agentName);
405
+ }
406
+ // ── Digest Cache ────────────────────────────────────────
407
+ /**
408
+ * Get a cached digest. Returns null if expired or missing.
409
+ */
410
+ getCachedDigest(key) {
411
+ const row = this.db.prepare('SELECT content FROM digest_cache WHERE key = ? AND valid_until > ?').get(key, Date.now());
412
+ return row?.content || null;
413
+ }
414
+ /**
415
+ * Store a digest in cache.
416
+ */
417
+ setCachedDigest(key, content, ttlMs = 300_000) {
418
+ const now = Date.now();
419
+ this.db.prepare('INSERT OR REPLACE INTO digest_cache (key, content, generated_at, valid_until) VALUES (?, ?, ?, ?)').run(key, content, now, now + ttlMs);
420
+ }
421
+ /**
422
+ * Invalidate all digest caches (called when index changes).
423
+ */
424
+ invalidateDigestCache() {
425
+ this.db.prepare('DELETE FROM digest_cache').run();
426
+ }
427
+ // ── Maintenance ─────────────────────────────────────────
428
+ /**
429
+ * Prune old changelog entries.
430
+ */
431
+ pruneChangelog() {
432
+ const cutoff = Date.now() - MAX_CHANGELOG_AGE_MS;
433
+ // Delete entries older than 30 days
434
+ const byAge = this.db.prepare('DELETE FROM changelog WHERE timestamp < ?').run(cutoff);
435
+ // Keep only the last MAX_CHANGELOG_ENTRIES
436
+ const count = this.db.prepare('SELECT COUNT(*) as c FROM changelog').get().c;
437
+ let byCount = 0;
438
+ if (count > MAX_CHANGELOG_ENTRIES) {
439
+ const keepFrom = this.db.prepare('SELECT timestamp FROM changelog ORDER BY timestamp DESC LIMIT 1 OFFSET ?').get(MAX_CHANGELOG_ENTRIES);
440
+ if (keepFrom) {
441
+ const result = this.db.prepare('DELETE FROM changelog WHERE timestamp < ?').run(keepFrom.timestamp);
442
+ byCount = result.changes;
443
+ }
444
+ }
445
+ return byAge.changes + byCount;
446
+ }
447
+ /**
448
+ * Get stats about the changelog engine.
449
+ */
450
+ getStats() {
451
+ const entries = this.db.prepare('SELECT COUNT(*) as c FROM changelog').get().c;
452
+ const sessions = this.db.prepare('SELECT COUNT(*) as c FROM sessions').get().c;
453
+ const active = this.db.prepare('SELECT COUNT(*) as c FROM sessions WHERE ended_at IS NULL').get().c;
454
+ const hotspots = this.db.prepare('SELECT COUNT(*) as c FROM file_hotspots').get().c;
455
+ const oldest = this.db.prepare('SELECT MIN(timestamp) as t FROM changelog').get()?.t ?? null;
456
+ const newest = this.db.prepare('SELECT MAX(timestamp) as t FROM changelog').get()?.t ?? null;
457
+ return {
458
+ totalEntries: entries,
459
+ totalSessions: sessions,
460
+ activeSessions: active,
461
+ trackedFiles: hotspots,
462
+ oldestEntry: oldest,
463
+ newestEntry: newest,
464
+ };
465
+ }
466
+ // ── Private Helpers ─────────────────────────────────────
467
+ autoEndStaleSession() {
468
+ const cutoff = Date.now() - SESSION_TIMEOUT_MS;
469
+ this.db.prepare('UPDATE sessions SET ended_at = ?, summary = \'Auto-ended (timeout)\' WHERE ended_at IS NULL AND started_at < ?').run(Date.now(), cutoff);
470
+ if (this.currentSessionId) {
471
+ const session = this.getSession(this.currentSessionId);
472
+ if (session?.endedAt) {
473
+ this.currentSessionId = null;
474
+ }
475
+ }
476
+ }
477
+ rowToEntry(row) {
478
+ return {
479
+ id: row.id,
480
+ timestamp: row.timestamp,
481
+ sessionId: row.session_id,
482
+ filePath: row.file_path,
483
+ changeType: row.change_type,
484
+ symbolName: row.symbol_name,
485
+ symbolType: row.symbol_type,
486
+ oldSignature: row.old_signature,
487
+ newSignature: row.new_signature,
488
+ oldHash: row.old_hash,
489
+ newHash: row.new_hash,
490
+ oldStartLine: row.old_start_line,
491
+ oldEndLine: row.old_end_line,
492
+ newStartLine: row.new_start_line,
493
+ newEndLine: row.new_end_line,
494
+ };
495
+ }
496
+ rowToSession(row) {
497
+ return {
498
+ id: row.id,
499
+ agentName: row.agent_name,
500
+ taskDescription: row.task_description,
501
+ startedAt: row.started_at,
502
+ endedAt: row.ended_at,
503
+ filesModified: JSON.parse(row.files_modified || '[]'),
504
+ summary: row.summary,
505
+ tokensSavedEstimate: row.tokens_saved_estimate || 0,
506
+ };
507
+ }
508
+ }
509
+ //# sourceMappingURL=changelog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog.js","sourceRoot":"","sources":["../../src/knowledge-graph/changelog.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,11 @@ export declare class KnowledgeGraph {
29
29
  private getMeta;
30
30
  /** Set a metadata key-value pair */
31
31
  private setMeta;
32
+ /**
33
+ * Get all nodes belonging to a specific file.
34
+ * Used by changelog engine to diff old vs new nodes during re-indexing.
35
+ */
36
+ getNodesForFile(filePath: string): GraphNode[];
32
37
  /** Serialize parameters array to JSON */
33
38
  private serializeParams;
34
39
  /** Deserialize parameters JSON string to array */
@@ -55,6 +60,10 @@ export declare class KnowledgeGraph {
55
60
  * Get all nodes of a specific type.
56
61
  */
57
62
  getNodesByType(type: NodeType): GraphNode[];
63
+ /**
64
+ * Get all nodes in the graph.
65
+ */
66
+ getAllNodes(): GraphNode[];
58
67
  /**
59
68
  * Delete a node and all its edges.
60
69
  */
@@ -262,6 +271,37 @@ export declare class KnowledgeGraph {
262
271
  aliases: string[];
263
272
  id: string;
264
273
  }>;
274
+ /**
275
+ * Get stored file index entry for staleness comparison.
276
+ */
277
+ getFileIndexEntry(filePath: string): {
278
+ mtime_ms: number;
279
+ size_bytes: number;
280
+ content_hash: string;
281
+ indexed_at: number;
282
+ } | null;
283
+ /**
284
+ * Upsert a file index entry after indexing.
285
+ */
286
+ upsertFileIndex(filePath: string, mtimeMs: number, sizeBytes: number, contentHash: string): void;
287
+ /**
288
+ * Remove a file from the index tracking table.
289
+ */
290
+ removeFileIndex(filePath: string): void;
291
+ /**
292
+ * Get all tracked files for staleness checking.
293
+ */
294
+ getAllFileIndexEntries(): Array<{
295
+ file_path: string;
296
+ mtime_ms: number;
297
+ size_bytes: number;
298
+ content_hash: string;
299
+ indexed_at: number;
300
+ }>;
301
+ /**
302
+ * Count tracked files in file_index.
303
+ */
304
+ getFileIndexCount(): number;
265
305
  /**
266
306
  * Close the database connection.
267
307
  */
@@ -1 +1 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/knowledge-graph/graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/knowledge-graph/graph.ts"],"names":[],"mappings":"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"}