using System.Text.Json; using System.Text.Json.Serialization; namespace CopilotCoordinator.Models; /// /// WebSocket message envelope for all coordinator events. /// public class WsMessage { [JsonPropertyName("type")] public string Type { get; set; } = ""; [JsonPropertyName("data")] public JsonElement? Data { get; set; } public static string Serialize(string type, object? data = null) { var msg = new { type, data }; return JsonSerializer.Serialize(msg); } } public record KeyboardInfo(string Id, string? Name, DateTime ConnectedAt);