mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
fix(permissions): handle None response from ACP request_permission
This commit is contained in:
parent
027751606a
commit
ea06104a3c
2 changed files with 17 additions and 0 deletions
|
|
@ -63,6 +63,9 @@ def make_approval_callback(
|
||||||
logger.warning("Permission request timed out or failed: %s", exc)
|
logger.warning("Permission request timed out or failed: %s", exc)
|
||||||
return "deny"
|
return "deny"
|
||||||
|
|
||||||
|
if response is None:
|
||||||
|
return "deny"
|
||||||
|
|
||||||
outcome = response.outcome
|
outcome = response.outcome
|
||||||
if isinstance(outcome, AllowedOutcome):
|
if isinstance(outcome, AllowedOutcome):
|
||||||
option_id = outcome.option_id
|
option_id = outcome.option_id
|
||||||
|
|
|
||||||
|
|
@ -73,3 +73,17 @@ class TestApprovalMapping:
|
||||||
result = cb("rm -rf /", "dangerous")
|
result = cb("rm -rf /", "dangerous")
|
||||||
|
|
||||||
assert result == "deny"
|
assert result == "deny"
|
||||||
|
|
||||||
|
def test_approval_none_response_returns_deny(self):
|
||||||
|
"""When request_permission resolves to None, the callback should return 'deny'."""
|
||||||
|
loop = MagicMock(spec=asyncio.AbstractEventLoop)
|
||||||
|
mock_rp = MagicMock(name="request_permission")
|
||||||
|
|
||||||
|
future = MagicMock(spec=Future)
|
||||||
|
future.result.return_value = None
|
||||||
|
|
||||||
|
with patch("acp_adapter.permissions.asyncio.run_coroutine_threadsafe", return_value=future):
|
||||||
|
cb = make_approval_callback(mock_rp, loop, session_id="s1", timeout=1.0)
|
||||||
|
result = cb("echo hi", "demo")
|
||||||
|
|
||||||
|
assert result == "deny"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue