@ruvector/ruvllm 0.2.0
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 +406 -0
- package/bin/cli.js +387 -0
- package/dist/cjs/engine.d.ts +90 -0
- package/dist/cjs/engine.d.ts.map +1 -0
- package/dist/cjs/engine.js +301 -0
- package/dist/cjs/export.d.ts +182 -0
- package/dist/cjs/export.d.ts.map +1 -0
- package/dist/cjs/export.js +422 -0
- package/dist/cjs/federated.d.ts +233 -0
- package/dist/cjs/federated.d.ts.map +1 -0
- package/dist/cjs/federated.js +525 -0
- package/dist/cjs/index.d.ts +64 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +96 -0
- package/dist/cjs/lora.d.ts +240 -0
- package/dist/cjs/lora.d.ts.map +1 -0
- package/dist/cjs/lora.js +494 -0
- package/dist/cjs/native.d.ts +83 -0
- package/dist/cjs/native.d.ts.map +1 -0
- package/dist/cjs/native.js +70 -0
- package/dist/cjs/session.d.ts +80 -0
- package/dist/cjs/session.d.ts.map +1 -0
- package/dist/cjs/session.js +203 -0
- package/dist/cjs/simd.d.ts +90 -0
- package/dist/cjs/simd.d.ts.map +1 -0
- package/dist/cjs/simd.js +209 -0
- package/dist/cjs/sona.d.ts +187 -0
- package/dist/cjs/sona.d.ts.map +1 -0
- package/dist/cjs/sona.js +500 -0
- package/dist/cjs/streaming.d.ts +55 -0
- package/dist/cjs/streaming.d.ts.map +1 -0
- package/dist/cjs/streaming.js +131 -0
- package/dist/cjs/training.d.ts +254 -0
- package/dist/cjs/training.d.ts.map +1 -0
- package/dist/cjs/training.js +480 -0
- package/dist/cjs/types.d.ts +599 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +6 -0
- package/dist/esm/engine.d.ts +90 -0
- package/dist/esm/engine.d.ts.map +1 -0
- package/dist/esm/engine.js +297 -0
- package/dist/esm/export.d.ts +182 -0
- package/dist/esm/export.d.ts.map +1 -0
- package/dist/esm/export.js +414 -0
- package/dist/esm/federated.d.ts +233 -0
- package/dist/esm/federated.d.ts.map +1 -0
- package/dist/esm/federated.js +520 -0
- package/dist/esm/index.d.ts +64 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +76 -0
- package/dist/esm/lora.d.ts +240 -0
- package/dist/esm/lora.d.ts.map +1 -0
- package/dist/esm/lora.js +489 -0
- package/dist/esm/native.d.ts +83 -0
- package/dist/esm/native.d.ts.map +1 -0
- package/dist/esm/native.js +65 -0
- package/dist/esm/session.d.ts +80 -0
- package/dist/esm/session.d.ts.map +1 -0
- package/dist/esm/session.js +199 -0
- package/dist/esm/simd.d.ts +90 -0
- package/dist/esm/simd.d.ts.map +1 -0
- package/dist/esm/simd.js +205 -0
- package/dist/esm/sona.d.ts +187 -0
- package/dist/esm/sona.d.ts.map +1 -0
- package/dist/esm/sona.js +494 -0
- package/dist/esm/streaming.d.ts +55 -0
- package/dist/esm/streaming.d.ts.map +1 -0
- package/dist/esm/streaming.js +126 -0
- package/dist/esm/training.d.ts +254 -0
- package/dist/esm/training.d.ts.map +1 -0
- package/dist/esm/training.js +473 -0
- package/dist/esm/types.d.ts +599 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +5 -0
- package/package.json +121 -0
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Federated Learning for SONA
|
|
3
|
+
*
|
|
4
|
+
* Enable distributed learning across ephemeral agents that share
|
|
5
|
+
* trajectories with a central coordinator.
|
|
6
|
+
*
|
|
7
|
+
* Architecture:
|
|
8
|
+
* ```
|
|
9
|
+
* ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
10
|
+
* │ Agent A │ │ Agent B │ │ Agent C │
|
|
11
|
+
* │ (ephemeral) │ │ (ephemeral) │ │ (ephemeral) │
|
|
12
|
+
* └──────┬──────┘ └──────┬──────┘ └──────┬──────┘
|
|
13
|
+
* │ │ │
|
|
14
|
+
* │ export() │ export() │ export()
|
|
15
|
+
* ▼ ▼ ▼
|
|
16
|
+
* ┌────────────────────────────────────────────────┐
|
|
17
|
+
* │ Federated Coordinator │
|
|
18
|
+
* │ (persistent, large capacity) │
|
|
19
|
+
* └────────────────────────────────────────────────┘
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* import { EphemeralAgent, FederatedCoordinator } from '@ruvector/ruvllm';
|
|
25
|
+
*
|
|
26
|
+
* // Create coordinator (persistent)
|
|
27
|
+
* const coordinator = new FederatedCoordinator('coord-1', { hiddenDim: 256 });
|
|
28
|
+
*
|
|
29
|
+
* // Create ephemeral agent
|
|
30
|
+
* const agent = new EphemeralAgent('agent-1', { hiddenDim: 256 });
|
|
31
|
+
*
|
|
32
|
+
* // Agent processes tasks
|
|
33
|
+
* agent.processTask([0.1, 0.2, ...], 0.85);
|
|
34
|
+
* agent.processTask([0.3, 0.4, ...], 0.92);
|
|
35
|
+
*
|
|
36
|
+
* // Export and aggregate before agent terminates
|
|
37
|
+
* const exportData = agent.exportState();
|
|
38
|
+
* const result = coordinator.aggregate(exportData);
|
|
39
|
+
*
|
|
40
|
+
* console.log(`Accepted: ${result.trajectoriesAccepted}`);
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
import { Embedding, LearnedPattern, FederatedConfig, AgentExportStats, AgentExport, AgentContribution, AggregationResult, CoordinatorStats } from './types';
|
|
44
|
+
/**
|
|
45
|
+
* Ephemeral Agent for federated learning
|
|
46
|
+
*
|
|
47
|
+
* Collects trajectories during its session and exports state before termination.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const agent = new EphemeralAgent('agent-1', { hiddenDim: 256 });
|
|
52
|
+
*
|
|
53
|
+
* // Process tasks during session
|
|
54
|
+
* agent.processTask(embedding1, 0.85);
|
|
55
|
+
* agent.processTaskWithRoute(embedding2, 0.92, 'code-model');
|
|
56
|
+
*
|
|
57
|
+
* // Export before termination
|
|
58
|
+
* const exportData = agent.exportState();
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare class EphemeralAgent {
|
|
62
|
+
private agentId;
|
|
63
|
+
private config;
|
|
64
|
+
private trajectories;
|
|
65
|
+
private startTime;
|
|
66
|
+
private qualitySamples;
|
|
67
|
+
private reasoningBank;
|
|
68
|
+
private loraWeights;
|
|
69
|
+
constructor(agentId: string, config?: FederatedConfig);
|
|
70
|
+
/**
|
|
71
|
+
* Get agent ID
|
|
72
|
+
*/
|
|
73
|
+
getAgentId(): string;
|
|
74
|
+
/**
|
|
75
|
+
* Process a task and record trajectory
|
|
76
|
+
*/
|
|
77
|
+
processTrajectory(embedding: Embedding, activations: Embedding, quality: number, route?: string, context?: string[]): void;
|
|
78
|
+
/**
|
|
79
|
+
* Simple process task method
|
|
80
|
+
*/
|
|
81
|
+
processTask(embedding: Embedding, quality: number): void;
|
|
82
|
+
/**
|
|
83
|
+
* Process task with route information
|
|
84
|
+
*/
|
|
85
|
+
processTaskWithRoute(embedding: Embedding, quality: number, route: string): void;
|
|
86
|
+
/**
|
|
87
|
+
* Apply micro-LoRA to hidden states
|
|
88
|
+
*/
|
|
89
|
+
applyMicroLora(input: number[], output: number[]): void;
|
|
90
|
+
/**
|
|
91
|
+
* Get number of collected trajectories
|
|
92
|
+
*/
|
|
93
|
+
trajectoryCount(): number;
|
|
94
|
+
/**
|
|
95
|
+
* Get average quality
|
|
96
|
+
*/
|
|
97
|
+
avgQuality(): number;
|
|
98
|
+
/**
|
|
99
|
+
* Get uptime in seconds
|
|
100
|
+
*/
|
|
101
|
+
uptimeSeconds(): number;
|
|
102
|
+
/**
|
|
103
|
+
* Get agent stats
|
|
104
|
+
*/
|
|
105
|
+
stats(): AgentExportStats;
|
|
106
|
+
/**
|
|
107
|
+
* Force local learning
|
|
108
|
+
*/
|
|
109
|
+
forceLearn(): string;
|
|
110
|
+
/**
|
|
111
|
+
* Get learned patterns
|
|
112
|
+
*/
|
|
113
|
+
getPatterns(): LearnedPattern[];
|
|
114
|
+
/**
|
|
115
|
+
* Clear trajectories (after export)
|
|
116
|
+
*/
|
|
117
|
+
clear(): void;
|
|
118
|
+
/**
|
|
119
|
+
* Export agent state for federation
|
|
120
|
+
*
|
|
121
|
+
* Call this before terminating the agent.
|
|
122
|
+
*/
|
|
123
|
+
exportState(): AgentExport;
|
|
124
|
+
/**
|
|
125
|
+
* Serialize to JSON
|
|
126
|
+
*/
|
|
127
|
+
toJSON(): string;
|
|
128
|
+
private updateLoraWeights;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Federated Learning Coordinator
|
|
132
|
+
*
|
|
133
|
+
* Aggregates learning from multiple ephemeral agents.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```typescript
|
|
137
|
+
* const coordinator = new FederatedCoordinator('coord-1', { hiddenDim: 256 });
|
|
138
|
+
*
|
|
139
|
+
* // Aggregate exports from multiple agents
|
|
140
|
+
* for (const agentExport of agentExports) {
|
|
141
|
+
* const result = coordinator.aggregate(agentExport);
|
|
142
|
+
* console.log(`Agent ${result.agentId}: ${result.trajectoriesAccepted} accepted`);
|
|
143
|
+
* }
|
|
144
|
+
*
|
|
145
|
+
* // Get coordinator statistics
|
|
146
|
+
* const stats = coordinator.stats();
|
|
147
|
+
* console.log(`Total patterns: ${stats.patternsLearned}`);
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
export declare class FederatedCoordinator {
|
|
151
|
+
private coordinatorId;
|
|
152
|
+
private config;
|
|
153
|
+
private contributions;
|
|
154
|
+
private totalTrajectories;
|
|
155
|
+
private consolidationInterval;
|
|
156
|
+
private reasoningBank;
|
|
157
|
+
private qualitySamples;
|
|
158
|
+
private masterLoraWeights;
|
|
159
|
+
constructor(coordinatorId: string, config?: FederatedConfig);
|
|
160
|
+
/**
|
|
161
|
+
* Get coordinator ID
|
|
162
|
+
*/
|
|
163
|
+
getCoordinatorId(): string;
|
|
164
|
+
/**
|
|
165
|
+
* Set quality threshold for accepting trajectories
|
|
166
|
+
*/
|
|
167
|
+
setQualityThreshold(threshold: number): void;
|
|
168
|
+
/**
|
|
169
|
+
* Set consolidation interval
|
|
170
|
+
*/
|
|
171
|
+
setConsolidationInterval(interval: number): void;
|
|
172
|
+
/**
|
|
173
|
+
* Aggregate agent export into coordinator
|
|
174
|
+
*/
|
|
175
|
+
aggregate(exportData: AgentExport): AggregationResult;
|
|
176
|
+
/**
|
|
177
|
+
* Force consolidation (learning)
|
|
178
|
+
*/
|
|
179
|
+
forceConsolidate(): string;
|
|
180
|
+
/**
|
|
181
|
+
* Consolidate learning (alias)
|
|
182
|
+
*/
|
|
183
|
+
consolidate(): string;
|
|
184
|
+
/**
|
|
185
|
+
* Get initial patterns for new agents (warm start)
|
|
186
|
+
*/
|
|
187
|
+
getInitialPatterns(k?: number): LearnedPattern[];
|
|
188
|
+
/**
|
|
189
|
+
* Get all learned patterns
|
|
190
|
+
*/
|
|
191
|
+
getAllPatterns(): LearnedPattern[];
|
|
192
|
+
/**
|
|
193
|
+
* Find similar patterns
|
|
194
|
+
*/
|
|
195
|
+
findPatterns(query: Embedding, k: number): LearnedPattern[];
|
|
196
|
+
/**
|
|
197
|
+
* Apply coordinator's LoRA to input
|
|
198
|
+
* OPTIMIZED: Pre-compute hidden layer once, reuse typed arrays
|
|
199
|
+
*/
|
|
200
|
+
applyLora(input: number[]): number[];
|
|
201
|
+
/**
|
|
202
|
+
* Get coordinator statistics
|
|
203
|
+
*/
|
|
204
|
+
stats(): CoordinatorStats;
|
|
205
|
+
/**
|
|
206
|
+
* Get contribution history
|
|
207
|
+
*/
|
|
208
|
+
getContributions(): Map<string, AgentContribution>;
|
|
209
|
+
/**
|
|
210
|
+
* Get total agent count
|
|
211
|
+
*/
|
|
212
|
+
agentCount(): number;
|
|
213
|
+
/**
|
|
214
|
+
* Get total trajectory count
|
|
215
|
+
*/
|
|
216
|
+
getTotalTrajectories(): number;
|
|
217
|
+
/**
|
|
218
|
+
* Clear all contributions
|
|
219
|
+
*/
|
|
220
|
+
clear(): void;
|
|
221
|
+
/**
|
|
222
|
+
* Export coordinator state
|
|
223
|
+
*/
|
|
224
|
+
toJSON(): string;
|
|
225
|
+
/**
|
|
226
|
+
* Create agent with coordinator's learned patterns
|
|
227
|
+
*/
|
|
228
|
+
createAgent(agentId: string): EphemeralAgent;
|
|
229
|
+
private shouldConsolidate;
|
|
230
|
+
private routeToPatternType;
|
|
231
|
+
private updateMasterLora;
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=federated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"federated.d.ts","sourceRoot":"","sources":["../../src/federated.ts"],"names":[],"mappings":"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"}
|