from typing import TYPE_CHECKING from core_domain import ( InitialNodeContract, NodeRunContract, NodeRunStatusUpdateContract, RunBootstrapContract, RunCreateContract, WorkflowRunStatusUpdateContract, WorkflowRunContract, ) if TYPE_CHECKING: from app.db.models import NodeRun, WorkflowRun class InitialNodeCreateRequest(InitialNodeContract): pass class RunCreateRequest(RunCreateContract): initial_node: InitialNodeCreateRequest | None = None class WorkflowRunResponse(WorkflowRunContract): @classmethod def from_entity(cls, entity: "WorkflowRun") -> "WorkflowRunResponse": return cls.model_validate(entity, from_attributes=True) class NodeRunResponse(NodeRunContract): @classmethod def from_entity(cls, entity: "NodeRun") -> "NodeRunResponse": return cls.model_validate(entity, from_attributes=True) class RunBootstrapResponse(RunBootstrapContract): run: WorkflowRunResponse initial_node: NodeRunResponse | None = None class WorkflowRunStatusUpdateRequest(WorkflowRunStatusUpdateContract): pass class NodeRunStatusUpdateRequest(NodeRunStatusUpdateContract): pass