agcli 0.6.0

A tiny, no-bloat foundation crate for building agentic CLIs in Rust.
Documentation
# Release a new version. Usage: just release <patch|minor|major>
release bump:
    #!/usr/bin/env bash
    set -euo pipefail

    BUMP="{{bump}}"
    case "$BUMP" in patch|minor|major) ;; *) echo "Usage: just release <patch|minor|major>" >&2; exit 1 ;; esac

    # Must be on master with clean tree
    [ "$(git branch --show-current)" = "master" ] || { echo "Error: not on master" >&2; exit 1; }
    git diff --quiet && git diff --cached --quiet || { echo "Error: dirty working tree" >&2; exit 1; }

    # Read current version, compute new
    CURRENT=$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -1)
    IFS='.' read -r MAJ MIN PAT <<< "$CURRENT"
    case "$BUMP" in
      patch) PAT=$((PAT + 1)) ;;
      minor) MIN=$((MIN + 1)); PAT=0 ;;
      major) MAJ=$((MAJ + 1)); MIN=0; PAT=0 ;;
    esac
    NEW="${MAJ}.${MIN}.${PAT}"

    echo "$CURRENT → $NEW"
    read -rp "Release v${NEW}? [y/N] " CONFIRM
    [[ "$CONFIRM" =~ ^[yY] ]] || { echo "Aborted."; exit 0; }

    # Bump version
    sed -i '' "s/^version = \"${CURRENT}\"/version = \"${NEW}\"/" Cargo.toml
    cargo check --quiet 2>/dev/null || cargo generate-lockfile

    # Update changelog
    git cliff --tag "v${NEW}" --output CHANGELOG.md

    # Commit and tag
    git add Cargo.toml Cargo.lock CHANGELOG.md
    git commit -m "chore(release): prepare for v${NEW}"
    git tag -a "v${NEW}" -m "Release v${NEW}"

    echo ""
    echo "Ready. Push with:"
    echo "  git push origin master && git push origin v${NEW}"

# Generate changelog without releasing
changelog:
    git cliff --output CHANGELOG.md

# Dry-run publish check
publish-check:
    cargo publish --dry-run