from defence360agent.application.determine_hosting_panel import ( get_hosting_panel, ) from defence360agent.subsys.panels.base import AbstractPanel from defence360agent.utils import importer def _default_panel_root() -> str: """Use im360 panel classes when the im360 package is installed.""" if importer.exists("im360"): return "im360" return "defence360agent" _panel_root = _default_panel_root() panel = None def set_panel_root(root_module: str) -> None: global _panel_root, panel _panel_root = root_module panel = None # reset so next HostingPanel() call uses new root def HostingPanel(check_for_changes=False) -> AbstractPanel: """ Return the hosting panel singleton. Panels are loaded from ``_panel_root`` which auto-detects the correct package (``im360`` when installed, ``defence360agent`` otherwise). Can be overridden via ``set_panel_root``. """ global panel if panel is None or check_for_changes: panel = get_hosting_panel(_panel_root) return panel