name: CI
on:
  pull_request:
    branches:
      - main
      - next

jobs:
  detect_breaking_changes:
    runs-on: 'ubuntu-latest'
    name: detect-breaking-changes
    if: github.repository == 'openai/openai-python'
    steps:
      - name: Calculate fetch-depth
        run: |
          echo "FETCH_DEPTH=$(expr ${{ github.event.pull_request.commits }} + 1)" >> $GITHUB_ENV

      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          # Ensure we can check out the pull request base in the script below.
          fetch-depth: ${{ env.FETCH_DEPTH }}

      - name: Set up Rye
        uses: eifinger/setup-rye@c694239a43768373e87d0103d7f547027a23f3c8
        with:
          version: '0.44.0'
          enable-cache: true
      - name: Install dependencies
        run: |
          rye sync --all-features
      - name: Detect removed symbols
        run: |
          rye run python scripts/detect-breaking-changes.py "${{ github.event.pull_request.base.sha }}"

      - name: Detect breaking changes
        run: |
          test -f ./scripts/detect-breaking-changes || { echo "Missing scripts/detect-breaking-changes"; exit 1; }
          ./scripts/detect-breaking-changes ${{ github.event.pull_request.base.sha }}

  agents_sdk:
    runs-on: 'ubuntu-latest'
    name: Detect Agents SDK regressions
    if: github.repository == 'openai/openai-python'
    steps:
      # Setup this sdk
      - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
        with:
          path: openai-python

      - name: Set up Rye
        uses: eifinger/setup-rye@c694239a43768373e87d0103d7f547027a23f3c8
        with:
          version: '0.44.0'
          enable-cache: true
          working-directory: openai-python

      - name: Install dependencies
        working-directory: openai-python
        run: |
          rye sync --all-features

      # Setup the agents lib
      - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
        with:
          repository: openai/openai-agents-python
          path: openai-agents-python

      - name: Setup uv
        uses: astral-sh/setup-uv@e58605a9b6da7c637471fab8847a5e5a6b8df081 # v5
        with:
          enable-cache: true

      - name: Link to local SDK
        working-directory: openai-agents-python
        run: uv add ../openai-python

      - name: Install dependencies
        working-directory: openai-agents-python
        run: make sync

      - name: Run integration type checks
        working-directory: openai-agents-python
        run: make mypy
