name: Codex Runtime Smoke

on:
  workflow_dispatch:
  pull_request:
    paths:
      - '.github/workflows/codex-runtime-smoke.yml'
      - 'package.json'
      - 'pnpm-lock.yaml'
      - 'pnpm-workspace.yaml'
      - 'scripts/smoke/codex-runtime-install.ts'
      - 'src/features/codex-runtime-installer/**'
      - 'src/main/services/infrastructure/codexAppServer/**'
      - 'src/main/services/runtime/providerAwareCliEnv.ts'
      - 'src/main/utils/childProcess.ts'
      - 'src/main/utils/pathDecoder.ts'
      - 'tsconfig*.json'
  push:
    branches: [main, dev]
    paths:
      - '.github/workflows/codex-runtime-smoke.yml'
      - 'package.json'
      - 'pnpm-lock.yaml'
      - 'pnpm-workspace.yaml'
      - 'scripts/smoke/codex-runtime-install.ts'
      - 'src/features/codex-runtime-installer/**'
      - 'src/main/services/infrastructure/codexAppServer/**'
      - 'src/main/services/runtime/providerAwareCliEnv.ts'
      - 'src/main/utils/childProcess.ts'
      - 'src/main/utils/pathDecoder.ts'
      - 'tsconfig*.json'

jobs:
  install:
    name: Install Codex runtime (${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    timeout-minutes: 20

    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]

    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Enable Windows long paths
        if: runner.os == 'Windows'
        shell: pwsh
        run: git config --global core.longpaths true

      - name: Setup pnpm
        uses: pnpm/action-setup@v6
        with:
          version: 10.33.0

      - name: Setup Node.js
        uses: actions/setup-node@v6
        with:
          node-version: 22
          cache: pnpm

      - name: Install dependencies
        run: pnpm install --frozen-lockfile --ignore-scripts

      - name: Smoke Codex app-managed runtime install
        run: pnpm smoke:codex-runtime-install
