Commit graph

23 commits

Author SHA1 Message Date
Sam Valladares
4e6247834e chore(ci): drop unused brew install + ORT_DYLIB_PATH from CI steps
Build is a cross-compile (macos-latest runner is Apple Silicon targeting
x86_64-apple-darwin) and ort-load-dynamic doesn't link libonnxruntime at
build time — only at runtime via dlopen. So the brew install step and
ORT_DYLIB_PATH export were ceremony without payload. Removed to cut CI
time. Runtime setup remains documented in docs/INSTALL-INTEL-MAC.md for
end users installing the tarball on their own Intel Mac.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 23:03:52 -05:00
Sam Valladares
52f1e97e14 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
Sam Valladares
60a60cf5df ci: drop x86_64-apple-darwin from release workflow
The Intel Mac job failed the v2.0.5 AND v2.0.6 release workflows because
ort-sys 2.0.0-rc.11 (pinned by fastembed 5.13.2) does not ship Intel Mac
prebuilts. ci.yml already dropped the target weeks ago; release.yml is
now in sync.

README documents the build-from-source path for Intel Mac users and
v2.0.6 also removed the Intel Mac download link from the install block,
so no user-facing promise regresses. When ort-sys ships Intel Mac
prebuilts again, restore the matrix entry.
2026-04-19 20:24:22 -05:00
Sam Valladares
b4511a7111 fix(ci): unblock Intel Mac + Windows MSVC builds in v2.0.5 release workflow
Some checks failed
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (ubuntu-latest) (push) Has been cancelled
Test Suite / Unit Tests (push) Has been cancelled
Test Suite / MCP E2E Tests (push) Has been cancelled
Test Suite / Dashboard Build (push) Has been cancelled
Test Suite / Code Coverage (push) Has been cancelled
CI / Release Build (aarch64-apple-darwin) (push) Has been cancelled
CI / Release Build (x86_64-unknown-linux-gnu) (push) Has been cancelled
Test Suite / User Journey Tests (push) Has been cancelled
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
Sam Valladares
2c1f499a8b fix: build macOS Intel without embeddings (ort-sys has no x86_64-apple-darwin prebuilts)
The ort crate no longer ships prebuilt ONNX Runtime binaries for macOS Intel.
Build that target with --no-default-features so it uses keyword-only search
instead of failing the release pipeline.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 20:33:01 -06:00
Sam Valladares
9f856bb0c4 fix: CI release workflow — remove broken dashboard build, fix macos runner
- Remove pnpm dashboard build step from release.yml and ci.yml
  (dashboard build output is committed to git, embedded via include_dir!)
- Fix macos-13 → macos-14 (macos-13 runners deprecated)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 20:25:23 -06:00
Sam Valladares
c6090dc2ba fix: v2.0.1 release — fix broken installs, CI, security, and docs
Critical fixes:
- npm postinstall.js: BINARY_VERSION '1.1.3' → '2.0.1' (every install was 404ing)
- npm package name: corrected error messages to 'vestige-mcp-server'
- README: npm install command pointed to wrong package
- MSRV: bumped from 1.85 to 1.91 (uses floor_char_boundary from 1.91)
- CI: removed stale 'develop' branch from test.yml triggers

Security hardening:
- CSP: restricted connect-src from wildcard 'ws: wss:' to localhost-only
- Added X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy headers
- Added frame-ancestors 'none', base-uri 'self', form-action 'self' to CSP
- Capped retention_distribution endpoint from 10k to 1k nodes
- Added debug logging for WebSocket connections without Origin header

Maintenance:
- All clippy warnings fixed (58 total: redundant closures, collapsible ifs, no-op casts)
- All versions harmonized to 2.0.1 across Cargo.toml and package.json
- CLAUDE.md updated to match v2.0.1 (21 tools, 29 modules, 1238 tests)
- docs/CLAUDE-SETUP.md updated deprecated function names
- License corrected to AGPL-3.0-only in root package.json

1,238 tests passing, 0 clippy warnings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 20:20:14 -06:00
Sam Valladares
9b1aa9cdeb chore: CI workflows, gitignore, release pipeline for v2.0
- Add ci.yml: cargo check + clippy + test on macOS/Linux, dashboard build
- Update release.yml: build dashboard before cargo build, fix x86_64-apple-darwin runner (macos-13)
- Update test.yml: add dashboard build job, update checkout action to v4
- Add .svelte-kit/ and apps/dashboard/node_modules/ to gitignore
- Remove .svelte-kit/ from git tracking (intermediate build artifacts)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 03:09:39 -06:00
Sam Valladares
1bc4a762dc fix(ci): use macos-latest for Intel Mac cross-compilation
macos-13 runners are deprecated. Cross-compile x86_64-apple-darwin
from ARM macOS runner instead.
2026-02-19 03:05:33 -06:00
Sam Valladares
a92fb2b6ed release: v1.1.3 — security hardening, edition 2024, dependency updates
Security:
- Fix RUSTSEC-2026-0007 (bytes integer overflow)
- Restrict SQLite database file permissions to 0600 on Unix
- Add 100KB size limit to intention descriptions (DoS prevention)
- Redact JSON-RPC payloads from debug logs (data leakage prevention)
- Update SECURITY.md with encryption docs and supported versions

