@claude-flow/cli 3.0.0-alpha.101 → 3.0.0-alpha.103

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 (33) hide show
  1. package/dist/src/index.d.ts +2 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +4 -0
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  6. package/dist/src/mcp-tools/hooks-tools.js +454 -83
  7. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  8. package/dist/src/memory/ewc-consolidation.d.ts +271 -0
  9. package/dist/src/memory/ewc-consolidation.d.ts.map +1 -0
  10. package/dist/src/memory/ewc-consolidation.js +542 -0
  11. package/dist/src/memory/ewc-consolidation.js.map +1 -0
  12. package/dist/src/memory/sona-optimizer.d.ts +227 -0
  13. package/dist/src/memory/sona-optimizer.d.ts.map +1 -0
  14. package/dist/src/memory/sona-optimizer.js +633 -0
  15. package/dist/src/memory/sona-optimizer.js.map +1 -0
  16. package/dist/src/ruvector/flash-attention.d.ts +162 -0
  17. package/dist/src/ruvector/flash-attention.d.ts.map +1 -0
  18. package/dist/src/ruvector/flash-attention.js +426 -0
  19. package/dist/src/ruvector/flash-attention.js.map +1 -0
  20. package/dist/src/ruvector/index.d.ts +5 -0
  21. package/dist/src/ruvector/index.d.ts.map +1 -1
  22. package/dist/src/ruvector/index.js +5 -0
  23. package/dist/src/ruvector/index.js.map +1 -1
  24. package/dist/src/ruvector/lora-adapter.d.ts +218 -0
  25. package/dist/src/ruvector/lora-adapter.d.ts.map +1 -0
  26. package/dist/src/ruvector/lora-adapter.js +455 -0
  27. package/dist/src/ruvector/lora-adapter.js.map +1 -0
  28. package/dist/src/ruvector/moe-router.d.ts +206 -0
  29. package/dist/src/ruvector/moe-router.d.ts.map +1 -0
  30. package/dist/src/ruvector/moe-router.js +626 -0
  31. package/dist/src/ruvector/moe-router.js.map +1 -0
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +1 -1
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Flash Attention Implementation for RuVector Intelligence System
3
+ *
4
+ * Implements block-wise attention computation for faster similarity calculations.
5
+ * Achieves O(N) memory instead of O(N^2) through tiling strategy.
6
+ *
7
+ * Key optimizations:
8
+ * - Block-wise computation to fit in L1 cache
9
+ * - Fused softmax-matmul operations
10
+ * - Float32Array for all operations
11
+ * - Online softmax for numerical stability
12
+ *
13
+ * Target: 2-5x speedup on CPU vs naive attention
14
+ *
15
+ * Created with love by ruv.io
16
+ */
17
+ export interface FlashAttentionConfig {
18
+ /** Block size for tiling (64-128 optimal for L1 cache) */
19
+ blockSize: number;
20
+ /** Number of dimensions in embedding vectors */
21
+ dimensions: number;
22
+ /** Temperature for softmax scaling */
23
+ temperature: number;
24
+ /** Enable numerical stability optimizations */
25
+ useStableMode: boolean;
26
+ }
27
+ export interface AttentionResult {
28
+ /** Output vectors after attention */
29
+ output: Float32Array[];
30
+ /** Attention weights (optional, for debugging) */
31
+ weights?: Float32Array[];
32
+ /** Computation time in milliseconds */
33
+ computeTimeMs: number;
34
+ }
35
+ export interface BenchmarkResult {
36
+ /** Naive attention time in milliseconds */
37
+ naiveTimeMs: number;
38
+ /** Flash attention time in milliseconds */
39
+ flashTimeMs: number;
40
+ /** Speedup factor (naive / flash) */
41
+ speedup: number;
42
+ /** Number of vectors benchmarked */
43
+ numVectors: number;
44
+ /** Dimensions of vectors */
45
+ dimensions: number;
46
+ /** Memory usage estimate for naive (bytes) */
47
+ naiveMemoryBytes: number;
48
+ /** Memory usage estimate for flash (bytes) */
49
+ flashMemoryBytes: number;
50
+ /** Memory reduction factor */
51
+ memoryReduction: number;
52
+ }
53
+ export declare class FlashAttention {
54
+ private config;
55
+ private lastSpeedup;
56
+ private benchmarkHistory;
57
+ constructor(config?: Partial<FlashAttentionConfig>);
58
+ /**
59
+ * Main attention computation using Flash Attention algorithm
60
+ *
61
+ * @param queries - Query vectors [N x D]
62
+ * @param keys - Key vectors [M x D]
63
+ * @param values - Value vectors [M x D]
64
+ * @returns Attention output [N x D]
65
+ */
66
+ attention(queries: Float32Array[], keys: Float32Array[], values: Float32Array[]): AttentionResult;
67
+ /**
68
+ * Block-wise attention computation (Flash Attention core algorithm)
69
+ *
70
+ * Algorithm:
71
+ * For each block of queries Q_b:
72
+ * For each block of keys K_b:
73
+ * S_b = Q_b @ K_b.T / sqrt(d) // Block scores
74
+ * P_b = softmax(S_b) // Block attention
75
+ * O_b += P_b @ V_b // Accumulate output
76
+ *
77
+ * @param Q - Query vectors
78
+ * @param K - Key vectors
79
+ * @param V - Value vectors
80
+ * @param blockSize - Block size for tiling
81
+ */
82
+ blockAttention(Q: Float32Array[], K: Float32Array[], V: Float32Array[], blockSize: number): Float32Array[];
83
+ /**
84
+ * Get the speedup factor from the last benchmark
85
+ */
86
+ getSpeedup(): number;
87
+ /**
88
+ * Run benchmark comparing naive vs flash attention
89
+ *
90
+ * @param numVectors - Number of vectors to test
91
+ * @param dimensions - Dimensions per vector
92
+ * @param iterations - Number of iterations for averaging
93
+ */
94
+ benchmark(numVectors?: number, dimensions?: number, iterations?: number): BenchmarkResult;
95
+ /**
96
+ * Get benchmark history
97
+ */
98
+ getBenchmarkHistory(): BenchmarkResult[];
99
+ /**
100
+ * Get configuration
101
+ */
102
+ getConfig(): FlashAttentionConfig;
103
+ /**
104
+ * Update configuration
105
+ */
106
+ setConfig(config: Partial<FlashAttentionConfig>): void;
107
+ /**
108
+ * Naive O(N^2) attention implementation for comparison
109
+ */
110
+ private naiveAttention;
111
+ /**
112
+ * Compute block of attention scores
113
+ */
114
+ private computeBlockScores;
115
+ /**
116
+ * Online softmax with output accumulation (key to Flash Attention)
117
+ *
118
+ * Uses the online softmax trick to maintain numerical stability
119
+ * while processing blocks incrementally.
120
+ */
121
+ private onlineSoftmaxAccumulate;
122
+ /**
123
+ * Compute dot product of two vectors
124
+ */
125
+ private dotProduct;
126
+ /**
127
+ * Stable softmax implementation
128
+ */
129
+ private softmax;
130
+ /**
131
+ * Generate random vectors for benchmarking
132
+ */
133
+ private generateRandomVectors;
134
+ /**
135
+ * Validate input arrays
136
+ */
137
+ private validateInputs;
138
+ }
139
+ /**
140
+ * Get singleton FlashAttention instance
141
+ *
142
+ * @param config - Optional configuration (only used on first call)
143
+ * @returns FlashAttention instance
144
+ */
145
+ export declare function getFlashAttention(config?: Partial<FlashAttentionConfig>): FlashAttention;
146
+ /**
147
+ * Reset singleton (for testing)
148
+ */
149
+ export declare function resetFlashAttention(): void;
150
+ /**
151
+ * Compute attention using Flash Attention
152
+ */
153
+ export declare function computeAttention(queries: Float32Array[], keys: Float32Array[], values: Float32Array[], config?: Partial<FlashAttentionConfig>): AttentionResult;
154
+ /**
155
+ * Run Flash Attention benchmark
156
+ */
157
+ export declare function benchmarkFlashAttention(numVectors?: number, dimensions?: number, iterations?: number): BenchmarkResult;
158
+ /**
159
+ * Get current speedup from last benchmark
160
+ */
161
+ export declare function getFlashAttentionSpeedup(): number;
162
+ //# sourceMappingURL=flash-attention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flash-attention.d.ts","sourceRoot":"","sources":["../../../src/ruvector/flash-attention.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,MAAM,WAAW,oBAAoB;IACnC,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,kDAAkD;IAClD,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,gBAAgB,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,gBAAgB,EAAE,MAAM,CAAC;IACzB,8BAA8B;IAC9B,eAAe,EAAE,MAAM,CAAC;CACzB;AAMD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,gBAAgB,CAAyB;gBAErC,MAAM,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAatD;;;;;;;OAOG;IACH,SAAS,CACP,OAAO,EAAE,YAAY,EAAE,EACvB,IAAI,EAAE,YAAY,EAAE,EACpB,MAAM,EAAE,YAAY,EAAE,GACrB,eAAe;IA0BlB;;;;;;;;;;;;;;OAcG;IACH,cAAc,CACZ,CAAC,EAAE,YAAY,EAAE,EACjB,CAAC,EAAE,YAAY,EAAE,EACjB,CAAC,EAAE,YAAY,EAAE,EACjB,SAAS,EAAE,MAAM,GAChB,YAAY,EAAE;IA0DjB;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;;;OAMG;IACH,SAAS,CACP,UAAU,GAAE,MAAY,EACxB,UAAU,GAAE,MAAY,EACxB,UAAU,GAAE,MAAU,GACrB,eAAe;IAsDlB;;OAEG;IACH,mBAAmB,IAAI,eAAe,EAAE;IAIxC;;OAEG;IACH,SAAS,IAAI,oBAAoB;IAIjC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI;IAQtD;;OAEG;IACH,OAAO,CAAC,cAAc;IAwCtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IA2D/B;;OAEG;IACH,OAAO,CAAC,UAAU;IAqBlB;;OAEG;IACH,OAAO,CAAC,OAAO;IA4Bf;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyB7B;;OAEG;IACH,OAAO,CAAC,cAAc;CA+BvB;AAQD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,cAAc,CAKxF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,YAAY,EAAE,EACvB,IAAI,EAAE,YAAY,EAAE,EACpB,MAAM,EAAE,YAAY,EAAE,EACtB,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACrC,eAAe,CAGjB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,eAAe,CAEjB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD"}
@@ -0,0 +1,426 @@
1
+ /**
2
+ * Flash Attention Implementation for RuVector Intelligence System
3
+ *
4
+ * Implements block-wise attention computation for faster similarity calculations.
5
+ * Achieves O(N) memory instead of O(N^2) through tiling strategy.
6
+ *
7
+ * Key optimizations:
8
+ * - Block-wise computation to fit in L1 cache
9
+ * - Fused softmax-matmul operations
10
+ * - Float32Array for all operations
11
+ * - Online softmax for numerical stability
12
+ *
13
+ * Target: 2-5x speedup on CPU vs naive attention
14
+ *
15
+ * Created with love by ruv.io
16
+ */
17
+ // ============================================================================
18
+ // Flash Attention Implementation
19
+ // ============================================================================
20
+ export class FlashAttention {
21
+ config;
22
+ lastSpeedup = 0;
23
+ benchmarkHistory = [];
24
+ constructor(config = {}) {
25
+ this.config = {
26
+ blockSize: config.blockSize ?? 64,
27
+ dimensions: config.dimensions ?? 384,
28
+ temperature: config.temperature ?? 1.0,
29
+ useStableMode: config.useStableMode ?? true,
30
+ };
31
+ }
32
+ // ==========================================================================
33
+ // Public API
34
+ // ==========================================================================
35
+ /**
36
+ * Main attention computation using Flash Attention algorithm
37
+ *
38
+ * @param queries - Query vectors [N x D]
39
+ * @param keys - Key vectors [M x D]
40
+ * @param values - Value vectors [M x D]
41
+ * @returns Attention output [N x D]
42
+ */
43
+ attention(queries, keys, values) {
44
+ const startTime = performance.now();
45
+ // Validate inputs
46
+ this.validateInputs(queries, keys, values);
47
+ const numQueries = queries.length;
48
+ const numKeys = keys.length;
49
+ const dimensions = queries[0]?.length ?? this.config.dimensions;
50
+ // Use block attention for large inputs, naive for small
51
+ let output;
52
+ if (numQueries * numKeys > 1024) {
53
+ output = this.blockAttention(queries, keys, values, this.config.blockSize);
54
+ }
55
+ else {
56
+ output = this.naiveAttention(queries, keys, values);
57
+ }
58
+ const computeTimeMs = performance.now() - startTime;
59
+ return {
60
+ output,
61
+ computeTimeMs,
62
+ };
63
+ }
64
+ /**
65
+ * Block-wise attention computation (Flash Attention core algorithm)
66
+ *
67
+ * Algorithm:
68
+ * For each block of queries Q_b:
69
+ * For each block of keys K_b:
70
+ * S_b = Q_b @ K_b.T / sqrt(d) // Block scores
71
+ * P_b = softmax(S_b) // Block attention
72
+ * O_b += P_b @ V_b // Accumulate output
73
+ *
74
+ * @param Q - Query vectors
75
+ * @param K - Key vectors
76
+ * @param V - Value vectors
77
+ * @param blockSize - Block size for tiling
78
+ */
79
+ blockAttention(Q, K, V, blockSize) {
80
+ const numQueries = Q.length;
81
+ const numKeys = K.length;
82
+ const dimensions = Q[0]?.length ?? this.config.dimensions;
83
+ const scale = 1.0 / (Math.sqrt(dimensions) * this.config.temperature);
84
+ // Initialize output arrays
85
+ const output = new Array(numQueries);
86
+ for (let i = 0; i < numQueries; i++) {
87
+ output[i] = new Float32Array(dimensions);
88
+ }
89
+ // Online softmax state: max values and sum of exp for each query
90
+ const maxScores = new Float32Array(numQueries).fill(-Infinity);
91
+ const sumExp = new Float32Array(numQueries).fill(0);
92
+ // Process in blocks
93
+ for (let kStart = 0; kStart < numKeys; kStart += blockSize) {
94
+ const kEnd = Math.min(kStart + blockSize, numKeys);
95
+ const kBlockSize = kEnd - kStart;
96
+ // Process each query against this key block
97
+ for (let qStart = 0; qStart < numQueries; qStart += blockSize) {
98
+ const qEnd = Math.min(qStart + blockSize, numQueries);
99
+ // Compute attention scores for this block
100
+ const blockScores = this.computeBlockScores(Q, K, qStart, qEnd, kStart, kEnd, scale);
101
+ // Apply online softmax and accumulate output
102
+ this.onlineSoftmaxAccumulate(blockScores, V, output, maxScores, sumExp, qStart, qEnd, kStart, kEnd);
103
+ }
104
+ }
105
+ // Normalize outputs by final sum of exponentials
106
+ for (let i = 0; i < numQueries; i++) {
107
+ const normalizer = sumExp[i];
108
+ if (normalizer > 0) {
109
+ for (let d = 0; d < dimensions; d++) {
110
+ output[i][d] /= normalizer;
111
+ }
112
+ }
113
+ }
114
+ return output;
115
+ }
116
+ /**
117
+ * Get the speedup factor from the last benchmark
118
+ */
119
+ getSpeedup() {
120
+ return this.lastSpeedup;
121
+ }
122
+ /**
123
+ * Run benchmark comparing naive vs flash attention
124
+ *
125
+ * @param numVectors - Number of vectors to test
126
+ * @param dimensions - Dimensions per vector
127
+ * @param iterations - Number of iterations for averaging
128
+ */
129
+ benchmark(numVectors = 512, dimensions = 384, iterations = 5) {
130
+ // Generate random test data
131
+ const queries = this.generateRandomVectors(numVectors, dimensions);
132
+ const keys = this.generateRandomVectors(numVectors, dimensions);
133
+ const values = this.generateRandomVectors(numVectors, dimensions);
134
+ // Warm up
135
+ this.naiveAttention(queries.slice(0, 10), keys.slice(0, 10), values.slice(0, 10));
136
+ this.blockAttention(queries.slice(0, 10), keys.slice(0, 10), values.slice(0, 10), this.config.blockSize);
137
+ // Benchmark naive attention
138
+ let naiveTotalMs = 0;
139
+ for (let i = 0; i < iterations; i++) {
140
+ const start = performance.now();
141
+ this.naiveAttention(queries, keys, values);
142
+ naiveTotalMs += performance.now() - start;
143
+ }
144
+ const naiveTimeMs = naiveTotalMs / iterations;
145
+ // Benchmark flash attention
146
+ let flashTotalMs = 0;
147
+ for (let i = 0; i < iterations; i++) {
148
+ const start = performance.now();
149
+ this.blockAttention(queries, keys, values, this.config.blockSize);
150
+ flashTotalMs += performance.now() - start;
151
+ }
152
+ const flashTimeMs = flashTotalMs / iterations;
153
+ // Calculate metrics
154
+ const speedup = naiveTimeMs / flashTimeMs;
155
+ this.lastSpeedup = speedup;
156
+ // Memory estimates
157
+ // Naive: needs full N x N attention matrix
158
+ const naiveMemoryBytes = numVectors * numVectors * 4; // Float32
159
+ // Flash: only needs block_size x block_size at a time
160
+ const flashMemoryBytes = this.config.blockSize * this.config.blockSize * 4;
161
+ const memoryReduction = naiveMemoryBytes / flashMemoryBytes;
162
+ const result = {
163
+ naiveTimeMs,
164
+ flashTimeMs,
165
+ speedup,
166
+ numVectors,
167
+ dimensions,
168
+ naiveMemoryBytes,
169
+ flashMemoryBytes,
170
+ memoryReduction,
171
+ };
172
+ this.benchmarkHistory.push(result);
173
+ return result;
174
+ }
175
+ /**
176
+ * Get benchmark history
177
+ */
178
+ getBenchmarkHistory() {
179
+ return [...this.benchmarkHistory];
180
+ }
181
+ /**
182
+ * Get configuration
183
+ */
184
+ getConfig() {
185
+ return { ...this.config };
186
+ }
187
+ /**
188
+ * Update configuration
189
+ */
190
+ setConfig(config) {
191
+ this.config = { ...this.config, ...config };
192
+ }
193
+ // ==========================================================================
194
+ // Private Methods
195
+ // ==========================================================================
196
+ /**
197
+ * Naive O(N^2) attention implementation for comparison
198
+ */
199
+ naiveAttention(queries, keys, values) {
200
+ const numQueries = queries.length;
201
+ const numKeys = keys.length;
202
+ const dimensions = queries[0]?.length ?? this.config.dimensions;
203
+ const scale = 1.0 / (Math.sqrt(dimensions) * this.config.temperature);
204
+ // Compute full attention matrix Q @ K.T
205
+ const scores = new Array(numQueries);
206
+ for (let i = 0; i < numQueries; i++) {
207
+ scores[i] = new Float32Array(numKeys);
208
+ for (let j = 0; j < numKeys; j++) {
209
+ scores[i][j] = this.dotProduct(queries[i], keys[j]) * scale;
210
+ }
211
+ }
212
+ // Softmax over each row
213
+ const attentionWeights = new Array(numQueries);
214
+ for (let i = 0; i < numQueries; i++) {
215
+ attentionWeights[i] = this.softmax(scores[i]);
216
+ }
217
+ // Compute output: attention @ V
218
+ const output = new Array(numQueries);
219
+ for (let i = 0; i < numQueries; i++) {
220
+ output[i] = new Float32Array(dimensions);
221
+ for (let j = 0; j < numKeys; j++) {
222
+ const weight = attentionWeights[i][j];
223
+ for (let d = 0; d < dimensions; d++) {
224
+ output[i][d] += weight * values[j][d];
225
+ }
226
+ }
227
+ }
228
+ return output;
229
+ }
230
+ /**
231
+ * Compute block of attention scores
232
+ */
233
+ computeBlockScores(Q, K, qStart, qEnd, kStart, kEnd, scale) {
234
+ const qBlockSize = qEnd - qStart;
235
+ const kBlockSize = kEnd - kStart;
236
+ const scores = new Array(qBlockSize);
237
+ for (let qi = 0; qi < qBlockSize; qi++) {
238
+ scores[qi] = new Float32Array(kBlockSize);
239
+ const query = Q[qStart + qi];
240
+ for (let ki = 0; ki < kBlockSize; ki++) {
241
+ scores[qi][ki] = this.dotProduct(query, K[kStart + ki]) * scale;
242
+ }
243
+ }
244
+ return scores;
245
+ }
246
+ /**
247
+ * Online softmax with output accumulation (key to Flash Attention)
248
+ *
249
+ * Uses the online softmax trick to maintain numerical stability
250
+ * while processing blocks incrementally.
251
+ */
252
+ onlineSoftmaxAccumulate(blockScores, V, output, maxScores, sumExp, qStart, qEnd, kStart, kEnd) {
253
+ const qBlockSize = qEnd - qStart;
254
+ const kBlockSize = kEnd - kStart;
255
+ const dimensions = output[0]?.length ?? this.config.dimensions;
256
+ for (let qi = 0; qi < qBlockSize; qi++) {
257
+ const globalQi = qStart + qi;
258
+ const rowScores = blockScores[qi];
259
+ // Find max in this block
260
+ let blockMax = -Infinity;
261
+ for (let ki = 0; ki < kBlockSize; ki++) {
262
+ if (rowScores[ki] > blockMax) {
263
+ blockMax = rowScores[ki];
264
+ }
265
+ }
266
+ const oldMax = maxScores[globalQi];
267
+ const newMax = Math.max(oldMax, blockMax);
268
+ // Correction factor for previous outputs
269
+ const correction = oldMax === -Infinity ? 0 : Math.exp(oldMax - newMax);
270
+ // Update sum of exponentials with correction
271
+ let newSumExp = sumExp[globalQi] * correction;
272
+ // Scale existing output by correction factor
273
+ for (let d = 0; d < dimensions; d++) {
274
+ output[globalQi][d] *= correction;
275
+ }
276
+ // Process this block
277
+ for (let ki = 0; ki < kBlockSize; ki++) {
278
+ const expScore = Math.exp(rowScores[ki] - newMax);
279
+ newSumExp += expScore;
280
+ // Accumulate weighted values
281
+ const value = V[kStart + ki];
282
+ for (let d = 0; d < dimensions; d++) {
283
+ output[globalQi][d] += expScore * value[d];
284
+ }
285
+ }
286
+ // Update running statistics
287
+ maxScores[globalQi] = newMax;
288
+ sumExp[globalQi] = newSumExp;
289
+ }
290
+ }
291
+ /**
292
+ * Compute dot product of two vectors
293
+ */
294
+ dotProduct(a, b) {
295
+ let sum = 0;
296
+ const len = Math.min(a.length, b.length);
297
+ // Unroll loop for performance (4x unroll)
298
+ let i = 0;
299
+ for (; i <= len - 4; i += 4) {
300
+ sum += a[i] * b[i] +
301
+ a[i + 1] * b[i + 1] +
302
+ a[i + 2] * b[i + 2] +
303
+ a[i + 3] * b[i + 3];
304
+ }
305
+ // Handle remaining elements
306
+ for (; i < len; i++) {
307
+ sum += a[i] * b[i];
308
+ }
309
+ return sum;
310
+ }
311
+ /**
312
+ * Stable softmax implementation
313
+ */
314
+ softmax(scores) {
315
+ const result = new Float32Array(scores.length);
316
+ // Find max for numerical stability
317
+ let max = -Infinity;
318
+ for (let i = 0; i < scores.length; i++) {
319
+ if (scores[i] > max) {
320
+ max = scores[i];
321
+ }
322
+ }
323
+ // Compute exp and sum
324
+ let sum = 0;
325
+ for (let i = 0; i < scores.length; i++) {
326
+ result[i] = Math.exp(scores[i] - max);
327
+ sum += result[i];
328
+ }
329
+ // Normalize
330
+ if (sum > 0) {
331
+ for (let i = 0; i < scores.length; i++) {
332
+ result[i] /= sum;
333
+ }
334
+ }
335
+ return result;
336
+ }
337
+ /**
338
+ * Generate random vectors for benchmarking
339
+ */
340
+ generateRandomVectors(count, dimensions) {
341
+ const vectors = new Array(count);
342
+ for (let i = 0; i < count; i++) {
343
+ vectors[i] = new Float32Array(dimensions);
344
+ for (let d = 0; d < dimensions; d++) {
345
+ vectors[i][d] = (Math.random() - 0.5) * 2;
346
+ }
347
+ // Normalize
348
+ let norm = 0;
349
+ for (let d = 0; d < dimensions; d++) {
350
+ norm += vectors[i][d] * vectors[i][d];
351
+ }
352
+ norm = Math.sqrt(norm);
353
+ if (norm > 0) {
354
+ for (let d = 0; d < dimensions; d++) {
355
+ vectors[i][d] /= norm;
356
+ }
357
+ }
358
+ }
359
+ return vectors;
360
+ }
361
+ /**
362
+ * Validate input arrays
363
+ */
364
+ validateInputs(queries, keys, values) {
365
+ if (!queries.length || !keys.length || !values.length) {
366
+ throw new Error('FlashAttention: Empty input arrays');
367
+ }
368
+ if (keys.length !== values.length) {
369
+ throw new Error(`FlashAttention: Keys and values must have same count. Got ${keys.length} keys, ${values.length} values`);
370
+ }
371
+ const qDim = queries[0]?.length ?? 0;
372
+ const kDim = keys[0]?.length ?? 0;
373
+ const vDim = values[0]?.length ?? 0;
374
+ if (qDim !== kDim) {
375
+ throw new Error(`FlashAttention: Query and key dimensions must match. Got Q=${qDim}, K=${kDim}`);
376
+ }
377
+ if (kDim !== vDim) {
378
+ throw new Error(`FlashAttention: Key and value dimensions must match. Got K=${kDim}, V=${vDim}`);
379
+ }
380
+ }
381
+ }
382
+ // ============================================================================
383
+ // Singleton Instance
384
+ // ============================================================================
385
+ let flashAttentionInstance = null;
386
+ /**
387
+ * Get singleton FlashAttention instance
388
+ *
389
+ * @param config - Optional configuration (only used on first call)
390
+ * @returns FlashAttention instance
391
+ */
392
+ export function getFlashAttention(config) {
393
+ if (!flashAttentionInstance) {
394
+ flashAttentionInstance = new FlashAttention(config);
395
+ }
396
+ return flashAttentionInstance;
397
+ }
398
+ /**
399
+ * Reset singleton (for testing)
400
+ */
401
+ export function resetFlashAttention() {
402
+ flashAttentionInstance = null;
403
+ }
404
+ // ============================================================================
405
+ // Convenience Functions
406
+ // ============================================================================
407
+ /**
408
+ * Compute attention using Flash Attention
409
+ */
410
+ export function computeAttention(queries, keys, values, config) {
411
+ const fa = config ? new FlashAttention(config) : getFlashAttention();
412
+ return fa.attention(queries, keys, values);
413
+ }
414
+ /**
415
+ * Run Flash Attention benchmark
416
+ */
417
+ export function benchmarkFlashAttention(numVectors, dimensions, iterations) {
418
+ return getFlashAttention().benchmark(numVectors, dimensions, iterations);
419
+ }
420
+ /**
421
+ * Get current speedup from last benchmark
422
+ */
423
+ export function getFlashAttentionSpeedup() {
424
+ return getFlashAttention().getSpeedup();
425
+ }
426
+ //# sourceMappingURL=flash-attention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flash-attention.js","sourceRoot":"","sources":["../../../src/ruvector/flash-attention.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA6CH,+EAA+E;AAC/E,iCAAiC;AACjC,+EAA+E;AAE/E,MAAM,OAAO,cAAc;IACjB,MAAM,CAAuB;IAC7B,WAAW,GAAW,CAAC,CAAC;IACxB,gBAAgB,GAAsB,EAAE,CAAC;IAEjD,YAAY,SAAwC,EAAE;QACpD,IAAI,CAAC,MAAM,GAAG;YACZ,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;YACjC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,GAAG;YACpC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,GAAG;YACtC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI;SAC5C,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,aAAa;IACb,6EAA6E;IAE7E;;;;;;;OAOG;IACH,SAAS,CACP,OAAuB,EACvB,IAAoB,EACpB,MAAsB;QAEtB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEpC,kBAAkB;QAClB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAE3C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAEhE,wDAAwD;QACxD,IAAI,MAAsB,CAAC;QAC3B,IAAI,UAAU,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC;YAChC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAEpD,OAAO;YACL,MAAM;YACN,aAAa;SACd,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,cAAc,CACZ,CAAiB,EACjB,CAAiB,EACjB,CAAiB,EACjB,SAAiB;QAEjB,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;QAC5B,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;QACzB,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAC1D,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEtE,2BAA2B;QAC3B,MAAM,MAAM,GAAmB,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;QACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QAED,iEAAiE;QACjE,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpD,oBAAoB;QACpB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC;YAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC;YAEjC,4CAA4C;YAC5C,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC;gBAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE,UAAU,CAAC,CAAC;gBAEtD,0CAA0C;gBAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CACzC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CACxC,CAAC;gBAEF,6CAA6C;gBAC7C,IAAI,CAAC,uBAAuB,CAC1B,WAAW,EACX,CAAC,EACD,MAAM,EACN,SAAS,EACT,MAAM,EACN,MAAM,EACN,IAAI,EACJ,MAAM,EACN,IAAI,CACL,CAAC;YACJ,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBACpC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,SAAS,CACP,aAAqB,GAAG,EACxB,aAAqB,GAAG,EACxB,aAAqB,CAAC;QAEtB,4BAA4B;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAElE,UAAU;QACV,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEzG,4BAA4B;QAC5B,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC3C,YAAY,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAC5C,CAAC;QACD,MAAM,WAAW,GAAG,YAAY,GAAG,UAAU,CAAC;QAE9C,4BAA4B;QAC5B,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClE,YAAY,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAC5C,CAAC;QACD,MAAM,WAAW,GAAG,YAAY,GAAG,UAAU,CAAC;QAE9C,oBAAoB;QACpB,MAAM,OAAO,GAAG,WAAW,GAAG,WAAW,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAE3B,mBAAmB;QACnB,2CAA2C;QAC3C,MAAM,gBAAgB,GAAG,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,UAAU;QAChE,sDAAsD;QACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;QAC3E,MAAM,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;QAE5D,MAAM,MAAM,GAAoB;YAC9B,WAAW;YACX,WAAW;YACX,OAAO;YACP,UAAU;YACV,UAAU;YACV,gBAAgB;YAChB,gBAAgB;YAChB,eAAe;SAChB,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAqC;QAC7C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IAC9C,CAAC;IAED,6EAA6E;IAC7E,kBAAkB;IAClB,6EAA6E;IAE7E;;OAEG;IACK,cAAc,CACpB,OAAuB,EACvB,IAAoB,EACpB,MAAsB;QAEtB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAChE,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEtE,wCAAwC;QACxC,MAAM,MAAM,GAAmB,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;QACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,gBAAgB,GAAmB,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,gCAAgC;QAChC,MAAM,MAAM,GAAmB,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;QACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBACpC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,kBAAkB,CACxB,CAAiB,EACjB,CAAiB,EACjB,MAAc,EACd,IAAY,EACZ,MAAc,EACd,IAAY,EACZ,KAAa;QAEb,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC;QAEjC,MAAM,MAAM,GAAmB,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;QACrD,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;YAC7B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;gBACvC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;YAClE,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACK,uBAAuB,CAC7B,WAA2B,EAC3B,CAAiB,EACjB,MAAsB,EACtB,SAAuB,EACvB,MAAoB,EACpB,MAAc,EACd,IAAY,EACZ,MAAc,EACd,IAAY;QAEZ,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC;QACjC,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAE/D,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;YAElC,yBAAyB;YACzB,IAAI,QAAQ,GAAG,CAAC,QAAQ,CAAC;YACzB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;gBACvC,IAAI,SAAS,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC;oBAC7B,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAE1C,yCAAyC;YACzC,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;YAExE,6CAA6C;YAC7C,IAAI,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;YAE9C,6CAA6C;YAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;YACpC,CAAC;YAED,qBAAqB;YACrB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;gBACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;gBAClD,SAAS,IAAI,QAAQ,CAAC;gBAEtB,6BAA6B;gBAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;gBAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YAED,4BAA4B;YAC5B,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;YAC7B,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,CAAe,EAAE,CAAe;QACjD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAEzC,0CAA0C;QAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,CAAC;QAED,4BAA4B;QAC5B,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YACpB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACK,OAAO,CAAC,MAAoB;QAClC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE/C,mCAAmC;QACnC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;gBACpB,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YACtC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QAED,YAAY;QACZ,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,KAAa,EAAE,UAAkB;QAC7D,MAAM,OAAO,GAAmB,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;QAEjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;YAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5C,CAAC;YAED,YAAY;YACZ,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBACpC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,cAAc,CACpB,OAAuB,EACvB,IAAoB,EACpB,MAAsB;QAEtB,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,6DAA6D,IAAI,CAAC,MAAM,UAAU,MAAM,CAAC,MAAM,SAAS,CACzG,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;QAEpC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,8DAA8D,IAAI,OAAO,IAAI,EAAE,CAChF,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,8DAA8D,IAAI,OAAO,IAAI,EAAE,CAChF,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,IAAI,sBAAsB,GAA0B,IAAI,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAsC;IACtE,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,sBAAsB,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,sBAAsB,GAAG,IAAI,CAAC;AAChC,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAuB,EACvB,IAAoB,EACpB,MAAsB,EACtB,MAAsC;IAEtC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IACrE,OAAO,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAmB,EACnB,UAAmB,EACnB,UAAmB;IAEnB,OAAO,iBAAiB,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,iBAAiB,EAAE,CAAC,UAAU,EAAE,CAAC;AAC1C,CAAC"}
@@ -3,19 +3,24 @@
3
3
  *
