From 0b52c22aa0deb8f98d2281b6b59c6eceb32ccf0e Mon Sep 17 00:00:00 2001 From: Francesco Bonacci Date: Sun, 24 May 2026 10:40:21 +0000 Subject: [PATCH 1/5] chore: git mv libs/cua-driver-rs/* -> libs/cua-driver/rust/* (folder collapse) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pure rename — no content changes. Folder collapse so the Rust and Swift ports both live under libs/cua-driver/. Tag prefix `cua-driver-rs-v*`, env var prefix `CUA_DRIVER_RS_*`, asset names, and crate names are intentionally unchanged. Kept at libs/cua-driver-rs/scripts/{install.sh,install.ps1} as backward- compat shims so the legacy curl/irm one-liners keep resolving. Next commits: move Swift to libs/cua-driver/swift/, then fix path references that no longer resolve (CI workflow, root Package.swift, docs, install scripts). --- .../rust}/.bumpversion.cfg | 0 .../rust}/.cargo/config.toml | 0 libs/{cua-driver-rs => cua-driver/rust}/.gitignore | 0 libs/{cua-driver-rs => cua-driver/rust}/Cargo.lock | 0 libs/{cua-driver-rs => cua-driver/rust}/Cargo.toml | 0 libs/{cua-driver-rs => cua-driver/rust}/PARITY.md | 0 .../rust}/Skills/cua-driver-rs/LINUX.md | 0 .../rust}/Skills/cua-driver-rs/MACOS.md | 0 .../rust}/Skills/cua-driver-rs/README.md | 0 .../rust}/Skills/cua-driver-rs/RECORDING.md | 0 .../rust}/Skills/cua-driver-rs/SKILL.md | 0 .../rust}/Skills/cua-driver-rs/TESTS.md | 0 .../rust}/Skills/cua-driver-rs/WEB_APPS.md | 0 .../rust}/Skills/cua-driver-rs/WINDOWS.md | 0 .../rust}/crates/cua-driver-uia/Cargo.toml | 0 .../rust}/crates/cua-driver-uia/build.rs | 0 .../crates/cua-driver-uia/cua-driver-uia.manifest | 0 .../rust}/crates/cua-driver-uia/src/main.rs | 0 .../rust}/crates/cua-driver/Cargo.toml | 0 .../rust}/crates/cua-driver/src/autostart.rs | 0 .../rust}/crates/cua-driver/src/bundle.rs | 0 .../rust}/crates/cua-driver/src/cli.rs | 0 .../rust}/crates/cua-driver/src/doctor.rs | 0 .../rust}/crates/cua-driver/src/main.rs | 0 .../rust}/crates/cua-driver/src/proxy.rs | 0 .../rust}/crates/cua-driver/src/serve.rs | 0 .../rust}/crates/cua-driver/src/skills.rs | 0 .../rust}/crates/cua-driver/src/telemetry.rs | 0 .../rust}/crates/cua-driver/src/updater.rs | 0 .../rust}/crates/cua-driver/src/version_check.rs | 0 .../crates/cua-driver/tests/focus_check_test.rs | 0 .../crates/cua-driver/tests/mcp_protocol_test.rs | 0 .../rust}/crates/cua-driver/tests/ux_guard_test.rs | 0 .../rust}/crates/cursor-overlay/Cargo.toml | 0 .../rust}/crates/cursor-overlay/src/bezier.rs | 0 .../crates/cursor-overlay/src/capture_utils.rs | 0 .../rust}/crates/cursor-overlay/src/lib.rs | 0 .../rust}/crates/cursor-overlay/src/motion.rs | 0 .../rust}/crates/cursor-overlay/src/palette.rs | 0 .../rust}/crates/cursor-overlay/src/path_planner.rs | 0 .../rust}/crates/cursor-overlay/src/render_state.rs | 0 .../rust}/crates/cursor-overlay/src/shape.rs | 0 .../rust}/crates/cursor-overlay/src/util.rs | 0 .../rust}/crates/focus-monitor-win/Cargo.toml | 0 .../rust}/crates/focus-monitor-win/src/main.rs | 0 .../rust}/crates/mcp-server/Cargo.toml | 0 .../rust}/crates/mcp-server/src/cdp.rs | 0 .../rust}/crates/mcp-server/src/element_cache.rs | 0 .../rust}/crates/mcp-server/src/image_utils.rs | 0 .../rust}/crates/mcp-server/src/lib.rs | 0 .../rust}/crates/mcp-server/src/page.rs | 0 .../rust}/crates/mcp-server/src/protocol.rs | 0 .../rust}/crates/mcp-server/src/recording.rs | 0 .../rust}/crates/mcp-server/src/recording_tools.rs | 0 .../rust}/crates/mcp-server/src/server.rs | 0 .../rust}/crates/mcp-server/src/tool.rs | 0 .../rust}/crates/mcp-server/src/tool_args.rs | 0 .../rust}/crates/platform-linux/Cargo.toml | 0 .../rust}/crates/platform-linux/src/atspi/cache.rs | 0 .../rust}/crates/platform-linux/src/atspi/mod.rs | 0 .../rust}/crates/platform-linux/src/capture.rs | 0 .../rust}/crates/platform-linux/src/input/mod.rs | 0 .../crates/platform-linux/src/installed_apps.rs | 0 .../rust}/crates/platform-linux/src/lib.rs | 0 .../rust}/crates/platform-linux/src/overlay.rs | 0 .../rust}/crates/platform-linux/src/proc_fs.rs | 0 .../rust}/crates/platform-linux/src/tools/impl_.rs | 0 .../rust}/crates/platform-linux/src/tools/mod.rs | 0 .../rust}/crates/platform-linux/src/tools/page.rs | 0 .../rust}/crates/platform-linux/src/tools/stubs.rs | 0 .../rust}/crates/platform-linux/src/x11/mod.rs | 0 .../rust}/crates/platform-macos/Cargo.toml | 0 .../rust}/crates/platform-macos/build.rs | 0 .../rust}/crates/platform-macos/src/apps/mod.rs | 0 .../crates/platform-macos/src/apps/nsworkspace.rs | 0 .../rust}/crates/platform-macos/src/ax/bindings.rs | 0 .../rust}/crates/platform-macos/src/ax/cache.rs | 0 .../rust}/crates/platform-macos/src/ax/mod.rs | 0 .../rust}/crates/platform-macos/src/ax/tree.rs | 0 .../platform-macos/src/browser/ax_page_reader.rs | 0 .../crates/platform-macos/src/browser/browser_js.rs | 0 .../crates/platform-macos/src/browser/cdp_client.rs | 0 .../platform-macos/src/browser/electron_js.rs | 0 .../rust}/crates/platform-macos/src/browser/mod.rs | 0 .../platform-macos/src/browser/wk_web_view.rs | 0 .../rust}/crates/platform-macos/src/capture.rs | 0 .../rust}/crates/platform-macos/src/cursor/mod.rs | 0 .../crates/platform-macos/src/cursor/overlay.rs | 0 .../rust}/crates/platform-macos/src/cursor/state.rs | 0 .../rust}/crates/platform-macos/src/focus_guard.rs | 0 .../rust}/crates/platform-macos/src/focus_steal.rs | 0 .../crates/platform-macos/src/input/ax_actions.rs | 0 .../crates/platform-macos/src/input/keyboard.rs | 0 .../rust}/crates/platform-macos/src/input/mod.rs | 0 .../rust}/crates/platform-macos/src/input/mouse.rs | 0 .../crates/platform-macos/src/input/skylight.rs | 0 .../rust}/crates/platform-macos/src/lib.rs | 0 .../crates/platform-macos/src/permissions/gate.rs | 0 .../crates/platform-macos/src/permissions/mod.rs | 0 .../crates/platform-macos/src/permissions/panel.rs | 0 .../crates/platform-macos/src/permissions/status.rs | 0 .../platform-macos/src/tools/check_permissions.rs | 0 .../rust}/crates/platform-macos/src/tools/click.rs | 0 .../crates/platform-macos/src/tools/cursor_tools.rs | 0 .../crates/platform-macos/src/tools/double_click.rs | 0 .../rust}/crates/platform-macos/src/tools/drag.rs | 0 .../src/tools/get_accessibility_tree.rs | 0 .../crates/platform-macos/src/tools/get_config.rs | 0 .../platform-macos/src/tools/get_cursor_position.rs | 0 .../platform-macos/src/tools/get_screen_size.rs | 0 .../platform-macos/src/tools/get_window_state.rs | 0 .../rust}/crates/platform-macos/src/tools/hotkey.rs | 0 .../crates/platform-macos/src/tools/kill_app.rs | 0 .../crates/platform-macos/src/tools/launch_app.rs | 0 .../crates/platform-macos/src/tools/list_apps.rs | 0 .../crates/platform-macos/src/tools/list_windows.rs | 0 .../rust}/crates/platform-macos/src/tools/mod.rs | 0 .../crates/platform-macos/src/tools/move_cursor.rs | 0 .../rust}/crates/platform-macos/src/tools/page.rs | 0 .../crates/platform-macos/src/tools/press_key.rs | 0 .../crates/platform-macos/src/tools/right_click.rs | 0 .../crates/platform-macos/src/tools/screenshot.rs | 0 .../platform-macos/src/tools/screenshot_compat.rs | 0 .../rust}/crates/platform-macos/src/tools/scroll.rs | 0 .../crates/platform-macos/src/tools/set_config.rs | 0 .../crates/platform-macos/src/tools/set_value.rs | 0 .../crates/platform-macos/src/tools/type_text.rs | 0 .../platform-macos/src/tools/type_text_chars.rs | 0 .../rust}/crates/platform-macos/src/tools/zoom.rs | 0 .../platform-macos/src/window_change_detector.rs | 0 .../rust}/crates/platform-macos/src/windows.rs | 0 .../rust}/crates/platform-windows/Cargo.toml | 0 .../examples/agent_cursor_setters_parity.rs | 0 .../platform-windows/examples/click_domains.rs | 0 .../platform-windows/examples/click_parity.rs | 0 .../platform-windows/examples/config_parity.rs | 0 .../platform-windows/examples/cursor_visibility.rs | 0 .../examples/daemon_lifecycle_parity.rs | 0 .../platform-windows/examples/describe_parity.rs | 0 .../examples/double_click_parity.rs | 0 .../crates/platform-windows/examples/drag_parity.rs | 0 .../platform-windows/examples/dump_docs_parity.rs | 0 .../examples/get_agent_cursor_state_parity.rs | 0 .../examples/get_cursor_position_parity.rs | 0 .../examples/get_screen_size_parity.rs | 0 .../examples/get_window_state_parity.rs | 0 .../platform-windows/examples/hotkey_parity.rs | 0 .../platform-windows/examples/launch_app_parity.rs | 0 .../platform-windows/examples/list_apps_parity.rs | 0 .../platform-windows/examples/list_tools_parity.rs | 0 .../examples/list_windows_parity.rs | 0 .../platform-windows/examples/mcp_config_parity.rs | 0 .../platform-windows/examples/overlay_dump.rs | 0 .../platform-windows/examples/press_key_parity.rs | 0 .../platform-windows/examples/recording_parity.rs | 0 .../examples/replay_trajectory_parity.rs | 0 .../platform-windows/examples/right_click_parity.rs | 0 .../platform-windows/examples/screenshot_parity.rs | 0 .../platform-windows/examples/scroll_parity.rs | 0 .../examples/set_agent_cursor_style_parity.rs | 0 .../platform-windows/examples/set_value_parity.rs | 0 .../examples/type_text_chars_alias_parity.rs | 0 .../platform-windows/examples/type_text_parity.rs | 0 .../platform-windows/examples/update_parity.rs | 0 .../crates/platform-windows/examples/zoom_parity.rs | 0 .../rust}/crates/platform-windows/src/capture.rs | 0 .../crates/platform-windows/src/diagnostics.rs | 0 .../crates/platform-windows/src/input/keyboard.rs | 0 .../rust}/crates/platform-windows/src/input/mod.rs | 0 .../crates/platform-windows/src/input/mouse.rs | 0 .../rust}/crates/platform-windows/src/launch_uwp.rs | 0 .../rust}/crates/platform-windows/src/lib.rs | 0 .../rust}/crates/platform-windows/src/overlay.rs | 0 .../crates/platform-windows/src/tools/impl_.rs | 0 .../rust}/crates/platform-windows/src/tools/mod.rs | 0 .../rust}/crates/platform-windows/src/tools/page.rs | 0 .../platform-windows/src/tools/page_bookmark.rs | 0 .../crates/platform-windows/src/tools/stubs.rs | 0 .../rust}/crates/platform-windows/src/uia/cache.rs | 0 .../rust}/crates/platform-windows/src/uia/mod.rs | 0 .../crates/platform-windows/src/uia/windows_enum.rs | 0 .../rust}/crates/platform-windows/src/win32/apps.rs | 0 .../platform-windows/src/win32/installed_apps.rs | 0 .../rust}/crates/platform-windows/src/win32/mod.rs | 0 .../crates/platform-windows/src/win32/windows.rs | 0 .../rust}/docs/dedup-audit.md | 0 .../rust}/sandbox/run-tests-in-sandbox.ps1 | 0 .../rust}/sandbox/sandbox-runner.ps1 | 0 .../scripts/CuaDriverBundle/Contents/Info.plist | 0 .../scripts/CuaDriverBundle/Contents/MacOS/.gitkeep | 0 .../rust}/scripts/install-local.ps1 | 0 .../rust}/scripts/install-local.sh | 0 .../rust}/test-apps/.gitignore | 0 .../rust}/test-apps/README.md | 0 .../rust}/tests/integration/driver_client.py | 0 .../tests/integration/fixtures/interactive.html | 0 .../tests/integration/fixtures/test_cursor.png | Bin .../rust}/tests/integration/run_tests.sh | 0 .../rust}/tests/integration/test_api_parity.py | 0 .../tests/integration/test_background_focus.py | 0 .../rust}/tests/integration/test_cli.py | 0 .../tests/integration/test_concurrent_drivers.py | 0 .../tests/integration/test_cursor_visibility.py | 0 .../tests/integration/test_double_click_delivery.py | 0 .../tests/integration/test_focus_steal_parity.py | 0 .../rust}/tests/integration/test_list_windows.py | 0 .../rust}/tests/integration/test_overlay_z_order.py | 0 .../tests/integration/test_pixel_click_delivery.py | 0 .../rust}/tests/integration/v2/PHILOSOPHY.md | 0 .../integration/v2/assets/blender/toolbar_ref.png | Bin .../v2/assets/tauri/desktop-test-app-macos-arm64 | Bin .../tests/integration/v2/assets/test_page.html | 0 .../rust}/tests/integration/v2/conftest.py | 0 .../rust}/tests/integration/v2/harness/__init__.py | 0 .../rust}/tests/integration/v2/harness/cv.py | 0 .../rust}/tests/integration/v2/harness/driver.py | 0 .../rust}/tests/integration/v2/harness/monitor.py | 0 .../rust}/tests/integration/v2/harness/tree.py | 0 .../rust}/tests/integration/v2/test_blender.py | 0 .../rust}/tests/integration/v2/test_chrome.py | 0 .../rust}/tests/integration/v2/test_electron.py | 0 .../rust}/tests/integration/v2/test_safari.py | 0 .../rust}/tests/integration/v2/test_tauri.py | 0 223 files changed, 0 insertions(+), 0 deletions(-) rename libs/{cua-driver-rs => cua-driver/rust}/.bumpversion.cfg (100%) rename libs/{cua-driver-rs => cua-driver/rust}/.cargo/config.toml (100%) rename libs/{cua-driver-rs => cua-driver/rust}/.gitignore (100%) rename libs/{cua-driver-rs => cua-driver/rust}/Cargo.lock (100%) rename libs/{cua-driver-rs => cua-driver/rust}/Cargo.toml (100%) rename libs/{cua-driver-rs => cua-driver/rust}/PARITY.md (100%) rename libs/{cua-driver-rs => cua-driver/rust}/Skills/cua-driver-rs/LINUX.md (100%) rename libs/{cua-driver-rs => cua-driver/rust}/Skills/cua-driver-rs/MACOS.md (100%) rename libs/{cua-driver-rs => cua-driver/rust}/Skills/cua-driver-rs/README.md (100%) rename libs/{cua-driver-rs => cua-driver/rust}/Skills/cua-driver-rs/RECORDING.md (100%) rename libs/{cua-driver-rs => cua-driver/rust}/Skills/cua-driver-rs/SKILL.md (100%) rename libs/{cua-driver-rs => cua-driver/rust}/Skills/cua-driver-rs/TESTS.md (100%) rename libs/{cua-driver-rs => cua-driver/rust}/Skills/cua-driver-rs/WEB_APPS.md (100%) rename libs/{cua-driver-rs => cua-driver/rust}/Skills/cua-driver-rs/WINDOWS.md (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver-uia/Cargo.toml (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver-uia/build.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver-uia/cua-driver-uia.manifest (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver-uia/src/main.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver/Cargo.toml (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver/src/autostart.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver/src/bundle.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver/src/cli.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver/src/doctor.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver/src/main.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver/src/proxy.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver/src/serve.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver/src/skills.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver/src/telemetry.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver/src/updater.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver/src/version_check.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver/tests/focus_check_test.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver/tests/mcp_protocol_test.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cua-driver/tests/ux_guard_test.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cursor-overlay/Cargo.toml (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cursor-overlay/src/bezier.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cursor-overlay/src/capture_utils.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cursor-overlay/src/lib.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cursor-overlay/src/motion.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cursor-overlay/src/palette.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cursor-overlay/src/path_planner.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cursor-overlay/src/render_state.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cursor-overlay/src/shape.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/cursor-overlay/src/util.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/focus-monitor-win/Cargo.toml (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/focus-monitor-win/src/main.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/mcp-server/Cargo.toml (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/mcp-server/src/cdp.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/mcp-server/src/element_cache.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/mcp-server/src/image_utils.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/mcp-server/src/lib.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/mcp-server/src/page.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/mcp-server/src/protocol.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/mcp-server/src/recording.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/mcp-server/src/recording_tools.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/mcp-server/src/server.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/mcp-server/src/tool.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/mcp-server/src/tool_args.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-linux/Cargo.toml (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-linux/src/atspi/cache.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-linux/src/atspi/mod.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-linux/src/capture.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-linux/src/input/mod.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-linux/src/installed_apps.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-linux/src/lib.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-linux/src/overlay.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-linux/src/proc_fs.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-linux/src/tools/impl_.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-linux/src/tools/mod.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-linux/src/tools/page.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-linux/src/tools/stubs.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-linux/src/x11/mod.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/Cargo.toml (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/build.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/apps/mod.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/apps/nsworkspace.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/ax/bindings.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/ax/cache.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/ax/mod.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/ax/tree.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/browser/ax_page_reader.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/browser/browser_js.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/browser/cdp_client.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/browser/electron_js.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/browser/mod.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/browser/wk_web_view.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/capture.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/cursor/mod.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/cursor/overlay.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/cursor/state.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/focus_guard.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/focus_steal.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/input/ax_actions.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/input/keyboard.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/input/mod.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/input/mouse.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/input/skylight.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/lib.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/permissions/gate.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/permissions/mod.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/permissions/panel.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/permissions/status.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/check_permissions.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/click.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/cursor_tools.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/double_click.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/drag.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/get_accessibility_tree.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/get_config.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/get_cursor_position.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/get_screen_size.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/get_window_state.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/hotkey.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/kill_app.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/launch_app.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/list_apps.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/list_windows.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/mod.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/move_cursor.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/page.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/press_key.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/right_click.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/screenshot.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/screenshot_compat.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/scroll.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/set_config.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/set_value.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/type_text.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/type_text_chars.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/tools/zoom.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/window_change_detector.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-macos/src/windows.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/Cargo.toml (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/agent_cursor_setters_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/click_domains.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/click_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/config_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/cursor_visibility.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/daemon_lifecycle_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/describe_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/double_click_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/drag_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/dump_docs_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/get_agent_cursor_state_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/get_cursor_position_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/get_screen_size_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/get_window_state_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/hotkey_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/launch_app_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/list_apps_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/list_tools_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/list_windows_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/mcp_config_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/overlay_dump.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/press_key_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/recording_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/replay_trajectory_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/right_click_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/screenshot_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/scroll_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/set_agent_cursor_style_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/set_value_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/type_text_chars_alias_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/type_text_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/update_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/examples/zoom_parity.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/capture.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/diagnostics.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/input/keyboard.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/input/mod.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/input/mouse.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/launch_uwp.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/lib.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/overlay.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/tools/impl_.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/tools/mod.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/tools/page.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/tools/page_bookmark.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/tools/stubs.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/uia/cache.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/uia/mod.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/uia/windows_enum.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/win32/apps.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/win32/installed_apps.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/win32/mod.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/crates/platform-windows/src/win32/windows.rs (100%) rename libs/{cua-driver-rs => cua-driver/rust}/docs/dedup-audit.md (100%) rename libs/{cua-driver-rs => cua-driver/rust}/sandbox/run-tests-in-sandbox.ps1 (100%) rename libs/{cua-driver-rs => cua-driver/rust}/sandbox/sandbox-runner.ps1 (100%) rename libs/{cua-driver-rs => cua-driver/rust}/scripts/CuaDriverBundle/Contents/Info.plist (100%) rename libs/{cua-driver-rs => cua-driver/rust}/scripts/CuaDriverBundle/Contents/MacOS/.gitkeep (100%) rename libs/{cua-driver-rs => cua-driver/rust}/scripts/install-local.ps1 (100%) rename libs/{cua-driver-rs => cua-driver/rust}/scripts/install-local.sh (100%) rename libs/{cua-driver-rs => cua-driver/rust}/test-apps/.gitignore (100%) rename libs/{cua-driver-rs => cua-driver/rust}/test-apps/README.md (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/driver_client.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/fixtures/interactive.html (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/fixtures/test_cursor.png (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/run_tests.sh (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/test_api_parity.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/test_background_focus.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/test_cli.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/test_concurrent_drivers.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/test_cursor_visibility.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/test_double_click_delivery.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/test_focus_steal_parity.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/test_list_windows.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/test_overlay_z_order.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/test_pixel_click_delivery.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/v2/PHILOSOPHY.md (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/v2/assets/blender/toolbar_ref.png (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/v2/assets/tauri/desktop-test-app-macos-arm64 (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/v2/assets/test_page.html (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/v2/conftest.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/v2/harness/__init__.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/v2/harness/cv.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/v2/harness/driver.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/v2/harness/monitor.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/v2/harness/tree.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/v2/test_blender.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/v2/test_chrome.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/v2/test_electron.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/v2/test_safari.py (100%) rename libs/{cua-driver-rs => cua-driver/rust}/tests/integration/v2/test_tauri.py (100%) diff --git a/libs/cua-driver-rs/.bumpversion.cfg b/libs/cua-driver/rust/.bumpversion.cfg similarity index 100% rename from libs/cua-driver-rs/.bumpversion.cfg rename to libs/cua-driver/rust/.bumpversion.cfg diff --git a/libs/cua-driver-rs/.cargo/config.toml b/libs/cua-driver/rust/.cargo/config.toml similarity index 100% rename from libs/cua-driver-rs/.cargo/config.toml rename to libs/cua-driver/rust/.cargo/config.toml diff --git a/libs/cua-driver-rs/.gitignore b/libs/cua-driver/rust/.gitignore similarity index 100% rename from libs/cua-driver-rs/.gitignore rename to libs/cua-driver/rust/.gitignore diff --git a/libs/cua-driver-rs/Cargo.lock b/libs/cua-driver/rust/Cargo.lock similarity index 100% rename from libs/cua-driver-rs/Cargo.lock rename to libs/cua-driver/rust/Cargo.lock diff --git a/libs/cua-driver-rs/Cargo.toml b/libs/cua-driver/rust/Cargo.toml similarity index 100% rename from libs/cua-driver-rs/Cargo.toml rename to libs/cua-driver/rust/Cargo.toml diff --git a/libs/cua-driver-rs/PARITY.md b/libs/cua-driver/rust/PARITY.md similarity index 100% rename from libs/cua-driver-rs/PARITY.md rename to libs/cua-driver/rust/PARITY.md diff --git a/libs/cua-driver-rs/Skills/cua-driver-rs/LINUX.md b/libs/cua-driver/rust/Skills/cua-driver-rs/LINUX.md similarity index 100% rename from libs/cua-driver-rs/Skills/cua-driver-rs/LINUX.md rename to libs/cua-driver/rust/Skills/cua-driver-rs/LINUX.md diff --git a/libs/cua-driver-rs/Skills/cua-driver-rs/MACOS.md b/libs/cua-driver/rust/Skills/cua-driver-rs/MACOS.md similarity index 100% rename from libs/cua-driver-rs/Skills/cua-driver-rs/MACOS.md rename to libs/cua-driver/rust/Skills/cua-driver-rs/MACOS.md diff --git a/libs/cua-driver-rs/Skills/cua-driver-rs/README.md b/libs/cua-driver/rust/Skills/cua-driver-rs/README.md similarity index 100% rename from libs/cua-driver-rs/Skills/cua-driver-rs/README.md rename to libs/cua-driver/rust/Skills/cua-driver-rs/README.md diff --git a/libs/cua-driver-rs/Skills/cua-driver-rs/RECORDING.md b/libs/cua-driver/rust/Skills/cua-driver-rs/RECORDING.md similarity index 100% rename from libs/cua-driver-rs/Skills/cua-driver-rs/RECORDING.md rename to libs/cua-driver/rust/Skills/cua-driver-rs/RECORDING.md diff --git a/libs/cua-driver-rs/Skills/cua-driver-rs/SKILL.md b/libs/cua-driver/rust/Skills/cua-driver-rs/SKILL.md similarity index 100% rename from libs/cua-driver-rs/Skills/cua-driver-rs/SKILL.md rename to libs/cua-driver/rust/Skills/cua-driver-rs/SKILL.md diff --git a/libs/cua-driver-rs/Skills/cua-driver-rs/TESTS.md b/libs/cua-driver/rust/Skills/cua-driver-rs/TESTS.md similarity index 100% rename from libs/cua-driver-rs/Skills/cua-driver-rs/TESTS.md rename to libs/cua-driver/rust/Skills/cua-driver-rs/TESTS.md diff --git a/libs/cua-driver-rs/Skills/cua-driver-rs/WEB_APPS.md b/libs/cua-driver/rust/Skills/cua-driver-rs/WEB_APPS.md similarity index 100% rename from libs/cua-driver-rs/Skills/cua-driver-rs/WEB_APPS.md rename to libs/cua-driver/rust/Skills/cua-driver-rs/WEB_APPS.md diff --git a/libs/cua-driver-rs/Skills/cua-driver-rs/WINDOWS.md b/libs/cua-driver/rust/Skills/cua-driver-rs/WINDOWS.md similarity index 100% rename from libs/cua-driver-rs/Skills/cua-driver-rs/WINDOWS.md rename to libs/cua-driver/rust/Skills/cua-driver-rs/WINDOWS.md diff --git a/libs/cua-driver-rs/crates/cua-driver-uia/Cargo.toml b/libs/cua-driver/rust/crates/cua-driver-uia/Cargo.toml similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver-uia/Cargo.toml rename to libs/cua-driver/rust/crates/cua-driver-uia/Cargo.toml diff --git a/libs/cua-driver-rs/crates/cua-driver-uia/build.rs b/libs/cua-driver/rust/crates/cua-driver-uia/build.rs similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver-uia/build.rs rename to libs/cua-driver/rust/crates/cua-driver-uia/build.rs diff --git a/libs/cua-driver-rs/crates/cua-driver-uia/cua-driver-uia.manifest b/libs/cua-driver/rust/crates/cua-driver-uia/cua-driver-uia.manifest similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver-uia/cua-driver-uia.manifest rename to libs/cua-driver/rust/crates/cua-driver-uia/cua-driver-uia.manifest diff --git a/libs/cua-driver-rs/crates/cua-driver-uia/src/main.rs b/libs/cua-driver/rust/crates/cua-driver-uia/src/main.rs similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver-uia/src/main.rs rename to libs/cua-driver/rust/crates/cua-driver-uia/src/main.rs diff --git a/libs/cua-driver-rs/crates/cua-driver/Cargo.toml b/libs/cua-driver/rust/crates/cua-driver/Cargo.toml similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver/Cargo.toml rename to libs/cua-driver/rust/crates/cua-driver/Cargo.toml diff --git a/libs/cua-driver-rs/crates/cua-driver/src/autostart.rs b/libs/cua-driver/rust/crates/cua-driver/src/autostart.rs similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver/src/autostart.rs rename to libs/cua-driver/rust/crates/cua-driver/src/autostart.rs diff --git a/libs/cua-driver-rs/crates/cua-driver/src/bundle.rs b/libs/cua-driver/rust/crates/cua-driver/src/bundle.rs similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver/src/bundle.rs rename to libs/cua-driver/rust/crates/cua-driver/src/bundle.rs diff --git a/libs/cua-driver-rs/crates/cua-driver/src/cli.rs b/libs/cua-driver/rust/crates/cua-driver/src/cli.rs similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver/src/cli.rs rename to libs/cua-driver/rust/crates/cua-driver/src/cli.rs diff --git a/libs/cua-driver-rs/crates/cua-driver/src/doctor.rs b/libs/cua-driver/rust/crates/cua-driver/src/doctor.rs similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver/src/doctor.rs rename to libs/cua-driver/rust/crates/cua-driver/src/doctor.rs diff --git a/libs/cua-driver-rs/crates/cua-driver/src/main.rs b/libs/cua-driver/rust/crates/cua-driver/src/main.rs similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver/src/main.rs rename to libs/cua-driver/rust/crates/cua-driver/src/main.rs diff --git a/libs/cua-driver-rs/crates/cua-driver/src/proxy.rs b/libs/cua-driver/rust/crates/cua-driver/src/proxy.rs similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver/src/proxy.rs rename to libs/cua-driver/rust/crates/cua-driver/src/proxy.rs diff --git a/libs/cua-driver-rs/crates/cua-driver/src/serve.rs b/libs/cua-driver/rust/crates/cua-driver/src/serve.rs similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver/src/serve.rs rename to libs/cua-driver/rust/crates/cua-driver/src/serve.rs diff --git a/libs/cua-driver-rs/crates/cua-driver/src/skills.rs b/libs/cua-driver/rust/crates/cua-driver/src/skills.rs similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver/src/skills.rs rename to libs/cua-driver/rust/crates/cua-driver/src/skills.rs diff --git a/libs/cua-driver-rs/crates/cua-driver/src/telemetry.rs b/libs/cua-driver/rust/crates/cua-driver/src/telemetry.rs similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver/src/telemetry.rs rename to libs/cua-driver/rust/crates/cua-driver/src/telemetry.rs diff --git a/libs/cua-driver-rs/crates/cua-driver/src/updater.rs b/libs/cua-driver/rust/crates/cua-driver/src/updater.rs similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver/src/updater.rs rename to libs/cua-driver/rust/crates/cua-driver/src/updater.rs diff --git a/libs/cua-driver-rs/crates/cua-driver/src/version_check.rs b/libs/cua-driver/rust/crates/cua-driver/src/version_check.rs similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver/src/version_check.rs rename to libs/cua-driver/rust/crates/cua-driver/src/version_check.rs diff --git a/libs/cua-driver-rs/crates/cua-driver/tests/focus_check_test.rs b/libs/cua-driver/rust/crates/cua-driver/tests/focus_check_test.rs similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver/tests/focus_check_test.rs rename to libs/cua-driver/rust/crates/cua-driver/tests/focus_check_test.rs diff --git a/libs/cua-driver-rs/crates/cua-driver/tests/mcp_protocol_test.rs b/libs/cua-driver/rust/crates/cua-driver/tests/mcp_protocol_test.rs similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver/tests/mcp_protocol_test.rs rename to libs/cua-driver/rust/crates/cua-driver/tests/mcp_protocol_test.rs diff --git a/libs/cua-driver-rs/crates/cua-driver/tests/ux_guard_test.rs b/libs/cua-driver/rust/crates/cua-driver/tests/ux_guard_test.rs similarity index 100% rename from libs/cua-driver-rs/crates/cua-driver/tests/ux_guard_test.rs rename to libs/cua-driver/rust/crates/cua-driver/tests/ux_guard_test.rs diff --git a/libs/cua-driver-rs/crates/cursor-overlay/Cargo.toml b/libs/cua-driver/rust/crates/cursor-overlay/Cargo.toml similarity index 100% rename from libs/cua-driver-rs/crates/cursor-overlay/Cargo.toml rename to libs/cua-driver/rust/crates/cursor-overlay/Cargo.toml diff --git a/libs/cua-driver-rs/crates/cursor-overlay/src/bezier.rs b/libs/cua-driver/rust/crates/cursor-overlay/src/bezier.rs similarity index 100% rename from libs/cua-driver-rs/crates/cursor-overlay/src/bezier.rs rename to libs/cua-driver/rust/crates/cursor-overlay/src/bezier.rs diff --git a/libs/cua-driver-rs/crates/cursor-overlay/src/capture_utils.rs b/libs/cua-driver/rust/crates/cursor-overlay/src/capture_utils.rs similarity index 100% rename from libs/cua-driver-rs/crates/cursor-overlay/src/capture_utils.rs rename to libs/cua-driver/rust/crates/cursor-overlay/src/capture_utils.rs diff --git a/libs/cua-driver-rs/crates/cursor-overlay/src/lib.rs b/libs/cua-driver/rust/crates/cursor-overlay/src/lib.rs similarity index 100% rename from libs/cua-driver-rs/crates/cursor-overlay/src/lib.rs rename to libs/cua-driver/rust/crates/cursor-overlay/src/lib.rs diff --git a/libs/cua-driver-rs/crates/cursor-overlay/src/motion.rs b/libs/cua-driver/rust/crates/cursor-overlay/src/motion.rs similarity index 100% rename from libs/cua-driver-rs/crates/cursor-overlay/src/motion.rs rename to libs/cua-driver/rust/crates/cursor-overlay/src/motion.rs diff --git a/libs/cua-driver-rs/crates/cursor-overlay/src/palette.rs b/libs/cua-driver/rust/crates/cursor-overlay/src/palette.rs similarity index 100% rename from libs/cua-driver-rs/crates/cursor-overlay/src/palette.rs rename to libs/cua-driver/rust/crates/cursor-overlay/src/palette.rs diff --git a/libs/cua-driver-rs/crates/cursor-overlay/src/path_planner.rs b/libs/cua-driver/rust/crates/cursor-overlay/src/path_planner.rs similarity index 100% rename from libs/cua-driver-rs/crates/cursor-overlay/src/path_planner.rs rename to libs/cua-driver/rust/crates/cursor-overlay/src/path_planner.rs diff --git a/libs/cua-driver-rs/crates/cursor-overlay/src/render_state.rs b/libs/cua-driver/rust/crates/cursor-overlay/src/render_state.rs similarity index 100% rename from libs/cua-driver-rs/crates/cursor-overlay/src/render_state.rs rename to libs/cua-driver/rust/crates/cursor-overlay/src/render_state.rs diff --git a/libs/cua-driver-rs/crates/cursor-overlay/src/shape.rs b/libs/cua-driver/rust/crates/cursor-overlay/src/shape.rs similarity index 100% rename from libs/cua-driver-rs/crates/cursor-overlay/src/shape.rs rename to libs/cua-driver/rust/crates/cursor-overlay/src/shape.rs diff --git a/libs/cua-driver-rs/crates/cursor-overlay/src/util.rs b/libs/cua-driver/rust/crates/cursor-overlay/src/util.rs similarity index 100% rename from libs/cua-driver-rs/crates/cursor-overlay/src/util.rs rename to libs/cua-driver/rust/crates/cursor-overlay/src/util.rs diff --git a/libs/cua-driver-rs/crates/focus-monitor-win/Cargo.toml b/libs/cua-driver/rust/crates/focus-monitor-win/Cargo.toml similarity index 100% rename from libs/cua-driver-rs/crates/focus-monitor-win/Cargo.toml rename to libs/cua-driver/rust/crates/focus-monitor-win/Cargo.toml diff --git a/libs/cua-driver-rs/crates/focus-monitor-win/src/main.rs b/libs/cua-driver/rust/crates/focus-monitor-win/src/main.rs similarity index 100% rename from libs/cua-driver-rs/crates/focus-monitor-win/src/main.rs rename to libs/cua-driver/rust/crates/focus-monitor-win/src/main.rs diff --git a/libs/cua-driver-rs/crates/mcp-server/Cargo.toml b/libs/cua-driver/rust/crates/mcp-server/Cargo.toml similarity index 100% rename from libs/cua-driver-rs/crates/mcp-server/Cargo.toml rename to libs/cua-driver/rust/crates/mcp-server/Cargo.toml diff --git a/libs/cua-driver-rs/crates/mcp-server/src/cdp.rs b/libs/cua-driver/rust/crates/mcp-server/src/cdp.rs similarity index 100% rename from libs/cua-driver-rs/crates/mcp-server/src/cdp.rs rename to libs/cua-driver/rust/crates/mcp-server/src/cdp.rs diff --git a/libs/cua-driver-rs/crates/mcp-server/src/element_cache.rs b/libs/cua-driver/rust/crates/mcp-server/src/element_cache.rs similarity index 100% rename from libs/cua-driver-rs/crates/mcp-server/src/element_cache.rs rename to libs/cua-driver/rust/crates/mcp-server/src/element_cache.rs diff --git a/libs/cua-driver-rs/crates/mcp-server/src/image_utils.rs b/libs/cua-driver/rust/crates/mcp-server/src/image_utils.rs similarity index 100% rename from libs/cua-driver-rs/crates/mcp-server/src/image_utils.rs rename to libs/cua-driver/rust/crates/mcp-server/src/image_utils.rs diff --git a/libs/cua-driver-rs/crates/mcp-server/src/lib.rs b/libs/cua-driver/rust/crates/mcp-server/src/lib.rs similarity index 100% rename from libs/cua-driver-rs/crates/mcp-server/src/lib.rs rename to libs/cua-driver/rust/crates/mcp-server/src/lib.rs diff --git a/libs/cua-driver-rs/crates/mcp-server/src/page.rs b/libs/cua-driver/rust/crates/mcp-server/src/page.rs similarity index 100% rename from libs/cua-driver-rs/crates/mcp-server/src/page.rs rename to libs/cua-driver/rust/crates/mcp-server/src/page.rs diff --git a/libs/cua-driver-rs/crates/mcp-server/src/protocol.rs b/libs/cua-driver/rust/crates/mcp-server/src/protocol.rs similarity index 100% rename from libs/cua-driver-rs/crates/mcp-server/src/protocol.rs rename to libs/cua-driver/rust/crates/mcp-server/src/protocol.rs diff --git a/libs/cua-driver-rs/crates/mcp-server/src/recording.rs b/libs/cua-driver/rust/crates/mcp-server/src/recording.rs similarity index 100% rename from libs/cua-driver-rs/crates/mcp-server/src/recording.rs rename to libs/cua-driver/rust/crates/mcp-server/src/recording.rs diff --git a/libs/cua-driver-rs/crates/mcp-server/src/recording_tools.rs b/libs/cua-driver/rust/crates/mcp-server/src/recording_tools.rs similarity index 100% rename from libs/cua-driver-rs/crates/mcp-server/src/recording_tools.rs rename to libs/cua-driver/rust/crates/mcp-server/src/recording_tools.rs diff --git a/libs/cua-driver-rs/crates/mcp-server/src/server.rs b/libs/cua-driver/rust/crates/mcp-server/src/server.rs similarity index 100% rename from libs/cua-driver-rs/crates/mcp-server/src/server.rs rename to libs/cua-driver/rust/crates/mcp-server/src/server.rs diff --git a/libs/cua-driver-rs/crates/mcp-server/src/tool.rs b/libs/cua-driver/rust/crates/mcp-server/src/tool.rs similarity index 100% rename from libs/cua-driver-rs/crates/mcp-server/src/tool.rs rename to libs/cua-driver/rust/crates/mcp-server/src/tool.rs diff --git a/libs/cua-driver-rs/crates/mcp-server/src/tool_args.rs b/libs/cua-driver/rust/crates/mcp-server/src/tool_args.rs similarity index 100% rename from libs/cua-driver-rs/crates/mcp-server/src/tool_args.rs rename to libs/cua-driver/rust/crates/mcp-server/src/tool_args.rs diff --git a/libs/cua-driver-rs/crates/platform-linux/Cargo.toml b/libs/cua-driver/rust/crates/platform-linux/Cargo.toml similarity index 100% rename from libs/cua-driver-rs/crates/platform-linux/Cargo.toml rename to libs/cua-driver/rust/crates/platform-linux/Cargo.toml diff --git a/libs/cua-driver-rs/crates/platform-linux/src/atspi/cache.rs b/libs/cua-driver/rust/crates/platform-linux/src/atspi/cache.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-linux/src/atspi/cache.rs rename to libs/cua-driver/rust/crates/platform-linux/src/atspi/cache.rs diff --git a/libs/cua-driver-rs/crates/platform-linux/src/atspi/mod.rs b/libs/cua-driver/rust/crates/platform-linux/src/atspi/mod.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-linux/src/atspi/mod.rs rename to libs/cua-driver/rust/crates/platform-linux/src/atspi/mod.rs diff --git a/libs/cua-driver-rs/crates/platform-linux/src/capture.rs b/libs/cua-driver/rust/crates/platform-linux/src/capture.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-linux/src/capture.rs rename to libs/cua-driver/rust/crates/platform-linux/src/capture.rs diff --git a/libs/cua-driver-rs/crates/platform-linux/src/input/mod.rs b/libs/cua-driver/rust/crates/platform-linux/src/input/mod.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-linux/src/input/mod.rs rename to libs/cua-driver/rust/crates/platform-linux/src/input/mod.rs diff --git a/libs/cua-driver-rs/crates/platform-linux/src/installed_apps.rs b/libs/cua-driver/rust/crates/platform-linux/src/installed_apps.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-linux/src/installed_apps.rs rename to libs/cua-driver/rust/crates/platform-linux/src/installed_apps.rs diff --git a/libs/cua-driver-rs/crates/platform-linux/src/lib.rs b/libs/cua-driver/rust/crates/platform-linux/src/lib.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-linux/src/lib.rs rename to libs/cua-driver/rust/crates/platform-linux/src/lib.rs diff --git a/libs/cua-driver-rs/crates/platform-linux/src/overlay.rs b/libs/cua-driver/rust/crates/platform-linux/src/overlay.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-linux/src/overlay.rs rename to libs/cua-driver/rust/crates/platform-linux/src/overlay.rs diff --git a/libs/cua-driver-rs/crates/platform-linux/src/proc_fs.rs b/libs/cua-driver/rust/crates/platform-linux/src/proc_fs.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-linux/src/proc_fs.rs rename to libs/cua-driver/rust/crates/platform-linux/src/proc_fs.rs diff --git a/libs/cua-driver-rs/crates/platform-linux/src/tools/impl_.rs b/libs/cua-driver/rust/crates/platform-linux/src/tools/impl_.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-linux/src/tools/impl_.rs rename to libs/cua-driver/rust/crates/platform-linux/src/tools/impl_.rs diff --git a/libs/cua-driver-rs/crates/platform-linux/src/tools/mod.rs b/libs/cua-driver/rust/crates/platform-linux/src/tools/mod.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-linux/src/tools/mod.rs rename to libs/cua-driver/rust/crates/platform-linux/src/tools/mod.rs diff --git a/libs/cua-driver-rs/crates/platform-linux/src/tools/page.rs b/libs/cua-driver/rust/crates/platform-linux/src/tools/page.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-linux/src/tools/page.rs rename to libs/cua-driver/rust/crates/platform-linux/src/tools/page.rs diff --git a/libs/cua-driver-rs/crates/platform-linux/src/tools/stubs.rs b/libs/cua-driver/rust/crates/platform-linux/src/tools/stubs.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-linux/src/tools/stubs.rs rename to libs/cua-driver/rust/crates/platform-linux/src/tools/stubs.rs diff --git a/libs/cua-driver-rs/crates/platform-linux/src/x11/mod.rs b/libs/cua-driver/rust/crates/platform-linux/src/x11/mod.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-linux/src/x11/mod.rs rename to libs/cua-driver/rust/crates/platform-linux/src/x11/mod.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/Cargo.toml b/libs/cua-driver/rust/crates/platform-macos/Cargo.toml similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/Cargo.toml rename to libs/cua-driver/rust/crates/platform-macos/Cargo.toml diff --git a/libs/cua-driver-rs/crates/platform-macos/build.rs b/libs/cua-driver/rust/crates/platform-macos/build.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/build.rs rename to libs/cua-driver/rust/crates/platform-macos/build.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/apps/mod.rs b/libs/cua-driver/rust/crates/platform-macos/src/apps/mod.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/apps/mod.rs rename to libs/cua-driver/rust/crates/platform-macos/src/apps/mod.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/apps/nsworkspace.rs b/libs/cua-driver/rust/crates/platform-macos/src/apps/nsworkspace.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/apps/nsworkspace.rs rename to libs/cua-driver/rust/crates/platform-macos/src/apps/nsworkspace.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/ax/bindings.rs b/libs/cua-driver/rust/crates/platform-macos/src/ax/bindings.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/ax/bindings.rs rename to libs/cua-driver/rust/crates/platform-macos/src/ax/bindings.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/ax/cache.rs b/libs/cua-driver/rust/crates/platform-macos/src/ax/cache.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/ax/cache.rs rename to libs/cua-driver/rust/crates/platform-macos/src/ax/cache.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/ax/mod.rs b/libs/cua-driver/rust/crates/platform-macos/src/ax/mod.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/ax/mod.rs rename to libs/cua-driver/rust/crates/platform-macos/src/ax/mod.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/ax/tree.rs b/libs/cua-driver/rust/crates/platform-macos/src/ax/tree.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/ax/tree.rs rename to libs/cua-driver/rust/crates/platform-macos/src/ax/tree.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/browser/ax_page_reader.rs b/libs/cua-driver/rust/crates/platform-macos/src/browser/ax_page_reader.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/browser/ax_page_reader.rs rename to libs/cua-driver/rust/crates/platform-macos/src/browser/ax_page_reader.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/browser/browser_js.rs b/libs/cua-driver/rust/crates/platform-macos/src/browser/browser_js.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/browser/browser_js.rs rename to libs/cua-driver/rust/crates/platform-macos/src/browser/browser_js.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/browser/cdp_client.rs b/libs/cua-driver/rust/crates/platform-macos/src/browser/cdp_client.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/browser/cdp_client.rs rename to libs/cua-driver/rust/crates/platform-macos/src/browser/cdp_client.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/browser/electron_js.rs b/libs/cua-driver/rust/crates/platform-macos/src/browser/electron_js.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/browser/electron_js.rs rename to libs/cua-driver/rust/crates/platform-macos/src/browser/electron_js.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/browser/mod.rs b/libs/cua-driver/rust/crates/platform-macos/src/browser/mod.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/browser/mod.rs rename to libs/cua-driver/rust/crates/platform-macos/src/browser/mod.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/browser/wk_web_view.rs b/libs/cua-driver/rust/crates/platform-macos/src/browser/wk_web_view.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/browser/wk_web_view.rs rename to libs/cua-driver/rust/crates/platform-macos/src/browser/wk_web_view.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/capture.rs b/libs/cua-driver/rust/crates/platform-macos/src/capture.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/capture.rs rename to libs/cua-driver/rust/crates/platform-macos/src/capture.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/cursor/mod.rs b/libs/cua-driver/rust/crates/platform-macos/src/cursor/mod.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/cursor/mod.rs rename to libs/cua-driver/rust/crates/platform-macos/src/cursor/mod.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/cursor/overlay.rs b/libs/cua-driver/rust/crates/platform-macos/src/cursor/overlay.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/cursor/overlay.rs rename to libs/cua-driver/rust/crates/platform-macos/src/cursor/overlay.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/cursor/state.rs b/libs/cua-driver/rust/crates/platform-macos/src/cursor/state.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/cursor/state.rs rename to libs/cua-driver/rust/crates/platform-macos/src/cursor/state.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/focus_guard.rs b/libs/cua-driver/rust/crates/platform-macos/src/focus_guard.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/focus_guard.rs rename to libs/cua-driver/rust/crates/platform-macos/src/focus_guard.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/focus_steal.rs b/libs/cua-driver/rust/crates/platform-macos/src/focus_steal.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/focus_steal.rs rename to libs/cua-driver/rust/crates/platform-macos/src/focus_steal.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/input/ax_actions.rs b/libs/cua-driver/rust/crates/platform-macos/src/input/ax_actions.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/input/ax_actions.rs rename to libs/cua-driver/rust/crates/platform-macos/src/input/ax_actions.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/input/keyboard.rs b/libs/cua-driver/rust/crates/platform-macos/src/input/keyboard.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/input/keyboard.rs rename to libs/cua-driver/rust/crates/platform-macos/src/input/keyboard.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/input/mod.rs b/libs/cua-driver/rust/crates/platform-macos/src/input/mod.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/input/mod.rs rename to libs/cua-driver/rust/crates/platform-macos/src/input/mod.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/input/mouse.rs b/libs/cua-driver/rust/crates/platform-macos/src/input/mouse.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/input/mouse.rs rename to libs/cua-driver/rust/crates/platform-macos/src/input/mouse.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/input/skylight.rs b/libs/cua-driver/rust/crates/platform-macos/src/input/skylight.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/input/skylight.rs rename to libs/cua-driver/rust/crates/platform-macos/src/input/skylight.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/lib.rs b/libs/cua-driver/rust/crates/platform-macos/src/lib.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/lib.rs rename to libs/cua-driver/rust/crates/platform-macos/src/lib.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/permissions/gate.rs b/libs/cua-driver/rust/crates/platform-macos/src/permissions/gate.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/permissions/gate.rs rename to libs/cua-driver/rust/crates/platform-macos/src/permissions/gate.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/permissions/mod.rs b/libs/cua-driver/rust/crates/platform-macos/src/permissions/mod.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/permissions/mod.rs rename to libs/cua-driver/rust/crates/platform-macos/src/permissions/mod.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/permissions/panel.rs b/libs/cua-driver/rust/crates/platform-macos/src/permissions/panel.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/permissions/panel.rs rename to libs/cua-driver/rust/crates/platform-macos/src/permissions/panel.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/permissions/status.rs b/libs/cua-driver/rust/crates/platform-macos/src/permissions/status.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/permissions/status.rs rename to libs/cua-driver/rust/crates/platform-macos/src/permissions/status.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/check_permissions.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/check_permissions.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/check_permissions.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/check_permissions.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/click.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/click.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/click.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/click.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/cursor_tools.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/cursor_tools.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/cursor_tools.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/cursor_tools.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/double_click.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/double_click.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/double_click.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/double_click.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/drag.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/drag.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/drag.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/drag.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/get_accessibility_tree.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/get_accessibility_tree.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/get_accessibility_tree.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/get_accessibility_tree.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/get_config.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/get_config.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/get_config.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/get_config.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/get_cursor_position.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/get_cursor_position.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/get_cursor_position.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/get_cursor_position.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/get_screen_size.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/get_screen_size.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/get_screen_size.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/get_screen_size.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/get_window_state.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/get_window_state.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/get_window_state.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/get_window_state.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/hotkey.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/hotkey.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/hotkey.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/hotkey.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/kill_app.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/kill_app.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/kill_app.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/kill_app.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/launch_app.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/launch_app.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/launch_app.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/launch_app.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/list_apps.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/list_apps.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/list_apps.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/list_apps.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/list_windows.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/list_windows.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/list_windows.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/list_windows.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/mod.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/mod.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/mod.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/mod.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/move_cursor.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/move_cursor.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/move_cursor.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/move_cursor.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/page.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/page.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/page.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/page.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/press_key.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/press_key.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/press_key.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/press_key.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/right_click.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/right_click.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/right_click.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/right_click.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/screenshot.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/screenshot.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/screenshot.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/screenshot.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/screenshot_compat.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/screenshot_compat.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/screenshot_compat.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/screenshot_compat.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/scroll.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/scroll.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/scroll.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/scroll.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/set_config.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/set_config.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/set_config.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/set_config.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/set_value.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/set_value.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/set_value.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/set_value.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/type_text.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/type_text.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/type_text.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/type_text.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/type_text_chars.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/type_text_chars.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/type_text_chars.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/type_text_chars.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/tools/zoom.rs b/libs/cua-driver/rust/crates/platform-macos/src/tools/zoom.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/tools/zoom.rs rename to libs/cua-driver/rust/crates/platform-macos/src/tools/zoom.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/window_change_detector.rs b/libs/cua-driver/rust/crates/platform-macos/src/window_change_detector.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/window_change_detector.rs rename to libs/cua-driver/rust/crates/platform-macos/src/window_change_detector.rs diff --git a/libs/cua-driver-rs/crates/platform-macos/src/windows.rs b/libs/cua-driver/rust/crates/platform-macos/src/windows.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-macos/src/windows.rs rename to libs/cua-driver/rust/crates/platform-macos/src/windows.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/Cargo.toml b/libs/cua-driver/rust/crates/platform-windows/Cargo.toml similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/Cargo.toml rename to libs/cua-driver/rust/crates/platform-windows/Cargo.toml diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/agent_cursor_setters_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/agent_cursor_setters_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/agent_cursor_setters_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/agent_cursor_setters_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/click_domains.rs b/libs/cua-driver/rust/crates/platform-windows/examples/click_domains.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/click_domains.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/click_domains.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/click_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/click_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/click_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/click_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/config_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/config_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/config_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/config_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/cursor_visibility.rs b/libs/cua-driver/rust/crates/platform-windows/examples/cursor_visibility.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/cursor_visibility.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/cursor_visibility.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/daemon_lifecycle_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/daemon_lifecycle_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/daemon_lifecycle_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/daemon_lifecycle_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/describe_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/describe_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/describe_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/describe_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/double_click_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/double_click_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/double_click_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/double_click_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/drag_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/drag_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/drag_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/drag_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/dump_docs_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/dump_docs_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/dump_docs_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/dump_docs_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/get_agent_cursor_state_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/get_agent_cursor_state_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/get_agent_cursor_state_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/get_agent_cursor_state_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/get_cursor_position_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/get_cursor_position_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/get_cursor_position_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/get_cursor_position_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/get_screen_size_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/get_screen_size_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/get_screen_size_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/get_screen_size_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/get_window_state_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/get_window_state_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/get_window_state_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/get_window_state_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/hotkey_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/hotkey_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/hotkey_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/hotkey_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/launch_app_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/launch_app_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/launch_app_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/launch_app_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/list_apps_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/list_apps_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/list_apps_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/list_apps_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/list_tools_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/list_tools_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/list_tools_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/list_tools_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/list_windows_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/list_windows_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/list_windows_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/list_windows_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/mcp_config_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/mcp_config_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/mcp_config_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/mcp_config_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/overlay_dump.rs b/libs/cua-driver/rust/crates/platform-windows/examples/overlay_dump.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/overlay_dump.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/overlay_dump.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/press_key_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/press_key_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/press_key_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/press_key_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/recording_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/recording_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/recording_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/recording_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/replay_trajectory_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/replay_trajectory_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/replay_trajectory_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/replay_trajectory_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/right_click_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/right_click_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/right_click_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/right_click_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/screenshot_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/screenshot_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/screenshot_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/screenshot_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/scroll_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/scroll_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/scroll_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/scroll_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/set_agent_cursor_style_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/set_agent_cursor_style_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/set_agent_cursor_style_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/set_agent_cursor_style_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/set_value_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/set_value_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/set_value_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/set_value_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/type_text_chars_alias_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/type_text_chars_alias_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/type_text_chars_alias_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/type_text_chars_alias_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/type_text_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/type_text_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/type_text_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/type_text_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/update_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/update_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/update_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/update_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/examples/zoom_parity.rs b/libs/cua-driver/rust/crates/platform-windows/examples/zoom_parity.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/examples/zoom_parity.rs rename to libs/cua-driver/rust/crates/platform-windows/examples/zoom_parity.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/capture.rs b/libs/cua-driver/rust/crates/platform-windows/src/capture.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/capture.rs rename to libs/cua-driver/rust/crates/platform-windows/src/capture.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/diagnostics.rs b/libs/cua-driver/rust/crates/platform-windows/src/diagnostics.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/diagnostics.rs rename to libs/cua-driver/rust/crates/platform-windows/src/diagnostics.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/input/keyboard.rs b/libs/cua-driver/rust/crates/platform-windows/src/input/keyboard.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/input/keyboard.rs rename to libs/cua-driver/rust/crates/platform-windows/src/input/keyboard.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/input/mod.rs b/libs/cua-driver/rust/crates/platform-windows/src/input/mod.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/input/mod.rs rename to libs/cua-driver/rust/crates/platform-windows/src/input/mod.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/input/mouse.rs b/libs/cua-driver/rust/crates/platform-windows/src/input/mouse.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/input/mouse.rs rename to libs/cua-driver/rust/crates/platform-windows/src/input/mouse.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/launch_uwp.rs b/libs/cua-driver/rust/crates/platform-windows/src/launch_uwp.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/launch_uwp.rs rename to libs/cua-driver/rust/crates/platform-windows/src/launch_uwp.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/lib.rs b/libs/cua-driver/rust/crates/platform-windows/src/lib.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/lib.rs rename to libs/cua-driver/rust/crates/platform-windows/src/lib.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/overlay.rs b/libs/cua-driver/rust/crates/platform-windows/src/overlay.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/overlay.rs rename to libs/cua-driver/rust/crates/platform-windows/src/overlay.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/tools/impl_.rs b/libs/cua-driver/rust/crates/platform-windows/src/tools/impl_.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/tools/impl_.rs rename to libs/cua-driver/rust/crates/platform-windows/src/tools/impl_.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/tools/mod.rs b/libs/cua-driver/rust/crates/platform-windows/src/tools/mod.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/tools/mod.rs rename to libs/cua-driver/rust/crates/platform-windows/src/tools/mod.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/tools/page.rs b/libs/cua-driver/rust/crates/platform-windows/src/tools/page.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/tools/page.rs rename to libs/cua-driver/rust/crates/platform-windows/src/tools/page.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/tools/page_bookmark.rs b/libs/cua-driver/rust/crates/platform-windows/src/tools/page_bookmark.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/tools/page_bookmark.rs rename to libs/cua-driver/rust/crates/platform-windows/src/tools/page_bookmark.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/tools/stubs.rs b/libs/cua-driver/rust/crates/platform-windows/src/tools/stubs.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/tools/stubs.rs rename to libs/cua-driver/rust/crates/platform-windows/src/tools/stubs.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/uia/cache.rs b/libs/cua-driver/rust/crates/platform-windows/src/uia/cache.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/uia/cache.rs rename to libs/cua-driver/rust/crates/platform-windows/src/uia/cache.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/uia/mod.rs b/libs/cua-driver/rust/crates/platform-windows/src/uia/mod.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/uia/mod.rs rename to libs/cua-driver/rust/crates/platform-windows/src/uia/mod.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/uia/windows_enum.rs b/libs/cua-driver/rust/crates/platform-windows/src/uia/windows_enum.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/uia/windows_enum.rs rename to libs/cua-driver/rust/crates/platform-windows/src/uia/windows_enum.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/win32/apps.rs b/libs/cua-driver/rust/crates/platform-windows/src/win32/apps.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/win32/apps.rs rename to libs/cua-driver/rust/crates/platform-windows/src/win32/apps.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/win32/installed_apps.rs b/libs/cua-driver/rust/crates/platform-windows/src/win32/installed_apps.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/win32/installed_apps.rs rename to libs/cua-driver/rust/crates/platform-windows/src/win32/installed_apps.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/win32/mod.rs b/libs/cua-driver/rust/crates/platform-windows/src/win32/mod.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/win32/mod.rs rename to libs/cua-driver/rust/crates/platform-windows/src/win32/mod.rs diff --git a/libs/cua-driver-rs/crates/platform-windows/src/win32/windows.rs b/libs/cua-driver/rust/crates/platform-windows/src/win32/windows.rs similarity index 100% rename from libs/cua-driver-rs/crates/platform-windows/src/win32/windows.rs rename to libs/cua-driver/rust/crates/platform-windows/src/win32/windows.rs diff --git a/libs/cua-driver-rs/docs/dedup-audit.md b/libs/cua-driver/rust/docs/dedup-audit.md similarity index 100% rename from libs/cua-driver-rs/docs/dedup-audit.md rename to libs/cua-driver/rust/docs/dedup-audit.md diff --git a/libs/cua-driver-rs/sandbox/run-tests-in-sandbox.ps1 b/libs/cua-driver/rust/sandbox/run-tests-in-sandbox.ps1 similarity index 100% rename from libs/cua-driver-rs/sandbox/run-tests-in-sandbox.ps1 rename to libs/cua-driver/rust/sandbox/run-tests-in-sandbox.ps1 diff --git a/libs/cua-driver-rs/sandbox/sandbox-runner.ps1 b/libs/cua-driver/rust/sandbox/sandbox-runner.ps1 similarity index 100% rename from libs/cua-driver-rs/sandbox/sandbox-runner.ps1 rename to libs/cua-driver/rust/sandbox/sandbox-runner.ps1 diff --git a/libs/cua-driver-rs/scripts/CuaDriverBundle/Contents/Info.plist b/libs/cua-driver/rust/scripts/CuaDriverBundle/Contents/Info.plist similarity index 100% rename from libs/cua-driver-rs/scripts/CuaDriverBundle/Contents/Info.plist rename to libs/cua-driver/rust/scripts/CuaDriverBundle/Contents/Info.plist diff --git a/libs/cua-driver-rs/scripts/CuaDriverBundle/Contents/MacOS/.gitkeep b/libs/cua-driver/rust/scripts/CuaDriverBundle/Contents/MacOS/.gitkeep similarity index 100% rename from libs/cua-driver-rs/scripts/CuaDriverBundle/Contents/MacOS/.gitkeep rename to libs/cua-driver/rust/scripts/CuaDriverBundle/Contents/MacOS/.gitkeep diff --git a/libs/cua-driver-rs/scripts/install-local.ps1 b/libs/cua-driver/rust/scripts/install-local.ps1 similarity index 100% rename from libs/cua-driver-rs/scripts/install-local.ps1 rename to libs/cua-driver/rust/scripts/install-local.ps1 diff --git a/libs/cua-driver-rs/scripts/install-local.sh b/libs/cua-driver/rust/scripts/install-local.sh similarity index 100% rename from libs/cua-driver-rs/scripts/install-local.sh rename to libs/cua-driver/rust/scripts/install-local.sh diff --git a/libs/cua-driver-rs/test-apps/.gitignore b/libs/cua-driver/rust/test-apps/.gitignore similarity index 100% rename from libs/cua-driver-rs/test-apps/.gitignore rename to libs/cua-driver/rust/test-apps/.gitignore diff --git a/libs/cua-driver-rs/test-apps/README.md b/libs/cua-driver/rust/test-apps/README.md similarity index 100% rename from libs/cua-driver-rs/test-apps/README.md rename to libs/cua-driver/rust/test-apps/README.md diff --git a/libs/cua-driver-rs/tests/integration/driver_client.py b/libs/cua-driver/rust/tests/integration/driver_client.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/driver_client.py rename to libs/cua-driver/rust/tests/integration/driver_client.py diff --git a/libs/cua-driver-rs/tests/integration/fixtures/interactive.html b/libs/cua-driver/rust/tests/integration/fixtures/interactive.html similarity index 100% rename from libs/cua-driver-rs/tests/integration/fixtures/interactive.html rename to libs/cua-driver/rust/tests/integration/fixtures/interactive.html diff --git a/libs/cua-driver-rs/tests/integration/fixtures/test_cursor.png b/libs/cua-driver/rust/tests/integration/fixtures/test_cursor.png similarity index 100% rename from libs/cua-driver-rs/tests/integration/fixtures/test_cursor.png rename to libs/cua-driver/rust/tests/integration/fixtures/test_cursor.png diff --git a/libs/cua-driver-rs/tests/integration/run_tests.sh b/libs/cua-driver/rust/tests/integration/run_tests.sh similarity index 100% rename from libs/cua-driver-rs/tests/integration/run_tests.sh rename to libs/cua-driver/rust/tests/integration/run_tests.sh diff --git a/libs/cua-driver-rs/tests/integration/test_api_parity.py b/libs/cua-driver/rust/tests/integration/test_api_parity.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/test_api_parity.py rename to libs/cua-driver/rust/tests/integration/test_api_parity.py diff --git a/libs/cua-driver-rs/tests/integration/test_background_focus.py b/libs/cua-driver/rust/tests/integration/test_background_focus.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/test_background_focus.py rename to libs/cua-driver/rust/tests/integration/test_background_focus.py diff --git a/libs/cua-driver-rs/tests/integration/test_cli.py b/libs/cua-driver/rust/tests/integration/test_cli.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/test_cli.py rename to libs/cua-driver/rust/tests/integration/test_cli.py diff --git a/libs/cua-driver-rs/tests/integration/test_concurrent_drivers.py b/libs/cua-driver/rust/tests/integration/test_concurrent_drivers.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/test_concurrent_drivers.py rename to libs/cua-driver/rust/tests/integration/test_concurrent_drivers.py diff --git a/libs/cua-driver-rs/tests/integration/test_cursor_visibility.py b/libs/cua-driver/rust/tests/integration/test_cursor_visibility.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/test_cursor_visibility.py rename to libs/cua-driver/rust/tests/integration/test_cursor_visibility.py diff --git a/libs/cua-driver-rs/tests/integration/test_double_click_delivery.py b/libs/cua-driver/rust/tests/integration/test_double_click_delivery.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/test_double_click_delivery.py rename to libs/cua-driver/rust/tests/integration/test_double_click_delivery.py diff --git a/libs/cua-driver-rs/tests/integration/test_focus_steal_parity.py b/libs/cua-driver/rust/tests/integration/test_focus_steal_parity.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/test_focus_steal_parity.py rename to libs/cua-driver/rust/tests/integration/test_focus_steal_parity.py diff --git a/libs/cua-driver-rs/tests/integration/test_list_windows.py b/libs/cua-driver/rust/tests/integration/test_list_windows.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/test_list_windows.py rename to libs/cua-driver/rust/tests/integration/test_list_windows.py diff --git a/libs/cua-driver-rs/tests/integration/test_overlay_z_order.py b/libs/cua-driver/rust/tests/integration/test_overlay_z_order.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/test_overlay_z_order.py rename to libs/cua-driver/rust/tests/integration/test_overlay_z_order.py diff --git a/libs/cua-driver-rs/tests/integration/test_pixel_click_delivery.py b/libs/cua-driver/rust/tests/integration/test_pixel_click_delivery.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/test_pixel_click_delivery.py rename to libs/cua-driver/rust/tests/integration/test_pixel_click_delivery.py diff --git a/libs/cua-driver-rs/tests/integration/v2/PHILOSOPHY.md b/libs/cua-driver/rust/tests/integration/v2/PHILOSOPHY.md similarity index 100% rename from libs/cua-driver-rs/tests/integration/v2/PHILOSOPHY.md rename to libs/cua-driver/rust/tests/integration/v2/PHILOSOPHY.md diff --git a/libs/cua-driver-rs/tests/integration/v2/assets/blender/toolbar_ref.png b/libs/cua-driver/rust/tests/integration/v2/assets/blender/toolbar_ref.png similarity index 100% rename from libs/cua-driver-rs/tests/integration/v2/assets/blender/toolbar_ref.png rename to libs/cua-driver/rust/tests/integration/v2/assets/blender/toolbar_ref.png diff --git a/libs/cua-driver-rs/tests/integration/v2/assets/tauri/desktop-test-app-macos-arm64 b/libs/cua-driver/rust/tests/integration/v2/assets/tauri/desktop-test-app-macos-arm64 similarity index 100% rename from libs/cua-driver-rs/tests/integration/v2/assets/tauri/desktop-test-app-macos-arm64 rename to libs/cua-driver/rust/tests/integration/v2/assets/tauri/desktop-test-app-macos-arm64 diff --git a/libs/cua-driver-rs/tests/integration/v2/assets/test_page.html b/libs/cua-driver/rust/tests/integration/v2/assets/test_page.html similarity index 100% rename from libs/cua-driver-rs/tests/integration/v2/assets/test_page.html rename to libs/cua-driver/rust/tests/integration/v2/assets/test_page.html diff --git a/libs/cua-driver-rs/tests/integration/v2/conftest.py b/libs/cua-driver/rust/tests/integration/v2/conftest.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/v2/conftest.py rename to libs/cua-driver/rust/tests/integration/v2/conftest.py diff --git a/libs/cua-driver-rs/tests/integration/v2/harness/__init__.py b/libs/cua-driver/rust/tests/integration/v2/harness/__init__.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/v2/harness/__init__.py rename to libs/cua-driver/rust/tests/integration/v2/harness/__init__.py diff --git a/libs/cua-driver-rs/tests/integration/v2/harness/cv.py b/libs/cua-driver/rust/tests/integration/v2/harness/cv.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/v2/harness/cv.py rename to libs/cua-driver/rust/tests/integration/v2/harness/cv.py diff --git a/libs/cua-driver-rs/tests/integration/v2/harness/driver.py b/libs/cua-driver/rust/tests/integration/v2/harness/driver.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/v2/harness/driver.py rename to libs/cua-driver/rust/tests/integration/v2/harness/driver.py diff --git a/libs/cua-driver-rs/tests/integration/v2/harness/monitor.py b/libs/cua-driver/rust/tests/integration/v2/harness/monitor.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/v2/harness/monitor.py rename to libs/cua-driver/rust/tests/integration/v2/harness/monitor.py diff --git a/libs/cua-driver-rs/tests/integration/v2/harness/tree.py b/libs/cua-driver/rust/tests/integration/v2/harness/tree.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/v2/harness/tree.py rename to libs/cua-driver/rust/tests/integration/v2/harness/tree.py diff --git a/libs/cua-driver-rs/tests/integration/v2/test_blender.py b/libs/cua-driver/rust/tests/integration/v2/test_blender.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/v2/test_blender.py rename to libs/cua-driver/rust/tests/integration/v2/test_blender.py diff --git a/libs/cua-driver-rs/tests/integration/v2/test_chrome.py b/libs/cua-driver/rust/tests/integration/v2/test_chrome.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/v2/test_chrome.py rename to libs/cua-driver/rust/tests/integration/v2/test_chrome.py diff --git a/libs/cua-driver-rs/tests/integration/v2/test_electron.py b/libs/cua-driver/rust/tests/integration/v2/test_electron.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/v2/test_electron.py rename to libs/cua-driver/rust/tests/integration/v2/test_electron.py diff --git a/libs/cua-driver-rs/tests/integration/v2/test_safari.py b/libs/cua-driver/rust/tests/integration/v2/test_safari.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/v2/test_safari.py rename to libs/cua-driver/rust/tests/integration/v2/test_safari.py diff --git a/libs/cua-driver-rs/tests/integration/v2/test_tauri.py b/libs/cua-driver/rust/tests/integration/v2/test_tauri.py similarity index 100% rename from libs/cua-driver-rs/tests/integration/v2/test_tauri.py rename to libs/cua-driver/rust/tests/integration/v2/test_tauri.py From 29c65c07a5f5506f392ebf2b2d56cae7e55f551e Mon Sep 17 00:00:00 2001 From: Francesco Bonacci Date: Sun, 24 May 2026 10:41:01 +0000 Subject: [PATCH 2/5] chore: git mv libs/cua-driver/{Swift port files} -> libs/cua-driver/swift/ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pure rename — no content changes. Swift port now lives at libs/cua-driver/swift/ as a sibling to libs/cua-driver/rust/. Moved: - App/, Sources/, Tests/, Skills/ - Package.swift, Package.resolved - .bumpversion.cfg (Swift's, distinct from rust/'s) - .gitignore (mostly Xcode / SPM) Kept at libs/cua-driver/ root (shared between both ports): - scripts/ (canonical install.sh / install.ps1, multi-backend) - docs/ (tool-output-format.md, applies to both) - README.md (project overview) Repo-root Package.swift `path:` entries still point at the old Sources/ paths — Phase C fixes those. --- libs/cua-driver/{ => swift}/.bumpversion.cfg | 0 libs/cua-driver/{ => swift}/.gitignore | 0 .../{ => swift}/App/CuaDriver/AppIcon.icns | Bin .../App/CuaDriver/AppIcon.iconset/icon_128x128.png | Bin .../CuaDriver/AppIcon.iconset/icon_128x128@2x.png | Bin .../App/CuaDriver/AppIcon.iconset/icon_16x16.png | Bin .../App/CuaDriver/AppIcon.iconset/icon_16x16@2x.png | Bin .../App/CuaDriver/AppIcon.iconset/icon_256x256.png | Bin .../CuaDriver/AppIcon.iconset/icon_256x256@2x.png | Bin .../App/CuaDriver/AppIcon.iconset/icon_32x32.png | Bin .../App/CuaDriver/AppIcon.iconset/icon_32x32@2x.png | Bin .../App/CuaDriver/AppIcon.iconset/icon_512x512.png | Bin .../CuaDriver/AppIcon.iconset/icon_512x512@2x.png | Bin .../cua-driver/{ => swift}/App/CuaDriver/Info.plist | 0 libs/cua-driver/{ => swift}/Package.resolved | 0 libs/cua-driver/{ => swift}/Package.swift | 0 .../{ => swift}/Skills/cua-driver/README.md | 0 .../{ => swift}/Skills/cua-driver/RECORDING.md | 0 .../{ => swift}/Skills/cua-driver/SKILL.md | 0 .../{ => swift}/Skills/cua-driver/TESTS.md | 0 .../{ => swift}/Skills/cua-driver/WEB_APPS.md | 0 .../Sources/CuaDriverCLI/BundleHelpers.swift | 0 .../Sources/CuaDriverCLI/CallCommand.swift | 0 .../Sources/CuaDriverCLI/ConfigCommand.swift | 0 .../Sources/CuaDriverCLI/CuaDriverCommand.swift | 0 .../Sources/CuaDriverCLI/DiagnoseCommand.swift | 0 .../Sources/CuaDriverCLI/Docs/CLIDocExtractor.swift | 0 .../Sources/CuaDriverCLI/DoctorCommand.swift | 0 .../Sources/CuaDriverCLI/DumpDocsCommand.swift | 0 .../Sources/CuaDriverCLI/RecordingCommand.swift | 0 .../CuaDriverCLI/RecordingRenderCommand.swift | 0 .../Sources/CuaDriverCLI/ServeCommand.swift | 0 .../Sources/CuaDriverCLI/VersionCheck.swift | 0 .../Sources/CuaDriverCore/AppState/AppState.swift | 0 .../Sources/CuaDriverCore/Apps/AppEnumerator.swift | 0 .../Sources/CuaDriverCore/Apps/AppInfo.swift | 0 .../Sources/CuaDriverCore/Apps/AppLauncher.swift | 0 .../CuaDriverCore/Browser/AXPageReader.swift | 0 .../Sources/CuaDriverCore/Browser/BrowserJS.swift | 0 .../Sources/CuaDriverCore/Browser/CDPClient.swift | 0 .../Sources/CuaDriverCore/Browser/ElectronJS.swift | 0 .../CuaDriverCore/Browser/WebInspectorXPC.swift | 0 .../Sources/CuaDriverCore/Browser/WebKitJS.swift | 0 .../CuaDriverCore/Capture/DebugCrosshair.swift | 0 .../Sources/CuaDriverCore/Capture/ScreenInfo.swift | 0 .../CuaDriverCore/Capture/WindowCapture.swift | 0 .../Sources/CuaDriverCore/Config/ConfigStore.swift | 0 .../CuaDriverCore/Config/CuaDriverConfig.swift | 0 .../Sources/CuaDriverCore/CuaDriverCore.swift | 0 .../Sources/CuaDriverCore/Cursor/AgentCursor.swift | 0 .../Cursor/AgentCursorOverlayWindow.swift | 0 .../CuaDriverCore/Cursor/AgentCursorRenderer.swift | 0 .../CuaDriverCore/Cursor/AgentCursorView.swift | 0 .../Sources/CuaDriverCore/Cursor/Bezier.swift | 0 .../CuaDriverCore/Cursor/CursorMotionPath.swift | 0 .../CuaDriverCore/Focus/AXEnablementAssertion.swift | 0 .../Sources/CuaDriverCore/Focus/FocusGuard.swift | 0 .../Focus/SyntheticAppFocusEnforcer.swift | 0 .../Focus/SystemFocusStealPreventer.swift | 0 .../Sources/CuaDriverCore/Input/AXInput.swift | 0 .../Sources/CuaDriverCore/Input/CursorControl.swift | 0 .../Sources/CuaDriverCore/Input/CursorPoint.swift | 0 .../CuaDriverCore/Input/FocusWithoutRaise.swift | 0 .../Sources/CuaDriverCore/Input/KeyboardInput.swift | 0 .../Sources/CuaDriverCore/Input/MouseInput.swift | 0 .../CuaDriverCore/Input/SkyLightEventPost.swift | 0 .../CuaDriverCore/Permissions/Permissions.swift | 0 .../CuaDriverCore/Permissions/PermissionsGate.swift | 0 .../Recording/ClickMarkerRenderer.swift | 0 .../CuaDriverCore/Recording/CursorSampler.swift | 0 .../CuaDriverCore/Recording/RecordingSession.swift | 0 .../Recording/Render/FrameTransform.swift | 0 .../Recording/Render/RecordingRenderer.swift | 0 .../Recording/Render/TrajectoryLoader.swift | 0 .../CuaDriverCore/Recording/VideoRecorder.swift | 0 .../CuaDriverCore/Recording/Zoom/ActionSpan.swift | 0 .../Recording/Zoom/CursorTelemetry.swift | 0 .../CuaDriverCore/Recording/Zoom/ZoomMath.swift | 0 .../CuaDriverCore/Recording/Zoom/ZoomRegion.swift | 0 .../CuaDriverCore/Telemetry/TelemetryClient.swift | 0 .../CuaDriverCore/Windows/SpaceMigrator.swift | 0 .../Windows/WindowCoordinateSpace.swift | 0 .../CuaDriverCore/Windows/WindowEnumerator.swift | 0 .../Sources/CuaDriverCore/Windows/WindowInfo.swift | 0 .../Sources/CuaDriverServer/AppStateRegistry.swift | 0 .../ClaudeCodeComputerUseCompatTools.swift | 0 .../CuaDriverServer/CuaDriverMCPServer.swift | 0 .../Sources/CuaDriverServer/DaemonClient.swift | 0 .../Sources/CuaDriverServer/DaemonProtocol.swift | 0 .../Sources/CuaDriverServer/DaemonServer.swift | 0 .../CuaDriverServer/Docs/MCPDocExtractor.swift | 0 .../Sources/CuaDriverServer/ToolRegistry.swift | 0 .../Tools/CheckPermissionsTool.swift | 0 .../Sources/CuaDriverServer/Tools/ClickTool.swift | 0 .../CuaDriverServer/Tools/DoubleClickTool.swift | 0 .../Sources/CuaDriverServer/Tools/DragTool.swift | 0 .../Tools/GetAgentCursorStateTool.swift | 0 .../CuaDriverServer/Tools/GetConfigTool.swift | 0 .../Tools/GetCursorPositionTool.swift | 0 .../Tools/GetRecordingStateTool.swift | 0 .../CuaDriverServer/Tools/GetScreenSizeTool.swift | 0 .../CuaDriverServer/Tools/GetWindowStateTool.swift | 0 .../Sources/CuaDriverServer/Tools/HotkeyTool.swift | 0 .../CuaDriverServer/Tools/ImageResizeRegistry.swift | 0 .../CuaDriverServer/Tools/LaunchAppTool.swift | 0 .../CuaDriverServer/Tools/ListAppsTool.swift | 0 .../CuaDriverServer/Tools/ListWindowsTool.swift | 0 .../CuaDriverServer/Tools/MoveCursorTool.swift | 0 .../Sources/CuaDriverServer/Tools/PageTool.swift | 0 .../CuaDriverServer/Tools/PressKeyTool.swift | 0 .../Tools/ReplayTrajectoryTool.swift | 0 .../CuaDriverServer/Tools/RightClickTool.swift | 0 .../CuaDriverServer/Tools/ScreenshotTool.swift | 0 .../Sources/CuaDriverServer/Tools/ScrollTool.swift | 0 .../Tools/SetAgentCursorEnabledTool.swift | 0 .../Tools/SetAgentCursorMotionTool.swift | 0 .../Tools/SetAgentCursorStyleTool.swift | 0 .../CuaDriverServer/Tools/SetConfigTool.swift | 0 .../CuaDriverServer/Tools/SetRecordingTool.swift | 0 .../CuaDriverServer/Tools/SetValueTool.swift | 0 .../CuaDriverServer/Tools/TypeTextTool.swift | 0 .../Tools/WindowChangeDetector.swift | 0 .../Sources/CuaDriverServer/Tools/ZoomTool.swift | 0 .../Tests/FocusMonitorApp/FocusMonitorApp.swift | 0 .../{ => swift}/Tests/FocusMonitorApp/build.sh | 0 .../FocusStealPreventerTests.swift | 0 .../Tests/ZoomMathTests/ZoomMathTests.swift | 0 .../Tests/integration/assets/test_page.html | 0 .../{ => swift}/Tests/integration/conftest.py | 0 .../{ => swift}/Tests/integration/driver_client.py | 0 .../Tests/integration/fixtures/form_all_inputs.html | 0 .../Tests/integration/fixtures/interactive.html | 0 .../Tests/integration/harness/__init__.py | 0 .../{ => swift}/Tests/integration/harness/cv.py | 0 .../{ => swift}/Tests/integration/harness/driver.py | 0 .../Tests/integration/harness/monitor.py | 0 .../{ => swift}/Tests/integration/harness/tree.py | 0 .../integration/test_app_name_locale_fallback.py | 0 .../Tests/integration/test_background_focus.py | 0 .../integration/test_background_menu_shortcut.py | 0 .../{ => swift}/Tests/integration/test_blender.py | 0 .../Tests/integration/test_browser_js.py | 0 .../Tests/integration/test_check_permissions_cli.py | 0 .../{ => swift}/Tests/integration/test_chrome.py | 0 .../Tests/integration/test_chrome_minimized_nav.py | 0 .../integration/test_click_opens_new_window.py | 0 .../Tests/integration/test_click_pixel_ax.py | 0 .../Tests/integration/test_drag_slider_delivery.py | 0 .../{ => swift}/Tests/integration/test_electron.py | 0 .../integration/test_hermes_chrome_form_fill.py | 0 .../Tests/integration/test_hermes_form_fill.py | 0 .../Tests/integration/test_hermes_form_fill_qwen.py | 0 .../integration/test_hermes_launch_safari_bg.py | 0 .../Tests/integration/test_hidden_app_capture.py | 0 .../Tests/integration/test_launch_app_visible.py | 0 .../Tests/integration/test_list_windows.py | 0 .../Tests/integration/test_overlay_z_order.py | 0 .../{ => swift}/Tests/integration/test_safari.py | 0 .../{ => swift}/Tests/integration/test_tauri.py | 0 .../{ => swift}/Tests/integration/test_webkit_js.py | 0 160 files changed, 0 insertions(+), 0 deletions(-) rename libs/cua-driver/{ => swift}/.bumpversion.cfg (100%) rename libs/cua-driver/{ => swift}/.gitignore (100%) rename libs/cua-driver/{ => swift}/App/CuaDriver/AppIcon.icns (100%) rename libs/cua-driver/{ => swift}/App/CuaDriver/AppIcon.iconset/icon_128x128.png (100%) rename libs/cua-driver/{ => swift}/App/CuaDriver/AppIcon.iconset/icon_128x128@2x.png (100%) rename libs/cua-driver/{ => swift}/App/CuaDriver/AppIcon.iconset/icon_16x16.png (100%) rename libs/cua-driver/{ => swift}/App/CuaDriver/AppIcon.iconset/icon_16x16@2x.png (100%) rename libs/cua-driver/{ => swift}/App/CuaDriver/AppIcon.iconset/icon_256x256.png (100%) rename libs/cua-driver/{ => swift}/App/CuaDriver/AppIcon.iconset/icon_256x256@2x.png (100%) rename libs/cua-driver/{ => swift}/App/CuaDriver/AppIcon.iconset/icon_32x32.png (100%) rename libs/cua-driver/{ => swift}/App/CuaDriver/AppIcon.iconset/icon_32x32@2x.png (100%) rename libs/cua-driver/{ => swift}/App/CuaDriver/AppIcon.iconset/icon_512x512.png (100%) rename libs/cua-driver/{ => swift}/App/CuaDriver/AppIcon.iconset/icon_512x512@2x.png (100%) rename libs/cua-driver/{ => swift}/App/CuaDriver/Info.plist (100%) rename libs/cua-driver/{ => swift}/Package.resolved (100%) rename libs/cua-driver/{ => swift}/Package.swift (100%) rename libs/cua-driver/{ => swift}/Skills/cua-driver/README.md (100%) rename libs/cua-driver/{ => swift}/Skills/cua-driver/RECORDING.md (100%) rename libs/cua-driver/{ => swift}/Skills/cua-driver/SKILL.md (100%) rename libs/cua-driver/{ => swift}/Skills/cua-driver/TESTS.md (100%) rename libs/cua-driver/{ => swift}/Skills/cua-driver/WEB_APPS.md (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCLI/BundleHelpers.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCLI/CallCommand.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCLI/ConfigCommand.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCLI/CuaDriverCommand.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCLI/DiagnoseCommand.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCLI/Docs/CLIDocExtractor.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCLI/DoctorCommand.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCLI/DumpDocsCommand.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCLI/RecordingCommand.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCLI/RecordingRenderCommand.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCLI/ServeCommand.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCLI/VersionCheck.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/AppState/AppState.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Apps/AppEnumerator.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Apps/AppInfo.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Apps/AppLauncher.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Browser/AXPageReader.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Browser/BrowserJS.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Browser/CDPClient.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Browser/ElectronJS.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Browser/WebInspectorXPC.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Browser/WebKitJS.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Capture/DebugCrosshair.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Capture/ScreenInfo.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Capture/WindowCapture.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Config/ConfigStore.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Config/CuaDriverConfig.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/CuaDriverCore.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Cursor/AgentCursor.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Cursor/AgentCursorOverlayWindow.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Cursor/AgentCursorRenderer.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Cursor/AgentCursorView.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Cursor/Bezier.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Cursor/CursorMotionPath.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Focus/AXEnablementAssertion.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Focus/FocusGuard.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Focus/SyntheticAppFocusEnforcer.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Focus/SystemFocusStealPreventer.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Input/AXInput.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Input/CursorControl.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Input/CursorPoint.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Input/FocusWithoutRaise.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Input/KeyboardInput.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Input/MouseInput.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Input/SkyLightEventPost.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Permissions/Permissions.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Permissions/PermissionsGate.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Recording/ClickMarkerRenderer.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Recording/CursorSampler.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Recording/RecordingSession.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Recording/Render/FrameTransform.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Recording/Render/RecordingRenderer.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Recording/Render/TrajectoryLoader.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Recording/VideoRecorder.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Recording/Zoom/ActionSpan.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Recording/Zoom/CursorTelemetry.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Recording/Zoom/ZoomMath.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Recording/Zoom/ZoomRegion.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Telemetry/TelemetryClient.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Windows/SpaceMigrator.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Windows/WindowCoordinateSpace.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Windows/WindowEnumerator.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverCore/Windows/WindowInfo.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/AppStateRegistry.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/ClaudeCodeComputerUseCompatTools.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/CuaDriverMCPServer.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/DaemonClient.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/DaemonProtocol.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/DaemonServer.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Docs/MCPDocExtractor.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/ToolRegistry.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/CheckPermissionsTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/ClickTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/DoubleClickTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/DragTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/GetAgentCursorStateTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/GetConfigTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/GetCursorPositionTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/GetRecordingStateTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/GetScreenSizeTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/GetWindowStateTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/HotkeyTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/ImageResizeRegistry.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/LaunchAppTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/ListAppsTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/ListWindowsTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/MoveCursorTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/PageTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/PressKeyTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/ReplayTrajectoryTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/RightClickTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/ScreenshotTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/ScrollTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/SetAgentCursorEnabledTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/SetAgentCursorMotionTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/SetAgentCursorStyleTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/SetConfigTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/SetRecordingTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/SetValueTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/TypeTextTool.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/WindowChangeDetector.swift (100%) rename libs/cua-driver/{ => swift}/Sources/CuaDriverServer/Tools/ZoomTool.swift (100%) rename libs/cua-driver/{ => swift}/Tests/FocusMonitorApp/FocusMonitorApp.swift (100%) rename libs/cua-driver/{ => swift}/Tests/FocusMonitorApp/build.sh (100%) rename libs/cua-driver/{ => swift}/Tests/FocusStealPreventerTests/FocusStealPreventerTests.swift (100%) rename libs/cua-driver/{ => swift}/Tests/ZoomMathTests/ZoomMathTests.swift (100%) rename libs/cua-driver/{ => swift}/Tests/integration/assets/test_page.html (100%) rename libs/cua-driver/{ => swift}/Tests/integration/conftest.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/driver_client.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/fixtures/form_all_inputs.html (100%) rename libs/cua-driver/{ => swift}/Tests/integration/fixtures/interactive.html (100%) rename libs/cua-driver/{ => swift}/Tests/integration/harness/__init__.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/harness/cv.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/harness/driver.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/harness/monitor.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/harness/tree.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_app_name_locale_fallback.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_background_focus.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_background_menu_shortcut.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_blender.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_browser_js.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_check_permissions_cli.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_chrome.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_chrome_minimized_nav.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_click_opens_new_window.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_click_pixel_ax.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_drag_slider_delivery.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_electron.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_hermes_chrome_form_fill.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_hermes_form_fill.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_hermes_form_fill_qwen.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_hermes_launch_safari_bg.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_hidden_app_capture.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_launch_app_visible.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_list_windows.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_overlay_z_order.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_safari.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_tauri.py (100%) rename libs/cua-driver/{ => swift}/Tests/integration/test_webkit_js.py (100%) diff --git a/libs/cua-driver/.bumpversion.cfg b/libs/cua-driver/swift/.bumpversion.cfg similarity index 100% rename from libs/cua-driver/.bumpversion.cfg rename to libs/cua-driver/swift/.bumpversion.cfg diff --git a/libs/cua-driver/.gitignore b/libs/cua-driver/swift/.gitignore similarity index 100% rename from libs/cua-driver/.gitignore rename to libs/cua-driver/swift/.gitignore diff --git a/libs/cua-driver/App/CuaDriver/AppIcon.icns b/libs/cua-driver/swift/App/CuaDriver/AppIcon.icns similarity index 100% rename from libs/cua-driver/App/CuaDriver/AppIcon.icns rename to libs/cua-driver/swift/App/CuaDriver/AppIcon.icns diff --git a/libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_128x128.png b/libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_128x128.png similarity index 100% rename from libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_128x128.png rename to libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_128x128.png diff --git a/libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_128x128@2x.png b/libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_128x128@2x.png similarity index 100% rename from libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_128x128@2x.png rename to libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_128x128@2x.png diff --git a/libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_16x16.png b/libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_16x16.png similarity index 100% rename from libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_16x16.png rename to libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_16x16.png diff --git a/libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_16x16@2x.png b/libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_16x16@2x.png similarity index 100% rename from libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_16x16@2x.png rename to libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_16x16@2x.png diff --git a/libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_256x256.png b/libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_256x256.png similarity index 100% rename from libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_256x256.png rename to libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_256x256.png diff --git a/libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_256x256@2x.png b/libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_256x256@2x.png similarity index 100% rename from libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_256x256@2x.png rename to libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_256x256@2x.png diff --git a/libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_32x32.png b/libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_32x32.png similarity index 100% rename from libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_32x32.png rename to libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_32x32.png diff --git a/libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_32x32@2x.png b/libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_32x32@2x.png similarity index 100% rename from libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_32x32@2x.png rename to libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_32x32@2x.png diff --git a/libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_512x512.png b/libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_512x512.png similarity index 100% rename from libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_512x512.png rename to libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_512x512.png diff --git a/libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_512x512@2x.png b/libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_512x512@2x.png similarity index 100% rename from libs/cua-driver/App/CuaDriver/AppIcon.iconset/icon_512x512@2x.png rename to libs/cua-driver/swift/App/CuaDriver/AppIcon.iconset/icon_512x512@2x.png diff --git a/libs/cua-driver/App/CuaDriver/Info.plist b/libs/cua-driver/swift/App/CuaDriver/Info.plist similarity index 100% rename from libs/cua-driver/App/CuaDriver/Info.plist rename to libs/cua-driver/swift/App/CuaDriver/Info.plist diff --git a/libs/cua-driver/Package.resolved b/libs/cua-driver/swift/Package.resolved similarity index 100% rename from libs/cua-driver/Package.resolved rename to libs/cua-driver/swift/Package.resolved diff --git a/libs/cua-driver/Package.swift b/libs/cua-driver/swift/Package.swift similarity index 100% rename from libs/cua-driver/Package.swift rename to libs/cua-driver/swift/Package.swift diff --git a/libs/cua-driver/Skills/cua-driver/README.md b/libs/cua-driver/swift/Skills/cua-driver/README.md similarity index 100% rename from libs/cua-driver/Skills/cua-driver/README.md rename to libs/cua-driver/swift/Skills/cua-driver/README.md diff --git a/libs/cua-driver/Skills/cua-driver/RECORDING.md b/libs/cua-driver/swift/Skills/cua-driver/RECORDING.md similarity index 100% rename from libs/cua-driver/Skills/cua-driver/RECORDING.md rename to libs/cua-driver/swift/Skills/cua-driver/RECORDING.md diff --git a/libs/cua-driver/Skills/cua-driver/SKILL.md b/libs/cua-driver/swift/Skills/cua-driver/SKILL.md similarity index 100% rename from libs/cua-driver/Skills/cua-driver/SKILL.md rename to libs/cua-driver/swift/Skills/cua-driver/SKILL.md diff --git a/libs/cua-driver/Skills/cua-driver/TESTS.md b/libs/cua-driver/swift/Skills/cua-driver/TESTS.md similarity index 100% rename from libs/cua-driver/Skills/cua-driver/TESTS.md rename to libs/cua-driver/swift/Skills/cua-driver/TESTS.md diff --git a/libs/cua-driver/Skills/cua-driver/WEB_APPS.md b/libs/cua-driver/swift/Skills/cua-driver/WEB_APPS.md similarity index 100% rename from libs/cua-driver/Skills/cua-driver/WEB_APPS.md rename to libs/cua-driver/swift/Skills/cua-driver/WEB_APPS.md diff --git a/libs/cua-driver/Sources/CuaDriverCLI/BundleHelpers.swift b/libs/cua-driver/swift/Sources/CuaDriverCLI/BundleHelpers.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCLI/BundleHelpers.swift rename to libs/cua-driver/swift/Sources/CuaDriverCLI/BundleHelpers.swift diff --git a/libs/cua-driver/Sources/CuaDriverCLI/CallCommand.swift b/libs/cua-driver/swift/Sources/CuaDriverCLI/CallCommand.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCLI/CallCommand.swift rename to libs/cua-driver/swift/Sources/CuaDriverCLI/CallCommand.swift diff --git a/libs/cua-driver/Sources/CuaDriverCLI/ConfigCommand.swift b/libs/cua-driver/swift/Sources/CuaDriverCLI/ConfigCommand.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCLI/ConfigCommand.swift rename to libs/cua-driver/swift/Sources/CuaDriverCLI/ConfigCommand.swift diff --git a/libs/cua-driver/Sources/CuaDriverCLI/CuaDriverCommand.swift b/libs/cua-driver/swift/Sources/CuaDriverCLI/CuaDriverCommand.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCLI/CuaDriverCommand.swift rename to libs/cua-driver/swift/Sources/CuaDriverCLI/CuaDriverCommand.swift diff --git a/libs/cua-driver/Sources/CuaDriverCLI/DiagnoseCommand.swift b/libs/cua-driver/swift/Sources/CuaDriverCLI/DiagnoseCommand.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCLI/DiagnoseCommand.swift rename to libs/cua-driver/swift/Sources/CuaDriverCLI/DiagnoseCommand.swift diff --git a/libs/cua-driver/Sources/CuaDriverCLI/Docs/CLIDocExtractor.swift b/libs/cua-driver/swift/Sources/CuaDriverCLI/Docs/CLIDocExtractor.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCLI/Docs/CLIDocExtractor.swift rename to libs/cua-driver/swift/Sources/CuaDriverCLI/Docs/CLIDocExtractor.swift diff --git a/libs/cua-driver/Sources/CuaDriverCLI/DoctorCommand.swift b/libs/cua-driver/swift/Sources/CuaDriverCLI/DoctorCommand.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCLI/DoctorCommand.swift rename to libs/cua-driver/swift/Sources/CuaDriverCLI/DoctorCommand.swift diff --git a/libs/cua-driver/Sources/CuaDriverCLI/DumpDocsCommand.swift b/libs/cua-driver/swift/Sources/CuaDriverCLI/DumpDocsCommand.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCLI/DumpDocsCommand.swift rename to libs/cua-driver/swift/Sources/CuaDriverCLI/DumpDocsCommand.swift diff --git a/libs/cua-driver/Sources/CuaDriverCLI/RecordingCommand.swift b/libs/cua-driver/swift/Sources/CuaDriverCLI/RecordingCommand.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCLI/RecordingCommand.swift rename to libs/cua-driver/swift/Sources/CuaDriverCLI/RecordingCommand.swift diff --git a/libs/cua-driver/Sources/CuaDriverCLI/RecordingRenderCommand.swift b/libs/cua-driver/swift/Sources/CuaDriverCLI/RecordingRenderCommand.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCLI/RecordingRenderCommand.swift rename to libs/cua-driver/swift/Sources/CuaDriverCLI/RecordingRenderCommand.swift diff --git a/libs/cua-driver/Sources/CuaDriverCLI/ServeCommand.swift b/libs/cua-driver/swift/Sources/CuaDriverCLI/ServeCommand.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCLI/ServeCommand.swift rename to libs/cua-driver/swift/Sources/CuaDriverCLI/ServeCommand.swift diff --git a/libs/cua-driver/Sources/CuaDriverCLI/VersionCheck.swift b/libs/cua-driver/swift/Sources/CuaDriverCLI/VersionCheck.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCLI/VersionCheck.swift rename to libs/cua-driver/swift/Sources/CuaDriverCLI/VersionCheck.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/AppState/AppState.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/AppState/AppState.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/AppState/AppState.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/AppState/AppState.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Apps/AppEnumerator.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Apps/AppEnumerator.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Apps/AppEnumerator.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Apps/AppEnumerator.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Apps/AppInfo.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Apps/AppInfo.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Apps/AppInfo.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Apps/AppInfo.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Apps/AppLauncher.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Apps/AppLauncher.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Apps/AppLauncher.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Apps/AppLauncher.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Browser/AXPageReader.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Browser/AXPageReader.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Browser/AXPageReader.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Browser/AXPageReader.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Browser/BrowserJS.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Browser/BrowserJS.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Browser/BrowserJS.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Browser/BrowserJS.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Browser/CDPClient.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Browser/CDPClient.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Browser/CDPClient.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Browser/CDPClient.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Browser/ElectronJS.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Browser/ElectronJS.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Browser/ElectronJS.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Browser/ElectronJS.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Browser/WebInspectorXPC.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Browser/WebInspectorXPC.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Browser/WebInspectorXPC.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Browser/WebInspectorXPC.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Browser/WebKitJS.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Browser/WebKitJS.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Browser/WebKitJS.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Browser/WebKitJS.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Capture/DebugCrosshair.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Capture/DebugCrosshair.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Capture/DebugCrosshair.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Capture/DebugCrosshair.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Capture/ScreenInfo.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Capture/ScreenInfo.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Capture/ScreenInfo.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Capture/ScreenInfo.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Capture/WindowCapture.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Capture/WindowCapture.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Capture/WindowCapture.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Capture/WindowCapture.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Config/ConfigStore.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Config/ConfigStore.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Config/ConfigStore.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Config/ConfigStore.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Config/CuaDriverConfig.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Config/CuaDriverConfig.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Config/CuaDriverConfig.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Config/CuaDriverConfig.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/CuaDriverCore.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/CuaDriverCore.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/CuaDriverCore.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/CuaDriverCore.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Cursor/AgentCursor.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Cursor/AgentCursor.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Cursor/AgentCursor.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Cursor/AgentCursor.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Cursor/AgentCursorOverlayWindow.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Cursor/AgentCursorOverlayWindow.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Cursor/AgentCursorOverlayWindow.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Cursor/AgentCursorOverlayWindow.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Cursor/AgentCursorRenderer.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Cursor/AgentCursorRenderer.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Cursor/AgentCursorRenderer.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Cursor/AgentCursorRenderer.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Cursor/AgentCursorView.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Cursor/AgentCursorView.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Cursor/AgentCursorView.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Cursor/AgentCursorView.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Cursor/Bezier.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Cursor/Bezier.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Cursor/Bezier.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Cursor/Bezier.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Cursor/CursorMotionPath.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Cursor/CursorMotionPath.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Cursor/CursorMotionPath.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Cursor/CursorMotionPath.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Focus/AXEnablementAssertion.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Focus/AXEnablementAssertion.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Focus/AXEnablementAssertion.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Focus/AXEnablementAssertion.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Focus/FocusGuard.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Focus/FocusGuard.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Focus/FocusGuard.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Focus/FocusGuard.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Focus/SyntheticAppFocusEnforcer.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Focus/SyntheticAppFocusEnforcer.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Focus/SyntheticAppFocusEnforcer.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Focus/SyntheticAppFocusEnforcer.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Focus/SystemFocusStealPreventer.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Focus/SystemFocusStealPreventer.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Focus/SystemFocusStealPreventer.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Focus/SystemFocusStealPreventer.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Input/AXInput.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Input/AXInput.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Input/AXInput.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Input/AXInput.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Input/CursorControl.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Input/CursorControl.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Input/CursorControl.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Input/CursorControl.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Input/CursorPoint.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Input/CursorPoint.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Input/CursorPoint.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Input/CursorPoint.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Input/FocusWithoutRaise.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Input/FocusWithoutRaise.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Input/FocusWithoutRaise.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Input/FocusWithoutRaise.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Input/KeyboardInput.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Input/KeyboardInput.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Input/KeyboardInput.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Input/KeyboardInput.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Input/MouseInput.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Input/MouseInput.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Input/MouseInput.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Input/MouseInput.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Input/SkyLightEventPost.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Input/SkyLightEventPost.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Input/SkyLightEventPost.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Input/SkyLightEventPost.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Permissions/Permissions.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Permissions/Permissions.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Permissions/Permissions.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Permissions/Permissions.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Permissions/PermissionsGate.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Permissions/PermissionsGate.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Permissions/PermissionsGate.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Permissions/PermissionsGate.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Recording/ClickMarkerRenderer.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Recording/ClickMarkerRenderer.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Recording/ClickMarkerRenderer.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Recording/ClickMarkerRenderer.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Recording/CursorSampler.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Recording/CursorSampler.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Recording/CursorSampler.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Recording/CursorSampler.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Recording/RecordingSession.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Recording/RecordingSession.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Recording/RecordingSession.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Recording/RecordingSession.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Recording/Render/FrameTransform.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Recording/Render/FrameTransform.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Recording/Render/FrameTransform.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Recording/Render/FrameTransform.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Recording/Render/RecordingRenderer.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Recording/Render/RecordingRenderer.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Recording/Render/RecordingRenderer.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Recording/Render/RecordingRenderer.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Recording/Render/TrajectoryLoader.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Recording/Render/TrajectoryLoader.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Recording/Render/TrajectoryLoader.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Recording/Render/TrajectoryLoader.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Recording/VideoRecorder.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Recording/VideoRecorder.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Recording/VideoRecorder.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Recording/VideoRecorder.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Recording/Zoom/ActionSpan.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Recording/Zoom/ActionSpan.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Recording/Zoom/ActionSpan.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Recording/Zoom/ActionSpan.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Recording/Zoom/CursorTelemetry.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Recording/Zoom/CursorTelemetry.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Recording/Zoom/CursorTelemetry.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Recording/Zoom/CursorTelemetry.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Recording/Zoom/ZoomMath.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Recording/Zoom/ZoomMath.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Recording/Zoom/ZoomMath.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Recording/Zoom/ZoomMath.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Recording/Zoom/ZoomRegion.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Recording/Zoom/ZoomRegion.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Recording/Zoom/ZoomRegion.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Recording/Zoom/ZoomRegion.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Telemetry/TelemetryClient.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Telemetry/TelemetryClient.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Telemetry/TelemetryClient.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Telemetry/TelemetryClient.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Windows/SpaceMigrator.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Windows/SpaceMigrator.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Windows/SpaceMigrator.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Windows/SpaceMigrator.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Windows/WindowCoordinateSpace.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Windows/WindowCoordinateSpace.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Windows/WindowCoordinateSpace.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Windows/WindowCoordinateSpace.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Windows/WindowEnumerator.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Windows/WindowEnumerator.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Windows/WindowEnumerator.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Windows/WindowEnumerator.swift diff --git a/libs/cua-driver/Sources/CuaDriverCore/Windows/WindowInfo.swift b/libs/cua-driver/swift/Sources/CuaDriverCore/Windows/WindowInfo.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverCore/Windows/WindowInfo.swift rename to libs/cua-driver/swift/Sources/CuaDriverCore/Windows/WindowInfo.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/AppStateRegistry.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/AppStateRegistry.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/AppStateRegistry.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/AppStateRegistry.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/ClaudeCodeComputerUseCompatTools.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/ClaudeCodeComputerUseCompatTools.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/ClaudeCodeComputerUseCompatTools.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/ClaudeCodeComputerUseCompatTools.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/CuaDriverMCPServer.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/CuaDriverMCPServer.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/CuaDriverMCPServer.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/CuaDriverMCPServer.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/DaemonClient.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/DaemonClient.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/DaemonClient.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/DaemonClient.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/DaemonProtocol.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/DaemonProtocol.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/DaemonProtocol.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/DaemonProtocol.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/DaemonServer.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/DaemonServer.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/DaemonServer.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/DaemonServer.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Docs/MCPDocExtractor.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Docs/MCPDocExtractor.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Docs/MCPDocExtractor.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Docs/MCPDocExtractor.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/ToolRegistry.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/ToolRegistry.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/ToolRegistry.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/ToolRegistry.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/CheckPermissionsTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/CheckPermissionsTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/CheckPermissionsTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/CheckPermissionsTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/ClickTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/ClickTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/ClickTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/ClickTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/DoubleClickTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/DoubleClickTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/DoubleClickTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/DoubleClickTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/DragTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/DragTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/DragTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/DragTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/GetAgentCursorStateTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/GetAgentCursorStateTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/GetAgentCursorStateTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/GetAgentCursorStateTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/GetConfigTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/GetConfigTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/GetConfigTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/GetConfigTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/GetCursorPositionTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/GetCursorPositionTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/GetCursorPositionTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/GetCursorPositionTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/GetRecordingStateTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/GetRecordingStateTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/GetRecordingStateTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/GetRecordingStateTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/GetScreenSizeTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/GetScreenSizeTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/GetScreenSizeTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/GetScreenSizeTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/GetWindowStateTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/GetWindowStateTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/GetWindowStateTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/GetWindowStateTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/HotkeyTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/HotkeyTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/HotkeyTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/HotkeyTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/ImageResizeRegistry.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/ImageResizeRegistry.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/ImageResizeRegistry.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/ImageResizeRegistry.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/LaunchAppTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/LaunchAppTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/LaunchAppTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/LaunchAppTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/ListAppsTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/ListAppsTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/ListAppsTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/ListAppsTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/ListWindowsTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/ListWindowsTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/ListWindowsTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/ListWindowsTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/MoveCursorTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/MoveCursorTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/MoveCursorTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/MoveCursorTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/PageTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/PageTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/PageTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/PageTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/PressKeyTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/PressKeyTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/PressKeyTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/PressKeyTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/ReplayTrajectoryTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/ReplayTrajectoryTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/ReplayTrajectoryTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/ReplayTrajectoryTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/RightClickTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/RightClickTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/RightClickTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/RightClickTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/ScreenshotTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/ScreenshotTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/ScreenshotTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/ScreenshotTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/ScrollTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/ScrollTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/ScrollTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/ScrollTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/SetAgentCursorEnabledTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/SetAgentCursorEnabledTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/SetAgentCursorEnabledTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/SetAgentCursorEnabledTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/SetAgentCursorMotionTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/SetAgentCursorMotionTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/SetAgentCursorMotionTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/SetAgentCursorMotionTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/SetAgentCursorStyleTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/SetAgentCursorStyleTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/SetAgentCursorStyleTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/SetAgentCursorStyleTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/SetConfigTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/SetConfigTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/SetConfigTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/SetConfigTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/SetRecordingTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/SetRecordingTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/SetRecordingTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/SetRecordingTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/SetValueTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/SetValueTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/SetValueTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/SetValueTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/TypeTextTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/TypeTextTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/TypeTextTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/TypeTextTool.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/WindowChangeDetector.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/WindowChangeDetector.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/WindowChangeDetector.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/WindowChangeDetector.swift diff --git a/libs/cua-driver/Sources/CuaDriverServer/Tools/ZoomTool.swift b/libs/cua-driver/swift/Sources/CuaDriverServer/Tools/ZoomTool.swift similarity index 100% rename from libs/cua-driver/Sources/CuaDriverServer/Tools/ZoomTool.swift rename to libs/cua-driver/swift/Sources/CuaDriverServer/Tools/ZoomTool.swift diff --git a/libs/cua-driver/Tests/FocusMonitorApp/FocusMonitorApp.swift b/libs/cua-driver/swift/Tests/FocusMonitorApp/FocusMonitorApp.swift similarity index 100% rename from libs/cua-driver/Tests/FocusMonitorApp/FocusMonitorApp.swift rename to libs/cua-driver/swift/Tests/FocusMonitorApp/FocusMonitorApp.swift diff --git a/libs/cua-driver/Tests/FocusMonitorApp/build.sh b/libs/cua-driver/swift/Tests/FocusMonitorApp/build.sh similarity index 100% rename from libs/cua-driver/Tests/FocusMonitorApp/build.sh rename to libs/cua-driver/swift/Tests/FocusMonitorApp/build.sh diff --git a/libs/cua-driver/Tests/FocusStealPreventerTests/FocusStealPreventerTests.swift b/libs/cua-driver/swift/Tests/FocusStealPreventerTests/FocusStealPreventerTests.swift similarity index 100% rename from libs/cua-driver/Tests/FocusStealPreventerTests/FocusStealPreventerTests.swift rename to libs/cua-driver/swift/Tests/FocusStealPreventerTests/FocusStealPreventerTests.swift diff --git a/libs/cua-driver/Tests/ZoomMathTests/ZoomMathTests.swift b/libs/cua-driver/swift/Tests/ZoomMathTests/ZoomMathTests.swift similarity index 100% rename from libs/cua-driver/Tests/ZoomMathTests/ZoomMathTests.swift rename to libs/cua-driver/swift/Tests/ZoomMathTests/ZoomMathTests.swift diff --git a/libs/cua-driver/Tests/integration/assets/test_page.html b/libs/cua-driver/swift/Tests/integration/assets/test_page.html similarity index 100% rename from libs/cua-driver/Tests/integration/assets/test_page.html rename to libs/cua-driver/swift/Tests/integration/assets/test_page.html diff --git a/libs/cua-driver/Tests/integration/conftest.py b/libs/cua-driver/swift/Tests/integration/conftest.py similarity index 100% rename from libs/cua-driver/Tests/integration/conftest.py rename to libs/cua-driver/swift/Tests/integration/conftest.py diff --git a/libs/cua-driver/Tests/integration/driver_client.py b/libs/cua-driver/swift/Tests/integration/driver_client.py similarity index 100% rename from libs/cua-driver/Tests/integration/driver_client.py rename to libs/cua-driver/swift/Tests/integration/driver_client.py diff --git a/libs/cua-driver/Tests/integration/fixtures/form_all_inputs.html b/libs/cua-driver/swift/Tests/integration/fixtures/form_all_inputs.html similarity index 100% rename from libs/cua-driver/Tests/integration/fixtures/form_all_inputs.html rename to libs/cua-driver/swift/Tests/integration/fixtures/form_all_inputs.html diff --git a/libs/cua-driver/Tests/integration/fixtures/interactive.html b/libs/cua-driver/swift/Tests/integration/fixtures/interactive.html similarity index 100% rename from libs/cua-driver/Tests/integration/fixtures/interactive.html rename to libs/cua-driver/swift/Tests/integration/fixtures/interactive.html diff --git a/libs/cua-driver/Tests/integration/harness/__init__.py b/libs/cua-driver/swift/Tests/integration/harness/__init__.py similarity index 100% rename from libs/cua-driver/Tests/integration/harness/__init__.py rename to libs/cua-driver/swift/Tests/integration/harness/__init__.py diff --git a/libs/cua-driver/Tests/integration/harness/cv.py b/libs/cua-driver/swift/Tests/integration/harness/cv.py similarity index 100% rename from libs/cua-driver/Tests/integration/harness/cv.py rename to libs/cua-driver/swift/Tests/integration/harness/cv.py diff --git a/libs/cua-driver/Tests/integration/harness/driver.py b/libs/cua-driver/swift/Tests/integration/harness/driver.py similarity index 100% rename from libs/cua-driver/Tests/integration/harness/driver.py rename to libs/cua-driver/swift/Tests/integration/harness/driver.py diff --git a/libs/cua-driver/Tests/integration/harness/monitor.py b/libs/cua-driver/swift/Tests/integration/harness/monitor.py similarity index 100% rename from libs/cua-driver/Tests/integration/harness/monitor.py rename to libs/cua-driver/swift/Tests/integration/harness/monitor.py diff --git a/libs/cua-driver/Tests/integration/harness/tree.py b/libs/cua-driver/swift/Tests/integration/harness/tree.py similarity index 100% rename from libs/cua-driver/Tests/integration/harness/tree.py rename to libs/cua-driver/swift/Tests/integration/harness/tree.py diff --git a/libs/cua-driver/Tests/integration/test_app_name_locale_fallback.py b/libs/cua-driver/swift/Tests/integration/test_app_name_locale_fallback.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_app_name_locale_fallback.py rename to libs/cua-driver/swift/Tests/integration/test_app_name_locale_fallback.py diff --git a/libs/cua-driver/Tests/integration/test_background_focus.py b/libs/cua-driver/swift/Tests/integration/test_background_focus.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_background_focus.py rename to libs/cua-driver/swift/Tests/integration/test_background_focus.py diff --git a/libs/cua-driver/Tests/integration/test_background_menu_shortcut.py b/libs/cua-driver/swift/Tests/integration/test_background_menu_shortcut.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_background_menu_shortcut.py rename to libs/cua-driver/swift/Tests/integration/test_background_menu_shortcut.py diff --git a/libs/cua-driver/Tests/integration/test_blender.py b/libs/cua-driver/swift/Tests/integration/test_blender.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_blender.py rename to libs/cua-driver/swift/Tests/integration/test_blender.py diff --git a/libs/cua-driver/Tests/integration/test_browser_js.py b/libs/cua-driver/swift/Tests/integration/test_browser_js.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_browser_js.py rename to libs/cua-driver/swift/Tests/integration/test_browser_js.py diff --git a/libs/cua-driver/Tests/integration/test_check_permissions_cli.py b/libs/cua-driver/swift/Tests/integration/test_check_permissions_cli.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_check_permissions_cli.py rename to libs/cua-driver/swift/Tests/integration/test_check_permissions_cli.py diff --git a/libs/cua-driver/Tests/integration/test_chrome.py b/libs/cua-driver/swift/Tests/integration/test_chrome.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_chrome.py rename to libs/cua-driver/swift/Tests/integration/test_chrome.py diff --git a/libs/cua-driver/Tests/integration/test_chrome_minimized_nav.py b/libs/cua-driver/swift/Tests/integration/test_chrome_minimized_nav.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_chrome_minimized_nav.py rename to libs/cua-driver/swift/Tests/integration/test_chrome_minimized_nav.py diff --git a/libs/cua-driver/Tests/integration/test_click_opens_new_window.py b/libs/cua-driver/swift/Tests/integration/test_click_opens_new_window.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_click_opens_new_window.py rename to libs/cua-driver/swift/Tests/integration/test_click_opens_new_window.py diff --git a/libs/cua-driver/Tests/integration/test_click_pixel_ax.py b/libs/cua-driver/swift/Tests/integration/test_click_pixel_ax.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_click_pixel_ax.py rename to libs/cua-driver/swift/Tests/integration/test_click_pixel_ax.py diff --git a/libs/cua-driver/Tests/integration/test_drag_slider_delivery.py b/libs/cua-driver/swift/Tests/integration/test_drag_slider_delivery.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_drag_slider_delivery.py rename to libs/cua-driver/swift/Tests/integration/test_drag_slider_delivery.py diff --git a/libs/cua-driver/Tests/integration/test_electron.py b/libs/cua-driver/swift/Tests/integration/test_electron.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_electron.py rename to libs/cua-driver/swift/Tests/integration/test_electron.py diff --git a/libs/cua-driver/Tests/integration/test_hermes_chrome_form_fill.py b/libs/cua-driver/swift/Tests/integration/test_hermes_chrome_form_fill.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_hermes_chrome_form_fill.py rename to libs/cua-driver/swift/Tests/integration/test_hermes_chrome_form_fill.py diff --git a/libs/cua-driver/Tests/integration/test_hermes_form_fill.py b/libs/cua-driver/swift/Tests/integration/test_hermes_form_fill.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_hermes_form_fill.py rename to libs/cua-driver/swift/Tests/integration/test_hermes_form_fill.py diff --git a/libs/cua-driver/Tests/integration/test_hermes_form_fill_qwen.py b/libs/cua-driver/swift/Tests/integration/test_hermes_form_fill_qwen.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_hermes_form_fill_qwen.py rename to libs/cua-driver/swift/Tests/integration/test_hermes_form_fill_qwen.py diff --git a/libs/cua-driver/Tests/integration/test_hermes_launch_safari_bg.py b/libs/cua-driver/swift/Tests/integration/test_hermes_launch_safari_bg.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_hermes_launch_safari_bg.py rename to libs/cua-driver/swift/Tests/integration/test_hermes_launch_safari_bg.py diff --git a/libs/cua-driver/Tests/integration/test_hidden_app_capture.py b/libs/cua-driver/swift/Tests/integration/test_hidden_app_capture.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_hidden_app_capture.py rename to libs/cua-driver/swift/Tests/integration/test_hidden_app_capture.py diff --git a/libs/cua-driver/Tests/integration/test_launch_app_visible.py b/libs/cua-driver/swift/Tests/integration/test_launch_app_visible.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_launch_app_visible.py rename to libs/cua-driver/swift/Tests/integration/test_launch_app_visible.py diff --git a/libs/cua-driver/Tests/integration/test_list_windows.py b/libs/cua-driver/swift/Tests/integration/test_list_windows.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_list_windows.py rename to libs/cua-driver/swift/Tests/integration/test_list_windows.py diff --git a/libs/cua-driver/Tests/integration/test_overlay_z_order.py b/libs/cua-driver/swift/Tests/integration/test_overlay_z_order.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_overlay_z_order.py rename to libs/cua-driver/swift/Tests/integration/test_overlay_z_order.py diff --git a/libs/cua-driver/Tests/integration/test_safari.py b/libs/cua-driver/swift/Tests/integration/test_safari.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_safari.py rename to libs/cua-driver/swift/Tests/integration/test_safari.py diff --git a/libs/cua-driver/Tests/integration/test_tauri.py b/libs/cua-driver/swift/Tests/integration/test_tauri.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_tauri.py rename to libs/cua-driver/swift/Tests/integration/test_tauri.py diff --git a/libs/cua-driver/Tests/integration/test_webkit_js.py b/libs/cua-driver/swift/Tests/integration/test_webkit_js.py similarity index 100% rename from libs/cua-driver/Tests/integration/test_webkit_js.py rename to libs/cua-driver/swift/Tests/integration/test_webkit_js.py From 2faad5cc8391df411fdc2dd23587b9eab32af8fb Mon Sep 17 00:00:00 2001 From: Francesco Bonacci Date: Sun, 24 May 2026 10:49:49 +0000 Subject: [PATCH 3/5] chore: fix paths broken by the cua-driver folder restructure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updates path references to match the new layout: - libs/cua-driver-rs/* → libs/cua-driver/rust/* - libs/cua-driver/{Sources,Tests,…} → libs/cua-driver/swift/{Sources,Tests,…} Files updated: - Package.swift (repo root) — Swift target paths now point at swift/Sources/ - .github/workflows/cd-rust-cua-driver.yml — CI working-dirs + cache-key hashFiles + artifact paths - .github/workflows/release-bump-version.yml — version-bump directory - libs/cua-driver/scripts/install.sh — dropped the historical cua-driver-rs fallback (the helper now lives next to install.sh) - libs/cua-driver/scripts/_install-rust.sh + install.ps1 — user-facing "Docs:" URL, comment refs - libs/cua-driver/scripts/post-install-hints.txt + uninstall.ps1 — same - libs/cua-driver/rust/* — comments + PARITY.md + Skills/README.md + install-local.{sh,ps1} + test_focus_steal_parity.py + skills.rs raw GitHub URL for --from main fetch - docs/content/docs/cua-driver/guide/getting-started/*.mdx (4 files) - libs/cua-driver-fixtures/README.md - README.md (repo root) Legitimate "the legacy URL still works at libs/cua-driver-rs/scripts/" mentions are preserved verbatim — those describe the backward-compat shims that still live at the old path. Tag prefix (cua-driver-rs-v*), env var prefix (CUA_DRIVER_RS_*), asset names, crate names — all unchanged. NOT yet addressed in this commit: the install-local.sh name collision between libs/cua-driver/scripts/install-local.sh (Swift dev installer) and libs/cua-driver/rust/scripts/install-local.sh (Rust dev installer). --- .github/workflows/cd-rust-cua-driver.yml | 50 +++++++++---------- .github/workflows/release-bump-version.yml | 4 +- Package.swift | 10 ++-- README.md | 2 +- .../guide/getting-started/autostart.mdx | 6 +-- .../guide/getting-started/installation.mdx | 2 +- .../guide/getting-started/linux.mdx | 10 ++-- .../guide/getting-started/windows-ssh.mdx | 2 +- libs/cua-driver-fixtures/README.md | 2 +- libs/cua-driver/rust/PARITY.md | 38 +++++++------- .../rust/Skills/cua-driver-rs/README.md | 12 ++--- .../rust/crates/cua-driver/src/autostart.rs | 2 +- .../rust/crates/cua-driver/src/skills.rs | 2 +- .../rust/crates/mcp-server/src/tool_args.rs | 2 +- .../cua-driver/rust/scripts/install-local.ps1 | 2 +- libs/cua-driver/rust/scripts/install-local.sh | 2 +- .../integration/test_focus_steal_parity.py | 2 +- libs/cua-driver/scripts/_install-rust.sh | 6 +-- libs/cua-driver/scripts/install.ps1 | 2 +- libs/cua-driver/scripts/install.sh | 11 +--- .../cua-driver/scripts/post-install-hints.txt | 2 +- libs/cua-driver/scripts/uninstall.ps1 | 2 +- 22 files changed, 82 insertions(+), 91 deletions(-) diff --git a/.github/workflows/cd-rust-cua-driver.yml b/.github/workflows/cd-rust-cua-driver.yml index 47d159dd04..4159f6ae1d 100644 --- a/.github/workflows/cd-rust-cua-driver.yml +++ b/.github/workflows/cd-rust-cua-driver.yml @@ -54,15 +54,15 @@ jobs: path: | ~/.cargo/registry ~/.cargo/git - libs/cua-driver-rs/target - key: rust-cua-driver-rs-linux-x86_64-${{ hashFiles('libs/cua-driver-rs/Cargo.lock', 'libs/cua-driver-rs/**/Cargo.toml') }} + libs/cua-driver/rust/target + key: rust-cua-driver-rs-linux-x86_64-${{ hashFiles('libs/cua-driver/rust/Cargo.lock', 'libs/cua-driver/rust/**/Cargo.toml') }} restore-keys: | rust-cua-driver-rs-linux-x86_64- - name: Build (release) - working-directory: libs/cua-driver-rs + working-directory: libs/cua-driver/rust run: cargo build -p cua-driver --release --target x86_64-unknown-linux-gnu - name: Package - working-directory: libs/cua-driver-rs + working-directory: libs/cua-driver/rust run: | VERSION="${{ steps.version.outputs.version }}" LABEL="linux-x86_64" @@ -78,7 +78,7 @@ jobs: - uses: actions/upload-artifact@v4 with: name: cua-driver-rs-linux-x86_64 - path: libs/cua-driver-rs/release/cua-driver-rs-*-linux-x86_64*.tar.gz + path: libs/cua-driver/rust/release/cua-driver-rs-*-linux-x86_64*.tar.gz if-no-files-found: error # ── Windows (x86_64 + arm64) ───────────────────────────────────────────────── @@ -117,19 +117,19 @@ jobs: path: | ~/.cargo/registry ~/.cargo/git - libs/cua-driver-rs/target - key: rust-cua-driver-rs-windows-${{ matrix.arch }}-${{ hashFiles('libs/cua-driver-rs/Cargo.lock', 'libs/cua-driver-rs/**/Cargo.toml') }} + libs/cua-driver/rust/target + key: rust-cua-driver-rs-windows-${{ matrix.arch }}-${{ hashFiles('libs/cua-driver/rust/Cargo.lock', 'libs/cua-driver/rust/**/Cargo.toml') }} restore-keys: | rust-cua-driver-rs-windows-${{ matrix.arch }}- - name: Build (release) - working-directory: libs/cua-driver-rs + working-directory: libs/cua-driver/rust # Build both the main CLI/MCP binary AND the uiAccess'd worker. # `cua-driver-uia.exe` is the Windows-only sibling daemon that runs # at UIAccess integrity so SendInput / UI Automation can cross UIPI # into UWP apps — see crates/cua-driver-uia/ and #1602. run: cargo build -p cua-driver -p cua-driver-uia --release --target ${{ matrix.target }} - name: Package - working-directory: libs/cua-driver-rs + working-directory: libs/cua-driver/rust shell: pwsh run: | $version = "${{ steps.version.outputs.version }}" @@ -158,7 +158,7 @@ jobs: - uses: actions/upload-artifact@v4 with: name: cua-driver-rs-windows-${{ matrix.arch }} - path: libs/cua-driver-rs/release/cua-driver-rs-*-windows-${{ matrix.arch }}*.zip + path: libs/cua-driver/rust/release/cua-driver-rs-*-windows-${{ matrix.arch }}*.zip if-no-files-found: error # ── macOS universal (arm64 + x86_64 → lipo) ───────────────────────────────── @@ -224,18 +224,18 @@ jobs: path: | ~/.cargo/registry ~/.cargo/git - libs/cua-driver-rs/target - key: rust-cua-driver-rs-darwin-universal-${{ hashFiles('libs/cua-driver-rs/Cargo.lock', 'libs/cua-driver-rs/**/Cargo.toml') }} + libs/cua-driver/rust/target + key: rust-cua-driver-rs-darwin-universal-${{ hashFiles('libs/cua-driver/rust/Cargo.lock', 'libs/cua-driver/rust/**/Cargo.toml') }} restore-keys: | rust-cua-driver-rs-darwin-universal- - name: Build arm64 - working-directory: libs/cua-driver-rs + working-directory: libs/cua-driver/rust run: cargo build -p cua-driver --release --target aarch64-apple-darwin - name: Build x86_64 - working-directory: libs/cua-driver-rs + working-directory: libs/cua-driver/rust run: cargo build -p cua-driver --release --target x86_64-apple-darwin - name: Create universal binary (lipo) - working-directory: libs/cua-driver-rs + working-directory: libs/cua-driver/rust run: | ARM64="target/aarch64-apple-darwin/release/cua-driver" X86="target/x86_64-apple-darwin/release/cua-driver" @@ -244,7 +244,7 @@ jobs: lipo -info release/universal/cua-driver - name: Codesign universal binary (hardened runtime) if: env.DO_NOTARIZE == 'true' - working-directory: libs/cua-driver-rs + working-directory: libs/cua-driver/rust env: DEVELOPER_NAME: ${{ secrets.DEVELOPER_NAME }} TEAM_ID: ${{ secrets.TEAM_ID }} @@ -254,7 +254,7 @@ jobs: --sign "$IDENTITY" release/universal/cua-driver codesign --verify --strict --verbose=2 release/universal/cua-driver - name: Assemble CuaDriver.app bundle - working-directory: libs/cua-driver-rs + working-directory: libs/cua-driver/rust run: | # Copy the bundle skeleton (Info.plist) from # scripts/CuaDriverBundle/ and drop the universal binary into @@ -297,7 +297,7 @@ jobs: plutil -p release/CuaDriver.app/Contents/Info.plist | grep -E 'CFBundle(Short)?Version' - name: Codesign + notarize + staple CuaDriver.app if: env.DO_NOTARIZE == 'true' - working-directory: libs/cua-driver-rs + working-directory: libs/cua-driver/rust env: DEVELOPER_NAME: ${{ secrets.DEVELOPER_NAME }} TEAM_ID: ${{ secrets.TEAM_ID }} @@ -332,7 +332,7 @@ jobs: # below builds the final tarballs from the stapled .app. rm -f release/CuaDriver.app.zip - name: Package - working-directory: libs/cua-driver-rs + working-directory: libs/cua-driver/rust run: | VERSION="${{ steps.version.outputs.version }}" for LABEL in darwin-arm64 darwin-x86_64 darwin-universal; do @@ -360,7 +360,7 @@ jobs: - uses: actions/upload-artifact@v4 with: name: cua-driver-rs-darwin - path: libs/cua-driver-rs/release/cua-driver-rs-*-darwin-*.tar.gz + path: libs/cua-driver/rust/release/cua-driver-rs-*-darwin-*.tar.gz if-no-files-found: error # ── Release ────────────────────────────────────────────────────────────────── @@ -463,12 +463,12 @@ jobs: VERSION="${{ steps.version.outputs.version }}" SKILLS_STAGE="cua-driver-rs-v${VERSION}-skills" mkdir -p "${SKILLS_STAGE}/cua-driver-rs" - if [ -d libs/cua-driver-rs/Skills/cua-driver-rs ]; then - cp -R libs/cua-driver-rs/Skills/cua-driver-rs/* "${SKILLS_STAGE}/cua-driver-rs/" + if [ -d libs/cua-driver/rust/Skills/cua-driver-rs ]; then + cp -R libs/cua-driver/rust/Skills/cua-driver-rs/* "${SKILLS_STAGE}/cua-driver-rs/" tar -czf "release-upload/${SKILLS_STAGE}.tar.gz" "${SKILLS_STAGE}" echo "Packaged skill pack: release-upload/${SKILLS_STAGE}.tar.gz" else - echo "Note: libs/cua-driver-rs/Skills/cua-driver-rs not present; skipping skill-pack asset." + echo "Note: libs/cua-driver/rust/Skills/cua-driver-rs not present; skipping skill-pack asset." fi echo "Release files:" @@ -496,9 +496,9 @@ jobs: | grep -v "^${{ github.ref_name }}$" \ | head -n 1 || echo "") if [ -n "$PREV_TAG" ]; then - NOTES=$(git log ${PREV_TAG}..HEAD --pretty=format:"* %s (%h) by @%an" -- "libs/cua-driver-rs" | head -50) + NOTES=$(git log ${PREV_TAG}..HEAD --pretty=format:"* %s (%h) by @%an" -- "libs/cua-driver/rust" | head -50) else - NOTES=$(git log --pretty=format:"* %s (%h) by @%an" -- "libs/cua-driver-rs" | head -50) + NOTES=$(git log --pretty=format:"* %s (%h) by @%an" -- "libs/cua-driver/rust" | head -50) fi [ -z "$NOTES" ] && NOTES="* No path-specific changes found" { diff --git a/.github/workflows/release-bump-version.yml b/.github/workflows/release-bump-version.yml index 6cb7208ea3..e550a254fc 100644 --- a/.github/workflows/release-bump-version.yml +++ b/.github/workflows/release-bump-version.yml @@ -142,7 +142,7 @@ jobs: echo "type=cua-driver" >> $GITHUB_OUTPUT ;; "cua-driver-rs") - echo "directory=libs/cua-driver-rs" >> $GITHUB_OUTPUT + echo "directory=libs/cua-driver/rust" >> $GITHUB_OUTPUT echo "type=cua-driver-rs" >> $GITHUB_OUTPUT ;; "docker/cuabot") @@ -408,7 +408,7 @@ jobs: if: ${{ inputs.service == 'cua-driver-rs' }} id: cua_driver_rs_version run: | - VERSION=$(grep -m1 -oP '^version = "\K[^"]+' libs/cua-driver-rs/Cargo.toml) + VERSION=$(grep -m1 -oP '^version = "\K[^"]+' libs/cua-driver/rust/Cargo.toml) echo "cua-driver-rs version: $VERSION" echo "version=$VERSION" >> "$GITHUB_OUTPUT" diff --git a/Package.swift b/Package.swift index c951688d4a..67463b058d 100644 --- a/Package.swift +++ b/Package.swift @@ -3,8 +3,8 @@ import PackageDescription // Root shim: re-exports CuaDriverCore and CuaDriverServer so Swift packages // can consume them directly from the trycua/cua monorepo without knowing the -// internal layout. Sources live in libs/cua-driver/Sources/; this file uses -// path: to forward there. +// internal layout. Sources live in libs/cua-driver/swift/Sources/; this file +// uses path: to forward there. // // IMPORTANT — SPM version resolution: // SPM's `from:` / `upToNextMajor` only recognises semver tags ("0.1.0", @@ -41,12 +41,12 @@ let package = Package( ), ], targets: [ - // NOTE: if libs/cua-driver/Package.swift ever gains resources:, + // NOTE: if libs/cua-driver/swift/Package.swift ever gains resources:, // swiftSettings:, linkerSettings:, or exclude: on these targets, // mirror those changes here to avoid a silent build mismatch. .target( name: "CuaDriverCore", - path: "libs/cua-driver/Sources/CuaDriverCore" + path: "libs/cua-driver/swift/Sources/CuaDriverCore" ), .target( name: "CuaDriverServer", @@ -54,7 +54,7 @@ let package = Package( "CuaDriverCore", .product(name: "MCP", package: "swift-sdk"), ], - path: "libs/cua-driver/Sources/CuaDriverServer" + path: "libs/cua-driver/swift/Sources/CuaDriverServer" ), ] ) diff --git a/README.md b/README.md index f9b5813390..7a0cf5963c 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ Drive any native macOS app **in the background** — agents click, type, and ver /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver/scripts/install.sh)" ``` -> Want to try the cross-platform Rust port early? Add `-- --experimental-rust` to the line above — it delegates to the [`cua-driver-rs`](libs/cua-driver-rs/) installer (separate bundle, coexists with the Swift binary). +> Want to try the cross-platform Rust port early? Add `-- --experimental-rust` to the line above — it delegates to the [`cua-driver-rs`](libs/cua-driver/rust/) installer (separate bundle, coexists with the Swift binary). Full tool reference, architecture notes, and the Claude Code skill ship with the package: [`libs/cua-driver/README.md`](libs/cua-driver/README.md). diff --git a/docs/content/docs/cua-driver/guide/getting-started/autostart.mdx b/docs/content/docs/cua-driver/guide/getting-started/autostart.mdx index c3f839e519..559838a519 100644 --- a/docs/content/docs/cua-driver/guide/getting-started/autostart.mdx +++ b/docs/content/docs/cua-driver/guide/getting-started/autostart.mdx @@ -19,8 +19,8 @@ cua-driver autostart disable # remove the entry | Platform | Mechanism | Where it lives | |---|---|---| | Windows | Scheduled Task `cua-driver-serve` with `LogonType: Interactive` | Task Scheduler (`schtasks /Query /TN cua-driver-serve`) | -| macOS | Not yet implemented in the Rust port — use the manual `LaunchAgent` recipe ([`scripts/install-local.sh --autostart`](https://github.com/trycua/cua/blob/main/libs/cua-driver-rs/scripts/install-local.sh)) | `~/Library/LaunchAgents/com.trycua.cua-driver-rs.plist` | -| Linux | Not yet implemented in the Rust port — use the manual `systemd --user` unit ([`scripts/install-local.sh --autostart`](https://github.com/trycua/cua/blob/main/libs/cua-driver-rs/scripts/install-local.sh)) | `~/.config/systemd/user/cua-driver-rs.service` | +| macOS | Not yet implemented in the Rust port — use the manual `LaunchAgent` recipe ([`scripts/install-local.sh --autostart`](https://github.com/trycua/cua/blob/main/libs/cua-driver/rust/scripts/install-local.sh)) | `~/Library/LaunchAgents/com.trycua.cua-driver-rs.plist` | +| Linux | Not yet implemented in the Rust port — use the manual `systemd --user` unit ([`scripts/install-local.sh --autostart`](https://github.com/trycua/cua/blob/main/libs/cua-driver/rust/scripts/install-local.sh)) | `~/.config/systemd/user/cua-driver-rs.service` | **Platform parity status.** `cua-driver autostart` is currently a Windows-only verb in the Rust port — the macOS / Linux cases return an error pointing at the manual recipe. A cross-platform native impl is tracked as a follow-up. The verb is documented as the cross-platform interface so existing scripts and skill-pack instructions land in the right place once parity ships. @@ -38,7 +38,7 @@ cua-driver autostart enable # cua-driver serve will start at every interactive logon. ``` -The registered task pins to `LogonType: Interactive` — load-bearing, because the alternative (`S4U` / `Password`) would land the daemon back in Session 0. The exact PowerShell that gets run is in [`autostart.rs`](https://github.com/trycua/cua/blob/main/libs/cua-driver-rs/crates/cua-driver/src/autostart.rs) and stays in lock-step with `scripts/install.ps1`. +The registered task pins to `LogonType: Interactive` — load-bearing, because the alternative (`S4U` / `Password`) would land the daemon back in Session 0. The exact PowerShell that gets run is in [`autostart.rs`](https://github.com/trycua/cua/blob/main/libs/cua-driver/rust/crates/cua-driver/src/autostart.rs) and stays in lock-step with `scripts/install.ps1`. ### `kick` diff --git a/docs/content/docs/cua-driver/guide/getting-started/installation.mdx b/docs/content/docs/cua-driver/guide/getting-started/installation.mdx index 33cabec9e3..1eb806798b 100644 --- a/docs/content/docs/cua-driver/guide/getting-started/installation.mdx +++ b/docs/content/docs/cua-driver/guide/getting-started/installation.mdx @@ -162,7 +162,7 @@ Re-run the install one-liner with `$env:CUA_DRIVER_RS_VERSION` pinned to the ver ```powershell $env:CUA_DRIVER_RS_VERSION = "0.2.0" -irm https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver-rs/scripts/install.ps1 | iex +irm https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver/scripts/install.ps1 | iex cua-driver --version # → 0.2.0 ``` diff --git a/docs/content/docs/cua-driver/guide/getting-started/linux.mdx b/docs/content/docs/cua-driver/guide/getting-started/linux.mdx index 9a23b31929..6efec9120b 100644 --- a/docs/content/docs/cua-driver/guide/getting-started/linux.mdx +++ b/docs/content/docs/cua-driver/guide/getting-started/linux.mdx @@ -5,7 +5,7 @@ description: Display server (X11 / Wayland), AT-SPI prerequisites, autostart, an import { Callout } from 'fumadocs-ui/components/callout'; -cua-driver-rs supports Linux as a first-class target — every action tool (`click`, `type_text`, `hotkey`, `drag`, `scroll`, `screenshot`, `launch_app`, `list_windows`, etc.) has a Linux implementation under [`crates/platform-linux/`](https://github.com/trycua/cua/tree/main/libs/cua-driver-rs/crates/platform-linux/src). This page covers the bits that diverge from the macOS / Windows quickstart: which display server you're running, what accessibility plumbing needs to be alive, how to keep the daemon up at logon, and how headless / CI workflows look. +cua-driver-rs supports Linux as a first-class target — every action tool (`click`, `type_text`, `hotkey`, `drag`, `scroll`, `screenshot`, `launch_app`, `list_windows`, etc.) has a Linux implementation under [`crates/platform-linux/`](https://github.com/trycua/cua/tree/main/libs/cua-driver/rust/crates/platform-linux/src). This page covers the bits that diverge from the macOS / Windows quickstart: which display server you're running, what accessibility plumbing needs to be alive, how to keep the daemon up at logon, and how headless / CI workflows look. For the install one-liner itself, see [Installation](/cua-driver/guide/getting-started/installation) — the canonical script auto-detects Linux and routes to the Rust port. @@ -63,7 +63,7 @@ The `cua-driver autostart` verb family is **Windows-only today**. On Linux it cu ```text cua-driver autostart is currently Windows-only. macOS users: see -libs/cua-driver-rs/scripts/install-local.sh --autostart for the +libs/cua-driver/rust/scripts/install-local.sh --autostart for the LaunchAgent recipe. Linux users: same script registers a systemd --user unit. A cross-platform impl is tracked as a follow-up. ``` @@ -72,7 +72,7 @@ The two working alternatives: ### Option A — Use `install-local.sh --autostart` -The dev-loop install script registers a systemd user unit when invoked with `--autostart`. See [`libs/cua-driver-rs/scripts/install-local.sh`](https://github.com/trycua/cua/blob/main/libs/cua-driver-rs/scripts/install-local.sh) — built for local development off a git checkout, but the systemd unit it writes is the same shape you'd use in production. +The dev-loop install script registers a systemd user unit when invoked with `--autostart`. See [`libs/cua-driver/rust/scripts/install-local.sh`](https://github.com/trycua/cua/blob/main/libs/cua-driver/rust/scripts/install-local.sh) — built for local development off a git checkout, but the systemd unit it writes is the same shape you'd use in production. ### Option B — Write your own systemd user unit @@ -148,11 +148,11 @@ If `cua-driver doctor` is happy after install, you're set. ## Per-tool Linux verification matrix -See [`libs/cua-driver-rs/PARITY.md`](https://github.com/trycua/cua/blob/main/libs/cua-driver-rs/PARITY.md) for the per-tool Linux-VERIFIED matrix — every action tool is annotated with its Linux source file (`crates/platform-linux/src/tools/impl_.rs`) and which platform features it depends on (X11 root window for `get_cursor_position`, AT-SPI for accessibility tree, `xtest` for synthetic input, etc.). +See [`libs/cua-driver/rust/PARITY.md`](https://github.com/trycua/cua/blob/main/libs/cua-driver/rust/PARITY.md) for the per-tool Linux-VERIFIED matrix — every action tool is annotated with its Linux source file (`crates/platform-linux/src/tools/impl_.rs`) and which platform features it depends on (X11 root window for `get_cursor_position`, AT-SPI for accessibility tree, `xtest` for synthetic input, etc.). ## See also - [Installation](/cua-driver/guide/getting-started/installation) — canonical one-liner that handles Linux automatically - [Autostart](/cua-driver/guide/getting-started/autostart) — concept page (Windows-only verb family; Linux uses systemd) - [Process attribution](/cua-driver/explanation/process-attribution) — Linux has none of the macOS-TCC or Windows-Session-0 weirdness; this page explains what those problems are and why Linux sidesteps them -- [`PARITY.md`](https://github.com/trycua/cua/blob/main/libs/cua-driver-rs/PARITY.md) — per-tool platform verification matrix +- [`PARITY.md`](https://github.com/trycua/cua/blob/main/libs/cua-driver/rust/PARITY.md) — per-tool platform verification matrix diff --git a/docs/content/docs/cua-driver/guide/getting-started/windows-ssh.mdx b/docs/content/docs/cua-driver/guide/getting-started/windows-ssh.mdx index 0bfe1d713d..874f7d81f8 100644 --- a/docs/content/docs/cua-driver/guide/getting-started/windows-ssh.mdx +++ b/docs/content/docs/cua-driver/guide/getting-started/windows-ssh.mdx @@ -106,7 +106,7 @@ No interactive session means `autostart kick` has no Session 1+ to land the daem ## How the proxy decides whether to forward -`cua-driver mcp` and `cua-driver call ` share the same gating function ([`should_use_daemon_proxy` in `cli.rs`](https://github.com/trycua/cua/blob/main/libs/cua-driver-rs/crates/cua-driver/src/cli.rs)): +`cua-driver mcp` and `cua-driver call ` share the same gating function ([`should_use_daemon_proxy` in `cli.rs`](https://github.com/trycua/cua/blob/main/libs/cua-driver/rust/crates/cua-driver/src/cli.rs)): - If `--no-daemon-relaunch` is passed, **stay in-process**. - If `CUA_DRIVER_RS_MCP_NO_RELAUNCH=1` is set, **stay in-process**. diff --git a/libs/cua-driver-fixtures/README.md b/libs/cua-driver-fixtures/README.md index 30c9fa5eb2..5706611650 100644 --- a/libs/cua-driver-fixtures/README.md +++ b/libs/cua-driver-fixtures/README.md @@ -35,7 +35,7 @@ libs/cua-driver/Tests/integration/ └── assets/ └── test_page.html → ../../../../cua-driver-fixtures/test_page.html -libs/cua-driver-rs/tests/integration/ +libs/cua-driver/rust/tests/integration/ ├── fixtures/ │ └── interactive.html → ../../../../cua-driver-fixtures/interactive.html └── v2/assets/ diff --git a/libs/cua-driver/rust/PARITY.md b/libs/cua-driver/rust/PARITY.md index 089684ff09..4b420307bc 100644 --- a/libs/cua-driver/rust/PARITY.md +++ b/libs/cua-driver/rust/PARITY.md @@ -8,7 +8,7 @@ covered by `tests/integration/test_api_parity.py` — **111 tests per binary, ```bash # Rust binary only -cd libs/cua-driver-rs/tests/integration +cd libs/cua-driver/rust/tests/integration ./run_tests.sh test_api_parity -v # Both binaries side-by-side @@ -1170,7 +1170,7 @@ Windows's `click` takes `{button: enum}` instead. Rationale: ## CLI subcommand: `list-tools` - Swift: `libs/cua-driver/Sources/CuaDriverCLI/CallCommand.swift:298-322` -- Rust: `libs/cua-driver-rs/crates/cua-driver/src/cli.rs::run_list_tools` +- Rust: `libs/cua-driver/rust/crates/cua-driver/src/cli.rs::run_list_tools` - Status: VERIFIED - Test: `crates/platform-windows/examples/list_tools_parity.rs` @@ -1197,7 +1197,7 @@ description content. ## CLI subcommand: `describe` - Swift: `libs/cua-driver/Sources/CuaDriverCLI/CallCommand.swift:324-366` + `printUnknownTool:552` -- Rust: `libs/cua-driver-rs/crates/cua-driver/src/cli.rs::run_describe` +- Rust: `libs/cua-driver/rust/crates/cua-driver/src/cli.rs::run_describe` - Status: VERIFIED - Test: `crates/platform-windows/examples/describe_parity.rs` @@ -1316,22 +1316,22 @@ Swift. `makeProxy` (the actor that re-implements `ListTools` / `CallTool` over the daemon UDS). - Rust: - - `libs/cua-driver-rs/crates/cua-driver/src/bundle.rs` — + - `libs/cua-driver/rust/crates/cua-driver/src/bundle.rs` — `is_executable_inside_cuadriver_app`, `parent_is_not_launchd`, `is_env_truthy`. - - `libs/cua-driver-rs/crates/cua-driver/src/cli.rs` — + - `libs/cua-driver/rust/crates/cua-driver/src/cli.rs` — `should_use_daemon_proxy`, `launch_daemon_and_wait`, `run_mcp_via_daemon_proxy`. - - `libs/cua-driver-rs/crates/cua-driver/src/proxy.rs` — + - `libs/cua-driver/rust/crates/cua-driver/src/proxy.rs` — `run_proxy` (the stdio loop forwarding `tools/list` and `tools/call` through the daemon socket). - - `libs/cua-driver-rs/scripts/CuaDriverBundle/Contents/Info.plist` — + - `libs/cua-driver/rust/scripts/CuaDriverBundle/Contents/Info.plist` — skeleton (Info.plist + empty MacOS/) that CD assembles into the release-tarball `CuaDriver.app` that the auto-relaunch path lands in. Stored under a non-`.app` directory so LaunchServices on developer machines doesn't surface a ghost entry alongside the real install. - - `libs/cua-driver-rs/scripts/install.sh` — drops the bundle to + - `libs/cua-driver/rust/scripts/install.sh` — drops the bundle to `/Applications/CuaDriver.app` and symlinks the bin into it. - Status: implemented on macOS (issue #1525); smoke-tested manually before merge. @@ -1465,7 +1465,7 @@ older clients that only read name/description still work. ## CLI subcommands: `status` + `stop` - Swift: `libs/cua-driver/Sources/CuaDriverCLI/ServeCommand.swift:368-470` -- Rust: `libs/cua-driver-rs/crates/cua-driver/src/serve.rs::run_status_cmd, run_stop_cmd` +- Rust: `libs/cua-driver/rust/crates/cua-driver/src/serve.rs::run_status_cmd, run_stop_cmd` - Status: VERIFIED - Test: `crates/platform-windows/examples/daemon_lifecycle_parity.rs` @@ -1491,8 +1491,8 @@ status 0. Now matches Swift byte-for-byte. ## MCP tool alias: `type_text_chars` → `type_text` - Swift: `libs/cua-driver/Sources/CuaDriverServer/ToolRegistry.swift:55-70` -- Rust: `libs/cua-driver-rs/crates/cua-driver/src/serve.rs` (both pipe variants) - + `libs/cua-driver-rs/crates/mcp-server/src/tool.rs::ToolRegistry::invoke` +- Rust: `libs/cua-driver/rust/crates/cua-driver/src/serve.rs` (both pipe variants) + + `libs/cua-driver/rust/crates/mcp-server/src/tool.rs::ToolRegistry::invoke` - Status: VERIFIED - Test: `crates/platform-windows/examples/type_text_chars_alias_parity.rs` @@ -1573,7 +1573,7 @@ Changes: ## CLI subcommand: `mcp-config` - Swift: `libs/cua-driver/Sources/CuaDriverCLI/CuaDriverCommand.swift:37-150` -- Rust: `libs/cua-driver-rs/crates/cua-driver/src/cli.rs::run_mcp_config` +- Rust: `libs/cua-driver/rust/crates/cua-driver/src/cli.rs::run_mcp_config` - Status: VERIFIED (no fixes needed — already matched Swift) - Test: `crates/platform-windows/examples/mcp_config_parity.rs` @@ -1597,7 +1597,7 @@ the right needles. All pass on first try. ## CLI subcommand: `update` - Swift: `libs/cua-driver/Sources/CuaDriverCLI/CuaDriverCommand.swift:638-686` -- Rust: `libs/cua-driver-rs/crates/cua-driver/src/cli.rs::run_update_cmd` +- Rust: `libs/cua-driver/rust/crates/cua-driver/src/cli.rs::run_update_cmd` - Status: VERIFIED (bug fix) - Test: `crates/platform-windows/examples/update_parity.rs` @@ -1622,8 +1622,8 @@ Now uses prefix `cua-driver-rs-v` (Rust port's actual tag prefix). ## CLI subcommand: `doctor` - Swift: `libs/cua-driver/Sources/CuaDriverCLI/DoctorCommand.swift` (legacy-cleanup only — single `Nothing to clean — install is up to date.` codepath, no diagnostics) -- Rust: `libs/cua-driver-rs/crates/cua-driver/src/doctor.rs` + - `libs/cua-driver-rs/crates/cua-driver/src/cli.rs::run_doctor_cmd` +- Rust: `libs/cua-driver/rust/crates/cua-driver/src/doctor.rs` + + `libs/cua-driver/rust/crates/cua-driver/src/cli.rs::run_doctor_cmd` - Status: INTENTIONAL_DIVERGENCE (Rust adds full diagnostic surface) - Test: `crates/cua-driver/src/doctor.rs` `#[cfg(test)] mod tests` (5 unit tests: text rendering, JSON rendering, status-tag mapping, @@ -1695,7 +1695,7 @@ arrays. ## CLI subcommand: `dump-docs` - Swift: `libs/cua-driver/Sources/CuaDriverCLI/DumpDocsCommand.swift` -- Rust: `libs/cua-driver-rs/crates/cua-driver/src/cli.rs::run_dump_docs_with_type` +- Rust: `libs/cua-driver/rust/crates/cua-driver/src/cli.rs::run_dump_docs_with_type` - Status: VERIFIED (with caveat about CLI extraction) - Test: `crates/platform-windows/examples/dump_docs_parity.rs` @@ -1743,9 +1743,9 @@ setup per client / docs link) is sourced from a single shared file: raw.githubusercontent.com (remote install path) + bash `sed`. - `libs/cua-driver/scripts/install.ps1` — `Invoke-WebRequest` from raw.githubusercontent.com + PowerShell `-replace`. - - `libs/cua-driver-rs/scripts/install-local.sh` — direct disk read + - `libs/cua-driver/rust/scripts/install-local.sh` — direct disk read from `../cua-driver/scripts/post-install-hints.txt` + `sed`. - - `libs/cua-driver-rs/scripts/install-local.ps1` — direct disk read + - `libs/cua-driver/rust/scripts/install-local.ps1` — direct disk read from `..\cua-driver\scripts\post-install-hints.txt` + `-replace`. If the .txt is unreachable (network failure on remote installs, repo @@ -1765,7 +1765,7 @@ only branching case). The OS-specific block is 4-6 lines, naturally fits in the script that targets that OS, and is the only part that would need conditional rendering in a single-file design. -**Status**: VERIFIED on macOS via `bash libs/cua-driver-rs/scripts/install-local.sh` +**Status**: VERIFIED on macOS via `bash libs/cua-driver/rust/scripts/install-local.sh` end-to-end. Windows VM verification pending. --- diff --git a/libs/cua-driver/rust/Skills/cua-driver-rs/README.md b/libs/cua-driver/rust/Skills/cua-driver-rs/README.md index 9fe8f8f077..4e741495a9 100644 --- a/libs/cua-driver/rust/Skills/cua-driver-rs/README.md +++ b/libs/cua-driver/rust/Skills/cua-driver-rs/README.md @@ -2,7 +2,7 @@ A [Claude Code](https://code.claude.com) skill that teaches Claude to drive native GUI apps on **macOS, Windows, and Linux** via the -[`cua-driver`](https://github.com/trycua/cua/tree/main/libs/cua-driver-rs) +[`cua-driver`](https://github.com/trycua/cua/tree/main/libs/cua-driver/rust) CLI — snapshot an app's accessibility tree (AX on macOS, UIA on Windows, AT-SPI on Linux), click/type/scroll by `element_index` or pixel coords, and verify via re-snapshot. Backgrounded-first on every @@ -76,7 +76,7 @@ forbidden-list / launch / click details. 1. **Windows 10/11** (any edition with PowerShell 5.1+). 2. **`cua-driver` CLI (Rust port `cua-driver-rs`)** — one-liner: ```powershell - irm https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver-rs/scripts/install.ps1 | iex + irm https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver/scripts/install.ps1 | iex ``` No TCC equivalent; no UAC elevation required for the default per-user install. See `WINDOWS.md` for Session 0 vs Session 1+ @@ -104,20 +104,20 @@ The skill is a drop-in directory. Same shape on every platform. ```bash mkdir -p ~/.claude/skills -cp -R libs/cua-driver-rs/Skills/cua-driver-rs ~/.claude/skills/ +cp -R libs/cua-driver/rust/Skills/cua-driver-rs ~/.claude/skills/ ``` Or symlink if you want edits-in-place: ```bash -ln -s "$PWD/libs/cua-driver-rs/Skills/cua-driver-rs" ~/.claude/skills/cua-driver-rs +ln -s "$PWD/libs/cua-driver/rust/Skills/cua-driver-rs" ~/.claude/skills/cua-driver-rs ``` **Project scope** (committed alongside a specific repo): ```bash mkdir -p .claude/skills -cp -R /path/to/cua/libs/cua-driver-rs/Skills/cua-driver-rs .claude/skills/ +cp -R /path/to/cua/libs/cua-driver/rust/Skills/cua-driver-rs .claude/skills/ ``` Or run the verb that does this automatically + fetches the matching @@ -199,7 +199,7 @@ cua-driver skills update # Or, from a clone of trycua/cua: cd /path/to/cua && git pull # if you copied: re-copy -cp -R libs/cua-driver-rs/Skills/cua-driver-rs ~/.claude/skills/ +cp -R libs/cua-driver/rust/Skills/cua-driver-rs ~/.claude/skills/ # if you symlinked: nothing needed ``` diff --git a/libs/cua-driver/rust/crates/cua-driver/src/autostart.rs b/libs/cua-driver/rust/crates/cua-driver/src/autostart.rs index fb017d79b9..49441fbf2f 100644 --- a/libs/cua-driver/rust/crates/cua-driver/src/autostart.rs +++ b/libs/cua-driver/rust/crates/cua-driver/src/autostart.rs @@ -346,7 +346,7 @@ mod platform { const NOT_YET: &str = "cua-driver autostart is currently Windows-only. macOS users: see \ - libs/cua-driver-rs/scripts/install-local.sh --autostart for the \ + libs/cua-driver/rust/scripts/install-local.sh --autostart for the \ LaunchAgent recipe. Linux users: same script registers a systemd \ --user unit. A cross-platform impl is tracked as a follow-up."; diff --git a/libs/cua-driver/rust/crates/cua-driver/src/skills.rs b/libs/cua-driver/rust/crates/cua-driver/src/skills.rs index 12c69fd542..0084d152c0 100644 --- a/libs/cua-driver/rust/crates/cua-driver/src/skills.rs +++ b/libs/cua-driver/rust/crates/cua-driver/src/skills.rs @@ -253,7 +253,7 @@ fn fetch_into(dest: &Path, from_main: bool) -> Result<()> { if from_main { // Per-file raw GitHub fetch — used for bleeding-edge dev validation. - let base = "https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver-rs/Skills/cua-driver-rs"; + let base = "https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver/rust/Skills/cua-driver-rs"; for f in SKILL_FILES { let url = format!("{base}/{f}"); let body = http_get_text(&url) diff --git a/libs/cua-driver/rust/crates/mcp-server/src/tool_args.rs b/libs/cua-driver/rust/crates/mcp-server/src/tool_args.rs index 6e12ca45d2..cbf411cd7b 100644 --- a/libs/cua-driver/rust/crates/mcp-server/src/tool_args.rs +++ b/libs/cua-driver/rust/crates/mcp-server/src/tool_args.rs @@ -23,7 +23,7 @@ //! Error message format: `"Missing required {kind} field: {name}"`. //! Used uniformly so MCP clients can pattern-match the wording. //! -//! See `libs/cua-driver-rs/docs/dedup-audit.md` for the audit trail +//! See `libs/cua-driver/rust/docs/dedup-audit.md` for the audit trail //! that motivated this extraction. use serde_json::Value; diff --git a/libs/cua-driver/rust/scripts/install-local.ps1 b/libs/cua-driver/rust/scripts/install-local.ps1 index 4c66486b4a..d57163b35a 100644 --- a/libs/cua-driver/rust/scripts/install-local.ps1 +++ b/libs/cua-driver/rust/scripts/install-local.ps1 @@ -258,7 +258,7 @@ if (Test-Path -LiteralPath $HintsTxt) { # Repo layout changed or .txt missing — fall back to one-line # essentials so users still know what to do next. Write-Host "Next steps: $installedBinary --version | $installedBinary mcp-config | $installedBinary skills install" - Write-Host "Docs: https://github.com/trycua/cua/tree/main/libs/cua-driver-rs" + Write-Host "Docs: https://github.com/trycua/cua/tree/main/libs/cua-driver/rust" } # Windows-specific autostart hint (kept inline; per-shell natural location). diff --git a/libs/cua-driver/rust/scripts/install-local.sh b/libs/cua-driver/rust/scripts/install-local.sh index 37fe279dd5..f3398e78d9 100755 --- a/libs/cua-driver/rust/scripts/install-local.sh +++ b/libs/cua-driver/rust/scripts/install-local.sh @@ -247,7 +247,7 @@ else # Repo layout changed or running from an unexpected location — fall # back to one-line essentials so users still know what to do next. echo "Next steps: $INSTALLED_BIN --version | $INSTALLED_BIN mcp-config | $INSTALLED_BIN skills install" - echo "Docs: https://github.com/trycua/cua/tree/main/libs/cua-driver-rs" + echo "Docs: https://github.com/trycua/cua/tree/main/libs/cua-driver/rust" fi # OS-specific autostart hint (kept inline; per-shell natural location). diff --git a/libs/cua-driver/rust/tests/integration/test_focus_steal_parity.py b/libs/cua-driver/rust/tests/integration/test_focus_steal_parity.py index 5f4dcc5a18..47c4221f7c 100644 --- a/libs/cua-driver/rust/tests/integration/test_focus_steal_parity.py +++ b/libs/cua-driver/rust/tests/integration/test_focus_steal_parity.py @@ -38,7 +38,7 @@ fresh runner — Finder removes that dependency.) Run: - cd libs/cua-driver-rs/tests/integration + cd libs/cua-driver/rust/tests/integration python3 -m unittest test_focus_steal_parity -v """ diff --git a/libs/cua-driver/scripts/_install-rust.sh b/libs/cua-driver/scripts/_install-rust.sh index 830287a01f..43150a0a3c 100644 --- a/libs/cua-driver/scripts/_install-rust.sh +++ b/libs/cua-driver/scripts/_install-rust.sh @@ -91,7 +91,7 @@ KEEP_VERSIONS="${CUA_DRIVER_RS_KEEP_VERSIONS:-$KEEP_VERSIONS_DEFAULT}" # macOS-only: name and install location of the .app bundle that wraps # the bare binary so the TCC auto-relaunch path in `cua-driver mcp` has # a stable bundle id (com.trycua.driver) to attribute the daemon to. -# See libs/cua-driver-rs/scripts/CuaDriverBundle/Contents/Info.plist and +# See libs/cua-driver/rust/scripts/CuaDriverBundle/Contents/Info.plist and # the matching docs on `cua-driver mcp`'s auto-relaunch behavior. # Identical to the Swift driver's CuaDriver.app + com.trycua.driver # pair — the Rust port replaces the Swift install at this path, @@ -361,7 +361,7 @@ case "$OS-$ARCH_RAW" in *) err "unsupported platform: $OS / $ARCH_RAW" err " cua-driver-rs ships prebuilts for: darwin-arm64, darwin-x86_64, linux-x86_64." - err " Windows users: install via install.ps1 (irm https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver-rs/scripts/install.ps1 | iex)." + err " Windows users: install via install.ps1 (irm https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver/scripts/install.ps1 | iex)." exit 1 ;; esac @@ -681,7 +681,7 @@ else # user always gets enough to recover, even if hint-text fetching is # blocked. Skip everything else. echo "Next steps: $BIN_LINK --version | $BIN_LINK mcp-config | $BIN_LINK skills install" - echo "Docs: https://github.com/trycua/cua/tree/main/libs/cua-driver-rs" + echo "Docs: https://github.com/trycua/cua/tree/main/libs/cua-driver/rust" fi case "$(uname -s)" in diff --git a/libs/cua-driver/scripts/install.ps1 b/libs/cua-driver/scripts/install.ps1 index 1b8415788e..34c1fcf46e 100644 --- a/libs/cua-driver/scripts/install.ps1 +++ b/libs/cua-driver/scripts/install.ps1 @@ -1189,7 +1189,7 @@ catch { # Network fetch failed — print one-line essentials so users always # get enough to recover. Write-Host "Next steps: $installedBinary --version | $installedBinary mcp-config | $installedBinary skills install" - Write-Host "Docs: https://github.com/trycua/cua/tree/main/libs/cua-driver-rs" + Write-Host "Docs: https://github.com/trycua/cua/tree/main/libs/cua-driver/rust" } # Windows-specific autostart hint (kept inline; OS-natural location). diff --git a/libs/cua-driver/scripts/install.sh b/libs/cua-driver/scripts/install.sh index 1def4942d2..b80cd03b8d 100755 --- a/libs/cua-driver/scripts/install.sh +++ b/libs/cua-driver/scripts/install.sh @@ -130,19 +130,10 @@ if [[ "$USE_RUST_BACKEND" == "1" ]]; then LOCAL_RUST_INSTALLER="" if [[ -n "${BASH_SOURCE[0]:-}" && "${BASH_SOURCE[0]}" != "-" && -f "${BASH_SOURCE[0]}" ]]; then SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" - # New canonical location — colocated helper under cua-driver/scripts/. + # Helper lives next to this script under libs/cua-driver/scripts/. CANDIDATE="$SCRIPT_DIR/_install-rust.sh" if [[ -f "$CANDIDATE" ]]; then LOCAL_RUST_INSTALLER="$CANDIDATE" - else - # Backward-compat: if someone is running this script from a - # tree where the helper hasn't been moved yet (e.g. a - # historical checkout being used with a freshly-pulled - # install.sh), fall through to the cua-driver-rs location. - CANDIDATE="$SCRIPT_DIR/../../cua-driver-rs/scripts/install.sh" - if [[ -f "$CANDIDATE" ]]; then - LOCAL_RUST_INSTALLER="$CANDIDATE" - fi fi fi diff --git a/libs/cua-driver/scripts/post-install-hints.txt b/libs/cua-driver/scripts/post-install-hints.txt index ee9ce1ac99..919e5cd021 100644 --- a/libs/cua-driver/scripts/post-install-hints.txt +++ b/libs/cua-driver/scripts/post-install-hints.txt @@ -48,4 +48,4 @@ Next steps: For other clients accepting the generic mcpServers shape: {{BINARY}} mcp-config -Docs: https://github.com/trycua/cua/tree/main/libs/cua-driver-rs +Docs: https://github.com/trycua/cua/tree/main/libs/cua-driver/rust diff --git a/libs/cua-driver/scripts/uninstall.ps1 b/libs/cua-driver/scripts/uninstall.ps1 index caa45f41b4..5daf830d83 100644 --- a/libs/cua-driver/scripts/uninstall.ps1 +++ b/libs/cua-driver/scripts/uninstall.ps1 @@ -161,7 +161,7 @@ $CurrentDir = Join-Path $PackagesDir "current" # $AutoStartTask hoisted to the elevation pre-check block above. # Skill junctions — mirrors the AGENTS list in -# libs/cua-driver-rs/crates/cua-driver/src/skills.rs (the verb that +# libs/cua-driver/rust/crates/cua-driver/src/skills.rs (the verb that # creates them) so we remove from the same paths. $SkillJunctions = @( (Join-Path $env:USERPROFILE ".claude\skills\cua-driver-rs"), From ec2479978788ba7616b26da8dd85e1691a74c0a5 Mon Sep 17 00:00:00 2001 From: Francesco Bonacci Date: Sun, 24 May 2026 11:00:17 +0000 Subject: [PATCH 4/5] chore: consolidate install scripts into libs/cua-driver/scripts/ (single dispatcher) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before: install-local.sh existed in two places — libs/cua-driver/scripts/ (Swift dev installer) and libs/cua-driver/rust/scripts/ (Rust dev installer). Confusing now that both ports live under libs/cua-driver/. After: ONE user-visible entry point per script, all at libs/cua-driver/scripts/: install.sh multi-backend (already there) — handles release install install.ps1 Windows install (Rust-only; Swift doesn't run there) install-local.sh multi-backend dispatcher (NEW) — handles dev install install-local.ps1 Windows dev install (was rust/scripts/install-local.ps1) uninstall.sh multi-backend (already there) uninstall.ps1 Windows uninstall (already there) Backend-private helpers (do not invoke directly): _install-rust.sh Rust release installer _install-local-rust.sh Rust dev installer (was rust/scripts/install-local.sh) _install-local-swift.sh Swift dev installer (was scripts/install-local.sh) The new install-local.sh mirrors install.sh's dispatch shape: parses --backend=swift|rust / --experimental-rust, auto-selects Rust on non- macOS, then execs the matching _install-local-{swift,rust}.sh. Side-effects of the move: - build-app.sh, _install-local-swift.sh, build-release-notarized.sh, test.sh updated to find Swift sources at swift/ (the new home) while still finding cross-cutting assets (CuaDriver.entitlements, uninstall.sh) in libs/cua-driver/scripts/. The legacy curl/irm one-liners pointing at libs/cua-driver-rs/scripts/ keep working via the unchanged backward-compat shims there. --- .../_install-local-rust.sh} | 7 +- .../scripts/_install-local-swift.sh | 257 ++++++++++++++++ libs/cua-driver/scripts/build-app.sh | 10 +- .../scripts/build/build-release-notarized.sh | 8 +- .../{rust => }/scripts/install-local.ps1 | 0 libs/cua-driver/scripts/install-local.sh | 289 ++++-------------- libs/cua-driver/scripts/test.sh | 8 +- 7 files changed, 340 insertions(+), 239 deletions(-) rename libs/cua-driver/{rust/scripts/install-local.sh => scripts/_install-local-rust.sh} (96%) create mode 100755 libs/cua-driver/scripts/_install-local-swift.sh rename libs/cua-driver/{rust => }/scripts/install-local.ps1 (100%) diff --git a/libs/cua-driver/rust/scripts/install-local.sh b/libs/cua-driver/scripts/_install-local-rust.sh similarity index 96% rename from libs/cua-driver/rust/scripts/install-local.sh rename to libs/cua-driver/scripts/_install-local-rust.sh index f3398e78d9..cfd33d55b9 100755 --- a/libs/cua-driver/rust/scripts/install-local.sh +++ b/libs/cua-driver/scripts/_install-local-rust.sh @@ -6,7 +6,12 @@ # and a release install can coexist + the `current` symlink can flip # between them. # -# Mirrors libs/cua-driver/scripts/install-local.sh (Swift) in shape: +# Private helper — invoked by install-local.sh (the multi-backend +# dispatcher) when the user picks --backend=rust / --experimental-rust +# or runs on a non-macOS host. Do not invoke directly; flag parity with +# the dispatcher's argv shape is maintained from there. +# +# Mirrors _install-local-swift.sh (the sibling Swift helper) in shape: # --release build the release configuration (default: debug) # --autostart register an auto-start daemon (macOS: LaunchAgent; # Linux: systemd user unit). Default off; the post-install diff --git a/libs/cua-driver/scripts/_install-local-swift.sh b/libs/cua-driver/scripts/_install-local-swift.sh new file mode 100755 index 0000000000..8d81551ac4 --- /dev/null +++ b/libs/cua-driver/scripts/_install-local-swift.sh @@ -0,0 +1,257 @@ +#!/bin/bash +# +# cua-driver local/debug installer — Swift backend (macOS only). +# +# Private helper — invoked by install-local.sh (the multi-backend +# dispatcher) when the user is on macOS and does not pass +# --experimental-rust / --backend=rust. Do not invoke directly. Builds +# from the current source tree at libs/cua-driver/swift/ and installs +# the resulting CuaDriver.app + cua-driver CLI onto the developer's +# machine. Mirrors lume's scripts/install-local.sh shape. +# +# Installs to the same paths as scripts/install.sh (the production +# installer), so TCC grants made against one install survive the other: +# app bundle → /Applications/CuaDriver.app +# CLI symlink → ~/.local/bin/cua-driver +# +# The script prompts for sudo only on the specific steps that need it +# (moving the .app into /Applications) +# — do NOT run the whole script with `sudo`. +# +# --release builds the release configuration (default is debug — faster). +# --daemon installs a LaunchAgent that runs `cua-driver serve` on login. +# +# Not for end-users (use scripts/install.sh for that — fetches signed + +# notarized release from GitHub). +set -e + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +# Swift sources live under libs/cua-driver/swift/ (parent of scripts/ + +# `/swift`). build-app.sh / uninstall.sh / CuaDriver.entitlements stay +# in $SCRIPT_DIR (the cross-cutting libs/cua-driver/scripts/ dir). +CUA_DRIVER_DIR="$(cd "$SCRIPT_DIR/../swift" && pwd)" +SHARED_SCRIPTS_DIR="$SCRIPT_DIR" + +# Guard `tput` against environments where TERM is unset (agent sandboxes, +# CI containers, `launchd` jobs): tput aborts with "No value for $TERM and +# no -T specified" otherwise, killing the script before any work starts. +BOLD=$(tput bold 2>/dev/null || true) +NORMAL=$(tput sgr0 2>/dev/null || true) +RED=$(tput setaf 1 2>/dev/null || true) +GREEN=$(tput setaf 2 2>/dev/null || true) +BLUE=$(tput setaf 4 2>/dev/null || true) +YELLOW=$(tput setaf 3 2>/dev/null || true) + +if [ "$(id -u)" -eq 0 ] || [ -n "${SUDO_USER:-}" ]; then + echo "${RED}Error: do not run this script with sudo or as root.${NORMAL}" + echo "The script will prompt for sudo on the specific operations that" + echo "need it (writing to /Applications); running the" + echo "whole thing as root puts the LaunchAgent plist under /var/root" + echo "and breaks telemetry / config paths." + exit 1 +fi + +# --- Parse arguments ---------------------------------------------------- + +BUILD_CONFIG="debug" +INSTALL_DAEMON=false # LaunchAgent for `cua-driver serve` + +while [ "$#" -gt 0 ]; do + case "$1" in + --release) + BUILD_CONFIG="release" + ;; + --daemon) + INSTALL_DAEMON=true + ;; + --help|-h) + echo "${BOLD}${BLUE}cua-driver local installer${NORMAL}" + echo "Usage: $0 [OPTIONS]" + echo "" + echo "Options:" + echo " --release Build the release configuration (default: debug)." + echo " --daemon Also install a LaunchAgent that runs 'cua-driver serve'" + echo " on login, so the per-pid AX cache is always available." + echo " --help Show this help." + echo "" + echo "Examples:" + echo " $0 # debug build, install to /Applications" + echo " $0 --release # release build, install to /Applications" + echo " $0 --release --daemon # release build + serve-on-login LaunchAgent" + exit 0 + ;; + *) + echo "${RED}Unknown option: $1${NORMAL}" + echo "Use --help for usage." + exit 1 + ;; + esac + shift +done + +APP_INSTALL_DIR="/Applications" +BIN_INSTALL_DIR="$HOME/.local/bin" +APP_DEST="$APP_INSTALL_DIR/CuaDriver.app" +BIN_LINK="$BIN_INSTALL_DIR/cua-driver" + +# Conditional sudo — matches install.sh. /Applications is usually +# group-writable by the admin group, so most users won't be prompted. +SUDO_APP="" +if [ ! -w "$APP_INSTALL_DIR" ]; then + SUDO_APP="sudo" +fi + +echo "${BOLD}${BLUE}cua-driver local installer${NORMAL}" +echo "Source: ${BOLD}$CUA_DRIVER_DIR${NORMAL}" +echo "Config: ${BOLD}$BUILD_CONFIG${NORMAL}" +echo "App path: ${BOLD}$APP_DEST${NORMAL}" +echo "CLI path: ${BOLD}$BIN_LINK${NORMAL}" +if [ "$INSTALL_DAEMON" = true ]; then + echo "Daemon: ${BOLD}LaunchAgent (cua-driver serve)${NORMAL}" +fi +echo "" + +# --- Prerequisites ------------------------------------------------------ + +if ! command -v swift >/dev/null 2>&1; then + echo "${RED}Error: swift not found on PATH.${NORMAL}" + echo "Install Xcode Command Line Tools: xcode-select --install" + exit 1 +fi + +# --- Build -------------------------------------------------------------- + +echo "${BOLD}Building cua-driver ($BUILD_CONFIG)...${NORMAL}" +cd "$CUA_DRIVER_DIR" +"$SHARED_SCRIPTS_DIR/build-app.sh" "$BUILD_CONFIG" +echo "" + +BUILD_APP="$CUA_DRIVER_DIR/.build/CuaDriver.app" +if [ ! -d "$BUILD_APP" ]; then + echo "${RED}Error: build-app.sh did not produce $BUILD_APP${NORMAL}" + exit 1 +fi + +# --- Remove stale dev-install paths ------------------------------------- +# +# Older revisions of this script (and ad-hoc `install-cli.sh`, since +# removed) installed to `~/Applications/CuaDriver.app`. That leaks a +# second bundle that LaunchServices keys off +# `CFBundleIdentifier=com.trycua.driver`, which can silently re-route +# `cua-driver serve` to the stale `~/Applications` copy. +# Proactively remove them here so there is exactly one registered +# CuaDriver.app on the machine after every install. +STALE_APP="$HOME/Applications/CuaDriver.app" +for stale in "$STALE_APP"; do + if [ -e "$stale" ] || [ -L "$stale" ]; then + echo "Removing stale dev-install leftover: $stale" + rm -rf "$stale" + fi +done + +# --- Install .app bundle ------------------------------------------------ + +echo "${BOLD}Installing CuaDriver.app to $APP_INSTALL_DIR...${NORMAL}" +$SUDO_APP mkdir -p "$APP_INSTALL_DIR" +if [ -e "$APP_DEST" ]; then + $SUDO_APP rm -rf "$APP_DEST" +fi +# `ditto` preserves code signatures + extended attributes — `cp -R` +# strips Gatekeeper metadata on some macOS versions. +$SUDO_APP ditto "$BUILD_APP" "$APP_DEST" +echo "${GREEN}Installed $APP_DEST${NORMAL}" + +# --- Install CLI symlink ------------------------------------------------ + +echo "" +echo "${BOLD}Linking cua-driver CLI into $BIN_INSTALL_DIR...${NORMAL}" +mkdir -p "$BIN_INSTALL_DIR" +if [ ! -w "$BIN_INSTALL_DIR" ]; then + echo "${RED}Error: $BIN_INSTALL_DIR is not writable.${NORMAL}" + echo "Pick a user-writable bin directory or fix ownership before rerunning." + exit 1 +fi +ln -sf "$APP_DEST/Contents/MacOS/cua-driver" "$BIN_LINK" +echo "${GREEN}Linked $BIN_LINK → $APP_DEST/Contents/MacOS/cua-driver${NORMAL}" + +# --- Daemon (optional) -------------------------------------------------- + +if [ "$INSTALL_DAEMON" = true ]; then + echo "" + echo "${BOLD}Installing LaunchAgent (cua-driver serve)...${NORMAL}" + SERVICE_NAME="com.trycua.cua_driver_daemon" + PLIST_PATH="$HOME/Library/LaunchAgents/$SERVICE_NAME.plist" + + mkdir -p "$HOME/Library/LaunchAgents" + if [ -f "$PLIST_PATH" ]; then + launchctl unload "$PLIST_PATH" 2>/dev/null || true + fi + + cat > "$PLIST_PATH" < + + + + Label + $SERVICE_NAME + ProgramArguments + + $BIN_LINK + serve + + RunAtLoad + + KeepAlive + + StandardOutPath + /tmp/cua_driver_daemon.log + StandardErrorPath + /tmp/cua_driver_daemon.error.log + ProcessType + Interactive + + +EOF + chmod 644 "$PLIST_PATH" + launchctl load "$PLIST_PATH" + echo "${GREEN}LaunchAgent loaded: $PLIST_PATH${NORMAL}" + echo "Logs: /tmp/cua_driver_daemon.log + /tmp/cua_driver_daemon.error.log" +else + # Tear down any stale LaunchAgent from a prior run so two daemons + # don't race on the default socket. + SERVICE_NAME="com.trycua.cua_driver_daemon" + PLIST_PATH="$HOME/Library/LaunchAgents/$SERVICE_NAME.plist" + if [ -f "$PLIST_PATH" ]; then + echo "" + echo "Removing stale LaunchAgent (use --daemon to reinstall)..." + launchctl unload "$PLIST_PATH" 2>/dev/null || true + rm "$PLIST_PATH" + fi +fi + +# --- Summary ------------------------------------------------------------ + +cat < swift build ($CONFIG)" @@ -23,7 +27,9 @@ BUILD_BIN=".build/$CONFIG/cua-driver" APP_BUNDLE=".build/CuaDriver.app" APP_CONTENTS="$APP_BUNDLE/Contents" APP_MACOS="$APP_CONTENTS/MacOS" -ENTITLEMENTS="scripts/CuaDriver.entitlements" +# Entitlements stay at libs/cua-driver/scripts/ (cross-cutting); we're now +# one level deeper than scripts/ so reach back up. +ENTITLEMENTS="../scripts/CuaDriver.entitlements" rm -rf "$APP_BUNDLE" mkdir -p "$APP_MACOS" diff --git a/libs/cua-driver/scripts/build/build-release-notarized.sh b/libs/cua-driver/scripts/build/build-release-notarized.sh index 4202a94ce3..dc760141c5 100755 --- a/libs/cua-driver/scripts/build/build-release-notarized.sh +++ b/libs/cua-driver/scripts/build/build-release-notarized.sh @@ -3,8 +3,10 @@ # Get the directory where this script is located SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" -# Navigate to the cua-driver root directory (two levels up from scripts/build/) -CUA_DRIVER_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)" +# Swift sources live at libs/cua-driver/swift/ (parent of scripts/build/ +# is libs/cua-driver/scripts/, so up two then into swift/). All +# subsequent swift-build / App/ / Skills/ paths resolve under there. +CUA_DRIVER_DIR="$(cd "$SCRIPT_DIR/../../swift" && pwd)" # Set default log level if not provided LOG_LEVEL=${LOG_LEVEL:-"normal"} @@ -111,7 +113,7 @@ fi # Sign the .app bundle log "essential" "Signing .app bundle with Developer ID..." codesign --force --options runtime --timestamp \ - --entitlements ./scripts/CuaDriver.entitlements \ + --entitlements ../scripts/CuaDriver.entitlements \ --sign "$CERT_APPLICATION_NAME" \ --keychain "$KEYCHAIN_PATH" \ "$APP_BUNDLE" diff --git a/libs/cua-driver/rust/scripts/install-local.ps1 b/libs/cua-driver/scripts/install-local.ps1 similarity index 100% rename from libs/cua-driver/rust/scripts/install-local.ps1 rename to libs/cua-driver/scripts/install-local.ps1 diff --git a/libs/cua-driver/scripts/install-local.sh b/libs/cua-driver/scripts/install-local.sh index f503185f19..0a940756e3 100755 --- a/libs/cua-driver/scripts/install-local.sh +++ b/libs/cua-driver/scripts/install-local.sh @@ -1,248 +1,75 @@ -#!/bin/bash +#!/usr/bin/env bash +# cua-driver local/debug installer — multi-backend dispatcher. # -# cua-driver local/debug installer. Builds from the current source tree -# and installs the resulting CuaDriver.app + cua-driver CLI onto the -# developer's machine. Mirrors lume's scripts/install-local.sh shape. +# Mirrors the shape of install.sh: a single user-visible entry point at +# libs/cua-driver/scripts/install-local.sh that delegates to a per-backend +# private helper based on host + flags. # -# Installs to the same paths as scripts/install.sh (the production -# installer), so TCC grants made against one install survive the other: -# app bundle → /Applications/CuaDriver.app -# CLI symlink → ~/.local/bin/cua-driver +# Helpers (private — do not invoke directly): +# _install-local-swift.sh Builds CuaDriver.app from libs/cua-driver/swift +# and installs to /Applications + ~/.local/bin +# _install-local-rust.sh Builds cua-driver from libs/cua-driver/rust +# and installs the cross-platform binary # -# The script prompts for sudo only on the specific steps that need it -# (moving the .app into /Applications) -# — do NOT run the whole script with `sudo`. +# Defaults: +# macOS → Swift backend (today's default; pass --backend=rust to override) +# non-mac → Rust backend (Swift is macOS-only; auto-selected) # -# --release builds the release configuration (default is debug — faster). -# --daemon installs a LaunchAgent that runs `cua-driver serve` on login. +# Flags (forwarded verbatim to whichever helper runs): +# --experimental-rust opt into the Rust port (same as --backend=rust) +# --backend=swift|rust explicit backend selector +# --release build the release configuration (default: debug) +# --daemon | --autostart pass through to the backend helper +# --bin-dir override the symlink destination (default ~/.local/bin) # -# Not for end-users (use scripts/install.sh for that — fetches signed + -# notarized release from GitHub). -set -e - -SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" -CUA_DRIVER_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" - -# Guard `tput` against environments where TERM is unset (agent sandboxes, -# CI containers, `launchd` jobs): tput aborts with "No value for $TERM and -# no -T specified" otherwise, killing the script before any work starts. -BOLD=$(tput bold 2>/dev/null || true) -NORMAL=$(tput sgr0 2>/dev/null || true) -RED=$(tput setaf 1 2>/dev/null || true) -GREEN=$(tput setaf 2 2>/dev/null || true) -BLUE=$(tput setaf 4 2>/dev/null || true) -YELLOW=$(tput setaf 3 2>/dev/null || true) - -if [ "$(id -u)" -eq 0 ] || [ -n "${SUDO_USER:-}" ]; then - echo "${RED}Error: do not run this script with sudo or as root.${NORMAL}" - echo "The script will prompt for sudo on the specific operations that" - echo "need it (writing to /Applications); running the" - echo "whole thing as root puts the LaunchAgent plist under /var/root" - echo "and breaks telemetry / config paths." - exit 1 -fi - -# --- Parse arguments ---------------------------------------------------- - -BUILD_CONFIG="debug" -INSTALL_DAEMON=false # LaunchAgent for `cua-driver serve` - -while [ "$#" -gt 0 ]; do +# Not for end-users — see install.sh for the curl-pipe-bash one-liner that +# fetches the signed release tarball. +set -euo pipefail + +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" + +# --- Lightweight flag parsing (mirror install.sh) ----------------------- +# Two-pass shape: collect every unrecognised arg into FORWARDED_ARGS so the +# selected backend helper sees the same argv shape as before the wrapper +# existed. Recognised dispatch flags (--experimental-rust, --backend=*) are +# consumed here and never forwarded. +USE_RUST_BACKEND=0 +FORWARDED_ARGS=() +PASSTHROUGH=0 +while [[ $# -gt 0 ]]; do + if [[ "$PASSTHROUGH" == "1" ]]; then + FORWARDED_ARGS+=("$1"); shift; continue + fi case "$1" in - --release) - BUILD_CONFIG="release" - ;; - --daemon) - INSTALL_DAEMON=true - ;; - --help|-h) - echo "${BOLD}${BLUE}cua-driver local installer${NORMAL}" - echo "Usage: $0 [OPTIONS]" - echo "" - echo "Options:" - echo " --release Build the release configuration (default: debug)." - echo " --daemon Also install a LaunchAgent that runs 'cua-driver serve'" - echo " on login, so the per-pid AX cache is always available." - echo " --help Show this help." - echo "" - echo "Examples:" - echo " $0 # debug build, install to /Applications" - echo " $0 --release # release build, install to /Applications" - echo " $0 --release --daemon # release build + serve-on-login LaunchAgent" - exit 0 - ;; - *) - echo "${RED}Unknown option: $1${NORMAL}" - echo "Use --help for usage." - exit 1 + --experimental-rust) USE_RUST_BACKEND=1; shift ;; + --backend=rust) USE_RUST_BACKEND=1; shift ;; + --backend=swift) shift ;; # explicit default — no-op + --backend=*) + printf 'error: unknown backend %q; supported: swift, rust\n' "${1#*=}" >&2 + exit 2 ;; + --) PASSTHROUGH=1; shift ;; # forward the rest verbatim + *) FORWARDED_ARGS+=("$1"); shift ;; esac - shift done -APP_INSTALL_DIR="/Applications" -BIN_INSTALL_DIR="$HOME/.local/bin" -APP_DEST="$APP_INSTALL_DIR/CuaDriver.app" -BIN_LINK="$BIN_INSTALL_DIR/cua-driver" - -# Conditional sudo — matches install.sh. /Applications is usually -# group-writable by the admin group, so most users won't be prompted. -SUDO_APP="" -if [ ! -w "$APP_INSTALL_DIR" ]; then - SUDO_APP="sudo" -fi - -echo "${BOLD}${BLUE}cua-driver local installer${NORMAL}" -echo "Source: ${BOLD}$CUA_DRIVER_DIR${NORMAL}" -echo "Config: ${BOLD}$BUILD_CONFIG${NORMAL}" -echo "App path: ${BOLD}$APP_DEST${NORMAL}" -echo "CLI path: ${BOLD}$BIN_LINK${NORMAL}" -if [ "$INSTALL_DAEMON" = true ]; then - echo "Daemon: ${BOLD}LaunchAgent (cua-driver serve)${NORMAL}" -fi -echo "" - -# --- Prerequisites ------------------------------------------------------ - -if ! command -v swift >/dev/null 2>&1; then - echo "${RED}Error: swift not found on PATH.${NORMAL}" - echo "Install Xcode Command Line Tools: xcode-select --install" - exit 1 -fi - -# --- Build -------------------------------------------------------------- - -echo "${BOLD}Building cua-driver ($BUILD_CONFIG)...${NORMAL}" -cd "$CUA_DRIVER_DIR" -"$CUA_DRIVER_DIR/scripts/build-app.sh" "$BUILD_CONFIG" -echo "" - -BUILD_APP="$CUA_DRIVER_DIR/.build/CuaDriver.app" -if [ ! -d "$BUILD_APP" ]; then - echo "${RED}Error: build-app.sh did not produce $BUILD_APP${NORMAL}" - exit 1 +# Auto-select Rust on non-macOS — Swift has no install path off Darwin. +if [[ "$USE_RUST_BACKEND" == "0" && "$(uname -s 2>/dev/null)" != "Darwin" ]]; then + USE_RUST_BACKEND=1 + printf 'note: detected non-macOS host (%s); auto-selecting the cua-driver-rs Rust backend.\n' \ + "$(uname -s 2>/dev/null || echo unknown)" >&2 fi -# --- Remove stale dev-install paths ------------------------------------- -# -# Older revisions of this script (and ad-hoc `install-cli.sh`, since -# removed) installed to `~/Applications/CuaDriver.app`. That leaks a -# second bundle that LaunchServices keys off -# `CFBundleIdentifier=com.trycua.driver`, which can silently re-route -# `cua-driver serve` to the stale `~/Applications` copy. -# Proactively remove them here so there is exactly one registered -# CuaDriver.app on the machine after every install. -STALE_APP="$HOME/Applications/CuaDriver.app" -for stale in "$STALE_APP"; do - if [ -e "$stale" ] || [ -L "$stale" ]; then - echo "Removing stale dev-install leftover: $stale" - rm -rf "$stale" - fi -done - -# --- Install .app bundle ------------------------------------------------ - -echo "${BOLD}Installing CuaDriver.app to $APP_INSTALL_DIR...${NORMAL}" -$SUDO_APP mkdir -p "$APP_INSTALL_DIR" -if [ -e "$APP_DEST" ]; then - $SUDO_APP rm -rf "$APP_DEST" +if [[ "$USE_RUST_BACKEND" == "1" ]]; then + HELPER="$SCRIPT_DIR/_install-local-rust.sh" +else + HELPER="$SCRIPT_DIR/_install-local-swift.sh" fi -# `ditto` preserves code signatures + extended attributes — `cp -R` -# strips Gatekeeper metadata on some macOS versions. -$SUDO_APP ditto "$BUILD_APP" "$APP_DEST" -echo "${GREEN}Installed $APP_DEST${NORMAL}" - -# --- Install CLI symlink ------------------------------------------------ -echo "" -echo "${BOLD}Linking cua-driver CLI into $BIN_INSTALL_DIR...${NORMAL}" -mkdir -p "$BIN_INSTALL_DIR" -if [ ! -w "$BIN_INSTALL_DIR" ]; then - echo "${RED}Error: $BIN_INSTALL_DIR is not writable.${NORMAL}" - echo "Pick a user-writable bin directory or fix ownership before rerunning." +if [[ ! -f "$HELPER" ]]; then + printf 'error: backend helper not found at %s\n' "$HELPER" >&2 exit 1 fi -ln -sf "$APP_DEST/Contents/MacOS/cua-driver" "$BIN_LINK" -echo "${GREEN}Linked $BIN_LINK → $APP_DEST/Contents/MacOS/cua-driver${NORMAL}" - -# --- Daemon (optional) -------------------------------------------------- - -if [ "$INSTALL_DAEMON" = true ]; then - echo "" - echo "${BOLD}Installing LaunchAgent (cua-driver serve)...${NORMAL}" - SERVICE_NAME="com.trycua.cua_driver_daemon" - PLIST_PATH="$HOME/Library/LaunchAgents/$SERVICE_NAME.plist" - - mkdir -p "$HOME/Library/LaunchAgents" - if [ -f "$PLIST_PATH" ]; then - launchctl unload "$PLIST_PATH" 2>/dev/null || true - fi - - cat > "$PLIST_PATH" < - - - - Label - $SERVICE_NAME - ProgramArguments - - $BIN_LINK - serve - - RunAtLoad - - KeepAlive - - StandardOutPath - /tmp/cua_driver_daemon.log - StandardErrorPath - /tmp/cua_driver_daemon.error.log - ProcessType - Interactive - - -EOF - chmod 644 "$PLIST_PATH" - launchctl load "$PLIST_PATH" - echo "${GREEN}LaunchAgent loaded: $PLIST_PATH${NORMAL}" - echo "Logs: /tmp/cua_driver_daemon.log + /tmp/cua_driver_daemon.error.log" -else - # Tear down any stale LaunchAgent from a prior run so two daemons - # don't race on the default socket. - SERVICE_NAME="com.trycua.cua_driver_daemon" - PLIST_PATH="$HOME/Library/LaunchAgents/$SERVICE_NAME.plist" - if [ -f "$PLIST_PATH" ]; then - echo "" - echo "Removing stale LaunchAgent (use --daemon to reinstall)..." - launchctl unload "$PLIST_PATH" 2>/dev/null || true - rm "$PLIST_PATH" - fi -fi - -# --- Summary ------------------------------------------------------------ - -cat </dev/null +"$SCRIPT_DIR/build-app.sh" >/dev/null export CUA_DRIVER_BINARY="$(pwd)/.build/CuaDriver.app/Contents/MacOS/cua-driver" From 652e294642722c33b908c3b36f26adc9d0a44631 Mon Sep 17 00:00:00 2001 From: Francesco Bonacci Date: Sun, 24 May 2026 11:06:52 +0000 Subject: [PATCH 5/5] chore: drop libs/cua-driver-rs/ legacy URL shims (no more backward-compat path) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Users of the legacy curl/irm one-liners at libs/cua-driver-rs/scripts/install.{sh,ps1} will get a 404 after this PR lands. Per user decision, that breakage is acceptable — the new canonical URLs at libs/cua-driver/scripts/install.{sh,ps1} are the single source of truth. Removes: - libs/cua-driver-rs/scripts/install.sh (shim) - libs/cua-driver-rs/scripts/install.ps1 (shim) - (the libs/cua-driver-rs/ folder is now fully gone from the repo) Also drops the "old URLs still work via shim" disclaimers that are no longer true: - docs/.../installation.mdx — note paragraph removed - libs/cua-driver/scripts/_install-rust.sh — legacy URL comment removed - .github/workflows/cd-rust-cua-driver.yml — release-body footnote removed --- .github/workflows/cd-rust-cua-driver.yml | 5 --- .../guide/getting-started/installation.mdx | 2 - libs/cua-driver-rs/scripts/install.ps1 | 29 ------------ libs/cua-driver-rs/scripts/install.sh | 44 ------------------- libs/cua-driver/scripts/_install-rust.sh | 4 -- 5 files changed, 84 deletions(-) delete mode 100644 libs/cua-driver-rs/scripts/install.ps1 delete mode 100644 libs/cua-driver-rs/scripts/install.sh diff --git a/.github/workflows/cd-rust-cua-driver.yml b/.github/workflows/cd-rust-cua-driver.yml index 4159f6ae1d..eb52856639 100644 --- a/.github/workflows/cd-rust-cua-driver.yml +++ b/.github/workflows/cd-rust-cua-driver.yml @@ -557,11 +557,6 @@ jobs: irm https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver/scripts/install.ps1 | iex ``` - > Note: both canonical installer URLs now live under - > `libs/cua-driver/scripts/`. Old URLs at - > `libs/cua-driver-rs/scripts/install.{sh,ps1}` still work via a - > deprecation shim that fetches the canonical script. - The installer auto-detects host architecture (x86_64 / arm64) and uses directory junctions for the install layout, so it runs without admin and without Developer Mode. diff --git a/docs/content/docs/cua-driver/guide/getting-started/installation.mdx b/docs/content/docs/cua-driver/guide/getting-started/installation.mdx index 1eb806798b..a27f86b294 100644 --- a/docs/content/docs/cua-driver/guide/getting-started/installation.mdx +++ b/docs/content/docs/cua-driver/guide/getting-started/installation.mdx @@ -68,8 +68,6 @@ Both canonical installers live under `libs/cua-driver/scripts/`. On macOS the `. irm https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver/scripts/install.ps1 | iex ``` -The legacy `libs/cua-driver-rs/scripts/install.{sh,ps1}` URLs continue to work via backward-compat shims that redirect to the canonical installers — Hermes and any other integration that hardcodes the old URLs keep working unchanged. - **Known issue on Windows PowerShell 5.1**: `install.ps1` currently fails to parse on stock Windows PowerShell 5.1 (the version shipped with Windows 10 / Server 2019 / Server 2025) due to backtick + ampersand escaping in the post-install hint block — see [#1626](https://github.com/trycua/cua/issues/1626). Workaround until that lands: manual zip install: diff --git a/libs/cua-driver-rs/scripts/install.ps1 b/libs/cua-driver-rs/scripts/install.ps1 deleted file mode 100644 index f34b148a8f..0000000000 --- a/libs/cua-driver-rs/scripts/install.ps1 +++ /dev/null @@ -1,29 +0,0 @@ -# cua-driver-rs install.ps1 redirect shim. -# -# The canonical Windows installer now lives at -# `libs/cua-driver/scripts/install.ps1`. This shim exists so existing -# one-liners that reference the old URL keep working forever: -# -# irm https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver-rs/scripts/install.ps1 | iex -# -# It fetches and `iex`-pipes the canonical installer with the same args. -# Old `$env:CUA_DRIVER_RS_VERSION` env vars and `-Release` / `-AutoStart` -# params flow through unchanged. - -$ErrorActionPreference = "Stop" -$ProgressPreference = "SilentlyContinue" - -$CanonicalUrl = "https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver/scripts/install.ps1" - -Write-Host "note: cua-driver-rs/scripts/install.ps1 is deprecated; fetching the" -ForegroundColor Yellow -Write-Host " canonical installer from cua-driver/scripts/install.ps1" -ForegroundColor Yellow -Write-Host " The Rust port is still what gets installed on Windows — only the" -ForegroundColor Yellow -Write-Host " URL moved." -ForegroundColor Yellow -Write-Host "" - -# Re-execute the canonical installer in the current scope so PARAMS / env -# vars / progress output flow through naturally. The canonical installer -# prints its own post-install hints (including the `cua-driver skills -# install` opt-in), so the shim doesn't duplicate them here. -$CanonicalScript = (Invoke-WebRequest -Uri $CanonicalUrl -UseBasicParsing).Content -Invoke-Expression $CanonicalScript diff --git a/libs/cua-driver-rs/scripts/install.sh b/libs/cua-driver-rs/scripts/install.sh deleted file mode 100644 index 1c79c26ca7..0000000000 --- a/libs/cua-driver-rs/scripts/install.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env bash -# -# cua-driver-rs/scripts/install.sh — backward-compat redirect. -# -# The canonical user-facing installer now lives at -# libs/cua-driver/scripts/install.sh (Swift driver's installer that -# auto-delegates to the Rust port on non-macOS hosts or when -# `--experimental-rust` is passed). This shim exists so the legacy -# one-liner against this path keeps working forever: -# -# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver-rs/scripts/install.sh)" -# -# The actual Rust install logic lives at -# libs/cua-driver/scripts/_install-rust.sh — invoked by the canonical -# script when `--backend=rust` (or auto-detected on Linux). This shim -# just forwards there with `--backend=rust` to skip the auto-detect -# message on Linux and the macOS-Swift-default behavior. - -set -euo pipefail - -CANONICAL_URL="https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver/scripts/install.sh" - -printf 'note: cua-driver-rs/scripts/install.sh is deprecated; fetching the\n' >&2 -printf ' canonical installer from cua-driver/scripts/install.sh\n' >&2 -printf ' The Rust port is still what gets installed — only the URL moved.\n' >&2 -printf '\n' >&2 - -# Try on-disk first when invoked from a checked-out tree (dev / CI). -SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]:-$0}")" && pwd 2>/dev/null || true)" -ON_DISK="$SCRIPT_DIR/../../cua-driver/scripts/install.sh" -if [[ -n "$SCRIPT_DIR" && -f "$ON_DISK" ]]; then - exec /bin/bash "$ON_DISK" --backend=rust "$@" -fi - -if ! command -v curl >/dev/null 2>&1; then - printf 'error: curl not found on PATH; cannot fetch %s\n' "$CANONICAL_URL" >&2 - exit 1 -fi - -CANONICAL_SCRIPT="$(curl -fsSL "$CANONICAL_URL")" || { - printf 'error: failed to download canonical installer from %s\n' "$CANONICAL_URL" >&2 - exit 1 -} -exec /bin/bash -c "$CANONICAL_SCRIPT" install --backend=rust "$@" diff --git a/libs/cua-driver/scripts/_install-rust.sh b/libs/cua-driver/scripts/_install-rust.sh index 43150a0a3c..486abdd9dd 100644 --- a/libs/cua-driver/scripts/_install-rust.sh +++ b/libs/cua-driver/scripts/_install-rust.sh @@ -19,10 +19,6 @@ # Canonical user-facing invocation (forwards here on Linux / --backend=rust): # /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver/scripts/install.sh)" # -# Legacy URL (backward-compat shim at libs/cua-driver-rs/scripts/install.sh -# redirects here): -# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver-rs/scripts/install.sh)" -# # Flags: # --bin-dir install the visible binary/symlink to # instead of ~/.local/bin