package tech.easyflow.ai.service;

import com.easyagents.core.model.chat.tool.Tool;
import com.easyagents.mcp.client.McpEnvironmentCheckResult;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import tech.easyflow.ai.entity.Mcp;
import tech.easyflow.common.domain.Result;

import java.io.Serializable;
import java.math.BigInteger;

/**
 *  服务层。
 *
 * @author wangGangQiang
 * @since 2026-01-04
 */
public interface McpService extends IService<Mcp> {

    Result<?> saveMcp(Mcp entity);

    Result<?> updateMcp(Mcp entity);

    void removeMcp(Serializable id);

    /**
     * 将指定 MCP 工具转换为运行时工具。
     *
     * @param mcpId MCP ID
     * @param mcpToolName MCP 工具名称
     * @return 运行时工具，不存在时返回 {@code null}
     */
    Tool toFunction(BigInteger mcpId, String mcpToolName);

    Result<Page<Mcp>> pageMcp(Result<Page<Mcp>> page);

    Mcp getMcpTools(String id);

    Page<Mcp> pageTools(Page<Mcp> mcpPage);

    McpEnvironmentCheckResult checkMcp(String configJson);
}
