wavekat-cli 0.0.21

Command-line client for the WaveKat platform (wk)
[package]
name = "wavekat-cli"
version = "0.0.21"
edition = "2021"
license = "Apache-2.0"
description = "Command-line client for the WaveKat platform (wk)"
repository = "https://github.com/wavekat/wavekat-cli"
homepage = "https://github.com/wavekat/wavekat-cli"
authors = ["WaveKat"]
readme = "README.md"
keywords = ["wavekat", "cli", "audio", "labeling"]
categories = ["command-line-utilities"]

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

[dependencies]
anyhow = "1"
arrow-array = "53"
arrow-schema = "53"
clap = { version = "4", features = ["derive", "env"] }
dirs = "5"
futures-util = "0.3"
hound = "3.5"
parquet = { version = "53", default-features = false, features = ["arrow", "snap"] }
rand = "0.8"
rayon = "1"
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json", "gzip", "stream"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# `wk models push` hashes each artifact client-side and sends the digest
# along with the create body (the platform verifies on finalize). sha2 is
# the smallest pure-Rust SHA-256 implementation we already pull through
# the dep tree transitively, so making it explicit costs nothing.
sha2 = "0.10"
tokio = { version = "1", features = ["macros", "rt-multi-thread", "fs", "io-util", "process"] }
unicode-width = "0.2"
# Shared HTTP + loopback-OAuth surface against `platform.wavekat.com`.
# Owns the `Client`, the bearer-token plumbing, and the `/cli-login`
# handshake — `client.rs` and the handshake half of `commands/login.rs`
# are thin wrappers over it. See https://github.com/wavekat/wavekat-platform-client.
wavekat-platform-client = "0.0.2"
webbrowser = "1"

# Crash + error reporting. Optional so source builds and forks can
# compile without pulling the SDK; the published binary turns it on
# via `--features telemetry`. See docs/01-crash-and-error-reporting.md.
#
# Feature picks: `panic` + `backtrace` are the minimum useful set;
# `anyhow` lets `report_error` capture our normal `anyhow::Error`s with
# their `with_context` chain intact; `reqwest` + `rustls` keep us on
# the same TLS stack as the rest of the binary (no openssl creep). We
# explicitly disable the default `native-tls` so cross-builds don't
# pick up an OS-specific linker dependency.
sentry = { version = "0.48", default-features = false, features = [
    "anyhow",
    "backtrace",
    "contexts",
    "panic",
    "reqwest",
    "rustls",
], optional = true }

[features]
default = []
telemetry = ["dep:sentry"]

[profile.release]
opt-level = "z"
lto = true
strip = true
codegen-units = 1
# Symbolication for crash reports is handled by uploading debug info
# to Sentry from CI via `sentry-cli upload-dif` (tracked separately).
# Keeping `strip = true` here preserves the current shipped binary
# size — see "Symbolication" in docs/01-crash-and-error-reporting.md.