mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-26 01:01:40 +00:00
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.
This commit is contained in:
parent
77061ac995
commit
2e722ee29a
4 changed files with 35 additions and 13 deletions
|
|
@ -33,7 +33,11 @@ import fal_client
|
|||
|
||||
from tools.debug_helpers import DebugSession
|
||||
from tools.managed_tool_gateway import resolve_managed_tool_gateway
|
||||
from tools.tool_backend_helpers import managed_nous_tools_enabled, prefers_gateway
|
||||
from tools.tool_backend_helpers import (
|
||||
fal_key_is_configured,
|
||||
managed_nous_tools_enabled,
|
||||
prefers_gateway,
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -286,7 +290,7 @@ _managed_fal_client_lock = threading.Lock()
|
|||
def _resolve_managed_fal_gateway():
|
||||
"""Return managed fal-queue gateway config when the user prefers the gateway
|
||||
or direct FAL credentials are absent."""
|
||||
if os.getenv("FAL_KEY") and not prefers_gateway("image_gen"):
|
||||
if fal_key_is_configured() and not prefers_gateway("image_gen"):
|
||||
return None
|
||||
return resolve_managed_tool_gateway("fal-queue")
|
||||
|
||||
|
|
@ -623,9 +627,7 @@ def image_generate_tool(
|
|||
if not prompt or not isinstance(prompt, str) or len(prompt.strip()) == 0:
|
||||
raise ValueError("Prompt is required and must be a non-empty string")
|
||||
|
||||
fal_key_value = os.getenv("FAL_KEY")
|
||||
fal_key_set = bool(fal_key_value and fal_key_value.strip())
|
||||
if not (fal_key_set or _resolve_managed_fal_gateway()):
|
||||
if not (fal_key_is_configured() or _resolve_managed_fal_gateway()):
|
||||
message = "FAL_KEY environment variable not set"
|
||||
if managed_nous_tools_enabled():
|
||||
message += " and managed FAL gateway is unavailable"
|
||||
|
|
@ -736,9 +738,7 @@ def image_generate_tool(
|
|||
|
||||
def check_fal_api_key() -> bool:
|
||||
"""True if the FAL.ai API key (direct or managed gateway) is available."""
|
||||
fal_key_value = os.getenv("FAL_KEY")
|
||||
fal_key_set = bool(fal_key_value and fal_key_value.strip())
|
||||
return bool(fal_key_set or _resolve_managed_fal_gateway())
|
||||
return bool(fal_key_is_configured() or _resolve_managed_fal_gateway())
|
||||
|
||||
|
||||
def check_image_generation_requirements() -> bool:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue