Most RecoveryActionSources are initiated by KeyserverConnectionHandler when they are placed into Redux. The exceptions are managed directly by the SQLiteDataHandler on native. Much of the code is shared and extracted to the utils in recovery-utils.js.
By splitting these types, we can improve type safety in several places. We can also add a second protection against triggering this invariant: we know that KeyserverConnectionHandler will check CurrentUserInfo before initiating, so the invariant is safe.
Depends on D11690