Skip to content

v0.8.0 — Hardened agent loop, typed failures, real recovery

Latest

Choose a tag to compare

@acodercat acodercat released this 01 Aug 04:08
· 6 commits to master since this release

The 0.8.0 rewrite, hardened by fifteen review rounds: ~120 verified defects fixed, each pinned by a
regression test.

Highlights

  • One execution path — run() and streaming can no longer diverge; every run ends with a typed
    StoppedEvent
  • Typed failures — MODEL_ERROR / RUNTIME_ERROR / INTERNAL_ERROR are distinct: provider,
    runtime, or bug
  • Real recovery — output truncation, mid-stream failures, and prompt overflow resume instead of
    corrupting history
  • Robust parsing — line-anchored, case-insensitive fences; differentially tested against the 0.7.x
    extractor at every chunk size
  • Preemptible runtimes — max_exec_timeout works on IPyKernelRuntime and is refused where it
    can't be honored
  • Oversize output persists — large stdout becomes a runtime variable the model can slice, not a
    truncation
  • Honest token accounting — measured per-script rates (CJK, Cyrillic, emoji…), API-anchored
    estimates, compaction that survives summarizer failures

Breaking changes

  • Model subclasses implement _complete, not call
  • interrupt() moved from Runtime to PreemptibleRuntime
  • max_exec_timeout + in-process runtime now raises at construction
  • persisted_output_variable → persisted_output_prefix
  • Histories from ≤0.7.5 need a one-time migrate_legacy_summaries()
  • utils.extract_first_code_block removed

Install: pip install cave-agent==0.8.0 · extras: [ipykernel] [openai] [litellm] [all]