Manages session lifecycle and operations. Provides high-level interface for: - Creating and managing sessions - Saving and loading sessions - Forking sessions - Session cleanup - Auto-save
| 23 | |
| 24 | |
| 25 | class SessionManager: |
| 26 | """ |
| 27 | Manages session lifecycle and operations. |
| 28 | |
| 29 | Provides high-level interface for: |
| 30 | - Creating and managing sessions |
| 31 | - Saving and loading sessions |
| 32 | - Forking sessions |
| 33 | - Session cleanup |
| 34 | - Auto-save |
| 35 | """ |
| 36 | |
| 37 | def __init__(self, working_dir: Path, agent_name: str = "general"): |
| 38 | """ |
| 39 | Initialize session manager. |
| 40 | |
| 41 | Args: |
| 42 | working_dir: Working directory |
| 43 | agent_name: Current agent name |
| 44 | """ |
| 45 | self.working_dir = Path(working_dir) |
| 46 | self.agent_name = agent_name |
| 47 | |
| 48 | # Storage |
| 49 | config_dir = self.working_dir / ".rightnow" |
| 50 | self.storage = SessionStorage(config_dir) |
| 51 | |
| 52 | # Current session |
| 53 | self.current_session: Optional[Session] = None |
| 54 | |
| 55 | # Auto-save |
| 56 | self.auto_save_enabled = False |
| 57 | self.auto_save_interval = 60 # seconds |
| 58 | self.auto_save_thread: Optional[threading.Thread] = None |
| 59 | self._stop_auto_save = threading.Event() |
| 60 | |
| 61 | def create_session( |
| 62 | self, |
| 63 | name: Optional[str] = None, |
| 64 | messages: Optional[List[Any]] = None, |
| 65 | description: str = "" |
| 66 | ) -> Session: |
| 67 | """ |
| 68 | Create new session. |
| 69 | |
| 70 | Args: |
| 71 | name: Session name (auto-generated if None) |
| 72 | messages: Initial messages |
| 73 | description: Optional description |
| 74 | |
| 75 | Returns: |
| 76 | New session |
| 77 | """ |
| 78 | # Generate ID |
| 79 | session_id = Session.generate_id() |
| 80 | |
| 81 | # Auto-generate name if not provided |
| 82 | if not name: |
no outgoing calls
no test coverage detected