From f357fcd780345f1e9247419b7b958111c5ffcdb7 Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Thu, 30 Jul 2026 23:41:59 -0300 Subject: [PATCH] fix(agent-pool): tick falhava em ERR_MODULE_NOT_FOUND (dotenv) (#72) Os scripts do pool NAO sao dependency-free: agent-pool.mjs -> agent-github.mjs -> scripts/lib/cli.mjs -> dotenv. O workflow agora instala deps como os irmaos (pnpm/action-setup + cache + pnpm install --frozen-lockfile). Guard adicional: pull_request closed sem merge nao dispara o tick (ruido em todo PR de stage). Verificado localmente: o script carrega e para na leitura estrita de variables (fail-closed desenhado; em GHA o GITHUB_TOKEN tem actions:write). Co-authored-by: Cursor Agent Co-authored-by: Francisco Solla --- .github/workflows/agent-pool.yml | 11 ++++++++--- docs/plans/agent-pool-orchestrator.md | 6 ++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/.github/workflows/agent-pool.yml b/.github/workflows/agent-pool.yml index 84b9c8de..1a723256 100644 --- a/.github/workflows/agent-pool.yml +++ b/.github/workflows/agent-pool.yml @@ -51,13 +51,18 @@ jobs: tick: runs-on: ubuntu-latest timeout-minutes: 10 + # pull_request closed WITHOUT merge is not a replenish signal — skip. + if: github.event_name != 'pull_request' || github.event.pull_request.merged == true steps: - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: node-version: 24 - # The pool scripts are dependency-free .mjs (gh CLI + native fetch) — no - # pnpm install, ticks stay under a minute. + cache: pnpm + # The pool scripts import scripts/lib/cli.mjs (dotenv) via agent-github — + # they are NOT dependency-free, so install like every sibling workflow. + - run: pnpm install --frozen-lockfile - name: agent:pool workflow env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -65,7 +70,7 @@ jobs: ACTION: ${{ inputs.action }} MAX_SLOTS: ${{ inputs.maxSlots }} run: | - # schedule / pull_request closed → reconcile tick; dispatch → the chosen action. + # schedule / pull_request merged → reconcile tick; dispatch → the chosen action. if [ "$GITHUB_EVENT_NAME" = "workflow_dispatch" ]; then args=(--action "$ACTION" --actor "$GITHUB_ACTOR") if [ -n "$MAX_SLOTS" ]; then args+=(--max-slots "$MAX_SLOTS"); fi diff --git a/docs/plans/agent-pool-orchestrator.md b/docs/plans/agent-pool-orchestrator.md index 74ffd947..86ed3202 100644 --- a/docs/plans/agent-pool-orchestrator.md +++ b/docs/plans/agent-pool-orchestrator.md @@ -229,8 +229,10 @@ Parâmetros (só relevantes ao backoff de retry de tick): `spawnRetryBackoff = p ## 6. API de controle -`pnpm agent:pool -- < comando >` → `scripts/agent-pool.mjs` (Node 24, zero deps npm: `gh` CLI + -`fetch` nativo; roda no runner GHA sem `pnpm install`): +`pnpm agent:pool -- < comando >` → `scripts/agent-pool.mjs` (Node 24; `gh` CLI + `fetch` nativo, +mas com a dependência transitiva habitual de `scripts/lib/cli.mjs` → `dotenv` — o workflow instala +deps como os workflows irmãos; corrigido em 2026-07-31 após o ERR_MODULE_NOT_FOUND da primeira +ativação): | Comando | Faz | | ----------------------- | ------------------------------------------------------------------------------------------------------ |