refactor(ui): replace hand-picked z-index values with one named scale and lint it #15389
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: Check UI API Types Sync | |
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| - litellm_internal_staging | |
| - litellm_oss_staging | |
| - "litellm_**" | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| check-sync: | |
| name: Verify schema.d.ts matches the proxy OpenAPI spec | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 | |
| with: | |
| persist-credentials: false | |
| fetch-depth: 2 | |
| - name: Detect changes that can affect the generated types | |
| id: changes | |
| run: | | |
| set -euo pipefail | |
| if ! base="$(git rev-parse --verify --quiet HEAD^2 >/dev/null && git rev-parse HEAD^1)"; then | |
| echo "Not a pull request merge commit, running the full check." | |
| echo "relevant=true" >> "$GITHUB_OUTPUT" | |
| exit 0 | |
| fi | |
| files="$(git diff --name-only "$base" HEAD)" | |
| if grep -Eq '^(litellm/(proxy|types)/|ui/litellm-dashboard/(src/lib/http/schema\.d\.ts|scripts/gen-api-types\.mjs|package(-lock)?\.json)$|\.github/workflows/check-ui-api-types\.yml$)' <<< "$files"; then | |
| echo "relevant=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "No proxy, types or generator changes in this pull request, nothing to verify." | |
| echo "relevant=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Set up Python | |
| if: steps.changes.outputs.relevant == 'true' | |
| uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 | |
| with: | |
| python-version: "3.12" | |
| - name: Set up uv | |
| if: steps.changes.outputs.relevant == 'true' | |
| uses: ./.github/actions/setup-uv-with-retries | |
| with: | |
| version: "0.10.9" | |
| - name: Cache uv dependencies | |
| if: steps.changes.outputs.relevant == 'true' | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 | |
| with: | |
| path: | | |
| ~/.cache/uv | |
| .venv | |
| key: ${{ runner.os }}-uv-${{ hashFiles('uv.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-uv- | |
| - name: Cache the Rust build | |
| if: steps.changes.outputs.relevant == 'true' | |
| uses: ./.github/actions/cache-cargo-build | |
| - name: Install backend dependencies | |
| if: steps.changes.outputs.relevant == 'true' | |
| run: .github/scripts/uv_sync_with_retries.sh --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router | |
| - name: Cache Prisma binaries | |
| if: steps.changes.outputs.relevant == 'true' | |
| uses: ./.github/actions/cache-prisma-binaries | |
| - name: Generate Prisma client | |
| if: steps.changes.outputs.relevant == 'true' | |
| run: uv run --no-sync prisma generate --schema litellm/proxy/schema.prisma | |
| - name: Set up Node.js | |
| if: steps.changes.outputs.relevant == 'true' | |
| uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 | |
| with: | |
| node-version-file: ui/litellm-dashboard/.nvmrc | |
| cache: "npm" | |
| cache-dependency-path: ui/litellm-dashboard/package-lock.json | |
| - name: Install dashboard dependencies | |
| if: steps.changes.outputs.relevant == 'true' | |
| working-directory: ui/litellm-dashboard | |
| run: npm ci | |
| - name: Regenerate types from the live spec | |
| if: steps.changes.outputs.relevant == 'true' | |
| working-directory: ui/litellm-dashboard | |
| env: | |
| LITELLM_PYTHON: "uv run --no-sync python" | |
| run: npm run gen:api | |
| - name: Fail if types are stale | |
| if: steps.changes.outputs.relevant == 'true' | |
| run: | | |
| if ! git diff --exit-code -- ui/litellm-dashboard/src/lib/http/schema.d.ts; then | |
| echo "::error file=ui/litellm-dashboard/src/lib/http/schema.d.ts::Generated API types are out of sync with the proxy OpenAPI spec." | |
| echo "" | |
| echo "A backend route or model changed without regenerating the dashboard types." | |
| echo "To fix, run from ui/litellm-dashboard:" | |
| echo " npm run gen:api" | |
| echo "then commit the updated src/lib/http/schema.d.ts." | |
| exit 1 | |
| fi | |
| echo "schema.d.ts is in sync with the proxy OpenAPI spec." |