path-cli 0.26.0

CLI for deriving, querying, and visualizing Toolpath provenance (binary: path)
Documentation
[package]
name = "path-cli"
version = "0.26.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"
serde_json_canonicalizer = { version = "0.3", optional = true }
hex = "0.4"
jaq-core = "3.1.0"
jaq-std = "3.0.1"
jaq-json = "2.0.1"
figment = { version = "0.10", features = ["env"] }
typed-path = { version = "0.12", optional = true }

[target.'cfg(not(target_os = "emscripten"))'.dependencies]
toolpath-claude = { workspace = true, features = ["watcher"] }
toolpath-gemini = { workspace = true, features = ["watcher"] }
toolpath-codex = { workspace = true }
toolpath-copilot = { workspace = true }
toolpath-opencode = { workspace = true }
toolpath-cursor = { 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 }
shlex = { workspace = true, optional = true }
russh = { workspace = true, optional = true }
url = { workspace = true, optional = true }
crossterm = { workspace = true, optional = true }
rusqlite = { workspace = true }
rayon = { workspace = true }
uuid = { workspace = true, features = ["v4"] }
toml = { 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-copilot = { 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"]
# Remote resume (scripts/resume-remote.sh): experimental, off by
# default. Gates `p export claude --content-addressed-session-id`,
# `--cwd`, `path resume --remote`, `--dry-run`, and the ssh transport
# module. Pulls in the in-process SSH client.
resume-remote = ["dep:serde_json_canonicalizer", "dep:shlex", "dep:russh", "dep:url", "dep:typed-path", "dep:crossterm"]

[dev-dependencies]
assert_cmd = "2"
predicates = "3"
insta = { workspace = true }
toolpath-convo = { workspace = true }
figment = { version = "0.10", features = ["env", "test"] }