Skip to content

feat: orchestrator and subagent effort, default and per chat - #49

Merged
collissimo merged 1 commit into
collin/mainfrom
t3/orchestrator-effort
Nov 13, 2026
Merged

collissimo merged 1 commit into
collin/mainfrom
t3/orchestrator-effort

Conversation

@collissimo

Copy link
Copy Markdown
Owner

Orchestrator mode had no way to choose reasoning effort: a new orchestrator took its model's default, and its subagents took whatever the project's default model carried. An orchestrator also refused to do a task itself when asked.

  • Settings → Threads → Orchestrator: "Orchestrator effort" (what a new orchestrator starts on) and "Subagent effort" (what its subagents start on). A running orchestrator's own effort is still changed in its composer.
  • Per chat: the orchestrator icon beside the chat title is now a menu, "Subagent effort in this chat". It overrides the default for that chat; "Default" follows Settings.
  • The server applies an effort only when the worker's model offers it, so a value from another provider never reaches a model that lacks it. Prompt-only values such as ultrathink are not offered.
  • Orchestrator instructions: when the user tells the orchestrator to do a task itself, it does, for that task.

REASONING_EFFORT_OPTION_IDS moved from client-runtime to @t3tools/shared/model so the server can use it.

Checked: the unit test in packages/shared/src/orchestratorMode.test.ts covers default, per-chat override, an effort the model lacks, and inheriting the orchestrator's model; in a dev server both settings saved and the chat menu saved its per-chat value. check:changed passes except the React Compiler coverage test for DictationHistoryDialog.tsx, which this PR does not touch.

Not checked: a real delegated subagent starting on the chosen effort end to end, the instruction change against a model (no eval covers orchestrator mode yet), mobile (orchestrator mode has no mobile UI). No screenshots attached.

Claude Fable 5.2, Claude Code

🤖 Generated with Claude Code

Settings > Threads gets an Orchestrator section: the effort new orchestrators start on and the
effort their subagents start on. The orchestrator icon in a chat's header opens a menu that sets
the subagent effort for that chat alone. An effort a model does not offer is ignored.

An orchestrator now does a task itself when the user tells it to.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
@collissimo
collissimo merged commit 43d9d0d into collin/main Nov 13, 2026
1 check passed
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