Debugging a LangGraph run locally is still noisy. When something goes wrong I usually end up either printing raw stream_mode="debug" chunks and squinting at them, or reaching for LangSmith. For small/medium graphs that feels heavier than it should, and it’s part of why people keep saying a hand-rolled loop is “easier to debug.”
I’d like to contribute a small, experimental, inspection-only helper that consumes the existing stream events (updates / tasks / checkpoints) and produces a compact timeline — node order, state keys changed per step, tool calls, errors, interrupts, checkpoint IDs — with to_text() and to_json(). No execution-semantics changes, no new deps.
Roughly:
trace = collect_debug_trace(graph, {"messages": [...]})
print(trace.to_text())
I know the v1.2 event-streaming / transformer work covers nearby ground, so I’d scope this as a plain .stream() consumer for the first PR and treat a transformer-based projection as a possible later step.
Before I build it out: is this something you’d be open to accepting? And if so, should I open a tracking issue I can be assigned to, or is there an existing one I should link?