using System.Text.Json.Serialization; namespace ClawdDotNet.Core.Config; public sealed class ServiceConfig { [JsonPropertyName("serviceId")] public string ServiceId { get; set; } = Guid.NewGuid().ToString("N")[..8]; [JsonPropertyName("name")] public string Name { get; set; } = ""; [JsonPropertyName("type")] public string Type { get; set; } = ""; [JsonPropertyName("port")] public int Port { get; set; } [JsonPropertyName("enabled")] public bool Enabled { get; set; } = true; [JsonPropertyName("autoStart")] public bool AutoStart { get; set; } [JsonPropertyName("description")] public string Description { get; set; } = ""; [JsonPropertyName("builtIn")] public bool BuiltIn { get; set; } } public static class BuiltInServices { public const string AgentChatWebUI = "AgentChatWebUI"; public const string AgentWebsite = "AgentWebsite"; public const string ClawdDotNetApi = "ClawdDotNetApi"; public const string InstanceWatchdog = "InstanceWatchdog"; public static List CreateDefaults() => [ new() { ServiceId = "svc_chat", Name = "Agent Chat WebUI", Type = AgentChatWebUI, Port = 5080, Enabled = true, AutoStart = true, BuiltIn = true, Description = "WebUI für den Agenten-Chat (WebView2)" }, new() { ServiceId = "svc_web", Name = "Agent Website", Type = AgentWebsite, Port = 5081, Enabled = false, AutoStart = false, BuiltIn = true, Description = "Von Agenten entwickelte und betreute Website" }, new() { ServiceId = "svc_api", Name = "ClawdDotNet API", Type = ClawdDotNetApi, Port = 5082, Enabled = true, AutoStart = true, BuiltIn = true, Description = "REST-API für die Kommunikation mit der WebApp" }, new() { ServiceId = "svc_watchdog", Name = "Instanz-Watchdog", Type = InstanceWatchdog, Port = 0, Enabled = false, AutoStart = true, BuiltIn = true, Description = "Sendet Heartbeats ans Deploymentcenter (URL/Token in den Anwendungseinstellungen)" } ]; }