""" Per-connection session config using Python contextvars. Each SSE connection sets its own Frappe credentials, isolated from other users. Falls back to .env values if no per-session config is set (local stdio mode). """ from contextvars import ContextVar from dataclasses import dataclass @dataclass class SessionConfig: frappe_url: str api_key: str api_secret: str site_name: str = "" read_only_mode: bool = False request_timeout: int = 30 _session: ContextVar[SessionConfig | None] = ContextVar("frappe_session", default=None) def set_session(config: SessionConfig) -> None: _session.set(config) def get_session() -> SessionConfig | None: return _session.get()