ruvector/crates/ruvector-cli/Cargo.toml
rUv a1167f0be8 fix: HNSW index bugs, agent/SPARQL crashes, lru security (#152, #164, #167, #171, #148)
HNSW fixes:
- Extract vector dimensions from column atttypmod instead of hardcoding 128,
  which caused corrupted indexes for non-128-dim embeddings (#171, #164)
- Add page boundary checks in read_vector/read_neighbors to prevent
  segfaults on large tables with >100K rows (#164)
- Use BinaryHeap::into_sorted_vec() for deterministic result ordering
  instead of into_iter() which yields arbitrary order (#171)
- Handle non-kNN scans (COUNT, WHERE IS NOT NULL) gracefully by returning
  false from hnsw_gettuple when no ORDER BY operator is present (#152)

Agent/SPARQL fixes:
- Fix SQL type mismatch: ruvector_list_agents() and
  ruvector_find_agents_by_capability() now use RETURNS TABLE(...)
  matching the Rust TableIterator signatures instead of RETURNS SETOF jsonb (#167)
- Add empty query validation to ruvector_sparql() and
  ruvector_sparql_json() to prevent panics on invalid input (#167)
- Change workspace panic profile from "abort" to "unwind" so pgrx can
  convert Rust panics to PostgreSQL errors instead of killing the backend (#167)

Security:
- Bump lru dependency from 0.12 to 0.16 in ruvector-graph, ruvector-cli,
  and ruvLLM to resolve GHSA-xpfx-fvgv-hgqp Stacked Borrows violation (#148)

Version bumps: workspace 2.0.3, ruvector-postgres 2.0.2

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-02-15 06:15:00 +00:00

91 lines
1.9 KiB
TOML

[package]
name = "ruvector-cli"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
readme = "README.md"
description = "CLI and MCP server for Ruvector"
[[bin]]
name = "ruvector"
path = "src/main.rs"
[[bin]]
name = "ruvector-mcp"
path = "src/mcp_server.rs"
[features]
default = []
postgres = ["tokio-postgres", "deadpool-postgres"]
[dependencies]
ruvector-core = { path = "../ruvector-core" }
ruvector-graph = { path = "../ruvector-graph", features = ["storage"] }
ruvector-gnn = { path = "../ruvector-gnn" }
# PostgreSQL support (optional)
tokio-postgres = { version = "0.7", optional = true }
deadpool-postgres = { version = "0.14", optional = true }
# LRU cache for performance optimization
lru = "0.16"
# Compression for storage
flate2 = "1.0"
# CLI
clap = { workspace = true }
indicatif = { workspace = true }
console = { workspace = true }
# Async
tokio = { workspace = true }
futures = { workspace = true }
# Error handling
thiserror = { workspace = true }
anyhow = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
# Serialization
serde = { workspace = true }
serde_json = { workspace = true }
# Configuration
toml = "0.8"
# Data formats
csv = "1.3"
ndarray-npy = "0.9"
ndarray = { workspace = true }
# Terminal colors
colored = "2.1"
prettytable-rs = "0.10"
# HTTP for MCP SSE transport
hyper = { version = "1.5", features = ["full"] }
hyper-util = { version = "0.1", features = ["full"] }
http-body-util = "0.1"
# MCP support
async-trait = "0.1"
tower = "0.5"
axum = { version = "0.7", features = ["ws"] }
tower-http = { version = "0.6", features = ["cors", "trace"] }
async-stream = "0.3"
# Additional utilities
uuid = { version = "1.11", features = ["v4"] }
chrono = "0.4"
shellexpand = "3.1"
rand = { workspace = true }
[dev-dependencies]
assert_cmd = "2.0"
predicates = "3.1"
tempfile = "3.13"