
    ߩ^j1                       U d Z ddlmZ ddlmZmZ dddi ddg d	d
dddg dddddddddddddddddddddddddddd d!did"d"d#d$d%dg d&d'dd(d dg d)d*d+d,d-dd.dd/dd0dd1d d!did"d"d2d$d3d d!did"d"d4d$d5dg d6d7dd8dd9dd:dd;ddd<ddd=dd>d?dd@dAdddBdCgdDdd@dEdd@dFddGdgdHdIZdJedK<   dOdMZdNS )PuN  Schema for the generic `computer_use` tool.

Model-agnostic. Any tool-calling model can drive this. Vision-capable models
should prefer `capture(mode='som')` then `click(element=N)` — much more
reliable than pixel coordinates. Pixel coordinates remain supported for
models that were trained on them (e.g. Claude's computer-use RL).
    )annotations)AnyDictcomputer_useu  Drive the desktop in the background via cua-driver — screenshots, mouse, keyboard, scroll, drag — without stealing the user's cursor or keyboard focus. Supported on macOS, Windows, and Linux. Preferred workflow: call with action='capture' (mode='som' gives numbered element overlays), then click by `element` index for reliability. Pixel coordinates are supported for models trained on them. Works on any window — hidden, minimized, or behind another app. Requires cua-driver to be installed.objectactionstring)captureclickdouble_clickright_clickmiddle_clickdragscrolltypekey	set_valuewait	list_appslist_windows	focus_appu
  Which action to perform. `capture` is free (no side effects). All other actions require approval unless auto-approved. Use `set_value` for select/popup elements and sliders — it selects the matching option directly without opening the native menu (no focus steal).)r   enumdescriptionmode)somvisionaxu  Capture mode. `som` (default) is a screenshot with numbered overlays on every interactable element plus the AX tree — best for vision models, lets you click by element index. `vision` is a plain screenshot. `ax` is the accessibility tree only (no image; useful for text-only models).appu  Optional. Limit capture/action to a specific app (by name, e.g. 'Safari', or bundle ID, 'com.apple.Safari'). If omitted, operates on the frontmost app's window. Pass app='screen' (or 'desktop') to capture the OS desktop/shell surface — e.g. to see the wallpaper or click the taskbar. Note: capture is per-window; a single image cannot span multiple monitors, so on a multi-screen setup capture one window or display at a time.)r   r   pidintegerzqOptional exact process target for action='capture'. Pair with window_id when discovery cannot resolve an X11 app.	window_idzOptional exact native window target for action='capture'. Pair with pid when an external cua-driver list_windows lookup has already identified the window.max_elementsu  Optional cap on the AX `elements` array returned by `action='capture'`. Default 100, hard maximum 1000. Dense UIs (Electron apps such as Obsidian or VS Code, JetBrains IDEs) can publish 500+ AX nodes — capping prevents a single capture from blowing session context. When the cap trims the response, `total_elements` and `truncated_elements` are surfaced in the result so you can re-call with `app=` to narrow scope or raise `max_elements` when the full tree is required. Has no effect on `mode='som'` / `mode='vision'` when a screenshot is included in the response; only the rare image-missing fallback returns an `elements` array and is subject to the cap.d      i  )r   r   defaultminimummaximumelementzoThe 1-based SOM index returned by the last `capture(mode='som')` call. Strongly preferred over raw coordinates.
coordinatearrayr      zPixel coordinates [x, y] relative to the captured window screenshot (top-left origin). Only use this if no element index is available.)r   itemsminItemsmaxItemsr   button)leftrightmiddlezMouse button. Defaults to left.	modifiers)
cmdshiftoptionaltctrlfnwinwindowssupermeta)r   r   z%Modifier keys held during the action.)r   r,   r   from_elementzSource element index (drag).
to_elementzTarget element index (drag).from_coordinatez3Source [x,y] (drag; use when no element available).to_coordinatez3Target [x,y] (drag; use when no element available).	direction)updownr0   r1   zScroll direction.amountzScroll wheel ticks. Default 3.valuezFor action='set_value': the value to set on the element. For AXPopUpButton / select dropdowns, pass the option's display label (e.g. 'Blue'). For sliders and other AXValue-settable elements, pass the numeric or string value.z+Text to type (respects the current layout).zUKey combo, e.g. 'cmd+s', 'ctrl+alt+t', 'return', 'escape', 'tab'. Use '+' to combine.numberzSeconds to wait. Max 30.booleanu   Only for action='focus_app'. If true, brings the window to front (DISRUPTS the user). Default false — input is routed to the app without raising, matching the background co-work model.
background
foregroundu  How input is delivered, for the input actions (click, double_click, right_click, drag, scroll, type, key). `background` (DEFAULT) routes input to the target without raising it or stealing focus — the co-work model. `foreground` briefly fronts the window, acts, then restores the prior frontmost app. Only escalate to `foreground` when a background attempt did NOT land — i.e. a prior result had `effect: 'suspected_noop'`, `code: 'background_unavailable'`, or `escalation.recommended: 'foreground'`. Do not predict it from the app being Electron/Chromium; react to the returned signal. Foreground is a visible focus change and needs its own approval.zOptional, pairs with delivery_mode='foreground'. Keep the target fronted after the action instead of restoring the previous app, to avoid a per-call flash across a short sequence of foreground actions. Default false.zIf true, take a follow-up capture after the action and include it in the response. Saves a round-trip when you need to verify an action's effect.)textkeyssecondsraise_windowdelivery_modebring_to_frontcapture_after)r   
propertiesrequired)namer   
parametersDict[str, Any]COMPUTER_USE_SCHEMAreturnc                     t           S )z2Return the generic OpenAI function-calling schema.)rW        ;/home/ice/.hermes/hermes-agent/tools/computer_use/schema.pyget_computer_use_schemar]   	  s    r[   N)rX   rV   )	__doc__
__future__r   typingr   r   rW   __annotations__r]   rZ   r[   r\   <module>rb      s     # " " " " "         	 d
   "H' d
8  ///-	 9d
P  7 Qd
l !O md
z !@ {d
J !* ) Kd
x !' yd
H  ),*
 
Id
^  333@ _d
h $     G
 
id
@ Y-KM MAd
D 9+IK KEd
H  ),1T	   Id
T  ),1T	 Ud
b  7772 cd
l !? md
v  S wd
L !L 
 !;  !9  "=  !%|4.	 ( "E  "B yd
 d
 d
J JOh hv' v'  v v v vr     r[   