Spaces:
Running
Running
| import uuid | |
| from typing import Dict, Any, Optional | |
| from dataclasses import dataclass, field | |
| from datetime import datetime | |
| class ProjectDraft: | |
| draft_id: str | |
| name: str | |
| description: str | |
| type: str | |
| created_at: datetime = field(default_factory=datetime.now) | |
| code_files: Dict[str, str] = field(default_factory=dict) | |
| metadata: Dict[str, Any] = field(default_factory=dict) | |
| class SessionManager: | |
| def __init__(self): | |
| self._drafts: Dict[str, ProjectDraft] = {} | |
| def create_draft(self, name: str, description: str, type: str = "adhoc") -> ProjectDraft: | |
| """Creates a new project draft.""" | |
| draft_id = str(uuid.uuid4()) | |
| draft = ProjectDraft( | |
| draft_id=draft_id, | |
| name=name, | |
| description=description, | |
| type=type | |
| ) | |
| # Initialisation des fichiers de base | |
| draft.code_files["requirements.txt"] = "mcp" | |
| self._drafts[draft_id] = draft | |
| return draft | |
| def get_draft(self, draft_id: str) -> Optional[ProjectDraft]: | |
| """Retrieves a draft by its ID.""" | |
| return self._drafts.get(draft_id) | |
| def update_code(self, draft_id: str, filename: str, content: str) -> bool: | |
| """Updates a code file in the draft.""" | |
| draft = self.get_draft(draft_id) | |
| if not draft: | |
| return False | |
| draft.code_files[filename] = content | |
| return True | |
| def list_drafts(self) -> Dict[str, str]: | |
| """Lists all active drafts.""" | |
| return {d.draft_id: d.name for d in self._drafts.values()} | |