Produce a plain, immutable IChatHistory snapshot of the current
state. The UI consumes a snapshot rather than this instance directly so
that each update yields a fresh object reference, keeping framework
reactivity (and any derived computed state) correct.
Serialize back to the on-the-wire INotebookChatHistory document
so the history round-trips when sent to the kernel (e.g. via
context_setup_request) or persisted into notebook metadata.
Produce a plain, immutable IChatHistory snapshot of the current state. The UI consumes a snapshot rather than this instance directly so that each update yields a fresh object reference, keeping framework reactivity (and any derived computed state) correct.