@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.
Files changed (75) hide show
  1. package/README.md +406 -0
  2. package/bin/cli.js +387 -0
  3. package/dist/cjs/engine.d.ts +90 -0
  4. package/dist/cjs/engine.d.ts.map +1 -0
  5. package/dist/cjs/engine.js +301 -0
  6. package/dist/cjs/export.d.ts +182 -0
  7. package/dist/cjs/export.d.ts.map +1 -0
  8. package/dist/cjs/export.js +422 -0
  9. package/dist/cjs/federated.d.ts +233 -0
  10. package/dist/cjs/federated.d.ts.map +1 -0
  11. package/dist/cjs/federated.js +525 -0
  12. package/dist/cjs/index.d.ts +64 -0
  13. package/dist/cjs/index.d.ts.map +1 -0
  14. package/dist/cjs/index.js +96 -0
  15. package/dist/cjs/lora.d.ts +240 -0
  16. package/dist/cjs/lora.d.ts.map +1 -0
  17. package/dist/cjs/lora.js +494 -0
  18. package/dist/cjs/native.d.ts +83 -0
  19. package/dist/cjs/native.d.ts.map +1 -0
  20. package/dist/cjs/native.js +70 -0
  21. package/dist/cjs/session.d.ts +80 -0
  22. package/dist/cjs/session.d.ts.map +1 -0
  23. package/dist/cjs/session.js +203 -0
  24. package/dist/cjs/simd.d.ts +90 -0
  25. package/dist/cjs/simd.d.ts.map +1 -0
  26. package/dist/cjs/simd.js +209 -0
  27. package/dist/cjs/sona.d.ts +187 -0
  28. package/dist/cjs/sona.d.ts.map +1 -0
  29. package/dist/cjs/sona.js +500 -0
  30. package/dist/cjs/streaming.d.ts +55 -0
  31. package/dist/cjs/streaming.d.ts.map +1 -0
  32. package/dist/cjs/streaming.js +131 -0
  33. package/dist/cjs/training.d.ts +254 -0
  34. package/dist/cjs/training.d.ts.map +1 -0
  35. package/dist/cjs/training.js +480 -0
  36. package/dist/cjs/types.d.ts +599 -0
  37. package/dist/cjs/types.d.ts.map +1 -0
  38. package/dist/cjs/types.js +6 -0
  39. package/dist/esm/engine.d.ts +90 -0
  40. package/dist/esm/engine.d.ts.map +1 -0
  41. package/dist/esm/engine.js +297 -0
  42. package/dist/esm/export.d.ts +182 -0
  43. package/dist/esm/export.d.ts.map +1 -0
  44. package/dist/esm/export.js +414 -0
  45. package/dist/esm/federated.d.ts +233 -0
  46. package/dist/esm/federated.d.ts.map +1 -0
  47. package/dist/esm/federated.js +520 -0
  48. package/dist/esm/index.d.ts +64 -0
  49. package/dist/esm/index.d.ts.map +1 -0
  50. package/dist/esm/index.js +76 -0
  51. package/dist/esm/lora.d.ts +240 -0
  52. package/dist/esm/lora.d.ts.map +1 -0
  53. package/dist/esm/lora.js +489 -0
  54. package/dist/esm/native.d.ts +83 -0
  55. package/dist/esm/native.d.ts.map +1 -0
  56. package/dist/esm/native.js +65 -0
  57. package/dist/esm/session.d.ts +80 -0
  58. package/dist/esm/session.d.ts.map +1 -0
  59. package/dist/esm/session.js +199 -0
  60. package/dist/esm/simd.d.ts +90 -0
  61. package/dist/esm/simd.d.ts.map +1 -0
  62. package/dist/esm/simd.js +205 -0
  63. package/dist/esm/sona.d.ts +187 -0
  64. package/dist/esm/sona.d.ts.map +1 -0
  65. package/dist/esm/sona.js +494 -0
  66. package/dist/esm/streaming.d.ts +55 -0
  67. package/dist/esm/streaming.d.ts.map +1 -0
  68. package/dist/esm/streaming.js +126 -0
  69. package/dist/esm/training.d.ts +254 -0
  70. package/dist/esm/training.d.ts.map +1 -0
  71. package/dist/esm/training.js +473 -0
  72. package/dist/esm/types.d.ts +599 -0
  73. package/dist/esm/types.d.ts.map +1 -0
  74. package/dist/esm/types.js +5 -0
  75. package/package.json +121 -0
