Commit 0e5cdbd6 authored by Lisa (Hermes AI)'s avatar Lisa (Hermes AI)

fix: sync gateway tool handlers with live plugin

parent 20be10fd
...@@ -1733,36 +1733,44 @@ COMPUTER_CONTROL_SCHEMA = { ...@@ -1733,36 +1733,44 @@ COMPUTER_CONTROL_SCHEMA = {
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
def tool_node_list(params: Dict[str, Any] = None, **kwargs) -> Dict[str, Any]: def tool_node_list(*args, **kwargs) -> Dict[str, Any]:
"""List all connected nodes""" """List all connected nodes."""
gw = _get_gateway() gw = _get_gateway()
return json.dumps(gw.list_nodes()) return gw.list_nodes()
def tool_node_status(params: Dict[str, Any] = None, **kwargs) -> Dict[str, Any]: def tool_node_status(*args, **kwargs) -> Dict[str, Any]:
"""Get status of a specific node""" """Get status of a specific node."""
gw = _get_gateway() gw = _get_gateway()
params = args[0] if args else kwargs
node_name = params.get('node_name') node_name = params.get('node_name')
return json.dumps(gw.get_node_status(node_name)) if not node_name:
raise ValueError("Missing required parameter: 'node_name'")
return gw.get_node_status(node_name)
def tool_node_exec(params: Dict[str, Any] = None, **kwargs) -> Dict[str, Any]: def tool_node_exec(*args, **kwargs) -> Dict[str, Any]:
"""Execute command on a node""" """Execute command on a node."""
gw = _get_gateway() gw = _get_gateway()
params = args[0] if args else kwargs
node_name = params.get('node_name') node_name = params.get('node_name')
command = params.get('command') command = params.get('command')
timeout = params.get('timeout', 30) timeout = params.get('timeout', 30)
approved = params.get('approved', False) approved = params.get('approved', False)
if not node_name: if not node_name:
raise ValueError("Missing required parameter: 'node_name'") raise ValueError("Missing required parameter: 'node_name'")
if not command:
raise ValueError("Missing required parameter: 'command'")
with gw._nodes_lock: with gw._nodes_lock:
if node_name not in gw.nodes: if node_name not in gw.nodes:
available = list(gw.nodes.keys()) available = list(gw.nodes.keys())
raise ValueError(f"Node '{node_name}' is not connected. Available nodes: {available}") raise ValueError(f"Node '{node_name}' is not connected. Available nodes: {available}")
return json.dumps(gw.execute_command_sync(node_name, command, timeout, approved)) return gw.execute_command_sync(node_name, command, timeout, approved)
def tool_browser_control(*args, **kwargs) -> Dict[str, Any]: def tool_browser_control(*args, **kwargs) -> Dict[str, Any]:
"""Execute browser control command on a node""" """Execute browser control command on a node"""
gw = _get_gateway() gw = _get_gateway()
...@@ -1782,15 +1790,18 @@ def tool_browser_control(*args, **kwargs) -> Dict[str, Any]: ...@@ -1782,15 +1790,18 @@ def tool_browser_control(*args, **kwargs) -> Dict[str, Any]:
'timeout': timeout, 'timeout': timeout,
'tools': tools 'tools': tools
}, timeout) }, timeout)
def tool_computer_control(args=None, **kwargs) -> Dict[str, Any]: def tool_computer_control(*args, **kwargs) -> Dict[str, Any]:
"""Execute computer control command on a node""" """Execute computer control command on a node."""
gw = _get_gateway() gw = _get_gateway()
if args is None: params = args[0] if args else kwargs
args = kwargs node_name = params.get('node_name') or params.get('nodeName') or params.get('node')
node_name = args.get('node_name') or args.get('nodeName') or args.get('node') action = params.get('action')
action = args.get('action') cmd_params = params.get('params') or {}
cmd_params = args.get('params') or {} timeout = params.get('timeout', 30)
timeout = args.get('timeout', 30) if not node_name:
raise ValueError("Missing required parameter: 'node_name'")
if not action:
raise ValueError("Missing required parameter: 'action'")
return gw.execute_computer_control_command_sync(node_name, { return gw.execute_computer_control_command_sync(node_name, {
'action': action, 'action': action,
'params': cmd_params 'params': cmd_params
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment