1
0
Fork 0
Code Issues Pull requests Projects Releases 2 Packages Wiki Activity Actions Pages

Add project-bound graph visualization

This commit is contained in:
Andraxion 2026-07-24 16:01:03 -04:00
parent 6b5c3a939a
commit 195a57210a
13 changed files with 1298 additions and 22 deletions

View file

@ -10,7 +10,7 @@ isolated previews through the explicit render boundary.
## Current state
DFG-0 through DFG-9 are complete. Worldforge uses separate read-only sessions and an optional
DFG-0 through DFG-10 are complete. Worldforge uses separate read-only sessions and an optional
AssetForge-only proposal process. OpenClaw can propose updates to existing AssetForge chapter prose
through isolated, validated changesets and escaped previews. Canonical integration remains a
developer review step through Worldforge's established builder. DFG-9 found no measured need for an
@ -18,6 +18,12 @@ application command, so manual canonical integration is the permanent DocForge 0
Canonical application remains external and closed to the library, CLI, and MCP server. See
[`docs/APPLICATION_DECISION.md`](docs/APPLICATION_DECISION.md).
DFG-10 adds one generic `docforge_visualize` MCP tool. It validates the configured project and
derived index, then starts a token-protected read-only graph browser on `127.0.0.1`. The browser
supports project counts, family filtering, lexical search, exact node inspection, and bounded
incoming-and-outgoing neighborhoods. It accepts no project path, database path, SQL, external bind
address, or write operation.
## Development
```bash
@ -53,3 +59,8 @@ Proposal-enabled adapters supply confined project settings and a project-owned v
still owns hashes, permissions, changeset storage, conflict checks, graph validation, diffs, and
preview confinement. The adapter owns source-format rules and may only narrow the allowed proposal
surface.
Both generic and explicit adapter MCP servers expose the same visualization tool because it reads
the validated `ProjectIndex` supplied by the project binding. Invoking it again refreshes the
browser only after a complete index check. The ephemeral listener and its unguessable URL token live
only for the MCP process lifetime.