# Conversation Management This module handles multi-turn conversation sessions for the Atlas voice agent system. ## Features - **Session Management**: Create, retrieve, and manage conversation sessions - **Message History**: Store and retrieve conversation messages - **Context Window Management**: Keep recent messages in context, summarize old ones - **Session Expiry**: Automatic cleanup of expired sessions - **Persistent Storage**: SQLite database for session persistence ## Usage ```python from conversation.session_manager import get_session_manager manager = get_session_manager() # Create a new session session_id = manager.create_session(agent_type="family") # Add messages manager.add_message(session_id, "user", "What time is it?") manager.add_message(session_id, "assistant", "It's 3:45 PM EST.") # Get context for LLM context = manager.get_context_messages(session_id, max_messages=20) # Summarize old messages manager.summarize_old_messages(session_id, keep_recent=10) # Cleanup expired sessions manager.cleanup_expired_sessions() ``` ## Session Structure Each session contains: - `session_id`: Unique identifier - `agent_type`: "work" or "family" - `created_at`: Session creation timestamp - `last_activity`: Last activity timestamp - `messages`: List of conversation messages - `summary`: Optional summary of old messages ## Message Structure Each message contains: - `role`: "user", "assistant", or "system" - `content`: Message text - `timestamp`: When the message was created - `tool_calls`: Optional list of tool calls made - `tool_results`: Optional list of tool results ## Configuration - `MAX_CONTEXT_MESSAGES`: 20 (default) - Number of recent messages to keep - `MAX_CONTEXT_TOKENS`: 8000 (default) - Approximate token limit - `SESSION_EXPIRY_HOURS`: 24 (default) - Sessions expire after inactivity ## Database Schema ### Sessions Table - `session_id` (TEXT PRIMARY KEY) - `agent_type` (TEXT) - `created_at` (TEXT ISO format) - `last_activity` (TEXT ISO format) - `summary` (TEXT, nullable) ### Messages Table - `id` (INTEGER PRIMARY KEY) - `session_id` (TEXT, foreign key) - `role` (TEXT) - `content` (TEXT) - `timestamp` (TEXT ISO format) - `tool_calls` (TEXT JSON, nullable) - `tool_results` (TEXT JSON, nullable) ## Future Enhancements - Actual LLM-based summarization (currently placeholder) - Token counting for precise context management - Session search and retrieval - Conversation analytics