WebSocket protocol message types shared between agent and panel.
Messages are serialized with bincode for compact binary framing.
The config fields carry opaque JSON bytes — they are not interpreted
at the protocol layer and are parsed into typed configs by the runner.