@ruvector/ruvllm 3.0.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/GPU-LOOP.md +229 -0
  2. package/LICENSE +201 -0
  3. package/NOTICE +9 -0
  4. package/README.md +159 -360
  5. package/examples/gpu-loop.example.json +26 -0
  6. package/package.json +50 -121
  7. package/src/adapters-cli.mjs +23 -0
  8. package/src/adapters.mjs +91 -0
  9. package/src/cli.mjs +30 -0
  10. package/src/engine.mjs +238 -0
  11. package/src/fixture.mjs +38 -0
  12. package/src/gpu-host.mjs +47 -0
  13. package/src/gpu-loop-cli.mjs +67 -0
  14. package/src/gpu-loop.mjs +184 -0
  15. package/src/gpu-spool-adapter.mjs +80 -0
  16. package/src/vast-host-adapter.mjs +274 -0
  17. package/bin/cli.js +0 -1040
  18. package/dist/cjs/benchmarks/embedding-benchmark.d.ts +0 -102
  19. package/dist/cjs/benchmarks/embedding-benchmark.d.ts.map +0 -1
  20. package/dist/cjs/benchmarks/embedding-benchmark.js +0 -436
  21. package/dist/cjs/benchmarks/index.d.ts +0 -34
  22. package/dist/cjs/benchmarks/index.d.ts.map +0 -1
  23. package/dist/cjs/benchmarks/index.js +0 -132
  24. package/dist/cjs/benchmarks/model-comparison.d.ts +0 -71
  25. package/dist/cjs/benchmarks/model-comparison.d.ts.map +0 -1
  26. package/dist/cjs/benchmarks/model-comparison.js +0 -476
  27. package/dist/cjs/benchmarks/routing-benchmark.d.ts +0 -70
  28. package/dist/cjs/benchmarks/routing-benchmark.d.ts.map +0 -1
  29. package/dist/cjs/benchmarks/routing-benchmark.js +0 -289
  30. package/dist/cjs/contrastive.d.ts +0 -229
  31. package/dist/cjs/contrastive.d.ts.map +0 -1
  32. package/dist/cjs/contrastive.js +0 -589
  33. package/dist/cjs/engine.d.ts +0 -160
  34. package/dist/cjs/engine.d.ts.map +0 -1
  35. package/dist/cjs/engine.js +0 -552
  36. package/dist/cjs/export.d.ts +0 -182
  37. package/dist/cjs/export.d.ts.map +0 -1
  38. package/dist/cjs/export.js +0 -422
  39. package/dist/cjs/federated.d.ts +0 -233
  40. package/dist/cjs/federated.d.ts.map +0 -1
  41. package/dist/cjs/federated.js +0 -525
  42. package/dist/cjs/index.d.ts +0 -68
  43. package/dist/cjs/index.d.ts.map +0 -1
  44. package/dist/cjs/index.js +0 -104
  45. package/dist/cjs/intelligence.d.ts +0 -136
  46. package/dist/cjs/intelligence.d.ts.map +0 -1
  47. package/dist/cjs/intelligence.js +0 -226
  48. package/dist/cjs/lora.d.ts +0 -251
  49. package/dist/cjs/lora.d.ts.map +0 -1
  50. package/dist/cjs/lora.js +0 -509
  51. package/dist/cjs/models.d.ts +0 -129
  52. package/dist/cjs/models.d.ts.map +0 -1
  53. package/dist/cjs/models.js +0 -323
  54. package/dist/cjs/native.d.ts +0 -140
  55. package/dist/cjs/native.d.ts.map +0 -1
  56. package/dist/cjs/native.js +0 -98
  57. package/dist/cjs/session.d.ts +0 -80
  58. package/dist/cjs/session.d.ts.map +0 -1
  59. package/dist/cjs/session.js +0 -203
  60. package/dist/cjs/simd.d.ts +0 -90
  61. package/dist/cjs/simd.d.ts.map +0 -1
  62. package/dist/cjs/simd.js +0 -209
  63. package/dist/cjs/sona.d.ts +0 -223
  64. package/dist/cjs/sona.d.ts.map +0 -1
  65. package/dist/cjs/sona.js +0 -562
  66. package/dist/cjs/streaming.d.ts +0 -55
  67. package/dist/cjs/streaming.d.ts.map +0 -1
  68. package/dist/cjs/streaming.js +0 -131
  69. package/dist/cjs/training.d.ts +0 -312
  70. package/dist/cjs/training.d.ts.map +0 -1
  71. package/dist/cjs/training.js +0 -610
  72. package/dist/cjs/types.d.ts +0 -696
  73. package/dist/cjs/types.d.ts.map +0 -1
  74. package/dist/cjs/types.js +0 -6
  75. package/dist/esm/benchmarks/embedding-benchmark.d.ts +0 -102
  76. package/dist/esm/benchmarks/embedding-benchmark.d.ts.map +0 -1
  77. package/dist/esm/benchmarks/embedding-benchmark.js +0 -427
  78. package/dist/esm/benchmarks/index.d.ts +0 -34
  79. package/dist/esm/benchmarks/index.d.ts.map +0 -1
  80. package/dist/esm/benchmarks/index.js +0 -110
  81. package/dist/esm/benchmarks/model-comparison.d.ts +0 -71
  82. package/dist/esm/benchmarks/model-comparison.d.ts.map +0 -1
  83. package/dist/esm/benchmarks/model-comparison.js +0 -434
  84. package/dist/esm/benchmarks/routing-benchmark.d.ts +0 -70
  85. package/dist/esm/benchmarks/routing-benchmark.d.ts.map +0 -1
  86. package/dist/esm/benchmarks/routing-benchmark.js +0 -283
  87. package/dist/esm/contrastive.d.ts +0 -229
  88. package/dist/esm/contrastive.d.ts.map +0 -1
  89. package/dist/esm/contrastive.js +0 -578
  90. package/dist/esm/engine.d.ts +0 -160
  91. package/dist/esm/engine.d.ts.map +0 -1
  92. package/dist/esm/engine.js +0 -548
  93. package/dist/esm/export.d.ts +0 -182
  94. package/dist/esm/export.d.ts.map +0 -1
  95. package/dist/esm/export.js +0 -414
  96. package/dist/esm/federated.d.ts +0 -233
  97. package/dist/esm/federated.d.ts.map +0 -1
  98. package/dist/esm/federated.js +0 -520
  99. package/dist/esm/index.d.ts +0 -68
  100. package/dist/esm/index.d.ts.map +0 -1
  101. package/dist/esm/index.js +0 -84
  102. package/dist/esm/intelligence.d.ts +0 -136
  103. package/dist/esm/intelligence.d.ts.map +0 -1
  104. package/dist/esm/intelligence.js +0 -188
  105. package/dist/esm/lora.d.ts +0 -251
  106. package/dist/esm/lora.d.ts.map +0 -1
  107. package/dist/esm/lora.js +0 -504
  108. package/dist/esm/models.d.ts +0 -129
  109. package/dist/esm/models.d.ts.map +0 -1
  110. package/dist/esm/models.js +0 -282
  111. package/dist/esm/native.d.ts +0 -140
  112. package/dist/esm/native.d.ts.map +0 -1
  113. package/dist/esm/native.js +0 -93
  114. package/dist/esm/session.d.ts +0 -80
  115. package/dist/esm/session.d.ts.map +0 -1
  116. package/dist/esm/session.js +0 -199
  117. package/dist/esm/simd.d.ts +0 -90
  118. package/dist/esm/simd.d.ts.map +0 -1
  119. package/dist/esm/simd.js +0 -205
  120. package/dist/esm/sona.d.ts +0 -223
  121. package/dist/esm/sona.d.ts.map +0 -1
  122. package/dist/esm/sona.js +0 -556
  123. package/dist/esm/streaming.d.ts +0 -55
  124. package/dist/esm/streaming.d.ts.map +0 -1
  125. package/dist/esm/streaming.js +0 -126
  126. package/dist/esm/training.d.ts +0 -312
  127. package/dist/esm/training.d.ts.map +0 -1
  128. package/dist/esm/training.js +0 -603
  129. package/dist/esm/types.d.ts +0 -696
  130. package/dist/esm/types.d.ts.map +0 -1
  131. package/dist/esm/types.js +0 -5
  132. package/scripts/ensemble-model-compare.js +0 -287
  133. package/scripts/fix-esm-extensions.mjs +0 -181
  134. package/scripts/huggingface/README.md +0 -537
  135. package/scripts/huggingface/publish.sh +0 -112
  136. package/scripts/hybrid-model-compare.js +0 -373
  137. package/scripts/improved-model-compare.js +0 -288
  138. package/scripts/optimized-model-compare.js +0 -364
  139. package/scripts/real-model-compare.js +0 -280
  140. package/scripts/smoke-esm.mjs +0 -82
  141. package/scripts/training/agentic-flow-capabilities.json +0 -329
  142. package/scripts/training/claude-code-synth.js +0 -505
  143. package/scripts/training/claude-flow-capabilities.json +0 -1322
  144. package/scripts/training/claude-hard-negatives.js +0 -222
  145. package/scripts/training/contrastive-finetune.js +0 -517
  146. package/scripts/training/ecosystem-triplets.jsonl +0 -1467
  147. package/scripts/training/generate-ecosystem-triplets.js +0 -1324
  148. package/scripts/training/routing-dataset.js +0 -634
  149. package/scripts/training/ruvector-capabilities.json +0 -798
  150. package/scripts/training/validate-ecosystem.js +0 -381
  151. package/scripts/training/validation-results.json +0 -23
