mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-01-31 06:42:03 +00:00
154 lines
3.7 KiB
TypeScript
154 lines
3.7 KiB
TypeScript
import type { ModelAlias } from '@/store/app-store';
|
|
import type { ModelProvider, ThinkingLevel, ReasoningEffort } from '@automaker/types';
|
|
import { CURSOR_MODEL_MAP, CODEX_MODEL_MAP } from '@automaker/types';
|
|
import { Brain, Zap, Scale, Cpu, Rocket, Sparkles } from 'lucide-react';
|
|
|
|
export type ModelOption = {
|
|
id: string; // Claude models use ModelAlias, Cursor models use "cursor-{id}"
|
|
label: string;
|
|
description: string;
|
|
badge?: string;
|
|
provider: ModelProvider;
|
|
hasThinking?: boolean;
|
|
};
|
|
|
|
export const CLAUDE_MODELS: ModelOption[] = [
|
|
{
|
|
id: 'haiku',
|
|
label: 'Claude Haiku',
|
|
description: 'Fast and efficient for simple tasks.',
|
|
badge: 'Speed',
|
|
provider: 'claude',
|
|
},
|
|
{
|
|
id: 'sonnet',
|
|
label: 'Claude Sonnet',
|
|
description: 'Balanced performance with strong reasoning.',
|
|
badge: 'Balanced',
|
|
provider: 'claude',
|
|
},
|
|
{
|
|
id: 'opus',
|
|
label: 'Claude Opus',
|
|
description: 'Most capable model for complex work.',
|
|
badge: 'Premium',
|
|
provider: 'claude',
|
|
},
|
|
];
|
|
|
|
/**
|
|
* Cursor models derived from CURSOR_MODEL_MAP
|
|
* ID is prefixed with "cursor-" for ProviderFactory routing
|
|
*/
|
|
export const CURSOR_MODELS: ModelOption[] = Object.entries(CURSOR_MODEL_MAP).map(
|
|
([id, config]) => ({
|
|
id: `cursor-${id}`,
|
|
label: config.label,
|
|
description: config.description,
|
|
provider: 'cursor' as ModelProvider,
|
|
hasThinking: config.hasThinking,
|
|
})
|
|
);
|
|
|
|
/**
|
|
* Codex/OpenAI models
|
|
* Official models from https://developers.openai.com/codex/models/
|
|
*/
|
|
export const CODEX_MODELS: ModelOption[] = [
|
|
{
|
|
id: CODEX_MODEL_MAP.gpt52Codex,
|
|
label: 'GPT-5.2-Codex',
|
|
description: 'Most advanced agentic coding model (default for ChatGPT users).',
|
|
badge: 'Premium',
|
|
provider: 'codex',
|
|
hasThinking: true,
|
|
},
|
|
{
|
|
id: CODEX_MODEL_MAP.gpt5Codex,
|
|
label: 'GPT-5-Codex',
|
|
description: 'Purpose-built for Codex CLI (default for CLI users).',
|
|
badge: 'Balanced',
|
|
provider: 'codex',
|
|
hasThinking: true,
|
|
},
|
|
{
|
|
id: CODEX_MODEL_MAP.gpt5CodexMini,
|
|
label: 'GPT-5-Codex-Mini',
|
|
description: 'Faster workflows for code Q&A and editing.',
|
|
badge: 'Speed',
|
|
provider: 'codex',
|
|
hasThinking: false,
|
|
},
|
|
{
|
|
id: CODEX_MODEL_MAP.codex1,
|
|
label: 'Codex-1',
|
|
description: 'o3-based model optimized for software engineering.',
|
|
badge: 'Premium',
|
|
provider: 'codex',
|
|
hasThinking: true,
|
|
},
|
|
{
|
|
id: CODEX_MODEL_MAP.codexMiniLatest,
|
|
label: 'Codex-Mini-Latest',
|
|
description: 'o4-mini-based model for faster workflows.',
|
|
badge: 'Balanced',
|
|
provider: 'codex',
|
|
hasThinking: false,
|
|
},
|
|
{
|
|
id: CODEX_MODEL_MAP.gpt5,
|
|
label: 'GPT-5',
|
|
description: 'GPT-5 base flagship model.',
|
|
badge: 'Balanced',
|
|
provider: 'codex',
|
|
hasThinking: true,
|
|
},
|
|
];
|
|
|
|
/**
|
|
* All available models (Claude + Cursor + Codex)
|
|
*/
|
|
export const ALL_MODELS: ModelOption[] = [...CLAUDE_MODELS, ...CURSOR_MODELS, ...CODEX_MODELS];
|
|
|
|
export const THINKING_LEVELS: ThinkingLevel[] = ['none', 'low', 'medium', 'high', 'ultrathink'];
|
|
|
|
export const THINKING_LEVEL_LABELS: Record<ThinkingLevel, string> = {
|
|
none: 'None',
|
|
low: 'Low',
|
|
medium: 'Med',
|
|
high: 'High',
|
|
ultrathink: 'Ultra',
|
|
};
|
|
|
|
/**
|
|
* Reasoning effort levels for Codex/OpenAI models
|
|
* All models support reasoning effort levels
|
|
*/
|
|
export const REASONING_EFFORT_LEVELS: ReasoningEffort[] = [
|
|
'none',
|
|
'minimal',
|
|
'low',
|
|
'medium',
|
|
'high',
|
|
'xhigh',
|
|
];
|
|
|
|
export const REASONING_EFFORT_LABELS: Record<ReasoningEffort, string> = {
|
|
none: 'None',
|
|
minimal: 'Min',
|
|
low: 'Low',
|
|
medium: 'Med',
|
|
high: 'High',
|
|
xhigh: 'XHigh',
|
|
};
|
|
|
|
// Profile icon mapping
|
|
export const PROFILE_ICONS: Record<string, React.ComponentType<{ className?: string }>> = {
|
|
Brain,
|
|
Zap,
|
|
Scale,
|
|
Cpu,
|
|
Rocket,
|
|
Sparkles,
|
|
};
|