Fork the run from an explicit checkpoint instead of the thread's
latest. Ergonomic alias the SDK folds into
config.configurable.checkpoint_id before dispatching the run, so
the server receives the fork target via the single legacy-compliant
field (never a top-level forkFrom).
Behaviour when a run is already in-flight on the thread.
"interrupt" (default) — cancel the active run on the server,
keeping the steps it completed, and start the new one."rollback" — like "interrupt", but the server also deletes
the active run and its checkpoints, as if it never ran."enqueue" — do NOT abort the active run; the new submission
lands in StreamController.queueStore and is forwarded
once the current run terminates."reject" — error out client-side when a run is already in
flight.When the thread shows no run in flight, only a strategy passed here is sent, so by default the server queues the new run behind a run this client has not seen.
Per-submit error callback. Invoked when the run errors out —
either before the first event lands (network/dispatch failure)
or mid-stream. Does NOT suppress the error from being written
to RootSnapshot.error; the callback is a local hook for
showing toasts or routing the submission error to a component
state slot, letting the rest of the UI keep using
stream.error for render-level error display.
Per-submit thread-id override. When provided, the controller
rebinds to this thread before dispatching the run; subsequent
submits stick with the new id unless the hook's threadId prop
changes. Useful when you want to start a new thread without
unmounting the component (e.g. "New Chat" buttons).