I write a library a while ago that lets you give NPCs complex agendas, so they appear to have independent lives. I have extended that so now the player can control your NPCs.
It allows the player to use commands like this:
mary, get ring
tell mary to give the ring to the mysterious guy
tell guy to follow me
tell guy to wait
guy, go north
mary, sit on couch
tell mary to stand up
tell mary to go to the garage
You can control what items can be taken and dropped, what happens when an NPC gives an item, and whether the NPC just refuses.
Currently this as in beta testing, so there may well be bugs. Please take a look, and let me what what does not work or should be added/changed.