import React, { useState, useEffect } from 'react';
function AgentDashboard({ agents }) {
const [agentData, setAgentData] = useState(agents);
useEffect(() => {
const interval = setInterval(() => {
// Simulate fetching updated agent data
setAgentData(prev => prev.map(agent => ({
...agent,
taskCompletionRate: Math.min(100, agent.taskCompletionRate + Math.random() * 5),
errorRate: Math.max(0, agent.errorRate + (Math.random() - 0.5) * 0.1),
status: agent.errorRate > 0.5 ? 'Error' : 'Healthy'
})));
}, 3000);
return () => clearInterval(interval);
}, []);
return (
<main aria-label="Agent Monitoring Dashboard">
<h1>Agent Monitoring Dashboard</h1>
<section>
{agentData.map(agent => (
<article key={agent.id} style={{
border: '1px solid #ccc',
padding: '1rem',
marginBottom: '1rem',
backgroundColor: agent.status === 'Error' ? '#ffe6e6' : '#e6ffe6'
}} aria-live="polite">
<h2>{agent.name}</h2>
<p>Status: <strong>{agent.status}</strong></p>
<p>Task Completion Rate: {agent.taskCompletionRate.toFixed(1)}%</p>
<progress value={agent.taskCompletionRate} max={100} aria-label="Task completion progress"></progress>
<p>Error Rate: {(agent.errorRate * 100).toFixed(1)}%</p>
{agent.status === 'Error' && <p role="alert" style={{color: 'red'}}>Alert: High error rate detected!</p>}
</article>
))}
</section>
</main>
);
}
// Example usage
const initialAgents = [
{ id: 1, name: 'Agent A', taskCompletionRate: 70, errorRate: 0.1, status: 'Healthy' },
{ id: 2, name: 'Agent B', taskCompletionRate: 85, errorRate: 0.05, status: 'Healthy' },
{ id: 3, name: 'Agent C', taskCompletionRate: 60, errorRate: 0.6, status: 'Error' }
];
export default function App() {
return <AgentDashboard agents={initialAgents} />;
}