OpenRouter's /v1/models entries advertise reasoning capability (supported_parameters + reasoning.mandatory/supported_efforts). Use that metadata as the primary gate in _supports_reasoning_extra_body instead of the hand-maintained vendor-prefix allowlist, which went stale one vendor at a time (nvidia/ missing -> #75386). Also clamp the requested effort to the nearest LOWER catalog-supported level in the OpenRouter profile so ultra/max against a high-capped route no longer 4xxes. Cache-only on the hot path: capabilities parse for free out of the existing fetch_openrouter_models() payload, a background warmer covers cold starts, and unknown models/offline catalogs fall back to the static prefix list unchanged. |
||
|---|---|---|
| .. | ||
| browser | ||
| context_engine | ||
| cron_providers | ||
| dashboard_auth | ||
| disk-cleanup | ||
| google_meet | ||
| hermes-achievements | ||
| image_gen | ||
| kanban | ||
| memory | ||
| model-providers | ||
| observability | ||
| platforms | ||
| security-guidance | ||
| spotify | ||
| teams_pipeline | ||
| video_gen | ||
| web | ||
| __init__.py | ||
| plugin_utils.py | ||