MessageTextBuilder
Builds a MessageText.
One builder, in :core, used by both transports. It replaces a TelegramTextBuilder that was duplicated verbatim in :ktg and :telegram — the copy's own comment apologised for itself and asked the next person to keep the two in sync, which is a job nothing checked.
text, bold, br, br2, row and list are the ones the old builder had and behave as they did, so a call site that only used those reads the same; the rest is what legacy Markdown could not express.
Nothing here escapes anything, because nothing downstream parses the text. A name with _, *, [ and a backtick in it goes through text and arrives exactly as typed.
Functions
Inline monospace. Does not nest — see TextPiece.Code.
A quote the client shows collapsed. Long output belongs here rather than in the message body.
The block's content on its own line, with a newline before it if one is not already there.