"""动作类型统一入口,新增操作时在这里显式加入联合类型""" from typing import Annotated from pydantic import Field from .add import AddAction from .base import ActionModel, BaseAction from .delete import DeleteAction from .layout import AlignAction, ArrangeAction, DistributeAction, SetLayoutAction from .move import MoveAction from .resize import ResizeAction from .set_interaction import SetInteractionAction from .update import UpdateAction from .update_canvas import UpdateCanvasAction # 按 type 选择对应模型,不维护重复的操作名称映射 Action = Annotated[ AddAction | DeleteAction | MoveAction | ResizeAction | UpdateAction | UpdateCanvasAction | SetInteractionAction, Field(discriminator="type"), ] # 模型可以提交的动作:前端协议 + 布局意图 # 布局意图由后端展开成 move 和 resize,不会返回给前端 AgentAction = Annotated[ AddAction | DeleteAction | MoveAction | ResizeAction | UpdateAction | UpdateCanvasAction | SetInteractionAction | ArrangeAction | AlignAction | DistributeAction | SetLayoutAction, Field(discriminator="type"), ] __all__ = [ "Action", "AgentAction", "AlignAction", "ArrangeAction", "DistributeAction", "SetLayoutAction", "ActionModel", "AddAction", "BaseAction", "DeleteAction", "MoveAction", "ResizeAction", "SetInteractionAction", "UpdateAction", "UpdateCanvasAction", ]