Pattern for Persisting Structured Agent Outputs in LangGraph State (Instead of ToolMessage History)

In the latest LangGraph releases, what is the recommended way to persist structured agent outputs in state rather than having them buried inside ToolMessage history? Is explicit state mutation the intended pattern going forward?