Every interactive turn now opens a turn id, emits turn.start with the text you submitted, and on finishing emits turn.complete with the last real assistant message, elapsed milliseconds, whether it was aborted, and the turn id. A module handler that returns text differing from the model's answer has that text appended to the transcript as a system notice prefixed with the names of the handlers that contributed. turn.step exists as a third event.
Details
The events are emitted unconditionally for interactive turns; nothing happens unless a plugin module registers handlers for them.
Evidence
turn.complete
Strings lifted out of the shipped bundle, so the claim above can be checked against them.