Spaces:
Sleeping
Sleeping
| 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() | |