- Omit temperature for OpenRouter's namespaced OpenAI reasoning models
(openai/o1, openai/o1-mini, openai/o3-mini, openai/o1:online).
- Match o1/o3 only as the bare family name or with a "-" variant, so
o123 and o3custom keep their temperature.
- Validate the caller's request before clearing temperature, so a
negative temperature is still a validation error, not a sent request.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
internal/ai/llm/presets defines the anthropic, openai, openrouter, ollama
and openai_compatible presets (base URL, adapter, key policy, headers,
structured output modes and model quirks) and FromSettings, which turns
llm.Settings plus the decrypted key into a ready llm.Provider or a typed
configuration error from package llm.
Temperature is omitted for model ids matching ^o1 or ^o3, listed once in
TemperatureRejectingModels.
Maestro task: 4d90a725-5a7c-4bee-bbe4-d036cfb69c5b
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>