""" Dependency injection for the dashboard. """ from typing import AsyncGenerator from dashboard.config import config from dashboard.services.device_manager import DeviceManager from dashboard.services.task_executor import TaskExecutor from dashboard.services.websocket_manager import WebSocketManager # Global service instances _device_manager: DeviceManager | None = None _task_executor: TaskExecutor | None = None _ws_manager: WebSocketManager | None = None def get_device_manager() -> DeviceManager: """Get the device manager instance.""" global _device_manager if _device_manager is None: _device_manager = DeviceManager(device_type=config.DEFAULT_DEVICE_TYPE) return _device_manager def get_task_executor() -> TaskExecutor: """Get the task executor instance.""" global _task_executor if _task_executor is None: _task_executor = TaskExecutor(get_device_manager()) return _task_executor def get_ws_manager() -> WebSocketManager: """Get the WebSocket manager instance.""" global _ws_manager if _ws_manager is None: _ws_manager = WebSocketManager() return _ws_manager