feat: auto-discover MCP servers from external AI tool configs #822
Workflow file for this run
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: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # --------------------------------------------------------------------------- | |
| # Detect which areas of the codebase changed to skip unaffected jobs. | |
| # On push to main, all jobs run unconditionally (safety net). | |
| # --------------------------------------------------------------------------- | |
| changes: | |
| name: Detect Changes | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 2 | |
| outputs: | |
| typescript: ${{ steps.filter.outputs.typescript }} | |
| python: ${{ steps.filter.outputs.python }} | |
| lint: ${{ steps.filter.outputs.lint }} | |
| steps: | |
| - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3 | |
| id: filter | |
| with: | |
| filters: | | |
| typescript: | |
| - 'packages/opencode/**' | |
| - 'packages/plugin/**' | |
| - 'packages/sdk/**' | |
| - 'packages/util/**' | |
| - 'packages/script/**' | |
| - 'bun.lock' | |
| - 'package.json' | |
| - 'tsconfig.json' | |
| python: | |
| - 'packages/altimate-engine/**' | |
| lint: | |
| - 'packages/altimate-engine/src/**' | |
| typescript: | |
| name: TypeScript | |
| needs: changes | |
| if: needs.changes.outputs.typescript == 'true' || github.event_name == 'push' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - uses: oven-sh/setup-bun@ecf28ddc73e819eb6fa29df6b34ef8921c743461 # v2 | |
| with: | |
| bun-version: "1.3.10" | |
| - name: Cache Bun dependencies | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: bun-${{ runner.os }}-${{ hashFiles('bun.lock') }} | |
| restore-keys: | | |
| bun-${{ runner.os }}- | |
| - name: Configure git for tests | |
| run: | | |
| git config --global user.name "CI" | |
| git config --global user.email "ci@test.local" | |
| - name: Install dependencies | |
| run: bun install | |
| - name: Run tests | |
| run: bun test | |
| working-directory: packages/opencode | |
| marker-guard: | |
| name: Marker Guard | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'pull_request' | |
| timeout-minutes: 5 | |
| steps: | |
| - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| with: | |
| fetch-depth: 0 | |
| - uses: oven-sh/setup-bun@ecf28ddc73e819eb6fa29df6b34ef8921c743461 # v2 | |
| with: | |
| bun-version: "1.3.10" | |
| - name: Add upstream remote | |
| run: | | |
| git remote add upstream https://github.com/anomalyco/opencode.git || true | |
| git fetch upstream --quiet --no-tags | |
| - name: Install merge tooling deps | |
| run: bun install | |
| working-directory: script/upstream | |
| - name: Check for missing altimate_change markers | |
| run: | | |
| # Skip strict marker enforcement for upstream merge PRs — all changes come from upstream | |
| if [[ "${{ github.head_ref }}" == merge-upstream-* ]] || [[ "${{ github.head_ref }}" == upstream/merge-* ]]; then | |
| echo "Upstream merge PR detected — running marker check in non-strict mode" | |
| bun run script/upstream/analyze.ts --markers --base ${{ github.event.pull_request.base.ref }} | |
| else | |
| bun run script/upstream/analyze.ts --markers --base ${{ github.event.pull_request.base.ref }} --strict | |
| fi | |
| lint: | |
| name: Lint | |
| needs: changes | |
| if: needs.changes.outputs.lint == 'true' || github.event_name == 'push' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install linter | |
| run: pip install ruff==0.9.10 | |
| - name: Lint | |
| run: ruff check src | |
| working-directory: packages/altimate-engine | |
| python: | |
| name: Python ${{ matrix.python-version }} | |
| needs: changes | |
| if: needs.changes.outputs.python == 'true' || github.event_name == 'push' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| strategy: | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12"] | |
| steps: | |
| - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: 'pip' | |
| cache-dependency-path: packages/altimate-engine/pyproject.toml | |
| - name: Install dependencies | |
| run: pip install -e ".[dev,warehouses]" | |
| working-directory: packages/altimate-engine | |
| - name: Run tests | |
| run: pytest | |
| working-directory: packages/altimate-engine |