[package]
edition = "2021"
rust-version = "1.86"
name = "durable-workflow"
version = "2.0.0"
build = false
include = [
"/src/**",
"/schema/**",
"/examples/**",
"/Cargo.toml",
"/README.md",
"/CHANGELOG.md",
"/LICENSE",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "First-party Rust SDK for Durable Workflow workers and clients"
homepage = "https://durable-workflow.com"
documentation = "https://rust.durable-workflow.com/"
readme = "README.md"
keywords = [
"durable",
"workflow",
"temporal",
"worker",
"sdk",
]
categories = [
"api-bindings",
"asynchronous",
]
license = "MIT"
repository = "https://github.com/durable-workflow/sdk-rust"
[package.metadata.durable-workflow]
activity-failure-reasons = [
"activity",
"cancelled",
"timeout",
]
activity-options = true
activity-retry-policy = true
activity-timeouts = [
"start_to_close",
"schedule_to_start",
"schedule_to_close",
"heartbeat",
]
child-workflow-command = "start_child_workflow"
child-workflow-failure-reasons = [
"child_workflow",
"cancelled",
"terminated",
]
child-workflows = true
compatibility-authority = "protocol-manifests"
condition-wait-command = "open_condition_wait"
condition-wait-minimum-worker-protocol-version = "1.9"
condition-wait-occurrence-capability = "condition_wait_occurrence_identity"
condition-wait-occurrence-identity = "explicit-deterministic-authored-ordinal"
condition-wait-occurrence-minimum-worker-protocol-version = "1.17"
condition-wait-replay-validation = "command-order+authored-occurrence+sequence+key+predicate-fingerprint+timeout"
condition-wait-result = [
"satisfied",
"timed_out",
]
continue-as-new = true
continue-as-new-command = "continue_as_new"
continue-as-new-routing-overrides = [
"workflow_type",
"queue",
]
control-plane-version = "2"
deterministic-parallel = true
deterministic-side-effects = true
durable-condition-waits = true
durable-selection = true
durable-selection-authoring = "select+select_keyed"
durable-selection-minimum-worker-protocol-version = "1.19"
durable-selection-non-winner-lifecycle = [
"continue",
"await",
"cancel",
]
durable-selection-winner-history-event = "SelectionResolved"
durable-timers = true
legacy-search-attribute-history = "value-only+unknown-type-identity"
local-activities = false
message-streams = true
message-streams-minimum-worker-protocol-version = "1.15"
parallel-authoring = "parallel+join"
parallel-group-metadata = [
"parallel_group_id",
"parallel_group_kind",
"parallel_group_base_sequence",
"parallel_group_size",
"parallel_group_index",
"parallel_group_path",
]
parallel-members = [
"activity",
"child",
"timer",
"mixed",
"nested",
]
parallel-result-order = "input-position"
payload-codecs = ["avro"]
portable-worker-affinity-minimum-worker-protocol-version = "1.18"
product-train = "2.0.0"
qualified-server-version = "2.0.0"
query-state-model = "deterministic-workflow-replay"
query-task-minimum-worker-protocol-version = "1.8"
query-tasks = true
replayed-instance-state-queries = true
saga-cancellation = "cooperative"
saga-compensation = true
saga-compensation-failure-policy = "stop-first-preserve-initiating-and-compensation"
saga-compensation-order = "reverse-registration-sequential"
search-attribute-replay-identity = "json-value+canonical-declared-type"
search-attribute-types = [
"string",
"keyword",
"keyword_list",
"int",
"float",
"bool",
"datetime",
]
search-attribute-update-command = "upsert_search_attributes"
search-attribute-update-minimum-worker-protocol-version = "1.8"
server-worker-protocol-versions = ">=1.19,<2.0"
side-effect-command = "record_side_effect"
side-effect-history-event = "SideEffectRecorded"
snapshot-inspection-queries = true
sticky-execution = false
supported-server-versions = "2.0.0"
timer-command = "start_timer"
timer-replay-validation = "command-order+sequence+timer-id+delay"
typed-search-attributes = true
typed-search-attributes-minimum-worker-protocol-version = "1.16"
version-marker-command = "record_version_marker"
version-marker-helpers = [
"patched",
"deprecate_patch",
]
version-marker-history-event = "VersionMarkerRecorded"
version-markers = true
worker-protocol-version = "1.19"
worker-sessions = false
workflow-history-budget = [
"total_history_events",
"history_size_bytes",
"continue_as_new_recommended",
"history_budget_pressure",
]
workflow-lifecycle-commands = [
"cancel",
"terminate",
]
workflow-lifecycle-run-targeting = "current-run-guard"
workflow-result-routing = "current-run-chain-with-selected-run-view"
workflow-search-attribute-updates = true
workflow-start-timeouts = [
"execution_timeout_seconds",
"run_timeout_seconds",
]
workflow-streams-authoring-command = "record_side_effect.workflow_stream"
workflow-streams-contract = "durable-workflow.v2.workflow-streams.contract@1"
workflow-streams-delivery = "at-least-once"
workflow-streams-external-payload-references = "opaque-reference"
workflow-streams-operations = [
"list",
"describe",
"subscribe",
"append",
"close",
"error",
]
workflow-terminal-outcomes = [
"failed",
"cancelled",
"terminated",
"timed_out",
]
[package.metadata.durable-workflow.documentation]
cloud-destinations = [
"cloud-access",
"cloud-guide",
]
general-destinations = [
"crate-install",
"local-self-hosted",
"api-reference",
"sdk-guide",
]
path-order = [
"general",
"cloud",
]
[package.metadata.durable-workflow.documentation.availability]
cloud = "limited-early-access"
general = "generally-available"
[lib]
name = "durable_workflow"
path = "src/lib.rs"
[[bin]]
name = "durable-workflow-memo-restart"
path = "src/bin/durable-workflow-memo-restart.rs"
[[bin]]
name = "durable-workflow-replay-conformance"
path = "src/bin/durable-workflow-replay-conformance.rs"
[[example]]
name = "activity_options"
path = "examples/activity_options.rs"
[[example]]
name = "avro_value_benchmark"
path = "examples/avro_value_benchmark.rs"
[[example]]
name = "condition_search_attributes"
path = "examples/condition_search_attributes.rs"
[[example]]
name = "continue_as_new"
path = "examples/continue_as_new.rs"
[[example]]
name = "hello_world"
path = "examples/hello_world.rs"
[[example]]
name = "parallel_saga"
path = "examples/parallel_saga.rs"
[dependencies.apache-avro]
version = "0.21"
default-features = false
[dependencies.base64]
version = "0.22"
[dependencies.bon]
version = "=3.8.1"
default-features = false
[dependencies.chrono]
version = "0.4"
default-features = false
[dependencies.futures-util]
version = "0.3"
[dependencies.icu_collections]
version = "=2.2.0"
default-features = false
[dependencies.icu_locale_core]
version = "=2.2.0"
default-features = false
[dependencies.icu_normalizer]
version = "=2.2.0"
default-features = false
[dependencies.icu_properties]
version = "=2.2.0"
default-features = false
[dependencies.icu_provider]
version = "=2.2.0"
default-features = false
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"rustls-tls",
]
default-features = false
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde-value]
version = "0.7"
[dependencies.serde_json]
version = "1"
[dependencies.sha2]
version = "0.10"
[dependencies.thiserror]
version = "1"
[dependencies.tokio]
version = "1"
features = [
"macros",
"rt-multi-thread",
"signal",
"time",
]
[dependencies.uuid]
version = "1"
features = [
"serde",
"v4",
]
[dev-dependencies.serde_bytes]
version = "0.11"
[dev-dependencies.tokio]
version = "1"
features = [
"macros",
"rt-multi-thread",
]