но как получать доступ к состоянию?
По проблеме, я думаю, что тут хорошо подойдет общий интерфейс, чтобы можно было подключать сервисы. А сами сервисы, возможно, будет удобно подключать через UI с помощью компонентов или директив.
И они будут работать по общему протоколу (Interceptor pattern), и каждый реализовывать свою дополнительную логику, которая будет работать через UI.