fix(agents): preserve npm shims and parse v-prefixed versions (#295) #747
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: | |
| pull_request: | |
| branches: [master] | |
| push: | |
| branches: [master] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| typecheck: | |
| name: Typecheck | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: "24" | |
| cache: pnpm | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile --ignore-scripts | |
| - name: Typecheck | |
| run: pnpm run typecheck | |
| lint: | |
| name: Lint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: "24" | |
| cache: pnpm | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile --ignore-scripts | |
| - name: Lint | |
| run: pnpm run lint | |
| fmt: | |
| name: Format | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: "24" | |
| cache: pnpm | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile --ignore-scripts | |
| - name: Format check | |
| run: pnpm run fmt:check | |
| test_shard: | |
| name: Test shard (${{ matrix.shard }}/4) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: [1, 2, 3, 4] | |
| # Unit tests run via vitest in node/jsdom and never launch the Electron | |
| # runtime, so skip the flaky Chromium binary download and the root | |
| # postinstall, which rebuilds better-sqlite3 for Electron. The database | |
| # tests need Node-ABI better-sqlite3 and node-pty bindings rebuilt below. | |
| # ELECTRON_OVERRIDE_DIST_PATH lets `require("electron")` resolve to a path | |
| # string without the binary present, so suites that import the module (but | |
| # never spawn it) load instead of throwing from electron/index.js. | |
| env: | |
| ELECTRON_SKIP_BINARY_DOWNLOAD: "1" | |
| ELECTRON_OVERRIDE_DIST_PATH: node_modules/electron/dist | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: "24" | |
| cache: pnpm | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile --ignore-scripts | |
| - name: Build test native dependencies | |
| run: pnpm rebuild better-sqlite3 node-pty | |
| - name: Test shard | |
| run: pnpm run test --shard=${{ matrix.shard }}/4 | |
| test: | |
| name: Test | |
| if: ${{ always() }} | |
| needs: test_shard | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Verify test shards | |
| run: test "${{ needs.test_shard.result }}" = "success" |