Skip to content

feat(models): prompt for reasoning level on DEFAULT assignments for all providers - #4387

Closed
jason931225 wants to merge 1 commit into
Yeachan-Heo:mainfrom
jason931225:feat/default-role-thinking-choice
Closed

feat(models): prompt for reasoning level on DEFAULT assignments for all providers#4387
jason931225 wants to merge 1 commit into
Yeachan-Heo:mainfrom
jason931225:feat/default-role-thinking-choice

Conversation

@jason931225

Copy link
Copy Markdown

Problem

The model selector's reasoning menu only opened for the DEFAULT target when the model's provider was openai/openai-codex (requiresExplicitThinkingChoice in model-selector.ts). Picking an Anthropic reasoning model (e.g. claude-fable-5) for DEFAULT committed immediately with a bare selector:

  • No way to pin an explicit effort for DEFAULT from the picker — the assignment silently inherited defaultThinkingLevel and rendered as (inherit).
  • Worse, re-picking the same model stripped a hand-configured :xhigh suffix from modelRoles.default, so a carefully set default effort silently reverted.

Role-agent targets (executor/architect/planner/critic) already prompt for every reasoning model; DEFAULT was the odd one out.

Change

requiresExplicitThinkingChoice now returns true for the DEFAULT target whenever the model is reasoning-capable, regardless of provider. Everything downstream already works unchanged:

  • the selector-controller composes the :level suffix into modelRoles.default and applies session.setThinkingLevel for default assignments,
  • session startup honors an explicit suffix on the remembered default (explicitThinkingLevel), so the pinned effort survives restarts.

Non-reasoning models and temporary (role-less) model switches keep their current no-prompt behavior.

Tests

  • model-selector-role-badge-thinking.test.ts:
    • new: DEFAULT assignment of an Anthropic reasoning model opens "Reasoning for Default", picking xhigh emits thinkingLevel: xhigh
    • new: non-reasoning Anthropic model still assigns directly without a prompt
    • updated: canonical-actions test now walks through the reasoning menu (seeded from the existing DEFAULT (low) badge) instead of expecting an instant commit
  • model-selector-batch-thinking.test.ts: comment updated — Anthropic reasoning models now require an explicit choice on DEFAULT too

bun test on the touched suites: 108 pass / 0 fail (role-badge-thinking, batch-thinking, action-menu-role-binding, controller-batch, profiles, profiles-redteam, agent-session-role-thinking, role-thinking-helper-propagation, status-line-thinking). Biome and tsc --noEmit clean on touched files.

…ll providers

The model selector only opened the reasoning menu for the DEFAULT target
when the model's provider was openai/openai-codex. Assigning an Anthropic
reasoning model (e.g. claude-fable-5) to DEFAULT committed immediately
with a bare selector, so there was no way to pin an explicit effort from
the picker: the assignment silently inherited defaultThinkingLevel and
re-picking stripped any hand-configured :level suffix from
modelRoles.default.

requiresExplicitThinkingChoice now returns true for the DEFAULT target
whenever the model is reasoning-capable, matching the existing role-agent
behavior. The selector-controller already composes the :level suffix and
applies session.setThinkingLevel for default assignments, and session
startup already honors an explicit suffix on the remembered default
(explicitThinkingLevel), so the choice persists across restarts with no
further changes. Non-reasoning models and temporary (role-less) model
switches keep their current no-prompt behavior.
@jason931225
jason931225 marked this pull request as draft August 12, 2026 19:42
@jason931225
jason931225 deleted the feat/default-role-thinking-choice branch August 12, 2026 20:07
@Yeachan-Heo

Copy link
Copy Markdown
Owner

Superseded by dev-targeted PR #4390, which preserves @jason931225 credit and cherry-picks contributor commit 97bd828475095da585754622d4f2561f5c6ecc88 onto current dev. Exact head f8953e4563f382c8bd169bcfd175c43ec185f486 passed exact-head CI and independent review, then merged as 30628db609a99f3ae1f49cef6a10d2916e73ddf1. Closing this draft because it incorrectly targets main.

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.

2 participants