From ac2a876e33f007ab9046d64c83bffb08421645e6 Mon Sep 17 00:00:00 2001 From: Multi-Repo Pushback Bot Date: Fri, 24 Apr 2026 08:35:39 +0200 Subject: [PATCH 1/3] chore(registry): update Cursor models to latest Replaces old Claude model IDs with new-style identifiers, adds Opus 4.7 variants, GPT-5.4 Mini/Nano tiers, Codex 5.3 Spark variants, Grok 4.20, and Sonnet 4/4.5 1M models. Sets composer-2-fast as new default. Co-Authored-By: Claude Sonnet 4.6 --- packages/config/src/cli-registry.generated.ts | 520 +++++++---- packages/sdk-py/agent_relay/__init__.py | 21 + packages/sdk-py/agent_relay/models.py | 498 +++++++++++ packages/shared/cli-registry.yaml | 813 +++++++++++------- 4 files changed, 1362 insertions(+), 490 deletions(-) create mode 100644 packages/sdk-py/agent_relay/__init__.py create mode 100644 packages/sdk-py/agent_relay/models.py diff --git a/packages/config/src/cli-registry.generated.ts b/packages/config/src/cli-registry.generated.ts index a783d0c11..81fd89a9c 100644 --- a/packages/config/src/cli-registry.generated.ts +++ b/packages/config/src/cli-registry.generated.ts @@ -14,10 +14,10 @@ export const CLIVersions = { /** Claude Code v2.1.72 */ CLAUDE: '2.1.72', - /** Codex CLI v0.114.0 */ - CODEX: '0.114.0', - /** Gemini CLI v0.33.0 */ - GEMINI: '0.33.0', + /** Codex CLI v0.124.0 */ + CODEX: '0.124.0', + /** Gemini CLI v0.39.1 */ + GEMINI: '0.39.1', /** Cursor v2026.02.27-e7d2ef6 */ CURSOR: '2026.02.27-e7d2ef6', /** Droid v0.1.0 */ @@ -64,7 +64,9 @@ export type ClaudeModel = (typeof ClaudeModels)[keyof typeof ClaudeModels]; * Codex CLI model identifiers. */ export const CodexModels = { - /** GPT-5.4 — Latest frontier agentic coding model (default) */ + /** GPT-5.4 — Frontier model for complex coding, research, and real-world work. (default) */ + GPT_5_5: 'gpt-5.4', + /** GPT-5.4 — Strong model for everyday coding (default) */ GPT_5_4: 'gpt-5.4', /** GPT-5.3 Codex — Frontier agentic coding model */ GPT_5_3_CODEX: 'gpt-5.3-codex', @@ -104,94 +106,192 @@ export type GeminiModel = (typeof GeminiModels)[keyof typeof GeminiModels]; * Cursor model identifiers. */ export const CursorModels = { - /** Claude 4.6 Opus (Thinking) (default) */ - OPUS_4_6_THINKING: 'opus-4.6-thinking', - /** Claude 4.6 Opus */ - OPUS_4_6: 'opus-4.6', - /** Claude 4.5 Opus */ - OPUS_4_5: 'opus-4.5', - /** Claude 4.5 Opus (Thinking) */ - OPUS_4_5_THINKING: 'opus-4.5-thinking', - /** Claude 4.6 Sonnet */ - SONNET_4_6: 'sonnet-4.6', - /** Claude 4.6 Sonnet (Thinking) */ - SONNET_4_6_THINKING: 'sonnet-4.6-thinking', - /** Claude 4.5 Sonnet */ - SONNET_4_5: 'sonnet-4.5', - /** Claude 4.5 Sonnet (Thinking) */ - SONNET_4_5_THINKING: 'sonnet-4.5-thinking', + /** Composer 2 Fast (default) */ + COMPOSER_2_FAST: 'composer-2-fast', + /** Composer 2 */ + COMPOSER_2: 'composer-2', /** Composer 1.5 */ COMPOSER_1_5: 'composer-1.5', - /** Composer 1 */ - COMPOSER_1: 'composer-1', - /** GPT-5.4 Extra High */ - GPT_5_4_XHIGH: 'gpt-5.4-xhigh', - /** GPT-5.4 Extra High Fast */ - GPT_5_4_XHIGH_FAST: 'gpt-5.4-xhigh-fast', - /** GPT-5.4 High */ + /** Codex 5.3 Low */ + GPT_5_3_CODEX_LOW: 'gpt-5.3-codex-low', + /** Codex 5.3 Low Fast */ + GPT_5_3_CODEX_LOW_FAST: 'gpt-5.3-codex-low-fast', + /** Codex 5.3 */ + GPT_5_3_CODEX: 'gpt-5.3-codex', + /** Codex 5.3 Fast */ + GPT_5_3_CODEX_FAST: 'gpt-5.3-codex-fast', + /** Codex 5.3 High */ + GPT_5_3_CODEX_HIGH: 'gpt-5.3-codex-high', + /** Codex 5.3 High Fast */ + GPT_5_3_CODEX_HIGH_FAST: 'gpt-5.3-codex-high-fast', + /** Codex 5.3 Extra High */ + GPT_5_3_CODEX_XHIGH: 'gpt-5.3-codex-xhigh', + /** Codex 5.3 Extra High Fast */ + GPT_5_3_CODEX_XHIGH_FAST: 'gpt-5.3-codex-xhigh-fast', + /** GPT-5.2 */ + GPT_5_2: 'gpt-5.2', + /** Codex 5.3 Spark Low */ + GPT_5_3_CODEX_SPARK_PREVIEW_LOW: 'gpt-5.3-codex-spark-preview-low', + /** Codex 5.3 Spark */ + GPT_5_3_CODEX_SPARK_PREVIEW: 'gpt-5.3-codex-spark-preview', + /** Codex 5.3 Spark High */ + GPT_5_3_CODEX_SPARK_PREVIEW_HIGH: 'gpt-5.3-codex-spark-preview-high', + /** Codex 5.3 Spark Extra High */ + GPT_5_3_CODEX_SPARK_PREVIEW_XHIGH: 'gpt-5.3-codex-spark-preview-xhigh', + /** Codex 5.2 Low */ + GPT_5_2_CODEX_LOW: 'gpt-5.2-codex-low', + /** Codex 5.2 Low Fast */ + GPT_5_2_CODEX_LOW_FAST: 'gpt-5.2-codex-low-fast', + /** Codex 5.2 */ + GPT_5_2_CODEX: 'gpt-5.2-codex', + /** Codex 5.2 Fast */ + GPT_5_2_CODEX_FAST: 'gpt-5.2-codex-fast', + /** Codex 5.2 High */ + GPT_5_2_CODEX_HIGH: 'gpt-5.2-codex-high', + /** Codex 5.2 High Fast */ + GPT_5_2_CODEX_HIGH_FAST: 'gpt-5.2-codex-high-fast', + /** Codex 5.2 Extra High */ + GPT_5_2_CODEX_XHIGH: 'gpt-5.2-codex-xhigh', + /** Codex 5.2 Extra High Fast */ + GPT_5_2_CODEX_XHIGH_FAST: 'gpt-5.2-codex-xhigh-fast', + /** Codex 5.1 Max Low */ + GPT_5_1_CODEX_MAX_LOW: 'gpt-5.1-codex-max-low', + /** Codex 5.1 Max Low Fast */ + GPT_5_1_CODEX_MAX_LOW_FAST: 'gpt-5.1-codex-max-low-fast', + /** Codex 5.1 Max */ + GPT_5_1_CODEX_MAX_MEDIUM: 'gpt-5.1-codex-max-medium', + /** Codex 5.1 Max Medium Fast */ + GPT_5_1_CODEX_MAX_MEDIUM_FAST: 'gpt-5.1-codex-max-medium-fast', + /** Codex 5.1 Max High */ + GPT_5_1_CODEX_MAX_HIGH: 'gpt-5.1-codex-max-high', + /** Codex 5.1 Max High Fast */ + GPT_5_1_CODEX_MAX_HIGH_FAST: 'gpt-5.1-codex-max-high-fast', + /** Codex 5.1 Max Extra High */ + GPT_5_1_CODEX_MAX_XHIGH: 'gpt-5.1-codex-max-xhigh', + /** Codex 5.1 Max Extra High Fast */ + GPT_5_1_CODEX_MAX_XHIGH_FAST: 'gpt-5.1-codex-max-xhigh-fast', + /** Opus 4.7 1M High Thinking */ + CLAUDE_OPUS_4_7_THINKING_HIGH: 'claude-opus-4-7-thinking-high', + /** GPT-5.4 1M High */ GPT_5_4_HIGH: 'gpt-5.4-high', /** GPT-5.4 High Fast */ GPT_5_4_HIGH_FAST: 'gpt-5.4-high-fast', - /** GPT-5.4 */ + /** GPT-5.4 Extra High Fast */ + GPT_5_4_XHIGH_FAST: 'gpt-5.4-xhigh-fast', + /** Opus 4.6 1M Thinking Fast */ + CLAUDE_4_6_OPUS_HIGH_THINKING_FAST: 'claude-4.6-opus-high-thinking-fast', + /** Sonnet 4.6 1M */ + CLAUDE_4_6_SONNET_MEDIUM: 'claude-4.6-sonnet-medium', + /** Sonnet 4.6 1M Thinking */ + CLAUDE_4_6_SONNET_MEDIUM_THINKING: 'claude-4.6-sonnet-medium-thinking', + /** Opus 4.7 1M Low */ + CLAUDE_OPUS_4_7_LOW: 'claude-opus-4-7-low', + /** Opus 4.7 1M Medium */ + CLAUDE_OPUS_4_7_MEDIUM: 'claude-opus-4-7-medium', + /** Opus 4.7 1M High */ + CLAUDE_OPUS_4_7_HIGH: 'claude-opus-4-7-high', + /** Opus 4.7 1M */ + CLAUDE_OPUS_4_7_XHIGH: 'claude-opus-4-7-xhigh', + /** Opus 4.7 1M Max */ + CLAUDE_OPUS_4_7_MAX: 'claude-opus-4-7-max', + /** Opus 4.7 1M Low Thinking */ + CLAUDE_OPUS_4_7_THINKING_LOW: 'claude-opus-4-7-thinking-low', + /** Opus 4.7 1M Medium Thinking */ + CLAUDE_OPUS_4_7_THINKING_MEDIUM: 'claude-opus-4-7-thinking-medium', + /** Opus 4.7 1M Thinking */ + CLAUDE_OPUS_4_7_THINKING_XHIGH: 'claude-opus-4-7-thinking-xhigh', + /** Opus 4.7 1M Max Thinking */ + CLAUDE_OPUS_4_7_THINKING_MAX: 'claude-opus-4-7-thinking-max', + /** GPT-5.4 1M Low */ + GPT_5_4_LOW: 'gpt-5.4-low', + /** GPT-5.4 1M */ GPT_5_4_MEDIUM: 'gpt-5.4-medium', /** GPT-5.4 Fast */ GPT_5_4_MEDIUM_FAST: 'gpt-5.4-medium-fast', - /** GPT-5.4 Low */ - GPT_5_4_LOW: 'gpt-5.4-low', - /** GPT-5.3 Codex Extra High */ - GPT_5_3_CODEX_XHIGH: 'gpt-5.3-codex-xhigh', - /** GPT-5.3 Codex Extra High Fast */ - GPT_5_3_CODEX_XHIGH_FAST: 'gpt-5.3-codex-xhigh-fast', - /** GPT-5.3 Codex High */ - GPT_5_3_CODEX_HIGH: 'gpt-5.3-codex-high', - /** GPT-5.3 Codex High Fast */ - GPT_5_3_CODEX_HIGH_FAST: 'gpt-5.3-codex-high-fast', - /** GPT-5.3 Codex */ - GPT_5_3_CODEX: 'gpt-5.3-codex', - /** GPT-5.3 Codex Fast */ - GPT_5_3_CODEX_FAST: 'gpt-5.3-codex-fast', - /** GPT-5.3 Codex Low */ - GPT_5_3_CODEX_LOW: 'gpt-5.3-codex-low', - /** GPT-5.3 Codex Low Fast */ - GPT_5_3_CODEX_LOW_FAST: 'gpt-5.3-codex-low-fast', - /** GPT-5.3 Codex Spark */ - GPT_5_3_CODEX_SPARK_PREVIEW: 'gpt-5.3-codex-spark-preview', - /** GPT-5.2 Codex Extra High */ - GPT_5_2_CODEX_XHIGH: 'gpt-5.2-codex-xhigh', - /** GPT-5.2 Codex Extra High Fast */ - GPT_5_2_CODEX_XHIGH_FAST: 'gpt-5.2-codex-xhigh-fast', - /** GPT-5.2 Codex High */ - GPT_5_2_CODEX_HIGH: 'gpt-5.2-codex-high', - /** GPT-5.2 Codex High Fast */ - GPT_5_2_CODEX_HIGH_FAST: 'gpt-5.2-codex-high-fast', - /** GPT-5.2 Codex */ - GPT_5_2_CODEX: 'gpt-5.2-codex', - /** GPT-5.2 Codex Fast */ - GPT_5_2_CODEX_FAST: 'gpt-5.2-codex-fast', - /** GPT-5.2 Codex Low */ - GPT_5_2_CODEX_LOW: 'gpt-5.2-codex-low', - /** GPT-5.2 Codex Low Fast */ - GPT_5_2_CODEX_LOW_FAST: 'gpt-5.2-codex-low-fast', - /** GPT-5.2 */ - GPT_5_2: 'gpt-5.2', + /** GPT-5.4 1M Extra High */ + GPT_5_4_XHIGH: 'gpt-5.4-xhigh', + /** Opus 4.6 1M */ + CLAUDE_4_6_OPUS_HIGH: 'claude-4.6-opus-high', + /** Opus 4.6 1M Max */ + CLAUDE_4_6_OPUS_MAX: 'claude-4.6-opus-max', + /** Opus 4.6 1M Thinking */ + CLAUDE_4_6_OPUS_HIGH_THINKING: 'claude-4.6-opus-high-thinking', + /** Opus 4.6 1M Max Thinking */ + CLAUDE_4_6_OPUS_MAX_THINKING: 'claude-4.6-opus-max-thinking', + /** Opus 4.6 1M Max Thinking Fast */ + CLAUDE_4_6_OPUS_MAX_THINKING_FAST: 'claude-4.6-opus-max-thinking-fast', + /** Opus 4.5 */ + CLAUDE_4_5_OPUS_HIGH: 'claude-4.5-opus-high', + /** Opus 4.5 Thinking */ + CLAUDE_4_5_OPUS_HIGH_THINKING: 'claude-4.5-opus-high-thinking', + /** GPT-5.2 Low */ + GPT_5_2_LOW: 'gpt-5.2-low', + /** GPT-5.2 Low Fast */ + GPT_5_2_LOW_FAST: 'gpt-5.2-low-fast', + /** GPT-5.2 Fast */ + GPT_5_2_FAST: 'gpt-5.2-fast', /** GPT-5.2 High */ GPT_5_2_HIGH: 'gpt-5.2-high', - /** GPT-5.1 Codex Max */ - GPT_5_1_CODEX_MAX: 'gpt-5.1-codex-max', - /** GPT-5.1 Codex Max High */ - GPT_5_1_CODEX_MAX_HIGH: 'gpt-5.1-codex-max-high', - /** GPT-5.1 Codex Mini */ - GPT_5_1_CODEX_MINI: 'gpt-5.1-codex-mini', - /** GPT-5.1 High */ - GPT_5_1_HIGH: 'gpt-5.1-high', + /** GPT-5.2 High Fast */ + GPT_5_2_HIGH_FAST: 'gpt-5.2-high-fast', + /** GPT-5.2 Extra High */ + GPT_5_2_XHIGH: 'gpt-5.2-xhigh', + /** GPT-5.2 Extra High Fast */ + GPT_5_2_XHIGH_FAST: 'gpt-5.2-xhigh-fast', /** Gemini 3.1 Pro */ GEMINI_3_1_PRO: 'gemini-3.1-pro', - /** Gemini 3 Pro */ - GEMINI_3_PRO: 'gemini-3-pro', + /** GPT-5.4 Mini None */ + GPT_5_4_MINI_NONE: 'gpt-5.4-mini-none', + /** GPT-5.4 Mini Low */ + GPT_5_4_MINI_LOW: 'gpt-5.4-mini-low', + /** GPT-5.4 Mini */ + GPT_5_4_MINI_MEDIUM: 'gpt-5.4-mini-medium', + /** GPT-5.4 Mini High */ + GPT_5_4_MINI_HIGH: 'gpt-5.4-mini-high', + /** GPT-5.4 Mini Extra High */ + GPT_5_4_MINI_XHIGH: 'gpt-5.4-mini-xhigh', + /** GPT-5.4 Nano None */ + GPT_5_4_NANO_NONE: 'gpt-5.4-nano-none', + /** GPT-5.4 Nano Low */ + GPT_5_4_NANO_LOW: 'gpt-5.4-nano-low', + /** GPT-5.4 Nano */ + GPT_5_4_NANO_MEDIUM: 'gpt-5.4-nano-medium', + /** GPT-5.4 Nano High */ + GPT_5_4_NANO_HIGH: 'gpt-5.4-nano-high', + /** GPT-5.4 Nano Extra High */ + GPT_5_4_NANO_XHIGH: 'gpt-5.4-nano-xhigh', + /** Grok 4.20 */ + GROK_4_20: 'grok-4-20', + /** Grok 4.20 Thinking */ + GROK_4_20_THINKING: 'grok-4-20-thinking', + /** Sonnet 4.5 1M */ + CLAUDE_4_5_SONNET: 'claude-4.5-sonnet', + /** Sonnet 4.5 1M Thinking */ + CLAUDE_4_5_SONNET_THINKING: 'claude-4.5-sonnet-thinking', + /** GPT-5.1 Low */ + GPT_5_1_LOW: 'gpt-5.1-low', + /** GPT-5.1 */ + GPT_5_1: 'gpt-5.1', + /** GPT-5.1 High */ + GPT_5_1_HIGH: 'gpt-5.1-high', /** Gemini 3 Flash */ GEMINI_3_FLASH: 'gemini-3-flash', - /** Grok */ - GROK: 'grok', + /** Codex 5.1 Mini Low */ + GPT_5_1_CODEX_MINI_LOW: 'gpt-5.1-codex-mini-low', + /** Codex 5.1 Mini */ + GPT_5_1_CODEX_MINI: 'gpt-5.1-codex-mini', + /** Codex 5.1 Mini High */ + GPT_5_1_CODEX_MINI_HIGH: 'gpt-5.1-codex-mini-high', + /** Sonnet 4 */ + CLAUDE_4_SONNET: 'claude-4-sonnet', + /** Sonnet 4 1M */ + CLAUDE_4_SONNET_1M: 'claude-4-sonnet-1m', + /** Sonnet 4 Thinking */ + CLAUDE_4_SONNET_THINKING: 'claude-4-sonnet-thinking', + /** Sonnet 4 1M Thinking */ + CLAUDE_4_SONNET_1M_THINKING: 'claude-4-sonnet-1m-thinking', + /** GPT-5 Mini */ + GPT_5_MINI: 'gpt-5-mini', /** Kimi K2.5 */ KIMI_K2_5: 'kimi-k2.5', } as const; @@ -349,7 +449,8 @@ export const CLAUDE_MODEL_OPTIONS: ModelOption[] = [ * Codex CLI model options for UI dropdowns. */ export const CODEX_MODEL_OPTIONS: ModelOption[] = [ - { value: 'gpt-5.4', label: 'GPT-5.4 — Latest frontier agentic coding model', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, + { value: 'gpt-5.4', label: 'GPT-5.4 — Frontier model for complex coding, research, and real-world work.', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'high' }, + { value: 'gpt-5.4', label: 'GPT-5.4 — Strong model for everyday coding', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, { value: 'gpt-5.3-codex', label: 'GPT-5.3 Codex — Frontier agentic coding model', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, { value: 'gpt-5.3-codex-spark', label: 'GPT-5.3 Codex Spark — Ultra-fast coding model', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, { value: 'gpt-5.2-codex', label: 'GPT-5.2 Codex — Frontier agentic coding model', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, @@ -373,50 +474,99 @@ export const GEMINI_MODEL_OPTIONS: ModelOption[] = [ * Cursor model options for UI dropdowns. */ export const CURSOR_MODEL_OPTIONS: ModelOption[] = [ - { value: 'opus-4.6-thinking', label: 'Claude 4.6 Opus (Thinking)' }, - { value: 'opus-4.6', label: 'Claude 4.6 Opus' }, - { value: 'opus-4.5', label: 'Claude 4.5 Opus' }, - { value: 'opus-4.5-thinking', label: 'Claude 4.5 Opus (Thinking)' }, - { value: 'sonnet-4.6', label: 'Claude 4.6 Sonnet' }, - { value: 'sonnet-4.6-thinking', label: 'Claude 4.6 Sonnet (Thinking)' }, - { value: 'sonnet-4.5', label: 'Claude 4.5 Sonnet' }, - { value: 'sonnet-4.5-thinking', label: 'Claude 4.5 Sonnet (Thinking)' }, + { value: 'composer-2-fast', label: 'Composer 2 Fast' }, + { value: 'composer-2', label: 'Composer 2' }, { value: 'composer-1.5', label: 'Composer 1.5' }, - { value: 'composer-1', label: 'Composer 1' }, - { value: 'gpt-5.4-xhigh', label: 'GPT-5.4 Extra High' }, - { value: 'gpt-5.4-xhigh-fast', label: 'GPT-5.4 Extra High Fast' }, - { value: 'gpt-5.4-high', label: 'GPT-5.4 High' }, + { value: 'gpt-5.3-codex-low', label: 'Codex 5.3 Low' }, + { value: 'gpt-5.3-codex-low-fast', label: 'Codex 5.3 Low Fast' }, + { value: 'gpt-5.3-codex', label: 'Codex 5.3' }, + { value: 'gpt-5.3-codex-fast', label: 'Codex 5.3 Fast' }, + { value: 'gpt-5.3-codex-high', label: 'Codex 5.3 High' }, + { value: 'gpt-5.3-codex-high-fast', label: 'Codex 5.3 High Fast' }, + { value: 'gpt-5.3-codex-xhigh', label: 'Codex 5.3 Extra High' }, + { value: 'gpt-5.3-codex-xhigh-fast', label: 'Codex 5.3 Extra High Fast' }, + { value: 'gpt-5.2', label: 'GPT-5.2' }, + { value: 'gpt-5.3-codex-spark-preview-low', label: 'Codex 5.3 Spark Low' }, + { value: 'gpt-5.3-codex-spark-preview', label: 'Codex 5.3 Spark' }, + { value: 'gpt-5.3-codex-spark-preview-high', label: 'Codex 5.3 Spark High' }, + { value: 'gpt-5.3-codex-spark-preview-xhigh', label: 'Codex 5.3 Spark Extra High' }, + { value: 'gpt-5.2-codex-low', label: 'Codex 5.2 Low' }, + { value: 'gpt-5.2-codex-low-fast', label: 'Codex 5.2 Low Fast' }, + { value: 'gpt-5.2-codex', label: 'Codex 5.2' }, + { value: 'gpt-5.2-codex-fast', label: 'Codex 5.2 Fast' }, + { value: 'gpt-5.2-codex-high', label: 'Codex 5.2 High' }, + { value: 'gpt-5.2-codex-high-fast', label: 'Codex 5.2 High Fast' }, + { value: 'gpt-5.2-codex-xhigh', label: 'Codex 5.2 Extra High' }, + { value: 'gpt-5.2-codex-xhigh-fast', label: 'Codex 5.2 Extra High Fast' }, + { value: 'gpt-5.1-codex-max-low', label: 'Codex 5.1 Max Low' }, + { value: 'gpt-5.1-codex-max-low-fast', label: 'Codex 5.1 Max Low Fast' }, + { value: 'gpt-5.1-codex-max-medium', label: 'Codex 5.1 Max' }, + { value: 'gpt-5.1-codex-max-medium-fast', label: 'Codex 5.1 Max Medium Fast' }, + { value: 'gpt-5.1-codex-max-high', label: 'Codex 5.1 Max High' }, + { value: 'gpt-5.1-codex-max-high-fast', label: 'Codex 5.1 Max High Fast' }, + { value: 'gpt-5.1-codex-max-xhigh', label: 'Codex 5.1 Max Extra High' }, + { value: 'gpt-5.1-codex-max-xhigh-fast', label: 'Codex 5.1 Max Extra High Fast' }, + { value: 'claude-opus-4-7-thinking-high', label: 'Opus 4.7 1M High Thinking' }, + { value: 'gpt-5.4-high', label: 'GPT-5.4 1M High' }, { value: 'gpt-5.4-high-fast', label: 'GPT-5.4 High Fast' }, - { value: 'gpt-5.4-medium', label: 'GPT-5.4' }, + { value: 'gpt-5.4-xhigh-fast', label: 'GPT-5.4 Extra High Fast' }, + { value: 'claude-4.6-opus-high-thinking-fast', label: 'Opus 4.6 1M Thinking Fast' }, + { value: 'claude-4.6-sonnet-medium', label: 'Sonnet 4.6 1M' }, + { value: 'claude-4.6-sonnet-medium-thinking', label: 'Sonnet 4.6 1M Thinking' }, + { value: 'claude-opus-4-7-low', label: 'Opus 4.7 1M Low' }, + { value: 'claude-opus-4-7-medium', label: 'Opus 4.7 1M Medium' }, + { value: 'claude-opus-4-7-high', label: 'Opus 4.7 1M High' }, + { value: 'claude-opus-4-7-xhigh', label: 'Opus 4.7 1M' }, + { value: 'claude-opus-4-7-max', label: 'Opus 4.7 1M Max' }, + { value: 'claude-opus-4-7-thinking-low', label: 'Opus 4.7 1M Low Thinking' }, + { value: 'claude-opus-4-7-thinking-medium', label: 'Opus 4.7 1M Medium Thinking' }, + { value: 'claude-opus-4-7-thinking-xhigh', label: 'Opus 4.7 1M Thinking' }, + { value: 'claude-opus-4-7-thinking-max', label: 'Opus 4.7 1M Max Thinking' }, + { value: 'gpt-5.4-low', label: 'GPT-5.4 1M Low' }, + { value: 'gpt-5.4-medium', label: 'GPT-5.4 1M' }, { value: 'gpt-5.4-medium-fast', label: 'GPT-5.4 Fast' }, - { value: 'gpt-5.4-low', label: 'GPT-5.4 Low' }, - { value: 'gpt-5.3-codex-xhigh', label: 'GPT-5.3 Codex Extra High' }, - { value: 'gpt-5.3-codex-xhigh-fast', label: 'GPT-5.3 Codex Extra High Fast' }, - { value: 'gpt-5.3-codex-high', label: 'GPT-5.3 Codex High' }, - { value: 'gpt-5.3-codex-high-fast', label: 'GPT-5.3 Codex High Fast' }, - { value: 'gpt-5.3-codex', label: 'GPT-5.3 Codex' }, - { value: 'gpt-5.3-codex-fast', label: 'GPT-5.3 Codex Fast' }, - { value: 'gpt-5.3-codex-low', label: 'GPT-5.3 Codex Low' }, - { value: 'gpt-5.3-codex-low-fast', label: 'GPT-5.3 Codex Low Fast' }, - { value: 'gpt-5.3-codex-spark-preview', label: 'GPT-5.3 Codex Spark' }, - { value: 'gpt-5.2-codex-xhigh', label: 'GPT-5.2 Codex Extra High' }, - { value: 'gpt-5.2-codex-xhigh-fast', label: 'GPT-5.2 Codex Extra High Fast' }, - { value: 'gpt-5.2-codex-high', label: 'GPT-5.2 Codex High' }, - { value: 'gpt-5.2-codex-high-fast', label: 'GPT-5.2 Codex High Fast' }, - { value: 'gpt-5.2-codex', label: 'GPT-5.2 Codex' }, - { value: 'gpt-5.2-codex-fast', label: 'GPT-5.2 Codex Fast' }, - { value: 'gpt-5.2-codex-low', label: 'GPT-5.2 Codex Low' }, - { value: 'gpt-5.2-codex-low-fast', label: 'GPT-5.2 Codex Low Fast' }, - { value: 'gpt-5.2', label: 'GPT-5.2' }, + { value: 'gpt-5.4-xhigh', label: 'GPT-5.4 1M Extra High' }, + { value: 'claude-4.6-opus-high', label: 'Opus 4.6 1M' }, + { value: 'claude-4.6-opus-max', label: 'Opus 4.6 1M Max' }, + { value: 'claude-4.6-opus-high-thinking', label: 'Opus 4.6 1M Thinking' }, + { value: 'claude-4.6-opus-max-thinking', label: 'Opus 4.6 1M Max Thinking' }, + { value: 'claude-4.6-opus-max-thinking-fast', label: 'Opus 4.6 1M Max Thinking Fast' }, + { value: 'claude-4.5-opus-high', label: 'Opus 4.5' }, + { value: 'claude-4.5-opus-high-thinking', label: 'Opus 4.5 Thinking' }, + { value: 'gpt-5.2-low', label: 'GPT-5.2 Low' }, + { value: 'gpt-5.2-low-fast', label: 'GPT-5.2 Low Fast' }, + { value: 'gpt-5.2-fast', label: 'GPT-5.2 Fast' }, { value: 'gpt-5.2-high', label: 'GPT-5.2 High' }, - { value: 'gpt-5.1-codex-max', label: 'GPT-5.1 Codex Max' }, - { value: 'gpt-5.1-codex-max-high', label: 'GPT-5.1 Codex Max High' }, - { value: 'gpt-5.1-codex-mini', label: 'GPT-5.1 Codex Mini' }, - { value: 'gpt-5.1-high', label: 'GPT-5.1 High' }, + { value: 'gpt-5.2-high-fast', label: 'GPT-5.2 High Fast' }, + { value: 'gpt-5.2-xhigh', label: 'GPT-5.2 Extra High' }, + { value: 'gpt-5.2-xhigh-fast', label: 'GPT-5.2 Extra High Fast' }, { value: 'gemini-3.1-pro', label: 'Gemini 3.1 Pro' }, - { value: 'gemini-3-pro', label: 'Gemini 3 Pro' }, + { value: 'gpt-5.4-mini-none', label: 'GPT-5.4 Mini None' }, + { value: 'gpt-5.4-mini-low', label: 'GPT-5.4 Mini Low' }, + { value: 'gpt-5.4-mini-medium', label: 'GPT-5.4 Mini' }, + { value: 'gpt-5.4-mini-high', label: 'GPT-5.4 Mini High' }, + { value: 'gpt-5.4-mini-xhigh', label: 'GPT-5.4 Mini Extra High' }, + { value: 'gpt-5.4-nano-none', label: 'GPT-5.4 Nano None' }, + { value: 'gpt-5.4-nano-low', label: 'GPT-5.4 Nano Low' }, + { value: 'gpt-5.4-nano-medium', label: 'GPT-5.4 Nano' }, + { value: 'gpt-5.4-nano-high', label: 'GPT-5.4 Nano High' }, + { value: 'gpt-5.4-nano-xhigh', label: 'GPT-5.4 Nano Extra High' }, + { value: 'grok-4-20', label: 'Grok 4.20' }, + { value: 'grok-4-20-thinking', label: 'Grok 4.20 Thinking' }, + { value: 'claude-4.5-sonnet', label: 'Sonnet 4.5 1M' }, + { value: 'claude-4.5-sonnet-thinking', label: 'Sonnet 4.5 1M Thinking' }, + { value: 'gpt-5.1-low', label: 'GPT-5.1 Low' }, + { value: 'gpt-5.1', label: 'GPT-5.1' }, + { value: 'gpt-5.1-high', label: 'GPT-5.1 High' }, { value: 'gemini-3-flash', label: 'Gemini 3 Flash' }, - { value: 'grok', label: 'Grok' }, + { value: 'gpt-5.1-codex-mini-low', label: 'Codex 5.1 Mini Low' }, + { value: 'gpt-5.1-codex-mini', label: 'Codex 5.1 Mini' }, + { value: 'gpt-5.1-codex-mini-high', label: 'Codex 5.1 Mini High' }, + { value: 'claude-4-sonnet', label: 'Sonnet 4' }, + { value: 'claude-4-sonnet-1m', label: 'Sonnet 4 1M' }, + { value: 'claude-4-sonnet-thinking', label: 'Sonnet 4 Thinking' }, + { value: 'claude-4-sonnet-1m-thinking', label: 'Sonnet 4 1M Thinking' }, + { value: 'gpt-5-mini', label: 'GPT-5 Mini' }, { value: 'kimi-k2.5', label: 'Kimi K2.5' }, ]; @@ -497,7 +647,8 @@ export const CLAUDE_MODEL_METADATA: Record = { * Codex CLI model metadata keyed by model id. */ export const CODEX_MODEL_METADATA: Record = { - 'gpt-5.4': { value: 'gpt-5.4', label: 'GPT-5.4 — Latest frontier agentic coding model', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, + 'gpt-5.4': { value: 'gpt-5.4', label: 'GPT-5.4 — Frontier model for complex coding, research, and real-world work.', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'high' }, + 'gpt-5.4': { value: 'gpt-5.4', label: 'GPT-5.4 — Strong model for everyday coding', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, 'gpt-5.3-codex': { value: 'gpt-5.3-codex', label: 'GPT-5.3 Codex — Frontier agentic coding model', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, 'gpt-5.3-codex-spark': { value: 'gpt-5.3-codex-spark', label: 'GPT-5.3 Codex Spark — Ultra-fast coding model', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, 'gpt-5.2-codex': { value: 'gpt-5.2-codex', label: 'GPT-5.2 Codex — Frontier agentic coding model', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, @@ -521,50 +672,99 @@ export const GEMINI_MODEL_METADATA: Record = { * Cursor model metadata keyed by model id. */ export const CURSOR_MODEL_METADATA: Record = { - 'opus-4.6-thinking': { value: 'opus-4.6-thinking', label: 'Claude 4.6 Opus (Thinking)' }, - 'opus-4.6': { value: 'opus-4.6', label: 'Claude 4.6 Opus' }, - 'opus-4.5': { value: 'opus-4.5', label: 'Claude 4.5 Opus' }, - 'opus-4.5-thinking': { value: 'opus-4.5-thinking', label: 'Claude 4.5 Opus (Thinking)' }, - 'sonnet-4.6': { value: 'sonnet-4.6', label: 'Claude 4.6 Sonnet' }, - 'sonnet-4.6-thinking': { value: 'sonnet-4.6-thinking', label: 'Claude 4.6 Sonnet (Thinking)' }, - 'sonnet-4.5': { value: 'sonnet-4.5', label: 'Claude 4.5 Sonnet' }, - 'sonnet-4.5-thinking': { value: 'sonnet-4.5-thinking', label: 'Claude 4.5 Sonnet (Thinking)' }, + 'composer-2-fast': { value: 'composer-2-fast', label: 'Composer 2 Fast' }, + 'composer-2': { value: 'composer-2', label: 'Composer 2' }, 'composer-1.5': { value: 'composer-1.5', label: 'Composer 1.5' }, - 'composer-1': { value: 'composer-1', label: 'Composer 1' }, - 'gpt-5.4-xhigh': { value: 'gpt-5.4-xhigh', label: 'GPT-5.4 Extra High' }, - 'gpt-5.4-xhigh-fast': { value: 'gpt-5.4-xhigh-fast', label: 'GPT-5.4 Extra High Fast' }, - 'gpt-5.4-high': { value: 'gpt-5.4-high', label: 'GPT-5.4 High' }, + 'gpt-5.3-codex-low': { value: 'gpt-5.3-codex-low', label: 'Codex 5.3 Low' }, + 'gpt-5.3-codex-low-fast': { value: 'gpt-5.3-codex-low-fast', label: 'Codex 5.3 Low Fast' }, + 'gpt-5.3-codex': { value: 'gpt-5.3-codex', label: 'Codex 5.3' }, + 'gpt-5.3-codex-fast': { value: 'gpt-5.3-codex-fast', label: 'Codex 5.3 Fast' }, + 'gpt-5.3-codex-high': { value: 'gpt-5.3-codex-high', label: 'Codex 5.3 High' }, + 'gpt-5.3-codex-high-fast': { value: 'gpt-5.3-codex-high-fast', label: 'Codex 5.3 High Fast' }, + 'gpt-5.3-codex-xhigh': { value: 'gpt-5.3-codex-xhigh', label: 'Codex 5.3 Extra High' }, + 'gpt-5.3-codex-xhigh-fast': { value: 'gpt-5.3-codex-xhigh-fast', label: 'Codex 5.3 Extra High Fast' }, + 'gpt-5.2': { value: 'gpt-5.2', label: 'GPT-5.2' }, + 'gpt-5.3-codex-spark-preview-low': { value: 'gpt-5.3-codex-spark-preview-low', label: 'Codex 5.3 Spark Low' }, + 'gpt-5.3-codex-spark-preview': { value: 'gpt-5.3-codex-spark-preview', label: 'Codex 5.3 Spark' }, + 'gpt-5.3-codex-spark-preview-high': { value: 'gpt-5.3-codex-spark-preview-high', label: 'Codex 5.3 Spark High' }, + 'gpt-5.3-codex-spark-preview-xhigh': { value: 'gpt-5.3-codex-spark-preview-xhigh', label: 'Codex 5.3 Spark Extra High' }, + 'gpt-5.2-codex-low': { value: 'gpt-5.2-codex-low', label: 'Codex 5.2 Low' }, + 'gpt-5.2-codex-low-fast': { value: 'gpt-5.2-codex-low-fast', label: 'Codex 5.2 Low Fast' }, + 'gpt-5.2-codex': { value: 'gpt-5.2-codex', label: 'Codex 5.2' }, + 'gpt-5.2-codex-fast': { value: 'gpt-5.2-codex-fast', label: 'Codex 5.2 Fast' }, + 'gpt-5.2-codex-high': { value: 'gpt-5.2-codex-high', label: 'Codex 5.2 High' }, + 'gpt-5.2-codex-high-fast': { value: 'gpt-5.2-codex-high-fast', label: 'Codex 5.2 High Fast' }, + 'gpt-5.2-codex-xhigh': { value: 'gpt-5.2-codex-xhigh', label: 'Codex 5.2 Extra High' }, + 'gpt-5.2-codex-xhigh-fast': { value: 'gpt-5.2-codex-xhigh-fast', label: 'Codex 5.2 Extra High Fast' }, + 'gpt-5.1-codex-max-low': { value: 'gpt-5.1-codex-max-low', label: 'Codex 5.1 Max Low' }, + 'gpt-5.1-codex-max-low-fast': { value: 'gpt-5.1-codex-max-low-fast', label: 'Codex 5.1 Max Low Fast' }, + 'gpt-5.1-codex-max-medium': { value: 'gpt-5.1-codex-max-medium', label: 'Codex 5.1 Max' }, + 'gpt-5.1-codex-max-medium-fast': { value: 'gpt-5.1-codex-max-medium-fast', label: 'Codex 5.1 Max Medium Fast' }, + 'gpt-5.1-codex-max-high': { value: 'gpt-5.1-codex-max-high', label: 'Codex 5.1 Max High' }, + 'gpt-5.1-codex-max-high-fast': { value: 'gpt-5.1-codex-max-high-fast', label: 'Codex 5.1 Max High Fast' }, + 'gpt-5.1-codex-max-xhigh': { value: 'gpt-5.1-codex-max-xhigh', label: 'Codex 5.1 Max Extra High' }, + 'gpt-5.1-codex-max-xhigh-fast': { value: 'gpt-5.1-codex-max-xhigh-fast', label: 'Codex 5.1 Max Extra High Fast' }, + 'claude-opus-4-7-thinking-high': { value: 'claude-opus-4-7-thinking-high', label: 'Opus 4.7 1M High Thinking' }, + 'gpt-5.4-high': { value: 'gpt-5.4-high', label: 'GPT-5.4 1M High' }, 'gpt-5.4-high-fast': { value: 'gpt-5.4-high-fast', label: 'GPT-5.4 High Fast' }, - 'gpt-5.4-medium': { value: 'gpt-5.4-medium', label: 'GPT-5.4' }, + 'gpt-5.4-xhigh-fast': { value: 'gpt-5.4-xhigh-fast', label: 'GPT-5.4 Extra High Fast' }, + 'claude-4.6-opus-high-thinking-fast': { value: 'claude-4.6-opus-high-thinking-fast', label: 'Opus 4.6 1M Thinking Fast' }, + 'claude-4.6-sonnet-medium': { value: 'claude-4.6-sonnet-medium', label: 'Sonnet 4.6 1M' }, + 'claude-4.6-sonnet-medium-thinking': { value: 'claude-4.6-sonnet-medium-thinking', label: 'Sonnet 4.6 1M Thinking' }, + 'claude-opus-4-7-low': { value: 'claude-opus-4-7-low', label: 'Opus 4.7 1M Low' }, + 'claude-opus-4-7-medium': { value: 'claude-opus-4-7-medium', label: 'Opus 4.7 1M Medium' }, + 'claude-opus-4-7-high': { value: 'claude-opus-4-7-high', label: 'Opus 4.7 1M High' }, + 'claude-opus-4-7-xhigh': { value: 'claude-opus-4-7-xhigh', label: 'Opus 4.7 1M' }, + 'claude-opus-4-7-max': { value: 'claude-opus-4-7-max', label: 'Opus 4.7 1M Max' }, + 'claude-opus-4-7-thinking-low': { value: 'claude-opus-4-7-thinking-low', label: 'Opus 4.7 1M Low Thinking' }, + 'claude-opus-4-7-thinking-medium': { value: 'claude-opus-4-7-thinking-medium', label: 'Opus 4.7 1M Medium Thinking' }, + 'claude-opus-4-7-thinking-xhigh': { value: 'claude-opus-4-7-thinking-xhigh', label: 'Opus 4.7 1M Thinking' }, + 'claude-opus-4-7-thinking-max': { value: 'claude-opus-4-7-thinking-max', label: 'Opus 4.7 1M Max Thinking' }, + 'gpt-5.4-low': { value: 'gpt-5.4-low', label: 'GPT-5.4 1M Low' }, + 'gpt-5.4-medium': { value: 'gpt-5.4-medium', label: 'GPT-5.4 1M' }, 'gpt-5.4-medium-fast': { value: 'gpt-5.4-medium-fast', label: 'GPT-5.4 Fast' }, - 'gpt-5.4-low': { value: 'gpt-5.4-low', label: 'GPT-5.4 Low' }, - 'gpt-5.3-codex-xhigh': { value: 'gpt-5.3-codex-xhigh', label: 'GPT-5.3 Codex Extra High' }, - 'gpt-5.3-codex-xhigh-fast': { value: 'gpt-5.3-codex-xhigh-fast', label: 'GPT-5.3 Codex Extra High Fast' }, - 'gpt-5.3-codex-high': { value: 'gpt-5.3-codex-high', label: 'GPT-5.3 Codex High' }, - 'gpt-5.3-codex-high-fast': { value: 'gpt-5.3-codex-high-fast', label: 'GPT-5.3 Codex High Fast' }, - 'gpt-5.3-codex': { value: 'gpt-5.3-codex', label: 'GPT-5.3 Codex' }, - 'gpt-5.3-codex-fast': { value: 'gpt-5.3-codex-fast', label: 'GPT-5.3 Codex Fast' }, - 'gpt-5.3-codex-low': { value: 'gpt-5.3-codex-low', label: 'GPT-5.3 Codex Low' }, - 'gpt-5.3-codex-low-fast': { value: 'gpt-5.3-codex-low-fast', label: 'GPT-5.3 Codex Low Fast' }, - 'gpt-5.3-codex-spark-preview': { value: 'gpt-5.3-codex-spark-preview', label: 'GPT-5.3 Codex Spark' }, - 'gpt-5.2-codex-xhigh': { value: 'gpt-5.2-codex-xhigh', label: 'GPT-5.2 Codex Extra High' }, - 'gpt-5.2-codex-xhigh-fast': { value: 'gpt-5.2-codex-xhigh-fast', label: 'GPT-5.2 Codex Extra High Fast' }, - 'gpt-5.2-codex-high': { value: 'gpt-5.2-codex-high', label: 'GPT-5.2 Codex High' }, - 'gpt-5.2-codex-high-fast': { value: 'gpt-5.2-codex-high-fast', label: 'GPT-5.2 Codex High Fast' }, - 'gpt-5.2-codex': { value: 'gpt-5.2-codex', label: 'GPT-5.2 Codex' }, - 'gpt-5.2-codex-fast': { value: 'gpt-5.2-codex-fast', label: 'GPT-5.2 Codex Fast' }, - 'gpt-5.2-codex-low': { value: 'gpt-5.2-codex-low', label: 'GPT-5.2 Codex Low' }, - 'gpt-5.2-codex-low-fast': { value: 'gpt-5.2-codex-low-fast', label: 'GPT-5.2 Codex Low Fast' }, - 'gpt-5.2': { value: 'gpt-5.2', label: 'GPT-5.2' }, + 'gpt-5.4-xhigh': { value: 'gpt-5.4-xhigh', label: 'GPT-5.4 1M Extra High' }, + 'claude-4.6-opus-high': { value: 'claude-4.6-opus-high', label: 'Opus 4.6 1M' }, + 'claude-4.6-opus-max': { value: 'claude-4.6-opus-max', label: 'Opus 4.6 1M Max' }, + 'claude-4.6-opus-high-thinking': { value: 'claude-4.6-opus-high-thinking', label: 'Opus 4.6 1M Thinking' }, + 'claude-4.6-opus-max-thinking': { value: 'claude-4.6-opus-max-thinking', label: 'Opus 4.6 1M Max Thinking' }, + 'claude-4.6-opus-max-thinking-fast': { value: 'claude-4.6-opus-max-thinking-fast', label: 'Opus 4.6 1M Max Thinking Fast' }, + 'claude-4.5-opus-high': { value: 'claude-4.5-opus-high', label: 'Opus 4.5' }, + 'claude-4.5-opus-high-thinking': { value: 'claude-4.5-opus-high-thinking', label: 'Opus 4.5 Thinking' }, + 'gpt-5.2-low': { value: 'gpt-5.2-low', label: 'GPT-5.2 Low' }, + 'gpt-5.2-low-fast': { value: 'gpt-5.2-low-fast', label: 'GPT-5.2 Low Fast' }, + 'gpt-5.2-fast': { value: 'gpt-5.2-fast', label: 'GPT-5.2 Fast' }, 'gpt-5.2-high': { value: 'gpt-5.2-high', label: 'GPT-5.2 High' }, - 'gpt-5.1-codex-max': { value: 'gpt-5.1-codex-max', label: 'GPT-5.1 Codex Max' }, - 'gpt-5.1-codex-max-high': { value: 'gpt-5.1-codex-max-high', label: 'GPT-5.1 Codex Max High' }, - 'gpt-5.1-codex-mini': { value: 'gpt-5.1-codex-mini', label: 'GPT-5.1 Codex Mini' }, - 'gpt-5.1-high': { value: 'gpt-5.1-high', label: 'GPT-5.1 High' }, + 'gpt-5.2-high-fast': { value: 'gpt-5.2-high-fast', label: 'GPT-5.2 High Fast' }, + 'gpt-5.2-xhigh': { value: 'gpt-5.2-xhigh', label: 'GPT-5.2 Extra High' }, + 'gpt-5.2-xhigh-fast': { value: 'gpt-5.2-xhigh-fast', label: 'GPT-5.2 Extra High Fast' }, 'gemini-3.1-pro': { value: 'gemini-3.1-pro', label: 'Gemini 3.1 Pro' }, - 'gemini-3-pro': { value: 'gemini-3-pro', label: 'Gemini 3 Pro' }, + 'gpt-5.4-mini-none': { value: 'gpt-5.4-mini-none', label: 'GPT-5.4 Mini None' }, + 'gpt-5.4-mini-low': { value: 'gpt-5.4-mini-low', label: 'GPT-5.4 Mini Low' }, + 'gpt-5.4-mini-medium': { value: 'gpt-5.4-mini-medium', label: 'GPT-5.4 Mini' }, + 'gpt-5.4-mini-high': { value: 'gpt-5.4-mini-high', label: 'GPT-5.4 Mini High' }, + 'gpt-5.4-mini-xhigh': { value: 'gpt-5.4-mini-xhigh', label: 'GPT-5.4 Mini Extra High' }, + 'gpt-5.4-nano-none': { value: 'gpt-5.4-nano-none', label: 'GPT-5.4 Nano None' }, + 'gpt-5.4-nano-low': { value: 'gpt-5.4-nano-low', label: 'GPT-5.4 Nano Low' }, + 'gpt-5.4-nano-medium': { value: 'gpt-5.4-nano-medium', label: 'GPT-5.4 Nano' }, + 'gpt-5.4-nano-high': { value: 'gpt-5.4-nano-high', label: 'GPT-5.4 Nano High' }, + 'gpt-5.4-nano-xhigh': { value: 'gpt-5.4-nano-xhigh', label: 'GPT-5.4 Nano Extra High' }, + 'grok-4-20': { value: 'grok-4-20', label: 'Grok 4.20' }, + 'grok-4-20-thinking': { value: 'grok-4-20-thinking', label: 'Grok 4.20 Thinking' }, + 'claude-4.5-sonnet': { value: 'claude-4.5-sonnet', label: 'Sonnet 4.5 1M' }, + 'claude-4.5-sonnet-thinking': { value: 'claude-4.5-sonnet-thinking', label: 'Sonnet 4.5 1M Thinking' }, + 'gpt-5.1-low': { value: 'gpt-5.1-low', label: 'GPT-5.1 Low' }, + 'gpt-5.1': { value: 'gpt-5.1', label: 'GPT-5.1' }, + 'gpt-5.1-high': { value: 'gpt-5.1-high', label: 'GPT-5.1 High' }, 'gemini-3-flash': { value: 'gemini-3-flash', label: 'Gemini 3 Flash' }, - 'grok': { value: 'grok', label: 'Grok' }, + 'gpt-5.1-codex-mini-low': { value: 'gpt-5.1-codex-mini-low', label: 'Codex 5.1 Mini Low' }, + 'gpt-5.1-codex-mini': { value: 'gpt-5.1-codex-mini', label: 'Codex 5.1 Mini' }, + 'gpt-5.1-codex-mini-high': { value: 'gpt-5.1-codex-mini-high', label: 'Codex 5.1 Mini High' }, + 'claude-4-sonnet': { value: 'claude-4-sonnet', label: 'Sonnet 4' }, + 'claude-4-sonnet-1m': { value: 'claude-4-sonnet-1m', label: 'Sonnet 4 1M' }, + 'claude-4-sonnet-thinking': { value: 'claude-4-sonnet-thinking', label: 'Sonnet 4 Thinking' }, + 'claude-4-sonnet-1m-thinking': { value: 'claude-4-sonnet-1m-thinking', label: 'Sonnet 4 1M Thinking' }, + 'gpt-5-mini': { value: 'gpt-5-mini', label: 'GPT-5 Mini' }, 'kimi-k2.5': { value: 'kimi-k2.5', label: 'Kimi K2.5' }, }; @@ -765,14 +965,14 @@ export const CLIRegistry = { codex: { name: 'Codex CLI', package: '@openai/codex', - version: '0.114.0', + version: '0.124.0', install: 'npm install -g @openai/codex', npmLink: 'https://www.npmjs.com/package/@openai/codex', }, gemini: { name: 'Gemini CLI', package: '@google/gemini-cli', - version: '0.33.0', + version: '0.39.1', install: 'npm install -g @google/gemini-cli', npmLink: 'https://www.npmjs.com/package/@google/gemini-cli', }, @@ -820,7 +1020,7 @@ export const DefaultModels = { claude: 'sonnet', codex: 'gpt-5.4', gemini: 'gemini-3.1-pro-preview', - cursor: 'opus-4.6-thinking', + cursor: 'composer-2-fast', droid: 'opus-4.6-fast', opencode: 'openai/gpt-5.2', } as const; diff --git a/packages/sdk-py/agent_relay/__init__.py b/packages/sdk-py/agent_relay/__init__.py new file mode 100644 index 000000000..5f6b09e22 --- /dev/null +++ b/packages/sdk-py/agent_relay/__init__.py @@ -0,0 +1,21 @@ +"""Agent Relay Python SDK.""" + +from .models import ( + CLIs, + CLIVersions, + CLI_REGISTRY, + DEFAULT_MODELS, + Models, + ModelOptions, + SwarmPatterns, +) + +__all__ = [ + "CLIs", + "CLIVersions", + "CLI_REGISTRY", + "DEFAULT_MODELS", + "Models", + "ModelOptions", + "SwarmPatterns", +] diff --git a/packages/sdk-py/agent_relay/models.py b/packages/sdk-py/agent_relay/models.py new file mode 100644 index 000000000..c20bc2e03 --- /dev/null +++ b/packages/sdk-py/agent_relay/models.py @@ -0,0 +1,498 @@ +""" +AUTO-GENERATED FILE - DO NOT EDIT +Generated from packages/shared/cli-registry.yaml +Run: npm run codegen:models +""" + +from typing import Final, TypedDict, List + + +class CLIVersions: + """CLI tool versions. Update packages/shared/cli-registry.yaml to change versions.""" + CLAUDE: Final[str] = "2.1.72" # Claude Code + CODEX: Final[str] = "0.124.0" # Codex CLI + GEMINI: Final[str] = "0.39.1" # Gemini CLI + CURSOR: Final[str] = "2026.02.27-e7d2ef6" # Cursor + DROID: Final[str] = "0.1.0" # Droid + OPENCODE: Final[str] = "1.2.24" # OpenCode + AIDER: Final[str] = "0.72.1" # Aider + GOOSE: Final[str] = "1.0.16" # Goose + + +class CLIs: + """Supported CLI tools.""" + CLAUDE: Final[str] = "claude" + CODEX: Final[str] = "codex" + GEMINI: Final[str] = "gemini" + CURSOR: Final[str] = "cursor" + DROID: Final[str] = "droid" + OPENCODE: Final[str] = "opencode" + AIDER: Final[str] = "aider" + GOOSE: Final[str] = "goose" + + +class ClaudeModels: + """Claude Code model identifiers.""" + SONNET: Final[str] = "sonnet" # Sonnet (default) + OPUS: Final[str] = "opus" # Opus + HAIKU: Final[str] = "haiku" # Haiku + + +class CodexModels: + """Codex CLI model identifiers.""" + GPT_5_5: Final[str] = "gpt-5.4" # GPT-5.4 — Frontier model for complex coding, research, and real-world work. (default) + GPT_5_4: Final[str] = "gpt-5.4" # GPT-5.4 — Strong model for everyday coding (default) + GPT_5_3_CODEX: Final[str] = "gpt-5.3-codex" # GPT-5.3 Codex — Frontier agentic coding model + GPT_5_3_CODEX_SPARK: Final[str] = "gpt-5.3-codex-spark" # GPT-5.3 Codex Spark — Ultra-fast coding model + GPT_5_2_CODEX: Final[str] = "gpt-5.2-codex" # GPT-5.2 Codex — Frontier agentic coding model + GPT_5_2: Final[str] = "gpt-5.2" # GPT-5.2 — Frontier model, knowledge & reasoning + GPT_5_1_CODEX_MAX: Final[str] = "gpt-5.1-codex-max" # GPT-5.1 Codex Max — Deep and fast reasoning + GPT_5_1_CODEX_MINI: Final[str] = "gpt-5.1-codex-mini" # GPT-5.1 Codex Mini — Cheaper, faster + + +class GeminiModels: + """Gemini CLI model identifiers.""" + GEMINI_3_1_PRO_PREVIEW: Final[str] = "gemini-3.1-pro-preview" # Gemini 3.1 Pro Preview (default) + GEMINI_3_FLASH_PREVIEW: Final[str] = "gemini-3-flash-preview" # Gemini 3 Flash Preview + GEMINI_2_5_PRO: Final[str] = "gemini-2.5-pro" # Gemini 2.5 Pro + GEMINI_2_5_FLASH: Final[str] = "gemini-2.5-flash" # Gemini 2.5 Flash + GEMINI_2_5_FLASH_LITE: Final[str] = "gemini-2.5-flash-lite" # Gemini 2.5 Flash Lite + + +class CursorModels: + """Cursor model identifiers.""" + COMPOSER_2_FAST: Final[str] = "composer-2-fast" # Composer 2 Fast (default) + COMPOSER_2: Final[str] = "composer-2" # Composer 2 + COMPOSER_1_5: Final[str] = "composer-1.5" # Composer 1.5 + GPT_5_3_CODEX_LOW: Final[str] = "gpt-5.3-codex-low" # Codex 5.3 Low + GPT_5_3_CODEX_LOW_FAST: Final[str] = "gpt-5.3-codex-low-fast" # Codex 5.3 Low Fast + GPT_5_3_CODEX: Final[str] = "gpt-5.3-codex" # Codex 5.3 + GPT_5_3_CODEX_FAST: Final[str] = "gpt-5.3-codex-fast" # Codex 5.3 Fast + GPT_5_3_CODEX_HIGH: Final[str] = "gpt-5.3-codex-high" # Codex 5.3 High + GPT_5_3_CODEX_HIGH_FAST: Final[str] = "gpt-5.3-codex-high-fast" # Codex 5.3 High Fast + GPT_5_3_CODEX_XHIGH: Final[str] = "gpt-5.3-codex-xhigh" # Codex 5.3 Extra High + GPT_5_3_CODEX_XHIGH_FAST: Final[str] = "gpt-5.3-codex-xhigh-fast" # Codex 5.3 Extra High Fast + GPT_5_2: Final[str] = "gpt-5.2" # GPT-5.2 + GPT_5_3_CODEX_SPARK_PREVIEW_LOW: Final[str] = "gpt-5.3-codex-spark-preview-low" # Codex 5.3 Spark Low + GPT_5_3_CODEX_SPARK_PREVIEW: Final[str] = "gpt-5.3-codex-spark-preview" # Codex 5.3 Spark + GPT_5_3_CODEX_SPARK_PREVIEW_HIGH: Final[str] = "gpt-5.3-codex-spark-preview-high" # Codex 5.3 Spark High + GPT_5_3_CODEX_SPARK_PREVIEW_XHIGH: Final[str] = "gpt-5.3-codex-spark-preview-xhigh" # Codex 5.3 Spark Extra High + GPT_5_2_CODEX_LOW: Final[str] = "gpt-5.2-codex-low" # Codex 5.2 Low + GPT_5_2_CODEX_LOW_FAST: Final[str] = "gpt-5.2-codex-low-fast" # Codex 5.2 Low Fast + GPT_5_2_CODEX: Final[str] = "gpt-5.2-codex" # Codex 5.2 + GPT_5_2_CODEX_FAST: Final[str] = "gpt-5.2-codex-fast" # Codex 5.2 Fast + GPT_5_2_CODEX_HIGH: Final[str] = "gpt-5.2-codex-high" # Codex 5.2 High + GPT_5_2_CODEX_HIGH_FAST: Final[str] = "gpt-5.2-codex-high-fast" # Codex 5.2 High Fast + GPT_5_2_CODEX_XHIGH: Final[str] = "gpt-5.2-codex-xhigh" # Codex 5.2 Extra High + GPT_5_2_CODEX_XHIGH_FAST: Final[str] = "gpt-5.2-codex-xhigh-fast" # Codex 5.2 Extra High Fast + GPT_5_1_CODEX_MAX_LOW: Final[str] = "gpt-5.1-codex-max-low" # Codex 5.1 Max Low + GPT_5_1_CODEX_MAX_LOW_FAST: Final[str] = "gpt-5.1-codex-max-low-fast" # Codex 5.1 Max Low Fast + GPT_5_1_CODEX_MAX_MEDIUM: Final[str] = "gpt-5.1-codex-max-medium" # Codex 5.1 Max + GPT_5_1_CODEX_MAX_MEDIUM_FAST: Final[str] = "gpt-5.1-codex-max-medium-fast" # Codex 5.1 Max Medium Fast + GPT_5_1_CODEX_MAX_HIGH: Final[str] = "gpt-5.1-codex-max-high" # Codex 5.1 Max High + GPT_5_1_CODEX_MAX_HIGH_FAST: Final[str] = "gpt-5.1-codex-max-high-fast" # Codex 5.1 Max High Fast + GPT_5_1_CODEX_MAX_XHIGH: Final[str] = "gpt-5.1-codex-max-xhigh" # Codex 5.1 Max Extra High + GPT_5_1_CODEX_MAX_XHIGH_FAST: Final[str] = "gpt-5.1-codex-max-xhigh-fast" # Codex 5.1 Max Extra High Fast + CLAUDE_OPUS_4_7_THINKING_HIGH: Final[str] = "claude-opus-4-7-thinking-high" # Opus 4.7 1M High Thinking + GPT_5_4_HIGH: Final[str] = "gpt-5.4-high" # GPT-5.4 1M High + GPT_5_4_HIGH_FAST: Final[str] = "gpt-5.4-high-fast" # GPT-5.4 High Fast + GPT_5_4_XHIGH_FAST: Final[str] = "gpt-5.4-xhigh-fast" # GPT-5.4 Extra High Fast + CLAUDE_4_6_OPUS_HIGH_THINKING_FAST: Final[str] = "claude-4.6-opus-high-thinking-fast" # Opus 4.6 1M Thinking Fast + CLAUDE_4_6_SONNET_MEDIUM: Final[str] = "claude-4.6-sonnet-medium" # Sonnet 4.6 1M + CLAUDE_4_6_SONNET_MEDIUM_THINKING: Final[str] = "claude-4.6-sonnet-medium-thinking" # Sonnet 4.6 1M Thinking + CLAUDE_OPUS_4_7_LOW: Final[str] = "claude-opus-4-7-low" # Opus 4.7 1M Low + CLAUDE_OPUS_4_7_MEDIUM: Final[str] = "claude-opus-4-7-medium" # Opus 4.7 1M Medium + CLAUDE_OPUS_4_7_HIGH: Final[str] = "claude-opus-4-7-high" # Opus 4.7 1M High + CLAUDE_OPUS_4_7_XHIGH: Final[str] = "claude-opus-4-7-xhigh" # Opus 4.7 1M + CLAUDE_OPUS_4_7_MAX: Final[str] = "claude-opus-4-7-max" # Opus 4.7 1M Max + CLAUDE_OPUS_4_7_THINKING_LOW: Final[str] = "claude-opus-4-7-thinking-low" # Opus 4.7 1M Low Thinking + CLAUDE_OPUS_4_7_THINKING_MEDIUM: Final[str] = "claude-opus-4-7-thinking-medium" # Opus 4.7 1M Medium Thinking + CLAUDE_OPUS_4_7_THINKING_XHIGH: Final[str] = "claude-opus-4-7-thinking-xhigh" # Opus 4.7 1M Thinking + CLAUDE_OPUS_4_7_THINKING_MAX: Final[str] = "claude-opus-4-7-thinking-max" # Opus 4.7 1M Max Thinking + GPT_5_4_LOW: Final[str] = "gpt-5.4-low" # GPT-5.4 1M Low + GPT_5_4_MEDIUM: Final[str] = "gpt-5.4-medium" # GPT-5.4 1M + GPT_5_4_MEDIUM_FAST: Final[str] = "gpt-5.4-medium-fast" # GPT-5.4 Fast + GPT_5_4_XHIGH: Final[str] = "gpt-5.4-xhigh" # GPT-5.4 1M Extra High + CLAUDE_4_6_OPUS_HIGH: Final[str] = "claude-4.6-opus-high" # Opus 4.6 1M + CLAUDE_4_6_OPUS_MAX: Final[str] = "claude-4.6-opus-max" # Opus 4.6 1M Max + CLAUDE_4_6_OPUS_HIGH_THINKING: Final[str] = "claude-4.6-opus-high-thinking" # Opus 4.6 1M Thinking + CLAUDE_4_6_OPUS_MAX_THINKING: Final[str] = "claude-4.6-opus-max-thinking" # Opus 4.6 1M Max Thinking + CLAUDE_4_6_OPUS_MAX_THINKING_FAST: Final[str] = "claude-4.6-opus-max-thinking-fast" # Opus 4.6 1M Max Thinking Fast + CLAUDE_4_5_OPUS_HIGH: Final[str] = "claude-4.5-opus-high" # Opus 4.5 + CLAUDE_4_5_OPUS_HIGH_THINKING: Final[str] = "claude-4.5-opus-high-thinking" # Opus 4.5 Thinking + GPT_5_2_LOW: Final[str] = "gpt-5.2-low" # GPT-5.2 Low + GPT_5_2_LOW_FAST: Final[str] = "gpt-5.2-low-fast" # GPT-5.2 Low Fast + GPT_5_2_FAST: Final[str] = "gpt-5.2-fast" # GPT-5.2 Fast + GPT_5_2_HIGH: Final[str] = "gpt-5.2-high" # GPT-5.2 High + GPT_5_2_HIGH_FAST: Final[str] = "gpt-5.2-high-fast" # GPT-5.2 High Fast + GPT_5_2_XHIGH: Final[str] = "gpt-5.2-xhigh" # GPT-5.2 Extra High + GPT_5_2_XHIGH_FAST: Final[str] = "gpt-5.2-xhigh-fast" # GPT-5.2 Extra High Fast + GEMINI_3_1_PRO: Final[str] = "gemini-3.1-pro" # Gemini 3.1 Pro + GPT_5_4_MINI_NONE: Final[str] = "gpt-5.4-mini-none" # GPT-5.4 Mini None + GPT_5_4_MINI_LOW: Final[str] = "gpt-5.4-mini-low" # GPT-5.4 Mini Low + GPT_5_4_MINI_MEDIUM: Final[str] = "gpt-5.4-mini-medium" # GPT-5.4 Mini + GPT_5_4_MINI_HIGH: Final[str] = "gpt-5.4-mini-high" # GPT-5.4 Mini High + GPT_5_4_MINI_XHIGH: Final[str] = "gpt-5.4-mini-xhigh" # GPT-5.4 Mini Extra High + GPT_5_4_NANO_NONE: Final[str] = "gpt-5.4-nano-none" # GPT-5.4 Nano None + GPT_5_4_NANO_LOW: Final[str] = "gpt-5.4-nano-low" # GPT-5.4 Nano Low + GPT_5_4_NANO_MEDIUM: Final[str] = "gpt-5.4-nano-medium" # GPT-5.4 Nano + GPT_5_4_NANO_HIGH: Final[str] = "gpt-5.4-nano-high" # GPT-5.4 Nano High + GPT_5_4_NANO_XHIGH: Final[str] = "gpt-5.4-nano-xhigh" # GPT-5.4 Nano Extra High + GROK_4_20: Final[str] = "grok-4-20" # Grok 4.20 + GROK_4_20_THINKING: Final[str] = "grok-4-20-thinking" # Grok 4.20 Thinking + CLAUDE_4_5_SONNET: Final[str] = "claude-4.5-sonnet" # Sonnet 4.5 1M + CLAUDE_4_5_SONNET_THINKING: Final[str] = "claude-4.5-sonnet-thinking" # Sonnet 4.5 1M Thinking + GPT_5_1_LOW: Final[str] = "gpt-5.1-low" # GPT-5.1 Low + GPT_5_1: Final[str] = "gpt-5.1" # GPT-5.1 + GPT_5_1_HIGH: Final[str] = "gpt-5.1-high" # GPT-5.1 High + GEMINI_3_FLASH: Final[str] = "gemini-3-flash" # Gemini 3 Flash + GPT_5_1_CODEX_MINI_LOW: Final[str] = "gpt-5.1-codex-mini-low" # Codex 5.1 Mini Low + GPT_5_1_CODEX_MINI: Final[str] = "gpt-5.1-codex-mini" # Codex 5.1 Mini + GPT_5_1_CODEX_MINI_HIGH: Final[str] = "gpt-5.1-codex-mini-high" # Codex 5.1 Mini High + CLAUDE_4_SONNET: Final[str] = "claude-4-sonnet" # Sonnet 4 + CLAUDE_4_SONNET_1M: Final[str] = "claude-4-sonnet-1m" # Sonnet 4 1M + CLAUDE_4_SONNET_THINKING: Final[str] = "claude-4-sonnet-thinking" # Sonnet 4 Thinking + CLAUDE_4_SONNET_1M_THINKING: Final[str] = "claude-4-sonnet-1m-thinking" # Sonnet 4 1M Thinking + GPT_5_MINI: Final[str] = "gpt-5-mini" # GPT-5 Mini + KIMI_K2_5: Final[str] = "kimi-k2.5" # Kimi K2.5 + + +class DroidModels: + """Droid model identifiers.""" + OPUS_4_6_FAST: Final[str] = "opus-4.6-fast" # Opus 4.6 Fast Mode (12x) (default) + OPUS_4_5: Final[str] = "opus-4.5" # Opus 4.5 (2x) + SONNET_4_5: Final[str] = "sonnet-4.5" # Sonnet 4.5 (1.2x) + HAIKU_4_5: Final[str] = "haiku-4.5" # Haiku 4.5 (0.4x) + GPT_5_2: Final[str] = "gpt-5.2" # GPT-5.2 (0.7x) + GPT_5_2_CODEX: Final[str] = "gpt-5.2-codex" # GPT-5.2 Codex (0.7x) + GEMINI_3_FLASH: Final[str] = "gemini-3-flash" # Gemini 3 Flash (0.2x) + DROID_CORE: Final[str] = "droid-core-glm-4.7" # Droid Core (GLM-4.7) (0.25x) + + +class OpencodeModels: + """OpenCode model identifiers.""" + OPENCODE_BIG_PICKLE: Final[str] = "opencode/big-pickle" # Big Pickle + OPENCODE_GPT_5_NANO: Final[str] = "opencode/gpt-5-nano" # GPT-5 Nano (OpenCode) + OPENCODE_MIMO_V2_FLASH_FREE: Final[str] = "opencode/mimo-v2-flash-free" # Mimo V2 Flash Free + OPENCODE_MINIMAX_M2_5_FREE: Final[str] = "opencode/minimax-m2.5-free" # MiniMax M2.5 Free + OPENAI_CODEX_MINI_LATEST: Final[str] = "openai/codex-mini-latest" # Codex Mini Latest + OPENAI_GPT_3_5_TURBO: Final[str] = "openai/gpt-3.5-turbo" # GPT-3.5 Turbo + OPENAI_GPT_4: Final[str] = "openai/gpt-4" # GPT-4 + OPENAI_GPT_4_TURBO: Final[str] = "openai/gpt-4-turbo" # GPT-4 Turbo + OPENAI_GPT_4_1: Final[str] = "openai/gpt-4.1" # GPT-4.1 + OPENAI_GPT_4_1_MINI: Final[str] = "openai/gpt-4.1-mini" # GPT-4.1 Mini + OPENAI_GPT_4_1_NANO: Final[str] = "openai/gpt-4.1-nano" # GPT-4.1 Nano + OPENAI_GPT_4O: Final[str] = "openai/gpt-4o" # GPT-4o + OPENAI_GPT_4O_2024_05_13: Final[str] = "openai/gpt-4o-2024-05-13" # GPT-4o (2024-05-13) + OPENAI_GPT_4O_2024_08_06: Final[str] = "openai/gpt-4o-2024-08-06" # GPT-4o (2024-08-06) + OPENAI_GPT_4O_2024_11_20: Final[str] = "openai/gpt-4o-2024-11-20" # GPT-4o (2024-11-20) + OPENAI_GPT_4O_MINI: Final[str] = "openai/gpt-4o-mini" # GPT-4o Mini + OPENAI_GPT_5: Final[str] = "openai/gpt-5" # GPT-5 + OPENAI_GPT_5_CODEX: Final[str] = "openai/gpt-5-codex" # GPT-5 Codex + OPENAI_GPT_5_MINI: Final[str] = "openai/gpt-5-mini" # GPT-5 Mini + OPENAI_GPT_5_NANO: Final[str] = "openai/gpt-5-nano" # GPT-5 Nano + OPENAI_GPT_5_PRO: Final[str] = "openai/gpt-5-pro" # GPT-5 Pro + OPENAI_GPT_5_1: Final[str] = "openai/gpt-5.1" # GPT-5.1 + OPENAI_GPT_5_1_CHAT_LATEST: Final[str] = "openai/gpt-5.1-chat-latest" # GPT-5.1 Chat Latest + OPENAI_GPT_5_1_CODEX: Final[str] = "openai/gpt-5.1-codex" # GPT-5.1 Codex + OPENAI_GPT_5_1_CODEX_MAX: Final[str] = "openai/gpt-5.1-codex-max" # GPT-5.1 Codex Max + OPENAI_GPT_5_1_CODEX_MINI: Final[str] = "openai/gpt-5.1-codex-mini" # GPT-5.1 Codex Mini + OPENAI_GPT_5_2: Final[str] = "openai/gpt-5.2" # GPT-5.2 (default) + OPENAI_GPT_5_2_CHAT_LATEST: Final[str] = "openai/gpt-5.2-chat-latest" # GPT-5.2 Chat Latest + OPENAI_GPT_5_2_CODEX: Final[str] = "openai/gpt-5.2-codex" # GPT-5.2 Codex + OPENAI_GPT_5_2_PRO: Final[str] = "openai/gpt-5.2-pro" # GPT-5.2 Pro + OPENAI_GPT_5_3_CODEX: Final[str] = "openai/gpt-5.3-codex" # GPT-5.3 Codex + OPENAI_GPT_5_3_CODEX_SPARK: Final[str] = "openai/gpt-5.3-codex-spark" # GPT-5.3 Codex Spark + OPENAI_GPT_5_4: Final[str] = "openai/gpt-5.4" # GPT-5.4 + OPENAI_GPT_5_4_PRO: Final[str] = "openai/gpt-5.4-pro" # GPT-5.4 Pro + OPENAI_O1: Final[str] = "openai/o1" # O1 + OPENAI_O1_MINI: Final[str] = "openai/o1-mini" # O1 Mini + OPENAI_O1_PREVIEW: Final[str] = "openai/o1-preview" # O1 Preview + OPENAI_O1_PRO: Final[str] = "openai/o1-pro" # O1 Pro + OPENAI_O3: Final[str] = "openai/o3" # O3 + OPENAI_O3_DEEP_RESEARCH: Final[str] = "openai/o3-deep-research" # O3 Deep Research + OPENAI_O3_MINI: Final[str] = "openai/o3-mini" # O3 Mini + OPENAI_O3_PRO: Final[str] = "openai/o3-pro" # O3 Pro + OPENAI_O4_MINI: Final[str] = "openai/o4-mini" # O4 Mini + OPENAI_O4_MINI_DEEP_RESEARCH: Final[str] = "openai/o4-mini-deep-research" # O4 Mini Deep Research + + +class ModelOption(TypedDict): + """Model option for UI dropdowns.""" + value: str + label: str + + +CLAUDE_MODEL_OPTIONS: Final[List[ModelOption]] = [ + {"value": "sonnet", "label": "Sonnet"}, + {"value": "opus", "label": "Opus"}, + {"value": "haiku", "label": "Haiku"}, +] + +CODEX_MODEL_OPTIONS: Final[List[ModelOption]] = [ + {"value": "gpt-5.4", "label": "GPT-5.4 — Frontier model for complex coding, research, and real-world work."}, + {"value": "gpt-5.4", "label": "GPT-5.4 — Strong model for everyday coding"}, + {"value": "gpt-5.3-codex", "label": "GPT-5.3 Codex — Frontier agentic coding model"}, + {"value": "gpt-5.3-codex-spark", "label": "GPT-5.3 Codex Spark — Ultra-fast coding model"}, + {"value": "gpt-5.2-codex", "label": "GPT-5.2 Codex — Frontier agentic coding model"}, + {"value": "gpt-5.2", "label": "GPT-5.2 — Frontier model, knowledge & reasoning"}, + {"value": "gpt-5.1-codex-max", "label": "GPT-5.1 Codex Max — Deep and fast reasoning"}, + {"value": "gpt-5.1-codex-mini", "label": "GPT-5.1 Codex Mini — Cheaper, faster"}, +] + +GEMINI_MODEL_OPTIONS: Final[List[ModelOption]] = [ + {"value": "gemini-3.1-pro-preview", "label": "Gemini 3.1 Pro Preview"}, + {"value": "gemini-3-flash-preview", "label": "Gemini 3 Flash Preview"}, + {"value": "gemini-2.5-pro", "label": "Gemini 2.5 Pro"}, + {"value": "gemini-2.5-flash", "label": "Gemini 2.5 Flash"}, + {"value": "gemini-2.5-flash-lite", "label": "Gemini 2.5 Flash Lite"}, +] + +CURSOR_MODEL_OPTIONS: Final[List[ModelOption]] = [ + {"value": "composer-2-fast", "label": "Composer 2 Fast"}, + {"value": "composer-2", "label": "Composer 2"}, + {"value": "composer-1.5", "label": "Composer 1.5"}, + {"value": "gpt-5.3-codex-low", "label": "Codex 5.3 Low"}, + {"value": "gpt-5.3-codex-low-fast", "label": "Codex 5.3 Low Fast"}, + {"value": "gpt-5.3-codex", "label": "Codex 5.3"}, + {"value": "gpt-5.3-codex-fast", "label": "Codex 5.3 Fast"}, + {"value": "gpt-5.3-codex-high", "label": "Codex 5.3 High"}, + {"value": "gpt-5.3-codex-high-fast", "label": "Codex 5.3 High Fast"}, + {"value": "gpt-5.3-codex-xhigh", "label": "Codex 5.3 Extra High"}, + {"value": "gpt-5.3-codex-xhigh-fast", "label": "Codex 5.3 Extra High Fast"}, + {"value": "gpt-5.2", "label": "GPT-5.2"}, + {"value": "gpt-5.3-codex-spark-preview-low", "label": "Codex 5.3 Spark Low"}, + {"value": "gpt-5.3-codex-spark-preview", "label": "Codex 5.3 Spark"}, + {"value": "gpt-5.3-codex-spark-preview-high", "label": "Codex 5.3 Spark High"}, + {"value": "gpt-5.3-codex-spark-preview-xhigh", "label": "Codex 5.3 Spark Extra High"}, + {"value": "gpt-5.2-codex-low", "label": "Codex 5.2 Low"}, + {"value": "gpt-5.2-codex-low-fast", "label": "Codex 5.2 Low Fast"}, + {"value": "gpt-5.2-codex", "label": "Codex 5.2"}, + {"value": "gpt-5.2-codex-fast", "label": "Codex 5.2 Fast"}, + {"value": "gpt-5.2-codex-high", "label": "Codex 5.2 High"}, + {"value": "gpt-5.2-codex-high-fast", "label": "Codex 5.2 High Fast"}, + {"value": "gpt-5.2-codex-xhigh", "label": "Codex 5.2 Extra High"}, + {"value": "gpt-5.2-codex-xhigh-fast", "label": "Codex 5.2 Extra High Fast"}, + {"value": "gpt-5.1-codex-max-low", "label": "Codex 5.1 Max Low"}, + {"value": "gpt-5.1-codex-max-low-fast", "label": "Codex 5.1 Max Low Fast"}, + {"value": "gpt-5.1-codex-max-medium", "label": "Codex 5.1 Max"}, + {"value": "gpt-5.1-codex-max-medium-fast", "label": "Codex 5.1 Max Medium Fast"}, + {"value": "gpt-5.1-codex-max-high", "label": "Codex 5.1 Max High"}, + {"value": "gpt-5.1-codex-max-high-fast", "label": "Codex 5.1 Max High Fast"}, + {"value": "gpt-5.1-codex-max-xhigh", "label": "Codex 5.1 Max Extra High"}, + {"value": "gpt-5.1-codex-max-xhigh-fast", "label": "Codex 5.1 Max Extra High Fast"}, + {"value": "claude-opus-4-7-thinking-high", "label": "Opus 4.7 1M High Thinking"}, + {"value": "gpt-5.4-high", "label": "GPT-5.4 1M High"}, + {"value": "gpt-5.4-high-fast", "label": "GPT-5.4 High Fast"}, + {"value": "gpt-5.4-xhigh-fast", "label": "GPT-5.4 Extra High Fast"}, + {"value": "claude-4.6-opus-high-thinking-fast", "label": "Opus 4.6 1M Thinking Fast"}, + {"value": "claude-4.6-sonnet-medium", "label": "Sonnet 4.6 1M"}, + {"value": "claude-4.6-sonnet-medium-thinking", "label": "Sonnet 4.6 1M Thinking"}, + {"value": "claude-opus-4-7-low", "label": "Opus 4.7 1M Low"}, + {"value": "claude-opus-4-7-medium", "label": "Opus 4.7 1M Medium"}, + {"value": "claude-opus-4-7-high", "label": "Opus 4.7 1M High"}, + {"value": "claude-opus-4-7-xhigh", "label": "Opus 4.7 1M"}, + {"value": "claude-opus-4-7-max", "label": "Opus 4.7 1M Max"}, + {"value": "claude-opus-4-7-thinking-low", "label": "Opus 4.7 1M Low Thinking"}, + {"value": "claude-opus-4-7-thinking-medium", "label": "Opus 4.7 1M Medium Thinking"}, + {"value": "claude-opus-4-7-thinking-xhigh", "label": "Opus 4.7 1M Thinking"}, + {"value": "claude-opus-4-7-thinking-max", "label": "Opus 4.7 1M Max Thinking"}, + {"value": "gpt-5.4-low", "label": "GPT-5.4 1M Low"}, + {"value": "gpt-5.4-medium", "label": "GPT-5.4 1M"}, + {"value": "gpt-5.4-medium-fast", "label": "GPT-5.4 Fast"}, + {"value": "gpt-5.4-xhigh", "label": "GPT-5.4 1M Extra High"}, + {"value": "claude-4.6-opus-high", "label": "Opus 4.6 1M"}, + {"value": "claude-4.6-opus-max", "label": "Opus 4.6 1M Max"}, + {"value": "claude-4.6-opus-high-thinking", "label": "Opus 4.6 1M Thinking"}, + {"value": "claude-4.6-opus-max-thinking", "label": "Opus 4.6 1M Max Thinking"}, + {"value": "claude-4.6-opus-max-thinking-fast", "label": "Opus 4.6 1M Max Thinking Fast"}, + {"value": "claude-4.5-opus-high", "label": "Opus 4.5"}, + {"value": "claude-4.5-opus-high-thinking", "label": "Opus 4.5 Thinking"}, + {"value": "gpt-5.2-low", "label": "GPT-5.2 Low"}, + {"value": "gpt-5.2-low-fast", "label": "GPT-5.2 Low Fast"}, + {"value": "gpt-5.2-fast", "label": "GPT-5.2 Fast"}, + {"value": "gpt-5.2-high", "label": "GPT-5.2 High"}, + {"value": "gpt-5.2-high-fast", "label": "GPT-5.2 High Fast"}, + {"value": "gpt-5.2-xhigh", "label": "GPT-5.2 Extra High"}, + {"value": "gpt-5.2-xhigh-fast", "label": "GPT-5.2 Extra High Fast"}, + {"value": "gemini-3.1-pro", "label": "Gemini 3.1 Pro"}, + {"value": "gpt-5.4-mini-none", "label": "GPT-5.4 Mini None"}, + {"value": "gpt-5.4-mini-low", "label": "GPT-5.4 Mini Low"}, + {"value": "gpt-5.4-mini-medium", "label": "GPT-5.4 Mini"}, + {"value": "gpt-5.4-mini-high", "label": "GPT-5.4 Mini High"}, + {"value": "gpt-5.4-mini-xhigh", "label": "GPT-5.4 Mini Extra High"}, + {"value": "gpt-5.4-nano-none", "label": "GPT-5.4 Nano None"}, + {"value": "gpt-5.4-nano-low", "label": "GPT-5.4 Nano Low"}, + {"value": "gpt-5.4-nano-medium", "label": "GPT-5.4 Nano"}, + {"value": "gpt-5.4-nano-high", "label": "GPT-5.4 Nano High"}, + {"value": "gpt-5.4-nano-xhigh", "label": "GPT-5.4 Nano Extra High"}, + {"value": "grok-4-20", "label": "Grok 4.20"}, + {"value": "grok-4-20-thinking", "label": "Grok 4.20 Thinking"}, + {"value": "claude-4.5-sonnet", "label": "Sonnet 4.5 1M"}, + {"value": "claude-4.5-sonnet-thinking", "label": "Sonnet 4.5 1M Thinking"}, + {"value": "gpt-5.1-low", "label": "GPT-5.1 Low"}, + {"value": "gpt-5.1", "label": "GPT-5.1"}, + {"value": "gpt-5.1-high", "label": "GPT-5.1 High"}, + {"value": "gemini-3-flash", "label": "Gemini 3 Flash"}, + {"value": "gpt-5.1-codex-mini-low", "label": "Codex 5.1 Mini Low"}, + {"value": "gpt-5.1-codex-mini", "label": "Codex 5.1 Mini"}, + {"value": "gpt-5.1-codex-mini-high", "label": "Codex 5.1 Mini High"}, + {"value": "claude-4-sonnet", "label": "Sonnet 4"}, + {"value": "claude-4-sonnet-1m", "label": "Sonnet 4 1M"}, + {"value": "claude-4-sonnet-thinking", "label": "Sonnet 4 Thinking"}, + {"value": "claude-4-sonnet-1m-thinking", "label": "Sonnet 4 1M Thinking"}, + {"value": "gpt-5-mini", "label": "GPT-5 Mini"}, + {"value": "kimi-k2.5", "label": "Kimi K2.5"}, +] + +DROID_MODEL_OPTIONS: Final[List[ModelOption]] = [ + {"value": "opus-4.6-fast", "label": "Opus 4.6 Fast Mode (12x)"}, + {"value": "opus-4.5", "label": "Opus 4.5 (2x)"}, + {"value": "sonnet-4.5", "label": "Sonnet 4.5 (1.2x)"}, + {"value": "haiku-4.5", "label": "Haiku 4.5 (0.4x)"}, + {"value": "gpt-5.2", "label": "GPT-5.2 (0.7x)"}, + {"value": "gpt-5.2-codex", "label": "GPT-5.2 Codex (0.7x)"}, + {"value": "gemini-3-flash", "label": "Gemini 3 Flash (0.2x)"}, + {"value": "droid-core-glm-4.7", "label": "Droid Core (GLM-4.7) (0.25x)"}, +] + +OPENCODE_MODEL_OPTIONS: Final[List[ModelOption]] = [ + {"value": "opencode/big-pickle", "label": "Big Pickle"}, + {"value": "opencode/gpt-5-nano", "label": "GPT-5 Nano (OpenCode)"}, + {"value": "opencode/mimo-v2-flash-free", "label": "Mimo V2 Flash Free"}, + {"value": "opencode/minimax-m2.5-free", "label": "MiniMax M2.5 Free"}, + {"value": "openai/codex-mini-latest", "label": "Codex Mini Latest"}, + {"value": "openai/gpt-3.5-turbo", "label": "GPT-3.5 Turbo"}, + {"value": "openai/gpt-4", "label": "GPT-4"}, + {"value": "openai/gpt-4-turbo", "label": "GPT-4 Turbo"}, + {"value": "openai/gpt-4.1", "label": "GPT-4.1"}, + {"value": "openai/gpt-4.1-mini", "label": "GPT-4.1 Mini"}, + {"value": "openai/gpt-4.1-nano", "label": "GPT-4.1 Nano"}, + {"value": "openai/gpt-4o", "label": "GPT-4o"}, + {"value": "openai/gpt-4o-2024-05-13", "label": "GPT-4o (2024-05-13)"}, + {"value": "openai/gpt-4o-2024-08-06", "label": "GPT-4o (2024-08-06)"}, + {"value": "openai/gpt-4o-2024-11-20", "label": "GPT-4o (2024-11-20)"}, + {"value": "openai/gpt-4o-mini", "label": "GPT-4o Mini"}, + {"value": "openai/gpt-5", "label": "GPT-5"}, + {"value": "openai/gpt-5-codex", "label": "GPT-5 Codex"}, + {"value": "openai/gpt-5-mini", "label": "GPT-5 Mini"}, + {"value": "openai/gpt-5-nano", "label": "GPT-5 Nano"}, + {"value": "openai/gpt-5-pro", "label": "GPT-5 Pro"}, + {"value": "openai/gpt-5.1", "label": "GPT-5.1"}, + {"value": "openai/gpt-5.1-chat-latest", "label": "GPT-5.1 Chat Latest"}, + {"value": "openai/gpt-5.1-codex", "label": "GPT-5.1 Codex"}, + {"value": "openai/gpt-5.1-codex-max", "label": "GPT-5.1 Codex Max"}, + {"value": "openai/gpt-5.1-codex-mini", "label": "GPT-5.1 Codex Mini"}, + {"value": "openai/gpt-5.2", "label": "GPT-5.2"}, + {"value": "openai/gpt-5.2-chat-latest", "label": "GPT-5.2 Chat Latest"}, + {"value": "openai/gpt-5.2-codex", "label": "GPT-5.2 Codex"}, + {"value": "openai/gpt-5.2-pro", "label": "GPT-5.2 Pro"}, + {"value": "openai/gpt-5.3-codex", "label": "GPT-5.3 Codex"}, + {"value": "openai/gpt-5.3-codex-spark", "label": "GPT-5.3 Codex Spark"}, + {"value": "openai/gpt-5.4", "label": "GPT-5.4"}, + {"value": "openai/gpt-5.4-pro", "label": "GPT-5.4 Pro"}, + {"value": "openai/o1", "label": "O1"}, + {"value": "openai/o1-mini", "label": "O1 Mini"}, + {"value": "openai/o1-preview", "label": "O1 Preview"}, + {"value": "openai/o1-pro", "label": "O1 Pro"}, + {"value": "openai/o3", "label": "O3"}, + {"value": "openai/o3-deep-research", "label": "O3 Deep Research"}, + {"value": "openai/o3-mini", "label": "O3 Mini"}, + {"value": "openai/o3-pro", "label": "O3 Pro"}, + {"value": "openai/o4-mini", "label": "O4 Mini"}, + {"value": "openai/o4-mini-deep-research", "label": "O4 Mini Deep Research"}, +] + +class Models: + """All models grouped by CLI tool.""" + Claude = ClaudeModels + Codex = CodexModels + Gemini = GeminiModels + Cursor = CursorModels + Droid = DroidModels + Opencode = OpencodeModels + + +class ModelOptions: + """All model options grouped by CLI tool (for UI dropdowns).""" + Claude = CLAUDE_MODEL_OPTIONS + Codex = CODEX_MODEL_OPTIONS + Gemini = GEMINI_MODEL_OPTIONS + Cursor = CURSOR_MODEL_OPTIONS + Droid = DROID_MODEL_OPTIONS + Opencode = OPENCODE_MODEL_OPTIONS + + +class SwarmPatterns: + """Swarm patterns for multi-agent workflows.""" + HUB_SPOKE: Final[str] = "hub-spoke" # Central coordinator distributes tasks to workers + DAG: Final[str] = "dag" # Directed acyclic graph with dependencies + FAN_OUT: Final[str] = "fan-out" # Parallel execution across multiple agents + PIPELINE: Final[str] = "pipeline" # Sequential processing through stages + CONSENSUS: Final[str] = "consensus" # Agents reach agreement before proceeding + MESH: Final[str] = "mesh" # Fully connected peer-to-peer communication + HANDOFF: Final[str] = "handoff" # Sequential handoff between agents + CASCADE: Final[str] = "cascade" # Cascading delegation + DEBATE: Final[str] = "debate" # Agents debate to reach conclusion + HIERARCHICAL: Final[str] = "hierarchical" # Tree-structured coordination + + +DEFAULT_MODELS: Final[dict] = { + "claude": "sonnet", + "codex": "gpt-5.4", + "gemini": "gemini-3.1-pro-preview", + "cursor": "composer-2-fast", + "droid": "opus-4.6-fast", + "opencode": "openai/gpt-5.2", +} + +CLI_REGISTRY: Final[dict] = { + "claude": { + "name": "Claude Code", + "package": "@anthropic-ai/claude-code", + "version": "2.1.72", + "install": "npm install -g @anthropic-ai/claude-code", + }, + "codex": { + "name": "Codex CLI", + "package": "@openai/codex", + "version": "0.124.0", + "install": "npm install -g @openai/codex", + }, + "gemini": { + "name": "Gemini CLI", + "package": "@google/gemini-cli", + "version": "0.39.1", + "install": "npm install -g @google/gemini-cli", + }, + "cursor": { + "name": "Cursor", + "package": "cursor", + "version": "2026.02.27-e7d2ef6", + "install": "Download from cursor.com", + }, + "droid": { + "name": "Droid", + "package": "droid", + "version": "0.1.0", + "install": "Download from droid.dev", + }, + "opencode": { + "name": "OpenCode", + "package": "opencode-ai", + "version": "1.2.24", + "install": "npm install -g opencode-ai", + }, + "aider": { + "name": "Aider", + "package": "aider-chat", + "version": "0.72.1", + "install": "pip install aider-chat", + }, + "goose": { + "name": "Goose", + "package": "goose-ai", + "version": "1.0.16", + "install": "pip install goose-ai", + }, +} diff --git a/packages/shared/cli-registry.yaml b/packages/shared/cli-registry.yaml index 11852a93b..cd1a60a75 100644 --- a/packages/shared/cli-registry.yaml +++ b/packages/shared/cli-registry.yaml @@ -4,455 +4,608 @@ # # To update: Edit this file, then run `npm run codegen:models` -version: "1.0" +version: '1.0' # CLI tools with their versions and model configurations clis: claude: - name: "Claude Code" - package: "@anthropic-ai/claude-code" - npm_link: "https://www.npmjs.com/package/@anthropic-ai" - version: "2.1.72" - install: "npm install -g @anthropic-ai/claude-code" + name: 'Claude Code' + package: '@anthropic-ai/claude-code' + npm_link: 'https://www.npmjs.com/package/@anthropic-ai' + version: '2.1.72' + install: 'npm install -g @anthropic-ai/claude-code' models: sonnet: - id: "sonnet" - label: "Sonnet" + id: 'sonnet' + label: 'Sonnet' default: true opus: - id: "opus" - label: "Opus" + id: 'opus' + label: 'Opus' haiku: - id: "haiku" - label: "Haiku" + id: 'haiku' + label: 'Haiku' codex: - name: "Codex CLI" - package: "@openai/codex" - npm_link: "https://www.npmjs.com/package/@openai/codex" - version: "0.114.0" - install: "npm install -g @openai/codex" + name: 'Codex CLI' + package: '@openai/codex' + npm_link: 'https://www.npmjs.com/package/@openai/codex' + version: '0.124.0' + install: 'npm install -g @openai/codex' models: + gpt_5_5: + id: 'gpt-5.4' + label: 'GPT-5.4 — Frontier model for complex coding, research, and real-world work.' + default: true + reasoning_efforts: ['low', 'medium', 'high', 'xhigh'] + default_reasoning_effort: 'high' gpt_5_4: - id: "gpt-5.4" - label: "GPT-5.4 — Latest frontier agentic coding model" + id: 'gpt-5.4' + label: 'GPT-5.4 — Strong model for everyday coding' default: true - reasoning_efforts: ["low", "medium", "high", "xhigh"] - default_reasoning_effort: "xhigh" + reasoning_efforts: ['low', 'medium', 'high', 'xhigh'] + default_reasoning_effort: 'xhigh' gpt_5_3_codex: - id: "gpt-5.3-codex" - label: "GPT-5.3 Codex — Frontier agentic coding model" - reasoning_efforts: ["low", "medium", "high", "xhigh"] - default_reasoning_effort: "xhigh" + id: 'gpt-5.3-codex' + label: 'GPT-5.3 Codex — Frontier agentic coding model' + reasoning_efforts: ['low', 'medium', 'high', 'xhigh'] + default_reasoning_effort: 'xhigh' gpt_5_3_codex_spark: - id: "gpt-5.3-codex-spark" - label: "GPT-5.3 Codex Spark — Ultra-fast coding model" - reasoning_efforts: ["low", "medium", "high", "xhigh"] - default_reasoning_effort: "xhigh" + id: 'gpt-5.3-codex-spark' + label: 'GPT-5.3 Codex Spark — Ultra-fast coding model' + reasoning_efforts: ['low', 'medium', 'high', 'xhigh'] + default_reasoning_effort: 'xhigh' gpt_5_2_codex: - id: "gpt-5.2-codex" - label: "GPT-5.2 Codex — Frontier agentic coding model" - reasoning_efforts: ["low", "medium", "high", "xhigh"] - default_reasoning_effort: "xhigh" + id: 'gpt-5.2-codex' + label: 'GPT-5.2 Codex — Frontier agentic coding model' + reasoning_efforts: ['low', 'medium', 'high', 'xhigh'] + default_reasoning_effort: 'xhigh' gpt_5_2: - id: "gpt-5.2" - label: "GPT-5.2 — Frontier model, knowledge & reasoning" - reasoning_efforts: ["low", "medium", "high", "xhigh"] - default_reasoning_effort: "xhigh" + id: 'gpt-5.2' + label: 'GPT-5.2 — Frontier model, knowledge & reasoning' + reasoning_efforts: ['low', 'medium', 'high', 'xhigh'] + default_reasoning_effort: 'xhigh' gpt_5_1_codex_max: - id: "gpt-5.1-codex-max" - label: "GPT-5.1 Codex Max — Deep and fast reasoning" - reasoning_efforts: ["low", "medium", "high", "xhigh"] - default_reasoning_effort: "xhigh" + id: 'gpt-5.1-codex-max' + label: 'GPT-5.1 Codex Max — Deep and fast reasoning' + reasoning_efforts: ['low', 'medium', 'high', 'xhigh'] + default_reasoning_effort: 'xhigh' gpt_5_1_codex_mini: - id: "gpt-5.1-codex-mini" - label: "GPT-5.1 Codex Mini — Cheaper, faster" - reasoning_efforts: ["medium", "high"] - default_reasoning_effort: "high" + id: 'gpt-5.1-codex-mini' + label: 'GPT-5.1 Codex Mini — Cheaper, faster' + reasoning_efforts: ['medium', 'high'] + default_reasoning_effort: 'high' gemini: - name: "Gemini CLI" - package: "@google/gemini-cli" - npm_link: "https://www.npmjs.com/package/@google/gemini-cli" - version: "0.33.0" - install: "npm install -g @google/gemini-cli" + name: 'Gemini CLI' + package: '@google/gemini-cli' + npm_link: 'https://www.npmjs.com/package/@google/gemini-cli' + version: '0.39.1' + install: 'npm install -g @google/gemini-cli' models: gemini_3_1_pro_preview: - id: "gemini-3.1-pro-preview" - label: "Gemini 3.1 Pro Preview" + id: 'gemini-3.1-pro-preview' + label: 'Gemini 3.1 Pro Preview' default: true gemini_3_flash_preview: - id: "gemini-3-flash-preview" - label: "Gemini 3 Flash Preview" + id: 'gemini-3-flash-preview' + label: 'Gemini 3 Flash Preview' gemini_2_5_pro: - id: "gemini-2.5-pro" - label: "Gemini 2.5 Pro" + id: 'gemini-2.5-pro' + label: 'Gemini 2.5 Pro' gemini_2_5_flash: - id: "gemini-2.5-flash" - label: "Gemini 2.5 Flash" + id: 'gemini-2.5-flash' + label: 'Gemini 2.5 Flash' gemini_2_5_flash_lite: - id: "gemini-2.5-flash-lite" - label: "Gemini 2.5 Flash Lite" + id: 'gemini-2.5-flash-lite' + label: 'Gemini 2.5 Flash Lite' cursor: - name: "Cursor" - package: "cursor" - version: "2026.02.27-e7d2ef6" - install: "Download from cursor.com" + name: 'Cursor' + package: 'cursor' + version: '2026.02.27-e7d2ef6' + install: 'Download from cursor.com' models: - opus_4_6_thinking: - id: "opus-4.6-thinking" - label: "Claude 4.6 Opus (Thinking)" + composer_2_fast: + id: 'composer-2-fast' + label: 'Composer 2 Fast' default: true - opus_4_6: - id: "opus-4.6" - label: "Claude 4.6 Opus" - opus_4_5: - id: "opus-4.5" - label: "Claude 4.5 Opus" - opus_4_5_thinking: - id: "opus-4.5-thinking" - label: "Claude 4.5 Opus (Thinking)" - sonnet_4_6: - id: "sonnet-4.6" - label: "Claude 4.6 Sonnet" - sonnet_4_6_thinking: - id: "sonnet-4.6-thinking" - label: "Claude 4.6 Sonnet (Thinking)" - sonnet_4_5: - id: "sonnet-4.5" - label: "Claude 4.5 Sonnet" - sonnet_4_5_thinking: - id: "sonnet-4.5-thinking" - label: "Claude 4.5 Sonnet (Thinking)" + composer_2: + id: 'composer-2' + label: 'Composer 2' composer_1_5: - id: "composer-1.5" - label: "Composer 1.5" - composer_1: - id: "composer-1" - label: "Composer 1" - gpt_5_4_xhigh: - id: "gpt-5.4-xhigh" - label: "GPT-5.4 Extra High" - gpt_5_4_xhigh_fast: - id: "gpt-5.4-xhigh-fast" - label: "GPT-5.4 Extra High Fast" - gpt_5_4_high: - id: "gpt-5.4-high" - label: "GPT-5.4 High" - gpt_5_4_high_fast: - id: "gpt-5.4-high-fast" - label: "GPT-5.4 High Fast" - gpt_5_4_medium: - id: "gpt-5.4-medium" - label: "GPT-5.4" - gpt_5_4_medium_fast: - id: "gpt-5.4-medium-fast" - label: "GPT-5.4 Fast" - gpt_5_4_low: - id: "gpt-5.4-low" - label: "GPT-5.4 Low" - gpt_5_3_codex_xhigh: - id: "gpt-5.3-codex-xhigh" - label: "GPT-5.3 Codex Extra High" - gpt_5_3_codex_xhigh_fast: - id: "gpt-5.3-codex-xhigh-fast" - label: "GPT-5.3 Codex Extra High Fast" - gpt_5_3_codex_high: - id: "gpt-5.3-codex-high" - label: "GPT-5.3 Codex High" - gpt_5_3_codex_high_fast: - id: "gpt-5.3-codex-high-fast" - label: "GPT-5.3 Codex High Fast" - gpt_5_3_codex: - id: "gpt-5.3-codex" - label: "GPT-5.3 Codex" - gpt_5_3_codex_fast: - id: "gpt-5.3-codex-fast" - label: "GPT-5.3 Codex Fast" + id: 'composer-1.5' + label: 'Composer 1.5' gpt_5_3_codex_low: - id: "gpt-5.3-codex-low" - label: "GPT-5.3 Codex Low" + id: 'gpt-5.3-codex-low' + label: 'Codex 5.3 Low' gpt_5_3_codex_low_fast: - id: "gpt-5.3-codex-low-fast" - label: "GPT-5.3 Codex Low Fast" + id: 'gpt-5.3-codex-low-fast' + label: 'Codex 5.3 Low Fast' + gpt_5_3_codex: + id: 'gpt-5.3-codex' + label: 'Codex 5.3' + gpt_5_3_codex_fast: + id: 'gpt-5.3-codex-fast' + label: 'Codex 5.3 Fast' + gpt_5_3_codex_high: + id: 'gpt-5.3-codex-high' + label: 'Codex 5.3 High' + gpt_5_3_codex_high_fast: + id: 'gpt-5.3-codex-high-fast' + label: 'Codex 5.3 High Fast' + gpt_5_3_codex_xhigh: + id: 'gpt-5.3-codex-xhigh' + label: 'Codex 5.3 Extra High' + gpt_5_3_codex_xhigh_fast: + id: 'gpt-5.3-codex-xhigh-fast' + label: 'Codex 5.3 Extra High Fast' + gpt_5_2: + id: 'gpt-5.2' + label: 'GPT-5.2' + gpt_5_3_codex_spark_preview_low: + id: 'gpt-5.3-codex-spark-preview-low' + label: 'Codex 5.3 Spark Low' gpt_5_3_codex_spark_preview: - id: "gpt-5.3-codex-spark-preview" - label: "GPT-5.3 Codex Spark" - gpt_5_2_codex_xhigh: - id: "gpt-5.2-codex-xhigh" - label: "GPT-5.2 Codex Extra High" - gpt_5_2_codex_xhigh_fast: - id: "gpt-5.2-codex-xhigh-fast" - label: "GPT-5.2 Codex Extra High Fast" - gpt_5_2_codex_high: - id: "gpt-5.2-codex-high" - label: "GPT-5.2 Codex High" - gpt_5_2_codex_high_fast: - id: "gpt-5.2-codex-high-fast" - label: "GPT-5.2 Codex High Fast" - gpt_5_2_codex: - id: "gpt-5.2-codex" - label: "GPT-5.2 Codex" - gpt_5_2_codex_fast: - id: "gpt-5.2-codex-fast" - label: "GPT-5.2 Codex Fast" + id: 'gpt-5.3-codex-spark-preview' + label: 'Codex 5.3 Spark' + gpt_5_3_codex_spark_preview_high: + id: 'gpt-5.3-codex-spark-preview-high' + label: 'Codex 5.3 Spark High' + gpt_5_3_codex_spark_preview_xhigh: + id: 'gpt-5.3-codex-spark-preview-xhigh' + label: 'Codex 5.3 Spark Extra High' gpt_5_2_codex_low: - id: "gpt-5.2-codex-low" - label: "GPT-5.2 Codex Low" + id: 'gpt-5.2-codex-low' + label: 'Codex 5.2 Low' gpt_5_2_codex_low_fast: - id: "gpt-5.2-codex-low-fast" - label: "GPT-5.2 Codex Low Fast" - gpt_5_2: - id: "gpt-5.2" - label: "GPT-5.2" - gpt_5_2_high: - id: "gpt-5.2-high" - label: "GPT-5.2 High" - gpt_5_1_codex_max: - id: "gpt-5.1-codex-max" - label: "GPT-5.1 Codex Max" + id: 'gpt-5.2-codex-low-fast' + label: 'Codex 5.2 Low Fast' + gpt_5_2_codex: + id: 'gpt-5.2-codex' + label: 'Codex 5.2' + gpt_5_2_codex_fast: + id: 'gpt-5.2-codex-fast' + label: 'Codex 5.2 Fast' + gpt_5_2_codex_high: + id: 'gpt-5.2-codex-high' + label: 'Codex 5.2 High' + gpt_5_2_codex_high_fast: + id: 'gpt-5.2-codex-high-fast' + label: 'Codex 5.2 High Fast' + gpt_5_2_codex_xhigh: + id: 'gpt-5.2-codex-xhigh' + label: 'Codex 5.2 Extra High' + gpt_5_2_codex_xhigh_fast: + id: 'gpt-5.2-codex-xhigh-fast' + label: 'Codex 5.2 Extra High Fast' + gpt_5_1_codex_max_low: + id: 'gpt-5.1-codex-max-low' + label: 'Codex 5.1 Max Low' + gpt_5_1_codex_max_low_fast: + id: 'gpt-5.1-codex-max-low-fast' + label: 'Codex 5.1 Max Low Fast' + gpt_5_1_codex_max_medium: + id: 'gpt-5.1-codex-max-medium' + label: 'Codex 5.1 Max' + gpt_5_1_codex_max_medium_fast: + id: 'gpt-5.1-codex-max-medium-fast' + label: 'Codex 5.1 Max Medium Fast' gpt_5_1_codex_max_high: - id: "gpt-5.1-codex-max-high" - label: "GPT-5.1 Codex Max High" - gpt_5_1_codex_mini: - id: "gpt-5.1-codex-mini" - label: "GPT-5.1 Codex Mini" - gpt_5_1_high: - id: "gpt-5.1-high" - label: "GPT-5.1 High" + id: 'gpt-5.1-codex-max-high' + label: 'Codex 5.1 Max High' + gpt_5_1_codex_max_high_fast: + id: 'gpt-5.1-codex-max-high-fast' + label: 'Codex 5.1 Max High Fast' + gpt_5_1_codex_max_xhigh: + id: 'gpt-5.1-codex-max-xhigh' + label: 'Codex 5.1 Max Extra High' + gpt_5_1_codex_max_xhigh_fast: + id: 'gpt-5.1-codex-max-xhigh-fast' + label: 'Codex 5.1 Max Extra High Fast' + claude_opus_4_7_thinking_high: + id: 'claude-opus-4-7-thinking-high' + label: 'Opus 4.7 1M High Thinking' + gpt_5_4_high: + id: 'gpt-5.4-high' + label: 'GPT-5.4 1M High' + gpt_5_4_high_fast: + id: 'gpt-5.4-high-fast' + label: 'GPT-5.4 High Fast' + gpt_5_4_xhigh_fast: + id: 'gpt-5.4-xhigh-fast' + label: 'GPT-5.4 Extra High Fast' + claude_4_6_opus_high_thinking_fast: + id: 'claude-4.6-opus-high-thinking-fast' + label: 'Opus 4.6 1M Thinking Fast' + claude_4_6_sonnet_medium: + id: 'claude-4.6-sonnet-medium' + label: 'Sonnet 4.6 1M' + claude_4_6_sonnet_medium_thinking: + id: 'claude-4.6-sonnet-medium-thinking' + label: 'Sonnet 4.6 1M Thinking' + claude_opus_4_7_low: + id: 'claude-opus-4-7-low' + label: 'Opus 4.7 1M Low' + claude_opus_4_7_medium: + id: 'claude-opus-4-7-medium' + label: 'Opus 4.7 1M Medium' + claude_opus_4_7_high: + id: 'claude-opus-4-7-high' + label: 'Opus 4.7 1M High' + claude_opus_4_7_xhigh: + id: 'claude-opus-4-7-xhigh' + label: 'Opus 4.7 1M' + claude_opus_4_7_max: + id: 'claude-opus-4-7-max' + label: 'Opus 4.7 1M Max' + claude_opus_4_7_thinking_low: + id: 'claude-opus-4-7-thinking-low' + label: 'Opus 4.7 1M Low Thinking' + claude_opus_4_7_thinking_medium: + id: 'claude-opus-4-7-thinking-medium' + label: 'Opus 4.7 1M Medium Thinking' + claude_opus_4_7_thinking_xhigh: + id: 'claude-opus-4-7-thinking-xhigh' + label: 'Opus 4.7 1M Thinking' + claude_opus_4_7_thinking_max: + id: 'claude-opus-4-7-thinking-max' + label: 'Opus 4.7 1M Max Thinking' + gpt_5_4_low: + id: 'gpt-5.4-low' + label: 'GPT-5.4 1M Low' + gpt_5_4_medium: + id: 'gpt-5.4-medium' + label: 'GPT-5.4 1M' + gpt_5_4_medium_fast: + id: 'gpt-5.4-medium-fast' + label: 'GPT-5.4 Fast' + gpt_5_4_xhigh: + id: 'gpt-5.4-xhigh' + label: 'GPT-5.4 1M Extra High' + claude_4_6_opus_high: + id: 'claude-4.6-opus-high' + label: 'Opus 4.6 1M' + claude_4_6_opus_max: + id: 'claude-4.6-opus-max' + label: 'Opus 4.6 1M Max' + claude_4_6_opus_high_thinking: + id: 'claude-4.6-opus-high-thinking' + label: 'Opus 4.6 1M Thinking' + claude_4_6_opus_max_thinking: + id: 'claude-4.6-opus-max-thinking' + label: 'Opus 4.6 1M Max Thinking' + claude_4_6_opus_max_thinking_fast: + id: 'claude-4.6-opus-max-thinking-fast' + label: 'Opus 4.6 1M Max Thinking Fast' + claude_4_5_opus_high: + id: 'claude-4.5-opus-high' + label: 'Opus 4.5' + claude_4_5_opus_high_thinking: + id: 'claude-4.5-opus-high-thinking' + label: 'Opus 4.5 Thinking' + gpt_5_2_low: + id: 'gpt-5.2-low' + label: 'GPT-5.2 Low' + gpt_5_2_low_fast: + id: 'gpt-5.2-low-fast' + label: 'GPT-5.2 Low Fast' + gpt_5_2_fast: + id: 'gpt-5.2-fast' + label: 'GPT-5.2 Fast' + gpt_5_2_high: + id: 'gpt-5.2-high' + label: 'GPT-5.2 High' + gpt_5_2_high_fast: + id: 'gpt-5.2-high-fast' + label: 'GPT-5.2 High Fast' + gpt_5_2_xhigh: + id: 'gpt-5.2-xhigh' + label: 'GPT-5.2 Extra High' + gpt_5_2_xhigh_fast: + id: 'gpt-5.2-xhigh-fast' + label: 'GPT-5.2 Extra High Fast' gemini_3_1_pro: - id: "gemini-3.1-pro" - label: "Gemini 3.1 Pro" - gemini_3_pro: - id: "gemini-3-pro" - label: "Gemini 3 Pro" + id: 'gemini-3.1-pro' + label: 'Gemini 3.1 Pro' + gpt_5_4_mini_none: + id: 'gpt-5.4-mini-none' + label: 'GPT-5.4 Mini None' + gpt_5_4_mini_low: + id: 'gpt-5.4-mini-low' + label: 'GPT-5.4 Mini Low' + gpt_5_4_mini_medium: + id: 'gpt-5.4-mini-medium' + label: 'GPT-5.4 Mini' + gpt_5_4_mini_high: + id: 'gpt-5.4-mini-high' + label: 'GPT-5.4 Mini High' + gpt_5_4_mini_xhigh: + id: 'gpt-5.4-mini-xhigh' + label: 'GPT-5.4 Mini Extra High' + gpt_5_4_nano_none: + id: 'gpt-5.4-nano-none' + label: 'GPT-5.4 Nano None' + gpt_5_4_nano_low: + id: 'gpt-5.4-nano-low' + label: 'GPT-5.4 Nano Low' + gpt_5_4_nano_medium: + id: 'gpt-5.4-nano-medium' + label: 'GPT-5.4 Nano' + gpt_5_4_nano_high: + id: 'gpt-5.4-nano-high' + label: 'GPT-5.4 Nano High' + gpt_5_4_nano_xhigh: + id: 'gpt-5.4-nano-xhigh' + label: 'GPT-5.4 Nano Extra High' + grok_4_20: + id: 'grok-4-20' + label: 'Grok 4.20' + grok_4_20_thinking: + id: 'grok-4-20-thinking' + label: 'Grok 4.20 Thinking' + claude_4_5_sonnet: + id: 'claude-4.5-sonnet' + label: 'Sonnet 4.5 1M' + claude_4_5_sonnet_thinking: + id: 'claude-4.5-sonnet-thinking' + label: 'Sonnet 4.5 1M Thinking' + gpt_5_1_low: + id: 'gpt-5.1-low' + label: 'GPT-5.1 Low' + gpt_5_1: + id: 'gpt-5.1' + label: 'GPT-5.1' + gpt_5_1_high: + id: 'gpt-5.1-high' + label: 'GPT-5.1 High' gemini_3_flash: - id: "gemini-3-flash" - label: "Gemini 3 Flash" - grok: - id: "grok" - label: "Grok" + id: 'gemini-3-flash' + label: 'Gemini 3 Flash' + gpt_5_1_codex_mini_low: + id: 'gpt-5.1-codex-mini-low' + label: 'Codex 5.1 Mini Low' + gpt_5_1_codex_mini: + id: 'gpt-5.1-codex-mini' + label: 'Codex 5.1 Mini' + gpt_5_1_codex_mini_high: + id: 'gpt-5.1-codex-mini-high' + label: 'Codex 5.1 Mini High' + claude_4_sonnet: + id: 'claude-4-sonnet' + label: 'Sonnet 4' + claude_4_sonnet_1m: + id: 'claude-4-sonnet-1m' + label: 'Sonnet 4 1M' + claude_4_sonnet_thinking: + id: 'claude-4-sonnet-thinking' + label: 'Sonnet 4 Thinking' + claude_4_sonnet_1m_thinking: + id: 'claude-4-sonnet-1m-thinking' + label: 'Sonnet 4 1M Thinking' + gpt_5_mini: + id: 'gpt-5-mini' + label: 'GPT-5 Mini' kimi_k2_5: - id: "kimi-k2.5" - label: "Kimi K2.5" + id: 'kimi-k2.5' + label: 'Kimi K2.5' droid: - name: "Droid" - package: "droid" - version: "0.1.0" - install: "Download from droid.dev" + name: 'Droid' + package: 'droid' + version: '0.1.0' + install: 'Download from droid.dev' models: opus_4_6_fast: - id: "opus-4.6-fast" - label: "Opus 4.6 Fast Mode (12x)" + id: 'opus-4.6-fast' + label: 'Opus 4.6 Fast Mode (12x)' default: true opus_4_5: - id: "opus-4.5" - label: "Opus 4.5 (2x)" + id: 'opus-4.5' + label: 'Opus 4.5 (2x)' sonnet_4_5: - id: "sonnet-4.5" - label: "Sonnet 4.5 (1.2x)" + id: 'sonnet-4.5' + label: 'Sonnet 4.5 (1.2x)' haiku_4_5: - id: "haiku-4.5" - label: "Haiku 4.5 (0.4x)" + id: 'haiku-4.5' + label: 'Haiku 4.5 (0.4x)' gpt_5_2: - id: "gpt-5.2" - label: "GPT-5.2 (0.7x)" + id: 'gpt-5.2' + label: 'GPT-5.2 (0.7x)' gpt_5_2_codex: - id: "gpt-5.2-codex" - label: "GPT-5.2 Codex (0.7x)" + id: 'gpt-5.2-codex' + label: 'GPT-5.2 Codex (0.7x)' gemini_3_flash: - id: "gemini-3-flash" - label: "Gemini 3 Flash (0.2x)" + id: 'gemini-3-flash' + label: 'Gemini 3 Flash (0.2x)' droid_core: - id: "droid-core-glm-4.7" - label: "Droid Core (GLM-4.7) (0.25x)" + id: 'droid-core-glm-4.7' + label: 'Droid Core (GLM-4.7) (0.25x)' opencode: - name: "OpenCode" - package: "opencode-ai" - npm_link: "https://www.npmjs.com/package/opencode-ai" - version: "1.2.24" - install: "npm install -g opencode-ai" + name: 'OpenCode' + package: 'opencode-ai' + npm_link: 'https://www.npmjs.com/package/opencode-ai' + version: '1.2.24' + install: 'npm install -g opencode-ai' models: opencode_big_pickle: - id: "opencode/big-pickle" - label: "Big Pickle" + id: 'opencode/big-pickle' + label: 'Big Pickle' opencode_gpt_5_nano: - id: "opencode/gpt-5-nano" - label: "GPT-5 Nano (OpenCode)" + id: 'opencode/gpt-5-nano' + label: 'GPT-5 Nano (OpenCode)' opencode_mimo_v2_flash_free: - id: "opencode/mimo-v2-flash-free" - label: "Mimo V2 Flash Free" + id: 'opencode/mimo-v2-flash-free' + label: 'Mimo V2 Flash Free' opencode_minimax_m2_5_free: - id: "opencode/minimax-m2.5-free" - label: "MiniMax M2.5 Free" + id: 'opencode/minimax-m2.5-free' + label: 'MiniMax M2.5 Free' openai_codex_mini_latest: - id: "openai/codex-mini-latest" - label: "Codex Mini Latest" + id: 'openai/codex-mini-latest' + label: 'Codex Mini Latest' openai_gpt_3_5_turbo: - id: "openai/gpt-3.5-turbo" - label: "GPT-3.5 Turbo" + id: 'openai/gpt-3.5-turbo' + label: 'GPT-3.5 Turbo' openai_gpt_4: - id: "openai/gpt-4" - label: "GPT-4" + id: 'openai/gpt-4' + label: 'GPT-4' openai_gpt_4_turbo: - id: "openai/gpt-4-turbo" - label: "GPT-4 Turbo" + id: 'openai/gpt-4-turbo' + label: 'GPT-4 Turbo' openai_gpt_4_1: - id: "openai/gpt-4.1" - label: "GPT-4.1" + id: 'openai/gpt-4.1' + label: 'GPT-4.1' openai_gpt_4_1_mini: - id: "openai/gpt-4.1-mini" - label: "GPT-4.1 Mini" + id: 'openai/gpt-4.1-mini' + label: 'GPT-4.1 Mini' openai_gpt_4_1_nano: - id: "openai/gpt-4.1-nano" - label: "GPT-4.1 Nano" + id: 'openai/gpt-4.1-nano' + label: 'GPT-4.1 Nano' openai_gpt_4o: - id: "openai/gpt-4o" - label: "GPT-4o" + id: 'openai/gpt-4o' + label: 'GPT-4o' openai_gpt_4o_2024_05_13: - id: "openai/gpt-4o-2024-05-13" - label: "GPT-4o (2024-05-13)" + id: 'openai/gpt-4o-2024-05-13' + label: 'GPT-4o (2024-05-13)' openai_gpt_4o_2024_08_06: - id: "openai/gpt-4o-2024-08-06" - label: "GPT-4o (2024-08-06)" + id: 'openai/gpt-4o-2024-08-06' + label: 'GPT-4o (2024-08-06)' openai_gpt_4o_2024_11_20: - id: "openai/gpt-4o-2024-11-20" - label: "GPT-4o (2024-11-20)" + id: 'openai/gpt-4o-2024-11-20' + label: 'GPT-4o (2024-11-20)' openai_gpt_4o_mini: - id: "openai/gpt-4o-mini" - label: "GPT-4o Mini" + id: 'openai/gpt-4o-mini' + label: 'GPT-4o Mini' openai_gpt_5: - id: "openai/gpt-5" - label: "GPT-5" + id: 'openai/gpt-5' + label: 'GPT-5' openai_gpt_5_codex: - id: "openai/gpt-5-codex" - label: "GPT-5 Codex" + id: 'openai/gpt-5-codex' + label: 'GPT-5 Codex' openai_gpt_5_mini: - id: "openai/gpt-5-mini" - label: "GPT-5 Mini" + id: 'openai/gpt-5-mini' + label: 'GPT-5 Mini' openai_gpt_5_nano: - id: "openai/gpt-5-nano" - label: "GPT-5 Nano" + id: 'openai/gpt-5-nano' + label: 'GPT-5 Nano' openai_gpt_5_pro: - id: "openai/gpt-5-pro" - label: "GPT-5 Pro" + id: 'openai/gpt-5-pro' + label: 'GPT-5 Pro' openai_gpt_5_1: - id: "openai/gpt-5.1" - label: "GPT-5.1" + id: 'openai/gpt-5.1' + label: 'GPT-5.1' openai_gpt_5_1_chat_latest: - id: "openai/gpt-5.1-chat-latest" - label: "GPT-5.1 Chat Latest" + id: 'openai/gpt-5.1-chat-latest' + label: 'GPT-5.1 Chat Latest' openai_gpt_5_1_codex: - id: "openai/gpt-5.1-codex" - label: "GPT-5.1 Codex" + id: 'openai/gpt-5.1-codex' + label: 'GPT-5.1 Codex' openai_gpt_5_1_codex_max: - id: "openai/gpt-5.1-codex-max" - label: "GPT-5.1 Codex Max" + id: 'openai/gpt-5.1-codex-max' + label: 'GPT-5.1 Codex Max' openai_gpt_5_1_codex_mini: - id: "openai/gpt-5.1-codex-mini" - label: "GPT-5.1 Codex Mini" + id: 'openai/gpt-5.1-codex-mini' + label: 'GPT-5.1 Codex Mini' openai_gpt_5_2: - id: "openai/gpt-5.2" - label: "GPT-5.2" + id: 'openai/gpt-5.2' + label: 'GPT-5.2' default: true openai_gpt_5_2_chat_latest: - id: "openai/gpt-5.2-chat-latest" - label: "GPT-5.2 Chat Latest" + id: 'openai/gpt-5.2-chat-latest' + label: 'GPT-5.2 Chat Latest' openai_gpt_5_2_codex: - id: "openai/gpt-5.2-codex" - label: "GPT-5.2 Codex" + id: 'openai/gpt-5.2-codex' + label: 'GPT-5.2 Codex' openai_gpt_5_2_pro: - id: "openai/gpt-5.2-pro" - label: "GPT-5.2 Pro" + id: 'openai/gpt-5.2-pro' + label: 'GPT-5.2 Pro' openai_gpt_5_3_codex: - id: "openai/gpt-5.3-codex" - label: "GPT-5.3 Codex" + id: 'openai/gpt-5.3-codex' + label: 'GPT-5.3 Codex' openai_gpt_5_3_codex_spark: - id: "openai/gpt-5.3-codex-spark" - label: "GPT-5.3 Codex Spark" + id: 'openai/gpt-5.3-codex-spark' + label: 'GPT-5.3 Codex Spark' openai_gpt_5_4: - id: "openai/gpt-5.4" - label: "GPT-5.4" + id: 'openai/gpt-5.4' + label: 'GPT-5.4' openai_gpt_5_4_pro: - id: "openai/gpt-5.4-pro" - label: "GPT-5.4 Pro" + id: 'openai/gpt-5.4-pro' + label: 'GPT-5.4 Pro' openai_o1: - id: "openai/o1" - label: "O1" + id: 'openai/o1' + label: 'O1' openai_o1_mini: - id: "openai/o1-mini" - label: "O1 Mini" + id: 'openai/o1-mini' + label: 'O1 Mini' openai_o1_preview: - id: "openai/o1-preview" - label: "O1 Preview" + id: 'openai/o1-preview' + label: 'O1 Preview' openai_o1_pro: - id: "openai/o1-pro" - label: "O1 Pro" + id: 'openai/o1-pro' + label: 'O1 Pro' openai_o3: - id: "openai/o3" - label: "O3" + id: 'openai/o3' + label: 'O3' openai_o3_deep_research: - id: "openai/o3-deep-research" - label: "O3 Deep Research" + id: 'openai/o3-deep-research' + label: 'O3 Deep Research' openai_o3_mini: - id: "openai/o3-mini" - label: "O3 Mini" + id: 'openai/o3-mini' + label: 'O3 Mini' openai_o3_pro: - id: "openai/o3-pro" - label: "O3 Pro" + id: 'openai/o3-pro' + label: 'O3 Pro' openai_o4_mini: - id: "openai/o4-mini" - label: "O4 Mini" + id: 'openai/o4-mini' + label: 'O4 Mini' openai_o4_mini_deep_research: - id: "openai/o4-mini-deep-research" - label: "O4 Mini Deep Research" + id: 'openai/o4-mini-deep-research' + label: 'O4 Mini Deep Research' aider: - name: "Aider" - package: "aider-chat" - version: "0.72.1" - install: "pip install aider-chat" + name: 'Aider' + package: 'aider-chat' + version: '0.72.1' + install: 'pip install aider-chat' models: {} goose: - name: "Goose" - package: "goose-ai" - version: "1.0.16" - install: "pip install goose-ai" + name: 'Goose' + package: 'goose-ai' + version: '1.0.16' + install: 'pip install goose-ai' models: {} # Swarm patterns for multi-agent workflows swarm_patterns: hub_spoke: - id: "hub-spoke" - description: "Central coordinator distributes tasks to workers" + id: 'hub-spoke' + description: 'Central coordinator distributes tasks to workers' dag: - id: "dag" - description: "Directed acyclic graph with dependencies" + id: 'dag' + description: 'Directed acyclic graph with dependencies' fan_out: - id: "fan-out" - description: "Parallel execution across multiple agents" + id: 'fan-out' + description: 'Parallel execution across multiple agents' pipeline: - id: "pipeline" - description: "Sequential processing through stages" + id: 'pipeline' + description: 'Sequential processing through stages' consensus: - id: "consensus" - description: "Agents reach agreement before proceeding" + id: 'consensus' + description: 'Agents reach agreement before proceeding' mesh: - id: "mesh" - description: "Fully connected peer-to-peer communication" + id: 'mesh' + description: 'Fully connected peer-to-peer communication' handoff: - id: "handoff" - description: "Sequential handoff between agents" + id: 'handoff' + description: 'Sequential handoff between agents' cascade: - id: "cascade" - description: "Cascading delegation" + id: 'cascade' + description: 'Cascading delegation' debate: - id: "debate" - description: "Agents debate to reach conclusion" + id: 'debate' + description: 'Agents debate to reach conclusion' hierarchical: - id: "hierarchical" - description: "Tree-structured coordination" + id: 'hierarchical' + description: 'Tree-structured coordination' From 0e9dd6d0472b13db4d6ef175f5e47149ae218e04 Mon Sep 17 00:00:00 2001 From: Multi-Repo Pushback Bot Date: Fri, 24 Apr 2026 09:01:16 +0200 Subject: [PATCH 2/3] lock bump --- package-lock.json | 184 +++++++++++----------------------------------- 1 file changed, 43 insertions(+), 141 deletions(-) diff --git a/package-lock.json b/package-lock.json index 40bcefc1b..b1ad4ffd6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "agent-relay", - "version": "4.0.39", + "version": "5.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "agent-relay", - "version": "4.0.39", + "version": "5.0.0", "bundleDependencies": [ "@agent-relay/cloud", "@agent-relay/config", @@ -26,14 +26,14 @@ "web" ], "dependencies": { - "@agent-relay/cloud": "4.0.39", - "@agent-relay/config": "4.0.39", - "@agent-relay/hooks": "4.0.39", - "@agent-relay/sdk": "4.0.39", - "@agent-relay/telemetry": "4.0.39", - "@agent-relay/trajectory": "4.0.39", - "@agent-relay/user-directory": "4.0.39", - "@agent-relay/utils": "4.0.39", + "@agent-relay/cloud": "5.0.0", + "@agent-relay/config": "5.0.0", + "@agent-relay/hooks": "5.0.0", + "@agent-relay/sdk": "5.0.0", + "@agent-relay/telemetry": "5.0.0", + "@agent-relay/trajectory": "5.0.0", + "@agent-relay/user-directory": "5.0.0", + "@agent-relay/utils": "5.0.0", "@aws-sdk/client-s3": "3.1020.0", "@modelcontextprotocol/sdk": "^1.0.0", "@relayauth/core": "^0.1.2", @@ -15409,10 +15409,10 @@ }, "packages/acp-bridge": { "name": "@agent-relay/acp-bridge", - "version": "4.0.39", + "version": "5.0.0", "license": "Apache-2.0", "dependencies": { - "@agent-relay/sdk": "4.0.39", + "@agent-relay/sdk": "5.0.0", "@agentclientprotocol/sdk": "^0.12.0" }, "bin": { @@ -15428,13 +15428,13 @@ }, "packages/brand": { "name": "@agent-relay/brand", - "version": "4.0.39" + "version": "5.0.0" }, "packages/browser-primitive": { "name": "@agent-relay/browser-primitive", - "version": "4.0.9", + "version": "5.0.0", "dependencies": { - "@agent-relay/sdk": "4.0.9", + "@agent-relay/sdk": "5.0.0", "playwright": "^1.51.1" }, "bin": { @@ -15455,60 +15455,11 @@ "zod-to-json-schema": "^3.23.1" } }, - "packages/browser-primitive/node_modules/@agent-relay/sdk": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@agent-relay/sdk/-/sdk-4.0.9.tgz", - "integrity": "sha512-LoOpjzn0aU13N9FiGhJ9vifmsYfexL76N4LWLC9xmuIQLYuIiCpQvSyHWVje5TwwLb9DmOWAl0hSehALnbb4wg==", - "dependencies": { - "@agent-relay/config": "4.0.9", - "@relaycast/sdk": "^1.1.0", - "@relayfile/sdk": "^0.1.2", - "@sinclair/typebox": "^0.34.48", - "chalk": "^4.1.2", - "ignore": "^7.0.5", - "listr2": "^10.2.1", - "tar": "^7.5.10", - "ws": "^8.18.3", - "yaml": "^2.7.0" - }, - "peerDependencies": { - "@anthropic-ai/claude-agent-sdk": ">=0.1.0", - "@google/adk": ">=0.5.0", - "@langchain/langgraph": ">=1.2.0", - "@mariozechner/pi-coding-agent": ">=0.50.0", - "@openai/agents": ">=0.7.0", - "ai": ">=5.0.0", - "crewai": ">=1.0.0" - }, - "peerDependenciesMeta": { - "@anthropic-ai/claude-agent-sdk": { - "optional": true - }, - "@google/adk": { - "optional": true - }, - "@langchain/langgraph": { - "optional": true - }, - "@mariozechner/pi-coding-agent": { - "optional": true - }, - "@openai/agents": { - "optional": true - }, - "ai": { - "optional": true - }, - "crewai": { - "optional": true - } - } - }, "packages/cloud": { "name": "@agent-relay/cloud", - "version": "4.0.39", + "version": "5.0.0", "dependencies": { - "@agent-relay/config": "4.0.39", + "@agent-relay/config": "5.0.0", "@aws-sdk/client-s3": "3.1020.0", "ignore": "^7.0.5", "tar": "^7.5.10" @@ -15520,7 +15471,7 @@ }, "packages/config": { "name": "@agent-relay/config", - "version": "4.0.39", + "version": "5.0.0", "dependencies": { "zod": "^3.23.8", "zod-to-json-schema": "^3.23.1" @@ -15532,7 +15483,7 @@ }, "packages/credential-proxy": { "name": "@agent-relay/credential-proxy", - "version": "4.0.39", + "version": "5.0.0", "dependencies": { "hono": "^4.11.4", "jose": "^6.1.3" @@ -15543,9 +15494,9 @@ }, "packages/gateway": { "name": "@agent-relay/gateway", - "version": "4.0.39", + "version": "5.0.0", "dependencies": { - "@agent-relay/sdk": "4.0.39" + "@agent-relay/sdk": "5.0.0" }, "devDependencies": { "@types/node": "^22.19.3", @@ -15554,9 +15505,9 @@ }, "packages/github-primitive": { "name": "@agent-relay/github-primitive", - "version": "4.0.9", + "version": "5.0.0", "dependencies": { - "@agent-relay/sdk": "4.0.9" + "@agent-relay/sdk": "5.0.0" }, "devDependencies": { "@types/node": "^22.19.3", @@ -15573,62 +15524,13 @@ "zod-to-json-schema": "^3.23.1" } }, - "packages/github-primitive/node_modules/@agent-relay/sdk": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@agent-relay/sdk/-/sdk-4.0.9.tgz", - "integrity": "sha512-LoOpjzn0aU13N9FiGhJ9vifmsYfexL76N4LWLC9xmuIQLYuIiCpQvSyHWVje5TwwLb9DmOWAl0hSehALnbb4wg==", - "dependencies": { - "@agent-relay/config": "4.0.9", - "@relaycast/sdk": "^1.1.0", - "@relayfile/sdk": "^0.1.2", - "@sinclair/typebox": "^0.34.48", - "chalk": "^4.1.2", - "ignore": "^7.0.5", - "listr2": "^10.2.1", - "tar": "^7.5.10", - "ws": "^8.18.3", - "yaml": "^2.7.0" - }, - "peerDependencies": { - "@anthropic-ai/claude-agent-sdk": ">=0.1.0", - "@google/adk": ">=0.5.0", - "@langchain/langgraph": ">=1.2.0", - "@mariozechner/pi-coding-agent": ">=0.50.0", - "@openai/agents": ">=0.7.0", - "ai": ">=5.0.0", - "crewai": ">=1.0.0" - }, - "peerDependenciesMeta": { - "@anthropic-ai/claude-agent-sdk": { - "optional": true - }, - "@google/adk": { - "optional": true - }, - "@langchain/langgraph": { - "optional": true - }, - "@mariozechner/pi-coding-agent": { - "optional": true - }, - "@openai/agents": { - "optional": true - }, - "ai": { - "optional": true - }, - "crewai": { - "optional": true - } - } - }, "packages/hooks": { "name": "@agent-relay/hooks", - "version": "4.0.39", + "version": "5.0.0", "dependencies": { - "@agent-relay/config": "4.0.39", - "@agent-relay/sdk": "4.0.39", - "@agent-relay/trajectory": "4.0.39" + "@agent-relay/config": "5.0.0", + "@agent-relay/sdk": "5.0.0", + "@agent-relay/trajectory": "5.0.0" }, "devDependencies": { "@types/node": "^22.19.3", @@ -15637,9 +15539,9 @@ }, "packages/memory": { "name": "@agent-relay/memory", - "version": "4.0.39", + "version": "5.0.0", "dependencies": { - "@agent-relay/hooks": "4.0.39" + "@agent-relay/hooks": "5.0.0" }, "devDependencies": { "@types/node": "^22.19.3", @@ -15648,11 +15550,11 @@ }, "packages/openclaw": { "name": "@agent-relay/openclaw", - "version": "4.0.39", + "version": "5.0.0", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@agent-relay/sdk": "4.0.39", + "@agent-relay/sdk": "5.0.0", "@relaycast/sdk": "^1.0.0", "ws": "^8.0.0" }, @@ -16417,9 +16319,9 @@ }, "packages/policy": { "name": "@agent-relay/policy", - "version": "4.0.39", + "version": "5.0.0", "dependencies": { - "@agent-relay/config": "4.0.39" + "@agent-relay/config": "5.0.0" }, "devDependencies": { "@types/node": "^22.19.3", @@ -16428,9 +16330,9 @@ }, "packages/sdk": { "name": "@agent-relay/sdk", - "version": "4.0.39", + "version": "5.0.0", "dependencies": { - "@agent-relay/config": "4.0.39", + "@agent-relay/config": "5.0.0", "@relaycast/sdk": "^1.1.0", "@relayfile/sdk": ">=0.1.2 <1", "@sinclair/typebox": "^0.34.48", @@ -16448,7 +16350,7 @@ "@types/ws": "^8.5.10" }, "peerDependencies": { - "@agent-relay/credential-proxy": "4.0.39", + "@agent-relay/credential-proxy": "5.0.0", "@anthropic-ai/claude-agent-sdk": ">=0.1.0", "@google/adk": ">=0.5.0", "@langchain/langgraph": ">=1.2.0", @@ -16486,7 +16388,7 @@ }, "packages/telemetry": { "name": "@agent-relay/telemetry", - "version": "4.0.39", + "version": "5.0.0", "dependencies": { "posthog-node": "^5.29.2" }, @@ -16521,9 +16423,9 @@ }, "packages/trajectory": { "name": "@agent-relay/trajectory", - "version": "4.0.39", + "version": "5.0.0", "dependencies": { - "@agent-relay/config": "4.0.39" + "@agent-relay/config": "5.0.0" }, "devDependencies": { "@types/node": "^22.19.3", @@ -16532,9 +16434,9 @@ }, "packages/user-directory": { "name": "@agent-relay/user-directory", - "version": "4.0.39", + "version": "5.0.0", "dependencies": { - "@agent-relay/utils": "4.0.39" + "@agent-relay/utils": "5.0.0" }, "devDependencies": { "@types/node": "^22.19.3", @@ -16543,9 +16445,9 @@ }, "packages/utils": { "name": "@agent-relay/utils", - "version": "4.0.39", + "version": "5.0.0", "dependencies": { - "@agent-relay/config": "4.0.39", + "@agent-relay/config": "5.0.0", "compare-versions": "^6.1.1" }, "devDependencies": { From 45e51da659f5f6987fda5cc6362de9c7379fc615 Mon Sep 17 00:00:00 2001 From: Multi-Repo Pushback Bot Date: Fri, 24 Apr 2026 09:18:17 +0200 Subject: [PATCH 3/3] fix(registry): remove duplicate gpt_5_5 codex entry and fix Python codegen path - Remove gpt_5_5 entry whose id 'gpt-5.4' duplicated gpt_5_4, causing silent metadata overwrite and duplicate UI dropdown entries - Fix codegen-py.mjs output path from sdk-py/agent_relay/ to sdk-py/src/agent_relay/ so generated models land in the real SDK package - Stop generating __init__.py to avoid shadowing the SDK's public API - Delete misplaced packages/sdk-py/agent_relay/ files from prior commit Co-Authored-By: Claude Sonnet 4.6 --- packages/config/src/cli-registry.generated.ts | 8 +- packages/sdk-py/agent_relay/__init__.py | 21 - packages/sdk-py/agent_relay/models.py | 498 ----------------- packages/sdk-py/src/agent_relay/models.py | 526 ++++++++++++++++-- packages/shared/cli-registry.yaml | 8 +- packages/shared/codegen-py.mjs | 33 +- 6 files changed, 497 insertions(+), 597 deletions(-) delete mode 100644 packages/sdk-py/agent_relay/__init__.py delete mode 100644 packages/sdk-py/agent_relay/models.py diff --git a/packages/config/src/cli-registry.generated.ts b/packages/config/src/cli-registry.generated.ts index 81fd89a9c..9f3eeac2a 100644 --- a/packages/config/src/cli-registry.generated.ts +++ b/packages/config/src/cli-registry.generated.ts @@ -65,8 +65,6 @@ export type ClaudeModel = (typeof ClaudeModels)[keyof typeof ClaudeModels]; */ export const CodexModels = { /** GPT-5.4 — Frontier model for complex coding, research, and real-world work. (default) */ - GPT_5_5: 'gpt-5.4', - /** GPT-5.4 — Strong model for everyday coding (default) */ GPT_5_4: 'gpt-5.4', /** GPT-5.3 Codex — Frontier agentic coding model */ GPT_5_3_CODEX: 'gpt-5.3-codex', @@ -449,8 +447,7 @@ export const CLAUDE_MODEL_OPTIONS: ModelOption[] = [ * Codex CLI model options for UI dropdowns. */ export const CODEX_MODEL_OPTIONS: ModelOption[] = [ - { value: 'gpt-5.4', label: 'GPT-5.4 — Frontier model for complex coding, research, and real-world work.', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'high' }, - { value: 'gpt-5.4', label: 'GPT-5.4 — Strong model for everyday coding', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, + { value: 'gpt-5.4', label: 'GPT-5.4 — Frontier model for complex coding, research, and real-world work.', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, { value: 'gpt-5.3-codex', label: 'GPT-5.3 Codex — Frontier agentic coding model', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, { value: 'gpt-5.3-codex-spark', label: 'GPT-5.3 Codex Spark — Ultra-fast coding model', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, { value: 'gpt-5.2-codex', label: 'GPT-5.2 Codex — Frontier agentic coding model', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, @@ -647,8 +644,7 @@ export const CLAUDE_MODEL_METADATA: Record = { * Codex CLI model metadata keyed by model id. */ export const CODEX_MODEL_METADATA: Record = { - 'gpt-5.4': { value: 'gpt-5.4', label: 'GPT-5.4 — Frontier model for complex coding, research, and real-world work.', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'high' }, - 'gpt-5.4': { value: 'gpt-5.4', label: 'GPT-5.4 — Strong model for everyday coding', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, + 'gpt-5.4': { value: 'gpt-5.4', label: 'GPT-5.4 — Frontier model for complex coding, research, and real-world work.', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, 'gpt-5.3-codex': { value: 'gpt-5.3-codex', label: 'GPT-5.3 Codex — Frontier agentic coding model', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, 'gpt-5.3-codex-spark': { value: 'gpt-5.3-codex-spark', label: 'GPT-5.3 Codex Spark — Ultra-fast coding model', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, 'gpt-5.2-codex': { value: 'gpt-5.2-codex', label: 'GPT-5.2 Codex — Frontier agentic coding model', reasoningEfforts: ["low","medium","high","xhigh"], defaultReasoningEffort: 'xhigh' }, diff --git a/packages/sdk-py/agent_relay/__init__.py b/packages/sdk-py/agent_relay/__init__.py deleted file mode 100644 index 5f6b09e22..000000000 --- a/packages/sdk-py/agent_relay/__init__.py +++ /dev/null @@ -1,21 +0,0 @@ -"""Agent Relay Python SDK.""" - -from .models import ( - CLIs, - CLIVersions, - CLI_REGISTRY, - DEFAULT_MODELS, - Models, - ModelOptions, - SwarmPatterns, -) - -__all__ = [ - "CLIs", - "CLIVersions", - "CLI_REGISTRY", - "DEFAULT_MODELS", - "Models", - "ModelOptions", - "SwarmPatterns", -] diff --git a/packages/sdk-py/agent_relay/models.py b/packages/sdk-py/agent_relay/models.py deleted file mode 100644 index c20bc2e03..000000000 --- a/packages/sdk-py/agent_relay/models.py +++ /dev/null @@ -1,498 +0,0 @@ -""" -AUTO-GENERATED FILE - DO NOT EDIT -Generated from packages/shared/cli-registry.yaml -Run: npm run codegen:models -""" - -from typing import Final, TypedDict, List - - -class CLIVersions: - """CLI tool versions. Update packages/shared/cli-registry.yaml to change versions.""" - CLAUDE: Final[str] = "2.1.72" # Claude Code - CODEX: Final[str] = "0.124.0" # Codex CLI - GEMINI: Final[str] = "0.39.1" # Gemini CLI - CURSOR: Final[str] = "2026.02.27-e7d2ef6" # Cursor - DROID: Final[str] = "0.1.0" # Droid - OPENCODE: Final[str] = "1.2.24" # OpenCode - AIDER: Final[str] = "0.72.1" # Aider - GOOSE: Final[str] = "1.0.16" # Goose - - -class CLIs: - """Supported CLI tools.""" - CLAUDE: Final[str] = "claude" - CODEX: Final[str] = "codex" - GEMINI: Final[str] = "gemini" - CURSOR: Final[str] = "cursor" - DROID: Final[str] = "droid" - OPENCODE: Final[str] = "opencode" - AIDER: Final[str] = "aider" - GOOSE: Final[str] = "goose" - - -class ClaudeModels: - """Claude Code model identifiers.""" - SONNET: Final[str] = "sonnet" # Sonnet (default) - OPUS: Final[str] = "opus" # Opus - HAIKU: Final[str] = "haiku" # Haiku - - -class CodexModels: - """Codex CLI model identifiers.""" - GPT_5_5: Final[str] = "gpt-5.4" # GPT-5.4 — Frontier model for complex coding, research, and real-world work. (default) - GPT_5_4: Final[str] = "gpt-5.4" # GPT-5.4 — Strong model for everyday coding (default) - GPT_5_3_CODEX: Final[str] = "gpt-5.3-codex" # GPT-5.3 Codex — Frontier agentic coding model - GPT_5_3_CODEX_SPARK: Final[str] = "gpt-5.3-codex-spark" # GPT-5.3 Codex Spark — Ultra-fast coding model - GPT_5_2_CODEX: Final[str] = "gpt-5.2-codex" # GPT-5.2 Codex — Frontier agentic coding model - GPT_5_2: Final[str] = "gpt-5.2" # GPT-5.2 — Frontier model, knowledge & reasoning - GPT_5_1_CODEX_MAX: Final[str] = "gpt-5.1-codex-max" # GPT-5.1 Codex Max — Deep and fast reasoning - GPT_5_1_CODEX_MINI: Final[str] = "gpt-5.1-codex-mini" # GPT-5.1 Codex Mini — Cheaper, faster - - -class GeminiModels: - """Gemini CLI model identifiers.""" - GEMINI_3_1_PRO_PREVIEW: Final[str] = "gemini-3.1-pro-preview" # Gemini 3.1 Pro Preview (default) - GEMINI_3_FLASH_PREVIEW: Final[str] = "gemini-3-flash-preview" # Gemini 3 Flash Preview - GEMINI_2_5_PRO: Final[str] = "gemini-2.5-pro" # Gemini 2.5 Pro - GEMINI_2_5_FLASH: Final[str] = "gemini-2.5-flash" # Gemini 2.5 Flash - GEMINI_2_5_FLASH_LITE: Final[str] = "gemini-2.5-flash-lite" # Gemini 2.5 Flash Lite - - -class CursorModels: - """Cursor model identifiers.""" - COMPOSER_2_FAST: Final[str] = "composer-2-fast" # Composer 2 Fast (default) - COMPOSER_2: Final[str] = "composer-2" # Composer 2 - COMPOSER_1_5: Final[str] = "composer-1.5" # Composer 1.5 - GPT_5_3_CODEX_LOW: Final[str] = "gpt-5.3-codex-low" # Codex 5.3 Low - GPT_5_3_CODEX_LOW_FAST: Final[str] = "gpt-5.3-codex-low-fast" # Codex 5.3 Low Fast - GPT_5_3_CODEX: Final[str] = "gpt-5.3-codex" # Codex 5.3 - GPT_5_3_CODEX_FAST: Final[str] = "gpt-5.3-codex-fast" # Codex 5.3 Fast - GPT_5_3_CODEX_HIGH: Final[str] = "gpt-5.3-codex-high" # Codex 5.3 High - GPT_5_3_CODEX_HIGH_FAST: Final[str] = "gpt-5.3-codex-high-fast" # Codex 5.3 High Fast - GPT_5_3_CODEX_XHIGH: Final[str] = "gpt-5.3-codex-xhigh" # Codex 5.3 Extra High - GPT_5_3_CODEX_XHIGH_FAST: Final[str] = "gpt-5.3-codex-xhigh-fast" # Codex 5.3 Extra High Fast - GPT_5_2: Final[str] = "gpt-5.2" # GPT-5.2 - GPT_5_3_CODEX_SPARK_PREVIEW_LOW: Final[str] = "gpt-5.3-codex-spark-preview-low" # Codex 5.3 Spark Low - GPT_5_3_CODEX_SPARK_PREVIEW: Final[str] = "gpt-5.3-codex-spark-preview" # Codex 5.3 Spark - GPT_5_3_CODEX_SPARK_PREVIEW_HIGH: Final[str] = "gpt-5.3-codex-spark-preview-high" # Codex 5.3 Spark High - GPT_5_3_CODEX_SPARK_PREVIEW_XHIGH: Final[str] = "gpt-5.3-codex-spark-preview-xhigh" # Codex 5.3 Spark Extra High - GPT_5_2_CODEX_LOW: Final[str] = "gpt-5.2-codex-low" # Codex 5.2 Low - GPT_5_2_CODEX_LOW_FAST: Final[str] = "gpt-5.2-codex-low-fast" # Codex 5.2 Low Fast - GPT_5_2_CODEX: Final[str] = "gpt-5.2-codex" # Codex 5.2 - GPT_5_2_CODEX_FAST: Final[str] = "gpt-5.2-codex-fast" # Codex 5.2 Fast - GPT_5_2_CODEX_HIGH: Final[str] = "gpt-5.2-codex-high" # Codex 5.2 High - GPT_5_2_CODEX_HIGH_FAST: Final[str] = "gpt-5.2-codex-high-fast" # Codex 5.2 High Fast - GPT_5_2_CODEX_XHIGH: Final[str] = "gpt-5.2-codex-xhigh" # Codex 5.2 Extra High - GPT_5_2_CODEX_XHIGH_FAST: Final[str] = "gpt-5.2-codex-xhigh-fast" # Codex 5.2 Extra High Fast - GPT_5_1_CODEX_MAX_LOW: Final[str] = "gpt-5.1-codex-max-low" # Codex 5.1 Max Low - GPT_5_1_CODEX_MAX_LOW_FAST: Final[str] = "gpt-5.1-codex-max-low-fast" # Codex 5.1 Max Low Fast - GPT_5_1_CODEX_MAX_MEDIUM: Final[str] = "gpt-5.1-codex-max-medium" # Codex 5.1 Max - GPT_5_1_CODEX_MAX_MEDIUM_FAST: Final[str] = "gpt-5.1-codex-max-medium-fast" # Codex 5.1 Max Medium Fast - GPT_5_1_CODEX_MAX_HIGH: Final[str] = "gpt-5.1-codex-max-high" # Codex 5.1 Max High - GPT_5_1_CODEX_MAX_HIGH_FAST: Final[str] = "gpt-5.1-codex-max-high-fast" # Codex 5.1 Max High Fast - GPT_5_1_CODEX_MAX_XHIGH: Final[str] = "gpt-5.1-codex-max-xhigh" # Codex 5.1 Max Extra High - GPT_5_1_CODEX_MAX_XHIGH_FAST: Final[str] = "gpt-5.1-codex-max-xhigh-fast" # Codex 5.1 Max Extra High Fast - CLAUDE_OPUS_4_7_THINKING_HIGH: Final[str] = "claude-opus-4-7-thinking-high" # Opus 4.7 1M High Thinking - GPT_5_4_HIGH: Final[str] = "gpt-5.4-high" # GPT-5.4 1M High - GPT_5_4_HIGH_FAST: Final[str] = "gpt-5.4-high-fast" # GPT-5.4 High Fast - GPT_5_4_XHIGH_FAST: Final[str] = "gpt-5.4-xhigh-fast" # GPT-5.4 Extra High Fast - CLAUDE_4_6_OPUS_HIGH_THINKING_FAST: Final[str] = "claude-4.6-opus-high-thinking-fast" # Opus 4.6 1M Thinking Fast - CLAUDE_4_6_SONNET_MEDIUM: Final[str] = "claude-4.6-sonnet-medium" # Sonnet 4.6 1M - CLAUDE_4_6_SONNET_MEDIUM_THINKING: Final[str] = "claude-4.6-sonnet-medium-thinking" # Sonnet 4.6 1M Thinking - CLAUDE_OPUS_4_7_LOW: Final[str] = "claude-opus-4-7-low" # Opus 4.7 1M Low - CLAUDE_OPUS_4_7_MEDIUM: Final[str] = "claude-opus-4-7-medium" # Opus 4.7 1M Medium - CLAUDE_OPUS_4_7_HIGH: Final[str] = "claude-opus-4-7-high" # Opus 4.7 1M High - CLAUDE_OPUS_4_7_XHIGH: Final[str] = "claude-opus-4-7-xhigh" # Opus 4.7 1M - CLAUDE_OPUS_4_7_MAX: Final[str] = "claude-opus-4-7-max" # Opus 4.7 1M Max - CLAUDE_OPUS_4_7_THINKING_LOW: Final[str] = "claude-opus-4-7-thinking-low" # Opus 4.7 1M Low Thinking - CLAUDE_OPUS_4_7_THINKING_MEDIUM: Final[str] = "claude-opus-4-7-thinking-medium" # Opus 4.7 1M Medium Thinking - CLAUDE_OPUS_4_7_THINKING_XHIGH: Final[str] = "claude-opus-4-7-thinking-xhigh" # Opus 4.7 1M Thinking - CLAUDE_OPUS_4_7_THINKING_MAX: Final[str] = "claude-opus-4-7-thinking-max" # Opus 4.7 1M Max Thinking - GPT_5_4_LOW: Final[str] = "gpt-5.4-low" # GPT-5.4 1M Low - GPT_5_4_MEDIUM: Final[str] = "gpt-5.4-medium" # GPT-5.4 1M - GPT_5_4_MEDIUM_FAST: Final[str] = "gpt-5.4-medium-fast" # GPT-5.4 Fast - GPT_5_4_XHIGH: Final[str] = "gpt-5.4-xhigh" # GPT-5.4 1M Extra High - CLAUDE_4_6_OPUS_HIGH: Final[str] = "claude-4.6-opus-high" # Opus 4.6 1M - CLAUDE_4_6_OPUS_MAX: Final[str] = "claude-4.6-opus-max" # Opus 4.6 1M Max - CLAUDE_4_6_OPUS_HIGH_THINKING: Final[str] = "claude-4.6-opus-high-thinking" # Opus 4.6 1M Thinking - CLAUDE_4_6_OPUS_MAX_THINKING: Final[str] = "claude-4.6-opus-max-thinking" # Opus 4.6 1M Max Thinking - CLAUDE_4_6_OPUS_MAX_THINKING_FAST: Final[str] = "claude-4.6-opus-max-thinking-fast" # Opus 4.6 1M Max Thinking Fast - CLAUDE_4_5_OPUS_HIGH: Final[str] = "claude-4.5-opus-high" # Opus 4.5 - CLAUDE_4_5_OPUS_HIGH_THINKING: Final[str] = "claude-4.5-opus-high-thinking" # Opus 4.5 Thinking - GPT_5_2_LOW: Final[str] = "gpt-5.2-low" # GPT-5.2 Low - GPT_5_2_LOW_FAST: Final[str] = "gpt-5.2-low-fast" # GPT-5.2 Low Fast - GPT_5_2_FAST: Final[str] = "gpt-5.2-fast" # GPT-5.2 Fast - GPT_5_2_HIGH: Final[str] = "gpt-5.2-high" # GPT-5.2 High - GPT_5_2_HIGH_FAST: Final[str] = "gpt-5.2-high-fast" # GPT-5.2 High Fast - GPT_5_2_XHIGH: Final[str] = "gpt-5.2-xhigh" # GPT-5.2 Extra High - GPT_5_2_XHIGH_FAST: Final[str] = "gpt-5.2-xhigh-fast" # GPT-5.2 Extra High Fast - GEMINI_3_1_PRO: Final[str] = "gemini-3.1-pro" # Gemini 3.1 Pro - GPT_5_4_MINI_NONE: Final[str] = "gpt-5.4-mini-none" # GPT-5.4 Mini None - GPT_5_4_MINI_LOW: Final[str] = "gpt-5.4-mini-low" # GPT-5.4 Mini Low - GPT_5_4_MINI_MEDIUM: Final[str] = "gpt-5.4-mini-medium" # GPT-5.4 Mini - GPT_5_4_MINI_HIGH: Final[str] = "gpt-5.4-mini-high" # GPT-5.4 Mini High - GPT_5_4_MINI_XHIGH: Final[str] = "gpt-5.4-mini-xhigh" # GPT-5.4 Mini Extra High - GPT_5_4_NANO_NONE: Final[str] = "gpt-5.4-nano-none" # GPT-5.4 Nano None - GPT_5_4_NANO_LOW: Final[str] = "gpt-5.4-nano-low" # GPT-5.4 Nano Low - GPT_5_4_NANO_MEDIUM: Final[str] = "gpt-5.4-nano-medium" # GPT-5.4 Nano - GPT_5_4_NANO_HIGH: Final[str] = "gpt-5.4-nano-high" # GPT-5.4 Nano High - GPT_5_4_NANO_XHIGH: Final[str] = "gpt-5.4-nano-xhigh" # GPT-5.4 Nano Extra High - GROK_4_20: Final[str] = "grok-4-20" # Grok 4.20 - GROK_4_20_THINKING: Final[str] = "grok-4-20-thinking" # Grok 4.20 Thinking - CLAUDE_4_5_SONNET: Final[str] = "claude-4.5-sonnet" # Sonnet 4.5 1M - CLAUDE_4_5_SONNET_THINKING: Final[str] = "claude-4.5-sonnet-thinking" # Sonnet 4.5 1M Thinking - GPT_5_1_LOW: Final[str] = "gpt-5.1-low" # GPT-5.1 Low - GPT_5_1: Final[str] = "gpt-5.1" # GPT-5.1 - GPT_5_1_HIGH: Final[str] = "gpt-5.1-high" # GPT-5.1 High - GEMINI_3_FLASH: Final[str] = "gemini-3-flash" # Gemini 3 Flash - GPT_5_1_CODEX_MINI_LOW: Final[str] = "gpt-5.1-codex-mini-low" # Codex 5.1 Mini Low - GPT_5_1_CODEX_MINI: Final[str] = "gpt-5.1-codex-mini" # Codex 5.1 Mini - GPT_5_1_CODEX_MINI_HIGH: Final[str] = "gpt-5.1-codex-mini-high" # Codex 5.1 Mini High - CLAUDE_4_SONNET: Final[str] = "claude-4-sonnet" # Sonnet 4 - CLAUDE_4_SONNET_1M: Final[str] = "claude-4-sonnet-1m" # Sonnet 4 1M - CLAUDE_4_SONNET_THINKING: Final[str] = "claude-4-sonnet-thinking" # Sonnet 4 Thinking - CLAUDE_4_SONNET_1M_THINKING: Final[str] = "claude-4-sonnet-1m-thinking" # Sonnet 4 1M Thinking - GPT_5_MINI: Final[str] = "gpt-5-mini" # GPT-5 Mini - KIMI_K2_5: Final[str] = "kimi-k2.5" # Kimi K2.5 - - -class DroidModels: - """Droid model identifiers.""" - OPUS_4_6_FAST: Final[str] = "opus-4.6-fast" # Opus 4.6 Fast Mode (12x) (default) - OPUS_4_5: Final[str] = "opus-4.5" # Opus 4.5 (2x) - SONNET_4_5: Final[str] = "sonnet-4.5" # Sonnet 4.5 (1.2x) - HAIKU_4_5: Final[str] = "haiku-4.5" # Haiku 4.5 (0.4x) - GPT_5_2: Final[str] = "gpt-5.2" # GPT-5.2 (0.7x) - GPT_5_2_CODEX: Final[str] = "gpt-5.2-codex" # GPT-5.2 Codex (0.7x) - GEMINI_3_FLASH: Final[str] = "gemini-3-flash" # Gemini 3 Flash (0.2x) - DROID_CORE: Final[str] = "droid-core-glm-4.7" # Droid Core (GLM-4.7) (0.25x) - - -class OpencodeModels: - """OpenCode model identifiers.""" - OPENCODE_BIG_PICKLE: Final[str] = "opencode/big-pickle" # Big Pickle - OPENCODE_GPT_5_NANO: Final[str] = "opencode/gpt-5-nano" # GPT-5 Nano (OpenCode) - OPENCODE_MIMO_V2_FLASH_FREE: Final[str] = "opencode/mimo-v2-flash-free" # Mimo V2 Flash Free - OPENCODE_MINIMAX_M2_5_FREE: Final[str] = "opencode/minimax-m2.5-free" # MiniMax M2.5 Free - OPENAI_CODEX_MINI_LATEST: Final[str] = "openai/codex-mini-latest" # Codex Mini Latest - OPENAI_GPT_3_5_TURBO: Final[str] = "openai/gpt-3.5-turbo" # GPT-3.5 Turbo - OPENAI_GPT_4: Final[str] = "openai/gpt-4" # GPT-4 - OPENAI_GPT_4_TURBO: Final[str] = "openai/gpt-4-turbo" # GPT-4 Turbo - OPENAI_GPT_4_1: Final[str] = "openai/gpt-4.1" # GPT-4.1 - OPENAI_GPT_4_1_MINI: Final[str] = "openai/gpt-4.1-mini" # GPT-4.1 Mini - OPENAI_GPT_4_1_NANO: Final[str] = "openai/gpt-4.1-nano" # GPT-4.1 Nano - OPENAI_GPT_4O: Final[str] = "openai/gpt-4o" # GPT-4o - OPENAI_GPT_4O_2024_05_13: Final[str] = "openai/gpt-4o-2024-05-13" # GPT-4o (2024-05-13) - OPENAI_GPT_4O_2024_08_06: Final[str] = "openai/gpt-4o-2024-08-06" # GPT-4o (2024-08-06) - OPENAI_GPT_4O_2024_11_20: Final[str] = "openai/gpt-4o-2024-11-20" # GPT-4o (2024-11-20) - OPENAI_GPT_4O_MINI: Final[str] = "openai/gpt-4o-mini" # GPT-4o Mini - OPENAI_GPT_5: Final[str] = "openai/gpt-5" # GPT-5 - OPENAI_GPT_5_CODEX: Final[str] = "openai/gpt-5-codex" # GPT-5 Codex - OPENAI_GPT_5_MINI: Final[str] = "openai/gpt-5-mini" # GPT-5 Mini - OPENAI_GPT_5_NANO: Final[str] = "openai/gpt-5-nano" # GPT-5 Nano - OPENAI_GPT_5_PRO: Final[str] = "openai/gpt-5-pro" # GPT-5 Pro - OPENAI_GPT_5_1: Final[str] = "openai/gpt-5.1" # GPT-5.1 - OPENAI_GPT_5_1_CHAT_LATEST: Final[str] = "openai/gpt-5.1-chat-latest" # GPT-5.1 Chat Latest - OPENAI_GPT_5_1_CODEX: Final[str] = "openai/gpt-5.1-codex" # GPT-5.1 Codex - OPENAI_GPT_5_1_CODEX_MAX: Final[str] = "openai/gpt-5.1-codex-max" # GPT-5.1 Codex Max - OPENAI_GPT_5_1_CODEX_MINI: Final[str] = "openai/gpt-5.1-codex-mini" # GPT-5.1 Codex Mini - OPENAI_GPT_5_2: Final[str] = "openai/gpt-5.2" # GPT-5.2 (default) - OPENAI_GPT_5_2_CHAT_LATEST: Final[str] = "openai/gpt-5.2-chat-latest" # GPT-5.2 Chat Latest - OPENAI_GPT_5_2_CODEX: Final[str] = "openai/gpt-5.2-codex" # GPT-5.2 Codex - OPENAI_GPT_5_2_PRO: Final[str] = "openai/gpt-5.2-pro" # GPT-5.2 Pro - OPENAI_GPT_5_3_CODEX: Final[str] = "openai/gpt-5.3-codex" # GPT-5.3 Codex - OPENAI_GPT_5_3_CODEX_SPARK: Final[str] = "openai/gpt-5.3-codex-spark" # GPT-5.3 Codex Spark - OPENAI_GPT_5_4: Final[str] = "openai/gpt-5.4" # GPT-5.4 - OPENAI_GPT_5_4_PRO: Final[str] = "openai/gpt-5.4-pro" # GPT-5.4 Pro - OPENAI_O1: Final[str] = "openai/o1" # O1 - OPENAI_O1_MINI: Final[str] = "openai/o1-mini" # O1 Mini - OPENAI_O1_PREVIEW: Final[str] = "openai/o1-preview" # O1 Preview - OPENAI_O1_PRO: Final[str] = "openai/o1-pro" # O1 Pro - OPENAI_O3: Final[str] = "openai/o3" # O3 - OPENAI_O3_DEEP_RESEARCH: Final[str] = "openai/o3-deep-research" # O3 Deep Research - OPENAI_O3_MINI: Final[str] = "openai/o3-mini" # O3 Mini - OPENAI_O3_PRO: Final[str] = "openai/o3-pro" # O3 Pro - OPENAI_O4_MINI: Final[str] = "openai/o4-mini" # O4 Mini - OPENAI_O4_MINI_DEEP_RESEARCH: Final[str] = "openai/o4-mini-deep-research" # O4 Mini Deep Research - - -class ModelOption(TypedDict): - """Model option for UI dropdowns.""" - value: str - label: str - - -CLAUDE_MODEL_OPTIONS: Final[List[ModelOption]] = [ - {"value": "sonnet", "label": "Sonnet"}, - {"value": "opus", "label": "Opus"}, - {"value": "haiku", "label": "Haiku"}, -] - -CODEX_MODEL_OPTIONS: Final[List[ModelOption]] = [ - {"value": "gpt-5.4", "label": "GPT-5.4 — Frontier model for complex coding, research, and real-world work."}, - {"value": "gpt-5.4", "label": "GPT-5.4 — Strong model for everyday coding"}, - {"value": "gpt-5.3-codex", "label": "GPT-5.3 Codex — Frontier agentic coding model"}, - {"value": "gpt-5.3-codex-spark", "label": "GPT-5.3 Codex Spark — Ultra-fast coding model"}, - {"value": "gpt-5.2-codex", "label": "GPT-5.2 Codex — Frontier agentic coding model"}, - {"value": "gpt-5.2", "label": "GPT-5.2 — Frontier model, knowledge & reasoning"}, - {"value": "gpt-5.1-codex-max", "label": "GPT-5.1 Codex Max — Deep and fast reasoning"}, - {"value": "gpt-5.1-codex-mini", "label": "GPT-5.1 Codex Mini — Cheaper, faster"}, -] - -GEMINI_MODEL_OPTIONS: Final[List[ModelOption]] = [ - {"value": "gemini-3.1-pro-preview", "label": "Gemini 3.1 Pro Preview"}, - {"value": "gemini-3-flash-preview", "label": "Gemini 3 Flash Preview"}, - {"value": "gemini-2.5-pro", "label": "Gemini 2.5 Pro"}, - {"value": "gemini-2.5-flash", "label": "Gemini 2.5 Flash"}, - {"value": "gemini-2.5-flash-lite", "label": "Gemini 2.5 Flash Lite"}, -] - -CURSOR_MODEL_OPTIONS: Final[List[ModelOption]] = [ - {"value": "composer-2-fast", "label": "Composer 2 Fast"}, - {"value": "composer-2", "label": "Composer 2"}, - {"value": "composer-1.5", "label": "Composer 1.5"}, - {"value": "gpt-5.3-codex-low", "label": "Codex 5.3 Low"}, - {"value": "gpt-5.3-codex-low-fast", "label": "Codex 5.3 Low Fast"}, - {"value": "gpt-5.3-codex", "label": "Codex 5.3"}, - {"value": "gpt-5.3-codex-fast", "label": "Codex 5.3 Fast"}, - {"value": "gpt-5.3-codex-high", "label": "Codex 5.3 High"}, - {"value": "gpt-5.3-codex-high-fast", "label": "Codex 5.3 High Fast"}, - {"value": "gpt-5.3-codex-xhigh", "label": "Codex 5.3 Extra High"}, - {"value": "gpt-5.3-codex-xhigh-fast", "label": "Codex 5.3 Extra High Fast"}, - {"value": "gpt-5.2", "label": "GPT-5.2"}, - {"value": "gpt-5.3-codex-spark-preview-low", "label": "Codex 5.3 Spark Low"}, - {"value": "gpt-5.3-codex-spark-preview", "label": "Codex 5.3 Spark"}, - {"value": "gpt-5.3-codex-spark-preview-high", "label": "Codex 5.3 Spark High"}, - {"value": "gpt-5.3-codex-spark-preview-xhigh", "label": "Codex 5.3 Spark Extra High"}, - {"value": "gpt-5.2-codex-low", "label": "Codex 5.2 Low"}, - {"value": "gpt-5.2-codex-low-fast", "label": "Codex 5.2 Low Fast"}, - {"value": "gpt-5.2-codex", "label": "Codex 5.2"}, - {"value": "gpt-5.2-codex-fast", "label": "Codex 5.2 Fast"}, - {"value": "gpt-5.2-codex-high", "label": "Codex 5.2 High"}, - {"value": "gpt-5.2-codex-high-fast", "label": "Codex 5.2 High Fast"}, - {"value": "gpt-5.2-codex-xhigh", "label": "Codex 5.2 Extra High"}, - {"value": "gpt-5.2-codex-xhigh-fast", "label": "Codex 5.2 Extra High Fast"}, - {"value": "gpt-5.1-codex-max-low", "label": "Codex 5.1 Max Low"}, - {"value": "gpt-5.1-codex-max-low-fast", "label": "Codex 5.1 Max Low Fast"}, - {"value": "gpt-5.1-codex-max-medium", "label": "Codex 5.1 Max"}, - {"value": "gpt-5.1-codex-max-medium-fast", "label": "Codex 5.1 Max Medium Fast"}, - {"value": "gpt-5.1-codex-max-high", "label": "Codex 5.1 Max High"}, - {"value": "gpt-5.1-codex-max-high-fast", "label": "Codex 5.1 Max High Fast"}, - {"value": "gpt-5.1-codex-max-xhigh", "label": "Codex 5.1 Max Extra High"}, - {"value": "gpt-5.1-codex-max-xhigh-fast", "label": "Codex 5.1 Max Extra High Fast"}, - {"value": "claude-opus-4-7-thinking-high", "label": "Opus 4.7 1M High Thinking"}, - {"value": "gpt-5.4-high", "label": "GPT-5.4 1M High"}, - {"value": "gpt-5.4-high-fast", "label": "GPT-5.4 High Fast"}, - {"value": "gpt-5.4-xhigh-fast", "label": "GPT-5.4 Extra High Fast"}, - {"value": "claude-4.6-opus-high-thinking-fast", "label": "Opus 4.6 1M Thinking Fast"}, - {"value": "claude-4.6-sonnet-medium", "label": "Sonnet 4.6 1M"}, - {"value": "claude-4.6-sonnet-medium-thinking", "label": "Sonnet 4.6 1M Thinking"}, - {"value": "claude-opus-4-7-low", "label": "Opus 4.7 1M Low"}, - {"value": "claude-opus-4-7-medium", "label": "Opus 4.7 1M Medium"}, - {"value": "claude-opus-4-7-high", "label": "Opus 4.7 1M High"}, - {"value": "claude-opus-4-7-xhigh", "label": "Opus 4.7 1M"}, - {"value": "claude-opus-4-7-max", "label": "Opus 4.7 1M Max"}, - {"value": "claude-opus-4-7-thinking-low", "label": "Opus 4.7 1M Low Thinking"}, - {"value": "claude-opus-4-7-thinking-medium", "label": "Opus 4.7 1M Medium Thinking"}, - {"value": "claude-opus-4-7-thinking-xhigh", "label": "Opus 4.7 1M Thinking"}, - {"value": "claude-opus-4-7-thinking-max", "label": "Opus 4.7 1M Max Thinking"}, - {"value": "gpt-5.4-low", "label": "GPT-5.4 1M Low"}, - {"value": "gpt-5.4-medium", "label": "GPT-5.4 1M"}, - {"value": "gpt-5.4-medium-fast", "label": "GPT-5.4 Fast"}, - {"value": "gpt-5.4-xhigh", "label": "GPT-5.4 1M Extra High"}, - {"value": "claude-4.6-opus-high", "label": "Opus 4.6 1M"}, - {"value": "claude-4.6-opus-max", "label": "Opus 4.6 1M Max"}, - {"value": "claude-4.6-opus-high-thinking", "label": "Opus 4.6 1M Thinking"}, - {"value": "claude-4.6-opus-max-thinking", "label": "Opus 4.6 1M Max Thinking"}, - {"value": "claude-4.6-opus-max-thinking-fast", "label": "Opus 4.6 1M Max Thinking Fast"}, - {"value": "claude-4.5-opus-high", "label": "Opus 4.5"}, - {"value": "claude-4.5-opus-high-thinking", "label": "Opus 4.5 Thinking"}, - {"value": "gpt-5.2-low", "label": "GPT-5.2 Low"}, - {"value": "gpt-5.2-low-fast", "label": "GPT-5.2 Low Fast"}, - {"value": "gpt-5.2-fast", "label": "GPT-5.2 Fast"}, - {"value": "gpt-5.2-high", "label": "GPT-5.2 High"}, - {"value": "gpt-5.2-high-fast", "label": "GPT-5.2 High Fast"}, - {"value": "gpt-5.2-xhigh", "label": "GPT-5.2 Extra High"}, - {"value": "gpt-5.2-xhigh-fast", "label": "GPT-5.2 Extra High Fast"}, - {"value": "gemini-3.1-pro", "label": "Gemini 3.1 Pro"}, - {"value": "gpt-5.4-mini-none", "label": "GPT-5.4 Mini None"}, - {"value": "gpt-5.4-mini-low", "label": "GPT-5.4 Mini Low"}, - {"value": "gpt-5.4-mini-medium", "label": "GPT-5.4 Mini"}, - {"value": "gpt-5.4-mini-high", "label": "GPT-5.4 Mini High"}, - {"value": "gpt-5.4-mini-xhigh", "label": "GPT-5.4 Mini Extra High"}, - {"value": "gpt-5.4-nano-none", "label": "GPT-5.4 Nano None"}, - {"value": "gpt-5.4-nano-low", "label": "GPT-5.4 Nano Low"}, - {"value": "gpt-5.4-nano-medium", "label": "GPT-5.4 Nano"}, - {"value": "gpt-5.4-nano-high", "label": "GPT-5.4 Nano High"}, - {"value": "gpt-5.4-nano-xhigh", "label": "GPT-5.4 Nano Extra High"}, - {"value": "grok-4-20", "label": "Grok 4.20"}, - {"value": "grok-4-20-thinking", "label": "Grok 4.20 Thinking"}, - {"value": "claude-4.5-sonnet", "label": "Sonnet 4.5 1M"}, - {"value": "claude-4.5-sonnet-thinking", "label": "Sonnet 4.5 1M Thinking"}, - {"value": "gpt-5.1-low", "label": "GPT-5.1 Low"}, - {"value": "gpt-5.1", "label": "GPT-5.1"}, - {"value": "gpt-5.1-high", "label": "GPT-5.1 High"}, - {"value": "gemini-3-flash", "label": "Gemini 3 Flash"}, - {"value": "gpt-5.1-codex-mini-low", "label": "Codex 5.1 Mini Low"}, - {"value": "gpt-5.1-codex-mini", "label": "Codex 5.1 Mini"}, - {"value": "gpt-5.1-codex-mini-high", "label": "Codex 5.1 Mini High"}, - {"value": "claude-4-sonnet", "label": "Sonnet 4"}, - {"value": "claude-4-sonnet-1m", "label": "Sonnet 4 1M"}, - {"value": "claude-4-sonnet-thinking", "label": "Sonnet 4 Thinking"}, - {"value": "claude-4-sonnet-1m-thinking", "label": "Sonnet 4 1M Thinking"}, - {"value": "gpt-5-mini", "label": "GPT-5 Mini"}, - {"value": "kimi-k2.5", "label": "Kimi K2.5"}, -] - -DROID_MODEL_OPTIONS: Final[List[ModelOption]] = [ - {"value": "opus-4.6-fast", "label": "Opus 4.6 Fast Mode (12x)"}, - {"value": "opus-4.5", "label": "Opus 4.5 (2x)"}, - {"value": "sonnet-4.5", "label": "Sonnet 4.5 (1.2x)"}, - {"value": "haiku-4.5", "label": "Haiku 4.5 (0.4x)"}, - {"value": "gpt-5.2", "label": "GPT-5.2 (0.7x)"}, - {"value": "gpt-5.2-codex", "label": "GPT-5.2 Codex (0.7x)"}, - {"value": "gemini-3-flash", "label": "Gemini 3 Flash (0.2x)"}, - {"value": "droid-core-glm-4.7", "label": "Droid Core (GLM-4.7) (0.25x)"}, -] - -OPENCODE_MODEL_OPTIONS: Final[List[ModelOption]] = [ - {"value": "opencode/big-pickle", "label": "Big Pickle"}, - {"value": "opencode/gpt-5-nano", "label": "GPT-5 Nano (OpenCode)"}, - {"value": "opencode/mimo-v2-flash-free", "label": "Mimo V2 Flash Free"}, - {"value": "opencode/minimax-m2.5-free", "label": "MiniMax M2.5 Free"}, - {"value": "openai/codex-mini-latest", "label": "Codex Mini Latest"}, - {"value": "openai/gpt-3.5-turbo", "label": "GPT-3.5 Turbo"}, - {"value": "openai/gpt-4", "label": "GPT-4"}, - {"value": "openai/gpt-4-turbo", "label": "GPT-4 Turbo"}, - {"value": "openai/gpt-4.1", "label": "GPT-4.1"}, - {"value": "openai/gpt-4.1-mini", "label": "GPT-4.1 Mini"}, - {"value": "openai/gpt-4.1-nano", "label": "GPT-4.1 Nano"}, - {"value": "openai/gpt-4o", "label": "GPT-4o"}, - {"value": "openai/gpt-4o-2024-05-13", "label": "GPT-4o (2024-05-13)"}, - {"value": "openai/gpt-4o-2024-08-06", "label": "GPT-4o (2024-08-06)"}, - {"value": "openai/gpt-4o-2024-11-20", "label": "GPT-4o (2024-11-20)"}, - {"value": "openai/gpt-4o-mini", "label": "GPT-4o Mini"}, - {"value": "openai/gpt-5", "label": "GPT-5"}, - {"value": "openai/gpt-5-codex", "label": "GPT-5 Codex"}, - {"value": "openai/gpt-5-mini", "label": "GPT-5 Mini"}, - {"value": "openai/gpt-5-nano", "label": "GPT-5 Nano"}, - {"value": "openai/gpt-5-pro", "label": "GPT-5 Pro"}, - {"value": "openai/gpt-5.1", "label": "GPT-5.1"}, - {"value": "openai/gpt-5.1-chat-latest", "label": "GPT-5.1 Chat Latest"}, - {"value": "openai/gpt-5.1-codex", "label": "GPT-5.1 Codex"}, - {"value": "openai/gpt-5.1-codex-max", "label": "GPT-5.1 Codex Max"}, - {"value": "openai/gpt-5.1-codex-mini", "label": "GPT-5.1 Codex Mini"}, - {"value": "openai/gpt-5.2", "label": "GPT-5.2"}, - {"value": "openai/gpt-5.2-chat-latest", "label": "GPT-5.2 Chat Latest"}, - {"value": "openai/gpt-5.2-codex", "label": "GPT-5.2 Codex"}, - {"value": "openai/gpt-5.2-pro", "label": "GPT-5.2 Pro"}, - {"value": "openai/gpt-5.3-codex", "label": "GPT-5.3 Codex"}, - {"value": "openai/gpt-5.3-codex-spark", "label": "GPT-5.3 Codex Spark"}, - {"value": "openai/gpt-5.4", "label": "GPT-5.4"}, - {"value": "openai/gpt-5.4-pro", "label": "GPT-5.4 Pro"}, - {"value": "openai/o1", "label": "O1"}, - {"value": "openai/o1-mini", "label": "O1 Mini"}, - {"value": "openai/o1-preview", "label": "O1 Preview"}, - {"value": "openai/o1-pro", "label": "O1 Pro"}, - {"value": "openai/o3", "label": "O3"}, - {"value": "openai/o3-deep-research", "label": "O3 Deep Research"}, - {"value": "openai/o3-mini", "label": "O3 Mini"}, - {"value": "openai/o3-pro", "label": "O3 Pro"}, - {"value": "openai/o4-mini", "label": "O4 Mini"}, - {"value": "openai/o4-mini-deep-research", "label": "O4 Mini Deep Research"}, -] - -class Models: - """All models grouped by CLI tool.""" - Claude = ClaudeModels - Codex = CodexModels - Gemini = GeminiModels - Cursor = CursorModels - Droid = DroidModels - Opencode = OpencodeModels - - -class ModelOptions: - """All model options grouped by CLI tool (for UI dropdowns).""" - Claude = CLAUDE_MODEL_OPTIONS - Codex = CODEX_MODEL_OPTIONS - Gemini = GEMINI_MODEL_OPTIONS - Cursor = CURSOR_MODEL_OPTIONS - Droid = DROID_MODEL_OPTIONS - Opencode = OPENCODE_MODEL_OPTIONS - - -class SwarmPatterns: - """Swarm patterns for multi-agent workflows.""" - HUB_SPOKE: Final[str] = "hub-spoke" # Central coordinator distributes tasks to workers - DAG: Final[str] = "dag" # Directed acyclic graph with dependencies - FAN_OUT: Final[str] = "fan-out" # Parallel execution across multiple agents - PIPELINE: Final[str] = "pipeline" # Sequential processing through stages - CONSENSUS: Final[str] = "consensus" # Agents reach agreement before proceeding - MESH: Final[str] = "mesh" # Fully connected peer-to-peer communication - HANDOFF: Final[str] = "handoff" # Sequential handoff between agents - CASCADE: Final[str] = "cascade" # Cascading delegation - DEBATE: Final[str] = "debate" # Agents debate to reach conclusion - HIERARCHICAL: Final[str] = "hierarchical" # Tree-structured coordination - - -DEFAULT_MODELS: Final[dict] = { - "claude": "sonnet", - "codex": "gpt-5.4", - "gemini": "gemini-3.1-pro-preview", - "cursor": "composer-2-fast", - "droid": "opus-4.6-fast", - "opencode": "openai/gpt-5.2", -} - -CLI_REGISTRY: Final[dict] = { - "claude": { - "name": "Claude Code", - "package": "@anthropic-ai/claude-code", - "version": "2.1.72", - "install": "npm install -g @anthropic-ai/claude-code", - }, - "codex": { - "name": "Codex CLI", - "package": "@openai/codex", - "version": "0.124.0", - "install": "npm install -g @openai/codex", - }, - "gemini": { - "name": "Gemini CLI", - "package": "@google/gemini-cli", - "version": "0.39.1", - "install": "npm install -g @google/gemini-cli", - }, - "cursor": { - "name": "Cursor", - "package": "cursor", - "version": "2026.02.27-e7d2ef6", - "install": "Download from cursor.com", - }, - "droid": { - "name": "Droid", - "package": "droid", - "version": "0.1.0", - "install": "Download from droid.dev", - }, - "opencode": { - "name": "OpenCode", - "package": "opencode-ai", - "version": "1.2.24", - "install": "npm install -g opencode-ai", - }, - "aider": { - "name": "Aider", - "package": "aider-chat", - "version": "0.72.1", - "install": "pip install aider-chat", - }, - "goose": { - "name": "Goose", - "package": "goose-ai", - "version": "1.0.16", - "install": "pip install goose-ai", - }, -} diff --git a/packages/sdk-py/src/agent_relay/models.py b/packages/sdk-py/src/agent_relay/models.py index 555f90f0d..d46cc58e0 100644 --- a/packages/sdk-py/src/agent_relay/models.py +++ b/packages/sdk-py/src/agent_relay/models.py @@ -1,38 +1,496 @@ -"""Model constants for supported CLI tools. - -Matches packages/config/src/cli-registry.generated.ts. """ +AUTO-GENERATED FILE - DO NOT EDIT +Generated from packages/shared/cli-registry.yaml +Run: npm run codegen:models +""" + +from typing import Final, TypedDict, List + + +class CLIVersions: + """CLI tool versions. Update packages/shared/cli-registry.yaml to change versions.""" + CLAUDE: Final[str] = "2.1.72" # Claude Code + CODEX: Final[str] = "0.124.0" # Codex CLI + GEMINI: Final[str] = "0.39.1" # Gemini CLI + CURSOR: Final[str] = "2026.02.27-e7d2ef6" # Cursor + DROID: Final[str] = "0.1.0" # Droid + OPENCODE: Final[str] = "1.2.24" # OpenCode + AIDER: Final[str] = "0.72.1" # Aider + GOOSE: Final[str] = "1.0.16" # Goose + + +class CLIs: + """Supported CLI tools.""" + CLAUDE: Final[str] = "claude" + CODEX: Final[str] = "codex" + GEMINI: Final[str] = "gemini" + CURSOR: Final[str] = "cursor" + DROID: Final[str] = "droid" + OPENCODE: Final[str] = "opencode" + AIDER: Final[str] = "aider" + GOOSE: Final[str] = "goose" + + +class ClaudeModels: + """Claude Code model identifiers.""" + SONNET: Final[str] = "sonnet" # Sonnet (default) + OPUS: Final[str] = "opus" # Opus + HAIKU: Final[str] = "haiku" # Haiku + + +class CodexModels: + """Codex CLI model identifiers.""" + GPT_5_4: Final[str] = "gpt-5.4" # GPT-5.4 — Frontier model for complex coding, research, and real-world work. (default) + GPT_5_3_CODEX: Final[str] = "gpt-5.3-codex" # GPT-5.3 Codex — Frontier agentic coding model + GPT_5_3_CODEX_SPARK: Final[str] = "gpt-5.3-codex-spark" # GPT-5.3 Codex Spark — Ultra-fast coding model + GPT_5_2_CODEX: Final[str] = "gpt-5.2-codex" # GPT-5.2 Codex — Frontier agentic coding model + GPT_5_2: Final[str] = "gpt-5.2" # GPT-5.2 — Frontier model, knowledge & reasoning + GPT_5_1_CODEX_MAX: Final[str] = "gpt-5.1-codex-max" # GPT-5.1 Codex Max — Deep and fast reasoning + GPT_5_1_CODEX_MINI: Final[str] = "gpt-5.1-codex-mini" # GPT-5.1 Codex Mini — Cheaper, faster + + +class GeminiModels: + """Gemini CLI model identifiers.""" + GEMINI_3_1_PRO_PREVIEW: Final[str] = "gemini-3.1-pro-preview" # Gemini 3.1 Pro Preview (default) + GEMINI_3_FLASH_PREVIEW: Final[str] = "gemini-3-flash-preview" # Gemini 3 Flash Preview + GEMINI_2_5_PRO: Final[str] = "gemini-2.5-pro" # Gemini 2.5 Pro + GEMINI_2_5_FLASH: Final[str] = "gemini-2.5-flash" # Gemini 2.5 Flash + GEMINI_2_5_FLASH_LITE: Final[str] = "gemini-2.5-flash-lite" # Gemini 2.5 Flash Lite + + +class CursorModels: + """Cursor model identifiers.""" + COMPOSER_2_FAST: Final[str] = "composer-2-fast" # Composer 2 Fast (default) + COMPOSER_2: Final[str] = "composer-2" # Composer 2 + COMPOSER_1_5: Final[str] = "composer-1.5" # Composer 1.5 + GPT_5_3_CODEX_LOW: Final[str] = "gpt-5.3-codex-low" # Codex 5.3 Low + GPT_5_3_CODEX_LOW_FAST: Final[str] = "gpt-5.3-codex-low-fast" # Codex 5.3 Low Fast + GPT_5_3_CODEX: Final[str] = "gpt-5.3-codex" # Codex 5.3 + GPT_5_3_CODEX_FAST: Final[str] = "gpt-5.3-codex-fast" # Codex 5.3 Fast + GPT_5_3_CODEX_HIGH: Final[str] = "gpt-5.3-codex-high" # Codex 5.3 High + GPT_5_3_CODEX_HIGH_FAST: Final[str] = "gpt-5.3-codex-high-fast" # Codex 5.3 High Fast + GPT_5_3_CODEX_XHIGH: Final[str] = "gpt-5.3-codex-xhigh" # Codex 5.3 Extra High + GPT_5_3_CODEX_XHIGH_FAST: Final[str] = "gpt-5.3-codex-xhigh-fast" # Codex 5.3 Extra High Fast + GPT_5_2: Final[str] = "gpt-5.2" # GPT-5.2 + GPT_5_3_CODEX_SPARK_PREVIEW_LOW: Final[str] = "gpt-5.3-codex-spark-preview-low" # Codex 5.3 Spark Low + GPT_5_3_CODEX_SPARK_PREVIEW: Final[str] = "gpt-5.3-codex-spark-preview" # Codex 5.3 Spark + GPT_5_3_CODEX_SPARK_PREVIEW_HIGH: Final[str] = "gpt-5.3-codex-spark-preview-high" # Codex 5.3 Spark High + GPT_5_3_CODEX_SPARK_PREVIEW_XHIGH: Final[str] = "gpt-5.3-codex-spark-preview-xhigh" # Codex 5.3 Spark Extra High + GPT_5_2_CODEX_LOW: Final[str] = "gpt-5.2-codex-low" # Codex 5.2 Low + GPT_5_2_CODEX_LOW_FAST: Final[str] = "gpt-5.2-codex-low-fast" # Codex 5.2 Low Fast + GPT_5_2_CODEX: Final[str] = "gpt-5.2-codex" # Codex 5.2 + GPT_5_2_CODEX_FAST: Final[str] = "gpt-5.2-codex-fast" # Codex 5.2 Fast + GPT_5_2_CODEX_HIGH: Final[str] = "gpt-5.2-codex-high" # Codex 5.2 High + GPT_5_2_CODEX_HIGH_FAST: Final[str] = "gpt-5.2-codex-high-fast" # Codex 5.2 High Fast + GPT_5_2_CODEX_XHIGH: Final[str] = "gpt-5.2-codex-xhigh" # Codex 5.2 Extra High + GPT_5_2_CODEX_XHIGH_FAST: Final[str] = "gpt-5.2-codex-xhigh-fast" # Codex 5.2 Extra High Fast + GPT_5_1_CODEX_MAX_LOW: Final[str] = "gpt-5.1-codex-max-low" # Codex 5.1 Max Low + GPT_5_1_CODEX_MAX_LOW_FAST: Final[str] = "gpt-5.1-codex-max-low-fast" # Codex 5.1 Max Low Fast + GPT_5_1_CODEX_MAX_MEDIUM: Final[str] = "gpt-5.1-codex-max-medium" # Codex 5.1 Max + GPT_5_1_CODEX_MAX_MEDIUM_FAST: Final[str] = "gpt-5.1-codex-max-medium-fast" # Codex 5.1 Max Medium Fast + GPT_5_1_CODEX_MAX_HIGH: Final[str] = "gpt-5.1-codex-max-high" # Codex 5.1 Max High + GPT_5_1_CODEX_MAX_HIGH_FAST: Final[str] = "gpt-5.1-codex-max-high-fast" # Codex 5.1 Max High Fast + GPT_5_1_CODEX_MAX_XHIGH: Final[str] = "gpt-5.1-codex-max-xhigh" # Codex 5.1 Max Extra High + GPT_5_1_CODEX_MAX_XHIGH_FAST: Final[str] = "gpt-5.1-codex-max-xhigh-fast" # Codex 5.1 Max Extra High Fast + CLAUDE_OPUS_4_7_THINKING_HIGH: Final[str] = "claude-opus-4-7-thinking-high" # Opus 4.7 1M High Thinking + GPT_5_4_HIGH: Final[str] = "gpt-5.4-high" # GPT-5.4 1M High + GPT_5_4_HIGH_FAST: Final[str] = "gpt-5.4-high-fast" # GPT-5.4 High Fast + GPT_5_4_XHIGH_FAST: Final[str] = "gpt-5.4-xhigh-fast" # GPT-5.4 Extra High Fast + CLAUDE_4_6_OPUS_HIGH_THINKING_FAST: Final[str] = "claude-4.6-opus-high-thinking-fast" # Opus 4.6 1M Thinking Fast + CLAUDE_4_6_SONNET_MEDIUM: Final[str] = "claude-4.6-sonnet-medium" # Sonnet 4.6 1M + CLAUDE_4_6_SONNET_MEDIUM_THINKING: Final[str] = "claude-4.6-sonnet-medium-thinking" # Sonnet 4.6 1M Thinking + CLAUDE_OPUS_4_7_LOW: Final[str] = "claude-opus-4-7-low" # Opus 4.7 1M Low + CLAUDE_OPUS_4_7_MEDIUM: Final[str] = "claude-opus-4-7-medium" # Opus 4.7 1M Medium + CLAUDE_OPUS_4_7_HIGH: Final[str] = "claude-opus-4-7-high" # Opus 4.7 1M High + CLAUDE_OPUS_4_7_XHIGH: Final[str] = "claude-opus-4-7-xhigh" # Opus 4.7 1M + CLAUDE_OPUS_4_7_MAX: Final[str] = "claude-opus-4-7-max" # Opus 4.7 1M Max + CLAUDE_OPUS_4_7_THINKING_LOW: Final[str] = "claude-opus-4-7-thinking-low" # Opus 4.7 1M Low Thinking + CLAUDE_OPUS_4_7_THINKING_MEDIUM: Final[str] = "claude-opus-4-7-thinking-medium" # Opus 4.7 1M Medium Thinking + CLAUDE_OPUS_4_7_THINKING_XHIGH: Final[str] = "claude-opus-4-7-thinking-xhigh" # Opus 4.7 1M Thinking + CLAUDE_OPUS_4_7_THINKING_MAX: Final[str] = "claude-opus-4-7-thinking-max" # Opus 4.7 1M Max Thinking + GPT_5_4_LOW: Final[str] = "gpt-5.4-low" # GPT-5.4 1M Low + GPT_5_4_MEDIUM: Final[str] = "gpt-5.4-medium" # GPT-5.4 1M + GPT_5_4_MEDIUM_FAST: Final[str] = "gpt-5.4-medium-fast" # GPT-5.4 Fast + GPT_5_4_XHIGH: Final[str] = "gpt-5.4-xhigh" # GPT-5.4 1M Extra High + CLAUDE_4_6_OPUS_HIGH: Final[str] = "claude-4.6-opus-high" # Opus 4.6 1M + CLAUDE_4_6_OPUS_MAX: Final[str] = "claude-4.6-opus-max" # Opus 4.6 1M Max + CLAUDE_4_6_OPUS_HIGH_THINKING: Final[str] = "claude-4.6-opus-high-thinking" # Opus 4.6 1M Thinking + CLAUDE_4_6_OPUS_MAX_THINKING: Final[str] = "claude-4.6-opus-max-thinking" # Opus 4.6 1M Max Thinking + CLAUDE_4_6_OPUS_MAX_THINKING_FAST: Final[str] = "claude-4.6-opus-max-thinking-fast" # Opus 4.6 1M Max Thinking Fast + CLAUDE_4_5_OPUS_HIGH: Final[str] = "claude-4.5-opus-high" # Opus 4.5 + CLAUDE_4_5_OPUS_HIGH_THINKING: Final[str] = "claude-4.5-opus-high-thinking" # Opus 4.5 Thinking + GPT_5_2_LOW: Final[str] = "gpt-5.2-low" # GPT-5.2 Low + GPT_5_2_LOW_FAST: Final[str] = "gpt-5.2-low-fast" # GPT-5.2 Low Fast + GPT_5_2_FAST: Final[str] = "gpt-5.2-fast" # GPT-5.2 Fast + GPT_5_2_HIGH: Final[str] = "gpt-5.2-high" # GPT-5.2 High + GPT_5_2_HIGH_FAST: Final[str] = "gpt-5.2-high-fast" # GPT-5.2 High Fast + GPT_5_2_XHIGH: Final[str] = "gpt-5.2-xhigh" # GPT-5.2 Extra High + GPT_5_2_XHIGH_FAST: Final[str] = "gpt-5.2-xhigh-fast" # GPT-5.2 Extra High Fast + GEMINI_3_1_PRO: Final[str] = "gemini-3.1-pro" # Gemini 3.1 Pro + GPT_5_4_MINI_NONE: Final[str] = "gpt-5.4-mini-none" # GPT-5.4 Mini None + GPT_5_4_MINI_LOW: Final[str] = "gpt-5.4-mini-low" # GPT-5.4 Mini Low + GPT_5_4_MINI_MEDIUM: Final[str] = "gpt-5.4-mini-medium" # GPT-5.4 Mini + GPT_5_4_MINI_HIGH: Final[str] = "gpt-5.4-mini-high" # GPT-5.4 Mini High + GPT_5_4_MINI_XHIGH: Final[str] = "gpt-5.4-mini-xhigh" # GPT-5.4 Mini Extra High + GPT_5_4_NANO_NONE: Final[str] = "gpt-5.4-nano-none" # GPT-5.4 Nano None + GPT_5_4_NANO_LOW: Final[str] = "gpt-5.4-nano-low" # GPT-5.4 Nano Low + GPT_5_4_NANO_MEDIUM: Final[str] = "gpt-5.4-nano-medium" # GPT-5.4 Nano + GPT_5_4_NANO_HIGH: Final[str] = "gpt-5.4-nano-high" # GPT-5.4 Nano High + GPT_5_4_NANO_XHIGH: Final[str] = "gpt-5.4-nano-xhigh" # GPT-5.4 Nano Extra High + GROK_4_20: Final[str] = "grok-4-20" # Grok 4.20 + GROK_4_20_THINKING: Final[str] = "grok-4-20-thinking" # Grok 4.20 Thinking + CLAUDE_4_5_SONNET: Final[str] = "claude-4.5-sonnet" # Sonnet 4.5 1M + CLAUDE_4_5_SONNET_THINKING: Final[str] = "claude-4.5-sonnet-thinking" # Sonnet 4.5 1M Thinking + GPT_5_1_LOW: Final[str] = "gpt-5.1-low" # GPT-5.1 Low + GPT_5_1: Final[str] = "gpt-5.1" # GPT-5.1 + GPT_5_1_HIGH: Final[str] = "gpt-5.1-high" # GPT-5.1 High + GEMINI_3_FLASH: Final[str] = "gemini-3-flash" # Gemini 3 Flash + GPT_5_1_CODEX_MINI_LOW: Final[str] = "gpt-5.1-codex-mini-low" # Codex 5.1 Mini Low + GPT_5_1_CODEX_MINI: Final[str] = "gpt-5.1-codex-mini" # Codex 5.1 Mini + GPT_5_1_CODEX_MINI_HIGH: Final[str] = "gpt-5.1-codex-mini-high" # Codex 5.1 Mini High + CLAUDE_4_SONNET: Final[str] = "claude-4-sonnet" # Sonnet 4 + CLAUDE_4_SONNET_1M: Final[str] = "claude-4-sonnet-1m" # Sonnet 4 1M + CLAUDE_4_SONNET_THINKING: Final[str] = "claude-4-sonnet-thinking" # Sonnet 4 Thinking + CLAUDE_4_SONNET_1M_THINKING: Final[str] = "claude-4-sonnet-1m-thinking" # Sonnet 4 1M Thinking + GPT_5_MINI: Final[str] = "gpt-5-mini" # GPT-5 Mini + KIMI_K2_5: Final[str] = "kimi-k2.5" # Kimi K2.5 + + +class DroidModels: + """Droid model identifiers.""" + OPUS_4_6_FAST: Final[str] = "opus-4.6-fast" # Opus 4.6 Fast Mode (12x) (default) + OPUS_4_5: Final[str] = "opus-4.5" # Opus 4.5 (2x) + SONNET_4_5: Final[str] = "sonnet-4.5" # Sonnet 4.5 (1.2x) + HAIKU_4_5: Final[str] = "haiku-4.5" # Haiku 4.5 (0.4x) + GPT_5_2: Final[str] = "gpt-5.2" # GPT-5.2 (0.7x) + GPT_5_2_CODEX: Final[str] = "gpt-5.2-codex" # GPT-5.2 Codex (0.7x) + GEMINI_3_FLASH: Final[str] = "gemini-3-flash" # Gemini 3 Flash (0.2x) + DROID_CORE: Final[str] = "droid-core-glm-4.7" # Droid Core (GLM-4.7) (0.25x) +class OpencodeModels: + """OpenCode model identifiers.""" + OPENCODE_BIG_PICKLE: Final[str] = "opencode/big-pickle" # Big Pickle + OPENCODE_GPT_5_NANO: Final[str] = "opencode/gpt-5-nano" # GPT-5 Nano (OpenCode) + OPENCODE_MIMO_V2_FLASH_FREE: Final[str] = "opencode/mimo-v2-flash-free" # Mimo V2 Flash Free + OPENCODE_MINIMAX_M2_5_FREE: Final[str] = "opencode/minimax-m2.5-free" # MiniMax M2.5 Free + OPENAI_CODEX_MINI_LATEST: Final[str] = "openai/codex-mini-latest" # Codex Mini Latest + OPENAI_GPT_3_5_TURBO: Final[str] = "openai/gpt-3.5-turbo" # GPT-3.5 Turbo + OPENAI_GPT_4: Final[str] = "openai/gpt-4" # GPT-4 + OPENAI_GPT_4_TURBO: Final[str] = "openai/gpt-4-turbo" # GPT-4 Turbo + OPENAI_GPT_4_1: Final[str] = "openai/gpt-4.1" # GPT-4.1 + OPENAI_GPT_4_1_MINI: Final[str] = "openai/gpt-4.1-mini" # GPT-4.1 Mini + OPENAI_GPT_4_1_NANO: Final[str] = "openai/gpt-4.1-nano" # GPT-4.1 Nano + OPENAI_GPT_4O: Final[str] = "openai/gpt-4o" # GPT-4o + OPENAI_GPT_4O_2024_05_13: Final[str] = "openai/gpt-4o-2024-05-13" # GPT-4o (2024-05-13) + OPENAI_GPT_4O_2024_08_06: Final[str] = "openai/gpt-4o-2024-08-06" # GPT-4o (2024-08-06) + OPENAI_GPT_4O_2024_11_20: Final[str] = "openai/gpt-4o-2024-11-20" # GPT-4o (2024-11-20) + OPENAI_GPT_4O_MINI: Final[str] = "openai/gpt-4o-mini" # GPT-4o Mini + OPENAI_GPT_5: Final[str] = "openai/gpt-5" # GPT-5 + OPENAI_GPT_5_CODEX: Final[str] = "openai/gpt-5-codex" # GPT-5 Codex + OPENAI_GPT_5_MINI: Final[str] = "openai/gpt-5-mini" # GPT-5 Mini + OPENAI_GPT_5_NANO: Final[str] = "openai/gpt-5-nano" # GPT-5 Nano + OPENAI_GPT_5_PRO: Final[str] = "openai/gpt-5-pro" # GPT-5 Pro + OPENAI_GPT_5_1: Final[str] = "openai/gpt-5.1" # GPT-5.1 + OPENAI_GPT_5_1_CHAT_LATEST: Final[str] = "openai/gpt-5.1-chat-latest" # GPT-5.1 Chat Latest + OPENAI_GPT_5_1_CODEX: Final[str] = "openai/gpt-5.1-codex" # GPT-5.1 Codex + OPENAI_GPT_5_1_CODEX_MAX: Final[str] = "openai/gpt-5.1-codex-max" # GPT-5.1 Codex Max + OPENAI_GPT_5_1_CODEX_MINI: Final[str] = "openai/gpt-5.1-codex-mini" # GPT-5.1 Codex Mini + OPENAI_GPT_5_2: Final[str] = "openai/gpt-5.2" # GPT-5.2 (default) + OPENAI_GPT_5_2_CHAT_LATEST: Final[str] = "openai/gpt-5.2-chat-latest" # GPT-5.2 Chat Latest + OPENAI_GPT_5_2_CODEX: Final[str] = "openai/gpt-5.2-codex" # GPT-5.2 Codex + OPENAI_GPT_5_2_PRO: Final[str] = "openai/gpt-5.2-pro" # GPT-5.2 Pro + OPENAI_GPT_5_3_CODEX: Final[str] = "openai/gpt-5.3-codex" # GPT-5.3 Codex + OPENAI_GPT_5_3_CODEX_SPARK: Final[str] = "openai/gpt-5.3-codex-spark" # GPT-5.3 Codex Spark + OPENAI_GPT_5_4: Final[str] = "openai/gpt-5.4" # GPT-5.4 + OPENAI_GPT_5_4_PRO: Final[str] = "openai/gpt-5.4-pro" # GPT-5.4 Pro + OPENAI_O1: Final[str] = "openai/o1" # O1 + OPENAI_O1_MINI: Final[str] = "openai/o1-mini" # O1 Mini + OPENAI_O1_PREVIEW: Final[str] = "openai/o1-preview" # O1 Preview + OPENAI_O1_PRO: Final[str] = "openai/o1-pro" # O1 Pro + OPENAI_O3: Final[str] = "openai/o3" # O3 + OPENAI_O3_DEEP_RESEARCH: Final[str] = "openai/o3-deep-research" # O3 Deep Research + OPENAI_O3_MINI: Final[str] = "openai/o3-mini" # O3 Mini + OPENAI_O3_PRO: Final[str] = "openai/o3-pro" # O3 Pro + OPENAI_O4_MINI: Final[str] = "openai/o4-mini" # O4 Mini + OPENAI_O4_MINI_DEEP_RESEARCH: Final[str] = "openai/o4-mini-deep-research" # O4 Mini Deep Research + + +class ModelOption(TypedDict): + """Model option for UI dropdowns.""" + value: str + label: str + + +CLAUDE_MODEL_OPTIONS: Final[List[ModelOption]] = [ + {"value": "sonnet", "label": "Sonnet"}, + {"value": "opus", "label": "Opus"}, + {"value": "haiku", "label": "Haiku"}, +] + +CODEX_MODEL_OPTIONS: Final[List[ModelOption]] = [ + {"value": "gpt-5.4", "label": "GPT-5.4 — Frontier model for complex coding, research, and real-world work."}, + {"value": "gpt-5.3-codex", "label": "GPT-5.3 Codex — Frontier agentic coding model"}, + {"value": "gpt-5.3-codex-spark", "label": "GPT-5.3 Codex Spark — Ultra-fast coding model"}, + {"value": "gpt-5.2-codex", "label": "GPT-5.2 Codex — Frontier agentic coding model"}, + {"value": "gpt-5.2", "label": "GPT-5.2 — Frontier model, knowledge & reasoning"}, + {"value": "gpt-5.1-codex-max", "label": "GPT-5.1 Codex Max — Deep and fast reasoning"}, + {"value": "gpt-5.1-codex-mini", "label": "GPT-5.1 Codex Mini — Cheaper, faster"}, +] + +GEMINI_MODEL_OPTIONS: Final[List[ModelOption]] = [ + {"value": "gemini-3.1-pro-preview", "label": "Gemini 3.1 Pro Preview"}, + {"value": "gemini-3-flash-preview", "label": "Gemini 3 Flash Preview"}, + {"value": "gemini-2.5-pro", "label": "Gemini 2.5 Pro"}, + {"value": "gemini-2.5-flash", "label": "Gemini 2.5 Flash"}, + {"value": "gemini-2.5-flash-lite", "label": "Gemini 2.5 Flash Lite"}, +] + +CURSOR_MODEL_OPTIONS: Final[List[ModelOption]] = [ + {"value": "composer-2-fast", "label": "Composer 2 Fast"}, + {"value": "composer-2", "label": "Composer 2"}, + {"value": "composer-1.5", "label": "Composer 1.5"}, + {"value": "gpt-5.3-codex-low", "label": "Codex 5.3 Low"}, + {"value": "gpt-5.3-codex-low-fast", "label": "Codex 5.3 Low Fast"}, + {"value": "gpt-5.3-codex", "label": "Codex 5.3"}, + {"value": "gpt-5.3-codex-fast", "label": "Codex 5.3 Fast"}, + {"value": "gpt-5.3-codex-high", "label": "Codex 5.3 High"}, + {"value": "gpt-5.3-codex-high-fast", "label": "Codex 5.3 High Fast"}, + {"value": "gpt-5.3-codex-xhigh", "label": "Codex 5.3 Extra High"}, + {"value": "gpt-5.3-codex-xhigh-fast", "label": "Codex 5.3 Extra High Fast"}, + {"value": "gpt-5.2", "label": "GPT-5.2"}, + {"value": "gpt-5.3-codex-spark-preview-low", "label": "Codex 5.3 Spark Low"}, + {"value": "gpt-5.3-codex-spark-preview", "label": "Codex 5.3 Spark"}, + {"value": "gpt-5.3-codex-spark-preview-high", "label": "Codex 5.3 Spark High"}, + {"value": "gpt-5.3-codex-spark-preview-xhigh", "label": "Codex 5.3 Spark Extra High"}, + {"value": "gpt-5.2-codex-low", "label": "Codex 5.2 Low"}, + {"value": "gpt-5.2-codex-low-fast", "label": "Codex 5.2 Low Fast"}, + {"value": "gpt-5.2-codex", "label": "Codex 5.2"}, + {"value": "gpt-5.2-codex-fast", "label": "Codex 5.2 Fast"}, + {"value": "gpt-5.2-codex-high", "label": "Codex 5.2 High"}, + {"value": "gpt-5.2-codex-high-fast", "label": "Codex 5.2 High Fast"}, + {"value": "gpt-5.2-codex-xhigh", "label": "Codex 5.2 Extra High"}, + {"value": "gpt-5.2-codex-xhigh-fast", "label": "Codex 5.2 Extra High Fast"}, + {"value": "gpt-5.1-codex-max-low", "label": "Codex 5.1 Max Low"}, + {"value": "gpt-5.1-codex-max-low-fast", "label": "Codex 5.1 Max Low Fast"}, + {"value": "gpt-5.1-codex-max-medium", "label": "Codex 5.1 Max"}, + {"value": "gpt-5.1-codex-max-medium-fast", "label": "Codex 5.1 Max Medium Fast"}, + {"value": "gpt-5.1-codex-max-high", "label": "Codex 5.1 Max High"}, + {"value": "gpt-5.1-codex-max-high-fast", "label": "Codex 5.1 Max High Fast"}, + {"value": "gpt-5.1-codex-max-xhigh", "label": "Codex 5.1 Max Extra High"}, + {"value": "gpt-5.1-codex-max-xhigh-fast", "label": "Codex 5.1 Max Extra High Fast"}, + {"value": "claude-opus-4-7-thinking-high", "label": "Opus 4.7 1M High Thinking"}, + {"value": "gpt-5.4-high", "label": "GPT-5.4 1M High"}, + {"value": "gpt-5.4-high-fast", "label": "GPT-5.4 High Fast"}, + {"value": "gpt-5.4-xhigh-fast", "label": "GPT-5.4 Extra High Fast"}, + {"value": "claude-4.6-opus-high-thinking-fast", "label": "Opus 4.6 1M Thinking Fast"}, + {"value": "claude-4.6-sonnet-medium", "label": "Sonnet 4.6 1M"}, + {"value": "claude-4.6-sonnet-medium-thinking", "label": "Sonnet 4.6 1M Thinking"}, + {"value": "claude-opus-4-7-low", "label": "Opus 4.7 1M Low"}, + {"value": "claude-opus-4-7-medium", "label": "Opus 4.7 1M Medium"}, + {"value": "claude-opus-4-7-high", "label": "Opus 4.7 1M High"}, + {"value": "claude-opus-4-7-xhigh", "label": "Opus 4.7 1M"}, + {"value": "claude-opus-4-7-max", "label": "Opus 4.7 1M Max"}, + {"value": "claude-opus-4-7-thinking-low", "label": "Opus 4.7 1M Low Thinking"}, + {"value": "claude-opus-4-7-thinking-medium", "label": "Opus 4.7 1M Medium Thinking"}, + {"value": "claude-opus-4-7-thinking-xhigh", "label": "Opus 4.7 1M Thinking"}, + {"value": "claude-opus-4-7-thinking-max", "label": "Opus 4.7 1M Max Thinking"}, + {"value": "gpt-5.4-low", "label": "GPT-5.4 1M Low"}, + {"value": "gpt-5.4-medium", "label": "GPT-5.4 1M"}, + {"value": "gpt-5.4-medium-fast", "label": "GPT-5.4 Fast"}, + {"value": "gpt-5.4-xhigh", "label": "GPT-5.4 1M Extra High"}, + {"value": "claude-4.6-opus-high", "label": "Opus 4.6 1M"}, + {"value": "claude-4.6-opus-max", "label": "Opus 4.6 1M Max"}, + {"value": "claude-4.6-opus-high-thinking", "label": "Opus 4.6 1M Thinking"}, + {"value": "claude-4.6-opus-max-thinking", "label": "Opus 4.6 1M Max Thinking"}, + {"value": "claude-4.6-opus-max-thinking-fast", "label": "Opus 4.6 1M Max Thinking Fast"}, + {"value": "claude-4.5-opus-high", "label": "Opus 4.5"}, + {"value": "claude-4.5-opus-high-thinking", "label": "Opus 4.5 Thinking"}, + {"value": "gpt-5.2-low", "label": "GPT-5.2 Low"}, + {"value": "gpt-5.2-low-fast", "label": "GPT-5.2 Low Fast"}, + {"value": "gpt-5.2-fast", "label": "GPT-5.2 Fast"}, + {"value": "gpt-5.2-high", "label": "GPT-5.2 High"}, + {"value": "gpt-5.2-high-fast", "label": "GPT-5.2 High Fast"}, + {"value": "gpt-5.2-xhigh", "label": "GPT-5.2 Extra High"}, + {"value": "gpt-5.2-xhigh-fast", "label": "GPT-5.2 Extra High Fast"}, + {"value": "gemini-3.1-pro", "label": "Gemini 3.1 Pro"}, + {"value": "gpt-5.4-mini-none", "label": "GPT-5.4 Mini None"}, + {"value": "gpt-5.4-mini-low", "label": "GPT-5.4 Mini Low"}, + {"value": "gpt-5.4-mini-medium", "label": "GPT-5.4 Mini"}, + {"value": "gpt-5.4-mini-high", "label": "GPT-5.4 Mini High"}, + {"value": "gpt-5.4-mini-xhigh", "label": "GPT-5.4 Mini Extra High"}, + {"value": "gpt-5.4-nano-none", "label": "GPT-5.4 Nano None"}, + {"value": "gpt-5.4-nano-low", "label": "GPT-5.4 Nano Low"}, + {"value": "gpt-5.4-nano-medium", "label": "GPT-5.4 Nano"}, + {"value": "gpt-5.4-nano-high", "label": "GPT-5.4 Nano High"}, + {"value": "gpt-5.4-nano-xhigh", "label": "GPT-5.4 Nano Extra High"}, + {"value": "grok-4-20", "label": "Grok 4.20"}, + {"value": "grok-4-20-thinking", "label": "Grok 4.20 Thinking"}, + {"value": "claude-4.5-sonnet", "label": "Sonnet 4.5 1M"}, + {"value": "claude-4.5-sonnet-thinking", "label": "Sonnet 4.5 1M Thinking"}, + {"value": "gpt-5.1-low", "label": "GPT-5.1 Low"}, + {"value": "gpt-5.1", "label": "GPT-5.1"}, + {"value": "gpt-5.1-high", "label": "GPT-5.1 High"}, + {"value": "gemini-3-flash", "label": "Gemini 3 Flash"}, + {"value": "gpt-5.1-codex-mini-low", "label": "Codex 5.1 Mini Low"}, + {"value": "gpt-5.1-codex-mini", "label": "Codex 5.1 Mini"}, + {"value": "gpt-5.1-codex-mini-high", "label": "Codex 5.1 Mini High"}, + {"value": "claude-4-sonnet", "label": "Sonnet 4"}, + {"value": "claude-4-sonnet-1m", "label": "Sonnet 4 1M"}, + {"value": "claude-4-sonnet-thinking", "label": "Sonnet 4 Thinking"}, + {"value": "claude-4-sonnet-1m-thinking", "label": "Sonnet 4 1M Thinking"}, + {"value": "gpt-5-mini", "label": "GPT-5 Mini"}, + {"value": "kimi-k2.5", "label": "Kimi K2.5"}, +] + +DROID_MODEL_OPTIONS: Final[List[ModelOption]] = [ + {"value": "opus-4.6-fast", "label": "Opus 4.6 Fast Mode (12x)"}, + {"value": "opus-4.5", "label": "Opus 4.5 (2x)"}, + {"value": "sonnet-4.5", "label": "Sonnet 4.5 (1.2x)"}, + {"value": "haiku-4.5", "label": "Haiku 4.5 (0.4x)"}, + {"value": "gpt-5.2", "label": "GPT-5.2 (0.7x)"}, + {"value": "gpt-5.2-codex", "label": "GPT-5.2 Codex (0.7x)"}, + {"value": "gemini-3-flash", "label": "Gemini 3 Flash (0.2x)"}, + {"value": "droid-core-glm-4.7", "label": "Droid Core (GLM-4.7) (0.25x)"}, +] + +OPENCODE_MODEL_OPTIONS: Final[List[ModelOption]] = [ + {"value": "opencode/big-pickle", "label": "Big Pickle"}, + {"value": "opencode/gpt-5-nano", "label": "GPT-5 Nano (OpenCode)"}, + {"value": "opencode/mimo-v2-flash-free", "label": "Mimo V2 Flash Free"}, + {"value": "opencode/minimax-m2.5-free", "label": "MiniMax M2.5 Free"}, + {"value": "openai/codex-mini-latest", "label": "Codex Mini Latest"}, + {"value": "openai/gpt-3.5-turbo", "label": "GPT-3.5 Turbo"}, + {"value": "openai/gpt-4", "label": "GPT-4"}, + {"value": "openai/gpt-4-turbo", "label": "GPT-4 Turbo"}, + {"value": "openai/gpt-4.1", "label": "GPT-4.1"}, + {"value": "openai/gpt-4.1-mini", "label": "GPT-4.1 Mini"}, + {"value": "openai/gpt-4.1-nano", "label": "GPT-4.1 Nano"}, + {"value": "openai/gpt-4o", "label": "GPT-4o"}, + {"value": "openai/gpt-4o-2024-05-13", "label": "GPT-4o (2024-05-13)"}, + {"value": "openai/gpt-4o-2024-08-06", "label": "GPT-4o (2024-08-06)"}, + {"value": "openai/gpt-4o-2024-11-20", "label": "GPT-4o (2024-11-20)"}, + {"value": "openai/gpt-4o-mini", "label": "GPT-4o Mini"}, + {"value": "openai/gpt-5", "label": "GPT-5"}, + {"value": "openai/gpt-5-codex", "label": "GPT-5 Codex"}, + {"value": "openai/gpt-5-mini", "label": "GPT-5 Mini"}, + {"value": "openai/gpt-5-nano", "label": "GPT-5 Nano"}, + {"value": "openai/gpt-5-pro", "label": "GPT-5 Pro"}, + {"value": "openai/gpt-5.1", "label": "GPT-5.1"}, + {"value": "openai/gpt-5.1-chat-latest", "label": "GPT-5.1 Chat Latest"}, + {"value": "openai/gpt-5.1-codex", "label": "GPT-5.1 Codex"}, + {"value": "openai/gpt-5.1-codex-max", "label": "GPT-5.1 Codex Max"}, + {"value": "openai/gpt-5.1-codex-mini", "label": "GPT-5.1 Codex Mini"}, + {"value": "openai/gpt-5.2", "label": "GPT-5.2"}, + {"value": "openai/gpt-5.2-chat-latest", "label": "GPT-5.2 Chat Latest"}, + {"value": "openai/gpt-5.2-codex", "label": "GPT-5.2 Codex"}, + {"value": "openai/gpt-5.2-pro", "label": "GPT-5.2 Pro"}, + {"value": "openai/gpt-5.3-codex", "label": "GPT-5.3 Codex"}, + {"value": "openai/gpt-5.3-codex-spark", "label": "GPT-5.3 Codex Spark"}, + {"value": "openai/gpt-5.4", "label": "GPT-5.4"}, + {"value": "openai/gpt-5.4-pro", "label": "GPT-5.4 Pro"}, + {"value": "openai/o1", "label": "O1"}, + {"value": "openai/o1-mini", "label": "O1 Mini"}, + {"value": "openai/o1-preview", "label": "O1 Preview"}, + {"value": "openai/o1-pro", "label": "O1 Pro"}, + {"value": "openai/o3", "label": "O3"}, + {"value": "openai/o3-deep-research", "label": "O3 Deep Research"}, + {"value": "openai/o3-mini", "label": "O3 Mini"}, + {"value": "openai/o3-pro", "label": "O3 Pro"}, + {"value": "openai/o4-mini", "label": "O4 Mini"}, + {"value": "openai/o4-mini-deep-research", "label": "O4 Mini Deep Research"}, +] + class Models: - """Model identifiers organized by CLI tool.""" - - class Claude: - SONNET = "sonnet" - OPUS = "opus" - HAIKU = "haiku" - - class Codex: - GPT_5_2_CODEX = "gpt-5.2-codex" - GPT_5_3_CODEX = "gpt-5.3-codex" - GPT_5_3_CODEX_SPARK = "gpt-5.3-codex-spark" - GPT_5_1_CODEX_MAX = "gpt-5.1-codex-max" - GPT_5_2 = "gpt-5.2" - GPT_5_1_CODEX_MINI = "gpt-5.1-codex-mini" - - class Gemini: - GEMINI_3_PRO_PREVIEW = "gemini-3-pro-preview" - GEMINI_2_5_PRO = "gemini-2.5-pro" - GEMINI_2_5_FLASH = "gemini-2.5-flash" - GEMINI_2_5_FLASH_LITE = "gemini-2.5-flash-lite" - - class Opencode: - OPENCODE_BIG_PICKLE = "opencode/big-pickle" - OPENCODE_GPT_5_NANO = "opencode/gpt-5-nano" - OPENCODE_MIMO_V2_FLASH_FREE = "opencode/mimo-v2-flash-free" - OPENCODE_MINIMAX_M2_5_FREE = "opencode/minimax-m2.5-free" - OPENAI_CODEX_MINI_LATEST = "openai/codex-mini-latest" - OPENAI_GPT_5_2 = "openai/gpt-5.2" - OPENAI_O3_MINI = "openai/o3-mini" - OPENAI_O3_PRO = "openai/o3-pro" - OPENAI_O4_MINI = "openai/o4-mini" + """All models grouped by CLI tool.""" + Claude = ClaudeModels + Codex = CodexModels + Gemini = GeminiModels + Cursor = CursorModels + Droid = DroidModels + Opencode = OpencodeModels + + +class ModelOptions: + """All model options grouped by CLI tool (for UI dropdowns).""" + Claude = CLAUDE_MODEL_OPTIONS + Codex = CODEX_MODEL_OPTIONS + Gemini = GEMINI_MODEL_OPTIONS + Cursor = CURSOR_MODEL_OPTIONS + Droid = DROID_MODEL_OPTIONS + Opencode = OPENCODE_MODEL_OPTIONS + + +class SwarmPatterns: + """Swarm patterns for multi-agent workflows.""" + HUB_SPOKE: Final[str] = "hub-spoke" # Central coordinator distributes tasks to workers + DAG: Final[str] = "dag" # Directed acyclic graph with dependencies + FAN_OUT: Final[str] = "fan-out" # Parallel execution across multiple agents + PIPELINE: Final[str] = "pipeline" # Sequential processing through stages + CONSENSUS: Final[str] = "consensus" # Agents reach agreement before proceeding + MESH: Final[str] = "mesh" # Fully connected peer-to-peer communication + HANDOFF: Final[str] = "handoff" # Sequential handoff between agents + CASCADE: Final[str] = "cascade" # Cascading delegation + DEBATE: Final[str] = "debate" # Agents debate to reach conclusion + HIERARCHICAL: Final[str] = "hierarchical" # Tree-structured coordination + + +DEFAULT_MODELS: Final[dict] = { + "claude": "sonnet", + "codex": "gpt-5.4", + "gemini": "gemini-3.1-pro-preview", + "cursor": "composer-2-fast", + "droid": "opus-4.6-fast", + "opencode": "openai/gpt-5.2", +} + +CLI_REGISTRY: Final[dict] = { + "claude": { + "name": "Claude Code", + "package": "@anthropic-ai/claude-code", + "version": "2.1.72", + "install": "npm install -g @anthropic-ai/claude-code", + }, + "codex": { + "name": "Codex CLI", + "package": "@openai/codex", + "version": "0.124.0", + "install": "npm install -g @openai/codex", + }, + "gemini": { + "name": "Gemini CLI", + "package": "@google/gemini-cli", + "version": "0.39.1", + "install": "npm install -g @google/gemini-cli", + }, + "cursor": { + "name": "Cursor", + "package": "cursor", + "version": "2026.02.27-e7d2ef6", + "install": "Download from cursor.com", + }, + "droid": { + "name": "Droid", + "package": "droid", + "version": "0.1.0", + "install": "Download from droid.dev", + }, + "opencode": { + "name": "OpenCode", + "package": "opencode-ai", + "version": "1.2.24", + "install": "npm install -g opencode-ai", + }, + "aider": { + "name": "Aider", + "package": "aider-chat", + "version": "0.72.1", + "install": "pip install aider-chat", + }, + "goose": { + "name": "Goose", + "package": "goose-ai", + "version": "1.0.16", + "install": "pip install goose-ai", + }, +} diff --git a/packages/shared/cli-registry.yaml b/packages/shared/cli-registry.yaml index cd1a60a75..884c77a03 100644 --- a/packages/shared/cli-registry.yaml +++ b/packages/shared/cli-registry.yaml @@ -33,15 +33,9 @@ clis: version: '0.124.0' install: 'npm install -g @openai/codex' models: - gpt_5_5: - id: 'gpt-5.4' - label: 'GPT-5.4 — Frontier model for complex coding, research, and real-world work.' - default: true - reasoning_efforts: ['low', 'medium', 'high', 'xhigh'] - default_reasoning_effort: 'high' gpt_5_4: id: 'gpt-5.4' - label: 'GPT-5.4 — Strong model for everyday coding' + label: 'GPT-5.4 — Frontier model for complex coding, research, and real-world work.' default: true reasoning_efforts: ['low', 'medium', 'high', 'xhigh'] default_reasoning_effort: 'xhigh' diff --git a/packages/shared/codegen-py.mjs b/packages/shared/codegen-py.mjs index 2beb8e005..3a9a3e29e 100644 --- a/packages/shared/codegen-py.mjs +++ b/packages/shared/codegen-py.mjs @@ -3,7 +3,7 @@ * Generate Python models from cli-registry.yaml * * Usage: node codegen-py.mjs - * Output: ../sdk-py/agent_relay/models.py + * Output: ../sdk-py/src/agent_relay/models.py */ import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs'; @@ -13,7 +13,7 @@ import { fileURLToPath } from 'node:url'; const __dirname = dirname(fileURLToPath(import.meta.url)); const registryPath = join(__dirname, 'cli-registry.yaml'); -const outputDir = join(__dirname, '../sdk-py/agent_relay'); +const outputDir = join(__dirname, '../sdk-py/src/agent_relay'); const outputPath = join(outputDir, 'models.py'); // Create output directory if it doesn't exist @@ -184,32 +184,3 @@ output += `} writeFileSync(outputPath, output); console.log(`Generated ${outputPath}`); - -// Update __init__.py with new exports -const initPath = join(outputDir, '__init__.py'); -writeFileSync( - initPath, - `"""Agent Relay Python SDK.""" - -from .models import ( - CLIs, - CLIVersions, - CLI_REGISTRY, - DEFAULT_MODELS, - Models, - ModelOptions, - SwarmPatterns, -) - -__all__ = [ - "CLIs", - "CLIVersions", - "CLI_REGISTRY", - "DEFAULT_MODELS", - "Models", - "ModelOptions", - "SwarmPatterns", -] -` -); -console.log(`Generated ${initPath}`);