Motivation
Work is dispatched from a channel: you mention an agent, or a trigger fires a
workflow, and from that point the run lives somewhere you cannot see from the
place you started it. WorkflowRunTrace renders under the /workflows route,
and the task counters live in Projects (Work Queue → Tasks, see #6976). The
channel header itself (desktop/src/features/messages/ui/MessageHeader.tsx,
106 lines today) carries no run state at all.
The gap that costs the most is a stalled run. RunStatus is
Running | Completed | Failed (crates/buzz-workflow/src/lib.rs), but a run
that ends in Failed leaves nothing behind in the channel except the agent's
last message. Someone watching the conversation has no signal that the work
stopped, and no way to tell "still thinking" from "died four minutes ago"
without leaving for another route.
This bites hardest on a headless fleet — several agents parked on an always-on
host, driven entirely through channels, where nobody is sitting on the
/workflows page.
Proposed solution
A tab strip (or a collapsible drawer) in the channel header listing the
workflow runs and agent tasks that originated in this channel:
- current status per entry, the step it is on, and when it last moved
- a stalled or failed entry is visually distinct from a running one
- an action on a stalled entry to resume or retry it. I could not find a
resume/retry path in the current tree — rg 'resumeRun|retryRun|rerun'
over desktop/src and crates/buzz-workflow/src returns nothing relevant —
so if that is genuinely absent, the engine-side half is the larger piece of
this issue and could ship separately from the UI.
- a link from an entry to the workflow definition, for the case where the
answer is not "run it again" but "the task was wrong".
Alternatives considered
Additional context
Related, none of them the same request:
Read against 8d2d0ff (desktop/src/features/workflows/ui/WorkflowRunTrace.tsx,
desktop/src/features/messages/ui/MessageHeader.tsx,
crates/buzz-workflow/src/lib.rs).
Motivation
Work is dispatched from a channel: you mention an agent, or a trigger fires a
workflow, and from that point the run lives somewhere you cannot see from the
place you started it.
WorkflowRunTracerenders under the/workflowsroute,and the task counters live in Projects (Work Queue → Tasks, see #6976). The
channel header itself (
desktop/src/features/messages/ui/MessageHeader.tsx,106 lines today) carries no run state at all.
The gap that costs the most is a stalled run.
RunStatusisRunning | Completed | Failed(crates/buzz-workflow/src/lib.rs), but a runthat ends in
Failedleaves nothing behind in the channel except the agent'slast message. Someone watching the conversation has no signal that the work
stopped, and no way to tell "still thinking" from "died four minutes ago"
without leaving for another route.
This bites hardest on a headless fleet — several agents parked on an always-on
host, driven entirely through channels, where nobody is sitting on the
/workflowspage.Proposed solution
A tab strip (or a collapsible drawer) in the channel header listing the
workflow runs and agent tasks that originated in this channel:
resume/retry path in the current tree —
rg 'resumeRun|retryRun|rerun'over
desktop/srcandcrates/buzz-workflow/srcreturns nothing relevant —so if that is genuinely absent, the engine-side half is the larger piece of
this issue and could ship separately from the UI.
answer is not "run it again" but "the task was wrong".
Alternatives considered
/workflows. Works when you are supervising workflows asworkflows; it does not when the workflow is a side effect of a conversation
you are already in.
and lists an in-channel progress surface among its goals. This issue is
deliberately the smaller slice: observability and resume on the engine that
exists today, with no changes to the workflow definition format. If the
maintainers would rather see it land as part of Configurable orchestration workflows (user-defined; agent + human-in-the-loop; progress + artifacts) #3871, closing this in favour
of that one is fine by me.
Additional context
Related, none of them the same request:
Read against
8d2d0ff(desktop/src/features/workflows/ui/WorkflowRunTrace.tsx,desktop/src/features/messages/ui/MessageHeader.tsx,crates/buzz-workflow/src/lib.rs).