From 54c835cc0fc4d53320dc2ffa8d09b101b4f92f65 Mon Sep 17 00:00:00 2001
From: Pim Hutting
Date: Mon, 12 Jan 2026 15:37:04 +0100
Subject: [PATCH] feat: added force_norm handling in BDI core agent
ref: N25B-400
---
src/control_backend/agents/bdi/bdi_core_agent.py | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/src/control_backend/agents/bdi/bdi_core_agent.py b/src/control_backend/agents/bdi/bdi_core_agent.py
index 7f961ec..572786c 100644
--- a/src/control_backend/agents/bdi/bdi_core_agent.py
+++ b/src/control_backend/agents/bdi/bdi_core_agent.py
@@ -164,6 +164,8 @@ class BDICoreAgent(BaseAgent):
self._set_goal("transition_phase")
case "force_trigger":
self._force_trigger(msg.body)
+ case "force_norm":
+ self._force_norm(msg.body)
case _:
self.logger.warning("Received unknow user interruption: %s", msg)
@@ -311,6 +313,17 @@ class BDICoreAgent(BaseAgent):
self.logger.info("Manually forced trigger %s.", name)
+ # TODO: make this compatible for critical norms
+ def _force_norm(self, name: str):
+ self.bdi_agent.call(
+ agentspeak.Trigger.addition,
+ agentspeak.GoalType.belief,
+ agentspeak.Literal("force_norm", (agentspeak.Literal(agentspeak.asl_repr(name)),)),
+ agentspeak.runtime.Intention(),
+ )
+
+ self.logger.info("Manually forced norm %s.", name)
+
def _add_custom_actions(self) -> None:
"""
Add any custom actions here. Inside `@self.actions.add()`, the first argument is