# 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=0` → `setTimeout(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 ` | Remover mortos: `docker rm ` ## 📅 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