hermes-agent/hermes_cli
Teknium 2e722ee29a fix(fal): extend whitespace-only FAL_KEY handling to all call sites
Follow-up to PR #2504. The original fix covered the two direct FAL_KEY
checks in image_generation_tool but left four other call sites intact,
including the managed-gateway gate where a whitespace-only FAL_KEY
falsely claimed 'user has direct FAL' and *skipped* the Nous managed
gateway fallback entirely.

Introduce fal_key_is_configured() in tools/tool_backend_helpers.py as a
single source of truth (consults os.environ, falls back to .env for
CLI-setup paths) and route every FAL_KEY presence check through it:
  - tools/image_generation_tool.py : _resolve_managed_fal_gateway,
    image_generate_tool's upfront check, check_fal_api_key
  - hermes_cli/nous_subscription.py : direct_fal detection, selected
    toolset gating, tools_ready map
  - hermes_cli/tools_config.py     : image_gen needs-setup check

Verified by extending tests/tools/test_image_generation_env.py and by
E2E exercising whitespace + managed-gateway composition directly.
2026-04-21 02:04:21 -07:00
..
__init__.py
auth_commands.py fix(auth): unify credential source removal — every source sticks (#13427) 2026-04-21 01:52:49 -07:00
auth.py fix(auth): use ssl.SSLContext for CA bundle instead of deprecated string path (#12706) 2026-04-19 22:44:35 -07:00
backup.py fix(backup): handle files with pre-1980 timestamps 2026-04-20 00:47:40 -07:00
banner.py
callbacks.py
claw.py
cli_output.py
clipboard.py
codex_models.py fix: remove codex spark model support 2026-04-20 04:51:44 -07:00
colors.py
commands.py fix: publish plugin slash commands in Telegram menu 2026-04-20 05:11:39 -07:00
completion.py
config.py refactor: remove remaining redundant local imports (comprehensive sweep) 2026-04-21 00:50:58 -07:00
copilot_auth.py
cron.py
curses_ui.py
debug.py fix: two process leaks (agent-browser daemons, paste.rs sleepers) (#11843) 2026-04-17 18:46:30 -07:00
default_soul.py
dingtalk_auth.py
doctor.py fix: sweep remaining provider-URL substring checks across codebase 2026-04-20 22:14:29 -07:00
dump.py refactor: remove smart_model_routing feature (#12732) 2026-04-19 18:12:55 -07:00
env_loader.py fix(env_loader): warn when non-ASCII stripped from credential env vars (#13300) 2026-04-20 22:14:03 -07:00
gateway.py refactor: remove redundant local imports already available at module level 2026-04-21 00:50:58 -07:00
hooks.py feat: shell hooks — wire shell scripts as Hermes hook callbacks 2026-04-20 20:53:51 -07:00
logs.py
main.py fix(update): keep get_hermes_home late-bound in _install_hangup_protection 2026-04-21 00:50:58 -07:00
mcp_config.py
memory_setup.py
model_normalize.py
model_switch.py fix(model_switch): register custom: slug in seen_slugs for Section 3 providers 2026-04-20 12:21:54 -07:00
models.py feat(opencode-go): add Kimi K2.6 and Qwen3.5/3.6 Plus to curated catalog (#13429) 2026-04-21 01:56:55 -07:00
nous_subscription.py fix(fal): extend whitespace-only FAL_KEY handling to all call sites 2026-04-21 02:04:21 -07:00
pairing.py
platforms.py
plugins_cmd.py feat(plugins): make all plugins opt-in by default 2026-04-20 04:46:45 -07:00
plugins.py feat: shell hooks — wire shell scripts as Hermes hook callbacks 2026-04-20 20:53:51 -07:00
profiles.py fix(gateway): fix discrepancies in gateway status 2026-04-17 18:58:29 -07:00
providers.py fix: sweep remaining provider-URL substring checks across codebase 2026-04-20 22:14:29 -07:00
runtime_provider.py refactor: remove remaining redundant local imports (comprehensive sweep) 2026-04-21 00:50:58 -07:00
setup.py feat(opencode-go): add Kimi K2.6 and Qwen3.5/3.6 Plus to curated catalog (#13429) 2026-04-21 01:56:55 -07:00
skills_config.py
skills_hub.py
skin_engine.py
status.py fix(gateway): fix discrepancies in gateway status 2026-04-17 18:58:29 -07:00
timeouts.py fix(config): add stale timeout settings 2026-04-20 00:52:50 -07:00
tips.py chore(release): add sjz-ks to AUTHOR_MAP 2026-04-20 03:04:06 -07:00
tools_config.py fix(fal): extend whitespace-only FAL_KEY handling to all call sites 2026-04-21 02:04:21 -07:00
uninstall.py feat(uninstall): offer to remove named profiles when uninstalling from default 2026-04-18 19:18:13 -07:00
web_server.py refactor: remove redundant local imports already available at module level 2026-04-21 00:50:58 -07:00
webhook.py feat(webhook): direct delivery mode for zero-LLM push notifications (#12473) 2026-04-19 05:18:19 -07:00