fix(model-metadata): skip OpenRouter for known providers, add kimi/moonshot to PROVIDER_TO_MODELS_DEV

Based on PR #23950 by @nicoechaniz.

- Add "kimi" and "moonshot" to PROVIDER_TO_MODELS_DEV → kimi-for-coding
- Gate OpenRouter metadata step behind "if not effective_provider":
  known providers should not be overridden by community-maintained OR data
- Keep the targeted Kimi-family 32k guard as a secondary safety net
  inside the OR gate (for unknown providers with Kimi models)

Co-authored-by: nicoechaniz <nicoechaniz@altermundi.net>
This commit is contained in:
nicoechaniz 2026-05-12 01:38:43 +05:30 committed by kshitij
parent 91eef6255e
commit e2b713cced
2 changed files with 29 additions and 21 deletions

View file

@ -1566,7 +1566,11 @@ def get_model_context_length(
if ctx: if ctx:
return ctx return ctx
# 6. OpenRouter live API metadata (provider-unaware fallback) # 6. OpenRouter live API metadata — provider-unaware fallback.
# Only consulted when the provider is unknown (no effective_provider),
# because OpenRouter data is community-maintained and can be incorrect
# for models that belong to known providers with curated defaults.
if not effective_provider:
metadata = fetch_model_metadata() metadata = fetch_model_metadata()
if model in metadata: if model in metadata:
or_ctx = metadata[model].get("context_length", DEFAULT_FALLBACK_CONTEXT) or_ctx = metadata[model].get("context_length", DEFAULT_FALLBACK_CONTEXT)
@ -1588,6 +1592,8 @@ def get_model_context_length(
else: else:
return or_ctx return or_ctx
# 7. (reserved)
# 8. Hardcoded defaults (fuzzy match — longest key first for specificity) # 8. Hardcoded defaults (fuzzy match — longest key first for specificity)
# Only check `default_model in model` (is the key a substring of the input). # Only check `default_model in model` (is the key a substring of the input).
# The reverse (`model in default_model`) causes shorter names like # The reverse (`model in default_model`) causes shorter names like

View file

@ -145,7 +145,9 @@ PROVIDER_TO_MODELS_DEV: Dict[str, str] = {
"openai": "openai", "openai": "openai",
"openai-codex": "openai", "openai-codex": "openai",
"zai": "zai", "zai": "zai",
"kimi": "kimi-for-coding",
"kimi-coding": "kimi-for-coding", "kimi-coding": "kimi-for-coding",
"moonshot": "kimi-for-coding",
"stepfun": "stepfun", "stepfun": "stepfun",
"kimi-coding-cn": "kimi-for-coding", "kimi-coding-cn": "kimi-for-coding",
"minimax": "minimax", "minimax": "minimax",