Merge commit 'd803bfe2b1fe7f5e219e50ac20d6801a0a58ac75' as 'vendor/ruvector'

This commit is contained in:
ruv
2026-02-28 14:39:40 -05:00
7854 changed files with 3522914 additions and 0 deletions

View File

@@ -0,0 +1,196 @@
#!/bin/bash
set -e
echo "🦀 Building RuVector Edge WASM package..."
# Change to edge directory
cd "$(dirname "$0")/.."
# Check if wasm-pack is installed
if ! command -v wasm-pack &> /dev/null; then
echo "📦 Installing wasm-pack..."
cargo install wasm-pack
fi
# Build for web (ES modules)
echo "📦 Building for web target..."
wasm-pack build --target web --out-dir pkg --features wasm --no-default-features
# Copy package.json template (wasm-pack generates one but we override)
echo "📝 Updating package.json..."
cat > pkg/package.json << 'EOF'
{
"name": "@ruvector/edge",
"version": "0.1.0",
"description": "WASM bindings for RuVector Edge - Distributed AI swarm communication with post-quantum crypto, HNSW indexing, and neural networks",
"main": "ruvector_edge.js",
"module": "ruvector_edge.js",
"types": "ruvector_edge.d.ts",
"sideEffects": [
"./snippets/*"
],
"keywords": [
"wasm",
"rust",
"ai",
"swarm",
"p2p",
"cryptography",
"post-quantum",
"hnsw",
"vector-search",
"neural-network",
"consensus",
"raft",
"ed25519",
"aes-gcm"
],
"author": "RuVector Team",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/ruvnet/ruvector"
},
"homepage": "https://github.com/ruvnet/ruvector/tree/main/examples/edge",
"files": [
"ruvector_edge_bg.wasm",
"ruvector_edge.js",
"ruvector_edge.d.ts",
"ruvector_edge_bg.wasm.d.ts"
],
"exports": {
".": {
"import": "./ruvector_edge.js",
"require": "./ruvector_edge.js",
"types": "./ruvector_edge.d.ts"
}
}
}
EOF
# Create README for npm
echo "📝 Creating npm README..."
cat > pkg/README.md << 'EOF'
# @ruvector/edge
WASM bindings for RuVector Edge - the most advanced distributed AI swarm communication framework.
## Features
- 🔐 **Ed25519/X25519 Cryptography** - Identity signing and key exchange
- 🔒 **AES-256-GCM Encryption** - Authenticated encryption for all messages
- 🛡️ **Post-Quantum Signatures** - Hybrid Ed25519 + Dilithium-style defense
- 🔍 **HNSW Vector Index** - O(log n) approximate nearest neighbor search
- 🎯 **Semantic Task Matching** - Intelligent agent routing with LSH
- 🗳️ **Raft Consensus** - Distributed coordination and leader election
- 🧠 **Spiking Neural Networks** - Temporal pattern recognition with STDP
- 📊 **Vector Quantization** - 4-32x compression for bandwidth optimization
## Installation
```bash
npm install @ruvector/edge
```
## Usage
```typescript
import init, {
WasmIdentity,
WasmCrypto,
WasmHnswIndex,
WasmSemanticMatcher,
WasmRaftNode,
WasmQuantizer
} from '@ruvector/edge';
// Initialize WASM
await init();
// Create identity for signing
const identity = new WasmIdentity();
console.log('Public key:', identity.publicKeyHex());
// Sign and verify messages
const signature = identity.sign('Hello, World!');
const valid = WasmIdentity.verify(
identity.publicKeyHex(),
'Hello, World!',
signature
);
console.log('Signature valid:', valid);
// HNSW vector search
const index = new WasmHnswIndex();
index.insert('agent-1', [0.9, 0.1, 0.0, 0.0]);
index.insert('agent-2', [0.1, 0.9, 0.0, 0.0]);
index.insert('agent-3', [0.0, 0.0, 0.9, 0.1]);
const results = index.search([0.8, 0.2, 0.0, 0.0], 2);
console.log('Nearest agents:', results);
// Semantic task matching
const matcher = new WasmSemanticMatcher();
matcher.registerAgent('rust-dev', 'rust cargo compile build test');
matcher.registerAgent('ml-eng', 'python pytorch tensorflow train model');
const match = matcher.matchAgent('build rust library with cargo');
console.log('Best match:', match);
// Quantization for compression
const vector = [0.1, 0.2, 0.3, 0.4, 0.5];
const quantized = WasmQuantizer.scalarQuantize(vector);
const reconstructed = WasmQuantizer.scalarDequantize(quantized);
console.log('Compression ratio: 4x');
```
## API Reference
### WasmIdentity
- `new()` - Create new identity with Ed25519/X25519 keys
- `publicKeyHex()` - Get Ed25519 public key as hex
- `x25519PublicKeyHex()` - Get X25519 public key as hex
- `sign(message)` - Sign message, returns signature hex
- `verify(pubkey, message, signature)` - Static verify method
- `generateNonce()` - Generate random nonce
### WasmCrypto
- `sha256(data)` - SHA-256 hash as hex
- `generateCid(data)` - Generate content ID
- `encrypt(data, keyHex)` - AES-256-GCM encrypt
- `decrypt(encrypted, keyHex)` - AES-256-GCM decrypt
### WasmHnswIndex
- `new()` / `withParams(m, ef)` - Create index
- `insert(id, vector)` - Add vector
- `search(query, k)` - Find k nearest neighbors
### WasmSemanticMatcher
- `registerAgent(id, capabilities)` - Register agent
- `matchAgent(task)` - Find best matching agent
- `matchTopK(task, k)` - Find top k matches
### WasmRaftNode
- `new(nodeId, members)` - Create Raft node
- `state()` / `term()` / `isLeader()` - Get state
- `startElection()` - Initiate leader election
- `appendEntry(data)` - Append to log (leader only)
### WasmQuantizer
- `binaryQuantize(vector)` - 32x compression
- `scalarQuantize(vector)` - 4x compression
- `scalarDequantize(quantized)` - Reconstruct vector
- `hammingDistance(a, b)` - Binary vector distance
## License
MIT License
EOF
echo "✅ Build complete! Package ready in ./pkg/"
echo ""
echo "To publish to npm:"
echo " cd pkg && npm publish --access public"
echo ""
echo "To use locally:"
echo " npm link ./pkg"