agentdb 3.0.0-alpha.11 → 3.0.0-alpha.13

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 (107) hide show
  1. package/dist/src/backends/graph/GraphDatabaseAdapter.d.ts +54 -0
  2. package/dist/src/backends/graph/GraphDatabaseAdapter.d.ts.map +1 -1
  3. package/dist/src/backends/graph/GraphDatabaseAdapter.js +125 -0
  4. package/dist/src/backends/graph/GraphDatabaseAdapter.js.map +1 -1
  5. package/dist/src/cli/agentdb-cli.js +0 -0
  6. package/dist/src/controllers/ReflexionMemory.d.ts +50 -0
  7. package/dist/src/controllers/ReflexionMemory.d.ts.map +1 -1
  8. package/dist/src/controllers/ReflexionMemory.js +258 -0
  9. package/dist/src/controllers/ReflexionMemory.js.map +1 -1
  10. package/dist/src/controllers/index.d.ts +2 -0
  11. package/dist/src/controllers/index.d.ts.map +1 -1
  12. package/dist/src/controllers/index.js +2 -0
  13. package/dist/src/controllers/index.js.map +1 -1
  14. package/dist/src/controllers/prerequisites.d.ts +76 -0
  15. package/dist/src/controllers/prerequisites.d.ts.map +1 -0
  16. package/dist/src/controllers/prerequisites.js +235 -0
  17. package/dist/src/controllers/prerequisites.js.map +1 -0
  18. package/dist/src/db-fallback.d.ts.map +1 -1
  19. package/dist/src/db-fallback.js +55 -45
  20. package/dist/src/db-fallback.js.map +1 -1
  21. package/package.json +1 -1
  22. package/dist/schemas/frontier-schema.sql +0 -378
  23. package/dist/schemas/schema.sql +0 -382
  24. package/dist/src/backends/index.cjs +0 -6
  25. package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts +0 -93
  26. package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts.map +0 -1
  27. package/dist/src/backends/ruvector/GuardedVectorBackend.js +0 -182
  28. package/dist/src/backends/ruvector/GuardedVectorBackend.js.map +0 -1
  29. package/dist/src/consensus/RaftConsensus.d.ts +0 -220
  30. package/dist/src/consensus/RaftConsensus.d.ts.map +0 -1
  31. package/dist/src/consensus/RaftConsensus.js +0 -762
  32. package/dist/src/consensus/RaftConsensus.js.map +0 -1
  33. package/dist/src/controllers/HierarchicalMemory.d.ts +0 -197
  34. package/dist/src/controllers/HierarchicalMemory.d.ts.map +0 -1
  35. package/dist/src/controllers/HierarchicalMemory.js +0 -519
  36. package/dist/src/controllers/HierarchicalMemory.js.map +0 -1
  37. package/dist/src/controllers/MemoryConsolidation.d.ts +0 -142
  38. package/dist/src/controllers/MemoryConsolidation.d.ts.map +0 -1
  39. package/dist/src/controllers/MemoryConsolidation.js +0 -479
  40. package/dist/src/controllers/MemoryConsolidation.js.map +0 -1
  41. package/dist/src/controllers/QUICConnection.d.ts +0 -122
  42. package/dist/src/controllers/QUICConnection.d.ts.map +0 -1
  43. package/dist/src/controllers/QUICConnection.js +0 -329
  44. package/dist/src/controllers/QUICConnection.js.map +0 -1
  45. package/dist/src/controllers/QUICConnectionPool.d.ts +0 -83
  46. package/dist/src/controllers/QUICConnectionPool.d.ts.map +0 -1
  47. package/dist/src/controllers/QUICConnectionPool.js +0 -256
  48. package/dist/src/controllers/QUICConnectionPool.js.map +0 -1
  49. package/dist/src/controllers/QUICStreamManager.d.ts +0 -114
  50. package/dist/src/controllers/QUICStreamManager.d.ts.map +0 -1
  51. package/dist/src/controllers/QUICStreamManager.js +0 -267
  52. package/dist/src/controllers/QUICStreamManager.js.map +0 -1
  53. package/dist/src/controllers/StreamingEmbeddingService.d.ts +0 -82
  54. package/dist/src/controllers/StreamingEmbeddingService.d.ts.map +0 -1
  55. package/dist/src/controllers/StreamingEmbeddingService.js +0 -243
  56. package/dist/src/controllers/StreamingEmbeddingService.js.map +0 -1
  57. package/dist/src/controllers/index.cjs +0 -6
  58. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts +0 -348
  59. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts.map +0 -1
  60. package/dist/src/coordination/MultiDatabaseCoordinator.js +0 -803
  61. package/dist/src/coordination/MultiDatabaseCoordinator.js.map +0 -1
  62. package/dist/src/coordination/index.d.ts +0 -10
  63. package/dist/src/coordination/index.d.ts.map +0 -1
  64. package/dist/src/coordination/index.js +0 -10
  65. package/dist/src/coordination/index.js.map +0 -1
  66. package/dist/src/index.cjs +0 -6
  67. package/dist/src/optimizations/RVFOptimizer.d.ts +0 -226
  68. package/dist/src/optimizations/RVFOptimizer.d.ts.map +0 -1
  69. package/dist/src/optimizations/RVFOptimizer.js +0 -541
  70. package/dist/src/optimizations/RVFOptimizer.js.map +0 -1
  71. package/dist/src/security/AttestationLog.d.ts +0 -70
  72. package/dist/src/security/AttestationLog.d.ts.map +0 -1
  73. package/dist/src/security/AttestationLog.js +0 -174
  74. package/dist/src/security/AttestationLog.js.map +0 -1
  75. package/dist/src/security/MutationGuard.d.ts +0 -83
  76. package/dist/src/security/MutationGuard.d.ts.map +0 -1
  77. package/dist/src/security/MutationGuard.js +0 -364
  78. package/dist/src/security/MutationGuard.js.map +0 -1
  79. package/dist/src/security/index.cjs +0 -6
  80. package/dist/src/security/index.d.ts +0 -15
  81. package/dist/src/security/index.d.ts.map +0 -1
  82. package/dist/src/security/index.js +0 -18
  83. package/dist/src/security/index.js.map +0 -1
  84. package/dist/src/services/GNNService.d.ts +0 -173
  85. package/dist/src/services/GNNService.d.ts.map +0 -1
  86. package/dist/src/services/GNNService.js +0 -639
  87. package/dist/src/services/GNNService.js.map +0 -1
  88. package/dist/src/services/GraphTransformerService.d.ts +0 -80
  89. package/dist/src/services/GraphTransformerService.d.ts.map +0 -1
  90. package/dist/src/services/GraphTransformerService.js +0 -369
  91. package/dist/src/services/GraphTransformerService.js.map +0 -1
  92. package/dist/src/services/SemanticRouter.d.ts +0 -83
  93. package/dist/src/services/SemanticRouter.d.ts.map +0 -1
  94. package/dist/src/services/SemanticRouter.js +0 -160
  95. package/dist/src/services/SemanticRouter.js.map +0 -1
  96. package/dist/src/services/SonaTrajectoryService.d.ts +0 -224
  97. package/dist/src/services/SonaTrajectoryService.d.ts.map +0 -1
  98. package/dist/src/services/SonaTrajectoryService.js +0 -539
  99. package/dist/src/services/SonaTrajectoryService.js.map +0 -1
  100. package/dist/src/utils/LegacyAttentionAdapter.d.ts +0 -93
  101. package/dist/src/utils/LegacyAttentionAdapter.d.ts.map +0 -1
  102. package/dist/src/utils/LegacyAttentionAdapter.js +0 -241
  103. package/dist/src/utils/LegacyAttentionAdapter.js.map +0 -1
  104. package/dist/src/utils/vector-math.d.ts +0 -29
  105. package/dist/src/utils/vector-math.d.ts.map +0 -1
  106. package/dist/src/utils/vector-math.js +0 -66
  107. 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