package tech.easyflow.agent.service;

import com.mybatisflex.core.service.IService;
import tech.easyflow.agent.entity.Agent;

import java.math.BigInteger;
import java.util.Map;

/**
 * Agent 配置服务。
 */
public interface AgentService extends IService<Agent> {

    /**
     * 获取 Agent 详情。
     *
     * @param id Agent ID
     * @return Agent 详情
     */
    Agent getDetail(BigInteger id);

    /**
     * 保存草稿 Agent。
     *
     * @param agent Agent 草稿
     * @return 保存后的 Agent
     */
    Agent saveDraft(Agent agent);

    /**
     * 更新草稿 Agent。
     *
     * @param agent Agent 草稿
     * @return 更新后的 Agent
     */
    Agent updateDraft(Agent agent);

    /**
     * 获取已发布运行视图。
     *
     * @param id Agent ID
     * @return 已发布运行视图
     */
    Agent getPublishedView(BigInteger id);

    /**
     * 构建发布快照。
     *
     * @param agent Agent 当前草稿
     * @return 发布快照
     */
    Map<String, Object> buildPublishSnapshot(Agent agent);

    /**
     * 从快照还原运行视图。
     *
     * @param snapshot 发布快照
     * @return Agent 运行视图
     */
    Agent fromSnapshot(Map<String, Object> snapshot);
}
