RunResult is the durable result of an agent. It contains the run record, messages, steps, usage and cost, warnings, finish reasons, and final output.
Use TextStream() for live answer text and FullStream() for model, tool, step, run, and provider-item events. C# currently exposes provider items through generic objects rather than the TypeScript AgentItem discriminated union.
Build product timelines from lifecycle events while the run is active, then rebuild the final state from persisted messages and steps.