@@ -715,6 +715,13 @@ def claude_models(self) -> List[Dict]:
715715 def _get_claude_models(self) -> List[Dict]:
716716 """Get Claude models list - synced with providers/models.py."""
717717 return [
718+ {
719+ "id": "claude-opus-4-6",
720+ "name": "Claude Opus 4.6 (Latest/New)",
721+ "context": 1000000,
722+ "desc": "Latest Claude Opus with 1M context",
723+ "recommended": True,
724+ },
718725 {
719726 "id": "claude-opus-4-5-20251101",
720727 "name": "Claude Opus 4.5",
@@ -753,6 +760,7 @@ def codex_models(self) -> List[Dict]:
753760 def _get_codex_models(self) -> List[Dict]:
754761 """Get Codex/OpenAI models list - updated from models.dev."""
755762 return [
763+ {"id": "gpt-5.3-codex", "name": "GPT-5.3 Codex (Latest/New)", "context": 256000},
756764 {"id": "gpt-5.2", "name": "GPT-5.2 (Latest)", "context": 256000},
757765 {"id": "gpt-5.2-pro", "name": "GPT-5.2 Pro", "context": 256000},
758766 {"id": "gpt-5.2-chat-latest", "name": "GPT-5.2 Chat", "context": 256000},
@@ -777,8 +785,14 @@ def openhands_models(self) -> List[Dict]:
777785 def _get_openhands_models(self) -> List[Dict]:
778786 """Get OpenHands models list - updated from models.dev."""
779787 return [
788+ {"id": "gpt-5.3-codex", "name": "GPT-5.3 Codex (Latest/New)", "context": 256000},
780789 {"id": "gpt-5.2", "name": "GPT-5.2 (Latest)", "context": 256000},
781790 {"id": "gpt-5.2-pro", "name": "GPT-5.2 Pro", "context": 256000},
791+ {
792+ "id": "claude-opus-4-6",
793+ "name": "Claude Opus 4.6 (Latest/New)",
794+ "context": 1000000,
795+ },
782796 {
783797 "id": "claude-opus-4-5-20251101",
784798 "name": "Claude Opus 4.5 (Latest)",
@@ -904,6 +918,13 @@ def _get_openhands_models(self) -> List[Dict]:
904918 # Claude Code models - https://docs.anthropic.com/en/docs/about-claude/models (updated from models.dev)
905919 # Uses claude-code-acp adapter from Zed Industries
906920 self._claude_models = [
921+ {
922+ "id": "claude/claude-opus-4-6",
923+ "name": "Claude Opus 4.6 (Latest/New)",
924+ "free": False,
925+ "recommended": True,
926+ "desc": "Latest Claude Opus model - 1M context",
927+ },
907928 {
908929 "id": "claude/claude-opus-4-5-20251101",
909930 "name": "Claude Opus 4.5",
@@ -941,6 +962,13 @@ def _get_openhands_models(self) -> List[Dict]:
941962 # Codex CLI / OpenAI models - https://platform.openai.com/docs/models (updated from models.dev)
942963 # Uses codex-acp adapter from Zed Industries
943964 self._codex_models = [
965+ {
966+ "id": "codex/gpt-5.3-codex",
967+ "name": "GPT-5.3 Codex (Latest/New)",
968+ "free": False,
969+ "recommended": True,
970+ "desc": "Latest GPT Codex model for coding workflows",
971+ },
944972 {
945973 "id": "codex/gpt-5.2",
946974 "name": "GPT-5.2 (Latest)",
@@ -12490,23 +12518,28 @@ def is_latest_model(model_id: str, info) -> bool:
1249012518 # Generic patterns that indicate latest models
1249112519 latest_indicators = [
1249212520 "latest",
12521+ "new",
1249312522 "preview",
1249412523 "newest",
1249512524 "current",
1249612525 # Version patterns (highest versions)
12526+ "5.3",
1249712527 "5.2",
1249812528 "5.1",
12529+ "4.6",
1249912530 "4.7",
1250012531 "4.5",
1250112532 "3.2",
1250212533 "3.1",
1250312534 "3.0",
1250412535 # Specific latest model patterns by provider
12536+ "gpt-5.3-codex",
1250512537 "gpt-5.2",
1250612538 "gpt-5.1",
1250712539 "gemini-3",
1250812540 "gemini 3",
1250912541 "gemini3",
12542+ "claude-opus-4-6",
1251012543 "claude-opus-4-5",
1251112544 "claude-sonnet-4-5",
1251212545 "claude-haiku-4-5",
@@ -12537,12 +12570,10 @@ def is_latest_model(model_id: str, info) -> bool:
1253712570 ):
1253812571 return True
1253912572
12540- # Check release date - if released in 2025, likely latest
12541- if info.released and info.released.startswith("2025"):
12542- # Prioritize models from late 2025 (newer)
12543- if "-12" in info.released or "-11" in info.released:
12544- return True
12545- # Also include other 2025 models
12573+ # Check release date - if released in 2025+ likely latest
12574+ if info.released and (
12575+ info.released.startswith("2025") or info.released.startswith("2026")
12576+ ):
1254612577 return True
1254712578
1254812579 return False
@@ -12572,8 +12603,10 @@ def get_latest_priority(model_id: str, info) -> int:
1257212603 model_lower = model_id.lower()
1257312604 name_lower = info.name.lower()
1257412605
12575- # Highest priority: Very latest models (2025-12, 2025-11 releases)
12606+ # Highest priority: Very latest models (2026+, then late 2025 releases)
1257612607 if info.released:
12608+ if info.released.startswith("2026"):
12609+ return -11
1257712610 if "-12" in info.released:
1257812611 return -10 # Highest priority
1257912612 elif "-11" in info.released:
@@ -12586,6 +12619,10 @@ def get_latest_priority(model_id: str, info) -> int:
1258612619 # High priority: Latest version indicators
1258712620 # Priority order: -10 (highest) to -6 (medium)
1258812621 latest_patterns = [
12622+ ("gpt-5.3-codex", -11),
12623+ ("5.3", -11),
12624+ ("claude-opus-4-6", -11),
12625+ ("4.6", -11),
1258912626 # Latest flagship models (2025-12 releases)
1259012627 ("gpt-5.2", -10),
1259112628 ("5.2", -10),
@@ -12963,13 +13000,15 @@ def is_latest_model(model_id: str, info) -> bool:
1296313000 name_lower = info.name.lower()
1296413001
1296513002 # Check release date
12966- if info.released and info.released.startswith("2025"):
12967- if "-12" in info.released or "-11" in info.released:
12968- return True
13003+ if info.released and (
13004+ info.released.startswith("2025") or info.released.startswith("2026")
13005+ ):
1296913006 return True
1297013007
1297113008 # Check latest patterns
1297213009 latest_patterns = [
13010+ "gpt-5.3-codex",
13011+ "5.3",
1297313012 "gpt-5.2",
1297413013 "5.2",
1297513014 "gemini-3",
@@ -12979,6 +13018,7 @@ def is_latest_model(model_id: str, info) -> bool:
1297913018 "glm-4-plus",
1298013019 "deepseek-v3.2",
1298113020 "grok-3",
13021+ "claude-opus-4-6",
1298213022 "claude-opus-4-5",
1298313023 "claude-sonnet-4-5",
1298413024 "claude-haiku-4-5",
0 commit comments