Files
pulse-libs/MEMORY.md
T

55 lines
3.3 KiB
Markdown

# 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`/`df` diretamente
## ⚙️ 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 — usar `flat(2)`
- `process.env` direto quebra SSR — guardar com `typeof 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 hooks
- `fireEvent.change` no jsdom precisa writable `value` via `Object.defineProperty`
- `getByRole('textbox')` não funciona no jsdom puro — usar `container.querySelector`
- `navigator.clipboard` mock deve ser `vi.fn()` direto (não `Object.defineProperty`)
- `useClipboard` com `delay=0` reseta `copied=false` antes 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-library` e `vitest.jsdom.mocks` chegaram a count=3 → promovidas para AGENTS.md
- Clawhub search = múltiplas queries curtas, sempre
- Ignorar SUSPICIOUS skills por padrão
- `agent-browser` CLI não instalado como binário separado — usar `openclaw agent run` ou curl via automation
## 🔧 DevOps → Gitea (2026-05-20)
- Gitea rodando em `git.octal.tec.br` via Docker Swarm (stack `git`)
- Caddy proxy: `git.octal.tec.br``localhost:3000` (Gitea container)
- Usuário criado: **Roberto** (`betotn91@gmail.com`)
- Skill `gitea-api` criada em `skills/gitea-api/SKILL.md`
- Autenticação API: 5 métodos (Basic, Basic+OTP, Token header, token query, access_token query)
- Scopes: `read/write:<permission>` ou `all``write` implica `read`
- 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_counter
- `pulse-skills` — skills organizadas por domínio (devops/testing/frontend/backend/ai/infra)
- `pulse-docs` — guias, runbooks, specs do sistema Pulse
- `pulse-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.br` via Caddy