vestige/crates/vestige-core/Cargo.toml

120 lines
4.4 KiB
TOML
Raw Normal View History

[package]
name = "vestige-core"
version = "2.0.6"
edition = "2024"
rust-version = "1.91"
authors = ["Vestige Team"]
description = "Cognitive memory engine - FSRS-6 spaced repetition, semantic embeddings, and temporal memory"
license = "AGPL-3.0-only"
repository = "https://github.com/samvallad33/vestige"
keywords = ["memory", "spaced-repetition", "fsrs", "embeddings", "knowledge-graph"]
categories = ["science", "database"]
[features]
default = ["embeddings", "vector-search", "bundled-sqlite"]
# SQLite backend (default, unencrypted)
bundled-sqlite = ["rusqlite/bundled"]
# Encrypted SQLite via SQLCipher (mutually exclusive with bundled-sqlite)
# Use: --no-default-features --features encryption,embeddings,vector-search
# Set VESTIGE_ENCRYPTION_KEY env var to enable encryption
encryption = ["rusqlite/bundled-sqlcipher"]
# Core embeddings with fastembed (ONNX-based, local inference)
# Downloads a pre-built ONNX Runtime binary at build time (requires glibc >= 2.38)
embeddings = ["dep:fastembed", "fastembed/ort-download-binaries-native-tls"]
# HNSW vector search with USearch (20x faster than FAISS)
vector-search = ["dep:usearch"]
# Use runtime-loaded ORT instead of the downloaded pre-built binary.
# Required on systems with glibc < 2.38 (Ubuntu 22.04, Debian 12, RHEL/Rocky 9).
# Mutually exclusive with the default `embeddings` feature's download strategy.
# Usage: --no-default-features --features ort-dynamic,vector-search,bundled-sqlite
# Runtime requirement: libonnxruntime.so must be on LD_LIBRARY_PATH or ORT_DYLIB_PATH set.
ort-dynamic = ["dep:fastembed", "fastembed/ort-load-dynamic", "fastembed/hf-hub-native-tls", "fastembed/image-models"]
# Nomic Embed Text v2 MoE (475M params, 305M active, Candle backend)
# Requires: fastembed with nomic-v2-moe feature
nomic-v2 = ["embeddings", "fastembed/nomic-v2-moe"]
# Qwen3 Reranker (Candle backend, high-precision cross-encoder)
qwen3-reranker = ["embeddings", "fastembed/qwen3"]
# Metal GPU acceleration on Apple Silicon (significantly faster inference)
metal = ["fastembed/metal"]
[dependencies]
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# Date/Time with full timezone support
chrono = { version = "0.4", features = ["serde"] }
# UUID v4 generation
uuid = { version = "1", features = ["v4", "serde"] }
# Error handling
thiserror = "2"
# Database - SQLite with FTS5 full-text search and JSON
# Note: "bundled" or "bundled-sqlcipher" added via feature flags above
rusqlite = { version = "0.38", features = ["chrono", "serde_json"] }
# Platform-specific directories
directories = "6"
# Async runtime (required for codebase module)
tokio = { version = "1", features = ["sync", "rt-multi-thread", "macros"] }
# Tracing for structured logging
tracing = "0.1"
# Git integration for codebase memory
# vendored-openssl: Compile OpenSSL from source for cross-compilation support
git2 = { version = "0.20", features = ["vendored-openssl"] }
# File watching for codebase memory
notify = "8"
# ============================================================================
# OPTIONAL: Embeddings (fastembed v5 - local ONNX inference, 2026 bleeding edge)
# ============================================================================
# nomic-embed-text-v1.5: 768 dimensions, 8192 token context, Matryoshka support
# v5.11: Adds Nomic v2 MoE (nomic-v2-moe feature) + Qwen3 reranker (qwen3 feature)
fastembed = { version = "5.11", default-features = false, features = ["hf-hub-native-tls", "image-models"], optional = true }
# ============================================================================
# OPTIONAL: Vector Search (USearch - HNSW, 20x faster than FAISS)
# ============================================================================
fix(ci): unblock Intel Mac + Windows MSVC builds in v2.0.5 release workflow Two unrelated upstream issues were stopping two of our four release targets. Root-caused and fixed both so v2.0.5 ships on 100% of supported platforms. Windows MSVC (new regression in v2.0.5): `usearch 2.24.0` introduced a `memory_mapping_allocator_gt` template that references the POSIX `MAP_FAILED` macro from <sys/mman.h>, which doesn't exist on MSVC. Confirmed upstream as unum-cloud/usearch#746 (open). The bump from 2.23.0 happened during the v2.0.5 Cargo.lock refresh. Pinned `usearch = "=2.23.0"` in crates/vestige-core/Cargo.toml with a comment linking the upstream issue. Unpin when the fix lands. Intel Mac (latent bug exposed by the ci workaround): Root cause was feature-propagation, not the release workflow. crates/vestige-mcp/Cargo.toml hardcoded `features = ["bundled-sqlite", "embeddings", "vector-search"]` on its vestige-core dep, which forcibly enabled vestige-core's embeddings feature regardless of whether vestige-mcp's own `embeddings` feature flag was set. With `--no-default-features` at the top level (the old Intel Mac ci workaround), vestige-mcp's feature flags turned off but vestige-core's embeddings stayed on through the hardcoded list. That pulled in fastembed -> ort-sys, but without any of the flags that select ort-sys' backend binaries, so the ort-sys build script failed with "does not provide prebuilt binaries for the target x86_64-apple-darwin with feature set (no features)". Fix: - Drop `embeddings` and `vector-search` from the hardcoded features list in crates/vestige-mcp/Cargo.toml. Leave only `bundled-sqlite` as an always-on base feature. The existing `embeddings = ["vestige-core/embeddings"]` / `vector-search = ["vestige-core/vector-search"]` flag declarations now actually gate those features as intended. - Bump the vestige-core dep version ref 2.0.4 -> 2.0.5 (was stale). - Drop `cargo_flags: "--no-default-features"` from the Intel Mac target in .github/workflows/release.yml. The original reason for that workaround was sidestepping the same ort-sys issue, but with the feature-propagation bug fixed, Intel Mac now builds with full default features the same way aarch64-darwin does on the same macos-14 runner. Verification: - `cargo tree -p vestige-mcp --no-default-features -i fastembed` -> "did not match any packages" (fastembed truly absent now) - `cargo tree -p vestige-mcp --no-default-features -i ort-sys` -> same - `cargo build --release -p vestige-mcp` -> clean, 1m 21s, usearch 2.23.0 Same v2.0.5 tag. Rust source code identical to 8178beb. Re-triggering the release workflow via workflow_dispatch will rebuild all four platforms and upload to the existing v2.0.5 release page.
2026-04-14 18:03:56 -05:00
# Pinned to 2.23.0 — 2.24.0 introduced a Windows MSVC compile break because
# its memory_mapping_allocator_gt template references the POSIX MAP_FAILED
# macro from <sys/mman.h>, which doesn't exist on MSVC. Tracked upstream in
# unum-cloud/usearch#746. Unpin when the upstream fix lands.
usearch = { version = "=2.23.0", optional = true }
# LRU cache for query embeddings
lru = "0.16"
[dev-dependencies]
tempfile = "3"
criterion = { version = "0.5", features = ["html_reports"] }
[[bench]]
name = "search_bench"
harness = false
[lib]
name = "vestige_core"
path = "src/lib.rs"
# Enable doctests
doctest = true
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]