@sparkleideas/neural 3.5.2-patch.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.
Files changed (122) hide show
  1. package/README.md +260 -0
  2. package/__tests__/README.md +235 -0
  3. package/__tests__/algorithms.test.ts +582 -0
  4. package/__tests__/patterns.test.ts +549 -0
  5. package/__tests__/sona.test.ts +445 -0
  6. package/docs/SONA_INTEGRATION.md +460 -0
  7. package/docs/SONA_QUICKSTART.md +168 -0
  8. package/examples/sona-usage.ts +318 -0
  9. package/package.json +23 -0
  10. package/src/algorithms/a2c.d.ts +86 -0
  11. package/src/algorithms/a2c.d.ts.map +1 -0
  12. package/src/algorithms/a2c.js +361 -0
  13. package/src/algorithms/a2c.js.map +1 -0
  14. package/src/algorithms/a2c.ts +478 -0
  15. package/src/algorithms/curiosity.d.ts +82 -0
  16. package/src/algorithms/curiosity.d.ts.map +1 -0
  17. package/src/algorithms/curiosity.js +392 -0
  18. package/src/algorithms/curiosity.js.map +1 -0
  19. package/src/algorithms/curiosity.ts +509 -0
  20. package/src/algorithms/decision-transformer.d.ts +82 -0
  21. package/src/algorithms/decision-transformer.d.ts.map +1 -0
  22. package/src/algorithms/decision-transformer.js +415 -0
  23. package/src/algorithms/decision-transformer.js.map +1 -0
  24. package/src/algorithms/decision-transformer.ts +521 -0
  25. package/src/algorithms/dqn.d.ts +72 -0
  26. package/src/algorithms/dqn.d.ts.map +1 -0
  27. package/src/algorithms/dqn.js +303 -0
  28. package/src/algorithms/dqn.js.map +1 -0
  29. package/src/algorithms/dqn.ts +382 -0
  30. package/src/algorithms/index.d.ts +32 -0
  31. package/src/algorithms/index.d.ts.map +1 -0
  32. package/src/algorithms/index.js +74 -0
  33. package/src/algorithms/index.js.map +1 -0
  34. package/src/algorithms/index.ts +122 -0
  35. package/src/algorithms/ppo.d.ts +72 -0
  36. package/src/algorithms/ppo.d.ts.map +1 -0
  37. package/src/algorithms/ppo.js +331 -0
  38. package/src/algorithms/ppo.js.map +1 -0
  39. package/src/algorithms/ppo.ts +429 -0
  40. package/src/algorithms/q-learning.d.ts +77 -0
  41. package/src/algorithms/q-learning.d.ts.map +1 -0
  42. package/src/algorithms/q-learning.js +259 -0
  43. package/src/algorithms/q-learning.js.map +1 -0
  44. package/src/algorithms/q-learning.ts +333 -0
  45. package/src/algorithms/sarsa.d.ts +82 -0
  46. package/src/algorithms/sarsa.d.ts.map +1 -0
  47. package/src/algorithms/sarsa.js +297 -0
  48. package/src/algorithms/sarsa.js.map +1 -0
  49. package/src/algorithms/sarsa.ts +383 -0
  50. package/src/algorithms/tmp.json +0 -0
  51. package/src/application/index.ts +11 -0
  52. package/src/application/services/neural-application-service.ts +217 -0
  53. package/src/domain/entities/pattern.ts +169 -0
  54. package/src/domain/index.ts +18 -0
  55. package/src/domain/services/learning-service.ts +256 -0
  56. package/src/index.d.ts +118 -0
  57. package/src/index.d.ts.map +1 -0
  58. package/src/index.js +201 -0
  59. package/src/index.js.map +1 -0
  60. package/src/index.ts +363 -0
  61. package/src/modes/balanced.d.ts +60 -0
  62. package/src/modes/balanced.d.ts.map +1 -0
  63. package/src/modes/balanced.js +234 -0
  64. package/src/modes/balanced.js.map +1 -0
  65. package/src/modes/balanced.ts +299 -0
  66. package/src/modes/base.ts +163 -0
  67. package/src/modes/batch.d.ts +82 -0
  68. package/src/modes/batch.d.ts.map +1 -0
  69. package/src/modes/batch.js +316 -0
  70. package/src/modes/batch.js.map +1 -0
  71. package/src/modes/batch.ts +434 -0
  72. package/src/modes/edge.d.ts +85 -0
  73. package/src/modes/edge.d.ts.map +1 -0
  74. package/src/modes/edge.js +310 -0
  75. package/src/modes/edge.js.map +1 -0
  76. package/src/modes/edge.ts +409 -0
  77. package/src/modes/index.d.ts +55 -0
  78. package/src/modes/index.d.ts.map +1 -0
  79. package/src/modes/index.js +83 -0
  80. package/src/modes/index.js.map +1 -0
  81. package/src/modes/index.ts +16 -0
  82. package/src/modes/real-time.d.ts +58 -0
  83. package/src/modes/real-time.d.ts.map +1 -0
  84. package/src/modes/real-time.js +196 -0
  85. package/src/modes/real-time.js.map +1 -0
  86. package/src/modes/real-time.ts +257 -0
  87. package/src/modes/research.d.ts +79 -0
  88. package/src/modes/research.d.ts.map +1 -0
  89. package/src/modes/research.js +389 -0
  90. package/src/modes/research.js.map +1 -0
  91. package/src/modes/research.ts +486 -0
  92. package/src/modes/tmp.json +0 -0
  93. package/src/pattern-learner.d.ts +117 -0
  94. package/src/pattern-learner.d.ts.map +1 -0
  95. package/src/pattern-learner.js +603 -0
  96. package/src/pattern-learner.js.map +1 -0
  97. package/src/pattern-learner.ts +757 -0
  98. package/src/reasoning-bank.d.ts +259 -0
  99. package/src/reasoning-bank.d.ts.map +1 -0
  100. package/src/reasoning-bank.js +993 -0
  101. package/src/reasoning-bank.js.map +1 -0
  102. package/src/reasoning-bank.ts +1279 -0
  103. package/src/reasoningbank-adapter.ts +697 -0
  104. package/src/sona-integration.d.ts +168 -0
  105. package/src/sona-integration.d.ts.map +1 -0
  106. package/src/sona-integration.js +316 -0
  107. package/src/sona-integration.js.map +1 -0
  108. package/src/sona-integration.ts +432 -0
  109. package/src/sona-manager.d.ts +147 -0
  110. package/src/sona-manager.d.ts.map +1 -0
  111. package/src/sona-manager.js +695 -0
  112. package/src/sona-manager.js.map +1 -0
  113. package/src/sona-manager.ts +835 -0
  114. package/src/tmp.json +0 -0
  115. package/src/types.d.ts +431 -0
  116. package/src/types.d.ts.map +1 -0
  117. package/src/types.js +11 -0
  118. package/src/types.js.map +1 -0
  119. package/src/types.ts +590 -0
  120. package/tmp.json +0 -0
  121. package/tsconfig.json +9 -0
  122. package/vitest.config.ts +19 -0
