zeph 0.21.0

Lightweight AI agent with hybrid inference, skills-first architecture, and multi-channel I/O
name: CI (non-Linux)

on:
  workflow_dispatch:
    inputs:
      ref:
        description: "Branch, tag, or commit SHA to test"
        required: false
        default: ""

permissions:
  contents: read

env:
  CARGO_TERM_COLOR: always
  RUSTFLAGS: "-D warnings"

jobs:
  build-tests:
    name: Build Tests (${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    timeout-minutes: 45
    strategy:
      fail-fast: false
      matrix:
        os: [macos-latest, windows-latest]
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          ref: ${{ inputs.ref || github.ref }}
      - uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
        with:
          toolchain: stable
      - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
        with:
          cache-targets: "false"
      - uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
      - uses: taiki-e/install-action@bec8f6c5a5fcbe8ac050aec15ee134d388c83f10 # nextest
      - name: Build and archive tests
        run: cargo nextest archive --config-file .github/nextest.toml --workspace --features full --lib --bins --archive-file nextest-archive.tar.zst
        env:
          RUSTC_WRAPPER: sccache
          SCCACHE_GHA_ENABLED: "true"
      - name: Upload test archive
        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
        with:
          name: nextest-archive-${{ matrix.os }}
          path: nextest-archive.tar.zst
          retention-days: 1

  test:
    name: "Test (${{ matrix.os }}, shard ${{ matrix.partition }})"
    needs: [build-tests]
    runs-on: ${{ matrix.os }}
    timeout-minutes: 10
    strategy:
      fail-fast: false
      matrix:
        os: [macos-latest, windows-latest]
        partition: ["1/5", "2/5", "3/5", "4/5", "5/5"]
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          ref: ${{ inputs.ref || github.ref }}
      - uses: taiki-e/install-action@bec8f6c5a5fcbe8ac050aec15ee134d388c83f10 # nextest
      - name: Download test archive
        uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
        with:
          name: nextest-archive-${{ matrix.os }}
      - name: "Run tests (shard ${{ matrix.partition }})"
        run: cargo nextest run --config-file .github/nextest.toml --archive-file nextest-archive.tar.zst --workspace-remap . --profile ci-partition --partition "hash:${{ matrix.partition }}"