| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- from dataclasses import dataclass, field
- import threading
- from typing import Dict, Any, Optional, List
- @dataclass
- class VentMemoryState:
- """In-memory state for a single ventilation-agent conversation session."""
- messages: List[Dict[str, Any]] = field(default_factory=list)
- recent_queries: List[str] = field(default_factory=list)
- last_summary: str = ""
- class SessionManager:
- """Thread-safe registry of per-session VentMemoryState instances."""
- def __init__(self) -> None:
- self._sessions: Dict[str, VentMemoryState] = {}
- self._lock = threading.Lock()
- def get_or_create(self, session_id: str) -> VentMemoryState:
- """Return existing state for *session_id*, creating a fresh one if missing."""
- with self._lock:
- if session_id not in self._sessions:
- self._sessions[session_id] = VentMemoryState()
- return self._sessions[session_id]
- def update(self, session_id: str, state: VentMemoryState) -> None:
- """Overwrite the state for a given session."""
- with self._lock:
- self._sessions[session_id] = state
- def remove(self, session_id: str) -> None:
- """Drop a session from the registry."""
- with self._lock:
- self._sessions.pop(session_id, None)
- session_manager = SessionManager()
|