import React, { useState } from "react"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Loader2 } from "lucide-react"; import { useCustomLanguageModelProvider } from "@/hooks/useCustomLanguageModelProvider"; interface CreateCustomProviderDialogProps { isOpen: boolean; onClose: () => void; onSuccess: () => void; } export function CreateCustomProviderDialog({ isOpen, onClose, onSuccess, }: CreateCustomProviderDialogProps) { const [id, setId] = useState(""); const [name, setName] = useState(""); const [apiBaseUrl, setApiBaseUrl] = useState(""); const [envVarName, setEnvVarName] = useState(""); const [errorMessage, setErrorMessage] = useState(""); const { createProvider, isCreating, error } = useCustomLanguageModelProvider(); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setErrorMessage(""); try { await createProvider({ id: id.trim(), name: name.trim(), apiBaseUrl: apiBaseUrl.trim(), envVarName: envVarName.trim() || undefined, }); // Reset form setId(""); setName(""); setApiBaseUrl(""); setEnvVarName(""); onSuccess(); } catch (error) { setErrorMessage( error instanceof Error ? error.message : "Failed to create custom provider", ); } }; const handleClose = () => { if (!isCreating) { setErrorMessage(""); onClose(); } }; return ( Add Custom Provider Connect to a custom language model provider API
setId(e.target.value)} placeholder="E.g., my-provider" required disabled={isCreating} />

A unique identifier for this provider (no spaces).

setName(e.target.value)} placeholder="E.g., My Provider" required disabled={isCreating} />

The name that will be displayed in the UI.

setApiBaseUrl(e.target.value)} placeholder="E.g., https://api.example.com/v1" required disabled={isCreating} />

The base URL for the API endpoint.

setEnvVarName(e.target.value)} placeholder="E.g., MY_PROVIDER_API_KEY" disabled={isCreating} />

Environment variable name for the API key.

{(errorMessage || error) && (
{errorMessage || (error instanceof Error ? error.message : "Failed to create custom provider")}
)}
); }