Commit Graph

172 Commits

Author SHA1 Message Date
Jonas Pacheco a6ac6e9dd9 docs: atualiza specs BI para refletir consolidação MetaSet
Atualiza documentação para refletir a migração Metabase → Apache Superset:

- docs/KERNEL_SPEC.md:
  - Adiciona capability 'embedding' ao MetaSet
  - Atualiza histórico de mudanças (v3.4)

- PLANO_BI_SUPERSET.md:
  - Reescrito como documentação de arquitetura consolidada
  - Adiciona estrutura de arquivos atualizada
  - Documenta API endpoints do novo cliente
  - Inclui exemplos de uso do cliente TypeScript

- MAPA_BI_ARCADIA.md:
  - Substitui todas referências Metabase → MetaSet
  - Atualiza portas: 8088 → 8100
  - Atualiza rotas: /metabase/* → /bi/metaset/*
  - Adiciona server/bi/metaset-client/ aos arquivos principais
2026-04-08 13:33:21 -03:00
Jonas Pacheco a7ecf0defb consolidate: MetaSet BI - migração Metabase → Apache Superset
- Cria novo cliente TypeScript em /server/bi/metaset-client/
  - index.ts: Cliente completo para API Superset v1
  - routes.ts: Rotas Express /api/bi/metaset/*

- Move código legado Metabase para /server/metaset/backup/
  - client.ts → backup/client.ts
  - routes.ts → backup/routes.ts

- Atualiza imports em:
  - server/autonomous/tools/metaset.ts
  - server/autonomous/tools/index.ts
  - server/manus/service.ts
  - server/bi/routes.ts

- Adiciona documentação consolidada em /server/metaset/README.md

Funcionalidades do novo cliente:
- Health check, Databases, Tables
- SQL queries com validação de segurança
- Charts (CRUD), Dashboards (CRUD)
- Guest tokens para embedding
- Auto-suggestions baseado em schema
2026-04-08 13:21:34 -03:00
Jonas Pacheco 95ee51bf68 docs: atualiza MAPA_SISTEMA_ARCADIA.md com Kernel (porta 5001)
- 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
2026-04-08 12:42:20 -03:00
Jonas Pacheco 9ec61dd932 docs: atualiza KERNEL_SPEC.md com Registry Global
- 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
2026-04-08 12:34:44 -03:00
Jonas Pacheco bb7cff6c80 fix: Casa de Máquinas usa Registry global em vez de HTTP
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.
2026-04-08 12:27:21 -03:00
Jonas Pacheco da371af0e0 fix: tenta múltiplos hostnames para conectar ao Kernel
Tenta 127.0.0.1 e localhost para conectar ao Registry do Kernel.
Adiciona logs detalhados para debug.
2026-04-08 12:17:35 -03:00
Jonas Pacheco 524a049d03 fix: usa localhost em vez de 127.0.0.1 para conectar ao Kernel
No container Docker, 127.0.0.1 pode não resolver corretamente
para o próprio container. localhost é mais confiável.
2026-04-08 12:11:11 -03:00
Jonas Pacheco 71e2b654bd fix: resolve race condition entre Kernel e Casa de Máquinas
- 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
2026-04-08 12:03:55 -03:00
Jonas Pacheco ea58a45ea1 fix(engine-room): usa http.get em vez de fetch
O fetch do Node.js estava falhando com loopback.
Trocado para http.get nativo que é mais confiável.

Refs: engine-room, registry, fix
2026-04-08 11:53:08 -03:00
Jonas Pacheco b0a8e73f67 fix(engine-room): usa 127.0.0.1 e adiciona logs
- Troca localhost por 127.0.0.1 (mais confiável)
- Adiciona logs para debugar chamadas ao Registry

Refs: engine-room, registry, debug
2026-04-08 11:47:21 -03:00
Jonas Pacheco fcfce87df8 fix(coolify): remove filtro de labels no CoolifyDiscovery
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
2026-04-08 11:40:26 -03:00
Jonas Pacheco a5adf7e096 debug: adiciona logs detalhados no CoolifyDiscovery
Adiciona logs para debugar por que a API do Coolify
está retornando 0 serviços.

Refs: debug, coolify, discovery
2026-04-08 11:34:34 -03:00
Jonas Pacheco 6182a9c490 chore: limpa arquivos temporários e cache
Remove:
- Cache do aider (.aider.tags.cache.v4)
- Arquivos de planejamento antigos (.planning/)
- Arquivos duplicados (MAPA_TENANTS_ARCADIA copy, SESSAO_2026-03-18)
- Metadata de agentes (.agents/)

Refs: cleanup, maintenance
2026-04-08 11:26:56 -03:00
Jonas Pacheco 14e440cc1f fix(docker): expoe porta 5001 para o Kernel
Adiciona porta 5001 no serviço app para permitir
acesso ao Kernel Arcadia (Service Registry).

Refs: kernel, registry, docker
2026-04-08 11:24:32 -03:00
Jonas Pacheco 202101f0e0 refactor(engine-room): simplifica Casa de Máquinas - apenas Registry
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
2026-04-08 11:18:03 -03:00
Jonas Pacheco 16bb5b9bfb docs: adiciona especificação técnica do Kernel
Cria docs/KERNEL_SPEC.md com:
- Visão geral e arquitetura
- Componentes (Core, Registry, Discovery)
- Documentação dos 4 providers de discovery
- API endpoints (Core, Registry, Casa de Máquinas)
- Fluxo de integração Casa de Máquinas
- Configuração (env vars, Docker labels)
- Roadmap (Semanas 4-7)
- Histórico de mudanças

Refs: documentation, kernel, spec
2026-04-08 11:06:22 -03:00
Jonas Pacheco b3166173df feat(kernel): implementa XOS Discovery Provider
- 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
2026-04-08 11:00:14 -03:00
Jonas Pacheco aa83dbdbce feat(engine-room): unifica Casa de Máquinas com Registry do Kernel
- 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
2026-04-08 10:51:19 -03:00
Jonas Pacheco 015273ffdd fix(engine-room): usa valores do preset ENGINES em vez de hardcoded
- 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
2026-04-08 10:01:29 -03:00
Jonas Pacheco 13abdbba3b fix(engine-room): corrige preset do MetaSet para apontar para serviço novo
- 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
2026-04-08 09:51:01 -03:00
Jonas Pacheco 5c884d9066 feat(kernel): implementa Coolify Discovery com chamadas reais à API
- 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
2026-04-08 09:41:09 -03:00
Jonas Pacheco 465775ec99 feat(bi): MetaSet (Apache Superset fork) com branding ArcadiaSuite
- Rebuild completo do frontend React com branding MetaSet
- Substituição de textos 'Superset' -> 'MetaSet' em todo codebase
- Traduções atualizadas (en, pt_BR)
- Security Manager com JWT validation e RLS preparado
- Dockerfile multi-stage com assets locais
- Deploy em https://bi.onboardbi.com.br
- Banco de dados PostgreSQL migrado e inicializado
- Container Docker com rede coolify + extra_hosts IPv4
- BI-API Gateway em server/bi/index.ts (proxy manual Node.js)
- FDB-Bridge skeleton em server/bi/fdb-bridge/
- Kernel adapter atualizado para Registry integration
- .gitignore atualizado para excluir superset-src (3.7GB)
2026-04-07 16:04:09 -03:00
Jonas Pacheco 1f23256032 feat(kernel): expõe rotas do Registry no Dashboard
- Adiciona ServiceRegistry no DashboardServer
- Cria rotas /api/registry/services, /stats, /:id
- Permite acessar serviços descobertos via API
- Integração completa Registry -> Dashboard
2026-04-06 17:12:55 -03:00
Jonas Pacheco 1cf73f55ba feat(kernel): adiciona CoolifyDiscovery para descoberta automática
- 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
2026-04-06 16:43:55 -03:00
Jonas Pacheco c3c91ed966 feat(kernel): adiciona StaticDiscovery via DNS interno
- 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
2026-04-06 16:02:26 -03:00
Jonas Pacheco 5a99236aff feat(kernel): adiciona proxy /kernel para Dashboard
- Instala http-proxy-middleware
- Configura proxy /kernel -> localhost:5001
- Permite acessar Kernel pelo mesmo domínio da aplicação
- WebSocket support habilitado
2026-04-06 15:30:32 -03:00
Jonas Pacheco 08d6820e76 fix(kernel): ativa KERNEL_ENABLED e KERNEL_AUTOSTART no docker-compose
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
2026-04-06 11:15:06 -03:00
Jonas Pacheco 7651167d72 feat(kernel): implementa Service Discovery e Registry (Semana 4)
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
2026-04-06 11:02:49 -03:00
Jonas Pacheco 2916fb04ae fix: endpoint de health correto do Superset (/health não /api/health) 2026-04-03 18:15:45 -03:00
Jonas Pacheco d971d07327 debug: log URL em runtime para diagnosticar timeout 2026-04-03 18:07:33 -03:00
Jonas Pacheco 06fe8af1fb fix(engine-room): URLs corretas para health check de containers externos
- 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
2026-04-03 17:40:01 -03:00
Jonas Pacheco 80f9352a7e fix(kernel-adapter): variáveis de ambiente em runtime não build time
- 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
2026-04-03 17:38:45 -03:00
Jonas Pacheco 162bc4f943 force: rebuild docker cache [1775243617] 2026-04-03 16:13:37 -03:00
Jonas Pacheco 1fdeb72492 fix(engine-room): suporte a modo Docker para consultar serviços externos
- Modifica kernel-adapter.ts para detectar DOCKER_MODE
- Em modo Docker, consulta serviços via HTTP health check direto
- Em modo normal, continua usando Kernel local (porta 5001)
- Resolve problema de apenas 2 motores aparecendo em producao
2026-04-03 12:19:58 -03:00
Jonas Pacheco 5ba2bd963d fix(build): compatibilidade CommonJS para Kernel
- Adiciona fallback para import.meta.url em builds do Docker
- Protege entry point do Kernel para não crashar em CommonJS
- DashboardServer.ts agora funciona em ESM e CommonJS
- index.ts com try-catch em torno de import.meta.url

Isso corrige o erro: ERR_INVALID_ARG_TYPE no build do Coolify

Refs: Deploy produção com Kernel
2026-04-02 18:00:10 -03:00
Jonas Pacheco 75953a8542 fix(deploy): remove miroflow submodule (broken ref)
- Remove server/modules/miroflow do .gitmodules
- Permite deploy no Coolify sem erro de submodule
- MiroFlow pode ser re-adicionado depois com ref correta

Refs: Deploy com Kernel
2026-04-02 17:55:09 -03:00
Jonas Pacheco 2e76496ff4 feat(kernel): integração Engine Room com Arcadia Kernel
MIGRAÇÃO COMPLETA: Sistema antigo → Kernel Nativo (porta 5001)

📁 Arquivos alterados:
- server/engine-room/kernel-adapter.ts (NOVO)
- server/engine-room/routes.ts
- server/kernel/config/services.json

🔧 O que mudou no Kernel (services.json):
+ Adicionado: python-fisco (porta 8002)
+ Corrigido: node-communication (8006, era 9001)
+ Adicionado: node-core-api (9002)
+ Adicionado: node-worker (9003)
- Removido: java-metaset (gerenciado externamente)

Total: 6 → 7 serviços gerenciados pelo Kernel

🔄 Engine Room - Novo comportamento:
- Todas as rotas /api/engine-room/* agora usam Kernel Adapter
- Sistema antigo (managedServices) mantido em comentário para fallback
- Verificação automática se Kernel está disponível
- Retorna erro 503 se Kernel não responde na porta 5001

📊 Mapeamento de serviços:
Engine Room          → Kernel ID
────────────────────────────────────────
contabil             → python-contabil
bi-engine            → python-bi
automation-engine    → python-automation
fisco                → python-fisco
communication        → node-communication

🚫 Serviços externos (não gerenciados pelo Kernel):
- plus (PHP/Laravel, porta 8080)
- metaset (Java, porta 8088)

 Benefícios:
- Auto-restart configurável por serviço
- Health checks automáticos
- Logs centralizados com timestamps
- WebSocket para atualizações em tempo real
- Dashboard na porta 5001

⚠️ Pré-requisito:
KERNEL_ENABLED=true npm run dev

Refs: Semana 4 - Integração Kernel com Engine Room
Breaking Change: Engine Room requer Kernel rodando
2026-04-02 16:47:28 -03:00
Jonas Pacheco 7ce8735c04 feat(kernel): adiciona dashboard HTML visual
- Adiciona interface web dark theme com cards de estatísticas
- Lista de serviços com status, health e ações (start/stop/restart)
- Console de logs em tempo real com filtro por serviço
- WebSocket para atualizações em tempo real
- Auto-refresh a cada 5 segundos

Refs: Dashboard Arcadia Kernel
2026-04-02 14:46:36 -03:00
Jonas Pacheco 849934dae8 feat(kernel): implementação completa do Kernel Nativo - Semana 3
Kernel Arcadia - Sistema nativo de gerenciamento de serviços:

Core:
- ProcessManager: spawn, monitor, restart automático de serviços
- HealthMonitor: HTTP health checks com circuit breaker
- LogAggregator: coleta e streaming de logs

API & Dashboard:
- API REST /api/kernel/* para controle dos serviços
- Dashboard Web na porta 5001
- WebSocket /ws/kernel para updates em tempo real

Serviços configurados (6):
- Python: Contabil (8003), BI Engine (8004), Automation (8005)
- Node.js: Communication (9001), Core API (9002), Worker (9003)

Integração:
- server/index.ts integrado com flag KERNEL_ENABLED
- Build passando, pronto para testes

Uso:
  KERNEL_ENABLED=true npm run dev
  Acesse http://localhost:5001 para o dashboard
2026-04-02 10:40:46 -03:00
Jonas Pacheco 201580a47a feat(rls): migrações Row Level Security - Semana 2
- 001_enable_rls.sql: habilita RLS em 31 tabelas tenant-isoladas
- 002_create_policies.sql: 124 políticas CRUD por tenant
- 003_tenant_context.sql: funções, triggers e views de contexto
- scripts/apply-rls-migrations.ts: automação de aplicação
- package.json: script npm run db:apply-rls

Tabelas protegidas: workspace, crm, process compass, low-code, multi-tenancy core
2026-04-02 09:58:56 -03:00
Jonas Pacheco a2aff30b8c security: correcoes semana 1 - session secret, CORS, filtro tenant, protecao /api/tenants
- Session secret com randomBytes(32), obrigatorio em producao
- CORS whitelist configurado (origens permitidas)
- getUserByUsername com validacao opcional de tenantId
- /api/tenants restrito: admin ve todos, user ve so seu tenant
- Metodo getTenant(id) adicionado a interface IStorage
2026-04-01 17:34:23 -03:00
Jonas Pacheco 4fb3f87dc3 chore: atualização do servidor - 2026-04-01 15:34 2026-04-01 15:34:08 -03:00
Jonas Pacheco f0b39f7f1d Remover referências enganosas ao LLMFit — corrigir tiers de IA para Ollama (TIER 1) + externos (TIER 2) 2026-04-01 14:06:12 -03:00
Jonas Pacheco 9d83163dbb fix: use Ollama container directly for MiroFlow scientific agents
- Replace LiteLLM with direct Ollama API (ollama-ia1upsekrad96at5hq97e4qa)
- Use deepseek-r1:14b for all agents, fallback to llama3.2:3b
- OLLAMA_BASE_URL env var overrides default hostname

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 21:53:38 -03:00
Jonas Pacheco 59bfca8c70 feat: implement /analyze endpoint for MiroFlow scientific agents
- Add POST /analyze handler in engine-proxy.ts (Node host, direct Ollama access)
- Routes agent requests (statistician/fiscal_auditor/researcher) to deepseek-r1:14b
- Fallback to llama3.2:3b if primary model unavailable
- Fixes BiWorkspace "Científico" tab end-to-end flow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 16:55:07 -03:00
Jonas Pacheco 53b9fc5408 fix: simplify MiroFlow engine-proxy, remove broken KG registration
- Remove unused crypto import and broken createNode dependency
- Delete registerExecutionInKG function (was fully commented)
- Clean up excessive console.logs
- Streamline POST /api/miroflow/analyze route
- Routes should now register cleanly without initialization errors

This fixes the TypeError that was preventing route registration.
2026-03-31 16:03:58 -03:00
Jonas Pacheco 50e419db17 debug: comenta createNode para isolate erro 2026-03-31 15:59:00 -03:00
Jonas Pacheco 5c0f3f818e debug: adiciona logs no /api/miroflow/analyze 2026-03-31 15:55:34 -03:00
Jonas Pacheco 4778462c29 debug: desabilita autenticacao temporaria no /api/miroflow/analyze 2026-03-31 15:52:37 -03:00
Jonas Pacheco 35492de95f fix: remove SQL injection risk no create-dashboard (TODO: prepared statements) 2026-03-31 15:42:27 -03:00