wavekat-platform-client 0.0.13

Rust client for the WaveKat platform — auth, sessions, artifact upload
Documentation
[package]
name = "wavekat-platform-client"
description = "Rust client for the WaveKat platform — auth, sessions, artifact upload"
version.workspace = true
edition.workspace = true
license.workspace = true
rust-version.workspace = true
repository = "https://github.com/wavekat/wavekat-platform-client"
homepage = "https://github.com/wavekat/wavekat-platform-client"
documentation = "https://docs.rs/wavekat-platform-client"
readme = "../../README.md"
keywords = ["wavekat", "platform", "client", "sdk"]
categories = ["api-bindings", "web-programming::http-client"]
exclude = ["CHANGELOG.md"]

[dependencies]
# HTTP client. rustls-tls keeps us off OpenSSL across platforms; json + gzip
# match what wavekat-cli already vetted; stream is needed for get_stream_to.
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json", "gzip", "stream"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
url = "2"
rand = "0.8"
thiserror = "1"
# `time` for the handshake timeout; `sync` for the oneshot used to hand
# the token off the blocking accept thread. Deliberately NOT enabling
# `rt-multi-thread` or `macros` — let the consumer pick the runtime.
tokio = { version = "1", default-features = false, features = ["time", "sync", "rt"] }
futures-util = "0.3"
# Host-environment probes for the anonymous install heartbeat
# (`Client::install_heartbeat`). `os_info` resolves the OS version
# string; `sys-locale` reads the system BCP-47 locale. Both are small,
# dependency-light, and cross-platform — kept here (not in the consumer)
# so callers don't re-implement detection. See src/voice.rs.
os_info = { version = "3", default-features = false }
sys-locale = "0.3"
# Ed25519 release-attestation signing for public endpoints
# (`Client::post_public_signed_json`). A build carries a per-version
# Ed25519 key + a certificate issued by the offline release master key;
# it signs a canonical (timestamp, nonce, method, path, body-hash) string
# so the platform can verify — with only the master *public* key — that
# the request came from a genuine release and reject stale replays. See
# src/sign.rs. `sha2`/`hex` hash the body and encode keys/sigs for
# headers + env-var transport.
ed25519-dalek = "2"
sha2 = "0.10"
hex = "0.4"

[features]
# Opt-in build of the `release-keys` CLI (src/bin/release-keys.rs). Kept
# out of the default build surface because it's release-CI / operator
# tooling, not part of the client library. Needs no extra dependencies —
# it only drives the already-present sign module. Install with:
#   cargo install wavekat-platform-client --bin release-keys --features release-tooling
release-tooling = []

# The release-key CLI. `required-features` gates it behind `release-tooling`
# so a plain `cargo build` / dependent build never compiles it.
[[bin]]
name = "release-keys"
path = "src/bin/release-keys.rs"
required-features = ["release-tooling"]

[dev-dependencies]
tokio = { version = "1", default-features = false, features = ["macros", "rt-multi-thread", "time", "sync"] }
# `examples/smoke.rs` is a small CLI-shaped binary for the manual smoke
# test (see docs/01-initial-port.md). The library itself does not depend
# on `webbrowser` — the example just uses it for convenience.
webbrowser = "1"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]