agent-desktop/crates
Lahfir 07db5ceafb fix: ProcessState liveness classification and non-fatal enrichment
Reshape ProcessState to the plan's {Running, Exited{code}, Crashed,
Unresponsive} contract instead of the ad hoc {Responsive, Unresponsive,
Unknown}. macOS now does a kill(pid,0)-style liveness check before
probing AX at all, and only classifies Unresponsive after a second
consecutive kAXErrorCannotComplete, so one transient AX blip on a
healthy-but-busy app no longer hard-fails the action. The classification
threshold is isolated behind a pure, platform-independent classify() fn.

ensure_process_responsive was an unconditional preflight hard-gate that
could turn a would-succeed action into a failure and propagated a
transient probe error as the terminal error. Replace it with
enrich_with_process_state: best-effort, terminal-only enrichment that
runs exactly once (never per auto-wait tick), never converts a success
into a failure, attaches details.process_state on STALE_REF/APP_NOT_FOUND,
and only surfaces APP_UNRESPONSIVE when the process is genuinely
classified Unresponsive.

Add the missing retry_token_for_code arm for AppUnresponsive.
2026-07-02 23:48:02 -07:00
..
core fix: ProcessState liveness classification and non-fatal enrichment 2026-07-02 23:48:02 -07:00
ffi feat: complete foundation contract units U10 through U19 2026-07-02 21:42:50 -07:00
linux refactor: split PlatformAdapter into capability supertraits 2026-07-02 19:32:23 -07:00
macos fix: ProcessState liveness classification and non-fatal enrichment 2026-07-02 23:48:02 -07:00
windows refactor: split PlatformAdapter into capability supertraits 2026-07-02 19:32:23 -07:00