Restore active sessions on startup

This commit is contained in:
2026-05-12 08:04:59 -05:00
parent a09197e85a
commit bce93b39e0
3 changed files with 64 additions and 1 deletions

View File

@@ -82,6 +82,34 @@ class AgentOrchestrator:
logger.info(f"Started session {session_id} for {channel_name}")
return session_id
async def restore_active_sessions(self) -> int:
"""Restore active sessions from the database after app startup."""
restored_count = 0
async for db_session in get_session():
repo = Repository(db_session)
sessions = await repo.get_active_sessions()
for session in sessions:
recent_messages = await repo.get_recent_messages(session.id, limit=1)
message_count = await repo.count_messages(session.id)
last_activity_at = (
recent_messages[0].timestamp if recent_messages else session.started_at
)
self.active_sessions[session.id] = {
"channel_name": session.channel_name,
"started_at": session.started_at,
"message_count": message_count,
"theme": session.theme,
"last_hearthkeeper_prompt_at": None,
}
self.chat_activity.record_activity(session.id, occurred_at=last_activity_at)
restored_count += 1
logger.info(f"Restored {restored_count} active sessions")
return restored_count
async def end_session(self, session_id: str) -> None:
"""
End a stream session and trigger ledger generation.