"use client"; import { useState } from "react"; import type { ProviderInfo } from "@/lib/analysis/providers"; interface ProviderStatusProps { provider: ProviderInfo; selectedOllamaModel?: string; isDefault: boolean; onSetDefault: (id: string) => void; } const TYPE_LABELS: Record = { "cloud-ai": "Cloud AI", "local-ai": "Local AI", "algorithmic": "No AI", }; export default function ProviderStatus({ provider, selectedOllamaModel, isDefault, onSetDefault, }: ProviderStatusProps) { const [testStatus, setTestStatus] = useState<"idle" | "testing" | "ok" | "error">("idle"); const [testError, setTestError] = useState(""); async function handleTest() { setTestStatus("testing"); setTestError(""); try { const res = await fetch("/api/analyze/test", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ provider: provider.id, ollamaModel: provider.id === "ollama" ? selectedOllamaModel : undefined, }), }); const data = await res.json() as { ok: boolean; error?: string }; if (data.ok) { setTestStatus("ok"); } else { setTestStatus("error"); setTestError(data.error ?? "Unknown error"); } } catch (err) { setTestStatus("error"); setTestError(err instanceof Error ? err.message : String(err)); } } return (
{provider.label} {TYPE_LABELS[provider.type]} {provider.available ? ( Available ) : ( Unavailable )} {isDefault && ( Default )}
{!provider.available && provider.unavailableReason && (

{provider.unavailableReason}

)} {provider.id === "ollama" && provider.available && provider.ollamaBaseUrl && (

{provider.ollamaBaseUrl}

)}
{provider.available && (
{!isDefault && ( )}
)}
{testStatus === "ok" && (

✓ Working

)} {testStatus === "error" && (

✗ {testError}

)}
); }