Skip to content

v3.7.2 β€” Unified chat loop + SessionStore extraction

Choose a tag to compare

@eniz1806 eniz1806 released this 06 Jun 12:46

Internal refactor β€” no user-facing behavior change.

Changed

  • Unified chat loop. The two near-identical native tool-calling loops (Claude and all OpenAI-compatible providers, ~180 lines each, ~90% shared) are now one `_run_native_chat` driver; only the provider-specific formats differ, via small per-kind seams. Shared machinery (`_build_system_prompt`, `_run_tool_calls`, `_maybe_lint_fix`) is defined once and reused by the Ollama loop too.
  • Session persistence extracted from the `Kodiqa` God-class into a dedicated `SessionStore` (`session_store.py`); `Kodiqa` keeps thin wrappers, so behavior is unchanged. First step of splitting the God-class into focused units.

Tests

  • Characterization tests for the chat-loop seams and `SessionStore` round-trips. 350 total; ruff + CI green.

kodiqa.py: 6251 β†’ 5999 lines.