"""RouterContext adapter — provides router state to console pages. Reads router state for display in the console. When no live router is available, returns safe defaults. Ported from net.i2p.router.web.HelperBase / RouterContext. """ from __future__ import annotations import time class ConsoleContext: """Adapter for reading router state in the console.""" def __init__(self) -> None: self._start_time = time.monotonic() self._properties: dict[str, str] = {} self._version = "0.1.0" @property def uptime_seconds(self) -> float: return time.monotonic() - self._start_time @property def version(self) -> str: return self._version @property def status(self) -> dict: return { "state": "running", "uptime": self.uptime_seconds, "version": self.version, } @property def network_status(self) -> dict: return { "active_peers": 0, "known_routers": 0, "active_tunnels": 0, "participating_tunnels": 0, } def get_property(self, key: str, default: str | None = None) -> str | None: return self._properties.get(key, default) def set_property(self, key: str, value: str) -> None: self._properties[key] = value def get_all_properties(self) -> dict[str, str]: return dict(self._properties)