[docs]classAction(TraversableEdge):"""Action() Traversable choice edge connecting story blocks. Why ---- ``Action`` carries both user-facing choice text and authored successor semantics, allowing the compiler and materializer to preserve the narrative meaning of redirects, continuations, and interactive choices. """text:str=""successor_ref:str|None=Noneactivation:str|None=Nonepayload:Any=Noneaccepts:Accepts|None=Noneblockers:list[Blocker]|None=Noneui_hints:UIHints|None=Nonejournal_text:str|None=None@field_serializer("accepts")def_serialize_accepts(self,accepts:Accepts|None)->dict[str,Any]|None:ifacceptsisNone:returnNonereturnaccepts.model_dump(mode="python",by_alias=True,exclude_none=True)@classmethoddeftrigger_phase_from_activation(cls,activation:str|None)->ResolutionPhase|None:"""Map authored activation shorthands to vm resolution phases."""ifactivation=="first":returnResolutionPhase.PREREQSifactivation=="last":returnResolutionPhase.POSTREQSreturnNone