@@ -18,7 +18,7 @@ from JSON files / CLI / servers, and a **GUI tab**. Nothing is GUI-only.
1818
1919- ** One API, seven platforms.** ` wrapper/platform_wrapper.py ` picks the backend at import
2020 time; your script does not change between Windows, macOS, X11, and Wayland.
21- - ** Scriptable without Python.** 809 ` AC_* ` commands cover the whole feature set, so a
21+ - ** Scriptable without Python.** 810 ` AC_* ` commands cover the whole feature set, so a
2222 JSON file can do anything the library can — including loops, branches, try/catch,
2323 macros, and variables.
2424- ** Headless by default.** ` import je_auto_control ` never loads Qt. The GUI is an
@@ -233,7 +233,7 @@ desktop app; tab commands live in the window's **Actions** menu.
233233| Natural-language planner | ` plan_actions ` , ` run_from_description ` | ` AC_llm_plan ` | LLM Planner |
234234| Computer-use agent | ` AgentLoop ` , ` run_agent ` | ` AC_run_agent ` | Computer Use |
235235| Record & replay | ` record ` , ` stop_record ` | ` AC_record ` , ` AC_stop_record ` | Record |
236- | JSON scripting | ` execute_action ` , ` execute_files ` | all 809 commands | Script, Script Builder |
236+ | JSON scripting | ` execute_action ` , ` execute_files ` | all 810 commands | Script, Script Builder |
237237| Variables & flow control | ` execute_action_with_vars ` | ` AC_set_var ` , ` AC_loop ` , ` AC_for_each ` , ` AC_try ` , ` AC_retry ` | Variables |
238238| Data-driven runs | — | ` AC_for_each_row ` (CSV / JSON / SQLite / Excel) | Data Sources |
239239| Assertions | ` assert_text ` , ` assert_image ` | ` AC_assert_text ` + 20 more | Assertions |
@@ -338,7 +338,7 @@ under a relative name are written below that directory.
338338
339339| Surface | Start it with | Notes |
340340| ---| ---| ---|
341- | ** MCP server** | ` je_auto_control_mcp ` (stdio) or ` AC_start_mcp_http_server ` | 709 tools for Claude Desktop / Claude Code / custom tool loops: the full ` ac_* ` surface plus short model-friendly aliases for common GUI actions. Speaks the stateless MCP 2026-07-28 beside the ` initialize ` -based revisions. Bearer auth, TLS, audit log, rate limit, plugin hot-reload, CI fake backend. |
341+ | ** MCP server** | ` je_auto_control_mcp ` (stdio) or ` AC_start_mcp_http_server ` | 710 tools for Claude Desktop / Claude Code / custom tool loops: the full ` ac_* ` surface plus short model-friendly aliases for common GUI actions. Speaks the stateless MCP 2026-07-28 beside the ` initialize ` -based revisions. Bearer auth, TLS, audit log, rate limit, plugin hot-reload, CI fake backend. |
342342| ** REST API** | ` je_auto_control start-rest ` | Bearer token, per-IP rate limit + lockout, SQLite audit hook, ` /metrics ` , ` /openapi.json ` , ` /docs ` Swagger UI, ` /dashboard ` . |
343343| ** TCP socket server** | ` je_auto_control start-server ` | Newline-framed JSON action lists. Binds ` 127.0.0.1 ` by default. |
344344| ** pytest plugin** | installed automatically | Fixtures plus a Gherkin step library for pytest-bdd / behave. |
@@ -473,12 +473,45 @@ returning the blank XWayland root. The `screen_capture` check in
473473` je_auto_control.api.run_diagnostics() ` (and the GUI Diagnostics tab) reports
474474which tier is in use.
475475
476+ Passive ** input/capture capabilities** use ` BackendContext ` , ` CapabilityStatus ` ,
477+ ` CapabilitySnapshot ` and ` probe_capabilities ` from ` je_auto_control.api ` (also
478+ exported at the package root). Call
479+ ` probe_capabilities(BackendContext.current()).to_dict() ` , use no-argument
480+ ` AC_probe_capabilities ` / read-only ` ac_probe_capabilities ` , or choose
481+ ** Diagnostics → Actions → Inspect input and capture capabilities** . Builder
482+ provides the same no-argument command. ` python -m examples.capabilities ` prints
483+ live prerequisites and a deterministic XWayland scope example without desktop operations.
484+
485+ Input describes key/pointer events; the existing wtype text path is separate.
486+ The probe reads environment/PATH and nonblocking cached native state; it never
487+ loads optional native libraries, connects, polls events, captures or requests
488+ permission. Installed tools or a bus address mean ` unverified ` , not readiness.
489+ Cached libei readiness requires a completed handshake and active keyboard,
490+ absolute pointer, button and scroll families. A partial grant remains
491+ unverified; paused families and removed required devices report paused/revoked.
492+ The eight states are ` available ` , ` unverified ` , ` needs_permission ` ,
493+ ` needs_dependency ` , ` unsupported ` , ` paused ` , ` revoked ` and ` failed ` .
494+ ` available ` is only the last local observation and may be stale; every real
495+ operation rechecks authority. XWayland always has ` desktop_wide=False ` and cannot
496+ cover native Wayland windows. Other scope flags remain subject to granted
497+ regions/permissions and do not verify every monitor.
498+
499+ Contexts detach environment/executable facts and may carry an owner's inert
500+ input/capture observations. They grant no authority. Default live results omit
501+ environment values, command arguments, executable paths and native error text;
502+ AC/MCP accept no supplied observations. Explicit CLI configuration remains
503+ distinct from automatic fallback after observed optional native absence;
504+ permission/pause/revocation/failure metadata cannot imply CLI fallback.
505+ Capture helper and portal selection are diagnosed independently. Rendering and
506+ language changes reuse the snapshot without probing. Native portal restore,
507+ compositor restart, capture-result/context integration and cancelable active
508+ diagnostics remain in ` Progress.md ` .
509+
476510Opening Diagnostics displays a localized not-run state and performs no checks.
477511Choose ** Actions → Run diagnostics** to start the existing active checks, which
478512can capture the screen or require portal consent. Changing the display language
479513does not start checks. The explicit ` run_diagnostics ` , ` AC_diagnose ` and MCP
480- diagnostic calls retain their active behavior; passive capability probing is
481- still pending in ` Progress.md ` .
514+ diagnostic calls retain their active behavior. Passive capability inspection is a separate action below.
482515
483516Abandoned screenshot portal requests attempt ` Request.Close ` on the originating
484517bus before disconnect, using a separate 0.25-second D-Bus I/O budget. A returned
@@ -523,7 +556,7 @@ ignore synthetic input, and fall back silently when the driver is absent.
523556
524557| Resource | What's in it |
525558| ---| ---|
526- | [ ` examples/ ` ] ( examples/ ) | 41 self-contained scripts: screenshot + click, OCR, scheduler, remote desktop, agent loop, observability, recording, variables, hotkeys, triggers, reports, MCP, REST, secrets, plugins, computer use, Wayland, cross-host DAGs, chat-ops, pytest/BDD, anchor locators, action journals. |
559+ | [ ` examples/ ` ] ( examples/ ) | 42 self-contained scripts: screenshot + click, OCR, scheduler, remote desktop, agent loop, observability, recording, variables, hotkeys, triggers, reports, MCP, REST, secrets, plugins, computer use, Wayland, cross-host DAGs, chat-ops, pytest/BDD, anchor locators, action journals. |
527560| [ Read the Docs] ( https://autocontrol.readthedocs.io/en/latest/ ) | Full API reference, English and 中文. |
528561| [ architecture_explore.md] ( architecture_explore.md ) | Every module's responsibility, layer by layer. |
529562| [ docs/CAPABILITY_MATRIX.md] ( docs/CAPABILITY_MATRIX.md ) | Capability × platform matrix. |
0 commit comments