@@ -0,0 +1,76 @@
1
+ /**
2
+ * @ruvector/ruvllm - Self-learning LLM orchestration
3
+ *
4
+ * RuvLLM combines SONA adaptive learning with HNSW memory,
5
+ * FastGRNN routing, and SIMD-optimized inference.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { RuvLLM, SessionManager, SonaCoordinator } from '@ruvector/ruvllm';
10
+ *
11
+ * const llm = new RuvLLM({ learningEnabled: true });
12
+ * const sessions = new SessionManager(llm);
13
+ * const sona = new SonaCoordinator();
14
+ *
15
+ * // Query with session context
16
+ * const session = sessions.create();
17
+ * const response = sessions.chat(session.id, 'What is AI?');
18
+ *
19
+ * // Track learning trajectory
20
+ * const trajectory = new TrajectoryBuilder()
21
+ * .startStep('query', 'What is AI?')
22
+ * .endStep(response.text, response.confidence)
23
+ * .complete('success');
24
+ *
25
+ * sona.recordTrajectory(trajectory);
26
+ * ```
27
+ *
28
+ * @example Federated Learning
29
+ * ```typescript
30
+ * import { EphemeralAgent, FederatedCoordinator } from '@ruvector/ruvllm';
31
+ *
32
+ * // Central coordinator
33
+ * const coordinator = new FederatedCoordinator('coord-1');
34
+ *
35
+ * // Ephemeral agents process tasks and export
36
+ * const agent = new EphemeralAgent('agent-1');
37
+ * agent.processTask(embedding, 0.9);
38
+ * const exportData = agent.exportState();
39
+ *
40
+ * // Aggregate learning
41
+ * coordinator.aggregate(exportData);
42
+ * ```
43
+ *
44
+ * @example LoRA Adapters
45
+ * ```typescript
46
+ * import { LoraAdapter, LoraManager } from '@ruvector/ruvllm';
47
+ *
48
+ * const adapter = new LoraAdapter({ rank: 8, alpha: 16 });
49
+ * const output = adapter.forward(input);
50
+ * ```
51
+ */
52
+ // Core types
53
+ export * from './types';
54
+ // Main engine
55
+ export * from './engine';
56
+ // SIMD operations
57
+ export * from './simd';
58
+ // Session management
59
+ export * from './session';
60
+ // Streaming support
61
+ export * from './streaming';
62
+ // SONA learning system
63
+ export * from './sona';
64
+ // Federated learning
65
+ export * from './federated';
66
+ // LoRA adapters
67
+ export * from './lora';
68
+ // Export/serialization
69
+ export * from './export';
70
+ // Training pipeline
71
+ export * from './training';
72
+ // Native bindings utilities
73
+ export { version, hasSimdSupport } from './native';
74
+ // Default export
75
+ export { RuvLLM as default } from './engine';
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0RHO0FBRUgsYUFBYTtBQUNiLGNBQWMsU0FBUyxDQUFDO0FBRXhCLGNBQWM7QUFDZCxjQUFjLFVBQVUsQ0FBQztBQUV6QixrQkFBa0I7QUFDbEIsY0FBYyxRQUFRLENBQUM7QUFFdkIscUJBQXFCO0FBQ3JCLGNBQWMsV0FBVyxDQUFDO0FBRTFCLG9CQUFvQjtBQUNwQixjQUFjLGFBQWEsQ0FBQztBQUU1Qix1QkFBdUI7QUFDdkIsY0FBYyxRQUFRLENBQUM7QUFFdkIscUJBQXFCO0FBQ3JCLGNBQWMsYUFBYSxDQUFDO0FBRTVCLGdCQUFnQjtBQUNoQixjQUFjLFFBQVEsQ0FBQztBQUV2Qix1QkFBdUI7QUFDdkIsY0FBYyxVQUFVLENBQUM7QUFFekIsb0JBQW9CO0FBQ3BCLGNBQWMsWUFBWSxDQUFDO0FBRTNCLDRCQUE0QjtBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVuRCxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLE1BQU0sSUFBSSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBydXZlY3Rvci9ydXZsbG0gLSBTZWxmLWxlYXJuaW5nIExMTSBvcmNoZXN0cmF0aW9uXG4gKlxuICogUnV2TExNIGNvbWJpbmVzIFNPTkEgYWRhcHRpdmUgbGVhcm5pbmcgd2l0aCBITlNXIG1lbW9yeSxcbiAqIEZhc3RHUk5OIHJvdXRpbmcsIGFuZCBTSU1ELW9wdGltaXplZCBpbmZlcmVuY2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IFJ1dkxMTSwgU2Vzc2lvbk1hbmFnZXIsIFNvbmFDb29yZGluYXRvciB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xuICpcbiAqIGNvbnN0IGxsbSA9IG5ldyBSdXZMTE0oeyBsZWFybmluZ0VuYWJsZWQ6IHRydWUgfSk7XG4gKiBjb25zdCBzZXNzaW9ucyA9IG5ldyBTZXNzaW9uTWFuYWdlcihsbG0pO1xuICogY29uc3Qgc29uYSA9IG5ldyBTb25hQ29vcmRpbmF0b3IoKTtcbiAqXG4gKiAvLyBRdWVyeSB3aXRoIHNlc3Npb24gY29udGV4dFxuICogY29uc3Qgc2Vzc2lvbiA9IHNlc3Npb25zLmNyZWF0ZSgpO1xuICogY29uc3QgcmVzcG9uc2UgPSBzZXNzaW9ucy5jaGF0KHNlc3Npb24uaWQsICdXaGF0IGlzIEFJPycpO1xuICpcbiAqIC8vIFRyYWNrIGxlYXJuaW5nIHRyYWplY3RvcnlcbiAqIGNvbnN0IHRyYWplY3RvcnkgPSBuZXcgVHJhamVjdG9yeUJ1aWxkZXIoKVxuICogICAuc3RhcnRTdGVwKCdxdWVyeScsICdXaGF0IGlzIEFJPycpXG4gKiAgIC5lbmRTdGVwKHJlc3BvbnNlLnRleHQsIHJlc3BvbnNlLmNvbmZpZGVuY2UpXG4gKiAgIC5jb21wbGV0ZSgnc3VjY2VzcycpO1xuICpcbiAqIHNvbmEucmVjb3JkVHJhamVjdG9yeSh0cmFqZWN0b3J5KTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIEZlZGVyYXRlZCBMZWFybmluZ1xuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgRXBoZW1lcmFsQWdlbnQsIEZlZGVyYXRlZENvb3JkaW5hdG9yIH0gZnJvbSAnQHJ1dmVjdG9yL3J1dmxsbSc7XG4gKlxuICogLy8gQ2VudHJhbCBjb29yZGluYXRvclxuICogY29uc3QgY29vcmRpbmF0b3IgPSBuZXcgRmVkZXJhdGVkQ29vcmRpbmF0b3IoJ2Nvb3JkLTEnKTtcbiAqXG4gKiAvLyBFcGhlbWVyYWwgYWdlbnRzIHByb2Nlc3MgdGFza3MgYW5kIGV4cG9ydFxuICogY29uc3QgYWdlbnQgPSBuZXcgRXBoZW1lcmFsQWdlbnQoJ2FnZW50LTEnKTtcbiAqIGFnZW50LnByb2Nlc3NUYXNrKGVtYmVkZGluZywgMC45KTtcbiAqIGNvbnN0IGV4cG9ydERhdGEgPSBhZ2VudC5leHBvcnRTdGF0ZSgpO1xuICpcbiAqIC8vIEFnZ3JlZ2F0ZSBsZWFybmluZ1xuICogY29vcmRpbmF0b3IuYWdncmVnYXRlKGV4cG9ydERhdGEpO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgTG9SQSBBZGFwdGVyc1xuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgTG9yYUFkYXB0ZXIsIExvcmFNYW5hZ2VyIH0gZnJvbSAnQHJ1dmVjdG9yL3J1dmxsbSc7XG4gKlxuICogY29uc3QgYWRhcHRlciA9IG5ldyBMb3JhQWRhcHRlcih7IHJhbms6IDgsIGFscGhhOiAxNiB9KTtcbiAqIGNvbnN0IG91dHB1dCA9IGFkYXB0ZXIuZm9yd2FyZChpbnB1dCk7XG4gKiBgYGBcbiAqL1xuXG4vLyBDb3JlIHR5cGVzXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcblxuLy8gTWFpbiBlbmdpbmVcbmV4cG9ydCAqIGZyb20gJy4vZW5naW5lJztcblxuLy8gU0lNRCBvcGVyYXRpb25zXG5leHBvcnQgKiBmcm9tICcuL3NpbWQnO1xuXG4vLyBTZXNzaW9uIG1hbmFnZW1lbnRcbmV4cG9ydCAqIGZyb20gJy4vc2Vzc2lvbic7XG5cbi8vIFN0cmVhbWluZyBzdXBwb3J0XG5leHBvcnQgKiBmcm9tICcuL3N0cmVhbWluZyc7XG5cbi8vIFNPTkEgbGVhcm5pbmcgc3lzdGVtXG5leHBvcnQgKiBmcm9tICcuL3NvbmEnO1xuXG4vLyBGZWRlcmF0ZWQgbGVhcm5pbmdcbmV4cG9ydCAqIGZyb20gJy4vZmVkZXJhdGVkJztcblxuLy8gTG9SQSBhZGFwdGVyc1xuZXhwb3J0ICogZnJvbSAnLi9sb3JhJztcblxuLy8gRXhwb3J0L3NlcmlhbGl6YXRpb25cbmV4cG9ydCAqIGZyb20gJy4vZXhwb3J0JztcblxuLy8gVHJhaW5pbmcgcGlwZWxpbmVcbmV4cG9ydCAqIGZyb20gJy4vdHJhaW5pbmcnO1xuXG4vLyBOYXRpdmUgYmluZGluZ3MgdXRpbGl0aWVzXG5leHBvcnQgeyB2ZXJzaW9uLCBoYXNTaW1kU3VwcG9ydCB9IGZyb20gJy4vbmF0aXZlJztcblxuLy8gRGVmYXVsdCBleHBvcnRcbmV4cG9ydCB7IFJ1dkxMTSBhcyBkZWZhdWx0IH0gZnJvbSAnLi9lbmdpbmUnO1xuIl19
@@ -0,0 +1,240 @@
1
+ /**
2
+ * LoRA (Low-Rank Adaptation) Runtime
3
+ *
4
+ * Efficient parameter-efficient fine-tuning adapters for LLMs.
5
+ * Supports micro-LoRA (fast, small updates) and base-LoRA (deeper adaptation).
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { LoraAdapter, LoraManager } from '@ruvector/ruvllm';
10
+ *
11
+ * // Create adapter
12
+ * const adapter = new LoraAdapter({
13
+ * rank: 8,
14
+ * alpha: 16,
15
+ * dropout: 0.1,
16
+ * targetModules: ['query', 'value'],
17
+ * });
18
+ *
19
+ * // Apply to hidden states
20
+ * const output = adapter.forward(hiddenStates);
21
+ *
22
+ * // Manage multiple adapters
23
+ * const manager = new LoraManager();
24
+ * manager.register('task-1', adapter);
25
+ * manager.activate('task-1');
26
+ * ```
27
+ */
28
+ import { LoRAConfig } from './types';
29
+ /**
30
+ * LoRA adapter weights
31
+ */
32
+ export interface LoraWeights {
33
+ /** Down projection matrix (d x r) */
34
+ loraA: number[][];
35
+ /** Up projection matrix (r x d) */
36
+ loraB: number[][];
37
+ /** Scaling factor */
38
+ scaling: number;
39
+ }
40
+ /**
41
+ * LoRA training state
42
+ */
43
+ export interface LoraTrainingState {
44
+ /** Current step */
45
+ step: number;
46
+ /** Learning rate */
47
+ learningRate: number;
48
+ /** Accumulated gradients for A */
49
+ gradA: number[][];
50
+ /** Accumulated gradients for B */
51
+ gradB: number[][];
52
+ /** Loss history */
53
+ lossHistory: number[];
54
+ }
55
+ /**
56
+ * LoRA Adapter
57
+ *
58
+ * Implements low-rank decomposition for parameter-efficient fine-tuning.
59
+ * W' = W + BA where A is (d x r) and B is (r x d), r << d
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * const adapter = new LoraAdapter({
64
+ * rank: 8,
65
+ * alpha: 16,
66
+ * inputDim: 768,
67
+ * outputDim: 768,
68
+ * });
69
+ *
70
+ * // Forward pass
71
+ * const output = adapter.forward(input);
72
+ *
73
+ * // Training step
74
+ * adapter.backward(input, gradOutput, 0.001);
75
+ * ```
76
+ */
77
+ export declare class LoraAdapter {
78
+ private config;
79
+ private inputDim;
80
+ private outputDim;
81
+ private weights;
82
+ private trainingState;
83
+ private frozen;
84
+ constructor(config?: Partial<LoRAConfig>, inputDim?: number, outputDim?: number);
85
+ /**
86
+ * Forward pass through LoRA adapter
87
+ * OPTIMIZED: Uses Float64Array and loop unrolling
88
+ *
89
+ * output = input + scaling * (input @ A @ B)
90
+ */
91
+ forward(input: number[]): number[];
92
+ /**
93
+ * Forward with batch processing
94
+ */
95
+ forwardBatch(inputs: number[][]): number[][];
96
+ /**
97
+ * Backward pass and weight update
98
+ */
99
+ backward(input: number[], gradOutput: number[], learningRate: number): number;
100
+ /**
101
+ * Start training mode
102
+ */
103
+ startTraining(learningRate?: number): void;
104
+ /**
105
+ * End training mode
106
+ */
107
+ endTraining(): LoraTrainingState | null;
108
+ /**
109
+ * Freeze adapter (no more updates)
110
+ */
111
+ freeze(): void;
112
+ /**
113
+ * Unfreeze adapter
114
+ */
115
+ unfreeze(): void;
116
+ /**
117
+ * Check if frozen
118
+ */
119
+ isFrozen(): boolean;
120
+ /**
121
+ * Get adapter config
122
+ */
123
+ getConfig(): Required<LoRAConfig>;
124
+ /**
125
+ * Get adapter weights
126
+ */
127
+ getWeights(): LoraWeights;
128
+ /**
129
+ * Set adapter weights
130
+ */
131
+ setWeights(weights: LoraWeights): void;
132
+ /**
133
+ * Merge adapter into base weights
134
+ *
135
+ * Returns delta to add to base model weights
136
+ */
137
+ merge(): number[][];
138
+ /**
139
+ * Get number of trainable parameters
140
+ */
141
+ numParameters(): number;
142
+ /**
143
+ * Reset to initial weights
144
+ */
145
+ reset(): void;
146
+ /**
147
+ * Clone adapter
148
+ */
149
+ clone(): LoraAdapter;
150
+ /**
151
+ * Serialize to JSON
152
+ */
153
+ toJSON(): string;
154
+ /**
155
+ * Deserialize from JSON
156
+ */
157
+ static fromJSON(json: string): LoraAdapter;
158
+ private initializeWeights;
159
+ }
160
+ /**
161
+ * LoRA Manager for multiple adapters
162
+ *
163
+ * Manages a collection of LoRA adapters for different tasks/domains.
164
+ */
165
+ export declare class LoraManager {
166
+ private adapters;
167
+ private activeAdapterId;
168
+ private defaultConfig;
169
+ constructor(defaultConfig?: Partial<LoRAConfig>);
170
+ /**
171
+ * Register a new adapter
172
+ */
173
+ register(id: string, adapter: LoraAdapter): void;
174
+ /**
175
+ * Create and register a new adapter
176
+ */
177
+ create(id: string, config?: Partial<LoRAConfig>, inputDim?: number, outputDim?: number): LoraAdapter;
178
+ /**
179
+ * Get adapter by ID
180
+ */
181
+ get(id: string): LoraAdapter | undefined;
182
+ /**
183
+ * Remove adapter
184
+ */
185
+ remove(id: string): boolean;
186
+ /**
187
+ * Activate an adapter
188
+ */
189
+ activate(id: string): boolean;
190
+ /**
191
+ * Deactivate current adapter
192
+ */
193
+ deactivate(): void;
194
+ /**
195
+ * Get active adapter
196
+ */
197
+ getActive(): LoraAdapter | null;
198
+ /**
199
+ * Get active adapter ID
200
+ */
201
+ getActiveId(): string | null;
202
+ /**
203
+ * Apply active adapter
204
+ */
205
+ forward(input: number[]): number[];
206
+ /**
207
+ * List all adapter IDs
208
+ */
209
+ list(): string[];
210
+ /**
211
+ * Get adapter count
212
+ */
213
+ count(): number;
214
+ /**
215
+ * Freeze all adapters
216
+ */
217
+ freezeAll(): void;
218
+ /**
219
+ * Unfreeze all adapters
220
+ */
221
+ unfreezeAll(): void;
222
+ /**
223
+ * Merge multiple adapters into one
224
+ */
225
+ mergeAdapters(ids: string[], outputId: string): LoraAdapter | null;
226
+ /**
227
+ * Get statistics
228
+ */
229
+ stats(): {
230
+ totalAdapters: number;
231
+ activeAdapter: string | null;
232
+ totalParameters: number;
233
+ frozenCount: number;
234
+ };
235
+ /**
236
+ * Clear all adapters
237
+ */
238
+ clear(): void;
239
+ }
240
+ //# sourceMappingURL=lora.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lora.d.ts","sourceRoot":"","sources":["../../src/lora.ts"],"names":[],"mappings":"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"}