feat(B-PLUGIN-MINIAPP-WIRE): MiniApp Registry als Singleton — gemeinsame Registry für alle Plugins
Check Cross-Plugin Imports / check (push) Has been cancelled

B-PLUGIN-MINIAPP-WIRE: MiniAppRegistry Singleton-Pattern
- get_miniapp_registry() / reset_miniapp_registry() in miniapp_registry.py
- Alle 6 MiniAppRegistry() Instanziierungen durch get_miniapp_registry() ersetzt
- automation/plugin.py (on_activate/on_deactivate), automation/routes.py (3x), kommunikation/plugin.py
- contracts.py: get_miniapp_registry + reset_miniapp_registry exportiert
- 0 verbleibende MiniAppRegistry() Instanziierungen außerhalb miniapp_registry.py

Tests: 12 Tests in test_miniapp_registry.py — alle grün
- Singleton, Register/List, UnregisterPlugin, Plugin-Lifecycle-Integration
This commit is contained in:
Agent Zero
2026-08-13 17:39:22 +02:00
parent 4dce01f4b9
commit 8c04c85d35
6 changed files with 224 additions and 12 deletions
+4 -4
View File
@@ -193,8 +193,8 @@ class AutomationPlugin(BasePlugin):
logger.exception("Failed to register agent coordinator tools")
# Register MiniApps from manifest
try:
from app.plugins.builtins.kommunikation.contracts import MiniAppRegistry
registry = MiniAppRegistry()
from app.plugins.builtins.kommunikation.contracts import get_miniapp_registry
registry = get_miniapp_registry()
for miniapp in self.manifest.miniapps:
registry.register(
app_id=miniapp.app_id,
@@ -236,8 +236,8 @@ class AutomationPlugin(BasePlugin):
logger.exception("Failed to unregister agent coordinator tools")
# Unregister MiniApps
try:
from app.plugins.builtins.kommunikation.contracts import MiniAppRegistry
registry = MiniAppRegistry()
from app.plugins.builtins.kommunikation.contracts import get_miniapp_registry
registry = get_miniapp_registry()
registry.unregister_plugin(self.manifest.name)
logger.info("Unregistered MiniApps for plugin '%s'", self.manifest.name)
except Exception:
+6 -6
View File
@@ -187,8 +187,8 @@ async def list_miniapps(
current_user: dict[str, Any] = Depends(get_current_user),
):
"""List custom MiniApps from plugin config."""
from app.plugins.builtins.kommunikation.contracts import MiniAppRegistry
registry = MiniAppRegistry()
from app.plugins.builtins.kommunikation.contracts import get_miniapp_registry
registry = get_miniapp_registry()
items = registry.list_apps()
return {"items": items, "total": len(items)}
@@ -204,8 +204,8 @@ async def create_miniapp(
current_user: dict[str, Any] = Depends(get_current_user),
):
"""Create a custom MiniApp definition."""
from app.plugins.builtins.kommunikation.contracts import MiniAppRegistry
registry = MiniAppRegistry()
from app.plugins.builtins.kommunikation.contracts import get_miniapp_registry
registry = get_miniapp_registry()
registry.register(
app_id=data.app_id,
name=data.name,
@@ -233,8 +233,8 @@ async def delete_miniapp(
current_user: dict[str, Any] = Depends(get_current_user),
):
"""Delete a custom MiniApp definition."""
from app.plugins.builtins.kommunikation.contracts import MiniAppRegistry
registry = MiniAppRegistry()
from app.plugins.builtins.kommunikation.contracts import get_miniapp_registry
registry = get_miniapp_registry()
registry.unregister(app_id)
return {"status": "ok"}