// ───────────────────────────────────────── proto/lesavka.proto syntax = "proto3"; package lesavka; message KeyboardReport { bytes data = 1; } message MouseReport { bytes data = 1; } message MonitorRequest { uint32 id = 1; uint32 max_bitrate = 2; } message VideoPacket { uint32 id = 1; uint64 pts = 2; bytes data = 3; } message AudioPacket { uint32 id = 1; uint64 pts = 2; bytes data = 3; } message ResetUsbReply { bool ok = 1; } // true = success message HandshakeSet { bool camera = 1; bool microphone = 2; } message Empty {} service Relay { rpc StreamKeyboard (stream KeyboardReport) returns (stream KeyboardReport); rpc StreamMouse (stream MouseReport) returns (stream MouseReport); rpc CaptureVideo (MonitorRequest) returns (stream VideoPacket); rpc CaptureAudio (MonitorRequest) returns (stream AudioPacket); rpc StreamMicrophone (stream AudioPacket) returns (stream Empty); rpc StreamCamera (stream VideoPacket) returns (stream Empty); rpc ResetUsb (Empty) returns (ResetUsbReply); } service Handshake { rpc GetCapabilities (Empty) returns (HandshakeSet); }