/** * Model Selector - Prioritize free models for non-essential tools * * This utility helps select the appropriate model for different operations: * - Free models for simple tasks (auto-name, btca control) * - Premium models for complex operations (planning, code review) */ /** * OpenCode free model names (when available) */ export declare const FREE_MODELS: readonly ["opencode/free", "openai/gpt-4o-mini", "openai/gpt-4o", "google/gemini-flash"]; /** * Check if OpenCode has free model quota available */ export declare function isFreeModelAvailable(): Promise; /** * Get the appropriate model for a tool * * @param toolName - The tool name to get model for * @param currentModel - The current model being used * @returns The model to use for this tool */ export declare function getModelForTool(toolName: string, currentModel?: string): string; /** * Model configuration for different operation types */ export interface ModelConfig { model: string; temperature: number; maxTokens?: number; description: string; } export declare const MODEL_PROFILES: Record; /** * Get model profile for an operation type */ export declare function getModelProfile(operationType: 'free' | 'standard' | 'premium' | 'reasoning'): ModelConfig; /** * Tool categorization by operation complexity */ export declare const TOOL_CATEGORIES: Record; /** * Get the appropriate model profile for a tool */ export declare function getModelForToolCategory(toolName: string): ModelConfig; /** * Check if a tool should use a free model */ export declare function shouldUseFreeModel(toolName: string): boolean; /** * Model Selector class for managing model selection */ export declare class ModelSelector { private freeModelCache; /** * Check if free model is available */ isFreeModelAvailable(): Promise; /** * Get model for a specific tool */ getModelForTool(toolName: string, currentModel?: string): Promise; /** * Clear the free model cache */ clearCache(): void; } export declare const modelSelector: ModelSelector;