4
4
  * Provides integration with @ruvector packages for:
5
5
  * - Q-Learning based task routing
6
+ * - Mixture of Experts (MoE) routing
6
7
  * - AST code analysis
7
8
  * - Diff classification
8
9
  * - Coverage-based routing
9
10
  * - Graph boundary analysis
11
+ * - Flash Attention for faster similarity computations
10
12
  *
11
13
  * @module @claude-flow/cli/ruvector
12
14
  */
13
15
  export { QLearningRouter, createQLearningRouter, type QLearningRouterConfig, type RouteDecision } from './q-learning-router.js';
16
+ export { MoERouter, getMoERouter, resetMoERouter, createMoERouter, EXPERT_NAMES, NUM_EXPERTS, INPUT_DIM, HIDDEN_DIM, type ExpertType, type MoERouterConfig, type RoutingResult, type LoadBalanceStats, } from './moe-router.js';
14
17
  export { ASTAnalyzer, createASTAnalyzer, type ASTAnalysis, type ASTNode, type ASTAnalyzerConfig } from './ast-analyzer.js';
15
18
  export { DiffClassifier, createDiffClassifier, analyzeDiff, analyzeDiffSync, assessFileRisk, assessOverallRisk, classifyDiff, suggestReviewers, getGitDiffNumstat, getGitDiffNumstatAsync, clearDiffCache, clearAllDiffCaches, type DiffClassification, type DiffHunk, type DiffChange, type FileDiff, type DiffAnalysis, type DiffClassifierConfig, type DiffFile, type RiskLevel, type FileRisk, type OverallRisk, type DiffAnalysisResult, } from './diff-classifier.js';
