turnStartedAt property
Wall-clock start of the turn that produced this message, when known.
Survives an approval pause: resuming the same bubble keeps the original start so the elapsed timer covers the whole turn. Not serialized by toJson.
Plain (non-notifying) field: writers set it before the adjacent notifying isGenerating write so one notification publishes both.
Implementation
DateTime? turnStartedAt;