mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-10-17 05:35:31 +02:00
#7677 declared `interrupt_before`, `interrupt_after` and `control` as named parameters on the `Pregel.stream_events`/`astream_events` dispatchers but forwarded them only on the v3 branch. On async v1/v2 they never reached `astream` and nothing raised: drains on a caller-supplied `RunControl` had no effect and static interrupts never fired. This regressed the pre-1.2.0 behavior where those keywords reached `astream` through `**kwargs` (langchain-core forwards caller kwargs to `astream` on both v1 and v2), and langgraph-api runs with `stream_mode="events"` have been affected since 1.2.0a3. Remove the three parameters from the public runtime implementations so they travel through `**kwargs` again: - v1/v2 recover the pre-#7677 passthrough: `astream` receives exactly what the caller passed, including an explicit `None`, and nothing for omitted arguments. - v3 binds them on `_pregel_stream_v3`/`_apregel_stream_v3`, which are unchanged and keep their since-inception explicit-`None` defaults. The typed v3 `@overload` stubs are unchanged, so v3 call sites keep their static types. The docstrings now describe the three parameters as honored on every async version (type-checked only on the v3 overloads), and state that synchronous v1/v2 event streaming is not implemented in langchain-core — `astream_events` yields the `StreamEvent` dicts there. Recording tests pin, for all three names on both the async and sync v3 paths, exactly what `(a)stream` receives: caller-supplied values (including an explicit `None`) on v1/v2, and `None` defaults on v3.