name: Main on: push: branches: - main pull_request: types: [opened, synchronize, reopened, ready_for_review] jobs: # todo needs check-ts and test-ts too! checks: runs-on: ubuntu-latest steps: - name: Check out uses: actions/checkout@v4 - uses: actions/cache@v3 with: path: ~/.cache/pre-commit key: pre-commit-${{ hashFiles('.pre-commit-config.yaml') }} - uses: actions/setup-node@v4 with: node-version: 22 - name: Install Claude Code CLI run: npm install -g @anthropic-ai/claude-code - name: Install uv uses: astral-sh/setup-uv@v4 with: enable-cache: true cache-dependency-glob: "uv.lock" - name: "Set up Python" uses: actions/setup-python@v5 with: python-version-file: "pyproject.toml" - name: Install the project run: uv sync --all-extras --dev - name: Install bun uses: oven-sh/setup-bun@v2 with: bun-version: latest - name: Install ts deps run: npm -C humanlayer-ts install && npm -C hlyr install && npm -C humanlayer-ts-vercel-ai-sdk install - name: Install wui deps run: bun install --cwd=humanlayer-wui - uses: actions/setup-go@v5 with: go-version: stable # TODO: Update this, let's just pull the binary? - name: Install golangci-lint run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest - name: Install mockgen run: go install go.uber.org/mock/mockgen@latest - name: Install Rust uses: dtolnay/rust-toolchain@1.83.0 with: components: rustfmt,clippy - name: Cache and install Tauri system dependencies if: runner.os == 'Linux' uses: awalsh128/cache-apt-pkgs-action@latest with: packages: libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev version: 1.0 - name: Build CLI run: npm -C hlyr run build - name: Generate Go mocks run: make -C hld mocks - name: Run checks run: make check tests: runs-on: ubuntu-latest strategy: matrix: python-version: ["3.11"] fail-fast: false steps: - name: Check out uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: "npm" cache-dependency-path: humanlayer-ts/package-lock.json - name: Install Claude Code CLI run: npm install -g @anthropic-ai/claude-code - name: Install uv uses: astral-sh/setup-uv@v4 with: enable-cache: true cache-dependency-glob: "uv.lock" - name: Set up Python ${{ matrix.python-version }} run: uv python install ${{ matrix.python-version }} - name: Install ts deps run: npm -C humanlayer-ts install && npm -C hlyr install && npm -C humanlayer-ts-vercel-ai-sdk install - uses: actions/setup-go@v5 with: go-version: stable - name: Install mockgen run: go install go.uber.org/mock/mockgen@latest - name: Install Rust uses: dtolnay/rust-toolchain@stable - name: Cache and install Tauri system dependencies if: runner.os == 'Linux' uses: awalsh128/cache-apt-pkgs-action@latest with: packages: libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev version: 1.0 - name: Build CLI run: npm -C hlyr run build - name: Generate Go mocks run: make -C hld mocks - name: Install bun uses: oven-sh/setup-bun@v2 with: bun-version: latest - name: Install wui deps run: bun install --cwd=humanlayer-wui - name: Test run: make test - name: Upload Test Results if: always() uses: actions/upload-artifact@v4 with: name: pytest-results-${{ matrix.python-version }} path: | junit.xml coverage.xml