@temporalio/core-bridge 1.5.2 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/Cargo.lock +304 -112
  2. package/lib/index.d.ts +8 -6
  3. package/lib/index.js.map +1 -1
  4. package/package.json +9 -4
  5. package/releases/aarch64-apple-darwin/index.node +0 -0
  6. package/releases/aarch64-unknown-linux-gnu/index.node +0 -0
  7. package/releases/x86_64-apple-darwin/index.node +0 -0
  8. package/releases/x86_64-pc-windows-msvc/index.node +0 -0
  9. package/releases/x86_64-unknown-linux-gnu/index.node +0 -0
  10. package/sdk-core/.buildkite/docker/Dockerfile +2 -2
  11. package/sdk-core/.buildkite/docker/docker-compose.yaml +1 -1
  12. package/sdk-core/.buildkite/pipeline.yml +2 -4
  13. package/sdk-core/.cargo/config.toml +5 -2
  14. package/sdk-core/.github/workflows/heavy.yml +29 -0
  15. package/sdk-core/Cargo.toml +1 -1
  16. package/sdk-core/README.md +20 -10
  17. package/sdk-core/client/src/lib.rs +215 -39
  18. package/sdk-core/client/src/metrics.rs +17 -8
  19. package/sdk-core/client/src/raw.rs +4 -4
  20. package/sdk-core/client/src/retry.rs +32 -20
  21. package/sdk-core/core/Cargo.toml +25 -12
  22. package/sdk-core/core/src/abstractions/take_cell.rs +28 -0
  23. package/sdk-core/core/src/abstractions.rs +204 -14
  24. package/sdk-core/core/src/core_tests/activity_tasks.rs +143 -50
  25. package/sdk-core/core/src/core_tests/child_workflows.rs +6 -5
  26. package/sdk-core/core/src/core_tests/determinism.rs +165 -2
  27. package/sdk-core/core/src/core_tests/local_activities.rs +431 -43
  28. package/sdk-core/core/src/core_tests/queries.rs +34 -16
  29. package/sdk-core/core/src/core_tests/workers.rs +8 -5
  30. package/sdk-core/core/src/core_tests/workflow_tasks.rs +588 -55
  31. package/sdk-core/core/src/ephemeral_server/mod.rs +113 -12
  32. package/sdk-core/core/src/internal_flags.rs +155 -0
  33. package/sdk-core/core/src/lib.rs +16 -9
  34. package/sdk-core/core/src/protosext/mod.rs +1 -1
  35. package/sdk-core/core/src/replay/mod.rs +16 -27
  36. package/sdk-core/core/src/telemetry/log_export.rs +1 -1
  37. package/sdk-core/core/src/telemetry/metrics.rs +69 -35
  38. package/sdk-core/core/src/telemetry/mod.rs +60 -21
  39. package/sdk-core/core/src/telemetry/prometheus_server.rs +19 -13
  40. package/sdk-core/core/src/test_help/mod.rs +73 -14
  41. package/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +119 -160
  42. package/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +89 -0
  43. package/sdk-core/core/src/worker/activities/local_activities.rs +379 -129
  44. package/sdk-core/core/src/worker/activities.rs +350 -175
  45. package/sdk-core/core/src/worker/client/mocks.rs +22 -2
  46. package/sdk-core/core/src/worker/client.rs +18 -2
  47. package/sdk-core/core/src/worker/mod.rs +183 -64
  48. package/sdk-core/core/src/worker/workflow/bridge.rs +1 -3
  49. package/sdk-core/core/src/worker/workflow/driven_workflow.rs +3 -5
  50. package/sdk-core/core/src/worker/workflow/history_update.rs +916 -277
  51. package/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +216 -183
  52. package/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +9 -12
  53. package/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +7 -9
  54. package/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +160 -87
  55. package/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +13 -14
  56. package/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +7 -9
  57. package/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +14 -17
  58. package/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +242 -110
  59. package/sdk-core/core/src/worker/workflow/machines/mod.rs +27 -19
  60. package/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +9 -11
  61. package/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +321 -206
  62. package/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +13 -18
  63. package/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +20 -29
  64. package/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +2 -2
  65. package/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +257 -51
  66. package/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +6 -17
  67. package/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +310 -150
  68. package/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +17 -20
  69. package/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +31 -15
  70. package/sdk-core/core/src/worker/workflow/managed_run.rs +1052 -380
  71. package/sdk-core/core/src/worker/workflow/mod.rs +598 -390
  72. package/sdk-core/core/src/worker/workflow/run_cache.rs +40 -57
  73. package/sdk-core/core/src/worker/workflow/wft_extraction.rs +137 -0
  74. package/sdk-core/core/src/worker/workflow/wft_poller.rs +1 -4
  75. package/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +117 -0
  76. package/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +24 -0
  77. package/sdk-core/core/src/worker/workflow/workflow_stream.rs +469 -718
  78. package/sdk-core/core-api/Cargo.toml +2 -1
  79. package/sdk-core/core-api/src/errors.rs +1 -34
  80. package/sdk-core/core-api/src/lib.rs +19 -9
  81. package/sdk-core/core-api/src/telemetry.rs +4 -6
  82. package/sdk-core/core-api/src/worker.rs +19 -1
  83. package/sdk-core/etc/deps.svg +115 -140
  84. package/sdk-core/etc/regen-depgraph.sh +5 -0
  85. package/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +86 -61
  86. package/sdk-core/fsm/rustfsm_trait/src/lib.rs +29 -71
  87. package/sdk-core/histories/ends_empty_wft_complete.bin +0 -0
  88. package/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  89. package/sdk-core/histories/old_change_marker_format.bin +0 -0
  90. package/sdk-core/protos/api_upstream/.github/CODEOWNERS +2 -1
  91. package/sdk-core/protos/api_upstream/Makefile +6 -6
  92. package/sdk-core/protos/api_upstream/build/go.mod +7 -0
  93. package/sdk-core/protos/api_upstream/build/go.sum +5 -0
  94. package/sdk-core/protos/api_upstream/build/tools.go +29 -0
  95. package/sdk-core/protos/api_upstream/go.mod +6 -0
  96. package/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +9 -2
  97. package/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +7 -26
  98. package/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +13 -2
  99. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +3 -2
  100. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +3 -7
  101. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +3 -2
  102. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +8 -8
  103. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +25 -2
  104. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +2 -2
  105. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +2 -2
  106. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +2 -2
  107. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +2 -2
  108. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +2 -2
  109. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +24 -19
  110. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +2 -2
  111. package/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +2 -2
  112. package/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +2 -2
  113. package/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +2 -2
  114. package/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +49 -26
  115. package/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +4 -2
  116. package/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +5 -2
  117. package/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +2 -2
  118. package/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +57 -0
  119. package/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +2 -2
  120. package/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +2 -2
  121. package/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +2 -2
  122. package/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +63 -0
  123. package/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +2 -2
  124. package/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +71 -6
  125. package/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +2 -2
  126. package/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +2 -2
  127. package/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +64 -28
  128. package/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +4 -4
  129. package/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +7 -8
  130. package/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +10 -7
  131. package/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +19 -30
  132. package/sdk-core/protos/local/temporal/sdk/core/common/common.proto +1 -0
  133. package/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +1 -0
  134. package/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +8 -0
  135. package/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +67 -60
  136. package/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +85 -84
  137. package/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +9 -3
  138. package/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +2 -2
  139. package/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +2 -2
  140. package/sdk-core/sdk/Cargo.toml +5 -4
  141. package/sdk-core/sdk/src/lib.rs +108 -26
  142. package/sdk-core/sdk/src/workflow_context/options.rs +7 -1
  143. package/sdk-core/sdk/src/workflow_context.rs +24 -17
  144. package/sdk-core/sdk/src/workflow_future.rs +16 -15
  145. package/sdk-core/sdk-core-protos/Cargo.toml +5 -2
  146. package/sdk-core/sdk-core-protos/build.rs +36 -2
  147. package/sdk-core/sdk-core-protos/src/history_builder.rs +138 -106
  148. package/sdk-core/sdk-core-protos/src/history_info.rs +10 -1
  149. package/sdk-core/sdk-core-protos/src/lib.rs +272 -87
  150. package/sdk-core/sdk-core-protos/src/task_token.rs +12 -2
  151. package/sdk-core/test-utils/Cargo.toml +3 -1
  152. package/sdk-core/test-utils/src/canned_histories.rs +106 -296
  153. package/sdk-core/test-utils/src/histfetch.rs +1 -1
  154. package/sdk-core/test-utils/src/lib.rs +82 -23
  155. package/sdk-core/test-utils/src/wf_input_saver.rs +50 -0
  156. package/sdk-core/test-utils/src/workflows.rs +29 -0
  157. package/sdk-core/tests/fuzzy_workflow.rs +130 -0
  158. package/sdk-core/tests/{load_tests.rs → heavy_tests.rs} +125 -51
  159. package/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +25 -3
  160. package/sdk-core/tests/integ_tests/heartbeat_tests.rs +10 -5
  161. package/sdk-core/tests/integ_tests/metrics_tests.rs +218 -16
  162. package/sdk-core/tests/integ_tests/polling_tests.rs +4 -47
  163. package/sdk-core/tests/integ_tests/queries_tests.rs +5 -128
  164. package/sdk-core/tests/integ_tests/visibility_tests.rs +83 -25
  165. package/sdk-core/tests/integ_tests/workflow_tests/activities.rs +161 -72
  166. package/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +1 -0
  167. package/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +6 -13
  168. package/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +80 -3
  169. package/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +6 -2
  170. package/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +3 -10
  171. package/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +94 -200
  172. package/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +2 -4
  173. package/sdk-core/tests/integ_tests/workflow_tests/patches.rs +34 -28
  174. package/sdk-core/tests/integ_tests/workflow_tests/replay.rs +76 -7
  175. package/sdk-core/tests/integ_tests/workflow_tests/resets.rs +1 -0
  176. package/sdk-core/tests/integ_tests/workflow_tests/signals.rs +18 -14
  177. package/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +6 -20
  178. package/sdk-core/tests/integ_tests/workflow_tests/timers.rs +10 -21
  179. package/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +7 -8
  180. package/sdk-core/tests/integ_tests/workflow_tests.rs +13 -14
  181. package/sdk-core/tests/main.rs +3 -13
  182. package/sdk-core/tests/runner.rs +75 -36
  183. package/sdk-core/tests/wf_input_replay.rs +32 -0
  184. package/src/conversions.rs +14 -8
  185. package/src/runtime.rs +9 -8
  186. package/ts/index.ts +8 -6
  187. package/sdk-core/bridge-ffi/Cargo.toml +0 -24
  188. package/sdk-core/bridge-ffi/LICENSE.txt +0 -23
  189. package/sdk-core/bridge-ffi/build.rs +0 -25
  190. package/sdk-core/bridge-ffi/include/sdk-core-bridge.h +0 -224
  191. package/sdk-core/bridge-ffi/src/lib.rs +0 -746
  192. package/sdk-core/bridge-ffi/src/wrappers.rs +0 -221
  193. package/sdk-core/protos/local/temporal/sdk/core/bridge/bridge.proto +0 -210
  194. package/sdk-core/sdk/src/conversions.rs +0 -8
