package tech.easyflow.agent.runtime;

import tech.easyflow.agent.entity.Agent;
import tech.easyflow.agent.entity.AgentKnowledgeBinding;
import tech.easyflow.agent.entity.AgentToolBinding;

import java.util.List;
import java.util.ArrayList;

/**
 * Agent 草稿态纯文本试用请求。
 */
public class AgentDraftChatRequest {

    private Agent agent;
    private List<AgentToolBinding> toolBindings;
    private List<AgentKnowledgeBinding> knowledgeBindings;
    private String sessionId;
    private String prompt;
    private List<String> imageUploadIds = new ArrayList<>();

    /**
     * 获取 Agent 草稿快照。
     *
     * @return Agent 草稿快照
     */
    public Agent getAgent() {
        return agent;
    }

    /**
     * 设置 Agent 草稿快照。
     *
     * @param agent Agent 草稿快照
     */
    public void setAgent(Agent agent) {
        this.agent = agent;
    }

    /**
     * 获取工具绑定快照。
     *
     * @return 工具绑定快照
     */
    public List<AgentToolBinding> getToolBindings() {
        return toolBindings;
    }

    /**
     * 设置工具绑定快照。
     *
     * @param toolBindings 工具绑定快照
     */
    public void setToolBindings(List<AgentToolBinding> toolBindings) {
        this.toolBindings = toolBindings;
    }

    /**
     * 获取知识库绑定快照。
     *
     * @return 知识库绑定快照
     */
    public List<AgentKnowledgeBinding> getKnowledgeBindings() {
        return knowledgeBindings;
    }

    /**
     * 设置知识库绑定快照。
     *
     * @param knowledgeBindings 知识库绑定快照
     */
    public void setKnowledgeBindings(List<AgentKnowledgeBinding> knowledgeBindings) {
        this.knowledgeBindings = knowledgeBindings;
    }

    /**
     * 获取草稿试运行会话 ID。
     *
     * @return 会话 ID
     */
    public String getSessionId() {
        return sessionId;
    }

    /**
     * 设置草稿试运行会话 ID。
     *
     * @param sessionId 会话 ID
     */
    public void setSessionId(String sessionId) {
        this.sessionId = sessionId;
    }

    /**
     * 获取用户纯文本输入。
     *
     * @return 用户输入
     */
    public String getPrompt() {
        return prompt;
    }

    /**
     * 设置用户纯文本输入。
     *
     * @param prompt 用户输入
     */
    public void setPrompt(String prompt) {
        this.prompt = prompt;
    }

    /**
     * 获取本轮临时图片上传 ID。
     *
     * @return 图片上传 ID
     */
    public List<String> getImageUploadIds() {
        return imageUploadIds;
    }

    /**
     * 设置本轮临时图片上传 ID。
     *
     * @param imageUploadIds 图片上传 ID
     */
    public void setImageUploadIds(List<String> imageUploadIds) {
        this.imageUploadIds = imageUploadIds == null ? new ArrayList<>() : new ArrayList<>(imageUploadIds);
    }
}
