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 +0,0 @@
1
- {"version":3,"file":"MemoryConsolidation.d.ts","sourceRoot":"","sources":["../../../src/controllers/MemoryConsolidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAoC,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAIzD,KAAK,QAAQ,GAAG,GAAG,CAAC;AAEpB,kCAAkC;AAClC,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAoBD,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,gBAAgB,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,sBAAsB,EAAE,OAAO,CAAC;IAChC,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2DAA2D;IAC3D,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,MAAM,CAAsB;IAGpC,OAAO,CAAC,mBAAmB,CAAyC;gBAGlE,EAAE,EAAE,QAAQ,EACZ,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,gBAAgB,EAC1B,aAAa,CAAC,EAAE,aAAa,EAC7B,YAAY,CAAC,EAAE,YAAY,EAC3B,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAyBvC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyB1B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAuFjD;;OAEG;YACW,0BAA0B;IAiCxC;;OAEG;YACW,eAAe;IA6C7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;YACW,oBAAoB;IAoClC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;YACW,gBAAgB;IAS9B;;OAEG;YACW,oBAAoB;IAsBlC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkB1B;;OAEG;YACW,wBAAwB;IA2BtC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAmBhC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAc9B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAc/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA0B/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACG,uBAAuB,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;CAmBlF"}
@@ -1,479 +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 { cosineSimilarity } from '../utils/vector-math.js';
23
- export class MemoryConsolidation {
24
- db;
25
- hierarchicalMemory;
26
- embedder;
27
- vectorBackend;
28
- graphBackend;
29
- config;
30
- // Spaced repetition tracking
31
- repetitionSchedules = new Map();
32
- constructor(db, hierarchicalMemory, embedder, vectorBackend, graphBackend, config) {
33
- this.db = db;
34
- this.hierarchicalMemory = hierarchicalMemory;
35
- this.embedder = embedder;
36
- this.vectorBackend = vectorBackend;
37
- this.graphBackend = graphBackend;
38
- this.config = {
39
- clusterThreshold: 0.75,
40
- minClusterSize: 3,
41
- maxClusterSize: 20,
42
- importanceThreshold: 0.6,
43
- minAccessCount: 3,
44
- enableSpacedRepetition: true,
45
- initialInterval: 24 * 60 * 60 * 1000, // 24 hours
46
- intervalMultiplier: 2.0,
47
- forgettingThreshold: 0.2,
48
- ...config,
49
- };
50
- this.initializeDatabase();
51
- this.loadRepetitionSchedules();
52
- }
53
- /**
54
- * Initialize database tables for consolidation tracking
55
- */
56
- initializeDatabase() {
57
- this.db.exec(`
58
- CREATE TABLE IF NOT EXISTS consolidation_log (
59
- id INTEGER PRIMARY KEY AUTOINCREMENT,
60
- timestamp INTEGER NOT NULL,
61
- execution_time_ms INTEGER NOT NULL,
62
- episodic_processed INTEGER NOT NULL,
63
- semantic_created INTEGER NOT NULL,
64
- memories_forgotten INTEGER NOT NULL,
65
- clusters_formed INTEGER NOT NULL,
66
- retention_rate REAL NOT NULL
67
- );
68
-
69
- CREATE TABLE IF NOT EXISTS spaced_repetition (
70
- memory_id TEXT PRIMARY KEY,
71
- next_review INTEGER NOT NULL,
72
- interval INTEGER NOT NULL,
73
- ease_factor REAL NOT NULL,
74
- repetitions INTEGER NOT NULL
75
- );
76
-
77
- CREATE INDEX IF NOT EXISTS idx_spaced_next_review ON spaced_repetition(next_review);
78
- `);
79
- }
80
- /**
81
- * Run nightly consolidation process
82
- */
83
- async consolidate() {
84
- console.log('\n🌙 Starting Memory Consolidation...\n');
85
- const startTime = Date.now();
86
- const report = {
87
- timestamp: startTime,
88
- executionTimeMs: 0,
89
- episodicProcessed: 0,
90
- semanticCreated: 0,
91
- memoriesForgotten: 0,
92
- clustersFormed: 0,
93
- avgImportance: 0,
94
- retentionRate: 0,
95
- recommendations: [],
96
- };
97
- try {
98
- // Step 1: Get consolidation candidates
99
- console.log('📊 Identifying consolidation candidates...');
100
- const candidates = await this.getConsolidationCandidates();
101
- report.episodicProcessed = candidates.length;
102
- console.log(` Found ${candidates.length} episodic memories`);
103
- if (candidates.length === 0) {
104
- console.log('✅ No memories to consolidate');
105
- report.executionTimeMs = Date.now() - startTime;
106
- return report;
107
- }
108
- // Step 2: Cluster similar memories
109
- console.log('🔗 Clustering similar memories...');
110
- const clusters = await this.clusterMemories(candidates);
111
- report.clustersFormed = clusters.length;
112
- console.log(` Formed ${clusters.length} clusters`);
113
- // Step 3: Extract semantic patterns and create semantic memories
114
- console.log('🧠 Extracting semantic patterns...');
115
- for (const cluster of clusters) {
116
- if (cluster.members.length >= this.config.minClusterSize) {
117
- const semanticMemory = await this.createSemanticMemory(cluster);
118
- if (semanticMemory) {
119
- report.semanticCreated++;
120
- }
121
- }
122
- }
123
- console.log(` Created ${report.semanticCreated} semantic memories`);
124
- // Step 4: Apply forgetting curve
125
- console.log('🗑️ Applying forgetting curve...');
126
- const forgotten = await this.applyForgettingCurve(candidates);
127
- report.memoriesForgotten = forgotten;
128
- console.log(` Forgot ${forgotten} low-value memories`);
129
- // Step 5: Schedule spaced repetition
130
- if (this.config.enableSpacedRepetition) {
131
- console.log('📅 Scheduling spaced repetition...');
132
- await this.scheduleSpacedRepetition(candidates);
133
- console.log(` Scheduled ${candidates.length - forgotten} memories`);
134
- }
135
- // Step 6: Calculate statistics
136
- const totalImportance = candidates.reduce((sum, m) => sum + m.importance, 0);
137
- report.avgImportance = candidates.length > 0 ? totalImportance / candidates.length : 0;
138
- report.retentionRate = candidates.length > 0
139
- ? (candidates.length - forgotten) / candidates.length
140
- : 0;
141
- // Step 7: Generate recommendations
142
- report.recommendations = this.generateRecommendations(report);
143
- report.executionTimeMs = Date.now() - startTime;
144
- // Log consolidation
145
- this.logConsolidation(report);
146
- console.log('\n✅ Memory Consolidation Complete');
147
- console.log(` Time: ${report.executionTimeMs}ms`);
148
- console.log(` Retention: ${(report.retentionRate * 100).toFixed(1)}%`);
149
- return report;
150
- }
151
- catch (error) {
152
- console.error('❌ Memory consolidation failed:', error);
153
- report.executionTimeMs = Date.now() - startTime;
154
- return report;
155
- }
156
- }
157
- /**
158
- * Get episodic memories that are candidates for consolidation
159
- */
160
- async getConsolidationCandidates() {
161
- const rows = this.db.prepare(`
162
- SELECT * FROM hierarchical_memory
163
- WHERE tier = 'episodic'
164
- AND importance >= ?
165
- AND access_count >= ?
166
- ORDER BY importance DESC, access_count DESC
167
- `).all(this.config.importanceThreshold, this.config.minAccessCount);
168
- const candidates = [];
169
- for (const row of rows) {
170
- const embedding = await this.embedder.embed(row.content);
171
- candidates.push({
172
- id: row.id,
173
- tier: row.tier,
174
- content: row.content,
175
- embedding,
176
- importance: row.importance,
177
- accessCount: row.access_count,
178
- createdAt: row.created_at,
179
- lastAccessedAt: row.last_accessed_at,
180
- lastRehearsedAt: row.last_rehearsed_at,
181
- consolidatedAt: row.consolidated_at,
182
- tags: row.tags ? JSON.parse(row.tags) : undefined,
183
- context: row.context ? JSON.parse(row.context) : undefined,
184
- metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
185
- });
186
- }
187
- return candidates;
188
- }
189
- /**
190
- * Cluster similar memories using hierarchical clustering
191
- */
192
- async clusterMemories(memories) {
193
- if (memories.length === 0)
194
- return [];
195
- const clusters = [];
196
- const assigned = new Set();
197
- // Simple greedy clustering
198
- for (const memory of memories) {
199
- if (assigned.has(memory.id))
200
- continue;
201
- // Create new cluster
202
- const cluster = {
203
- id: `cluster-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
204
- centroid: memory.embedding,
205
- members: [memory],
206
- avgImportance: memory.importance,
207
- };
208
- assigned.add(memory.id);
209
- // Find similar memories to add to cluster
210
- for (const candidate of memories) {
211
- if (assigned.has(candidate.id))
212
- continue;
213
- if (cluster.members.length >= this.config.maxClusterSize)
214
- break;
215
- const similarity = cosineSimilarity(cluster.centroid, candidate.embedding);
216
- if (similarity >= this.config.clusterThreshold) {
217
- cluster.members.push(candidate);
218
- assigned.add(candidate.id);
219
- // Update centroid (simple average)
220
- this.updateCentroid(cluster);
221
- }
222
- }
223
- // Calculate average importance
224
- cluster.avgImportance = cluster.members.reduce((sum, m) => sum + m.importance, 0) / cluster.members.length;
225
- clusters.push(cluster);
226
- }
227
- return clusters;
228
- }
229
- /**
230
- * Update cluster centroid (simple average)
231
- */
232
- updateCentroid(cluster) {
233
- const dimension = cluster.centroid.length;
234
- const newCentroid = new Float32Array(dimension);
235
- for (const member of cluster.members) {
236
- for (let i = 0; i < dimension; i++) {
237
- newCentroid[i] += member.embedding[i];
238
- }
239
- }
240
- for (let i = 0; i < dimension; i++) {
241
- newCentroid[i] /= cluster.members.length;
242
- }
243
- cluster.centroid = newCentroid;
244
- }
245
- /**
246
- * Create semantic memory from cluster
247
- */
248
- async createSemanticMemory(cluster) {
249
- // Extract common pattern from cluster members
250
- const pattern = this.extractSemanticPattern(cluster);
251
- if (!pattern)
252
- return null;
253
- // Calculate consolidated importance (weighted by access count)
254
- const totalAccess = cluster.members.reduce((sum, m) => sum + m.accessCount, 0);
255
- const weightedImportance = cluster.members.reduce((sum, m) => sum + (m.importance * m.accessCount), 0) / totalAccess;
256
- // Store as semantic memory
257
- const memoryId = await this.hierarchicalMemory.store(pattern, weightedImportance, 'semantic', {
258
- tags: this.extractCommonTags(cluster),
259
- metadata: {
260
- clusterId: cluster.id,
261
- clusterSize: cluster.members.length,
262
- sourceMemories: cluster.members.map(m => m.id),
263
- consolidatedAt: Date.now(),
264
- },
265
- });
266
- // Mark source episodic memories as consolidated
267
- for (const member of cluster.members) {
268
- await this.markConsolidated(member.id);
269
- }
270
- return memoryId;
271
- }
272
- /**
273
- * Extract semantic pattern from cluster
274
- */
275
- extractSemanticPattern(cluster) {
276
- if (cluster.members.length < this.config.minClusterSize)
277
- return null;
278
- // Simple pattern: find common themes in content
279
- // In production, this could use LLM for better abstraction
280
- const contents = cluster.members.map(m => m.content);
281
- // For now, just return a summary of the most important memory
282
- const mostImportant = cluster.members.reduce((best, m) => m.importance > best.importance ? m : best);
283
- const pattern = `Pattern: ${mostImportant.content} (consolidated from ${cluster.members.length} similar memories)`;
284
- return pattern;
285
- }
286
- /**
287
- * Extract common tags from cluster members
288
- */
289
- extractCommonTags(cluster) {
290
- const tagCounts = new Map();
291
- for (const member of cluster.members) {
292
- if (member.tags) {
293
- for (const tag of member.tags) {
294
- tagCounts.set(tag, (tagCounts.get(tag) || 0) + 1);
295
- }
296
- }
297
- }
298
- // Return tags that appear in at least 50% of members
299
- const threshold = cluster.members.length * 0.5;
300
- return Array.from(tagCounts.entries())
301
- .filter(([_, count]) => count >= threshold)
302
- .map(([tag, _]) => tag);
303
- }
304
- /**
305
- * Mark episodic memory as consolidated
306
- */
307
- async markConsolidated(memoryId) {
308
- const now = Date.now();
309
- this.db.prepare(`
310
- UPDATE hierarchical_memory
311
- SET consolidated_at = ?
312
- WHERE id = ?
313
- `).run(now, memoryId);
314
- }
315
- /**
316
- * Apply forgetting curve and delete low-value memories
317
- */
318
- async applyForgettingCurve(memories) {
319
- let forgotten = 0;
320
- for (const memory of memories) {
321
- const retention = this.calculateRetention(memory);
322
- if (retention < this.config.forgettingThreshold) {
323
- // Delete from database
324
- this.db.prepare('DELETE FROM hierarchical_memory WHERE id = ?').run(memory.id);
325
- // Remove from vector backend
326
- if (this.vectorBackend) {
327
- this.vectorBackend.remove(memory.id);
328
- }
329
- forgotten++;
330
- }
331
- }
332
- return forgotten;
333
- }
334
- /**
335
- * Calculate retention using Ebbinghaus forgetting curve
336
- */
337
- calculateRetention(memory) {
338
- const now = Date.now();
339
- const daysSinceCreation = (now - memory.createdAt) / (24 * 60 * 60 * 1000);
340
- const daysSinceRehearsal = memory.lastRehearsedAt
341
- ? (now - memory.lastRehearsedAt) / (24 * 60 * 60 * 1000)
342
- : daysSinceCreation;
343
- // Strength increases with importance and rehearsal
344
- const baseStrength = 5; // days
345
- const importanceMultiplier = 1 + memory.importance * 2;
346
- const rehearsalBoost = memory.lastRehearsedAt ? 1.5 : 1.0;
347
- const strength = baseStrength * importanceMultiplier * rehearsalBoost;
348
- // Ebbinghaus: R = e^(-t/S)
349
- return Math.exp(-daysSinceRehearsal / strength);
350
- }
351
- /**
352
- * Schedule spaced repetition for memories
353
- */
354
- async scheduleSpacedRepetition(memories) {
355
- const now = Date.now();
356
- for (const memory of memories) {
357
- const existingSchedule = this.repetitionSchedules.get(memory.id);
358
- if (existingSchedule) {
359
- // Update existing schedule if review is due
360
- if (now >= existingSchedule.nextReview) {
361
- this.updateRepetitionSchedule(memory.id, true);
362
- }
363
- }
364
- else {
365
- // Create new schedule
366
- const schedule = {
367
- memoryId: memory.id,
368
- nextReview: now + this.config.initialInterval,
369
- interval: this.config.initialInterval,
370
- easeFactor: 2.5, // SM-2 algorithm default
371
- repetitions: 0,
372
- };
373
- this.repetitionSchedules.set(memory.id, schedule);
374
- this.saveRepetitionSchedule(schedule);
375
- }
376
- }
377
- }
378
- /**
379
- * Update repetition schedule after review
380
- */
381
- updateRepetitionSchedule(memoryId, success) {
382
- const schedule = this.repetitionSchedules.get(memoryId);
383
- if (!schedule)
384
- return;
385
- if (success) {
386
- // Increase interval (spaced repetition)
387
- schedule.repetitions++;
388
- schedule.interval = Math.floor(schedule.interval * this.config.intervalMultiplier);
389
- schedule.nextReview = Date.now() + schedule.interval;
390
- }
391
- else {
392
- // Reset interval on failure
393
- schedule.repetitions = 0;
394
- schedule.interval = this.config.initialInterval;
395
- schedule.nextReview = Date.now() + schedule.interval;
396
- }
397
- this.saveRepetitionSchedule(schedule);
398
- }
399
- /**
400
- * Save repetition schedule to database
401
- */
402
- saveRepetitionSchedule(schedule) {
403
- this.db.prepare(`
404
- INSERT OR REPLACE INTO spaced_repetition
405
- (memory_id, next_review, interval, ease_factor, repetitions)
406
- VALUES (?, ?, ?, ?, ?)
407
- `).run(schedule.memoryId, schedule.nextReview, schedule.interval, schedule.easeFactor, schedule.repetitions);
408
- }
409
- /**
410
- * Load repetition schedules from database
411
- */
412
- loadRepetitionSchedules() {
413
- const rows = this.db.prepare('SELECT * FROM spaced_repetition').all();
414
- for (const row of rows) {
415
- this.repetitionSchedules.set(row.memory_id, {
416
- memoryId: row.memory_id,
417
- nextReview: row.next_review,
418
- interval: row.interval,
419
- easeFactor: row.ease_factor,
420
- repetitions: row.repetitions,
421
- });
422
- }
423
- }
424
- /**
425
- * Generate recommendations based on consolidation report
426
- */
427
- generateRecommendations(report) {
428
- const recommendations = [];
429
- if (report.retentionRate < 0.5) {
430
- recommendations.push('Low retention rate. Consider increasing importance thresholds.');
431
- }
432
- if (report.clustersFormed === 0 && report.episodicProcessed > 10) {
433
- recommendations.push('No clusters formed. Consider lowering similarity threshold.');
434
- }
435
- if (report.semanticCreated < report.clustersFormed * 0.5) {
436
- recommendations.push('Low semantic memory creation. Check cluster size thresholds.');
437
- }
438
- if (report.avgImportance < 0.5) {
439
- recommendations.push('Average importance is low. Consider adjusting importance scoring.');
440
- }
441
- if (report.memoriesForgotten > report.episodicProcessed * 0.8) {
442
- recommendations.push('High forgetting rate. Consider lowering forgetting threshold.');
443
- }
444
- return recommendations;
445
- }
446
- /**
447
- * Log consolidation to database
448
- */
449
- logConsolidation(report) {
450
- this.db.prepare(`
451
- INSERT INTO consolidation_log (
452
- timestamp, execution_time_ms, episodic_processed, semantic_created,
453
- memories_forgotten, clusters_formed, retention_rate
454
- ) VALUES (?, ?, ?, ?, ?, ?, ?)
455
- `).run(report.timestamp, report.executionTimeMs, report.episodicProcessed, report.semanticCreated, report.memoriesForgotten, report.clustersFormed, report.retentionRate);
456
- }
457
- /**
458
- * Get consolidation history
459
- */
460
- async getConsolidationHistory(limit = 10) {
461
- const rows = this.db.prepare(`
462
- SELECT * FROM consolidation_log
463
- ORDER BY timestamp DESC
464
- LIMIT ?
465
- `).all(limit);
466
- return rows.map(row => ({
467
- timestamp: row.timestamp,
468
- executionTimeMs: row.execution_time_ms,
469
- episodicProcessed: row.episodic_processed,
470
- semanticCreated: row.semantic_created,
471
- memoriesForgotten: row.memories_forgotten,
472
- clustersFormed: row.clusters_formed,
473
- avgImportance: 0,
474
- retentionRate: row.retention_rate,
475
- recommendations: [],
476
- }));
477
- }
478
- }
479
- //# sourceMappingURL=MemoryConsolidation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MemoryConsolidation.js","sourceRoot":"","sources":["../../../src/controllers/MemoryConsolidation.ts"],"names":[],"mappings":"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"}
@@ -1,122 +0,0 @@
1
- /**
2
- * QUICConnection - Enhanced QUIC Connection with 0-RTT, BBR, and Migration
3
- *
4
- * Implements an advanced QUIC connection with:
5
- * - 0-RTT fast reconnect via session ticket caching
6
- * - BBR congestion control for optimal throughput
7
- * - Connection migration for resilient networking
8
- * - Latency tracking and performance metrics
9
- */
10
- export interface QUICConnectionConfig {
11
- endpoint: string;
12
- enableZeroRTT?: boolean;
13
- enableMultipath?: boolean;
14
- congestionControl?: 'bbr' | 'cubic' | 'reno';
15
- maxIdleTimeoutMs?: number;
16
- initialRttMs?: number;
17
- }
18
- export interface ConnectionMetrics {
19
- rttMs: number;
20
- smoothedRttMs: number;
21
- rttVariance: number;
22
- bytesInFlight: number;
23
- congestionWindow: number;
24
- deliveryRate: number;
25
- packetsLost: number;
26
- packetsSent: number;
27
- packetsAcked: number;
28
- zeroRttUsed: boolean;
29
- handshakeTimeMs: number;
30
- }
31
- export declare class QUICConnection {
32
- private config;
33
- private connected;
34
- private busy;
35
- private sessionTicket;
36
- private bbrState;
37
- private metrics;
38
- private createdAt;
39
- private lastActiveAt;
40
- private migrationCount;
41
- private currentPath;
42
- private id;
43
- private static ticketCache;
44
- private static readonly TICKET_LIFETIME_MS;
45
- constructor(config: QUICConnectionConfig);
46
- /**
47
- * Connect to the QUIC endpoint.
48
- * Uses 0-RTT if a cached session ticket is available.
49
- */
50
- connect(): Promise<{
51
- zeroRtt: boolean;
52
- handshakeMs: number;
53
- }>;
54
- /**
55
- * 0-RTT connection using cached session ticket.
56
- * Sends early data in the initial flight, eliminating 1 RTT.
57
- */
58
- private connectWithZeroRTT;
59
- /**
60
- * Full TLS 1.3 handshake (1-RTT).
61
- */
62
- private connectFull;
63
- /**
64
- * Disconnect the connection.
65
- */
66
- disconnect(): Promise<void>;
67
- /**
68
- * Send data over this connection using BBR pacing.
69
- */
70
- send(data: Uint8Array | Buffer): Promise<{
71
- bytesAcked: number;
72
- rttMs: number;
73
- }>;
74
- /**
75
- * Migrate connection to a new network path.
76
- * QUIC supports connection migration without re-handshake.
77
- */
78
- migrate(newEndpoint: string): Promise<{
79
- success: boolean;
80
- previousPath: string;
81
- }>;
82
- /**
83
- * Compute BBR pacing delay for a given packet size.
84
- */
85
- private computeBBRPacingDelay;
86
- /**
87
- * Update BBR state machine with a new delivery sample.
88
- */
89
- private updateBBR;
90
- /**
91
- * Compute Bandwidth-Delay Product.
92
- */
93
- private computeBDP;
94
- /**
95
- * Update smoothed RTT using exponential weighted moving average.
96
- */
97
- private updateSmoothedRtt;
98
- private generateSessionTicket;
99
- private initBBR;
100
- private initMetrics;
101
- getId(): string;
102
- isConnected(): boolean;
103
- isBusy(): boolean;
104
- getEndpoint(): string;
105
- getCurrentPath(): string;
106
- getCreatedAt(): number;
107
- getLastActiveAt(): number;
108
- getMigrationCount(): number;
109
- getMetrics(): ConnectionMetrics;
110
- getBBRMode(): string;
111
- hasSessionTicket(): boolean;
112
- /**
113
- * Clear session ticket cache (for testing or security reset).
114
- */
115
- static clearTicketCache(): void;
116
- /**
117
- * Get the number of cached session tickets.
118
- */
119
- static getTicketCacheSize(): number;
120
- private sleep;
121
- }
122
- //# sourceMappingURL=QUICConnection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QUICConnection.d.ts","sourceRoot":"","sources":["../../../src/controllers/QUICConnection.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB;AAwBD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,EAAE,CAAS;IAGnB,OAAO,CAAC,MAAM,CAAC,WAAW,CAAyC;IACnE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAA2B;gBAEzD,MAAM,EAAE,oBAAoB;IAmBxC;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAmCnE;;;OAGG;YACW,kBAAkB;IAqBhC;;OAEG;YACW,WAAW;IASzB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IA8BrF;;;OAGG;IACG,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAyBvF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAe7B;;OAEG;IACH,OAAO,CAAC,SAAS;IAmEjB;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,WAAW;IAkBnB,KAAK,IAAI,MAAM;IACf,WAAW,IAAI,OAAO;IACtB,MAAM,IAAI,OAAO;IACjB,WAAW,IAAI,MAAM;IACrB,cAAc,IAAI,MAAM;IACxB,YAAY,IAAI,MAAM;IACtB,eAAe,IAAI,MAAM;IACzB,iBAAiB,IAAI,MAAM;IAC3B,UAAU,IAAI,iBAAiB;IAC/B,UAAU,IAAI,MAAM;IAEpB,gBAAgB,IAAI,OAAO;IAI3B;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,IAAI;IAI/B;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI,MAAM;IAInC,OAAO,CAAC,KAAK;CAGd"}