From df57c2bc054ca8f990531dccf7293c01fbca1c56 Mon Sep 17 00:00:00 2001 From: mika kuns Date: Thu, 23 Apr 2026 12:15:28 +0200 Subject: [PATCH] feat(worker): seed default agents on startup --- src/ClaudeDo.Worker/Program.cs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/ClaudeDo.Worker/Program.cs b/src/ClaudeDo.Worker/Program.cs index 00d21d2..ce43e9c 100644 --- a/src/ClaudeDo.Worker/Program.cs +++ b/src/ClaudeDo.Worker/Program.cs @@ -38,6 +38,12 @@ var agentsDir = Path.Combine(ClaudeDo.Data.Paths.AppDataRoot(), "agents"); Directory.CreateDirectory(agentsDir); builder.Services.AddSingleton(new AgentFileService(agentsDir)); +var defaultAgentsBundleDir = Path.Combine(AppContext.BaseDirectory, "DefaultAgents"); +builder.Services.AddSingleton(sp => new DefaultAgentSeeder( + defaultAgentsBundleDir, + agentsDir, + sp.GetService>())); + // QueueService: singleton + hosted service (same instance). builder.Services.AddSingleton(); builder.Services.AddHostedService(sp => sp.GetRequiredService()); @@ -53,6 +59,19 @@ using (var scope = app.Services.CreateScope()) scope.ServiceProvider.GetRequiredService()); } +try +{ + var seeder = app.Services.GetRequiredService(); + var seedResult = await seeder.SeedMissingAsync(); + app.Logger.LogInformation( + "Default agents seeded: {Copied} copied, {Skipped} already present", + seedResult.Copied, seedResult.Skipped); +} +catch (Exception ex) +{ + app.Logger.LogWarning(ex, "Default agent seeding failed"); +} + app.MapHub("/hub"); app.Logger.LogInformation("ClaudeDo.Worker listening on http://127.0.0.1:{Port} (db: {Db})",