Add Linux (Ubuntu) build, test, and CLI support - #3
Open
devin-ai-integration[bot] wants to merge 7 commits into
Open
Add Linux (Ubuntu) build, test, and CLI support#3devin-ai-integration[bot] wants to merge 7 commits into
devin-ai-integration[bot] wants to merge 7 commits into
Conversation
Co-Authored-By: Matthew Lam <minghinmatthew.lam@gmail.com>
Co-Authored-By: Matthew Lam <minghinmatthew.lam@gmail.com>
Co-Authored-By: Matthew Lam <minghinmatthew.lam@gmail.com>
Co-Authored-By: Matthew Lam <minghinmatthew.lam@gmail.com>
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
Co-Authored-By: Matthew Lam <minghinmatthew.lam@gmail.com>
Co-Authored-By: Matthew Lam <minghinmatthew.lam@gmail.com>
Co-Authored-By: Matthew Lam <minghinmatthew.lam@gmail.com>
Author
|
Ran the full Linux self-test battery on Ubuntu x86_64 (Swift 6.0.3), headless shell verification per AGENTS.md non-mutating path. Results (latest, after daemon-auth fix)
health_report --json (Linux posture)"permissions": {
"accessibility": {"granted": false, "status": "unsupported"},
"screenRecording": {"granted": false, "status": "unsupported"}
},
"captureService": {"status": "skipped", "detail": "Screen capture is unsupported on Linux."},
"tccAttribution": "Linux does not use TCC."(Headless CLI/server project — all evidence is terminal output.) |
16 tasks
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
Makes the package compile, run its full unit test suite, and pass deterministic preflight on Ubuntu (Swift 6.0.3), and adds an
ubuntu-latestCI lane. The macOS interaction engine is unchanged; Linux is a protocol/tool-layer port:AppKit,ApplicationServices,CoreGraphics,ScreenCaptureKit,Carbon,IOKit,Quartz) is gated with#if os(macOS)/ conditional imports; macOS code paths are syntactically unchanged.LinuxSupport.swiftprovides inert type/constant shims (AXUIElement,CGEvent, AX constants, virtual key codes) so shared code compiles; newLinuxStubs.swiftreimplements the platform API surface — portable logic (keymap parsing, delivery-fallback reasoning, unicode typing chunks, page-probe JSON parsing) works for real, while anything requiring AX/input/capture throws a structuredToolError.failed("... unsupported on Linux.")rather than fabricating success (includingdeliverClick/deliverScroll/deliverDrag, which fail loudly on Linux).sockaddr_un/AF_UNIXtype differences), Linux auth-token generation, and peer authentication viagetsockopt(SO_PEERCRED)(macOS keepsgetpeereid); verified with a daemon round trip on Ubuntu.health_report --jsonon Linux reports platform identity with Accessibility/Screen Recording asunsupported, captureskipped, TCC not applicable;list_appsreturns an empty controllable-app list.withTimeoutuses an actor-guarded continuation race so an uncancellable wedged operation cannot block timeout return (this was hangingswift test).ComputerUseFixture(AppKit/SwiftUI) is gated to macOS with a stub Linux main.linux-build-and-testjob (ubuntu-latest, swift-actions/setup-swift@v2 pinned to 6.0.3, SwiftPM cache) runningscripts/preflight.py; existing macOS lane untouched. README updated with the Linux support boundary.Type of change
Verification
All run on Ubuntu 22.04, Swift 6.0.3 (x86_64-unknown-linux-gnu); macOS lane verified via hosted CI (green):
swift build— Build completeswift test— 398 tests passedversion,help,health_report --json— all pass; health report correctly shows Linux unsupported capabilitiespython3 scripts/preflight.py --bin .build/debug/computer-use-mcp— passed (incl. Python helper tests, version consistency, background-eval dry run)serveover stdio: initialize, tools/list (30-tool catalog), tools/call — AX/input/capture tools return structured unsupported errors, no crashes/fake successcall health_report '{}'routes through the daemon; peer auth accepts same-uid clients via SO_PEERCREDChecklist
docs/).Link to Devin session: https://app.devin.ai/sessions/5f22c5a8af704f368b963a71f94eb46f
Requested by: @minghinmatthewlam