Commit graph

5 commits

Author SHA1 Message Date
Janpeter Visser
c64c0278f2 feat(worker): configureerbare Claude --output-format, default stream-json (IDEA-064)
run-one-job.ts spawnde Claude met een hardcoded --output-format text,
dus de run-log bevatte alleen Claude's eind-samenvatting — geen zicht op
het werk tijdens een job (~6-10 min stilte, dan ineens de samenvatting).

- --output-format komt nu uit AGENT_CLAUDE_OUTPUT_FORMAT (default
  'stream-json'). stream-json streamt elke tool-call / elk bericht live
  naar de run-log; --verbose wordt automatisch toegevoegd want
  print-mode vereist dat bij stream-json.
- Zet AGENT_CLAUDE_OUTPUT_FORMAT=text terug voor de oude terse output.
- .env.example: nieuwe var gedocumenteerd.

stdoutBuf wordt alleen voor de TOKEN_EXPIRED-regexscan gebruikt; de
auth-error-strings staan ook binnen de JSON-events, dus detectie werkt
ongewijzigd. Niets parseert de output als job-resultaat.

Gevolg: de run-log (en de jobs/<job_id>.log symlink uit IDEA-063) wordt
JSONL i.p.v. plain text — gebruik jq of een viewer. Log-grootte groeit;
rotate-logs.sh dekt dat al af.

node --check + type-strip schoon.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 19:29:14 +02:00
Janpeter Visser
544399b82b fix: cross-host compat — idempotent groupadd, quoted env value, ignore tarballs
Drie kleine fixes zodat de container ook op niet-NAS hosts (Mac M2,
Windows i7) zonder gedoe gebouwd kan worden.

- Dockerfile: vervang `groupadd -g ${AGENT_GID}` door een idempotent
  blok dat een bestaande UID/GID hernoemt. Op macOS conflicteert GID 20
  (staff) met dialout in Ubuntu base — `groupadd: GID '20' already exists`.
- .env.example: quote `GIT_AUTHOR_NAME` waarde. QNAP Container Station's
  env-parser is strict en weigert `KEY=value with space` zonder quotes.
- .gitignore: voeg `*.tar`/`*.tar.gz` toe — de output van `docker save`
  die voor NAS-import naar de share wordt gekopieerd hoort niet in git.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 20:28:16 +02:00
6408706800 fix(bootstrap): require GitHub-linked GIT_AUTHOR_EMAIL — Vercel deploy block
Vercel rejected the smoke-test deploy with "The deployment was blocked
because the commit author email (agent@scrum4me.local) is not valid.
Ensure your git email matches your GitHub account."

The default `agent@scrum4me.local` in repo-bootstrap.sh was a phony
local domain not tied to any GitHub account. Vercel's deploy-protection
checks the latest commit's author email and blocks unknown ones.

Fix: error out with a helpful message if GIT_AUTHOR_EMAIL is unset, and
document the GitHub noreply form (`<user-id>+<username>@users.noreply.github.com`)
in `.env.example` as the recommended choice.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 20:14:28 +02:00
c090e6c349 feat(bootstrap): GH_TOKEN-based clone of Scrum4Me + scrum4me-mcp
Fixes the 'no GitHub credentials' deadlock observed in the first
NAS-Docker batch run (2 May 2026): scrum4me-mcp's `wait_for_job`
expects a local clone at `~/Projects/<repo-name>` (convention-fallback
in resolveRepoRoot) but the container had no credentials and no clone.
Agent asked the user how to proceed; turn closed without claim.

Changes:
- `.env.example`: GH_TOKEN (fine-grained PAT, repo+PR scope) and
  GH_PRECLONE_REPOS (comma-separated owner/name list, default covers
  Scrum4Me + scrum4me-mcp).
- `bin/repo-bootstrap.sh` (new): runs as agent-user; configures git
  credential-helper with HTTPS oauth2 token, then clones-or-fetches
  each entry in GH_PRECLONE_REPOS into ~/Projects/<name>. Idempotent.
- `bin/entrypoint.sh`: hooks repo-bootstrap before run-agent.sh.
- `Dockerfile`:
  - installs `gh` CLI (used for auto_pr `gh pr create`; reads GH_TOKEN
    from env directly).
  - pre-creates `~agent/Projects` and `~agent/.scrum4me-agent-worktrees`
    so directory-ownership is right from the first boot.
- `README.md`: 'Repo bootstrap (clone-on-start)' section + GH_TOKEN
  step in the deploy checklist; corrects the obsolete 'no push
  credentials' note (agent now pushes feature-branches, gh creates PRs).

Same token covers clone, push and PR-creation — one secret to rotate.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 19:48:57 +02:00
9d8a7fe237 initial: NAS agent runner setup 2026-05-02 15:43:59 +02:00