package com.easyagents.agent.runtime.mcp;

import com.easyagents.agent.runtime.tool.AgentToolSpec;
import io.agentscope.core.tool.mcp.McpClientWrapper;

import java.util.ArrayList;
import java.util.List;

/**
 * MCP 注册结果。
 */
public class McpRegistration {

    private final List<McpClientWrapper> clients;
    private final List<AgentToolSpec> toolSpecs;
    private final List<McpSkillRegistration> skillRegistrations;

    /**
     * 创建 MCP 注册结果。
     *
     * @param clients 已创建 MCP client
     * @param toolSpecs 已注册工具声明
     */
    public McpRegistration(List<McpClientWrapper> clients, List<AgentToolSpec> toolSpecs) {
        this(clients, toolSpecs, List.of());
    }

    /**
     * 创建 MCP 注册结果。
     *
     * @param clients 已创建 MCP client
     * @param toolSpecs 已发现工具声明
     * @param skillRegistrations 等待注册到 Skill 的 MCP client
     */
    public McpRegistration(List<McpClientWrapper> clients,
                           List<AgentToolSpec> toolSpecs,
                           List<McpSkillRegistration> skillRegistrations) {
        this.clients = clients == null ? List.of() : new ArrayList<>(clients);
        this.toolSpecs = toolSpecs == null ? List.of() : new ArrayList<>(toolSpecs);
        this.skillRegistrations = skillRegistrations == null
                ? List.of()
                : new ArrayList<>(skillRegistrations);
    }

    /**
     * 创建空注册结果。
     *
     * @return 空注册结果
     */
    public static McpRegistration empty() {
        return new McpRegistration(List.of(), List.of());
    }

    /**
     * 获取已创建 MCP client。
     *
     * @return 已创建 MCP client
     */
    public List<McpClientWrapper> getClients() {
        return clients;
    }

    /**
     * 获取已注册工具声明。
     *
     * @return 已注册工具声明
     */
    public List<AgentToolSpec> getToolSpecs() {
        return toolSpecs;
    }

    /**
     * 获取等待注册到 Skill 的 MCP client。
     *
     * @return Skill MCP 注册声明
     */
    public List<McpSkillRegistration> getSkillRegistrations() {
        return skillRegistrations;
    }
}
