Skip to content

Merge pull request #2619 from ag-ui-protocol/claude/epic-goldwasser-4… #506

Merge pull request #2619 from ag-ui-protocol/claude/epic-goldwasser-4…

Merge pull request #2619 from ag-ui-protocol/claude/epic-goldwasser-4… #506

name: typecheck
# Runs the repository-root `pnpm run check-types` (PNI-302). The wrapper script
# fails when zero projects expose a `typecheck` target and prints the
# selected-project count, so a misspelled or missing target can never produce a
# green job. Workspace packages resolve types from each other's dist/
# declarations, so the Nx `typecheck` target depends on `^build` and `generate`
# (see nx.json) — the job needs no cache or pre-existing build output.
on:
push:
branches: [main]
paths:
- "sdks/**"
- "integrations/**"
- "middlewares/**"
- "scripts/check-types.mjs"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"
- "package.json"
- "nx.json"
- ".node-version"
- ".github/workflows/typecheck-typescript.yml"
pull_request:
branches: [main]
paths:
- "sdks/**"
- "integrations/**"
- "middlewares/**"
- "scripts/check-types.mjs"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"
- "package.json"
- "nx.json"
- ".node-version"
- ".github/workflows/typecheck-typescript.yml"
concurrency:
group: ${{ github.repository }}-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
typecheck:
name: typecheck
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Detect fork PR
id: fork-check
run: |
if [[ "$GITHUB_EVENT_NAME" == "pull_request" && \
"$PR_HEAD_REPO" != "$GITHUB_REPOSITORY" ]]; then
echo "prefix=fork-" >> "$GITHUB_OUTPUT"
else
echo "prefix=" >> "$GITHUB_OUTPUT"
fi
env:
# Passed via env rather than interpolated into the script: a fork's repo
# name is attacker-controlled text. GITHUB_EVENT_NAME and
# GITHUB_REPOSITORY are Actions built-ins, so nothing is expanded here.
PR_HEAD_REPO: ${{ github.event.pull_request.head.repo.full_name }}
- name: Set up Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: ".node-version"
- name: Install pnpm
uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10
with:
version: 10.33.4
- name: Setup pnpm cache
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ~/.local/share/pnpm/store
key: ${{ steps.fork-check.outputs.prefix }}${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ steps.fork-check.outputs.prefix }}${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run typecheck
run: pnpm run check-types