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)}
)
}
}