@@ -1,229 +0,0 @@
1
- /**
2
- * Contrastive Fine-tuning for RuvLTRA Claude Code Router
3
- *
4
- * Uses triplet loss to fine-tune embeddings:
5
- * - Anchor: task description
6
- * - Positive: correct agent description
7
- * - Negative: wrong agent description (hard negative)
8
- *
9
- * Goal: minimize distance(anchor, positive) and maximize distance(anchor, negative)
10
- *
11
- * @example
12
- * ```typescript
13
- * import { ContrastiveTrainer, tripletLoss, infoNCELoss } from '@ruvector/ruvllm';
14
- *
15
- * const trainer = new ContrastiveTrainer({
16
- * epochs: 10,
17
- * batchSize: 16,
18
- * margin: 0.5,
19
- * });
20
- *
21
- * // Add triplets
22
- * trainer.addTriplet(anchorEmb, positiveEmb, negativeEmb, true);
23
- *
24
- * // Train and export
25
- * const results = trainer.train();
26
- * trainer.exportTrainingData('./output');
27
- * ```
28
- */
29
- import { Embedding } from './types.js';
30
- /**
31
- * Contrastive training configuration
32
- */
33
- export interface ContrastiveConfig {
34
- /** Number of training epochs (default: 10) */
35
- epochs?: number;
36
- /** Batch size (default: 16) */
37
- batchSize?: number;
38
- /** Learning rate (default: 0.0001) */
39
- learningRate?: number;
40
- /** Triplet loss margin (default: 0.5) */
41
- margin?: number;
42
- /** InfoNCE temperature (default: 0.07) */
43
- temperature?: number;
44
- /** Ratio of hard negatives (default: 0.7) */
45
- hardNegativeRatio?: number;
46
- /** Output directory for training data */
47
- outputPath?: string;
48
- }
49
- /**
50
- * Training triplet
51
- */
52
- export interface TrainingTriplet {
53
- /** Anchor embedding (task) */
54
- anchor: string;
55
- anchorEmb: Embedding;
56
- /** Positive example (correct agent) */
57
- positive: string;
58
- positiveEmb: Embedding;
59
- /** Negative example (wrong agent) */
60
- negative: string;
61
- negativeEmb: Embedding;
62
- /** Whether this is a hard negative */
63
- isHard: boolean;
64
- }
65
- /**
66
- * Training history entry
67
- */
68
- export interface TrainingHistoryEntry {
69
- epoch: number;
70
- loss: number;
71
- }
72
- /**
73
- * Contrastive training results
74
- */
75
- export interface ContrastiveTrainingResult {
76
- /** Total triplets trained on */
77
- tripletCount: number;
78
- /** Final loss value */
79
- finalLoss: number;
80
- /** Initial loss value */
81
- initialLoss: number;
82
- /** Improvement percentage */
83
- improvement: number;
84
- /** Training history */
85
- history: TrainingHistoryEntry[];
86
- /** Duration in ms */
87
- durationMs: number;
88
- }
89
- /**
90
- * LoRA configuration for fine-tuning
91
- */
92
- export interface LoRAExportConfig {
93
- model_type: string;
94
- base_model: string;
95
- output_dir: string;
96
- lora_r: number;
97
- lora_alpha: number;
98
- lora_dropout: number;
99
- target_modules: string[];
100
- learning_rate: number;
101
- num_train_epochs: number;
102
- per_device_train_batch_size: number;
103
- gradient_accumulation_steps: number;
104
- warmup_ratio: number;
105
- loss_type: string;
106
- margin: number;
107
- temperature: number;
108
- train_data: string;
109
- eval_data: string;
110
- }
111
- /**
112
- * Compute cosine similarity between two embeddings
113
- */
114
- export declare function cosineSimilarity(a: Embedding, b: Embedding): number;
115
- /**
116
- * Compute triplet loss
117
- * L = max(0, margin + d(anchor, positive) - d(anchor, negative))
118
- */
119
- export declare function tripletLoss(anchorEmb: Embedding, positiveEmb: Embedding, negativeEmb: Embedding, margin?: number): number;
120
- /**
121
- * Compute InfoNCE loss (contrastive)
122
- */
123
- export declare function infoNCELoss(anchorEmb: Embedding, positiveEmb: Embedding, negativeEmbs: Embedding[], temperature?: number): number;
124
- /**
125
- * Compute gradient for embedding update (simplified)
126
- */
127
- export declare function computeGradient(anchorEmb: Embedding, positiveEmb: Embedding, negativeEmb: Embedding, lr?: number): Embedding;
128
- /**
129
- * Contrastive Trainer for RuvLTRA models
130
- *
131
- * Implements triplet loss and InfoNCE loss for embedding fine-tuning.
132
- */
133
- export declare class ContrastiveTrainer {
134
- private config;
135
- private triplets;
136
- private history;
137
- private agentEmbeddings;
138
- constructor(config?: ContrastiveConfig);
139
- /**
140
- * Add a training triplet
141
- */
142
- addTriplet(anchor: string, anchorEmb: Embedding, positive: string, positiveEmb: Embedding, negative: string, negativeEmb: Embedding, isHard?: boolean): void;
143
- /**
144
- * Add agent embedding for reference
145
- */
146
- addAgentEmbedding(agentName: string, embedding: Embedding): void;
147
- /**
148
- * Get all agent embeddings
149
- */
150
- getAgentEmbeddings(): Map<string, Embedding>;
151
- /**
152
- * Get triplet count
153
- */
154
- getTripletCount(): number;
155
- /**
156
- * Simulate training (compute losses without actual backprop)
157
- * In a full implementation, this would use proper gradient descent
158
- */
159
- train(): ContrastiveTrainingResult;
160
- /**
161
- * Export training data for external fine-tuning tools
162
- */
163
- exportTrainingData(outputPath?: string): string;
164
- /**
165
- * Generate LoRA adapter configuration
166
- */
167
- generateLoRAConfig(outputPath?: string): LoRAExportConfig;
168
- /**
169
- * Generate training script for external tools
170
- */
171
- generateTrainingScript(outputPath?: string): string;
172
- /**
173
- * Get training history
174
- */
175
- getHistory(): TrainingHistoryEntry[];
176
- /**
177
- * Reset trainer
178
- */
179
- reset(): void;
180
- }
181
- /**
182
- * Agent Training Data Interface
183
- */
184
- export interface AgentTrainingData {
185
- description: string;
186
- keywords: string[];
187
- examples: string[];
188
- confusing_with?: string[];
189
- }
190
- /**
191
- * Training Example Interface
192
- */
193
- export interface TrainingExample {
194
- task: string;
195
- agent: string;
196
- complexity?: string;
197
- confusing_with?: string;
198
- }
199
- /**
200
- * Dataset Statistics
201
- */
202
- export interface DatasetStats {
203
- totalExamples: number;
204
- contrastivePairs: number;
205
- agentTypes: number;
206
- agents: string[];
207
- }
208
- /**
209
- * Agent Training Data for Claude Code Router
210
- */
211
- export declare const AGENT_TRAINING_DATA: Record<string, AgentTrainingData>;
212
- /**
213
- * Generate training dataset from agent data
214
- */
215
- export declare function generateTrainingDataset(): TrainingExample[];
216
- /**
217
- * Generate contrastive pairs for training
218
- */
219
- export declare function generateContrastivePairs(): Array<{
220
- anchor: string;
221
- positive: string;
222
- negative: string;
223
- isHard: boolean;
224
- }>;
225
- /**
226
- * Get dataset statistics
227
- */
228
- export declare function getDatasetStats(): DatasetStats;
229
- //# sourceMappingURL=contrastive.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contrastive.d.ts","sourceRoot":"","sources":["../../src/contrastive.ts"],"names":[],"mappings":"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"}