LangGraph integration
Point your graph at CausalityCallbackHandler. It watches the callbacks LangGraph already emits. It does not wrap the graph.
Run it
$ pip install agent-causality langgraph langchain-core
from adapters.langgraph import CausalityCallbackHandler
from storage.sqlite import SQLiteEventStore
store = SQLiteEventStore(".causality/langgraph.db")
handler = CausalityCallbackHandler(store)
app.invoke(inputs, config=handler.config())
$ 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.