package com.easyagents.agent.runtime.persistence;

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

/**
 * 可恢复状态的运行时检查点。
 */
public class AgentRuntimeCheckpoint {

    private String checkpointId;
    private String sessionId;
    private String agentId;
    private Map<String, Object> state = new LinkedHashMap<>();
    private Instant createdAt = Instant.now();

    /**
     * 获取检查点ID。
     *
     * @return 检查点ID
     */
    public String getCheckpointId() {
        return checkpointId;
    }

    /**
     * 设置检查点ID。
     *
     * @param checkpointId 检查点ID
     */
    public void setCheckpointId(String checkpointId) {
        this.checkpointId = checkpointId;
    }

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

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

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

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

    /**
     * 获取状态载荷。
     *
     * @return 状态载荷
     */
    public Map<String, Object> getState() {
        return state;
    }

    /**
     * 设置状态载荷。
     *
     * @param state 状态载荷
     */
    public void setState(Map<String, Object> state) {
        this.state = state == null ? new LinkedHashMap<>() : state;
    }

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

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