export type ModelOption = 'gemini-3-flash-preview' | 'gemini-3-pro-preview' | 'gpt-4.1' | 'gpt-4o' | 'gpt-4o-mini' | 'o1-preview' | 'o1-mini' | 'deepseek-chat' | 'deepseek-coder' | 'custom' | string; export type ThinkingLevel = 'minimal' | 'low' | 'medium' | 'high'; export type ApiProvider = 'google' | 'openai' | 'deepseek' | 'anthropic' | 'xai' | 'mistral' | 'custom'; export type CustomModel = { id: string; name: string; provider: ApiProvider; apiKey?: string; baseUrl?: string; }; export type ExpertConfig = { id: string; role: string; description: string; temperature: number; prompt: string; }; export type ExpertResult = ExpertConfig & { status: 'pending' | 'thinking' | 'completed' | 'error'; content?: string; thoughts?: string; thoughtProcess?: string; startTime?: number; endTime?: number; round?: number; // Track which iteration this expert belongs to }; export type AnalysisResult = { thought_process: string; experts: Omit[]; }; export type ReviewResult = { satisfied: boolean; critique: string; next_round_strategy?: string; refined_experts?: Omit[]; }; export type AppState = 'idle' | 'analyzing' | 'experts_working' | 'reviewing' | 'synthesizing' | 'completed'; export type AppConfig = { planningLevel: ThinkingLevel; expertLevel: ThinkingLevel; synthesisLevel: ThinkingLevel; customApiKey?: string; customBaseUrl?: string; enableCustomApi?: boolean; enableRecursiveLoop?: boolean; apiProvider?: ApiProvider; customModels?: CustomModel[]; }; export type ChatMessage = { id: string; role: 'user' | 'model'; content: string; // DeepThink Artifacts (only for model messages) analysis?: AnalysisResult | null; experts?: ExpertResult[]; synthesisThoughts?: string; isThinking?: boolean; totalDuration?: number; // Total time in ms }; export type ChatSession = { id: string; title: string; messages: ChatMessage[]; createdAt: number; model: ModelOption; };