package com.easyagents.agent.runtime.skill;

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

/**
 * Skill 加载工具调用记录。
 */
public class AgentSkillLoadCall {

    private final String toolCallId;
    private final String skillId;
    private final String skillName;
    private final String skillDisplayName;
    private final String skillBoxId;
    private final String path;
    private final Map<String, Object> input;

    /**
     * 创建 Skill 加载工具调用记录。
     *
     * @param toolCallId 工具调用 ID
     * @param skillId Skill ID
     * @param skillName Skill 名称
     * @param skillBoxId SkillBox ID
     * @param path 资源路径
     * @param input 工具输入
     */
    public AgentSkillLoadCall(String toolCallId,
                              String skillId,
                              String skillName,
                              String skillBoxId,
                              String path,
                              Map<String, Object> input) {
        this(toolCallId, skillId, skillName, skillName, skillBoxId, path, input);
    }

    /**
     * 创建带展示名称的 Skill 加载工具调用记录。
     *
     * @param toolCallId 工具调用 ID
     * @param skillId Skill ID
     * @param skillName Skill 规范名称
     * @param skillDisplayName Skill 展示名称
     * @param skillBoxId SkillBox ID
     * @param path 资源路径
     * @param input 工具输入
     */
    public AgentSkillLoadCall(String toolCallId,
                              String skillId,
                              String skillName,
                              String skillDisplayName,
                              String skillBoxId,
                              String path,
                              Map<String, Object> input) {
        this.toolCallId = toolCallId;
        this.skillId = skillId;
        this.skillName = skillName;
        this.skillDisplayName = skillDisplayName == null || skillDisplayName.isBlank()
                ? skillName
                : skillDisplayName;
        this.skillBoxId = skillBoxId;
        this.path = path;
        this.input = input == null ? new LinkedHashMap<>() : new LinkedHashMap<>(input);
    }

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

    /**
     * 获取 Skill ID。
     *
     * @return Skill ID
     */
    public String getSkillId() {
        return skillId;
    }

    /**
     * 获取 Skill 名称。
     *
     * @return Skill 名称
     */
    public String getSkillName() {
        return skillName;
    }

    /**
     * 获取 Skill 展示名称。
     *
     * @return Skill 展示名称
     */
    public String getSkillDisplayName() {
        return skillDisplayName;
    }

    /**
     * 获取 SkillBox ID。
     *
     * @return SkillBox ID
     */
    public String getSkillBoxId() {
        return skillBoxId;
    }

    /**
     * 获取资源路径。
     *
     * @return 资源路径
     */
    public String getPath() {
        return path;
    }

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