- Novo item "Design Studio" abaixo de Automation Center (ícone PenTool, cor roxa)
- Renderiza DevCenter.tsx com abas Design/Assemble/Deploy/Galeria
- DESIGN_STUDIO.md documenta estado atual e pendências para próximo agente
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- CLAUDE.md: remover branch inexistente (claude/analyze-project-0mXjP),
documentar branch Servidor, remote origin, comando de deploy real
- DevelopmentModule: adicionar h-full no flex-1 para habilitar scroll
na view home (conteúdo estava cortado sem scrollbar)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Mantém Fase 4 Sprint 1+2 do local (OpenClaw backend + frontend)
- Incorpora do remoto: Fase 3 MiroFlow, Fase 4 melhorias, Fase 5 Automation Fabric
- Resolve conflito openclaw~origin_Servidor (mantido local)
- Histórias unidas com --allow-unrelated-histories -X ours
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Novo item "Automation Center" na sidebar do DevelopmentModule,
ao lado de Skills Emergentes (OpenClaw). Renderiza AutomationCenter
inline como os outros painéis.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Backend:
- server/automation-fabric/runtimes/: WorkflowEngine, RuleEngine, AgentExecutor,
ScheduleEngine, EventEngine — cada um delega para serviços existentes
- server/automation-fabric/service.ts: AutomationFabricService agrega Central + XOS
virtualmente (zero migração de dados)
- server/automation-fabric/routes.ts: GET /api/automation-fabric/list,
POST /:id/run, PATCH /:id/toggle
Frontend:
- AutomationCenter.tsx em /automations-center: lista unificada Central+XOS,
badge de fonte (Central=azul, XOS=roxo), filtros por fonte/status/busca,
toggle enable/disable e execução manual inline
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Tab "Sugestões" na view switcher da página /skills
- Renderiza OpenClawPanel com lista de skills emergentes pendentes
- Badge amarelo mostra contagem de sugestões pendentes (atualiza a cada 5min)
- Query /api/openclaw/suggestions já conectada ao PatternDetector backend
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- PatternDetector (cron horário): analisa skill_executions, detecta padrões
(≥3x, 30 dias, ≥80% confiança), grava em detected_patterns
- Geração de DRAFT skills via llama3.1:8b ao atingir threshold
- API routes: GET /api/openclaw/suggestions, POST accept/reject, GET /api/openclaw/patterns
- OpenClawPanel.tsx: painel de visualização com tabs Sugestões/Padrões
- Aba "Skills Emergentes" (ícone Sparkles) na sidebar do /development
- Migration SQL para detected_patterns + skill_suggestions
- fix: corrige import @/lib/db → ../../db/index em versioning.ts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- useAgentEmergence.ts: hook para Socket.IO + estado de sugestões
- SkillSuggestion.tsx: modal com preview de skill (padrão, nome, descrição, automação)
- OpenClawWidget.tsx: widget flutuante no canto inferior direito
- App.tsx: integração do OpenClawWidget no layout global
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Toggle for scientific mode with Brain icon
- Agent selector (Statistician, Fiscal Auditor, Researcher)
- Task textarea with dynamic placeholder per agent
- Analysis button with loading state (Loader2 animation)
- Result display with metadata (model, duration, execution_id)
- Error handling with readable messages
- Styled for dark theme matching BiWorkspace
Servidor:
- GET /api/skills/marketplace: lista skills namespace=system/active,
marca quais já foram importadas pelo tenant (campo imported)
- POST /api/skills/marketplace/:id/import: clona skill system→tenant
com extends appontando para a origem
UI (Skills.tsx):
- Toggle "Minhas Skills" / "Biblioteca" no header
- Grid de cards 2 colunas com nome, slug, descrição, tags clicáveis,
trigger type e versão
- Botão "Importar" → feedback imediato (badge "Importada" + highlight verde)
- Filtro por busca e tag na Biblioteca
- Estado vazio com instrução para admins publicarem skills system
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- App.tsx: adiciona ProtectedRoute path="/skills"
- Skills.tsx: completion provider para referências no body editor
- dispara ao digitar "/" em qualquer ponto do markdown
- sugere todos os prefixos: /skill/, /skill:system/, /var/, /data/,
/kg/, /file/, /tool/, /agent/
- ao digitar /skill/ lista skills existentes do tenant com slug/desc
- usa ref para evitar closure stale com skillsData
- cleanup do provider no unmount
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Dockerfile: instala p7zip no Alpine para extração de RAR via 7z
- migration/routes.ts: detecta .rar, .sql.gz e .sql; extrai RAR com 7z,
descomprime .gz com gunzip, analisa tabelas do dump SQL
- Migration.tsx: accept e hint atualizados para incluir RAR/SQL
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Adiciona AbortSignal.timeout(8s) em todas as chamadas fetch ao Superset
- Limpa cache de token automaticamente em caso de erro (clearTokenCache)
para que próxima requisição force novo login ao invés de usar token stale
- Reduz TTL do cache de 50 para 45 min como margem de segurança
- Força iframe do SupersetDashboard a 100% width/height via classe CSS
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- superset_config.py: adiciona FLASK_APP_MUTATOR que seta g.user a partir
do Bearer JWT quando o usuário está como anônimo (necessário porque o
papel Public com can_read on Dashboard faz protect() pular verificação JWT)
- superset_config.py: TALISMAN_ENABLED=False, X_FRAME_OPTIONS=ALLOWALL
para permitir embedding cross-origin via iframe
- routes.ts: adiciona session cookie nas chamadas de busca do dashboard
além de incluir X-CSRFToken + Cookie no guest token request
- SupersetDashboard.tsx: usa bi.onboardbi.com.br como supersetDomain,
tela de unavailable com UI adequada (sem iframe de fallback)
- BiWorkspace.tsx: link "Abrir em Nova Aba" aponta para bi.onboardbi.com.br
- docker-compose.prod.yml: labels HTTP→HTTPS redirect para Superset
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
O SDK do Superset exige o UUID do embedded config (não o slug) tanto no
embedDashboard quanto no guest token. Agora o backend resolve:
slug → dashboard ID → embedded UUID → guest token com UUID
E retorna { token, embeddedId } para o frontend usar no embedDashboard.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Create client/src/contexts/SoeMotorContext.tsx with SoeMotorProvider
- Create client/src/pages/SOE.tsx (re-export of Plus/ERP module)
- Fix ProtectedRoute component type to accept LazyExoticComponent
Resolves TS2307 for @/contexts/SoeMotorContext and @/pages/SOE,
and TS2322 for all lazy-loaded routes.
https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
3 novas páginas XOS + rotas + navegação central:
XosSupervisor (/xos/supervisor):
- KPI cards em tempo real: em atendimento, resolvidos hoje, tickets urgentes, agentes ativos
- Tab Filas: ocupação, aguardando, TMA, agentes por fila com Progress bar
- Tab Agentes: tabela com conversas ativas, resolvidos hoje, CSAT médio, TMA, filas
- Tab Ao Vivo: lista de conversas abertas com nome, canal, fila, agente, tempo de espera
- Auto-refresh a cada 30s, filtro por fila, indicador de horário de atualização
- Conversas > 30min destacadas em vermelho
XosReports (/xos/reports):
- Seletor de período (7d / 30d / 90d / 1 ano)
- Tab Visão Geral: KPI de conversas, tickets, receita ganha, novos contatos
+ cards de detalhe com TMA, canais, pipeline com taxa de conversão
- Tab CSAT: nota média, taxa de satisfação, distribuição de notas com barras visuais
- Tab SLA: compliance rate com badge colorido, violações, tickets por prioridade
- Tab Agentes: tabela com conversas, resolução, CSAT, TMA, tickets
XosProtocols (/xos/protocols):
- KPI: abertos, resolvidos, SLA violados
- Lista com número do protocolo (clicável para copiar), status badge, SLA restante
- Protocolos com SLA violado destacados em vermelho
- Dialog de detalhes: todos os campos, ações (Resolver, Registrar CSAT)
- Dialog de CSAT: stars interativas 1-5 + comentário
- Dialog de criação: assunto, ID do contato, SLA em minutos
- Busca e filtro por status
App.tsx:
- 3 novas rotas: /xos/supervisor, /xos/reports, /xos/protocols
XosCentral.tsx:
- 3 novos módulos no grid: Supervisor, Relatórios, Protocolos
- Grid expandido de 6 para 9 colunas
https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
Inclui:
- .env real de produção (repo privado, auditoria total)
- docker-compose.prod.yml atualizado (LiteLLM/LLMFit, Superset)
- docker/superset/superset_config.py
- client/src/pages/BiWorkspace.tsx
- server/superset/routes.ts
- .gitignore: remove .env da lista de ignorados
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Create client/src/contexts/SoeMotorContext.tsx with SoeMotorProvider
- Create client/src/pages/SOE.tsx (re-export of Plus/ERP module)
- Fix ProtectedRoute component type to accept LazyExoticComponent
Resolves TS2307 for @/contexts/SoeMotorContext and @/pages/SOE,
and TS2322 for all lazy-loaded routes.
https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
3 novas páginas XOS + rotas + navegação central:
XosSupervisor (/xos/supervisor):
- KPI cards em tempo real: em atendimento, resolvidos hoje, tickets urgentes, agentes ativos
- Tab Filas: ocupação, aguardando, TMA, agentes por fila com Progress bar
- Tab Agentes: tabela com conversas ativas, resolvidos hoje, CSAT médio, TMA, filas
- Tab Ao Vivo: lista de conversas abertas com nome, canal, fila, agente, tempo de espera
- Auto-refresh a cada 30s, filtro por fila, indicador de horário de atualização
- Conversas > 30min destacadas em vermelho
XosReports (/xos/reports):
- Seletor de período (7d / 30d / 90d / 1 ano)
- Tab Visão Geral: KPI de conversas, tickets, receita ganha, novos contatos
+ cards de detalhe com TMA, canais, pipeline com taxa de conversão
- Tab CSAT: nota média, taxa de satisfação, distribuição de notas com barras visuais
- Tab SLA: compliance rate com badge colorido, violações, tickets por prioridade
- Tab Agentes: tabela com conversas, resolução, CSAT, TMA, tickets
XosProtocols (/xos/protocols):
- KPI: abertos, resolvidos, SLA violados
- Lista com número do protocolo (clicável para copiar), status badge, SLA restante
- Protocolos com SLA violado destacados em vermelho
- Dialog de detalhes: todos os campos, ações (Resolver, Registrar CSAT)
- Dialog de CSAT: stars interativas 1-5 + comentário
- Dialog de criação: assunto, ID do contato, SLA em minutos
- Busca e filtro por status
App.tsx:
- 3 novas rotas: /xos/supervisor, /xos/reports, /xos/protocols
XosCentral.tsx:
- 3 novos módulos no grid: Supervisor, Relatórios, Protocolos
- Grid expandido de 6 para 9 colunas
https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
SEGURANÇA:
- Manus: ferramentas perigosas (shell, write_file, python_execute) agora
retornam requires_approval na primeira chamada e exigem confirmação via
ask_human antes de executar
MARKETPLACE → APPCENTER:
- Novo endpoint GET /api/marketplace/my-apps (autenticado):
retorna códigos de módulos ativos do tenant (core sempre incluídos)
- AppCenter consome o endpoint via useQuery
- Apps com subscriptionCode não contratados aparecem com:
- Overlay de cadeado no ícone
- Badge "Não contratado"
- Clique redireciona ao Marketplace em vez de abrir o app
CORREÇÃO DO AUDIT:
- Agent.tsx, CentralApis.tsx, ApiHub.tsx, ArcadiaNext.tsx verificados:
todos já têm implementação real (26k+ tokens) — classificação como
"placeholder" no audit estava incorreta
https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb