MCEPTION / src /core /state /session_manager.py
Ali Hmaou
Version 1.94RC
a0a02f2
import uuid
from typing import Dict, Any, Optional
from dataclasses import dataclass, field
from datetime import datetime
@dataclass
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()}