agentic-flow 2.0.0-alpha → 2.0.1-alpha

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 (81) hide show
  1. package/README.md +320 -23
  2. package/agentic-flow/.claude/agents/base-template-generator.md +229 -3
  3. package/agentic-flow/.claude/agents/core/coder.md +212 -7
  4. package/agentic-flow/.claude/agents/core/planner.md +228 -7
  5. package/agentic-flow/.claude/agents/core/researcher.md +205 -10
  6. package/agentic-flow/.claude/agents/core/reviewer.md +216 -5
  7. package/agentic-flow/.claude/agents/core/tester.md +213 -3
  8. package/agentic-flow/.claude/agents/data/ml/data-ml-model.md +256 -5
  9. package/agentic-flow/.claude/agents/development/backend/dev-backend-api.md +209 -6
  10. package/agentic-flow/.claude/agents/documentation/api-docs/docs-api-openapi.md +185 -5
  11. package/agentic-flow/.claude/agents/github/code-review-swarm.md +307 -468
  12. package/agentic-flow/.claude/agents/github/issue-tracker.md +270 -13
  13. package/agentic-flow/.claude/agents/github/pr-manager.md +259 -12
  14. package/agentic-flow/.claude/agents/github/release-manager.md +253 -15
  15. package/agentic-flow/.claude/agents/github/workflow-automation.md +277 -9
  16. package/agentic-flow/.claude/agents/sona/sona-learning-optimizer.md +496 -0
  17. package/agentic-flow/.claude/agents/sparc/architecture.md +231 -4
  18. package/agentic-flow/.claude/agents/sparc/pseudocode.md +206 -4
  19. package/agentic-flow/.claude/agents/sparc/refinement.md +283 -6
  20. package/agentic-flow/.claude/agents/sparc/specification.md +205 -3
  21. package/agentic-flow/.claude/agents/swarm/adaptive-coordinator.md +731 -0
  22. package/agentic-flow/.claude/agents/swarm/hierarchical-coordinator.md +455 -1
  23. package/agentic-flow/.claude/agents/swarm/mesh-coordinator.md +571 -0
  24. package/agentic-flow/.claude/agents/templates/sparc-coordinator.md +336 -5
  25. package/agentic-flow/dist/cli/commands/sona-train.d.ts.map +1 -0
  26. package/agentic-flow/dist/cli/commands/sona-train.js +295 -0
  27. package/agentic-flow/dist/cli/commands/sona-train.js.map +1 -0
  28. package/agentic-flow/dist/cli/commands/sona.d.ts.map +1 -0
  29. package/agentic-flow/dist/cli/commands/sona.js +290 -0
  30. package/agentic-flow/dist/cli/commands/sona.js.map +1 -0
  31. package/agentic-flow/dist/core/agentdb-fast.d.ts.map +1 -0
  32. package/agentic-flow/dist/core/agentdb-fast.js +299 -0
  33. package/agentic-flow/dist/core/agentdb-fast.js.map +1 -0
  34. package/agentic-flow/dist/core/attention-fallbacks.d.ts.map +1 -0
  35. package/agentic-flow/dist/core/attention-fallbacks.js +321 -0
  36. package/agentic-flow/dist/core/attention-fallbacks.js.map +1 -0
  37. package/agentic-flow/dist/core/embedding-service.d.ts.map +1 -0
  38. package/agentic-flow/dist/core/embedding-service.js +370 -0
  39. package/agentic-flow/dist/core/embedding-service.js.map +1 -0
  40. package/agentic-flow/dist/core/gnn-wrapper.d.ts.map +1 -0
  41. package/agentic-flow/dist/core/gnn-wrapper.js +236 -0
  42. package/agentic-flow/dist/core/gnn-wrapper.js.map +1 -0
  43. package/agentic-flow/dist/core/index.d.ts.map +1 -1
  44. package/agentic-flow/dist/core/index.js +80 -3
  45. package/agentic-flow/dist/core/index.js.map +1 -1
  46. package/agentic-flow/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
  47. package/agentic-flow/dist/mcp/claudeFlowSdkServer.js +109 -0
  48. package/agentic-flow/dist/mcp/claudeFlowSdkServer.js.map +1 -1
  49. package/agentic-flow/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -0
  50. package/agentic-flow/dist/mcp/tools/agent-booster-tools.js +262 -0
  51. package/agentic-flow/dist/mcp/tools/agent-booster-tools.js.map +1 -0
  52. package/agentic-flow/dist/mcp/tools/sona-tools.d.ts.map +1 -0
  53. package/agentic-flow/dist/mcp/tools/sona-tools.js +560 -0
  54. package/agentic-flow/dist/mcp/tools/sona-tools.js.map +1 -0
  55. package/agentic-flow/dist/optimizations/agent-booster-migration.d.ts.map +1 -0
  56. package/agentic-flow/dist/optimizations/agent-booster-migration.js +323 -0
  57. package/agentic-flow/dist/optimizations/agent-booster-migration.js.map +1 -0
  58. package/agentic-flow/dist/optimizations/configuration-tuning.d.ts.map +1 -0
  59. package/agentic-flow/dist/optimizations/configuration-tuning.js +422 -0
  60. package/agentic-flow/dist/optimizations/configuration-tuning.js.map +1 -0
  61. package/agentic-flow/dist/optimizations/ruvector-backend.d.ts.map +1 -0
  62. package/agentic-flow/dist/optimizations/ruvector-backend.js +464 -0
  63. package/agentic-flow/dist/optimizations/ruvector-backend.js.map +1 -0
  64. package/agentic-flow/dist/services/embedding-service.d.ts.map +1 -0
  65. package/agentic-flow/dist/services/embedding-service.js +367 -0
  66. package/agentic-flow/dist/services/embedding-service.js.map +1 -0
  67. package/agentic-flow/dist/services/sona-agent-training.d.ts.map +1 -0
  68. package/agentic-flow/dist/services/sona-agent-training.js +382 -0
  69. package/agentic-flow/dist/services/sona-agent-training.js.map +1 -0
  70. package/agentic-flow/dist/services/sona-agentdb-integration.d.ts.map +1 -0
  71. package/agentic-flow/dist/services/sona-agentdb-integration.js +346 -0
  72. package/agentic-flow/dist/services/sona-agentdb-integration.js.map +1 -0
  73. package/agentic-flow/dist/services/sona-service.d.ts.map +1 -0
  74. package/agentic-flow/dist/services/sona-service.js +448 -0
  75. package/agentic-flow/dist/services/sona-service.js.map +1 -0
  76. package/agentic-flow/dist/services/sona-types.d.ts.map +1 -0
  77. package/agentic-flow/dist/services/sona-types.js +59 -0
  78. package/agentic-flow/dist/services/sona-types.js.map +1 -0
  79. package/docs/README.md +27 -2
  80. package/package.json +12 -2
  81. package/docs/AGENTIC_JUJUTSU_QUICKSTART.md +0 -491
