hey 0.1.0

Minimal terminal AI coding agent: kernel loop + MCP/Skills self-evolution
Documentation
name: CI

on:
  push:
    branches: [master, main]
  pull_request:

env:
  CARGO_TERM_COLOR: always

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy

      - name: Format check
        run: cargo fmt -- --check

      - name: Doc check (intra-doc links)
        run: RUSTDOCFLAGS="-D warnings" cargo doc --no-deps

      - name: Cache cargo registry & target
        uses: Swatinem/rust-cache@v2

      # 项目零系统依赖(rustls),测试全部自持(MockServer 本地回环 +
      # --sessions-dir / DIR_OVERRIDE 临时目录隔离),无需额外环境准备。
      - name: Clippy (strict)
        run: cargo clippy --all-targets -- -D warnings

      - name: Test (unit + integration + proptest)
        run: cargo test --all-targets --locked

      - name: License & security audit (cargo-deny)
        uses: embano1/cargo-deny-action@v1

      - name: Build release
        run: cargo build --release --locked

      - name: Dependency vulnerability audit (RustSec)
        uses: actions-rust-lang/audit@v1

  # rust-version 声明一致性守卫:MSRV(1.88)上至少能编译全部 target。
  # 依赖升级或新语法若突破 MSRV,此 job 立即报红。
  msrv:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Rust 1.88 (MSRV)
        uses: dtolnay/rust-toolchain@1.88.0

      - name: Cache cargo registry & target
        uses: Swatinem/rust-cache@v2

      - name: Check with MSRV
        run: cargo check --all-targets --locked

  # 跨平台编译守卫:Windows + macOS 至少能编译全部 target 并跑通测试。
  # 背景:Cargo.toml 依赖段曾被 [target.'cfg(unix)'.dependencies] 意外吞并,
  # 导致 Windows 依赖树为空、从未编译通过——此 job 保证不会再漏。
  cross-platform:
    strategy:
      fail-fast: false
      matrix:
        os: [windows-latest, macos-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable

      - name: Cache cargo registry & target
        uses: Swatinem/rust-cache@v2

      - name: Check (all targets)
        run: cargo check --all-targets --locked

      - name: Test
        run: cargo test --locked
  # 性能回归守卫:低频跑基准(bench 二进制直接运行,绕过 cargo bench 的 package
  # cache 文件锁争用——见 scripts/bench.sh)。仅校验能跑通、不对比数值(数值对比
  # 由开发者本地 /tmp/bench-baseline.log 追踪)。
  bench:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable

      - name: Cache cargo registry & target
        uses: Swatinem/rust-cache@v2

      - name: Build bench binaries
        run: cargo build --benches --locked

      - name: Run benchmarks (quick)
        run: ./scripts/bench.sh --quick