mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-14 04:02:26 +00:00
feat(api-server): expose run approval events
This commit is contained in:
parent
e43d2fe520
commit
526c0e018a
3 changed files with 295 additions and 9 deletions
|
|
@ -83,6 +83,28 @@ def get_current_session_key(default: str = "default") -> str:
|
|||
from gateway.session_context import get_session_env
|
||||
return get_session_env("HERMES_SESSION_KEY", default)
|
||||
|
||||
|
||||
def _get_session_platform() -> str:
|
||||
"""Return the current gateway platform from contextvars/env fallback."""
|
||||
try:
|
||||
from gateway.session_context import get_session_env
|
||||
|
||||
return get_session_env("HERMES_SESSION_PLATFORM", "") or ""
|
||||
except Exception:
|
||||
return os.getenv("HERMES_SESSION_PLATFORM", "") or ""
|
||||
|
||||
|
||||
def _is_gateway_approval_context() -> bool:
|
||||
"""True when this call is inside a gateway/API session.
|
||||
|
||||
Legacy gateway integrations set HERMES_GATEWAY_SESSION in process env.
|
||||
Newer concurrent gateway paths bind HERMES_SESSION_PLATFORM via
|
||||
contextvars so approval mode does not depend on process-global flags.
|
||||
"""
|
||||
if os.getenv("HERMES_GATEWAY_SESSION"):
|
||||
return True
|
||||
return bool(_get_session_platform())
|
||||
|
||||
# Sensitive write targets that should trigger approval even when referenced
|
||||
# via shell expansions like $HOME or $HERMES_HOME.
|
||||
_SSH_SENSITIVE_PATH = r'(?:~|\$home|\$\{home\})/\.ssh(?:/|$)'
|
||||
|
|
@ -829,7 +851,7 @@ def check_dangerous_command(command: str, env_type: str,
|
|||
return {"approved": True, "message": None}
|
||||
|
||||
is_cli = os.getenv("HERMES_INTERACTIVE")
|
||||
is_gateway = os.getenv("HERMES_GATEWAY_SESSION")
|
||||
is_gateway = _is_gateway_approval_context()
|
||||
|
||||
if not is_cli and not is_gateway:
|
||||
# Cron sessions: respect cron_mode config
|
||||
|
|
@ -946,7 +968,7 @@ def check_all_command_guards(command: str, env_type: str,
|
|||
return {"approved": True, "message": None}
|
||||
|
||||
is_cli = os.getenv("HERMES_INTERACTIVE")
|
||||
is_gateway = os.getenv("HERMES_GATEWAY_SESSION")
|
||||
is_gateway = _is_gateway_approval_context()
|
||||
is_ask = os.getenv("HERMES_EXEC_ASK")
|
||||
|
||||
# Preserve the existing non-interactive behavior: outside CLI/gateway/ask
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue