sig   val init : unit -> unit   val toggle_verbose : unit -> unit   type +'a menu_item   val menu_item :     ?char:char -> ?log:SmartPrint.t -> '-> 'Ketrew.Interaction.menu_item   val menu :     ?max_per_page:int ->     ?always_there:'Ketrew.Interaction.menu_item list ->     sentence:SmartPrint.t ->     'Ketrew.Interaction.menu_item list ->     ('a, [> `Failure of string ]) Unix_io.t   val open_in_dollar_editor : string -> (unit, 'a) Unix_io.Deferred_result.t   val view_in_dollar_editor :     ?extension:string ->     string ->     (unit, [> `IO of [> `Write_file_exn of string * exn ] ])     Unix_io.Deferred_result.t   val ask_for_edition :     ?extension:string ->     string ->     (string,      [> `IO of           [> `Read_file_exn of Unix_io.IO.path * exn            | `Write_file_exn of Unix_io.IO.path * exn ] ])     Unix_io.Deferred_result.t   val get_key : unit -> (char, [> `Failure of string ]) Unix_io.t   val build_sublist_of_targets :     client:Ketrew.Client.t ->     list_name:string ->     all_log:SmartPrint.t ->     go_verb:SmartPrint.t ->     filter:Ketrew_pure.Protocol.Up_message.filter ->     ([> `Cancel | `Go of string list ],      [> `Client of Ketrew.Client.Error.t       | `Database of Persistent_data.Error.database       | `Failure of string       | `IO of           [> `Read_file_exn of string * exn | `Write_file_exn of string * exn ]       | `System of [> `File_info of string ] * [> `Exn of exn ] ])     Unix_io.t   val make_target_menu :     targets:Ketrew_pure.Target.t list ->     ?filter_target:(Ketrew_pure.Target.t -> bool) ->     unit -> [> `Go of string ] Ketrew.Interaction.menu_item list   val run_with_quit_key :     < start : (unit, [> `Failure of string ] as 'start_error)               Unix_io.Deferred_result.t;       stop : unit > ->     (unit, 'start_error) Unix_io.Deferred_result.t   val read_password_exn : unit -> string end