feat(approvals): add profile-local per-tool policies

This commit is contained in:
Teknium 2026-07-12 20:50:20 -07:00
parent e589b739ca
commit 5bff2c28ee
No known key found for this signature in database
13 changed files with 1307 additions and 39 deletions

View file

@ -1037,6 +1037,7 @@ def handle_function_call(
tool_request_middleware_trace: Optional[List[Dict[str, Any]]] = None,
enabled_toolsets: Optional[List[str]] = None,
disabled_toolsets: Optional[List[str]] = None,
dispatch_registry: Any = None,
) -> str:
"""
Main function call dispatcher that routes calls to the tool registry.
@ -1276,19 +1277,26 @@ def handle_function_call(
session_id=session_id,
user_task=user_task,
)
from hermes_cli.middleware import run_tool_execution_middleware
if dispatch_registry is not None:
# An outer runtime wrapper already ran policy/middleware and
# armed the exact wrapper→registry handoff capability.
result = _dispatch(function_args)
else:
from hermes_cli.middleware import run_tool_execution_middleware
result = run_tool_execution_middleware(
function_name,
function_args,
_dispatch,
original_args=_tool_original_args,
task_id=task_id or "",
session_id=session_id or "",
tool_call_id=tool_call_id or "",
turn_id=turn_id or "",
api_request_id=api_request_id or "",
)
result = run_tool_execution_middleware(
function_name,
function_args,
_dispatch,
original_args=_tool_original_args,
task_id=task_id or "",
session_id=session_id or "",
tool_call_id=tool_call_id or "",
turn_id=turn_id or "",
api_request_id=api_request_id or "",
registry_entry=registry.get_entry(function_name),
dispatch_registry=registry,
)
finally:
if _approval_tokens is not None and reset_current_observability_context is not None:
try: