package tech.easyflow.agent.runtime.agui;

/**
 * 提供给前端刷新恢复判断的 AG-UI 运行状态。
 *
 * @param runId 运行 ID
 * @param threadId AG-UI thread ID
 * @param status 当前状态
 * @param lastCursor 最后事件游标
 * @param draft 是否为草稿试运行
 * @param updatedAt 最近更新时间戳
 */
public record AgentAguiRunStatusView(
        String runId,
        String threadId,
        AgentAguiRunStatus status,
        long lastCursor,
        boolean draft,
        long updatedAt) {

    /**
     * 从内部运行描述生成公开状态。
     *
     * @param descriptor 内部运行描述
     * @return 公开状态
     */
    public static AgentAguiRunStatusView from(AgentAguiRunDescriptor descriptor) {
        return new AgentAguiRunStatusView(
                descriptor.runId(),
                descriptor.threadId(),
                descriptor.status(),
                descriptor.lastCursor(),
                descriptor.draft(),
                descriptor.updatedAt());
    }
}
