import { useState } from "react"; import { useNavigate } from "react-router-dom"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { useToast } from "@/hooks/use-toast"; import { createAgent } from "@/lib/api/agents"; import { AI_MODELS, getModelIdByValue } from "@/lib/constants/aiModels"; interface CreateAgentDialogProps { open: boolean; onOpenChange: (open: boolean) => void; } export function CreateAgentDialog({ open, onOpenChange }: CreateAgentDialogProps) { const navigate = useNavigate(); const { toast } = useToast(); const queryClient = useQueryClient(); const [name, setName] = useState(""); const [selectedModel, setSelectedModel] = useState(""); const createAgentMutation = useMutation({ mutationFn: ({ name, modelId }: { name: string; modelId: number }) => createAgent(name, modelId), onSuccess: (data) => { toast({ title: "Agente criado", description: `${data.agent_name} foi criado com sucesso.`, }); // Invalidate agents query to refetch the list queryClient.invalidateQueries({ queryKey: ["agents"] }); onOpenChange(false); // Navegar para a tela de detalhes do novo agente navigate(`/agents/${data.agent_id}`); // Reset form setName(""); setSelectedModel(""); }, onError: (error: any) => { toast({ title: "Erro ao criar agente", description: error.response?.data?.message || "Ocorreu um erro ao criar o agente.", variant: "destructive", }); }, }); const handleCreate = () => { const modelId = getModelIdByValue(selectedModel); if (!modelId) { toast({ title: "Erro", description: "Modelo de IA inválido.", variant: "destructive", }); return; } createAgentMutation.mutate({ name, modelId }); }; return ( Criar Novo Agente Preencha os dados básicos do agente. Você poderá configurar o system prompt na próxima tela.
setName(e.target.value)} />
); }