Spaces:
Sleeping
Sleeping
File size: 1,360 Bytes
71b4454 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 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()
|