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, Func onFunctionExecuting); Task InvokeFunction(string name, RoleDialogModel messages, Func? onFunctionExecuting = null); Task InstructLoop(RoleDialogModel message, List dialogs, Func onFunctionExecuting); /// /// 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); }