Skip to main content

ruvector_attention_node/
lib.rs

1//! ruvector-attention-node
2//!
3//! Node.js bindings for ruvector-attention via NAPI-RS
4//!
5//! This crate provides comprehensive Node.js bindings for:
6//! - Attention mechanisms (dot-product, multi-head, hyperbolic, flash, linear, local-global, MoE)
7//! - Training utilities (loss functions, optimizers, schedulers)
8//! - Async/batch processing
9//! - Graph attention mechanisms
10//! - Benchmarking utilities
11
12#![deny(clippy::all)]
13
14use napi_derive::napi;
15
16pub mod async_ops;
17pub mod attention;
18pub mod graph;
19pub mod training;
20
21// Re-export main attention types
22pub use attention::{
23    AttentionConfig, DotProductAttention, FlashAttention, HyperbolicAttention, LinearAttention,
24    LocalGlobalAttention, MoEAttention, MoEConfig, MultiHeadAttention,
25};
26
27// Re-export training types
28pub use training::{
29    AdamOptimizer, AdamWOptimizer, CurriculumScheduler, CurriculumStageConfig, DecayType,
30    HardNegativeMiner, InBatchMiner, InfoNCELoss, LearningRateScheduler, LocalContrastiveLoss,
31    LossWithGradients, MiningStrategy, SGDOptimizer, SpectralRegularization, TemperatureAnnealing,
32};
33
34// Re-export async/batch types
35pub use async_ops::{
36    AttentionType, BatchConfig, BatchResult, BenchmarkResult, ParallelConfig, StreamProcessor,
37};
38
39// Re-export graph attention types
40pub use graph::{
41    DualSpaceAttention, DualSpaceConfig, EdgeFeaturedAttention, EdgeFeaturedConfig,
42    GraphRoPEAttention, RoPEConfig,
43};
44
45/// Get library version
46#[napi]
47pub fn version() -> String {
48    env!("CARGO_PKG_VERSION").to_string()
49}
50
51/// Get library info
52#[napi]
53pub fn info() -> LibraryInfo {
54    LibraryInfo {
55        name: "ruvector-attention-node".to_string(),
56        version: env!("CARGO_PKG_VERSION").to_string(),
57        description: "Node.js bindings for ruvector-attention".to_string(),
58        features: vec![
59            "scaled-dot-product".to_string(),
60            "multi-head".to_string(),
61            "hyperbolic".to_string(),
62            "flash".to_string(),
63            "linear".to_string(),
64            "local-global".to_string(),
65            "moe".to_string(),
66            "edge-featured".to_string(),
67            "graph-rope".to_string(),
68            "dual-space".to_string(),
69            "training".to_string(),
70            "async".to_string(),
71            "batch".to_string(),
72            "benchmark".to_string(),
73        ],
74    }
75}
76
77/// Library information
78#[napi(object)]
79pub struct LibraryInfo {
80    pub name: String,
81    pub version: String,
82    pub description: String,
83    pub features: Vec<String>,
84}