@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
@@ -0,0 +1,310 @@
1
+ /**
2
+ * Edge Mode Implementation
3
+ *
4
+ * Optimized for resource-constrained environments with:
5
+ * - <5MB memory footprint
6
+ * - Minimal latency (<1ms)
7
+ * - Micro-LoRA (rank-1)
8
+ * - Aggressive pruning
9
+ * - Async updates
10
+ */
11
+ import { BaseModeImplementation } from './index.js';
12
+ /**
13
+ * Edge mode for resource-constrained devices
14
+ */
15
+ export class EdgeMode extends BaseModeImplementation {
16
+ mode = 'edge';
17
+ // Minimal pattern storage (compressed)
18
+ compressedPatterns = new Map();
19
+ // Quantized LoRA weights (int8)
20
+ quantizedWeights = new Map();
21
+ quantizationScale = 1.0;
22
+ // Pending async updates
23
+ pendingUpdates = [];
24
+ updateTimer = null;
25
+ // Stats
26
+ totalOps = 0;
27
+ totalTime = 0;
28
+ async initialize() {
29
+ await super.initialize();
30
+ this.compressedPatterns.clear();
31
+ this.quantizedWeights.clear();
32
+ this.pendingUpdates = [];
33
+ }
34
+ async cleanup() {
35
+ if (this.updateTimer) {
36
+ clearTimeout(this.updateTimer);
37
+ }
38
+ this.compressedPatterns.clear();
39
+ this.quantizedWeights.clear();
40
+ this.pendingUpdates = [];
41
+ await super.cleanup();
42
+ }
43
+ /**
44
+ * Find patterns using compressed embeddings
45
+ */
46
+ async findPatterns(embedding, k, patterns) {
47
+ const startTime = performance.now();
48
+ // Compress input embedding for comparison
49
+ const compressedInput = this.compressEmbedding(embedding);
50
+ // Fast similarity on compressed representations
51
+ const matches = [];
52
+ for (const pattern of patterns) {
53
+ let compressed = this.compressedPatterns.get(pattern.patternId);
54
+ if (!compressed) {
55
+ compressed = this.createCompressedPattern(pattern);
56
+ this.compressedPatterns.set(pattern.patternId, compressed);
57
+ }
58
+ // Use compressed similarity (faster but less accurate)
59
+ const score = this.compressedSimilarity(compressedInput, compressed.embedding);
60
+ matches.push({ pattern, score });
61
+ }
62
+ // Quick partial sort
63
+ matches.sort((a, b) => b.score - a.score);
64
+ const topK = matches.slice(0, k);
65
+ this.totalOps++;
66
+ this.totalTime += performance.now() - startTime;
67
+ return topK.map(m => ({
68
+ pattern: m.pattern,
69
+ similarity: m.score,
70
+ confidence: m.score * m.pattern.successRate,
71
+ latencyMs: 0,
72
+ }));
73
+ }
74
+ /**
75
+ * Lightweight learning with async updates
76
+ */
77
+ async learn(trajectories, config, ewcState) {
78
+ const startTime = performance.now();
79
+ if (trajectories.length === 0)
80
+ return 0;
81
+ // Edge mode: only learn from high-quality trajectories
82
+ const threshold = config.qualityThreshold;
83
+ const good = trajectories.filter(t => t.qualityScore >= threshold);
84
+ if (good.length === 0)
85
+ return 0;
86
+ const avgQuality = good.reduce((s, t) => s + t.qualityScore, 0) / good.length;
87
+ // Queue async update for later processing
88
+ this.queueAsyncUpdate(async () => {
89
+ await this.performLightweightUpdate(good, config.learningRate);
90
+ });
91
+ this.totalOps++;
92
+ this.totalTime += performance.now() - startTime;
93
+ return Math.max(0, avgQuality - 0.5);
94
+ }
95
+ /**
96
+ * Apply quantized LoRA
97
+ */
98
+ async applyLoRA(input, weights) {
99
+ if (!weights) {
100
+ return input;
101
+ }
102
+ const output = new Float32Array(input.length);
103
+ output.set(input);
104
+ // Quantize weights if not already done
105
+ for (const module of ['q_proj', 'v_proj']) {
106
+ const A = weights.A.get(module);
107
+ const B = weights.B.get(module);
108
+ if (A && B) {
109
+ const qA = this.getOrQuantize(`A_${module}`, A);
110
+ const qB = this.getOrQuantize(`B_${module}`, B);
111
+ // Apply quantized LoRA
112
+ const adapted = this.applyQuantizedLoRA(input, qA, qB);
113
+ const alpha = 0.05; // Very small blending for edge
114
+ for (let i = 0; i < output.length; i++) {
115
+ output[i] = output[i] * (1 - alpha) + adapted[i] * alpha;
116
+ }
117
+ }
118
+ }
119
+ return output;
120
+ }
121
+ getStats() {
122
+ return {
123
+ avgLatencyMs: this.totalOps > 0 ? this.totalTime / this.totalOps : 0,
124
+ compressedPatterns: this.compressedPatterns.size,
125
+ quantizedWeights: this.quantizedWeights.size,
126
+ pendingUpdates: this.pendingUpdates.length,
127
+ memoryEstimateMb: this.estimateMemoryUsage(),
128
+ };
129
+ }
130
+ // ========================================================================
131
+ // Compression utilities
132
+ // ========================================================================
133
+ /**
134
+ * Compress embedding to 8-bit representation
135
+ */
136
+ compressEmbedding(embedding) {
137
+ const compressed = new Int8Array(embedding.length);
138
+ const max = Math.max(...embedding.map(Math.abs));
139
+ const scale = max > 0 ? 127 / max : 1;
140
+ for (let i = 0; i < embedding.length; i++) {
141
+ compressed[i] = Math.round(embedding[i] * scale);
142
+ }
143
+ return compressed;
144
+ }
145
+ /**
146
+ * Create compressed pattern representation
147
+ */
148
+ createCompressedPattern(pattern) {
149
+ return {
150
+ id: pattern.patternId,
151
+ embedding: this.compressEmbedding(pattern.embedding),
152
+ successRate: Math.round(pattern.successRate * 255),
153
+ usageCount: Math.min(pattern.usageCount, 255),
154
+ };
155
+ }
156
+ /**
157
+ * Fast similarity on compressed embeddings
158
+ */
159
+ compressedSimilarity(a, b) {
160
+ if (a.length !== b.length)
161
+ return 0;
162
+ let dot = 0;
163
+ let normA = 0;
164
+ let normB = 0;
165
+ // Process in chunks of 8 for better cache utilization
166
+ const len = a.length;
167
+ for (let i = 0; i < len; i++) {
168
+ dot += a[i] * b[i];
169
+ normA += a[i] * a[i];
170
+ normB += b[i] * b[i];
171
+ }
172
+ const denom = Math.sqrt(normA * normB);
173
+ return denom > 0 ? dot / denom : 0;
174
+ }
175
+ /**
176
+ * Get or create quantized weights
177
+ */
178
+ getOrQuantize(key, weights) {
179
+ let quantized = this.quantizedWeights.get(key);
180
+ if (!quantized) {
181
+ quantized = this.quantizeWeights(weights);
182
+ this.quantizedWeights.set(key, quantized);
183
+ }
184
+ return quantized;
185
+ }
186
+ /**
187
+ * Quantize float weights to int8
188
+ */
189
+ quantizeWeights(weights) {
190
+ const max = Math.max(...weights.map(Math.abs));
191
+ this.quantizationScale = max > 0 ? 127 / max : 1;
192
+ const quantized = new Int8Array(weights.length);
193
+ for (let i = 0; i < weights.length; i++) {
194
+ quantized[i] = Math.round(weights[i] * this.quantizationScale);
195
+ }
196
+ return quantized;
197
+ }
198
+ /**
199
+ * Apply LoRA with quantized weights
200
+ */
201
+ applyQuantizedLoRA(input, qA, qB) {
202
+ const dim = input.length;
203
+ const rank = 1; // Edge mode uses rank-1
204
+ const output = new Float32Array(dim);
205
+ const dequantScale = 1 / this.quantizationScale;
206
+ // A * input -> intermediate (scalar for rank-1)
207
+ let intermediate = 0;
208
+ for (let d = 0; d < dim; d++) {
209
+ intermediate += (qA[d] * dequantScale) * input[d];
210
+ }
211
+ // B * intermediate -> output
212
+ for (let d = 0; d < dim; d++) {
213
+ output[d] = (qB[d] * dequantScale) * intermediate;
214
+ }
215
+ return output;
216
+ }
217
+ // ========================================================================
218
+ // Async updates
219
+ // ========================================================================
220
+ /**
221
+ * Queue an async update
222
+ */
223
+ queueAsyncUpdate(update) {
224
+ this.pendingUpdates.push(update);
225
+ // Schedule processing if not already scheduled
226
+ if (!this.updateTimer) {
227
+ this.updateTimer = setTimeout(() => {
228
+ this.processAsyncUpdates();
229
+ }, 100); // Process updates every 100ms
230
+ }
231
+ }
232
+ /**
233
+ * Process pending async updates
234
+ */
235
+ async processAsyncUpdates() {
236
+ this.updateTimer = null;
237
+ const updates = this.pendingUpdates;
238
+ this.pendingUpdates = [];
239
+ // Process up to 5 updates at a time
240
+ for (const update of updates.slice(0, 5)) {
241
+ try {
242
+ await update();
243
+ }
244
+ catch (error) {
245
+ console.error('Edge mode async update failed:', error);
246
+ }
247
+ }
248
+ // Re-queue remaining updates
249
+ if (updates.length > 5) {
250
+ this.pendingUpdates = updates.slice(5);
251
+ this.updateTimer = setTimeout(() => {
252
+ this.processAsyncUpdates();
253
+ }, 100);
254
+ }
255
+ }
256
+ /**
257
+ * Perform lightweight parameter update
258
+ */
259
+ async performLightweightUpdate(trajectories, learningRate) {
260
+ // Simple exponential moving average update
261
+ const alpha = learningRate;
262
+ for (const trajectory of trajectories) {
263
+ if (trajectory.steps.length === 0)
264
+ continue;
265
+ // Update compressed patterns based on trajectory success
266
+ const lastStep = trajectory.steps[trajectory.steps.length - 1];
267
+ const pattern = this.findSimilarCompressedPattern(lastStep.stateAfter);
268
+ if (pattern) {
269
+ // Update success rate with EMA
270
+ const newRate = alpha * trajectory.qualityScore + (1 - alpha) * (pattern.successRate / 255);
271
+ pattern.successRate = Math.round(newRate * 255);
272
+ pattern.usageCount = Math.min(255, pattern.usageCount + 1);
273
+ }
274
+ }
275
+ }
276
+ /**
277
+ * Find most similar compressed pattern
278
+ */
279
+ findSimilarCompressedPattern(embedding) {
280
+ const compressed = this.compressEmbedding(embedding);
281
+ let best = null;
282
+ let bestSim = -1;
283
+ for (const pattern of this.compressedPatterns.values()) {
284
+ const sim = this.compressedSimilarity(compressed, pattern.embedding);
285
+ if (sim > bestSim) {
286
+ bestSim = sim;
287
+ best = pattern;
288
+ }
289
+ }
290
+ return best;
291
+ }
292
+ /**
293
+ * Estimate memory usage in MB
294
+ */
295
+ estimateMemoryUsage() {
296
+ let bytes = 0;
297
+ // Compressed patterns
298
+ for (const pattern of this.compressedPatterns.values()) {
299
+ bytes += pattern.embedding.byteLength + 8; // embedding + overhead
300
+ }
301
+ // Quantized weights
302
+ for (const weights of this.quantizedWeights.values()) {
303
+ bytes += weights.byteLength;
304
+ }
305
+ // Pending updates (minimal)
306
+ bytes += this.pendingUpdates.length * 100;
307
+ return bytes / (1024 * 1024);
308
+ }
309
+ }
310
+ //# sourceMappingURL=edge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge.js","sourceRoot":"","sources":["edge.ts"],"names":[],"mappings":"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"}