"""Task相关数据结构定义"""
import uuid
from pydantic import BaseModel, Field
from apps.models.task import ExecutorCheckpoint, ExecutorHistory, Task, TaskRuntime
from .flow import Step
class TaskData(BaseModel):
"""任务数据"""
metadata: Task = Field(description="任务")
runtime: TaskRuntime = Field(description="任务运行时数据")
state: ExecutorCheckpoint | None = Field(description="执行状态")
context: list[ExecutorHistory] = Field(description="执行历史")
class AgentCheckpointExtra(BaseModel):
"""Executor额外数据"""
todo_list: str = Field(description="TODO列表", default="")
step_count: int = Field(description="步骤计数", default=0)
tool_list: list[str] | None = Field(description="工具列表", default=None)
input_token: int = Field(description="输入Token数量", default=0)
output_token: int = Field(description="输出Token数量", default=0)
class AgentHistoryExtra(BaseModel):
"""执行器历史额外数据"""
tool_call_id: str | None = Field(description="工具调用ID", default=None)
role: str | None = Field(description="消息角色", default=None)
risk_confirmed: bool | None = Field(description="风险已确认", default=None)
class StepQueueItem(BaseModel):
"""步骤栈中的元素"""
step_id: uuid.UUID = Field(description="步骤ID")
step: Step = Field(description="步骤")
enable_filling: bool | None = Field(description="是否启用填充", default=None)
to_user: bool | None = Field(description="是否输出给用户", default=None)