MDNSAdvertisement
Tag carrying enough information to connect via WebSocket to a peer that was discovered via mDNS / Bonjour.
Discovery via mDNS is handled by MDNSServiceDiscoverer; connection is delegated to :kuilt-websocket. This advertisement bridges the two.
Schema versioning
PROTOCOL_VERSION is "2" (v2 schema). v1 readers silently ignore the new keys per DNS-SD rules; v2 readers tolerate missing optional keys.
Application extensions
Callers may carry arbitrary application-specific metadata via txtExtensions. Each entry is written as an additional TXT record key–value pair. kuilt does not interpret these values — they round-trip opaquely through the discover path and arrive in the MDNSAdvertisement emitted by MDNSServiceDiscoverer.
Types
Properties
OS family of the advertising host — for fabric selection.
The stable room identity this host advertises — carried in the TXT_KEY_ROOM TXT entry when non-null. A joiner reads it back and targets it in its admission handshake; null (the backward-compatible default) means the host advertises no explicit room and admits without a room check. See Tag.roomKey.
The advertising peer's PeerId.
Human-readable service name from the mDNS TXT record.
Arbitrary application-supplied TXT record key–value pairs. These are written into the mDNS TXT record alongside the kuilt-owned fields and recovered verbatim by MDNSServiceDiscoverer. Keys must not collide with the kuilt-reserved constants in Companion.
WebSocket path to connect to (default: DEFAULT_WS_PATH).