смотря где находится репозиторий вопрос более широкий на самом деле, в простом приложении можно принебречь чем-то, в большом такого делать нельзя в идеале конечно нужно чтобы view model общалась только с интеракторами
Нет универсального рецепта архитектуры для любого приложения. Можно конечно что-то подобное сделать но часто это будет большой оверхед. Нужно просто понимать для чего и зачем ты что-то разделяешь по слоям и как будешь этим пользоваться.
Если из репозиторя возвращается Result<SomeObject>, то как с ним работать в интеракторе? В result есть колбеки onSucess. Onerror. Или будет лучше не оборачивать так?