Files
hermes-agent/tools/computer_use_tool.py
Francesco Bonacci f2e37549c6 feat(computer_use): cross-platform cua-driver (macOS/Windows/Linux)
Make the computer_use toolset platform-agnostic by driving cua-driver on
macOS, Windows, and Linux. Consumes the 8 cua-driver decoupling surfaces
(capability discovery, structuredContent AX tree, opaque element_token,
click button enum, explicit mimeType, machine-readable manifest,
structured list_windows, structured health_report), each degrading
gracefully on older drivers.

Adds `hermes computer-use doctor` (drives cua-driver health_report with a
per-OS check matrix and an exit 0/1/2 ok/degraded/blocked contract), full
typed wrappers for the previously-uncovered cua-driver tools plus a generic
call_tool escape hatch, per-session agent-cursor lifecycle, platform-aware
system-prompt guidance (host-deterministic, cache-safe), and honors
HERMES_CUA_DRIVER_CMD end-to-end.

Replaces the macOS-only skills/apple/macos-computer-use skill with a
cross-platform skills/computer-use skill, and refreshes the EN + zh-Hans
docs.

Supersedes #44221 (Windows-enablement salvage of #30660).

Co-authored-by: Teknium <127238744+teknium1@users.noreply.github.com>
2026-06-22 06:42:30 -07:00

40 lines
1.2 KiB
Python

"""Shim for tool discovery. Registers `computer_use` with tools.registry.
The real implementation lives in the `tools/computer_use/` package to keep
the file structure clean. This shim exists because tools.registry auto-imports
`tools/*.py` — we need a top-level module to trigger the registration.
"""
from __future__ import annotations
from tools.computer_use.schema import COMPUTER_USE_SCHEMA
from tools.computer_use.tool import (
check_computer_use_requirements,
handle_computer_use,
set_approval_callback,
)
from tools.registry import registry
registry.register(
name="computer_use",
toolset="computer_use",
schema=COMPUTER_USE_SCHEMA,
handler=lambda args, **kw: handle_computer_use(args, **kw),
check_fn=check_computer_use_requirements,
requires_env=[],
description=(
"Universal desktop control via cua-driver (macOS, Windows, Linux). Works with any "
"tool-capable model (Anthropic, OpenAI, OpenRouter, local vLLM, "
"etc.). Background computer-use: does NOT steal the user's cursor "
"or keyboard focus."
),
)
__all__ = [
"handle_computer_use",
"set_approval_callback",
"check_computer_use_requirements",
]