From 10cfe0fefad9892d1e6314122027dc05bea1a6bf Mon Sep 17 00:00:00 2001 From: kaitranntt Date: Sat, 20 Dec 2025 21:07:46 -0500 Subject: [PATCH] feat(ui): add provider preset categories with helper function - Add PresetCategory type (recommended/alternative) - Categorize OpenRouter as recommended, GLM/GLMT/Kimi as alternative - Add getPresetsByCategory() helper for filtering - Change GLM badge from 'Free' to 'Z.AI' for clarity --- ui/src/lib/provider-presets.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/ui/src/lib/provider-presets.ts b/ui/src/lib/provider-presets.ts index 8a0ade76..283404a7 100644 --- a/ui/src/lib/provider-presets.ts +++ b/ui/src/lib/provider-presets.ts @@ -3,6 +3,8 @@ * Pre-configured templates for common API providers */ +export type PresetCategory = 'recommended' | 'alternative'; + export interface ProviderPreset { id: string; name: string; @@ -16,11 +18,13 @@ export interface ProviderPreset { requiresApiKey: boolean; apiKeyPlaceholder: string; apiKeyHint?: string; + category: PresetCategory; } export const OPENROUTER_BASE_URL = 'https://openrouter.ai/api/v1'; export const PROVIDER_PRESETS: ProviderPreset[] = [ + // Recommended - OpenRouter { id: 'openrouter', name: 'OpenRouter', @@ -34,18 +38,21 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [ requiresApiKey: true, apiKeyPlaceholder: 'sk-or-...', apiKeyHint: 'Get your API key at openrouter.ai/keys', + category: 'recommended', }, + // Alternative providers - GLM/GLMT/Kimi { id: 'glm', name: 'GLM', description: 'Claude via Z.AI (GitHub Copilot)', baseUrl: 'https://api.z.ai/api/anthropic', defaultProfileName: 'glm', - badge: 'Free', + badge: 'Z.AI', defaultModel: 'glm-4.6', requiresApiKey: true, apiKeyPlaceholder: 'ghp_...', apiKeyHint: 'Get your API key from Z.AI', + category: 'alternative', }, { id: 'glmt', @@ -58,6 +65,7 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [ requiresApiKey: true, apiKeyPlaceholder: 'ghp_...', apiKeyHint: 'Same API key as GLM', + category: 'alternative', }, { id: 'kimi', @@ -70,9 +78,15 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [ requiresApiKey: true, apiKeyPlaceholder: 'sk-...', apiKeyHint: 'Get your API key from Moonshot AI', + category: 'alternative', }, ]; +/** Get presets by category */ +export function getPresetsByCategory(category: PresetCategory): ProviderPreset[] { + return PROVIDER_PRESETS.filter((p) => p.category === category); +} + /** Get preset by ID */ export function getPresetById(id: string): ProviderPreset | undefined { return PROVIDER_PRESETS.find((p) => p.id === id);