/** * Real-Time Dashboard * Terminal-based swarm monitoring dashboard */ class RealTimeDashboard { constructor(swarm) { this.swarm = swarm; this.interval = null; this.updateIntervalMs = 5000; } start() { this.render(); this.interval = setInterval(() => this.render(), this.updateIntervalMs); this.swarm.log('success', 'Dashboard started (5s refresh)'); } stop() { if (this.interval) { clearInterval(this.interval); this.interval = null; } } render() { const report = this.swarm.getPerformanceReport?.() || {}; const memStats = this.swarm.memory?.stats?.() || {}; console.clear(); console.log('╔══════════════════════════════════════════════╗'); console.log('║ 🐝 zCode Swarm Dashboard ║'); console.log('╠══════════════════════════════════════════════╣'); console.log(`║ Time: ${new Date().toISOString()} `); console.log('╠══════════════════════════════════════════════╣'); console.log('║ 🤖 Agents ║'); console.log(`║ Total: ${String(report.agents?.total || 0).padEnd(30)}║`); console.log(`║ Active: ${String(report.agents?.active || 0).padEnd(30)}║`); console.log(`║ Idle: ${String(report.agents?.idle || 0).padEnd(30)}║`); console.log('╠══════════════════════════════════════════════╣'); console.log('║ 💾 Memory ║'); for (const [ns, count] of Object.entries(memStats)) { console.log(`║ ${ns.padEnd(15)} ${String(count).padEnd(14)} entries ║`); } console.log('╠══════════════════════════════════════════════╣'); console.log('║ 📊 System ║'); console.log(`║ Memory: ${String(report.memory?.usage || 'N/A').padEnd(30)}║`); console.log(`║ CPU: ${String(report.cpu?.usage || 'N/A').padEnd(30)}║`); console.log(`║ Mode: ${String(report.coordination?.mode || 'N/A').padEnd(30)}║`); console.log('╠══════════════════════════════════════════════╣'); console.log('║ 🧠 Intelligence ║'); console.log('║ Neural Net: Active ║'); console.log('║ CRDT Sync: Active ║'); console.log('║ Federated: Active ║'); console.log('╚══════════════════════════════════════════════╝'); } exportReport() { return { timestamp: Date.now(), agents: this.swarm.getPerformanceReport?.() || {}, memory: this.swarm.memory?.stats?.() || {}, mode: this.swarm.config?.coordination?.mode || 'hierarchical' }; } } module.exports = RealTimeDashboard;