from ..rendering.collision_rules import remove_action_from_rules, resolve_collision_rules, sanitize_collision_rules from .get_scene_object import get_scene_object from .set_scene_object_collision_rules import set_scene_object_collision_rules def remove_action_from_trigger(slug: str, object_id: int, leaf_id: str) -> bool: """Retire une action précise (voir screens/rendering/collision_rules.py ::remove_action_from_rules) d'un déclencheur d'OBJET — même patron qu'append_action_to_trigger : UNIQUE chemin d'écriture, partagé par la route HTTP (routes/triggers/triggers.py) et l'agent IA (voir ai/tools.py). Renvoie False si l'objet ou `leaf_id` sont introuvables.""" obj = get_scene_object(slug, object_id) if obj is None: return False rules = resolve_collision_rules(obj) if not remove_action_from_rules(rules, leaf_id): return False sanitized = sanitize_collision_rules(rules) set_scene_object_collision_rules(slug, object_id, sanitized) return True