import { useState } from "react"; import { toast } from "react-toastify"; import { agents as agentsApi } from "../api/client"; import type { Agent } from "../api/types"; import { Modal } from "./Modal"; import { Button, Input, Textarea } from "./ui"; import { CodeBlock } from "./CodeBlock"; // ── Create / edit form ─────────────────────────────────────────────────────────── export function AgentFormModal({ open, onClose, agent, onSaved, }: { open: boolean; onClose: () => void; agent?: Agent | null; onSaved: (agent: Agent, created: boolean) => void; }) { const editing = !!agent; const [name, setName] = useState(agent?.name ?? ""); const [description, setDescription] = useState(agent?.description ?? ""); const [website, setWebsite] = useState(agent?.website ?? ""); const [iconUrl, setIconUrl] = useState(agent?.icon_url ?? ""); const [maxPending, setMaxPending] = useState(agent?.max_pending_requests ?? 5); const [loading, setLoading] = useState(false); const submit = async () => { if (!name.trim()) return toast.error("Name is required"); setLoading(true); try { const payload = { name: name.trim(), description: description.trim() || null, website: website.trim() || null, icon_url: iconUrl.trim() || null, max_pending_requests: maxPending, }; const saved = editing ? await agentsApi.update(agent!.id, payload) : await agentsApi.create(payload); toast.success(editing ? "Agent updated" : "Agent created"); onSaved(saved, !editing); onClose(); } catch (err) { toast.error(err instanceof Error ? err.message : "Failed"); } finally { setLoading(false); } }; return ( } >
setName(e.target.value)} autoFocus />