diff --git a/composer/input/types.py b/composer/input/types.py index a7ab4403..69a4781c 100644 --- a/composer/input/types.py +++ b/composer/input/types.py @@ -130,15 +130,15 @@ class _ModelOptionsCommon(Protocol): class ModelOptions(_ModelOptionsCommon, Protocol): model: Annotated[str, Arg( - help="Model to use for code generation (default: {default})", default="claude-opus-4-6" + help="Model to use for code generation (default: {default})", default="claude-opus-4-8" )] class ExtendedModelOptions(_ModelOptionsCommon, Protocol): heavy_model: Annotated[str, Arg( - help="Model to use for complex tasks (default: {default})", default="claude-opus-4-6" + help="Model to use for complex tasks (default: {default})", default="claude-opus-4-8" )] lite_model: Annotated[str, Arg( - help="Model to use for simpler tasks(default: {default})", default="claude-sonnet-4-6" + help="Model to use for simpler tasks(default: {default})", default="claude-sonnet-5" )] class UploadPaths(Protocol): diff --git a/composer/ui/message_renderer.py b/composer/ui/message_renderer.py index f4d4d0f0..62ec653c 100644 --- a/composer/ui/message_renderer.py +++ b/composer/ui/message_renderer.py @@ -89,15 +89,17 @@ class _ModelPricing: # Sources should be re-checked when new model families ship. _PRICING: list[tuple[str, _ModelPricing]] = [ # ---- Anthropic ---- - # claude-opus-4.5 / 4.6 / 4.7 share a rate card; older 4 / 4.1 + # claude-opus-4.5 / 4.6 / 4.7 / 4.8 share a rate card; older 4 / 4.1 # are pricier. Matching by prefix-of-prefix so "claude-opus-4-7" # and "claude-opus-4-7-20260301" both hit the right entry. + ("claude-opus-4-8", _ModelPricing(short=_PriceTier(5.00, 25.00, 0.50, 6.25))), ("claude-opus-4-7", _ModelPricing(short=_PriceTier(5.00, 25.00, 0.50, 6.25))), ("claude-opus-4-6", _ModelPricing(short=_PriceTier(5.00, 25.00, 0.50, 6.25))), ("claude-opus-4-5", _ModelPricing(short=_PriceTier(5.00, 25.00, 0.50, 6.25))), ("claude-opus-4-1", _ModelPricing(short=_PriceTier(15.00, 75.00, 1.50, 18.75))), ("claude-opus-4", _ModelPricing(short=_PriceTier(15.00, 75.00, 1.50, 18.75))), + ("claude-sonnet-5", _ModelPricing(short=_PriceTier(3.00, 15.00, 0.30, 3.75))), ("claude-sonnet-4-6", _ModelPricing(short=_PriceTier(3.00, 15.00, 0.30, 3.75))), ("claude-sonnet-4-5", _ModelPricing(short=_PriceTier(3.00, 15.00, 0.30, 3.75))), ("claude-sonnet-4", _ModelPricing(short=_PriceTier(3.00, 15.00, 0.30, 3.75))), @@ -340,7 +342,7 @@ def classify_human(self, m: HumanMessage) -> tuple[str, bool]: if tag is not None: return _HUMAN_TAG_DISPLAY.get(tag, ("User input", True)) return ("User input", True) - + def get_flow_target(self, root: VerticalScroll, path: list[str]) -> VerticalScroll: # Walk from most specific to least specific: the current flow's container # may not exist yet (render_start creates it), so fall back to the parent's.