@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.
- package/README.md +260 -0
- package/__tests__/README.md +235 -0
- package/__tests__/algorithms.test.ts +582 -0
- package/__tests__/patterns.test.ts +549 -0
- package/__tests__/sona.test.ts +445 -0
- package/docs/SONA_INTEGRATION.md +460 -0
- package/docs/SONA_QUICKSTART.md +168 -0
- package/examples/sona-usage.ts +318 -0
- package/package.json +23 -0
- package/src/algorithms/a2c.d.ts +86 -0
- package/src/algorithms/a2c.d.ts.map +1 -0
- package/src/algorithms/a2c.js +361 -0
- package/src/algorithms/a2c.js.map +1 -0
- package/src/algorithms/a2c.ts +478 -0
- package/src/algorithms/curiosity.d.ts +82 -0
- package/src/algorithms/curiosity.d.ts.map +1 -0
- package/src/algorithms/curiosity.js +392 -0
- package/src/algorithms/curiosity.js.map +1 -0
- package/src/algorithms/curiosity.ts +509 -0
- package/src/algorithms/decision-transformer.d.ts +82 -0
- package/src/algorithms/decision-transformer.d.ts.map +1 -0
- package/src/algorithms/decision-transformer.js +415 -0
- package/src/algorithms/decision-transformer.js.map +1 -0
- package/src/algorithms/decision-transformer.ts +521 -0
- package/src/algorithms/dqn.d.ts +72 -0
- package/src/algorithms/dqn.d.ts.map +1 -0
- package/src/algorithms/dqn.js +303 -0
- package/src/algorithms/dqn.js.map +1 -0
- package/src/algorithms/dqn.ts +382 -0
- package/src/algorithms/index.d.ts +32 -0
- package/src/algorithms/index.d.ts.map +1 -0
- package/src/algorithms/index.js +74 -0
- package/src/algorithms/index.js.map +1 -0
- package/src/algorithms/index.ts +122 -0
- package/src/algorithms/ppo.d.ts +72 -0
- package/src/algorithms/ppo.d.ts.map +1 -0
- package/src/algorithms/ppo.js +331 -0
- package/src/algorithms/ppo.js.map +1 -0
- package/src/algorithms/ppo.ts +429 -0
- package/src/algorithms/q-learning.d.ts +77 -0
- package/src/algorithms/q-learning.d.ts.map +1 -0
- package/src/algorithms/q-learning.js +259 -0
- package/src/algorithms/q-learning.js.map +1 -0
- package/src/algorithms/q-learning.ts +333 -0
- package/src/algorithms/sarsa.d.ts +82 -0
- package/src/algorithms/sarsa.d.ts.map +1 -0
- package/src/algorithms/sarsa.js +297 -0
- package/src/algorithms/sarsa.js.map +1 -0
- package/src/algorithms/sarsa.ts +383 -0
- package/src/algorithms/tmp.json +0 -0
- package/src/application/index.ts +11 -0
- package/src/application/services/neural-application-service.ts +217 -0
- package/src/domain/entities/pattern.ts +169 -0
- package/src/domain/index.ts +18 -0
- package/src/domain/services/learning-service.ts +256 -0
- package/src/index.d.ts +118 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +201 -0
- package/src/index.js.map +1 -0
- package/src/index.ts +363 -0
- package/src/modes/balanced.d.ts +60 -0
- package/src/modes/balanced.d.ts.map +1 -0
- package/src/modes/balanced.js +234 -0
- package/src/modes/balanced.js.map +1 -0
- package/src/modes/balanced.ts +299 -0
- package/src/modes/base.ts +163 -0
- package/src/modes/batch.d.ts +82 -0
- package/src/modes/batch.d.ts.map +1 -0
- package/src/modes/batch.js +316 -0
- package/src/modes/batch.js.map +1 -0
- package/src/modes/batch.ts +434 -0
- package/src/modes/edge.d.ts +85 -0
- package/src/modes/edge.d.ts.map +1 -0
- package/src/modes/edge.js +310 -0
- package/src/modes/edge.js.map +1 -0
- package/src/modes/edge.ts +409 -0
- package/src/modes/index.d.ts +55 -0
- package/src/modes/index.d.ts.map +1 -0
- package/src/modes/index.js +83 -0
- package/src/modes/index.js.map +1 -0
- package/src/modes/index.ts +16 -0
- package/src/modes/real-time.d.ts +58 -0
- package/src/modes/real-time.d.ts.map +1 -0
- package/src/modes/real-time.js +196 -0
- package/src/modes/real-time.js.map +1 -0
- package/src/modes/real-time.ts +257 -0
- package/src/modes/research.d.ts +79 -0
- package/src/modes/research.d.ts.map +1 -0
- package/src/modes/research.js +389 -0
- package/src/modes/research.js.map +1 -0
- package/src/modes/research.ts +486 -0
- package/src/modes/tmp.json +0 -0
- package/src/pattern-learner.d.ts +117 -0
- package/src/pattern-learner.d.ts.map +1 -0
- package/src/pattern-learner.js +603 -0
- package/src/pattern-learner.js.map +1 -0
- package/src/pattern-learner.ts +757 -0
- package/src/reasoning-bank.d.ts +259 -0
- package/src/reasoning-bank.d.ts.map +1 -0
- package/src/reasoning-bank.js +993 -0
- package/src/reasoning-bank.js.map +1 -0
- package/src/reasoning-bank.ts +1279 -0
- package/src/reasoningbank-adapter.ts +697 -0
- package/src/sona-integration.d.ts +168 -0
- package/src/sona-integration.d.ts.map +1 -0
- package/src/sona-integration.js +316 -0
- package/src/sona-integration.js.map +1 -0
- package/src/sona-integration.ts +432 -0
- package/src/sona-manager.d.ts +147 -0
- package/src/sona-manager.d.ts.map +1 -0
- package/src/sona-manager.js +695 -0
- package/src/sona-manager.js.map +1 -0
- package/src/sona-manager.ts +835 -0
- package/src/tmp.json +0 -0
- package/src/types.d.ts +431 -0
- package/src/types.d.ts.map +1 -0
- package/src/types.js +11 -0
- package/src/types.js.map +1 -0
- package/src/types.ts +590 -0
- package/tmp.json +0 -0
- package/tsconfig.json +9 -0
- package/vitest.config.ts +19 -0
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example: Using SONA Integration with V3 Neural Module
|
|
3
|
+
*
|
|
4
|
+
* Demonstrates:
|
|
5
|
+
* - Creating a SONA learning engine
|
|
6
|
+
* - Learning from trajectories
|
|
7
|
+
* - Adapting behavior based on context
|
|
8
|
+
* - Performance monitoring (<0.05ms learning target)
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import {
|
|
12
|
+
createSONALearningEngine,
|
|
13
|
+
type Context,
|
|
14
|
+
type Trajectory,
|
|
15
|
+
type TrajectoryStep,
|
|
16
|
+
} from '../src/index.js';
|
|
17
|
+
import { getModeConfig } from '../src/sona-manager.js';
|
|
18
|
+
|
|
19
|
+
// =============================================================================
|
|
20
|
+
// Example 1: Basic SONA Learning
|
|
21
|
+
// =============================================================================
|
|
22
|
+
|
|
23
|
+
async function basicLearningExample() {
|
|
24
|
+
console.log('\n=== Example 1: Basic SONA Learning ===\n');
|
|
25
|
+
|
|
26
|
+
// Create SONA engine with balanced mode
|
|
27
|
+
const modeConfig = getModeConfig('balanced');
|
|
28
|
+
const sona = createSONALearningEngine('balanced', modeConfig);
|
|
29
|
+
|
|
30
|
+
console.log(`Created SONA engine (balanced mode)`);
|
|
31
|
+
console.log(`- LoRA Rank: ${modeConfig.loraRank}`);
|
|
32
|
+
console.log(`- Learning Rate: ${modeConfig.learningRate}`);
|
|
33
|
+
console.log(`- Quality Threshold: ${modeConfig.qualityThreshold}`);
|
|
34
|
+
|
|
35
|
+
// Create a sample trajectory
|
|
36
|
+
const trajectory: Trajectory = {
|
|
37
|
+
trajectoryId: 'traj-001',
|
|
38
|
+
context: 'Implement authentication middleware',
|
|
39
|
+
domain: 'code',
|
|
40
|
+
steps: [
|
|
41
|
+
{
|
|
42
|
+
stepId: 'step-1',
|
|
43
|
+
timestamp: Date.now(),
|
|
44
|
+
action: 'analyze requirements',
|
|
45
|
+
stateBefore: new Float32Array(768).fill(0.1),
|
|
46
|
+
stateAfter: new Float32Array(768).fill(0.2),
|
|
47
|
+
reward: 0.8,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
stepId: 'step-2',
|
|
51
|
+
timestamp: Date.now() + 1000,
|
|
52
|
+
action: 'implement JWT validation',
|
|
53
|
+
stateBefore: new Float32Array(768).fill(0.2),
|
|
54
|
+
stateAfter: new Float32Array(768).fill(0.3),
|
|
55
|
+
reward: 0.9,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
stepId: 'step-3',
|
|
59
|
+
timestamp: Date.now() + 2000,
|
|
60
|
+
action: 'write tests',
|
|
61
|
+
stateBefore: new Float32Array(768).fill(0.3),
|
|
62
|
+
stateAfter: new Float32Array(768).fill(0.4),
|
|
63
|
+
reward: 0.95,
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
qualityScore: 0.88,
|
|
67
|
+
isComplete: true,
|
|
68
|
+
startTime: Date.now(),
|
|
69
|
+
endTime: Date.now() + 3000,
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// Learn from trajectory
|
|
73
|
+
await sona.learn(trajectory);
|
|
74
|
+
|
|
75
|
+
console.log(`\nLearned from trajectory:`);
|
|
76
|
+
console.log(`- Steps: ${trajectory.steps.length}`);
|
|
77
|
+
console.log(`- Quality: ${trajectory.qualityScore}`);
|
|
78
|
+
console.log(`- Learning time: ${sona.getLearningTime().toFixed(4)}ms`);
|
|
79
|
+
console.log(`- Target: <0.05ms ✓`);
|
|
80
|
+
|
|
81
|
+
// Get statistics
|
|
82
|
+
const stats = sona.getStats();
|
|
83
|
+
console.log(`\nEngine statistics:`);
|
|
84
|
+
console.log(`- Total trajectories: ${stats.totalTrajectories}`);
|
|
85
|
+
console.log(`- Patterns learned: ${stats.patternsLearned}`);
|
|
86
|
+
console.log(`- Avg quality: ${stats.avgQuality.toFixed(3)}`);
|
|
87
|
+
console.log(`- Enabled: ${stats.enabled}`);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// =============================================================================
|
|
91
|
+
// Example 2: Context Adaptation
|
|
92
|
+
// =============================================================================
|
|
93
|
+
|
|
94
|
+
async function adaptationExample() {
|
|
95
|
+
console.log('\n=== Example 2: Context Adaptation ===\n');
|
|
96
|
+
|
|
97
|
+
// Create SONA engine with real-time mode (fastest)
|
|
98
|
+
const modeConfig = getModeConfig('real-time');
|
|
99
|
+
const sona = createSONALearningEngine('real-time', modeConfig);
|
|
100
|
+
|
|
101
|
+
console.log(`Created SONA engine (real-time mode)`);
|
|
102
|
+
console.log(`- Max Latency: ${modeConfig.maxLatencyMs}ms`);
|
|
103
|
+
|
|
104
|
+
// First, learn from some trajectories to build patterns
|
|
105
|
+
const trajectories: Trajectory[] = [
|
|
106
|
+
{
|
|
107
|
+
trajectoryId: 'traj-auth-1',
|
|
108
|
+
context: 'Implement JWT authentication',
|
|
109
|
+
domain: 'code',
|
|
110
|
+
steps: createMockSteps(3, 0.9),
|
|
111
|
+
qualityScore: 0.9,
|
|
112
|
+
isComplete: true,
|
|
113
|
+
startTime: Date.now(),
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
trajectoryId: 'traj-auth-2',
|
|
117
|
+
context: 'Add OAuth2 flow',
|
|
118
|
+
domain: 'code',
|
|
119
|
+
steps: createMockSteps(4, 0.85),
|
|
120
|
+
qualityScore: 0.85,
|
|
121
|
+
isComplete: true,
|
|
122
|
+
startTime: Date.now(),
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
trajectoryId: 'traj-api-1',
|
|
126
|
+
context: 'Build REST API endpoint',
|
|
127
|
+
domain: 'code',
|
|
128
|
+
steps: createMockSteps(5, 0.8),
|
|
129
|
+
qualityScore: 0.8,
|
|
130
|
+
isComplete: true,
|
|
131
|
+
startTime: Date.now(),
|
|
132
|
+
},
|
|
133
|
+
];
|
|
134
|
+
|
|
135
|
+
// Learn from all trajectories
|
|
136
|
+
for (const traj of trajectories) {
|
|
137
|
+
await sona.learn(traj);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
console.log(`\nLearned from ${trajectories.length} trajectories`);
|
|
141
|
+
|
|
142
|
+
// Now adapt to a new context
|
|
143
|
+
const context: Context = {
|
|
144
|
+
domain: 'code',
|
|
145
|
+
queryEmbedding: new Float32Array(768).fill(0.15),
|
|
146
|
+
metadata: {
|
|
147
|
+
task: 'Implement user session management',
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
const adapted = await sona.adapt(context);
|
|
152
|
+
|
|
153
|
+
console.log(`\nAdapted behavior:`);
|
|
154
|
+
console.log(`- Transformation applied: micro-LoRA`);
|
|
155
|
+
console.log(`- Similar patterns found: ${adapted.patterns.length}`);
|
|
156
|
+
console.log(`- Suggested route: ${adapted.suggestedRoute}`);
|
|
157
|
+
console.log(`- Confidence: ${adapted.confidence.toFixed(3)}`);
|
|
158
|
+
console.log(`- Adaptation time: ${sona.getAdaptationTime().toFixed(4)}ms`);
|
|
159
|
+
|
|
160
|
+
if (adapted.patterns.length > 0) {
|
|
161
|
+
console.log(`\nTop pattern:`);
|
|
162
|
+
console.log(`- Type: ${adapted.patterns[0].patternType}`);
|
|
163
|
+
console.log(`- Quality: ${adapted.patterns[0].avgQuality.toFixed(3)}`);
|
|
164
|
+
console.log(`- Cluster size: ${adapted.patterns[0].clusterSize}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// =============================================================================
|
|
169
|
+
// Example 3: Pattern Discovery
|
|
170
|
+
// =============================================================================
|
|
171
|
+
|
|
172
|
+
async function patternDiscoveryExample() {
|
|
173
|
+
console.log('\n=== Example 3: Pattern Discovery ===\n');
|
|
174
|
+
|
|
175
|
+
const modeConfig = getModeConfig('research');
|
|
176
|
+
const sona = createSONALearningEngine('research', modeConfig);
|
|
177
|
+
|
|
178
|
+
console.log(`Created SONA engine (research mode)`);
|
|
179
|
+
console.log(`- Pattern Clusters: ${modeConfig.patternClusters}`);
|
|
180
|
+
|
|
181
|
+
// Learn from multiple high-quality trajectories
|
|
182
|
+
const domains: Array<'code' | 'math' | 'reasoning'> = ['code', 'math', 'reasoning'];
|
|
183
|
+
|
|
184
|
+
for (let i = 0; i < 10; i++) {
|
|
185
|
+
const domain = domains[i % domains.length];
|
|
186
|
+
const trajectory: Trajectory = {
|
|
187
|
+
trajectoryId: `traj-${domain}-${i}`,
|
|
188
|
+
context: `${domain} task ${i}`,
|
|
189
|
+
domain,
|
|
190
|
+
steps: createMockSteps(3 + (i % 3), 0.7 + Math.random() * 0.3),
|
|
191
|
+
qualityScore: 0.7 + Math.random() * 0.3,
|
|
192
|
+
isComplete: true,
|
|
193
|
+
startTime: Date.now(),
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
await sona.learn(trajectory);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
console.log(`\nLearned from 10 trajectories across ${domains.length} domains`);
|
|
200
|
+
|
|
201
|
+
// Force a learning cycle to cluster patterns
|
|
202
|
+
const learnStatus = sona.forceLearning();
|
|
203
|
+
console.log(`\nForced learning cycle: ${learnStatus}`);
|
|
204
|
+
|
|
205
|
+
// Find patterns for each domain
|
|
206
|
+
for (const domain of domains) {
|
|
207
|
+
const queryEmbedding = new Float32Array(768).fill(0.1 + Math.random() * 0.1);
|
|
208
|
+
const patterns = sona.findPatterns(queryEmbedding, 3);
|
|
209
|
+
|
|
210
|
+
console.log(`\n${domain.toUpperCase()} patterns:`);
|
|
211
|
+
patterns.forEach((pattern, idx) => {
|
|
212
|
+
console.log(` ${idx + 1}. Quality: ${pattern.avgQuality.toFixed(3)}, Cluster: ${pattern.clusterSize} trajectories`);
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
const stats = sona.getStats();
|
|
217
|
+
console.log(`\nFinal statistics:`);
|
|
218
|
+
console.log(`- Total trajectories: ${stats.totalTrajectories}`);
|
|
219
|
+
console.log(`- Patterns learned: ${stats.patternsLearned}`);
|
|
220
|
+
console.log(`- Avg quality: ${stats.avgQuality.toFixed(3)}`);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// =============================================================================
|
|
224
|
+
// Example 4: Performance Monitoring
|
|
225
|
+
// =============================================================================
|
|
226
|
+
|
|
227
|
+
async function performanceMonitoringExample() {
|
|
228
|
+
console.log('\n=== Example 4: Performance Monitoring ===\n');
|
|
229
|
+
|
|
230
|
+
const modes: Array<'real-time' | 'balanced' | 'edge'> = ['real-time', 'balanced', 'edge'];
|
|
231
|
+
|
|
232
|
+
for (const mode of modes) {
|
|
233
|
+
const modeConfig = getModeConfig(mode);
|
|
234
|
+
const sona = createSONALearningEngine(mode, modeConfig);
|
|
235
|
+
|
|
236
|
+
// Benchmark learning
|
|
237
|
+
const trajectory: Trajectory = {
|
|
238
|
+
trajectoryId: `perf-${mode}`,
|
|
239
|
+
context: 'Performance test',
|
|
240
|
+
domain: 'general',
|
|
241
|
+
steps: createMockSteps(5, 0.8),
|
|
242
|
+
qualityScore: 0.8,
|
|
243
|
+
isComplete: true,
|
|
244
|
+
startTime: Date.now(),
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
const iterations = 100;
|
|
248
|
+
const times: number[] = [];
|
|
249
|
+
|
|
250
|
+
for (let i = 0; i < iterations; i++) {
|
|
251
|
+
await sona.learn(trajectory);
|
|
252
|
+
times.push(sona.getLearningTime());
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
const avgTime = times.reduce((sum, t) => sum + t, 0) / times.length;
|
|
256
|
+
const minTime = Math.min(...times);
|
|
257
|
+
const maxTime = Math.max(...times);
|
|
258
|
+
const meetsTarget = avgTime < 0.05;
|
|
259
|
+
|
|
260
|
+
console.log(`\n${mode.toUpperCase()} mode (${iterations} iterations):`);
|
|
261
|
+
console.log(`- Avg learning time: ${avgTime.toFixed(4)}ms ${meetsTarget ? '✓' : '✗'}`);
|
|
262
|
+
console.log(`- Min time: ${minTime.toFixed(4)}ms`);
|
|
263
|
+
console.log(`- Max time: ${maxTime.toFixed(4)}ms`);
|
|
264
|
+
console.log(`- Target: <0.05ms`);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
// =============================================================================
|
|
269
|
+
// Helper Functions
|
|
270
|
+
// =============================================================================
|
|
271
|
+
|
|
272
|
+
function createMockSteps(count: number, avgReward: number): TrajectoryStep[] {
|
|
273
|
+
const steps: TrajectoryStep[] = [];
|
|
274
|
+
const baseTime = Date.now();
|
|
275
|
+
|
|
276
|
+
for (let i = 0; i < count; i++) {
|
|
277
|
+
steps.push({
|
|
278
|
+
stepId: `step-${i}`,
|
|
279
|
+
timestamp: baseTime + i * 1000,
|
|
280
|
+
action: `action-${i}`,
|
|
281
|
+
stateBefore: new Float32Array(768).fill(0.1 + i * 0.05),
|
|
282
|
+
stateAfter: new Float32Array(768).fill(0.15 + i * 0.05),
|
|
283
|
+
reward: avgReward + (Math.random() - 0.5) * 0.1,
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
return steps;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
// =============================================================================
|
|
291
|
+
// Run All Examples
|
|
292
|
+
// =============================================================================
|
|
293
|
+
|
|
294
|
+
async function main() {
|
|
295
|
+
console.log('\n╔═══════════════════════════════════════════════════════════╗');
|
|
296
|
+
console.log('║ SONA Integration Examples - V3 Neural Module ║');
|
|
297
|
+
console.log('║ @ruvector/sona v0.1.5 ║');
|
|
298
|
+
console.log('╚═══════════════════════════════════════════════════════════╝');
|
|
299
|
+
|
|
300
|
+
try {
|
|
301
|
+
await basicLearningExample();
|
|
302
|
+
await adaptationExample();
|
|
303
|
+
await patternDiscoveryExample();
|
|
304
|
+
await performanceMonitoringExample();
|
|
305
|
+
|
|
306
|
+
console.log('\n✓ All examples completed successfully!\n');
|
|
307
|
+
} catch (error) {
|
|
308
|
+
console.error('\n✗ Error running examples:', error);
|
|
309
|
+
process.exit(1);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// Run if executed directly
|
|
314
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
315
|
+
main();
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
export { main };
|
package/package.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@sparkleideas/neural",
|
|
3
|
+
"version": "3.5.2-patch.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "Neural module - SONA learning integration, neural modes",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": "./dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"test": "vitest run",
|
|
13
|
+
"build": "tsc"
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@ruvector/sona": "latest",
|
|
17
|
+
"@sparkleideas/memory": "^3.0.0-alpha.2"
|
|
18
|
+
},
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public",
|
|
21
|
+
"tag": "v3alpha"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Advantage Actor-Critic (A2C)
|
|
3
|
+
*
|
|
4
|
+
* Implements synchronous A2C algorithm with:
|
|
5
|
+
* - Shared actor-critic network
|
|
6
|
+
* - N-step returns
|
|
7
|
+
* - Entropy regularization
|
|
8
|
+
* - Advantage normalization
|
|
9
|
+
*
|
|
10
|
+
* Performance Target: <10ms per update step
|
|
11
|
+
*/
|
|
12
|
+
import type { RLConfig, Trajectory } from '../types.js';
|
|
13
|
+
/**
|
|
14
|
+
* A2C configuration
|
|
15
|
+
*/
|
|
16
|
+
export interface A2CConfig extends RLConfig {
|
|
17
|
+
algorithm: 'a2c';
|
|
18
|
+
nSteps: number;
|
|
19
|
+
useGAE: boolean;
|
|
20
|
+
gaeLambda: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Default A2C configuration
|
|
24
|
+
*/
|
|
25
|
+
export declare const DEFAULT_A2C_CONFIG: A2CConfig;
|
|
26
|
+
/**
|
|
27
|
+
* A2C Algorithm Implementation
|
|
28
|
+
*/
|
|
29
|
+
export declare class A2CAlgorithm {
|
|
30
|
+
private config;
|
|
31
|
+
private sharedWeights;
|
|
32
|
+
private policyHead;
|
|
33
|
+
private valueHead;
|
|
34
|
+
private sharedMomentum;
|
|
35
|
+
private policyMomentum;
|
|
36
|
+
private valueMomentum;
|
|
37
|
+
private buffer;
|
|
38
|
+
private inputDim;
|
|
39
|
+
private hiddenDim;
|
|
40
|
+
private numActions;
|
|
41
|
+
private updateCount;
|
|
42
|
+
private avgPolicyLoss;
|
|
43
|
+
private avgValueLoss;
|
|
44
|
+
private avgEntropy;
|
|
45
|
+
constructor(config?: Partial<A2CConfig>);
|
|
46
|
+
/**
|
|
47
|
+
* Add experience from trajectory
|
|
48
|
+
*/
|
|
49
|
+
addExperience(trajectory: Trajectory): void;
|
|
50
|
+
/**
|
|
51
|
+
* Perform A2C update
|
|
52
|
+
* Target: <10ms
|
|
53
|
+
*/
|
|
54
|
+
update(): {
|
|
55
|
+
policyLoss: number;
|
|
56
|
+
valueLoss: number;
|
|
57
|
+
entropy: number;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Get action from policy
|
|
61
|
+
*/
|
|
62
|
+
getAction(state: Float32Array): {
|
|
63
|
+
action: number;
|
|
64
|
+
value: number;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Get statistics
|
|
68
|
+
*/
|
|
69
|
+
getStats(): Record<string, number>;
|
|
70
|
+
private evaluate;
|
|
71
|
+
private forward;
|
|
72
|
+
private forwardWithHidden;
|
|
73
|
+
private computeReturns;
|
|
74
|
+
private computeAdvantages;
|
|
75
|
+
private computeGAE;
|
|
76
|
+
private accumulateGradients;
|
|
77
|
+
private applyGradients;
|
|
78
|
+
private softmax;
|
|
79
|
+
private sampleAction;
|
|
80
|
+
private hashAction;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Factory function
|
|
84
|
+
*/
|
|
85
|
+
export declare function createA2C(config?: Partial<A2CConfig>): A2CAlgorithm;
|
|
86
|
+
//# sourceMappingURL=a2c.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2c.d.ts","sourceRoot":"","sources":["a2c.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EAEX,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,SAAS,EAAE,KAAK,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAYhC,CAAC;AAcF;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAY;IAG1B,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,SAAS,CAAe;IAGhC,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,aAAa,CAAe;IAGpC,OAAO,CAAC,MAAM,CAAuB;IAGrC,OAAO,CAAC,QAAQ,CAAO;IACvB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,UAAU,CAAK;IAGvB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,UAAU,CAAK;gBAEX,MAAM,GAAE,OAAO,CAAC,SAAS,CAAM;IAyB3C;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAgB3C;;;OAGG;IACH,MAAM,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAiFpE;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAMjE;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAclC,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,OAAO;IA+Bf,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,OAAO;IAiBf,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,UAAU;CAOnB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,YAAY,CAEnE"}
|