Skip to content

fix: resolve MCP -32601 error with Continue extension & fix CLI compilation#217

Open
AmineC95 wants to merge 2122 commits intoruvnet:mainfrom
AmineC95:fix-continue-mcp-error
Open

fix: resolve MCP -32601 error with Continue extension & fix CLI compilation#217
AmineC95 wants to merge 2122 commits intoruvnet:mainfrom
AmineC95:fix-continue-mcp-error

Conversation

@AmineC95
Copy link
Copy Markdown

Description

This PR fixes an initialization error when using ruvector-mcp with the Continue VS Code extension, and resolves a missing feature compilation issue for the CLI.

Changes Made

  1. Added resources/templates/list handler: The Continue extension calls this MCP method on startup. Since it was missing, it threw a -32601 Method not found error in the editor. I added a handler in handlers.rs that returns an empty resourceTemplates array to satisfy the client and prevent the error popup.
  2. Fixed tokio dependency in CLI: Added the io-std feature to tokio in crates/ruvector-cli/Cargo.toml to resolve a cannot find function stdin in module tokio::io error when building the MCP server standalone.

Testing

  • Compiled successfully on Windows using cargo build --release -p ruvector-cli --bin ruvector-mcp.
  • Tested locally with the Continue VS Code extension: the MCP server now initializes cleanly without any error prompts and connects successfully.

claude and others added 30 commits February 22, 2026 15:04
Update all references from 17 SNPs to 20 SNPs reflecting the
addition of LPA rs10455872/rs3798220 and PCSK9 rs11591147.
Document new gene-biomarker correlations (LPA→Lp(a), PCSK9→LDL)
in synthetic population section. Update module table line counts.

https://claude.ai/code/session_014FpaYVohmyLH5dcBZTgmSY
…nd benchmarks

ADR-015: Pure-JS biomarker engine mirroring Rust biomarker.rs and
biomarker_stream.rs exactly. Includes:

- src/biomarker.js: 20-SNP composite risk scoring, 6 gene-gene
  interactions, 64-dim L2-normalized profile vectors, synthetic
  population generation with Mulberry32 PRNG
- src/stream.js: RingBuffer, StreamProcessor with Welford online
  stats, CUSUM changepoint detection, z-score anomaly detection,
  linear regression trend analysis, batch reading generation
- tests/test-biomarker.js: 35 tests + 5 benchmarks covering all
  classification levels, risk scoring, vector encoding, population
  generation, streaming, anomaly/trend detection
- index.d.ts: Full TypeScript definitions for all biomarker APIs
- package.json: Bump to v0.3.0, add biomarker keywords

Benchmark results (Node.js):
  computeRiskScores: 7.33 us/op
  encodeProfileVector: 9.51 us/op
  RingBuffer push+iter: 3.32 us/op

https://claude.ai/code/session_014FpaYVohmyLH5dcBZTgmSY
Optimizations (1.7-2x speedup across all hot paths):
- biomarker.js: Replace O(n) findIndex with pre-built RSID_INDEX Map
  for O(1) SNP lookups; cache LPA SNP references to avoid repeated
  array iteration in vector encoding and population generation
- stream.js: Add RingBuffer.pushPop() returning evicted value;
  replace O(n) windowMeanStd buffer scan with O(1) incremental
  windowed Welford algorithm in StreamProcessor

Benchmark improvements (before → after):
  computeRiskScores: 7.33 → 3.70 us/op (1.98x)
  encodeProfileVector: 9.51 → 5.25 us/op (1.81x)
  StreamProcessor.processReading: 220 → 110 us/op (2.00x)
  generateSyntheticPopulation(100): 1090 → 595 us/op (1.83x)

Real-data integration tests (25 new tests):
- 4 realistic 23andMe fixture files (29 SNPs each) covering:
  high-risk cardio, low-risk baseline, multi-risk, PCSK9-protective
- End-to-end pipeline: parse 23andMe → biomarker scoring → streaming
- Clinical scenarios: APOE e4/e4, BRCA1 carrier, MTHFR compound het,
  COMT×OPRM1 pain, DRD2×COMT, PCSK9 protective
- Cross-validation: 8 JS↔Rust parity assertions on tables, z-scores,
  classification, vector layout, risk thresholds
