|
8 | 8 | import React, { useState, useRef, useEffect, useCallback, useMemo } from 'react'; |
9 | 9 | import { getAgentColor, getAgentInitials } from '../lib/colors'; |
10 | 10 | import { cloudApi } from '../lib/cloudApi'; |
| 11 | +import { |
| 12 | + CLAUDE_MODEL_OPTIONS, |
| 13 | + CURSOR_MODEL_OPTIONS, |
| 14 | + CODEX_MODEL_OPTIONS, |
| 15 | + GEMINI_MODEL_OPTIONS, |
| 16 | + DefaultModels, |
| 17 | +} from 'agent-relay/broker'; |
11 | 18 |
|
12 | 19 | export type SpeakOnTrigger = 'SESSION_END' | 'CODE_WRITTEN' | 'REVIEW_REQUEST' | 'EXPLICIT_ASK' | 'ALL_MESSAGES'; |
13 | 20 |
|
@@ -56,61 +63,13 @@ export interface SpawnModalProps { |
56 | 63 | activeRepoId?: string; |
57 | 64 | } |
58 | 65 |
|
59 | | -/** Model options for Claude agents */ |
60 | | -export const CLAUDE_MODEL_OPTIONS: { value: string; label: string }[] = [ |
61 | | - { value: 'sonnet', label: 'Sonnet' }, |
62 | | - { value: 'opus', label: 'Opus' }, |
63 | | - { value: 'haiku', label: 'Haiku' }, |
64 | | -]; |
| 66 | +// Model options imported from agent-relay/broker (source: cli-registry.yaml) |
| 67 | +// Re-export for backwards compatibility |
| 68 | +export { CLAUDE_MODEL_OPTIONS, CURSOR_MODEL_OPTIONS, CODEX_MODEL_OPTIONS, GEMINI_MODEL_OPTIONS }; |
65 | 69 |
|
66 | 70 | type ClaudeModel = string; |
67 | | - |
68 | | -/** Model options for Cursor agents */ |
69 | | -export const CURSOR_MODEL_OPTIONS: { value: string; label: string }[] = [ |
70 | | - { value: 'opus-4.5-thinking', label: 'Claude 4.5 Opus (Thinking)' }, |
71 | | - { value: 'opus-4.5', label: 'Claude 4.5 Opus' }, |
72 | | - { value: 'sonnet-4.5', label: 'Claude 4.5 Sonnet' }, |
73 | | - { value: 'sonnet-4.5-thinking', label: 'Claude 4.5 Sonnet (Thinking)' }, |
74 | | - { value: 'gpt-5.2-codex', label: 'GPT-5.2 Codex' }, |
75 | | - { value: 'gpt-5.2-codex-high', label: 'GPT-5.2 Codex High' }, |
76 | | - { value: 'gpt-5.2-codex-low', label: 'GPT-5.2 Codex Low' }, |
77 | | - { value: 'gpt-5.2-codex-xhigh', label: 'GPT-5.2 Codex Extra High' }, |
78 | | - { value: 'gpt-5.2-codex-fast', label: 'GPT-5.2 Codex Fast' }, |
79 | | - { value: 'gpt-5.2-codex-high-fast', label: 'GPT-5.2 Codex High Fast' }, |
80 | | - { value: 'gpt-5.2-codex-low-fast', label: 'GPT-5.2 Codex Low Fast' }, |
81 | | - { value: 'gpt-5.2-codex-xhigh-fast', label: 'GPT-5.2 Codex Extra High Fast' }, |
82 | | - { value: 'gpt-5.1-codex-max', label: 'GPT-5.1 Codex Max' }, |
83 | | - { value: 'gpt-5.1-codex-max-high', label: 'GPT-5.1 Codex Max High' }, |
84 | | - { value: 'gpt-5.2', label: 'GPT-5.2' }, |
85 | | - { value: 'gpt-5.2-high', label: 'GPT-5.2 High' }, |
86 | | - { value: 'gpt-5.1-high', label: 'GPT-5.1 High' }, |
87 | | - { value: 'gemini-3-pro', label: 'Gemini 3 Pro' }, |
88 | | - { value: 'gemini-3-flash', label: 'Gemini 3 Flash' }, |
89 | | - { value: 'composer-1', label: 'Composer 1' }, |
90 | | - { value: 'grok', label: 'Grok' }, |
91 | | -]; |
92 | | - |
93 | 71 | type CursorModel = string; |
94 | | - |
95 | | -/** Model options for Codex agents */ |
96 | | -export const CODEX_MODEL_OPTIONS: { value: string; label: string }[] = [ |
97 | | - { value: 'gpt-5.2-codex', label: 'GPT-5.2 Codex — Frontier agentic coding model' }, |
98 | | - { value: 'gpt-5.3-codex', label: 'GPT-5.3 Codex — Latest frontier agentic coding model' }, |
99 | | - { value: 'gpt-5.1-codex-max', label: 'GPT-5.1 Codex Max — Deep and fast reasoning' }, |
100 | | - { value: 'gpt-5.2', label: 'GPT-5.2 — Frontier model, knowledge & reasoning' }, |
101 | | - { value: 'gpt-5.1-codex-mini', label: 'GPT-5.1 Codex Mini — Cheaper, faster' }, |
102 | | -]; |
103 | | - |
104 | 72 | type CodexModel = string; |
105 | | - |
106 | | -/** Model options for Gemini agents */ |
107 | | -export const GEMINI_MODEL_OPTIONS: { value: string; label: string }[] = [ |
108 | | - { value: 'gemini-3-pro-preview', label: 'Gemini 3 Pro Preview' }, |
109 | | - { value: 'gemini-2.5-pro', label: 'Gemini 2.5 Pro' }, |
110 | | - { value: 'gemini-2.5-flash', label: 'Gemini 2.5 Flash' }, |
111 | | - { value: 'gemini-2.5-flash-lite', label: 'Gemini 2.5 Flash Lite' }, |
112 | | -]; |
113 | | - |
114 | 73 | type GeminiModel = string; |
115 | 74 |
|
116 | 75 | const AGENT_TEMPLATES = [ |
@@ -194,10 +153,10 @@ export function SpawnModal({ |
194 | 153 | const [selectedTemplate, setSelectedTemplate] = useState(AGENT_TEMPLATES[0]); |
195 | 154 | const [name, setName] = useState(''); |
196 | 155 | const [customCommand, setCustomCommand] = useState(''); |
197 | | - const [selectedModel, setSelectedModel] = useState<ClaudeModel>('sonnet'); |
198 | | - const [selectedCursorModel, setSelectedCursorModel] = useState<CursorModel>('opus-4.5-thinking'); |
199 | | - const [selectedCodexModel, setSelectedCodexModel] = useState<CodexModel>('gpt-5.2-codex'); |
200 | | - const [selectedGeminiModel, setSelectedGeminiModel] = useState<GeminiModel>('gemini-2.5-pro'); |
| 156 | + const [selectedModel, setSelectedModel] = useState<ClaudeModel>(DefaultModels.claude); |
| 157 | + const [selectedCursorModel, setSelectedCursorModel] = useState<CursorModel>(DefaultModels.cursor); |
| 158 | + const [selectedCodexModel, setSelectedCodexModel] = useState<CodexModel>(DefaultModels.codex); |
| 159 | + const [selectedGeminiModel, setSelectedGeminiModel] = useState<GeminiModel>(DefaultModels.gemini); |
201 | 160 | const [cwd, setCwd] = useState(''); |
202 | 161 | const [selectedRepoId, setSelectedRepoId] = useState<string | undefined>(activeRepoId); |
203 | 162 | const [team, setTeam] = useState(''); |
@@ -325,11 +284,11 @@ export function SpawnModal({ |
325 | 284 | setSelectedTemplate(defaultTemplate); |
326 | 285 | setName(''); |
327 | 286 | setCustomCommand(''); |
328 | | - // Use settings-based model defaults with fallbacks |
329 | | - setSelectedModel(agentDefaults?.defaultModels?.claude ?? 'sonnet'); |
330 | | - setSelectedCursorModel(agentDefaults?.defaultModels?.cursor ?? 'opus-4.5-thinking'); |
331 | | - setSelectedCodexModel(agentDefaults?.defaultModels?.codex ?? 'gpt-5.2-codex'); |
332 | | - setSelectedGeminiModel(agentDefaults?.defaultModels?.gemini ?? 'gemini-2.5-pro'); |
| 287 | + // Use settings-based model defaults with fallbacks from SDK |
| 288 | + setSelectedModel(agentDefaults?.defaultModels?.claude ?? DefaultModels.claude); |
| 289 | + setSelectedCursorModel(agentDefaults?.defaultModels?.cursor ?? DefaultModels.cursor); |
| 290 | + setSelectedCodexModel(agentDefaults?.defaultModels?.codex ?? DefaultModels.codex); |
| 291 | + setSelectedGeminiModel(agentDefaults?.defaultModels?.gemini ?? DefaultModels.gemini); |
333 | 292 | setCwd(''); |
334 | 293 | setSelectedRepoId(activeRepoId); |
335 | 294 | setTeam(''); |
|
0 commit comments