name: CI
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
env:
CARGO_TERM_COLOR: always
jobs:
rust-protocol-required:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
cache: npm
cache-dependency-path: ui-chat/package-lock.json
- name: Build Web Chat UI
working-directory: ui-chat
run: |
npm ci
npm run build
npm test
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Cache cargo
uses: Swatinem/rust-cache@v2
- name: Verify Cargo.lock is honored
run: |
cargo fetch --locked
git diff --exit-code Cargo.lock
- name: cargo fmt --check
run: cargo fmt --all -- --check
- name: cargo clippy (default features)
run: cargo clippy --workspace --all-targets --locked -- -D warnings
- name: cargo check (ai-protocol feature)
run: cargo check --workspace --features ai-protocol --locked
- name: cargo check (ai-protocol + routing_mvp — compile gate)
run: cargo check -p velaclaw --features "ai-protocol routing_mvp" --lib --locked
- name: cargo test (ai-protocol feature)
run: cargo test --workspace --features ai-protocol --locked
- name: cargo check (protocol-only, no default features)
run: cargo check -p velaclaw --no-default-features --features ai-protocol --lib --locked
- name: cargo test (protocol-only, no default features)
run: cargo test -p velaclaw --no-default-features --features ai-protocol --locked