@@ -0,0 +1,448 @@
1
+ /**
2
+ * SONA Service - Self-Optimizing Neural Architecture
3
+ *
4
+ * Production implementation based on vibecast test-ruvector-sona patterns
5
+ * Achieves +55.3% quality improvement with optimal configuration
6
+ *
7
+ * Key Performance Metrics:
8
+ * - 2211 ops/sec throughput
9
+ * - 18.07ms total overhead (40 layers)
10
+ * - 0.452ms per-layer cost
11
+ * - Sub-millisecond token latency
12
+ *
13
+ * Based on: https://github.com/ruvnet/vibecast/tree/claude/test-ruvector-sona-01Raj3Q3P4qjff4JGVipJhvz
14
+ */
15
+ import { SonaEngine } from '@ruvector/sona';
16
+ import { EventEmitter } from 'events';
17
+ /**
18
+ * SONA Service - Main orchestration class
19
+ */
20
+ export class SONAService extends EventEmitter {
21
+ engine;
22
+ config;
23
+ trajectories;
24
+ stats;
25
+ constructor(config) {
26
+ super();
27
+ // Apply profile or custom config
28
+ this.config = this.resolveConfig(config);
29
+ // Initialize SONA engine
30
+ this.engine = SonaEngine.withConfig({
31
+ hiddenDim: this.config.hiddenDim,
32
+ embeddingDim: this.config.embeddingDim,
33
+ microLoraRank: this.config.microLoraRank,
34
+ baseLoraRank: this.config.baseLoraRank,
35
+ microLoraLr: this.config.microLoraLr,
36
+ baseLoraLr: this.config.baseLoraLr,
37
+ ewcLambda: this.config.ewcLambda,
38
+ patternClusters: this.config.patternClusters,
39
+ trajectoryCapacity: this.config.trajectoryCapacity,
40
+ backgroundIntervalMs: this.config.backgroundIntervalMs,
41
+ qualityThreshold: this.config.qualityThreshold,
42
+ enableSimd: this.config.enableSimd
43
+ });
44
+ this.trajectories = new Map();
45
+ this.stats = {
46
+ totalTrajectories: 0,
47
+ activeTrajectories: 0,
48
+ completedTrajectories: 0,
49
+ totalLearningCycles: 0,
50
+ avgQualityScore: 0,
51
+ totalOpsProcessed: 0
52
+ };
53
+ this.emit('sona:initialized', { config: this.config });
54
+ }
55
+ /**
56
+ * Resolve configuration from profile or custom settings
57
+ */
58
+ resolveConfig(config) {
59
+ const profile = config?.profile || 'balanced';
60
+ // Profile-based configurations (from vibecast KEY_FINDINGS.md)
61
+ const profiles = {
62
+ // Real-Time: Rank-2, 25 clusters, 0.7 threshold → 2200 ops/sec, <0.5ms
63
+ 'real-time': {
64
+ hiddenDim: 3072,
65
+ embeddingDim: 1536,
66
+ microLoraRank: 2,
67
+ baseLoraRank: 4,
68
+ microLoraLr: 0.001,
69
+ baseLoraLr: 0.0001,
70
+ ewcLambda: 1000,
71
+ patternClusters: 25,
72
+ trajectoryCapacity: 1000,
73
+ backgroundIntervalMs: 3600000,
74
+ qualityThreshold: 0.7,
75
+ enableSimd: true
76
+ },
77
+ // Batch Processing: Rank-2, rank-8, 5000 capacity
78
+ 'batch': {
79
+ hiddenDim: 3072,
80
+ embeddingDim: 1536,
81
+ microLoraRank: 2,
82
+ baseLoraRank: 8,
83
+ microLoraLr: 0.002,
84
+ baseLoraLr: 0.0001,
85
+ ewcLambda: 2000,
86
+ patternClusters: 50,
87
+ trajectoryCapacity: 5000,
88
+ backgroundIntervalMs: 1800000,
89
+ qualityThreshold: 0.4,
90
+ enableSimd: true
91
+ },
92
+ // Research/Fine-Tuning: Rank-2 micro, rank-16 base, LR 0.002, threshold 0.2
93
+ // Maximum Quality: +55% improvement
94
+ 'research': {
95
+ hiddenDim: 3072,
96
+ embeddingDim: 1536,
97
+ microLoraRank: 2,
98
+ baseLoraRank: 16,
99
+ microLoraLr: 0.002, // Sweet spot for quality gains
100
+ baseLoraLr: 0.0001,
101
+ ewcLambda: 2500,
102
+ patternClusters: 100,
103
+ trajectoryCapacity: 10000,
104
+ backgroundIntervalMs: 900000,
105
+ qualityThreshold: 0.2, // Learn from more data
106
+ enableSimd: true
107
+ },
108
+ // Edge/Mobile: Rank-1, 200 capacity, 15 clusters → <5MB memory
109
+ 'edge': {
110
+ hiddenDim: 768,
111
+ embeddingDim: 384,
112
+ microLoraRank: 1,
113
+ baseLoraRank: 2,
114
+ microLoraLr: 0.001,
115
+ baseLoraLr: 0.0001,
116
+ ewcLambda: 1000,
117
+ patternClusters: 15,
118
+ trajectoryCapacity: 200,
119
+ backgroundIntervalMs: 7200000,
120
+ qualityThreshold: 0.5,
121
+ enableSimd: false
122
+ },
123
+ // Balanced: Rank-2, rank-8, 0.4 threshold → 18ms, +25% quality
124
+ 'balanced': {
125
+ hiddenDim: 3072,
126
+ embeddingDim: 1536,
127
+ microLoraRank: 2,
128
+ baseLoraRank: 8,
129
+ microLoraLr: 0.002,
130
+ baseLoraLr: 0.0001,
131
+ ewcLambda: 2000,
132
+ patternClusters: 50,
133
+ trajectoryCapacity: 5000,
134
+ backgroundIntervalMs: 1800000,
135
+ qualityThreshold: 0.4,
136
+ enableSimd: true
137
+ },
138
+ // Custom: User-provided configuration
139
+ 'custom': {}
140
+ };
141
+ const profileConfig = profiles[profile];
142
+ return {
143
+ hiddenDim: 3072,
144
+ embeddingDim: 1536,
145
+ microLoraRank: 2,
146
+ baseLoraRank: 8,
147
+ microLoraLr: 0.002,
148
+ baseLoraLr: 0.0001,
149
+ ewcLambda: 2000,
150
+ patternClusters: 50,
151
+ trajectoryCapacity: 5000,
152
+ backgroundIntervalMs: 1800000,
153
+ qualityThreshold: 0.4,
154
+ enableSimd: true,
155
+ ...profileConfig,
156
+ ...config
157
+ };
158
+ }
159
+ /**
160
+ * Begin a new trajectory
161
+ */
162
+ beginTrajectory(embedding, route) {
163
+ const id = this.engine.beginTrajectory(embedding);
164
+ const metadata = {
165
+ id,
166
+ embedding,
167
+ route,
168
+ contexts: [],
169
+ steps: [],
170
+ startTime: Date.now()
171
+ };
172
+ this.trajectories.set(id, metadata);
173
+ this.stats.totalTrajectories++;
174
+ this.stats.activeTrajectories++;
175
+ if (route) {
176
+ this.engine.setTrajectoryRoute(id, route);
177
+ }
178
+ this.emit('trajectory:begin', { id, route });
179
+ return id;
180
+ }
181
+ /**
182
+ * Add a step to an active trajectory
183
+ */
184
+ addTrajectoryStep(trajectoryId, activations, attentionWeights, reward) {
185
+ const metadata = this.trajectories.get(trajectoryId);
186
+ if (!metadata) {
187
+ throw new Error(`Trajectory ${trajectoryId} not found`);
188
+ }
189
+ this.engine.addTrajectoryStep(trajectoryId, activations, attentionWeights, reward);
190
+ metadata.steps.push({
191
+ activations,
192
+ attentionWeights,
193
+ reward,
194
+ timestamp: Date.now()
195
+ });
196
+ this.emit('trajectory:step', { trajectoryId, step: metadata.steps.length });
197
+ }
198
+ /**
199
+ * Add context to a trajectory
200
+ */
201
+ addTrajectoryContext(trajectoryId, contextId) {
202
+ const metadata = this.trajectories.get(trajectoryId);
203
+ if (!metadata) {
204
+ throw new Error(`Trajectory ${trajectoryId} not found`);
205
+ }
206
+ this.engine.addTrajectoryContext(trajectoryId, contextId);
207
+ metadata.contexts.push(contextId);
208
+ this.emit('trajectory:context', { trajectoryId, contextId });
209
+ }
210
+ /**
211
+ * End a trajectory with quality score
212
+ */
213
+ endTrajectory(trajectoryId, qualityScore) {
214
+ const metadata = this.trajectories.get(trajectoryId);
215
+ if (!metadata) {
216
+ throw new Error(`Trajectory ${trajectoryId} not found`);
217
+ }
218
+ this.engine.endTrajectory(trajectoryId, qualityScore);
219
+ metadata.endTime = Date.now();
220
+ metadata.qualityScore = qualityScore;
221
+ this.stats.activeTrajectories--;
222
+ this.stats.completedTrajectories++;
223
+ this.stats.avgQualityScore =
224
+ (this.stats.avgQualityScore * (this.stats.completedTrajectories - 1) + qualityScore) /
225
+ this.stats.completedTrajectories;
226
+ this.emit('trajectory:end', {
227
+ trajectoryId,
228
+ qualityScore,
229
+ duration: metadata.endTime - metadata.startTime,
230
+ steps: metadata.steps.length
231
+ });
232
+ // Check if we should trigger learning
233
+ this.checkLearningTrigger();
234
+ }
235
+ /**
236
+ * Apply Micro-LoRA to input
237
+ */
238
+ applyMicroLora(input) {
239
+ const output = this.engine.applyMicroLora(input);
240
+ this.stats.totalOpsProcessed++;
241
+ return output;
242
+ }
243
+ /**
244
+ * Apply Base-LoRA to layer
245
+ */
246
+ applyBaseLora(layerIndex, input) {
247
+ const output = this.engine.applyBaseLora(layerIndex, input);
248
+ this.stats.totalOpsProcessed++;
249
+ return output;
250
+ }
251
+ /**
252
+ * Find similar patterns
253
+ */
254
+ findPatterns(query, k = 3) {
255
+ // Route with k=3 patterns for 761 decisions/sec throughput (from KEY_FINDINGS)
256
+ const patterns = this.engine.findPatterns(query, k);
257
+ return patterns.map(p => ({
258
+ id: p.id,
259
+ centroid: p.centroid,
260
+ clusterSize: p.clusterSize,
261
+ avgQuality: p.avgQuality,
262
+ patternType: p.patternType,
263
+ similarity: this.calculateSimilarity(query, p.centroid)
264
+ }));
265
+ }
266
+ /**
267
+ * Calculate cosine similarity between vectors
268
+ */
269
+ calculateSimilarity(a, b) {
270
+ const dotProduct = a.reduce((sum, val, i) => sum + val * b[i], 0);
271
+ const magA = Math.sqrt(a.reduce((sum, val) => sum + val * val, 0));
272
+ const magB = Math.sqrt(b.reduce((sum, val) => sum + val * val, 0));
273
+ return dotProduct / (magA * magB);
274
+ }
275
+ /**
276
+ * Force learning cycle
277
+ */
278
+ forceLearn() {
279
+ const status = this.engine.forceLearn();
280
+ this.stats.totalLearningCycles++;
281
+ this.emit('learning:cycle', { status });
282
+ return {
283
+ success: true,
284
+ patternsLearned: this.engine.getStats().split('\n').length
285
+ };
286
+ }
287
+ /**
288
+ * Check if learning should be triggered
289
+ * Trigger forceLearn() when 80% of trajectory capacity is full
290
+ */
291
+ checkLearningTrigger() {
292
+ const utilizationThreshold = 0.8;
293
+ const currentUtilization = this.stats.activeTrajectories / this.config.trajectoryCapacity;
294
+ if (currentUtilization >= utilizationThreshold) {
295
+ this.emit('learning:trigger', {
296
+ utilization: currentUtilization,
297
+ threshold: utilizationThreshold
298
+ });
299
+ this.forceLearn();
300
+ }
301
+ }
302
+ /**
303
+ * Tick for scheduled learning
304
+ */
305
+ tick() {
306
+ this.engine.tick();
307
+ }
308
+ /**
309
+ * Get engine statistics
310
+ */
311
+ getEngineStats() {
312
+ return this.engine.getStats();
313
+ }
314
+ /**
315
+ * Get service statistics
316
+ */
317
+ getStats() {
318
+ return {
319
+ ...this.stats,
320
+ config: this.config,
321
+ engineEnabled: this.engine.isEnabled(),
322
+ trajectoryUtilization: this.stats.activeTrajectories / this.config.trajectoryCapacity,
323
+ avgTrajectoryDuration: this.calculateAvgTrajectoryDuration(),
324
+ opsPerSecond: this.calculateOpsPerSecond()
325
+ };
326
+ }
327
+ /**
328
+ * Calculate average trajectory duration
329
+ */
330
+ calculateAvgTrajectoryDuration() {
331
+ let totalDuration = 0;
332
+ let count = 0;
333
+ for (const trajectory of this.trajectories.values()) {
334
+ if (trajectory.endTime) {
335
+ totalDuration += trajectory.endTime - trajectory.startTime;
336
+ count++;
337
+ }
338
+ }
339
+ return count > 0 ? totalDuration / count : 0;
340
+ }
341
+ /**
342
+ * Calculate operations per second
343
+ */
344
+ calculateOpsPerSecond() {
345
+ // Simple estimation based on total ops and service uptime
346
+ // In production, use a sliding window
347
+ return this.stats.totalOpsProcessed / ((Date.now() - this.stats.totalTrajectories) / 1000);
348
+ }
349
+ /**
350
+ * Enable/disable engine
351
+ */
352
+ setEnabled(enabled) {
353
+ this.engine.setEnabled(enabled);
354
+ this.emit('engine:enabled', { enabled });
355
+ }
356
+ /**
357
+ * Check if engine is enabled
358
+ */
359
+ isEnabled() {
360
+ return this.engine.isEnabled();
361
+ }
362
+ /**
363
+ * Flush engine state
364
+ */
365
+ flush() {
366
+ this.engine.flush();
367
+ this.emit('engine:flushed');
368
+ }
369
+ /**
370
+ * Get trajectory metadata
371
+ */
372
+ getTrajectory(trajectoryId) {
373
+ return this.trajectories.get(trajectoryId);
374
+ }
375
+ /**
376
+ * Get all active trajectories
377
+ */
378
+ getActiveTrajectories() {
379
+ return Array.from(this.trajectories.values()).filter(t => !t.endTime);
380
+ }
381
+ }
382
+ /**
383
+ * Create singleton SONA service instances for different use cases
384
+ */
385
+ export const sonaServices = {
386
+ realtime: new SONAService({ profile: 'real-time' }),
387
+ batch: new SONAService({ profile: 'batch' }),
388
+ research: new SONAService({ profile: 'research' }),
389
+ edge: new SONAService({ profile: 'edge' }),
390
+ balanced: new SONAService({ profile: 'balanced' })
391
+ };
392
+ /**
393
+ * Default SONA service (balanced profile)
394
+ */
395
+ export const sonaService = sonaServices.balanced;
396
+ /**
397
+ * Convenience function to create custom SONA service
398
+ */
399
+ export function createSONAService(config) {
400
+ return new SONAService(config);
401
+ }
402
+ /**
403
+ * Example usage based on vibecast sona.test.js patterns
404
+ */
405
+ export async function exampleUsage() {
406
+ console.log('🧠 SONA Service Example\n');
407
+ // Use balanced profile service
408
+ const sona = sonaService;
409
+ // Example 1: Begin trajectory
410
+ const embedding = Array.from({ length: 1536 }, () => Math.random());
411
+ const trajectoryId = sona.beginTrajectory(embedding, 'claude-sonnet-4-5');
412
+ console.log(`Started trajectory: ${trajectoryId}`);
413
+ // Example 2: Add steps
414
+ for (let i = 0; i < 5; i++) {
415
+ const activations = Array.from({ length: 3072 }, () => Math.random());
416
+ const attentionWeights = Array.from({ length: 40 }, () => Math.random());
417
+ const reward = 0.8 + Math.random() * 0.2;
418
+ sona.addTrajectoryStep(trajectoryId, activations, attentionWeights, reward);
419
+ }
420
+ // Example 3: Add context
421
+ sona.addTrajectoryContext(trajectoryId, 'task-code-review');
422
+ // Example 4: End trajectory
423
+ sona.endTrajectory(trajectoryId, 0.92);
424
+ // Example 5: Find patterns
425
+ const query = Array.from({ length: 1536 }, () => Math.random());
426
+ const patterns = sona.findPatterns(query, 3);
427
+ console.log(`\nFound ${patterns.length} similar patterns:`);
428
+ patterns.forEach((p, i) => {
429
+ console.log(` ${i + 1}. Quality: ${p.avgQuality.toFixed(2)}, Similarity: ${p.similarity.toFixed(3)}`);
430
+ });
431
+ // Example 6: Apply LoRA
432
+ const input = Array.from({ length: 3072 }, () => Math.random());
433
+ const output = sona.applyMicroLora(input);
434
+ console.log(`\nApplied Micro-LoRA to ${input.length}D vector`);
435
+ // Example 7: Statistics
436
+ const stats = sona.getStats();
437
+ console.log('\nSONA Statistics:');
438
+ console.log(` Total Trajectories: ${stats.totalTrajectories}`);
439
+ console.log(` Completed: ${stats.completedTrajectories}`);
440
+ console.log(` Avg Quality: ${stats.avgQualityScore.toFixed(2)}`);
441
+ console.log(` Total Ops: ${stats.totalOpsProcessed}`);
442
+ console.log(` Capacity Utilization: ${(stats.trajectoryUtilization * 100).toFixed(1)}%`);
443
+ }
444
+ // Auto-run example if executed directly
445
+ if (require.main === module) {
446
+ exampleUsage().catch(console.error);
447
+ }
448
+ //# sourceMappingURL=sona-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sona-service.js","sourceRoot":"","sources":["../../src/services/sona-service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * SONA Service - Self-Optimizing Neural Architecture\n *\n * Production implementation based on vibecast test-ruvector-sona patterns\n * Achieves +55.3% quality improvement with optimal configuration\n *\n * Key Performance Metrics:\n * - 2211 ops/sec throughput\n * - 18.07ms total overhead (40 layers)\n * - 0.452ms per-layer cost\n * - Sub-millisecond token latency\n *\n * Based on: https://github.com/ruvnet/vibecast/tree/claude/test-ruvector-sona-01Raj3Q3P4qjff4JGVipJhvz\n */\n\nimport { SonaEngine } from '@ruvector/sona';\nimport { EventEmitter } from 'events';\n\n/**\n * SONA Configuration Profiles\n */\nexport type SONAProfile = 'real-time' | 'batch' | 'research' | 'edge' | 'balanced' | 'custom';\n\nexport interface SONAConfig {\n profile?: SONAProfile;\n\n // Model dimensions\n hiddenDim: number; // Must match model dimensions (e.g., 3072 for Phi-4)\n embeddingDim: number; // Embedding dimension (e.g., 1536 for OpenAI)\n\n // LoRA configuration\n microLoraRank: number; // Rank-2 is faster than rank-1 (SIMD optimization)\n baseLoraRank: number; // Base LoRA rank (4, 8, 16)\n microLoraLr: number; // Learning rate: 0.002 is sweet spot\n baseLoraLr: number; // Base learning rate\n\n // EWC++ (Elastic Weight Consolidation)\n ewcLambda: number; // 2000-2500 prevents catastrophic forgetting\n\n // Pattern clustering\n patternClusters: number; // 100 clusters: breakpoint for latency (3.0ms → 1.3ms)\n\n // Trajectory management\n trajectoryCapacity: number; // Trigger forceLearn() at 80% utilization\n backgroundIntervalMs: number;\n qualityThreshold: number; // 0.2-0.4 for optimal learning\n\n // Performance\n enableSimd: boolean; // +10% performance acceleration\n}\n\nexport interface TrajectoryMetadata {\n id: string;\n embedding: number[];\n route?: string; // LLM model used (e.g., 'claude-sonnet-4-5')\n contexts: string[]; // Context IDs\n steps: TrajectoryStep[];\n startTime: number;\n endTime?: number;\n qualityScore?: number;\n}\n\nexport interface TrajectoryStep {\n activations: number[];\n attentionWeights: number[];\n reward: number;\n timestamp: number;\n}\n\nexport interface PatternMatch {\n id: string;\n centroid: number[];\n clusterSize: number;\n avgQuality: number;\n patternType: string;\n similarity: number;\n}\n\n/**\n * SONA Service - Main orchestration class\n */\nexport class SONAService extends EventEmitter {\n private engine: SonaEngine;\n private config: SONAConfig;\n private trajectories: Map<string, TrajectoryMetadata>;\n private stats: {\n totalTrajectories: number;\n activeTrajectories: number;\n completedTrajectories: number;\n totalLearningCycles: number;\n avgQualityScore: number;\n totalOpsProcessed: number;\n };\n\n constructor(config?: Partial<SONAConfig>) {\n super();\n\n // Apply profile or custom config\n this.config = this.resolveConfig(config);\n\n // Initialize SONA engine\n this.engine = SonaEngine.withConfig({\n hiddenDim: this.config.hiddenDim,\n embeddingDim: this.config.embeddingDim,\n microLoraRank: this.config.microLoraRank,\n baseLoraRank: this.config.baseLoraRank,\n microLoraLr: this.config.microLoraLr,\n baseLoraLr: this.config.baseLoraLr,\n ewcLambda: this.config.ewcLambda,\n patternClusters: this.config.patternClusters,\n trajectoryCapacity: this.config.trajectoryCapacity,\n backgroundIntervalMs: this.config.backgroundIntervalMs,\n qualityThreshold: this.config.qualityThreshold,\n enableSimd: this.config.enableSimd\n });\n\n this.trajectories = new Map();\n this.stats = {\n totalTrajectories: 0,\n activeTrajectories: 0,\n completedTrajectories: 0,\n totalLearningCycles: 0,\n avgQualityScore: 0,\n totalOpsProcessed: 0\n };\n\n this.emit('sona:initialized', { config: this.config });\n }\n\n /**\n * Resolve configuration from profile or custom settings\n */\n private resolveConfig(config?: Partial<SONAConfig>): SONAConfig {\n const profile = config?.profile || 'balanced';\n\n // Profile-based configurations (from vibecast KEY_FINDINGS.md)\n const profiles: Record<SONAProfile, Partial<SONAConfig>> = {\n // Real-Time: Rank-2, 25 clusters, 0.7 threshold → 2200 ops/sec, <0.5ms\n 'real-time': {\n hiddenDim: 3072,\n embeddingDim: 1536,\n microLoraRank: 2,\n baseLoraRank: 4,\n microLoraLr: 0.001,\n baseLoraLr: 0.0001,\n ewcLambda: 1000,\n patternClusters: 25,\n trajectoryCapacity: 1000,\n backgroundIntervalMs: 3600000,\n qualityThreshold: 0.7,\n enableSimd: true\n },\n\n // Batch Processing: Rank-2, rank-8, 5000 capacity\n 'batch': {\n hiddenDim: 3072,\n embeddingDim: 1536,\n microLoraRank: 2,\n baseLoraRank: 8,\n microLoraLr: 0.002,\n baseLoraLr: 0.0001,\n ewcLambda: 2000,\n patternClusters: 50,\n trajectoryCapacity: 5000,\n backgroundIntervalMs: 1800000,\n qualityThreshold: 0.4,\n enableSimd: true\n },\n\n // Research/Fine-Tuning: Rank-2 micro, rank-16 base, LR 0.002, threshold 0.2\n // Maximum Quality: +55% improvement\n 'research': {\n hiddenDim: 3072,\n embeddingDim: 1536,\n microLoraRank: 2,\n baseLoraRank: 16,\n microLoraLr: 0.002, // Sweet spot for quality gains\n baseLoraLr: 0.0001,\n ewcLambda: 2500,\n patternClusters: 100,\n trajectoryCapacity: 10000,\n backgroundIntervalMs: 900000,\n qualityThreshold: 0.2, // Learn from more data\n enableSimd: true\n },\n\n // Edge/Mobile: Rank-1, 200 capacity, 15 clusters → <5MB memory\n 'edge': {\n hiddenDim: 768,\n embeddingDim: 384,\n microLoraRank: 1,\n baseLoraRank: 2,\n microLoraLr: 0.001,\n baseLoraLr: 0.0001,\n ewcLambda: 1000,\n patternClusters: 15,\n trajectoryCapacity: 200,\n backgroundIntervalMs: 7200000,\n qualityThreshold: 0.5,\n enableSimd: false\n },\n\n // Balanced: Rank-2, rank-8, 0.4 threshold → 18ms, +25% quality\n 'balanced': {\n hiddenDim: 3072,\n embeddingDim: 1536,\n microLoraRank: 2,\n baseLoraRank: 8,\n microLoraLr: 0.002,\n baseLoraLr: 0.0001,\n ewcLambda: 2000,\n patternClusters: 50,\n trajectoryCapacity: 5000,\n backgroundIntervalMs: 1800000,\n qualityThreshold: 0.4,\n enableSimd: true\n },\n\n // Custom: User-provided configuration\n 'custom': {}\n };\n\n const profileConfig = profiles[profile];\n\n return {\n hiddenDim: 3072,\n embeddingDim: 1536,\n microLoraRank: 2,\n baseLoraRank: 8,\n microLoraLr: 0.002,\n baseLoraLr: 0.0001,\n ewcLambda: 2000,\n patternClusters: 50,\n trajectoryCapacity: 5000,\n backgroundIntervalMs: 1800000,\n qualityThreshold: 0.4,\n enableSimd: true,\n ...profileConfig,\n ...config\n };\n }\n\n /**\n * Begin a new trajectory\n */\n beginTrajectory(embedding: number[], route?: string): string {\n const id = this.engine.beginTrajectory(embedding);\n\n const metadata: TrajectoryMetadata = {\n id,\n embedding,\n route,\n contexts: [],\n steps: [],\n startTime: Date.now()\n };\n\n this.trajectories.set(id, metadata);\n this.stats.totalTrajectories++;\n this.stats.activeTrajectories++;\n\n if (route) {\n this.engine.setTrajectoryRoute(id, route);\n }\n\n this.emit('trajectory:begin', { id, route });\n\n return id;\n }\n\n /**\n * Add a step to an active trajectory\n */\n addTrajectoryStep(\n trajectoryId: string,\n activations: number[],\n attentionWeights: number[],\n reward: number\n ): void {\n const metadata = this.trajectories.get(trajectoryId);\n if (!metadata) {\n throw new Error(`Trajectory ${trajectoryId} not found`);\n }\n\n this.engine.addTrajectoryStep(trajectoryId, activations, attentionWeights, reward);\n\n metadata.steps.push({\n activations,\n attentionWeights,\n reward,\n timestamp: Date.now()\n });\n\n this.emit('trajectory:step', { trajectoryId, step: metadata.steps.length });\n }\n\n /**\n * Add context to a trajectory\n */\n addTrajectoryContext(trajectoryId: string, contextId: string): void {\n const metadata = this.trajectories.get(trajectoryId);\n if (!metadata) {\n throw new Error(`Trajectory ${trajectoryId} not found`);\n }\n\n this.engine.addTrajectoryContext(trajectoryId, contextId);\n metadata.contexts.push(contextId);\n\n this.emit('trajectory:context', { trajectoryId, contextId });\n }\n\n /**\n * End a trajectory with quality score\n */\n endTrajectory(trajectoryId: string, qualityScore: number): void {\n const metadata = this.trajectories.get(trajectoryId);\n if (!metadata) {\n throw new Error(`Trajectory ${trajectoryId} not found`);\n }\n\n this.engine.endTrajectory(trajectoryId, qualityScore);\n\n metadata.endTime = Date.now();\n metadata.qualityScore = qualityScore;\n\n this.stats.activeTrajectories--;\n this.stats.completedTrajectories++;\n this.stats.avgQualityScore =\n (this.stats.avgQualityScore * (this.stats.completedTrajectories - 1) + qualityScore) /\n this.stats.completedTrajectories;\n\n this.emit('trajectory:end', {\n trajectoryId,\n qualityScore,\n duration: metadata.endTime - metadata.startTime,\n steps: metadata.steps.length\n });\n\n // Check if we should trigger learning\n this.checkLearningTrigger();\n }\n\n /**\n * Apply Micro-LoRA to input\n */\n applyMicroLora(input: number[]): number[] {\n const output = this.engine.applyMicroLora(input);\n this.stats.totalOpsProcessed++;\n return output;\n }\n\n /**\n * Apply Base-LoRA to layer\n */\n applyBaseLora(layerIndex: number, input: number[]): number[] {\n const output = this.engine.applyBaseLora(layerIndex, input);\n this.stats.totalOpsProcessed++;\n return output;\n }\n\n /**\n * Find similar patterns\n */\n findPatterns(query: number[], k: number = 3): PatternMatch[] {\n // Route with k=3 patterns for 761 decisions/sec throughput (from KEY_FINDINGS)\n const patterns = this.engine.findPatterns(query, k);\n\n return patterns.map(p => ({\n id: p.id,\n centroid: p.centroid,\n clusterSize: p.clusterSize,\n avgQuality: p.avgQuality,\n patternType: p.patternType,\n similarity: this.calculateSimilarity(query, p.centroid)\n }));\n }\n\n /**\n * Calculate cosine similarity between vectors\n */\n private calculateSimilarity(a: number[], b: number[]): number {\n const dotProduct = a.reduce((sum, val, i) => sum + val * b[i], 0);\n const magA = Math.sqrt(a.reduce((sum, val) => sum + val * val, 0));\n const magB = Math.sqrt(b.reduce((sum, val) => sum + val * val, 0));\n return dotProduct / (magA * magB);\n }\n\n /**\n * Force learning cycle\n */\n forceLearn(): { success: boolean; patternsLearned: number } {\n const status = this.engine.forceLearn();\n this.stats.totalLearningCycles++;\n\n this.emit('learning:cycle', { status });\n\n return {\n success: true,\n patternsLearned: this.engine.getStats().split('\\n').length\n };\n }\n\n /**\n * Check if learning should be triggered\n * Trigger forceLearn() when 80% of trajectory capacity is full\n */\n private checkLearningTrigger(): void {\n const utilizationThreshold = 0.8;\n const currentUtilization = this.stats.activeTrajectories / this.config.trajectoryCapacity;\n\n if (currentUtilization >= utilizationThreshold) {\n this.emit('learning:trigger', {\n utilization: currentUtilization,\n threshold: utilizationThreshold\n });\n this.forceLearn();\n }\n }\n\n /**\n * Tick for scheduled learning\n */\n tick(): void {\n this.engine.tick();\n }\n\n /**\n * Get engine statistics\n */\n getEngineStats(): string {\n return this.engine.getStats();\n }\n\n /**\n * Get service statistics\n */\n getStats() {\n return {\n ...this.stats,\n config: this.config,\n engineEnabled: this.engine.isEnabled(),\n trajectoryUtilization: this.stats.activeTrajectories / this.config.trajectoryCapacity,\n avgTrajectoryDuration: this.calculateAvgTrajectoryDuration(),\n opsPerSecond: this.calculateOpsPerSecond()\n };\n }\n\n /**\n * Calculate average trajectory duration\n */\n private calculateAvgTrajectoryDuration(): number {\n let totalDuration = 0;\n let count = 0;\n\n for (const trajectory of this.trajectories.values()) {\n if (trajectory.endTime) {\n totalDuration += trajectory.endTime - trajectory.startTime;\n count++;\n }\n }\n\n return count > 0 ? totalDuration / count : 0;\n }\n\n /**\n * Calculate operations per second\n */\n private calculateOpsPerSecond(): number {\n // Simple estimation based on total ops and service uptime\n // In production, use a sliding window\n return this.stats.totalOpsProcessed / ((Date.now() - this.stats.totalTrajectories) / 1000);\n }\n\n /**\n * Enable/disable engine\n */\n setEnabled(enabled: boolean): void {\n this.engine.setEnabled(enabled);\n this.emit('engine:enabled', { enabled });\n }\n\n /**\n * Check if engine is enabled\n */\n isEnabled(): boolean {\n return this.engine.isEnabled();\n }\n\n /**\n * Flush engine state\n */\n flush(): void {\n this.engine.flush();\n this.emit('engine:flushed');\n }\n\n /**\n * Get trajectory metadata\n */\n getTrajectory(trajectoryId: string): TrajectoryMetadata | undefined {\n return this.trajectories.get(trajectoryId);\n }\n\n /**\n * Get all active trajectories\n */\n getActiveTrajectories(): TrajectoryMetadata[] {\n return Array.from(this.trajectories.values()).filter(t => !t.endTime);\n }\n}\n\n/**\n * Create singleton SONA service instances for different use cases\n */\nexport const sonaServices = {\n realtime: new SONAService({ profile: 'real-time' }),\n batch: new SONAService({ profile: 'batch' }),\n research: new SONAService({ profile: 'research' }),\n edge: new SONAService({ profile: 'edge' }),\n balanced: new SONAService({ profile: 'balanced' })\n};\n\n/**\n * Default SONA service (balanced profile)\n */\nexport const sonaService = sonaServices.balanced;\n\n/**\n * Convenience function to create custom SONA service\n */\nexport function createSONAService(config?: Partial<SONAConfig>): SONAService {\n return new SONAService(config);\n}\n\n/**\n * Example usage based on vibecast sona.test.js patterns\n */\nexport async function exampleUsage() {\n console.log('🧠 SONA Service Example\\n');\n\n // Use balanced profile service\n const sona = sonaService;\n\n // Example 1: Begin trajectory\n const embedding = Array.from({ length: 1536 }, () => Math.random());\n const trajectoryId = sona.beginTrajectory(embedding, 'claude-sonnet-4-5');\n console.log(`Started trajectory: ${trajectoryId}`);\n\n // Example 2: Add steps\n for (let i = 0; i < 5; i++) {\n const activations = Array.from({ length: 3072 }, () => Math.random());\n const attentionWeights = Array.from({ length: 40 }, () => Math.random());\n const reward = 0.8 + Math.random() * 0.2;\n\n sona.addTrajectoryStep(trajectoryId, activations, attentionWeights, reward);\n }\n\n // Example 3: Add context\n sona.addTrajectoryContext(trajectoryId, 'task-code-review');\n\n // Example 4: End trajectory\n sona.endTrajectory(trajectoryId, 0.92);\n\n // Example 5: Find patterns\n const query = Array.from({ length: 1536 }, () => Math.random());\n const patterns = sona.findPatterns(query, 3);\n console.log(`\\nFound ${patterns.length} similar patterns:`);\n patterns.forEach((p, i) => {\n console.log(` ${i + 1}. Quality: ${p.avgQuality.toFixed(2)}, Similarity: ${p.similarity.toFixed(3)}`);\n });\n\n // Example 6: Apply LoRA\n const input = Array.from({ length: 3072 }, () => Math.random());\n const output = sona.applyMicroLora(input);\n console.log(`\\nApplied Micro-LoRA to ${input.length}D vector`);\n\n // Example 7: Statistics\n const stats = sona.getStats();\n console.log('\\nSONA Statistics:');\n console.log(` Total Trajectories: ${stats.totalTrajectories}`);\n console.log(` Completed: ${stats.completedTrajectories}`);\n console.log(` Avg Quality: ${stats.avgQualityScore.toFixed(2)}`);\n console.log(` Total Ops: ${stats.totalOpsProcessed}`);\n console.log(` Capacity Utilization: ${(stats.trajectoryUtilization * 100).toFixed(1)}%`);\n}\n\n// Auto-run example if executed directly\nif (require.main === module) {\n exampleUsage().catch(console.error);\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sona-types.d.ts","sourceRoot":"","sources":["../../src/services/sona-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,mBAAmB,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE7C;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpD;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAExD;;;;;;OAMG;IACH,iBAAiB,CACf,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,EAAE,EACtB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,OAAO,EAAE,MAAM,GACd,IAAI,CAAC;IAER;;;;OAIG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtD;;;;;OAKG;IACH,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IAEjE;;;;OAIG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IAE9C;;;OAGG;IACH,UAAU,IAAI,WAAW,CAAC;IAE1B;;;OAGG;IACH,QAAQ,IAAI,SAAS,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,iBAAiB,CACtB,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,GAAE,MAAa,EAC1B,IAAI,GAAE,MAAoB,GACzB,IAAI;IAgBP;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAkB,GAAG,IAAI;IAYvE;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,GAAE,MAAa,GACzB,IAAI;IAKP;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,MAAsB,GAAG,MAAM;CAmBhF"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * TypeScript interfaces for SONA engine
3
+ *
4
+ * Replaces 'any' types with proper interfaces for type safety
5
+ */
6
+ /**
7
+ * Validation utilities
8
+ */
9
+ export class ValidationUtils {
10
+ /**
11
+ * Validate embedding dimensions
12
+ */
13
+ static validateEmbedding(embedding, expectedDim = 3072, name = 'embedding') {
14
+ if (!embedding || !Array.isArray(embedding)) {
15
+ throw new Error(`${name} must be an array, got ${typeof embedding}`);
16
+ }
17
+ if (embedding.length !== expectedDim) {
18
+ throw new Error(`${name} must be ${expectedDim}D, got ${embedding.length}D`);
19
+ }
20
+ if (embedding.some(v => typeof v !== 'number' || !isFinite(v))) {
21
+ throw new Error(`${name} contains invalid values (NaN or Infinity)`);
22
+ }
23
+ }
24
+ /**
25
+ * Validate quality score
26
+ */
27
+ static validateQuality(quality, name = 'quality') {
28
+ if (typeof quality !== 'number' || !isFinite(quality)) {
29
+ throw new Error(`${name} must be a finite number, got ${quality}`);
30
+ }
31
+ if (quality < 0 || quality > 1) {
32
+ throw new Error(`${name} must be between 0 and 1, got ${quality}`);
33
+ }
34
+ }
35
+ /**
36
+ * Validate hidden states and attention weights
37
+ */
38
+ static validateStates(hiddenStates, attention, expectedDim = 3072) {
39
+ this.validateEmbedding(hiddenStates, expectedDim, 'hiddenStates');
40
+ this.validateEmbedding(attention, expectedDim, 'attention');
41
+ }
42
+ /**
43
+ * Sanitize file path to prevent traversal attacks
44
+ */
45
+ static sanitizePath(inputPath, baseDir = process.cwd()) {
46
+ const path = require('path');
47
+ // Resolve to absolute path
48
+ const normalized = path.isAbsolute(inputPath)
49
+ ? inputPath
50
+ : path.join(baseDir, inputPath);
51
+ const resolved = path.resolve(normalized);
52
+ // Ensure path is within baseDir
53
+ if (!resolved.startsWith(baseDir)) {
54
+ throw new Error(`Path traversal detected: ${inputPath} resolves outside base directory`);
55
+ }
56
+ return resolved;
57
+ }
58
+ }
59
+ //# sourceMappingURL=sona-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sona-types.js","sourceRoot":"","sources":["../../src/services/sona-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgHH;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,iBAAiB,CACtB,SAAmB,EACnB,cAAsB,IAAI,EAC1B,OAAe,WAAW;QAE1B,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,0BAA0B,OAAO,SAAS,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,YAAY,WAAW,UAAU,SAAS,CAAC,MAAM,GAAG,CAC5D,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,4CAA4C,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,OAAe,EAAE,OAAe,SAAS;QAC9D,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,iCAAiC,OAAO,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,iCAAiC,OAAO,EAAE,CAClD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,YAAsB,EACtB,SAAmB,EACnB,cAAsB,IAAI;QAE1B,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;QAClE,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,SAAiB,EAAE,UAAkB,OAAO,CAAC,GAAG,EAAE;QACpE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAE7B,2BAA2B;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAC3C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE1C,gCAAgC;QAChC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,4BAA4B,SAAS,kCAAkC,CACxE,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF","sourcesContent":["/**\n * TypeScript interfaces for SONA engine\n *\n * Replaces 'any' types with proper interfaces for type safety\n */\n\nexport interface SONAPattern {\n id: string;\n avgQuality: number;\n similarity: number;\n context?: string;\n embedding?: number[];\n route?: string;\n}\n\nexport interface SONAStats {\n totalPatterns: number;\n avgQuality: number;\n trajectories: number;\n trajectoryUtilization: number;\n routes: Record<string, number>;\n qualityDistribution: {\n high: number;\n medium: number;\n low: number;\n };\n}\n\nexport interface LearnResult {\n patternsLearned: number;\n quality: number;\n convergence: boolean;\n epochs: number;\n}\n\nexport interface TrajectoryContext {\n route?: string;\n metadata: Record<string, string>;\n}\n\n/**\n * SONA Engine Interface\n *\n * Core methods for trajectory management and LoRA adaptation\n */\nexport interface SONAEngine {\n /**\n * Begin a new trajectory for learning\n * @param embedding - Initial embedding vector (should be 3072D)\n * @returns Trajectory ID\n */\n beginTrajectory(embedding: number[]): string;\n\n /**\n * Set the route (agent/task name) for a trajectory\n * @param id - Trajectory ID\n * @param route - Route name\n */\n setTrajectoryRoute(id: string, route: string): void;\n\n /**\n * Add context metadata to a trajectory\n * @param id - Trajectory ID\n * @param context - Context string (format: \"key:value\")\n */\n addTrajectoryContext(id: string, context: string): void;\n\n /**\n * Add a step to the trajectory with hidden states and attention\n * @param id - Trajectory ID\n * @param hiddenStates - Hidden layer activations\n * @param attentionWeights - Attention scores\n * @param quality - Quality score (0-1)\n */\n addTrajectoryStep(\n id: string,\n hiddenStates: number[],\n attentionWeights: number[],\n quality: number\n ): void;\n\n /**\n * End a trajectory and trigger LoRA update\n * @param id - Trajectory ID\n * @param finalQuality - Final quality score (0-1)\n */\n endTrajectory(id: string, finalQuality: number): void;\n\n /**\n * Find similar patterns using learned LoRA weights\n * @param queryEmbedding - Query vector\n * @param k - Number of results\n * @returns Array of patterns\n */\n findPatterns(queryEmbedding: number[], k: number): SONAPattern[];\n\n /**\n * Apply Micro-LoRA adaptation to an embedding\n * @param embedding - Input embedding\n * @returns Adapted embedding\n */\n applyMicroLora(embedding: number[]): number[];\n\n /**\n * Force a learning cycle to update LoRA weights\n * @returns Learning result\n */\n forceLearn(): LearnResult;\n\n /**\n * Get engine statistics\n * @returns Statistics object\n */\n getStats(): SONAStats;\n}\n\n/**\n * Validation utilities\n */\nexport class ValidationUtils {\n /**\n * Validate embedding dimensions\n */\n static validateEmbedding(\n embedding: number[],\n expectedDim: number = 3072,\n name: string = 'embedding'\n ): void {\n if (!embedding || !Array.isArray(embedding)) {\n throw new Error(`${name} must be an array, got ${typeof embedding}`);\n }\n\n if (embedding.length !== expectedDim) {\n throw new Error(\n `${name} must be ${expectedDim}D, got ${embedding.length}D`\n );\n }\n\n if (embedding.some(v => typeof v !== 'number' || !isFinite(v))) {\n throw new Error(`${name} contains invalid values (NaN or Infinity)`);\n }\n }\n\n /**\n * Validate quality score\n */\n static validateQuality(quality: number, name: string = 'quality'): void {\n if (typeof quality !== 'number' || !isFinite(quality)) {\n throw new Error(`${name} must be a finite number, got ${quality}`);\n }\n\n if (quality < 0 || quality > 1) {\n throw new Error(\n `${name} must be between 0 and 1, got ${quality}`\n );\n }\n }\n\n /**\n * Validate hidden states and attention weights\n */\n static validateStates(\n hiddenStates: number[],\n attention: number[],\n expectedDim: number = 3072\n ): void {\n this.validateEmbedding(hiddenStates, expectedDim, 'hiddenStates');\n this.validateEmbedding(attention, expectedDim, 'attention');\n }\n\n /**\n * Sanitize file path to prevent traversal attacks\n */\n static sanitizePath(inputPath: string, baseDir: string = process.cwd()): string {\n const path = require('path');\n\n // Resolve to absolute path\n const normalized = path.isAbsolute(inputPath)\n ? inputPath\n : path.join(baseDir, inputPath);\n\n const resolved = path.resolve(normalized);\n\n // Ensure path is within baseDir\n if (!resolved.startsWith(baseDir)) {\n throw new Error(\n `Path traversal detected: ${inputPath} resolves outside base directory`\n );\n }\n\n return resolved;\n }\n}\n"]}
package/docs/README.md CHANGED
@@ -48,14 +48,39 @@ Resources for contributors and integrators:
48
48
  - **[Economics](economics/README.md)** - Economic system design
