22 lines
1 KiB
Python
22 lines
1 KiB
Python
"""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}")
|