Skip to content

feat(agent): show waiting status in conversation pane #241

feat(agent): show waiting status in conversation pane

feat(agent): show waiting status in conversation pane #241

Workflow file for this run

name: CI
on:
push:
branches: [main, master, develop]
pull_request:
branches: [main, master, develop]
workflow_dispatch:
permissions:
contents: read
security-events: write
actions: read
issues: write # Sometimes needed
pull-requests: write # Sometimes needed
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
workflow-lint:
name: Workflow lint
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Validate GitHub Actions workflows
uses: raven-actions/actionlint@3d39aea434753780c3b3d4a1a31c854b4dbf49d7 # v2.2.0
with:
version: 1.7.12
test:
name: Test Suite
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
rust: [stable, nightly]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
components: rustfmt, clippy
- name: Install ripgrep (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install --yes ripgrep
- name: Install ripgrep (macOS)
if: runner.os == 'macOS'
run: brew install ripgrep
- name: Install ripgrep (Windows)
if: runner.os == 'Windows'
run: choco install ripgrep --yes --no-progress
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo index
uses: actions/cache@v4
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-git-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}-cargo-build-${{ matrix.rust }}-${{ hashFiles('**/Cargo.lock') }}
- name: Limit Windows test concurrency
if: runner.os == 'Windows'
shell: bash
run: echo "RUST_TEST_THREADS=1" >> "$GITHUB_ENV"
- name: Run tests
run: cargo test --all-targets --all-features --verbose
- name: Run tests (no default features)
run: cargo test --all-targets --no-default-features --verbose
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Cache Rust build artifacts
uses: Swatinem/rust-cache@v2
- name: Deny every Clippy warning
run: cargo clippy --all-targets --all-features -- -D warnings
perf:
name: Deterministic performance gate
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache Rust build artifacts
uses: Swatinem/rust-cache@v2
- name: Check bundled Husk callback budget
run: cargo run --locked --release --example husk_cursor_bench -- --assert
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Check formatting
run: cargo fmt --all -- --check
self-check:
name: Bundled Runtime Self-Check
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo index
uses: actions/cache@v4
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-git-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}-cargo-build-self-check-${{ hashFiles('**/Cargo.lock') }}
- name: Initialize bundled runtime
run: cargo run --locked -- --self-check
changelog:
name: Changelog
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Validate git-cliff configuration
uses: orhun/git-cliff-action@f50e11560dce63f7c33227798f90b924471a88b5
with:
version: v2.13.1
config: cliff.toml
args: --unreleased
env:
OUTPUT: changelog-preview.md
- name: Read release PR version
if: startsWith(github.head_ref, 'release/v')
id: release
shell: bash
env:
HEAD_REF: ${{ github.head_ref }}
run: echo "version=${HEAD_REF#release/v}" >> "$GITHUB_OUTPUT"
- name: Regenerate release PR changelog
if: startsWith(github.head_ref, 'release/v')
uses: orhun/git-cliff-action@f50e11560dce63f7c33227798f90b924471a88b5
with:
version: v2.13.1
config: cliff.toml
args: --unreleased --tag v${{ steps.release.outputs.version }} --strip all
env:
OUTPUT: generated-release-changes.md
- name: Verify release PR changelog
if: startsWith(github.head_ref, 'release/v')
shell: bash
env:
VERSION: ${{ steps.release.outputs.version }}
run: |
set -euo pipefail
awk -v heading="## [$VERSION]" '
index($0, heading) == 1 { found = 1 }
found && /^## \[/ && index($0, heading) != 1 { exit }
found { print }
' CHANGELOG.md > committed-release-changes.md
test -s committed-release-changes.md
normalize_markdown() {
awk '
NF {
if (pending_blank && wrote) print ""
print
wrote = 1
pending_blank = 0
next
}
wrote { pending_blank = 1 }
' "$1"
}
normalize_markdown committed-release-changes.md > normalized-committed-release-changes.md
normalize_markdown generated-release-changes.md > normalized-generated-release-changes.md
diff -u normalized-committed-release-changes.md normalized-generated-release-changes.md
build:
name: Build
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
- os: macos-latest
target: x86_64-apple-darwin
- os: windows-latest
target: x86_64-pc-windows-msvc
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo index
uses: actions/cache@v4
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-git-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}-cargo-build-release-${{ hashFiles('**/Cargo.lock') }}
- name: Build release binary
run: cargo build --release --target ${{ matrix.target }}
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: red-${{ matrix.target }}
path: |
target/${{ matrix.target }}/release/red
target/${{ matrix.target }}/release/red.exe
docs:
name: Documentation
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Build documentation
run: cargo doc --no-deps --all-features --document-private-items
- name: Check documentation links
run: |
python3 scripts/check_markdown_links.py --self-test
python3 scripts/check_markdown_links.py
security-audit:
name: Security Audit
runs-on: ubuntu-latest
permissions:
contents: read
checks: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run security audit
uses: rustsec/audit-check@v2.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}