diff --git a/apps/web/src/components/ChatView.tsx b/apps/web/src/components/ChatView.tsx index 3d5975578b98ef0fc50541e8f65db9ae484ffc80..e75f6f57949fce5aea4d3017af79eb9b610540d6 100644 --- a/apps/web/src/components/ChatView.tsx +++ b/apps/web/src/components/ChatView.tsx @@ -2153,13 +2153,7 @@ export default function ChatView({ threadId }: ChatViewProps) { } } const title = truncateTitle(titleSeed); - let threadCreateModel = selectedModel; - if (!threadCreateModel) { - threadCreateModel = activeProject.model; - } - if (!threadCreateModel) { - threadCreateModel = DEFAULT_MODEL; - } + let threadCreateModel: ModelSlug = selectedModel || (activeProject.model as ModelSlug) || DEFAULT_MODEL; if (isLocalDraftThread) { await api.orchestration.dispatchCommand({ @@ -2228,7 +2222,7 @@ export default function ChatView({ threadId }: ChatViewProps) { }, model: selectedModel || undefined, provider: selectedProvider, - ...(supportsReasoningEffort ? { effort: selectedEffort } : {}), + ...(supportsReasoningEffort && selectedEffort ? { effort: selectedEffort } : {}), assistantDeliveryMode: settings.enableAssistantStreaming ? "streaming" : "buffered", approvalPolicy, sandboxMode, @@ -2387,7 +2381,7 @@ export default function ChatView({ threadId }: ChatViewProps) { ); const onEffortSelect = useCallback( (effort: CodexReasoningEffort) => { - setSelectedEffort(effort); + setComposerDraftEffort(threadId, effort); scheduleComposerFocus(); }, [scheduleComposerFocus, setComposerDraftEffort, threadId], @@ -2850,11 +2844,13 @@ export default function ChatView({ threadId }: ChatViewProps) { {/* Reasoning effort */} - + {selectedEffort != null && ( + + )} ) : null} diff --git a/packages/contracts/src/orchestration.ts b/packages/contracts/src/orchestration.ts index 07ae9f850ba94898743b45a6a0ed04e1b9724e59..a807bac86eea5d67250153dfe09b9b284a08ebe9 100644 --- a/packages/contracts/src/orchestration.ts +++ b/packages/contracts/src/orchestration.ts @@ -348,6 +348,7 @@ export const ClientThreadTurnStartCommand = Schema.Struct({ text: Schema.String, attachments: Schema.Array(UploadChatAttachment), }), + provider: Schema.optional(ProviderKind), model: Schema.optional(TrimmedNonEmptyString), effort: Schema.optional(TrimmedNonEmptyString), assistantDeliveryMode: Schema.optional(AssistantDeliveryMode),