agentdb 3.0.0-alpha.11 → 3.0.0-alpha.12

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 (103) hide show
  1. package/dist/src/cli/agentdb-cli.js +0 -0
  2. package/dist/src/controllers/ReflexionMemory.d.ts +36 -0
  3. package/dist/src/controllers/ReflexionMemory.d.ts.map +1 -1
  4. package/dist/src/controllers/ReflexionMemory.js +165 -0
  5. package/dist/src/controllers/ReflexionMemory.js.map +1 -1
  6. package/dist/src/controllers/index.d.ts +2 -0
  7. package/dist/src/controllers/index.d.ts.map +1 -1
  8. package/dist/src/controllers/index.js +2 -0
  9. package/dist/src/controllers/index.js.map +1 -1
  10. package/dist/src/controllers/prerequisites.d.ts +76 -0
  11. package/dist/src/controllers/prerequisites.d.ts.map +1 -0
  12. package/dist/src/controllers/prerequisites.js +235 -0
  13. package/dist/src/controllers/prerequisites.js.map +1 -0
  14. package/dist/src/db-fallback.d.ts.map +1 -1
  15. package/dist/src/db-fallback.js +55 -45
  16. package/dist/src/db-fallback.js.map +1 -1
  17. package/package.json +1 -1
  18. package/dist/schemas/frontier-schema.sql +0 -378
  19. package/dist/schemas/schema.sql +0 -382
  20. package/dist/src/backends/index.cjs +0 -6
  21. package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts +0 -93
  22. package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts.map +0 -1
  23. package/dist/src/backends/ruvector/GuardedVectorBackend.js +0 -182
  24. package/dist/src/backends/ruvector/GuardedVectorBackend.js.map +0 -1
  25. package/dist/src/consensus/RaftConsensus.d.ts +0 -220
  26. package/dist/src/consensus/RaftConsensus.d.ts.map +0 -1
  27. package/dist/src/consensus/RaftConsensus.js +0 -762
  28. package/dist/src/consensus/RaftConsensus.js.map +0 -1
  29. package/dist/src/controllers/HierarchicalMemory.d.ts +0 -197
  30. package/dist/src/controllers/HierarchicalMemory.d.ts.map +0 -1
  31. package/dist/src/controllers/HierarchicalMemory.js +0 -519
  32. package/dist/src/controllers/HierarchicalMemory.js.map +0 -1
  33. package/dist/src/controllers/MemoryConsolidation.d.ts +0 -142
  34. package/dist/src/controllers/MemoryConsolidation.d.ts.map +0 -1
  35. package/dist/src/controllers/MemoryConsolidation.js +0 -479
  36. package/dist/src/controllers/MemoryConsolidation.js.map +0 -1
  37. package/dist/src/controllers/QUICConnection.d.ts +0 -122
  38. package/dist/src/controllers/QUICConnection.d.ts.map +0 -1
  39. package/dist/src/controllers/QUICConnection.js +0 -329
  40. package/dist/src/controllers/QUICConnection.js.map +0 -1
  41. package/dist/src/controllers/QUICConnectionPool.d.ts +0 -83
  42. package/dist/src/controllers/QUICConnectionPool.d.ts.map +0 -1
  43. package/dist/src/controllers/QUICConnectionPool.js +0 -256
  44. package/dist/src/controllers/QUICConnectionPool.js.map +0 -1
  45. package/dist/src/controllers/QUICStreamManager.d.ts +0 -114
  46. package/dist/src/controllers/QUICStreamManager.d.ts.map +0 -1
  47. package/dist/src/controllers/QUICStreamManager.js +0 -267
  48. package/dist/src/controllers/QUICStreamManager.js.map +0 -1
  49. package/dist/src/controllers/StreamingEmbeddingService.d.ts +0 -82
  50. package/dist/src/controllers/StreamingEmbeddingService.d.ts.map +0 -1
  51. package/dist/src/controllers/StreamingEmbeddingService.js +0 -243
  52. package/dist/src/controllers/StreamingEmbeddingService.js.map +0 -1
  53. package/dist/src/controllers/index.cjs +0 -6
  54. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts +0 -348
  55. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts.map +0 -1
  56. package/dist/src/coordination/MultiDatabaseCoordinator.js +0 -803
  57. package/dist/src/coordination/MultiDatabaseCoordinator.js.map +0 -1
  58. package/dist/src/coordination/index.d.ts +0 -10
  59. package/dist/src/coordination/index.d.ts.map +0 -1
  60. package/dist/src/coordination/index.js +0 -10
  61. package/dist/src/coordination/index.js.map +0 -1
  62. package/dist/src/index.cjs +0 -6
  63. package/dist/src/optimizations/RVFOptimizer.d.ts +0 -226
  64. package/dist/src/optimizations/RVFOptimizer.d.ts.map +0 -1
  65. package/dist/src/optimizations/RVFOptimizer.js +0 -541
  66. package/dist/src/optimizations/RVFOptimizer.js.map +0 -1
  67. package/dist/src/security/AttestationLog.d.ts +0 -70
  68. package/dist/src/security/AttestationLog.d.ts.map +0 -1
  69. package/dist/src/security/AttestationLog.js +0 -174
  70. package/dist/src/security/AttestationLog.js.map +0 -1
  71. package/dist/src/security/MutationGuard.d.ts +0 -83
  72. package/dist/src/security/MutationGuard.d.ts.map +0 -1
  73. package/dist/src/security/MutationGuard.js +0 -364
  74. package/dist/src/security/MutationGuard.js.map +0 -1
  75. package/dist/src/security/index.cjs +0 -6
  76. package/dist/src/security/index.d.ts +0 -15
  77. package/dist/src/security/index.d.ts.map +0 -1
  78. package/dist/src/security/index.js +0 -18
  79. package/dist/src/security/index.js.map +0 -1
  80. package/dist/src/services/GNNService.d.ts +0 -173
  81. package/dist/src/services/GNNService.d.ts.map +0 -1
  82. package/dist/src/services/GNNService.js +0 -639
  83. package/dist/src/services/GNNService.js.map +0 -1
  84. package/dist/src/services/GraphTransformerService.d.ts +0 -80
  85. package/dist/src/services/GraphTransformerService.d.ts.map +0 -1
  86. package/dist/src/services/GraphTransformerService.js +0 -369
  87. package/dist/src/services/GraphTransformerService.js.map +0 -1
  88. package/dist/src/services/SemanticRouter.d.ts +0 -83
  89. package/dist/src/services/SemanticRouter.d.ts.map +0 -1
  90. package/dist/src/services/SemanticRouter.js +0 -160
  91. package/dist/src/services/SemanticRouter.js.map +0 -1
  92. package/dist/src/services/SonaTrajectoryService.d.ts +0 -224
  93. package/dist/src/services/SonaTrajectoryService.d.ts.map +0 -1
  94. package/dist/src/services/SonaTrajectoryService.js +0 -539
  95. package/dist/src/services/SonaTrajectoryService.js.map +0 -1
  96. package/dist/src/utils/LegacyAttentionAdapter.d.ts +0 -93
  97. package/dist/src/utils/LegacyAttentionAdapter.d.ts.map +0 -1
  98. package/dist/src/utils/LegacyAttentionAdapter.js +0 -241
  99. package/dist/src/utils/LegacyAttentionAdapter.js.map +0 -1
  100. package/dist/src/utils/vector-math.d.ts +0 -29
  101. package/dist/src/utils/vector-math.d.ts.map +0 -1
  102. package/dist/src/utils/vector-math.js +0 -66
  103. package/dist/src/utils/vector-math.js.map +0 -1
