How it fits together
A single integration seam: hosts produce GraphData; @restormel/graph-core defines the contract; @restormel/ui-graph-svelte renders it.
Package boundaries
- @restormel/graph-core — Contract v0 DTOs (
GraphData,GraphNode,GraphEdge, ghost types, viewport commands), plus layout, trace, and workspace helpers. No Svelte, no UI, no@restormel/contracts. - @restormel/ui-graph-svelte — Svelte 5 UI:
GraphCanvas, optionalNodeDetail, semantic style helpers, and packaged component CSS. Depends on published graph-core. - @restormel/graph-reasoning-extensions (optional) — compare, lineage, projection, evaluation, diff,
summary over
@restormel/contractssnapshots. Depends on contracts + graph-core types; semver trainplatform-v*, independent ofgraph-v*. See Reasoning extensions & contracts. - @restormel/context-packs + @restormel/state (optional, same
platform-v*train) — pass-specific LLM text from a retrieval-shaped payload; append-only agent memory projections and correlation with those packs and traces. Not canvas packages; see Reasoning extensions (context packs) and Restormel State.
Integration seam (one sentence)
Hosts produce GraphData; adapters live in the app—map your snapshot into the DTOs
exported from @restormel/graph-core/viewModel, then pass node and edge arrays into GraphCanvas.
Minimal type sketch
import type { GraphData } from "@restormel/graph-core/viewModel";
function toGraphData(snapshot: YourDomainSnapshot): GraphData {
return {
nodes: [/* … */],
edges: [/* … */],
ghostNodes: [],
ghostEdges: [],
};
} Back: Overview · Forward: SvelteKit integration · Reasoning extensions · Restormel State