diff --git a/packages/app/src/components/chat/ChatHeader.vue b/packages/app/src/components/chat/ChatHeader.vue index 80bea125..0a00508f 100644 --- a/packages/app/src/components/chat/ChatHeader.vue +++ b/packages/app/src/components/chat/ChatHeader.vue @@ -149,13 +149,30 @@ @@ -265,6 +282,22 @@ defineEmits<{ const { activeProvider, activeModel, availableProviders, setProvider, setModel } = useAI() const comparison = useComparisonMode() + +// Model capabilities map +const MODEL_CAPS: Record = { + 'claude-haiku-4.5': { vision: true, tools: true, longContext: true }, + 'claude-sonnet-4': { vision: true, tools: true, longContext: true }, + 'claude-opus-4': { vision: true, tools: true, longContext: true }, + 'meta-llama/llama-4-maverick': { vision: true, tools: true, longContext: true }, + 'qwen/qwen3-235b-a22b-thinking-2507': { vision: false, tools: false, longContext: true }, + 'mistralai/mistral-small-3.1-24b-instruct:free': { vision: true, tools: true, longContext: false }, + 'google/gemma-3-27b-it:free': { vision: true, tools: false, longContext: false }, + 'echo': { vision: false, tools: false, longContext: false }, +} + +function getModelCaps(modelId: string) { + return MODEL_CAPS[modelId] ?? { vision: false, tools: false, longContext: false } +} const chatStore = useChatStore() const webSearchEnabled = computed(() => chatStore.webSearchEnabled) const showModelPicker = ref(false)