49
49
  - **[Optimization](optimization/README.md)** - Performance optimization
50
50
 
51
- ### 📦 Releases
51
+ ### 📦 Releases & Publications
52
+ - **[Publications](releases/publications/README.md)** - Alpha/production release summaries
52
53
  - **[Current Releases](releases/current/README.md)** - Active release documentation
53
54
  - **[Release Archive](releases/archive/README.md)** - Historical releases
54
55
  - **[Release Planning](releases/planning/README.md)** - Upcoming features
55
56
 
56
- ### Validation & Benchmarks
57
+ ### 🤖 Agent Documentation
58
+ - **[Agent Enhancements](agents/enhancements/README.md)** - Agent system improvements
59
+ - **[Self-Learning](agents/self-learning/README.md)** - Self-learning capabilities
60
+ - **[Agent Templates](agents/templates/README.md)** - Agent templates and patterns
61
+
62
+ ### 🔗 Integration Guides
63
+ - **[AgentDB Integration](integration/agentdb/README.md)** - AgentDB integration documentation
64
+ - **[E2B Integration](integration/e2b/README.md)** - E2B sandbox integration
65
+ - **[Jujutsu Integration](integration/jujutsu/README.md)** - Jujutsu VCS integration
66
+ - **[SONA Integration](integration/sona/README.md)** - Self-Optimizing Neural Architecture
67
+
68
+ ### ⚡ Optimization & Performance
69
+ - **[Performance Benchmarks](optimization/benchmarks/README.md)** - Benchmark results and reports
70
+ - **[Optimization Reports](optimization/performance/README.md)** - Performance optimization
71
+
72
+ ### ✅ Validation & Testing
57
73
  - **[Validation Reports](validation/reports/README.md)** - Quality assurance reports
58
74
  - **[Benchmarks](validation/benchmarks/README.md)** - Performance benchmarks
75
+ - **[Test Reports](validation/README.md)** - Testing and validation summaries
76
+
77
+ ### 🎯 Code Quality & TDD
78
+ - **[Code Quality](code-quality/README.md)** - Code quality standards and setup
79
+ - **[TDD Documentation](code-quality/tdd/README.md)** - Test-Driven Development guides
80
+ - **[Code Reviews](code-quality/reviews/README.md)** - Review reports and checklists
81
+
82
+ ### 🔒 Security
83
+ - **[Security Audits](security/audits/README.md)** - Security audit reports
59
84
 
60
85
  ### 📋 Archive
61
86
  - **[Archived Documentation](archived/README.md)** - Historical and deprecated docs