"""节点进度事件""" from typing import Literal from pydantic import BaseModel, Field NodeProgressStatus = Literal[ "started", "completed", "waiting_for_input", "failed", "cancelled" ] class NodeProgress(BaseModel): type: Literal["node_progress"] = "node_progress" # 用于区分流中的事件类型 thread_id: str | None = None # 任务 ID,独立运行节点时可以为空 message_id: str | None = None # 当前用户输入 ID execution_id: str # 单次节点执行 ID,开始和结束共用 node: str # 稳定的技术标识,供程序处理和排查 label: str | None = None # 用户进度提示,缺省时不展示该节点 status: NodeProgressStatus # 节点执行状态,不代表任务总体状态 duration_ms: float | None = Field(default=None, ge=0) # 结束时的执行耗时