You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Drain the mid-run queue and settle the turn on inference.done
reactor.done fires once, at agent shutdown, never between turns, and
connector.reply never comes for a workflow/goal-governor cycle that
keeps self-continuing. Both are dead ends a text-only or tool-only
reply can hit, and both left session state stuck once nothing else
arrived: a queued message with nowhere to drain to, `run` stuck busy
so every later Enter queued instead of sending, and the phase ramp
stuck saying "working" forever.
inference.done is the one turn boundary every reactor cycle actually
guarantees. Settle isProcessing there too, using the same criterion
connector.reply already uses (no tool calls left outstanding, which
are already known by then since tool-call events stream in before
inference.done fires) -- reusing that path fixes `run`, the ramp, and
the queue drain together, with no new event type needed. When tool
calls are still outstanding the turn continues, so only the queued
messages waiting on that boundary are drained.
Also replace the queued-item transcript row's internal-state text
("queue +1 -> pending N", with the word "queue" duplicated on the
same row) with the queued message's own text and attachments, so the
depth reads once, in the notice row, and each item is identifiable.
Cancelling a queued message before it sends is deliberately out of
scope here; it needs its own transcript-row handling and its own
review, not a rider on this fix.
0 commit comments