Add working Linux interaction engine (AT-SPI2 perception, X11 input, X11 capture) #41
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| jobs: | |
| build-and-test: | |
| runs-on: macos-15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Select Xcode | |
| # Fail hard if the pinned Xcode is missing — do not fall back to a | |
| # different toolchain (that silently changes compiler/SDK behavior). | |
| run: | | |
| test -d /Applications/Xcode_16.4.app | |
| sudo xcode-select -s /Applications/Xcode_16.4.app | |
| - name: Cache SwiftPM | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| .build | |
| ~/Library/Caches/org.swift.swiftpm | |
| key: ${{ runner.os }}-swiftpm-${{ hashFiles('Package.resolved') }} | |
| restore-keys: | | |
| ${{ runner.os }}-swiftpm- | |
| - name: Preflight (no GUI/TCC) | |
| # GUI-dependent paths (AX, ScreenCaptureKit, overlay) need a logged-in | |
| # desktop session and TCC grants, so hosted CI stays on the pure, | |
| # non-mutating path. | |
| run: python3 scripts/preflight.py | |
| linux-build-and-test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Linux interaction dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libatspi2.0-dev \ | |
| libx11-dev \ | |
| libxtst-dev \ | |
| libxext-dev \ | |
| libpng-dev | |
| - name: Set up Swift | |
| uses: swift-actions/setup-swift@v2 | |
| with: | |
| swift-version: "6.0.3" | |
| - name: Cache SwiftPM | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| .build | |
| ~/.cache/org.swift.swiftpm | |
| key: ${{ runner.os }}-swiftpm-${{ hashFiles('Package.resolved') }} | |
| restore-keys: | | |
| ${{ runner.os }}-swiftpm- | |
| - name: Preflight (Linux, no GUI/TCC) | |
| run: python3 scripts/preflight.py --bin .build/debug/computer-use-mcp | |
| # Non-blocking style check: does not gate build-and-test. Prefer the | |
| # toolchain-bundled `swift format lint` over adding a SwiftLint dependency. | |
| lint: | |
| runs-on: macos-15 | |
| continue-on-error: true | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Select Xcode | |
| run: | | |
| test -d /Applications/Xcode_16.4.app | |
| sudo xcode-select -s /Applications/Xcode_16.4.app | |
| - name: swift format lint | |
| run: swift format lint --recursive Sources Tests |