loadHistory repeatedly set sending=false during server-side tool execution
by incorrectly inferring run completion from message content.
Run completion is now ONLY signalled by:
1. Gateway's phase 'completed' event (gateway.ts)
2. Streaming 'final' event (runtime-event-handlers.ts)
3. Safety timeout after 90s of no events
Also: fully controlled graph expanded prop, stable key, card.active
decoupled from streamingReplyText, suppressThinking prop.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>