feat(web): read agent run results from the operations board - #96
Conversation
Dispatching a task from the board produced a run id and nothing else: the drawer showed a status word, no result, and no route to the run detail page that already existed at /agent-runs/<id>. RawTask now models the run object the tasks API already returns, and BoardItem carries its structured output, error, cancellation reason, and output hash. A new AgentRunResult component renders the readable text fields first — summary, headline, rationale, impact, title, the same precedence the handoff summariser uses so a run reads the same way everywhere — and keeps arbitrary agent JSON in a collapsed, character-bounded, scrollable block so it can never stretch the drawer. Failed and cancelled runs show their recorded reason instead. The run row settles in the agent gateway, so board status now prefers the run's own status over the task's copy, and useTasks polls like the other governed views. Run output is framed as evidence to judge, never as an instruction to act on. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 58 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Phase 1 of 6. Closes the loop opened by
9531f9a.You could dispatch a task to an agent and watch it reach
run completed— then nothing. No result rendered anywhere, and nothing in the app linked to/agent-runs/[id], which existed and worked but was orphaned. The only ways to read an answer were Slack or the API.Changes
components/os/agent-run-result.tsx(new) — renders one run's outcome. Narrative fields (summary,headline,rationale,impact,title) surface as text; everything else stays in a collapsed, height-cappedRaw result. Failed and cancelled runs showerror/cancellationReason. Links to/agent-runs/<runId>.task.run.statusovertask.agentRunStatus. The gateway settles the run row, so the task's copy can lag.useTaskspolls at 20s. Without it a dispatched run's result never appeared at all: settlement happens in the gateway, not the browser, and nothing invalidated the query.Field precedence deliberately matches
lib/agent-handoff-domain.ts, so one run reads the same way wherever the OS shows it.Framing
Agent output is rendered as evidence, never instruction — consistent with how this codebase treats connector and agent output everywhere else. The footer says so, and nothing in the panel is actionable.
Arbitrary agent JSON is capped at 20,000 characters inside a
max-h-56scroll region, so a verbose result cannot set the drawer's height.Reviewer notes —
agent-run-view.tsxis fit to link to, but thinVerified before linking: it resolves real data off
agent_runsjoined toagent_definitions, and board run ids resolve there. No placeholders. But:errororcancellationReason— a failed run renders as statusfailedplus "No typed result is available yet". The board drawer now says more about a failure than the run detail page does./api/v1/agent-runs/<id>/timelinedespite the route existing. The link is worded "Open full run", not "timeline", to avoid promising what it doesn't deliver.OpsShelland hand-rolled padding rather thanCompanyOsShell+PageBody, so it looks off from the rest of the OS.Follow-up
components/tasks-view.tsx(legacy) already subscribes to/api/v1/tasks/<id>/eventsover SSE for live settlement. The board polls instead. If sub-second feedback on the board matters, that stream is the existing mechanism to adopt rather than tightening the poll.🤖 Generated with Claude Code