Skip to content

feat(web): surface orchestration agents in the timeline - #4664

Open
shivamhwp wants to merge 2 commits into
t3code/codex-turn-mappingfrom
subagent-obs/05-thread-visibility
Open

feat(web): surface orchestration agents in the timeline#4664
shivamhwp wants to merge 2 commits into
t3code/codex-turn-mappingfrom
subagent-obs/05-thread-visibility

Conversation

@shivamhwp

@shivamhwp shivamhwp commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

Orchestrator V2 already projects native subagents, and the existing Agents panel already owns their live detail. The remaining problem is presentation: chat repeats one lifecycle row per agent, duplicating the roster and stretching the turn.

This PR keeps the existing orchestration semantics and:

  • collapses only local subagents from the same run into one compact timeline action;
  • derives the visible count and aggregate state from existing projected item statuses;
  • keeps partial failures visible and destructive while sibling agents are still working;
  • opens the existing Agents panel for names, status, duration, output, and hierarchy;
  • preserves inherited fork projections as lifecycle rows so they keep their source-thread context;
  • keeps superseded and replacement attempts in separate summary rosters;
  • isolates changing agent summaries from unrelated virtualized timeline rows.

There are no server, contract, persistence, provider-adapter, recovery, client-runtime, or mobile behavior changes.

Screenshots

Before · individual agent rows After · summaries and Agents panel
Isolated UI fixture using the existing individual-row fallback PR 4664 at 8513f93ad: grouped summaries and the existing Agents panel
Narrow timeline Narrow Agents panel
Grouped agent statuses at a 390-pixel browser width Existing Agents panel at a 390-pixel browser width

Verification

  • 169 focused timeline tests pass across two files.
  • Web typecheck passes.
  • The changed timeline files pass formatting, lint, and whitespace checks.
  • Render coverage confirms local agents collapse to one summary row while inherited rows and separate attempts remain independent.
  • The summary exposes working, idle, failed, stopped, and completed states and opens the existing Agents panel.

Built and tested with GPT-5.6-Sol in the Codex harness through T3 Code.


Note

Low Risk
UI-only timeline presentation and row derivation; no auth, API, or persistence changes, with a safe fallback when the Agents opener is omitted.

Overview
Local subagent events in the chat timeline are collapsed into one summary row per run (or per attempt / orphan item) instead of repeating a lifecycle card for every agent, while inherited fork projections still render as normal event rows.

deriveMessagesTimelineRows gains optional summarizeSubagents and builds agent-spawn rows with aggregate working, idle, failed, and stopped counts; non-representative entries in a group are dropped from the list. Summarization turns on only when MessagesTimeline receives onOpenAgentsChatView wires that to the existing Agents panel opener.

The new AgentSpawnCtaRow is a single clickable control (“Kicked off N agents…”, failure styling when needed, Open Agents / View) so roster detail stays in the Agents panel. Without onOpenAgents, behavior stays the old per-event rows. Stable row comparison and tests cover grouping, idle vs completed, superseded attempts, and cache refresh when agent status changes.

Reviewed by Cursor Bugbot for commit a61796e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add grouped agent-spawn summary rows to MessagesTimeline timeline

  • ChatView passes its existing Agents-surface opener to MessagesTimeline via a new optional callback prop, enabling subagent summarization only when the callback is present
  • deriveAgentSpawnSummaries in MessagesTimeline.logic.ts aggregates local subagent events into per-run, per-attempt, or per-item groups, suppressing later entries in each group and exposing working, idle, failed, and stopped counts
  • The new AgentSpawnCtaRow component renders each summary as a clickable control showing total and status counts; active groups offer "Open Agents" and settled groups offer "View", with destructive styling for failures
  • Inherited entries, non-subagent events, and entries without a summary remain ordinary event rows
  • Behavioral Change: MessagesTimeline now displays grouped summary rows instead of individual local subagent events when the Agents opener is provided; without it, rendering is unchanged. The new agent-spawn variant in MessagesTimelineRow must be handled by any consumer of that union

Macroscope summarized 62d1993.

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Team

Run ID: 606ccf48-8344-45dd-ab00-72d4e58d33f9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch subagent-obs/05-thread-visibility

Warning

