Fixes two contract violations found in audit (closes#2875):
1. `isWorkspaceEvent()` type guard added next to WorkspaceEvent type definition.
Applied at stream.onmessage JSON.parse boundary — replaces unsafe `as WorkspaceEvent`
cast with validated parse + explicit error path for malformed payloads.
2. `routeLiveInteractionEvent()` switch extended with explicit cases for all three
previously unhandled WorkspaceEvent variants:
- bridge_status: handled upstream with early return, never reaches router
- live_state_invalidation: handled upstream via handleLiveStateInvalidation
- extension_error: terminal line produced by summarizeEvent, no live state update needed