Unlock the Bitwarden vault with the given master password.
Passes the password via env var to avoid exposure in ps output.
Returns the session token on success.
Clean up retry markers after a successful connection. ProxyJump connections
create one marker per hop and the parent process only knows the final
target alias, so we clear every ~/.purple/.askpass_* file on success.
Each marker has a 60s expiry; this just keeps rapid reconnects snappy and
prevents a stranded bastion marker from blocking the next attempt.
Handle an SSH_ASKPASS invocation. Called when purple is invoked as an askpass program.
Reads the password source from the host’s # purple:askpass comment and retrieves it.
Log in to Proton Pass with a Personal Access Token.
PAT is supplied via the PROTON_PASS_PERSONAL_ACCESS_TOKEN env var so it
never appears in argv. Returns an error wrapping pass-cli’s stderr on
non-zero exit so the prompt loop can surface it.
Check whether pass-cli is installed and the user is logged in. Uses
pass-cli test (not info) because in pass-cli 2.x info exits 0 even
without a session and only reports the error on stderr. test is the
command that actually exits non-zero when authentication is missing.