mind-cli 0.48.0

A manager for agent tooling (skills, agents, rules, tools) that melds arbitrary git repos and links items into your agent directories.
[package]
name = "mind-cli"
# Between releases `main` carries a `-dev` pre-release suffix, so a binary built
# from `main` is distinguishable from the released one (`mind --version`, bug
# reports, `evolve --check`). The release bump drops the suffix, and
# .github/workflows/release.yml releases a merged version without one.
version = "0.48.0"
edition = "2024"
rust-version = "1.98"
license = "MIT"
description = "A manager for agent tooling (skills, agents, rules, tools) that melds arbitrary git repos and links items into your agent directories."
repository = "https://github.com/jaemk/mind"
homepage = "https://jaemk.github.io/mind/"
documentation = "https://jaemk.github.io/mind/"
readme = "README.md"
keywords = ["agent", "ai", "cli", "automation", "tooling"]
categories = ["command-line-utilities", "development-tools"]
exclude = [".github", "docs/", ".claude", "rust-toolchain.toml"]

[[bin]]
name = "mind"
path = "src/main.rs"

[dependencies]
clap = { version = "4", features = ["derive"] }
clap_complete = "4"
clap_mangen = "0.3"
serde = { version = "1", features = ["derive"] }
# `preserve_order` so `config auto-update` (AUP-20) rewrites a harness's
# `settings.json` with its keys where the user put them.
serde_json = { version = "1", features = ["preserve_order"] }
toml = "1"
glob = "0.3"
thiserror = "2"
dirs = "7"
fd-lock = "4"
ratatui = "0.30"
crossterm = "0.29"
libc = "0.2"
strip-ansi-escapes = "0.2"
pulldown-cmark = { version = "0.13", default-features = false }
unicode-width = "0.2"
# Version pins (VER-20): comparator ranges (`<2.0`, `>=1.2, <2`, `~1.2`) match
# with cargo's own `VersionReq` rules. Already in the tree via `self_update`.
semver = "1"
# Stores only, no features. `proc_macro` would pull a proc-macro crate plus
# darling and a second TOML parser into the build, and nothing here uses the
# `#[cached]` attribute: `tui::data` drives `LruCache` directly. `time_stores`
# is what would supply a TTL store, which TUI-72 notes the memo does not have.
cached = { version = "4", default-features = false }
# `evolve`'s downloader/extractor/installer. ureq rather than the default reqwest:
# nothing here is async, so reqwest would drag tokio into a synchronous CLI. rustls
# keeps the static musl release builds free of a system OpenSSL. `github` is the only
# backend mind reads, and `checksums` is what `checksum_from_asset("SHA256SUMS")` needs.
#
# This roughly doubles the release binary, 6.2M -> 12.3M, almost all of it the TLS
# stack and the archive/compression codecs that used to be the system's curl and tar.
# The trade is deliberate: `evolve` no longer needs a downloader on PATH, and a musl
# build no longer depends on the host's OpenSSL cert layout.
#
# `native-certs` is not optional here (STO-78): without it the ureq client trusts only
# Mozilla's bundled roots and ignores the machine's certificate store, so `evolve` fails
# on every network whose proxy re-signs HTTPS with a company CA. curl read the system
# store, so this is parity with the pre-0.26.0 downloader, not new behavior.
#
# 1.2 is the floor: `native-certs` (STO-78) landed there, `verify_archive` and
# `checksum_from_asset` (STO-66, STO-47) in 1.1.
self_update = { version = "1.2", default-features = false, features = [
    "ureq",
    "rustls",
    "native-certs",
    "github",
    "progress-bar",
    "archive-tar",
    "compression-tar-gz",
    "checksums",
] }