sig
  module Command :
    sig type t = { connection : string; id : string; command : string; } end
  type up =
      [ `Get_all_ssh_ids of string
      | `Get_logs of string * [ `Full ]
      | `Kill of string
      | `Send_command of Ketrew_pure.Protocol.Process_sub_protocol.Command.t
      | `Send_ssh_input of string * string
      | `Start_ssh_connection of
          [ `Configured of string | `New of string * string ] ]
  module Ssh_connection :
    sig
      type status =
          [ `Alive of
              [ `Askpass_waiting_for_input of (float * string) list | `Idle ]
          | `Configured
          | `Dead of string
          | `Unknown of string ]
      type t = {
        id : string;
        name : string;
        uri : string;
        status :
          Ketrew_pure.Protocol.Process_sub_protocol.Ssh_connection.status;
      }
    end
  module Command_output :
    sig type t = { id : string; stdout : string; stderr : string; } end
  type down =
      [ `Command_output of
          Ketrew_pure.Protocol.Process_sub_protocol.Command_output.t
      | `Error of string
      | `List_of_ssh_ids of
          Ketrew_pure.Protocol.Process_sub_protocol.Ssh_connection.t list
      | `Logs of string * string
      | `Ok ]
end