~/.praisonai/sessions/.
How It Works
Quick Start
Core Exports
| Export | Purpose |
|---|---|
DefaultSessionStore | JSON-on-disk default backend |
SessionMessage, SessionData | Typed message and session payloads |
CompactionCheckpoint | Persisted compaction summary + resume anchor — see Compaction Checkpoints |
get_default_session_store() | Process-wide store accessor |
SessionStoreProtocol | Implement for Redis, Postgres, S3 — see Session Protocol |
HierarchicalSessionStore, get_hierarchical_session_store() | Forks, snapshots, parent-child — see Session Hierarchy |
IdentityResolverProtocol, FileIdentityResolver | Map anonymous → known user IDs across sessions |
SessionContext, set_session_context(), get_session_context() | Task-local session context for async flows |
Compaction Checkpoints
When context compaction runs during a conversation, the store can persist the summary so a later resume replays the compacted working history (summary + retained tail) instead of the full raw transcript. See Compacted Session Resume for the end-to-end agent flow.Store Methods
| Method | Description |
|---|---|
append_compaction_checkpoint(session_id, summary, *, role="system", tokens_before=0, tokens_after=0, metadata=None) | Persist a checkpoint anchored to the current end of the transcript. Returns bool; a blank/whitespace summary is a no-op returning False. |
get_working_history(session_id, max_messages=None) | Canonical read path — uses the checkpoint when present (summary + tail), falls back to raw chat history when not. |
SessionData additions
SessionData.last_compaction holds the latest CompactionCheckpoint (or None). Two helpers support cheap resume:
| Member | Description |
|---|---|
last_compaction | Optional[CompactionCheckpoint] — the persisted checkpoint, serialised into the session JSON |
trim_messages(max_messages) | Trim the transcript head, shifting the checkpoint anchor so the retained tail stays aligned |
get_working_history(max_messages=None) | Reconstruct [summary_message, *tail]; falls back to get_chat_history with no checkpoint |
set_chat_history() and clear_session() both clear last_compaction — replacing or clearing the transcript invalidates the anchor.Task-Local Context
Best Practices
Prefer session_id on Agent over manual store calls
Prefer session_id on Agent over manual store calls
Let
Agent(memory={"session_id": "..."}) handle persistence — use the store directly only for admin, migration, or custom backends.Use hierarchical store for forks and snapshots
Use hierarchical store for forks and snapshots
Switch to
get_hierarchical_session_store() when you need branching conversations or revert — see Session Hierarchy.Set task-local context in async workers
Set task-local context in async workers
Call
set_session_context() at the start of each async task so downstream code reads the correct session without threading IDs through every call.Related
Session Persistence
Agent-centric session_id usage
Session Hierarchy
Forking and snapshots

