hermes-agent/tools/computer_use_tool.py
Francesco Bonacci 847e401b74 feat(computer_use): align cua-driver 0.9 contracts
Salvaged from PR #67807 by @f-trycua onto current main.

- Foreground gate: discover delivery_mode support from the live tools/list
  inputSchema.properties (fail closed), not the never-shipped
  input.delivery_mode capability token
- bring_to_front: standalone strict-schema MCP tool (inject_session=False),
  separate approval scope, requires foreground
- Verdict precedence: confirmed > unverifiable (verify before retry) >
  suspected_noop/refusal (escalate); surfaced as explicit verdict field
- Typed cua_browser_* route inside computer_use (browser_route.py) with
  exact-binding, adapter-injected session, snapshot-scoped refs
- Per-Hermes-session backend isolation + release_computer_use_session seam
  wired into AIAgent.close()
- Recorded 0.9 tools/list fixture replaces fabricated capability tokens
2026-07-29 12:19:37 -07:00

41 lines
1.3 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,
release_computer_use_session,
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",
"release_computer_use_session",
]