- Population correlations: APOE→HDL, LPA→Lp(a), score distribution,
  clinical biomarker range validation (500 subjects)
- Full pipeline benchmark: 220 us end-to-end

https://claude.ai/code/session_014FpaYVohmyLH5dcBZTgmSY
…-ESZy4

Reviewed: all CI checks pass, 48 Rust tests + 60 JS tests pass, code review clean. Publishing rvdna crate 0.2.0 and @ruvector/rvdna 0.3.0.
  Built from commit f957eb7

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
  Built from commit 2ae3439

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
The biomarker engine uses 20 SNPs (17 original + LPA rs10455872/rs3798220
+ PCSK9 rs11591147) but README was not updated to reflect the expansion.

Co-Authored-By: claude-flow <ruv@ruv.net>
  Built from commit db9c3d6

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
NodeBackend.ingestBatch() passed string IDs directly to the N-API layer
via Number(e.id), which returns NaN for non-numeric strings (UUIDs, hex
hashes, etc.). The native Rust HNSW silently drops entries with NaN IDs,
causing silent data loss with no error signal.

Fix: Add a bidirectional string↔numeric mapping layer to NodeBackend,
following the same pattern used by HNSWLibBackend in AgentDB:
- resolveLabel(): allocates sequential i64 labels for string IDs
- query(): maps numeric labels back to original string IDs
- delete(): resolves string IDs to labels before calling native layer
- Mappings persisted to {path}.idmap.json sidecar file

Also fixes query() returning numeric labels instead of original string
IDs, and delete() silently failing for non-numeric IDs.

Bumps @ruvector/rvf from 0.1.9 → 0.2.0 (breaking fix).

Closes ruvnet/agentic-flow#114

Co-Authored-By: claude-flow <ruv@ruv.net>
fix(rvf): add string ID mapping to NodeBackend — silent data loss
  Built from commit 7d410c4

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
Comprehensive research on algorithmic frontiers and crate synthesis for
RuVector's WASM cognitive stack. Covers pseudo-deterministic min-cut,
sublinear spectral solvers, storage-based GNN acceleration, WASM
microkernel architecture, and cross-stack integration strategy with
16-week phased roadmap.

https://claude.ai/code/session_018QKTLyCUrMUQCRDqoiyEHY
Add canonical, spectral, cold-tier, and canonical-witness feature flags
across ruvector-mincut, ruvector-coherence, ruvector-gnn, and
cognitum-gate-kernel. Create ruvector-cognitive-container crate skeleton.

Implementation agents are building the full modules in parallel.

https://claude.ai/code/session_018QKTLyCUrMUQCRDqoiyEHY
…foundations

- ruvector-mincut: canonical module with CactusGraph, CanonicalMinCut trait,
  FixedWeight, WitnessReceipt, pseudo-deterministic cut via cactus representation
  and lexicographic tie-breaking (1168 lines)
- ruvector-coherence: spectral module with CsrMatrixView, SpectralCoherenceScore,
  SpectralTracker, Fiedler estimation via inverse power method, effective resistance
  sampling, HNSW health monitoring (883 lines)
- ruvector-cognitive-container: epoch controller with phase budgeting, memory slab
  with arena allocation, error types (536 lines)

https://claude.ai/code/session_018QKTLyCUrMUQCRDqoiyEHY
- ruvector-gnn: cold_tier module with FeatureStorage (block-aligned I/O),
  HyperbatchIterator (BFS-ordered batches with prefetching),
  AdaptiveHotset (frequency-based caching with decay), ColdTierTrainer,
  and ColdTierEwc for disk-backed Fisher information (946 lines)
- ruvector-cognitive-container: witness chain with ContainerWitnessReceipt,
  hash-linked chain integrity, CoherenceDecision, VerificationResult,
  deterministic hashing (404 lines)

https://claude.ai/code/session_018QKTLyCUrMUQCRDqoiyEHY
- cognitum-gate-kernel: canonical_witness module with no_std ArenaCactus,
  FixedPointWeight, CanonicalPartition (bitset-based), CanonicalWitnessFragment,
  FNV-1a hashing, BFS spanning tree for cactus construction (912 lines)
