agentdb 3.0.0-alpha.7 → 3.0.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +214 -1204
- package/dist/agentdb.browser.js +1 -1
- package/dist/agentdb.browser.min.js +1 -1
- package/dist/backends/VectorBackend.d.ts +120 -0
- package/dist/backends/VectorBackend.js +14 -0
- package/dist/backends/VectorBackend.js.map +1 -0
- package/dist/optimizations/RVFOptimizer.d.ts +225 -0
- package/dist/optimizations/RVFOptimizer.js +541 -0
- package/dist/optimizations/RVFOptimizer.js.map +1 -0
- package/dist/src/backends/factory.d.ts +1 -0
- package/dist/src/backends/factory.d.ts.map +1 -1
- package/dist/src/backends/factory.js +40 -7
- package/dist/src/backends/factory.js.map +1 -1
- package/dist/src/backends/index.cjs +6 -0
- package/dist/src/backends/ruvector/RuVectorBackend.d.ts +40 -22
- package/dist/src/backends/ruvector/RuVectorBackend.d.ts.map +1 -1
- package/dist/src/backends/ruvector/RuVectorBackend.js +228 -81
- package/dist/src/backends/ruvector/RuVectorBackend.js.map +1 -1
- package/dist/src/consensus/RaftConsensus.d.ts +220 -0
- package/dist/src/consensus/RaftConsensus.d.ts.map +1 -0
- package/dist/src/consensus/RaftConsensus.js +762 -0
- package/dist/src/consensus/RaftConsensus.js.map +1 -0
- package/dist/src/controllers/AttentionService.d.ts +80 -1
- package/dist/src/controllers/AttentionService.d.ts.map +1 -1
- package/dist/src/controllers/AttentionService.js +344 -13
- package/dist/src/controllers/AttentionService.js.map +1 -1
- package/dist/src/controllers/HierarchicalMemory.d.ts +197 -0
- package/dist/src/controllers/HierarchicalMemory.d.ts.map +1 -0
- package/dist/src/controllers/HierarchicalMemory.js +519 -0
- package/dist/src/controllers/HierarchicalMemory.js.map +1 -0
- package/dist/src/controllers/LearningSystem.d.ts +17 -0
- package/dist/src/controllers/LearningSystem.d.ts.map +1 -1
- package/dist/src/controllers/LearningSystem.js +131 -0
- package/dist/src/controllers/LearningSystem.js.map +1 -1
- package/dist/src/controllers/MemoryConsolidation.d.ts +142 -0
- package/dist/src/controllers/MemoryConsolidation.d.ts.map +1 -0
- package/dist/src/controllers/MemoryConsolidation.js +479 -0
- package/dist/src/controllers/MemoryConsolidation.js.map +1 -0
- package/dist/src/controllers/QUICConnection.d.ts +122 -0
- package/dist/src/controllers/QUICConnection.d.ts.map +1 -0
- package/dist/src/controllers/QUICConnection.js +329 -0
- package/dist/src/controllers/QUICConnection.js.map +1 -0
- package/dist/src/controllers/QUICConnectionPool.d.ts +83 -0
- package/dist/src/controllers/QUICConnectionPool.d.ts.map +1 -0
- package/dist/src/controllers/QUICConnectionPool.js +256 -0
- package/dist/src/controllers/QUICConnectionPool.js.map +1 -0
- package/dist/src/controllers/QUICStreamManager.d.ts +114 -0
- package/dist/src/controllers/QUICStreamManager.d.ts.map +1 -0
- package/dist/src/controllers/QUICStreamManager.js +267 -0
- package/dist/src/controllers/QUICStreamManager.js.map +1 -0
- package/dist/src/controllers/StreamingEmbeddingService.d.ts +82 -0
- package/dist/src/controllers/StreamingEmbeddingService.d.ts.map +1 -0
- package/dist/src/controllers/StreamingEmbeddingService.js +243 -0
- package/dist/src/controllers/StreamingEmbeddingService.js.map +1 -0
- package/dist/src/controllers/WASMVectorSearch.d.ts +30 -0
- package/dist/src/controllers/WASMVectorSearch.d.ts.map +1 -1
- package/dist/src/controllers/WASMVectorSearch.js +70 -0
- package/dist/src/controllers/WASMVectorSearch.js.map +1 -1
- package/dist/src/controllers/index.cjs +6 -0
- package/dist/src/controllers/index.d.ts +10 -0
- package/dist/src/controllers/index.d.ts.map +1 -1
- package/dist/src/controllers/index.js +6 -0
- package/dist/src/controllers/index.js.map +1 -1
- package/dist/src/core/AgentDB.d.ts.map +1 -1
- package/dist/src/core/AgentDB.js +1 -0
- package/dist/src/core/AgentDB.js.map +1 -1
- package/dist/src/index.cjs +6 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/optimizations/RVFOptimizer.d.ts +226 -0
- package/dist/src/optimizations/RVFOptimizer.d.ts.map +1 -0
- package/dist/src/optimizations/RVFOptimizer.js +541 -0
- package/dist/src/optimizations/RVFOptimizer.js.map +1 -0
- package/dist/src/optimizations/index.d.ts +2 -0
- package/dist/src/optimizations/index.d.ts.map +1 -1
- package/dist/src/optimizations/index.js +1 -0
- package/dist/src/optimizations/index.js.map +1 -1
- package/dist/src/security/MutationGuard.d.ts.map +1 -1
- package/dist/src/security/MutationGuard.js +24 -39
- package/dist/src/security/MutationGuard.js.map +1 -1
- package/dist/src/security/index.cjs +6 -0
- package/dist/src/services/GNNService.d.ts +172 -0
- package/dist/src/services/GNNService.d.ts.map +1 -0
- package/dist/src/services/GNNService.js +612 -0
- package/dist/src/services/GNNService.js.map +1 -0
- package/dist/src/services/GraphTransformerService.d.ts +1 -0
- package/dist/src/services/GraphTransformerService.d.ts.map +1 -1
- package/dist/src/services/GraphTransformerService.js +41 -3
- package/dist/src/services/GraphTransformerService.js.map +1 -1
- package/dist/src/services/SemanticRouter.d.ts +7 -2
- package/dist/src/services/SemanticRouter.d.ts.map +1 -1
- package/dist/src/services/SemanticRouter.js +13 -2
- package/dist/src/services/SemanticRouter.js.map +1 -1
- package/dist/src/services/SonaTrajectoryService.d.ts +126 -2
- package/dist/src/services/SonaTrajectoryService.d.ts.map +1 -1
- package/dist/src/services/SonaTrajectoryService.js +311 -3
- package/dist/src/services/SonaTrajectoryService.js.map +1 -1
- package/package.json +22 -16
|
@@ -0,0 +1,519 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HierarchicalMemory.js","sourceRoot":"","sources":["../../../src/controllers/HierarchicalMemory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAqG3D,MAAM,OAAO,kBAAkB;IACrB,EAAE,CAAW;IACb,QAAQ,CAAmB;IAC3B,aAAa,CAAiB;IAC9B,YAAY,CAAgB;IAC5B,MAAM,CAA2B;IAEzC,mCAAmC;IAC3B,kBAAkB,GAAG,IAAI,GAAG,EAAsB,CAAC;IACnD,mBAAmB,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE5D,iBAAiB;IACT,KAAK,GAAG;QACd,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;QACb,cAAc,EAAE,CAAC;QACjB,SAAS,EAAE,CAAC;KACb,CAAC;IAEF,YACE,EAAY,EACZ,QAA0B,EAC1B,aAA6B,EAC7B,YAA2B,EAC3B,MAA0C;QAE1C,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,IAAI,CAAC,MAAM,GAAG;YACZ,kBAAkB,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM;YACvC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS;YAClD,UAAU,EAAE;gBACV,SAAS,EAAE,GAAG;gBACd,YAAY,EAAE,GAAG;gBACjB,oBAAoB,EAAE,GAAG;gBACzB,cAAc,EAAE,GAAG;aACpB;YACD,aAAa,EAAE;gBACb,cAAc,EAAE,CAAC;gBACjB,aAAa,EAAE,GAAG;gBAClB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,WAAW;gBACxC,eAAe,EAAE,IAAI;aACtB;YACD,eAAe,EAAE,IAAI;YACrB,GAAG,MAAM;SACV,CAAC;QAEF,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;KAoBZ,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CACT,OAAe,EACf,aAA8B,GAAG,EACjC,OAAmB,SAAS,EAC5B,OAIC;QAED,MAAM,EAAE,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,qBAAqB;QACrB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAErD,MAAM,IAAI,GAAe;YACvB,EAAE;YACF,IAAI;YACJ,OAAO;YACP,SAAS;YACT,UAAU;YACV,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,GAAG;YACd,cAAc,EAAE,GAAG;YACnB,IAAI,EAAE,OAAO,EAAE,IAAI;YACnB,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,QAAQ,EAAE,OAAO,EAAE,QAAQ;SAC5B,CAAC;QAEF,oBAAoB;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CACN,EAAE,EACF,IAAI,EACJ,OAAO,EACP,UAAU,EACV,CAAC,EACD,GAAG,EACH,GAAG,EACH,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EACnD,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EACzD,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAC5D,CAAC;QAEF,qCAAqC;QACrC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE;gBACvC,IAAI;gBACJ,UAAU;gBACV,SAAS,EAAE,GAAG;gBACd,GAAG,OAAO,EAAE,QAAQ;aACrB,CAAC,CAAC;QACL,CAAC;QAED,4BAA4B;QAC5B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACtC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACzC,CAAC;aAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;QAED,uCAAuC;QACvC,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClC,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAAkB;QAC7B,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAE3B,qCAAqC;QACrC,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEtF,kCAAkC;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YACrC,CAAC,CAAC,KAAK,CAAC,IAAI;YACZ,CAAC,CAAC,KAAK,CAAC,IAAI;gBACV,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;gBACd,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAE1C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC;QAEzC,IAAI,OAAO,GAAiB,EAAE,CAAC;QAE/B,8CAA8C;QAC9C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,aAAa,GAAmB,EAAE,CAAC;YAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,EAAE;oBACrE,SAAS;oBACT,MAAM,EAAE,EAAE,IAAI,EAAE;iBACjB,CAAC,CAAC;gBACH,aAAa,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;YACrC,CAAC;YAED,yBAAyB;YACzB,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CACzB,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBACjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACjD,IAAI,IAAI,EAAE,CAAC;oBACT,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtE,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CACH,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAsB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,0BAA0B;YAC1B,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAiB,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QACvH,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC1B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACzG,CAAC;QAED,2BAA2B;QAC3B,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5D,CAAC;QAED,+CAA+C;QAC/C,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAExD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAExB,IAAI,OAAO,GAAsB,IAAI,CAAC;QAEtC,8CAA8C;QAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;YACrD,OAAO,GAAG,UAAU,CAAC;QACvB,CAAC;QAED,uDAAuD;QACvD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;YACxC,IACE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc;gBAC5D,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa;gBAC1D,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EACvC,CAAC;gBACD,OAAO,GAAG,UAAU,CAAC;YACvB,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAI5B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAExB,eAAe;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7F,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;YAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,IAAgB;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,iBAAiB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO;QACjF,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe;YAC7C,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YACtD,CAAC,CAAC,iBAAiB,CAAC;QAEtB,6CAA6C;QAC7C,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;QAC1D,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAC5F,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC;QAE1F,MAAM,QAAQ,GAAG,YAAY,GAAG,eAAe,GAAG,cAAc,CAAC;QAEjE,qBAAqB;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,kBAAkB,GAAG,QAAQ,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;KAOpC,CAAC,CAAC,GAAG,EAAE,CAAC;QAET,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;KAOrC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAEnB,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;KAOrC,CAAC,CAAC,GAAG,EAAE,CAAC;QAET,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;QACrF,MAAM,aAAa,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpF,OAAO;YACL,OAAO,EAAE;gBACP,KAAK,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;gBAC9B,SAAS,EAAE,YAAY,CAAC,SAAS,IAAI,CAAC;gBACtC,aAAa,EAAE,YAAY,CAAC,aAAa,IAAI,CAAC;gBAC9C,cAAc,EAAE,YAAY,CAAC,cAAc,IAAI,CAAC;aACjD;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC;gBAC/B,SAAS,EAAE,aAAa,CAAC,SAAS,IAAI,CAAC;gBACvC,aAAa,EAAE,aAAa,CAAC,aAAa,IAAI,CAAC;gBAC/C,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC;aAClC;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC;gBAC/B,SAAS,EAAE,aAAa,CAAC,SAAS,IAAI,CAAC;gBACvC,aAAa,EAAE,aAAa,CAAC,aAAa,IAAI,CAAC;gBAC/C,iBAAiB,EAAE,aAAa,CAAC,KAAK,GAAG,CAAC;oBACxC,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,aAAa,CAAC,KAAK;oBACzD,CAAC,CAAC,CAAC;aACN;YACD,aAAa;YACb,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YACpC,aAAa;SACd,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,yBAAyB;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAEtD,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACjD,wDAAwD;YACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;iBAC1D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACZ,GAAG,IAAI;gBACP,KAAK,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;aACvD,CAAC,CAAC;iBACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YAErC,0BAA0B;YAC1B,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC9B,IAAI,WAAW,GAAG,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB;oBAAE,MAAM;gBAErE,gCAAgC;gBAChC,IAAI,MAAM,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC;oBACvB,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;gBAC/C,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC/B,CAAC;gBAED,SAAS,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;gBAC7D,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,0BAA0B;QAChC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QACxD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,OAAmB;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAI5B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEjE,gBAAgB;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7F,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;YACpB,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3B,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;YAC5B,CAAC;YAED,sBAAsB;YACtB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAE1C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;gBAClC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE;gBAClD,IAAI,EAAE,OAAO;gBACb,YAAY,EAAE,OAAO,KAAK,UAAU;aACrC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,MAAM,CAAC,QAAgB;QACnC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9E,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAEvB,6BAA6B;QAC7B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,EAAU;QACpC,qBAAqB;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnF,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,sBAAsB;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE3B,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEX,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,MAAM,IAAI,GAAe;YACvB,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,cAAc,EAAE,GAAG,CAAC,gBAAgB;YACpC,eAAe,EAAE,GAAG,CAAC,iBAAiB;YACtC,cAAc,EAAE,GAAG,CAAC,eAAe;YACnC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;YACjD,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;YAC1D,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9D,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CACxB,cAA4B,EAC5B,KAAmB,EACnB,CAAS,EACT,SAAiB;QAEjB,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEtD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;uBAEV,UAAU;;;KAG5B,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,oCAAoC;QAEnD,MAAM,OAAO,GAA+C,EAAE,CAAC;QAE/D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,gBAAgB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YAE/D,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,SAAS;oBACT,UAAU,EAAE,GAAG,CAAC,UAAU;oBAC1B,WAAW,EAAE,GAAG,CAAC,YAAY;oBAC7B,SAAS,EAAE,GAAG,CAAC,UAAU;oBACzB,cAAc,EAAE,GAAG,CAAC,gBAAgB;oBACpC,eAAe,EAAE,GAAG,CAAC,iBAAiB;oBACtC,cAAc,EAAE,GAAG,CAAC,eAAe;oBACnC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;oBACjD,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;oBAC1D,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;oBAC7D,UAAU;iBACX,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,OAAqB,EAAE,OAA4B;QAC5E,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAEhC,8CAA8C;YAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAQ,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YAE/E,OAAO,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,GAAa;QAC9C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAElD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;qBAGC,YAAY;KAC5B,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;QAEpB,gBAAgB;QAChB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjF,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;gBAE1B,sBAAsB;gBACtB,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB;QAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;QAEpD,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;YAC/D,yEAAyE;YACzE,OAAO,CAAC,GAAG,CAAC,4BAA4B,aAAa,qCAAqC,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;CACF"}
|
|
@@ -67,7 +67,20 @@ export declare class LearningSystem {
|
|
|
67
67
|
private db;
|
|
68
68
|
private embedder;
|
|
69
69
|
private activeSessions;
|
|
70
|
+
private gnnLearning;
|
|
71
|
+
private sonaService;
|
|
72
|
+
private gnnService;
|
|
73
|
+
private gnnEnabled;
|
|
74
|
+
private sonaEnabled;
|
|
70
75
|
constructor(db: Database, embedder: EmbeddingService);
|
|
76
|
+
/**
|
|
77
|
+
* Initialize RuVector GNN and Sona enhancements
|
|
78
|
+
*/
|
|
79
|
+
private initializeRuVectorEnhancements;
|
|
80
|
+
/**
|
|
81
|
+
* Get engine types for all RuVector integrations
|
|
82
|
+
*/
|
|
83
|
+
getEngineTypes(): Record<string, string>;
|
|
71
84
|
/**
|
|
72
85
|
* Initialize database schema for learning system
|
|
73
86
|
*/
|
|
@@ -86,6 +99,8 @@ export declare class LearningSystem {
|
|
|
86
99
|
predict(sessionId: string, state: string): Promise<ActionPrediction>;
|
|
87
100
|
/**
|
|
88
101
|
* Submit feedback for learning
|
|
102
|
+
*
|
|
103
|
+
* Phase 2 Enhancement: Records to Sona for RL trajectory learning
|
|
89
104
|
*/
|
|
90
105
|
submitFeedback(feedback: ActionFeedback): Promise<void>;
|
|
91
106
|
/**
|
|
@@ -106,6 +121,8 @@ export declare class LearningSystem {
|
|
|
106
121
|
private getLatestPolicy;
|
|
107
122
|
/**
|
|
108
123
|
* Calculate action scores based on algorithm
|
|
124
|
+
*
|
|
125
|
+
* Phase 2 Enhancement: Uses GNN for embedding refinement and Sona for predictions
|
|
109
126
|
*/
|
|
110
127
|
private calculateActionScores;
|
|
111
128
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LearningSystem.d.ts","sourceRoot":"","sources":["../../../src/controllers/LearningSystem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,KAAK,QAAQ,GAAG,GAAG,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"LearningSystem.d.ts","sourceRoot":"","sources":["../../../src/controllers/LearningSystem.ts"],"names":[],"mappings":"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"}
|