package com.easyagents.agent.runtime.mcp;

import java.util.Objects;

/**
 * MCP Tool 冻结清单项。
 */
public class McpToolManifestEntry {

    private String name;
    private String description;
    private Object inputSchema;
    private Object outputSchema;

    /**
     * 获取 Tool 名称。
     *
     * @return Tool 名称
     */
    public String getName() {
        return name;
    }

    /**
     * 设置 Tool 名称。
     *
     * @param name Tool 名称
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取 Tool 描述。
     *
     * @return Tool 描述
     */
    public String getDescription() {
        return description;
    }

    /**
     * 设置 Tool 描述。
     *
     * @param description Tool 描述
     */
    public void setDescription(String description) {
        this.description = description;
    }

    /**
     * 获取输入 Schema。
     *
     * @return 输入 Schema
     */
    public Object getInputSchema() {
        return inputSchema;
    }

    /**
     * 设置输入 Schema。
     *
     * @param inputSchema 输入 Schema
     */
    public void setInputSchema(Object inputSchema) {
        this.inputSchema = inputSchema;
    }

    /**
     * 获取输出 Schema。
     *
     * @return 输出 Schema
     */
    public Object getOutputSchema() {
        return outputSchema;
    }

    /**
     * 设置输出 Schema。
     *
     * @param outputSchema 输出 Schema
     */
    public void setOutputSchema(Object outputSchema) {
        this.outputSchema = outputSchema;
    }

    @Override
    public boolean equals(Object other) {
        if (this == other) {
            return true;
        }
        if (!(other instanceof McpToolManifestEntry that)) {
            return false;
        }
        return Objects.equals(name, that.name)
                && Objects.equals(description, that.description)
                && Objects.equals(inputSchema, that.inputSchema)
                && Objects.equals(outputSchema, that.outputSchema);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, description, inputSchema, outputSchema);
    }
}
