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