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.
- package/dist/src/backends/graph/GraphDatabaseAdapter.d.ts +54 -0
- package/dist/src/backends/graph/GraphDatabaseAdapter.d.ts.map +1 -1
- package/dist/src/backends/graph/GraphDatabaseAdapter.js +125 -0
- package/dist/src/backends/graph/GraphDatabaseAdapter.js.map +1 -1
- package/dist/src/cli/agentdb-cli.js +0 -0
- package/dist/src/controllers/ReflexionMemory.d.ts +50 -0
- package/dist/src/controllers/ReflexionMemory.d.ts.map +1 -1
- package/dist/src/controllers/ReflexionMemory.js +258 -0
- package/dist/src/controllers/ReflexionMemory.js.map +1 -1
- package/dist/src/controllers/index.d.ts +2 -0
- package/dist/src/controllers/index.d.ts.map +1 -1
- package/dist/src/controllers/index.js +2 -0
- package/dist/src/controllers/index.js.map +1 -1
- package/dist/src/controllers/prerequisites.d.ts +76 -0
- package/dist/src/controllers/prerequisites.d.ts.map +1 -0
- package/dist/src/controllers/prerequisites.js +235 -0
- package/dist/src/controllers/prerequisites.js.map +1 -0
- package/dist/src/db-fallback.d.ts.map +1 -1
- package/dist/src/db-fallback.js +55 -45
- package/dist/src/db-fallback.js.map +1 -1
- package/package.json +1 -1
- package/dist/schemas/frontier-schema.sql +0 -378
- package/dist/schemas/schema.sql +0 -382
- package/dist/src/backends/index.cjs +0 -6
- package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts +0 -93
- package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts.map +0 -1
- package/dist/src/backends/ruvector/GuardedVectorBackend.js +0 -182
- package/dist/src/backends/ruvector/GuardedVectorBackend.js.map +0 -1
- package/dist/src/consensus/RaftConsensus.d.ts +0 -220
- package/dist/src/consensus/RaftConsensus.d.ts.map +0 -1
- package/dist/src/consensus/RaftConsensus.js +0 -762
- package/dist/src/consensus/RaftConsensus.js.map +0 -1
- package/dist/src/controllers/HierarchicalMemory.d.ts +0 -197
- package/dist/src/controllers/HierarchicalMemory.d.ts.map +0 -1
- package/dist/src/controllers/HierarchicalMemory.js +0 -519
- package/dist/src/controllers/HierarchicalMemory.js.map +0 -1
- package/dist/src/controllers/MemoryConsolidation.d.ts +0 -142
- package/dist/src/controllers/MemoryConsolidation.d.ts.map +0 -1
- package/dist/src/controllers/MemoryConsolidation.js +0 -479
- package/dist/src/controllers/MemoryConsolidation.js.map +0 -1
- package/dist/src/controllers/QUICConnection.d.ts +0 -122
- package/dist/src/controllers/QUICConnection.d.ts.map +0 -1
- package/dist/src/controllers/QUICConnection.js +0 -329
- package/dist/src/controllers/QUICConnection.js.map +0 -1
- package/dist/src/controllers/QUICConnectionPool.d.ts +0 -83
- package/dist/src/controllers/QUICConnectionPool.d.ts.map +0 -1
- package/dist/src/controllers/QUICConnectionPool.js +0 -256
- package/dist/src/controllers/QUICConnectionPool.js.map +0 -1
- package/dist/src/controllers/QUICStreamManager.d.ts +0 -114
- package/dist/src/controllers/QUICStreamManager.d.ts.map +0 -1
- package/dist/src/controllers/QUICStreamManager.js +0 -267
- package/dist/src/controllers/QUICStreamManager.js.map +0 -1
- package/dist/src/controllers/StreamingEmbeddingService.d.ts +0 -82
- package/dist/src/controllers/StreamingEmbeddingService.d.ts.map +0 -1
- package/dist/src/controllers/StreamingEmbeddingService.js +0 -243
- package/dist/src/controllers/StreamingEmbeddingService.js.map +0 -1
- package/dist/src/controllers/index.cjs +0 -6
- package/dist/src/coordination/MultiDatabaseCoordinator.d.ts +0 -348
- package/dist/src/coordination/MultiDatabaseCoordinator.d.ts.map +0 -1
- package/dist/src/coordination/MultiDatabaseCoordinator.js +0 -803
- package/dist/src/coordination/MultiDatabaseCoordinator.js.map +0 -1
- package/dist/src/coordination/index.d.ts +0 -10
- package/dist/src/coordination/index.d.ts.map +0 -1
- package/dist/src/coordination/index.js +0 -10
- package/dist/src/coordination/index.js.map +0 -1
- package/dist/src/index.cjs +0 -6
- package/dist/src/optimizations/RVFOptimizer.d.ts +0 -226
- package/dist/src/optimizations/RVFOptimizer.d.ts.map +0 -1
- package/dist/src/optimizations/RVFOptimizer.js +0 -541
- package/dist/src/optimizations/RVFOptimizer.js.map +0 -1
- package/dist/src/security/AttestationLog.d.ts +0 -70
- package/dist/src/security/AttestationLog.d.ts.map +0 -1
- package/dist/src/security/AttestationLog.js +0 -174
- package/dist/src/security/AttestationLog.js.map +0 -1
- package/dist/src/security/MutationGuard.d.ts +0 -83
- package/dist/src/security/MutationGuard.d.ts.map +0 -1
- package/dist/src/security/MutationGuard.js +0 -364
- package/dist/src/security/MutationGuard.js.map +0 -1
- package/dist/src/security/index.cjs +0 -6
- package/dist/src/security/index.d.ts +0 -15
- package/dist/src/security/index.d.ts.map +0 -1
- package/dist/src/security/index.js +0 -18
- package/dist/src/security/index.js.map +0 -1
- package/dist/src/services/GNNService.d.ts +0 -173
- package/dist/src/services/GNNService.d.ts.map +0 -1
- package/dist/src/services/GNNService.js +0 -639
- package/dist/src/services/GNNService.js.map +0 -1
- package/dist/src/services/GraphTransformerService.d.ts +0 -80
- package/dist/src/services/GraphTransformerService.d.ts.map +0 -1
- package/dist/src/services/GraphTransformerService.js +0 -369
- package/dist/src/services/GraphTransformerService.js.map +0 -1
- package/dist/src/services/SemanticRouter.d.ts +0 -83
- package/dist/src/services/SemanticRouter.d.ts.map +0 -1
- package/dist/src/services/SemanticRouter.js +0 -160
- package/dist/src/services/SemanticRouter.js.map +0 -1
- package/dist/src/services/SonaTrajectoryService.d.ts +0 -224
- package/dist/src/services/SonaTrajectoryService.d.ts.map +0 -1
- package/dist/src/services/SonaTrajectoryService.js +0 -539
- package/dist/src/services/SonaTrajectoryService.js.map +0 -1
- package/dist/src/utils/LegacyAttentionAdapter.d.ts +0 -93
- package/dist/src/utils/LegacyAttentionAdapter.d.ts.map +0 -1
- package/dist/src/utils/LegacyAttentionAdapter.js +0 -241
- package/dist/src/utils/LegacyAttentionAdapter.js.map +0 -1
- package/dist/src/utils/vector-math.d.ts +0 -29
- package/dist/src/utils/vector-math.d.ts.map +0 -1
- package/dist/src/utils/vector-math.js +0 -66
- 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"}
|