({
isOpen,
onClose,
projectName,
projectId,
initialPrompt,
initialSessionName,
initialToolType,
initialBaseBranch,
initialFolderId,
initialClaudeConfig,
initialCodexConfig,
onSessionCreated
}: CreateSessionDialogProps)
| 76 | } |
| 77 | |
| 78 | export function CreateSessionDialog({ |
| 79 | isOpen, |
| 80 | onClose, |
| 81 | projectName, |
| 82 | projectId, |
| 83 | initialPrompt, |
| 84 | initialSessionName, |
| 85 | initialToolType, |
| 86 | initialBaseBranch, |
| 87 | initialFolderId, |
| 88 | initialClaudeConfig, |
| 89 | initialCodexConfig, |
| 90 | onSessionCreated |
| 91 | }: CreateSessionDialogProps) { |
| 92 | const [sessionName, setSessionName] = useState<string>(initialSessionName || ''); |
| 93 | const [sessionCount, setSessionCount] = useState<number>(1); |
| 94 | const [selectedTools, setSelectedTools] = useState<{ claude: boolean; codex: boolean }>({ |
| 95 | claude: initialToolType === 'claude' || !!initialPrompt, |
| 96 | codex: initialToolType === 'codex' |
| 97 | }); |
| 98 | const [sharedPrompt, setSharedPrompt] = useState<string>(initialPrompt || ''); |
| 99 | const [claudeConfig, setClaudeConfig] = useState<ClaudeCodeConfig>({ |
| 100 | prompt: initialPrompt || '', |
| 101 | model: initialClaudeConfig?.model || 'auto', |
| 102 | permissionMode: initialClaudeConfig?.permissionMode || 'ignore', |
| 103 | ultrathink: initialClaudeConfig?.ultrathink || false, |
| 104 | attachedImages: [], |
| 105 | attachedTexts: [] |
| 106 | }); |
| 107 | const [codexConfig, setCodexConfig] = useState<CodexConfig>({ |
| 108 | prompt: initialPrompt || '', |
| 109 | model: (initialCodexConfig?.model as OpenAICodexModel) || DEFAULT_CODEX_MODEL, |
| 110 | modelProvider: initialCodexConfig?.modelProvider || 'openai', |
| 111 | approvalPolicy: 'auto', // Always 'auto' - manual mode not implemented |
| 112 | sandboxMode: initialCodexConfig?.sandboxMode || 'workspace-write', |
| 113 | webSearch: initialCodexConfig?.webSearch || false, |
| 114 | thinkingLevel: initialCodexConfig?.thinkingLevel || 'medium', |
| 115 | attachedImages: [], |
| 116 | attachedTexts: [] |
| 117 | }); |
| 118 | const [formData, setFormData] = useState<CreateSessionRequest>({ |
| 119 | prompt: initialPrompt || '', |
| 120 | worktreeTemplate: '', |
| 121 | count: 1, |
| 122 | permissionMode: 'ignore', |
| 123 | baseBranch: initialBaseBranch |
| 124 | // Model is now managed at panel level, not session level |
| 125 | }); |
| 126 | const [isSubmitting, setIsSubmitting] = useState(false); |
| 127 | const [worktreeError, setWorktreeError] = useState<string | null>(null); |
| 128 | const [isGeneratingName, setIsGeneratingName] = useState(false); |
| 129 | const [hasApiKey, setHasApiKey] = useState(false); |
| 130 | const [branches, setBranches] = useState<Array<{ name: string; isCurrent: boolean; hasWorktree: boolean }>>([]); |
| 131 | const [isLoadingBranches, setIsLoadingBranches] = useState(false); |
| 132 | const [commitModeSettings, setCommitModeSettings] = useState<CommitModeSettingsType>({ |
| 133 | mode: 'checkpoint', |
| 134 | checkpointPrefix: 'checkpoint: ' |
| 135 | }); |
nothing calls this directly
no test coverage detected