@sparkleideas/ruvector-upstream 3.0.0-alpha.11
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 +71 -0
- package/package.json +125 -0
- package/src/bridges/attention.ts +185 -0
- package/src/bridges/cognitive.ts +343 -0
- package/src/bridges/exotic.ts +277 -0
- package/src/bridges/gnn.ts +177 -0
- package/src/bridges/hnsw.ts +199 -0
- package/src/bridges/hyperbolic.ts +268 -0
- package/src/bridges/learning.ts +238 -0
- package/src/bridges/sona.ts +418 -0
- package/src/index.ts +22 -0
- package/src/registry.ts +182 -0
- package/src/types.ts +146 -0
package/README.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# RuVector Upstream WASM Packages
|
|
2
|
+
|
|
3
|
+
This directory contains references and integration bridges for upstream RuVector WASM packages used by Claude Flow plugins.
|
|
4
|
+
|
|
5
|
+
## Available WASM Packages
|
|
6
|
+
|
|
7
|
+
| Package | Category | Description |
|
|
8
|
+
|---------|----------|-------------|
|
|
9
|
+
| `micro-hnsw-wasm` | Vector Search | Ultra-fast HNSW vector similarity search |
|
|
10
|
+
| `ruvector-attention-wasm` | Neural | Flash attention mechanism (2.49x-7.47x speedup) |
|
|
11
|
+
| `ruvector-gnn-wasm` | Graph | Graph Neural Networks for relationship modeling |
|
|
12
|
+
| `ruvector-hyperbolic-hnsw-wasm` | Embeddings | Hyperbolic embeddings in Poincaré ball model |
|
|
13
|
+
| `ruvector-learning-wasm` | Learning | Reinforcement learning algorithms |
|
|
14
|
+
| `ruvector-nervous-system-wasm` | Coordination | Neural coordination for multi-agent systems |
|
|
15
|
+
| `ruvector-economy-wasm` | Economics | Token economics and resource allocation |
|
|
16
|
+
| `ruvector-exotic-wasm` | Quantum | Quantum-inspired optimization algorithms |
|
|
17
|
+
| `ruvector-sparse-inference-wasm` | Inference | Sparse matrix inference for efficiency |
|
|
18
|
+
| `ruvector-tiny-dancer-wasm` | Inference | Lightweight model inference (<5MB) |
|
|
19
|
+
| `ruvector-mincut-wasm` | Graph | Graph mincut algorithms for partitioning |
|
|
20
|
+
| `ruvector-fpga-transformer-wasm` | Accelerated | FPGA-accelerated transformer operations |
|
|
21
|
+
| `ruvector-dag-wasm` | Graph | Directed Acyclic Graph processing |
|
|
22
|
+
| `cognitum-gate-kernel` | Cognitive | Cognitive computation kernels |
|
|
23
|
+
| `sona` | Neural | Self-Optimizing Neural Architecture |
|
|
24
|
+
|
|
25
|
+
## Upstream Repository
|
|
26
|
+
|
|
27
|
+
All packages are sourced from: https://github.com/ruvnet/ruvector
|
|
28
|
+
|
|
29
|
+
## Plugin Dependencies
|
|
30
|
+
|
|
31
|
+
| Plugin | Primary WASM Packages |
|
|
32
|
+
|--------|----------------------|
|
|
33
|
+
| `@claude-flow/plugin-healthcare-cds` | micro-hnsw-wasm, ruvector-gnn-wasm, ruvector-hyperbolic-hnsw-wasm |
|
|
34
|
+
| `@claude-flow/plugin-financial-risk` | micro-hnsw-wasm, ruvector-economy-wasm, ruvector-sparse-inference-wasm |
|
|
35
|
+
| `@claude-flow/plugin-legal-contracts` | micro-hnsw-wasm, ruvector-attention-wasm, ruvector-dag-wasm |
|
|
36
|
+
| `@claude-flow/plugin-code-intelligence` | micro-hnsw-wasm, ruvector-gnn-wasm, ruvector-mincut-wasm, sona |
|
|
37
|
+
| `@claude-flow/plugin-test-intelligence` | ruvector-learning-wasm, ruvector-gnn-wasm, sona |
|
|
38
|
+
| `@claude-flow/plugin-perf-optimizer` | ruvector-sparse-inference-wasm, ruvector-fpga-transformer-wasm |
|
|
39
|
+
| `@claude-flow/plugin-neural-coordination` | sona, ruvector-nervous-system-wasm, ruvector-attention-wasm |
|
|
40
|
+
| `@claude-flow/plugin-cognitive-kernel` | cognitum-gate-kernel, sona, ruvector-attention-wasm |
|
|
41
|
+
| `@claude-flow/plugin-quantum-optimizer` | ruvector-exotic-wasm, ruvector-hyperbolic-hnsw-wasm |
|
|
42
|
+
| `@claude-flow/plugin-hyperbolic-reasoning` | ruvector-hyperbolic-hnsw-wasm, ruvector-attention-wasm |
|
|
43
|
+
|
|
44
|
+
## Installation
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Install specific WASM bridges
|
|
48
|
+
npm install @ruvector/micro-hnsw-wasm
|
|
49
|
+
npm install @ruvector/attention-wasm
|
|
50
|
+
npm install @ruvector/gnn-wasm
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Integration Pattern
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
import { initMicroHnsw } from '@ruvector/micro-hnsw-wasm';
|
|
57
|
+
import { FlashAttention } from '@ruvector/attention-wasm';
|
|
58
|
+
|
|
59
|
+
// Initialize WASM modules
|
|
60
|
+
const hnsw = await initMicroHnsw();
|
|
61
|
+
const attention = await FlashAttention.init();
|
|
62
|
+
|
|
63
|
+
// Use in Claude Flow plugin
|
|
64
|
+
export const plugin: ClaudeFlowPlugin = {
|
|
65
|
+
name: '@claude-flow/plugin-example',
|
|
66
|
+
bridges: {
|
|
67
|
+
hnsw,
|
|
68
|
+
attention,
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
```
|
package/package.json
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@sparkleideas/ruvector-upstream",
|
|
3
|
+
"version": "3.0.0-alpha.11",
|
|
4
|
+
"description": "RuVector WASM package bridges for Claude Flow plugins",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
},
|
|
13
|
+
"./hnsw": {
|
|
14
|
+
"import": "./dist/bridges/hnsw.js",
|
|
15
|
+
"types": "./dist/bridges/hnsw.d.ts"
|
|
16
|
+
},
|
|
17
|
+
"./attention": {
|
|
18
|
+
"import": "./dist/bridges/attention.js",
|
|
19
|
+
"types": "./dist/bridges/attention.d.ts"
|
|
20
|
+
},
|
|
21
|
+
"./gnn": {
|
|
22
|
+
"import": "./dist/bridges/gnn.js",
|
|
23
|
+
"types": "./dist/bridges/gnn.d.ts"
|
|
24
|
+
},
|
|
25
|
+
"./hyperbolic": {
|
|
26
|
+
"import": "./dist/bridges/hyperbolic.js",
|
|
27
|
+
"types": "./dist/bridges/hyperbolic.d.ts"
|
|
28
|
+
},
|
|
29
|
+
"./learning": {
|
|
30
|
+
"import": "./dist/bridges/learning.js",
|
|
31
|
+
"types": "./dist/bridges/learning.d.ts"
|
|
32
|
+
},
|
|
33
|
+
"./exotic": {
|
|
34
|
+
"import": "./dist/bridges/exotic.js",
|
|
35
|
+
"types": "./dist/bridges/exotic.d.ts"
|
|
36
|
+
},
|
|
37
|
+
"./cognitive": {
|
|
38
|
+
"import": "./dist/bridges/cognitive.js",
|
|
39
|
+
"types": "./dist/bridges/cognitive.d.ts"
|
|
40
|
+
},
|
|
41
|
+
"./sona": {
|
|
42
|
+
"import": "./dist/bridges/sona.js",
|
|
43
|
+
"types": "./dist/bridges/sona.d.ts"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"files": [
|
|
47
|
+
"dist",
|
|
48
|
+
"src"
|
|
49
|
+
],
|
|
50
|
+
"scripts": {
|
|
51
|
+
"build": "tsc",
|
|
52
|
+
"dev": "tsc --watch",
|
|
53
|
+
"clean": "rimraf dist",
|
|
54
|
+
"test": "vitest run",
|
|
55
|
+
"typecheck": "tsc --noEmit"
|
|
56
|
+
},
|
|
57
|
+
"keywords": [
|
|
58
|
+
"claude-flow",
|
|
59
|
+
"ruvector",
|
|
60
|
+
"wasm",
|
|
61
|
+
"vector-search",
|
|
62
|
+
"neural",
|
|
63
|
+
"graph",
|
|
64
|
+
"quantum"
|
|
65
|
+
],
|
|
66
|
+
"author": "Claude Flow Team",
|
|
67
|
+
"license": "MIT",
|
|
68
|
+
"repository": {
|
|
69
|
+
"type": "git",
|
|
70
|
+
"url": "https://github.com/ruvnet/claude-flow.git",
|
|
71
|
+
"directory": "v3/plugins/ruvector-upstream"
|
|
72
|
+
},
|
|
73
|
+
"dependencies": {
|
|
74
|
+
"zod": "^3.22.4"
|
|
75
|
+
},
|
|
76
|
+
"devDependencies": {
|
|
77
|
+
"@types/node": "^20.10.0",
|
|
78
|
+
"rimraf": "^5.0.5",
|
|
79
|
+
"typescript": "^5.3.0",
|
|
80
|
+
"vitest": "^4.0.16"
|
|
81
|
+
},
|
|
82
|
+
"peerDependencies": {
|
|
83
|
+
"@ruvector/micro-hnsw-wasm": ">=0.1.0",
|
|
84
|
+
"@ruvector/attention-wasm": ">=0.1.0",
|
|
85
|
+
"@ruvector/gnn-wasm": ">=0.1.0",
|
|
86
|
+
"@ruvector/hyperbolic-hnsw-wasm": ">=0.1.0",
|
|
87
|
+
"@ruvector/learning-wasm": ">=0.1.0",
|
|
88
|
+
"@ruvector/exotic-wasm": ">=0.1.0",
|
|
89
|
+
"@ruvector/cognitum-gate-kernel": ">=0.1.0",
|
|
90
|
+
"@ruvector/sona": ">=0.1.0"
|
|
91
|
+
},
|
|
92
|
+
"peerDependenciesMeta": {
|
|
93
|
+
"@ruvector/micro-hnsw-wasm": {
|
|
94
|
+
"optional": true
|
|
95
|
+
},
|
|
96
|
+
"@ruvector/attention-wasm": {
|
|
97
|
+
"optional": true
|
|
98
|
+
},
|
|
99
|
+
"@ruvector/gnn-wasm": {
|
|
100
|
+
"optional": true
|
|
101
|
+
},
|
|
102
|
+
"@ruvector/hyperbolic-hnsw-wasm": {
|
|
103
|
+
"optional": true
|
|
104
|
+
},
|
|
105
|
+
"@ruvector/learning-wasm": {
|
|
106
|
+
"optional": true
|
|
107
|
+
},
|
|
108
|
+
"@ruvector/exotic-wasm": {
|
|
109
|
+
"optional": true
|
|
110
|
+
},
|
|
111
|
+
"@ruvector/cognitum-gate-kernel": {
|
|
112
|
+
"optional": true
|
|
113
|
+
},
|
|
114
|
+
"@ruvector/sona": {
|
|
115
|
+
"optional": true
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"engines": {
|
|
119
|
+
"node": ">=18.0.0"
|
|
120
|
+
},
|
|
121
|
+
"publishConfig": {
|
|
122
|
+
"access": "public",
|
|
123
|
+
"tag": "v3alpha"
|
|
124
|
+
}
|
|
125
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flash Attention Bridge
|
|
3
|
+
*
|
|
4
|
+
* Bridge to ruvector-attention-wasm for efficient attention computation.
|
|
5
|
+
* Achieves 2.49x-7.47x speedup over standard attention.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { WasmBridge, WasmModuleStatus, AttentionConfig } from '../types.js';
|
|
9
|
+
import { AttentionConfigSchema } from '../types.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Attention WASM module interface
|
|
13
|
+
*/
|
|
14
|
+
interface AttentionModule {
|
|
15
|
+
flashAttention(
|
|
16
|
+
query: Float32Array,
|
|
17
|
+
key: Float32Array,
|
|
18
|
+
value: Float32Array,
|
|
19
|
+
config: AttentionConfig
|
|
20
|
+
): Float32Array;
|
|
21
|
+
|
|
22
|
+
multiHeadAttention(
|
|
23
|
+
query: Float32Array,
|
|
24
|
+
key: Float32Array,
|
|
25
|
+
value: Float32Array,
|
|
26
|
+
config: AttentionConfig
|
|
27
|
+
): Float32Array;
|
|
28
|
+
|
|
29
|
+
selfAttention(
|
|
30
|
+
input: Float32Array,
|
|
31
|
+
config: AttentionConfig
|
|
32
|
+
): Float32Array;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Flash Attention Bridge implementation
|
|
37
|
+
*/
|
|
38
|
+
export class AttentionBridge implements WasmBridge<AttentionModule> {
|
|
39
|
+
readonly name = 'ruvector-attention-wasm';
|
|
40
|
+
readonly version = '0.1.0';
|
|
41
|
+
|
|
42
|
+
private _status: WasmModuleStatus = 'unloaded';
|
|
43
|
+
private _module: AttentionModule | null = null;
|
|
44
|
+
private config: AttentionConfig;
|
|
45
|
+
|
|
46
|
+
constructor(config?: Partial<AttentionConfig>) {
|
|
47
|
+
this.config = AttentionConfigSchema.parse(config ?? {});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
get status(): WasmModuleStatus {
|
|
51
|
+
return this._status;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async init(): Promise<void> {
|
|
55
|
+
if (this._status === 'ready') return;
|
|
56
|
+
if (this._status === 'loading') return;
|
|
57
|
+
|
|
58
|
+
this._status = 'loading';
|
|
59
|
+
|
|
60
|
+
try {
|
|
61
|
+
const wasmModule = await import('@ruvector/attention-wasm').catch(() => null);
|
|
62
|
+
|
|
63
|
+
if (wasmModule) {
|
|
64
|
+
this._module = wasmModule as unknown as AttentionModule;
|
|
65
|
+
} else {
|
|
66
|
+
this._module = this.createMockModule();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
this._status = 'ready';
|
|
70
|
+
} catch (error) {
|
|
71
|
+
this._status = 'error';
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
async destroy(): Promise<void> {
|
|
77
|
+
this._module = null;
|
|
78
|
+
this._status = 'unloaded';
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
isReady(): boolean {
|
|
82
|
+
return this._status === 'ready';
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
getModule(): AttentionModule | null {
|
|
86
|
+
return this._module;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Compute flash attention
|
|
91
|
+
*/
|
|
92
|
+
flashAttention(
|
|
93
|
+
query: Float32Array,
|
|
94
|
+
key: Float32Array,
|
|
95
|
+
value: Float32Array,
|
|
96
|
+
config?: Partial<AttentionConfig>
|
|
97
|
+
): Float32Array {
|
|
98
|
+
if (!this._module) throw new Error('Attention module not initialized');
|
|
99
|
+
const mergedConfig = { ...this.config, ...config };
|
|
100
|
+
return this._module.flashAttention(query, key, value, mergedConfig);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Compute multi-head attention
|
|
105
|
+
*/
|
|
106
|
+
multiHeadAttention(
|
|
107
|
+
query: Float32Array,
|
|
108
|
+
key: Float32Array,
|
|
109
|
+
value: Float32Array,
|
|
110
|
+
config?: Partial<AttentionConfig>
|
|
111
|
+
): Float32Array {
|
|
112
|
+
if (!this._module) throw new Error('Attention module not initialized');
|
|
113
|
+
const mergedConfig = { ...this.config, ...config };
|
|
114
|
+
return this._module.multiHeadAttention(query, key, value, mergedConfig);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Compute self-attention
|
|
119
|
+
*/
|
|
120
|
+
selfAttention(
|
|
121
|
+
input: Float32Array,
|
|
122
|
+
config?: Partial<AttentionConfig>
|
|
123
|
+
): Float32Array {
|
|
124
|
+
if (!this._module) throw new Error('Attention module not initialized');
|
|
125
|
+
const mergedConfig = { ...this.config, ...config };
|
|
126
|
+
return this._module.selfAttention(input, mergedConfig);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Create mock module for development
|
|
131
|
+
*/
|
|
132
|
+
private createMockModule(): AttentionModule {
|
|
133
|
+
return {
|
|
134
|
+
flashAttention(
|
|
135
|
+
query: Float32Array,
|
|
136
|
+
key: Float32Array,
|
|
137
|
+
value: Float32Array,
|
|
138
|
+
config: AttentionConfig
|
|
139
|
+
): Float32Array {
|
|
140
|
+
// Simplified mock attention
|
|
141
|
+
const seqLen = config.seqLength;
|
|
142
|
+
const headDim = config.headDim;
|
|
143
|
+
const output = new Float32Array(seqLen * headDim);
|
|
144
|
+
|
|
145
|
+
// Scaled dot-product attention approximation
|
|
146
|
+
for (let i = 0; i < seqLen; i++) {
|
|
147
|
+
for (let j = 0; j < headDim; j++) {
|
|
148
|
+
let sum = 0;
|
|
149
|
+
for (let k = 0; k < seqLen; k++) {
|
|
150
|
+
const qk = query[i * headDim + j] * key[k * headDim + j];
|
|
151
|
+
const attn = Math.exp(qk / Math.sqrt(headDim));
|
|
152
|
+
sum += attn * value[k * headDim + j];
|
|
153
|
+
}
|
|
154
|
+
output[i * headDim + j] = sum;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return output;
|
|
159
|
+
},
|
|
160
|
+
|
|
161
|
+
multiHeadAttention(
|
|
162
|
+
query: Float32Array,
|
|
163
|
+
key: Float32Array,
|
|
164
|
+
value: Float32Array,
|
|
165
|
+
config: AttentionConfig
|
|
166
|
+
): Float32Array {
|
|
167
|
+
return this.flashAttention(query, key, value, config);
|
|
168
|
+
},
|
|
169
|
+
|
|
170
|
+
selfAttention(
|
|
171
|
+
input: Float32Array,
|
|
172
|
+
config: AttentionConfig
|
|
173
|
+
): Float32Array {
|
|
174
|
+
return this.flashAttention(input, input, input, config);
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Create a new attention bridge
|
|
182
|
+
*/
|
|
183
|
+
export function createAttentionBridge(config?: Partial<AttentionConfig>): AttentionBridge {
|
|
184
|
+
return new AttentionBridge(config);
|
|
185
|
+
}
|