chore(deps)(deps-dev): bump @types/node from 25.9.3 to 26.2.0 #157
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 ] | |
| tags: [ "v*.*.*" ] | |
| pull_request: | |
| # Avoid duplicate runs: use ref (not sha) so branch and tag runs don't cancel each other | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest] | |
| node: [20] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| fetch-depth: 0 | |
| - name: Configure Git | |
| shell: bash | |
| run: | | |
| git config --global core.autocrlf false | |
| git config --global core.eol lf | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: npm | |
| - name: Install deps | |
| run: npm ci | |
| # Security: Run npm audit to check for vulnerabilities | |
| # Policy: Only fail on critical vulnerabilities to avoid blocking development | |
| # for non-critical issues. All vulnerability levels are reported for awareness. | |
| - name: Security Audit | |
| run: | | |
| echo "::group::Full Vulnerability Report (informational)" | |
| npm audit --registry=https://registry.npmjs.org || true | |
| echo "::endgroup::" | |
| echo "Checking for critical vulnerabilities..." | |
| npm audit --audit-level=critical --registry=https://registry.npmjs.org | |
| - name: Normalize line endings | |
| shell: bash | |
| run: | | |
| # Clean submodules and main repo | |
| git submodule foreach --recursive 'git reset --hard HEAD && git clean -fd' | |
| git add --renormalize . | |
| git reset --hard HEAD | |
| - name: Lint | |
| run: npm run lint | |
| - name: Run Tests with Coverage | |
| run: npm run test:coverage | |
| - name: Upload coverage to Codecov | |
| if: matrix.os == 'ubuntu-latest' | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: ./coverage/coverage-final.json | |
| fail_ci_if_error: false | |
| verbose: true | |
| - name: Sync and Check Idempotency | |
| shell: bash | |
| run: | | |
| # 1. Run first sync | |
| npm run sync | |
| # 2. Check if templates are in sync | |
| if [ -n "$(git status --porcelain templates/opencode/command)" ]; then | |
| echo "❌ Error: Templates out of sync." | |
| git status --porcelain templates/opencode/command | |
| exit 1 | |
| fi | |
| # 3. Run second sync | |
| npm run sync | |
| # 4. Verify idempotency (ignoring untracked files and submodules) | |
| if [ -n "$(git status --porcelain -uno -- . ':!vendor/conductor')" ]; then | |
| echo "❌ Error: Sync is NOT idempotent." | |
| git status --porcelain -uno -- . ':!vendor/conductor' | |
| git diff | |
| exit 1 | |
| fi | |
| echo "✅ Sync is idempotent." | |
| - name: Verify Compatibility Matrix | |
| run: npm run verify:compat | |
| - name: Verify Documentation Consistency | |
| run: npm run verify:docs | |
| smoke-npx: | |
| runs-on: ubuntu-latest | |
| needs: test | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Test Local Node Installer | |
| shell: bash | |
| run: node bin/install.js | |
| - name: Verify install artifacts | |
| shell: bash | |
| run: test -d "$HOME/.opencode/conductor-bridge" || exit 1 |