using BotSharp.Abstraction.Routing.Models;
namespace BotSharp.Abstraction.Routing;
public interface IRoutingService
{
Agent Router { get; }
IRoutingContext Context { get; }
///
/// Get routable agents
///
/// router's profile
///
RoutableAgent[] GetRoutableAgents(List profiles);
///
/// Get rules by agent name
///
/// agent name
///
RoutingRule[] GetRulesByAgentName(string name);
///
/// Get rules by agent id
///
/// agent id
///
RoutingRule[] GetRulesByAgentId(string id);
List GetHandlers(Agent router);
void ResetRecursiveCounter();
Task InvokeAgent(string agentId, List dialogs);
Task InvokeFunction(string name, RoleDialogModel message);
Task InstructLoop(RoleDialogModel message, List dialogs);
///
/// Talk to a specific Agent directly, bypassing the Router
///
///
///
///
Task InstructDirect(Agent agent, RoleDialogModel message);
Task GetConversationContent(List dialogs, int maxDialogCount = 50);
(bool, string) HasMissingRequiredField(RoleDialogModel message, out string agentId);
}