Skip to content

Display reasoning effort in the web dashboard#160

Open
jrob5756 wants to merge 1 commit intomainfrom
dashboard-reasoning-effort
Open

Display reasoning effort in the web dashboard#160
jrob5756 wants to merge 1 commit intomainfrom
dashboard-reasoning-effort

Conversation

@jrob5756
Copy link
Copy Markdown
Collaborator

@jrob5756 jrob5756 commented May 6, 2026

Problem

The dashboard already streams reasoning content (chain-of-thought shows up as 💭 thinking in the activity stream), but it does not show the configured reasoning effort (low / medium / high / xhigh) for each agent. Users have had to consult the YAML or logs to confirm which tier was applied.

What this changes

Adds a Reasoning row to each agent's metadata grid in the detail panel when reasoning effort is set in YAML. It appears right after Model so they're visually grouped.

Effective value per agent (no source distinction in the UI):

  1. agent.reasoning.effort if set, otherwise
  2. workflow.runtime.default_reasoning_effort if set, otherwise
  3. omitted (MetadataGrid filters null/empty rows automatically)

Implementation

Backend

  • engine/workflow.py — the workflow_started agent payload now includes reasoning_effort. Subworkflows inherit the same emission path via their own engine instance, so a single change covers both top-level and nested workflows.
  • New tests in test_event_emission.py cover per-agent override, workflow-default fallback, and unset (None).

Frontend

  • types/events.tsWorkflowStartedData.agents shape gains reasoning_effort.
  • stores/workflow-store.tsNodeData, IterationSnapshot, and WorkflowAgent types each gain reasoning_effort. The workflow_started handlers (top-level + subworkflow) copy the field onto the node, mirroring the existing model assignment. The agent_started snapshot push also carries it through to per-iteration history.
  • components/detail/MetadataGrid.tsxbuildAgentMetadata renders a Reasoning row right after Model when present.
  • components/detail/AgentDetail.tsx — the current-iteration snapshot spread passes reasoning_effort through so the live and history views match.
  • Static bundle rebuilt (npm run build).

Notes

  • Replays of older event log JSONL files just won't render the row — the field is missing, so MetadataGrid skips it gracefully. No migration needed.
  • Reasoning effort is fixed per workflow run (not per turn), so reusing the same value across iteration history snapshots is correct.

Verification

  • ruff check / ruff format --check — clean
  • Full test suite: 2374 passed / 9 skipped, no regressions
  • Frontend tsc -b && vite build — clean

Closes the second of the two reasoning-display issues uncovered while wiring through the recent reasoning.effort work.

The dashboard already streams reasoning *content* (model chain-of-thought
shows up as 💭 thinking in the activity stream), but it does not show
the configured reasoning *effort* (low / medium / high / xhigh). Users
have had to consult the YAML or logs to confirm which tier was applied.

This change adds a 'Reasoning' row to the agent metadata grid in the
detail panel when reasoning effort is set in YAML.

Effective value per agent (no source distinction in the UI):
- agent.reasoning.effort if set, otherwise
- workflow.runtime.default_reasoning_effort if set, otherwise
- omitted (MetadataGrid filters null/empty rows automatically)

Backend:
- engine/workflow.py: workflow_started agent payload now includes
  'reasoning_effort'. Subworkflows inherit the same emission path
  via their own engine instance, so a single change covers both.
- New test cases in test_event_emission.py cover per-agent override,
  workflow-default fallback, and unset (= None).

Frontend:
- types/events.ts: WorkflowStartedData.agents shape gains
  reasoning_effort.
- stores/workflow-store.ts: NodeData, IterationSnapshot, and
  WorkflowAgent gain reasoning_effort. workflow_started handlers
  (top-level and subworkflow) copy the field onto the node mirroring
  the existing model assignment. agent_started snapshot push also
  carries the field through to per-iteration history.
- components/detail/MetadataGrid.tsx: buildAgentMetadata renders a
  'Reasoning' row right after 'Model' when present.
- components/detail/AgentDetail.tsx: current-iteration snapshot spread
  passes reasoning_effort through so live and history views match.
- Static bundle rebuilt (npm run build).

Verification:
- ruff check / format clean
- Full test suite: 2374 passed / 9 skipped (no regressions)
- Frontend build clean (TypeScript + Vite)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant