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);
}