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 attention;
17pub mod training;
18pub mod async_ops;
19pub mod graph;
20
21// Re-export main attention types
22pub use attention::{
23    DotProductAttention,
24    MultiHeadAttention,
25    HyperbolicAttention,
26    FlashAttention,
27    LinearAttention,
28    LocalGlobalAttention,
29    MoEAttention,
30    MoEConfig,
31    AttentionConfig,
32};
33
34// Re-export training types
35pub use training::{
36    InfoNCELoss,
37    LocalContrastiveLoss,
38    SpectralRegularization,
39    LossWithGradients,
40    SGDOptimizer,
41    AdamOptimizer,
42    AdamWOptimizer,
43    LearningRateScheduler,
44    TemperatureAnnealing,
45    DecayType,
46    CurriculumScheduler,
47    CurriculumStageConfig,
48    MiningStrategy,
49    HardNegativeMiner,
50    InBatchMiner,
51};
52
53// Re-export async/batch types
54pub use async_ops::{
55    BatchConfig,
56    BatchResult,
57    ParallelConfig,
58    AttentionType,
59    StreamProcessor,
60    BenchmarkResult,
61};
62
63// Re-export graph attention types
64pub use graph::{
65    EdgeFeaturedAttention,
66    EdgeFeaturedConfig,
67    GraphRoPEAttention,
68    RoPEConfig,
69    DualSpaceAttention,
70    DualSpaceConfig,
71};
72
73/// Get library version
74#[napi]
75pub fn version() -> String {
76    env!("CARGO_PKG_VERSION").to_string()
77}
78
79/// Get library info
80#[napi]
81pub fn info() -> LibraryInfo {
82    LibraryInfo {
83        name: "ruvector-attention-node".to_string(),
84        version: env!("CARGO_PKG_VERSION").to_string(),
85        description: "Node.js bindings for ruvector-attention".to_string(),
86        features: vec![
87            "scaled-dot-product".to_string(),
88            "multi-head".to_string(),
89            "hyperbolic".to_string(),
90            "flash".to_string(),
91            "linear".to_string(),
92            "local-global".to_string(),
93            "moe".to_string(),
94            "edge-featured".to_string(),
95            "graph-rope".to_string(),
96            "dual-space".to_string(),
97            "training".to_string(),
98            "async".to_string(),
99            "batch".to_string(),
100            "benchmark".to_string(),
101        ],
102    }
103}
104
105/// Library information
106#[napi(object)]
107pub struct LibraryInfo {
108    pub name: String,
109    pub version: String,
110    pub description: String,
111    pub features: Vec<String>,
112}