[package]
name = "cano"
description = "High-performance orchestration engine for building resilient, self-healing systems in Rust. Uses Finite State Machines (FSM) for strict, type-safe transitions."
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
homepage.workspace = true
repository.workspace = true
authors.workspace = true
readme = "../README.md"
keywords = ["ai", "async", "workflow", "data-processing", "scheduler"]
categories = ["finance", "development-tools", "concurrency", "asynchronous", "science"]
[dependencies]
cano-macros = { version = "0.13", path = "../cano-macros" }
tokio = { version = "1.52.1", features = ["macros", "sync", "time", "rt-multi-thread"] }
rand = "0.10"
chrono = { version = "0.4", features = ["serde"], optional = true }
cron = { version = "0.16", optional = true }
futures-util = "0.3"
parking_lot = "0.12"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tracing = { version = "0.1", optional = true }
redb = { version = "4.1", optional = true }
postcard = { version = "1", optional = true, features = ["use-std"] }
metrics = { version = "0.24.5", optional = true }
[features]
scheduler = ["dep:chrono", "dep:cron", "tokio/signal"]
tracing = ["dep:tracing"]
recovery = ["dep:redb", "dep:postcard"]
all = ["scheduler", "tracing", "recovery", "metrics"]
metrics = ["dep:metrics"]
[dev-dependencies]
axum = "0.8.9"
criterion = { version = "0.8", features = ["html_reports", "async_tokio"] }
redb = "4.1"
reqwest = { version = "0.13", features = ["json"] }
rig-core = "0.36.0"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tempfile = "3"
wide = "1.2"
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
chrono = { version = "0.4", features = ["serde"] }
tokio = { version = "1.52.1", features = ["macros", "sync", "time", "rt-multi-thread", "signal"] }
metrics-util = { version = "0.20.3", features = ["debugging"] }
metrics-tracing-context = "0.18.1"
[[bin]]
name = "recovery_resume"
path = "src/bin/recovery_resume.rs"
required-features = ["recovery"]
[[bin]]
name = "stepped_resume"
path = "src/bin/stepped_resume.rs"
required-features = ["recovery"]
[[example]]
name = "ai_workflow_yes_and"
path = "examples/ai_workflow_yes_and.rs"
[[example]]
name = "workflow_simple"
path = "examples/workflow_simple.rs"
[[example]]
name = "workflow_book_prepositions"
path = "examples/workflow_book_prepositions.rs"
[[example]]
name = "workflow_negotiation"
path = "examples/workflow_negotiation.rs"
[[example]]
name = "workflow_simd_matrix_pipeline"
path = "examples/workflow_simd_matrix_pipeline.rs"
[[example]]
name = "scheduler_scheduling"
path = "examples/scheduler_scheduling.rs"
required-features = ["scheduler"]
[[example]]
name = "scheduler_duration_scheduling"
path = "examples/scheduler_duration_scheduling.rs"
required-features = ["scheduler"]
[[example]]
name = "scheduler_graceful_shutdown"
path = "examples/scheduler_graceful_shutdown.rs"
required-features = ["scheduler"]
[[example]]
name = "scheduler_mixed_workflows"
path = "examples/scheduler_mixed_workflows.rs"
required-features = ["scheduler"]
[[example]]
name = "scheduler_book_prepositions"
path = "examples/scheduler_book_prepositions.rs"
required-features = ["scheduler"]
[[example]]
name = "scheduler_mapreduce_books"
path = "examples/scheduler_mapreduce_books.rs"
required-features = ["scheduler"]
[[example]]
name = "scheduler_backoff"
path = "examples/scheduler_backoff.rs"
required-features = ["scheduler"]
[[example]]
name = "tracing_demo"
path = "examples/tracing_demo.rs"
required-features = ["tracing", "scheduler"]
[[example]]
name = "metrics_demo"
path = "examples/metrics_demo.rs"
required-features = ["metrics", "scheduler"]
[[example]]
name = "metrics_tracing_context"
path = "examples/metrics_tracing_context.rs"
required-features = ["metrics", "tracing"]
[[example]]
name = "workflow_stack_store"
path = "examples/workflow_stack_store.rs"
[[example]]
name = "mixed_workflow"
path = "examples/mixed_workflow.rs"
[[example]]
name = "task_interface_demo"
path = "examples/task_interface_demo.rs"
[[example]]
name = "task_simple"
path = "examples/task_simple.rs"
[[example]]
name = "workflow_ad_exchange"
path = "examples/workflow_ad_exchange.rs"
[[example]]
name = "workflow_partial_results"
path = "examples/workflow_partial_results.rs"
[[example]]
name = "workflow_split_join"
path = "examples/workflow_split_join.rs"
[[example]]
name = "workflow_on_request"
path = "examples/workflow_on_request.rs"
[[example]]
name = "circuit_breaker"
path = "examples/circuit_breaker.rs"
[[example]]
name = "workflow_observer"
path = "examples/workflow_observer.rs"
[[example]]
name = "observer_metrics"
path = "examples/observer_metrics.rs"
[[example]]
name = "workflow_recovery"
path = "examples/workflow_recovery.rs"
required-features = ["recovery"]
[[example]]
name = "saga_payment"
path = "examples/saga_payment.rs"
[[example]]
name = "router_task"
path = "examples/router_task.rs"
[[example]]
name = "poll_task"
path = "examples/poll_task.rs"
[[example]]
name = "batch_task"
path = "examples/batch_task.rs"
[[example]]
name = "stepped_task"
path = "examples/stepped_task.rs"
required-features = ["recovery"]
[[example]]
name = "processing_models_tour"
path = "examples/processing_models_tour.rs"
required-features = ["recovery"]
[[example]]
name = "join_strategies"
path = "examples/join_strategies.rs"
[[example]]
name = "custom_checkpoint_store"
path = "examples/custom_checkpoint_store.rs"
[[example]]
name = "saga_recovery"
path = "examples/saga_recovery.rs"
required-features = ["recovery"]
[[example]]
name = "circuit_breaker_manual"
path = "examples/circuit_breaker_manual.rs"
[[example]]
name = "workflow_validation"
path = "examples/workflow_validation.rs"
[[example]]
name = "split_bulkhead"
path = "examples/split_bulkhead.rs"
[[example]]
name = "poll_retry_on_error"
path = "examples/poll_retry_on_error.rs"
[[example]]
name = "panic_safety"
path = "examples/panic_safety.rs"
[[example]]
name = "store_custom_backend"
path = "examples/store_custom_backend.rs"
[[example]]
name = "resources_advanced"
path = "examples/resources_advanced.rs"
[[bench]]
name = "workflow_performance"
harness = false
[[bench]]
name = "store_performance"
harness = false
[[bench]]
name = "task_performance"
harness = false
[[bench]]
name = "store_shared_performance"
harness = false
[[bench]]
name = "resource_performance"
harness = false
[[bench]]
name = "circuit_performance"
harness = false