diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1c2e7f4..dcef6fb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,5 +1,9 @@ name: CI +# Runners: uvacompute (https://uvacompute.com) +# To enable, set the UVA_RUNNER repo variable to the correct runner label. +# runs-on: ${{ vars.UVA_RUNNER || 'ubuntu-latest' }} + on: pull_request: branches: [main] @@ -22,7 +26,7 @@ on: publish_crates: description: Publish to crates.io type: boolean - default: true + default: false env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true @@ -33,7 +37,7 @@ permissions: jobs: changes: name: Changes - runs-on: [self-hosted, netty] + runs-on: ubuntu-latest outputs: rust: ${{ steps.check.outputs.rust }} version: ${{ steps.version.outputs.version }} @@ -101,7 +105,7 @@ jobs: name: Validate needs: changes if: needs.changes.outputs.rust == 'true' - runs-on: [self-hosted, netty] + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -125,6 +129,9 @@ jobs: - name: Install site dependencies run: pnpm --dir site install --frozen-lockfile + - name: Install system dependencies + run: sudo apt-get update && sudo apt-get install -y libx11-dev libxtst-dev + - name: Format check run: make fmt-check @@ -141,7 +148,7 @@ jobs: name: Integration (Xvfb) needs: changes if: needs.changes.outputs.rust == 'true' - runs-on: [self-hosted, netty] + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -149,6 +156,9 @@ jobs: - uses: Swatinem/rust-cache@v2 + - name: Install system dependencies + run: sudo apt-get update && sudo apt-get install -y libx11-dev libxtst-dev xvfb + - name: Xvfb integration tests run: make test-integration @@ -156,7 +166,7 @@ jobs: name: Distribution Validate needs: changes if: needs.changes.outputs.rust == 'true' - runs-on: [self-hosted, netty] + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -168,11 +178,19 @@ jobs: with: node-version: 22 + - uses: cachix/install-nix-action@v30 + with: + extra_nix_config: | + experimental-features = nix-command flakes + + - name: Install system dependencies + run: sudo apt-get update && sudo apt-get install -y libx11-dev libxtst-dev + - name: Distribution validation run: make dist-validate # --- Release pipeline: update-manifests -> build -> release -> publish --- - # These stay on ubuntu-latest for artifact upload/download and registry publishing. + # Version bump happens BEFORE build so the binary has the correct version. update-manifests: name: Update Manifests @@ -291,51 +309,10 @@ jobs: artifacts/checksums.txt fi - publish-npm: - name: Publish npm + publish: + name: Publish needs: [changes, update-manifests, release] - if: >- - github.event_name != 'pull_request' - && needs.changes.outputs.rust == 'true' - && (inputs.publish_npm == true || inputs.publish_npm == '') - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - ref: ${{ needs.changes.outputs.tag }} - - - uses: actions/setup-node@v4 - with: - node-version: 22 - registry-url: https://registry.npmjs.org - - - name: Check if already published - id: published - run: | - VERSION="${{ needs.changes.outputs.version }}" - if npm view "deskctl@${VERSION}" version >/dev/null 2>&1; then - echo "npm=true" >> "$GITHUB_OUTPUT" - else - echo "npm=false" >> "$GITHUB_OUTPUT" - fi - - - name: Validate npm package - if: steps.published.outputs.npm != 'true' - run: node npm/deskctl/scripts/validate-package.js - - - name: Publish npm - if: steps.published.outputs.npm != 'true' - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - run: npm publish ./npm/deskctl --access public - - publish-crates: - name: Publish crates.io - needs: [changes, update-manifests, release] - if: >- - github.event_name != 'pull_request' - && needs.changes.outputs.rust == 'true' - && (inputs.publish_crates == true || inputs.publish_crates == '') + if: github.event_name != 'pull_request' && needs.changes.outputs.rust == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -344,21 +321,40 @@ jobs: - uses: dtolnay/rust-toolchain@stable + - uses: actions/setup-node@v4 + with: + node-version: 22 + registry-url: https://registry.npmjs.org + - name: Install system dependencies run: sudo apt-get update && sudo apt-get install -y libx11-dev libxtst-dev - - name: Check if already published + - name: Check current published state id: published run: | VERSION="${{ needs.changes.outputs.version }}" + if npm view "deskctl@${VERSION}" version >/dev/null 2>&1; then + echo "npm=true" >> "$GITHUB_OUTPUT" + else + echo "npm=false" >> "$GITHUB_OUTPUT" + fi if curl -fsSL "https://crates.io/api/v1/crates/deskctl/${VERSION}" >/dev/null 2>&1; then echo "crates=true" >> "$GITHUB_OUTPUT" else echo "crates=false" >> "$GITHUB_OUTPUT" fi + - name: Validate npm package + run: node npm/deskctl/scripts/validate-package.js + + - name: Publish npm + if: steps.published.outputs.npm != 'true' + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + run: npm publish ./npm/deskctl --access public + - name: Publish crates.io - if: steps.published.outputs.crates != 'true' + if: inputs.publish_crates && steps.published.outputs.crates != 'true' env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} run: cargo publish --locked diff --git a/Cargo.lock b/Cargo.lock index eb0e2ce..c948da0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -400,7 +400,7 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "deskctl" -version = "0.1.14" +version = "0.1.13" dependencies = [ "ab_glyph", "anyhow", @@ -911,9 +911,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.92" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc4c90f45aa2e6eacbe8645f77fdea542ac97a494bcd117a67df9ff4d611f995" +checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" dependencies = [ "once_cell", "wasm-bindgen", @@ -1907,9 +1907,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.115" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6523d69017b7633e396a89c5efab138161ed5aafcbc8d3e5c5a42ae38f50495a" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" dependencies = [ "cfg-if", "once_cell", @@ -1920,9 +1920,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.115" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e3a6c758eb2f701ed3d052ff5737f5bfe6614326ea7f3bbac7156192dc32e67" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1930,9 +1930,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.115" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "921de2737904886b52bcbb237301552d05969a6f9c40d261eb0533c8b055fedf" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" dependencies = [ "bumpalo", "proc-macro2", @@ -1943,9 +1943,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.115" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a93e946af942b58934c604527337bad9ae33ba1d5c6900bbb41c2c07c2364a93" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" dependencies = [ "unicode-ident", ] diff --git a/Cargo.toml b/Cargo.toml index be051c7..2c4745c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "deskctl" -version = "0.1.14" +version = "0.1.13" edition = "2021" description = "X11 desktop control CLI for agents" license = "MIT" diff --git a/README.md b/README.md index dccbe04..935f329 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,9 @@ # deskctl + [![npm](https://img.shields.io/npm/v/deskctl?label=npm)](https://www.npmjs.com/package/deskctl) [![skill](https://img.shields.io/badge/skills.sh-deskctl-111827)](skills/deskctl) -Desktop control cli for AI agents on X11. - -https://github.com/user-attachments/assets/e820787e-4d1a-463f-bdcf-a829588778bf - +Desktop control cli for AI agents on Linux X11. ## Install diff --git a/demo/index.html b/demo/index.html deleted file mode 100644 index 70ac230..0000000 --- a/demo/index.html +++ /dev/null @@ -1,969 +0,0 @@ - - - - - -deskctl - Desktop Control for AI Agents - - - - -
-

