from abc import ABC, abstractmethod from typing import List, Optional from omagent_core.engine.http.models import PollData from omagent_core.engine.http.models.task import Task from omagent_core.engine.http.models.task_exec_log import TaskExecLog from omagent_core.engine.http.models.task_result import TaskResult from omagent_core.engine.http.models.task_result_status import TaskResultStatus from omagent_core.engine.http.models.workflow import Workflow class TaskClient(ABC): @abstractmethod def poll_task( self, task_type: str, worker_id: Optional[str] = None, domain: Optional[str] = None, ) -> Optional[Task]: pass @abstractmethod def batch_poll_tasks( self, task_type: str, worker_id: Optional[str] = None, count: Optional[int] = None, timeout_in_millisecond: Optional[int] = None, domain: Optional[str] = None, ) -> List[Task]: pass @abstractmethod def get_task(self, task_id: str) -> Task: pass @abstractmethod def update_task(self, task_result: TaskResult) -> str: pass @abstractmethod def update_task_by_ref_name( self, workflow_id: str, task_ref_name: str, status: TaskResultStatus, output: object, worker_id: Optional[str] = None, ) -> str: pass @abstractmethod def update_task_sync( self, workflow_id: str, task_ref_name: str, status: TaskResultStatus, output: object, worker_id: Optional[str] = None, ) -> Workflow: pass @abstractmethod def get_queue_size_for_task(self, task_type: str) -> int: pass @abstractmethod def add_task_log(self, task_id: str, log_message: str): pass @abstractmethod def get_task_logs(self, task_id: str) -> List[TaskExecLog]: pass @abstractmethod def get_task_poll_data(self, task_type: str) -> List[PollData]: pass