@@ -15,10 +15,11 @@ categories = ["development-tools"]
15
15
  [dependencies]
16
16
  async-trait = "0.1"
17
17
  derive_builder = "0.12"
18
- opentelemetry = "0.18"
19
18
  prost-types = "0.11"
19
+ serde = { version = "1.0", default_features = false, features = ["derive"] }
20
20
  serde_json = "1.0"
21
21
  thiserror = "1.0"
22
+ tokio = "1.24"
22
23
  tonic = "0.8"
23
24
  tracing-core = "0.1"
24
25
  url = "2.3"
@@ -1,10 +1,6 @@
1
1
  //! Error types exposed by public APIs
2
2
 
3
- use prost_types::TimestampError;
4
- use temporal_sdk_core_protos::coresdk::{
5
- activity_result::ActivityExecutionResult,
6
- workflow_activation::remove_from_cache::EvictionReason,
7
- };
3
+ use temporal_sdk_core_protos::coresdk::activity_result::ActivityExecutionResult;
8
4
 
9
5
  /// Errors thrown by [crate::Worker::poll_workflow_activation]
10
6
  #[derive(thiserror::Error, Debug)]
@@ -64,32 +60,3 @@ pub enum CompleteActivityError {
64
60
  completion: Option<ActivityExecutionResult>,
65
61
  },
