From 64b4c39c9205a93674d2a0521383a9dacbb174aa Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Fri, 7 Nov 2025 19:14:00 +0000 Subject: [PATCH] Refactor agent and prompt management Restructures the application to integrate prompt management directly into the agent details view. Removes the separate "Prompts" page and its associated components. Agents are now the root route, and clicking an agent navigates to a detail page where its system prompt, AI model, and version history can be managed. --- src/App.tsx | 4 +- src/components/layout/AppSidebar.tsx | 2 - src/components/layout/MobileNav.tsx | 3 +- src/components/prompts/CreatePromptDialog.tsx | 266 ------------- src/components/prompts/EditPromptDialog.tsx | 210 ----------- src/components/prompts/PromptCard.tsx | 63 ---- .../prompts/PromptHistoryDialog.tsx | 229 ------------ src/pages/AgentDetails.tsx | 256 +++++++++++++ src/pages/Agents.tsx | 24 +- src/pages/Prompts.tsx | 353 ------------------ 10 files changed, 279 insertions(+), 1131 deletions(-) delete mode 100644 src/components/prompts/CreatePromptDialog.tsx delete mode 100644 src/components/prompts/EditPromptDialog.tsx delete mode 100644 src/components/prompts/PromptCard.tsx delete mode 100644 src/components/prompts/PromptHistoryDialog.tsx create mode 100644 src/pages/AgentDetails.tsx delete mode 100644 src/pages/Prompts.tsx diff --git a/src/App.tsx b/src/App.tsx index 36f32f0..830f3a5 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -6,7 +6,7 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { BrowserRouter, Routes, Route } from "react-router-dom"; import { AppLayout } from "./components/layout/AppLayout"; import Agents from "./pages/Agents"; -import Prompts from "./pages/Prompts"; +import AgentDetails from "./pages/AgentDetails"; import TestPrompt from "./pages/TestPrompt"; import History from "./pages/History"; import NotFound from "./pages/NotFound"; @@ -23,7 +23,7 @@ const App = () => ( }> } /> - } /> + } /> } /> } /> diff --git a/src/components/layout/AppSidebar.tsx b/src/components/layout/AppSidebar.tsx index 606033c..54f2b9f 100644 --- a/src/components/layout/AppSidebar.tsx +++ b/src/components/layout/AppSidebar.tsx @@ -2,7 +2,6 @@ import { useState } from "react"; import { NavLink } from "react-router-dom"; import { Bot, - FileText, TestTube, ArrowLeft, ChevronLeft, @@ -14,7 +13,6 @@ import { ThemeToggle } from "./ThemeToggle"; const menuItems = [ { title: "Agentes", url: "/", icon: Bot }, - { title: "Prompts", url: "/prompts", icon: FileText }, { title: "Testar Prompt", url: "/test", icon: TestTube }, ]; diff --git a/src/components/layout/MobileNav.tsx b/src/components/layout/MobileNav.tsx index f144da9..aef1aa8 100644 --- a/src/components/layout/MobileNav.tsx +++ b/src/components/layout/MobileNav.tsx @@ -1,12 +1,11 @@ import { useState } from "react"; import { NavLink } from "react-router-dom"; -import { Bot, FileText, TestTube, Menu, X } from "lucide-react"; +import { Bot, TestTube, Menu, X } from "lucide-react"; import { Button } from "@/components/ui/button"; import { ThemeToggle } from "./ThemeToggle"; const menuItems = [ { title: "Agentes", url: "/", icon: Bot }, - { title: "Prompts", url: "/prompts", icon: FileText }, { title: "Testar Prompt", url: "/test", icon: TestTube }, ]; diff --git a/src/components/prompts/CreatePromptDialog.tsx b/src/components/prompts/CreatePromptDialog.tsx deleted file mode 100644 index ae37349..0000000 --- a/src/components/prompts/CreatePromptDialog.tsx +++ /dev/null @@ -1,266 +0,0 @@ -import { useState } from "react"; -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 { Textarea } from "@/components/ui/textarea"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; -import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; -import { Wand2 } from "lucide-react"; - -interface CreatePromptDialogProps { - open: boolean; - onOpenChange: (open: boolean) => void; -} - -export function CreatePromptDialog({ open, onOpenChange }: CreatePromptDialogProps) { - const [title, setTitle] = useState(""); - const [systemPrompt, setSystemPrompt] = useState(""); - - // Assistente fields - const [agentName, setAgentName] = useState(""); - const [agentRole, setAgentRole] = useState(""); - const [targetAudience, setTargetAudience] = useState(""); - const [mainObjective, setMainObjective] = useState(""); - const [toneOfVoice, setToneOfVoice] = useState(""); - const [forbiddenPatterns, setForbiddenPatterns] = useState(""); - const [refinementInstructions, setRefinementInstructions] = useState(""); - const [isGenerated, setIsGenerated] = useState(false); - - const handleGeneratePrompt = () => { - let generatedPrompt = `Você é ${agentName}, ${agentRole}. - -Público-alvo: ${targetAudience} - -Objetivo principal: ${mainObjective} - -Tom de voz: ${toneOfVoice} - -${forbiddenPatterns ? `Padrões proibidos:\n${forbiddenPatterns}` : ''} - -Siga estas diretrizes em todas as suas interações.`; - - if (refinementInstructions && isGenerated) { - generatedPrompt += `\n\nInstruções adicionais:\n${refinementInstructions}`; - } - - setSystemPrompt(generatedPrompt); - setIsGenerated(true); - }; - - const handleStartOver = () => { - setAgentName(""); - setAgentRole(""); - setTargetAudience(""); - setMainObjective(""); - setToneOfVoice(""); - setForbiddenPatterns(""); - setRefinementInstructions(""); - setSystemPrompt(""); - setIsGenerated(false); - }; - - const handleSave = () => { - console.log("Salvando prompt:", { title, systemPrompt }); - // Aqui você implementaria a lógica de salvar no backend - onOpenChange(false); - }; - - return ( - - - - Criar Novo Prompt - - Crie um prompt manualmente ou use o assistente para gerar automaticamente. - - - -
-
- - setTitle(e.target.value)} - /> -
- - - - Manual - - - Assistente - - - - -
- -