@temporalio/core-bridge 1.13.2 → 1.14.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 (388) hide show
  1. package/Cargo.lock +135 -100
  2. package/Cargo.toml +3 -2
  3. package/{sdk-core/fsm/rustfsm_trait/LICENSE.txt → LICENSE} +5 -5
  4. package/README.md +0 -1
  5. package/bridge-macros/Cargo.toml +16 -0
  6. package/bridge-macros/src/derive_js_function.rs +126 -0
  7. package/bridge-macros/src/derive_tryfromjs.rs +138 -0
  8. package/bridge-macros/src/derive_tryintojs.rs +151 -0
  9. package/bridge-macros/src/lib.rs +42 -0
  10. package/lib/native.d.ts +13 -6
  11. package/package.json +6 -5
  12. package/releases/aarch64-apple-darwin/index.node +0 -0
  13. package/releases/aarch64-unknown-linux-gnu/index.node +0 -0
  14. package/releases/x86_64-apple-darwin/index.node +0 -0
  15. package/releases/x86_64-pc-windows-msvc/index.node +0 -0
  16. package/releases/x86_64-unknown-linux-gnu/index.node +0 -0
  17. package/sdk-core/.cargo/config.toml +9 -3
  18. package/sdk-core/.github/workflows/per-pr.yml +42 -5
  19. package/sdk-core/AGENTS.md +17 -19
  20. package/sdk-core/Cargo.toml +6 -7
  21. package/sdk-core/README.md +12 -15
  22. package/sdk-core/arch_docs/diagrams/deps.svg +102 -0
  23. package/sdk-core/{client → crates/client}/Cargo.toml +7 -9
  24. package/sdk-core/{client → crates/client}/src/lib.rs +110 -159
  25. package/sdk-core/{client → crates/client}/src/metrics.rs +1 -1
  26. package/sdk-core/{client → crates/client}/src/raw.rs +73 -44
  27. package/sdk-core/crates/client/src/request_extensions.rs +40 -0
  28. package/sdk-core/{client → crates/client}/src/retry.rs +24 -17
  29. package/sdk-core/crates/client/src/worker/mod.rs +1468 -0
  30. package/sdk-core/{client → crates/client}/src/workflow_handle/mod.rs +4 -4
  31. package/sdk-core/{core-api → crates/common}/Cargo.toml +17 -8
  32. package/sdk-core/crates/common/protos/api_cloud_upstream/VERSION +1 -0
  33. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/account/v1/message.proto +18 -0
  34. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/cloudservice/v1/request_response.proto +38 -11
  35. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/cloudservice/v1/service.proto +21 -4
  36. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/operation/v1/message.proto +6 -6
  37. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/sink/v1/message.proto +22 -0
  38. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/create-release.yml +5 -0
  39. package/sdk-core/{core-api → crates/common}/src/envconfig.rs +2 -2
  40. package/sdk-core/{core-api → crates/common}/src/errors.rs +8 -1
  41. package/sdk-core/{fsm/rustfsm_trait/src/lib.rs → crates/common/src/fsm_trait.rs} +1 -27
  42. package/sdk-core/{core-api → crates/common}/src/lib.rs +24 -9
  43. package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/canned_histories.rs +1 -1
  44. package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/history_builder.rs +1 -1
  45. package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/history_info.rs +2 -2
  46. package/sdk-core/{sdk-core-protos/src/lib.rs → crates/common/src/protos/mod.rs} +18 -17
  47. package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/test_utils.rs +1 -1
  48. package/sdk-core/{core-api → crates/common}/src/telemetry/metrics.rs +447 -50
  49. package/sdk-core/{core-api → crates/common}/src/telemetry.rs +3 -1
  50. package/sdk-core/{core-api → crates/common}/src/worker.rs +112 -18
  51. package/sdk-core/crates/common/tests/worker_task_types_test.rs +129 -0
  52. package/sdk-core/crates/macros/Cargo.toml +23 -0
  53. package/sdk-core/{fsm/rustfsm_procmacro → crates/macros}/src/lib.rs +6 -11
  54. package/sdk-core/{sdk → crates/sdk}/Cargo.toml +10 -10
  55. package/sdk-core/{sdk → crates/sdk}/src/activity_context.rs +8 -6
  56. package/sdk-core/{sdk → crates/sdk}/src/interceptors.rs +1 -1
  57. package/sdk-core/{sdk → crates/sdk}/src/lib.rs +42 -37
  58. package/sdk-core/{sdk → crates/sdk}/src/workflow_context/options.rs +2 -2
  59. package/sdk-core/{sdk → crates/sdk}/src/workflow_context.rs +21 -19
  60. package/sdk-core/{sdk → crates/sdk}/src/workflow_future.rs +1 -1
  61. package/sdk-core/{core → crates/sdk-core}/Cargo.toml +32 -25
  62. package/sdk-core/{tests → crates/sdk-core/benches}/workflow_replay_bench.rs +10 -10
  63. package/sdk-core/crates/sdk-core/machine_coverage/ActivityMachine_Coverage.puml +32 -0
  64. package/sdk-core/crates/sdk-core/machine_coverage/CancelExternalMachine_Coverage.puml +9 -0
  65. package/sdk-core/crates/sdk-core/machine_coverage/CancelWorkflowMachine_Coverage.puml +6 -0
  66. package/sdk-core/crates/sdk-core/machine_coverage/ChildWorkflowMachine_Coverage.puml +27 -0
  67. package/sdk-core/crates/sdk-core/machine_coverage/CompleteWorkflowMachine_Coverage.puml +6 -0
  68. package/sdk-core/crates/sdk-core/machine_coverage/ContinueAsNewWorkflowMachine_Coverage.puml +6 -0
  69. package/sdk-core/crates/sdk-core/machine_coverage/FailWorkflowMachine_Coverage.puml +6 -0
  70. package/sdk-core/crates/sdk-core/machine_coverage/LocalActivityMachine_Coverage.puml +23 -0
  71. package/sdk-core/crates/sdk-core/machine_coverage/ModifyWorkflowPropertiesMachine_Coverage.puml +5 -0
  72. package/sdk-core/crates/sdk-core/machine_coverage/PatchMachine_Coverage.puml +8 -0
  73. package/sdk-core/crates/sdk-core/machine_coverage/SignalExternalMachine_Coverage.puml +12 -0
  74. package/sdk-core/crates/sdk-core/machine_coverage/TimerMachine_Coverage.puml +13 -0
  75. package/sdk-core/crates/sdk-core/machine_coverage/UpdateMachine_Coverage.puml +19 -0
  76. package/sdk-core/crates/sdk-core/machine_coverage/UpsertSearchAttributesMachine_Coverage.puml +5 -0
  77. package/sdk-core/crates/sdk-core/machine_coverage/WorkflowTaskMachine_Coverage.puml +11 -0
  78. package/sdk-core/{core → crates/sdk-core}/src/abstractions.rs +62 -6
  79. package/sdk-core/crates/sdk-core/src/antithesis.rs +60 -0
  80. package/sdk-core/{core → crates/sdk-core}/src/core_tests/activity_tasks.rs +36 -31
  81. package/sdk-core/{core → crates/sdk-core}/src/core_tests/mod.rs +12 -9
  82. package/sdk-core/{core → crates/sdk-core}/src/core_tests/queries.rs +24 -21
  83. package/sdk-core/{core → crates/sdk-core}/src/core_tests/replay_flag.rs +10 -8
  84. package/sdk-core/{core → crates/sdk-core}/src/core_tests/updates.rs +17 -15
  85. package/sdk-core/{core → crates/sdk-core}/src/core_tests/workers.rs +242 -17
  86. package/sdk-core/{core → crates/sdk-core}/src/core_tests/workflow_cancels.rs +1 -1
  87. package/sdk-core/{core → crates/sdk-core}/src/core_tests/workflow_tasks.rs +126 -39
  88. package/sdk-core/{core → crates/sdk-core}/src/debug_client.rs +1 -1
  89. package/sdk-core/{core → crates/sdk-core}/src/ephemeral_server/mod.rs +3 -3
  90. package/sdk-core/crates/sdk-core/src/histfetch.rs +33 -0
  91. package/sdk-core/{core → crates/sdk-core}/src/internal_flags.rs +4 -3
  92. package/sdk-core/{core → crates/sdk-core}/src/lib.rs +85 -43
  93. package/sdk-core/{core → crates/sdk-core}/src/pollers/mod.rs +8 -6
  94. package/sdk-core/{core → crates/sdk-core}/src/pollers/poll_buffer.rs +51 -16
  95. package/sdk-core/{core → crates/sdk-core}/src/protosext/mod.rs +1 -1
  96. package/sdk-core/{core → crates/sdk-core}/src/protosext/protocol_messages.rs +1 -1
  97. package/sdk-core/{core → crates/sdk-core}/src/replay/mod.rs +14 -11
  98. package/sdk-core/{core → crates/sdk-core}/src/retry_logic.rs +19 -1
  99. package/sdk-core/{core → crates/sdk-core}/src/telemetry/log_export.rs +2 -2
  100. package/sdk-core/{core → crates/sdk-core}/src/telemetry/metrics.rs +80 -34
  101. package/sdk-core/{core → crates/sdk-core}/src/telemetry/mod.rs +4 -4
  102. package/sdk-core/{core → crates/sdk-core}/src/telemetry/otel.rs +1 -1
  103. package/sdk-core/{core → crates/sdk-core}/src/telemetry/prometheus_meter.rs +13 -13
  104. package/sdk-core/{core → crates/sdk-core}/src/telemetry/prometheus_server.rs +2 -2
  105. package/sdk-core/{core → crates/sdk-core}/src/test_help/integ_helpers.rs +127 -40
  106. package/sdk-core/{core → crates/sdk-core}/src/test_help/unit_helpers.rs +13 -11
  107. package/sdk-core/{core → crates/sdk-core}/src/worker/activities/activity_heartbeat_manager.rs +2 -2
  108. package/sdk-core/{core → crates/sdk-core}/src/worker/activities/local_activities.rs +14 -12
  109. package/sdk-core/{core → crates/sdk-core}/src/worker/activities.rs +21 -12
  110. package/sdk-core/{core → crates/sdk-core}/src/worker/client/mocks.rs +25 -12
  111. package/sdk-core/{core → crates/sdk-core}/src/worker/client.rs +164 -71
  112. package/sdk-core/crates/sdk-core/src/worker/heartbeat.rs +246 -0
  113. package/sdk-core/crates/sdk-core/src/worker/mod.rs +1462 -0
  114. package/sdk-core/{core → crates/sdk-core}/src/worker/nexus.rs +15 -14
  115. package/sdk-core/{core → crates/sdk-core}/src/worker/slot_provider.rs +12 -13
  116. package/sdk-core/{core → crates/sdk-core}/src/worker/tuner/fixed_size.rs +5 -1
  117. package/sdk-core/{core → crates/sdk-core}/src/worker/tuner/resource_based.rs +453 -57
  118. package/sdk-core/{core → crates/sdk-core}/src/worker/tuner.rs +21 -4
  119. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/driven_workflow.rs +1 -1
  120. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/history_update.rs +2 -2
  121. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/activity_state_machine.rs +147 -37
  122. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/cancel_external_state_machine.rs +8 -9
  123. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/cancel_nexus_op_state_machine.rs +14 -12
  124. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/cancel_workflow_state_machine.rs +6 -7
  125. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/child_workflow_state_machine.rs +31 -37
  126. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/complete_workflow_state_machine.rs +13 -8
  127. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +6 -7
  128. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/fail_workflow_state_machine.rs +6 -7
  129. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/local_activity_state_machine.rs +33 -30
  130. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/mod.rs +22 -17
  131. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +4 -3
  132. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/nexus_operation_state_machine.rs +20 -22
  133. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/patch_state_machine.rs +12 -11
  134. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/signal_external_state_machine.rs +9 -12
  135. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/timer_state_machine.rs +26 -13
  136. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/transition_coverage.rs +1 -2
  137. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/update_state_machine.rs +19 -13
  138. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +20 -18
  139. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/workflow_machines/local_acts.rs +1 -1
  140. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/workflow_machines.rs +61 -70
  141. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/workflow_task_state_machine.rs +13 -15
  142. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/managed_run.rs +55 -37
  143. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/mod.rs +166 -60
  144. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/run_cache.rs +10 -7
  145. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/wft_extraction.rs +4 -2
  146. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/wft_poller.rs +15 -4
  147. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/workflow_stream.rs +30 -16
  148. package/sdk-core/{tests → crates/sdk-core/tests}/c_bridge_smoke_test.c +1 -1
  149. package/sdk-core/{tests → crates/sdk-core/tests}/cloud_tests.rs +1 -1
  150. package/sdk-core/crates/sdk-core/tests/common/fake_grpc_server.rs +106 -0
  151. package/sdk-core/{tests → crates/sdk-core/tests}/common/http_proxy.rs +1 -1
  152. package/sdk-core/{tests → crates/sdk-core/tests}/common/mod.rs +93 -74
  153. package/sdk-core/{tests → crates/sdk-core/tests}/common/workflows.rs +4 -3
  154. package/sdk-core/crates/sdk-core/tests/fsm_procmacro.rs +6 -0
  155. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/dupe_transitions_fail.rs +1 -3
  156. package/sdk-core/crates/sdk-core/tests/fsm_trybuild/dupe_transitions_fail.stderr +12 -0
  157. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/dynamic_dest_pass.rs +2 -4
  158. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/forgot_name_fail.rs +1 -3
  159. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/forgot_name_fail.stderr +4 -4
  160. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/handler_arg_pass.rs +2 -4
  161. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/handler_pass.rs +2 -4
  162. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/medium_complex_pass.rs +2 -4
  163. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/no_handle_conversions_require_into_fail.rs +2 -4
  164. package/sdk-core/crates/sdk-core/tests/fsm_trybuild/no_handle_conversions_require_into_fail.stderr +15 -0
  165. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/simple_pass.rs +2 -4
  166. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/struct_event_variant_fail.rs +1 -3
  167. package/sdk-core/crates/sdk-core/tests/fsm_trybuild/struct_event_variant_fail.stderr +5 -0
  168. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/tuple_more_item_event_variant_fail.rs +1 -3
  169. package/sdk-core/crates/sdk-core/tests/fsm_trybuild/tuple_more_item_event_variant_fail.stderr +5 -0
  170. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/tuple_zero_item_event_variant_fail.rs +1 -3
  171. package/sdk-core/crates/sdk-core/tests/fsm_trybuild/tuple_zero_item_event_variant_fail.stderr +5 -0
  172. package/sdk-core/{tests → crates/sdk-core/tests}/global_metric_tests.rs +14 -15
  173. package/sdk-core/{tests → crates/sdk-core/tests/heavy_tests}/fuzzy_workflow.rs +3 -3
  174. package/sdk-core/{tests → crates/sdk-core/tests}/heavy_tests.rs +19 -12
  175. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/activity_functions.rs +1 -1
  176. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/client_tests.rs +16 -111
  177. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/ephemeral_server_tests.rs +5 -6
  178. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/heartbeat_tests.rs +23 -19
  179. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/metrics_tests.rs +134 -60
  180. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/pagination_tests.rs +4 -4
  181. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/polling_tests.rs +37 -36
  182. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/queries_tests.rs +12 -10
  183. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/update_tests.rs +41 -29
  184. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/visibility_tests.rs +24 -19
  185. package/sdk-core/crates/sdk-core/tests/integ_tests/worker_heartbeat_tests.rs +1061 -0
  186. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/worker_tests.rs +113 -51
  187. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/worker_versioning_tests.rs +19 -17
  188. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/activities.rs +35 -30
  189. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/appdata_propagation.rs +3 -3
  190. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/cancel_external.rs +14 -9
  191. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/cancel_wf.rs +13 -8
  192. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/child_workflows.rs +48 -35
  193. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/continue_as_new.rs +14 -9
  194. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/determinism.rs +24 -15
  195. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/eager.rs +9 -4
  196. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/local_activities.rs +47 -47
  197. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/modify_wf_properties.rs +16 -11
  198. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/nexus.rs +51 -23
  199. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/patches.rs +22 -10
  200. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/replay.rs +19 -17
  201. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/resets.rs +14 -5
  202. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/signals.rs +24 -15
  203. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/stickyness.rs +8 -6
  204. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/timers.rs +28 -18
  205. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/upsert_search_attrs.rs +18 -13
  206. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests.rs +46 -41
  207. package/sdk-core/{tests → crates/sdk-core/tests}/main.rs +15 -9
  208. package/sdk-core/{tests → crates/sdk-core/tests}/manual_tests.rs +20 -14
  209. package/sdk-core/{tests → crates/sdk-core/tests}/runner.rs +2 -2
  210. package/sdk-core/{tests → crates/sdk-core/tests}/shared_tests/mod.rs +10 -5
  211. package/sdk-core/{tests → crates/sdk-core/tests}/shared_tests/priority.rs +5 -5
  212. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/Cargo.toml +13 -10
  213. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/include/temporal-sdk-core-c-bridge.h +32 -23
  214. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/client.rs +55 -32
  215. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/envconfig.rs +1 -1
  216. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/lib.rs +1 -1
  217. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/metric.rs +1 -1
  218. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/runtime.rs +24 -9
  219. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/testing.rs +1 -1
  220. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/tests/context.rs +11 -10
  221. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/tests/mod.rs +7 -7
  222. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/tests/utils.rs +3 -4
  223. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/worker.rs +111 -58
  224. package/sdk-core/docker-cgroup-tests.sh +24 -0
  225. package/sdk-core/{docker → etc/docker}/docker-compose-ci.yaml +9 -9
  226. package/sdk-core/{docker → etc/docker}/docker-compose-telem.yaml +11 -11
  227. package/sdk-core/{docker → etc/docker}/docker-compose.yaml +8 -8
  228. package/sdk-core/{integ-with-otel.sh → etc/integ-with-otel.sh} +1 -1
  229. package/sdk-core/etc/regen-depgraph.sh +2 -2
  230. package/src/client.rs +24 -33
  231. package/src/helpers/try_from_js.rs +1 -1
  232. package/src/logs.rs +1 -1
  233. package/src/metrics.rs +3 -3
  234. package/src/runtime.rs +42 -28
  235. package/src/testing.rs +3 -3
  236. package/src/worker.rs +70 -36
  237. package/ts/native.ts +13 -6
  238. package/LICENSE.md +0 -23
  239. package/sdk-core/client/src/worker_registry/mod.rs +0 -282
  240. package/sdk-core/core/src/worker/heartbeat.rs +0 -230
  241. package/sdk-core/core/src/worker/mod.rs +0 -990
  242. package/sdk-core/etc/deps.svg +0 -162
  243. package/sdk-core/fsm/Cargo.toml +0 -21
  244. package/sdk-core/fsm/README.md +0 -3
  245. package/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
  246. package/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -21
  247. package/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
  248. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
  249. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -15
  250. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
  251. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
  252. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
  253. package/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
  254. package/sdk-core/fsm/src/lib.rs +0 -2
  255. package/sdk-core/sdk-core-protos/Cargo.toml +0 -37
  256. package/sdk-core/sdk-core-protos/protos/api_cloud_upstream/VERSION +0 -1
  257. /package/sdk-core/{client → crates/client}/src/callback_based.rs +0 -0
  258. /package/sdk-core/{client → crates/client}/src/proxy.rs +0 -0
  259. /package/sdk-core/{client → crates/client}/src/replaceable.rs +0 -0
  260. /package/sdk-core/{sdk-core-protos → crates/common}/build.rs +0 -0
  261. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/.github/workflows/build.yaml +0 -0
  262. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/.github/workflows/push-to-buf.yml +0 -0
  263. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/CODEOWNERS +0 -0
  264. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/LICENSE +0 -0
  265. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/Makefile +0 -0
  266. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/README.md +0 -0
  267. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/buf.gen.yaml +0 -0
  268. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/buf.lock +0 -0
  269. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/buf.yaml +0 -0
  270. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/connectivityrule/v1/message.proto +0 -0
  271. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/identity/v1/message.proto +0 -0
  272. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/namespace/v1/message.proto +0 -0
  273. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/nexus/v1/message.proto +0 -0
  274. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/region/v1/message.proto +0 -0
  275. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/resource/v1/message.proto +0 -0
  276. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/usage/v1/message.proto +0 -0
  277. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/CODEOWNERS +0 -0
  278. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  279. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/ci.yml +0 -0
  280. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/publish-docs.yml +0 -0
  281. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/push-to-buf.yml +0 -0
  282. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/trigger-api-go-delete-release.yml +0 -0
  283. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/trigger-api-go-publish-release.yml +0 -0
  284. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/trigger-api-go-update.yml +0 -0
  285. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/LICENSE +0 -0
  286. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/Makefile +0 -0
  287. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/README.md +0 -0
  288. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/api-linter.yaml +0 -0
  289. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/buf.gen.yaml +0 -0
  290. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/buf.lock +0 -0
  291. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/buf.yaml +0 -0
  292. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/api/annotations.proto +0 -0
  293. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/api/http.proto +0 -0
  294. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/any.proto +0 -0
  295. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/descriptor.proto +0 -0
  296. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/duration.proto +0 -0
  297. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/empty.proto +0 -0
  298. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/struct.proto +0 -0
  299. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/timestamp.proto +0 -0
  300. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/wrappers.proto +0 -0
  301. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/openapi/openapiv2.json +0 -0
  302. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/openapi/openapiv3.yaml +0 -0
  303. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/openapi/payload_description.txt +0 -0
  304. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/activity/v1/message.proto +0 -0
  305. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -0
  306. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/command/v1/message.proto +0 -0
  307. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/common/v1/message.proto +0 -0
  308. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/deployment/v1/message.proto +0 -0
  309. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -0
  310. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -0
  311. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -0
  312. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/deployment.proto +0 -0
  313. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -0
  314. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -0
  315. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -0
  316. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/nexus.proto +0 -0
  317. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -0
  318. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -0
  319. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -0
  320. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -0
  321. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -0
  322. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -0
  323. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -0
  324. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/export/v1/message.proto +0 -0
  325. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -0
  326. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -0
  327. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/history/v1/message.proto +0 -0
  328. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -0
  329. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/nexus/v1/message.proto +0 -0
  330. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -0
  331. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -0
  332. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -0
  333. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/query/v1/message.proto +0 -0
  334. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -0
  335. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/rules/v1/message.proto +0 -0
  336. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -0
  337. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/enhanced_stack_trace.proto +0 -0
  338. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -0
  339. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/user_metadata.proto +0 -0
  340. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/worker_config.proto +0 -0
  341. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/workflow_metadata.proto +0 -0
  342. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -0
  343. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/update/v1/message.proto +0 -0
  344. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/version/v1/message.proto +0 -0
  345. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/worker/v1/message.proto +0 -0
  346. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -0
  347. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -0
  348. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -0
  349. /package/sdk-core/{sdk-core-protos → crates/common}/protos/google/rpc/status.proto +0 -0
  350. /package/sdk-core/{sdk-core-protos → crates/common}/protos/grpc/health/v1/health.proto +0 -0
  351. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -0
  352. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -0
  353. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -0
  354. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/common/common.proto +0 -0
  355. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/core_interface.proto +0 -0
  356. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -0
  357. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/nexus/nexus.proto +0 -0
  358. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -0
  359. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -0
  360. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -0
  361. /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/Makefile +0 -0
  362. /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/api-linter.yaml +0 -0
  363. /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/buf.yaml +0 -0
  364. /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -0
  365. /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -0
  366. /package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/constants.rs +0 -0
  367. /package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/task_token.rs +0 -0
  368. /package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/utilities.rs +0 -0
  369. /package/sdk-core/{fsm → crates/macros}/LICENSE.txt +0 -0
  370. /package/sdk-core/{sdk → crates/sdk}/src/app_data.rs +0 -0
  371. /package/sdk-core/{core → crates/sdk-core}/src/abstractions/take_cell.rs +0 -0
  372. /package/sdk-core/{core → crates/sdk-core}/src/test_help/mod.rs +0 -0
  373. /package/sdk-core/{core → crates/sdk-core}/src/worker/slot_supplier.rs +0 -0
  374. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/ends_empty_wft_complete.bin +0 -0
  375. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/evict_while_la_running_no_interference-16_history.bin +0 -0
  376. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/evict_while_la_running_no_interference-23_history.bin +0 -0
  377. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/evict_while_la_running_no_interference-85_history.bin +0 -0
  378. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/fail_wf_task.bin +0 -0
  379. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/long_local_activity_with_update-0_history.bin +0 -0
  380. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/long_local_activity_with_update-1_history.bin +0 -0
  381. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/long_local_activity_with_update-2_history.bin +0 -0
  382. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/long_local_activity_with_update-3_history.bin +0 -0
  383. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/old_change_marker_format.bin +0 -0
  384. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/timer_workflow_history.bin +0 -0
  385. /package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/priority.rs +0 -0
  386. /package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/build.rs +0 -0
  387. /package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/random.rs +0 -0
  388. /package/sdk-core/{cargo-tokio-console.sh → etc/cargo-tokio-console.sh} +0 -0