deskctl

-

desktop control CLI for AI agents

-
- -
-
-
-
-
-
-
-
-
- - -
-
-
- Files ~/reports -
-
-
-
- 📝 - task_brief.txt - 2.1 KB -
-
- 📊 - nvda_q1_data.csv - 48 KB -
-
- 📄 - prev_report.pdf - 1.2 MB -
-
- 📁 - archive/ - -- -
-
-
- task: Prepare NVDA Q1 earnings summary
- source: finance.yahoo.com, local csv
- output: Google Docs report with chart -
-
-
- - -
-
-
- Chrome - Yahoo Finance -
-
-
- NVDA - $924.68 - +3.42% - 1Y -
-
- - - - - - - - - - - - - $950 - $800 - $650 - -
-
-
-
- - -
-
-
- Chrome - Google Docs -
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - - - - - - - - - NVDA 1Y - -
-
-
-
- - -
@w1
-
@w2
-
@w3
- -
- -
- -
-
- - -
-
Files
-
Yahoo Finance
-
Google Docs
-
-
-
- -
-
-
-
-
- agent computer -
-
-
-
- -
-

AI agent controlling a live desktop via deskctl

- -
- - - - diff --git a/docs/releasing.md b/docs/releasing.md index 849d661..8f39d3f 100644 --- a/docs/releasing.md +++ b/docs/releasing.md @@ -59,12 +59,12 @@ The repository release workflow: - publishes the canonical GitHub Release asset - uploads `checksums.txt` -The registry publish jobs (npm and crates.io run in parallel): +The registry publish workflow: -- target an existing release tag -- check whether that version is already published on the respective registry -- skip already-published versions -- both default to enabled; can be toggled via workflow_dispatch inputs +- targets an existing release tag +- checks that Cargo, npm, and the requested tag all agree on version +- checks whether that version is already published on npm and crates.io +- only publishes the channels explicitly requested ## Rerun Safety diff --git a/npm/deskctl/package.json b/npm/deskctl/package.json index c676924..327fb33 100644 --- a/npm/deskctl/package.json +++ b/npm/deskctl/package.json @@ -1,6 +1,6 @@ { "name": "deskctl", - "version": "0.1.14", + "version": "0.1.13", "description": "Installable deskctl package for Linux X11 agents", "license": "MIT", "homepage": "https://github.com/harivansh-afk/deskctl", diff --git a/site/src/pages/index.astro b/site/src/pages/index.astro index 478c7a2..b914e16 100644 --- a/site/src/pages/index.astro +++ b/site/src/pages/index.astro @@ -43,9 +43,6 @@ import DocLayout from "../layouts/DocLayout.astro";
  • GitHub
  • -
  • - crates.io -
  • npm