Introduce new orchestrator mode and fix issues with tasks, task view, viewport and task isolation. #2518
Workflow file for this run
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] | |
| tags: ["v*"] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| inputs: | |
| skip_npm: | |
| description: "Skip npm publish" | |
| type: boolean | |
| default: false | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # Fast lint + type check (no Rust, no native build needed) | |
| check: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: "1.3" | |
| - name: Cache bun dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: bun-${{ runner.os }}-${{ hashFiles('**/bun.lock') }} | |
| - run: bun install --frozen-lockfile | |
| - name: Type check changed packages | |
| if: github.event_name == 'pull_request' | |
| run: bun run ci:check:affected | |
| - name: Type check full workspace | |
| if: github.event_name != 'pull_request' | |
| run: bun run ci:check:full | |
| native: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: ${{ startsWith(github.ref, 'refs/tags/v') && fromJSON('[ | |
| {"os":"ubuntu-22.04","platform":"linux","arch":"x64","variants":"baseline modern","rust_checks":true}, | |
| {"os":"ubuntu-22.04","platform":"linux","arch":"arm64","target":"aarch64-unknown-linux-gnu"}, | |
| {"os":"macos-15-intel","platform":"darwin","arch":"x64","variants":"baseline modern"}, | |
| {"os":"macos-14","platform":"darwin","arch":"arm64"}, | |
| {"os":"windows-latest","platform":"win32","arch":"x64","variants":"baseline modern"} | |
| ]') || fromJSON('[ | |
| {"os":"ubuntu-22.04","platform":"linux","arch":"x64","variants":"baseline modern","rust_checks":true} | |
| ]') }} | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| lfs: true | |
| - uses: dtolnay/rust-toolchain@nightly # TODO: unpin once nightly codegen regression is fixed | |
| with: | |
| toolchain: nightly-2026-03-27 | |
| components: ${{ matrix.rust_checks && 'clippy, rustfmt' || '' }} | |
| targets: ${{ matrix.target }} | |
| - name: Ensure cross-compilation target is installed | |
| if: matrix.target | |
| run: rustup target add ${{ matrix.target }} | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| key: ${{ matrix.target }} | |
| cache-workspace-crates: true | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: "1.3" | |
| - uses: mlugg/setup-zig@v2 | |
| with: | |
| version: 0.15.2 | |
| - run: bun install --frozen-lockfile | |
| - name: Install cross-compilation toolchain | |
| if: matrix.target == 'aarch64-unknown-linux-gnu' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y gcc-aarch64-linux-gnu | |
| - name: Rust checks | |
| if: matrix.rust_checks | |
| run: bun run check:rs | |
| - name: Build native addon(s) | |
| env: | |
| CROSS_TARGET: ${{ matrix.target }} | |
| TARGET_PLATFORM: ${{ matrix.platform }} | |
| TARGET_ARCH: ${{ matrix.arch }} | |
| TARGET_VARIANTS: ${{ matrix.variants }} | |
| CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc | |
| shell: bash | |
| run: | | |
| bun run ci:build:native | |
| - name: Upload native addon(s) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: pi-natives-${{ matrix.platform }}-${{ matrix.arch }} | |
| path: packages/natives/native/pi_natives.${{ matrix.platform }}-${{ matrix.arch }}*.node | |
| if-no-files-found: error | |
| test: | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| lfs: true | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: "1.3" | |
| - uses: dtolnay/rust-toolchain@nightly # TODO: unpin once nightly codegen regression is fixed | |
| with: | |
| toolchain: nightly-2026-03-27 | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-workspace-crates: true | |
| - uses: taiki-e/install-action@v2 | |
| with: | |
| tool: nextest | |
| - uses: mlugg/setup-zig@v2 | |
| with: | |
| version: 0.15.2 | |
| - name: Cache bun dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: bun-${{ runner.os }}-${{ hashFiles('**/bun.lock') }} | |
| - name: Install system deps | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev fd-find ripgrep imagemagick | |
| sudo ln -s $(which fdfind) /usr/local/bin/fd | |
| sudo ln -sf /usr/bin/convert /usr/local/bin/magick | |
| - run: bun install --frozen-lockfile | |
| - run: bun run build:native | |
| - name: Test changed packages | |
| if: github.event_name == 'pull_request' | |
| run: bun run ci:test:affected | |
| - name: Test full workspace | |
| if: github.event_name != 'pull_request' | |
| run: bun run ci:test:full | |
| - name: CLI smoke test | |
| run: bun run ci:test:smoke | |
| install_methods: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| lfs: true | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: "1.3" | |
| - uses: dtolnay/rust-toolchain@nightly # TODO: unpin once nightly codegen regression is fixed | |
| with: | |
| toolchain: nightly-2026-03-27 | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-workspace-crates: true | |
| - uses: mlugg/setup-zig@v2 | |
| with: | |
| version: 0.15.2 | |
| - name: Cache bun dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: bun-${{ runner.os }}-${{ hashFiles('**/bun.lock') }} | |
| - name: Install system deps | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev fd-find ripgrep imagemagick | |
| sudo ln -s $(which fdfind) /usr/local/bin/fd | |
| sudo ln -sf /usr/bin/convert /usr/local/bin/magick | |
| - run: bun install --frozen-lockfile | |
| - name: Install method smoke tests | |
| run: bun run ci:test:install-methods | |
| release: | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| needs: [check, native, test, install_methods] | |
| runs-on: ubuntu-22.04 | |
| permissions: | |
| contents: write | |
| id-token: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| lfs: true | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: "1.3" | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "24" | |
| registry-url: "https://registry.npmjs.org" | |
| - name: Cache bun dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: bun-${{ runner.os }}-${{ hashFiles('**/bun.lock') }} | |
| - run: bun install --frozen-lockfile | |
| - name: Download native addons | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: pi-natives-* | |
| path: packages/natives/native | |
| merge-multiple: true | |
| - name: Verify native addons | |
| run: bun run ci:release:verify-natives | |
| - name: Build binaries | |
| run: bun run ci:release:build-binaries | |
| - name: Stage native addons for release | |
| run: cp packages/natives/native/*.node packages/coding-agent/binaries/ | |
| - name: Create GitHub Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: packages/coding-agent/binaries/* | |
| generate_release_notes: true | |
| - name: Publish to npm | |
| if: ${{ !inputs.skip_npm }} | |
| env: | |
| NPM_CONFIG_TOKEN: ${{ secrets.NPM_TOKEN }} | |
| run: bun run ci:release:publish |