v3/docs/adr/ADR-087-graph-node-native-backend.md
Status: Accepted — Implemented (graph-backend.ts wrapper wired into agent spawn, causal edges, swarm topology, and MCP/CLI status)
Date: 2026-04-07 · Updated: 2026-05-09
The codebase has @ruvector/[email protected] installed (native Rust bindings, 10x faster than WASM) but 0 references in source code. Meanwhile, causal edges and agent relationships are stored only in the AgentDB bridge with no graph-native operations like k-hop neighbor queries or hyperedge support.
| Package | Status | Result |
|---|---|---|
@ruvector/graph-node | Works | createNode, createEdge, createHyperedge, kHopNeighbors, stats — all functional |
@ruvector/gnn | Broken | All NAPI functions fail with type conversion errors |
@ruvector/rvf | Broken | Backend resolution fails, no native bindings found |
createNode({ id, type, embedding }) — embedding required (Float32Array)createEdge({ from, to, label, description, embedding, properties }) — all fields requiredcreateHyperedge({ nodes[], label, description, embedding, properties }) — all fields requiredkHopNeighbors(nodeId, k) — returns string[] of neighbor node IDsstats() — returns { totalNodes, totalEdges, avgDegree }GraphDatabase(path?) — optional path for persistenceWire @ruvector/graph-node as the native graph backend for agent relationships, causal edges, task dependencies, and swarm topology.
src/ruvector/graph-backend.tsProvides a clean wrapper over the raw graph-node API:
isGraphBackendAvailable() — check if native backend loadedaddNode(data) — add agent/task/pattern nodeaddEdge(data) — add relationship edgeaddHyperedge(nodeIds, label) — create multi-node relationshipgetNeighbors(nodeId, hops) — k-hop neighbor querygetGraphStats() — node/edge/degree statisticsrecordCausalEdge(src, tgt, relation) — causal edge recordingrecordCollaboration(agentId, agentType, taskId) — agent-task assignmentrecordSwarmTeam(agentIds, topology) — swarm team hyperedgeAuto-generates minimal embeddings (8-dim hash) for graph structure operations.
src/ruvector/graph-backend.ts (new) — Native graph database wrappersrc/mcp-tools/agentdb-tools.ts — agentdb_causal-edge tries graph-node first, falls back to bridgesrc/mcp-tools/agent-tools.ts — agent_spawn records agent node in graphsrc/mcp-tools/hooks-tools.ts — hooks_intelligence adds graphDatabase component statussrc/mcp-tools/hooks-tools.ts — hooks_intelligence_stats adds graph stats to ruvllm sectionsrc/mcp-tools/hooks-tools.ts — implementationStatus.working includes graph-databasesrc/mcp-tools/ruvllm-tools.ts — ruvllm_status includes graph backend statussrc/commands/neural.ts — neural status shows Graph Database row in status tableneural status, hooks_intelligence, ruvllm_status/tmp/rv-graph-persist.db) reports null (graph-node quirk), but data persistsembedding on all operations — mitigated by auto-generated mini-embeddingscreateRequire bridge pattern__tests__/graph-backend.test.ts — 9 tests covering exports, graceful degradation, CJS patternAll 8 files listed in the Decision shipped in a single commit (same as ADR-086).
| Component | Status | Files | Commit(s) |
|---|---|---|---|
graph-backend.ts — native graph wrapper (addNode, addEdge, addHyperedge, getNeighbors, recordCausalEdge, recordCollaboration, recordSwarmTeam) | Implemented | v3/@claude-flow/cli/src/ruvector/graph-backend.ts (new) | 7eb505d22 feat: native ruvllm + graph-node intelligence backends (ADR-086, ADR-087) |
agentdb-tools.ts — agentdb_causal-edge graph-node first, AgentDB bridge fallback | Implemented | v3/@claude-flow/cli/src/mcp-tools/agentdb-tools.ts | 7eb505d22 |
agent-tools.ts — agent_spawn records agent node in graph | Implemented | v3/@claude-flow/cli/src/mcp-tools/agent-tools.ts | 7eb505d22 |
hooks-tools.ts — hooks_intelligence + hooks_intelligence_stats graph component + stats | Implemented | v3/@claude-flow/cli/src/mcp-tools/hooks-tools.ts | 7eb505d22 |
ruvllm-tools.ts — ruvllm_status graph backend status | Implemented | v3/@claude-flow/cli/src/mcp-tools/ruvllm-tools.ts | 7eb505d22 |
neural.ts — neural status Graph Database row | Implemented | v3/@claude-flow/cli/src/commands/neural.ts | 7eb505d22 |
| Test coverage — 9 tests, graceful degradation, CJS import pattern | Implemented | v3/@claude-flow/cli/__tests__/graph-backend.test.ts | 7eb505d22 |
@ruvector/gnn (NAPI broken) and @ruvector/rvf (backend missing) were evaluated and rejected. Cypher query interface (querySync) not added (untested).