using BotSharp.Abstraction.Agents.Models; using System.IO; namespace BotSharp.Core.Agents.Services; public class AgentRouter : IAgentRouting { private readonly IServiceProvider _services; private readonly ILogger _logger; private readonly AgentSettings _settings; public AgentRouter(IServiceProvider services, ILogger logger, AgentSettings settings) { _services = services; _logger = logger; _settings = settings; } public async Task LoadRouter() { var agentService = _services.GetRequiredService(); var agent = await agentService.LoadAgent(_settings.RouterId); return agent; } public async Task LoadCurrentAgent() { // Load current agent from state var state = _services.GetRequiredService(); var currentAgentId = state.GetState("agent_id"); if (string.IsNullOrEmpty(currentAgentId)) { currentAgentId = _settings.RouterId; } var agentService = _services.GetRequiredService(); var agent = await agentService.LoadAgent(currentAgentId); // Set agent and trigger state changed state.SetState("agent_id", currentAgentId); return agent; } public RoutingRecord[] GetRoutingRecords() { var agentSettings = _services.GetRequiredService(); var dbSettings = _services.GetRequiredService(); var filePath = Path.Combine(dbSettings.FileRepository, agentSettings.DataDir, agentSettings.RouterId, "route.json"); return JsonSerializer.Deserialize(File.ReadAllText(filePath)); } }