The SLIME protocol currently provides, I believe, two operations for reading input from the Emacs user: the READ-STRING mechanism and a simple Y-OR-N-P device. In order to prompt the user for specific input, one must send a string to Emacs and then parse a string read from Emacs, but this is all line-oriented and provides no fancy input mechanisms on the user's side, such as completion, so it's hard to offer a convenient prompt to the user from the Lisp side, such as in restart functions.
Does it sound like a good idea to define a (:PROMPT <prompt string> <input type>) RPC to be called from Lisp? For instance, a USE-VALUE restart might send (:PROMPT "Value to use instead:" EXPRESSION) to request input from the user, rather than printing the prompt directly to standard output and reading from standard input, as is usually done now. This way, Emacs would be given more leeway in presenting the prompt -- e.g., it might use the typein window instead of cluttering the REPL buffer --, and it would allow for completion, editing not restricted to lines (like the usual REPL prompt), &c.
It is probably pretty easy to implement; I'll experiment with it soon, but I wondered what others thought about the matter.