Commit Graph

153 Commits

Author SHA1 Message Date
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
Jonas Pacheco 6853077fa2 test: muda Statistician e Fiscal Auditor para Llama (teste rápido) 2026-03-31 15:25:39 -03:00
Jonas Pacheco fa00fbb73f fix(miroflow): aumenta timeout de 5 para 10 minutos (DeepSeek R1 é lento) 2026-03-31 15:24:00 -03:00
Jonas Pacheco 395d1e5ecb fix: corrige imports e query SQL no endpoint create-dashboard 2026-03-31 15:06:48 -03:00
Jonas Pacheco c665f6ec40 feat(miroflow): integração com Superset para criar dashboards automáticos
- Adiciona tabela miroflow_generated_dashboards para rastrear dashboards criados
- Endpoint POST /api/superset/miroflow/create-dashboard cria dashboard no Superset
- MiroFlowControl.tsx com botão 'Criar Dashboard' após análise
- Dashboard criado com dados da análise e SQL query
- Suporta todos os agentes (statistician, fiscal_auditor, researcher)
2026-03-31 15:03:17 -03:00
Jonas Pacheco 264029eafc fix(superset): corrige superset_config.py para usar SQLALCHEMY_DATABASE_URI e init.sh sem bare except 2026-03-31 14:24:44 -03:00
Jonas Pacheco c8d323941b fix(superset): corrige init.sh + adiciona aba Científico no BiWorkspace 2026-03-31 14:08:29 -03:00
Jonas Pacheco 25f6e2f72a fix(infra): add coolify network to db and redis services
Garante que db e redis entram na rede coolify ao serem recriados,
permitindo que novos deploys via Coolify resolvam os hostnames.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 11:20:42 -03:00
Jonas Pacheco c293ec2a61 fix(miroflow): add MIROFLOW_HOST/PORT env vars no serviço app
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 09:28:19 -03:00
Jonas Pacheco 9f6875367c feat(scientist): add tab Científico com MiroFlowControl
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 09:21:38 -03:00
Jonas Pacheco aa0ce768ed Remover duplicatas de serviços no docker-compose.prod.yml
- Remover versões antigas de plus-db, plus, superset, erpnext-db, erpnext
- Manter versões recentes com Traefik labels corretos
- Arquivo agora válido e sem conflitos YAML

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-30 15:27:35 -03:00
Jonas Pacheco 763c6bcdd5 Adicionar MiroFlow e Ollama ao docker-compose.prod.yml
- Remover profile [ai] do Ollama para rodar sempre em prod
- Remover profile [bi] do Superset para rodar sempre em prod
- Adicionar MiroFlow service com Dockerfile.miroflow
- Configurar Traefik labels para miroflow.onboardbi.com.br
- Adicionar healthcheck para MiroFlow
- MiroFlow depende de Ollama e acessa via http://ollama:11434

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-30 15:21:01 -03:00
Jonas Pacheco 10ffd3338a fix: importar ícone Brain para MiroFlow card
Erro: ReferenceError: Brain is not defined
Solução: Adicionar Brain aos imports de lucide-react

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-30 10:35:59 -03:00
Jonas Pacheco 23bc6fb95a chore: trigger Coolify rebuild
Força rebuild da aplicação em produção para aplicar mudança do MiroFlow.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-30 10:22:59 -03:00
Jonas Pacheco 48eff771f6 Integrar MiroFlow ao DevelopmentModule como card visual
- Adicionar MiroFlow ao array de tools com ícone Brain
- Importar componente MiroFlowControl
- Adicionar tipo 'miroflow' ao ActiveTool union
- Renderizar MiroFlowControl quando activeTool === 'miroflow'
- MiroFlow agora visível no DevCenter como card científico

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-30 10:06:05 -03:00
Jonas Pacheco 43730e145d feat: add RunExecutor agent for agent execution via Ollama
- New RunExecutor processes 'run-executor' subtasks
- Executes agent specs via Ollama (deepseek-r1:14b)
- Saves results as artifacts in Blackboard
- Integrated into Blackboard agents registry
- Updated /api/agent-defs/:id/run endpoint to use run-executor

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-30 09:23:02 -03:00
Jonas Pacheco 83b2c89a1f chore: add untracked files — planning, openclaw module, docs, assets and data files
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 09:09:38 -03:00
Jonas Pacheco 6168cd29c6 revert: remove MiroFlow from navbar 2026-03-27 17:39:11 -03:00
Jonas Pacheco 13a83840ce feat: add MiroFlow to navbar next to Insights 2026-03-27 17:33:32 -03:00
Jonas Pacheco 31914956ef fix(assemble): check task status immediately on mount to handle fast completions
When using Groq (very low latency), tasks complete before the 3s polling
interval fires. Now checkAll() runs immediately on effect mount.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 17:12:25 -03:00