diff --git a/desktop/src/pages/Settings.tsx b/desktop/src/pages/Settings.tsx index 7dd9dd95..1fc2a373 100644 --- a/desktop/src/pages/Settings.tsx +++ b/desktop/src/pages/Settings.tsx @@ -330,7 +330,7 @@ function ProviderFormModal({ open, onClose, mode, provider }: ProviderFormProps) open={open} onClose={onClose} title={mode === 'create' ? 'Add Provider' : 'Edit Provider'} - width={600} + width={720} footer={ <> diff --git a/src/server/api/models.ts b/src/server/api/models.ts index 0d907af6..480741b4 100644 --- a/src/server/api/models.ts +++ b/src/server/api/models.ts @@ -86,10 +86,18 @@ export async function handleModelsApi( // ─── Handlers ───────────────────────────────────────────────────────────────── async function handleModelsList(): Promise { - const activeProvider = await providerService.getActiveProvider() + const { providers, activeId } = await providerService.listProviders() + const activeProvider = activeId ? providers.find((p) => p.id === activeId) : null if (activeProvider) { + // Convert ModelMapping to model list for API compatibility + const modelList = [ + { id: activeProvider.models.main, name: activeProvider.models.main, description: 'Main model', context: '' }, + ...(activeProvider.models.haiku !== activeProvider.models.main ? [{ id: activeProvider.models.haiku, name: activeProvider.models.haiku, description: 'Haiku model', context: '' }] : []), + ...(activeProvider.models.sonnet !== activeProvider.models.main ? [{ id: activeProvider.models.sonnet, name: activeProvider.models.sonnet, description: 'Sonnet model', context: '' }] : []), + ...(activeProvider.models.opus !== activeProvider.models.main ? [{ id: activeProvider.models.opus, name: activeProvider.models.opus, description: 'Opus model', context: '' }] : []), + ] return Response.json({ - models: activeProvider.models, + models: modelList, provider: { id: activeProvider.id, name: activeProvider.name }, }) } @@ -103,8 +111,11 @@ async function handleCurrentModel(req: Request): Promise { const contextTier = (settings.modelContext as string) || undefined // Build the full model list: prefer active provider's models, fall back to defaults - const activeProvider = await providerService.getActiveProvider() - const availableModels = activeProvider ? activeProvider.models : DEFAULT_MODELS + const { providers, activeId } = await providerService.listProviders() + const activeProvider = activeId ? providers.find((p) => p.id === activeId) : null + const availableModels = activeProvider + ? [{ id: activeProvider.models.main, name: activeProvider.models.main, description: 'Main model', context: '' }] + : DEFAULT_MODELS // Reconstruct composite ID for lookup (e.g. 'claude-opus-4-6-20250610:1m') const lookupId = contextTier ? `${baseModelId}:${contextTier}` : baseModelId