vestige/crates/vestige-mcp/Cargo.toml

99 lines
3.3 KiB
TOML
Raw Normal View History

[package]
name = "vestige-mcp"
version = "2.0.7"
edition = "2024"
description = "Cognitive memory MCP server for Claude - FSRS-6, spreading activation, synaptic tagging, 3D dashboard, and 130 years of memory research"
authors = ["samvallad33"]
license = "AGPL-3.0-only"
keywords = ["mcp", "ai", "memory", "fsrs", "neuroscience", "cognitive-science", "spaced-repetition"]
categories = ["command-line-utilities", "database"]
repository = "https://github.com/samvallad33/vestige"
[features]
fix: restore Intel Mac build via ort-dynamic + system libonnxruntime Microsoft is discontinuing x86_64 macOS ONNX Runtime prebuilts after v1.23.0, so ort-sys 2.0.0-rc.11 can't ship an Intel Mac binary and never will. Previous Intel Mac attempts kept dying in the ort-sys build script with "does not provide prebuilt binaries for the target x86_64-apple-darwin with feature set (no features)." Issue #41 was the latest casualty. Fix: route Intel Mac through the ort-dynamic feature path (runtime dlopen against a system libonnxruntime installed via Homebrew). This sidesteps ort-sys prebuilts entirely and works today. Changes: - crates/vestige-core/Cargo.toml: split `embeddings` into code-only vs backend-choice. The embeddings feature now just pulls fastembed + hf-hub + image-models and activates the 27 #[cfg(feature = "embeddings")] gates throughout the crate. New `ort-download` feature carries the download-binaries-native-tls backend (the historical default). Existing `ort-dynamic` feature now transitively enables `embeddings`, so the cfg gates stay active when users swap backends. Default feature set expands `["embeddings", ...]` -> `["embeddings", "ort-download", ...]` so existing consumers see identical behavior. - crates/vestige-mcp/Cargo.toml: mirrors the split. Adds `ort-download` feature that chains to vestige-core/ort-download, keeps `ort-dynamic` that chains to vestige-core/ort-dynamic. Both transitively pull `embeddings`. Default adds `ort-download` so `cargo install vestige-mcp` still picks the prebuilt-ort backend like before. - .github/workflows/ci.yml: re-adds x86_64-apple-darwin to the release-build matrix with `--no-default-features --features ort-dynamic,vector-search`. Adds a `brew install onnxruntime` step that sets ORT_DYLIB_PATH from `brew --prefix onnxruntime`. - .github/workflows/release.yml: re-adds x86_64-apple-darwin to the release matrix with the same flags + brew install step. The Intel Mac tarball now also bundles docs/INSTALL-INTEL-MAC.md so binary consumers get the `brew install onnxruntime` + ORT_DYLIB_PATH prereq out of the box. - docs/INSTALL-INTEL-MAC.md: new install guide covering the Homebrew prereq, binary install, source build, troubleshooting, and the v2.1 ort-candle migration plan. - README.md: replaces the "Intel Mac and Windows build from source only" paragraph with the prebuilt Intel Mac install (brew + curl + env var) and a link to the full guide. Platform table updated: Intel Mac back on the "prebuilt" list. Verified locally on aarch64-apple-darwin: - `cargo check --release -p vestige-mcp` -> clean (default features) - `cargo check --release -p vestige-mcp --no-default-features --features ort-dynamic,vector-search` -> clean Runtime path on Intel Mac (verified on CI): brew install onnxruntime export ORT_DYLIB_PATH=$(brew --prefix onnxruntime)/lib/libonnxruntime.dylib vestige-mcp --version Fixes #41. Long-term plan (v2.1): migrate to ort-candle pure-Rust backend so no system ONNX Runtime dep is needed on any platform. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 23:02:40 -05:00
default = ["embeddings", "ort-download", "vector-search"]
embeddings = ["vestige-core/embeddings"]
vector-search = ["vestige-core/vector-search"]
fix: restore Intel Mac build via ort-dynamic + system libonnxruntime Microsoft is discontinuing x86_64 macOS ONNX Runtime prebuilts after v1.23.0, so ort-sys 2.0.0-rc.11 can't ship an Intel Mac binary and never will. Previous Intel Mac attempts kept dying in the ort-sys build script with "does not provide prebuilt binaries for the target x86_64-apple-darwin with feature set (no features)." Issue #41 was the latest casualty. Fix: route Intel Mac through the ort-dynamic feature path (runtime dlopen against a system libonnxruntime installed via Homebrew). This sidesteps ort-sys prebuilts entirely and works today. Changes: - crates/vestige-core/Cargo.toml: split `embeddings` into code-only vs backend-choice. The embeddings feature now just pulls fastembed + hf-hub + image-models and activates the 27 #[cfg(feature = "embeddings")] gates throughout the crate. New `ort-download` feature carries the download-binaries-native-tls backend (the historical default). Existing `ort-dynamic` feature now transitively enables `embeddings`, so the cfg gates stay active when users swap backends. Default feature set expands `["embeddings", ...]` -> `["embeddings", "ort-download", ...]` so existing consumers see identical behavior. - crates/vestige-mcp/Cargo.toml: mirrors the split. Adds `ort-download` feature that chains to vestige-core/ort-download, keeps `ort-dynamic` that chains to vestige-core/ort-dynamic. Both transitively pull `embeddings`. Default adds `ort-download` so `cargo install vestige-mcp` still picks the prebuilt-ort backend like before. - .github/workflows/ci.yml: re-adds x86_64-apple-darwin to the release-build matrix with `--no-default-features --features ort-dynamic,vector-search`. Adds a `brew install onnxruntime` step that sets ORT_DYLIB_PATH from `brew --prefix onnxruntime`. - .github/workflows/release.yml: re-adds x86_64-apple-darwin to the release matrix with the same flags + brew install step. The Intel Mac tarball now also bundles docs/INSTALL-INTEL-MAC.md so binary consumers get the `brew install onnxruntime` + ORT_DYLIB_PATH prereq out of the box. - docs/INSTALL-INTEL-MAC.md: new install guide covering the Homebrew prereq, binary install, source build, troubleshooting, and the v2.1 ort-candle migration plan. - README.md: replaces the "Intel Mac and Windows build from source only" paragraph with the prebuilt Intel Mac install (brew + curl + env var) and a link to the full guide. Platform table updated: Intel Mac back on the "prebuilt" list. Verified locally on aarch64-apple-darwin: - `cargo check --release -p vestige-mcp` -> clean (default features) - `cargo check --release -p vestige-mcp --no-default-features --features ort-dynamic,vector-search` -> clean Runtime path on Intel Mac (verified on CI): brew install onnxruntime export ORT_DYLIB_PATH=$(brew --prefix onnxruntime)/lib/libonnxruntime.dylib vestige-mcp --version Fixes #41. Long-term plan (v2.1): migrate to ort-candle pure-Rust backend so no system ONNX Runtime dep is needed on any platform. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 23:02:40 -05:00
# Default ort backend: downloads prebuilt ONNX Runtime at build time.
# Fails on targets without prebuilts (notably x86_64-apple-darwin).
ort-download = ["embeddings", "vestige-core/ort-download"]
# Alternative ort backend: runtime-linked system libonnxruntime via dlopen.
# Required on Intel Mac and on systems with glibc < 2.38.
# Usage: cargo build --no-default-features --features ort-dynamic,vector-search
# Runtime: export ORT_DYLIB_PATH=$(brew --prefix onnxruntime)/lib/libonnxruntime.dylib
ort-dynamic = ["embeddings", "vestige-core/ort-dynamic"]
[[bin]]
name = "vestige-mcp"
path = "src/main.rs"
[[bin]]
name = "vestige-restore"
path = "src/bin/restore.rs"
[[bin]]
name = "vestige"
path = "src/bin/cli.rs"
[dependencies]
# ============================================================================
# VESTIGE CORE - The cognitive science engine
# ============================================================================
# Includes: FSRS-6, spreading activation, synaptic tagging, hippocampal indexing,
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
# memory states, context memory, importance signals, dreams, and more.
#
# Only `bundled-sqlite` is always on. `embeddings` and `vector-search` are
# toggled via vestige-mcp's own feature flags below so `--no-default-features`
# actually works (previously hardcoded here, which silently defeated the flag).
vestige-core = { version = "2.0.5", path = "../vestige-core", default-features = false, features = ["bundled-sqlite"] }
# ============================================================================
# MCP Server Dependencies
# ============================================================================
# Async runtime
tokio = { version = "1", features = ["full", "io-std"] }
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# Date/Time
chrono = { version = "0.4", features = ["serde"] }
# UUID
uuid = { version = "1", features = ["v4", "serde"] }
# Constant-time comparison for auth tokens (prevents timing side-channels)
subtle = "2"
# Error handling
thiserror = "2"
anyhow = "1"
# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
# Platform directories
directories = "6"
# CLI
clap = { version = "4", features = ["derive"] }
colored = "3"
# SQLite (for backup WAL checkpoint)
rusqlite = { version = "0.38", features = ["bundled"] }
# Dashboard (v2.0) - HTTP server + WebSocket + embedded SvelteKit
axum = { version = "0.8", default-features = false, features = ["json", "query", "tokio", "http1", "ws"] }
tower = { version = "0.5", features = ["limit"] }
tower-http = { version = "0.6", features = ["cors", "set-header"] }
futures-util = "0.3"
open = "5"
# Embedded SvelteKit dashboard (v2.0)
include_dir = "0.7"
mime_guess = "2"
[dev-dependencies]
tempfile = "3"