When the backend streams tokens and tool-calls instead of returning one response, "loading" stops being a boolean. You end up with a real state machine: idle, thinking, streaming, tool-running, done, ...