fix(config): accept modelPresets root alias

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Xubin Ren 2026-05-12 10:04:14 +00:00 committed by Xubin Ren
parent bcc4b97183
commit 1d14c2ba40
2 changed files with 18 additions and 1 deletions

View File

@ -274,7 +274,10 @@ class Config(BaseSettings):
api: ApiConfig = Field(default_factory=ApiConfig)
gateway: GatewayConfig = Field(default_factory=GatewayConfig)
tools: ToolsConfig = Field(default_factory=ToolsConfig)
model_presets: dict[str, ModelPresetConfig] = Field(default_factory=dict)
model_presets: dict[str, ModelPresetConfig] = Field(
default_factory=dict,
validation_alias=AliasChoices("modelPresets", "model_presets"),
)
@model_validator(mode="after")
def _validate_model_preset(self) -> "Config":

View File

@ -39,6 +39,20 @@ def test_resolve_preset_returns_active_preset() -> None:
assert resolved.reasoning_effort == "low"
def test_model_presets_accepts_camel_case_root_key() -> None:
config = Config.model_validate({
"modelPresets": {
"fast": {
"model": "openai/gpt-4.1",
"provider": "openai",
}
},
})
assert config.model_presets["fast"].model == "openai/gpt-4.1"
assert config.model_presets["fast"].provider == "openai"
def test_resolve_preset_can_target_named_preset_without_activating() -> None:
config = Config.model_validate({
"model_presets": {