mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-30 19:09:28 +00:00
cua-driver 0.7.x can return list_windows/list_apps payloads under structuredContent.windows, data.windows, data._legacy_windows, or top-level windows/_legacy_windows (direct CLI responses). The wrapper only read structuredContent.windows, so discovery came back empty (capture 0x0, list_apps []) while raw cua-driver calls worked. - add _windows_from_tool_result(): walks the known envelope shapes in priority order, skipping empty higher-priority envelopes - route _load_windows() (MCP + CLI re-fetch paths) through the helper, covering capture() and focus_app() - harden _ingest_windows(): skip non-dict members, normalize untrusted app_name/title/z_index fields - list_apps(): prefer structuredContent.apps, fall through populated data/top-level envelopes, derive unique apps from window-shaped payloads via _apps_from_windows(), keep the text-line fallback last - tests for every envelope shape, precedence, malformed records, and app derivation Salvaged from #63037 (Reaper-Legion), which itself preserved the original implementation from #57961 (kohoj); #73007 (umi008) independently proposed the same normalization later. Fixes #57905 Co-authored-by: Reaper <248977840+Reaper-Forge@users.noreply.github.com> Co-authored-by: Ulises Millan Guerrero <ulises.millanguerrero@gmail.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| backend.py | ||
| cua_backend.py | ||
| doctor.py | ||
| permissions.py | ||
| schema.py | ||
| tool.py | ||
| vision_routing.py | ||