@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
@@ -1,4 +1,16 @@
1
- use crate::{errors::WorkflowErrorType, telemetry::metrics::TemporalMeter};
1
+ //! Contains types that are needed by both the client and the sdk when configuring / interacting
2
+ //! with workers.
3
+
4
+ use crate::{
5
+ errors::WorkflowErrorType,
6
+ protos::{
7
+ coresdk,
8
+ coresdk::{ActivitySlotInfo, LocalActivitySlotInfo, NexusSlotInfo, WorkflowSlotInfo},
9
+ temporal,
10
+ temporal::api::{enums::v1::VersioningBehavior, worker::v1::PluginInfo},
11
+ },
12
+ telemetry::metrics::TemporalMeter,
13
+ };
2
14
  use std::{
3
15
  any::Any,
4
16
  collections::{HashMap, HashSet},
@@ -6,12 +18,74 @@ use std::{
6
18
  sync::Arc,
7
19
  time::Duration,
8
20
  };
9
- use temporal_sdk_core_protos::{
10
- coresdk,
11
- coresdk::{ActivitySlotInfo, LocalActivitySlotInfo, NexusSlotInfo, WorkflowSlotInfo},
12
- temporal,
13
- temporal::api::enums::v1::VersioningBehavior,
14
- };
21
+
22
+ /// Specifies which task types a worker will poll for.
23
+ ///
24
+ /// Workers can be configured to handle any combination of workflows, activities, and nexus operations.
25
+ #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
26
+ pub struct WorkerTaskTypes {
27
+ pub enable_workflows: bool,
28
+ pub enable_local_activities: bool,
29
+ pub enable_remote_activities: bool,
30
+ pub enable_nexus: bool,
31
+ }
32
+
33
+ impl WorkerTaskTypes {
34
+ /// Check if no task types are enabled
35
+ pub fn is_empty(&self) -> bool {
36
+ !self.enable_workflows
37
+ && !self.enable_local_activities
38
+ && !self.enable_remote_activities
39
+ && !self.enable_nexus
40
+ }
41
+
42
+ /// Create a config with all task types enabled
43
+ pub fn all() -> WorkerTaskTypes {
44
+ WorkerTaskTypes {
45
+ enable_workflows: true,
46
+ enable_local_activities: true,
47
+ enable_remote_activities: true,
48
+ enable_nexus: true,
49
+ }
50
+ }
51
+
52
+ /// Create a config with only workflow tasks enabled
53
+ pub fn workflow_only() -> WorkerTaskTypes {
54
+ WorkerTaskTypes {
55
+ enable_workflows: true,
56
+ enable_local_activities: false,
57
+ enable_remote_activities: false,
58
+ enable_nexus: false,
59
+ }
60
+ }
61
+
62
+ /// Create a config with only activity tasks enabled
63
+ pub fn activity_only() -> WorkerTaskTypes {
64
+ WorkerTaskTypes {
65
+ enable_workflows: false,
66
+ enable_local_activities: false,
67
+ enable_remote_activities: true,
68
+ enable_nexus: false,
69
+ }
70
+ }
71
+
72
+ /// Create a config with only nexus tasks enabled
73
+ pub fn nexus_only() -> WorkerTaskTypes {
74
+ WorkerTaskTypes {
75
+ enable_workflows: false,
76
+ enable_local_activities: false,
77
+ enable_remote_activities: false,
78
+ enable_nexus: true,
79
+ }
80
+ }
81
+
82
+ pub fn overlaps_with(&self, other: &WorkerTaskTypes) -> bool {
83
+ (self.enable_workflows && other.enable_workflows)
84
+ || (self.enable_local_activities && other.enable_local_activities)
85
+ || (self.enable_remote_activities && other.enable_remote_activities)
86
+ || (self.enable_nexus && other.enable_nexus)
87
+ }
88
+ }
15
89
 
16
90
  /// Defines per-worker configuration options
17
91
  #[derive(Clone, derive_builder::Builder)]
@@ -61,10 +135,10 @@ pub struct WorkerConfig {
61
135
  /// worker's task queue
62
136
  #[builder(default = "PollerBehavior::SimpleMaximum(5)")]
63
137
  pub nexus_task_poller_behavior: PollerBehavior,
64
- /// If set to true this worker will only handle workflow tasks and local activities, it will not
65
- /// poll for activity tasks.
66
- #[builder(default = "false")]
67
- pub no_remote_activities: bool,
138
+ /// Specifies which task types this worker will poll for.
139
+ ///
140
+ /// Note: At least one task type must be specified or the worker will fail validation.
141
+ pub task_types: WorkerTaskTypes,
68
142
  /// How long a workflow task is allowed to sit on the sticky queue before it is timed out
69
143
  /// and moved to the non-sticky queue where it may be picked up by any worker.
70
144
  #[builder(default = "Duration::from_secs(10)")]
@@ -141,19 +215,19 @@ pub struct WorkerConfig {
141
215
  /// Mutually exclusive with `tuner`
142
216
  #[builder(setter(into, strip_option), default)]
143
217
  pub max_outstanding_workflow_tasks: Option<usize>,
144
- /// The maximum number of activity tasks that will ever be given to this worker concurrently
218
+ /// The maximum number of activity tasks that will ever be given to this worker concurrently.
145
219
  ///
146
220
  /// Mutually exclusive with `tuner`
147
221
  #[builder(setter(into, strip_option), default)]
148
222
  pub max_outstanding_activities: Option<usize>,
149
223
  /// The maximum number of local activity tasks that will ever be given to this worker
150
- /// concurrently
224
+ /// concurrently.
151
225
  ///
152
226
  /// Mutually exclusive with `tuner`
153
227
  #[builder(setter(into, strip_option), default)]
154
228
  pub max_outstanding_local_activities: Option<usize>,
155
229
  /// The maximum number of nexus tasks that will ever be given to this worker
156
- /// concurrently
230
+ /// concurrently.
157
231
  ///
158
232
  /// Mutually exclusive with `tuner`
159
233
  #[builder(setter(into, strip_option), default)]
@@ -162,11 +236,13 @@ pub struct WorkerConfig {
162
236
  /// A versioning strategy for this worker.
163
237
  pub versioning_strategy: WorkerVersioningStrategy,
164
238
 
165
- /// The interval within which the worker will send a heartbeat.
166
- /// The timer is reset on each existing RPC call that also happens to send this data, like
167
- /// `PollWorkflowTaskQueueRequest`.
239
+ /// List of plugins used by lang.
168
240
  #[builder(default)]
169
- pub heartbeat_interval: Option<Duration>,
241
+ pub plugins: HashSet<PluginInfo>,
242
+
243
+ /// Skips the single worker+client+namespace+task_queue check
244
+ #[builder(default = "false")]
245
+ pub skip_client_worker_set_check: bool,
170
246
  }
171
247
 
172
248
  impl WorkerConfig {
@@ -213,6 +289,18 @@ impl WorkerConfigBuilder {
213
289
  }
214
290
 
215
291
  fn validate(&self) -> Result<(), String> {
292
+ let task_types = self
293
+ .task_types
294
+ .as_ref()
295
+ .cloned()
296
+ .unwrap_or_else(WorkerTaskTypes::all);
297
+ if task_types.is_empty() {
298
+ return Err("At least one task type must be enabled in `task_types`".to_owned());
299
+ }
300
+ if !task_types.enable_workflows && task_types.enable_local_activities {
301
+ return Err("`task_types` cannot enable local activities without workflows".to_owned());
302
+ }
303
+
216
304
  if let Some(b) = self.workflow_task_poller_behavior.as_ref() {
217
305
  b.validate()?
218
306
  }
@@ -363,6 +451,12 @@ pub trait SlotSupplier {
363
451
  fn available_slots(&self) -> Option<usize> {
364
452
  None
365
453
  }
454
+
455
+ /// Returns a human-friendly identifier describing this supplier implementation for
456
+ /// diagnostics and telemetry.
457
+ fn slot_supplier_kind(&self) -> String {
458
+ "Custom".to_string()
459
+ }
366
460
  }
367
461
 
368
462
  pub trait SlotReservationContext: Send + Sync {
@@ -0,0 +1,129 @@
1
+ use temporalio_common::worker::{WorkerConfigBuilder, WorkerTaskTypes, WorkerVersioningStrategy};
2
+
3
+ fn default_versioning_strategy() -> WorkerVersioningStrategy {
4
+ WorkerVersioningStrategy::None {
5
+ build_id: String::new(),
6
+ }
7
+ }
8
+
9
+ #[test]
10
+ fn test_default_configuration_polls_all_types() {
11
+ let config = WorkerConfigBuilder::default()
12
+ .namespace("default")
13
+ .task_queue("test-queue")
14
+ .versioning_strategy(default_versioning_strategy())
15
+ .task_types(WorkerTaskTypes::all())
16
+ .build()
17
+ .expect("Failed to build default config");
18
+
19
+ let effective = &config.task_types;
20
+ assert!(
21
+ effective.enable_workflows,
22
+ "Should poll workflows by default"
23
+ );
24
+ assert!(
25
+ effective.enable_local_activities,
26
+ "should poll local activities by default"
27
+ );
28
+ assert!(
29
+ effective.enable_remote_activities,
30
+ "Should poll remote activities by default"
31
+ );
32
+ assert!(effective.enable_nexus, "Should poll nexus by default");
33
+ }
34
+
35
+ #[test]
36
+ fn test_invalid_task_types_fails_validation() {
37
+ // empty task types
38
+ let result = WorkerConfigBuilder::default()
39
+ .namespace("default")
40
+ .task_queue("test-queue")
41
+ .versioning_strategy(default_versioning_strategy())
42
+ .task_types(WorkerTaskTypes {
43
+ enable_workflows: false,
44
+ enable_local_activities: false,
45
+ enable_remote_activities: false,
46
+ enable_nexus: false,
47
+ })
48
+ .build();
49
+
50
+ assert!(result.is_err(), "Empty task_types should fail validation");
51
+ let err = result.err().unwrap().to_string();
52
+ assert!(
53
+ err.contains("At least one task type"),
54
+ "Error should mention task types: {err}",
55
+ );
56
+
57
+ // local activities with no workflows
58
+ let result = WorkerConfigBuilder::default()
59
+ .namespace("default")
60
+ .task_queue("test-queue")
61
+ .versioning_strategy(default_versioning_strategy())
62
+ .task_types(WorkerTaskTypes {
63
+ enable_workflows: false,
64
+ enable_local_activities: true,
65
+ enable_remote_activities: false,
66
+ enable_nexus: false,
67
+ })
68
+ .build();
69
+
70
+ assert!(result.is_err(), "Empty task_types should fail validation");
71
+ let err = result.err().unwrap().to_string();
72
+ assert!(
73
+ err.contains("cannot enable local activities without workflows"),
74
+ "Error should mention task types: {err}",
75
+ );
76
+ }
77
+
78
+ #[test]
79
+ fn test_all_combinations() {
80
+ let combinations = [
81
+ (WorkerTaskTypes::workflow_only(), "workflows only"),
82
+ (WorkerTaskTypes::activity_only(), "activities only"),
83
+ (WorkerTaskTypes::nexus_only(), "nexus only"),
84
+ (
85
+ WorkerTaskTypes {
86
+ enable_workflows: true,
87
+ enable_local_activities: true,
88
+ enable_remote_activities: true,
89
+ enable_nexus: false,
90
+ },
91
+ "workflows + activities",
92
+ ),
93
+ (
94
+ WorkerTaskTypes {
95
+ enable_workflows: true,
96
+ enable_local_activities: true,
97
+ enable_remote_activities: false,
98
+ enable_nexus: true,
99
+ },
100
+ "workflows + nexus",
101
+ ),
102
+ (
103
+ WorkerTaskTypes {
104
+ enable_workflows: false,
105
+ enable_local_activities: false,
106
+ enable_remote_activities: true,
107
+ enable_nexus: true,
108
+ },
109
+ "activities + nexus",
110
+ ),
111
+ (WorkerTaskTypes::all(), "all types"),
112
+ ];
113
+
114
+ for (task_types, description) in combinations {
115
+ let config = WorkerConfigBuilder::default()
116
+ .namespace("default")
117
+ .task_queue("test-queue")
118
+ .versioning_strategy(default_versioning_strategy())
119
+ .task_types(task_types)
120
+ .build()
121
+ .unwrap_or_else(|e| panic!("Failed to build config for {description}: {e:?}"));
122
+
123
+ let effective = config.task_types;
124
+ assert_eq!(
125
+ effective, task_types,
126
+ "Effective types should match for {description}",
127
+ );
128
+ }
129
+ }
@@ -0,0 +1,23 @@
1
+ [package]
2
+ name = "temporalio-macros"
3
+ version = "0.1.0"
4
+ edition = "2024"
5
+ authors = ["Temporal Technologies Inc. <sdk@temporal.io>"]
6
+ license-file = { workspace = true }
7
+ description = "Procmacros used in Temporal Core & Rust SDKs"
8
+
9
+ [lib]
10
+ proc-macro = true
11
+
12
+ [dependencies]
13
+ derive_more = { workspace = true }
14
+ proc-macro2 = "1.0"
15
+ syn = { version = "2.0", features = ["default", "extra-traits"] }
16
+ quote = "1.0"
17
+
18
+ [dev-dependencies]
19
+ # This is to enable doctests for the macros
20
+ temporalio-common = { path = "../common" }
21
+
22
+ [package.metadata.workspaces]
23
+ independent = true
@@ -13,10 +13,9 @@ use syn::{
13
13
  ///
14
14
  /// An example state machine definition of a card reader for unlocking a door:
15
15
  /// ```
16
- /// # extern crate rustfsm_trait as rustfsm;
17
- /// use rustfsm_procmacro::fsm;
16
+ /// use temporalio_macros::fsm;
18
17
  /// use std::convert::Infallible;
19
- /// use rustfsm_trait::{StateMachine, TransitionResult};
18
+ /// use temporalio_common::fsm_trait::{StateMachine, TransitionResult};
20
19
  ///
21
20
  /// fsm! {
22
21
  /// name CardReader; command Commands; error Infallible; shared_state SharedState;
@@ -543,7 +542,7 @@ impl StateMachineDefinition {
543
542
  quote! { _ => {
544
543
  // Restore state in event the transition doesn't match
545
544
  self.state = #occupied_current_state;
546
- return Err(::rustfsm::MachineError::InvalidTransition)
545
+ return Err(::temporalio_common::fsm_trait::MachineError::InvalidTransition)
547
546
  } },
548
547
  ));
549
548
  quote! {
@@ -553,14 +552,14 @@ impl StateMachineDefinition {
553
552
  }
554
553
  }).chain(std::iter::once(
555
554
  quote! {
556
- None => Err(::rustfsm::MachineError::InvalidTransition)
555
+ None => Err(::temporalio_common::fsm_trait::MachineError::InvalidTransition)
557
556
  }
558
557
  )).collect();
559
558
 
560
559
  let viz_str = self.visualize();
561
560
 
562
561
  let trait_impl = quote! {
563
- impl ::rustfsm::StateMachine for #name {
562
+ impl ::temporalio_common::fsm_trait::StateMachine for #name {
564
563
  type Error = #err_type;
565
564
  type State = #state_enum_name;
566
565
  type SharedState = #shared_state_type;
@@ -573,7 +572,7 @@ impl StateMachineDefinition {
573
572
 
574
573
  fn on_event(&mut self, event: #events_enum_name)
575
574
  -> ::core::result::Result<::std::vec::Vec<Self::Command>,
576
- ::rustfsm::MachineError<Self::Error>> {
575
+ ::temporalio_common::fsm_trait::MachineError<Self::Error>> {
577
576
  let taken_state = self.state.take();
578
577
  match taken_state {
579
578
  #(#state_branches),*
@@ -584,10 +583,6 @@ impl StateMachineDefinition {
584
583
  self.state.as_ref().unwrap()
585
584
  }
586
585
 
587
- fn set_state(&mut self, new: Self::State) {
588
- self.state = Some(new)
589
- }
590
-
591
586
  fn shared_state(&self) -> &Self::SharedState{
592
587
  &self.shared_state
593
588
  }
@@ -1,5 +1,5 @@
1
1
  [package]
2
- name = "temporal-sdk"
2
+ name = "temporalio-sdk"
3
3
  version = "0.1.0-alpha.1"
4
4
  edition = "2024"
5
5
  authors = ["Spencer Judge <spencer@temporal.io>"]
@@ -29,22 +29,22 @@ tokio-util = { version = "0.7" }
29
29
  tokio-stream = "0.1"
30
30
  tracing = "0.1"
31
31
 
32
- [dependencies.temporal-sdk-core]
33
- path = "../core"
32
+ [dependencies.temporalio-sdk-core]
33
+ path = "../sdk-core"
34
34
  version = "0.1"
35
35
  default-features = false
36
36
 
37
- [dependencies.temporal-sdk-core-protos]
38
- path = "../sdk-core-protos"
37
+ [dependencies.temporalio-common]
38
+ path = "../common"
39
39
  version = "0.1"
40
40
 
41
- [dependencies.temporal-sdk-core-api]
42
- path = "../core-api"
43
- version = "0.1"
44
-
45
- [dependencies.temporal-client]
41
+ [dependencies.temporalio-client]
46
42
  path = "../client"
47
43
  version = "0.1"
48
44
 
45
+ [features]
46
+ default = []
47
+ antithesis_assertions = ["temporalio-sdk-core/antithesis_assertions"]
48
+
49
49
  [lints]
50
50
  workspace = true
@@ -6,12 +6,14 @@ use std::{
6
6
  sync::Arc,
7
7
  time::{Duration as StdDuration, SystemTime},
8
8
  };
9
- use temporal_client::Priority;
10
- use temporal_sdk_core_api::Worker;
11
- use temporal_sdk_core_protos::{
12
- coresdk::{ActivityHeartbeat, activity_task},
13
- temporal::api::common::v1::{Payload, RetryPolicy, WorkflowExecution},
14
- utilities::TryIntoOrNone,
9
+ use temporalio_client::Priority;
10
+ use temporalio_common::{
11
+ Worker,
12
+ protos::{
13
+ coresdk::{ActivityHeartbeat, activity_task},
14
+ temporal::api::common::v1::{Payload, RetryPolicy, WorkflowExecution},
15
+ utilities::TryIntoOrNone,
16
+ },
15
17
  };
16
18
  use tokio_util::sync::CancellationToken;
17
19
 
@@ -3,7 +3,7 @@
3
3
  use crate::Worker;
4
4
  use anyhow::bail;
5
5
  use std::sync::{Arc, OnceLock};
6
- use temporal_sdk_core_protos::{
6
+ use temporalio_common::protos::{
7
7
  coresdk::{
8
8
  workflow_activation::{WorkflowActivation, remove_from_cache::EvictionReason},
9
9
  workflow_completion::WorkflowActivationCompletion,
@@ -9,21 +9,22 @@
9
9
  //! An example of running an activity worker:
10
10
  //! ```no_run
11
11
  //! use std::{str::FromStr, sync::Arc};
12
- //! use temporal_sdk::{sdk_client_options, ActContext, Worker};
13
- //! use temporal_sdk_core::{init_worker, Url, CoreRuntime};
14
- //! use temporal_sdk_core_api::{
12
+ //! use temporalio_sdk::{sdk_client_options, ActContext, Worker};
13
+ //! use temporalio_sdk_core::{init_worker, Url, CoreRuntime, RuntimeOptionsBuilder};
14
+ //! use temporalio_common::{
15
15
  //! worker::{WorkerConfigBuilder, WorkerVersioningStrategy},
16
16
  //! telemetry::TelemetryOptionsBuilder
17
17
  //! };
18
18
  //!
19
19
  //! #[tokio::main]
20
20
  //! async fn main() -> Result<(), Box<dyn std::error::Error>> {
21
- //! let server_options = sdk_client_options(Url::from_str("http://localhost:7233")?).build()?;
22
- //!
23
- //! let client = server_options.connect("default", None).await?;
21
+ //! let server_options = sdk_client_options(Url::from_str("http://localhost:7233")?).build();
24
22
  //!
25
23
  //! let telemetry_options = TelemetryOptionsBuilder::default().build()?;
26
- //! let runtime = CoreRuntime::new_assume_tokio(telemetry_options)?;
24
+ //! let runtime_options = RuntimeOptionsBuilder::default().telemetry_options(telemetry_options).build().unwrap();
25
+ //! let runtime = CoreRuntime::new_assume_tokio(runtime_options)?;
26
+ //!
27
+ //! let client = server_options.connect("default", None).await?;
27
28
  //!
28
29
  //! let worker_config = WorkerConfigBuilder::default()
29
30
  //! .namespace("default")
@@ -55,7 +56,7 @@ mod workflow_context;
55
56
  mod workflow_future;
56
57
 
57
58
  pub use activity_context::ActContext;
58
- pub use temporal_client::Namespace;
59
+ pub use temporalio_client::Namespace;
59
60
  use tracing::{Instrument, Span, field};
60
61
  pub use workflow_context::{
61
62
  ActivityOptions, CancellableFuture, ChildWorkflow, ChildWorkflowOptions, LocalActivityOptions,
@@ -81,32 +82,37 @@ use std::{
81
82
  sync::Arc,
82
83
  time::Duration,
83
84
  };
84
- use temporal_client::ClientOptionsBuilder;
85
- use temporal_sdk_core::Url;
86
- use temporal_sdk_core_api::{Worker as CoreWorker, errors::PollError};
87
- use temporal_sdk_core_protos::{
88
- TaskToken,
89
- coresdk::{
90
- ActivityTaskCompletion, AsJsonPayloadExt, FromJsonPayloadExt,
91
- activity_result::{ActivityExecutionResult, ActivityResolution},
92
- activity_task::{ActivityTask, activity_task},
93
- child_workflow::ChildWorkflowResult,
94
- common::NamespacedWorkflowExecution,
95
- nexus::NexusOperationResult,
96
- workflow_activation::{
97
- WorkflowActivation,
98
- resolve_child_workflow_execution_start::Status as ChildWorkflowStartStatus,
99
- resolve_nexus_operation_start, workflow_activation_job::Variant,
85
+ use temporalio_client::{ClientOptions, ClientOptionsBuilder, client_options_builder};
86
+ use temporalio_common::{
87
+ Worker as CoreWorker,
88
+ errors::PollError,
89
+ protos::{
90
+ TaskToken,
91
+ coresdk::{
92
+ ActivityTaskCompletion, AsJsonPayloadExt, FromJsonPayloadExt,
93
+ activity_result::{ActivityExecutionResult, ActivityResolution},
94
+ activity_task::{ActivityTask, activity_task},
95
+ child_workflow::ChildWorkflowResult,
96
+ common::NamespacedWorkflowExecution,
97
+ nexus::NexusOperationResult,
98
+ workflow_activation::{
99
+ WorkflowActivation,
100
+ resolve_child_workflow_execution_start::Status as ChildWorkflowStartStatus,
101
+ resolve_nexus_operation_start, workflow_activation_job::Variant,
102
+ },
103
+ workflow_commands::{
104
+ ContinueAsNewWorkflowExecution, WorkflowCommand, workflow_command,
105
+ },
106
+ workflow_completion::WorkflowActivationCompletion,
107
+ },
108
+ temporal::api::{
109
+ common::v1::Payload,
110
+ enums::v1::WorkflowTaskFailedCause,
111
+ failure::v1::{Failure, failure},
100
112
  },
101
- workflow_commands::{ContinueAsNewWorkflowExecution, WorkflowCommand, workflow_command},
102
- workflow_completion::WorkflowActivationCompletion,
103
- },
104
- temporal::api::{
105
- common::v1::Payload,
106
- enums::v1::WorkflowTaskFailedCause,
107
- failure::v1::{Failure, failure},
108
113
  },
109
114
  };
115
+ use temporalio_sdk_core::Url;
110
116
  use tokio::{
111
117
  sync::{
112
118
  Notify,
@@ -122,14 +128,13 @@ const VERSION: &str = env!("CARGO_PKG_VERSION");
122
128
 
123
129
  /// Returns a [ClientOptionsBuilder] with required fields set to appropriate values
124
130
  /// for the Rust SDK.
125
- pub fn sdk_client_options(url: impl Into<Url>) -> ClientOptionsBuilder {
126
- let mut builder = ClientOptionsBuilder::default();
127
- builder
131
+ pub fn sdk_client_options(
132
+ url: impl Into<Url>,
133
+ ) -> ClientOptionsBuilder<impl client_options_builder::IsComplete> {
134
+ ClientOptions::builder()
128
135
  .target_url(url)
129
136
  .client_name("temporal-rust".to_string())
130
- .client_version(VERSION.to_string());
131
-
132
- builder
137
+ .client_version(VERSION.to_string())
133
138
  }
134
139
 
135
140
  /// A worker that can poll for and respond to workflow tasks by using [WorkflowFunction]s,
@@ -1,7 +1,7 @@
1
1
  use std::{collections::HashMap, time::Duration};
2
2
 
3
- use temporal_client::{Priority, WorkflowOptions};
4
- use temporal_sdk_core_protos::{
3
+ use temporalio_client::{Priority, WorkflowOptions};
4
+ use temporalio_common::protos::{
5
5
  coresdk::{
6
6
  AsJsonPayloadExt,
7
7
  child_workflow::ChildWorkflowCancellationType,
@@ -28,28 +28,30 @@ use std::{
28
28
  task::Poll,
29
29
  time::{Duration, SystemTime},
30
30
  };
31
- use temporal_sdk_core_api::worker::WorkerDeploymentVersion;
32
- use temporal_sdk_core_protos::{
33
- coresdk::{
34
- activity_result::{ActivityResolution, activity_resolution},
35
- child_workflow::ChildWorkflowResult,
36
- common::NamespacedWorkflowExecution,
37
- nexus::NexusOperationResult,
38
- workflow_activation::{
39
- InitializeWorkflow,
40
- resolve_child_workflow_execution_start::Status as ChildWorkflowStartStatus,
31
+ use temporalio_common::{
32
+ protos::{
33
+ coresdk::{
34
+ activity_result::{ActivityResolution, activity_resolution},
35
+ child_workflow::ChildWorkflowResult,
36
+ common::NamespacedWorkflowExecution,
37
+ nexus::NexusOperationResult,
38
+ workflow_activation::{
39
+ InitializeWorkflow,
40
+ resolve_child_workflow_execution_start::Status as ChildWorkflowStartStatus,
41
+ },
42
+ workflow_commands::{
43
+ CancelChildWorkflowExecution, ModifyWorkflowProperties,
44
+ RequestCancelExternalWorkflowExecution, SetPatchMarker,
45
+ SignalExternalWorkflowExecution, StartTimer, UpsertWorkflowSearchAttributes,
46
+ WorkflowCommand, signal_external_workflow_execution as sig_we, workflow_command,
47
+ },
41
48
  },
42
- workflow_commands::{
43
- CancelChildWorkflowExecution, ModifyWorkflowProperties,
44
- RequestCancelExternalWorkflowExecution, SetPatchMarker,
45
- SignalExternalWorkflowExecution, StartTimer, UpsertWorkflowSearchAttributes,
46
- WorkflowCommand, signal_external_workflow_execution as sig_we, workflow_command,
49
+ temporal::api::{
50
+ common::v1::{Memo, Payload, SearchAttributes},
51
+ sdk::v1::UserMetadata,
47
52
  },
48
53
  },
49
- temporal::api::{
50
- common::v1::{Memo, Payload, SearchAttributes},
51
- sdk::v1::UserMetadata,
52
- },
54
+ worker::WorkerDeploymentVersion,
53
55
  };
54
56
  use tokio::sync::{mpsc, oneshot, watch};
55
57
  use tokio_stream::wrappers::UnboundedReceiverStream;
@@ -14,7 +14,7 @@ use std::{
14
14
  sync::mpsc::Receiver,
15
15
  task::{Context, Poll},
16
16
  };
17
- use temporal_sdk_core_protos::{
17
+ use temporalio_common::protos::{
18
18
  coresdk::{
19
19
  workflow_activation::{
20
20
  FireTimer, InitializeWorkflow, NotifyHasPatch, ResolveActivity,