heddle-thread-api 0.27.2

Native Thread clients and durable peer replication over Iroh
Documentation
[package]
name = "heddle-thread-api"
version.workspace = true
edition.workspace = true
description = "Native Thread clients and durable peer replication over Iroh"
license.workspace = true
repository.workspace = true

[features]
default = ["native", "iroh"]
# Durable replication and the host's ordinary Biscuit authorization boundary.
native = [
    "root-attachment",
    "source-transfer",
    "dep:repo",
    "dep:objects",
    "dep:crypto",
    "dep:biscuit-verifier",
    "dep:base64",
    "dep:chrono",
    "dep:uuid",
    "dep:hex",
    "dep:tokio",
    "dep:tempfile",
]
# Exact bounded source packs and download validation without a local repo or identity manager.
source-transfer = [
    "replication",
    "dep:heddle-pack",
    "dep:tempfile",
    "dep:wire",
    "heddle-pack/fs",
]
# An Iroh adapter for the transport-neutral client and replication driver.
iroh = ["dep:iroh", "dep:tokio", "dep:heddle-perf-contract"]
# Causal protocol and async stream driver, without a local repository or Iroh.
replication = ["signing", "dep:heddle-object-model", "dep:tokio", "dep:tracing"]
# Portable exact-request verification; hosts retain authority and nonce storage.
signing = ["dep:crypto", "dep:hex", "dep:uuid", "dep:getrandom"]
# Opt-in host-side extraction; ordinary browser/operator clients stay parser-free.
semantic-analysis = ["dep:semantic"]
# Portable endpoint/root binding; no repository, Iroh, storage or parser graph.
root-attachment = ["signing", "dep:biscuit-verifier", "dep:base64", "dep:chrono"]

[dependencies]
base64 = { workspace = true, optional = true }
api.workspace = true
semantic = { workspace = true, optional = true }
repo = { workspace = true, optional = true, features = ["native", "git-overlay"] }
objects = { workspace = true, optional = true }
crypto = { workspace = true, optional = true }
heddle-object-model = { workspace = true, optional = true }
heddle-pack = { workspace = true, optional = true }
wire = { workspace = true, optional = true }
biscuit-verifier = { package = "heddle-biscuit-verifier", path = "../biscuit-verifier", version = "0.27.2", optional = true }
chrono = { workspace = true, optional = true }
uuid = { workspace = true, optional = true }
heddle-perf-contract = { workspace = true, optional = true }
blake3.workspace = true
hex = { workspace = true, optional = true }
iroh = { package = "heddleco-iroh", version = "=0.1.0", default-features = false, features = ["tls-ring"], optional = true }
prost = "=0.14.1"
prost-types.workspace = true
thiserror = "=2.0.18"
tokio = { workspace = true, optional = true }
tracing = { workspace = true, optional = true }
tempfile = { workspace = true, optional = true }

[target.'cfg(target_arch = "wasm32")'.dependencies]
getrandom = { version = "0.4", features = ["wasm_js"], optional = true }
uuid = { workspace = true, features = ["js"], optional = true }

[dev-dependencies]
tracing-subscriber.workspace = true
anyhow = "1"
biscuit-auth.workspace = true
ed25519-dalek = "3"
getrandom = "0.4"
hex.workspace = true
tempfile.workspace = true

[[example]]
name = "thread"
required-features = ["iroh", "replication"]

[[example]]
name = "multiplex"
required-features = ["iroh", "replication"]

[[test]]
name = "thread_workflow"
required-features = ["iroh", "replication"]

[[test]]
name = "transport_observation"
required-features = ["iroh", "replication"]

[[test]]
name = "reopen_retry"
required-features = ["replication"]