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
# inference provider to consider it "existing" (otherwise quick mode
# 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
active_provider = get_active_provider()
is_existing = (
get_env_value("OPENROUTER_API_KEY") is not None
or get_env_value("OPENAI_BASE_URL") is not None
bool(get_env_value("OPENROUTER_API_KEY"))
or bool(get_env_value("OPENAI_BASE_URL"))
or active_provider is not None
)

View File

@@ -848,8 +848,11 @@ run_setup_wizard() {
return 0
fi
if [ "$IS_INTERACTIVE" = false ]; then
log_info "Setup wizard skipped (non-interactive). Run 'hermes setup' after install."
# The setup wizard reads from /dev/tty, so it works even when the
# 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
fi