package tech.easyflow.agent.runtime;

import com.easyagents.agent.runtime.AgentDefinition;
import com.easyagents.agent.runtime.knowledge.AgentKnowledgeRetriever;
import com.easyagents.agent.runtime.tool.AgentToolInvoker;

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

/**
 * Agent 运行时编译结果。
 */
public class AgentRuntimeBundle {

    private AgentDefinition definition;
    private Map<String, AgentToolInvoker> toolInvokers = new LinkedHashMap<>();
    private Map<String, AgentKnowledgeRetriever> knowledgeRetrievers = new LinkedHashMap<>();

    /**
     * 获取 Agent 定义。
     *
     * @return Agent 定义
     */
    public AgentDefinition getDefinition() {
        return definition;
    }

    /**
     * 设置 Agent 定义。
     *
     * @param definition Agent 定义
     */
    public void setDefinition(AgentDefinition definition) {
        this.definition = definition;
    }

    /**
     * 获取工具调用器。
     *
     * @return 工具调用器
     */
    public Map<String, AgentToolInvoker> getToolInvokers() {
        return toolInvokers;
    }

    /**
     * 设置工具调用器。
     *
     * @param toolInvokers 工具调用器
     */
    public void setToolInvokers(Map<String, AgentToolInvoker> toolInvokers) {
        this.toolInvokers = toolInvokers == null ? new LinkedHashMap<>() : toolInvokers;
    }

    /**
     * 获取知识库检索器。
     *
     * @return 知识库检索器
     */
    public Map<String, AgentKnowledgeRetriever> getKnowledgeRetrievers() {
        return knowledgeRetrievers;
    }

    /**
     * 设置知识库检索器。
     *
     * @param knowledgeRetrievers 知识库检索器
     */
    public void setKnowledgeRetrievers(Map<String, AgentKnowledgeRetriever> knowledgeRetrievers) {
        this.knowledgeRetrievers = knowledgeRetrievers == null ? new LinkedHashMap<>() : knowledgeRetrievers;
    }
}
