> (you don't have to strictly follow this form)

**Use case**

Support manually snapshot for Keeper.

**Describe the solution you'd like**

Throught 4lw commands, such as `csnp`.


{
    if (keeper_dispatcher.isObserver())
        return "ro";
    else
        return "rw";
}
String RecoveryCommand::run()
{
    keeper_dispatcher.forceRecovery();
    return "ok";
}
String ApiVersionCommand::run()
{
    return toString(static_cast<uint8_t>(Coordination::current_keeper_api_version));
}
}