66
62
  }
67
-
68
- /// Errors thrown inside of workflow machines
69
- #[derive(thiserror::Error, Debug)]
70
- pub enum WFMachinesError {
71
- #[error("Nondeterminism error: {0}")]
72
- Nondeterminism(String),
73
- #[error("Fatal error in workflow machines: {0}")]
74
- Fatal(String),
75
-
76
- #[error("Unrecoverable network error while fetching history: {0}")]
77
- HistoryFetchingError(tonic::Status),
78
- }
79
-
80
- impl WFMachinesError {
81
- pub fn evict_reason(&self) -> EvictionReason {
82
- match self {
83
- WFMachinesError::Nondeterminism(_) => EvictionReason::Nondeterminism,
84
- WFMachinesError::Fatal(_) | WFMachinesError::HistoryFetchingError(_) => {
85
- EvictionReason::Fatal
86
- }
87
- }
88
- }
89
- }
90
-
91
- impl From<TimestampError> for WFMachinesError {
92
- fn from(_: TimestampError) -> Self {
93
- Self::Fatal("Could not decode timestamp".to_string())
94
- }
95
- }
@@ -45,13 +45,17 @@ pub trait Worker: Send + Sync {
45
45
  /// concurrently internally.
46
46
  async fn poll_activity_task(&self) -> Result<ActivityTask, PollActivityError>;
47
47
 
48
- /// Tell the worker that a workflow activation has completed. May be freely called concurrently.
48
+ /// Tell the worker that a workflow activation has completed. May (and should) be freely called
49
+ /// concurrently. The future may take some time to resolve, as fetching more events might be
50
+ /// necessary for completion to... complete - thus SDK implementers should make sure they do
51
+ /// not serialize completions.
49
52
  async fn complete_workflow_activation(
50
53
  &self,
51
54
  completion: WorkflowActivationCompletion,
52
55
  ) -> Result<(), CompleteWfError>;
53
56
 
54
- /// Tell the worker that an activity has finished executing. May be freely called concurrently.
57
+ /// Tell the worker that an activity has finished executing. May (and should) be freely called
58
+ /// concurrently.
55
59
  async fn complete_activity_task(
56
60
  &self,
57
61
  completion: ActivityTaskCompletion,
@@ -93,17 +97,23 @@ pub trait Worker: Send + Sync {
93
97
  fn initiate_shutdown(&self);
94
98
 
95
99
  /// Initiates async shutdown procedure, eventually ceases all polling of the server and shuts
96
- /// down this worker. [Worker::poll_workflow_activation] should be called until it
97
- /// returns [PollWfError::ShutDown] to ensure that any workflows which are still undergoing
98
- /// replay have an opportunity to finish. This means that the lang sdk will need to call
99
- /// [Worker::complete_workflow_activation] for those workflows until they are done. At that point,
100
- /// the lang SDK can end the process, or drop the [Worker] instance, which will close the
101
- /// connection.
100
+ /// down this worker. [Worker::poll_workflow_activation] and [Worker::poll_activity_task] should
101
+ /// be called until both return a `ShutDown` error to ensure that all outstanding work is
102
+ /// complete. This means that the lang sdk will need to call
103
+ /// [Worker::complete_workflow_activation] and [Worker::complete_activity_task] for those
104
+ /// workflows & activities until they are done. At that point, the lang SDK can end the process,
105
+ /// or drop the [Worker] instance via [Worker::finalize_shutdown], which will close the
106
+ /// connection and free resources. If you have set [WorkerConfig::no_remote_activities], you may
107
+ /// skip calling [Worker::poll_activity_task].
108
+ ///
109
+ /// Lang implementations should use [Worker::initiate_shutdown] followed by
110
+ /// [Worker::finalize_shutdown].
102
111
  async fn shutdown(&self);
103
112
 
104
113
  /// Completes shutdown and frees all resources. You should avoid simply dropping workers, as
105
114
  /// this does not allow async tasks to report any panics that may have occurred cleanly.
106
115
  ///
107
- /// This should be called only after [Worker::shutdown] has resolved.
116
+ /// This should be called only after [Worker::shutdown] has resolved and/or both polling
117
+ /// functions have returned `ShutDown` errors.
108
118
  async fn finalize_shutdown(self);
109
119
  }
@@ -1,4 +1,3 @@
1
- use opentelemetry::metrics::Meter;
2
1
  use std::{
3
2
  collections::HashMap,
4
3
  net::SocketAddr,
@@ -18,11 +17,6 @@ pub trait CoreTelemetry {
18
17
  /// Returns the list of logs from oldest to newest. Returns an empty vec if the feature is not
19
18
  /// configured.
20
19
  fn fetch_buffered_logs(&self) -> Vec<CoreLog>;
21
-
22
- /// If metrics gathering is enabled, returns the OTel meter for core telemetry, which can be
23
- /// used to create metrics instruments, or passed to things that create/record metrics (ex:
24
- /// clients).
25
- fn get_metric_meter(&self) -> Option<&Meter>;
26
20
  }
27
21
 
28
22
  /// Telemetry configuration options. Construct with [TelemetryOptionsBuilder]
@@ -47,6 +41,10 @@ pub struct TelemetryOptions {
47
41
  /// Specifies the aggregation temporality for metric export. Defaults to cumulative.
48
42
  #[builder(default = "MetricTemporality::Cumulative")]
49
43
  pub metric_temporality: MetricTemporality,
44
+
45
+ // A map of tags to be applied to all metrics
46
+ #[builder(default)]
47
+ pub global_tags: HashMap<String, String>,
50
48
  }
51
49
 
52
50
  /// Options for exporting to an OpenTelemetry Collector
@@ -1,7 +1,8 @@
1
1
  use std::time::Duration;
2
+ use tokio::sync::mpsc::UnboundedSender;
2
3
 
3
4
  /// Defines per-worker configuration options
4
- #[derive(Debug, Clone, derive_builder::Builder)]
5
+ #[derive(Debug, Clone, derive_builder::Builder, serde::Serialize, serde::Deserialize)]
5
6
  #[builder(setter(into), build_fn(validate = "Self::validate"))]
6
7
  #[non_exhaustive]
7
8
  pub struct WorkerConfig {
@@ -105,6 +106,23 @@ pub struct WorkerConfig {
105
106
  /// up during shutdown, setting this true saves some back-and-forth.
106
107
  #[builder(default = "false")]
107
108
  pub ignore_evicts_on_shutdown: bool,
109
+
110
+ /// Maximum number of next page (or initial) history event listing requests we'll make
111
+ /// concurrently. I don't this it's worth exposing this to users until we encounter a reason.
112
+ #[builder(default = "5")]
113
+ pub fetching_concurrency: usize,
114
+
115
+ /// If set, and the `save_wf_inputs` feature is enabled in core, will be sent a serialized
116
+ /// instance of every input to workflow state in order. This is for testing purposes, SDK
117
+ /// implementations never need to care about it.
118
+ #[builder(default)]
119
+ #[serde(skip)]
120
+ pub wf_state_inputs: Option<UnboundedSender<Vec<u8>>>,
121
+
122
+ /// If set, core will issue cancels for all outstanding activities after shutdown has been
123
+ /// initiated and this amount of time has elapsed.
124
+ #[builder(default)]
125
+ pub graceful_shutdown_period: Option<Duration>,
108
126
  }
109
127
 
110
128
  impl WorkerConfig {
@@ -1,187 +1,162 @@
1
1
  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
2
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3
3
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
- <!-- Generated by graphviz version 2.43.0 (0)
4
+ <!-- Generated by graphviz version 7.0.4 (0)
5
5
  -->
6
- <!-- Title: %3 Pages: 1 -->
7
- <svg width="525pt" height="476pt"
8
- viewBox="0.00 0.00 524.50 476.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
- <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 472)">
10
- <title>%3</title>
11
- <polygon fill="white" stroke="transparent" points="-4,4 -4,-472 520.5,-472 520.5,4 -4,4"/>
6
+ <!-- Pages: 1 -->
7
+ <svg width="436pt" height="404pt"
8
+ viewBox="0.00 0.00 436.26 404.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
+ <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 400)">
10
+ <polygon fill="white" stroke="none" points="-4,4 -4,-400 432.26,-400 432.26,4 -4,4"/>
12
11
  <!-- 0 -->
13
12
  <g id="node1" class="node">
14
13
  <title>0</title>
15
- <polygon fill="none" stroke="black" points="173,-468 0,-468 0,-432 173,-432 173,-468"/>
16
- <text text-anchor="middle" x="86.5" y="-446.3" font-family="Times,serif" font-size="14.00">temporal&#45;sdk&#45;core&#45;bridge&#45;ffi</text>
14
+ <polygon fill="none" stroke="black" points="255,-396 139,-396 139,-360 255,-360 255,-396"/>
15
+ <text text-anchor="middle" x="197" y="-374.3" font-family="Times,serif" font-size="14.00">temporal&#45;sdk&#45;core</text>
17
16
  </g>
18
17
  <!-- 1 -->
19
18
  <g id="node2" class="node">
20
19
  <title>1</title>
21
- <polygon fill="none" stroke="black" points="369.5,-396 253.5,-396 253.5,-360 369.5,-360 369.5,-396"/>
22
- <text text-anchor="middle" x="311.5" y="-374.3" font-family="Times,serif" font-size="14.00">temporal&#45;sdk&#45;core</text>
20
+ <polygon fill="none" stroke="black" points="58,-324 0,-324 0,-288 58,-288 58,-324"/>
21
+ <text text-anchor="middle" x="29" y="-302.3" font-family="Times,serif" font-size="14.00">rustfsm</text>
23
22
  </g>
24
23
  <!-- 0&#45;&gt;1 -->
25
24
  <g id="edge1" class="edge">
26
25
  <title>0&#45;&gt;1</title>
27
- <path fill="none" stroke="black" d="M141.25,-431.97C173.1,-422.06 213.42,-409.51 246.83,-399.12"/>
28
- <polygon fill="black" stroke="black" points="247.99,-402.42 256.5,-396.11 245.91,-395.74 247.99,-402.42"/>
26
+ <path fill="none" stroke="black" d="M155.04,-359.52C128.68,-348.53 94.87,-334.45 68.91,-323.63"/>
27
+ <polygon fill="black" stroke="black" points="70.28,-320.41 59.7,-319.79 67.59,-326.87 70.28,-320.41"/>
29
28
  </g>
30
- <!-- 6 -->
31
- <g id="node5" class="node">
32
- <title>6</title>
33
- <polygon fill="none" stroke="black" points="401,-36 246,-36 246,0 401,0 401,-36"/>
34
- <text text-anchor="middle" x="323.5" y="-14.3" font-family="Times,serif" font-size="14.00">temporal&#45;sdk&#45;core&#45;protos</text>
35
- </g>
36
- <!-- 0&#45;&gt;6 -->
37
- <g id="edge3" class="edge">
38
- <title>0&#45;&gt;6</title>
39
- <path fill="none" stroke="black" d="M78.81,-431.91C67.71,-405.62 48.5,-353.45 48.5,-307 48.5,-307 48.5,-307 48.5,-161 48.5,-75.33 155.16,-41.29 235.63,-27.8"/>
40
- <polygon fill="black" stroke="black" points="236.47,-31.21 245.8,-26.18 235.37,-24.3 236.47,-31.21"/>
41
- </g>
42
- <!-- 7 -->
43
- <g id="node6" class="node">
44
- <title>7</title>
45
- <polygon fill="none" stroke="black" points="266,-180 129,-180 129,-144 266,-144 266,-180"/>
46
- <text text-anchor="middle" x="197.5" y="-158.3" font-family="Times,serif" font-size="14.00">temporal&#45;sdk&#45;core&#45;api</text>
29
+ <!-- 3 -->
30
+ <g id="node3" class="node">
31
+ <title>3</title>
32
+ <polygon fill="none" stroke="black" points="368,-108 268,-108 268,-72 368,-72 368,-108"/>
33
+ <text text-anchor="middle" x="318" y="-86.3" font-family="Times,serif" font-size="14.00">temporal&#45;client</text>
47
34
  </g>
48
- <!-- 0&#45;&gt;7 -->
35
+ <!-- 0&#45;&gt;3 -->
49
36
  <g id="edge2" class="edge">
50
- <title>0&#45;&gt;7</title>
51
- <path fill="none" stroke="black" d="M85.71,-431.86C84.92,-401.65 85.97,-337.48 105.5,-288 120.88,-249.04 151.5,-211.31 173.18,-187.68"/>
52
- <polygon fill="black" stroke="black" points="175.88,-189.92 180.16,-180.23 170.77,-185.14 175.88,-189.92"/>
37
+ <title>0&#45;&gt;3</title>
38
+ <path fill="none" stroke="black" d="M255.43,-370.58C312.02,-363.02 391.98,-348.3 411,-324 461.94,-258.91 386.25,-162.28 343.68,-116.65"/>
39
+ <polygon fill="black" stroke="black" points="346.38,-114.4 336.95,-109.58 341.31,-119.23 346.38,-114.4"/>
53
40
  </g>
54
- <!-- 2 -->
55
- <g id="node3" class="node">
56
- <title>2</title>
57
- <polygon fill="none" stroke="black" points="172.5,-324 114.5,-324 114.5,-288 172.5,-288 172.5,-324"/>
58
- <text text-anchor="middle" x="143.5" y="-302.3" font-family="Times,serif" font-size="14.00">rustfsm</text>
41
+ <!-- 4 -->
42
+ <g id="node4" class="node">
43
+ <title>4</title>
44
+ <polygon fill="none" stroke="black" points="298.5,-36 143.5,-36 143.5,0 298.5,0 298.5,-36"/>
45
+ <text text-anchor="middle" x="221" y="-14.3" font-family="Times,serif" font-size="14.00">temporal&#45;sdk&#45;core&#45;protos</text>
59
46
  </g>
60
- <!-- 1&#45;&gt;2 -->
61
- <g id="edge4" class="edge">
62
- <title>1&#45;&gt;2</title>
63
- <path fill="none" stroke="black" d="M270.4,-359.88C243.41,-348.63 208.34,-334.02 181.91,-323"/>
64
- <polygon fill="black" stroke="black" points="183.17,-319.74 172.59,-319.12 180.47,-326.2 183.17,-319.74"/>
47
+ <!-- 0&#45;&gt;4 -->
48
+ <g id="edge5" class="edge">
49
+ <title>0&#45;&gt;4</title>
50
+ <path fill="none" stroke="black" d="M170.41,-359.59C137.57,-335.74 86,-289.6 86,-235 86,-235 86,-235 86,-161 86,-107.38 137.19,-65.95 176.53,-42.03"/>
51
+ <polygon fill="black" stroke="black" points="178.08,-45.18 184.93,-37.1 174.53,-39.14 178.08,-45.18"/>
65
52
  </g>
66
53
  <!-- 5 -->
67
- <g id="node4" class="node">
54
+ <g id="node5" class="node">
68
55
  <title>5</title>
69
- <polygon fill="none" stroke="black" points="412.5,-108 312.5,-108 312.5,-72 412.5,-72 412.5,-108"/>
70
- <text text-anchor="middle" x="362.5" y="-86.3" font-family="Times,serif" font-size="14.00">temporal&#45;client</text>
56
+ <polygon fill="none" stroke="black" points="289.5,-180 152.5,-180 152.5,-144 289.5,-144 289.5,-180"/>
57
+ <text text-anchor="middle" x="221" y="-158.3" font-family="Times,serif" font-size="14.00">temporal&#45;sdk&#45;core&#45;api</text>
71
58
  </g>
72
- <!-- 1&#45;&gt;5 -->
73
- <g id="edge5" class="edge">
74
- <title>1&#45;&gt;5</title>
75
- <path fill="none" stroke="black" d="M369.63,-361.71C391.38,-353.54 414.82,-341.45 431.5,-324 455.23,-299.18 453.17,-285.75 459.5,-252 462.45,-236.27 464.68,-231.14 459.5,-216 445.69,-175.67 412.97,-138.29 389.35,-115.12"/>
76
- <polygon fill="black" stroke="black" points="391.67,-112.5 382.03,-108.11 386.83,-117.55 391.67,-112.5"/>
59
+ <!-- 0&#45;&gt;5 -->
60
+ <g id="edge4" class="edge">
61
+ <title>0&#45;&gt;5</title>
62
+ <path fill="none" stroke="black" d="M188.08,-359.89C173.64,-329.74 148.72,-265.64 169,-216 173.27,-205.55 180.7,-196.05 188.64,-188.07"/>
63
+ <polygon fill="black" stroke="black" points="190.92,-190.72 195.87,-181.35 186.16,-185.59 190.92,-190.72"/>
77
64
  </g>
78
- <!-- 1&#45;&gt;6 -->
79
- <g id="edge8" class="edge">
80
- <title>1&#45;&gt;6</title>
81
- <path fill="none" stroke="black" d="M369.7,-363.34C430.3,-345.24 516.5,-306.87 516.5,-235 516.5,-235 516.5,-235 516.5,-161 516.5,-98.28 449.55,-60.18 394.51,-39.46"/>
82
- <polygon fill="black" stroke="black" points="395.69,-36.16 385.1,-36.04 393.3,-42.74 395.69,-36.16"/>
65
+ <!-- 6 -->
66
+ <g id="node6" class="node">
67
+ <title>6</title>
68
+ <polygon fill="none" stroke="black" points="266.5,-252 177.5,-252 177.5,-216 266.5,-216 266.5,-252"/>
69
+ <text text-anchor="middle" x="222" y="-230.3" font-family="Times,serif" font-size="14.00">temporal&#45;sdk</text>
83
70
  </g>
84
- <!-- 1&#45;&gt;7 -->
85
- <g id="edge7" class="edge">
86
- <title>1&#45;&gt;7</title>
87
- <path fill="none" stroke="black" d="M264.03,-359.96C247.39,-351.64 230.2,-339.91 219.5,-324 192.37,-283.65 191.8,-224.66 194.32,-190.41"/>
88
- <polygon fill="black" stroke="black" points="197.83,-190.49 195.22,-180.22 190.86,-189.87 197.83,-190.49"/>
71
+ <!-- 0&#45;&gt;6 -->
72
+ <g id="edge3" class="edge">
73
+ <title>0&#45;&gt;6</title>
74
+ <path fill="none" stroke="blue" d="M195.45,-359.59C197.18,-335.5 204.59,-291.75 211.56,-263.03"/>
75
+ <polygon fill="blue" stroke="blue" points="214.89,-264.13 214.02,-253.58 208.12,-262.37 214.89,-264.13"/>
89
76
  </g>
90
- <!-- 8 -->
77
+ <!-- 7 -->
91
78
  <g id="node7" class="node">
92
- <title>8</title>
93
- <polygon fill="none" stroke="black" points="450,-252 361,-252 361,-216 450,-216 450,-252"/>
94
- <text text-anchor="middle" x="405.5" y="-230.3" font-family="Times,serif" font-size="14.00">temporal&#45;sdk</text>
79
+ <title>7</title>
80
+ <polygon fill="none" stroke="black" points="401.5,-324 234.5,-324 234.5,-288 401.5,-288 401.5,-324"/>
81
+ <text text-anchor="middle" x="318" y="-302.3" font-family="Times,serif" font-size="14.00">temporal&#45;sdk&#45;core&#45;test&#45;utils</text>
95
82
  </g>
96
- <!-- 1&#45;&gt;8 -->
83
+ <!-- 0&#45;&gt;7 -->
97
84
  <g id="edge6" class="edge">
98
- <title>1&#45;&gt;8</title>
99
- <path fill="none" stroke="blue" d="M354.05,-359.78C369.82,-351.61 386.07,-340.02 395.5,-324 406.38,-305.52 405.76,-280.93 404.34,-262.27"/>
100
- <polygon fill="blue" stroke="blue" points="407.81,-261.75 403.49,-252.07 400.83,-262.32 407.81,-261.75"/>
85
+ <title>0&#45;&gt;7</title>
86
+ <path fill="none" stroke="blue" d="M221.29,-359.52C235.94,-350.51 254.96,-339.42 272.29,-329.76"/>
87
+ <polygon fill="blue" stroke="blue" points="273.86,-332.89 280.93,-324.99 270.48,-326.76 273.86,-332.89"/>
101
88
  </g>
102
- <!-- 9 -->
103
- <g id="node8" class="node">
104
- <title>9</title>
105
- <polygon fill="none" stroke="black" points="395,-324 228,-324 228,-288 395,-288 395,-324"/>
106
- <text text-anchor="middle" x="311.5" y="-302.3" font-family="Times,serif" font-size="14.00">temporal&#45;sdk&#45;core&#45;test&#45;utils</text>
89
+ <!-- 3&#45;&gt;4 -->
90
+ <g id="edge7" class="edge">
91
+ <title>3&#45;&gt;4</title>
92
+ <path fill="none" stroke="black" d="M294.02,-71.7C282.01,-63.03 267.28,-52.4 254.21,-42.96"/>
93
+ <polygon fill="black" stroke="black" points="256.42,-40.25 246.27,-37.23 252.33,-45.92 256.42,-40.25"/>
107
94
  </g>
108
- <!-- 1&#45;&gt;9 -->
109
- <g id="edge9" class="edge">
110
- <title>1&#45;&gt;9</title>
111
- <path fill="none" stroke="blue" d="M305.58,-359.7C304.79,-351.98 304.56,-342.71 304.9,-334.11"/>
112
- <polygon fill="blue" stroke="blue" points="308.4,-334.32 305.6,-324.1 301.42,-333.84 308.4,-334.32"/>
95
+ <!-- 5&#45;&gt;3 -->
96
+ <g id="edge8" class="edge">
97
+ <title>5&#45;&gt;3</title>
98
+ <path fill="none" stroke="black" d="M244.98,-143.7C256.99,-135.03 271.72,-124.4 284.79,-114.96"/>
99
+ <polygon fill="black" stroke="black" points="286.67,-117.92 292.73,-109.23 282.58,-112.25 286.67,-117.92"/>
113
100
  </g>
114
- <!-- 5&#45;&gt;6 -->
115
- <g id="edge10" class="edge">
116
- <title>5&#45;&gt;6</title>
117
- <path fill="none" stroke="black" d="M352.86,-71.7C348.37,-63.64 342.94,-53.89 337.98,-44.98"/>
118
- <polygon fill="black" stroke="black" points="340.95,-43.14 333.03,-36.1 334.84,-46.54 340.95,-43.14"/>
101
+ <!-- 5&#45;&gt;4 -->
102
+ <g id="edge9" class="edge">
103
+ <title>5&#45;&gt;4</title>
104
+ <path fill="none" stroke="black" d="M221,-143.59C221,-119.61 221,-76.14 221,-47.42"/>
105
+ <polygon fill="black" stroke="black" points="224.5,-47.62 221,-37.62 217.5,-47.62 224.5,-47.62"/>
119
106
  </g>
120
- <!-- 7&#45;&gt;5 -->
107
+ <!-- 6&#45;&gt;0 -->
121
108
  <g id="edge11" class="edge">
122
- <title>7&#45;&gt;5</title>
123
- <path fill="none" stroke="black" d="M237.86,-143.88C260.52,-134.26 288.97,-122.19 312.97,-112.01"/>
124
- <polygon fill="black" stroke="black" points="314.43,-115.2 322.27,-108.07 311.69,-108.75 314.43,-115.2"/>
125
- </g>
126
- <!-- 7&#45;&gt;6 -->
127
- <g id="edge12" class="edge">
128
- <title>7&#45;&gt;6</title>
129
- <path fill="none" stroke="black" d="M210.74,-143.85C225.01,-125.62 248.63,-96.14 270.5,-72 279.24,-62.36 289.24,-52.16 298.18,-43.31"/>
130
- <polygon fill="black" stroke="black" points="300.7,-45.74 305.39,-36.24 295.8,-40.75 300.7,-45.74"/>
109
+ <title>6&#45;&gt;0</title>
110
+ <path fill="none" stroke="black" d="M223.57,-252.11C221.89,-276.03 214.51,-319.76 207.53,-348.6"/>
111
+ <polygon fill="black" stroke="black" points="204.18,-347.56 205.06,-358.12 210.96,-349.32 204.18,-347.56"/>
131
112
  </g>
132
- <!-- 8&#45;&gt;1 -->
133
- <g id="edge14" class="edge">
134
- <title>8&#45;&gt;1</title>
135
- <path fill="none" stroke="black" d="M416.59,-252.07C423.07,-271.04 426.51,-301.89 413.5,-324 405.57,-337.47 392.82,-347.8 378.95,-355.62"/>
136
- <polygon fill="black" stroke="black" points="376.99,-352.69 369.71,-360.39 380.2,-358.91 376.99,-352.69"/>
113
+ <!-- 6&#45;&gt;3 -->
114
+ <g id="edge10" class="edge">
115
+ <title>6&#45;&gt;3</title>
116
+ <path fill="none" stroke="black" d="M258.49,-215.67C273.19,-206.93 288.99,-194.98 299,-180 310.95,-162.11 315.57,-138.07 317.27,-119.49"/>
117
+ <polygon fill="black" stroke="black" points="320.75,-119.9 317.91,-109.69 313.76,-119.44 320.75,-119.9"/>
137
118
  </g>
138
- <!-- 8&#45;&gt;5 -->
119
+ <!-- 6&#45;&gt;4 -->
139
120
  <g id="edge13" class="edge">
140
- <title>8&#45;&gt;5</title>
141
- <path fill="none" stroke="black" d="M400.31,-215.87C392.95,-191.56 379.4,-146.82 370.68,-118.01"/>
142
- <polygon fill="black" stroke="black" points="373.95,-116.75 367.71,-108.19 367.25,-118.77 373.95,-116.75"/>
121
+ <title>6&#45;&gt;4</title>
122
+ <path fill="none" stroke="black" d="M181.41,-215.53C166.89,-207.06 152.12,-195.34 144,-180 136.51,-165.86 139.64,-159.39 144,-144 154.67,-106.33 180.26,-68.86 199.02,-44.92"/>
123
+ <polygon fill="black" stroke="black" points="201.6,-47.29 205.13,-37.31 196.14,-42.91 201.6,-47.29"/>
124
+ </g>
125
+ <!-- 6&#45;&gt;5 -->
126
+ <g id="edge12" class="edge">
127
+ <title>6&#45;&gt;5</title>
128
+ <path fill="none" stroke="black" d="M221.75,-215.7C221.65,-208.41 221.52,-199.73 221.41,-191.54"/>
129
+ <polygon fill="black" stroke="black" points="224.91,-191.57 221.27,-181.62 217.91,-191.67 224.91,-191.57"/>
143
130
  </g>
144
- <!-- 8&#45;&gt;6 -->
131
+ <!-- 7&#45;&gt;0 -->
145
132
  <g id="edge16" class="edge">
146
- <title>8&#45;&gt;6</title>
147
- <path fill="none" stroke="black" d="M413.59,-215.56C426.78,-184.32 448.83,-117.84 421.5,-72 413.54,-58.64 400.91,-48.45 387.34,-40.75"/>
148
- <polygon fill="black" stroke="black" points="388.8,-37.56 378.32,-36.04 385.56,-43.77 388.8,-37.56"/>
133
+ <title>7&#45;&gt;0</title>
134
+ <path fill="none" stroke="black" d="M294.08,-324.26C279.5,-333.23 260.5,-344.31 243.14,-354"/>
135
+ <polygon fill="black" stroke="black" points="241.54,-350.89 234.48,-358.78 244.93,-357.01 241.54,-350.89"/>
149
136
  </g>
150
- <!-- 8&#45;&gt;7 -->
151
- <g id="edge15" class="edge">
152
- <title>8&#45;&gt;7</title>
153
- <path fill="none" stroke="black" d="M360.88,-217.98C330.78,-207.86 290.71,-194.37 257.79,-183.29"/>
154
- <polygon fill="black" stroke="black" points="258.86,-179.96 248.26,-180.08 256.62,-186.59 258.86,-179.96"/>
137
+ <!-- 7&#45;&gt;3 -->
138
+ <g id="edge14" class="edge">
139
+ <title>7&#45;&gt;3</title>
140
+ <path fill="none" stroke="black" d="M318.57,-287.61C319.46,-258.08 320.99,-196.26 320,-144 319.85,-136.05 319.57,-127.44 319.27,-119.51"/>
141
+ <polygon fill="black" stroke="black" points="322.78,-119.54 318.87,-109.69 315.78,-119.83 322.78,-119.54"/>
155
142
  </g>
156
- <!-- 9&#45;&gt;1 -->
157
- <g id="edge19" class="edge">
158
- <title>9&#45;&gt;1</title>
159
- <path fill="none" stroke="black" d="M317.4,-324.1C318.2,-331.79 318.44,-341.05 318.1,-349.67"/>
160
- <polygon fill="black" stroke="black" points="314.61,-349.48 317.42,-359.7 321.59,-349.96 314.61,-349.48"/>
143
+ <!-- 7&#45;&gt;4 -->
144
+ <g id="edge18" class="edge">
145
+ <title>7&#45;&gt;4</title>
146
+ <path fill="none" stroke="black" d="M331.1,-287.73C360.65,-246.5 426.21,-140.69 377,-72 361.19,-49.92 335.65,-36.93 309.77,-29.32"/>
147
+ <polygon fill="black" stroke="black" points="310.71,-25.95 300.15,-26.77 308.92,-32.72 310.71,-25.95"/>
161
148
  </g>
162
- <!-- 9&#45;&gt;5 -->
149
+ <!-- 7&#45;&gt;5 -->
163
150
  <g id="edge17" class="edge">
164
- <title>9&#45;&gt;5</title>
165
- <path fill="none" stroke="black" d="M315.59,-287.85C324.43,-250.75 345.39,-162.81 356.04,-118.1"/>
166
- <polygon fill="black" stroke="black" points="359.48,-118.77 358.39,-108.23 352.67,-117.15 359.48,-118.77"/>
167
- </g>
168
- <!-- 9&#45;&gt;6 -->
169
- <g id="edge21" class="edge">
170
- <title>9&#45;&gt;6</title>
171
- <path fill="none" stroke="black" d="M308.43,-287.86C302.03,-249.05 288.97,-151.64 303.5,-72 305.11,-63.2 308.1,-53.95 311.29,-45.7"/>
172
- <polygon fill="black" stroke="black" points="314.62,-46.79 315.19,-36.21 308.15,-44.12 314.62,-46.79"/>
173
- </g>
174
- <!-- 9&#45;&gt;7 -->
175
- <g id="edge20" class="edge">
176
- <title>9&#45;&gt;7</title>
177
- <path fill="none" stroke="black" d="M297.75,-287.87C277.81,-263.03 240.73,-216.85 217.68,-188.14"/>
178
- <polygon fill="black" stroke="black" points="220.29,-185.8 211.3,-180.19 214.83,-190.18 220.29,-185.8"/>
179
- </g>
180
- <!-- 9&#45;&gt;8 -->
181
- <g id="edge18" class="edge">
182
- <title>9&#45;&gt;8</title>
183
- <path fill="none" stroke="black" d="M334.74,-287.7C346.69,-278.8 361.42,-267.82 374.35,-258.2"/>
184
- <polygon fill="black" stroke="black" points="376.6,-260.88 382.53,-252.1 372.42,-255.27 376.6,-260.88"/>
151
+ <title>7&#45;&gt;5</title>
152
+ <path fill="none" stroke="black" d="M311.96,-287.6C304.98,-268.89 292.34,-238.77 276,-216 268.79,-205.96 259.54,-196.2 250.69,-187.86"/>
153
+ <polygon fill="black" stroke="black" points="253.28,-185.48 243.53,-181.34 248.57,-190.66 253.28,-185.48"/>
154
+ </g>
155
+ <!-- 7&#45;&gt;6 -->
156
+ <g id="edge15" class="edge">
157
+ <title>7&#45;&gt;6</title>
158
+ <path fill="none" stroke="black" d="M294.27,-287.7C282.38,-279.03 267.81,-268.4 254.86,-258.96"/>
159
+ <polygon fill="black" stroke="black" points="257.16,-256.3 247.01,-253.24 253.03,-261.96 257.16,-256.3"/>
185
160
  </g>
186
161
  </g>
187
162
  </svg>
@@ -0,0 +1,5 @@
1
+ # Run this from the repo root
2
+ cargo depgraph \
3
+ --focus temporal-sdk,temporal-sdk-core-protos,temporal-client,temporal-sdk-core-api,temporal-sdk-core,rustfsm \
4
+ --dev-deps \
5
+ | dot -Tsvg > etc/deps.svg