Skip to content

feat(investigations): Draw the status block as a thinking block with the agent's reasoning - #128436

Merged
billyvg merged 8 commits into
masterfrom
billyvg/feat/investigations-status-thinking-reasoning
Oct 28, 2026
Merged

billyvg merged 8 commits into
masterfrom
billyvg/feat/investigations-status-thinking-reasoning

Conversation

@billyvg

@billyvg billyvg commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

Why?

While an investigation runs, the status block at the top showed its tool calls as a bare toggle that read as just a list of calls. It should look and behave like the thinking block the Seer agent (Explorer) shows, including the agent's reasoning between the calls. Seer is starting to send that reasoning as a thoughts list beside each phase's tool activity.

How?

A running status block now renders the shared ThinkingBlock: the latest tool call is its live title, every call for the current phase is listed inside in run order, and the run's active time ticks on the right.

Each phase's thoughts are put back between its calls, before the call each one names, and render as reasoning prose with the same styling as the Seer agent's thinking block. The block's title stays the latest call and never a thought, as in the agent's. When running calls are moved last across parallel hypotheses, a thought moves with the call it led to, so the two are never parted.

Screenshots

These predate the reasoning, so they show calls only.

With tool calls (latest call is the title, calls listed in run order, failures flagged):

Running status block with tool calls in a thinking block

Before any tool call has landed, the block reads "Thinking", like the agent's:

Running status blocks before any tool call

Narrow container: the status title wraps, the thinking title truncates, the clock holds the right edge:

Status block in a narrow container

The shared ThinkingBlock story, for comparison:

The shared ThinkingBlock, for comparison

Decisions

Generated with Claude Code

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

…g block

The running status block listed tool calls as a bare toggle that read as a
list of calls, unlike the thinking block the Seer agent shows. Reuse the
shared ThinkingBlock so it looks and behaves the same: the latest call is
the live title, every call for the phase is listed in run order, and the
run's active time ticks on the right.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@billyvg
billyvg force-pushed the billyvg/feat/investigations-status-thinking-block branch from 667d0ba to 64c084a Compare October 26, 2026 23:53
@billyvg
billyvg force-pushed the billyvg/feat/investigations-status-thinking-reasoning branch from feafe7e to de403cd Compare October 26, 2026 23:53
billyvg and others added 4 commits October 26, 2026 20:10
… block

The status block's own Seer icon already spins while the run works, so the
thinking block's spinning Seer beside it showed one loading state twice. Add a
showIcon prop to ThinkingBlock and turn it off in the status block; the
disclosure's chevron leads the title instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Seer now sends the reasoning behind each step as "thought" entries in a
phase's tool activity. Draw them in the status block's thinking block as
prose between the calls, in run order, using the same styling as the
Seer agent's thinking block. Reasoning never becomes the block's title,
which stays the latest call, as in the agent's.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Seer now sends the reasoning as a thoughts list beside each phase's tool
activity, each thought naming the call it came before, instead of as a
new tool activity kind. Put each phase's thoughts back between its calls
before the lists are joined, and keep a thought sorted with the call it
led to when running calls are moved last, so the two are never parted.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Reasoning no call has followed yet sorted with the running calls, so with
hypotheses in parallel one hypothesis's reasoning could land just before
another's running call and read as what led to it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@billyvg
billyvg force-pushed the billyvg/feat/investigations-status-thinking-reasoning branch from de403cd to 70c286a Compare October 27, 2026 00:10
billyvg added a commit that referenced this pull request Oct 27, 2026
…ty (#128435)

### Why?

While an investigation runs, its status block shows the tool calls
behind the current phase but not the agent's reasoning between them,
which the Seer agent shows in its own thinking block. Seer is starting
to send that reasoning.

### How?

Each phase accepts an optional `thoughts` list beside its tool activity
(`currentBlockThoughts` for the report). A thought holds the reasoning
text, capped at 1,500 characters, and the ID of the call it came before,
so the status block can put it back between the calls.

### Decisions

- The reasoning gets its own list rather than a new tool activity kind,
which keeps this backwards compatible in both directions. The new fields
are optional, and Sentry already passes unknown fields through, so Seer
can start sending them before or after this deploys. No feature flag or
deploy order is needed.
- The frontend that renders the reasoning:
  - #128436

<sub>Generated with Claude Code</sub>

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…igations-status-thinking-block

# Conflicts:
#	static/app/views/investigations/detail/runTimer.tsx
#	static/app/views/investigations/statusBlock/getSeerStatusBlock.tsx
… billyvg/feat/investigations-status-thinking-reasoning
@billyvg
billyvg changed the base branch from billyvg/feat/investigations-status-thinking-block to master October 27, 2026 22:20
@billyvg
billyvg requested review from a team as code owners October 27, 2026 22:20
@billyvg billyvg changed the title feat(investigations): Show the agent's reasoning in the status block feat(investigations): Draw the status block as a thinking block with the agent's reasoning Oct 27, 2026

@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 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 2996dce. Configure here.

The status block read the run's active time from the run timer, and the
run timer read whether only the next step is pending from the status
block, so each imported the other. Both now read it from runState, which
depends only on the projection's types, so the cycle is gone and the
status block no longer depends on a detail-page module.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@billyvg
billyvg merged commit c7210bb into master Oct 28, 2026
76 checks passed
@billyvg
billyvg deleted the billyvg/feat/investigations-status-thinking-reasoning branch October 28, 2026 13:52

This branch was successfully deployed

1 active deployment
Preview — 7621469e Deployed Oct 27, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Scope: Frontend Automatically applied to PRs that change frontend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants