ff-server 0.5.0

FlowFabric server library and HTTP binary
Documentation
[package]
name = "ff-server"
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 server library and HTTP binary"

[features]
# Re-exports of ferriskey feature flags. Consumers opt in on ff-server
# and the flag propagates to the underlying ferriskey crate. OFF by
# default.
iam = ["ferriskey/iam"]
# PR-94: OTEL-backed /metrics endpoint + HTTP metrics middleware +
# cross-crate instrumentation. OFF by default — zero OTEL/Prometheus
# crates in the dep tree when off. Enables the matching feature on
# ff-engine + ff-scheduler so the engine/scanner call sites record
# into the same registry.
observability = [
    "ff-observability/enabled",
    "ff-engine/observability",
    "ff-scheduler/observability",
]
# OFF by default. When ON, links `sentry` + `sentry-tracing` and calls
# `ff_observability::init_sentry()` early in `main()` so `FF_SENTRY_DSN`
# wires process-wide error reporting. When OFF, neither crate is in the
# dep tree and the init call compiles out entirely. Orthogonal to
# `observability` — metrics and error reporting are independent axes.
sentry = ["ff-observability/sentry"]

[dependencies]
ff-core = { workspace = true }
# Issue #171: ff-server calls into FCALL helpers (loader/functions), so
# explicitly enable ff-script's `valkey-client` surface.
ff-script = { workspace = true, features = ["valkey-client"] }
ff-engine = { workspace = true }
ff-backend-valkey = { workspace = true }
ff-scheduler = { workspace = true }
ff-observability = { workspace = true }
ferriskey = { workspace = true }
tokio = { workspace = true, features = ["rt-multi-thread", "signal"] }
tracing = { workspace = true }
tracing-subscriber = { version = "0.3", features = ["fmt", "env-filter"] }
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
axum = { workspace = true }
tower-http = { workspace = true }
futures = { workspace = true }

[dev-dependencies]
# Used by CORS preflight tests in `api::cors_tests` (#66, #71) — exercises
# the layer via `tower::ServiceExt::oneshot`, which is the integration-style
# harness that mirrors real browser preflights.
tower = { version = "0.5", features = ["util"] }
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }