4.2 KiB
4.2 KiB
MEMORY.md — Memória Curada
🧠 Agente OpenClaw — 2026-05-19 / 2026-05-20
- Workspace: Debian 12 container,
/root/.openclaw/workspace/ - Projeto ativo:
@pulse-libs/core(lib universal atomizada) — 136/136 testes ✅ - Stack: React/Vue, TS strict, Vitest, Pino/Zod, tsup v8, Docker multi-stage
- Clawhub path:
/var/lib/openclaw/tools/node/npm/bin/clawhub(não no PATH global) - Sem systemd no container — usar
ps/dfdiretamente
⚙️ Infra & Saúde
- Disco: 73% / 87G — limite alerta 80%
- systemctl não disponível (container sem systemd)
- gh/obs CLIs: não instalados (bloqueadas por disco)
🔑 Lições High-Signal
flat(Infinity)em arrays de classes quebra tsup DTS — usarflat(2)process.envdireto quebra SSR — guardar comtypeof window !== 'undefined'- Backticks aninhadas em TS templates quebram compilação — usar
.replace()por fora - Zod: usar
.transform(v => v.replace(...))em vez de.replace()direto vi.useFakeTimers()não usar globalmente — quebra useEffect de outros hooksfireEvent.changeno jsdom precisa writablevalueviaObject.definePropertygetByRole('textbox')não funciona no jsdom puro — usarcontainer.querySelectornavigator.clipboardmock deve servi.fn()direto (nãoObject.defineProperty)useClipboardcomdelay=0resetacopied=falseantes do expect — usar delay >= 5000 em testes- Pattern vitest.pure-dom-matchers: sem
@testing-library/jest-dom, usar.classList.contains()e.getAttribute()nativos
Decisões Relevantes
- WürthFlow.md criado como arquitetura viva do workspace
- tsup v8 ESM+CJS+DTS confirmado funcionando
react.testing-libraryevitest.jsdom.mockschegaram a count=3 → promovidas para AGENTS.md- Clawhub search = múltiplas queries curtas, sempre
- Ignorar SUSPICIOUS skills por padrão
agent-browserCLI não instalado como binário separado — usaropenclaw agent runou curl via automation
🔧 DevOps → Gitea (2026-05-20)
- Gitea rodando em
git.octal.tec.brvia Docker Swarm (stackgit) - Caddy proxy:
git.octal.tec.br→localhost:3000(Gitea container) - Usuário criado: Roberto (
betotn91@gmail.com) - Skill
gitea-apicriada emskills/gitea-api/SKILL.md - Autenticação API: 5 métodos (Basic, Basic+OTP, Token header, token query, access_token query)
- Scopes:
read/write:<permission>ouall—writeimplicaread - Endpoint token:
POST /api/v1/users/:name/tokens— requer Basic Auth + senha, retorna sha1 apenas uma vez - Endpoint listar tokens:
GET /api/v1/users/:name/tokens— sha1 sempre vazio na listagem
🧠 Sistema de Memória Gitea — Roberto/pulse-* (2026-05-20)
- 4 repositórios criados em
git.octal.tec.br/Roberto/:pulse-memory— memórias diárias + learnings + errors + pattern_counterpulse-skills— skills organizadas por domínio (devops/testing/frontend/backend/ai/infra)pulse-docs— guias, runbooks, specs do sistema Pulsepulse-projects— rastreador de projetos (pulse-libs/,infra/,past/)
- Token API:
d7378a3d0b7fd38050c4bce6accfd28086b6174c(pulse-agent-token, scopes=all) - Chave SSH:
ssh-ed25519 AAAAC3...em~/.ssh/id_ed25519_gitea - Commit cadência: sync de memória local → Gitea a cada fim de sessão
- Porto Gitea na infra:
localhost:3000→git.octal.tec.brvia Caddy
🌐 Docker Swarm — Stack Proxy & Caddy (2026-05-20)
- Dominio LIVE: https://test.octal.tec.br — HTTP 200 + HTTPS ativo (Let's Encrypt)
- Modelo funcionando: stack
proxycomcaddy+test-octal, redepublic, labels Caddy - Labels:
caddy=<domain>+caddy.reverse_proxy={{upstreams <porta>}}— Caddy auto-descobre e configura - Erros evitados: bind mount em Docker Swarm rejeita paths arbitrarios — usar imagem custom OU config
- Stack git e
modelo 100%, stack proxy replicou o modelo - Runbook completo:
pulse-docs/runbook/DOCKER-SWARM-RUNBOOK.md+RECOVERY-COMMANDS.md - Stack
proxy: nginx_image customtest-octal:latest+ Caddy com labels + Let's Encrypt automatico - Stack
proxydeploy:docker stack deploy -c /opt/proxy-stack-v4.yml proxy - Config Caddy:
/opt/caddy/Caddyfile— nao usado por auto-discovery (labels suficientes)