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,587 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* BTSPLearningEngine - One-shot Learning Integration
|
|
4
|
+
*
|
|
5
|
+
* Integrates BTSPAdapter with the existing LearningEngine to enable
|
|
6
|
+
* one-shot learning from single failures (vs 10+ examples with traditional RL).
|
|
7
|
+
*
|
|
8
|
+
* Key capabilities:
|
|
9
|
+
* - Learn from single failure (one-shot BTSP association)
|
|
10
|
+
* - BTSP pattern recall before Q-learning fallback
|
|
11
|
+
* - Plateau detection for stability monitoring
|
|
12
|
+
* - EWC consolidation to prevent catastrophic forgetting
|
|
13
|
+
*
|
|
14
|
+
* Architecture:
|
|
15
|
+
* - Wraps LearningEngine for hybrid learning
|
|
16
|
+
* - Uses BTSP for negative reward (failure) learning
|
|
17
|
+
* - Falls back to Q-learning for positive reward learning
|
|
18
|
+
* - Consolidates periodically to prevent forgetting
|
|
19
|
+
*
|
|
20
|
+
* @module nervous-system/integration/BTSPLearningEngine
|
|
21
|
+
*/
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.BTSPLearningEngine = void 0;
|
|
24
|
+
exports.createBTSPLearningEngine = createBTSPLearningEngine;
|
|
25
|
+
const Logger_js_1 = require("../../utils/Logger.js");
|
|
26
|
+
const BTSPAdapter_js_1 = require("../adapters/BTSPAdapter.js");
|
|
27
|
+
const LearningEngine_js_1 = require("../../learning/LearningEngine.js");
|
|
28
|
+
/**
|
|
29
|
+
* Default configuration
|
|
30
|
+
*/
|
|
31
|
+
const DEFAULT_CONFIG = {
|
|
32
|
+
oneShotThreshold: 0, // Reward < 0 triggers BTSP
|
|
33
|
+
recallConfidenceThreshold: 0.6, // 60% confidence required to trust BTSP
|
|
34
|
+
consolidationInterval: 100, // Consolidate every 100 experiences
|
|
35
|
+
autoConsolidate: true,
|
|
36
|
+
btspWeight: 0.7, // 70% BTSP, 30% Q-learning when both available
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* BTSPLearningEngine - Hybrid one-shot + RL learning
|
|
40
|
+
*
|
|
41
|
+
* Provides bio-inspired one-shot learning for failures while maintaining
|
|
42
|
+
* Q-learning for positive reinforcement. This enables learning from
|
|
43
|
+
* single test failures instead of requiring 10+ examples.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const engine = new BTSPLearningEngine('agent-1', memoryStore, {
|
|
48
|
+
* oneShotThreshold: 0,
|
|
49
|
+
* recallConfidenceThreshold: 0.6
|
|
50
|
+
* });
|
|
51
|
+
* await engine.initialize();
|
|
52
|
+
*
|
|
53
|
+
* // Learn from execution - BTSP for failures, Q-learning for success
|
|
54
|
+
* const outcome = await engine.learnFromExecution(task, result, feedback);
|
|
55
|
+
*
|
|
56
|
+
* // Get recommendation - checks BTSP associations first
|
|
57
|
+
* const recommendation = await engine.recommendWithBTSP(state);
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
class BTSPLearningEngine {
|
|
61
|
+
constructor(agentId, memoryStore, config = {}) {
|
|
62
|
+
/** Initialization state */
|
|
63
|
+
this.initialized = false;
|
|
64
|
+
/** Accumulated recall confidences for averaging */
|
|
65
|
+
this.recallConfidences = [];
|
|
66
|
+
/** Experience count since last consolidation */
|
|
67
|
+
this.experiencesSinceConsolidation = 0;
|
|
68
|
+
this.logger = Logger_js_1.Logger.getInstance();
|
|
69
|
+
this.agentId = agentId;
|
|
70
|
+
this.memoryStore = memoryStore;
|
|
71
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
72
|
+
// Initialize BTSP adapter
|
|
73
|
+
this.btspAdapter = new BTSPAdapter_js_1.BTSPAdapter(this.config.btsp);
|
|
74
|
+
// Initialize base learning engine
|
|
75
|
+
this.baseLearningEngine = new LearningEngine_js_1.LearningEngine(agentId, memoryStore, this.config.learning);
|
|
76
|
+
// Initialize metrics
|
|
77
|
+
this.metrics = {
|
|
78
|
+
totalExperiences: 0,
|
|
79
|
+
btspLearningCount: 0,
|
|
80
|
+
qLearningCount: 0,
|
|
81
|
+
consolidationCount: 0,
|
|
82
|
+
avgBTSPRecallConfidence: 0,
|
|
83
|
+
plateauDetectionCount: 0,
|
|
84
|
+
btspCapacityUtilization: 0,
|
|
85
|
+
};
|
|
86
|
+
this.logger.info(`BTSPLearningEngine created for agent ${agentId}`, {
|
|
87
|
+
config: this.config,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Initialize both BTSP adapter and base learning engine
|
|
92
|
+
*/
|
|
93
|
+
async initialize() {
|
|
94
|
+
if (this.initialized) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
// Initialize BTSP adapter (loads WASM)
|
|
99
|
+
await this.btspAdapter.initialize();
|
|
100
|
+
// Initialize base learning engine
|
|
101
|
+
await this.baseLearningEngine.initialize();
|
|
102
|
+
this.initialized = true;
|
|
103
|
+
this.logger.info(`BTSPLearningEngine initialized for agent ${this.agentId}`);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
this.logger.error('Failed to initialize BTSPLearningEngine:', error);
|
|
107
|
+
throw new Error(`BTSPLearningEngine initialization failed: ${error}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Ensure engine is initialized
|
|
112
|
+
*/
|
|
113
|
+
ensureInitialized() {
|
|
114
|
+
if (!this.initialized) {
|
|
115
|
+
throw new Error('BTSPLearningEngine not initialized. Call initialize() first.');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Learn from task execution with hybrid BTSP/Q-learning
|
|
120
|
+
*
|
|
121
|
+
* Uses BTSP one-shot learning for failures (reward < threshold) and
|
|
122
|
+
* Q-learning for positive experiences. This enables learning from
|
|
123
|
+
* single failures instead of requiring many examples.
|
|
124
|
+
*
|
|
125
|
+
* @param task - Task that was executed
|
|
126
|
+
* @param result - Execution result
|
|
127
|
+
* @param feedback - Optional user/system feedback
|
|
128
|
+
* @returns Learning outcome with BTSP-specific metrics
|
|
129
|
+
*/
|
|
130
|
+
async learnFromExecution(task, result, feedback) {
|
|
131
|
+
this.ensureInitialized();
|
|
132
|
+
const startTime = Date.now();
|
|
133
|
+
try {
|
|
134
|
+
// First, let base engine learn (this handles Q-learning)
|
|
135
|
+
const baseOutcome = await this.baseLearningEngine.learnFromExecution(task, result, feedback);
|
|
136
|
+
// Extract reward from the experience (we need to calculate it)
|
|
137
|
+
const taskObj = (typeof task === 'object' && task !== null ? task : {});
|
|
138
|
+
const resultObj = (typeof result === 'object' && result !== null ? result : {});
|
|
139
|
+
const reward = this.calculateReward(resultObj, feedback);
|
|
140
|
+
let usedBTSP = false;
|
|
141
|
+
let plateauResult;
|
|
142
|
+
let btspConfidence;
|
|
143
|
+
let consolidationTriggered = false;
|
|
144
|
+
// Check if this should trigger BTSP one-shot learning
|
|
145
|
+
if (reward < this.config.oneShotThreshold) {
|
|
146
|
+
// Failure case - use BTSP one-shot learning
|
|
147
|
+
const pattern = this.taskToPattern(taskObj, resultObj);
|
|
148
|
+
plateauResult = this.btspAdapter.detectPlateau(0, Math.abs(reward));
|
|
149
|
+
if (plateauResult.detected) {
|
|
150
|
+
// Significant learning signal - perform one-shot association
|
|
151
|
+
this.btspAdapter.learnFromFailure(pattern, reward);
|
|
152
|
+
usedBTSP = true;
|
|
153
|
+
this.metrics.btspLearningCount++;
|
|
154
|
+
this.metrics.plateauDetectionCount++;
|
|
155
|
+
this.logger.debug('BTSP one-shot learning from failure', {
|
|
156
|
+
agentId: this.agentId,
|
|
157
|
+
reward,
|
|
158
|
+
plateauMagnitude: plateauResult.magnitude,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
// Success case - rely on Q-learning (already done by base engine)
|
|
164
|
+
this.metrics.qLearningCount++;
|
|
165
|
+
}
|
|
166
|
+
// Update metrics
|
|
167
|
+
this.metrics.totalExperiences++;
|
|
168
|
+
this.experiencesSinceConsolidation++;
|
|
169
|
+
this.metrics.btspCapacityUtilization = this.btspAdapter.getCapacity().utilization;
|
|
170
|
+
// Auto-consolidate if enabled and interval reached
|
|
171
|
+
if (this.config.autoConsolidate &&
|
|
172
|
+
this.experiencesSinceConsolidation >= this.config.consolidationInterval) {
|
|
173
|
+
await this.consolidate();
|
|
174
|
+
consolidationTriggered = true;
|
|
175
|
+
}
|
|
176
|
+
// Create enhanced outcome
|
|
177
|
+
const outcome = {
|
|
178
|
+
...baseOutcome,
|
|
179
|
+
usedBTSP,
|
|
180
|
+
plateauResult,
|
|
181
|
+
btspConfidence,
|
|
182
|
+
consolidationTriggered,
|
|
183
|
+
};
|
|
184
|
+
this.logger.debug('Learning completed', {
|
|
185
|
+
agentId: this.agentId,
|
|
186
|
+
usedBTSP,
|
|
187
|
+
reward,
|
|
188
|
+
durationMs: Date.now() - startTime,
|
|
189
|
+
});
|
|
190
|
+
return outcome;
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
this.logger.error('Learning from execution failed:', error);
|
|
194
|
+
// Return a minimal outcome on error
|
|
195
|
+
return {
|
|
196
|
+
improved: false,
|
|
197
|
+
previousPerformance: 0,
|
|
198
|
+
newPerformance: 0,
|
|
199
|
+
improvementRate: 0,
|
|
200
|
+
confidence: 0,
|
|
201
|
+
patterns: [],
|
|
202
|
+
timestamp: new Date(),
|
|
203
|
+
usedBTSP: false,
|
|
204
|
+
consolidationTriggered: false,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Recommend strategy with BTSP association check first
|
|
210
|
+
*
|
|
211
|
+
* Checks BTSP associations for the state before falling back to
|
|
212
|
+
* Q-learning. This provides faster recommendations from one-shot
|
|
213
|
+
* learned patterns.
|
|
214
|
+
*
|
|
215
|
+
* @param state - Current task state
|
|
216
|
+
* @returns Strategy recommendation with source information
|
|
217
|
+
*/
|
|
218
|
+
async recommendWithBTSP(state) {
|
|
219
|
+
this.ensureInitialized();
|
|
220
|
+
try {
|
|
221
|
+
// Convert state to pattern for BTSP recall
|
|
222
|
+
const queryPattern = this.stateToPattern(state);
|
|
223
|
+
// Try BTSP recall first
|
|
224
|
+
const btspResult = this.btspAdapter.recallWithConfidence(queryPattern);
|
|
225
|
+
// Track recall confidence
|
|
226
|
+
this.recallConfidences.push(btspResult.confidence);
|
|
227
|
+
if (this.recallConfidences.length > 100) {
|
|
228
|
+
this.recallConfidences.shift();
|
|
229
|
+
}
|
|
230
|
+
this.metrics.avgBTSPRecallConfidence = this.calculateAverageConfidence();
|
|
231
|
+
// Also get Q-learning recommendation
|
|
232
|
+
const qLearningRecommendation = await this.baseLearningEngine.recommendStrategy(state);
|
|
233
|
+
// Determine which source to use
|
|
234
|
+
const hasBTSPAssociations = btspResult.confidence >= this.config.recallConfidenceThreshold;
|
|
235
|
+
if (hasBTSPAssociations && qLearningRecommendation.confidence > 0.5) {
|
|
236
|
+
// Both have recommendations - hybrid approach
|
|
237
|
+
const hybridConfidence = this.config.btspWeight * btspResult.confidence +
|
|
238
|
+
(1 - this.config.btspWeight) * qLearningRecommendation.confidence;
|
|
239
|
+
return {
|
|
240
|
+
...qLearningRecommendation,
|
|
241
|
+
source: 'hybrid',
|
|
242
|
+
confidence: hybridConfidence,
|
|
243
|
+
btspConfidence: btspResult.confidence,
|
|
244
|
+
qLearningConfidence: qLearningRecommendation.confidence,
|
|
245
|
+
hasBTSPAssociations: true,
|
|
246
|
+
reasoning: `Hybrid recommendation (BTSP: ${(btspResult.confidence * 100).toFixed(1)}%, Q-learning: ${(qLearningRecommendation.confidence * 100).toFixed(1)}%)`,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
else if (hasBTSPAssociations) {
|
|
250
|
+
// BTSP has strong association - use it
|
|
251
|
+
const strategy = this.patternToStrategy(btspResult.pattern);
|
|
252
|
+
return {
|
|
253
|
+
strategy: strategy.name,
|
|
254
|
+
confidence: btspResult.confidence,
|
|
255
|
+
expectedImprovement: strategy.expectedImprovement,
|
|
256
|
+
reasoning: `BTSP one-shot learned pattern (${(btspResult.confidence * 100).toFixed(1)}% confidence)`,
|
|
257
|
+
alternatives: qLearningRecommendation.alternatives,
|
|
258
|
+
source: 'btsp',
|
|
259
|
+
btspConfidence: btspResult.confidence,
|
|
260
|
+
qLearningConfidence: qLearningRecommendation.confidence,
|
|
261
|
+
hasBTSPAssociations: true,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
else if (qLearningRecommendation.confidence > 0.5) {
|
|
265
|
+
// Q-learning has recommendation
|
|
266
|
+
return {
|
|
267
|
+
...qLearningRecommendation,
|
|
268
|
+
source: 'q-learning',
|
|
269
|
+
btspConfidence: btspResult.confidence,
|
|
270
|
+
qLearningConfidence: qLearningRecommendation.confidence,
|
|
271
|
+
hasBTSPAssociations: false,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
// No strong recommendation from either - return default
|
|
276
|
+
return {
|
|
277
|
+
strategy: 'default',
|
|
278
|
+
confidence: 0.5,
|
|
279
|
+
expectedImprovement: 0,
|
|
280
|
+
reasoning: 'No learned associations available yet',
|
|
281
|
+
alternatives: [],
|
|
282
|
+
source: 'default',
|
|
283
|
+
btspConfidence: btspResult.confidence,
|
|
284
|
+
qLearningConfidence: qLearningRecommendation.confidence,
|
|
285
|
+
hasBTSPAssociations: false,
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
catch (error) {
|
|
290
|
+
this.logger.error('Recommendation failed:', error);
|
|
291
|
+
return {
|
|
292
|
+
strategy: 'default',
|
|
293
|
+
confidence: 0.5,
|
|
294
|
+
expectedImprovement: 0,
|
|
295
|
+
reasoning: 'Error during recommendation, using default',
|
|
296
|
+
alternatives: [],
|
|
297
|
+
source: 'default',
|
|
298
|
+
hasBTSPAssociations: false,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Get patterns from both BTSP and Q-learning
|
|
304
|
+
*
|
|
305
|
+
* Combines BTSP-learned associations with patterns from the base
|
|
306
|
+
* learning engine for a complete view of learned knowledge.
|
|
307
|
+
*/
|
|
308
|
+
async getPatterns() {
|
|
309
|
+
this.ensureInitialized();
|
|
310
|
+
try {
|
|
311
|
+
// Get patterns from base learning engine
|
|
312
|
+
const basePatterns = await this.baseLearningEngine.getPatterns();
|
|
313
|
+
// Add BTSP capacity info to patterns metadata
|
|
314
|
+
const btspCapacity = this.btspAdapter.getCapacity();
|
|
315
|
+
// Annotate patterns with source info
|
|
316
|
+
const annotatedPatterns = basePatterns.map(pattern => ({
|
|
317
|
+
...pattern,
|
|
318
|
+
// Mark patterns that might also have BTSP associations
|
|
319
|
+
contexts: [...pattern.contexts, `btsp_capacity_${Math.round(btspCapacity.utilization * 100)}%`],
|
|
320
|
+
}));
|
|
321
|
+
return annotatedPatterns;
|
|
322
|
+
}
|
|
323
|
+
catch (error) {
|
|
324
|
+
this.logger.warn('Failed to get patterns:', error);
|
|
325
|
+
return [];
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Perform EWC consolidation to prevent catastrophic forgetting
|
|
330
|
+
*
|
|
331
|
+
* This should be called periodically (automatically if autoConsolidate is enabled)
|
|
332
|
+
* to preserve important synaptic weights.
|
|
333
|
+
*/
|
|
334
|
+
async consolidate() {
|
|
335
|
+
this.ensureInitialized();
|
|
336
|
+
try {
|
|
337
|
+
await this.btspAdapter.consolidate();
|
|
338
|
+
this.metrics.consolidationCount++;
|
|
339
|
+
this.metrics.lastConsolidation = new Date();
|
|
340
|
+
this.experiencesSinceConsolidation = 0;
|
|
341
|
+
this.logger.info('BTSP consolidation completed', {
|
|
342
|
+
agentId: this.agentId,
|
|
343
|
+
consolidationCount: this.metrics.consolidationCount,
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
catch (error) {
|
|
347
|
+
this.logger.error('Consolidation failed:', error);
|
|
348
|
+
throw error;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Check if BTSP learning has reached a plateau (stable state)
|
|
353
|
+
*
|
|
354
|
+
* Returns true if recent learning signals have stabilized, indicating
|
|
355
|
+
* the model has converged on important associations.
|
|
356
|
+
*/
|
|
357
|
+
isPlateauReached() {
|
|
358
|
+
this.ensureInitialized();
|
|
359
|
+
// Check recent plateau detections - if most recent experiences
|
|
360
|
+
// didn't trigger plateaus, we're stable
|
|
361
|
+
const recentStability = this.metrics.totalExperiences > 10 &&
|
|
362
|
+
this.metrics.plateauDetectionCount / this.metrics.totalExperiences < 0.1;
|
|
363
|
+
// Also check capacity utilization - high utilization suggests saturation
|
|
364
|
+
const capacityStable = this.btspAdapter.getCapacity().utilization > 0.5;
|
|
365
|
+
return recentStability || capacityStable;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Get comprehensive metrics for the BTSP learning engine
|
|
369
|
+
*/
|
|
370
|
+
getMetrics() {
|
|
371
|
+
// Update real-time metrics
|
|
372
|
+
this.metrics.btspCapacityUtilization = this.btspAdapter.isInitialized()
|
|
373
|
+
? this.btspAdapter.getCapacity().utilization
|
|
374
|
+
: 0;
|
|
375
|
+
this.metrics.avgBTSPRecallConfidence = this.calculateAverageConfidence();
|
|
376
|
+
return { ...this.metrics };
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Get BTSP adapter statistics
|
|
380
|
+
*/
|
|
381
|
+
getBTSPStats() {
|
|
382
|
+
if (!this.btspAdapter.isInitialized()) {
|
|
383
|
+
return null;
|
|
384
|
+
}
|
|
385
|
+
return this.btspAdapter.getStats();
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Get BTSP adapter for direct access (for serialization/persistence)
|
|
389
|
+
*/
|
|
390
|
+
getBTSPAdapter() {
|
|
391
|
+
return this.btspAdapter;
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Get base learning engine statistics
|
|
395
|
+
*/
|
|
396
|
+
getBaseLearningStats() {
|
|
397
|
+
return {
|
|
398
|
+
algorithm: this.baseLearningEngine.getAlgorithm(),
|
|
399
|
+
algorithmStats: this.baseLearningEngine.getAlgorithmStats(),
|
|
400
|
+
totalExperiences: this.baseLearningEngine.getTotalExperiences(),
|
|
401
|
+
explorationRate: this.baseLearningEngine.getExplorationRate(),
|
|
402
|
+
qLearningStats: this.baseLearningEngine.getQLearningStats(),
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Check if the engine is initialized
|
|
407
|
+
*/
|
|
408
|
+
isInitialized() {
|
|
409
|
+
return this.initialized;
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Reset BTSP adapter (clears one-shot associations)
|
|
413
|
+
*/
|
|
414
|
+
resetBTSP() {
|
|
415
|
+
this.ensureInitialized();
|
|
416
|
+
this.btspAdapter.reset();
|
|
417
|
+
this.metrics.btspLearningCount = 0;
|
|
418
|
+
this.metrics.plateauDetectionCount = 0;
|
|
419
|
+
this.metrics.btspCapacityUtilization = 0;
|
|
420
|
+
this.recallConfidences = [];
|
|
421
|
+
this.logger.info(`BTSP reset for agent ${this.agentId}`);
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Dispose of resources
|
|
425
|
+
*/
|
|
426
|
+
dispose() {
|
|
427
|
+
if (this.btspAdapter.isInitialized()) {
|
|
428
|
+
this.btspAdapter.dispose();
|
|
429
|
+
}
|
|
430
|
+
this.baseLearningEngine.dispose();
|
|
431
|
+
this.initialized = false;
|
|
432
|
+
this.logger.debug(`BTSPLearningEngine disposed for agent ${this.agentId}`);
|
|
433
|
+
}
|
|
434
|
+
// ============================================================================
|
|
435
|
+
// Private Helper Methods
|
|
436
|
+
// ============================================================================
|
|
437
|
+
/**
|
|
438
|
+
* Calculate reward from execution result and feedback
|
|
439
|
+
*/
|
|
440
|
+
calculateReward(result, feedback) {
|
|
441
|
+
let reward = 0;
|
|
442
|
+
// Success/failure (primary component)
|
|
443
|
+
reward += result.success ? 1.0 : -1.0;
|
|
444
|
+
// Execution time (faster is better)
|
|
445
|
+
const executionTime = result.executionTime;
|
|
446
|
+
if (executionTime) {
|
|
447
|
+
const timeFactor = Math.max(0, 1 - executionTime / 30000); // 30 sec baseline
|
|
448
|
+
reward += timeFactor * 0.5;
|
|
449
|
+
}
|
|
450
|
+
// Error rate penalty
|
|
451
|
+
const errors = result.errors;
|
|
452
|
+
if (errors) {
|
|
453
|
+
reward -= errors.length * 0.1;
|
|
454
|
+
}
|
|
455
|
+
// User feedback
|
|
456
|
+
if (feedback) {
|
|
457
|
+
reward += (feedback.rating - 0.5) * 2; // -1 to +1
|
|
458
|
+
reward -= feedback.issues.length * 0.2;
|
|
459
|
+
}
|
|
460
|
+
return Math.max(-2, Math.min(2, reward)); // clamp to [-2, 2]
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Convert task and result to a fixed-size pattern for BTSP
|
|
464
|
+
*/
|
|
465
|
+
taskToPattern(task, result) {
|
|
466
|
+
const inputSize = this.config.btsp?.inputSize ?? 256;
|
|
467
|
+
const pattern = new Float32Array(inputSize);
|
|
468
|
+
// Encode task features
|
|
469
|
+
const requirements = task.requirements;
|
|
470
|
+
const capabilities = requirements?.capabilities || [];
|
|
471
|
+
pattern[0] = task.complexity || 0.5;
|
|
472
|
+
pattern[1] = Math.min(1.0, capabilities.length / 10);
|
|
473
|
+
pattern[2] = (task.previousAttempts || 0) / 5;
|
|
474
|
+
pattern[3] = task.timeout ? Math.min(1.0, task.timeout / 300000) : 1.0;
|
|
475
|
+
// Encode result features
|
|
476
|
+
pattern[4] = result.success ? 1.0 : 0.0;
|
|
477
|
+
pattern[5] = Math.min(1.0, (result.executionTime || 0) / 30000);
|
|
478
|
+
pattern[6] = Math.min(1.0, (result.errors?.length || 0) / 5);
|
|
479
|
+
// Hash capabilities into pattern indices
|
|
480
|
+
for (const cap of capabilities) {
|
|
481
|
+
const hash = this.simpleHash(cap) % (inputSize - 10);
|
|
482
|
+
pattern[10 + hash] = 1.0;
|
|
483
|
+
}
|
|
484
|
+
// Hash strategy into pattern
|
|
485
|
+
const strategy = result.strategy;
|
|
486
|
+
if (strategy) {
|
|
487
|
+
const hash = this.simpleHash(strategy) % (inputSize - 10);
|
|
488
|
+
pattern[10 + hash] = Math.min(1.0, pattern[10 + hash] + 0.5);
|
|
489
|
+
}
|
|
490
|
+
return pattern;
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Convert task state to pattern for BTSP recall
|
|
494
|
+
*/
|
|
495
|
+
stateToPattern(state) {
|
|
496
|
+
const inputSize = this.config.btsp?.inputSize ?? 256;
|
|
497
|
+
const pattern = new Float32Array(inputSize);
|
|
498
|
+
// Encode state features
|
|
499
|
+
pattern[0] = state.taskComplexity;
|
|
500
|
+
pattern[1] = Math.min(1.0, state.requiredCapabilities.length / 10);
|
|
501
|
+
pattern[2] = state.previousAttempts / 5;
|
|
502
|
+
pattern[3] = state.availableResources;
|
|
503
|
+
pattern[4] = state.timeConstraint ? Math.min(1.0, state.timeConstraint / 300000) : 1.0;
|
|
504
|
+
// Hash capabilities into pattern
|
|
505
|
+
for (const cap of state.requiredCapabilities) {
|
|
506
|
+
const hash = this.simpleHash(cap) % (inputSize - 10);
|
|
507
|
+
pattern[10 + hash] = 1.0;
|
|
508
|
+
}
|
|
509
|
+
// Hash context features
|
|
510
|
+
for (const [key, value] of Object.entries(state.contextFeatures)) {
|
|
511
|
+
const hash = this.simpleHash(key) % (inputSize - 10);
|
|
512
|
+
const numValue = typeof value === 'number' ? value : (value ? 1.0 : 0.0);
|
|
513
|
+
pattern[10 + hash] = Math.min(1.0, pattern[10 + hash] + numValue * 0.3);
|
|
514
|
+
}
|
|
515
|
+
return pattern;
|
|
516
|
+
}
|
|
517
|
+
/**
|
|
518
|
+
* Convert BTSP pattern to strategy recommendation
|
|
519
|
+
*/
|
|
520
|
+
patternToStrategy(pattern) {
|
|
521
|
+
// Find the most active region in the pattern to infer strategy
|
|
522
|
+
let maxActivation = 0;
|
|
523
|
+
let maxIndex = 0;
|
|
524
|
+
for (let i = 10; i < pattern.length; i++) {
|
|
525
|
+
if (pattern[i] > maxActivation) {
|
|
526
|
+
maxActivation = pattern[i];
|
|
527
|
+
maxIndex = i;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
// Map pattern features to strategy names
|
|
531
|
+
const strategies = [
|
|
532
|
+
'parallel-execution',
|
|
533
|
+
'sequential-execution',
|
|
534
|
+
'retry-with-backoff',
|
|
535
|
+
'resource-scaling',
|
|
536
|
+
'timeout-adjustment',
|
|
537
|
+
'capability-routing',
|
|
538
|
+
];
|
|
539
|
+
const strategyIndex = maxIndex % strategies.length;
|
|
540
|
+
const expectedImprovement = maxActivation * 20; // Scale to percentage
|
|
541
|
+
return {
|
|
542
|
+
name: strategies[strategyIndex],
|
|
543
|
+
expectedImprovement,
|
|
544
|
+
};
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Calculate average recall confidence
|
|
548
|
+
*/
|
|
549
|
+
calculateAverageConfidence() {
|
|
550
|
+
if (this.recallConfidences.length === 0) {
|
|
551
|
+
return 0;
|
|
552
|
+
}
|
|
553
|
+
const sum = this.recallConfidences.reduce((a, b) => a + b, 0);
|
|
554
|
+
return sum / this.recallConfidences.length;
|
|
555
|
+
}
|
|
556
|
+
/**
|
|
557
|
+
* Simple hash function for string to number
|
|
558
|
+
*/
|
|
559
|
+
simpleHash(str) {
|
|
560
|
+
let hash = 0;
|
|
561
|
+
for (let i = 0; i < str.length; i++) {
|
|
562
|
+
const char = str.charCodeAt(i);
|
|
563
|
+
hash = ((hash << 5) - hash) + char;
|
|
564
|
+
hash = hash & hash; // Convert to 32-bit integer
|
|
565
|
+
}
|
|
566
|
+
return Math.abs(hash);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
exports.BTSPLearningEngine = BTSPLearningEngine;
|
|
570
|
+
/**
|
|
571
|
+
* Factory function to create a pre-configured BTSPLearningEngine
|
|
572
|
+
*/
|
|
573
|
+
function createBTSPLearningEngine(agentId, memoryStore, config = {}) {
|
|
574
|
+
return new BTSPLearningEngine(agentId, memoryStore, {
|
|
575
|
+
oneShotThreshold: 0,
|
|
576
|
+
recallConfidenceThreshold: 0.6,
|
|
577
|
+
consolidationInterval: 100,
|
|
578
|
+
autoConsolidate: true,
|
|
579
|
+
btspWeight: 0.7,
|
|
580
|
+
...config,
|
|
581
|
+
});
|
|
582
|
+
}
|
|
583
|
+
/**
|
|
584
|
+
* Default export
|
|
585
|
+
*/
|
|
586
|
+
exports.default = BTSPLearningEngine;
|
|
587
|
+
//# sourceMappingURL=BTSPLearningEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BTSPLearningEngine.js","sourceRoot":"","sources":["../../../src/nervous-system/integration/BTSPLearningEngine.ts"],"names":[],"mappings":"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"}
|