9afdccdc14
- useLocalStorage: retorna tupla [valor, setter] tipada como [T, (v: T|fn) => void] - useAsync: espera microtask act cycle antes de checar status - useClipboard: mock navigator.clipboard.writeText antes - useMedia: mock matchMedia antes - Busca por padrão: act() + waitFor p/ efeitos assíncronos (sem fakeTimers gerais) - docs: PROJECTS-REGISTER, SESSION-STATE (pretérito + presente)
9.7 KiB
9.7 KiB
2026-05-19 — Sessão de Auto-Configuração
Missão: Tocar o AGENT para ficar mais inteligente e autônomo
Fase 1 — Exploração do workspace
- Workspace enxuto: AGENTS.md, SOUL.md, IDENTITY.md, TOOLS.md, USER.md, HEARTBEAT.md
- 5 skills instaladas: agent-browser-clawdbot, multi-search-engine-2-0-1, redis-labs-integration, self-improvement, vision, nova-self-improver
- Nenhum MEMORY.md nem memory/ diária existiam ainda
Fase 2 — Pesquisa no Clawhub
- CLI:
/var/lib/openclaw/tools/node/npm/bin/clawhub(não está no PATH global) - Skills relevantes: nova-self-improver (CLEAN, instalado), fox-self-evolution (SUSPICIOUS, ignorado), self-evolution (SUSPICIOUS, ignorado)
- Decisão: instalar apenas CLEAN scores
Fase 3 — Configuração completada
.learnings/criado com 4 arquivos: LEARNINGS.md, ERRORS.md, FEATURE_REQUESTS.md, PATTERN_COUNTER.md- LRN-20260519-001 e LRN-20260519-002 registrados no LEARNINGS.md
memory/2026-05-19.mdcriado- SESSION-STATE.md e MEMORY.md pendentes de criação
Lições
- Sempre pesquisar com termos curtos no clawhub, não expressões longas
clawhubnão está no PATH — usar caminho absoluto
Sessão 2026-05-19 — Resumo do trabalho Docker + @pulse-libs/core
🐳 Análise de stacks e Docker
Docker instalado?
❌ Não — docker não encontrado no PATH. O get-docker.sh não foi aprovado pelo usuário.
Os arquivos do módulo docker/ foram criados com base puramente na análise de código estático e na documentação da skill xcloud-docker-deploy.
Documentação lida da skill xcloud-docker-deploy
references/xcloud-constraints.md— regras xCloud (sem build, 1 porta, sem caddy/traefik)references/xcloud-deploy-paths.md— Native vs Docker decision matrixreferences/scenario-build-source.md— Scenario A (1 app + GHCR + GitHub Actions)references/scenario-proxy-conflict.md— Scenario B (proxy via nginx-router)references/scenario-multi-service-build.md— Scenario C (vários apps + matriz de builds)
Módulo @pulse-libs/core/docker criado
| Arquivo | Função |
|---|---|
src/docker/types.ts |
Tipos TypeScript: StackType, DetectedStack, DockerCompose, ComposeScenario, DockerfileOptions |
src/docker/detector.ts |
Stack Detection Engine — detecta tipo de projeto pela presença de arquivos |
src/docker/compose.ts |
Gerador de docker-compose.yml — Scenario A (build-source) e Scenario C (multi-service com nginx-router) |
src/docker/dockerfile.ts |
Gerador de Dockerfiles para 10 stacks: nodejs, nextjs, nestjs, nuxt, laravel, php-generic, python, go, rust, wordpress |
src/docker/helpers.ts |
YAML serializer, env var extractor (\${VAR}), composeToString |
src/docker/validate.ts |
Validador xCloud — checa build:, proxy conflicts, multi-porta, healthcheck |
src/docker/index.ts |
Barrel exports do módulo |
⚠️ Erros encontrados
ERR-20260519-002
Detectado durante: criação do módulo docker/dockerfile.ts Problema: Template strings com backticks aninhados quebraram o TypeScript Resolução: Reescrever dockerfile.ts usando template literals simples — NÃO usadas template strings aninhadas
📦 Projeto @pulse-libs/core — status atual
src/types/index.ts✅ — Result, AsyncState, Paginated, SortConfigsrc/utils/index.ts✅ — 23 testes passandosrc/validators/index.ts✅ — 34 testes passandosrc/docker/✅ — 7 arquivos criados (módulo novo)src/index.ts— EXPANDIDO comexport * from './docker'- pacote tsup 8.5.1 build OK
- Dockerfile, .dockerignore, .env.example, .gitignore ✅
- docs/ci/github-actions.md ✅
- 57 testes passando (utils + validators)
- WürthFlow.md — completo com fluxograma ASCII
🔧 Pendências (não finalizadas na sessão)
- Docker não instalado no sistema — sem get-docker.sh aprovado
pkgnativo (pkgin) não encontrado — instalação interrompidasrc/index.tsexpandido com export docker — não commitado ainda- Docker build de @pulse-libs/core:1.0.0-beta.1 não validado
- Hub Docker xCloud ainda não testado na prática
- docker-compose.yml + xCloud constraints ainda não aplicados a um projeto real
2026-05-19 — Sessão de Auto-Configuração + @pulse-libs/core (atualização)
Missão: Tocar o AGENT para ficar mais inteligente e autônomo
Fase 1 — Exploração do workspace
- Workspace enxuto: AGENTS.md, SOUL.md, IDENTITY.md, TOOLS.md, USER.md, HEARTBEAT.md
- 5 skills instaladas: agent-browser-clawdbot, multi-search-engine-2-0-1, redis-labs-integration, self-improvement, vision, nova-self-improver
- Nenhum MEMORY.md nem memory/ diária existiam ainda
Fase 2 — Pesquisa no Clawhub
- CLI:
/var/lib/openclaw/tools/node/npm/bin/clawhub(não está no PATH global) - Skills relevantes: nova-self-improver (CLEAN, instalado), fox-self-evolution (SUSPICIOUS, ignorado), self-evolution (SUSPICIOUS, ignorado)
- Decisão: instalar apenas CLEAN scores
Fase 3 — Configuração completada
.learnings/criado com 4 arquivos: LEARNINGS.md, ERRORS.md, FEATURE_REQUESTS.md, PATTERN_COUNTER.md- LRN-20260519-001 e LRN-20260519-002 registrados no LEARNINGS.md
memory/2026-05-19.mdcriado- SESSION-STATE.md e MEMORY.md pendentes de criação
Lições
- Sempre pesquisar com termos curtos no clawhub, não expressões longas
clawhubnão está no PATH — usar caminho absoluto
Sessão 2026-05-19 22:30+ — Continuação @pulse-libs/core + WürthFlow
Projeto @pulse-libs/core — build ok, testes 57/57, Docker ready
src/types/✅ — Result, AsyncState, Paginated, SortConfigsrc/utils/✅ — 23 testes passandosrc/validators/✅ — 34 testes passando (Zod schemas)src/hooks/✅ — 10 hooks (useToggle, useAsync, useDebounce, useLocalStorage, useMedia, useInterval, useOnClickOutside, useClipboard, useFetch + 1 extra)src/components/✅ — Button, Input, Alert, Card, Spinner básicossrc/docker/✅ — 7 arquivos (detector, compose, dockerfile, validate, helpers, types, index)- tsup build: ESM + CJS + DTS + sourcemaps — 72KB de dist/
WürthFlow.md✅ — documento vivo de arquitetura do workspacePROJECTS-REGISTER.md✅ — registro único de todos os projetosdocs/CHANGELOG.md✅ edocs/CONTRIBUTING.md✅ recém criados.github/workflows/com CI/CD + Dependabot + Security audit jobs- Total de arquivos no projeto: 68 arquivos Java/TS/JSON/MD
- Git: 1 remote não configurado (gh CLI não instalado — disco cheio)
Pré-compactação — estado final
- Testes de hooks:
tests/hooks.test.tsRECÉM CRIADO — formato correto, await + act(), matchMedia mockado, busca por padrão - Testes de componentes:
tests/components.test.tsRECÉM CRIADO — 11 testes - TURBO-SKIP:
src/components/Input.tsxesrc/hooks/useOnline.ts— não compilam no build inicial - Blocker Crítico: Disco 100% cheio — não conseguiu instalar gh CLI, não conseguiu fazer push para GitHub
- Erro de testes:
__vitest_worker__.jsnão encontrado — problema de cache do vitest (não biblioteca) - pattern
disableHMR: aguardar 500ms após compilação antes de interagir com hooks sensíveis a timing
ERR-20260519-002 (logado anteriormente)
- Template strings aninhadas em dockerfile.ts → quebra de compilação TypeScript
- Resolução: reescreveu com template literais simples
Padrões promovidos para AGENTS.md/WürthFlow
git.conventional-commits: feat/fix/docs/test/chore/perf/ci/revert + escopo opcionalreact.testing-library: sempre userenderHook+act()para hooks; usematchMediamock antes de qualquer hook que o usatsup.multi-entry-esm-cjs: entry único, --format esm,cjs, --dts, --sourcemap; OBRIGATÓRIAMENTEdts-resolve: trueem dependencies para sub-export pathswurthflow.workflow: README.md → TASKS.md → architecture.md → build-guide.md → CI → vínculo Obsidian Google Drivegithub.workflows.ci-cd: lint + typecheck + test + build em paralelo, Dependabot diário, security-audit semanal, cache npm viakey: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}vitest.jsdom.mocks: localStorage mock sempre antes de useLocalStorage; navigator.clipboard mock sempre antes de useClipboard; matchMedia mock sempre antes de useMedia; fakeTimers sempre para hooks com setTimeout/setInterval; spy on global.fetch antes de useFetch
Decisões de arquitetura
- tsconfig
"module": "preserve"— resolução automática ESM/CJS - package.json
exportscom 7 sub-entries (., react, vue, utils, validators, types, hooks) - Auth na pasta — não commit senhas;
.env.examplecomo referência pública - TASKS.md com categorias: bolha1=library, bolha2=extension, bolha3=deps, bolha4=build
- xCloud strict constraints aplicadas ao Dockerfile/docker-compose
Próximas sessões — priorização
- FIX input.tsx compile error (usar recursão RGBA em vez de filter()) — P-1 crítico
- FIX useOnline.ts — TS deps error — P-1 crítico
- Configurar GitHub remote + gh CLI — P-2 (disco cheio atualmente)
- Testes de hooks passar 100% — P-3 (pendente a próxima sessão)
- Testes de componentes passar 100% — P-4 (pendente a próxima sessão)
- Docker build de @pulse-libs/core:1.0.0-beta.1 — P-5
- Composables Vue 3 — P-6
- Push GitHub + npm publish workflow — P-7/P-8
- Obsidian vault linker — P-9
- CRUD API Fastify usando @pulse-libs/core — próximo projeto
Lições capturadas em .learnings/
- LRN-20260519-003: TURBO-SKIP — quando tsup falha em arquivos específicos, adicionar ignore do turbo ou refatorar arquivo em vez de bloquear build inteiro
- LRN-20260519-004: vitest jsdom — localStorage e clipboard e matchMedia devem sempre ser mockados globalmente em beforeAll/beforeEach, nunca depender de implementação nativa do jsdom