"use client"; import { BotIcon, MessageSquareIcon, Trash2Icon } from "lucide-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { toast } from "sonner"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "@/components/ui/card"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { useDeleteAgent } from "@/core/agents"; import type { Agent } from "@/core/agents"; import { useI18n } from "@/core/i18n/hooks"; interface AgentCardProps { agent: Agent; } export function AgentCard({ agent }: AgentCardProps) { const { t } = useI18n(); const router = useRouter(); const deleteAgent = useDeleteAgent(); const [deleteOpen, setDeleteOpen] = useState(false); function handleChat() { router.push(`/workspace/agents/${agent.name}/chats/new`); } async function handleDelete() { try { await deleteAgent.mutateAsync(agent.name); toast.success(t.agents.deleteSuccess); setDeleteOpen(false); } catch (err) { toast.error(err instanceof Error ? err.message : String(err)); } } return ( <>
{agent.name} {agent.model && ( {agent.model} )}
{agent.description && ( {agent.description} )}
{agent.tool_groups && agent.tool_groups.length > 0 && (
{agent.tool_groups.map((group) => ( {group} ))}
)}
{/* Delete Confirm */} {t.agents.delete} {t.agents.deleteConfirm} ); }