One oft overlooked feature is bash supports dynamically loadable 'builtins' as shared object modules so it wouldn't take much to create a 'proper' wrapper around libncurses.
Debian and derivatives have the package "bash-builtins" that has a lot of examples including wrapping/implementing many coreutils tools.