name: 'CI: Dist Telemetry Scan'

on:
  pull_request:
    branches-ignore: [wip/*, draft/*, temp/*]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

permissions:
  contents: read

jobs:
  changes:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    outputs:
      should-run: ${{ steps.changes.outputs.should-run }}
    steps:
      - uses: actions/checkout@v6
      - id: changes
        uses: ./.github/actions/changes-filter

  scan:
    needs: changes
    if: ${{ needs.changes.outputs.should-run == 'true' }}
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v6

      - name: Install pnpm
        uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0

      - name: Use Node.js
        uses: actions/setup-node@v6
        with:
          node-version-file: '.nvmrc'
          cache: 'pnpm'

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

      - name: Build project
        run: pnpm build
        env:
          DISTRIBUTION: localhost

      - name: Scan dist for GTM telemetry references
        run: |
          set -euo pipefail
          echo '🔍 Scanning for Google Tag Manager references...'
          if rg --no-ignore -n \
            -g '*.html' \
            -g '*.js' \
            -e 'Google Tag Manager' \
            -e '(?i)\bgtm\.js\b' \
            -e '(?i)googletagmanager\.com/gtm\.js\\?id=' \
            -e '(?i)googletagmanager\.com/ns\.html\\?id=' \
            dist; then
            echo '❌ ERROR: Google Tag Manager references found in dist assets!'
            echo 'GTM must be properly tree-shaken from OSS builds.'
            exit 1
          fi
          echo '✅ No GTM references found'

      - name: Scan dist for Mixpanel telemetry references
        run: |
          set -euo pipefail
          echo '🔍 Scanning for Mixpanel references...'
          if rg --no-ignore -n \
            -g '*.html' \
            -g '*.js' \
            -e '(?i)mixpanel\.init' \
            -e '(?i)mixpanel\.identify' \
            -e 'MixpanelTelemetryProvider' \
            -e 'mp\.comfy\.org' \
            -e 'mixpanel-browser' \
            -e '(?i)mixpanel\.track\(' \
            dist; then
            echo '❌ ERROR: Mixpanel references found in dist assets!'
            echo 'Mixpanel must be properly tree-shaken from OSS builds.'
            echo ''
            echo 'To fix this:'
            echo '1. Use the TelemetryProvider pattern (see src/platform/telemetry/)'
            echo '2. Call telemetry via useTelemetry() hook'
            echo '3. Use conditional dynamic imports behind isCloud checks'
            exit 1
          fi
          echo '✅ No Mixpanel references found'

      - name: Scan dist for PostHog telemetry references
        run: |
          set -euo pipefail
          echo '🔍 Scanning for PostHog references...'
          if rg --no-ignore -n \
            -g '*.html' \
            -g '*.js' \
            -e '(?i)posthog\.init' \
            -e '(?i)posthog\.capture' \
            -e 'PostHogTelemetryProvider' \
            -e 'ph\.comfy\.org' \
            -e 'posthog-js' \
            dist; then
            echo '❌ ERROR: PostHog references found in dist assets!'
            echo 'PostHog must be properly tree-shaken from OSS builds.'
            exit 1
          fi
          echo '✅ No PostHog references found'