- ruvector-mincut: canonical tests for determinism, correctness, fixed-weight
  ordering, cactus construction, witness receipts (548 lines)
- ruvector-mincut: wire canonical module into lib.rs with feature-gated
  re-exports and prelude additions
- ruvector-coherence: spectral module refinements

https://claude.ai/code/session_018QKTLyCUrMUQCRDqoiyEHY
- ruvector-cognitive-container: container.rs with CognitiveContainer,
  tick-based execution (ingest/mincut/spectral/evidence/witness phases),
  Delta processing, simplified Stoer-Wagner min-cut, spectral scoring,
  evidence accumulation, snapshot/restore (539 lines)
- ruvector-cognitive-container: lib.rs wiring all modules together
- Workspace Cargo.toml updated with new crate member
- ruvector-coherence: spectral module refinements

https://claude.ai/code/session_018QKTLyCUrMUQCRDqoiyEHY
…e stack

Spectral coherence optimizations (50ms → 5ms for 500 vertices):
- Reduce Fiedler outer iterations from 50 to 8
- Reduce inner CG iterations from 100 to 15
- Reduce effective resistance samples from 50 to 3
- Reduce resistance CG iterations from 100 to 10
- Reduce power iteration for largest eigenvalue from 50 to 10

Canonical min-cut optimizations:
- Replace O(n) Vec::contains with O(1) HashSet lookups in partition membership
- Build partition_sets once, reuse across all vertex signature computation
- Use HashMap<u16,usize> for O(1) cactus vertex lookup instead of linear scan
- Track active count explicitly instead of recounting each phase
- Use std::mem::take to avoid clone during merge

New benchmark tests for all 4 cognitive stack modules:
- canonical_bench: CactusGraph 30v = ~1ms native (ArenaCactus 64v = 3µs WASM)
- spectral_bench: SCS 500v = ~5ms (10x improvement from 50ms)
- container_bench: 100 ticks = 9µs avg (target: <200µs)
- canonical_witness_bench: 64v witness = 3µs (target: <50µs)

https://claude.ai/code/session_018QKTLyCUrMUQCRDqoiyEHY
…ncies

- Replace unsafe get_unchecked with safe bounds-checked indexing in
  Stoer-Wagner hot loop (no measurable perf impact, safer code)
- Remove unused imports (Ordering, BinaryHeap)
- Add cognitive stack crate dependencies to ruvector-bench
- Add cross-crate benchmark test for full stack

https://claude.ai/code/session_018QKTLyCUrMUQCRDqoiyEHY
- Add missing `active_pos` vec in canonical min-cut Stoer-Wagner impl
- Bump cognitum-gate-kernel to 0.1.1 for new canonical_witness module
- Fix cognitum-gate-kernel ruvector-mincut dep version (0.1.30 → 2.0)
- Add version specs to mincut-wasm and mincut-node path dependencies
- Add README and metadata to ruvector-cognitive-container for crates.io
- Relax bench thresholds for CI/debug-mode environments

Co-Authored-By: claude-flow <ruv@ruv.net>
Co-Authored-By: claude-flow <ruv@ruv.net>
…ctral coherence, and container orchestration

docs: add WASM integration research series (6 documents, 3465 lines)
…x all dep version specs

- ruvector-attention: 0.1.32 → version.workspace = true (2.0.4)
- ruvector-attention-wasm: 0.1.32 → workspace, dep 0.1.31 → 2.0
- ruvector-attention-node: 0.1.0 → workspace, dep already 2.0
- ruvector-dag: 0.1.0 → workspace, add version spec on ruvector-core dep
- ruvector-gnn-wasm: fix malformed Cargo.toml (metadata before version), add version spec
- ruvector-attention-unified-wasm: add version specs, fix category slug
- Update all consumers: ruvector-crv, ruvllm, ruvector-postgres, prime-radiant, rvdna, OSpipe

Published to crates.io:
  ruvector-attention@2.0.4, ruvector-dag@2.0.4, ruvector-tiny-dancer-core@2.0.4,
  ruvector-attention-wasm@2.0.4, ruvector-attention-node@2.0.4,
  ruvector-gnn-wasm@2.0.4, ruvector-gnn-node@2.0.4,
  ruvector-tiny-dancer-wasm@2.0.4, ruvector-tiny-dancer-node@2.0.4,
  ruvector-router-wasm@2.0.4, ruvector-router-ffi@2.0.4, ruvector-router-cli@2.0.4,
  ruvector-attention-unified-wasm@0.1.0