@@ -3,12 +3,14 @@ mod resource_based;
3
3
 
4
4
  pub use fixed_size::FixedSizeSlotSupplier;
5
5
  pub use resource_based::{
6
- RealSysInfo, ResourceBasedSlotsOptions, ResourceBasedSlotsOptionsBuilder, ResourceBasedTuner,
6
+ ResourceBasedSlotsOptions, ResourceBasedSlotsOptionsBuilder, ResourceBasedTuner,
7
7
  ResourceSlotOptions,
8
8
  };
9
9
 
10
+ pub(crate) use resource_based::{RealSysInfo, SystemResourceInfo};
11
+
10
12
  use std::sync::Arc;
11
- use temporal_sdk_core_api::worker::{
13
+ use temporalio_common::worker::{
12
14
  ActivitySlotKind, LocalActivitySlotKind, NexusSlotKind, SlotKind, SlotSupplier, WorkerConfig,
13
15
  WorkerTuner, WorkflowSlotKind,
14
16
  };
@@ -126,6 +128,9 @@ impl TunerHolderOptions {
126
128
  }
127
129
  None => {}
128
130
  }
131
+ if let Some(tuner) = rb_tuner {
132
+ builder.sys_info(tuner.sys_info());
133
+ }
129
134
  Ok(builder.build())
