package tech.easyflow.agent.runtime.tool;

import com.easyagents.core.model.chat.tool.Tool;
import org.springframework.stereotype.Service;
import tech.easyflow.ai.entity.PluginItem;

import java.util.Map;

/**
 * Agent Plugin 工具执行器。
 */
@Service
public class PluginToolExecutor {

    /**
     * 构建 Plugin 工具声明来源。
     *
     * @param pluginItem 插件工具
     * @return 工具声明来源
     */
    public Tool buildTool(PluginItem pluginItem) {
        return pluginItem.toFunction();
    }

    /**
     * 执行 Plugin 工具。
     *
     * @param pluginItem 插件工具
     * @param arguments 执行参数
     * @return 执行结果
     */
    public AgentToolExecutionResult execute(PluginItem pluginItem, Map<String, Object> arguments) {
        Object result = buildTool(pluginItem).invoke(arguments == null ? Map.of() : arguments);
        return new AgentToolExecutionResult(result, null);
    }
}
