import { useState, useRef, useCallback } from "react"; interface Finding { title: string; description: string; recommendation: string; severity: "high" | "medium" | "low"; codeSnippet: string; location: string; path: string; judgeReview: { review: string; confidence: number; exploitablePaths: string[]; }; } interface AgentResult { contract?: string; compilationErrors?: string[]; reviewSummary?: string; findings?: Finding[]; // Tester fields status?: string; pocCode?: string; executionLogs?: string[]; iterations?: number; } export function App() { const [requirements, setRequirements] = useState(""); const [logs, setLogs] = useState([]); const [coderResult, setCoderResult] = useState(null); const [auditorResult, setAuditorResult] = useState(null); const [testerResult, setTesterResult] = useState(null); const [running, setRunning] = useState(false); const logsEndRef = useRef(null); const appendLog = useCallback((msg: string) => { setLogs((prev) => [...prev, msg]); setTimeout(() => logsEndRef.current?.scrollIntoView({ behavior: "smooth" }), 50); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!requirements.trim() || running) return; setRunning(true); setLogs([]); setCoderResult(null); setAuditorResult(null); setTesterResult(null); appendLog("Iniciando pipeline..."); try { const res = await fetch("/api/run", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ requirements }), }); const reader = res.body?.getReader(); if (!reader) throw new Error("Stream não disponível"); const decoder = new TextDecoder(); let buffer = ""; let currentEvent = ""; while (true) { const { done, value } = await reader.read(); if (done) break; buffer += decoder.decode(value, { stream: true }); const lines = buffer.split("\n"); buffer = lines.pop() || ""; for (const line of lines) { if (line.startsWith("event:")) { currentEvent = line.slice(6).trim(); console.log("event", currentEvent); } else if (line.startsWith("data:")) { const data = line.slice(5).trim(); console.log("data", data); switch (currentEvent) { case "log": appendLog(data); break; case "coder": setCoderResult(JSON.parse(data)); break; case "auditor": setAuditorResult(JSON.parse(data)); break; case "tester": setTesterResult(JSON.parse(data)); break; case "error": appendLog(`❌ ERRO: ${data}`); break; } currentEvent = ""; } } } } catch (err) { appendLog(`❌ Erro de conexão: ${err instanceof Error ? err.message : String(err)}`); } finally { setRunning(false); } }; return (

Multi-Agent: Geração, Auditoria e Teste de Smart Contracts

Descreva um cenário ou requisito cuja solução seja um smart contract em Solidity. O sistema irá gerar, compilar, auditar e testar o contrato automaticamente.