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.
- package/README.md +320 -23
- package/agentic-flow/.claude/agents/base-template-generator.md +229 -3
- package/agentic-flow/.claude/agents/core/coder.md +212 -7
- package/agentic-flow/.claude/agents/core/planner.md +228 -7
- package/agentic-flow/.claude/agents/core/researcher.md +205 -10
- package/agentic-flow/.claude/agents/core/reviewer.md +216 -5
- package/agentic-flow/.claude/agents/core/tester.md +213 -3
- package/agentic-flow/.claude/agents/data/ml/data-ml-model.md +256 -5
- package/agentic-flow/.claude/agents/development/backend/dev-backend-api.md +209 -6
- package/agentic-flow/.claude/agents/documentation/api-docs/docs-api-openapi.md +185 -5
- package/agentic-flow/.claude/agents/github/code-review-swarm.md +307 -468
- package/agentic-flow/.claude/agents/github/issue-tracker.md +270 -13
- package/agentic-flow/.claude/agents/github/pr-manager.md +259 -12
- package/agentic-flow/.claude/agents/github/release-manager.md +253 -15
- package/agentic-flow/.claude/agents/github/workflow-automation.md +277 -9
- package/agentic-flow/.claude/agents/sona/sona-learning-optimizer.md +496 -0
- package/agentic-flow/.claude/agents/sparc/architecture.md +231 -4
- package/agentic-flow/.claude/agents/sparc/pseudocode.md +206 -4
- package/agentic-flow/.claude/agents/sparc/refinement.md +283 -6
- package/agentic-flow/.claude/agents/sparc/specification.md +205 -3
- package/agentic-flow/.claude/agents/swarm/adaptive-coordinator.md +731 -0
- package/agentic-flow/.claude/agents/swarm/hierarchical-coordinator.md +455 -1
- package/agentic-flow/.claude/agents/swarm/mesh-coordinator.md +571 -0
- package/agentic-flow/.claude/agents/templates/sparc-coordinator.md +336 -5
- package/agentic-flow/dist/cli/commands/sona-train.d.ts.map +1 -0
- package/agentic-flow/dist/cli/commands/sona-train.js +295 -0
- package/agentic-flow/dist/cli/commands/sona-train.js.map +1 -0
- package/agentic-flow/dist/cli/commands/sona.d.ts.map +1 -0
- package/agentic-flow/dist/cli/commands/sona.js +290 -0
- package/agentic-flow/dist/cli/commands/sona.js.map +1 -0
- package/agentic-flow/dist/core/agentdb-fast.d.ts.map +1 -0
- package/agentic-flow/dist/core/agentdb-fast.js +299 -0
- package/agentic-flow/dist/core/agentdb-fast.js.map +1 -0
- package/agentic-flow/dist/core/attention-fallbacks.d.ts.map +1 -0
- package/agentic-flow/dist/core/attention-fallbacks.js +321 -0
- package/agentic-flow/dist/core/attention-fallbacks.js.map +1 -0
- package/agentic-flow/dist/core/embedding-service.d.ts.map +1 -0
- package/agentic-flow/dist/core/embedding-service.js +370 -0
- package/agentic-flow/dist/core/embedding-service.js.map +1 -0
- package/agentic-flow/dist/core/gnn-wrapper.d.ts.map +1 -0
- package/agentic-flow/dist/core/gnn-wrapper.js +236 -0
- package/agentic-flow/dist/core/gnn-wrapper.js.map +1 -0
- package/agentic-flow/dist/core/index.d.ts.map +1 -1
- package/agentic-flow/dist/core/index.js +80 -3
- package/agentic-flow/dist/core/index.js.map +1 -1
- package/agentic-flow/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
- package/agentic-flow/dist/mcp/claudeFlowSdkServer.js +109 -0
- package/agentic-flow/dist/mcp/claudeFlowSdkServer.js.map +1 -1
- package/agentic-flow/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -0
- package/agentic-flow/dist/mcp/tools/agent-booster-tools.js +262 -0
- package/agentic-flow/dist/mcp/tools/agent-booster-tools.js.map +1 -0
- package/agentic-flow/dist/mcp/tools/sona-tools.d.ts.map +1 -0
- package/agentic-flow/dist/mcp/tools/sona-tools.js +560 -0
- package/agentic-flow/dist/mcp/tools/sona-tools.js.map +1 -0
- package/agentic-flow/dist/optimizations/agent-booster-migration.d.ts.map +1 -0
- package/agentic-flow/dist/optimizations/agent-booster-migration.js +323 -0
- package/agentic-flow/dist/optimizations/agent-booster-migration.js.map +1 -0
- package/agentic-flow/dist/optimizations/configuration-tuning.d.ts.map +1 -0
- package/agentic-flow/dist/optimizations/configuration-tuning.js +422 -0
- package/agentic-flow/dist/optimizations/configuration-tuning.js.map +1 -0
- package/agentic-flow/dist/optimizations/ruvector-backend.d.ts.map +1 -0
- package/agentic-flow/dist/optimizations/ruvector-backend.js +464 -0
- package/agentic-flow/dist/optimizations/ruvector-backend.js.map +1 -0
- package/agentic-flow/dist/services/embedding-service.d.ts.map +1 -0
- package/agentic-flow/dist/services/embedding-service.js +367 -0
- package/agentic-flow/dist/services/embedding-service.js.map +1 -0
- package/agentic-flow/dist/services/sona-agent-training.d.ts.map +1 -0
- package/agentic-flow/dist/services/sona-agent-training.js +382 -0
- package/agentic-flow/dist/services/sona-agent-training.js.map +1 -0
- package/agentic-flow/dist/services/sona-agentdb-integration.d.ts.map +1 -0
- package/agentic-flow/dist/services/sona-agentdb-integration.js +346 -0
- package/agentic-flow/dist/services/sona-agentdb-integration.js.map +1 -0
- package/agentic-flow/dist/services/sona-service.d.ts.map +1 -0
- package/agentic-flow/dist/services/sona-service.js +448 -0
- package/agentic-flow/dist/services/sona-service.js.map +1 -0
- package/agentic-flow/dist/services/sona-types.d.ts.map +1 -0
- package/agentic-flow/dist/services/sona-types.js +59 -0
- package/agentic-flow/dist/services/sona-types.js.map +1 -0
- package/docs/README.md +27 -2
- package/package.json +12 -2
- 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
|
-
###
|
|
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
|