using BotSharp.Abstraction.Agents.Models; using BotSharp.Abstraction.Repositories; using Microsoft.Extensions.Caching.Memory; 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(AppDomain.CurrentDomain.BaseDirectory, dbSettings.FileRepository, _agentSettings.DataDir); var user = _db.GetUserById(_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); var samples = FetchSamplesFromFile(dir); agent.SetInstruction(instruction) .SetTemplates(templates) .SetFunctions(functions) .SetResponses(responses) .SetSamples(samples); var userAgent = new UserAgent { Id = Guid.NewGuid().ToString(), UserId = user.Id, AgentId = agent.Id, Editable = false, CreatedTime = DateTime.UtcNow, UpdatedTime = DateTime.UtcNow }; agents.Add(agent); userAgents.Add(userAgent); } _db.BulkInsertAgents(agents); _db.BulkInsertUserAgents(userAgents); Utilities.ClearCache(); } }