agentic-qe 2.8.0 → 2.8.2

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.
Files changed (226) hide show
  1. package/CHANGELOG.md +148 -0
  2. package/README.md +1 -1
  3. package/dist/agents/BaseAgent.d.ts +329 -0
  4. package/dist/agents/BaseAgent.d.ts.map +1 -1
  5. package/dist/agents/BaseAgent.js +657 -0
  6. package/dist/agents/BaseAgent.js.map +1 -1
  7. package/dist/cli/commands/supabase/index.d.ts +20 -0
  8. package/dist/cli/commands/supabase/index.d.ts.map +1 -0
  9. package/dist/cli/commands/supabase/index.js +632 -0
  10. package/dist/cli/commands/supabase/index.js.map +1 -0
  11. package/dist/cli/index.js +3 -0
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/code-intelligence/embeddings/EmbeddingCacheFactory.d.ts +135 -0
  14. package/dist/code-intelligence/embeddings/EmbeddingCacheFactory.d.ts.map +1 -0
  15. package/dist/code-intelligence/embeddings/EmbeddingCacheFactory.js +301 -0
  16. package/dist/code-intelligence/embeddings/EmbeddingCacheFactory.js.map +1 -0
  17. package/dist/code-intelligence/embeddings/NomicEmbedder.d.ts +78 -6
  18. package/dist/code-intelligence/embeddings/NomicEmbedder.d.ts.map +1 -1
  19. package/dist/code-intelligence/embeddings/NomicEmbedder.js +162 -21
  20. package/dist/code-intelligence/embeddings/NomicEmbedder.js.map +1 -1
  21. package/dist/code-intelligence/embeddings/backends/MemoryBackend.d.ts +59 -0
  22. package/dist/code-intelligence/embeddings/backends/MemoryBackend.d.ts.map +1 -0
  23. package/dist/code-intelligence/embeddings/backends/MemoryBackend.js +173 -0
  24. package/dist/code-intelligence/embeddings/backends/MemoryBackend.js.map +1 -0
  25. package/dist/code-intelligence/embeddings/backends/RedisBackend.d.ts +50 -0
  26. package/dist/code-intelligence/embeddings/backends/RedisBackend.d.ts.map +1 -0
  27. package/dist/code-intelligence/embeddings/backends/RedisBackend.js +279 -0
  28. package/dist/code-intelligence/embeddings/backends/RedisBackend.js.map +1 -0
  29. package/dist/code-intelligence/embeddings/backends/SQLiteBackend.d.ts +64 -0
  30. package/dist/code-intelligence/embeddings/backends/SQLiteBackend.d.ts.map +1 -0
  31. package/dist/code-intelligence/embeddings/backends/SQLiteBackend.js +314 -0
  32. package/dist/code-intelligence/embeddings/backends/SQLiteBackend.js.map +1 -0
  33. package/dist/code-intelligence/embeddings/backends/index.d.ts +16 -0
  34. package/dist/code-intelligence/embeddings/backends/index.d.ts.map +1 -0
  35. package/dist/code-intelligence/embeddings/backends/index.js +28 -0
  36. package/dist/code-intelligence/embeddings/backends/index.js.map +1 -0
  37. package/dist/code-intelligence/embeddings/backends/types.d.ts +177 -0
  38. package/dist/code-intelligence/embeddings/backends/types.d.ts.map +1 -0
  39. package/dist/code-intelligence/embeddings/backends/types.js +30 -0
  40. package/dist/code-intelligence/embeddings/backends/types.js.map +1 -0
  41. package/dist/code-intelligence/embeddings/index.d.ts +7 -0
  42. package/dist/code-intelligence/embeddings/index.d.ts.map +1 -1
  43. package/dist/code-intelligence/embeddings/index.js +16 -1
  44. package/dist/code-intelligence/embeddings/index.js.map +1 -1
  45. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  46. package/dist/infrastructure/index.d.ts +15 -0
  47. package/dist/infrastructure/index.d.ts.map +1 -0
  48. package/dist/infrastructure/index.js +44 -0
  49. package/dist/infrastructure/index.js.map +1 -0
  50. package/dist/infrastructure/network/AgentRateLimiter.d.ts +59 -0
  51. package/dist/infrastructure/network/AgentRateLimiter.d.ts.map +1 -0
  52. package/dist/infrastructure/network/AgentRateLimiter.js +186 -0
  53. package/dist/infrastructure/network/AgentRateLimiter.js.map +1 -0
  54. package/dist/infrastructure/network/AuditLogger.d.ts +102 -0
  55. package/dist/infrastructure/network/AuditLogger.d.ts.map +1 -0
  56. package/dist/infrastructure/network/AuditLogger.js +284 -0
  57. package/dist/infrastructure/network/AuditLogger.js.map +1 -0
  58. package/dist/infrastructure/network/DomainWhitelist.d.ts +111 -0
  59. package/dist/infrastructure/network/DomainWhitelist.d.ts.map +1 -0
  60. package/dist/infrastructure/network/DomainWhitelist.js +216 -0
  61. package/dist/infrastructure/network/DomainWhitelist.js.map +1 -0
  62. package/dist/infrastructure/network/NetworkPolicyManager.d.ts +97 -0
  63. package/dist/infrastructure/network/NetworkPolicyManager.d.ts.map +1 -0
  64. package/dist/infrastructure/network/NetworkPolicyManager.js +309 -0
  65. package/dist/infrastructure/network/NetworkPolicyManager.js.map +1 -0
  66. package/dist/infrastructure/network/index.d.ts +19 -0
  67. package/dist/infrastructure/network/index.d.ts.map +1 -0
  68. package/dist/infrastructure/network/index.js +46 -0
  69. package/dist/infrastructure/network/index.js.map +1 -0
  70. package/dist/infrastructure/network/policies/default-policies.d.ts +78 -0
  71. package/dist/infrastructure/network/policies/default-policies.d.ts.map +1 -0
  72. package/dist/infrastructure/network/policies/default-policies.js +312 -0
  73. package/dist/infrastructure/network/policies/default-policies.js.map +1 -0
  74. package/dist/infrastructure/network/types.d.ts +214 -0
  75. package/dist/infrastructure/network/types.d.ts.map +1 -0
  76. package/dist/infrastructure/network/types.js +25 -0
  77. package/dist/infrastructure/network/types.js.map +1 -0
  78. package/dist/infrastructure/sandbox/ResourceMonitor.d.ts +124 -0
  79. package/dist/infrastructure/sandbox/ResourceMonitor.d.ts.map +1 -0
  80. package/dist/infrastructure/sandbox/ResourceMonitor.js +305 -0
  81. package/dist/infrastructure/sandbox/ResourceMonitor.js.map +1 -0
  82. package/dist/infrastructure/sandbox/SandboxManager.d.ts +122 -0
  83. package/dist/infrastructure/sandbox/SandboxManager.d.ts.map +1 -0
  84. package/dist/infrastructure/sandbox/SandboxManager.js +527 -0
  85. package/dist/infrastructure/sandbox/SandboxManager.js.map +1 -0
  86. package/dist/infrastructure/sandbox/index.d.ts +18 -0
  87. package/dist/infrastructure/sandbox/index.d.ts.map +1 -0
  88. package/dist/infrastructure/sandbox/index.js +38 -0
  89. package/dist/infrastructure/sandbox/index.js.map +1 -0
  90. package/dist/infrastructure/sandbox/profiles/agent-profiles.d.ts +53 -0
  91. package/dist/infrastructure/sandbox/profiles/agent-profiles.d.ts.map +1 -0
  92. package/dist/infrastructure/sandbox/profiles/agent-profiles.js +433 -0
  93. package/dist/infrastructure/sandbox/profiles/agent-profiles.js.map +1 -0
  94. package/dist/infrastructure/sandbox/types.d.ts +227 -0
  95. package/dist/infrastructure/sandbox/types.d.ts.map +1 -0
  96. package/dist/infrastructure/sandbox/types.js +63 -0
  97. package/dist/infrastructure/sandbox/types.js.map +1 -0
  98. package/dist/mcp/handlers/NewDomainToolsHandler.d.ts +8 -8
  99. package/dist/mcp/handlers/NewDomainToolsHandler.d.ts.map +1 -1
  100. package/dist/mcp/handlers/NewDomainToolsHandler.js.map +1 -1
  101. package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts +54 -0
  102. package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts.map +1 -0
  103. package/dist/mcp/handlers/ruvector/RuVectorHandler.js +325 -0
  104. package/dist/mcp/handlers/ruvector/RuVectorHandler.js.map +1 -0
  105. package/dist/mcp/handlers/ruvector/index.d.ts +5 -0
  106. package/dist/mcp/handlers/ruvector/index.d.ts.map +1 -0
  107. package/dist/mcp/handlers/ruvector/index.js +9 -0
  108. package/dist/mcp/handlers/ruvector/index.js.map +1 -0
  109. package/dist/mcp/server-instructions.d.ts +1 -1
  110. package/dist/mcp/server-instructions.js +1 -1
  111. package/dist/mcp/server.d.ts.map +1 -1
  112. package/dist/mcp/server.js +100 -22
  113. package/dist/mcp/server.js.map +1 -1
  114. package/dist/nervous-system/adapters/BTSPAdapter.d.ts +342 -0
  115. package/dist/nervous-system/adapters/BTSPAdapter.d.ts.map +1 -0
  116. package/dist/nervous-system/adapters/BTSPAdapter.js +494 -0
  117. package/dist/nervous-system/adapters/BTSPAdapter.js.map +1 -0
  118. package/dist/nervous-system/adapters/CircadianController.d.ts +560 -0
  119. package/dist/nervous-system/adapters/CircadianController.d.ts.map +1 -0
  120. package/dist/nervous-system/adapters/CircadianController.js +882 -0
  121. package/dist/nervous-system/adapters/CircadianController.js.map +1 -0
  122. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts +337 -0
  123. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts.map +1 -0
  124. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js +532 -0
  125. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js.map +1 -0
  126. package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts +444 -0
  127. package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts.map +1 -0
  128. package/dist/nervous-system/adapters/HdcMemoryAdapter.js +715 -0
  129. package/dist/nervous-system/adapters/HdcMemoryAdapter.js.map +1 -0
  130. package/dist/nervous-system/adapters/ReflexLayer.d.ts +231 -0
  131. package/dist/nervous-system/adapters/ReflexLayer.d.ts.map +1 -0
  132. package/dist/nervous-system/adapters/ReflexLayer.js +309 -0
  133. package/dist/nervous-system/adapters/ReflexLayer.js.map +1 -0
  134. package/dist/nervous-system/index.d.ts +25 -0
  135. package/dist/nervous-system/index.d.ts.map +1 -0
  136. package/dist/nervous-system/index.js +80 -0
  137. package/dist/nervous-system/index.js.map +1 -0
  138. package/dist/nervous-system/integration/BTSPLearningEngine.d.ts +266 -0
  139. package/dist/nervous-system/integration/BTSPLearningEngine.d.ts.map +1 -0
  140. package/dist/nervous-system/integration/BTSPLearningEngine.js +587 -0
  141. package/dist/nervous-system/integration/BTSPLearningEngine.js.map +1 -0
  142. package/dist/nervous-system/integration/CircadianAgent.d.ts +389 -0
  143. package/dist/nervous-system/integration/CircadianAgent.d.ts.map +1 -0
  144. package/dist/nervous-system/integration/CircadianAgent.js +696 -0
  145. package/dist/nervous-system/integration/CircadianAgent.js.map +1 -0
  146. package/dist/nervous-system/integration/HybridPatternStore.d.ts +244 -0
  147. package/dist/nervous-system/integration/HybridPatternStore.d.ts.map +1 -0
  148. package/dist/nervous-system/integration/HybridPatternStore.js +622 -0
  149. package/dist/nervous-system/integration/HybridPatternStore.js.map +1 -0
  150. package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts +459 -0
  151. package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts.map +1 -0
  152. package/dist/nervous-system/integration/NervousSystemEnhancement.js +921 -0
  153. package/dist/nervous-system/integration/NervousSystemEnhancement.js.map +1 -0
  154. package/dist/nervous-system/integration/WorkspaceAgent.d.ts +398 -0
  155. package/dist/nervous-system/integration/WorkspaceAgent.d.ts.map +1 -0
  156. package/dist/nervous-system/integration/WorkspaceAgent.js +722 -0
  157. package/dist/nervous-system/integration/WorkspaceAgent.js.map +1 -0
  158. package/dist/nervous-system/integration/index.d.ts +22 -0
  159. package/dist/nervous-system/integration/index.d.ts.map +1 -0
  160. package/dist/nervous-system/integration/index.js +44 -0
  161. package/dist/nervous-system/integration/index.js.map +1 -0
  162. package/dist/nervous-system/persistence/BTSPSerializer.d.ts +96 -0
  163. package/dist/nervous-system/persistence/BTSPSerializer.d.ts.map +1 -0
  164. package/dist/nervous-system/persistence/BTSPSerializer.js +223 -0
  165. package/dist/nervous-system/persistence/BTSPSerializer.js.map +1 -0
  166. package/dist/nervous-system/persistence/CircadianSerializer.d.ts +90 -0
  167. package/dist/nervous-system/persistence/CircadianSerializer.d.ts.map +1 -0
  168. package/dist/nervous-system/persistence/CircadianSerializer.js +239 -0
  169. package/dist/nervous-system/persistence/CircadianSerializer.js.map +1 -0
  170. package/dist/nervous-system/persistence/HdcSerializer.d.ts +100 -0
  171. package/dist/nervous-system/persistence/HdcSerializer.d.ts.map +1 -0
  172. package/dist/nervous-system/persistence/HdcSerializer.js +259 -0
  173. package/dist/nervous-system/persistence/HdcSerializer.js.map +1 -0
  174. package/dist/nervous-system/persistence/INervousSystemStore.d.ts +208 -0
  175. package/dist/nervous-system/persistence/INervousSystemStore.d.ts.map +1 -0
  176. package/dist/nervous-system/persistence/INervousSystemStore.js +11 -0
  177. package/dist/nervous-system/persistence/INervousSystemStore.js.map +1 -0
  178. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts +187 -0
  179. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts.map +1 -0
  180. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js +411 -0
  181. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js.map +1 -0
  182. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts +98 -0
  183. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts.map +1 -0
  184. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js +510 -0
  185. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js.map +1 -0
  186. package/dist/nervous-system/persistence/index.d.ts +22 -0
  187. package/dist/nervous-system/persistence/index.d.ts.map +1 -0
  188. package/dist/nervous-system/persistence/index.js +45 -0
  189. package/dist/nervous-system/persistence/index.js.map +1 -0
  190. package/dist/nervous-system/wasm-loader.d.ts +52 -0
  191. package/dist/nervous-system/wasm-loader.d.ts.map +1 -0
  192. package/dist/nervous-system/wasm-loader.js +188 -0
  193. package/dist/nervous-system/wasm-loader.js.map +1 -0
  194. package/dist/persistence/HybridPersistenceProvider.d.ts +184 -0
  195. package/dist/persistence/HybridPersistenceProvider.d.ts.map +1 -0
  196. package/dist/persistence/HybridPersistenceProvider.js +1086 -0
  197. package/dist/persistence/HybridPersistenceProvider.js.map +1 -0
  198. package/dist/persistence/IPersistenceProvider.d.ts +657 -0
  199. package/dist/persistence/IPersistenceProvider.d.ts.map +1 -0
  200. package/dist/persistence/IPersistenceProvider.js +11 -0
  201. package/dist/persistence/IPersistenceProvider.js.map +1 -0
  202. package/dist/persistence/SupabaseConfig.d.ts +176 -0
  203. package/dist/persistence/SupabaseConfig.d.ts.map +1 -0
  204. package/dist/persistence/SupabaseConfig.js +277 -0
  205. package/dist/persistence/SupabaseConfig.js.map +1 -0
  206. package/dist/persistence/SupabasePersistenceProvider.d.ts +143 -0
  207. package/dist/persistence/SupabasePersistenceProvider.d.ts.map +1 -0
  208. package/dist/persistence/SupabasePersistenceProvider.js +959 -0
  209. package/dist/persistence/SupabasePersistenceProvider.js.map +1 -0
  210. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts +213 -0
  211. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts.map +1 -0
  212. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js +468 -0
  213. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js.map +1 -0
  214. package/dist/persistence/adapters/MemorySyncAdapter.d.ts +115 -0
  215. package/dist/persistence/adapters/MemorySyncAdapter.d.ts.map +1 -0
  216. package/dist/persistence/adapters/MemorySyncAdapter.js +291 -0
  217. package/dist/persistence/adapters/MemorySyncAdapter.js.map +1 -0
  218. package/dist/persistence/adapters/index.d.ts +11 -0
  219. package/dist/persistence/adapters/index.d.ts.map +1 -0
  220. package/dist/persistence/adapters/index.js +20 -0
  221. package/dist/persistence/adapters/index.js.map +1 -0
  222. package/dist/persistence/index.d.ts +14 -0
  223. package/dist/persistence/index.d.ts.map +1 -1
  224. package/dist/persistence/index.js +36 -1
  225. package/dist/persistence/index.js.map +1 -1
  226. package/package.json +7 -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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"}