[package]
name = "forge-runtime"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
description = "Runtime executors and gateway for the Forge framework"
[lints]
workspace = true
[dependencies]
forge-core = { version = "0.10.0", path = "../forge-core" }
tokio = { workspace = true }
sqlx = { workspace = true }
reqwest = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
uuid = { workspace = true }
chrono = { workspace = true }
chrono-tz = { workspace = true }
thiserror = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
dashmap = { workspace = true }
ahash = { workspace = true }
futures-util = { workspace = true }
tokio-util = { workspace = true }
base64 = { workspace = true }
sha2 = { workspace = true }
subtle = { workspace = true }
axum = { workspace = true, optional = true }
ipnet = { workspace = true, optional = true }
tower = { workspace = true, optional = true }
tower-http = { workspace = true, optional = true }
bytes = { workspace = true, optional = true }
jsonwebtoken = { workspace = true, optional = true }
argon2 = { workspace = true, optional = true }
password-hash = { workspace = true, optional = true }
ring = { version = "0.17", optional = true }
serde_urlencoded = { version = "0.7", optional = true }
percent-encoding = { version = "2", optional = true }
aho-corasick = { version = "1", optional = true }
hmac = { version = "0.12", optional = true }
sha1 = { version = "0.10", optional = true }
tokio-rustls = { version = "0.26", default-features = false, features = ["ring"], optional = true }
rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12"], optional = true }
tls-listener = { version = "0.11", default-features = false, features = ["rustls-ring", "axum", "tokio-net"], optional = true }
jsonschema = { workspace = true, optional = true }
db_ip = { version = "0.3", default-features = false, features = ["ipv4", "ipv6", "include-country-code-lite"], optional = true }
maxminddb = { version = "0.28", optional = true }
opentelemetry = { workspace = true, optional = true }
opentelemetry_sdk = { workspace = true, optional = true }
opentelemetry-otlp = { workspace = true, optional = true }
opentelemetry-semantic-conventions = { workspace = true, optional = true }
opentelemetry-appender-tracing = { workspace = true, optional = true }
tracing-opentelemetry = { workspace = true, optional = true }
[features]
default = []
gateway = [
"dep:axum",
"dep:tower",
"dep:tower-http",
"dep:bytes",
"dep:ipnet",
"dep:jsonwebtoken",
"dep:argon2",
"dep:password-hash",
"dep:ring",
"dep:serde_urlencoded",
"dep:percent-encoding",
"dep:aho-corasick",
"dep:hmac",
"dep:sha1",
"dep:tokio-rustls",
"dep:rustls",
"dep:tls-listener",
"dep:jsonschema",
]
jobs = []
workflows = ["jobs"]
cron = ["jobs"]
daemons = []
mcp-oauth = ["gateway"]
geoip = ["gateway", "dep:db_ip", "dep:maxminddb"]
otel = [
"dep:opentelemetry",
"dep:opentelemetry_sdk",
"dep:opentelemetry-otlp",
"dep:opentelemetry-semantic-conventions",
"dep:opentelemetry-appender-tracing",
"dep:tracing-opentelemetry",
]
full = [
"gateway",
"mcp-oauth",
"jobs",
"workflows",
"cron",
"daemons",
"otel",
]
testcontainers = ["forge-core/testcontainers"]
[dev-dependencies]
tokio-test = { workspace = true }
tempfile = { workspace = true }
rcgen = { version = "0.13", default-features = false, features = ["pem", "ring"] }