Index
sessions
¶
Cross-channel session management.
Classes¶
Session
dataclass
¶
Session(session_id: str = '', identity: Optional[SessionIdentity] = None, messages: List[SessionMessage] = list(), created_at: float = 0.0, last_activity: float = 0.0, metadata: Dict[str, Any] = dict())
A conversation session with cross-channel message history.
SessionIdentity
dataclass
¶
Canonical user identity across channels.
SessionStore
¶
SessionStore(db_path: Union[str, Path] = DEFAULT_CONFIG_DIR / 'sessions.db', *, max_age_hours: float = 24.0, consolidation_threshold: int = 100)
SQLite-backed session persistence with consolidation and decay.
Source code in src/openjarvis/sessions/session.py
Functions¶
get_or_create
¶
get_or_create(user_id: str, *, channel: str = '', channel_user_id: str = '', display_name: str = '') -> Session
Get existing session for user or create a new one.
Source code in src/openjarvis/sessions/session.py
save_message
¶
save_message(session_id: str, role: str, content: str, *, channel: str = '', metadata: Optional[Dict[str, Any]] = None) -> None
Persist a message to a session.
Source code in src/openjarvis/sessions/session.py
consolidate
¶
Consolidate old messages: summarize oldest half, keep recent half.
Source code in src/openjarvis/sessions/session.py
decay
¶
Remove sessions older than max_age_hours. Returns count removed.
Source code in src/openjarvis/sessions/session.py
link_channel
¶
Link a channel identity to an existing session.
Source code in src/openjarvis/sessions/session.py
list_sessions
¶
list_sessions(*, active_only: bool = True, limit: int = 50) -> List[Session]
List sessions, optionally filtering to active only.