const Terminal = { lines: [], maxLines: 1000, autoScroll: true, executionFilter: null, _processingInterval: null, addLine(content, type = 'default') { const time = new Date(); const formatted = time.toTimeString().slice(0, 8); Terminal.lines.push({ content, type, timestamp: formatted }); if (Terminal.lines.length > Terminal.maxLines) { Terminal.lines.shift(); } Terminal.render(); }, startProcessing(agentName) { Terminal.stopProcessing(); Terminal.addLine(`Agente "${agentName}" processando tarefa...`, 'system'); let dots = 0; Terminal._processingInterval = setInterval(() => { dots = (dots + 1) % 4; const indicator = document.getElementById('terminal-processing'); if (indicator) { indicator.textContent = 'Processando' + '.'.repeat(dots + 1); } }, 500); Terminal.render(); }, stopProcessing() { if (Terminal._processingInterval) { clearInterval(Terminal._processingInterval); Terminal._processingInterval = null; } }, clear() { Terminal.stopProcessing(); Terminal.lines = []; Terminal.executionFilter = null; Terminal.render(); }, setExecutionFilter(executionId) { Terminal.executionFilter = executionId; Terminal.render(); }, scrollToBottom() { const output = document.getElementById('terminal-output'); if (output) output.scrollTop = output.scrollHeight; }, render() { const output = document.getElementById('terminal-output'); if (!output) return; const lines = Terminal.executionFilter ? Terminal.lines.filter((l) => l.executionId === Terminal.executionFilter) : Terminal.lines; if (lines.length === 0 && !Terminal._processingInterval) { output.innerHTML = `