Skip to content

MemoryGraph.ts cannot run as shipped — graphology deps missing from install/package.json #1605

Description

@cristbc

Summary

LIFEOS/TOOLS/MemoryGraph.ts imports three packages that install/package.json does not declare, so it fails at import on a stock install. The Pulse memory-graph endpoint explicitly instructs the user to run it, which means the graph layer is unreachable out of the box and fails with no signal anywhere in the UI.

Evidence

MemoryGraph.ts imports:

graphology
graphology-communities-louvain
graphology-metrics/centrality/pagerank

install/package.json declares exactly one dependency: yaml.

Result on a stock install:

$ bun LIFEOS/TOOLS/MemoryGraph.ts build --all
error: Cannot find package 'graphology' from '.../LIFEOS/TOOLS/MemoryGraph.ts'

Why it stays invisible

/api/memory/graph returns an empty graph plus a remediation string:

{"nodes":[],"edges":[],"communities":[],"built":null,
 "note":"run: bun LIFEOS/TOOLS/MemoryGraph.ts build --all"}

The UI renders that as "not built yet," which is indistinguishable from "you haven't run it." Following the instruction produces a module-resolution error in a terminal, not in Pulse — so unless the user runs it by hand and reads stderr, the graph simply never exists. KnowledgeGraph.ts (the superseded tool) has the same import.

Impact

This is the whole declared-edge graph layer: Louvain communities, PageRank god-nodes, betweenness bridges, orphan detection, MEMORY/GRAPH/graph.json and PATTERNS.md. On an install with a few hundred knowledge notes it is a substantial feature, and it is 100% local — no network, no model calls, sub-second.

For reference, after adding the three packages the first build on a real corpus took 0.1s and produced 497 nodes, 1306 edges, 23 communities, 2 orphans. The output is genuinely useful; it just cannot run as shipped.

Proposed fix

Add to install/package.json:

"graphology": "^0.26.0",
"graphology-communities-louvain": "^2.0.2",
"graphology-metrics": "^2.4.0"

Optionally, have the /api/memory/graph note distinguish "never built" from "build failed" by attempting a resolve and surfacing the error — the current wording sends the user to a command that cannot succeed.

Related

Same class as #1600 (documented remediation that cannot work as shipped): the instruction is present, the machinery behind it is not.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions