# Copyright (c) 2025 Patrick Motsch """ System-component lifecycle-hook registry (Layer L0 — shared). Higher-layer system components (e.g. workflowAutomation) register their lifecycle hooks here at boot time via ``app.py`` (Composition Root, L7). Interface modules read the registry generically — no upward imports needed. Supported events: ``onBootstrap``, ``onMandateDelete``, ``onInstanceCreate``. This is the same inversion pattern used by ``serviceAgent/externalToolRegistry.py`` for agent tools. """ import logging from typing import Any, Callable, Dict, List logger = logging.getLogger(__name__) _hooks: Dict[str, List[Callable[..., Any]]] = {} def registerLifecycleHook(eventName: str, handler: Callable[..., Any]) -> None: """Register a lifecycle handler for *eventName*.""" _hooks.setdefault(eventName, []).append(handler) logger.info("Registered system-component lifecycle hook: %s -> %s", eventName, getattr(handler, "__qualname__", repr(handler))) def getLifecycleHooks(eventName: str) -> List[Callable[..., Any]]: """Return all registered handlers for *eventName* (may be empty).""" return list(_hooks.get(eventName, []))