import logging from modules.services import getInterface as getServices logger = logging.getLogger(__name__) async def start(eventUser) -> None: """ Start feature triggers and background managers Args: eventUser: System-level event user for background operations (provided by app.py) """ # Feature Automation Events if eventUser: try: from modules.features.automation import syncAutomationEvents from modules.shared.callbackRegistry import callbackRegistry # Get services for event user (provides access to interfaces) services = getServices(eventUser, None) # Register callback for automation changes async def onAutomationChanged(chatInterface): """Callback triggered when automations are created/updated/deleted.""" await syncAutomationEvents(chatInterface, eventUser) callbackRegistry.register('automation.changed', onAutomationChanged) logger.info("Registered automation change callback") # Initial sync on startup - use interface from services await syncAutomationEvents(services.interfaceDbChat, eventUser) logger.info("Automation events synced on startup") except Exception as e: logger.error(f"Error setting up automation events on startup: {str(e)}") # Don't fail startup if automation sync fails # Feature SyncDelta from modules.features.syncDelta import mainSyncDelta mainSyncDelta.startSyncManager(eventUser) # Feature ChatAlthaus from modules.features.chatAlthaus import mainChatAlthaus mainChatAlthaus.startDataScheduler(eventUser) await mainChatAlthaus.performDataUpdate(eventUser) # Feature ... return True async def stop(eventUser) -> None: """ Stop feature triggers and background managers Args: eventUser: System-level event user (provided by app.py) """ # Unregister automation callback try: from modules.shared.callbackRegistry import callbackRegistry # Note: We'd need to store the callback reference to unregister it properly # For now, callbacks will remain registered (acceptable for shutdown) logger.info("Automation callbacks remain registered (will be cleaned up on process exit)") except Exception as e: logger.warning(f"Error during automation callback cleanup: {str(e)}") # Feature ... return True