Expand description
The client’s own view of the agent’s state.
Deliberately not the server’s type. A front-end team is handed a JSON shape, not a crate, and writes the struct it wants to render from — so this is a second, independent declaration of the same wire contract, and the integration tests are what keep the two honest about each other.
It carries only what the view draws. nextId is on the wire and absent
here, which is the case worth having: Session deserializes state into S
by value, so a client that models less than the agent publishes has to keep
working, and a client that models it wrongly has to say so.