anchor.diff:  | DescribeRepl
   | Pop
   | Push of push_query
  -| VfsAdd of string (* fname *) * string (* contents *)
  +| VfsAdd of option<string> (* fname *) * string (* contents *)
   | AutoComplete of string * completion_context
   | Lookup of string * lookup_context * option<position> * list<string>
   | Compute of string * option<list<FStar.TypeChecker.Normalize.step>>
  
positive.code:                                   try_arg "rules"
                                      |> Util.map_option (js_list js_reductionrule))
             | "search" -> Search (arg "terms" |> js_str)
             | "vfs-add" -> VfsAdd (arg "filename" |> js_str, arg "contents" |> js_str)
             | _ -> ProtocolViolation (Util.format1 "Unknown query '%s'" query) }
    with
    | InvalidQuery msg -> { qid = qid; qq = ProtocolViolation msg }
  
negative.code:           { qid = q.qid; qq = GenericError "Current module unset" }
          | _ -> q
  
  let rec go st : int =
    let rec loop st : int =
      let query = validate_query st (read_interactive_query (repl_stdin st)) in
      let (status, response), state_opt = run_query st query.qq in
      write_response query.qid status response;
      match state_opt with
  