Problem
Reasoning-capable models expose an effort level, but ComposerModelSelector has nowhere to surface it. Consumers wanting to offer the setting have to render a second, separate control next to the model pill — which is wrong on two counts: effort is meaningless without a model, and the valid levels depend on which model is selected.
Why it belongs in the component
The two settings are coupled. A separate control cannot know which levels are valid without duplicating model→provider knowledge that the picker already has in view.
Constraint
Effort scales are provider-specific and not interchangeable: OpenAI accepts minimal|low|medium|high, Anthropic also accepts xhigh|max. A value valid for one provider is a 400 on the other, so the component must not bake in either scale — the caller supplies the levels.
Acceptance criteria
Resolved by PR #374.
Problem
Reasoning-capable models expose an effort level, but
ComposerModelSelectorhas nowhere to surface it. Consumers wanting to offer the setting have to render a second, separate control next to the model pill — which is wrong on two counts: effort is meaningless without a model, and the valid levels depend on which model is selected.Why it belongs in the component
The two settings are coupled. A separate control cannot know which levels are valid without duplicating model→provider knowledge that the picker already has in view.
Constraint
Effort scales are provider-specific and not interchangeable: OpenAI accepts
minimal|low|medium|high, Anthropic also acceptsxhigh|max. A value valid for one provider is a 400 on the other, so the component must not bake in either scale — the caller supplies the levels.Acceptance criteria
Resolved by PR #374.