scrum4me-docker/.env.example
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

116 lines
4.8 KiB
Text

# ============================================================
# scrum4me-agent-runner — environment configuratie
# ============================================================
# Kopieer naar .env en vul in. Houd .env buiten git (zie .gitignore).
# Permissies: chmod 600 .env
# ----- Claude Code authenticatie ----------------------------
# Genereer op je werkstation met: `claude setup-token`
# Output is een sk-ant-oat01-... token; geldig 1 jaar; gebruikt
# je Pro/Max subscription quota in plaats van per-token billing.
#
# Alternatief: ANTHROPIC_API_KEY (sk-ant-api03-...) voor pay-per-use
# via console.anthropic.com. Niet beide tegelijk zetten.
CLAUDE_CODE_OAUTH_TOKEN=sk-ant-oat01-vervang-mij
# ANTHROPIC_API_KEY=
# ----- Scrum4Me API token -----------------------------------
# Bearer-token van de DEDICATED agent-user (niet je persoonlijke
# account). Aanmaken: log in als de agent-user → /settings/tokens
# → label "NAS-runner". Token wordt eenmalig getoond.
#
# Als deze ge-revoked wordt: rebuild + redeploy (zie README).
SCRUM4ME_TOKEN=vervang-mij
# ----- GitHub credentials -----------------------------------
# Personal Access Token (fine-grained) met:
# - Repository access op madhura68/Scrum4Me + madhura68/scrum4me-mcp
# - Permissions: Contents (read/write), Pull requests (read/write),
# Metadata (read)
#
# Gebruikt voor:
# 1. Pre-clone van de repos in /home/agent/Projects/<name>/ bij
# container-start (entrypoint.sh)
# 2. `git push` van agent feature-branches via HTTPS
# 3. `gh pr create` (auto_pr=true) — gh CLI leest GH_TOKEN uit env
#
# Genereer op github.com → Settings → Developer settings →
# Personal access tokens → Fine-grained tokens.
GH_TOKEN=ghp_vervang-mij
# Lijst (komma-gescheiden) van repos om vooraf te clonen naar
# ~agent/Projects/<name>. resolveRepoRoot in scrum4me-mcp valt
# automatisch terug op die conventie. Voeg meer toe als je nieuwe
# producten/repos toevoegt aan Scrum4Me.
GH_PRECLONE_REPOS=madhura68/Scrum4Me,madhura68/scrum4me-mcp
# ----- Git commit-author -------------------------------------
# Verplicht — Vercel weigert deploys waarvan de commit-author email
# niet aan een GitHub-account hangt ("commit author email is not
# valid"). Gebruik de noreply-vorm voor maximale privacy:
#
# github.com → Settings → Emails → "Keep my email private"
# formaat: <user-id>+<username>@users.noreply.github.com
#
# Voorbeeld voor madhura68:
# GIT_AUTHOR_EMAIL=12345678+madhura68@users.noreply.github.com
GIT_AUTHOR_NAME="Scrum4Me Agent"
GIT_AUTHOR_EMAIL=vervang-mij@users.noreply.github.com
# ----- Scrum4Me database ------------------------------------
# Beide URLs uit het Neon-dashboard. DATABASE_URL is pooled,
# DIRECT_URL is unpooled — scrum4me-mcp gebruikt DATABASE_URL
# voor reads/writes; DIRECT_URL is alleen nodig als je de mcp
# uitbreidt met LISTEN/NOTIFY (op dit moment niet).
DATABASE_URL=postgresql://user:pass@host/dbname?sslmode=require
DIRECT_URL=postgresql://user:pass@host/dbname?sslmode=require
# ----- Scrum4Me API host ------------------------------------
# Voor token-validatie via /api/health en /api/products
# voorafgaand aan het starten van de daemon-loop. Gebruik je
# productie-URL.
SCRUM4ME_BASE_URL=https://scrum4me.example.com
# ----- Scrum4Me MCP versie ----------------------------------
# Pin een specifieke commit-sha of tag van scrum4me-mcp.
# `main` werkt voor ontwikkeling; in productie altijd vastpinnen.
MCP_GIT_REF=main
# Idem voor Claude Code zelf. `latest` of een specifieke versie.
CLAUDE_CODE_VERSION=latest
# ----- NAS paths --------------------------------------------
# Basis-share waaronder cache/, logs/ en state/ vallen.
# Pas aan als je een andere share-naam gebruikt op QNAP.
NAS_BASE=/share/Agent
# UID/GID matchen met de share-eigenaar op QNAP (admin = 1000
# bij standaard QTS-installatie).
AGENT_UID=1000
AGENT_GID=1000
# ----- Health endpoint --------------------------------------
# Externe poort op de NAS waarop /health bereikbaar is.
# Wijzig als 8080 al in gebruik is door iets anders op QTS.
AGENT_HEALTH_PORT_HOST=8080
# ----- Daemon-loop tuning -----------------------------------
# Maximum opeenvolgende mislukte batches voordat de container
# zichzelf "unhealthy" markeert.
AGENT_MAX_FAILURES=5
# Backoff in seconden: start, factor, max
AGENT_BACKOFF_START=5
AGENT_BACKOFF_FACTOR=2
AGENT_BACKOFF_MAX=300
# Hoeveel uur logs bewaren voor we comprimeren (gzip).
AGENT_LOG_GZIP_AFTER_HOURS=24
# Hoeveel dagen ge-gzipte logs bewaren voor we ze verwijderen.
AGENT_LOG_DELETE_AFTER_DAYS=30
# Claude CLI --output-format. Default 'stream-json' streamt de volledige
# event-stream (tool-calls, berichten) live naar de run-log; 'text' geeft
# alleen Claude's eind-samenvatting (terser, maar geen live-meekijken).
# stream-json maakt de run-log JSONL — gebruik jq of een viewer.
AGENT_CLAUDE_OUTPUT_FORMAT=stream-json