diff --git a/addons/activeblue_ai/controllers/webhook.py b/addons/activeblue_ai/controllers/webhook.py
index 8fb85dd..bb756b0 100644
--- a/addons/activeblue_ai/controllers/webhook.py
+++ b/addons/activeblue_ai/controllers/webhook.py
@@ -25,9 +25,8 @@ class AiWebhookController(http.Controller):
if bot and bot.webhook_secret:
pass # IP check handled at network level via ALLOWED_CALLBACK_IP env var in agent service
- try:
- data = json.loads(request.httprequest.data)
- except Exception:
+ data = request.httprequest.get_json(silent=True) or {}
+ if not data:
return Response(status=400)
event_type = data.get('event', '')
diff --git a/addons/activeblue_ai/data/ir_cron.xml b/addons/activeblue_ai/data/ir_cron.xml
index e2e8bcb..757bb4f 100644
--- a/addons/activeblue_ai/data/ir_cron.xml
+++ b/addons/activeblue_ai/data/ir_cron.xml
@@ -8,7 +8,6 @@
model.cron_ping_all()
5
minutes
- -1
True
@@ -19,7 +18,6 @@
model.sync_from_service()
1
hours
- -1
True
@@ -30,7 +28,6 @@
model.cron_cleanup_old()
1
days
- -1
True
@@ -41,7 +38,6 @@
model.cron_cleanup()
1
days
- -1
True
diff --git a/addons/activeblue_ai/security/res_groups.xml b/addons/activeblue_ai/security/res_groups.xml
index 36e614b..cf3b42e 100644
--- a/addons/activeblue_ai/security/res_groups.xml
+++ b/addons/activeblue_ai/security/res_groups.xml
@@ -16,7 +16,7 @@
AI Manager
-
+
Can configure AI, approve directives, and view all logs
diff --git a/addons/activeblue_ai/views/menus.xml b/addons/activeblue_ai/views/menus.xml
index ad983d5..88a3a3e 100644
--- a/addons/activeblue_ai/views/menus.xml
+++ b/addons/activeblue_ai/views/menus.xml
@@ -3,7 +3,6 @@