// retoor import Foundation enum IpcCommand: String, Codable { case addCheck case removeCheck case updateCheck case listChecks case getMetrics case ping case shutdown } struct IpcRequest: Codable { let reqId: Int let command: IpcCommand let payload: [String: String]? } struct CheckTarget: Codable { let uid: String let type: String let target: String let intervalSeconds: Int let port: Int? let protocolType: String? } struct IpcResponse: Codable { let reqId: Int let kind: String let payload: String? let checks: [CheckTarget]? let metrics: [MetricSample]? let error: String? } struct MetricSample: Codable { let checkUid: String let timestamp: Double let latencyMs: Double let status: String let statusCode: Int let errorMessage: String? } enum IpcProtocol { static func readRequest(from line: String) -> IpcRequest? { guard let data = line.data(using: .utf8) else { return nil } return try? JSONDecoder().decode(IpcRequest.self, from: data) } static func writeResponse(_ response: IpcResponse) -> String? { let encoder = JSONEncoder() guard let data = try? encoder.encode(response) else { return nil } return String(data: data, encoding: .utf8) } }