""" PluginLoader — discovers and registers action plugins at startup. Étape 3: builtins include SSH file snapshots, Mikrotik, and Camera plugins. Étape 5: will scan plugins/custom/ and cross-reference with the plugins DB table. """ from app.plugins.base import BaseAction from app.plugins.builtin.camera.get_status import CameraGetStatusAction from app.plugins.builtin.camera.set_ntp import CameraSetNTPAction from app.plugins.builtin.common.ping import PingAction from app.plugins.builtin.mikrotik.get_config import MikrotikGetConfigAction from app.plugins.builtin.mikrotik.get_ntp import MikrotikGetNTPAction from app.plugins.builtin.mikrotik.set_ntp import MikrotikSetNTPAction from app.plugins.builtin.ssh.get_file import GetFileAction from app.plugins.builtin.ssh.get_timedatectl import GetTimedatectlAction from app.plugins.builtin.ssh.ssh_command import SSHCommandAction from app.plugins.registry import action_registry _BUILTIN_ACTIONS: list[BaseAction] = [ # Universal PingAction(), # SSH / Linux SSHCommandAction(), GetTimedatectlAction(), GetFileAction(), # Mikrotik (RouterOS via SSH) MikrotikGetConfigAction(), MikrotikGetNTPAction(), MikrotikSetNTPAction(), # Cameras (Hikvision ISAPI) CameraGetStatusAction(), CameraSetNTPAction(), ] def load_plugins() -> None: for action in _BUILTIN_ACTIONS: action_registry.register(action)