mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-10-26 21:26:39 +00:00
* fix(runtime): defer host cancellation through the whole terminal finalization Cancelling run_agent() during an early terminal-finalization await (e.g. the delivery-receipt write) escaped the surrounding `except Exception` guards, because asyncio.CancelledError derives from BaseException. The cancellation then skipped the remaining terminal tail: terminal status persistence, the completion hook, task-stop notification, and the stream END marker. Add `_await_despite_host_cancellation`, which shields each terminal step so the started awaitable keeps running under host cancellation, defers the interruption (uncancelling the task), and re-awaits the shield until the step completes. Apply it to the durable finalization stages; the original interruption is still re-raised after publish_end. * fix(runtime): bound terminal deferral and shield abort-path cancellation * fix(runtime): retain owned finalization through cancellation --------- Co-authored-by: Willem Jiang <willem.jiang@gmail.com>