[package] name = "obelisk" description = "Deterministic workflow engine" readme = "README.md" authors.workspace = true edition.workspace = true license.workspace = true repository.workspace = true rust-version.workspace = true version.workspace = true [dependencies] concepts.workspace = true db-sqlite.workspace = true executor.workspace = true val-json.workspace = true wasm-workers.workspace = true anyhow.workspace = true assert_matches.workspace = true async-trait.workspace = true axum.workspace = true cfg-if.workspace = true chrono.workspace = true clap.workspace = true config.workspace = true const_format.workspace = true directories.workspace = true docker_credential.workspace = true futures-util.workspace = true hashbrown.workspace = true http.workspace = true itertools.workspace = true oci-client.workspace = true oci-wasm.workspace = true prost-wkt-types.workspace = true prost.workspace = true serde_json.workspace = true serde_with.workspace = true serde.workspace = true sha2.workspace = true shadow-rs.workspace = true strum.workspace = true tempfile.workspace = true thiserror.workspace = true tokio = { workspace = true } tokio-stream.workspace = true toml.workspace = true tonic = { workspace = true, default-features = true, features = [ "zstd", "gzip", "tls", "tls-roots", ] } tonic-web.workspace = true tower-http.workspace = true tower.workspace = true tracing-appender.workspace = true tracing-subscriber.workspace = true tracing.workspace = true utils.workspace = true wasmtime.workspace = true # Optional deps: # otlp opentelemetry = { workspace = true, optional = true } opentelemetry_sdk = { workspace = true, optional = true } opentelemetry-otlp = { workspace = true, optional = true } opentelemetry-semantic-conventions = { workspace = true, optional = true } tracing-opentelemetry.workspace = true # tokio-console console-subscriber = { workspace = true, optional = true } # tracing-chrome tracing-chrome = { workspace = true, optional = true } [dev-dependencies] tempfile.workspace = true [[bin]] name = "obelisk" path = "src/main.rs" [features] tokio-console = ["dep:console-subscriber"] otlp = [ "dep:opentelemetry", "dep:opentelemetry_sdk", "dep:opentelemetry-otlp", "dep:opentelemetry-semantic-conventions", ] tracing-chrome = ["dep:tracing-chrome"] default = ["otlp"] [lints] workspace = true [build-dependencies] tonic-build = { workspace = true, default-features = true } shadow-rs.workspace = true [workspace] resolver = "2" members = [ "crates/concepts", "crates/db-mem", "crates/db-sqlite", "crates/executor", "crates/testing/cargo-component-builder", "crates/testing/db-tests", "crates/testing/test-programs/fibo/activity", "crates/testing/test-programs/fibo/activity/builder", "crates/testing/test-programs/fibo/webhook", "crates/testing/test-programs/fibo/webhook/builder", "crates/testing/test-programs/fibo/workflow", "crates/testing/test-programs/fibo/workflow/builder", "crates/testing/test-programs/http/activity", "crates/testing/test-programs/http/activity/builder", "crates/testing/test-programs/http/workflow", "crates/testing/test-programs/http/workflow/builder", "crates/testing/test-programs/sleep/activity", "crates/testing/test-programs/sleep/activity/builder", "crates/testing/test-programs/sleep/workflow", "crates/testing/test-programs/sleep/workflow/builder", "crates/testing/test-utils", "crates/utils", "crates/val-json", "crates/wasm-workers", "crates/webui", "crates/webui/builder", "crates/webui-proxy", ] [workspace.package] version = "0.8.0" license = "AGPL-3.0-only" repository = "https://github.com/obeli-sk/obelisk" authors = ["Project Developers"] edition = "2021" rust-version = "1.81.0" [workspace.dependencies] cargo-component-builder = { path = "crates/testing/cargo-component-builder" } concepts = { package = "obeli-sk-concepts", path = "crates/concepts", version = "0.8.0" } db-mem = { path = "crates/db-mem" } db-sqlite = { package = "obeli-sk-db-sqlite", path = "crates/db-sqlite", version = "0.8.0" } db-tests = { path = "crates/testing/db-tests" } executor = { package = "obeli-sk-executor", path = "crates/executor", version = "0.8.0" } test-programs-fibo-activity-builder = { path = "crates/testing/test-programs/fibo/activity/builder" } test-programs-fibo-webhook-builder = { path = "crates/testing/test-programs/fibo/webhook/builder" } test-programs-fibo-workflow-builder = { path = "crates/testing/test-programs/fibo/workflow/builder" } test-programs-http-get-activity-builder = { path = "crates/testing/test-programs/http/activity/builder" } test-programs-http-get-workflow-builder = { path = "crates/testing/test-programs/http/workflow/builder" } test-programs-sleep-activity-builder = { path = "crates/testing/test-programs/sleep/activity/builder" } test-programs-sleep-workflow-builder = { path = "crates/testing/test-programs/sleep/workflow/builder" } test-utils = { path = "crates/testing/test-utils" } utils = { package = "obeli-sk-utils", path = "crates/utils", version = "0.8.0" } val-json = { package = "obeli-sk-val-json", path = "crates/val-json", version = "0.8.0" } wasm-workers = { package = "obeli-sk-wasm-workers", path = "crates/wasm-workers", version = "0.8.0" } webui-builder = { path = "crates/webui/builder" } anyhow = { version = "1.0", features = ["backtrace"] } axum = { version = "0.7.9", features = ["http2"] } directories = "5.0" arbitrary = { version = "1.4.1", features = ["derive"] } assert_matches = "1.5.0" async-channel = "2.3.1" async-trait = "0.1" bytes = "1.8" cargo_metadata = "0.18" cfg-if = "1.0.0" chrono = { version = "0.4.38", features = ["arbitrary", "serde"] } clap = { version = "4.5.21", features = ["derive"] } config = { version = "0.14.1", default-features = false, features = [ "toml", "preserve_order", "async", "convert-case", ] } console-subscriber = "0.4.1" const_format = "0.2.33" criterion = "0.5" derivative = "2.2.0" derive_more = { version = "1.0", features = [ "debug", "deref", "display", "from_str", ] } docker_credential = "1.3.1" futures-util = "0.3.31" futures = { version = "0.3.31", default-features = false } getrandom = "=0.2.11" # For madsim patch hashbrown = { version = "0.15.1", features = ["serde"] } hdrhistogram = "7.5.4" http = "1.1.0" http-body-util = "0.1" hyper = "1.5.1" hyper-util = { version = "0.1", features = ["tokio"] } implicit-clone = "0.5.0" indexmap = { version = "2.6", features = ["serde"] } insta = { version = "1.41.1", features = ["json"] } itertools = "0.13" lazy_static = "1.5" log = "0.4.22" # Only for webui madsim = "0.2.31" oci-client = { version = "0.14.0", default-features = false, features = [ "rustls-tls", ] } oci-wasm = { version = "0.2.0", default-features = false, features = [ # Dependent on matching oci-client "rustls-tls", ] } prost = "0.13.3" prost-wkt-types = "0.6" rand = "0.8.5" reqwest = { version = "0.12", default-features = false, features = [ "json", "rustls-tls", ] } route-recognizer = "0.3.1" rstest = "0.23" rusqlite = { version = "0.32.1", features = [ "bundled", "chrono", "serde_json", ] } serde = { version = "1.0.215", features = ["derive"] } serde_json = "1.0.133" serde_with = "3.11.0" sha2 = "0.10.8" shadow-rs = "0.35" smallvec = "1.13.2" strum = { version = "0.26.3", features = ["derive"] } tempfile = "3.14.0" thiserror = "1.0" tokio = { version = "0.2.30", package = "madsim-tokio", features = [ "fs", "macros", "rt-multi-thread", "rt", "signal", "sync", "time", "tracing", ] } tokio-stream = "0.1.16" toml = { version = "0.8.19", features = ["preserve_order"] } tonic = { version = "0.12.3", default-features = false } tonic-build = { version = "0.12.3", default-features = false } tonic-web = "0.12.3" tonic-web-wasm-client = "0.6.0" tower = "0.5.1" tower-http = { version = "0.6.2", features = ["trace", "cors"] } tracing = { version = "0.1", features = ["log"] } tracing-appender = "0.2.3" tracing-chrome = "0.7.2" tracing-subscriber = { version = "0.3.18", features = ["env-filter", "json"] } ulid = { version = "1.1.3", features = ["serde"] } url = "2.5.4" waki = "0.4.2" wasm-logger = "0.2.0" wiremock = "0.6" yew = { version = "0.21.0", features = ["csr"] } yewprint = "0.5.0" yewprint-css = "0.4.0" yew-router = "0.18.0" # webui wasm-bindgen = "=0.2.95" # Must be equal to wasm-bindgen-cli in nix. Update Trunk.toml and wasm-bindgen-futures on version change. wasm-bindgen-futures = "=0.4.45" # Dependent on wasm-bindgen web-sys = "=0.3.72" # Dependent on wasm-bindgen # wasmtime wasmtime = { version = "26.0", features = ["memory-protection-keys"] } wasmtime-wasi = "26.0" wasmtime-wasi-http = "26.0" wast = "219.0.1" wit-parser = "0.219.1" # cargo-component wit-bindgen-rt = "0.34.0" # otlp opentelemetry = "0.23.0" opentelemetry_sdk = { version = "0.23.0", features = ["rt-tokio"] } opentelemetry-otlp = { version = "0.16.0", features = ["tls", "tls-roots"] } opentelemetry-semantic-conventions = "0.16.0" tracing-opentelemetry = "0.24" [patch.crates-io] getrandom = { git = "https://github.com/madsim-rs/getrandom.git", rev = "e79a7aecbcf8a43a802d30742667b77d75c613bd" } # madsim [workspace.lints] # lower the priority to allow overriding later clippy.all = { level = "deny", priority = -1 } # lower the priority to allow overriding later clippy.dbg_macro = "deny" # lower the priority to allow overriding later clippy.pedantic = { level = "deny", priority = -1 } # lower the priority to allow overriding later clippy.explicit_deref_methods = "allow" # Lots of false positives. # lower the priority to allow overriding later clippy.missing_errors_doc = "allow" # Allow missing docs for now # lower the priority to allow overriding later clippy.missing_panics_doc = "allow" # Allow missing docs for now # lower the priority to allow overriding later clippy.trivially_copy_pass_by_ref = "allow" # Lots of false positives. # lower the priority to allow overriding later clippy.module_name_repetitions = "allow" [workspace.lints.rust] unexpected_cfgs = { level = "deny", check-cfg = ['cfg(madsim)'] } unknown_lints = "deny" [profile.release] overflow-checks = true lto = true [profile.release_trunk] inherits = "release" strip = "symbols" [package.metadata.binstall] pkg-url = "{ repo }/releases/download/v{ version }/obelisk-{ target }.tar.gz" pkg-fmt = "tgz"