"""aissurance — the aissurance.eu compliance plugin. An in-process module that periodically snapshots the Router's AI-infrastructure landscape and sends structured, HMAC-signed evidence to aissurance.eu (the EU AI Act compliance platform). It only reads infrastructure metadata the Router already maintains for routing — never prompt/completion content. Public entry points: * ``AissurancePlugin`` — owns the scheduler task; ``start()`` / ``stop()`` are called from router.py's startup/shutdown events. """ __all__ = ["AissurancePlugin"] def __getattr__(name): # Lazy export so that ``config.py`` can import ``compliance.settings`` without # eagerly loading the plugin chain (plugin → scheduler → collector → config), # which would form an import cycle. router.py triggers this after startup. if name == "AissurancePlugin": from compliance.plugin import AissurancePlugin return AissurancePlugin raise AttributeError(f"module {__name__!r} has no attribute {name!r}")