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-svelteSvelte 5 UI: GraphCanvas, optional NodeDetail, 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/contracts snapshots. Depends on contracts + graph-core types; semver train platform-v*, independent of graph-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