Adiciona aviso no topo dos arquivos trazidos da home:
- PLANO_IMPLEMENTACAO_AGENTIC.md
- PLANO_SKILL_FABRIC.md
- INDICE_PLANEJAMENTO.md
- AGENTE_MONITOR_SKILLS.md
Aviso indica que são documentos de Março/2026 e podem
estar desatualizados em relação ao sistema atual.
Traz documentações importantes que estavam em /home/ubuntu/:
- AGENTE_MONITOR_SKILLS.md - Especificação do agente de monitoramento
- INDICE_PLANEJAMENTO.md - Índice do planejamento estratégico
- PLANO_IMPLEMENTACAO_AGENTIC.md - Plano de implementação detalhado
- PLANO_METASET.md - Plano específico do MetaSet/Superset
Evita perda de documentação e mantém tudo centralizado em docs/.
Remove arquivos duplicados/confusos:
- PLANO_SOE_CENTRAL.md (duplicado)
- PLANO_SOE_CENTRAL-ignorar.md (duplicado)
- PLANO_SOE_CENTRAL_v2-concluido-testar.md (duplicado)
Renomeia:
- PLANO_SOE_CENTRAL_v2.md → PLANO_SOE.md (único arquivo oficial)
Evita confusão da IA no futuro - Single Source of Truth para plano SOE.
- Instala vite-plugin-compression2 para gerar .gz no build
- Configura Express para servir arquivos .gz quando disponível
- Reduz transferência em ~70% para assets principais
Agent.js: 33KB → 9.9KB (gzip)
index.js: 348KB → 108KB (gzip)
- Adiciona middleware compression para servir assets gzipados
- Configura cache de 1 ano para assets estáticos (hash no filename)
- Remove imports pesados do Agent.tsx (jspdf, docx, recharts)
- Cria ChartRenderer com lazy loading para gráficos
- Cria export-utils com dynamic imports para PDF/Word/CSV
Reduz o chunk Agent de 893KB para 690KB (gzip 220KB).
- Adiciona ErrorBoundary para capturar erros do React.lazy()
- LoadingFallback com timeout: aviso aos 3s, erro aos 10s
- Atualiza documentação (SPEC_NAVBAR.md, AGENTS.md)
O Suspense não captura falhas no lazy loading. Agora o ErrorBoundary
envolve o Suspense e exibe UI de fallback quando há erros.
- Documenta estrutura atual do .dockerignore
- Explica o que é excluído vs incluído
- Mostra métricas de melhoria (5GB → 93MB)
- Adiciona alerta sobre assets necessários para build
- Remove attached_assets/ do .dockerignore (arquivos necessários para build)
- Mantém exclusão de docs/ e *.md
- O arquivo arcadia_suite_icon.png é necessário pelo BrowserFrame.tsx
- Adiciona server/bi/metaset/superset-src/ ao .dockerignore (3.7GB)
- Adiciona server/bi/metaset/venv/ ao .dockerignore
- Remove arquivos desnecessários: docs, *.md, __pycache__, etc
- Reduz contexto de build de ~5GB para ~1GB
- Deve melhorar significativamente o tempo de deploy
- Remove import de ../../db/index que quebrava o build
- Simplifica getAutoSuggestions para usar heurísticas em vez de schema query
- Mantém compatibilidade com API existente
- Adiciona porta 5001 (Arcadia Kernel) ao mapa de portas
- Documenta que Kernel roda no mesmo container da app
- Explica acesso via memória (Registry Global)
- Adiciona seção explicativa sobre o Kernel
- Atualiza versão para 3.3 (Produção)
- Documenta nova arquitetura com Registry Global
- Adiciona diagrama de fluxo de dados atualizado
- Documenta vantagens do acesso direto vs HTTP
- Atualiza roadmap da Semana 5
O problema era que a Casa de Máquinas (porta 5000) não conseguia
conectar ao Kernel (porta 5001) via HTTP dentro do mesmo container.
Solução:
- Exporta o ServiceRegistry globalmente no server/index.ts
- Casa de Máquinas prioriza o Registry global (mesmo processo)
- Fallback para HTTP apenas se Registry global não disponível
Isso elimina a necessidade de loopback HTTP interno.
- Move início do Kernel ANTES do servidor HTTP (porta 5000)
- Adiciona retry com exponential backoff na consulta ao Registry
- Garante que Registry esteja pronto antes de receber requisições
Fixes: Casa de Máquinas mostrava 0/0 serviços porque API
chamava Registry antes do Kernel iniciar na porta 5001
O Coolify não expõe os labels do Docker na API.
Removido o filtro que exigia 'arcadia.discovery.enabled=true'.
Agora todos os serviços do Coolify são registrados.
Refs: coolify, discovery, fix
REMOVIDO:
- Presets ENGINES (hardcoded)
- Funções checkEngineHealth, getEngineHealthUrl
- Imports de kernel-adapter (não usados mais)
- Rotas de ação (start/stop/restart) - retornam 501
- Fallback para kernel-adapter
MANTIDO:
- /api/engine-room/status (apenas do Registry)
- /api/engine-room/engines (apenas do Registry)
- /api/engine-room/agents
- Rotas de agents (start/stop)
A Casa de Máquinas agora mostra APENAS serviços descobertos
pelo Registry (Docker/Coolify/XOS). Serviços não descobertos
não aparecem.
Refs: simplificacao, registry-only, casa-de-maquinas
- Cria XOSDiscovery.ts para descobrir serviços XOS
- Descobre filas de atendimento ativas
- Descobre integrações (WhatsApp, Email)
- Descobre automações ativas
- Integra ao Kernel como provider de discovery
O XOS Discovery consulta o banco de dados para encontrar
serviços configurados no XOS (CRM/Atendimento/Marketing).
Refs: xos, discovery, kernel-semana-5
- Adiciona fetchRegistryServices() para consultar /api/registry/services
- Adiciona mapRegistryToEngine() para converter formato do Registry
- Modifica /api/engine-room/status para usar Registry como fonte primária
- Evita duplicação: se Registry tem serviços, não adiciona presets duplicados
- MetaSet só é adicionado se não houver bi-engine (evita 2 Motores BI)
- Fallback para kernel-adapter se Registry não disponível
Isso unifica a visão da Casa de Máquinas com o Discovery automático.
Refs: kernel, registry, casa-de-maquinas, unificacao
- Corrige MetaSet: usa type, displayName, category, description do preset
- Corrige Plus: usa valores do preset em vez de hardcoded
- Remove 'java' hardcoded que sobrescrevia o preset correto
Isso garante que as correções feitas no preset ENGINES
(type: python, porta: 8100) sejam refletidas na API.
Refs: metaset, casa-de-maquinas, engine-room
- Atualiza porta: 8088 → 8100 (porta correta do container metaset)
- Atualiza tipo: java → python (Superset é Python)
- Atualiza host: SUPERSET_HOST → METASET_HOST
- Adiciona METASET_HOST e METASET_PORT no serviço app
- Atualiza descrição para refletir o MetaSet (fork Arcadia)
O preset estava apontando para o Apache Superset legado (porta 8088)
que só roda com perfil [bi]. Agora aponta corretamente para o
MetaSet novo (porta 8100) que é o serviço padrão.
Refs: metaset, casa-de-maquinas
- Implementa CoolifyDiscovery.discover() buscando serviços e aplicações
- Adiciona endpoints /api/v1/services e /api/v1/applications
- Suporte a filtro por label arcadia.discovery.enabled=true
- Parse de labels customizadas do Coolify
- Mapeamento de health status do Coolify para Registry
- Adiciona 'coolify' ao tipo DiscoverySource
Refs: kernel-semana-4, service-discovery
- Cria CoolifyDiscovery.ts para integrar com API Coolify
- Adiciona token COOLIFY_API_TOKEN no docker-compose
- Integra com StaticDiscovery e DockerDiscovery
- Permite descoberta automática de novos containers
- Cria StaticDiscovery.ts com lista dos 7 serviços Arcádia
- Descoberta via nome DNS interno (ex: arcadia-prod-contabil-1)
- Health check em cada serviço antes de registrar
- Funciona sem acesso ao Docker (mais seguro)
- Mantém DockerDiscovery como fallback
- Instala http-proxy-middleware
- Configura proxy /kernel -> localhost:5001
- Permite acessar Kernel pelo mesmo domínio da aplicação
- WebSocket support habilitado
Adiciona variáveis de ambiente necessárias para iniciar o Kernel Arcádia
com Service Discovery habilitado por padrão.
- KERNEL_ENABLED=true: Ativa o Kernel no server/index.ts
- KERNEL_AUTOSTART=true: Inicia serviços automaticamente
Adiciona módulos de Service Discovery ao Kernel Arcádia:
- ServiceRegistry: catálogo central de serviços com health check
- DockerDiscovery: descoberta automática via labels Docker
- API REST /api/registry/* para consulta de serviços
- Labels arcadia.* no docker-compose.yml para auto-registro
- Integração não-destrutiva (módulos novos, código antigo preservado)
Labels suportadas:
- arcadia.discovery.enabled=true
- arcadia.name, arcadia.type, arcadia.category
- arcadia.port, arcadia.capabilities
- arcadia.requires_ia, arcadia.ia_policies
Arquitetura: MODIFICAR (adicionar) ao invés de REFATORAR
- Adiciona getEngineHealthUrl() para resolver URLs dinamicamente
- MetaSet (Superset) usa SUPERSET_HOST ou 'superset' por padrão
- Plus usa PLUS_HOST ou 'localhost' por padrão
- Resolve problema de localhost:8088 falhar para Superset
- Transforma SERVICE_URLS (objeto estático) em getServiceUrl() (função)
- Garante que process.env.CONTABIL_PYTHON_URL seja lida em runtime
- Resolve problema de URL 'bakeada' no build retornar valor errado