package/README.md ADDED
@@ -0,0 +1,260 @@
1
+ # @claude-flow/neural
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@claude-flow/neural.svg)](https://www.npmjs.com/package/@claude-flow/neural)
4
+ [![npm downloads](https://img.shields.io/npm/dm/@claude-flow/neural.svg)](https://www.npmjs.com/package/@claude-flow/neural)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue.svg)](https://www.typescriptlang.org/)
7
+ [![AI Learning](https://img.shields.io/badge/AI-Self--Learning-purple.svg)](https://github.com/ruvnet/claude-flow)
8
+
9
+ > Self-Optimizing Neural Architecture (SONA) module for Claude Flow V3 - adaptive learning, trajectory tracking, and pattern-based optimization.
10
+
11
+ ## Features
12
+
13
+ - **SONA Learning** - Self-Optimizing Neural Architecture with <0.05ms adaptation time
14
+ - **5 Learning Modes** - Real-time, Balanced, Research, Edge, and Batch modes
15
+ - **9 RL Algorithms** - PPO, A2C, DQN, Q-Learning, SARSA, Decision Transformer, and more
16
+ - **LoRA Integration** - Low-Rank Adaptation for efficient fine-tuning
17
+ - **EWC++ Memory** - Elastic Weight Consolidation for continual learning without forgetting
18
+ - **Trajectory Tracking** - Record and learn from agent execution paths
19
+ - **Pattern Recognition** - Automatic pattern extraction and reuse
20
+
21
+ ## Installation
22
+
23
+ ```bash
24
+ npm install @claude-flow/neural
25
+ ```
26
+
27
+ ## Quick Start
28
+
29
+ ```typescript
30
+ import { SONAManager, createSONAManager } from '@claude-flow/neural';
31
+
32
+ // Create SONA manager
33
+ const sona = createSONAManager('balanced');
34
+ await sona.initialize();
35
+
36
+ // Begin trajectory tracking
37
+ const trajectoryId = sona.beginTrajectory('code-review-task', 'development');
38
+
39
+ // Record steps
40
+ sona.recordStep(trajectoryId, 'analyze-code', 0.8, stateEmbedding, {
41
+ filesAnalyzed: 5,
42
+ issuesFound: 2
43
+ });
44
+
45
+ sona.recordStep(trajectoryId, 'generate-feedback', 0.9, newStateEmbedding);
46
+
47
+ // Complete trajectory
48
+ const trajectory = sona.completeTrajectory(trajectoryId);
49
+
50
+ // Find similar patterns for guidance
51
+ const patterns = await sona.findSimilarPatterns(contextEmbedding, 3);
52
+ ```
53
+
54
+ ## Learning Modes
55
+
56
+ | Mode | Adaptation | Quality | Memory | Use Case |
57
+ |------|------------|---------|--------|----------|
58
+ | **real-time** | <0.5ms | 70%+ | 25MB | Production, low-latency |
59
+ | **balanced** | <18ms | 75%+ | 50MB | General purpose |
60
+ | **research** | <100ms | 95%+ | 100MB | Deep exploration |
61
+ | **edge** | <1ms | 80%+ | 5MB | Resource-constrained |
62
+ | **batch** | <50ms | 85%+ | 75MB | High-throughput |
63
+
64
+ ```typescript
65
+ // Switch modes dynamically
66
+ await sona.setMode('research');
67
+
68
+ // Get current configuration
69
+ const { mode, config, optimizations } = sona.getConfig();
70
+ ```
71
+
72
+ ## API Reference
73
+
74
+ ### SONA Manager
75
+
76
+ ```typescript
77
+ import { SONAManager } from '@claude-flow/neural';
78
+
79
+ const sona = new SONAManager('balanced');
80
+ await sona.initialize();
81
+
82
+ // Trajectory Management
83
+ const trajectoryId = sona.beginTrajectory(context, domain);
84
+ sona.recordStep(trajectoryId, action, reward, stateEmbedding, metadata);
85
+ const trajectory = sona.completeTrajectory(trajectoryId, finalQuality);
86
+
87
+ // Pattern Matching
88
+ const patterns = await sona.findSimilarPatterns(embedding, k);
89
+ const pattern = sona.storePattern({ name, strategy, embedding, domain });
90
+ sona.updatePatternUsage(patternId, quality);
91
+
92
+ // Learning
93
+ await sona.triggerLearning('manual');
94
+ const output = await sona.applyAdaptations(input, domain);
95
+
96
+ // Statistics
97
+ const stats = sona.getStats();
98
+ ```
99
+
100
+ ### RL Algorithms
101
+
102
+ ```typescript
103
+ import { PPO, A2C, DQN, QLearning, SARSA, DecisionTransformer } from '@claude-flow/neural';
104
+
105
+ // Proximal Policy Optimization
106
+ const ppo = new PPO({
107
+ learningRate: 0.0003,
108
+ epsilon: 0.2,
109
+ valueCoef: 0.5
110
+ });
111
+
112
+ // Advantage Actor-Critic
113
+ const a2c = new A2C({
114
+ learningRate: 0.001,
115
+ gamma: 0.99,
116
+ entropyCoef: 0.01
117
+ });
118
+
119
+ // Deep Q-Network
120
+ const dqn = new DQN({
121
+ learningRate: 0.001,
122
+ gamma: 0.99,
123
+ epsilon: 0.1,
124
+ targetUpdateFreq: 100
125
+ });
126
+
127
+ // Decision Transformer
128
+ const dt = new DecisionTransformer({
129
+ contextLength: 20,
130
+ embeddingDim: 256,
131
+ numHeads: 4
132
+ });
133
+ ```
134
+
135
+ ### LoRA Configuration
136
+
137
+ ```typescript
138
+ // Get LoRA config for current mode
139
+ const loraConfig = sona.getLoRAConfig();
140
+ // {
141
+ // rank: 4,
142
+ // alpha: 8,
143
+ // dropout: 0.05,
144
+ // targetModules: ['q_proj', 'v_proj', 'k_proj', 'o_proj'],
145
+ // microLoRA: false
146
+ // }
147
+
148
+ // Initialize LoRA weights for a domain
149
+ const weights = sona.initializeLoRAWeights('code-generation');
150
+ ```
151
+
152
+ ### EWC++ (Elastic Weight Consolidation)
153
+
154
+ ```typescript
155
+ // Get EWC config
156
+ const ewcConfig = sona.getEWCConfig();
157
+ // {
158
+ // lambda: 2000,
159
+ // decay: 0.9,
160
+ // fisherSamples: 100,
161
+ // minFisher: 1e-8,
162
+ // online: true
163
+ // }
164
+
165
+ // Consolidate after learning a new task
166
+ sona.consolidateEWC();
167
+ ```
168
+
169
+ ### Event System
170
+
171
+ ```typescript
172
+ // Subscribe to neural events
173
+ sona.addEventListener((event) => {
174
+ switch (event.type) {
175
+ case 'trajectory_started':
176
+ console.log(`Started: ${event.trajectoryId}`);
177
+ break;
178
+ case 'trajectory_completed':
179
+ console.log(`Completed with quality: ${event.qualityScore}`);
180
+ break;
181
+ case 'pattern_matched':
182
+ console.log(`Pattern ${event.patternId} matched`);
183
+ break;
184
+ case 'learning_triggered':
185
+ console.log(`Learning: ${event.reason}`);
186
+ break;
187
+ case 'mode_changed':
188
+ console.log(`Mode: ${event.fromMode} -> ${event.toMode}`);
189
+ break;
190
+ }
191
+ });
192
+ ```
193
+
194
+ ## Mode Configurations
195
+
196
+ ```typescript
197
+ // Real-time mode (ultra-fast)
198
+ {
199
+ loraRank: 2,
200
+ learningRate: 0.001,
201
+ batchSize: 32,
202
+ trajectoryCapacity: 1000,
203
+ qualityThreshold: 0.7,
204
+ maxLatencyMs: 0.5
205
+ }
206
+
207
+ // Research mode (high quality)
208
+ {
209
+ loraRank: 16,
210
+ learningRate: 0.002,
211
+ batchSize: 64,
212
+ trajectoryCapacity: 10000,
213
+ qualityThreshold: 0.2,
214
+ maxLatencyMs: 100
215
+ }
216
+ ```
217
+
218
+ ## Performance Targets
219
+
220
+ | Metric | Target | Typical |
221
+ |--------|--------|---------|
222
+ | Adaptation latency | <0.05ms | 0.02ms |
223
+ | Pattern retrieval | <1ms | 0.5ms |
224
+ | Learning step | <10ms | 5ms |
225
+ | Quality improvement | +55% | +40-60% |
226
+ | Memory overhead | <50MB | 25-75MB |
227
+
228
+ ## TypeScript Types
229
+
230
+ ```typescript
231
+ import type {
232
+ SONAMode,
233
+ SONAModeConfig,
234
+ Trajectory,
235
+ TrajectoryStep,
236
+ Pattern,
237
+ PatternMatch,
238
+ NeuralStats,
239
+ NeuralEvent,
240
+ LoRAConfig,
241
+ LoRAWeights,
242
+ EWCConfig,
243
+ RLAlgorithm
244
+ } from '@claude-flow/neural';
245
+ ```
246
+
247
+ ## Dependencies
248
+
249
+ - [@claude-flow/memory](../memory) - Memory integration
250
+ - `@ruvector/sona` - SONA learning engine
251
+
252
+ ## Related Packages
253
+
254
+ - [@claude-flow/memory](../memory) - Vector memory for patterns
255
+ - [@claude-flow/integration](../integration) - agentic-flow integration
256
+ - [@claude-flow/performance](../performance) - Benchmarking
257
+
258
+ ## License
259
+
260
+ MIT
@@ -0,0 +1,235 @@
1
+ # Neural Module Test Suite
2
+
3
+ Comprehensive test coverage for the V3 neural module with **106 tests** across 3 test files.
4
+
5
+ ## Test Files
6
+
7
+ ### 1. `sona.test.ts` (23 tests)
8
+ Tests for SONA Learning Engine integration with `@ruvector/sona`:
9
+
10
+ **Initialization (5 tests)**
11
+ - Balanced mode initialization
12
+ - Real-time mode initialization
13
+ - Research mode initialization
14
+ - Edge mode initialization
15
+ - Batch mode initialization
16
+
17
+ **Learning from Trajectories (5 tests)**
18
+ - Learning from complete trajectory
19
+ - Performance target validation (<0.05ms)
20
+ - Handling empty trajectories
21
+ - Multi-step trajectory learning
22
+ - Learning time tracking
23
+
24
+ **Adaptation (6 tests)**
25
+ - Behavior adaptation based on context
26
+ - Performance target validation (<0.1ms)
27
+ - Finding similar patterns
28
+ - Route inference from patterns
29
+ - Handling no patterns found
30
+ - Adaptation time tracking
31
+
32
+ **Mode Switching (2 tests)**
33
+ - Switching between modes
34
+ - Resetting learning state
35
+
36
+ **Statistics and Monitoring (3 tests)**
37
+ - Engine statistics retrieval
38
+ - Learning time tracking
39
+ - Adaptation time tracking
40
+
41
+ **Engine Control (2 tests)**
42
+ - Enable/disable engine
43
+ - Force learning and background ticking
44
+ - Pattern finding by embedding
45
+
46
+ ---
47
+
48
+ ### 2. `algorithms.test.ts` (44 tests)
49
+ Tests for reinforcement learning algorithms:
50
+
51
+ #### Q-Learning (8 tests)
52
+ - Initialization
53
+ - Q-value updates from trajectory
54
+ - Performance target (<1ms)
55
+ - Exploration rate decay
56
+ - Epsilon-greedy action selection
57
+ - Q-value retrieval
58
+ - Eligibility traces support
59
+ - Q-table pruning
60
+ - Reset functionality
61
+
62
+ #### SARSA (8 tests)
63
+ - Initialization
64
+ - SARSA rule updates
65
+ - Expected SARSA variant
66
+ - Action probability distribution
67
+ - Epsilon-greedy policy
68
+ - Eligibility traces (SARSA-lambda)
69
+ - Short trajectory handling
70
+ - Reset functionality
71
+
72
+ #### DQN (9 tests)
73
+ - Initialization
74
+ - Experience replay buffer
75
+ - DQN update mechanism
76
+ - Performance target (<10ms)
77
+ - Double DQN support
78
+ - Epsilon-greedy action selection
79
+ - Q-value retrieval
80
+ - Target network updates
81
+ - Circular buffer handling
82
+
83
+ #### PPO (7 tests)
84
+ - Initialization
85
+ - Experience collection
86
+ - PPO update with clipping
87
+ - Performance target (<10ms for small batches)
88
+ - GAE advantage computation
89
+ - Policy action sampling
90
+ - Multiple training epochs
91
+ - Buffer clearing after update
92
+
93
+ #### Decision Transformer (12 tests)
94
+ - Initialization
95
+ - Trajectory buffer management
96
+ - Incomplete trajectory handling
97
+ - Training on buffered trajectories
98
+ - Performance target (<10ms per batch)
99
+ - Return-conditioned action generation
100
+ - Causal attention masking
101
+ - Bounded trajectory buffer
102
+ - Varying trajectory lengths
103
+ - Returns-to-go computation
104
+
105
+ ---
106
+
107
+ ### 3. `patterns.test.ts` (39 tests)
108
+ Tests for pattern learning and ReasoningBank:
109
+
110
+ #### Pattern Extraction (9 tests)
111
+ - Initialization
112
+ - Trajectory storage
113
+ - Trajectory retrieval
114
+ - Successful trajectory judgment
115
+ - Failed trajectory judgment
116
+ - Strength identification
117
+ - Weakness identification
118
+ - Improvement suggestion generation
119
+ - Incomplete trajectory error handling
120
+
121
+ #### Memory Distillation (8 tests)
122
+ - Successful trajectory distillation
123
+ - Low-quality trajectory filtering
124
+ - Automatic judgment before distillation
125
+ - Strategy extraction
126
+ - Key learnings extraction
127
+ - Aggregate embedding computation
128
+ - Distillation performance tracking
129
+ - Memory-trajectory linking
130
+
131
+ #### Retrieval with MMR (6 tests)
132
+ - Top-k similar memory retrieval
133
+ - MMR diversity application
134
+ - Retrieval result structure
135
+ - Retrieval performance tracking
136
+ - Empty bank handling
137
+ - K parameter respect
138
+
139
+ #### Consolidation (6 tests)
140
+ - Memory deduplication
141
+ - Contradiction detection
142
+ - Pattern merging
143
+ - Old pattern pruning
144
+ - Consolidation result structure
145
+ - Consolidation event emission
146
+
147
+ #### Pattern Management (7 tests)
148
+ - Memory to pattern conversion
149
+ - Pattern evolution with new experience
150
+ - Pattern usage tracking
151
+ - Success rate updates
152
+ - Quality history maintenance (max 100)
153
+ - Pattern evolution events
154
+ - Getting all patterns
155
+
156
+ #### Event System (3 tests)
157
+ - Adding/removing event listeners
158
+ - Consolidation event emission
159
+ - Pattern evolution event emission
160
+
161
+ ---
162
+
163
+ ## Performance Targets
164
+
165
+ All tests validate against these performance targets:
166
+
167
+ | Operation | Target | Test Coverage |
168
+ |-----------|--------|---------------|
169
+ | SONA learn() | <0.05ms | ✓ |
170
+ | SONA adapt() | <0.1ms | ✓ |
171
+ | Q-Learning update | <1ms | ✓ |
172
+ | SARSA update | <1ms | ✓ |
173
+ | DQN update | <10ms | ✓ |
174
+ | PPO update | <10ms | ✓ |
175
+ | Decision Transformer train | <10ms | ✓ |
176
+ | ReasoningBank retrieval | <10ms | ✓ |
177
+ | ReasoningBank distillation | <10ms | ✓ |
178
+
179
+ ## Running Tests
180
+
181
+ ```bash
182
+ # Run all tests
183
+ npm run test
184
+
185
+ # Run with coverage
186
+ npm run test -- --coverage
187
+
188
+ # Run specific test file
189
+ npm run test sona.test.ts
190
+ npm run test algorithms.test.ts
191
+ npm run test patterns.test.ts
192
+
193
+ # Watch mode
194
+ npm run test -- --watch
195
+ ```
196
+
197
+ ## Test Coverage Goals
198
+
199
+ - **Statements**: >80%
200
+ - **Branches**: >75%
201
+ - **Functions**: >80%
202
+ - **Lines**: >80%
203
+
204
+ ## Algorithm Correctness
205
+
206
+ Tests validate core algorithm implementations:
207
+
208
+ 1. **Q-Learning**: TD error computation, Q-table updates, exploration decay
209
+ 2. **SARSA**: On-policy updates, expected SARSA variant, eligibility traces
210
+ 3. **DQN**: Experience replay, target networks, double DQN, dueling architecture
211
+ 4. **PPO**: Clipped surrogate objective, GAE, value clipping, entropy bonus
212
+ 5. **Decision Transformer**: Sequence modeling, causal attention, return conditioning
213
+
214
+ ## Pattern Learning Pipeline
215
+
216
+ Tests validate the 4-step ReasoningBank pipeline:
217
+
218
+ 1. **RETRIEVE**: Top-k memory injection with MMR diversity (6 tests)
219
+ 2. **JUDGE**: LLM-as-judge trajectory evaluation (9 tests)
220
+ 3. **DISTILL**: Extract strategy memories from trajectories (8 tests)
221
+ 4. **CONSOLIDATE**: Dedup, detect contradictions, prune patterns (6 tests)
222
+
223
+ ## Mocking Strategy
224
+
225
+ - **@ruvector/sona**: Mocked to isolate SONA integration tests
226
+ - **All algorithms**: Pure TypeScript, no mocking needed
227
+ - **ReasoningBank**: Pure TypeScript, no mocking needed
228
+
229
+ ## Notes
230
+
231
+ - Tests use Vitest for fast execution
232
+ - All tests are isolated with `beforeEach` setup
233
+ - Performance tests allow overhead for mocking/setup
234
+ - Helper functions generate realistic test trajectories
235
+ - Tests cover edge cases (empty trajectories, incomplete data, etc.)