package tech.easyflow.agent.runtime;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * Agent 工具调用人工确认事件载荷。
 */
public class AgentToolHitlPayload {

    private String requestId;
    private String resumeToken;
    private String sessionId;
    private String agentId;
    private String toolCallId;
    private String toolName;
    private String toolDisplayName;
    private String toolType;
    private Map<String, Object> input = new LinkedHashMap<>();
    private String expiresAt;
    private Map<String, Object> metadata = new LinkedHashMap<>();

    /**
     * 获取运行请求 ID。
     *
     * @return 运行请求 ID
     */
    public String getRequestId() {
        return requestId;
    }

    /**
     * 设置运行请求 ID。
     *
     * @param requestId 运行请求 ID
     */
    public void setRequestId(String requestId) {
        this.requestId = requestId;
    }

    /**
     * 获取恢复令牌。
     *
     * @return 恢复令牌
     */
    public String getResumeToken() {
        return resumeToken;
    }

    /**
     * 设置恢复令牌。
     *
     * @param resumeToken 恢复令牌
     */
    public void setResumeToken(String resumeToken) {
        this.resumeToken = resumeToken;
    }

    /**
     * 获取会话 ID。
     *
     * @return 会话 ID
     */
    public String getSessionId() {
        return sessionId;
    }

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

    /**
     * 获取 Agent ID。
     *
     * @return Agent ID
     */
    public String getAgentId() {
        return agentId;
    }

    /**
     * 设置 Agent ID。
     *
     * @param agentId Agent ID
     */
    public void setAgentId(String agentId) {
        this.agentId = agentId;
    }

    /**
     * 获取工具调用 ID。
     *
     * @return 工具调用 ID
     */
    public String getToolCallId() {
        return toolCallId;
    }

    /**
     * 设置工具调用 ID。
     *
     * @param toolCallId 工具调用 ID
     */
    public void setToolCallId(String toolCallId) {
        this.toolCallId = toolCallId;
    }

    /**
     * 获取工具名称。
     *
     * @return 工具名称
     */
    public String getToolName() {
        return toolName;
    }

    /**
     * 设置工具名称。
     *
     * @param toolName 工具名称
     */
    public void setToolName(String toolName) {
        this.toolName = toolName;
    }

    /**
     * 获取工具展示名称。
     *
     * @return 工具展示名称
     */
    public String getToolDisplayName() {
        return toolDisplayName;
    }

    /**
     * 设置工具展示名称。
     *
     * @param toolDisplayName 工具展示名称
     */
    public void setToolDisplayName(String toolDisplayName) {
        this.toolDisplayName = toolDisplayName;
    }

    /**
     * 获取工具类型。
     *
     * @return 工具类型
     */
    public String getToolType() {
        return toolType;
    }

    /**
     * 设置工具类型。
     *
     * @param toolType 工具类型
     */
    public void setToolType(String toolType) {
        this.toolType = toolType;
    }

    /**
     * 获取工具入参。
     *
     * @return 工具入参
     */
    public Map<String, Object> getInput() {
        return input;
    }

    /**
     * 设置工具入参。
     *
     * @param input 工具入参
     */
    public void setInput(Map<String, Object> input) {
        this.input = input == null ? new LinkedHashMap<>() : input;
    }

    /**
     * 获取过期时间。
     *
     * @return 过期时间
     */
    public String getExpiresAt() {
        return expiresAt;
    }

    /**
     * 设置过期时间。
     *
     * @param expiresAt 过期时间
     */
    public void setExpiresAt(String expiresAt) {
        this.expiresAt = expiresAt;
    }

    /**
     * 获取扩展元数据。
     *
     * @return 扩展元数据
     */
    public Map<String, Object> getMetadata() {
        return metadata;
    }

    /**
     * 设置扩展元数据。
     *
     * @param metadata 扩展元数据
     */
    public void setMetadata(Map<String, Object> metadata) {
        this.metadata = metadata == null ? new LinkedHashMap<>() : metadata;
    }
}
