Skip to content

feat(sidebar): memória e CPU de cada agente na lista Agentes - #23

Merged
gianlukamoraes merged 5 commits into
mainfrom
feat/recursos-por-agente
Oct 22, 2026
Merged

gianlukamoraes merged 5 commits into
mainfrom
feat/recursos-por-agente

Conversation

@gianlukamoraes

Copy link
Copy Markdown

GLPI devswha#280: "Gostaria que aparecesse ao nível do agente qual é o recurso que ele está consumindo."

Continuação do #22. A rota GET /api/system/resources já mede a árvore de processos de cada painel (o shell e tudo abaixo dele: o claude e os filhos); só faltava mostrar isso na linha do agente. Mudança só no cliente, sem contrato novo.

  • Cada linha da lista Agentes abre a segunda linha com a memória do agente (1,2 GB), em mono, na cor da própria linha.
  • Agente pesado (os mesmos limites do projeto: 50% da CPU do PC ou ¼ da memória): triângulo, CPU antes da memória e vermelho (⚠ 53% · 1,9 GB).
  • Dica: "Este agente: CPU 3% · memória 1,2 GB", sempre.
  • PC desconectado ou ponte antiga: nada muda na linha.
  • isHeavy passa a aceitar qualquer { cpu, memory }, um painel ou um projeto.
  • design-system: README e preview de MachineResources e RosterRow, bundle.css copiado.

Prints (demo, pt-BR): desktop e celular em https://vm-gianluka.tailce96ef.ts.net/shared/devda-recursos-agente/

Testes: bun run typecheck e bun run test:unit (2194 passaram, 0 falharam). Sem teste novo: a regra é o isHeavy que já tem teste, e o resto é desenho.

🤖 Generated with Claude Code

gianlukamoraes and others added 5 commits October 22, 2026 11:50
Cada linha da lista Agentes abre a segunda linha com a memória do painel
do agente (o shell e tudo abaixo dele, já medido pela rota de recursos do
#22). Passando dos limites do projeto pesado (50% da CPU do PC ou um
quarto da memória), ganha o triângulo, a CPU e o vermelho. A dica mostra
CPU e memória sempre. GLPI devswha#280.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e tela e CSS sem desfazer regra

- A soma dos processos do painel pode passar de 100%; o projeto já limitava.
- O número desenhado fica aria-hidden e a frase "Este agente: CPU … · memória …"
  vai como texto oculto, para o leitor de tela não ler "1,2 GB" solto.
- .resource-agent deixa de herdar a regra do .resource-heavy só para desfazê-la.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Escolha do Gianluka (opção b): "3% · 1,2 GB" em toda linha; o vermelho e o
triângulo continuam só para o agente pesado.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@gianlukamoraes
gianlukamoraes marked this pull request as ready for review October 22, 2026 15:38

@gianlukamoraes gianlukamoraes left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 APROVADO — memória e CPU de cada agente na lista Agentes

🧑 Resumo (para humanos)

  • 🟢 Cada agente passa a mostrar a CPU e a memória que usa. Fica vermelho, com o triângulo, nos mesmos limites do projeto pesado. Com o PC desconectado, a linha fica como era.
  • 🟢 Typecheck, testes unitários e build de produção passaram.
  • 🟡 Nada bloqueia. (o critério de merge está cumprido; este review não faz merge, modo reviewer)

O que fazer: nada. Está pronto para o merge.

🤖 Detalhe técnico (verificado limpo)

Gate (pr-gate.sh 23 @ e841102): VERDICT: GREEN. Passaram typecheck (tsc --noEmit) e bun run test:unit. O build de produção (vite build) rodou à parte em worktree no mesmo head: ✓ built.

Verificado limpo:

  • MachineSidebar.tsx: readingByPane é memoizado sobre resources, e a nota só vai para a linha com reading (painel sem shell achado devolve null). AgentSidebar.tsx:103 só pede paneNote com online, então o roster salvo de PC fora do ar não mostra número velho.
  • AgentResources (MachineResources.tsx:100): a CPU vem arredondada do servidor (server/resources.ts:280, Math.round) e é limitada a 100 na tela, igual ao projectLoads. isHeavy recebe o valor bruto, o que não muda o resultado (≥50 tanto faz). Com cpu === null, o número desenhado mostra só a memória e a frase diz "CPU —".
  • isHeavy agora aceita Pick<ProjectLoad,"cpu"|"memory">. PaneResources (shared/protocol.ts:219) atende, e o chamador de projeto continua igual.
  • Acessibilidade: o número desenhado fica aria-hidden e a frase vai em .visually-hidden (existe em src/styles.css:580). O nome acessível do botão passa a incluir "Este agente: CPU … · memória …", o que está certo.
  • CSS: .agent-context já tem nowrap + ellipsis, então a nota no começo corta o contexto sem quebrar a linha. bundle.css do design-system é cópia fiel da mudança em MachineResources.css.
  • i18n: a chave nova está nos quatro idiomas (pt/ja/ko/zh); en é a própria chave.

@gianlukamoraes
gianlukamoraes merged commit 494c20e into main Oct 22, 2026
5 of 6 checks passed
@gianlukamoraes
gianlukamoraes deleted the feat/recursos-por-agente branch October 22, 2026 16:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant