There was a talk at Pycon 2017 about this [0] that's pretty good. He(amjith) goes through several examples with his favorite being bpython [1] and even covers writing such a thing in python live on stage.
The talk covers Prompt Toolkit. The presenter wrote pgcli and mycli, and covers most of your list as well.
But it's probably good to list it all out here, for the lazy, or the ones unable/unwilling to play youtube.
http://click.pocoo.org/6/