ff-sdk 0.3.2

FlowFabric worker SDK — public API for worker authors
Documentation
[package]
name = "ff-sdk"
version.workspace = true
edition.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
homepage.workspace = true
keywords.workspace = true
categories.workspace = true
description = "FlowFabric worker SDK — public API for worker authors"

[features]
# Default feature set — existing consumers observe zero change.
#
# `valkey-default` pulls in the ferriskey-dependent SDK modules
# (`task`, `worker`, `snapshot`, `admin`,
# `engine_error::enrich_dependency_conflict`) + ff-sdk's direct
# optional `ferriskey` dep + the Valkey-specific variants on
# `SdkError`. Turning this OFF (`--no-default-features`) disables the
# ferriskey-dependent SDK surface and removes ferriskey from ff-sdk's
# direct optional deps — RFC-012 §1.3 agnosticism proof: ff-sdk
# compiles as a pure type/config facade over ff-core's
# `EngineBackend` trait without the Valkey transport surfacing.
# (`ff-script` keeps an unconditional `ferriskey` dep today; that
# transitive edge stays regardless of ff-sdk's feature. The
# agnosticism claim is scoped to ff-sdk's *own* public surface, not
# the entire build graph.)
default = ["valkey-default"]

direct-valkey-claim = ["valkey-default"]

# Re-exports of ferriskey feature flags. Consumers opt in on ff-sdk and
# the flag propagates to the underlying ferriskey crate. OFF by default
# — the ~40-crate AWS dep graph does not land in builds that don't need
# it.
iam = ["ferriskey/iam"]

# Pulls in the ferriskey transport + the SDK modules that depend on
# it. Left as an explicit feature (on by default) so
# `--no-default-features` builds can prove the agnosticism contract.
valkey-default = ["dep:ferriskey", "dep:ff-backend-valkey"]

[dependencies]
ff-core = { workspace = true }
ff-script = { workspace = true }
# RFC-012 Stage 1b — ff-sdk's `ClaimedTask` forwards 9 of 12 ops
# through the `EngineBackend` trait. The legacy
# `FlowFabricWorker::connect` path still dials Valkey itself; it
# wraps its own client in a `ValkeyBackend` (via
# `from_client_and_partitions`) so `ClaimedTask` has a backend to
# forward through. Gated on `valkey-default` so the agnosticism
# build (`--no-default-features`) stays backend-free.
ff-backend-valkey = { workspace = true, optional = true }
ferriskey = { workspace = true, optional = true }
tokio = { workspace = true }
tracing = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
# HTTP client for the admin REST surface (FlowFabricAdminClient).
# default-features disabled to drop the native-tls backend; rustls is
# what every other HTTP consumer in this workspace uses (ff-test,
# examples/media-pipeline, examples/coding-agent).
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }