Files
langgraph/libs
Nick Hollon e01037d90c feat(core, prebuilt): tools-channel streaming and extensible GraphStreamer
Adds a first-class `tools` stream mode with `tool-started` /
`tool-output-delta` / `tool-finished` / `tool-error` events, exposed as
`run.tool_calls` (an EventLog of ToolCallStream handles) through the new
`ToolCallTransformer`. Tool authors call
`langgraph.config.emit_tool_output_delta(chunk)` from inside a tool body
to stream partial output; outside a tool call it is a silent no-op.

`StreamTransformer` now declares `required_stream_modes`, and
`GraphStreamer` computes the request set purely as the union of those
declarations — no hardcoded base set. Built-in transformers
(Values/Messages/Subgraph) migrated to the new scheme; raw channels
like `custom` / `updates` / `checkpoints` / `tasks` / `debug` are
opt-in via a transformer that declares them.

Renames `StreamingHandler` → `GraphStreamer` (and file/test) and makes
it subclassable:

- `builtin_factories: ClassVar[tuple[TransformerFactory, ...]]` — extend
  to bundle default transformers (an `AgentStreamer` appends
  `ToolCallTransformer` here).
- `_make_run_stream` / `_make_async_run_stream` — override to return a
  `GraphRunStream` / `AsyncGraphRunStream` subclass with typed
  accessors over the extra projections.

Drops the now-redundant `values_transformer` arg from `GraphRunStream` /
`AsyncGraphRunStream` constructors — `output` / `interrupted` /
`interrupts` resolve the transformer lazily off the mux via a shared
`BaseRunStream._values_transformer` property.
2026-04-20 12:13:08 -04:00
..