LangGraph integration

Point your graph at CausalityCallbackHandler. It watches the callbacks LangGraph already emits. It does not wrap the graph.

Run it

shell
$ pip install agent-causality langgraph langchain-core
python
from adapters.langgraph import CausalityCallbackHandler
from storage.sqlite import SQLiteEventStore

store = SQLiteEventStore(".causality/langgraph.db")
handler = CausalityCallbackHandler(store)
app.invoke(inputs, config=handler.config())
shell
$ causality-explorer --db .causality/langgraph.db

Nodes, tools, and model calls land in one causal graph. A callback whose parent was never seen is dropped. If storage fails, the graph run continues.