Modernization:
- Upgrade Rust edition 2021 → 2024, MSRV 1.75 → 1.85
- Upgrade actions/checkout@v4 → v5, codecov/codecov-action@v3 → v5
- Update all dependencies to latest compatible versions
- Fix edition 2024 match ergonomics in compression.rs

Clippy fixes:
- Rename from_str → parse_name to avoid shadowing FromStr trait
- Replace .max().min() with .clamp()
- Replace sort_by with sort_by_key

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 03:19:07 -06:00
Sam Valladares
a680fa7d2f fix: dedup on ingest, Intel Mac CI, npm versions, remove dead TS package
- Route ingest tool through smart_ingest (Prediction Error Gating) to
  prevent duplicate memories when content is similar to existing entries
- Fix Intel Mac release build: use macos-13 runner for x86_64-apple-darwin
  (macos-latest is now ARM64, causing silent cross-compile failures)
- Sync npm package version to 1.1.2 (was 1.0.0 in package.json, 1.1.0
  in postinstall.js BINARY_VERSION)
- Add vestige-restore to npm makeExecutable list
- Remove abandoned packages/core/ TypeScript package (pre-Rust implementation
  referencing FSRS-5, chromadb, ollama — 32K lines of dead code)
- Sync workspace Cargo.toml version to 1.1.2

Closes #5

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 02:57:03 -06:00
Sam Valladares
9a56a8ce40 fix(ci): correct rust-toolchain action name and add write permissions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 01:32:47 -06:00
Sam Valladares
c005a46c82 ci: add GitHub Actions workflow for multi-platform releases
Automatically builds binaries for:
- Linux x86_64 (ubuntu-latest)
- Windows x86_64 (windows-latest)
- macOS x86_64 Intel (macos-latest)
- macOS ARM64 Apple Silicon (macos-latest)

Triggers on release creation or manual workflow dispatch.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 01:32:01 -06:00
Sam Valladares
9d702b6f57 fix(ci): add contents:write permission for release creation
GitHub Actions needs explicit permission to create releases.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 02:38:54 -06:00
Sam Valladares
524c39a87d feat(ci): add Windows x86_64 to release builds
Now shipping 3 platforms:
- aarch64-apple-darwin (macOS Apple Silicon) - .tar.gz
- x86_64-unknown-linux-gnu (Linux x86_64) - .tar.gz
- x86_64-pc-windows-msvc (Windows x86_64) - .zip

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 02:29:30 -06:00
Sam Valladares
46a635f1e1 fix(ci): simplify release to 2 platforms
Drop problematic targets:
- x86_64-apple-darwin: No free Intel macOS runners after macos-13 retirement
- aarch64-unknown-linux-gnu: Cross-compile OpenSSL issues with vendored feature

Ship with 2 platforms that work reliably:
- aarch64-apple-darwin (macOS Apple Silicon)
- x86_64-unknown-linux-gnu (Linux x86_64)

Users on Intel Mac or ARM64 Linux can build from source with cargo.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 02:25:06 -06:00
Sam Valladares
3b5ab01966 fix(ci): use macos-15-large for Intel builds
macos-13 was retired in December 2025. Use macos-15-large for x86_64
macOS builds as recommended by GitHub.

See: https://github.blog/changelog/2025-09-19-github-actions-macos-13-runner-image-is-closing-down/

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 02:22:32 -06:00
Sam Valladares
0bcceab717 fix(ci): use vendored-openssl and actions-rust-cross
Two-pronged fix for cross-compilation:

1. git2 with vendored-openssl feature - compiles OpenSSL from source,
   eliminating system dependency issues across all platforms

2. houseabsolute/actions-rust-cross@v1 - dedicated GitHub Action that
   properly handles cross-compilation with Docker containers

Sources:
- https://github.com/rust-lang/git2-rs
- https://github.com/houseabsolute/actions-rust-cross

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 02:18:18 -06:00
Sam Valladares
ed2fbe60ee fix(ci): use native runners for each platform
- macOS ARM64: macos-latest (Apple Silicon)
- macOS x86_64: macos-13 (Intel) - no cross-compilation
- Linux x86_64: ubuntu-latest with OpenSSL
- Linux ARM64: cross tool for proper Docker-based cross-compilation

Install OpenSSL via homebrew on macOS and set OPENSSL_DIR.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 02:12:28 -06:00
Sam Valladares
564fb72f39 fix(ci): remove hardcoded CARGO_HOME path
CARGO_HOME path differs between Linux and macOS runners.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 02:09:51 -06:00
Sam Valladares
9af06f0e67 fix(ci): use cross for ARM64 Linux builds
Cross-compilation for aarch64-unknown-linux-gnu requires OpenSSL
dev libraries for the target platform. Using `cross` handles this
automatically via Docker containers with pre-installed dependencies.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 02:08:51 -06:00
Sam Valladares
042ec15467 Fix CI: Update package names from engram to vestige
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 01:39:30 -06:00
Sam Valladares
f9c60eb5a7 Initial commit: Vestige v1.0.0 - Cognitive memory MCP server
FSRS-6 spaced repetition, spreading activation, synaptic tagging,
hippocampal indexing, and 130 years of memory research.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 01:31:03 -06:00