const AgentsUI = { agents: [], avatarColors: [ '#6366f1', '#8b5cf6', '#ec4899', '#f59e0b', '#10b981', '#3b82f6', '#ef4444', '#14b8a6', ], async load() { try { AgentsUI.agents = await API.agents.list(); AgentsUI.render(); } catch (err) { Toast.error(`Erro ao carregar agentes: ${err.message}`); } }, render(filteredAgents) { const grid = document.getElementById('agents-grid'); const empty = document.getElementById('agents-empty-state'); if (!grid) return; const agents = filteredAgents || AgentsUI.agents; const existingCards = grid.querySelectorAll('.agent-card'); existingCards.forEach((c) => c.remove()); if (agents.length === 0) { if (empty) empty.style.display = 'flex'; return; } if (empty) empty.style.display = 'none'; const fragment = document.createDocumentFragment(); agents.forEach((agent) => { const wrapper = document.createElement('div'); wrapper.innerHTML = AgentsUI.renderCard(agent); fragment.appendChild(wrapper.firstElementChild); }); grid.appendChild(fragment); if (window.lucide) lucide.createIcons({ nodes: [grid] }); }, filter(searchText, statusFilter) { const search = (searchText || '').toLowerCase(); const status = statusFilter || ''; const filtered = AgentsUI.agents.filter((a) => { const name = (a.agent_name || '').toLowerCase(); const desc = (a.description || '').toLowerCase(); const tags = (a.tags || []).join(' ').toLowerCase(); const matchesSearch = !search || name.includes(search) || desc.includes(search) || tags.includes(search); const matchesStatus = !status || a.status === status; return matchesSearch && matchesStatus; }); AgentsUI.render(filtered); }, renderCard(agent) { const name = agent.agent_name || agent.name || 'Sem nome'; const color = AgentsUI.getAvatarColor(name); const initials = AgentsUI.getInitials(name); const statusLabel = agent.status === 'active' ? 'Ativo' : 'Inativo'; const statusClass = agent.status === 'active' ? 'badge-active' : 'badge-inactive'; const model = (agent.config && agent.config.model) || agent.model || 'claude-sonnet-4-6'; const updatedAt = AgentsUI.formatDate(agent.updated_at || agent.updatedAt || agent.created_at || agent.createdAt); const tags = Array.isArray(agent.tags) && agent.tags.length > 0 ? `
` : ''; return `${Utils.escapeHtml(agent.description)}
` : ''} ${tags}