Files
pulse-libs/MEMORY.md
T

4.4 KiB

MEMORY.md — Memória Curada

Menos de 3.500 chars.

🧠 Agente OpenClaw — Instalação 2026-05-19 / Evolução 2026-05-20

  • Skills ativas: TS, E2E, Docker, SQL, security, browser, vision, nova-self-improver
  • Ambiente: container Debian 12, diretório /root/.openclaw/workspace/
  • Workshop: @pulse-libs/core (biblioteca universal atomizada)
  • Stack: React/Vue, TS strict, Vitest, Pino/Zod, Docker multi-stage
  • Auto-melhoria: sistema ativo via nova-self-improver v1.0.0

⚙️ Infra

  • systemd ausente no container ─ usar ps/df em vez de systemctl
  • Clawhub CLI: /var/lib/openclaw/tools/node/npm/bin/clawhub (não no PATH global)
  • Disco: 74% / 87G usado ─ alerta se passar de 80% (estava 100% na 1ª sessão, melhorou)
  • gh CLI / obs CLI: não instalados (bloqueado por disco)

📦 Skills Instaladas

Agrupadas por função:

  • Frontend: agent-browser, openclaw-agent-browser, typescript, vision (imagemagick)
  • Tests: e2e-testing-patterns, multi-search-engine-2-0-1
  • Backend: sql-toolkit, redis-labs-integration
  • DevOps/Infra: xcloud-docker-deploy, security-audit, openclaw-config, openclaw-power-ops
  • Docs/Diagrams: file, file-summary, d2-diagram-creator
  • Qualidade code: uncle-bob, nephew self-improvement labs

📝 Diretrizes Auto-Melhoria

  • Erro → ERRORS.md imediatamente
  • Pattern 3x no PATTERN_COUNTER → promover para AGENTS.md
  • A cada 10 sessões: comprimir USER.md

🔑 Lições Aprendidas (High-Signal)

  • flat(Infinity) em arrays de classes quebra tsup DTS ─ usar flat(2) no máximo
  • process.env no código quebra SSR ─ guardar com typeof window !== 'undefined'
  • Backticks aninhados em TS templates: quebram compilação ─ usar fn().replace() por fora
  • Zod schema: use .transform(v => v.replace(...)) em vez de .replace() direto
  • Vitest jsdom global vi.useFakeTimers() quebra setTimeout/clearInterval dentro dos useEffect dos próprios hooks ─ usar act() + waitFor() ao invés; fakeTimers só em testes isolados com beforeEach/afterEach locais
  • useClipboard com delay=0setTimeout(fn, 0) dispara no próximo microtick e reseta copied=false antes do expect ─ usar delay >= 5000 em testes
  • navigator.clipboard mock deve ser um vi.fn() direto (não Object.defineProperty na raiz) — assim mockResolvedValue/mockRejectedValue funcionam em cada teste

📁 Biblioteca libs/ (workspace)

10 módulos de padrões: TS, React, Vue, Linux, DB, Browser, SAST, CleanCode, Deploy, Docs libs/INDEX.md como índice central

🐳 Docker Containers — Snapshot 00:57 GMT-3

Stack rodando na máquina host (gestionado via Portainer + Caddy reverse proxy):

Up (healthy)

Projeto Serviço Imagem Portas
proxy caddy lucaslorentz/caddy-docker-proxy 80, 443
dock portainer + agent portainer-ce:2.19.4 8000, 9000, 9443
design penpot (full stack) penpotapp/* 8080, 1025, 1080, 6379, 5432
code file (8dcode) 8dcode:latest
database mongos (mongo:8.0) mongo:8.0 27017
database dbadmin (mongo-express) mongo-express:latest 8081
bot beebot, office, redis node:24 / redis:7-alpine 6379
pro leantime + mariadb leantime/mariadb:10.6 8080, 9000, 3306

💀 Dead (não reiniciam automaticamente)

  • design_penpot-backend.* — 3 instâncias Exited(255)
  • bot_office.* — 4 instâncias Exited(1)
  • database_mongos-master.* — 7 instâncias Dead
  • pro_leantime.* — 6 instâncias Dead
  • bot_beebot.*, bot_redis.*, code_file.*, git_gitea, dock_portainer.* — Dead

Observação: comando padrão para inspecionar: docker ps -a --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}" Logs: docker logs <container_name> | Remover mortos: docker rm <container_id>

📅 Decisões Relevantes

  • 2026-05-19: WürthFlow.md criado ─ arquitetura viva do workspace
  • 2026-05-19: tsup v8 ESM+CJS+DTS OK ─ 57 testes 100% pass
  • 2026-05-19: react.testing-library e vitest.jsdom.mocks chegaram a Count=3 → promovidos para AGENTS.md
  • 2026-05-20 00:18: 80/80 testes @pulse-libs/core (validators 24 + utils 33 + hooks 23) — suite 100% verde
  • Ignorar SUSPICIOUS skills por padrão
  • Clawhub search = múltiplas queries curtas
  • vi.useFakeTimers() NÃO usar globalmente — quebra useEffect de outros hooks