from .get_scene_object import get_scene_object from .set_scene_object_collision_rules import set_scene_object_collision_rules from ..rendering.collision_rules import resolve_collision_rules, sanitize_collision_rules, set_then_action_in_rules def append_action_to_trigger(slug, object_id, after_id, raw_action): """"+ Ajouter une action" en bout de chaîne — extrait de routes/triggers/triggers.py::trigger_append_action pour être l'UNIQUE chemin d'écriture, partagé par la route HTTP ET par l'agent IA (voir ai/tools.py) : ni l'un ni l'autre n'écrit `_collision_rules` directement, tous deux passent par ici. `after_id` : dialogue.id (feuille "dialogue") ou id (feuille "variable") de la DERNIÈRE feuille d'une chaîne. Renvoie False si l'objet, `after_id`, ou `raw_action` sont invalides, ou si la feuille visée a déjà un "then" (jamais écrasé par cette fonction — set_then_action_in_rules ne fait qu'ajouter en bout de chaîne réelle).""" obj = get_scene_object(slug, object_id) if obj is None: return False rules = resolve_collision_rules(obj) if not set_then_action_in_rules(rules, after_id, raw_action): return False sanitized = sanitize_collision_rules(rules) set_scene_object_collision_rules(slug, object_id, sanitized) return True