Save writes the session to disk. It is a no-op if there are no messages, so
brand-new (empty) sessions don't leave orphan files. Returns nil in that case.
type Session struct {
ID string `json:"id"`
Title string `json:"title,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
State agent.State `json:"state"`
}