DuckDB-backed decision graph store.
Nodes and edges live in two DuckDB tables; path, ancestor and descendant
queries are recursive CTEs over the edge table (plain SQL — no DuckPGQ or
other extension to install, so the store works on a stock duckdbex).
Traversals are bounded (10 hops for a path, 100 for ancestors/descendants)
and cycle-safe via a visited-path check.
Options
:path- database file path (default:":memory:")
Quick Start
{:ok, state} = Nous.Decisions.Store.DuckDB.init([])
node = Nous.Decisions.Node.new(%{type: :goal, label: "Ship v1.0"})
{:ok, state} = Nous.Decisions.Store.DuckDB.add_node(state, node)