mirror of
https://github.com/ruvnet/RuVector.git
synced 2026-05-28 01:44:41 +00:00
* feat(ospipe): implement OSpipe screenpipe integration with WASM + TypeScript SDK Adds the OSpipe crate providing a quantum-enhanced screenpipe integration layer: - Rust core library (7 modules): capture, storage, search, pipeline, safety, config, wasm - WASM bindings via wasm-bindgen for browser deployment - TypeScript SDK (@ruvector/ospipe) with SSE streaming and hybrid search - Frame deduplication, PII safety gate, query routing, cosine similarity search - 56 tests passing (24 unit + 32 integration), builds for native + wasm32 - Comprehensive ADR with Windows/macOS/Linux/WASM integration plans - CI stub for cross-platform matrix builds (Linux, Windows, macOS, WASM) Co-Authored-By: claude-flow <ruv@ruv.net> * chore(ospipe): add README, fix clippy warnings, optimize dedup and pipeline - Add comprehensive README.md with features, comparison tables, quick start guides, collapsed configuration reference, and API docs - Fix all default clippy warnings (auto-fix + manual) - Replace Vec with VecDeque in FrameDeduplicator for O(1) eviction - Remove redundant frame.clone() in ingestion pipeline (move instead) - Add is_empty() to WASM OsPipeWasm type - Fix broken intra-doc link for cfg-gated bindings module - Remove unused imports in integration tests (FrameContent, SearchConfig) Co-Authored-By: claude-flow <ruv@ruv.net> * feat(ospipe): integrate graph, attention, GNN, and quantum crates (Phase 2-4) Add four new OSpipe modules integrating RuVector crates: - graph: KnowledgeGraph wrapping ruvector-graph with heuristic entity extraction (URLs, emails, @mentions, capitalized phrases), entity/ relationship CRUD, and frame entity ingestion - search/reranker: AttentionReranker using ruvector-attention scaled dot-product attention for result re-ranking (0.6*attention + 0.4*cosine) - learning: SearchLearner with EWC (ruvector-gnn) for continual learning without catastrophic forgetting, ReplayBuffer for feedback, and EmbeddingQuantizer for age-based vector compression - quantum: QuantumSearch using ruqu-algorithms QAOA for diversity selection, Grover-inspired amplitude boosting, and optimal iteration estimation All modules use cfg-gated dual implementations (native + WASM stub). 60 tests passing (59 integration + 1 doc-test), native + WASM builds clean. Co-Authored-By: claude-flow <ruv@ruv.net> * feat(ospipe): complete all 15 gap items — HNSW, persistence, REST API, MMR, safety fixes Implements all remaining OSpipe features from the gap analysis: High — Core functionality: - HNSW indexing via ruvector-core with O(log n) ANN search (HnswVectorStore) - EmbeddingModel trait + RuvectorEmbeddingModel for pluggable embedding backends - JSON-file persistence layer (PersistenceLayer) for frames and config - Axum REST API server matching TypeScript SDK endpoints (/search, /graph, /health, /stats, /route) - Enhanced search pipeline wired into ingestion (router -> rerank -> quantum diversity) Medium — Correctness: - WASM/native routing consistency (aligned keyword sets and priority order) - WASM/native safety consistency (email detection, deny keywords, CC/SSN patterns) - MMR (Maximal Marginal Relevance) reranker for diversity vs relevance tradeoff - Delete and update_metadata APIs on VectorStore and HnswVectorStore - Email redaction preserves surrounding whitespace (tabs, newlines, multi-space) Lower — Polish: - TypeScript SDK: fetchWithRetry with exponential backoff, timeout, AbortSignal - console_error_panic_hook init in WASM module - WASM test scaffold (tests/wasm.rs) - Quantization tiers in config (None -> Scalar -> Product -> Binary by age) - All clippy warnings resolved (0 warnings) 82 tests passing, 1 doc-test passing, 0 clippy warnings. Co-Authored-By: claude-flow <ruv@ruv.net> * chore: update Cargo.lock after OSpipe dependency changes Co-Authored-By: claude-flow <ruv@ruv.net> * feat(ospipe): add server binary, WASM build, version-pin deps for publishing - Add ospipe-server binary with CLI args (--port, --data-dir, --help, --version) - Add tracing-subscriber for structured logging - Version-pin all 9 path dependencies for crates.io readiness - Fix ref -> ref mut for KnowledgeGraph mutable borrow in pipeline - Fix redundant rustdoc link in embedding.rs - Update ospipe-wasm package.json to match wasm-pack output filenames - WASM build produces 145KB binary with full browser API Build artifacts (not committed, in dist/): - ospipe-server-linux-x86_64 (1.8MB) - ospipe-server-linux-arm64 (1.6MB) - ospipe-server-windows-x86_64.exe (3.9MB) - ospipe_bg.wasm (145KB) - @ruvector/ospipe npm tarball (13.9KB) Co-Authored-By: claude-flow <ruv@ruv.net> * docs: add OSpipe to root README, publish ospipe + deps to crates.io Add OSpipe personal AI memory section to root README with features, comparison table, install commands, and Rust quickstart. Published to registries: - ospipe v0.1.0 (crates.io) - ruvector-delta-core v0.1.0 (crates.io) - ruvector-cluster v2.0.2 (crates.io) - ruvector-router-core v2.0.2 (crates.io) - @ruvector/ospipe v0.1.0 (npm) - @ruvector/ospipe-wasm v0.1.0 (npm) Co-Authored-By: claude-flow <ruv@ruv.net> * fix: add uuid dev-dep for tests, bump rvlite to 0.2.1 - Add uuid to OSpipe dev-dependencies to fix version mismatch in integration tests - Bump rvlite npm package to 0.2.1 (0.2.0 blocked by npm) Co-Authored-By: claude-flow <ruv@ruv.net>
73 lines
2.7 KiB
TOML
73 lines
2.7 KiB
TOML
[package]
|
|
name = "ospipe"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
rust-version = "1.77"
|
|
license = "MIT"
|
|
description = "OSpipe: RuVector-enhanced personal AI memory system integrating with Screenpipe"
|
|
authors = ["Ruvector Team"]
|
|
repository = "https://github.com/ruvnet/ruvector"
|
|
|
|
[dependencies]
|
|
# Serialization (cross-platform)
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
|
|
# Error handling and utilities (cross-platform)
|
|
thiserror = { workspace = true }
|
|
tracing = { workspace = true }
|
|
|
|
# Time and UUID (cross-platform)
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
uuid = { version = "1.11", features = ["v4", "serde", "js"] }
|
|
|
|
# Math (cross-platform)
|
|
rand = { workspace = true }
|
|
|
|
# Native-only: RuVector ecosystem (path dependencies)
|
|
# These crates pull in platform-specific code (mmap, tokio, ring, etc.) that
|
|
# does not compile for wasm32-unknown-unknown.
|
|
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
|
ruvector-core = { version = "2.0", path = "../../crates/ruvector-core" }
|
|
ruvector-filter = { version = "2.0", path = "../../crates/ruvector-filter" }
|
|
ruvector-cluster = { version = "2.0", path = "../../crates/ruvector-cluster" }
|
|
ruvector-delta-core = { version = "0.1", path = "../../crates/ruvector-delta-core", features = ["serde"] }
|
|
ruvector-router-core = { version = "2.0", path = "../../crates/ruvector-router-core" }
|
|
ruvector-graph = { version = "2.0", path = "../../crates/ruvector-graph", default-features = false }
|
|
ruvector-gnn = { version = "2.0", path = "../../crates/ruvector-gnn", default-features = false }
|
|
cognitum-gate-kernel = { version = "0.1", path = "../../crates/cognitum-gate-kernel", default-features = true }
|
|
ruqu-algorithms = { version = "2.0.5", path = "../../crates/ruqu-algorithms", default-features = false }
|
|
ruvector-attention = { version = "0.1", path = "../../crates/ruvector-attention", default-features = false }
|
|
|
|
# HTTP server dependencies (native only)
|
|
axum = { version = "0.7", features = ["json"] }
|
|
tower-http = { version = "0.6", features = ["cors"] }
|
|
tower = { version = "0.5" }
|
|
tokio = { workspace = true }
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
# WASM-only dependencies
|
|
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
|
wasm-bindgen = { workspace = true }
|
|
js-sys = { workspace = true }
|
|
serde-wasm-bindgen = "0.6"
|
|
getrandom = { version = "0.2", features = ["js"] }
|
|
console_error_panic_hook = { version = "0.1", optional = true }
|
|
|
|
[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
|
|
wasm-bindgen-test = "0.3"
|
|
|
|
[dev-dependencies]
|
|
tokio = { workspace = true }
|
|
uuid = { version = "1.11", features = ["v4"] }
|
|
|
|
[features]
|
|
default = ["console_error_panic_hook"]
|
|
|
|
[lib]
|
|
crate-type = ["cdylib", "rlib"]
|
|
|
|
[[bin]]
|
|
name = "ospipe-server"
|
|
path = "src/bin/ospipe-server.rs"
|
|
required-features = []
|