Restore active sessions on startup
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user