package com.easyagents.agent.runtime.tool.asynctool;

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

/**
 * 异步工具提交结果。
 */
public class AsyncToolSubmitResult {

    private String taskId;
    private AsyncToolTaskStatus status;
    /**
     * 提交后调用方已读取到的事件位置，后续 observe 可从该位置继续增量读取。
     */
    private Long cursor;
    private String summary;
    private String nextAction;
    private Map<String, Object> payload = new LinkedHashMap<>();
    private Map<String, Object> metadata = new LinkedHashMap<>();

    /**
     * 创建空提交结果。
     */
    public AsyncToolSubmitResult() {
    }

    /**
     * 获取任务 ID。
     *
     * @return 任务 ID
     */
    public String getTaskId() {
        return taskId;
    }

    /**
     * 设置任务 ID。
     *
     * @param taskId 任务 ID
     */
    public void setTaskId(String taskId) {
        this.taskId = taskId;
    }

    /**
     * 获取任务状态。
     *
     * @return 任务状态
     */
    public AsyncToolTaskStatus getStatus() {
        return status;
    }

    /**
     * 设置任务状态。
     *
     * @param status 任务状态
     */
    public void setStatus(AsyncToolTaskStatus status) {
        this.status = status;
    }

    /**
     * 获取当前事件读取位置。
     *
     * @return 当前事件读取位置
     */
    public Long getCursor() {
        return cursor;
    }

    /**
     * 设置当前事件读取位置。
     *
     * @param cursor 当前事件读取位置
     */
    public void setCursor(Long cursor) {
        this.cursor = cursor;
    }

    /**
     * 获取摘要。
     *
     * @return 摘要
     */
    public String getSummary() {
        return summary;
    }

    /**
     * 设置摘要。
     *
     * @param summary 摘要
     */
    public void setSummary(String summary) {
        this.summary = summary;
    }

    /**
     * 获取下一步建议。
     *
     * @return 下一步建议
     */
    public String getNextAction() {
        return nextAction;
    }

    /**
     * 设置下一步建议。
     *
     * @param nextAction 下一步建议
     */
    public void setNextAction(String nextAction) {
        this.nextAction = nextAction;
    }

    /**
     * 获取业务扩展载荷。
     *
     * @return 业务扩展载荷
     */
    public Map<String, Object> getPayload() {
        return payload;
    }

    /**
     * 设置业务扩展载荷。
     *
     * @param payload 业务扩展载荷
     */
    public void setPayload(Map<String, Object> payload) {
        this.payload = payload == null ? new LinkedHashMap<>() : payload;
    }

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

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