Don't create a repo object until one is needed

This makes it easier to load repos in of processes that are already async (creating sections) instead of processes that are blocking (requiring modules)

Some basic testing suggests this improves prompt generation time *very* slightly