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();
//int GetRecursiveCounter();
//void SetRecursiveCounter(int counter);
Task InvokeAgent(string agentId, List dialogs);
Task InvokeFunction(string name, RoleDialogModel messages);
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 = 100);
(bool, string) HasMissingRequiredField(RoleDialogModel message, out string agentId);
}