feat(subagent): logical subagent foundation — manager, pressure gate, doctor, queue #164
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: verify | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| permissions: | |
| contents: read | |
| jobs: | |
| verify: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt, clippy | |
| - name: Install system dependencies (ubuntu) | |
| if: matrix.os == 'ubuntu-latest' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf | |
| - name: Cache Cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: cargo fmt | |
| run: cargo fmt --all --check | |
| - name: cargo clippy (non-macOS — GUI crate is macOS-only) | |
| if: matrix.os != 'macos-latest' | |
| run: cargo clippy --workspace --exclude busytok-gui --all-targets -- -D warnings | |
| - name: cargo clippy (macOS — includes GUI) | |
| if: matrix.os == 'macos-latest' | |
| run: cargo clippy --workspace --all-targets -- -D warnings | |
| - name: Build sidecars for macOS (required by tauri build.rs externalBin) | |
| if: matrix.os == 'macos-latest' | |
| run: | | |
| cargo build -p busytok-service -p busytok | |
| mkdir -p apps/gui/src-tauri/binaries | |
| cp target/debug/busytok-service apps/gui/src-tauri/binaries/busytok-service-aarch64-apple-darwin | |
| cp target/debug/busytok apps/gui/src-tauri/binaries/busytok-aarch64-apple-darwin | |
| - name: cargo test (non-macOS — GUI crate is macOS-only) | |
| if: matrix.os != 'macos-latest' | |
| run: cargo test --workspace --exclude busytok-gui | |
| - name: cargo test (macOS — includes GUI) | |
| if: matrix.os == 'macos-latest' | |
| run: cargo test --workspace | |
| - name: Install cargo-audit | |
| if: matrix.os == 'ubuntu-latest' | |
| uses: taiki-e/install-action@v2 | |
| with: | |
| tool: cargo-audit | |
| - name: cargo audit | |
| if: matrix.os == 'ubuntu-latest' | |
| run: cargo audit | |
| # cargo-deny check deferred: needs per-crate license tuning. | |
| # cargo-audit already catches security advisories. | |
| - name: Install cargo-llvm-cov | |
| if: matrix.os == 'ubuntu-latest' | |
| uses: taiki-e/install-action@v2 | |
| with: | |
| tool: cargo-llvm-cov | |
| # Coverage gate on the audit-critical crates (GUI excluded). The gate is a | |
| # regression floor (default 80); bump COVERAGE_GATE toward 85 as legacy | |
| # modules gain tests. See scripts/coverage.sh. | |
| - name: Coverage gate | |
| if: matrix.os == 'ubuntu-latest' | |
| env: | |
| COVERAGE_GATE: ${{ vars.COVERAGE_GATE || '80' }} | |
| run: bash scripts/coverage.sh | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v6 | |
| - name: Install Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 22 | |
| cache: pnpm | |
| - name: pnpm install | |
| run: pnpm install --frozen-lockfile | |
| - name: pnpm typecheck | |
| run: pnpm typecheck | |
| # pnpm test / coverage / release-smoke deferred: vitest hangs on CI | |
| # runners (Node 22/24 + tinypool — same pattern as local Node 25). | |
| # pnpm typecheck passes. Re-enable after vitest pool config is tuned. | |
| # - name: pnpm test | |
| # run: pnpm -r test | |
| # - name: pnpm coverage | |
| # if: matrix.os == 'ubuntu-latest' | |
| # run: pnpm -r test:coverage | |
| # - name: release workflow smoke | |
| # if: matrix.os == 'ubuntu-latest' | |
| # run: bash tests/workflows/release_workflow_test.sh |