Co-Authored-By: claude-flow <ruv@ruv.net>
  Built from commit d2342d8

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
…ipe, raft, replication, ruvector-wasm-unified, ruvllm, rvf, and other packages

Compiled TypeScript outputs (.d.ts, .js, .js.map, .d.ts.map) from
npm workspace builds.

Co-Authored-By: claude-flow <ruv@ruv.net>
  Built from commit f17c0d2

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
github-actions Bot and others added 29 commits March 3, 2026 18:14
  Built from commit b6e45eb

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
…ruvnet#230)

HNSW k-NN fix:
- Search beam width (k) increased from 10 to 100 — previous value
  starved the beam search, causing 0 rows on index scan
- Added ruvector_hnsw_debug() diagnostic function for troubleshooting
- Added warning log when entry_point is InvalidBlockNumber

Hybrid search fix:
- ruvector_hybrid_search() now returns success=true with empty results
  and helpful message on unregistered collections (was success=false)

Audit script fix:
- Corrected hybrid_search argument order in sql-audit-v3.sql Section 9b
- Added HNSW debug diagnostics on 0-row failure

Results: 17 PASS / 0 PARTIAL / 0 FAIL → 100% (up from 88%)
Published: docker.io/ruvnet/ruvector-postgres:0.3.2
  Built from commit 5f0a2c2

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
…net#231)

