using BotSharp.Abstraction.Routing.Settings; namespace BotSharp.Abstraction.Routing.Models; public class RoutingContext { private readonly RoutingSettings _setting; public RoutingContext(RoutingSettings setting) { _setting = setting; } private Stack _stack { get; set; } = new Stack(); /// /// Intent name /// public string IntentName { get; set; } /// /// Agent that can handle user original goal. /// public string OriginAgentId => _stack.Where(x => !_setting.AgentIds.Contains(x)).Last(); public bool IsEmpty => !_stack.Any(); public string GetCurrentAgentId() { return _stack.Peek(); } public void Push(string agentId) { if (_stack.Count == 0 || _stack.Peek() != agentId) { _stack.Push(agentId); } } /// /// Pop current agent /// public void Pop() { _stack.Pop(); } public void Empty() { _stack.Clear(); } }