130
135
  }
131
136
  }
@@ -138,7 +143,7 @@ pub enum SlotSupplierOptions<SK: SlotKind> {
138
143
  /// The number of slots the fixed supplier will have
139
144
  slots: usize,
140
145
  },
141
- /// Options for a [ResourceBasedSlots]
146
+ /// Options for resource-based slot suppliers
142
147
  ResourceBased(ResourceSlotOptions),
143
148
  /// A user-implemented slot supplier
144
149
  #[debug("Custom")]
@@ -187,6 +192,7 @@ pub struct TunerBuilder {
187
192
  local_activity_slot_supplier:
188
193
  Option<Arc<dyn SlotSupplier<SlotKind = LocalActivitySlotKind> + Send + Sync>>,
189
194
  nexus_slot_supplier: Option<Arc<dyn SlotSupplier<SlotKind = NexusSlotKind> + Send + Sync>>,
195
+ sys_info: Option<Arc<dyn SystemResourceInfo + Send + Sync>>,
190
196
  }
191
197
 
192
198
  impl TunerBuilder {
@@ -243,6 +249,17 @@ impl TunerBuilder {
243
249
  self
244
250
  }
245
251
 
252
+ /// Sets a field that implements [SystemResourceInfo]
253
+ fn sys_info(&mut self, sys_info: Arc<dyn SystemResourceInfo + Send + Sync>) -> &mut Self {
254
+ self.sys_info = Some(sys_info);
255
+ self
256
+ }
257
+
258
+ /// Gets the field that implements [SystemResourceInfo]
259
+ pub(crate) fn get_sys_info(&self) -> Option<Arc<dyn SystemResourceInfo + Send + Sync>> {
260
+ self.sys_info.clone()
261
+ }
262
+
246
263
  /// Build a [WorkerTuner] from the configured slot suppliers
247
264
  pub fn build(&mut self) -> TunerHolder {
248
265
  TunerHolder {
@@ -296,7 +313,7 @@ impl WorkerTuner for TunerHolder {
296
313
  mod tests {
297
314
  use super::*;
298
315
  use std::time::Duration;
299
- use temporal_sdk_core_api::worker::{
316
+ use temporalio_common::worker::{
300
317
  SlotMarkUsedContext, SlotReleaseContext, SlotReservationContext, SlotSupplierPermit,
301
318
  };
302
319
 
@@ -7,7 +7,7 @@ use std::{
7
7
  collections::HashMap,
8
8
  sync::mpsc::{self, Receiver, Sender},
9
9
  };
10
- use temporal_sdk_core_protos::{
10
+ use temporalio_common::protos::{
11
11
  coresdk::workflow_activation::{WorkflowActivationJob, start_workflow_from_attribs},
12
12
  temporal::api::{common::v1::Payload, history::v1::WorkflowExecutionStartedEventAttributes},
13
13
  utilities::TryIntoOrNone,
@@ -17,7 +17,7 @@ use std::{
17
17
  sync::{Arc, LazyLock},
18
18
  task::{Context, Poll},
19
19
  };
20
- use temporal_sdk_core_protos::temporal::api::{
20
+ use temporalio_common::protos::temporal::api::{
21
21
  enums::v1::EventType,
22
22
  history::v1::{
23
23
  History, HistoryEvent, WorkflowTaskCompletedEventAttributes, history_event::Attributes,
@@ -810,7 +810,7 @@ mod tests {
810
810
  worker::client::mocks::mock_worker_client,
811
811
  };
812
812
  use futures_util::TryStreamExt;
813
- use temporal_sdk_core_protos::{
813
+ use temporalio_common::protos::{
814
814
  canned_histories,
815
815
  temporal::api::{
816
816
  common::v1::WorkflowExecution, enums::v1::WorkflowTaskFailedCause,
@@ -1,17 +1,16 @@
1
1
  #![allow(clippy::large_enum_variant)]
2
2
 
3
3
  use super::{
4
- EventInfo, NewMachineWithCommand, OnEventWrapper, WFMachinesAdapter, WFMachinesError,
5
- workflow_machines::MachineResponse,
4
+ EventInfo, MachineError, NewMachineWithCommand, OnEventWrapper, StateMachine, TransitionResult,
5
+ WFMachinesAdapter, WFMachinesError, workflow_machines::MachineResponse,
6
6
  };
7
7
  use crate::{
8
8
  abstractions::dbg_panic,
9
9
  internal_flags::CoreInternalFlags,
10
- worker::workflow::{InternalFlagsRef, machines::HistEventData},
10
+ worker::workflow::{InternalFlagsRef, fatal, machines::HistEventData, nondeterminism},
11
11
  };
12
- use rustfsm::{MachineError, StateMachine, TransitionResult, fsm};
13
12
  use std::convert::{TryFrom, TryInto};
14
- use temporal_sdk_core_protos::{
13
+ use temporalio_common::protos::{
15
14
  coresdk::{
16
15
  activity_result::{self as ar, ActivityResolution, Cancellation, activity_resolution},
17
16
  workflow_activation::ResolveActivity,
@@ -31,6 +30,7 @@ use temporal_sdk_core_protos::{
31
30
  },
32
31
  },
33
32
  };
33
+ use temporalio_macros::fsm;
34
34
 
35
35
  fsm! {
36
36
  pub(super) name ActivityMachine;
@@ -173,6 +173,16 @@ impl ActivityMachine {
173
173
  | ActivityMachineState::TimedOut(_)
174
174
  ) {
175
175
  // Ignore attempted cancels in terminal states
176
+ #[cfg(feature = "antithesis_assertions")]
177
+ crate::antithesis::assert_always!(
178
+ true,
179
+ "Activity cancel ignored in terminal state",
180
+ ::serde_json::json!({
181
+ "seq": self.shared_state.attrs.seq,
182
+ "state": format!("{}", self.state())
183
+ })
184
+ );
185
+
176
186
  debug!(
177
187
  "Attempted to cancel already resolved activity (seq {})",
178
188
  self.shared_state.attrs.seq
@@ -193,7 +203,10 @@ impl ActivityMachine {
193
203
  ActivityMachineCommand::Cancel(details) => {
194
204
  vec![self.create_cancelation_resolve(details).into()]
195
205
  }
196
- x => panic!("Invalid cancel event response {x:?}"),
206
+ x => {
207
+ dbg_panic!("Invalid cancel event response {x:?}");
208
+ panic!("Invalid cancel event response {x:?}");
209
+ }
197
210
  })
198
211
  .collect();
199
212
  Ok(res)
@@ -223,9 +236,7 @@ impl TryFrom<HistEventData> for ActivityMachineEvents {
223
236
  last_task_in_history,
224
237
  })
225
238
  } else {
226
- return Err(WFMachinesError::Fatal(format!(
227
- "Activity scheduled attributes were unset: {e}"
228
- )));
239
+ return Err(fatal!("Activity scheduled attributes were unset: {e}"));
229
240
  }
230
241
  }
231
242
  EventType::ActivityTaskStarted => Self::ActivityTaskStarted(e.event_id),
@@ -236,9 +247,7 @@ impl TryFrom<HistEventData> for ActivityMachineEvents {
236
247
  {
237
248
  Self::ActivityTaskCompleted(attrs)
238
249
  } else {
239
- return Err(WFMachinesError::Fatal(format!(
240
- "Activity completion attributes were unset: {e}"
241
- )));
250
+ return Err(fatal!("Activity completion attributes were unset: {e}"));
242
251
  }
243
252
  }
244
253
  EventType::ActivityTaskFailed => {
@@ -247,9 +256,7 @@ impl TryFrom<HistEventData> for ActivityMachineEvents {
247
256
  {
248
257
  Self::ActivityTaskFailed(attrs)
249
258
  } else {
250
- return Err(WFMachinesError::Fatal(format!(
251
- "Activity failure attributes were unset: {e}"
252
- )));
259
+ return Err(fatal!("Activity failure attributes were unset: {e}"));
253
260
  }
254
261
  }
255
262
  EventType::ActivityTaskTimedOut => {
@@ -258,9 +265,7 @@ impl TryFrom<HistEventData> for ActivityMachineEvents {
258
265
  {
259
266
  Self::ActivityTaskTimedOut(attrs)
260
267
  } else {
261
- return Err(WFMachinesError::Fatal(format!(
262
- "Activity timeout attributes were unset: {e}"
263
- )));
268
+ return Err(fatal!("Activity timeout attributes were unset: {e}"));
264
269
  }
265
270
  }
266
271
  EventType::ActivityTaskCancelRequested => Self::ActivityTaskCancelRequested,
@@ -270,15 +275,13 @@ impl TryFrom<HistEventData> for ActivityMachineEvents {
270
275
  {
271
276
  Self::ActivityTaskCanceled(attrs)
272
277
  } else {
273
- return Err(WFMachinesError::Fatal(format!(
274
- "Activity cancellation attributes were unset: {e}"
275
- )));
278
+ return Err(fatal!("Activity cancellation attributes were unset: {e}"));
276
279
  }
277
280
  }
278
281
  _ => {
279
- return Err(WFMachinesError::Nondeterminism(format!(
282
+ return Err(nondeterminism!(
280
283
  "Activity machine does not handle this event: {e}"
281
- )));
284
+ ));
282
285
  }
283
286
  })
284
287
  }
@@ -375,18 +378,20 @@ impl ScheduleCommandCreated {
375
378
  sched_dat.last_task_in_history,
376
379
  ) {
377
380
  if sched_dat.act_id != dat.attrs.activity_id {
378
- return TransitionResult::Err(WFMachinesError::Nondeterminism(format!(
381
+ return TransitionResult::Err(nondeterminism!(
379
382
  "Activity id of scheduled event '{}' does not \
380
383
  match activity id of activity command '{}'",
381
- sched_dat.act_id, dat.attrs.activity_id
382
- )));
384
+ sched_dat.act_id,
385
+ dat.attrs.activity_id
386
+ ));
383
387
  }
384
388
  if sched_dat.act_type != dat.attrs.activity_type {
385
- return TransitionResult::Err(WFMachinesError::Nondeterminism(format!(
389
+ return TransitionResult::Err(nondeterminism!(
386
390
  "Activity type of scheduled event '{}' does not \
387
391
  match activity type of activity command '{}'",
388
- sched_dat.act_type, dat.attrs.activity_type
389
- )));
392
+ sched_dat.act_type,
393
+ dat.attrs.activity_type
394
+ ));
390
395
  }
391
396
  }
392
397
  dat.scheduled_event_id = sched_dat.event_id;
@@ -427,6 +432,15 @@ impl ScheduledEventRecorded {
427
432
  dat: &mut SharedState,
428
433
  attrs: ActivityTaskTimedOutEventAttributes,
429
434
  ) -> ActivityMachineTransition<TimedOut> {
435
+ #[cfg(feature = "antithesis_assertions")]
436
+ crate::antithesis::assert_sometimes!(
437
+ true,
438
+ "Activity timed out before starting",
439
+ ::serde_json::json!({
440
+ "activity_id": dat.attrs.activity_id,
441
+ "state": "ScheduledEventRecorded"
442
+ })
443
+ );
430
444
  notify_lang_activity_timed_out(dat, attrs)
431
445
  }
432
446
 
@@ -434,12 +448,27 @@ impl ScheduledEventRecorded {
434
448
  self,
435
449
  dat: &mut SharedState,
436
450
  ) -> ActivityMachineTransition<ScheduledActivityCancelCommandCreated> {
451
+ #[cfg(feature = "antithesis_assertions")]
452
+ crate::antithesis::assert_sometimes!(
453
+ true,
454
+ "Activity cancelled in scheduled state",
455
+ ::serde_json::json!({
456
+ "activity_id": dat.attrs.activity_id,
457
+ "cancellation_type": format!("{:?}", dat.cancellation_type)
458
+ })
459
+ );
437
460
  create_request_cancel_activity_task_command(
438
461
  dat,
439
462
  ScheduledActivityCancelCommandCreated::default(),
440
463
  )
441
464
  }
442
465
  pub(super) fn on_abandoned(self) -> ActivityMachineTransition<Canceled> {
466
+ #[cfg(feature = "antithesis_assertions")]
467
+ crate::antithesis::assert_sometimes!(
468
+ true,
469
+ "Activity abandoned",
470
+ ::serde_json::json!({"mode": "Abandon"})
471
+ );
443
472
  notify_lang_activity_cancelled(None)
444
473
  }
445
474
  }
@@ -452,6 +481,14 @@ impl Started {
452
481
  self,
453
482
  attrs: ActivityTaskCompletedEventAttributes,
454
483
  ) -> ActivityMachineTransition<Completed> {
484
+ #[cfg(feature = "antithesis_assertions")]
485
+ crate::antithesis::assert_sometimes!(
486
+ true,
487
+ "Activity completed successfully",
488
+ ::serde_json::json!({
489
+ "has_result": attrs.result.is_some()
490
+ })
491
+ );
455
492
  ActivityMachineTransition::ok(
456
493
  vec![ActivityMachineCommand::Complete(attrs.result)],
457
494
  Completed::default(),
@@ -462,6 +499,16 @@ impl Started {
462
499
  dat: &mut SharedState,
463
500
  attrs: ActivityTaskFailedEventAttributes,
464
501
  ) -> ActivityMachineTransition<Failed> {
502
+ #[cfg(feature = "antithesis_assertions")]
503
+ crate::antithesis::assert_sometimes!(
504
+ true,
505
+ "Activity task failed",
506
+ ::serde_json::json!({
507
+ "activity_id": dat.attrs.activity_id,
508
+ "activity_type": dat.attrs.activity_type,
509
+ "retry_state": attrs.retry_state
510
+ })
511
+ );
465
512
  ActivityMachineTransition::ok(
466
513
  vec![ActivityMachineCommand::Fail(new_failure(dat, attrs))],
467
514
  Failed::default(),
@@ -473,6 +520,15 @@ impl Started {
473
520
  dat: &mut SharedState,
474
521
  attrs: ActivityTaskTimedOutEventAttributes,
475
522
  ) -> ActivityMachineTransition<TimedOut> {
523
+ #[cfg(feature = "antithesis_assertions")]
524
+ crate::antithesis::assert_sometimes!(
525
+ true,
526
+ "Activity timed out after starting",
527
+ ::serde_json::json!({
528
+ "activity_id": dat.attrs.activity_id,
529
+ "state": "Started"
530
+ })
531
+ );
476
532
  notify_lang_activity_timed_out(dat, attrs)
477
533
  }
478
534
 
@@ -480,12 +536,27 @@ impl Started {
480
536
  self,
481
537
  dat: &mut SharedState,
482
538
  ) -> ActivityMachineTransition<StartedActivityCancelCommandCreated> {
539
+ #[cfg(feature = "antithesis_assertions")]
540
+ crate::antithesis::assert_sometimes!(
541
+ true,
542
+ "Activity cancelled after started",
543
+ ::serde_json::json!({
544
+ "activity_id": dat.attrs.activity_id,
545
+ "cancellation_type": format!("{:?}", dat.cancellation_type)
546
+ })
547
+ );
483
548
  create_request_cancel_activity_task_command(
484
549
  dat,
485
550
  StartedActivityCancelCommandCreated::default(),
486
551
  )
487
552
  }
488
553
  pub(super) fn on_abandoned(self) -> ActivityMachineTransition<Canceled> {
554
+ #[cfg(feature = "antithesis_assertions")]
555
+ crate::antithesis::assert_sometimes!(
556
+ true,
557
+ "Activity abandoned in started state",
558
+ ::serde_json::json!({"state": "Started"})
559
+ );
489
560
  notify_lang_activity_cancelled(None)
490
561
  }
491
562
  }
@@ -502,6 +573,14 @@ impl ScheduledActivityCancelEventRecorded {
502
573
  dat: &mut SharedState,
503
574
  attrs: ActivityTaskCanceledEventAttributes,
504
575
  ) -> ActivityMachineTransition<Canceled> {
576
+ #[cfg(feature = "antithesis_assertions")]
577
+ crate::antithesis::assert_sometimes!(
578
+ true,
579
+ "Activity cancellation completed",
580
+ ::serde_json::json!({
581
+ "has_details": attrs.details.is_some()
582
+ })
583
+ );
505
584
  notify_if_not_already_cancelled(dat, |_| notify_lang_activity_cancelled(Some(attrs)))
506
585
  }
507
586
 
@@ -532,6 +611,14 @@ impl StartedActivityCancelEventRecorded {
532
611
  dat: &mut SharedState,
533
612
  attrs: ActivityTaskCompletedEventAttributes,
534
613
  ) -> ActivityMachineTransition<Completed> {
614
+ #[cfg(feature = "antithesis_assertions")]
615
+ crate::antithesis::assert_sometimes!(
616
+ true,
617
+ "Activity completed despite cancel request",
618
+ ::serde_json::json!({
619
+ "cancellation_type": format!("{:?}", dat.cancellation_type)
620
+ })
621
+ );
535
622
  notify_if_not_already_cancelled(dat, |_| {
536
623
  TransitionResult::commands(vec![ActivityMachineCommand::Complete(attrs.result)])
537
624
  })
@@ -541,6 +628,14 @@ impl StartedActivityCancelEventRecorded {
541
628
  dat: &mut SharedState,
542
629
  attrs: ActivityTaskFailedEventAttributes,
543
630
  ) -> ActivityMachineTransition<Failed> {
631
+ #[cfg(feature = "antithesis_assertions")]
632
+ crate::antithesis::assert_sometimes!(
633
+ true,
634
+ "Activity failed despite cancel request",
635
+ ::serde_json::json!({
636
+ "cancellation_type": format!("{:?}", dat.cancellation_type)
637
+ })
638
+ );
544
639
  notify_if_not_already_cancelled(dat, |dat| {
545
640
  TransitionResult::commands(vec![ActivityMachineCommand::Fail(new_failure(dat, attrs))])
546
641
  })
@@ -647,12 +742,21 @@ impl Canceled {
647
742
  ) -> ActivityMachineTransition<Canceled> {
648
743
  // Abandoned activities might start anyway. Ignore the result.
649
744
  if dat.cancellation_type == ActivityCancellationType::Abandon {
745
+ #[cfg(feature = "antithesis_assertions")]
746
+ crate::antithesis::assert_always!(
747
+ true,
748
+ "Abandoned activity can start after cancellation",
749
+ ::serde_json::json!({
750
+ "seq_num": seq_num,
751
+ "cancellation_type": "Abandon"
752
+ })
753
+ );
650
754
  TransitionResult::default()
651
755
  } else {
652
- TransitionResult::Err(WFMachinesError::Nondeterminism(format!(
756
+ TransitionResult::Err(nondeterminism!(
653
757
  "Non-Abandon cancel mode activities cannot be started after being cancelled. \
654
758
  Seq: {seq_num:?}"
655
- )))
759
+ ))
656
760
  }
657
761
  }
658
762
  pub(super) fn on_activity_task_completed(
@@ -662,11 +766,19 @@ impl Canceled {
662
766
  ) -> ActivityMachineTransition<Canceled> {
663
767
  // Abandoned activities might complete anyway. Ignore the result.
664
768
  if dat.cancellation_type == ActivityCancellationType::Abandon {
769
+ #[cfg(feature = "antithesis_assertions")]
770
+ crate::antithesis::assert_always!(
771
+ true,
772
+ "Abandoned activity can complete after cancellation",
773
+ ::serde_json::json!({
774
+ "activity_id": dat.attrs.activity_id
775
+ })
776
+ );
665
777
  TransitionResult::default()
666
778
  } else {
667
- TransitionResult::Err(WFMachinesError::Nondeterminism(format!(
779
+ TransitionResult::Err(nondeterminism!(
668
780
  "Non-Abandon cancel mode activities cannot be completed after being cancelled: {attrs:?}"
669
- )))
781
+ ))
670
782
  }
671
783
  }
672
784
  }
@@ -792,9 +904,7 @@ fn convert_payloads(
792
904
  result: Option<Payloads>,
793
905
  ) -> Result<Option<Payload>, WFMachinesError> {
794
906
  result.map(TryInto::try_into).transpose().map_err(|pe| {
795
- WFMachinesError::Fatal(format!(
796
- "Not exactly one payload in activity result ({pe}) for event: {event_info:?}"
797
- ))
907
+ fatal!("Not exactly one payload in activity result ({pe}) for event: {event_info:?}")
798
908
  })
799
909
  }
800
910
 
@@ -806,7 +916,7 @@ mod test {
806
916
  worker::workflow::{OutgoingJob, machines::Machines},
807
917
  };
808
918
  use std::{cell::RefCell, mem::discriminant, rc::Rc};
809
- use temporal_sdk_core_protos::coresdk::workflow_activation::workflow_activation_job;
919
+ use temporalio_common::protos::coresdk::workflow_activation::workflow_activation_job;
810
920
 
811
921
  #[test]
812
922
  fn cancels_ignored_terminal() {
@@ -1,11 +1,10 @@
1
1
  use super::{
2
- EventInfo, NewMachineWithCommand, OnEventWrapper, WFMachinesAdapter, WFMachinesError,
3
- workflow_machines::MachineResponse,
2
+ EventInfo, NewMachineWithCommand, OnEventWrapper, StateMachine, TransitionResult,
3
+ WFMachinesAdapter, WFMachinesError, fsm, workflow_machines::MachineResponse,
4
4
  };
5
- use crate::worker::workflow::machines::HistEventData;
6
- use rustfsm::{StateMachine, TransitionResult, fsm};
5
+ use crate::worker::workflow::{fatal, machines::HistEventData, nondeterminism};
7
6
  use std::convert::TryFrom;
8
- use temporal_sdk_core_protos::{
7
+ use temporalio_common::protos::{
9
8
  coresdk::{
10
9
  common::NamespacedWorkflowExecution,
11
10
  workflow_activation::ResolveRequestCancelExternalWorkflow,
@@ -154,15 +153,15 @@ impl TryFrom<HistEventData> for CancelExternalMachineEvents {
154
153
  if let Some(history_event::Attributes::RequestCancelExternalWorkflowExecutionFailedEventAttributes(attrs)) = e.attributes {
155
154
  Self::RequestCancelExternalWorkflowExecutionFailed(attrs.cause())
156
155
  } else {
157
- return Err(WFMachinesError::Fatal(format!(
156
+ return Err(fatal!(
158
157
  "Cancelworkflow failed attributes were unset: {e}"
159
- )));
158
+ ));
160
159
  }
161
160
  }
162
161
  _ => {
163
- return Err(WFMachinesError::Nondeterminism(format!(
162
+ return Err(nondeterminism!(
164
163
  "Cancel external WF machine does not handle this event: {e}"
165
- )))
164
+ ))
166
165
  }
167
166
  })
168
167
  }
@@ -1,14 +1,14 @@
1
1
  use super::{
2
- workflow_machines::MachineResponse, Cancellable, EventInfo, NewMachineWithCommand,
3
- WFMachinesAdapter, WFMachinesError,
2
+ Cancellable, EventInfo, NewMachineWithCommand, WFMachinesAdapter, WFMachinesError,
3
+ workflow_machines::MachineResponse,
4
4
  };
5
- use crate::worker::workflow::machines::HistEventData;
6
- use rustfsm::{fsm, StateMachine, TransitionResult};
5
+ use super::{StateMachine, TransitionResult, fsm};
6
+ use crate::worker::workflow::{machines::HistEventData, nondeterminism, fatal};
7
7
  use std::convert::TryFrom;
8
- use temporal_sdk_core_protos::{
8
+ use temporalio_common::protos::{
9
9
  coresdk::workflow_activation::ResolveCancelNexusOperation,
10
10
  temporal::api::{
11
- command::v1::{command, RequestCancelNexusOperationCommandAttributes},
11
+ command::v1::{RequestCancelNexusOperationCommandAttributes, command},
12
12
  enums::v1::{CommandType, EventType},
13
13
  },
14
14
  };
@@ -76,9 +76,9 @@ impl TryFrom<HistEventData> for CancelNexusOpMachineEvents {
76
76
  Ok(match e.event_type() {
77
77
  EventType::NexusOperationCancelRequested => Self::NexusOpCancelRequested,
78
78
  _ => {
79
- return Err(WFMachinesError::Nondeterminism(format!(
79
+ return Err(nondeterminism!(
80
80
  "Cancel external WF machine does not handle this event: {e}"
81
- )))
81
+ ));
82
82
  }
83
83
  })
84
84
  }
@@ -105,10 +105,12 @@ impl WFMachinesAdapter for CancelNexusOpMachine {
105
105
  ) -> Result<Vec<MachineResponse>, WFMachinesError> {
106
106
  Ok(match my_command {
107
107
  CancelNexusOpCommand::Requested => {
108
- vec![ResolveCancelNexusOperation {
109
- seq: self.shared_state.seq,
110
- }
111
- .into()]
108
+ vec![
109
+ ResolveCancelNexusOperation {
110
+ seq: self.shared_state.seq,
111
+ }
112
+ .into(),
113
+ ]
112
114
  }
113
115
  })
114
116
  }
@@ -1,11 +1,10 @@
1
1
  use super::{
2
- EventInfo, NewMachineWithCommand, OnEventWrapper, WFMachinesAdapter, WFMachinesError,
3
- workflow_machines::MachineResponse,
2
+ EventInfo, NewMachineWithCommand, OnEventWrapper, StateMachine, TransitionResult,
3
+ WFMachinesAdapter, WFMachinesError, fsm, workflow_machines::MachineResponse,
4
4
  };
5
- use crate::worker::workflow::machines::HistEventData;
6
- use rustfsm::{StateMachine, TransitionResult, fsm};
5
+ use crate::worker::workflow::{machines::HistEventData, nondeterminism};
7
6
  use std::convert::TryFrom;
8
- use temporal_sdk_core_protos::{
7
+ use temporalio_common::protos::{
9
8
  coresdk::workflow_commands::CancelWorkflowExecution,
10
9
  temporal::api::enums::v1::{CommandType, EventType},
11
10
  };
@@ -68,9 +67,9 @@ impl TryFrom<HistEventData> for CancelWorkflowMachineEvents {
68
67
  Ok(match EventType::try_from(e.event_type) {
69
68
  Ok(EventType::WorkflowExecutionCanceled) => Self::WorkflowExecutionCanceled,
70
69
  _ => {
71
- return Err(WFMachinesError::Nondeterminism(format!(
70
+ return Err(nondeterminism!(
72
71
  "Cancel workflow machine does not handle this event: {e}"
73
- )));
72
+ ));
74
73
  }
75
74
  })
76
75
  }