fix: restore API response formats + ai-ui-control ws + profile fields

- Restore {plugins: [...], total: N} for /plugins and /plugins/active-manifests
  (flat array broke frontend PluginRegistry → no menu items → empty UI)
- Restore {count: N} for /notifications/unread-count
  (scalar broke frontend notification badge)
- Fix ai_ui_control: on_install → on_activate for WS manager registration
  (WS 403 on every reconnect after container restart)
- Fix double /api/v1 prefix in useAIContext.ts and SuggestionBadge.tsx
- Add first_name, last_name, avatar_url to User model + migration 0032
- Extend UserUpdate schema with profile + password change fields
- Extend user_service.update_user with profile fields + password change
- Extend frontend UserResponse/UserUpdate types
This commit is contained in:
Agent Zero
2026-07-24 17:17:53 +02:00
parent 7b4a2c0791
commit 2fd4bd123d
12 changed files with 110 additions and 17 deletions
+5 -3
View File
@@ -44,16 +44,18 @@ class AIUIControlPlugin(BasePlugin):
is_core=True,
)
async def on_install(self, db, service_container) -> None:
"""Register the WebSocket manager in the service container."""
async def on_activate(self, db, service_container, event_bus) -> None:
"""Register the WebSocket manager in the service container on every activation."""
await super().on_activate(db, service_container, event_bus)
from app.plugins.builtins.ai_ui_control.websocket_manager import AIUIControlWSManager
ws_manager = AIUIControlWSManager()
service_container.register("ai_ui_control_ws", ws_manager)
logger.info("AI UI Control WebSocket manager registered")
async def on_uninstall(self, db, service_container) -> None:
async def on_deactivate(self, db, service_container, event_bus) -> None:
"""Clean up the WebSocket manager."""
await super().on_deactivate(db, service_container, event_bus)
if service_container.has("ai_ui_control_ws"):
service_container.remove("ai_ui_control_ws")
logger.info("AI UI Control WebSocket manager removed")