@@ -1,519 +0,0 @@
1
- /**
2
- * HierarchicalMemory - 3-Tier Human-like Memory System
3
- *
4
- * Implements a biologically-inspired memory hierarchy with:
5
- * - Working Memory: Active context (fast access, 1MB limit)
6
- * - Episodic Memory: Recent experiences (hours-days)
7
- * - Semantic Memory: Long-term knowledge (consolidated)
8
- *
9
- * Based on:
10
- * - Atkinson-Shiffrin Multi-Store Model (1968)
11
- * - Tulving's Episodic/Semantic Distinction (1972)
12
- * - Baddeley's Working Memory Model (2000)
13
- *
14
- * Features:
15
- * - Automatic tier promotion based on access frequency and importance
16
- * - Forgetting curves (Ebbinghaus decay: R = e^(-t/S))
17
- * - Spaced repetition for consolidation
18
- * - Context-dependent recall
19
- * - Memory replay for reinforcement
20
- *
21
- * ADR-066 Phase P2-3
22
- */
23
- import { cosineSimilarity } from '../utils/vector-math.js';
24
- export class HierarchicalMemory {
25
- db;
26
- embedder;
27
- vectorBackend;
28
- graphBackend;
29
- config;
30
- // In-memory caches for fast access
31
- workingMemoryCache = new Map();
32
- episodicMemoryIndex = new Map();
33
- // Stats tracking
34
- stats = {
35
- totalAccesses: 0,
36
- promotions: 0,
37
- consolidations: 0,
38
- forgotten: 0,
39
- };
40
- constructor(db, embedder, vectorBackend, graphBackend, config) {
41
- this.db = db;
42
- this.embedder = embedder;
43
- this.vectorBackend = vectorBackend;
44
- this.graphBackend = graphBackend;
45
- this.config = {
46
- workingMemoryLimit: 1024 * 1024, // 1MB
47
- episodicWindow: 7 * 24 * 60 * 60 * 1000, // 7 days
48
- forgetting: {
49
- decayRate: 0.3,
50
- minRetention: 0.1,
51
- importanceMultiplier: 2.0,
52
- rehearsalBoost: 1.5,
53
- },
54
- consolidation: {
55
- minAccessCount: 3,
56
- minImportance: 0.6,
57
- minAge: 24 * 60 * 60 * 1000, // 24 hours
58
- maxEpisodicSize: 1000,
59
- },
60
- autoConsolidate: true,
61
- ...config,
62
- };
63
- this.initializeDatabase();
64
- }
65
- /**
66
- * Initialize database tables for hierarchical memory
67
- */
68
- initializeDatabase() {
69
- this.db.exec(`
70
- CREATE TABLE IF NOT EXISTS hierarchical_memory (
71
- id TEXT PRIMARY KEY,
72
- tier TEXT NOT NULL,
73
- content TEXT NOT NULL,
74
- importance REAL NOT NULL,
75
- access_count INTEGER DEFAULT 0,
76
- created_at INTEGER NOT NULL,
77
- last_accessed_at INTEGER NOT NULL,
78
- last_rehearsed_at INTEGER,
79
- consolidated_at INTEGER,
80
- tags TEXT,
81
- context TEXT,
82
- metadata TEXT
83
- );
84
-
85
- CREATE INDEX IF NOT EXISTS idx_hierarchical_tier ON hierarchical_memory(tier);
86
- CREATE INDEX IF NOT EXISTS idx_hierarchical_importance ON hierarchical_memory(importance);
87
- CREATE INDEX IF NOT EXISTS idx_hierarchical_access ON hierarchical_memory(access_count);
88
- CREATE INDEX IF NOT EXISTS idx_hierarchical_created ON hierarchical_memory(created_at);
89
- `);
90
- }
91
- /**
92
- * Store a new memory item
93
- */
94
- async store(content, importance = 0.5, tier = 'working', options) {
95
- const id = `mem-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
96
- const now = Date.now();
97
- // Generate embedding
98
- const embedding = await this.embedder.embed(content);
99
- const item = {
100
- id,
101
- tier,
102
- content,
103
- embedding,
104
- importance,
105
- accessCount: 0,
106
- createdAt: now,
107
- lastAccessedAt: now,
108
- tags: options?.tags,
109
- context: options?.context,
110
- metadata: options?.metadata,
111
- };
112
- // Store in database
113
- const stmt = this.db.prepare(`
114
- INSERT INTO hierarchical_memory (
115
- id, tier, content, importance, access_count,
116
- created_at, last_accessed_at, tags, context, metadata
117
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
118
- `);
119
- stmt.run(id, tier, content, importance, 0, now, now, options?.tags ? JSON.stringify(options.tags) : null, options?.context ? JSON.stringify(options.context) : null, options?.metadata ? JSON.stringify(options.metadata) : null);
120
- // Add to vector backend if available
121
- if (this.vectorBackend) {
122
- this.vectorBackend.insert(id, embedding, {
123
- tier,
124
- importance,
125
- createdAt: now,
126
- ...options?.metadata,
127
- });
128
- }
129
- // Cache in appropriate tier
130
- if (tier === 'working') {
131
- this.workingMemoryCache.set(id, item);
132
- await this.enforceWorkingMemoryLimit();
133
- }
134
- else if (tier === 'episodic') {
135
- this.episodicMemoryIndex.set(id, item);
136
- }
137
- // Trigger auto-consolidation if needed
138
- if (this.config.autoConsolidate) {
139
- await this.checkConsolidation();
140
- }
141
- return id;
142
- }
143
- /**
144
- * Retrieve memories matching the query
145
- */
146
- async recall(query) {
147
- this.stats.totalAccesses++;
148
- // Generate embedding if not provided
149
- const queryEmbedding = query.queryEmbedding || await this.embedder.embed(query.query);
150
- // Determine which tiers to search
151
- const tiers = Array.isArray(query.tier)
152
- ? query.tier
153
- : query.tier
154
- ? [query.tier]
155
- : ['working', 'episodic', 'semantic'];
156
- const k = query.k || 10;
157
- const threshold = query.threshold || 0.5;
158
- let results = [];
159
- // Search vector backend if available (faster)
160
- if (this.vectorBackend) {
161
- const searchResults = [];
162
- for (const tier of tiers) {
163
- const tierResults = await this.vectorBackend.search(queryEmbedding, k, {
164
- threshold,
165
- filter: { tier },
166
- });
167
- searchResults.push(...tierResults);
168
- }
169
- // Convert to MemoryItems
170
- results = await Promise.all(searchResults.map(async (result) => {
171
- const item = await this.getMemoryById(result.id);
172
- if (item) {
173
- item.metadata = { ...item.metadata, similarity: result.similarity };
174
- }
175
- return item;
176
- })).then(items => items.filter((item) => item !== null));
177
- }
178
- else {
179
- // Fallback: manual search
180
- results = await this.manualSearch(queryEmbedding, ['working', 'episodic', 'semantic'], k, threshold);
181
- }
182
- // Apply forgetting curve if not including decayed
183
- if (!query.includeDecayed) {
184
- results = results.filter(item => this.calculateRetention(item) >= this.config.forgetting.minRetention);
185
- }
186
- // Context-dependent recall
187
- if (query.context) {
188
- results = this.applyContextFilter(results, query.context);
189
- }
190
- // Update access tracking and promote if needed
191
- await this.updateAccessTracking(results.map(r => r.id));
192
- return results.slice(0, k);
193
- }
194
- /**
195
- * Promote memory to higher tier based on importance and access
196
- */
197
- async promote(memoryId) {
198
- const item = await this.getMemoryById(memoryId);
199
- if (!item)
200
- return false;
201
- let newTier = null;
202
- // Working → Episodic: After multiple accesses
203
- if (item.tier === 'working' && item.accessCount >= 2) {
204
- newTier = 'episodic';
205
- }
206
- // Episodic → Semantic: Based on consolidation criteria
207
- if (item.tier === 'episodic') {
208
- const age = Date.now() - item.createdAt;
209
- if (item.accessCount >= this.config.consolidation.minAccessCount &&
210
- item.importance >= this.config.consolidation.minImportance &&
211
- age >= this.config.consolidation.minAge) {
212
- newTier = 'semantic';
213
- }
214
- }
215
- if (newTier) {
216
- await this.updateTier(memoryId, newTier);
217
- this.stats.promotions++;
218
- return true;
219
- }
220
- return false;
221
- }
222
- /**
223
- * Rehearse a memory to strengthen retention
224
- */
225
- async rehearse(memoryId) {
226
- const now = Date.now();
227
- const stmt = this.db.prepare(`
228
- UPDATE hierarchical_memory
229
- SET last_rehearsed_at = ?, access_count = access_count + 1
230
- WHERE id = ?
231
- `);
232
- stmt.run(now, memoryId);
233
- // Update cache
234
- const item = this.workingMemoryCache.get(memoryId) || this.episodicMemoryIndex.get(memoryId);
235
- if (item) {
236
- item.lastRehearsedAt = now;
237
- item.accessCount++;
238
- }
239
- }
240
- /**
241
- * Calculate retention score using Ebbinghaus forgetting curve
242
- * R(t) = e^(-t/S)
243
- * Where S = base_strength * importance_multiplier * rehearsal_boost
244
- */
245
- calculateRetention(item) {
246
- const now = Date.now();
247
- const timeSinceCreation = (now - item.createdAt) / (24 * 60 * 60 * 1000); // days
248
- const timeSinceRehearsal = item.lastRehearsedAt
249
- ? (now - item.lastRehearsedAt) / (24 * 60 * 60 * 1000)
250
- : timeSinceCreation;
251
- // Calculate strength (inverse of decay rate)
252
- const baseStrength = 1 / this.config.forgetting.decayRate;
253
- const importanceBoost = 1 + (item.importance * this.config.forgetting.importanceMultiplier);
254
- const rehearsalBoost = item.lastRehearsedAt ? this.config.forgetting.rehearsalBoost : 1.0;
255
- const strength = baseStrength * importanceBoost * rehearsalBoost;
256
- // Ebbinghaus formula
257
- const retention = Math.exp(-timeSinceRehearsal / strength);
258
- return Math.max(retention, this.config.forgetting.minRetention);
259
- }
260
- /**
261
- * Get memory statistics
262
- */
263
- async getStats() {
264
- const workingStats = this.db.prepare(`
265
- SELECT
266
- COUNT(*) as count,
267
- AVG(importance) as avgImportance,
268
- AVG(access_count) as avgAccessCount,
269
- SUM(LENGTH(content)) as sizeBytes
270
- FROM hierarchical_memory WHERE tier = 'working'
271
- `).get();
272
- const episodicStats = this.db.prepare(`
273
- SELECT
274
- COUNT(*) as count,
275
- AVG(importance) as avgImportance,
276
- AVG(? - created_at) as avgAge,
277
- SUM(LENGTH(content)) as sizeBytes
278
- FROM hierarchical_memory WHERE tier = 'episodic'
279
- `).get(Date.now());
280
- const semanticStats = this.db.prepare(`
281
- SELECT
282
- COUNT(*) as count,
283
- AVG(importance) as avgImportance,
284
- COUNT(CASE WHEN consolidated_at IS NOT NULL THEN 1 END) as consolidated,
285
- SUM(LENGTH(content)) as sizeBytes
286
- FROM hierarchical_memory WHERE tier = 'semantic'
287
- `).get();
288
- const totalMemories = workingStats.count + episodicStats.count + semanticStats.count;
289
- const promotionRate = totalMemories > 0 ? this.stats.promotions / totalMemories : 0;
290
- return {
291
- working: {
292
- count: workingStats.count || 0,
293
- sizeBytes: workingStats.sizeBytes || 0,
294
- avgImportance: workingStats.avgImportance || 0,
295
- avgAccessCount: workingStats.avgAccessCount || 0,
296
- },
297
- episodic: {
298
- count: episodicStats.count || 0,
299
- sizeBytes: episodicStats.sizeBytes || 0,
300
- avgImportance: episodicStats.avgImportance || 0,
301
- avgAge: episodicStats.avgAge || 0,
302
- },
303
- semantic: {
304
- count: semanticStats.count || 0,
305
- sizeBytes: semanticStats.sizeBytes || 0,
306
- avgImportance: semanticStats.avgImportance || 0,
307
- consolidationRate: semanticStats.count > 0
308
- ? (semanticStats.consolidated || 0) / semanticStats.count
309
- : 0,
310
- },
311
- totalMemories,
312
- forgottenCount: this.stats.forgotten,
313
- promotionRate,
314
- };
315
- }
316
- /**
317
- * Enforce working memory size limit by evicting least important items
318
- */
319
- async enforceWorkingMemoryLimit() {
320
- const currentSize = this.calculateWorkingMemorySize();
321
- if (currentSize > this.config.workingMemoryLimit) {
322
- // Get working memories sorted by importance * retention
323
- const memories = Array.from(this.workingMemoryCache.values())
324
- .map(item => ({
325
- ...item,
326
- score: item.importance * this.calculateRetention(item),
327
- }))
328
- .sort((a, b) => a.score - b.score);
329
- // Evict until under limit
330
- let freedSize = 0;
331
- for (const memory of memories) {
332
- if (currentSize - freedSize <= this.config.workingMemoryLimit)
333
- break;
334
- // Promote to episodic or forget
335
- if (memory.score > 0.3) {
336
- await this.updateTier(memory.id, 'episodic');
337
- }
338
- else {
339
- await this.forget(memory.id);
340
- }
341
- freedSize += new TextEncoder().encode(memory.content).length;
342
- this.workingMemoryCache.delete(memory.id);
343
- }
344
- }
345
- }
346
- /**
347
- * Calculate current working memory size in bytes
348
- */
349
- calculateWorkingMemorySize() {
350
- let size = 0;
351
- for (const item of this.workingMemoryCache.values()) {
352
- size += new TextEncoder().encode(item.content).length;
353
- }
354
- return size;
355
- }
356
- /**
357
- * Update memory tier
358
- */
359
- async updateTier(memoryId, newTier) {
360
- const now = Date.now();
361
- const stmt = this.db.prepare(`
362
- UPDATE hierarchical_memory
363
- SET tier = ?, consolidated_at = ?
364
- WHERE id = ?
365
- `);
366
- stmt.run(newTier, newTier === 'semantic' ? now : null, memoryId);
367
- // Update caches
368
- const item = this.workingMemoryCache.get(memoryId) || this.episodicMemoryIndex.get(memoryId);
369
- if (item) {
370
- item.tier = newTier;
371
- if (newTier === 'semantic') {
372
- item.consolidatedAt = now;
373
- }
374
- // Move between caches
375
- this.workingMemoryCache.delete(memoryId);
376
- this.episodicMemoryIndex.delete(memoryId);
377
- if (newTier === 'working') {
378
- this.workingMemoryCache.set(memoryId, item);
379
- }
380
- else if (newTier === 'episodic') {
381
- this.episodicMemoryIndex.set(memoryId, item);
382
- }
383
- }
384
- // Update vector backend metadata
385
- if (this.vectorBackend && item?.embedding) {
386
- this.vectorBackend.insert(memoryId, item.embedding, {
387
- tier: newTier,
388
- consolidated: newTier === 'semantic',
389
- });
390
- }
391
- }
392
- /**
393
- * Forget (delete) a memory
394
- */
395
- async forget(memoryId) {
396
- this.db.prepare('DELETE FROM hierarchical_memory WHERE id = ?').run(memoryId);
397
- this.workingMemoryCache.delete(memoryId);
398
- this.episodicMemoryIndex.delete(memoryId);
399
- this.stats.forgotten++;
400
- // Remove from vector backend
401
- if (this.vectorBackend) {
402
- this.vectorBackend.remove(memoryId);
403
- }
404
- }
405
- /**
406
- * Get memory item by ID
407
- */
408
- async getMemoryById(id) {
409
- // Check caches first
410
- const cached = this.workingMemoryCache.get(id) || this.episodicMemoryIndex.get(id);
411
- if (cached)
412
- return cached;
413
- // Fetch from database
414
- const row = this.db.prepare(`
415
- SELECT * FROM hierarchical_memory WHERE id = ?
416
- `).get(id);
417
- if (!row)
418
- return null;
419
- const item = {
420
- id: row.id,
421
- tier: row.tier,
422
- content: row.content,
423
- importance: row.importance,
424
- accessCount: row.access_count,
425
- createdAt: row.created_at,
426
- lastAccessedAt: row.last_accessed_at,
427
- lastRehearsedAt: row.last_rehearsed_at,
428
- consolidatedAt: row.consolidated_at,
429
- tags: row.tags ? JSON.parse(row.tags) : undefined,
430
- context: row.context ? JSON.parse(row.context) : undefined,
431
- metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
432
- };
433
- return item;
434
- }
435
- /**
436
- * Manual search without vector backend
437
- */
438
- async manualSearch(queryEmbedding, tiers, k, threshold) {
439
- const tierFilter = tiers.map(t => `'${t}'`).join(',');
440
- const rows = this.db.prepare(`
441
- SELECT * FROM hierarchical_memory
442
- WHERE tier IN (${tierFilter})
443
- ORDER BY importance DESC
444
- LIMIT ?
445
- `).all(k * 2); // Get more to account for filtering
446
- const results = [];
447
- for (const row of rows) {
448
- const embedding = await this.embedder.embed(row.content);
449
- const similarity = cosineSimilarity(queryEmbedding, embedding);
450
- if (similarity >= threshold) {
451
- results.push({
452
- id: row.id,
453
- tier: row.tier,
454
- content: row.content,
455
- embedding,
456
- importance: row.importance,
457
- accessCount: row.access_count,
458
- createdAt: row.created_at,
459
- lastAccessedAt: row.last_accessed_at,
460
- lastRehearsedAt: row.last_rehearsed_at,
461
- consolidatedAt: row.consolidated_at,
462
- tags: row.tags ? JSON.parse(row.tags) : undefined,
463
- context: row.context ? JSON.parse(row.context) : undefined,
464
- metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
465
- similarity,
466
- });
467
- }
468
- }
469
- return results.sort((a, b) => b.similarity - a.similarity).slice(0, k);
470
- }
471
- /**
472
- * Apply context filter to results
473
- */
474
- applyContextFilter(results, context) {
475
- return results.filter(item => {
476
- if (!item.context)
477
- return false;
478
- // Check if at least 50% of context keys match
479
- const keys = Object.keys(context);
480
- const matches = keys.filter(key => item.context[key] === context[key]).length;
481
- return matches / keys.length >= 0.5;
482
- });
483
- }
484
- /**
485
- * Update access tracking for retrieved memories
486
- */
487
- async updateAccessTracking(ids) {
488
- if (ids.length === 0)
489
- return;
490
- const now = Date.now();
491
- const placeholders = ids.map(() => '?').join(',');
492
- this.db.prepare(`
493
- UPDATE hierarchical_memory
494
- SET access_count = access_count + 1, last_accessed_at = ?
495
- WHERE id IN (${placeholders})
496
- `).run(now, ...ids);
497
- // Update caches
498
- for (const id of ids) {
499
- const item = this.workingMemoryCache.get(id) || this.episodicMemoryIndex.get(id);
500
- if (item) {
501
- item.accessCount++;
502
- item.lastAccessedAt = now;
503
- // Check for promotion
504
- await this.promote(id);
505
- }
506
- }
507
- }
508
- /**
509
- * Check if consolidation is needed and trigger if necessary
510
- */
511
- async checkConsolidation() {
512
- const episodicCount = this.episodicMemoryIndex.size;
513
- if (episodicCount >= this.config.consolidation.maxEpisodicSize) {
514
- // Trigger consolidation (will be handled by MemoryConsolidation service)
515
- console.log(`⚠️ Episodic memory full (${episodicCount} items). Consolidation recommended.`);
516
- }
517
- }
518
- }
519
- //# sourceMappingURL=HierarchicalMemory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HierarchicalMemory.js","sourceRoot":"","sources":["../../../src/controllers/HierarchicalMemory.ts"],"names":[],"mappings":"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"}
@@ -1,142 +0,0 @@
1
- /**
2
- * MemoryConsolidation - Nightly Memory Processing
3
- *
4
- * Implements automatic memory consolidation from episodic to semantic memory
5
- * using spaced repetition and importance scoring.
6
- *
7
- * Based on:
8
- * - Complementary Learning Systems (McClelland et al., 1995)
9
- * - Active Systems Consolidation (Diekelmann & Born, 2010)
10
- * - Spaced Repetition (Ebbinghaus, 1885)
11
- *
12
- * Process:
13
- * 1. Identify consolidation candidates (high importance + multiple accesses)
14
- * 2. Cluster similar episodic memories
15
- * 3. Extract semantic patterns (abstractions)
16
- * 4. Promote to semantic memory
17
- * 5. Apply forgetting to low-value episodic memories
18
- * 6. Schedule spaced repetition for important memories
19
- *
20
- * ADR-066 Phase P2-3
21
- */
22
- import type { VectorBackend } from '../backends/VectorBackend.js';
23
- import type { GraphBackend } from '../backends/GraphBackend.js';
24
- import { HierarchicalMemory } from './HierarchicalMemory.js';
25
- import { EmbeddingService } from './EmbeddingService.js';
26
- type Database = any;
27
- /** Consolidation result report */
28
- export interface ConsolidationReport {
29
- timestamp: number;
30
- executionTimeMs: number;
31
- episodicProcessed: number;
32
- semanticCreated: number;
33
- memoriesForgotten: number;
34
- clustersFormed: number;
35
- avgImportance: number;
36
- retentionRate: number;
37
- recommendations: string[];
38
- }
39
- export interface ConsolidationConfig {
40
- /** Minimum similarity for clustering (0-1) */
41
- clusterThreshold: number;
42
- /** Minimum cluster size for semantic extraction */
43
- minClusterSize: number;
44
- /** Maximum cluster size before splitting */
45
- maxClusterSize: number;
46
- /** Importance threshold for consolidation */
47
- importanceThreshold: number;
48
- /** Minimum access count for consolidation */
49
- minAccessCount: number;
50
- /** Enable spaced repetition */
51
- enableSpacedRepetition: boolean;
52
- /** Initial repetition interval (ms) */
53
- initialInterval: number;
54
- /** Interval multiplier for successful recall */
55
- intervalMultiplier: number;
56
- /** Forgetting threshold (retention below this = forget) */
57
- forgettingThreshold: number;
58
- }
59
- export declare class MemoryConsolidation {
60
- private db;
61
- private hierarchicalMemory;
62
- private embedder;
63
- private vectorBackend?;
64
- private graphBackend?;
65
- private config;
66
- private repetitionSchedules;
67
- constructor(db: Database, hierarchicalMemory: HierarchicalMemory, embedder: EmbeddingService, vectorBackend?: VectorBackend, graphBackend?: GraphBackend, config?: Partial<ConsolidationConfig>);
68
- /**
69
- * Initialize database tables for consolidation tracking
70
- */
71
- private initializeDatabase;
72
- /**
73
- * Run nightly consolidation process
74
- */
75
- consolidate(): Promise<ConsolidationReport>;
76
- /**
77
- * Get episodic memories that are candidates for consolidation
78
- */
79
- private getConsolidationCandidates;
80
- /**
81
- * Cluster similar memories using hierarchical clustering
82
- */
83
- private clusterMemories;
84
- /**
85
- * Update cluster centroid (simple average)
86
- */
87
- private updateCentroid;
88
- /**
89
- * Create semantic memory from cluster
90
- */
91
- private createSemanticMemory;
92
- /**
93
- * Extract semantic pattern from cluster
94
- */
95
- private extractSemanticPattern;
96
- /**
97
- * Extract common tags from cluster members
98
- */
99
- private extractCommonTags;
100
- /**
101
- * Mark episodic memory as consolidated
102
- */
103
- private markConsolidated;
104
- /**
105
- * Apply forgetting curve and delete low-value memories
106
- */
107
- private applyForgettingCurve;
108
- /**
109
- * Calculate retention using Ebbinghaus forgetting curve
110
- */
111
- private calculateRetention;
112
- /**
113
- * Schedule spaced repetition for memories
114
- */
115
- private scheduleSpacedRepetition;
116
- /**
117
- * Update repetition schedule after review
118
- */
119
- private updateRepetitionSchedule;
120
- /**
121
- * Save repetition schedule to database
122
- */
123
- private saveRepetitionSchedule;
124
- /**
125
- * Load repetition schedules from database
126
- */
127
- private loadRepetitionSchedules;
128
- /**
129
- * Generate recommendations based on consolidation report
130
- */
131
- private generateRecommendations;
132
- /**
133
- * Log consolidation to database
134
- */
135
- private logConsolidation;
136
- /**
137
- * Get consolidation history
138
- */
139
- getConsolidationHistory(limit?: number): Promise<ConsolidationReport[]>;
140
- }
141
- export {};
142
- //# sourceMappingURL=MemoryConsolidation.d.ts.map