import React from 'react' import { Text, Box } from 'ink' import { getModelManager } from '../utils/model' import { getGlobalConfig } from '../utils/config' import { useExitOnCtrlCD } from '../hooks/useExitOnCtrlCD' import { getTheme } from '../utils/theme' type Props = { onClose: () => void } export function ModelStatusDisplay({ onClose }: Props): React.ReactNode { const theme = getTheme() const exitState = useExitOnCtrlCD(onClose) try { const modelManager = getModelManager() const config = getGlobalConfig() // 显示所有模型指针的当前状态 const pointers = ['main', 'task', 'reasoning', 'quick'] as const return ( 📊 Current Model Status{' '} {exitState.pending ? `(press ${exitState.keyName} again to exit)` : ''} {pointers.map(pointer => { try { const model = modelManager.getModel(pointer) if (model && model.name && model.provider) { return ( 🎯{' '} {pointer.toUpperCase()} {' '} → {model.name} {' '} Provider: {model.provider} {' '} Model: {model.modelName || 'unknown'} {' '} Context:{' '} {model.contextLength ? Math.round(model.contextLength / 1000) : 'unknown'} k tokens {' '} Active: {model.isActive ? '✅' : '❌'} ) } else { return ( 🎯{' '} {pointer.toUpperCase()} {' '} → ❌ Not configured ) } } catch (pointerError) { return ( 🎯{' '} {pointer.toUpperCase()} {' '} →{' '} ❌ Error: {String(pointerError)} ) } })} 📚 Available Models: {(() => { try { const availableModels = modelManager.getAvailableModels() || [] if (availableModels.length === 0) { return ( No models configured ) } return availableModels.map((model, index) => { try { const isInUse = pointers.some(p => { try { return ( modelManager.getModel(p)?.modelName === model.modelName ) } catch { return false } }) return ( {' '} {isInUse ? '🔄' : '💤'} {model.name || 'Unnamed'}{' '} ({model.provider || 'unknown'}) {' '} Model: {model.modelName || 'unknown'} {' '} Context:{' '} {model.contextLength ? Math.round(model.contextLength / 1000) : 'unknown'} k tokens {model.lastUsed && ( {' '} Last used: {new Date(model.lastUsed).toLocaleString()} )} ) } catch (modelError) { return ( {' '} ❌ Model error: {String(modelError)} ) } }) } catch (availableModelsError) { return ( ❌ Error loading available models:{' '} {String(availableModelsError)} ) } })()} 🔧 Debug Info: {' '} ModelProfiles: {config.modelProfiles?.length || 0} configured {' '} DefaultModelId: {(config as any).defaultModelId || 'not set'} {config.modelPointers && ( <> {' '} ModelPointers configured:{' '} {Object.keys(config.modelPointers).length > 0 ? 'Yes' : 'No'} {Object.entries(config.modelPointers).map(([pointer, modelId]) => ( {' '} {pointer}: {modelId || 'not set'} ))} )} ) } catch (error) { return ( 📊 Model Status Error{' '} {exitState.pending ? `(press ${exitState.keyName} again to exit)` : ''} ❌ Error reading model status: {String(error)} ) } }