import time import uuid from typing import Dict, Any, Optional, List from pydantic import BaseModel, Field class WorkspaceSession(BaseModel): session_id: str workspace_root: str = "." active_files: List[str] = Field(default_factory=list) created_at: float = Field(default_factory=time.time) metadata: Dict[str, Any] = Field(default_factory=dict) class SessionManager: def __init__(self): self._sessions: Dict[str, WorkspaceSession] = {} def create_session(self, workspace_root: str = ".", metadata: Optional[Dict[str, Any]] = None) -> WorkspaceSession: session_id = f"sess_{uuid.uuid4().hex[:12]}" session = WorkspaceSession( session_id=session_id, workspace_root=workspace_root, metadata=metadata or {} ) self._sessions[session_id] = session return session def get_session(self, session_id: str) -> Optional[WorkspaceSession]: return self._sessions.get(session_id) def set_active_files(self, session_id: str, files: List[str]) -> bool: session = self.get_session(session_id) if not session: return False session.active_files = files return True def list_sessions(self) -> List[WorkspaceSession]: return list(self._sessions.values()) session_manager = SessionManager()