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

import java.time.Instant;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 异步工具任务事件。
 */
public class AsyncToolTaskEvent {

    /**
     * 任务内单调递增事件序号，用于 cursor 增量读取。
     */
    private Long sequence;
    private String type;
    private String text;
    private Instant createdAt = Instant.now();
    private Map<String, Object> payload = new LinkedHashMap<>();

    /**
     * 创建空任务事件。
     */
    public AsyncToolTaskEvent() {
    }

    /**
     * 获取事件序号。
     *
     * @return 事件序号
     */
    public Long getSequence() {
        return sequence;
    }

    /**
     * 设置事件序号。
     *
     * @param sequence 事件序号
     */
    public void setSequence(Long sequence) {
        this.sequence = sequence;
    }

    /**
     * 获取事件类型。
     *
     * @return 事件类型
     */
    public String getType() {
        return type;
    }

    /**
     * 设置事件类型。
     *
     * @param type 事件类型
     */
    public void setType(String type) {
        this.type = type;
    }

    /**
     * 获取事件文本。
     *
     * @return 事件文本
     */
    public String getText() {
        return text;
    }

    /**
     * 设置事件文本。
     *
     * @param text 事件文本
     */
    public void setText(String text) {
        this.text = text;
    }

    /**
     * 获取事件创建时间。
     *
     * @return 事件创建时间
     */
    public Instant getCreatedAt() {
        return createdAt;
    }

    /**
     * 设置事件创建时间。
     *
     * @param createdAt 事件创建时间
     */
    public void setCreatedAt(Instant createdAt) {
        this.createdAt = createdAt == null ? Instant.now() : createdAt;
    }

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

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