SessionStorage#

Restore model context and preserve immutable original messages. See the guide.

class zett_agent.extensions.persistence.SessionStorage(*args, **kwargs)[source]#

Persistence boundary; implementations own transactions and message encoding.

async load(session_id)[source]#

Load the latest checkpoint and all Raw Log messages after its boundary.

Parameters:

session_id (str)

Return type:

SessionView

async append(session_id, request_id, message, timing=None, parent_session_id=None, title=None, agent_name=None, metadata=None, tags=None, usage=None)[source]#

Append one immutable Raw Log message and return its allocated sequence.

A direct storage caller may omit timing for an instantaneous imported message. The Agent runtime always supplies measured timing. The optional Session attributes initialize the session record on its first append and are not copied into each Raw Log row. Usage belongs only to assistant model responses. The parent ID is immutable.

Parameters:
  • session_id (str)

  • request_id (str)

  • message (AnyMessage)

  • timing (MessageTiming | None)

  • parent_session_id (str | None)

  • title (str | None)

  • agent_name (str | None)

  • metadata (Mapping[str, JsonValue] | None)

  • tags (Mapping[str, JsonValue] | None)

  • usage (ModelUsage | None)

Return type:

int

async snapshot(session_id, compacted_message, compacted_through_sequence, expected_version)[source]#

Create one immutable checkpoint, rejecting a stale snapshot version.

Parameters:
  • session_id (str)

  • compacted_message (CompactedMessage)

  • compacted_through_sequence (int)

  • expected_version (int)

Return type:

ContextSnapshot