tasker-worker 0.1.2

Worker foundation system for multi-language step execution
[package]
name = "tasker-worker"
version = "0.1.2"
edition = "2021"
default-run = "tasker-worker"
description = "Worker foundation system for multi-language step execution"
readme = "README.md"
repository = "https://github.com/tasker-systems/tasker-core"
license = "MIT"
keywords = ["async", "execution", "ffi", "task", "worker"]
categories = ["asynchronous", "concurrency", "web-programming"]

# docs.rs configuration
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

# TAS-145: Ignore false positives from cargo-machete
[package.metadata.cargo-machete]
ignored = [
  # Dev-dependencies used in tests
  "cargo-llvm-cov",  # CI coverage tool
  "serial_test",
  "tasker-core",  # Used for test-utils re-export
  "tempfile",
  "tokio-test",
  "url",
  # Feature-gated dependencies (web-api feature)
  "axum-extra",
  # Feature-gated dependencies (grpc-api feature) - used by generated code
  "prost",
  "prost-types",
  "tokio-stream",
  # Used in runtime or via macros
  "bigdecimal",
  "criterion",
  "crossbeam",
  "dotenvy",
  "fastrand",
  "jsonwebtoken",
  "opentelemetry-otlp",
  "rand",
  "regex",
  "reqwest",
  "rsa",
  "rust_decimal",
  "serde_yaml",
  "sysinfo",
  "toml",
  "tracing-subscriber",
]

[lib]
crate-type = ["rlib"]
name = "tasker_worker"

# Binary targets
[[bin]]
name = "tasker-worker"
path = "src/bin/server.rs"
required-features = ["web-api"]

[[bin]]
name = "generate-worker-openapi"
path = "src/bin/generate_openapi.rs"
required-features = ["web-api"]

# Note: Benchmark placeholders removed - use E2E benchmarks and OpenTelemetry traces
# for worker performance measurement (see TAS-29 Phase 5.4 decision)

[dependencies]
anyhow = { workspace = true }
async-trait = { workspace = true }
# Web framework and HTTP server (TAS-28)
axum = { workspace = true, optional = true }
axum-extra = { workspace = true, optional = true }
bigdecimal = { workspace = true }
# Time and date handling
chrono = { workspace = true }
# Configuration
config = { workspace = true }
# Development and testing
criterion = { workspace = true, optional = true }
dashmap = { workspace = true }
crossbeam = { workspace = true }
dotenvy = { workspace = true }  # For loading .env files
# Random number generation
fastrand = { workspace = true }
futures = { workspace = true }
jsonwebtoken = { workspace = true, optional = true }
metrics = "0.24"  # TAS-65 Phase 2.3b: Event consumer metrics
opentelemetry = { workspace = true }
opentelemetry-otlp = { workspace = true }
# Message queue management
pgmq = { workspace = true }
tasker-pgmq = { path = "../tasker-pgmq", version = "=0.1.2" }
rand = { workspace = true }
regex = { workspace = true }
# Web API testing and API Integration
reqwest = { workspace = true }
rsa = { workspace = true, optional = true }
rust_decimal = { workspace = true }
# Serialization
serde = { workspace = true }
serde_json = { workspace = true }
serde_yaml = { workspace = true }
# Database and ORM
sqlx = { workspace = true, optional = true }
# System information
sysinfo = { workspace = true }
tasker-client = { package = "tasker-client", path = "../tasker-client", version = "=0.1.2" }
tasker-shared = { package = "tasker-shared", path = "../tasker-shared", version = "=0.1.2" }
# Error handling
thiserror = { workspace = true }
tokio = { workspace = true }
toml = { workspace = true }
tower = { workspace = true, optional = true }
tower-http = { workspace = true, optional = true }
# Logging and telemetry
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
# OpenAPI documentation
utoipa = { workspace = true, optional = true }
utoipa-swagger-ui = { workspace = true, optional = true }
uuid = { workspace = true }
workspace_tools = { workspace = true }
# gRPC framework (TAS-177)
tonic = { workspace = true, optional = true }
tonic-health = { workspace = true, optional = true }
tonic-reflection = { workspace = true, optional = true }
prost = { workspace = true, optional = true }
prost-types = { workspace = true, optional = true }
tokio-stream = { workspace = true, optional = true }

[dev-dependencies]
# Coverage tools (used in CI)
cargo-llvm-cov = { workspace = true }
serial_test = { workspace = true }
tasker-core = { package = "tasker-core", path = "../" }
# tasker-orchestration = { path = "../tasker-orchestration", package = "tasker-orchestration" }  # Commented out to test if actually needed
tempfile = { workspace = true }
# Testing tools
tokio-test = { workspace = true }
url = { workspace = true }

[features]
default = ["grpc-api", "postgres", "test-utils", "web-api"]
benchmarks = ["criterion"]
postgres = ["sqlx/postgres"]
test-utils = []
web-api = [
  "axum",
  "axum-extra",
  "jsonwebtoken",
  "rsa",
  "tower",
  "tower-http",
  "utoipa",
  "utoipa-swagger-ui",
]
# TAS-177: gRPC API support
# Note: Requires web-api because WorkerGrpcState depends on WorkerWebState services.
grpc-api = [
  "web-api",
  "tonic",
  "tonic-health",
  "tonic-reflection",
  "prost",
  "prost-types",
  "tokio-stream",
  "tasker-shared/grpc-api",
]

# TAS-73: Test infrastructure levels (cumulative)
# Crate-level tests require at minimum test-messaging (DB + queue)
test-db = []
test-messaging = ["test-db"]
test-services = ["test-messaging"]
test-cluster = ["test-services"]

# TAS-158: tokio-console async runtime introspection
# Requires: RUSTFLAGS="--cfg tokio_unstable" cargo build --features tokio-console
tokio-console = ["tasker-shared/tokio-console"]

[lints]
workspace = true