append(
self,
messages: Sequence[BaseMessage],
) -> NoneAppend checkpoint or input messages to the root transcript.
Deliberately bypasses attempt staging: these messages are turn inputs and checkpoint history, not model output, so no attempt owns them and none should be able to discard them. Callers append them between turns, never while a scope is open -- doing so would order them ahead of model output that was staged earlier.