feat: enhance adaptive thinking model support and update UI components

- Added `isAdaptiveThinkingModel` utility to improve model identification logic in the AddFeatureDialog.
- Updated the ThinkingLevelSelector to conditionally display information based on available thinking levels.
- Enhanced model name formatting in agent-context-parser to include 'GPT-5.3 Codex' for better clarity.

These changes improve the user experience by refining model handling and UI feedback related to adaptive thinking capabilities.
This commit is contained in:
Kacper
2026-02-05 23:05:19 +01:00
parent 835ffe3185
commit f97453484f
3 changed files with 4 additions and 4 deletions

View File

@@ -28,7 +28,7 @@ import { cn } from '@/lib/utils';
import { modelSupportsThinking } from '@/lib/utils'; import { modelSupportsThinking } from '@/lib/utils';
import { useAppStore, ThinkingLevel, FeatureImage, PlanningMode, Feature } from '@/store/app-store'; import { useAppStore, ThinkingLevel, FeatureImage, PlanningMode, Feature } from '@/store/app-store';
import type { ReasoningEffort, PhaseModelEntry, AgentModel } from '@automaker/types'; import type { ReasoningEffort, PhaseModelEntry, AgentModel } from '@automaker/types';
import { supportsReasoningEffort } from '@automaker/types'; import { supportsReasoningEffort, isAdaptiveThinkingModel } from '@automaker/types';
import { import {
PrioritySelector, PrioritySelector,
WorkModeSelector, WorkModeSelector,
@@ -266,8 +266,7 @@ export function AddFeatureDialog({
const handleModelChange = (entry: PhaseModelEntry) => { const handleModelChange = (entry: PhaseModelEntry) => {
// Normalize thinking level when switching between adaptive and non-adaptive models // Normalize thinking level when switching between adaptive and non-adaptive models
const isNewModelAdaptive = const isNewModelAdaptive =
entry.model === 'claude-opus' || typeof entry.model === 'string' && isAdaptiveThinkingModel(entry.model);
(typeof entry.model === 'string' && entry.model.includes('opus-4-6'));
const currentLevel = entry.thinkingLevel || 'none'; const currentLevel = entry.thinkingLevel || 'none';
if (isNewModelAdaptive && currentLevel !== 'none' && currentLevel !== 'adaptive') { if (isNewModelAdaptive && currentLevel !== 'none' && currentLevel !== 'adaptive') {

View File

@@ -46,7 +46,7 @@ export function ThinkingLevelSelector({
))} ))}
</div> </div>
<p className="text-xs text-muted-foreground"> <p className="text-xs text-muted-foreground">
{model && getThinkingLevelsForModel(model).includes('adaptive') {levels.includes('adaptive')
? 'Adaptive thinking lets the model decide how much reasoning to use.' ? 'Adaptive thinking lets the model decide how much reasoning to use.'
: 'Higher levels give more time to reason through complex problems.'} : 'Higher levels give more time to reason through complex problems.'}
</p> </p>

View File

@@ -40,6 +40,7 @@ export function formatModelName(model: string): string {
if (model.includes('haiku')) return 'Haiku 4.5'; if (model.includes('haiku')) return 'Haiku 4.5';
// Codex/GPT models - specific formatting // Codex/GPT models - specific formatting
if (model === 'codex-gpt-5.3-codex') return 'GPT-5.3 Codex';
if (model === 'codex-gpt-5.2-codex') return 'GPT-5.2 Codex'; if (model === 'codex-gpt-5.2-codex') return 'GPT-5.2 Codex';
if (model === 'codex-gpt-5.2') return 'GPT-5.2'; if (model === 'codex-gpt-5.2') return 'GPT-5.2';
if (model === 'codex-gpt-5.1-codex-max') return 'GPT-5.1 Max'; if (model === 'codex-gpt-5.1-codex-max') return 'GPT-5.1 Max';