# Run the root validation commands on every pull request. # Command list is duplicated in tools/ci-check.mjs — keep them identical. name: CI on: pull_request: workflow_dispatch: permissions: contents: read # Cancel an in-flight run when the PR gets new commits. concurrency: group: ci-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: pnpm/action-setup@v6 with: version: 11.25.0 run_install: false - uses: actions/setup-node@v6 with: node-version-file: '.node-version' cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile - name: Run all package tests run: pnpm test # The MCP test suite regenerates the action catalog (catalog.ts + the # catalog.json the docs site consumes). Fail if the committed snapshot # drifted from the live specs — keeps the API docs from going stale. - name: Verify generated action catalog is up to date run: node tools/check-action-catalog.mjs typecheck: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: pnpm/action-setup@v6 with: version: 11.25.0 run_install: false - uses: actions/setup-node@v6 with: node-version-file: '.node-version' cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile - name: Type check all packages run: pnpm typecheck build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: pnpm/action-setup@v6 with: version: 11.25.0 run_install: false - uses: actions/setup-node@v6 with: node-version-file: '.node-version' cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile - name: Build release inputs run: pnpm run build:all lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: pnpm/action-setup@v6 with: version: 11.25.0 run_install: false - uses: actions/setup-node@v6 with: node-version-file: '.node-version' cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile - name: Lint managed source files run: pnpm lint