path-cli 0.12.0

CLI for deriving, querying, and visualizing Toolpath provenance (binary: path)
Documentation
[package]
name = "path-cli"
version = "0.12.0"
edition.workspace = true
license.workspace = true
repository = "https://github.com/empathic/toolpath"
description = "CLI for deriving, querying, and visualizing Toolpath provenance (binary: path)"
keywords = ["provenance", "toolpath", "cli", "audit", "traceability"]
categories = ["command-line-utilities", "development-tools"]
default-run = "path"

[lib]
name = "path_cli"
path = "src/lib.rs"

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

[[bin]]
name = "gen_synthetic_path"
path = "src/bin/gen_synthetic_path.rs"

[dependencies]
toolpath = { workspace = true }
toolpath-git = { workspace = true }
toolpath-dot = { workspace = true }
toolpath-md = { workspace = true }
clap = { workspace = true }
anyhow = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
similar = { workspace = true }
chrono = { workspace = true }
tempfile = { workspace = true }
rand = "0.9"
jsonschema = { version = "0.46", default-features = false }
sha2 = "0.10"

[target.'cfg(not(target_os = "emscripten"))'.dependencies]
toolpath-claude = { workspace = true, features = ["watcher"] }
toolpath-gemini = { workspace = true, features = ["watcher"] }
toolpath-codex = { workspace = true }
toolpath-opencode = { workspace = true }
toolpath-pi = { workspace = true }
toolpath-convo = { workspace = true }
toolpath-github = { workspace = true }
pathbase-client = { workspace = true }
git2 = { workspace = true }
reqwest = { workspace = true }
tokio = { workspace = true }
rusqlite = { workspace = true }
uuid = { workspace = true }
# Embedded fuzzy picker — used when external `fzf` isn't on PATH.
# Disable default features to avoid pulling in skim's CLI deps
# (clap, clap_mangen, env_logger); keep `frizbee` for the matcher.
# Gated by the `embedded-picker` feature (enabled by default) so
# downstream packagers who want a smaller binary can opt out.
skim = { version = "4.7", default-features = false, features = ["frizbee"], optional = true }
# Skim's `delimiter: Regex` field has no string setter — we need the
# crate directly to build a tab regex. Skim already pulls `regex` in
# transitively, so this just makes it explicit.
regex = { version = "1", optional = true }

[target.'cfg(target_os = "emscripten")'.dependencies]
toolpath-claude = { workspace = true }
toolpath-gemini = { workspace = true }
toolpath-codex = { workspace = true }
toolpath-pi = { workspace = true }

[features]
default = ["embedded-picker"]
vendored-openssl = ["git2/vendored-openssl"]
# Ship a built-in fuzzy picker (skim) so `path share` / `path resume` /
# `path p import` work in interactive flows even when external `fzf`
# isn't on PATH. Adds ~2 MB to the release binary; turn off
# (`--no-default-features`) for the minimal build.
embedded-picker = ["dep:skim", "dep:regex"]

[dev-dependencies]
assert_cmd = "2"
predicates = "3"
insta = { workspace = true }
toolpath-convo = { workspace = true }