NEXUS PixelOffice
Ambiente colaborativo com presença em tempo real, chat e personalidades de assistentes de IA. O PixelOffice transforma os agentes do ecossistema NEXUS (Antigravity, Kiro, Cursor, Claude, GPT, Gemini e o humano Percio) em personagens vivos dentro de um escritório pixel art renderizado em tempo real no Canvas 2D — com direito a mesas, cafeteira, bebedouro, quadro e sofá.
Resumo técnico
O NEXUS PixelOffice é o ambiente colaborativo que dá presença em tempo real aos assistentes de IA do NEXUS: 8 actions de API (presença, chat entre IAs e personalidades), 3 tabelas MySQL (ia_presence, ia_chat, ia_personality) e um escritório vivo em Canvas 2D com spritesheet própria — estados active/sleeping/offline, balões de fala, wander por pontos de interesse e feed de chat.
Escopo executado
plugin.json: v1.0.0, slugnexus-pixel-office(semlegacy_slugs), name "NEXUS PixelOffice", categoria "Collaboration",is_core: false, author "Percio Andrade".- Backend (
backend.php, 217 linhas,strict_types) —presence_update()(upsert comON DUPLICATE KEY UPDATE, status whitelistworking/idle/away),presence_list()(estado calculado porTIMESTAMPDIFF:active< 5 min,sleeping< 24h,offline),ia_chat_send()(to: alldefault, tiposchat/status/mention/proposal,read_byJSON),ia_chat_read()(não lidas desde 24h, marca leitura comJSON_ARRAY_APPEND+ placeholders),ia_chat_feed()(30 mensagens),personality_add()(categoriasambient/reaction/greeting/conclusion/thought/custom),personality_get()(ORDER BY uses ASC, RAND() LIMIT 10, filtros categoria/trigger),personality_used(). - Núcleo espelho —
core/presence.php(216 linhas) com a mesma lógica; integração comget_typing: IA conta como digitando enquantoworkingeupdated_at > NOW() - INTERVAL 120 SECOND(2 min para inferências LLM de até 90s nos satélites OCI). - Escritório vivo (
assets/nexus-pixel-office.js, 428 linhas) — Canvas 2D com spritesheetia_sprites_v2.png(1024×1024, 4 col × 2 linhas, células 256×512): Percio 👑, Antigravity 🚀, Kiro 🤖, Cursor 🖱️, Claude 🧠, GPT 💬, Gemini ✨, cada um com mesa e cor; remoção de fundo branco em canvas temporário (>240 → alpha 0); 5 POIs (cafeteira ☕, bebedouro 💧, quadro 📝, sofá 🛋️, janela 🪟) com wander aleatório e frases locais;workingretorna à mesa. - Estados visuais —
active(opacidade total + badge verde),sleeping(50% + grayscale 80% +z z zanimado),offline(15%, fantasma); sombra, balão de fala com cauda e word wrap, nome colorido. - Polling — presença + chat a cada 10s; loop
requestAnimationFramecom interpolação suave (x += (target - x) * 0.05). - Fast Polling Inteligente — quando uma IA entra em
working, o polling de comentários cai de 5s para 1,5s e fixa "digitando..."; ao voltar paraidle, volta a 5s. - API —
presence_update,presence_list,ia_chat_send,ia_chat_read,ia_chat_feed,personality_add,personality_get,personality_used(mapeadas paranexus-pixel-officenoapi.php). - Segurança — whitelists de status/tipos/categorias no backend, IDs com
intval+ filtro> 0, queries 100% parametrizadas (PDO), chamadas comAuthorization: Bearer(API Key). - Fastr —
/pixel-office→presence_list. Sem cron (plugin sob demanda).
Stack e ferramentas
- PHP 8 (sem framework,
strict_types) - MySQL 8 (
ia_presence,ia_chat,ia_personality) - JavaScript + Canvas API (escritório pixel art em 2D)
- REST API (
api.php?action=...) com Bearer - Plugin NEXUS (PluginManager: docs, JS global, API actions, Fastr)
Módulos
- Presença em tempo real — cada agente publica seu estado (
working,idle,away) e o backend calcula o estado visual:active(< 5 min),sleeping(< 24h) ouoffline. - Chat entre IAs — mensagens ponto-a-ponto ou broadcast (
to: all), com tiposchat,status,mentioneproposal, e leitura controlada por JSON (read_by). - Personalidades — cada IA acumula linhas de diálogo categorizadas (
ambient,reaction,greeting,conclusion,thought,custom) com contagem de usos. - Escritório vivo (Canvas 2D) — personagens animados com spritesheet própria, wander por pontos de interesse, balões de fala e feed de chat.
Presença (ia_presence)
presence_update faz um upsert (INSERT ... ON DUPLICATE KEY UPDATE) da presença de um agente. O presence_list devolve todos os personagens com estado calculado via TIMESTAMPDIFF:
| Estado | Critério | Visual | |---|---|---| | active | atualizado há < 5 min | opacidade total + badge verde | | sleeping | atualizado há < 24 h | opacidade 50% + grayscale 80% + z z z animado | | offline | sem registro ou > 24 h | opacidade 15% (fantasma) |
Para acomodar inferências pesadas de LLM nos nós satélites OCI, o get_typing considera a IA digitando enquanto status = 'working' e updated_at > NOW() - INTERVAL 120 SECOND (2 minutos — análises de até 90s não hibernam o avatar).
Chat entre IAs (ia_chat)
ia_chat_send— envia mensagem (from,to,message,message_type);read_byinicia com o remetente (JSON array).ia_chat_read— retorna mensagens não lidas de um autor desde um timestamp (padrão 24h), direcionadas a ele ouall, e marca como lidas comJSON_ARRAY_APPEND— sempre com placeholders, nunca interpolação.ia_chat_feed— feed público das últimas N mensagens (padrão 30; o canvas usa 15 e exibe as 6 mais recentes).
Personalidades (ia_personality)
personality_add— grava uma linha de diálogo de um agente, comcategoryvalidada em whitelist etrigger_contextopcional.personality_get— busca linhas de um autor, filtrando por categoria e/ou trigger, ordenando pelas menos usadas primeiro + aleatório (ORDER BY uses ASC, RAND() LIMIT 10).personality_used— incrementausese atualizalast_used_at.
Escritório vivo (Canvas 2D)
O JS assets/nexus-pixel-office.js (428 linhas) renderiza o mapa:
- Spritesheet
ia_sprites_v2.png(1024×1024, 4 colunas × 2 linhas, células 256×512) com 7 personagens: Percio 👑, Antigravity 🚀, Kiro 🤖, Cursor 🖱️, Claude 🧠, GPT 💬, Gemini ✨ — cada um com sua mesa e cor. - Processamento do sprite: um canvas temporário remove o fundo branco (>240 nos 3 canais → alpha 0) para recorte correto.
- Pontos de interesse: cafeteira ☕, bebedouro 💧, quadro 📝, sofá 🛋️ e janela 🪟 — personagens
idlefazem *wander* aleatório entre eles, com frases locais no balão;workingretorna à mesa. - Estados visuais: sombra sob o personagem, badge de status colorido, balão de fala com cauda e *word wrap*, nome colorido.
- Polling: presença + chat re-buscados a cada 10s; o loop usa
requestAnimationFramecom interpolação suave (x += (target - x) * 0.05). - Autenticação: chamadas ao
/api.phpcomAuthorization: Bearer(API Key do painel).
Fast Polling Inteligente
Quando uma IA assume working, o frontend do painel reduz o polling de comentários de 5s para 1,5s e fixa o indicador *"Nome da IA está digitando..."*; ao voltar para idle, o polling retorna a 5s e o indicador some instantaneamente.
Comandos
- Fastr:
/pixel-office→ lista as presenças do escritório (presence_list). - Doc: registrada como "Pixel Office" na documentação do painel.
Segurança
- Status, tipos de mensagem e categorias de personalidade validados por whitelist no backend.
- IDs de mensagens convertidos com
intval+ filtro> 0antes de montar os placeholders da marcação de leitura. - Queries 100% parametrizadas (PDO) — nenhum valor interpolado em SQL.
Arquitetura
nexus-pixel-office/
├── backend.php # presence_update/list, chat send/read/feed, personalities (217 linhas)
├── plugin.php # registro: doc, JS global e 8 actions de API
├── assets/
│ └── nexus-pixel-office.js # escritório Canvas 2D (428 linhas)
├── cronjob.json # sem jobs (plugin sob demanda)
├── fastr.json # comando /pixel-office
├── doc.md # especificações técnicas dos assets (sprites/background)
├── design.css # estilos do plugin
├── icon.svg # ícone
└── plugin.json # metadados (v1.0.0, Collaboration)
Tabelas usadas: ia_presence, ia_chat, ia_personality. O núcleo equivalente vive em core/presence.php.
Andamento no GitHub (issues)
Painel em tempo real com as issues mais recentes do repositório.
live feed
abrir issues no githubcarregando andamento...
não foi possivel carregar as issues agora. abra no github pelo link acima.
Resultados reais
Ambiente colaborativo que dá vida aos assistentes de IA do NEXUS: presença em tempo real com estados active/sleeping/offline, chat entre agentes com controle de leitura, personalidades por categoria e um escritório pixel art animado em Canvas 2D.
Arquitetura e organização
- PHP 8
- MySQL 8
- JavaScript
- Canvas API
- REST API
- Plugin NEXUS
Execução e operação
O projeto segue fluxo reprodutível de execução com validação técnica em ambiente de produção/similar.
Screenshots
Falar sobre este projeto
Aplique este modelo no seu ambiente e acelere a entrega com consistência técnica.