// import { useEffect, useMemo, useState, type ReactElement } from "react"; // import { Layout } from "@/components/layout/Layout"; // import { // FormField, // FormSelect, // FormTextArea, // PrimaryButton, // SecondaryButton, // StatusBadge, // } from "@/components/shared"; // import { aiService } from "@/services/ai-service"; // import type { AIProviderInfo } from "@/types/ai"; // import { showToast } from "@/utils/toast"; // const CompletionPlayground = (): ReactElement => { // const [providers, setProviders] = useState([]); // const [isLoading, setIsLoading] = useState(false); // const [isRunning, setIsRunning] = useState(false); // const [form, setForm] = useState({ // provider: "gemini", // model: "", // max_tokens: "10", // temperature: "0.7", // user: "ping", // }); // const [result, setResult] = useState({ // content: "", // provider: "", // model: "", // prompt_tokens: 0, // completion_tokens: 0, // total_tokens: 0, // cost: 0, // latency_ms: 0, // fallbackUsed: false, // }); // const providerOptions = useMemo( // () => providers.map((p) => ({ value: p.name, label: p.displayName || p.name })), // [providers], // ); // const loadProviders = async (): Promise => { // setIsLoading(true); // try { // const data = await aiService.getProviders(); // setProviders(data); // } catch (err: any) { // showToast.error(err?.response?.data?.error?.message || "Failed to load providers"); // } finally { // setIsLoading(false); // } // }; // useEffect(() => { // void loadProviders(); // }, []); // const handleRun = async (): Promise => { // setIsRunning(true); // try { // const response = await aiService.playground({ // messages: [{ role: "user", content: form.user }], // provider: form.provider || undefined, // model: form.model || undefined, // max_tokens: Number(form.max_tokens), // temperature: Number(form.temperature), // }); // setResult({ // content: response.content || "", // provider: response.provider || "", // model: response.model || "", // prompt_tokens: response.usage?.prompt_tokens || 0, // completion_tokens: response.usage?.completion_tokens || 0, // total_tokens: response.usage?.total_tokens || 0, // cost: response.cost || 0, // latency_ms: response.latency_ms || 0, // fallbackUsed: Boolean(response.fallbackUsed), // }); // showToast.success("Playground response received"); // } catch (err: any) { // showToast.error(err?.response?.data?.error?.message || "Playground request failed"); // } finally { // setIsRunning(false); // } // }; // return ( // //
//
//

// Playground Request //

//

// Uses /ai/playground for fast testing without history persistence. //

//
// setForm((prev) => ({ ...prev, provider: value }))} // /> // setForm((prev) => ({ ...prev, model: e.target.value }))} // placeholder="e.g. gemini-2.5-flash" // /> //
//
// setForm((prev) => ({ ...prev, max_tokens: e.target.value }))} // /> // setForm((prev) => ({ ...prev, temperature: e.target.value }))} // /> //
// setForm((prev) => ({ ...prev, user: e.target.value }))} // /> //
// // {isRunning ? "Running..." : "Run Playground"} // // void loadProviders()}>Reload Providers //
//
//
//

// Playground Response //

//
// Provider: {result.provider || "-"} // Model: {result.model || "-"} // Latency: {result.latency_ms || 0} ms // // Tokens: {result.prompt_tokens}/{result.completion_tokens}/{result.total_tokens} // // // Fallback: {result.fallbackUsed ? "Used" : "No"} // //
//
//

// {result.content || "No response yet."} //

//
//
//
//
// ); // }; // export default CompletionPlayground;