16
19
  export { CoverageRouter, createCoverageRouter, coverageRoute, coverageSuggest, coverageGaps, clearCoverageCache, getCoverageCacheStats, type CoverageRouterConfig, type FileCoverage, type CoverageReport, type CoverageRouteResult, type CoverageSuggestResult, type CoverageGapsResult, type CoverageRouteOptions, type CoverageSuggestOptions, type CoverageGapsOptions, } from './coverage-router.js';
17
20
  export { coverageRouterTools, hooksCoverageRoute, hooksCoverageSuggest, hooksCoverageGaps } from './coverage-tools.js';
18
21
  export { buildDependencyGraph, analyzeGraph, analyzeMinCutBoundaries, analyzeModuleCommunities, detectCircularDependencies, exportToDot, loadRuVector, fallbackMinCut, fallbackLouvain, clearGraphCaches, getGraphCacheStats, type GraphNode, type GraphEdge, type DependencyGraph, type MinCutBoundary, type ModuleCommunity, type CircularDependency, type GraphAnalysisResult, } from './graph-analyzer.js';
22
+ export { FlashAttention, getFlashAttention, resetFlashAttention, computeAttention, benchmarkFlashAttention, getFlashAttentionSpeedup, type FlashAttentionConfig, type AttentionResult, type BenchmarkResult, } from './flash-attention.js';
23
+ export { LoRAAdapter, getLoRAAdapter, resetLoRAAdapter, createLoRAAdapter, adaptEmbedding, trainLoRA, getLoRAStats, DEFAULT_RANK, DEFAULT_ALPHA, INPUT_DIM as LORA_INPUT_DIM, OUTPUT_DIM as LORA_OUTPUT_DIM, type LoRAConfig, type LoRAWeights, type AdaptationResult, type LoRAStats, } from './lora-adapter.js';
19
24
  /**
20
25
  * Check if ruvector packages are available
21
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ruvector/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,KAAK,qBAAqB,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAChI,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3H,OAAO,EACL,cAAc,EACd,oBAAoB,EAEpB,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EAEtB,cAAc,EACd,kBAAkB,EAElB,KAAK,kBAAkB,EACvB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,oBAAoB,EAEpB,aAAa,EACb,eAAe,EACf,YAAY,EAEZ,kBAAkB,EAClB,qBAAqB,EAErB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACvH,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,WAAW,EACX,YAAY,EACZ,cAAc,EACd,eAAe,EAEf,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO5D;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOjE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ruvector/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,KAAK,qBAAqB,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAChI,OAAO,EACL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,eAAe,EACf,YAAY,EACZ,WAAW,EACX,SAAS,EACT,UAAU,EACV,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3H,OAAO,EACL,cAAc,EACd,oBAAoB,EAEpB,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EAEtB,cAAc,EACd,kBAAkB,EAElB,KAAK,kBAAkB,EACvB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,oBAAoB,EAEpB,aAAa,EACb,eAAe,EACf,YAAY,EAEZ,kBAAkB,EAClB,qBAAqB,EAErB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACvH,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,WAAW,EACX,YAAY,EACZ,cAAc,EACd,eAAe,EAEf,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,SAAS,IAAI,cAAc,EAC3B,UAAU,IAAI,eAAe,EAC7B,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,SAAS,GACf,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO5D;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOjE"}