using BotSharp.Abstraction.Agents.Models; using BotSharp.Abstraction.Repositories; using System.IO; namespace BotSharp.Core.Agents.Services; public partial class AgentService { public async Task RefreshAgents() { var isDeleted = _db.DeleteAgents(); if (!isDeleted) return; var dbSettings = _services.GetRequiredService(); var agentDir = Path.Combine(dbSettings.FileRepository, _agentSettings.DataDir); var user = _db.Users.FirstOrDefault(x => x.Id == _user.Id || x.ExternalId == _user.Id); var agents = new List(); var userAgents = new List(); foreach (var dir in Directory.GetDirectories(agentDir)) { var agentJson = File.ReadAllText(Path.Combine(dir, "agent.json")); var agent = JsonSerializer.Deserialize(agentJson, _options); if (agent == null) continue; var functions = FetchFunctionsFromFile(dir); var instruction = FetchInstructionFromFile(dir); var responses = FetchResponsesFromFile(dir); var templates = FetchTemplatesFromFile(dir); agent.SetInstruction(instruction) .SetTemplates(templates) .SetFunctions(functions) .SetResponses(responses); var userAgent = new UserAgent { Id = Guid.NewGuid().ToString(), UserId = user.Id, AgentId = agent.Id, CreatedTime = DateTime.UtcNow, UpdatedTime = DateTime.UtcNow }; agents.Add(agent); userAgents.Add(userAgent); } _db.BulkInsertAgents(agents); _db.BulkInsertUserAgents(userAgents); } }