agentic-qe 2.8.0 → 2.8.1
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/CHANGELOG.md +105 -0
- package/README.md +1 -1
- package/dist/agents/BaseAgent.d.ts +128 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +256 -0
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/cli/commands/supabase/index.d.ts +20 -0
- package/dist/cli/commands/supabase/index.d.ts.map +1 -0
- package/dist/cli/commands/supabase/index.js +632 -0
- package/dist/cli/commands/supabase/index.js.map +1 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/mcp/handlers/NewDomainToolsHandler.d.ts +8 -8
- package/dist/mcp/handlers/NewDomainToolsHandler.d.ts.map +1 -1
- package/dist/mcp/handlers/NewDomainToolsHandler.js.map +1 -1
- package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts +54 -0
- package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts.map +1 -0
- package/dist/mcp/handlers/ruvector/RuVectorHandler.js +325 -0
- package/dist/mcp/handlers/ruvector/RuVectorHandler.js.map +1 -0
- package/dist/mcp/handlers/ruvector/index.d.ts +5 -0
- package/dist/mcp/handlers/ruvector/index.d.ts.map +1 -0
- package/dist/mcp/handlers/ruvector/index.js +9 -0
- package/dist/mcp/handlers/ruvector/index.js.map +1 -0
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +100 -22
- package/dist/mcp/server.js.map +1 -1
- package/dist/nervous-system/adapters/BTSPAdapter.d.ts +342 -0
- package/dist/nervous-system/adapters/BTSPAdapter.d.ts.map +1 -0
- package/dist/nervous-system/adapters/BTSPAdapter.js +494 -0
- package/dist/nervous-system/adapters/BTSPAdapter.js.map +1 -0
- package/dist/nervous-system/adapters/CircadianController.d.ts +560 -0
- package/dist/nervous-system/adapters/CircadianController.d.ts.map +1 -0
- package/dist/nervous-system/adapters/CircadianController.js +882 -0
- package/dist/nervous-system/adapters/CircadianController.js.map +1 -0
- package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts +337 -0
- package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts.map +1 -0
- package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js +532 -0
- package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js.map +1 -0
- package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts +444 -0
- package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts.map +1 -0
- package/dist/nervous-system/adapters/HdcMemoryAdapter.js +715 -0
- package/dist/nervous-system/adapters/HdcMemoryAdapter.js.map +1 -0
- package/dist/nervous-system/adapters/ReflexLayer.d.ts +231 -0
- package/dist/nervous-system/adapters/ReflexLayer.d.ts.map +1 -0
- package/dist/nervous-system/adapters/ReflexLayer.js +309 -0
- package/dist/nervous-system/adapters/ReflexLayer.js.map +1 -0
- package/dist/nervous-system/index.d.ts +25 -0
- package/dist/nervous-system/index.d.ts.map +1 -0
- package/dist/nervous-system/index.js +80 -0
- package/dist/nervous-system/index.js.map +1 -0
- package/dist/nervous-system/integration/BTSPLearningEngine.d.ts +266 -0
- package/dist/nervous-system/integration/BTSPLearningEngine.d.ts.map +1 -0
- package/dist/nervous-system/integration/BTSPLearningEngine.js +587 -0
- package/dist/nervous-system/integration/BTSPLearningEngine.js.map +1 -0
- package/dist/nervous-system/integration/CircadianAgent.d.ts +389 -0
- package/dist/nervous-system/integration/CircadianAgent.d.ts.map +1 -0
- package/dist/nervous-system/integration/CircadianAgent.js +696 -0
- package/dist/nervous-system/integration/CircadianAgent.js.map +1 -0
- package/dist/nervous-system/integration/HybridPatternStore.d.ts +244 -0
- package/dist/nervous-system/integration/HybridPatternStore.d.ts.map +1 -0
- package/dist/nervous-system/integration/HybridPatternStore.js +622 -0
- package/dist/nervous-system/integration/HybridPatternStore.js.map +1 -0
- package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts +459 -0
- package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts.map +1 -0
- package/dist/nervous-system/integration/NervousSystemEnhancement.js +921 -0
- package/dist/nervous-system/integration/NervousSystemEnhancement.js.map +1 -0
- package/dist/nervous-system/integration/WorkspaceAgent.d.ts +398 -0
- package/dist/nervous-system/integration/WorkspaceAgent.d.ts.map +1 -0
- package/dist/nervous-system/integration/WorkspaceAgent.js +722 -0
- package/dist/nervous-system/integration/WorkspaceAgent.js.map +1 -0
- package/dist/nervous-system/integration/index.d.ts +22 -0
- package/dist/nervous-system/integration/index.d.ts.map +1 -0
- package/dist/nervous-system/integration/index.js +44 -0
- package/dist/nervous-system/integration/index.js.map +1 -0
- package/dist/nervous-system/persistence/BTSPSerializer.d.ts +96 -0
- package/dist/nervous-system/persistence/BTSPSerializer.d.ts.map +1 -0
- package/dist/nervous-system/persistence/BTSPSerializer.js +223 -0
- package/dist/nervous-system/persistence/BTSPSerializer.js.map +1 -0
- package/dist/nervous-system/persistence/CircadianSerializer.d.ts +90 -0
- package/dist/nervous-system/persistence/CircadianSerializer.d.ts.map +1 -0
- package/dist/nervous-system/persistence/CircadianSerializer.js +239 -0
- package/dist/nervous-system/persistence/CircadianSerializer.js.map +1 -0
- package/dist/nervous-system/persistence/HdcSerializer.d.ts +100 -0
- package/dist/nervous-system/persistence/HdcSerializer.d.ts.map +1 -0
- package/dist/nervous-system/persistence/HdcSerializer.js +259 -0
- package/dist/nervous-system/persistence/HdcSerializer.js.map +1 -0
- package/dist/nervous-system/persistence/INervousSystemStore.d.ts +208 -0
- package/dist/nervous-system/persistence/INervousSystemStore.d.ts.map +1 -0
- package/dist/nervous-system/persistence/INervousSystemStore.js +11 -0
- package/dist/nervous-system/persistence/INervousSystemStore.js.map +1 -0
- package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts +187 -0
- package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts.map +1 -0
- package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js +411 -0
- package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js.map +1 -0
- package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts +98 -0
- package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts.map +1 -0
- package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js +510 -0
- package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js.map +1 -0
- package/dist/nervous-system/persistence/index.d.ts +22 -0
- package/dist/nervous-system/persistence/index.d.ts.map +1 -0
- package/dist/nervous-system/persistence/index.js +45 -0
- package/dist/nervous-system/persistence/index.js.map +1 -0
- package/dist/nervous-system/wasm-loader.d.ts +52 -0
- package/dist/nervous-system/wasm-loader.d.ts.map +1 -0
- package/dist/nervous-system/wasm-loader.js +188 -0
- package/dist/nervous-system/wasm-loader.js.map +1 -0
- package/dist/persistence/HybridPersistenceProvider.d.ts +184 -0
- package/dist/persistence/HybridPersistenceProvider.d.ts.map +1 -0
- package/dist/persistence/HybridPersistenceProvider.js +1086 -0
- package/dist/persistence/HybridPersistenceProvider.js.map +1 -0
- package/dist/persistence/IPersistenceProvider.d.ts +657 -0
- package/dist/persistence/IPersistenceProvider.d.ts.map +1 -0
- package/dist/persistence/IPersistenceProvider.js +11 -0
- package/dist/persistence/IPersistenceProvider.js.map +1 -0
- package/dist/persistence/SupabaseConfig.d.ts +176 -0
- package/dist/persistence/SupabaseConfig.d.ts.map +1 -0
- package/dist/persistence/SupabaseConfig.js +277 -0
- package/dist/persistence/SupabaseConfig.js.map +1 -0
- package/dist/persistence/SupabasePersistenceProvider.d.ts +143 -0
- package/dist/persistence/SupabasePersistenceProvider.d.ts.map +1 -0
- package/dist/persistence/SupabasePersistenceProvider.js +955 -0
- package/dist/persistence/SupabasePersistenceProvider.js.map +1 -0
- package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts +213 -0
- package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts.map +1 -0
- package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js +468 -0
- package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js.map +1 -0
- package/dist/persistence/adapters/MemorySyncAdapter.d.ts +115 -0
- package/dist/persistence/adapters/MemorySyncAdapter.d.ts.map +1 -0
- package/dist/persistence/adapters/MemorySyncAdapter.js +291 -0
- package/dist/persistence/adapters/MemorySyncAdapter.js.map +1 -0
- package/dist/persistence/adapters/index.d.ts +11 -0
- package/dist/persistence/adapters/index.d.ts.map +1 -0
- package/dist/persistence/adapters/index.js +20 -0
- package/dist/persistence/adapters/index.js.map +1 -0
- package/dist/persistence/index.d.ts +14 -0
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +36 -1
- package/dist/persistence/index.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Nervous System Persistence Manager
|
|
4
|
+
*
|
|
5
|
+
* Coordinates persistence across all nervous system components.
|
|
6
|
+
* Provides a unified API for saving and restoring agent nervous system state.
|
|
7
|
+
*
|
|
8
|
+
* @module nervous-system/persistence/NervousSystemPersistenceManager
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.NervousSystemPersistenceManager = void 0;
|
|
12
|
+
exports.createNervousSystemPersistenceManager = createNervousSystemPersistenceManager;
|
|
13
|
+
exports.getSharedPersistenceManager = getSharedPersistenceManager;
|
|
14
|
+
exports.resetSharedPersistenceManager = resetSharedPersistenceManager;
|
|
15
|
+
const events_1 = require("events");
|
|
16
|
+
const SQLiteNervousSystemStore_js_1 = require("./SQLiteNervousSystemStore.js");
|
|
17
|
+
const Logger_js_1 = require("../../utils/Logger.js");
|
|
18
|
+
/**
|
|
19
|
+
* Manages persistence of nervous system state across agents
|
|
20
|
+
*/
|
|
21
|
+
class NervousSystemPersistenceManager extends events_1.EventEmitter {
|
|
22
|
+
constructor(config = {}) {
|
|
23
|
+
super();
|
|
24
|
+
this.initialized = false;
|
|
25
|
+
this.autoSaveTimer = null;
|
|
26
|
+
// Track pending state changes for auto-save
|
|
27
|
+
this.pendingStates = new Map();
|
|
28
|
+
// Track agents registered for auto-save
|
|
29
|
+
this.registeredAgents = new Set();
|
|
30
|
+
this.logger = Logger_js_1.Logger.getInstance();
|
|
31
|
+
this.config = {
|
|
32
|
+
store: config.store ?? null,
|
|
33
|
+
autoSaveIntervalMs: config.autoSaveIntervalMs ?? 0,
|
|
34
|
+
debug: config.debug ?? false,
|
|
35
|
+
dbPath: config.dbPath ?? '.agentic-qe/memory.db',
|
|
36
|
+
};
|
|
37
|
+
// Create default store if not provided
|
|
38
|
+
if (!this.config.store) {
|
|
39
|
+
this.store = (0, SQLiteNervousSystemStore_js_1.createSQLiteNervousSystemStore)({ dbPath: this.config.dbPath });
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.store = this.config.store;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Initialize the persistence manager
|
|
47
|
+
*/
|
|
48
|
+
async initialize() {
|
|
49
|
+
if (this.initialized)
|
|
50
|
+
return;
|
|
51
|
+
try {
|
|
52
|
+
await this.store.initialize();
|
|
53
|
+
// Start auto-save timer if configured
|
|
54
|
+
if (this.config.autoSaveIntervalMs > 0) {
|
|
55
|
+
this.startAutoSave();
|
|
56
|
+
}
|
|
57
|
+
this.initialized = true;
|
|
58
|
+
this.logger.info('NervousSystemPersistenceManager initialized', {
|
|
59
|
+
storeType: this.store.getStoreInfo().type,
|
|
60
|
+
autoSaveInterval: this.config.autoSaveIntervalMs,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
this.logger.error('Failed to initialize NervousSystemPersistenceManager:', error);
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Shutdown the persistence manager
|
|
70
|
+
*/
|
|
71
|
+
async shutdown() {
|
|
72
|
+
if (!this.initialized)
|
|
73
|
+
return;
|
|
74
|
+
try {
|
|
75
|
+
// Stop auto-save
|
|
76
|
+
this.stopAutoSave();
|
|
77
|
+
// Flush any pending state
|
|
78
|
+
await this.flushPendingStates();
|
|
79
|
+
// Shutdown store
|
|
80
|
+
await this.store.shutdown();
|
|
81
|
+
this.initialized = false;
|
|
82
|
+
this.logger.info('NervousSystemPersistenceManager shutdown complete');
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
this.logger.error('Error during NervousSystemPersistenceManager shutdown:', error);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Ensure manager is initialized
|
|
90
|
+
*/
|
|
91
|
+
ensureInitialized() {
|
|
92
|
+
if (!this.initialized) {
|
|
93
|
+
throw new Error('NervousSystemPersistenceManager not initialized. Call initialize() first.');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// ============================================
|
|
97
|
+
// HDC State Operations
|
|
98
|
+
// ============================================
|
|
99
|
+
/**
|
|
100
|
+
* Save HDC memory state
|
|
101
|
+
*/
|
|
102
|
+
async saveHdcState(agentId, state) {
|
|
103
|
+
this.ensureInitialized();
|
|
104
|
+
try {
|
|
105
|
+
await this.store.saveHdcState(agentId, state);
|
|
106
|
+
const sizeBytes = JSON.stringify(state).length;
|
|
107
|
+
this.emit('state:saved', { agentId, component: 'hdc', sizeBytes });
|
|
108
|
+
if (this.config.debug) {
|
|
109
|
+
this.logger.debug('Saved HDC state', { agentId, patterns: state.patterns.length });
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
this.emit('error', { agentId, operation: 'saveHdcState', error: error });
|
|
114
|
+
throw error;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Load HDC memory state
|
|
119
|
+
*/
|
|
120
|
+
async loadHdcState(agentId) {
|
|
121
|
+
this.ensureInitialized();
|
|
122
|
+
try {
|
|
123
|
+
const state = await this.store.loadHdcState(agentId);
|
|
124
|
+
if (state) {
|
|
125
|
+
this.emit('state:loaded', { agentId, component: 'hdc' });
|
|
126
|
+
}
|
|
127
|
+
return state;
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
this.emit('error', { agentId, operation: 'loadHdcState', error: error });
|
|
131
|
+
throw error;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// ============================================
|
|
135
|
+
// BTSP State Operations
|
|
136
|
+
// ============================================
|
|
137
|
+
/**
|
|
138
|
+
* Save BTSP learner state
|
|
139
|
+
*/
|
|
140
|
+
async saveBtspState(agentId, state) {
|
|
141
|
+
this.ensureInitialized();
|
|
142
|
+
try {
|
|
143
|
+
await this.store.saveBtspState(agentId, state);
|
|
144
|
+
const sizeBytes = JSON.stringify(state).length;
|
|
145
|
+
this.emit('state:saved', { agentId, component: 'btsp', sizeBytes });
|
|
146
|
+
if (this.config.debug) {
|
|
147
|
+
this.logger.debug('Saved BTSP state', { agentId, associations: state.associationCount });
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
this.emit('error', { agentId, operation: 'saveBtspState', error: error });
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Load BTSP learner state
|
|
157
|
+
*/
|
|
158
|
+
async loadBtspState(agentId) {
|
|
159
|
+
this.ensureInitialized();
|
|
160
|
+
try {
|
|
161
|
+
const state = await this.store.loadBtspState(agentId);
|
|
162
|
+
if (state) {
|
|
163
|
+
this.emit('state:loaded', { agentId, component: 'btsp' });
|
|
164
|
+
}
|
|
165
|
+
return state;
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
this.emit('error', { agentId, operation: 'loadBtspState', error: error });
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// ============================================
|
|
173
|
+
// Circadian State Operations
|
|
174
|
+
// ============================================
|
|
175
|
+
/**
|
|
176
|
+
* Save circadian controller state
|
|
177
|
+
*/
|
|
178
|
+
async saveCircadianState(agentId, state) {
|
|
179
|
+
this.ensureInitialized();
|
|
180
|
+
try {
|
|
181
|
+
await this.store.saveCircadianState(agentId, state);
|
|
182
|
+
const sizeBytes = JSON.stringify(state).length;
|
|
183
|
+
this.emit('state:saved', { agentId, component: 'circadian', sizeBytes });
|
|
184
|
+
if (this.config.debug) {
|
|
185
|
+
this.logger.debug('Saved Circadian state', { agentId, phase: state.state.phase });
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
this.emit('error', { agentId, operation: 'saveCircadianState', error: error });
|
|
190
|
+
throw error;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Load circadian controller state
|
|
195
|
+
*/
|
|
196
|
+
async loadCircadianState(agentId) {
|
|
197
|
+
this.ensureInitialized();
|
|
198
|
+
try {
|
|
199
|
+
const state = await this.store.loadCircadianState(agentId);
|
|
200
|
+
if (state) {
|
|
201
|
+
this.emit('state:loaded', { agentId, component: 'circadian' });
|
|
202
|
+
}
|
|
203
|
+
return state;
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
this.emit('error', { agentId, operation: 'loadCircadianState', error: error });
|
|
207
|
+
throw error;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// ============================================
|
|
211
|
+
// Bulk Operations
|
|
212
|
+
// ============================================
|
|
213
|
+
/**
|
|
214
|
+
* Save all nervous system state for an agent
|
|
215
|
+
*/
|
|
216
|
+
async saveAllState(agentId, state) {
|
|
217
|
+
this.ensureInitialized();
|
|
218
|
+
const promises = [];
|
|
219
|
+
if (state.hdc) {
|
|
220
|
+
promises.push(this.saveHdcState(agentId, state.hdc));
|
|
221
|
+
}
|
|
222
|
+
if (state.btsp) {
|
|
223
|
+
promises.push(this.saveBtspState(agentId, state.btsp));
|
|
224
|
+
}
|
|
225
|
+
if (state.circadian) {
|
|
226
|
+
promises.push(this.saveCircadianState(agentId, state.circadian));
|
|
227
|
+
}
|
|
228
|
+
await Promise.all(promises);
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Load all nervous system state for an agent
|
|
232
|
+
*/
|
|
233
|
+
async loadAllState(agentId) {
|
|
234
|
+
this.ensureInitialized();
|
|
235
|
+
const [hdc, btsp, circadian] = await Promise.all([
|
|
236
|
+
this.loadHdcState(agentId),
|
|
237
|
+
this.loadBtspState(agentId),
|
|
238
|
+
this.loadCircadianState(agentId),
|
|
239
|
+
]);
|
|
240
|
+
return { hdc, btsp, circadian };
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Delete all state for an agent
|
|
244
|
+
*/
|
|
245
|
+
async deleteAllState(agentId) {
|
|
246
|
+
this.ensureInitialized();
|
|
247
|
+
await this.store.deleteAllState(agentId);
|
|
248
|
+
this.emit('state:deleted', { agentId });
|
|
249
|
+
// Remove from pending and registered
|
|
250
|
+
this.pendingStates.delete(agentId);
|
|
251
|
+
this.registeredAgents.delete(agentId);
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* List all agents with stored state
|
|
255
|
+
*/
|
|
256
|
+
async listAgents() {
|
|
257
|
+
this.ensureInitialized();
|
|
258
|
+
return this.store.listAgents();
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Get metadata about stored state
|
|
262
|
+
*/
|
|
263
|
+
async getStateMetadata(agentId, component) {
|
|
264
|
+
this.ensureInitialized();
|
|
265
|
+
return this.store.getStateMetadata(agentId, component);
|
|
266
|
+
}
|
|
267
|
+
// ============================================
|
|
268
|
+
// Auto-Save Management
|
|
269
|
+
// ============================================
|
|
270
|
+
/**
|
|
271
|
+
* Register an agent for auto-save
|
|
272
|
+
*/
|
|
273
|
+
registerForAutoSave(agentId) {
|
|
274
|
+
this.registeredAgents.add(agentId);
|
|
275
|
+
if (!this.pendingStates.has(agentId)) {
|
|
276
|
+
this.pendingStates.set(agentId, {});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Unregister an agent from auto-save
|
|
281
|
+
*/
|
|
282
|
+
unregisterFromAutoSave(agentId) {
|
|
283
|
+
this.registeredAgents.delete(agentId);
|
|
284
|
+
this.pendingStates.delete(agentId);
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Queue state for auto-save
|
|
288
|
+
*/
|
|
289
|
+
queueStateForAutoSave(agentId, state) {
|
|
290
|
+
if (!this.registeredAgents.has(agentId)) {
|
|
291
|
+
this.registerForAutoSave(agentId);
|
|
292
|
+
}
|
|
293
|
+
const pending = this.pendingStates.get(agentId) || {};
|
|
294
|
+
if (state.hdc)
|
|
295
|
+
pending.hdc = state.hdc;
|
|
296
|
+
if (state.btsp)
|
|
297
|
+
pending.btsp = state.btsp;
|
|
298
|
+
if (state.circadian)
|
|
299
|
+
pending.circadian = state.circadian;
|
|
300
|
+
this.pendingStates.set(agentId, pending);
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Start auto-save timer
|
|
304
|
+
*/
|
|
305
|
+
startAutoSave() {
|
|
306
|
+
if (this.autoSaveTimer) {
|
|
307
|
+
clearInterval(this.autoSaveTimer);
|
|
308
|
+
}
|
|
309
|
+
this.autoSaveTimer = setInterval(async () => {
|
|
310
|
+
await this.flushPendingStates();
|
|
311
|
+
}, this.config.autoSaveIntervalMs);
|
|
312
|
+
this.logger.debug('Auto-save started', { intervalMs: this.config.autoSaveIntervalMs });
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Stop auto-save timer
|
|
316
|
+
*/
|
|
317
|
+
stopAutoSave() {
|
|
318
|
+
if (this.autoSaveTimer) {
|
|
319
|
+
clearInterval(this.autoSaveTimer);
|
|
320
|
+
this.autoSaveTimer = null;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Flush all pending state to storage
|
|
325
|
+
*/
|
|
326
|
+
async flushPendingStates() {
|
|
327
|
+
for (const [agentId, pending] of this.pendingStates.entries()) {
|
|
328
|
+
const savedComponents = [];
|
|
329
|
+
try {
|
|
330
|
+
if (pending.hdc) {
|
|
331
|
+
await this.store.saveHdcState(agentId, pending.hdc);
|
|
332
|
+
savedComponents.push('hdc');
|
|
333
|
+
delete pending.hdc;
|
|
334
|
+
}
|
|
335
|
+
if (pending.btsp) {
|
|
336
|
+
await this.store.saveBtspState(agentId, pending.btsp);
|
|
337
|
+
savedComponents.push('btsp');
|
|
338
|
+
delete pending.btsp;
|
|
339
|
+
}
|
|
340
|
+
if (pending.circadian) {
|
|
341
|
+
await this.store.saveCircadianState(agentId, pending.circadian);
|
|
342
|
+
savedComponents.push('circadian');
|
|
343
|
+
delete pending.circadian;
|
|
344
|
+
}
|
|
345
|
+
if (savedComponents.length > 0) {
|
|
346
|
+
this.emit('auto-save', { agentId, savedComponents });
|
|
347
|
+
if (this.config.debug) {
|
|
348
|
+
this.logger.debug('Auto-saved state', { agentId, components: savedComponents });
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
catch (error) {
|
|
353
|
+
this.logger.error('Auto-save failed', { agentId, error });
|
|
354
|
+
this.emit('error', { agentId, operation: 'autoSave', error: error });
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
// ============================================
|
|
359
|
+
// Store Information
|
|
360
|
+
// ============================================
|
|
361
|
+
/**
|
|
362
|
+
* Get information about the underlying store
|
|
363
|
+
*/
|
|
364
|
+
getStoreInfo() {
|
|
365
|
+
return this.store.getStoreInfo();
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Get statistics about the persistence manager
|
|
369
|
+
*/
|
|
370
|
+
getStats() {
|
|
371
|
+
return {
|
|
372
|
+
initialized: this.initialized,
|
|
373
|
+
registeredAgents: this.registeredAgents.size,
|
|
374
|
+
pendingStates: this.pendingStates.size,
|
|
375
|
+
autoSaveEnabled: this.config.autoSaveIntervalMs > 0,
|
|
376
|
+
autoSaveIntervalMs: this.config.autoSaveIntervalMs,
|
|
377
|
+
storeType: this.store.getStoreInfo().type,
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
exports.NervousSystemPersistenceManager = NervousSystemPersistenceManager;
|
|
382
|
+
/**
|
|
383
|
+
* Factory function to create persistence manager
|
|
384
|
+
*/
|
|
385
|
+
function createNervousSystemPersistenceManager(config) {
|
|
386
|
+
return new NervousSystemPersistenceManager(config);
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Singleton instance for shared use
|
|
390
|
+
*/
|
|
391
|
+
let sharedManager = null;
|
|
392
|
+
/**
|
|
393
|
+
* Get or create shared persistence manager instance
|
|
394
|
+
*/
|
|
395
|
+
async function getSharedPersistenceManager(config) {
|
|
396
|
+
if (!sharedManager) {
|
|
397
|
+
sharedManager = createNervousSystemPersistenceManager(config);
|
|
398
|
+
await sharedManager.initialize();
|
|
399
|
+
}
|
|
400
|
+
return sharedManager;
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Reset shared instance (for testing)
|
|
404
|
+
*/
|
|
405
|
+
async function resetSharedPersistenceManager() {
|
|
406
|
+
if (sharedManager) {
|
|
407
|
+
await sharedManager.shutdown();
|
|
408
|
+
sharedManager = null;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
//# sourceMappingURL=NervousSystemPersistenceManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NervousSystemPersistenceManager.js","sourceRoot":"","sources":["../../../src/nervous-system/persistence/NervousSystemPersistenceManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Nervous System Store
|
|
3
|
+
*
|
|
4
|
+
* Persists nervous system component state to SQLite database.
|
|
5
|
+
* Uses the existing SwarmMemoryManager's database connection.
|
|
6
|
+
*
|
|
7
|
+
* @module nervous-system/persistence/SQLiteNervousSystemStore
|
|
8
|
+
*/
|
|
9
|
+
import type Database from 'better-sqlite3';
|
|
10
|
+
import type { INervousSystemStore, NervousSystemComponent, HdcSerializedState, BTSPSerializedState, CircadianSerializedState, StoredStateMetadata } from './INervousSystemStore.js';
|
|
11
|
+
/**
|
|
12
|
+
* Configuration for SQLiteNervousSystemStore
|
|
13
|
+
*/
|
|
14
|
+
export interface SQLiteNervousSystemStoreConfig {
|
|
15
|
+
/** Database instance to use (from SwarmMemoryManager) */
|
|
16
|
+
db?: Database.Database;
|
|
17
|
+
/** Path to database file (if db not provided) */
|
|
18
|
+
dbPath?: string;
|
|
19
|
+
/** Table name prefix (default: 'nervous_system') */
|
|
20
|
+
tablePrefix?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* SQLite implementation of nervous system state storage
|
|
24
|
+
*/
|
|
25
|
+
export declare class SQLiteNervousSystemStore implements INervousSystemStore {
|
|
26
|
+
private readonly logger;
|
|
27
|
+
private db;
|
|
28
|
+
private readonly config;
|
|
29
|
+
private initialized;
|
|
30
|
+
private stmtSaveState;
|
|
31
|
+
private stmtLoadState;
|
|
32
|
+
private stmtDeleteState;
|
|
33
|
+
private stmtDeleteAllState;
|
|
34
|
+
private stmtListAgents;
|
|
35
|
+
private stmtGetMetadata;
|
|
36
|
+
constructor(config?: SQLiteNervousSystemStoreConfig);
|
|
37
|
+
/**
|
|
38
|
+
* Initialize the store - create tables if needed
|
|
39
|
+
*/
|
|
40
|
+
initialize(): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Create required tables
|
|
43
|
+
*/
|
|
44
|
+
private createTables;
|
|
45
|
+
/**
|
|
46
|
+
* Prepare SQL statements for reuse
|
|
47
|
+
*/
|
|
48
|
+
private prepareStatements;
|
|
49
|
+
/**
|
|
50
|
+
* Ensure store is initialized
|
|
51
|
+
*/
|
|
52
|
+
private ensureInitialized;
|
|
53
|
+
/**
|
|
54
|
+
* Shutdown the store
|
|
55
|
+
*/
|
|
56
|
+
shutdown(): Promise<void>;
|
|
57
|
+
saveHdcState(agentId: string, state: HdcSerializedState): Promise<void>;
|
|
58
|
+
loadHdcState(agentId: string): Promise<HdcSerializedState | null>;
|
|
59
|
+
deleteHdcState(agentId: string): Promise<void>;
|
|
60
|
+
saveBtspState(agentId: string, state: BTSPSerializedState): Promise<void>;
|
|
61
|
+
loadBtspState(agentId: string): Promise<BTSPSerializedState | null>;
|
|
62
|
+
deleteBtspState(agentId: string): Promise<void>;
|
|
63
|
+
saveCircadianState(agentId: string, state: CircadianSerializedState): Promise<void>;
|
|
64
|
+
loadCircadianState(agentId: string): Promise<CircadianSerializedState | null>;
|
|
65
|
+
deleteCircadianState(agentId: string): Promise<void>;
|
|
66
|
+
deleteAllState(agentId: string): Promise<void>;
|
|
67
|
+
listAgents(): Promise<string[]>;
|
|
68
|
+
getStateMetadata(agentId: string, component?: NervousSystemComponent): Promise<StoredStateMetadata[]>;
|
|
69
|
+
getStoreInfo(): {
|
|
70
|
+
type: 'sqlite' | 'supabase' | 'file' | 'memory';
|
|
71
|
+
version: string;
|
|
72
|
+
location?: string;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Pack HDC state into a single binary buffer
|
|
76
|
+
* Format:
|
|
77
|
+
* [4 bytes: dimension]
|
|
78
|
+
* [4 bytes: num type codebook entries]
|
|
79
|
+
* [... type codebook entries: key length (2) + key + vector (1250)]
|
|
80
|
+
* [4 bytes: num domain codebook entries]
|
|
81
|
+
* [... domain codebook entries]
|
|
82
|
+
* [4 bytes: num framework codebook entries]
|
|
83
|
+
* [... framework codebook entries]
|
|
84
|
+
* [4 × 1250 bytes: role vectors]
|
|
85
|
+
* [4 bytes: num patterns]
|
|
86
|
+
* [... patterns: key length (2) + key + vector (1250)]
|
|
87
|
+
*/
|
|
88
|
+
private packHdcBinaryData;
|
|
89
|
+
/**
|
|
90
|
+
* Unpack HDC state from binary buffer
|
|
91
|
+
*/
|
|
92
|
+
private unpackHdcBinaryData;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Factory function to create SQLite store
|
|
96
|
+
*/
|
|
97
|
+
export declare function createSQLiteNervousSystemStore(config?: SQLiteNervousSystemStoreConfig): SQLiteNervousSystemStore;
|
|
98
|
+
//# sourceMappingURL=SQLiteNervousSystemStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLiteNervousSystemStore.d.ts","sourceRoot":"","sources":["../../../src/nervous-system/persistence/SQLiteNervousSystemStore.ts"],"names":[],"mappings":"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"}
|