File size: 1,251 Bytes
bae32d1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | """Registry of models approved for recorded cached runs, in dropdown order."""
from __future__ import annotations
from dataclasses import dataclass
@dataclass(frozen=True, slots=True)
class CachedModel:
slug: str
provider_model_id: str
label: str
# Order matters: newest models first, the original baseline last. The UI dropdown
# and the scenario ordering both follow this sequence.
CACHED_MODEL_ORDER: tuple[CachedModel, ...] = (
CachedModel("gpt-5.6-sol", "openai/gpt-5.6-sol", "GPT-5.6 Sol"),
CachedModel("gpt-5.6-terra", "openai/gpt-5.6-terra", "GPT-5.6 Terra"),
CachedModel("gpt-5.6-luna", "openai/gpt-5.6-luna", "GPT-5.6 Luna"),
CachedModel("claude-fable-5", "anthropic/claude-fable-5", "Claude Fable 5"),
CachedModel("claude-sonnet-5", "anthropic/claude-sonnet-5", "Claude Sonnet 5"),
CachedModel("qwen3-32b", "qwen/qwen3-32b", "Qwen3 32B"),
)
BASELINE_MODEL_SLUG = "qwen3-32b"
CACHED_MODEL_BY_SLUG: dict[str, CachedModel] = {
model.slug: model for model in CACHED_MODEL_ORDER
}
def ordered_slugs(available: set[str]) -> list[str]:
"""Return the registry-ordered subset of available slugs, fail-closed."""
return [model.slug for model in CACHED_MODEL_ORDER if model.slug in available]
|