package com.pavis.admin.aigc.service;

import com.pavis.admin.aigc.model.entity.AgentKnowledgeDO;
import com.pavis.admin.aigc.model.entity.KnowledgeDO;
import com.pavis.admin.aigc.model.entity.ToolDO;
import com.pavis.admin.aigc.model.req.AgentToolReq;
import top.continew.starter.extension.crud.service.BaseService;
import com.pavis.admin.aigc.model.query.AgentQuery;
import com.pavis.admin.aigc.model.req.AgentReq;
import com.pavis.admin.aigc.model.resp.AgentDetailResp;
import com.pavis.admin.aigc.model.resp.AgentResp;

import java.util.List;

/**
 * 智能体业务接口
 *
 * @author semi
 * @since 2025/05/26 17:28
 */
public interface AgentService extends BaseService<AgentResp, AgentDetailResp, AgentQuery, AgentReq> {

    /**
     * 根据智能体编码获取智能体信息
     *
     * @param agentCode 智能体编码
     * @return 智能体信息
     */
    AgentResp getByCode(String agentCode);

    /**
     * 获取所有可用的智能体
     *
     * @return 可用的智能体列表
     */
    List<AgentResp> getAll();

    /**
     * 根据智能体ID获取关联知识库
     *
     * @param agentId 智能体ID
     * @return 智能体关联知识库
     */
    KnowledgeDO selAgentKnowList(Long agentId);

    /**
     * 根据智能体ID获取tool
     *
     * @param agentId 智能体ID
     * @return tool详情
     */
    List<ToolDO> selTool(Long agentId);


    /**
     * 删除智能体关联工具
     * @param agentToolReq 智能体ID跟工具ID的实体
     */
    void delToolToAgent(AgentToolReq agentToolReq);


}