OpenRath v1.2.2#

Released July 5, 2026 (UTC+8).

What changed#

v1.2.2 adds an optional LiteLLM adapter and a small set of session ergonomics, then hardens concurrency, compression, registry lifetime, and persistence round-trips.

Addition

Contract

openrath[litellm]

Registers provider_kind="litellm" for synchronous and streaming chat calls.

Session.text()

Returns the latest non-empty assistant text, or None.

ChunkTable sequence protocol

Supports len(table), indexing, slicing, and iteration.

Same-path file serialization

File read/write/list/exists operations using exactly the same path string share one resource lane.

Compression guard

A response ending with finish_reason="length" raises instead of replacing history with a truncated summary.

Compatibility#

  • LiteLLM remains optional. Selecting provider_kind="litellm" without the extra installed fails with an unknown provider-kind error.

  • A ChunkTable slice returns tuple[ChunkRow, ...], not another ChunkTable.

  • Session.text() only reads assistant chunks. A compressed session contains one user chunk, so compressed.text() returns None.

  • Session.__repr__ now includes a short UUID; repr is not a serialization format.

  • The session registry holds weak references. Applications must keep their own strong reference or persist sessions that must remain discoverable.

Full code changes: v1.2.1…v1.2.2.