Open
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
Reasoningrow to each agent's metadata grid in the detail panel when reasoning effort is set in YAML. It appears right afterModelso they're visually grouped.Effective value per agent (no source distinction in the UI):
agent.reasoning.effortif set, otherwiseworkflow.runtime.default_reasoning_effortif set, otherwiseMetadataGridfilters null/empty rows automatically)Implementation
Backend
engine/workflow.py— theworkflow_startedagent payload now includesreasoning_effort. Subworkflows inherit the same emission path via their own engine instance, so a single change covers both top-level and nested workflows.test_event_emission.pycover per-agent override, workflow-default fallback, and unset (None).Frontend
types/events.ts—WorkflowStartedData.agentsshape gainsreasoning_effort.stores/workflow-store.ts—NodeData,IterationSnapshot, andWorkflowAgenttypes each gainreasoning_effort. Theworkflow_startedhandlers (top-level + subworkflow) copy the field onto the node, mirroring the existingmodelassignment. Theagent_startedsnapshot push also carries it through to per-iteration history.components/detail/MetadataGrid.tsx—buildAgentMetadatarenders aReasoningrow right afterModelwhen present.components/detail/AgentDetail.tsx— the current-iteration snapshot spread passesreasoning_effortthrough so the live and history views match.npm run build).Notes
MetadataGridskips it gracefully. No migration needed.Verification
ruff check/ruff format --check— cleantsc -b && vite build— cleanCloses the second of the two reasoning-display issues uncovered while wiring through the recent
reasoning.effortwork.