{"repo": "ahmadali0071/va-cd", "files": {"admin-panel/src/pages/ApiSettings.jsx": {"aa55182da05c2078587a920716769716698f1f94": {"t": 1785746562.0892217, "n": 27250, "h": "1309be46eec6ffed", "c": "import { useState, useEffect, useRef } from \"react\";\n\nconst API = \"/api/admin\";\n\nfunction call(path, options = {}) {\n const token = localStorage.getItem(\"admin_token\");\n return fetch(`${API}${path}`, {\n headers: { Authorization: `Bearer ${token}`, \"Content-Type\": \"application/json\", ...options.headers },\n ...options,\n }).then(r => r.ok ? r.json() : r.json().then(e => { throw new Error(e.error || \"Failed\"); }));\n}\n\nconst LLM_PROVIDERS = [\n { key: \"deepseek\", label: \"DeepSeek\", baseURL: \"https://api.deepseek.com/v1\" },\n { key: \"openai\", label: \"OpenAI\", baseURL: \"https://api.openai.com/v1\" },\n { key: \"groq\", label: \"Groq\", baseURL: \"https://api.groq.com/openai/v1\" },\n { key: \"anthropic\", label: \"Anthropic Claude\", baseURL: \"https://api.anthropic.com/v1\" },\n { key: \"gemini\", label: \"Google Gemini\", baseURL: \"https://generativelanguage.googleapis.com/v1beta\" },\n { key: \"mistral\", label: \"Mistral AI\", baseURL: \"https://api.mistral.ai/v1\" },\n { key: \"perplexity\", label: \"Perplexity\", baseURL: \"https://api.perplexity.ai\" },\n { key: \"xai\", label: \"xAI Grok\", baseURL: \"https://api.x.ai/v1\" },\n { key: \"together\", label: \"Together AI\", baseURL: \"https://api.together.xyz/v1\" },\n { key: \"fireworks\", label: \"Fireworks AI\", baseURL: \"https://api.fireworks.ai/inference/v1\" },\n { key: \"replicate\", label: \"Replicate\", baseURL: \"https://api.replicate.com/v1\" },\n { key: \"cohere\", label: \"Cohere\", baseURL: \"https://api.cohere.ai/v1\" },\n { key: \"custom\", label: \"Custom Provider\", baseURL: \"\" },\n];\n\nconst ALL_MODELS = [\n { name: \"deepseek-reasoner\", provider: \"deepseek\", label: \"DeepSeek R1\" },\n { name: \"deepseek-chat\", provider: \"deepseek\", label: \"DeepSeek V3\" },\n { name: \"gpt-4o\", provider: \"openai\", label: \"GPT-4o\" },\n { name: \"gpt-4o-mini\", provider: \"openai\", label: \"GPT-4o Mini\" },\n { name: \"gpt-4-turbo\", provider: \"openai\", label: \"GPT-4 Turbo\" },\n { name: \"gpt-4\", provider: \"openai\", label: \"GPT-4\" },\n { name: \"gpt-3.5-turbo\", provider: \"openai\", label: \"GPT-3.5 Turbo\" },\n { name: \"o1\", provider: \"openai\", label: \"OpenAI o1\" },\n { name: \"o1-mini\", provider: \"openai\", label: \"OpenAI o1 Mini\" },\n { name: \"o3-mini\", provider: \"openai\", label: \"OpenAI o3 Mini\" },\n { name: \"llama-3.3-70b-versatile\", provider: \"groq\", label: \"Llama 3.3 70B\" },\n { name: \"llama-3.1-8b-instant\", provider: \"groq\", label: \"Llama 3.1 8B\" },\n { name: \"mixtral-8x7b-32768\", provider: \"groq\", label: \"Mixtral 8x7B\" },\n { name: \"gemma2-9b-it\", provider: \"groq\", label: \"Gemma 2 9B\" },\n { name: \"claude-3-opus-20240229\", provider: \"anthropic\", label: \"Claude 3 Opus\" },\n { name: \"claude-3-sonnet-20240229\", provider: \"anthropic\", label: \"Claude 3 Sonnet\" },\n { name: \"claude-3-haiku-20240307\", provider: \"anthropic\", label: \"Claude 3 Haiku\" },\n { name: \"claude-3-5-sonnet-20240620\", provider: \"anthropic\", label: \"Claude 3.5 Sonnet\" },\n { name: \"claude-3-5-haiku-20241022\", provider: \"anthropic\", label: \"Claude 3.5 Haiku\" },\n { name: \"gemini-2.0-flash\", provider: \"gemini\", label: \"Gemini 2.0 Flash\" },\n { name: \"gemini-1.5-pro\", provider: \"gemini\", label: \"Gemini 1.5 Pro\" },\n { name: \"gemini-1.5-flash\", provider: \"gemini\", label: \"Gemini 1.5 Flash\" },\n { name: \"gemini-1.0-pro\", provider: \"gemini\", label: \"Gemini 1.0 Pro\" },\n { name: \"mistral-large-latest\", provider: \"mistral\", label: \"Mistral Large\" },\n { name: \"mistral-small-latest\", provider: \"mistral\", label: \"Mistral Small\" },\n { name: \"mistral-medium\", provider: \"mistral\", label: \"Mistral Medium\" },\n { name: \"codestral-latest\", provider: \"mistral\", label: \"Codestral\" },\n { name: \"sonar-reasoning\", provider: \"perplexity\", label: \"Sonar Reasoning\" },\n { name: \"sonar-pro\", provider: \"perplexity\", label: \"Sonar Pro\" },\n { name: \"sonar\", provider: \"perplexity\", label: \"Sonar\" },\n { name: \"grok-2-1212\", provider: \"xai\", label: \"Grok 2\" },\n { name: \"grok-2-vision-1212\", provider: \"xai\", label: \"Grok 2 Vision\" },\n { name: \"grok-beta\", provider: \"xai\", label: \"Grok Beta\" },\n { name: \"meta-llama/Llama-3.3-70B-Instruct-Turbo\", provider: \"together\", label: \"Llama 3.3 70B Turbo\" },\n { name: \"meta-llama/Llama-3.1-8B-Instruct-Turbo\", provider: \"together\", label: \"Llama 3.1 8B Turbo\" },\n { name: \"Qwen/Qwen2.5-72B-Instruct-Turbo\", provider: \"together\", label: \"Qwen 2.5 72B\" },\n { name: \"mistralai/Mixtral-8x22B-Instruct-v0.1\", provider: \"together\", label: \"Mixtral 8x22B\" },\n { name: \"deepseek-ai/DeepSeek-R1\", provider: \"together\", label: \"DeepSeek R1 (Together)\" },\n { name: \"accounts/fireworks/models/llama-v3p3-70b-instruct\", provider: \"fireworks\", label: \"Llama 3.3 70B (FW)\" },\n { name: \"accounts/fireworks/models/mixtral-8x22b-instruct\", provider: \"fireworks\", label: \"Mixtral 8x22B (FW)\" },\n { name: \"meta/meta-llama-3-70b-instruct\", provider: \"replicate\", label: \"Llama 3 70B (Rep)\" },\n { name: \"command-r-plus\", provider: \"cohere\", label: \"Command R+\" },\n { name: \"command-r\", provider: \"cohere\", label: \"Command R\" },\n { name: \"command\", provider: \"cohere\", label: \"Command\" },\n];\n\nconst TTS_PROVIDERS = [\n { key: \"polly\", label: \"Amazon Polly (Free)\" },\n { key: \"elevenlabs\", label: \"ElevenLabs (11 Labs)\" },\n { key: \"openai_tts\", label: \"OpenAI TTS\" },\n { key: \"deepgram_tts\", label: \"Deepgram Aura\" },\n { key: \"playht\", label: \"Play.ht\" },\n { key: \"google_tts\", label: \"Google Cloud TTS\" },\n { key: \"azure_tts\", label: \"Azure TTS\" },\n { key: \"custom\", label: \"Custom TTS\" },\n];\n\nconst ALL_VOICES = [\n { name: \"Polly.Joanna-Neural\", provider: \"polly\", label: \"Joanna (Female, Warm)\" },\n { name: \"Polly.Matthew-Neural\", provider: \"polly\", label: \"Matthew (Male, Friendly)\" },\n { name: \"Polly.Ruth-Neural\", provider: \"polly\", label: \"Ruth (Female, Professional)\" },\n { name: \"Polly.Amy-Neural\", provider: \"polly\", label: \"Amy (Female, British)\" },\n { name: \"Polly.Stephen-Neural\", provider: \"polly\", label: \"Stephen (Male, Deep)\" },\n { name: \"Polly.Salli-Neural\", provider: \"polly\", label: \"Salli (Female, US)\" },\n { name: \"Polly.Kimberly-Neural\", provider: \"polly\", label: \"Kimberly (Female, US)\" },\n { name: \"Polly.Kendra-Neural\", provider: \"polly\", label: \"Kendra (Female, US)\" },\n { name: \"Rachel\", provider: \"elevenlabs\", label: \"Rachel (Female, Warm)\" },\n { name: \"Adam\", provider: \"elevenlabs\", label: \"Adam (Male, Deep)\" },\n { name: \"Antoni\", provider: \"elevenlabs\", label: \"Antoni (Male, British)\" },\n { name: \"Bella\", provider: \"elevenlabs\", label: \"Bella (Female, Young)\" },\n { name: \"Domi\", provider: \"elevenlabs\", label: \"Domi (Female, Energetic)\" },\n { name: \"Elli\", provider: \"elevenlabs\", label: \"Elli (Female, Soft)\" },\n { name: \"Josh\", provider: \"elevenlabs\", label: \"Josh (Male, Casual)\" },\n { name: \"Arnold\", provider: \"elevenlabs\", label: \"Arnold (Male, Authoritative)\" },\n { name: \"alloy\", provider: \"openai_tts\", label: \"Alloy (Neutral)\" },\n { name: \"echo\", provider: \"openai_tts\", label: \"Echo (Male)\" },\n { name: \"fable\", provider: \"openai_tts\", label: \"Fable (British)\" },\n { name: \"onyx\", provider: \"openai_tts\", label: \"Onyx (Deep Male)\" },\n { name: \"nova\", provider: \"openai_tts\", label: \"Nova (Female)\" },\n { name: \"shimmer\", provider: \"openai_tts\", label: \"Shimmer (Soft Female)\" },\n { name: \"aura-asteria-en\", provider: \"deepgram_tts\", label: \"Asteria (Female, US)\" },\n { name: \"aura-luna-en\", provider: \"deepgram_tts\", label: \"Luna (Female, US)\" },\n { name: \"aura-stella-en\", provider: \"deepgram_tts\", label: \"Stella (Female, US)\" },\n { name: \"aura-athena-en\", provider: \"deepgram_tts\", label: \"Athena (Female, UK)\" },\n { name: \"aura-hera-en\", provider: \"deepgram_tts\", label: \"Hera (Female, US)\" },\n { name: \"aura-orion-en\", provider: \"deepgram_tts\", label: \"Orion (Male, US)\" },\n { name: \"aura-arcas-en\", provider: \"deepgram_tts\", label: \"Arcas (Male, US)\" },\n { name: \"en-US-Standard-C\", provider: \"google_tts\", label: \"Standard C (Female, US)\" },\n { name: \"en-US-Standard-D\", provider: \"google_tts\", label: \"Standard D (Male, US)\" },\n { name: \"en-US-Wavenet-C\", provider: \"google_tts\", label: \"Wavenet C (Female, US)\" },\n { name: \"en-US-Wavenet-D\", provider: \"google_tts\", label: \"Wavenet D (Male, US)\" },\n { name: \"en-US-Studio-O\", provider: \"google_tts\", label: \"Studio O (Female, US)\" },\n { name: \"en-GB-Wavenet-B\", provider: \"google_tts\", label: \"Wavenet B (Male, UK)\" },\n { name: \"en-US-AriaNeural\", provider: \"azure_tts\", label: \"Aria (Female, US)\" },\n { name: \"en-US-GuyNeural\", provider: \"azure_tts\", label: \"Guy (Male, US)\" },\n { name: \"en-US-JennyNeural\", provider: \"azure_tts\", label: \"Jenny (Female, US)\" },\n { name: \"en-GB-SoniaNeural\", provider: \"azure_tts\", label: \"Sonia (Female, UK)\" },\n { name: \"en-GB-RyanNeural\", provider: \"azure_tts\", label: \"Ryan (Male, UK)\" },\n];\n\nconst API_KEY_DEFS = [\n { key: \"deepseek_api_key\", label: \"DeepSeek\", category: \"llm\", provider: \"deepseek\" },\n { key: \"openai_api_key\", label: \"OpenAI\", category: \"llm\", provider: \"openai\" },\n { key: \"groq_api_key\", label: \"Groq\", category: \"llm\", provider: \"groq\" },\n { key: \"anthropic_api_key\", label: \"Claude\", category: \"llm\", provider: \"anthropic\" },\n { key: \"gemini_api_key\", label: \"Gemini\", category: \"llm\", provider: \"gemini\" },\n { key: \"mistral_api_key\", label: \"Mistral\", category: \"llm\", provider: \"mistral\" },\n { key: \"perplexity_api_key\", label: \"Perplexity\", category: \"llm\", provider: \"perplexity\" },\n { key: \"xai_api_key\", label: \"xAI Grok\", category: \"llm\", provider: \"xai\" },\n { key: \"together_api_key\", label: \"Together AI\", category: \"llm\", provider: \"together\" },\n { key: \"fireworks_api_key\", label: \"Fireworks AI\", category: \"llm\", provider: \"fireworks\" },\n { key: \"replicate_api_key\", label: \"Replicate\", category: \"llm\", provider: \"replicate\" },\n { key: \"cohere_api_key\", label: \"Cohere\", category: \"llm\", provider: \"cohere\" },\n { key: \"elevenlabs_api_key\", label: \"ElevenLabs\", category: \"voice\", provider: \"elevenlabs\" },\n { key: \"deepgram_api_key\", label: \"Deepgram\", category: \"stt\", provider: \"deepgram\" },\n { key: \"playht_api_key\", label: \"Play.ht\", category: \"voice\", provider: \"playht\" },\n { key: \"google_tts_api_key\", label: \"Google Cloud TTS\", category: \"voice\", provider: \"google_tts\" },\n { key: \"azure_tts_api_key\", label: \"Azure TTS\", category: \"voice\", provider: \"azure_tts\" },\n];\n\nfunction SearchInput({ value, onChange, items, placeholder, providerFilter }) {\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState(value || \"\");\n const ref = useRef(null);\n\n useEffect(() => { setSearch(value || \"\"); }, [value]);\n\n const filtered = (search?.length > 0)\n ? items.filter(m => {\n if (providerFilter && m.provider !== providerFilter) return false;\n return m.name.toLowerCase().includes(search.toLowerCase()) || m.label.toLowerCase().includes(search.toLowerCase());\n }).slice(0, 8)\n : (providerFilter \n ? items.filter(m => m.provider === providerFilter).slice(0, 6) \n : items.slice(0, 8));\n\n const exactMatch = filtered.find(m => m.name === search);\n\n return (\n
Configure LLM, voice, and API keys for the AI agent
\n\n {(msg || err) && (\n