platform-core/modules/shared/systemComponentRegistry.py
ValueOn AG 4a60086c80
Some checks failed
Deploy Plattform-Core (Int) / test (push) Failing after 15s
Deploy Plattform-Core (Int) / deploy (push) Has been skipped
cp adapted to 2026 poweron
2026-06-09 09:53:31 +02:00

35 lines
1.3 KiB
Python

# Copyright (c) 2026 PowerOn AG
# All rights reserved.
"""
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``, ``onMandateProvision``,
``onInstanceCreate``, ``onUserMandateCreate``, ``onUserMandateDelete``,
``onUserBudgetAdjust``, ``onStorageChanged``.
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, []))