Skip to content

v0.2.4

Choose a tag to compare

@github-actions github-actions released this 27 Jul 08:54
· 620 commits to main since this release

Added

  • kimi_error_detector plugin — classifies transient errors from Kimi Code CLI rounds (turn.step.retrying records) so a rate-limited round backs off instead of hot-restarting. No usage events: the CLI's stream-json output carries no token counters.
  • agent_auth_error_detected event — a plugin reports an auth failure named by the agent CLI's own structured output, and the oauth_fail detector counts those rounds directly. Makes pi's 401 loop visible (pi exits 0); the text-heuristic path keeps its nonzero-exit gate unchanged.
  • pi_error_detector plugin — emits per-round token usage (summed across the round's assistant messages, since pi reports usage per message) and classifies transient errors from Pi Coding Agent rounds. pi exits 0 on provider failure, so the classifier reads the final message's stopReason/errorMessage rather than the exit code.

Fixed

  • Round-log tail scanning hardened: plugin JSONL parsers filter non-JSON chatter before windowing (a stderr burst of any size can no longer evict the terminal event), monitor detectors share the same 200-line window (was 50 — the oauth/network text scans had the identical eviction risk), and each monitor poll reads only the newest 20 round logs instead of every log ever written.
  • A relative runtime.work_dir (and every path derived from it) now resolves against the config file's directory instead of the caller's cwd, so --config /abs/proj/agent-runner.toml drives /abs/proj no matter where the supervisor was launched from.
  • Remote monitor (monitor --host <alias>) was silently observing an empty world and reporting healthy — it listed remote filenames over ssh but read every path locally. It now fails loudly at startup (exit 1, with guidance to run the monitor on the host) until remote reads are implemented.
  • Agent round logs ({log_dir}/rounds/R*-*.log) are now pruned under runtime.round_log_retention at the start of every round — previously that family grew unboundedly, since only the serve-level round-<N>.log family was pruned, and only at serve startup.
  • Startup validation resolves the agent command exactly as the spawn does (child's PATH — [agent.env] may override it — and work_dir base); PWD now stays pinned to work_dir even if [agent.env] sets it. The stdout+stderr merge is now pinned by a behavioral test, not just prose.
  • Generated serve systemd units now set KillMode=mixed: with systemd's default control-group, systemctl stop SIGTERMed the whole cgroup — agent child included — making the graceful round drain structurally ineffective. Existing installs: re-run agent-runner install (or add a drop-in) to pick this up.

See docs/migrations/0.2.4.md.