Your free Security trial is over. An organization admin can upgrade to Advanced for continuous pull request security review or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Jul 27, 2026
@shivamhwp
shivamhwp force-pushed the subagent-obs/04-agents-panel branch from 940e8fb to c3a50f8 Compare July 27, 2026 20:20
@shivamhwp
shivamhwp force-pushed the subagent-obs/05-thread-visibility branch from d2ef6c7 to adb1e9b Compare July 27, 2026 20:20
@shivamhwp
shivamhwp force-pushed the subagent-obs/04-agents-panel branch from c3a50f8 to 8c6a796 Compare July 27, 2026 20:52
@shivamhwp
shivamhwp force-pushed the subagent-obs/05-thread-visibility branch from adb1e9b to 39912b0 Compare July 27, 2026 20:52
Comment thread apps/web/src/components/chat/ThreadRelationshipsControl.tsx
@shivamhwp
shivamhwp force-pushed the subagent-obs/04-agents-panel branch from 8c6a796 to 103b937 Compare July 27, 2026 23:03
@shivamhwp
shivamhwp force-pushed the subagent-obs/05-thread-visibility branch from 39912b0 to 6bc3a8d Compare July 27, 2026 23:03
@shivamhwp
shivamhwp force-pushed the subagent-obs/04-agents-panel branch from 103b937 to 31adb36 Compare July 28, 2026 15:31
@shivamhwp
shivamhwp force-pushed the subagent-obs/05-thread-visibility branch from 6bc3a8d to 05fe44c Compare July 28, 2026 15:31
@shivamhwp
shivamhwp force-pushed the subagent-obs/04-agents-panel branch from 31adb36 to b270c47 Compare July 28, 2026 19:27
@shivamhwp
shivamhwp force-pushed the subagent-obs/05-thread-visibility branch from 05fe44c to 7458298 Compare July 28, 2026 19:27
@shivamhwp
shivamhwp force-pushed the subagent-obs/04-agents-panel branch from b270c47 to daf1a88 Compare July 28, 2026 19:46
@shivamhwp
shivamhwp force-pushed the subagent-obs/05-thread-visibility branch from 7458298 to 4daeac4 Compare July 28, 2026 19:46
@shivamhwp
shivamhwp force-pushed the subagent-obs/04-agents-panel branch from daf1a88 to 1dce464 Compare July 28, 2026 20:26
@shivamhwp
shivamhwp force-pushed the subagent-obs/05-thread-visibility branch from 4daeac4 to 095cab7 Compare July 28, 2026 20:26
@shivamhwp
shivamhwp force-pushed the subagent-obs/04-agents-panel branch from 1dce464 to 4c169ed Compare July 29, 2026 01:19
@shivamhwp
shivamhwp force-pushed the subagent-obs/05-thread-visibility branch from 095cab7 to 1d37a6f Compare July 29, 2026 01:19
@shivamhwp
shivamhwp force-pushed the subagent-obs/04-agents-panel branch from 4c169ed to 70d5111 Compare July 29, 2026 01:24
@shivamhwp
shivamhwp force-pushed the subagent-obs/05-thread-visibility branch from 1d37a6f to 6cf67a2 Compare July 29, 2026 01:25
@shivamhwp
shivamhwp force-pushed the subagent-obs/04-agents-panel branch from 70d5111 to c78d0ff Compare July 30, 2026 00:00
@shivamhwp
shivamhwp force-pushed the subagent-obs/05-thread-visibility branch from 6cf67a2 to 5e3c535 Compare July 30, 2026 00:00
@shivamhwp
shivamhwp force-pushed the subagent-obs/04-agents-panel branch from c78d0ff to a997806 Compare July 30, 2026 00:45
@shivamhwp
shivamhwp force-pushed the subagent-obs/05-thread-visibility branch from 5e3c535 to 2430736 Compare July 30, 2026 00:45
@shivamhwp
shivamhwp marked this pull request as ready for review July 30, 2026 20:04
Comment thread apps/web/src/state/entities.ts Outdated

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the new Agents CTA row in MessagesTimeline.tsx: its trailing metadata group can't shrink, so a provider-supplied workflow phase title overflows the row on narrow chat columns. Details inline.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/components/chat/MessagesTimeline.tsx Outdated
Comment thread apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts Outdated

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale Bugbot comment from a previous run.

Comment thread apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts Outdated
@juliusmarminge
juliusmarminge force-pushed the t3code/codex-turn-mapping branch 9 times, most recently from c01ff20 to 9d2539a Compare August 30, 2026 19:57
@shivamhwp
shivamhwp force-pushed the subagent-obs/05-thread-visibility branch from 5f84c34 to 1122085 Compare September 1, 2026 03:43
@macroscopeapp

macroscopeapp Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Macroscope has since reviewed this pull request. An earlier review was skipped by a cost limit; a review has now completed, so that notice no longer applies.

@shivamhwp
shivamhwp force-pushed the subagent-obs/05-thread-visibility branch from 1122085 to 014efe5 Compare September 1, 2026 04:32
@github-actions github-actions Bot added size:L 100-499 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Sep 1, 2026
@shivamhwp shivamhwp changed the title feat(orchestration-v2): add native subagent and workflow observability feat(web): surface orchestration agents in the timeline Sep 1, 2026
Comment thread apps/web/src/components/chat/MessagesTimeline.tsx Outdated
Comment thread apps/web/src/components/chat/MessagesTimeline.tsx Outdated
Comment thread apps/web/src/components/chat/MessagesTimeline.logic.ts Outdated
Comment thread apps/web/src/components/chat/MessagesTimeline.tsx Outdated
@juliusmarminge
juliusmarminge force-pushed the t3code/codex-turn-mapping branch from a6e0049 to 50a57b6 Compare September 1, 2026 05:36
@shivamhwp
shivamhwp force-pushed the subagent-obs/05-thread-visibility branch from 81215e7 to 9ed33ba Compare September 1, 2026 05:44
Comment thread apps/web/src/components/chat/MessagesTimeline.tsx Outdated
Comment thread apps/web/src/components/chat/MessagesTimeline.logic.ts

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 6f53d1a. Configure here.

Comment thread apps/web/src/components/chat/MessagesTimeline.logic.ts
@cursor

cursor Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant