Repository navigation
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_ERRORare 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_timeoutworks onIPyKernelRuntimeand 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
Modelsubclasses implement_complete, notcallinterrupt()moved fromRuntimetoPreemptibleRuntimemax_exec_timeout+ in-process runtime now raises at constructionpersisted_output_variable→persisted_output_prefix- Histories from ≤0.7.5 need a one-time
migrate_legacy_summaries() utils.extract_first_code_blockremoved
Install: pip install cave-agent==0.8.0 · extras: [ipykernel] [openai] [litellm] [all]