import React, { useState, useEffect } from 'react'; import { FaRobot, FaSpinner, FaCheck, FaTimes } from 'react-icons/fa'; import axios from 'axios'; const AgentPanel: React.FC<{ projectPath: string }> = ({ projectPath }) => { const [prompt, setPrompt] = useState(''); const [running, setRunning] = useState(false); const [taskId, setTaskId] = useState(null); const [status, setStatus] = useState(''); const [logs, setLogs] = useState([]); const [pendingChanges, setPendingChanges] = useState([]); const [selectedModel, setSelectedModel] = useState('groq-llama-3.3-70b-versatile'); const [models, setModels] = useState([]); useEffect(() => { axios.get('/api/models').then(res => setModels(res.data)); }, []); const startTask = async () => { setRunning(true); setLogs([]); setPendingChanges([]); setStatus('running'); try { const resp = await fetch('/api/agent/run', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ prompt, project_path: projectPath, model: selectedModel }), }); const data = await resp.json(); setTaskId(data.task_id); setStatus(data.status); setLogs(data.logs || []); setPendingChanges(data.pending_changes || []); } catch (e) { setLogs(['Error: ' + e]); } setRunning(false); }; const approve = async () => { if (!taskId) return; try { const resp = await fetch(`/api/agent/approve/${taskId}`, { method: 'POST' }); const data = await resp.json(); setStatus(data.status); setLogs(prev => [...prev, ...(data.logs || [])]); } catch (e) {} }; return (
AI Agent