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,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Circadian Controller Serializer
|
|
4
|
+
*
|
|
5
|
+
* Handles serialization and deserialization of CircadianController state.
|
|
6
|
+
* Since circadian state is all primitives and simple objects, we use JSON.
|
|
7
|
+
*
|
|
8
|
+
* @module nervous-system/persistence/CircadianSerializer
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.serializeCircadian = serializeCircadian;
|
|
12
|
+
exports.deserializeCircadian = deserializeCircadian;
|
|
13
|
+
exports.calculateStateSize = calculateStateSize;
|
|
14
|
+
exports.validateCircadianState = validateCircadianState;
|
|
15
|
+
exports.createDefaultCircadianState = createDefaultCircadianState;
|
|
16
|
+
exports.calculateEnergySavings = calculateEnergySavings;
|
|
17
|
+
/**
|
|
18
|
+
* Current serialization schema version
|
|
19
|
+
*/
|
|
20
|
+
const SCHEMA_VERSION = 1;
|
|
21
|
+
/**
|
|
22
|
+
* Serialize a CircadianController to storable format
|
|
23
|
+
*
|
|
24
|
+
* @param controller - The controller to serialize
|
|
25
|
+
* @param options - Serialization options
|
|
26
|
+
* @returns Serialized state ready for storage
|
|
27
|
+
*/
|
|
28
|
+
function serializeCircadian(controller, options = {}) {
|
|
29
|
+
const { includeMetrics = true, includeModulation = true, } = options;
|
|
30
|
+
const state = controller.getState();
|
|
31
|
+
const metrics = controller.getMetrics();
|
|
32
|
+
const lastPhaseChange = controller.getLastPhaseChangeTime();
|
|
33
|
+
const modulationStartTime = controller.getModulationStartTime();
|
|
34
|
+
// Build serialized state
|
|
35
|
+
const serialized = {
|
|
36
|
+
version: SCHEMA_VERSION,
|
|
37
|
+
state: {
|
|
38
|
+
phase: state.phase,
|
|
39
|
+
cycleTime: state.cycleTime,
|
|
40
|
+
phaseTime: state.phaseTime,
|
|
41
|
+
energyRemaining: state.energyRemaining,
|
|
42
|
+
cyclesCompleted: state.cyclesCompleted,
|
|
43
|
+
activeModulation: includeModulation ? state.activeModulation : null,
|
|
44
|
+
timeToNextPhase: state.timeToNextPhase,
|
|
45
|
+
wasmEnabled: state.wasmEnabled,
|
|
46
|
+
},
|
|
47
|
+
metrics: includeMetrics ? { ...metrics } : createEmptyMetrics(),
|
|
48
|
+
lastPhaseChange,
|
|
49
|
+
modulationStartTime: includeModulation ? modulationStartTime : undefined,
|
|
50
|
+
serializedAt: Date.now(),
|
|
51
|
+
};
|
|
52
|
+
return serialized;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Deserialize stored state back into a CircadianController
|
|
56
|
+
*
|
|
57
|
+
* @param state - Serialized state from storage
|
|
58
|
+
* @param controller - The controller to restore state into
|
|
59
|
+
*/
|
|
60
|
+
function deserializeCircadian(state, controller) {
|
|
61
|
+
// Handle version migration if needed
|
|
62
|
+
if (state.version !== SCHEMA_VERSION) {
|
|
63
|
+
migrateState(state);
|
|
64
|
+
}
|
|
65
|
+
// Restore core state
|
|
66
|
+
controller.restoreState(state.state.phase, state.state.cycleTime, state.state.phaseTime, state.state.cyclesCompleted, state.state.energyRemaining, state.state.activeModulation);
|
|
67
|
+
// Restore metrics
|
|
68
|
+
if (state.metrics) {
|
|
69
|
+
controller.restoreMetrics(state.metrics);
|
|
70
|
+
}
|
|
71
|
+
// Restore timing
|
|
72
|
+
controller.restoreLastPhaseChangeTime(state.lastPhaseChange);
|
|
73
|
+
if (state.modulationStartTime !== undefined) {
|
|
74
|
+
controller.restoreModulationStartTime(state.modulationStartTime);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Migrate state from older schema versions
|
|
79
|
+
*/
|
|
80
|
+
function migrateState(state) {
|
|
81
|
+
// Future: Add migration logic as schema evolves
|
|
82
|
+
state.version = SCHEMA_VERSION;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Create empty metrics structure
|
|
86
|
+
*/
|
|
87
|
+
function createEmptyMetrics() {
|
|
88
|
+
return {
|
|
89
|
+
phaseTime: {
|
|
90
|
+
Active: 0,
|
|
91
|
+
Dawn: 0,
|
|
92
|
+
Dusk: 0,
|
|
93
|
+
Rest: 0,
|
|
94
|
+
},
|
|
95
|
+
reactionsPerPhase: {
|
|
96
|
+
Active: 0,
|
|
97
|
+
Dawn: 0,
|
|
98
|
+
Dusk: 0,
|
|
99
|
+
Rest: 0,
|
|
100
|
+
},
|
|
101
|
+
rejectionsPerPhase: {
|
|
102
|
+
Active: 0,
|
|
103
|
+
Dawn: 0,
|
|
104
|
+
Dusk: 0,
|
|
105
|
+
Rest: 0,
|
|
106
|
+
},
|
|
107
|
+
averageDutyFactor: 0,
|
|
108
|
+
totalEnergyConsumed: 0,
|
|
109
|
+
phaseTransitions: 0,
|
|
110
|
+
hysteresisActivations: 0,
|
|
111
|
+
wtaCompetitions: 0,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Calculate approximate size of serialized state in bytes
|
|
116
|
+
*/
|
|
117
|
+
function calculateStateSize(state) {
|
|
118
|
+
// JSON serialization is compact for this simple structure
|
|
119
|
+
return JSON.stringify(state).length;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Validate serialized state integrity
|
|
123
|
+
*/
|
|
124
|
+
function validateCircadianState(state) {
|
|
125
|
+
const errors = [];
|
|
126
|
+
// Check version
|
|
127
|
+
if (typeof state.version !== 'number' || state.version < 1) {
|
|
128
|
+
errors.push('Invalid schema version');
|
|
129
|
+
}
|
|
130
|
+
// Check state
|
|
131
|
+
if (!state.state) {
|
|
132
|
+
errors.push('Missing state object');
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
// Check phase
|
|
136
|
+
const validPhases = ['Active', 'Dawn', 'Dusk', 'Rest'];
|
|
137
|
+
if (!validPhases.includes(state.state.phase)) {
|
|
138
|
+
errors.push(`Invalid phase: ${state.state.phase}`);
|
|
139
|
+
}
|
|
140
|
+
// Check numeric fields
|
|
141
|
+
if (typeof state.state.cycleTime !== 'number' || state.state.cycleTime < 0) {
|
|
142
|
+
errors.push('Invalid cycleTime');
|
|
143
|
+
}
|
|
144
|
+
if (typeof state.state.phaseTime !== 'number' || state.state.phaseTime < 0) {
|
|
145
|
+
errors.push('Invalid phaseTime');
|
|
146
|
+
}
|
|
147
|
+
if (typeof state.state.energyRemaining !== 'number') {
|
|
148
|
+
errors.push('Invalid energyRemaining');
|
|
149
|
+
}
|
|
150
|
+
if (typeof state.state.cyclesCompleted !== 'number' || state.state.cyclesCompleted < 0) {
|
|
151
|
+
errors.push('Invalid cyclesCompleted');
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Check metrics
|
|
155
|
+
if (!state.metrics) {
|
|
156
|
+
errors.push('Missing metrics object');
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
// Check phase time records
|
|
160
|
+
const phases = ['Active', 'Dawn', 'Dusk', 'Rest'];
|
|
161
|
+
for (const phase of phases) {
|
|
162
|
+
if (typeof state.metrics.phaseTime[phase] !== 'number') {
|
|
163
|
+
errors.push(`Missing phaseTime for ${phase}`);
|
|
164
|
+
}
|
|
165
|
+
if (typeof state.metrics.reactionsPerPhase[phase] !== 'number') {
|
|
166
|
+
errors.push(`Missing reactionsPerPhase for ${phase}`);
|
|
167
|
+
}
|
|
168
|
+
if (typeof state.metrics.rejectionsPerPhase[phase] !== 'number') {
|
|
169
|
+
errors.push(`Missing rejectionsPerPhase for ${phase}`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Check timestamps
|
|
174
|
+
if (typeof state.lastPhaseChange !== 'number') {
|
|
175
|
+
errors.push('Invalid lastPhaseChange timestamp');
|
|
176
|
+
}
|
|
177
|
+
if (typeof state.serializedAt !== 'number') {
|
|
178
|
+
errors.push('Invalid serializedAt timestamp');
|
|
179
|
+
}
|
|
180
|
+
return {
|
|
181
|
+
valid: errors.length === 0,
|
|
182
|
+
errors,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Create a default serialized state for new controllers
|
|
187
|
+
*/
|
|
188
|
+
function createDefaultCircadianState(initialPhase = 'Active', energyBudget = 0) {
|
|
189
|
+
return {
|
|
190
|
+
version: SCHEMA_VERSION,
|
|
191
|
+
state: {
|
|
192
|
+
phase: initialPhase,
|
|
193
|
+
cycleTime: 0,
|
|
194
|
+
phaseTime: 0,
|
|
195
|
+
energyRemaining: energyBudget,
|
|
196
|
+
cyclesCompleted: 0,
|
|
197
|
+
activeModulation: null,
|
|
198
|
+
timeToNextPhase: 0,
|
|
199
|
+
wasmEnabled: false,
|
|
200
|
+
},
|
|
201
|
+
metrics: createEmptyMetrics(),
|
|
202
|
+
lastPhaseChange: Date.now(),
|
|
203
|
+
serializedAt: Date.now(),
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Calculate energy savings from metrics
|
|
208
|
+
*/
|
|
209
|
+
function calculateEnergySavings(state) {
|
|
210
|
+
const { phaseTime } = state.metrics;
|
|
211
|
+
const totalTime = phaseTime.Active + phaseTime.Dawn + phaseTime.Dusk + phaseTime.Rest;
|
|
212
|
+
const totalRestTime = phaseTime.Rest;
|
|
213
|
+
const totalActiveTime = phaseTime.Active;
|
|
214
|
+
if (totalTime === 0) {
|
|
215
|
+
return {
|
|
216
|
+
savingsPercentage: 0,
|
|
217
|
+
totalRestTime: 0,
|
|
218
|
+
totalActiveTime: 0,
|
|
219
|
+
averageDutyFactor: 1,
|
|
220
|
+
costReductionFactor: 1,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
// Calculate weighted average duty factor
|
|
224
|
+
// Active: 1.0, Dawn: 0.6, Dusk: 0.4, Rest: 0.1
|
|
225
|
+
const weightedDuty = (phaseTime.Active * 1.0 +
|
|
226
|
+
phaseTime.Dawn * 0.6 +
|
|
227
|
+
phaseTime.Dusk * 0.4 +
|
|
228
|
+
phaseTime.Rest * 0.1) / totalTime;
|
|
229
|
+
const savingsPercentage = (1 - weightedDuty) * 100;
|
|
230
|
+
const costReductionFactor = 1 / weightedDuty;
|
|
231
|
+
return {
|
|
232
|
+
savingsPercentage,
|
|
233
|
+
totalRestTime,
|
|
234
|
+
totalActiveTime,
|
|
235
|
+
averageDutyFactor: weightedDuty,
|
|
236
|
+
costReductionFactor,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=CircadianSerializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CircadianSerializer.js","sourceRoot":"","sources":["../../../src/nervous-system/persistence/CircadianSerializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HDC Memory Serializer
|
|
3
|
+
*
|
|
4
|
+
* Handles serialization and deserialization of Hyperdimensional Computing
|
|
5
|
+
* memory state, including codebooks, role vectors, and stored patterns.
|
|
6
|
+
*
|
|
7
|
+
* @module nervous-system/persistence/HdcSerializer
|
|
8
|
+
*/
|
|
9
|
+
import type { HdcSerializedState } from './INervousSystemStore.js';
|
|
10
|
+
import type { Hypervector } from '../wasm-loader.js';
|
|
11
|
+
/**
|
|
12
|
+
* Options for serialization
|
|
13
|
+
*/
|
|
14
|
+
export interface HdcSerializerOptions {
|
|
15
|
+
/** Include stored patterns in serialization (default: true) */
|
|
16
|
+
includePatterns?: boolean;
|
|
17
|
+
/** Include codebooks in serialization (default: true) */
|
|
18
|
+
includeCodebooks?: boolean;
|
|
19
|
+
/** Maximum patterns to include (0 = all) */
|
|
20
|
+
maxPatterns?: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Serializes a Hypervector to Uint8Array
|
|
24
|
+
* Uses the WASM to_bytes() method if available
|
|
25
|
+
*/
|
|
26
|
+
export declare function serializeHypervector(vector: Hypervector): Uint8Array;
|
|
27
|
+
/**
|
|
28
|
+
* Deserializes Uint8Array back to Hypervector
|
|
29
|
+
* Uses the WASM from_bytes() static method
|
|
30
|
+
*/
|
|
31
|
+
export declare function deserializeHypervector(bytes: Uint8Array, HypervectorClass: typeof Hypervector): Hypervector;
|
|
32
|
+
/**
|
|
33
|
+
* Serializes an HdcMemoryAdapter to a storable format
|
|
34
|
+
*
|
|
35
|
+
* @param adapter - The HDC memory adapter to serialize
|
|
36
|
+
* @param options - Serialization options
|
|
37
|
+
* @returns Serialized state ready for storage
|
|
38
|
+
*/
|
|
39
|
+
export declare function serializeHdcMemory(adapter: {
|
|
40
|
+
getCodebooks: () => {
|
|
41
|
+
type: Map<string, Hypervector>;
|
|
42
|
+
domain: Map<string, Hypervector>;
|
|
43
|
+
framework: Map<string, Hypervector>;
|
|
44
|
+
};
|
|
45
|
+
getRoleVectors: () => {
|
|
46
|
+
type: Hypervector;
|
|
47
|
+
domain: Hypervector;
|
|
48
|
+
content: Hypervector;
|
|
49
|
+
framework: Hypervector;
|
|
50
|
+
};
|
|
51
|
+
getStoredPatterns: () => Map<string, {
|
|
52
|
+
vector: Hypervector;
|
|
53
|
+
metadata?: Record<string, unknown>;
|
|
54
|
+
}>;
|
|
55
|
+
getDimension: () => number;
|
|
56
|
+
}, options?: HdcSerializerOptions): HdcSerializedState;
|
|
57
|
+
/**
|
|
58
|
+
* Deserializes stored state back into an HdcMemoryAdapter
|
|
59
|
+
*
|
|
60
|
+
* @param state - Serialized state from storage
|
|
61
|
+
* @param adapter - The adapter to restore state into
|
|
62
|
+
* @param HypervectorClass - The Hypervector class for deserialization
|
|
63
|
+
*/
|
|
64
|
+
export declare function deserializeHdcMemory(state: HdcSerializedState, adapter: {
|
|
65
|
+
restoreCodebooks: (codebooks: {
|
|
66
|
+
type: Map<string, Hypervector>;
|
|
67
|
+
domain: Map<string, Hypervector>;
|
|
68
|
+
framework: Map<string, Hypervector>;
|
|
69
|
+
}) => void;
|
|
70
|
+
restoreRoleVectors: (roleVectors: {
|
|
71
|
+
type: Hypervector;
|
|
72
|
+
domain: Hypervector;
|
|
73
|
+
content: Hypervector;
|
|
74
|
+
framework: Hypervector;
|
|
75
|
+
}) => void;
|
|
76
|
+
restorePatterns: (patterns: Map<string, {
|
|
77
|
+
vector: Hypervector;
|
|
78
|
+
metadata?: Record<string, unknown>;
|
|
79
|
+
}>) => void;
|
|
80
|
+
}, HypervectorClass: typeof Hypervector): void;
|
|
81
|
+
/**
|
|
82
|
+
* Calculate approximate size of serialized state in bytes
|
|
83
|
+
*/
|
|
84
|
+
export declare function calculateStateSize(state: HdcSerializedState): number;
|
|
85
|
+
/**
|
|
86
|
+
* Validate serialized state integrity
|
|
87
|
+
*/
|
|
88
|
+
export declare function validateHdcState(state: HdcSerializedState): {
|
|
89
|
+
valid: boolean;
|
|
90
|
+
errors: string[];
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Alias for calculateStateSize (for naming consistency)
|
|
94
|
+
*/
|
|
95
|
+
export declare const calculateHdcStateSize: typeof calculateStateSize;
|
|
96
|
+
/**
|
|
97
|
+
* Export types
|
|
98
|
+
*/
|
|
99
|
+
export type { HdcSerializedState };
|
|
100
|
+
//# sourceMappingURL=HdcSerializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HdcSerializer.d.ts","sourceRoot":"","sources":["../../../src/nervous-system/persistence/HdcSerializer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,mBAAmB,CAAC;AAoDhE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,+DAA+D;IAC/D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAGpE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,UAAU,EACjB,gBAAgB,EAAE,OAAO,WAAW,GACnC,WAAW,CAEb;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE;IACP,YAAY,EAAE,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACjC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;KACrC,CAAC;IACF,cAAc,EAAE,MAAM;QACpB,IAAI,EAAE,WAAW,CAAC;QAClB,MAAM,EAAE,WAAW,CAAC;QACpB,OAAO,EAAE,WAAW,CAAC;QACrB,SAAS,EAAE,WAAW,CAAC;KACxB,CAAC;IACF,iBAAiB,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IAClG,YAAY,EAAE,MAAM,MAAM,CAAC;CAC5B,EACD,OAAO,GAAE,oBAAyB,GACjC,kBAAkB,CAoEpB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE;IACP,gBAAgB,EAAE,CAAC,SAAS,EAAE;QAC5B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACjC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;KACrC,KAAK,IAAI,CAAC;IACX,kBAAkB,EAAE,CAAC,WAAW,EAAE;QAChC,IAAI,EAAE,WAAW,CAAC;QAClB,MAAM,EAAE,WAAW,CAAC;QACpB,OAAO,EAAE,WAAW,CAAC;QACrB,SAAS,EAAE,WAAW,CAAC;KACxB,KAAK,IAAI,CAAC;IACX,eAAe,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;CAC/G,EACD,gBAAgB,EAAE,OAAO,WAAW,GACnC,IAAI,CAgDN;AAWD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAoBpE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG;IAC3D,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CA2CA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,2BAAqB,CAAC;AAExD;;GAEG;AACH,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* HDC Memory Serializer
|
|
4
|
+
*
|
|
5
|
+
* Handles serialization and deserialization of Hyperdimensional Computing
|
|
6
|
+
* memory state, including codebooks, role vectors, and stored patterns.
|
|
7
|
+
*
|
|
8
|
+
* @module nervous-system/persistence/HdcSerializer
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.calculateHdcStateSize = void 0;
|
|
12
|
+
exports.serializeHypervector = serializeHypervector;
|
|
13
|
+
exports.deserializeHypervector = deserializeHypervector;
|
|
14
|
+
exports.serializeHdcMemory = serializeHdcMemory;
|
|
15
|
+
exports.deserializeHdcMemory = deserializeHdcMemory;
|
|
16
|
+
exports.calculateStateSize = calculateStateSize;
|
|
17
|
+
exports.validateHdcState = validateHdcState;
|
|
18
|
+
/**
|
|
19
|
+
* Expected size of a 10,000-bit hypervector in bytes
|
|
20
|
+
* 10,000 bits / 8 bits per byte = 1,250 bytes
|
|
21
|
+
*/
|
|
22
|
+
const HYPERVECTOR_BYTES = 1250;
|
|
23
|
+
/**
|
|
24
|
+
* Current serialization schema version
|
|
25
|
+
*/
|
|
26
|
+
const SCHEMA_VERSION = 1;
|
|
27
|
+
/**
|
|
28
|
+
* Codebook key names for type patterns
|
|
29
|
+
*/
|
|
30
|
+
const TYPE_KEYS = [
|
|
31
|
+
'edge-case',
|
|
32
|
+
'boundary-condition',
|
|
33
|
+
'null-handling',
|
|
34
|
+
'exception',
|
|
35
|
+
'performance',
|
|
36
|
+
'security',
|
|
37
|
+
'integration',
|
|
38
|
+
'unit',
|
|
39
|
+
'regression',
|
|
40
|
+
'smoke',
|
|
41
|
+
];
|
|
42
|
+
/**
|
|
43
|
+
* Codebook key names for domain patterns
|
|
44
|
+
*/
|
|
45
|
+
const DOMAIN_KEYS = [
|
|
46
|
+
'unit-test',
|
|
47
|
+
'integration-test',
|
|
48
|
+
'e2e-test',
|
|
49
|
+
'performance-test',
|
|
50
|
+
'security-test',
|
|
51
|
+
];
|
|
52
|
+
/**
|
|
53
|
+
* Codebook key names for framework patterns
|
|
54
|
+
*/
|
|
55
|
+
const FRAMEWORK_KEYS = [
|
|
56
|
+
'jest',
|
|
57
|
+
'mocha',
|
|
58
|
+
'cypress',
|
|
59
|
+
'vitest',
|
|
60
|
+
'jasmine',
|
|
61
|
+
'ava',
|
|
62
|
+
];
|
|
63
|
+
/**
|
|
64
|
+
* Serializes a Hypervector to Uint8Array
|
|
65
|
+
* Uses the WASM to_bytes() method if available
|
|
66
|
+
*/
|
|
67
|
+
function serializeHypervector(vector) {
|
|
68
|
+
// The Hypervector class has a to_bytes() method that returns Uint8Array
|
|
69
|
+
return vector.to_bytes();
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Deserializes Uint8Array back to Hypervector
|
|
73
|
+
* Uses the WASM from_bytes() static method
|
|
74
|
+
*/
|
|
75
|
+
function deserializeHypervector(bytes, HypervectorClass) {
|
|
76
|
+
return HypervectorClass.from_bytes(bytes);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Serializes an HdcMemoryAdapter to a storable format
|
|
80
|
+
*
|
|
81
|
+
* @param adapter - The HDC memory adapter to serialize
|
|
82
|
+
* @param options - Serialization options
|
|
83
|
+
* @returns Serialized state ready for storage
|
|
84
|
+
*/
|
|
85
|
+
function serializeHdcMemory(adapter, options = {}) {
|
|
86
|
+
const { includePatterns = true, includeCodebooks = true, maxPatterns = 0, } = options;
|
|
87
|
+
const dimension = adapter.getDimension();
|
|
88
|
+
// Serialize codebooks
|
|
89
|
+
const codebooks = {
|
|
90
|
+
type: [],
|
|
91
|
+
domain: [],
|
|
92
|
+
framework: [],
|
|
93
|
+
};
|
|
94
|
+
if (includeCodebooks) {
|
|
95
|
+
const cb = adapter.getCodebooks();
|
|
96
|
+
for (const [key, vector] of cb.type) {
|
|
97
|
+
codebooks.type.push([key, serializeHypervector(vector)]);
|
|
98
|
+
}
|
|
99
|
+
for (const [key, vector] of cb.domain) {
|
|
100
|
+
codebooks.domain.push([key, serializeHypervector(vector)]);
|
|
101
|
+
}
|
|
102
|
+
for (const [key, vector] of cb.framework) {
|
|
103
|
+
codebooks.framework.push([key, serializeHypervector(vector)]);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Serialize role vectors
|
|
107
|
+
const rv = adapter.getRoleVectors();
|
|
108
|
+
const roleVectors = {
|
|
109
|
+
type: serializeHypervector(rv.type),
|
|
110
|
+
domain: serializeHypervector(rv.domain),
|
|
111
|
+
content: serializeHypervector(rv.content),
|
|
112
|
+
framework: serializeHypervector(rv.framework),
|
|
113
|
+
};
|
|
114
|
+
// Serialize stored patterns
|
|
115
|
+
const patterns = [];
|
|
116
|
+
if (includePatterns) {
|
|
117
|
+
const storedPatterns = adapter.getStoredPatterns();
|
|
118
|
+
let count = 0;
|
|
119
|
+
for (const [key, { vector, metadata }] of storedPatterns) {
|
|
120
|
+
if (maxPatterns > 0 && count >= maxPatterns)
|
|
121
|
+
break;
|
|
122
|
+
patterns.push({
|
|
123
|
+
key,
|
|
124
|
+
vector: serializeHypervector(vector),
|
|
125
|
+
metadata,
|
|
126
|
+
});
|
|
127
|
+
count++;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
version: SCHEMA_VERSION,
|
|
132
|
+
dimension,
|
|
133
|
+
codebooks,
|
|
134
|
+
roleVectors,
|
|
135
|
+
patterns,
|
|
136
|
+
serializedAt: Date.now(),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Deserializes stored state back into an HdcMemoryAdapter
|
|
141
|
+
*
|
|
142
|
+
* @param state - Serialized state from storage
|
|
143
|
+
* @param adapter - The adapter to restore state into
|
|
144
|
+
* @param HypervectorClass - The Hypervector class for deserialization
|
|
145
|
+
*/
|
|
146
|
+
function deserializeHdcMemory(state, adapter, HypervectorClass) {
|
|
147
|
+
// Handle version migration if needed
|
|
148
|
+
if (state.version !== SCHEMA_VERSION) {
|
|
149
|
+
migrateState(state);
|
|
150
|
+
}
|
|
151
|
+
// Restore codebooks
|
|
152
|
+
const codebooks = {
|
|
153
|
+
type: new Map(),
|
|
154
|
+
domain: new Map(),
|
|
155
|
+
framework: new Map(),
|
|
156
|
+
};
|
|
157
|
+
for (const [key, bytes] of state.codebooks.type) {
|
|
158
|
+
codebooks.type.set(key, deserializeHypervector(bytes, HypervectorClass));
|
|
159
|
+
}
|
|
160
|
+
for (const [key, bytes] of state.codebooks.domain) {
|
|
161
|
+
codebooks.domain.set(key, deserializeHypervector(bytes, HypervectorClass));
|
|
162
|
+
}
|
|
163
|
+
for (const [key, bytes] of state.codebooks.framework) {
|
|
164
|
+
codebooks.framework.set(key, deserializeHypervector(bytes, HypervectorClass));
|
|
165
|
+
}
|
|
166
|
+
adapter.restoreCodebooks(codebooks);
|
|
167
|
+
// Restore role vectors
|
|
168
|
+
const roleVectors = {
|
|
169
|
+
type: deserializeHypervector(state.roleVectors.type, HypervectorClass),
|
|
170
|
+
domain: deserializeHypervector(state.roleVectors.domain, HypervectorClass),
|
|
171
|
+
content: deserializeHypervector(state.roleVectors.content, HypervectorClass),
|
|
172
|
+
framework: deserializeHypervector(state.roleVectors.framework, HypervectorClass),
|
|
173
|
+
};
|
|
174
|
+
adapter.restoreRoleVectors(roleVectors);
|
|
175
|
+
// Restore patterns
|
|
176
|
+
const patterns = new Map();
|
|
177
|
+
for (const { key, vector, metadata } of state.patterns) {
|
|
178
|
+
patterns.set(key, {
|
|
179
|
+
vector: deserializeHypervector(vector, HypervectorClass),
|
|
180
|
+
metadata,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
adapter.restorePatterns(patterns);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Migrate state from older schema versions
|
|
187
|
+
*/
|
|
188
|
+
function migrateState(state) {
|
|
189
|
+
// Future: Add migration logic as schema evolves
|
|
190
|
+
// For now, just update version
|
|
191
|
+
state.version = SCHEMA_VERSION;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Calculate approximate size of serialized state in bytes
|
|
195
|
+
*/
|
|
196
|
+
function calculateStateSize(state) {
|
|
197
|
+
let size = 0;
|
|
198
|
+
// Codebooks
|
|
199
|
+
size += state.codebooks.type.length * HYPERVECTOR_BYTES;
|
|
200
|
+
size += state.codebooks.domain.length * HYPERVECTOR_BYTES;
|
|
201
|
+
size += state.codebooks.framework.length * HYPERVECTOR_BYTES;
|
|
202
|
+
// Role vectors (4 vectors)
|
|
203
|
+
size += 4 * HYPERVECTOR_BYTES;
|
|
204
|
+
// Patterns
|
|
205
|
+
size += state.patterns.length * HYPERVECTOR_BYTES;
|
|
206
|
+
// Metadata overhead (rough estimate)
|
|
207
|
+
size += state.patterns.reduce((acc, p) => {
|
|
208
|
+
return acc + p.key.length + (p.metadata ? JSON.stringify(p.metadata).length : 0);
|
|
209
|
+
}, 0);
|
|
210
|
+
return size;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Validate serialized state integrity
|
|
214
|
+
*/
|
|
215
|
+
function validateHdcState(state) {
|
|
216
|
+
const errors = [];
|
|
217
|
+
// Check version
|
|
218
|
+
if (typeof state.version !== 'number' || state.version < 1) {
|
|
219
|
+
errors.push('Invalid schema version');
|
|
220
|
+
}
|
|
221
|
+
// Check dimension
|
|
222
|
+
if (typeof state.dimension !== 'number' || state.dimension < 1) {
|
|
223
|
+
errors.push('Invalid dimension');
|
|
224
|
+
}
|
|
225
|
+
// Check role vectors
|
|
226
|
+
const expectedBytes = state.dimension / 8;
|
|
227
|
+
const roleVectorNames = ['type', 'domain', 'content', 'framework'];
|
|
228
|
+
for (const name of roleVectorNames) {
|
|
229
|
+
const rv = state.roleVectors[name];
|
|
230
|
+
if (!(rv instanceof Uint8Array)) {
|
|
231
|
+
errors.push(`Role vector ${name} is not Uint8Array`);
|
|
232
|
+
}
|
|
233
|
+
else if (rv.length !== expectedBytes) {
|
|
234
|
+
errors.push(`Role vector ${name} has wrong size: ${rv.length} vs expected ${expectedBytes}`);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// Check patterns
|
|
238
|
+
for (let i = 0; i < state.patterns.length; i++) {
|
|
239
|
+
const pattern = state.patterns[i];
|
|
240
|
+
if (!pattern.key || typeof pattern.key !== 'string') {
|
|
241
|
+
errors.push(`Pattern ${i} has invalid key`);
|
|
242
|
+
}
|
|
243
|
+
if (!(pattern.vector instanceof Uint8Array)) {
|
|
244
|
+
errors.push(`Pattern ${i} vector is not Uint8Array`);
|
|
245
|
+
}
|
|
246
|
+
else if (pattern.vector.length !== expectedBytes) {
|
|
247
|
+
errors.push(`Pattern ${i} vector has wrong size`);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return {
|
|
251
|
+
valid: errors.length === 0,
|
|
252
|
+
errors,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Alias for calculateStateSize (for naming consistency)
|
|
257
|
+
*/
|
|
258
|
+
exports.calculateHdcStateSize = calculateStateSize;
|
|
259
|
+
//# sourceMappingURL=HdcSerializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HdcSerializer.js","sourceRoot":"","sources":["../../../src/nervous-system/persistence/HdcSerializer.ts"],"names":[],"mappings":"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"}
|