Persisted turn time — fallback offset origin when the turn has no UtteranceStartMs.
Stable identity for the @for track.
The transcript text shown on the turn.
Speaker. The player only distinguishes 'User' (human) from everything else (the agent).
OptionalUtterancePrecise media-relative end (ms from recording t0). null/absent → derived from the next turn / duration.
OptionalUtterancePrecise media-relative start (ms from recording t0). null/absent when the driver supplied no
timing — the player falls back to (__mj_CreatedAt − RecordingStartedAt).
The MINIMAL structural shape of a transcript turn this player needs — exactly the fields it reads for the click-to-seek transcript and the playhead-sync highlight. Deliberately NOT the full
MJConversationDetailEntity: that keeps the player reusable by ANY caller that can supply these fields (the in-conversation session-review overlay passes its lighterRealtimeSessionReviewTurn; the Realtime Recordings dashboard passes fullMJConversationDetailEntityrows — both satisfy this widened shape structurally).Field unions/nullability are intentionally WIDER than the generated entity so an
MJConversationDetailEntity[]remains assignable here.