Skip to content

feat: verbose structured logging with [cron]/[job]/[spawn]/[mcp] prefixes#107

Merged
Gonzih merged 1 commit into
mainfrom
feat/verbose-logging
May 20, 2026
Merged

feat: verbose structured logging with [cron]/[job]/[spawn]/[mcp] prefixes#107
Gonzih merged 1 commit into
mainfrom
feat/verbose-logging

Conversation

@Gonzih
Copy link
Copy Markdown
Owner

@Gonzih Gonzih commented May 20, 2026

Summary

  • [cron]: All cron:xxx messages renamed to [cron] xxx; new [cron] fired event at start of fire() with id, schedule, intervalMs, and prompt[:200]; [cron] registered event for each cron at startup
  • [job]: All job:xxx messages renamed; [job] created adds task[:200] and branch; [job] running adds pid; [job] done adds duration_seconds and output_lines; [job] failed adds exit_code
  • [spawn]: New [spawn] subprocess started (pid, cwd, driver — no token logged) and [spawn] subprocess exited (exit_code) events around every driver.spawn() call
  • [mcp]: All tool:xxx log messages renamed to [mcp] xxx via bulk replacement
  • Startup: [cc-agent] started with version+namespace, per-status job counts, and cron count + per-cron [cron] registered events after cronEngine.start()

All 143 existing tests pass.

Example log output:

2026-05-20T08:00:00.000Z [INFO] [cc-agent] started {"version":"0.15.14","namespace":"gonzih"}
2026-05-20T08:00:00.001Z [INFO] [cc-agent] startup {"jobs_total":3,"done":2,"failed":1}
2026-05-20T08:00:00.002Z [INFO] [cc-agent] startup {"crons_loaded":2}
2026-05-20T08:00:00.003Z [INFO] [cron] registered {"id":"abc123","schedule":"every 30m","intervalMs":1800000}
2026-05-20T08:00:01.000Z [INFO] [mcp] spawn_agent {"repo_url":"...","task":"Fix the bug..."}
2026-05-20T08:00:01.100Z [INFO] [job] created {"id":"def456","status":"cloning","repoUrl":"...","branch":null,"task":"Fix the bug..."}
2026-05-20T08:00:02.000Z [INFO] [spawn] subprocess started {"job_id":"def456","pid":12345,"cwd":"/tmp/cc-agent-def456-xxx","driver":"claude"}
2026-05-20T08:02:14.000Z [INFO] [spawn] subprocess exited {"job_id":"def456","pid":12345,"exit_code":0}
2026-05-20T08:02:14.010Z [INFO] [job] done {"id":"def456","exit_code":0,"duration_seconds":133,"output_lines":47,"cost_usd":0.12,"score":0.9}

Test plan

  • npx vitest run src/cron.test.ts src/agent.test.ts src/index.test.ts — 143 tests pass
  • git diff --staged reviewed — all changes match stated intent, no out-of-scope modifications

🤖 Generated with Claude Code

…ixes

- [cron]: all cron:xxx messages renamed; new [cron] fired event at start of
  fire() includes id, schedule, intervalMs, prompt[:200]; registered event
  for each cron at startup
- [job]: all job:xxx messages renamed; [job] created now includes task[:200]
  and branch; [job] running includes pid; [job] done includes duration_seconds
  and output_lines; [job] failed includes exit_code
- [spawn]: new [spawn] subprocess started (pid, cwd, driver) and [spawn]
  subprocess exited (exit_code) events around every driver.spawn() call
- [mcp]: all tool:xxx messages renamed to [mcp] xxx via bulk sed
- Startup summary: [cc-agent] started with version+namespace, job status
  counts, and cron count/registered events after cronEngine.start()

All 143 tests pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@Gonzih Gonzih merged commit 2846068 into main May 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant