fix: update setup wizard logic to handle terminal availability

Modified the setup wizard to ensure it only skips execution when no terminal is available, improving compatibility with piped installations. Additionally, updated environment variable checks to use bool() for accurate provider configuration detection, addressing potential issues with empty values in .env files.
This commit is contained in:
teknium1 2026-03-03 18:40:30 -08:00
parent ffec21236d
commit 73f2998d48
2 changed files with 10 additions and 4 deletions

View file

@ -395,11 +395,14 @@ def run_setup_wizard(args):
# a template, so it always exists after install. We need an actual # a template, so it always exists after install. We need an actual
# inference provider to consider it "existing" (otherwise quick mode # inference provider to consider it "existing" (otherwise quick mode
# would skip provider selection, leaving hermes non-functional). # would skip provider selection, leaving hermes non-functional).
# NOTE: Use bool() not `is not None` — the .env template has empty
# values (e.g. OPENROUTER_API_KEY=) that load_dotenv sets to "", which
# passes `is not None` but isn't a real configured provider.
from hermes_cli.auth import get_active_provider from hermes_cli.auth import get_active_provider
active_provider = get_active_provider() active_provider = get_active_provider()
is_existing = ( is_existing = (
get_env_value("OPENROUTER_API_KEY") is not None bool(get_env_value("OPENROUTER_API_KEY"))
or get_env_value("OPENAI_BASE_URL") is not None or bool(get_env_value("OPENAI_BASE_URL"))
or active_provider is not None or active_provider is not None
) )

View file

@ -848,8 +848,11 @@ run_setup_wizard() {
return 0 return 0
fi fi
if [ "$IS_INTERACTIVE" = false ]; then # The setup wizard reads from /dev/tty, so it works even when the
log_info "Setup wizard skipped (non-interactive). Run 'hermes setup' after install." # install script itself is piped (curl | bash). Only skip if no
# terminal is available at all (e.g. Docker build, CI).
if ! [ -e /dev/tty ]; then
log_info "Setup wizard skipped (no terminal available). Run 'hermes setup' after install."
return 0 return 0
fi fi