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>
This commit is contained in:
parent
794ad7faaa
commit
c64c0278f2
2 changed files with 15 additions and 1 deletions
|
|
@ -108,3 +108,9 @@ AGENT_BACKOFF_MAX=300
|
||||||
AGENT_LOG_GZIP_AFTER_HOURS=24
|
AGENT_LOG_GZIP_AFTER_HOURS=24
|
||||||
# Hoeveel dagen ge-gzipte logs bewaren voor we ze verwijderen.
|
# Hoeveel dagen ge-gzipte logs bewaren voor we ze verwijderen.
|
||||||
AGENT_LOG_DELETE_AFTER_DAYS=30
|
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
|
||||||
|
|
|
||||||
|
|
@ -292,6 +292,13 @@ async function main(): Promise<number> {
|
||||||
|
|
||||||
// 7. Build CLI args.
|
// 7. Build CLI args.
|
||||||
const promptText = getKindPromptText(ctx.kind).replace('$PAYLOAD_PATH', payloadPath)
|
const promptText = getKindPromptText(ctx.kind).replace('$PAYLOAD_PATH', payloadPath)
|
||||||
|
// --output-format is configureerbaar via env. Default 'stream-json' geeft
|
||||||
|
// de volledige event-stream (elke tool-call, elk bericht) live in de
|
||||||
|
// run-log, i.p.v. alleen Claude's eind-samenvatting. stream-json vereist
|
||||||
|
// --verbose in print-mode. Zet AGENT_CLAUDE_OUTPUT_FORMAT=text terug voor
|
||||||
|
// de oude terse output. TOKEN_EXPIRED-detectie werkt ongewijzigd: de
|
||||||
|
// auth-error-strings staan ook binnen de JSON-events.
|
||||||
|
const outputFormat = process.env.AGENT_CLAUDE_OUTPUT_FORMAT ?? 'stream-json'
|
||||||
const args: string[] = [
|
const args: string[] = [
|
||||||
'-p',
|
'-p',
|
||||||
promptText,
|
promptText,
|
||||||
|
|
@ -306,8 +313,9 @@ async function main(): Promise<number> {
|
||||||
'--add-dir',
|
'--add-dir',
|
||||||
'/opt/agent',
|
'/opt/agent',
|
||||||
'--output-format',
|
'--output-format',
|
||||||
'text',
|
outputFormat,
|
||||||
]
|
]
|
||||||
|
if (outputFormat === 'stream-json') args.push('--verbose')
|
||||||
if (effort) args.push('--effort', effort)
|
if (effort) args.push('--effort', effort)
|
||||||
|
|
||||||
const cwd = worktreePath ?? '/opt/agent'
|
const cwd = worktreePath ?? '/opt/agent'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue