Agent: 2 / NPM Package Integration Analysis
Date: 2026-02-20
Scope: All npm packages in the ruvector monorepo, dependency overlap, type compatibility, and integration patterns with sublinear-time-solver v1.5.0.
| Package | Location |
|---|---|
@ruvector/workspace (private) |
/home/user/ruvector/npm/package.json |
The monorepo uses npm workspaces rooted at /home/user/ruvector/npm with all publishable packages under npm/packages/*.
| Package Name | Version | Description | Has Types |
|---|---|---|---|
ruvector |
0.1.99 | Umbrella package with native/WASM/RVF fallback | Yes |
@ruvector/core (packages) |
0.1.30 | HNSW vector database, napi-rs bindings | Yes |
@ruvector/core (npm/core) |
0.1.17 | ESM/CJS wrapper over native bindings | Yes |
@ruvector/node |
0.1.22 | Unified Node.js package (vector + GNN) | Yes |
@ruvector/cli |
0.1.28 | Command-line interface | Yes |
@ruvector/rvf |
0.1.9 | RuVector Format SDK | Yes |
@ruvector/rvf-solver |
0.1.1 | Self-learning temporal solver (WASM) | Yes |
@ruvector/rvf-mcp-server |
0.1.3 | MCP server (stdio + SSE) | Yes |
@ruvector/router |
0.1.28 | Semantic router, napi-rs bindings | Yes |
@ruvector/raft |
0.1.0 | Raft consensus | Yes |
@ruvector/replication |
0.1.0 | Multi-node replication | Yes |
@ruvector/agentic-synth |
0.1.6 | Synthetic data generator | Yes |
@ruvector/agentic-synth-examples |
(examples) | Usage examples for agentic-synth | Yes |
@ruvector/agentic-integration |
1.0.0 | Distributed agent coordination | Yes |
@ruvector/graph-node |
2.0.2 | Native graph DB, napi-rs bindings | Yes |
@ruvector/graph-wasm |
2.0.2 | Graph DB WASM bindings | Yes |
@ruvector/graph-data-generator |
0.1.0 | AI-powered graph data generation | Yes |
@ruvector/wasm-unified |
1.0.0 | Unified WASM API surface | Yes |
@ruvector/ruvllm |
2.3.0 | Self-learning LLM orchestration | Yes |
@ruvector/ruvllm-cli |
0.1.0 | LLM inference CLI | Yes |
@ruvector/ruvllm-wasm |
0.1.0 | Browser LLM inference (WebGPU) | Yes |
@ruvector/postgres-cli |
0.2.7 | PostgreSQL vector CLI (pgvector replacement) | Yes |
@ruvector/burst-scaling |
1.0.0 | GCP burst scaling system | Yes |
@ruvector/ospipe |
0.1.2 | Screenpipe AI memory SDK | Yes |
@ruvector/ospipe-wasm |
0.1.0 | OSpipe WASM bindings | Yes |
@ruvector/rudag |
0.1.0 | DAG library with WASM | Yes |
@ruvector/scipix |
0.1.0 | Scientific OCR client | Yes |
@ruvector/ruqu-wasm |
2.0.5 | Quantum circuit simulator WASM | Yes |
@cognitum/gate |
0.1.0 | AI agent safety coherence gate | Yes |
ruvector-extensions |
0.1.0 | Embeddings, UI, exports, persistence | Yes |
ruvbot |
0.2.0 | Enterprise AI assistant | Yes |
rvlite |
0.2.4 | Lightweight vector DB (SQL/SPARQL/Cypher) | Yes |
These are napi-rs platform-specific binary packages distributed via optionalDependencies:
ruvector-core-{linux-x64-gnu,linux-arm64-gnu,darwin-x64,darwin-arm64,win32-x64-msvc}(v0.1.29)@ruvector/router-{linux-x64-gnu,...,win32-x64-msvc}(v0.1.27)@ruvector/graph-node-{linux-x64-gnu,...,win32-x64-msvc}(v2.0.2)@ruvector/ruvllm-{linux-x64-gnu,...,win32-x64-msvc}(v2.3.0)@ruvector/gnn-nodeplatform packages@ruvector/attention-nodeplatform packages@ruvector/rvf-nodeplatform packages
| Package | Version | Purpose |
|---|---|---|
@ruvector/wasm |
0.1.16 | Core WASM (browser vector DB) |
@ruvector/attention-wasm |
(crate) | Attention mechanism WASM |
@ruvector/attention-unified-wasm |
(crate pkg) | Unified attention WASM |
@ruvector/economy-wasm |
(crate pkg) | Economy simulation WASM |
@ruvector/exotic-wasm |
(crate pkg) | Exotic features WASM |
@ruvector/learning-wasm |
(crate pkg) | Learning subsystem WASM |
@ruvector/nervous-system-wasm |
(crate pkg) | Nervous system WASM |
@ruvector/gnn-wasm |
(crate) | GNN WASM bindings |
@ruvector/graph-wasm |
(crate) | Graph WASM bindings |
@ruvector/router-wasm |
(crate) | Router WASM bindings |
@ruvector/tiny-dancer-wasm |
(crate) | Tiny Dancer WASM |
@ruvector/cluster |
0.1.0 | Distributed clustering |
@ruvector/server |
0.1.0 | HTTP/gRPC server |
| Package | Location |
|---|---|
@ruvector/benchmarks |
/home/user/ruvector/benchmarks/package.json |
| meta-cognition SNN demos | /home/user/ruvector/examples/meta-cognition-spiking-neural-network/ |
| edge-net dashboard | /home/user/ruvector/examples/edge-net/dashboard/ |
| neural-trader | /home/user/ruvector/examples/neural-trader/ |
| wasm-react | /home/user/ruvector/examples/wasm-react/ |
| rvlite dashboard | /home/user/ruvector/crates/rvlite/examples/dashboard/ |
| sona wasm-example | /home/user/ruvector/crates/sona/wasm-example/ |
Total unique package.json files found: 90+
The sublinear-time-solver v1.5.0 declares these dependencies:
@modelcontextprotocol/sdk^1.18.1@ruvnet/strange-loop^0.3.0strange-loops^0.5.1- Express ecosystem
| sublinear-time-solver Dep | ruvector Package | ruvector Version | Compatibility |
|---|---|---|---|
@modelcontextprotocol/sdk ^1.18.1 |
ruvector |
^1.0.0 | CONFLICT: ruvector pins ^1.0.0; sublinear needs ^1.18.1. Semver-compatible if 1.18.x exists, but ruvector must upgrade its lower bound. |
@modelcontextprotocol/sdk ^1.18.1 |
@ruvector/rvf-mcp-server |
^1.0.0 | Same conflict as above. |
express (ecosystem) |
@ruvector/rvf-mcp-server |
^4.18.0 | COMPATIBLE: Both use Express 4.x |
express (ecosystem) |
ruvector-extensions |
^4.18.2 | COMPATIBLE |
express (ecosystem) |
@ruvector/agentic-integration |
^4.18.2 | COMPATIBLE |
@ruvnet/strange-loop ^0.3.0 |
(none) | N/A | NO OVERLAP: Not present in ruvector |
strange-loops ^0.5.1 |
(none) | N/A | NO OVERLAP: Not present in ruvector |
| Dependency | sublinear-time-solver | ruvector Packages Using It | Notes |
|---|---|---|---|
zod |
Likely via MCP SDK | @ruvector/rvf-mcp-server (^3.22.0), @ruvector/agentic-integration (^3.22.4), ruvbot (^3.22.4), @ruvector/agentic-synth (^4.1.13), @ruvector/graph-data-generator (^4.1.12) |
WARNING: ruvector has a zod version split: some packages at 3.x, others at 4.x. The MCP SDK depends on zod 3.x. |
commander |
Not direct | ruvector (^11.1.0), @ruvector/cli (^12.0.0), @ruvector/ruvllm (^12.0.0), @ruvector/postgres-cli (^11.1.0), rvlite (^12.0.0), ruvbot (^12.0.0), @ruvector/agentic-synth (^11.1.0) |
CLI packages only; version split between 11.x and 12.x but not a runtime concern for sublinear-time-solver. |
eventemitter3 |
Not direct | @ruvector/raft (^5.0.4), @ruvector/replication (^5.0.4), ruvbot (^5.0.1) |
No overlap. |
typescript |
Dev dep | All packages (^5.0.0 - ^5.9.3) | COMPATIBLE: All use TS 5.x |
@types/node |
Dev dep | All packages (^20.x) | COMPATIBLE |
| Concern | Status | Action Required |
|---|---|---|
@modelcontextprotocol/sdk version skew |
MEDIUM RISK | ruvector currently pins ^1.0.0 while sublinear-time-solver requires ^1.18.1. Since ^1.0.0 allows 1.18.x, npm will resolve to 1.18.x+ if available, but this needs verification. Recommend upgrading ruvector's spec to ^1.18.1 for explicit compatibility. |
| Node.js engine | COMPATIBLE | Both require Node.js >= 18 |
| TypeScript version | COMPATIBLE | ruvector workspace uses ^5.3.0+; sublinear-time-solver is compatible |
| zod version split | LOW RISK | MCP SDK binds zod 3.x internally. The ruvector packages using zod 4.x are independent (agentic-synth, graph-data-generator). No direct conflict path. |
The ruvector monorepo uses multiple TypeScript configuration strategies:
| Target | Module | moduleResolution | Used By |
|---|---|---|---|
| ES2020 | CommonJS | node | ruvector, workspace root, rvf-solver, wasm wrapper |
| ES2022 | Node16 | Node16 | @ruvector/core (npm/core), @ruvector/rvf-mcp-server |
| ES2020 | CommonJS | node | @ruvector/burst-scaling, @ruvector/postgres-cli |
| ES2022 | NodeNext | NodeNext | @ruvector/rvf-mcp-server |
Key observation: The monorepo is split between CommonJS-first packages (older) and ESM-first packages (newer). The sublinear-time-solver would need to be compatible with both module systems.
The sublinear-time-solver exports these types: SolverConfig, MatrixData, SolutionStep, BatchSolveRequest, BatchSolveResult, SublinearSolver, SolutionStream, WasmModule.
Comparison with ruvector types:
| sublinear-time-solver Type | Closest ruvector Equivalent | Package | Compatibility Notes |
|---|---|---|---|
SolverConfig |
TrainOptions |
@ruvector/rvf-solver |
Different shape. TrainOptions has count, minDifficulty, maxDifficulty, seed. SolverConfig is a more general configuration type. These are complementary, not conflicting. |
MatrixData |
Float32Array / number[] (vector types) |
ruvector core types |
ruvector uses number[] and Float32Array for vector data in VectorEntry.vector and RvfIngestEntry.vector. MatrixData is a higher-level abstraction. No conflict. |
SolutionStep |
CycleMetrics / AcceptanceModeResult |
@ruvector/rvf-solver |
Different granularity. SolutionStep likely represents individual solver steps; CycleMetrics represents per-cycle aggregates. Complementary. |
BatchSolveRequest |
BatchOCRRequest (pattern) |
@ruvector/scipix |
Structural similarity (batch request pattern) but completely different domains. No conflict. |
BatchSolveResult |
RvfIngestResult / TrainResult |
@ruvector/rvf, @ruvector/rvf-solver |
Different semantics. The result shape pattern (counts, metrics) is common across the codebase. |
SublinearSolver (class) |
RvfSolver (class) |
@ruvector/rvf-solver |
Most significant overlap. Both are solver classes with async factory creation (createSolver() vs RvfSolver.create()), WASM backends, and destroy lifecycle. Integration should expose both as named exports or compose them. |
SolutionStream (async iterator) |
None | N/A | Novel capability. No existing ruvector package provides async iteration over solver results. This is a purely additive feature. |
WasmModule (SIMD) |
WASM modules throughout | @ruvector/wasm, all -wasm packages |
ruvector has extensive WASM infrastructure. The WasmModule interface with SIMD support aligns with ruvector's existing WASM + SIMD strategy (@ruvector/wasm builds with --features simd). |
ruvector's core types follow these conventions:
// Config pattern: plain objects with optional fields
interface DbOptions {
dimension: number;
metric?: 'cosine' | 'euclidean' | 'dot';
hnsw?: { m?: number; efConstruction?: number; efSearch?: number };
}
// Result pattern: objects with counts and metrics
interface RvfIngestResult {
accepted: number;
rejected: number;
epoch: number;
}
// Factory pattern: static async create()
class RvfSolver {
static async create(): Promise<RvfSolver>;
destroy(): void;
}The sublinear-time-solver factory function createSolver() returning Promise<SublinearSolver> matches the static async create() pattern used by RvfSolver. This is a strong structural compatibility signal.
| Feature | sublinear-time-solver | ruvector Packages |
|---|---|---|
| ESM exports | Main entry, MCP module, core, tools | 22 packages support ESM |
| CJS exports | Likely via dual packaging | 28 packages support CJS |
| Type declarations | .d.ts included |
All packages include .d.ts |
| Conditional exports | Yes (package.json exports map) |
Yes, extensively used |
Assessment: Full compatibility. The sublinear-time-solver export map (main, MCP module, core, tools) maps well to ruvector's established exports field pattern.
| Capability | sublinear-time-solver | ruvector Package | Overlap Degree |
|---|---|---|---|
| Solver/optimization | Core solver class | @ruvector/rvf-solver |
HIGH - Both provide solver classes with WASM backends |
| MCP integration | MCP module export | @ruvector/rvf-mcp-server |
HIGH - Both expose MCP tools, both depend on @modelcontextprotocol/sdk |
| WASM + SIMD | WasmModule with SIMD |
@ruvector/wasm, @ruvector/wasm-unified |
MEDIUM - Infrastructure overlap, but different computation targets |
| Express middleware | Express ecosystem deps | @ruvector/rvf-mcp-server, ruvector-extensions, @ruvector/agentic-integration |
MEDIUM - Both can serve HTTP endpoints |
| Batch processing | BatchSolveRequest/Result |
VectorDBWrapper.insertBatch(), RvfSolver.train() |
LOW - Different domains (solving vs indexing) |
| Feature | Description | Benefit to ruvector |
|---|---|---|
SolutionStream async iterator |
Streaming solver results | ruvector has no equivalent streaming solver pattern. Enables real-time progress for long-running optimizations. |
| Sublinear-time algorithms | O(sqrt(n)) or O(log n) solving | Complements ruvector's HNSW O(log n) search with solver-level sublinear guarantees. |
@ruvnet/strange-loop integration |
Self-referential reasoning patterns | Novel capability not present in ruvector. Extends the self-learning architecture (SONA, EWC, Thompson Sampling) with recursive reasoning. |
strange-loops library |
Fixed-point iteration patterns | Mathematically complements the rvf-solver's three-loop architecture. |
| Tools namespace exports | Pre-packaged MCP tool definitions | Reduces boilerplate when registering solver tools in MCP servers. |
| Feature | Package | Benefit |
|---|---|---|
| HNSW vector indexing | @ruvector/core |
Fast nearest-neighbor lookup for solver state caching |
| GNN graph processing | @ruvector/gnn-node |
Graph-structured problem representation |
| Raft consensus | @ruvector/raft |
Distributed solver coordination |
| Attention mechanisms | @ruvector/attention-* |
39 attention variants for solver guidance |
| DAG scheduling | @ruvector/rudag |
Task dependency resolution for solver pipelines |
| ReasoningBank/PolicyKernel | @ruvector/rvf-solver |
Existing self-learning infrastructure |
| Persistent vector storage | @ruvector/rvf |
Durable storage for solver state vectors |
{
"peerDependencies": {
"sublinear-time-solver": "^1.5.0"
},
"peerDependenciesMeta": {
"sublinear-time-solver": {
"optional": true
}
}
}Rationale: This follows the established pattern used by @ruvector/agentic-synth (which uses ruvector as an optional peer dependency) and ruvector-extensions (which uses openai and cohere-ai as optional peers). The solver is a high-level capability that consumers may or may not need.
Best for: The ruvector umbrella package or @ruvector/rvf-solver.
{
"optionalDependencies": {
"sublinear-time-solver": "^1.5.0"
}
}Rationale: Follows the pattern used by @ruvector/rvf (which lists @ruvector/rvf-solver as an optional dependency). The solver is loaded at runtime with a graceful fallback if unavailable. This matches ruvector's existing three-tier fallback strategy (native -> rvf -> stub).
Best for: @ruvector/rvf-mcp-server which could conditionally expose sublinear solver tools.
Create a thin wrapper in ruvector that re-exports the solver with ruvector-specific type adapters:
// In ruvector/src/core/sublinear-wrapper.ts
let SublinearSolver: any;
try {
const mod = require('sublinear-time-solver');
SublinearSolver = mod.SublinearSolver;
} catch {
SublinearSolver = null;
}
export function isSublinearAvailable(): boolean {
return SublinearSolver !== null;
}
export async function createSublinearSolver(config?: SolverConfig): Promise<any> {
if (!SublinearSolver) {
throw new Error(
'sublinear-time-solver is not installed.\n' +
' Run: npm install sublinear-time-solver\n'
);
}
const { createSolver } = require('sublinear-time-solver');
return createSolver(config);
}Rationale: Matches the exact pattern in /home/user/ruvector/npm/packages/ruvector/src/index.ts (lines 26-77) where the implementation is auto-detected with try/catch and a fallback.
The @ruvector/rvf-mcp-server already has @modelcontextprotocol/sdk and express. The sublinear-time-solver's MCP module can be composed alongside existing RVF tools:
// In rvf-mcp-server, register both tool sets
import { createSolver } from 'sublinear-time-solver/mcp';
import { rvfTools } from '@ruvector/rvf';
const server = new McpServer();
// Register existing RVF tools
rvfTools.forEach(tool => server.addTool(tool));
// Register sublinear solver tools
const solverTools = createSolver.getTools();
solverTools.forEach(tool => server.addTool(tool));For WASM bundling, both sublinear-time-solver and ruvector follow the wasm-pack output convention. Integration should:
- Use the
exportsfield to expose WASM modules separately - Allow tree-shaking of unused solver features
- Support both
webandnodejsWASM targets
The existing build infrastructure (tsup, esbuild, tsc) in ruvector packages already handles dual CJS/ESM output and .wasm file co-location.
File: /home/user/ruvector/npm/packages/ruvector/package.json
{
"dependencies": {
"@modelcontextprotocol/sdk": "^1.18.1", // UPGRADE from ^1.0.0
"@ruvector/attention": "^0.1.3",
"@ruvector/core": "^0.1.25",
"@ruvector/gnn": "^0.1.22",
"@ruvector/sona": "^0.1.4",
"chalk": "^4.1.2",
"commander": "^11.1.0",
"ora": "^5.4.1"
},
"optionalDependencies": {
"@ruvector/rvf": "^0.1.0",
"sublinear-time-solver": "^1.5.0" // ADD as optional
}
}Rationale: Adding as optionalDependency follows the existing @ruvector/rvf pattern. The MCP SDK version must be upgraded to satisfy both consumers.
File: /home/user/ruvector/npm/packages/rvf-mcp-server/package.json
{
"dependencies": {
"@modelcontextprotocol/sdk": "^1.18.1", // UPGRADE from ^1.0.0
"@ruvector/rvf": "^0.1.2",
"express": "^4.18.0",
"zod": "^3.22.0"
},
"optionalDependencies": {
"sublinear-time-solver": "^1.5.0" // ADD for tool composition
}
}File: /home/user/ruvector/npm/packages/rvf-solver/package.json
{
"peerDependencies": {
"sublinear-time-solver": "^1.5.0" // ADD as optional peer
},
"peerDependenciesMeta": {
"sublinear-time-solver": {
"optional": true
}
}
}Rationale: As the most semantically related package, @ruvector/rvf-solver should declare the solver as an optional peer dependency. This enables type-safe integration when both are installed without forcing a dependency.
File: /home/user/ruvector/npm/package.json
{
"devDependencies": {
"@types/node": "^20.10.0",
"@typescript-eslint/eslint-plugin": "^6.13.0",
"@typescript-eslint/parser": "^6.13.0",
"eslint": "^8.54.0",
"prettier": "^3.1.0",
"sublinear-time-solver": "^1.5.0", // ADD for workspace-wide type checking
"typescript": "^5.3.0"
}
}If the umbrella ruvector package chooses to re-export solver functionality:
{
"exports": {
".": {
"import": "./dist/index.mjs",
"require": "./dist/index.js",
"types": "./dist/index.d.ts"
},
"./solver": {
"import": "./dist/core/sublinear-wrapper.mjs",
"require": "./dist/core/sublinear-wrapper.js",
"types": "./dist/core/sublinear-wrapper.d.ts"
}
}
}| Issue | Severity | Mitigation |
|---|---|---|
@modelcontextprotocol/sdk version conflict (^1.0.0 vs ^1.18.1) |
HIGH | Upgrade ruvector packages to ^1.18.1. Test MCP server with new SDK version. |
@ruvnet/strange-loop not in ruvector ecosystem |
LOW | This is a transitive dependency of sublinear-time-solver only. No action needed unless ruvector wants to use it directly. |
| Aspect | Status |
|---|---|
| Node.js engine (>=18) | All ruvector packages require >=18. Compatible. |
| TypeScript 5.x | All ruvector packages use 5.x. Compatible. |
| ESM/CJS dual output | sublinear-time-solver provides both. ruvector infrastructure supports both. |
| WASM loading | Both use standard patterns (dynamic import or direct load). Compatible with ruvector's WASM infrastructure. |
| Express 4.x | Shared across 3 ruvector packages and sublinear-time-solver. No conflict. |
- Verify
@modelcontextprotocol/sdk^1.18.1 is backward-compatible with ruvector's MCP usage - Test WASM module co-existence (sublinear-time-solver WASM + ruvector WASM modules)
- Validate that zod version resolution works correctly with both zod 3.x (MCP SDK) and zod 4.x (agentic-synth)
- Run the existing
npm testacross all workspaces after dependency changes
The sublinear-time-solver v1.5.0 integrates well into the ruvector monorepo:
- One critical change needed: Upgrade
@modelcontextprotocol/sdkfrom ^1.0.0 to ^1.18.1 inruvectorand@ruvector/rvf-mcp-server - Best integration pattern: Optional dependency in the umbrella
ruvectorpackage with a try/catch wrapper (Pattern C), combined with MCP tool composition in@ruvector/rvf-mcp-server(Pattern D) - Type compatibility: Strong structural compatibility. The factory pattern (
createSolver()/RvfSolver.create()), WASM interfaces, and batch processing patterns all align - Novel capabilities added:
SolutionStreamasync iteration, strange-loop reasoning, and sublinear-time algorithmic guarantees complement ruvector's existing self-learning infrastructure - No breaking changes required: All integration can be done via additive optional/peer dependencies