- MCP entry line count: ~3,816 → 3,815 (verified with wc -l)
- Command groups: 14 → 15 (midstream group was missed)
- CLI test count: 63 → 64 active tests (verified grep -c)
- Dead code → conditionally unreachable (line 1807 runs when @ruvector/router installed)
  Built from commit 2bcc7ad

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
…le Firestore persistence (ruvnet#232)

ADR file renames:
- ADR-0027 → ADR-027 (fix 4-digit numbering to standard 3-digit)
- ADR-040 filename sanitized (removed spaces, em dash, ampersand)
- ADR-017 duplicate (craftsman) → ADR-024 (temporal-tensor keeps 017)
- ADR-029 duplicate (exo-ai) → ADR-025 (rvf-canonical keeps 029)
- ADR-031 duplicate (rvcow) → ADR-026 (rvf-example keeps 031)

Cloud Run fix (pi.ruv.io):
- Added FIRESTORE_URL env var — enables persistent storage
- Fixed env var packing bug (all flags were in BRAIN_SYSTEM_KEY)
- Dashboard now shows actual data: 240 memories, 30 contributors, 1096 edges
…brain dependency (ruvnet#233)

Replace requirePiBrain() + PiBrainClient with direct fetch() calls to pi.ruv.io.
All 13 brain CLI commands and 11 brain MCP tools now work out of the box with
zero extra dependencies. Includes 30s timeout on all brain API calls.
Brain commands now use direct pi.ruv.io fetch (PR ruvnet#233), so
@ruvector/pi-brain is no longer needed as a peer dependency.

Co-Authored-By: claude-flow <ruv@ruv.net>
  Built from commit 0b054f4

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
…uvnet#234)

* feat: proxy-aware fetch + brain API improvements — publish v0.2.7

Add proxyFetch() wrapper to cli.js and mcp-server.js that detects
HTTPS_PROXY/HTTP_PROXY/ALL_PROXY env vars, uses undici ProxyAgent
(Node 18+) or falls back to curl. Handles NO_PROXY patterns.
Replaced all 17 fetch() call sites with timeouts (15-30s).

Brain server API:
- Search returns similarity scores via ScoredBrainMemory
- List supports pagination (offset/limit), sorting (updated_at/quality/votes), tag filtering
- Transfer response includes warnings, source/target memory counts
- New POST /v1/verify endpoint with 4 verification methods

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat: brain server bug fixes, GET /v1/pages, 9 MCP page/node tools — v0.2.10

Fix proxyFetch curl fallback to capture real HTTP status instead of
hardcoding 200, add 204 guards to brainFetch/fetchBrainEndpoint/MCP
handler, fix brain_list schema (missing offset/sort/tags), fix
brain_sync direction passthrough, add --json to share/vote/delete/sync.

Add GET /v1/pages route with pagination, status filter, sort.
Add 9 MCP tools: brain_page_list/get/create/update/delete,
brain_node_list/get/publish/revoke (previously SSE-only).

Polish: delete --json returns {deleted:true,id} not {}, page get
unwraps .memory wrapper for formatted display.

112 MCP tools, 69/69 tests pass. Published v0.2.10 to npm.

Co-Authored-By: claude-flow <ruv@ruv.net>
  Built from commit 3208afa

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
…-Sybil votes (ruvnet#235)

Expand PiiStripper from 12 to 15 regex rules: add phone number,
SSN, and credit card detection/redaction. Add IP-based rate limiting
(1500 writes/hr per IP) to prevent Sybil key rotation bypass. Add
per-IP vote deduplication (one vote per IP per memory) to prevent
quality score manipulation.

63 server tests + 16 PII tests pass. Deployed to Cloud Run.
  Built from commit 5d51e0b

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
…, CLI + MCP (ruvnet#236)

Bridge the gap between "stores knowledge" and "learns from knowledge":

- Background training loop (tokio::spawn, 5 min interval) runs SONA
  force_learn + domain evolve_population when new data arrives
- POST /v1/train endpoint for on-demand training cycles
- `ruvector brain train` CLI command with --json support
- `brain_train` MCP tool for agent-triggered training
- Vote dedup: 24h TTL on ip_votes entries, author exemption from IP check
- ADR-082 updated, ADR-083 created

Results: Pareto frontier grew 0→24 after 3 cycles. SONA activates
after 100+ trajectory threshold (natural search/share usage).

Publish ruvector@0.2.11.
  Built from commit 27401ff

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
- ONNX embeddings: dynamic dimension detection + conditional token_type_ids (ruvnet#237)
- rvf-node: add compression field pass-through to Rust N-API struct (ruvnet#225)
- Cargo workspace: add glob excludes for nested rvf sub-packages (ruvnet#214)
- ruvllm: fix stats crash (null guard + try/catch) + generate warning (ruvnet#103)
- ruvllm-wasm: deprecated placeholder on npm (ruvnet#238)
- Pre-existing: fix ruvector-sparse-inference-wasm API mismatch, exclude from workspace
- Pre-existing: fix ruvector-cloudrun-gpu RuvectorLayer::new() Result handling

Co-Authored-By: claude-flow <ruv@ruv.net>
fix: resolve 5 P0 critical issues + pre-existing compile errors
Co-Authored-By: claude-flow <ruv@ruv.net>
Built from commit 538237b

Platforms: linux-x64-gnu, linux-arm64-gnu, darwin-x64, darwin-arm64, win32-x64-msvc

Co-Authored-By: claude-flow <ruv@ruv.net>
  Built from commit 538237b

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
  Built from commit 9dc76e4

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
- Gate WebGPU web-sys features behind `webgpu` Cargo feature flag
- Remove unused bytemuck, gpu_map_mode, GpuSupportedLimits dependencies
- Add wasm-opt=false workaround for Rust 1.91 codegen bug
- Published @ruvector/ruvllm-wasm@2.0.0 with compiled WASM binary (435KB)
- ADR-084 documenting build workarounds and known limitations

Closes ruvnet#240

Co-Authored-By: claude-flow <ruv@ruv.net>
feat: ruvllm-wasm v2.0.0 — first functional WASM publish
…npm link

- Fix browser code example to use actual working API (ChatTemplateWasm, HnswRouterWasm)
- Add npm install line for @ruvector/ruvllm-wasm
- Update npm packages count (4→5) with ruvllm-wasm link
- Update WASM size to actual 435KB (178KB gzipped)
- Link ruvllm-wasm feature table to npm package

Co-Authored-By: claude-flow <ruv@ruv.net>
  Built from commit 0f9f55b

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
  Built from commit abb324e

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
Replaces outdated README that referenced non-existent APIs
(load_model_from_url, generate_stream) with documentation
matching the actual v2.0.0 exports.

Co-Authored-By: claude-flow <ruv@ruv.net>
  Built from commit 1f68d0a

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants