withProtocol

Returns a configured COPY stamped with protocol -- built the same way bindToCurrentSession builds one -- so the facade can hand the same base recorder instance to both a WebSocket and an MQTT adapter without either mutating the other's protocol.