cinchcli-core 0.1.8

Shared client-side primitives for Cinch (cinchcli.com): generated wire DTOs, REST/WebSocket clients, AES-256-GCM + X25519 crypto, credential storage, local SQLite store, and sync helpers.
Documentation
[package]
name = "cinchcli-core"
version = "0.1.8"
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
description = "Shared client-side primitives for Cinch (cinchcli.com): generated wire DTOs, REST/WebSocket clients, AES-256-GCM + X25519 crypto, credential storage, local SQLite store, and sync helpers."
homepage = "https://cinchcli.com"
documentation = "https://docs.rs/cinchcli-core"
readme = "README.md"
keywords = ["cinch", "clipboard", "client", "websocket", "e2ee"]
categories = ["api-bindings", "command-line-utilities"]
rust-version = "1.75"
include = [
    "src/**/*.rs",
    "build.rs",
    "Cargo.toml",
    "README.md",
    "LICENSE",
    "proto/**/*.proto",
]

# Consumers import as `client_core::*` regardless of the crate name on
# crates.io. Use `client-core = { package = "cinchcli-core" }` in Cargo.toml.
[lib]
name = "client_core"
path = "src/lib.rs"

[features]
# Desktop opts in to derive `specta::Type` on wire DTOs so tauri-specta
# can generate matching TypeScript bindings. CLI leaves it off.
specta = ["dep:specta"]

[dependencies]
prost = "0.13"
aes-gcm = { workspace = true }
x25519-dalek = { workspace = true }
hkdf = { workspace = true }
sha2 = { workspace = true }
base64 = { workspace = true }
hostname = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
dirs = { workspace = true }
ulid = { workspace = true }
url = { workspace = true }
specta = { version = "2.0.0-rc.24", features = ["derive"], optional = true }
reqwest = { workspace = true }
thiserror = { workspace = true }
tokio = { workspace = true }
keyring = { version = "3", features = ["apple-native", "linux-native-sync-persistent", "windows-native"] }
tokio-tungstenite = { workspace = true }
futures-util = { workspace = true }
tracing = { workspace = true }
log = { workspace = true }
chrono = { workspace = true }
rusqlite = { version = "0.32", features = ["bundled"] }
fs2 = "0.4"
bip39 = { workspace = true }

[build-dependencies]
prost-build = "0.13"

[dev-dependencies]
wiremock = "0.6"
tempfile = "3"