@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
@@ -12,7 +12,7 @@ use std::{
12
12
  sync::Arc,
13
13
  time::Duration,
14
14
  };
15
- use temporal_sdk_core_api::telemetry::metrics::{
15
+ use temporalio_common::telemetry::metrics::{
16
16
  CoreMeter, Counter, CounterBase, Gauge, GaugeBase, GaugeF64, GaugeF64Base, Histogram,
17
17
  HistogramBase, HistogramDuration, HistogramDurationBase, HistogramF64, HistogramF64Base,
18
18
  MetricAttributable, MetricAttributes, MetricParameters, NewAttributes, OrderedPromLabelSet,
@@ -459,7 +459,7 @@ pub struct CorePrometheusMeter {
459
459
  registry: Registry,
460
460
  use_seconds_for_durations: bool,
461
461
  unit_suffix: bool,
462
- bucket_overrides: temporal_sdk_core_api::telemetry::HistogramBucketOverrides,
462
+ bucket_overrides: temporalio_common::telemetry::HistogramBucketOverrides,
463
463
  }
464
464
 
465
465
  impl CorePrometheusMeter {
@@ -467,7 +467,7 @@ impl CorePrometheusMeter {
467
467
  registry: Registry,
468
468
  use_seconds_for_durations: bool,
469
469
  unit_suffix: bool,
470
- bucket_overrides: temporal_sdk_core_api::telemetry::HistogramBucketOverrides,
470
+ bucket_overrides: temporalio_common::telemetry::HistogramBucketOverrides,
471
471
  ) -> Self {
472
472
  Self {
473
473
  registry,
@@ -638,7 +638,7 @@ mod tests {
638
638
  use super::*;
639
639
  use crate::telemetry::{TelemetryInstance, metrics::MetricsContext};
640
640
  use prometheus::{Encoder, TextEncoder};
641
- use temporal_sdk_core_api::telemetry::{
641
+ use temporalio_common::telemetry::{
642
642
  METRIC_PREFIX,
643
643
  metrics::{MetricKeyValue, NewAttributes},
644
644
  };
@@ -650,7 +650,7 @@ mod tests {
650
650
  registry.clone(),
651
651
  false,
652
652
  false,
653
- temporal_sdk_core_api::telemetry::HistogramBucketOverrides::default(),
653
+ temporalio_common::telemetry::HistogramBucketOverrides::default(),
654
654
  );
655
655
 
656
656
  let counter = meter.counter(MetricParameters {
@@ -690,7 +690,7 @@ mod tests {
690
690
  registry.clone(),
691
691
  false,
692
692
  false,
693
- temporal_sdk_core_api::telemetry::HistogramBucketOverrides::default(),
693
+ temporalio_common::telemetry::HistogramBucketOverrides::default(),
694
694
  );
695
695
 
696
696
  let base_attrs = meter.new_attributes(NewAttributes::new(vec![
@@ -729,7 +729,7 @@ mod tests {
729
729
  registry.clone(),
730
730
  false,
731
731
  false,
732
- temporal_sdk_core_api::telemetry::HistogramBucketOverrides::default(),
732
+ temporalio_common::telemetry::HistogramBucketOverrides::default(),
733
733
  );
734
734
 
735
735
  let histogram_ms = meter_ms.histogram_duration(MetricParameters {
@@ -759,7 +759,7 @@ mod tests {
759
759
  registry_s.clone(),
760
760
  true,
761
761
  false,
762
- temporal_sdk_core_api::telemetry::HistogramBucketOverrides::default(),
762
+ temporalio_common::telemetry::HistogramBucketOverrides::default(),
763
763
  );
764
764
 
765
765
  let histogram_s = meter_s.histogram_duration(MetricParameters {
@@ -791,7 +791,7 @@ mod tests {
791
791
  registry.clone(),
792
792
  false,
793
793
  false,
794
- temporal_sdk_core_api::telemetry::HistogramBucketOverrides::default(),
794
+ temporalio_common::telemetry::HistogramBucketOverrides::default(),
795
795
  );
796
796
  let counter = meter.counter(MetricParameters {
797
797
  name: "no_labels".into(),
@@ -812,7 +812,7 @@ mod tests {
812
812
  registry.clone(),
813
813
  false,
814
814
  false,
815
- temporal_sdk_core_api::telemetry::HistogramBucketOverrides::default(),
815
+ temporalio_common::telemetry::HistogramBucketOverrides::default(),
816
816
  );
817
817
  let telem_instance = TelemetryInstance::new(
818
818
  None,
@@ -820,7 +820,7 @@ mod tests {
820
820
  METRIC_PREFIX.to_string(),
821
821
  Some(Arc::new(meter)),
822
822
  true,
823
- temporal_sdk_core_api::telemetry::TaskQueueLabelStrategy::UseNormal,
823
+ temporalio_common::telemetry::TaskQueueLabelStrategy::UseNormal,
824
824
  );
825
825
  let mc = MetricsContext::top_level("foo".to_string(), "q".to_string(), &telem_instance);
826
826
  mc.worker_registered();
@@ -844,7 +844,7 @@ mod tests {
844
844
  registry.clone(),
845
845
  false,
846
846
  false,
847
- temporal_sdk_core_api::telemetry::HistogramBucketOverrides::default(),
847
+ temporalio_common::telemetry::HistogramBucketOverrides::default(),
848
848
  );
849
849
  let dashes = meter.counter(MetricParameters {
850
850
  name: "dash-in-name".into(),
@@ -865,7 +865,7 @@ mod tests {
865
865
  registry.clone(),
866
866
  false,
867
867
  false,
868
- temporal_sdk_core_api::telemetry::HistogramBucketOverrides::default(),
868
+ temporalio_common::telemetry::HistogramBucketOverrides::default(),
869
869
  );
870
870
  let dashes = meter.counter(MetricParameters {
871
871
  name: "not@permitted:symbols".into(),
@@ -10,7 +10,7 @@ use std::{
10
10
  net::{SocketAddr, TcpListener},
11
11
  sync::Arc,
12
12
  };
13
- use temporal_sdk_core_api::telemetry::PrometheusExporterOptions;
13
+ use temporalio_common::telemetry::PrometheusExporterOptions;
14
14
  use tokio::{io, task::AbortHandle};
15
15
 
16
16
  pub struct StartedPromServer {
@@ -20,7 +20,7 @@ pub struct StartedPromServer {
20
20
  }
21
21
 
22
22
  /// Builds and runs a prometheus endpoint which can be scraped by prom instances for metrics export.
23
- /// Returns the meter that can be used as a [CoreMeter].
23
+ /// Returns the meter that can be used as a [`CoreMeter`](temporalio_common::telemetry::metrics::CoreMeter).
24
24
  ///
25
25
  /// Requires a Tokio runtime to exist, and will block briefly while binding the server endpoint.
26
26
  pub fn start_prometheus_metric_exporter(
@@ -36,39 +36,37 @@ use std::{
36
36
  task::{Context, Poll},
37
37
  time::Duration,
38
38
  };
39
- use temporal_sdk_core_api::{
39
+ use temporalio_common::{
40
40
  Worker as WorkerTrait,
41
41
  errors::PollError,
42
- worker::{PollerBehavior, WorkerVersioningStrategy},
43
- };
44
- use temporal_sdk_core_protos::{
45
- coresdk::{
46
- workflow_activation::{WorkflowActivationJob, workflow_activation_job},
47
- workflow_commands::{CompleteWorkflowExecution, StartTimer},
48
- workflow_completion::WorkflowActivationCompletion,
49
- },
50
- temporal::api::{
51
- common::v1::WorkflowExecution,
52
- enums::v1::WorkflowTaskFailedCause,
53
- failure::v1::Failure,
54
- protocol::{self, v1::message},
55
- update,
56
- workflowservice::v1::{
57
- PollActivityTaskQueueResponse, PollNexusTaskQueueResponse,
58
- PollWorkflowTaskQueueResponse, RespondWorkflowTaskCompletedResponse,
42
+ protos::{
43
+ coresdk::{
44
+ workflow_activation::{WorkflowActivationJob, workflow_activation_job},
45
+ workflow_commands::{CompleteWorkflowExecution, StartTimer},
46
+ workflow_completion::WorkflowActivationCompletion,
59
47
  },
48
+ temporal::api::{
49
+ common::v1::WorkflowExecution,
50
+ enums::v1::WorkflowTaskFailedCause,
51
+ failure::v1::Failure,
52
+ protocol::{self, v1::message},
53
+ update,
54
+ workflowservice::v1::{
55
+ PollActivityTaskQueueResponse, PollNexusTaskQueueResponse,
56
+ PollWorkflowTaskQueueResponse, RespondWorkflowTaskCompletedResponse,
57
+ },
58
+ },
59
+ utilities::pack_any,
60
60
  },
61
- utilities::pack_any,
61
+ worker::{PollerBehavior, WorkerTaskTypes, WorkerVersioningStrategy},
62
62
  };
63
63
  use tokio::sync::{Notify, mpsc::unbounded_channel};
64
64
  use tokio_stream::wrappers::UnboundedReceiverStream;
65
+ use uuid::Uuid;
65
66
 
66
67
  /// Default namespace for testing
67
68
  pub const NAMESPACE: &str = "default";
68
69
 
69
- /// Default task queue for testing
70
- pub const TEST_Q: &str = "q";
71
-
72
70
  /// Initiate shutdown, drain the pollers (handling evictions), and wait for shutdown to complete.
73
71
  pub async fn drain_pollers_and_shutdown(worker: &dyn WorkerTrait) {
74
72
  worker.initiate_shutdown();
@@ -102,11 +100,12 @@ pub async fn drain_pollers_and_shutdown(worker: &dyn WorkerTrait) {
102
100
  pub fn test_worker_cfg() -> WorkerConfigBuilder {
103
101
  let mut wcb = WorkerConfigBuilder::default();
104
102
  wcb.namespace(NAMESPACE)
105
- .task_queue(TEST_Q)
103
+ .task_queue(Uuid::new_v4().to_string())
106
104
  .versioning_strategy(WorkerVersioningStrategy::None {
107
105
  build_id: "test_bin_id".to_string(),
108
106
  })
109
107
  .ignore_evicts_on_shutdown(true)
108
+ .task_types(WorkerTaskTypes::all())
110
109
  // Serial polling since it makes mocking much easier.
111
110
  .workflow_task_poller_behavior(PollerBehavior::SimpleMaximum(1_usize));
112
111
  wcb
@@ -185,11 +184,16 @@ pub fn build_fake_worker(
185
184
  }
186
185
 
187
186
  pub fn mock_worker(mocks: MocksHolder) -> Worker {
188
- let sticky_q = sticky_q_name_for_worker("unit-test", &mocks.inputs.config);
189
- let act_poller = if mocks.inputs.config.no_remote_activities {
187
+ let sticky_q = sticky_q_name_for_worker("unit-test", mocks.inputs.config.max_cached_workflows);
188
+ let act_poller = if mocks.inputs.config.task_types.enable_remote_activities {
189
+ mocks.inputs.act_poller
190
+ } else {
190
191
  None
192
+ };
193
+ let nexus_poller = if mocks.inputs.config.task_types.enable_nexus {
194
+ mocks.inputs.nexus_poller
191
195
  } else {
192
- mocks.inputs.act_poller
196
+ None
193
197
  };
194
198
  Worker::new_with_pollers(
195
199
  mocks.inputs.config,
@@ -198,14 +202,13 @@ pub fn mock_worker(mocks: MocksHolder) -> Worker {
198
202
  TaskPollers::Mocked {
199
203
  wft_stream: mocks.inputs.wft_stream,
200
204
  act_poller,
201
- nexus_poller: mocks
202
- .inputs
203
- .nexus_poller
204
- .unwrap_or_else(|| mock_poller_from_resps([])),
205
+ nexus_poller,
205
206
  },
206
207
  None,
207
208
  None,
209
+ false,
208
210
  )
211
+ .unwrap()
209
212
  }
210
213
 
211
214
  pub struct FakeWfResponses {
@@ -230,15 +233,38 @@ impl MocksHolder {
230
233
  self.inputs.act_poller = Some(poller);
231
234
  }
232
235
 
236
+ /// Helper to create and set an activity poller from responses
237
+ #[cfg(test)]
238
+ pub(crate) fn set_act_poller_from_resps<ACT>(&mut self, act_tasks: ACT)
239
+ where
240
+ ACT: IntoIterator<Item = QueueResponse<PollActivityTaskQueueResponse>>,
241
+ <ACT as IntoIterator>::IntoIter: Send + 'static,
242
+ {
243
+ let act_poller = mock_poller_from_resps(act_tasks);
244
+ self.set_act_poller(act_poller);
245
+ }
246
+
247
+ /// Helper to create and set a nexus poller from responses
248
+ #[cfg(test)]
249
+ pub(crate) fn set_nexus_poller_from_resps<NEX>(&mut self, nexus_tasks: NEX)
250
+ where
251
+ NEX: IntoIterator<Item = QueueResponse<PollNexusTaskQueueResponse>>,
252
+ <NEX as IntoIterator>::IntoIter: Send + 'static,
253
+ {
254
+ let nexus_poller = mock_poller_from_resps(nexus_tasks);
255
+ self.inputs.nexus_poller = Some(nexus_poller);
256
+ }
257
+
233
258
  /// Can be used for tests that need to avoid auto-shutdown due to running out of mock responses
234
259
  pub fn make_wft_stream_interminable(&mut self) {
235
- let old_stream = std::mem::replace(&mut self.inputs.wft_stream, stream::pending().boxed());
236
- self.inputs.wft_stream = old_stream.chain(stream::pending()).boxed();
260
+ if let Some(old_stream) = self.inputs.wft_stream.take() {
261
+ self.inputs.wft_stream = Some(old_stream.chain(stream::pending()).boxed());
262
+ }
237
263
  }
238
264
  }
239
265
 
240
266
  pub struct MockWorkerInputs {
241
- pub(crate) wft_stream: BoxStream<'static, Result<ValidPollWFTQResponse, tonic::Status>>,
267
+ pub(crate) wft_stream: Option<BoxStream<'static, Result<ValidPollWFTQResponse, tonic::Status>>>,
242
268
  pub(crate) act_poller: Option<BoxedPoller<PollActivityTaskQueueResponse>>,
243
269
  pub(crate) nexus_poller: Option<BoxedPoller<PollNexusTaskQueueResponse>>,
244
270
  pub(crate) config: WorkerConfig,
@@ -255,7 +281,7 @@ impl MockWorkerInputs {
255
281
  wft_stream: BoxStream<'static, Result<ValidPollWFTQResponse, tonic::Status>>,
256
282
  ) -> Self {
257
283
  Self {
258
- wft_stream,
284
+ wft_stream: Some(wft_stream),
259
285
  act_poller: None,
260
286
  nexus_poller: None,
261
287
  config: test_worker_cfg().build().unwrap(),
@@ -275,7 +301,7 @@ impl MocksHolder {
275
301
  }
276
302
  }
277
303
 
278
- /// Uses the provided list of tasks to create a mock poller for the `TEST_Q`
304
+ /// Uses the provided list of tasks to create a mock poller with a randomly generated task queue
279
305
  pub fn from_client_with_activities<ACT>(
280
306
  client: impl WorkerClient + 'static,
281
307
  act_tasks: ACT,
@@ -284,10 +310,9 @@ impl MocksHolder {
284
310
  ACT: IntoIterator<Item = QueueResponse<PollActivityTaskQueueResponse>>,
285
311
  <ACT as IntoIterator>::IntoIter: Send + 'static,
286
312
  {
287
- let wft_stream = stream::pending().boxed();
288
313
  let mock_act_poller = mock_poller_from_resps(act_tasks);
289
314
  let mock_worker = MockWorkerInputs {
290
- wft_stream,
315
+ wft_stream: None,
291
316
  act_poller: Some(mock_act_poller),
292
317
  nexus_poller: None,
293
318
  config: test_worker_cfg().build().unwrap(),
@@ -299,6 +324,66 @@ impl MocksHolder {
299
324
  }
300
325
  }
301
326
 
327
+ /// Uses the provided list of tasks to create a mock poller with a randomly generated task queue
328
+ pub fn from_client_with_nexus<NEX>(
329
+ client: impl WorkerClient + 'static,
330
+ nexus_tasks: NEX,
331
+ ) -> Self
332
+ where
333
+ NEX: IntoIterator<Item = QueueResponse<PollNexusTaskQueueResponse>>,
334
+ <NEX as IntoIterator>::IntoIter: Send + 'static,
335
+ {
336
+ let mock_nexus_poller = mock_poller_from_resps(nexus_tasks);
337
+ let mock_worker = MockWorkerInputs {
338
+ wft_stream: None,
339
+ act_poller: None,
340
+ nexus_poller: Some(mock_nexus_poller),
341
+ config: test_worker_cfg().build().unwrap(),
342
+ };
343
+ Self {
344
+ client: Arc::new(client),
345
+ inputs: mock_worker,
346
+ outstanding_task_map: None,
347
+ }
348
+ }
349
+
350
+ /// Create a MocksHolder with custom combination of task pollers.
351
+ /// Allows any combination of workflow, activity, and nexus tasks.
352
+ pub fn from_client_with_custom<WFT, ACT, NEX>(
353
+ client: impl WorkerClient + 'static,
354
+ wft_stream: Option<WFT>,
355
+ activity_tasks: Option<ACT>,
356
+ nexus_tasks: Option<NEX>,
357
+ ) -> Self
358
+ where
359
+ WFT: Stream<Item = PollWorkflowTaskQueueResponse> + Send + 'static,
360
+ ACT: IntoIterator<Item = QueueResponse<PollActivityTaskQueueResponse>>,
361
+ <ACT as IntoIterator>::IntoIter: Send + 'static,
362
+ NEX: IntoIterator<Item = QueueResponse<PollNexusTaskQueueResponse>>,
363
+ <NEX as IntoIterator>::IntoIter: Send + 'static,
364
+ {
365
+ let wft_stream = wft_stream.map(|s| {
366
+ s.map(|r| Ok(r.try_into().expect("Mock responses must be valid work")))
367
+ .boxed()
368
+ });
369
+
370
+ let act_poller = activity_tasks.map(|tasks| mock_poller_from_resps(tasks));
371
+ let nexus_poller = nexus_tasks.map(|tasks| mock_poller_from_resps(tasks));
372
+
373
+ let mock_worker = MockWorkerInputs {
374
+ wft_stream,
375
+ act_poller,
376
+ nexus_poller,
377
+ config: test_worker_cfg().build().unwrap(),
378
+ };
379
+
380
+ Self {
381
+ client: Arc::new(client),
382
+ inputs: mock_worker,
383
+ outstanding_task_map: None,
384
+ }
385
+ }
386
+
302
387
  /// Uses the provided task responses and delivers them as quickly as possible when polled.
303
388
  /// This is only useful to test buffering, as typically you do not want to pretend that
304
389
  /// the server is delivering WFTs super fast for the same run.
@@ -306,9 +391,11 @@ impl MocksHolder {
306
391
  client: impl WorkerClient + 'static,
307
392
  stream: impl Stream<Item = PollWorkflowTaskQueueResponse> + Send + 'static,
308
393
  ) -> Self {
309
- let wft_stream = stream
310
- .map(|r| Ok(r.try_into().expect("Mock responses must be valid work")))
311
- .boxed();
394
+ let wft_stream = Some(
395
+ stream
396
+ .map(|r| Ok(r.try_into().expect("Mock responses must be valid work")))
397
+ .boxed(),
398
+ );
312
399
  let mock_worker = MockWorkerInputs {
313
400
  wft_stream,
314
401
  act_poller: None,
@@ -2,10 +2,12 @@
2
2
 
3
3
  use futures_util::{StreamExt, stream::FuturesUnordered};
4
4
  use std::{collections::HashSet, future::Future};
5
- use temporal_sdk_core_api::Worker as CoreWorker;
6
- use temporal_sdk_core_protos::coresdk::{
7
- workflow_activation::workflow_activation_job,
8
- workflow_completion::{WorkflowActivationCompletion, workflow_activation_completion},
5
+ use temporalio_common::{
6
+ Worker as CoreWorker,
7
+ protos::coresdk::{
8
+ workflow_activation::workflow_activation_job,
9
+ workflow_completion::{WorkflowActivationCompletion, workflow_activation_completion},
10
+ },
9
11
  };
10
12
 
11
13
  /// Given a desired number of concurrent executions and a provided function that produces a future,
@@ -44,7 +46,7 @@ macro_rules! job_assert {
44
46
  }
45
47
 
46
48
  type AsserterWithReply<'a> = (
47
- &'a dyn Fn(&temporal_sdk_core_protos::coresdk::workflow_activation::WorkflowActivation),
49
+ &'a dyn Fn(&temporalio_common::protos::coresdk::workflow_activation::WorkflowActivation),
48
50
  workflow_activation_completion::Status,
49
51
  );
50
52
 
@@ -175,14 +177,14 @@ pub(crate) async fn poll_and_reply_clears_outstanding_evicts<'a>(
175
177
  }
176
178
 
177
179
  pub(crate) fn gen_assert_and_reply(
178
- asserter: &dyn Fn(&temporal_sdk_core_protos::coresdk::workflow_activation::WorkflowActivation),
180
+ asserter: &dyn Fn(&temporalio_common::protos::coresdk::workflow_activation::WorkflowActivation),
179
181
  reply_commands: Vec<
180
- temporal_sdk_core_protos::coresdk::workflow_commands::workflow_command::Variant,
182
+ temporalio_common::protos::coresdk::workflow_commands::workflow_command::Variant,
181
183
  >,
182
184
  ) -> AsserterWithReply<'_> {
183
185
  (
184
186
  asserter,
185
- temporal_sdk_core_protos::coresdk::workflow_completion::Success::from_variants(
187
+ temporalio_common::protos::coresdk::workflow_completion::Success::from_variants(
186
188
  reply_commands,
187
189
  )
188
190
  .into(),
@@ -190,13 +192,13 @@ pub(crate) fn gen_assert_and_reply(
190
192
  }
191
193
 
192
194
  pub(crate) fn gen_assert_and_fail(
193
- asserter: &dyn Fn(&temporal_sdk_core_protos::coresdk::workflow_activation::WorkflowActivation),
195
+ asserter: &dyn Fn(&temporalio_common::protos::coresdk::workflow_activation::WorkflowActivation),
194
196
  ) -> AsserterWithReply<'_> {
195
197
  (
196
198
  asserter,
197
- temporal_sdk_core_protos::coresdk::workflow_completion::Failure {
199
+ temporalio_common::protos::coresdk::workflow_completion::Failure {
198
200
  failure: Some(
199
- temporal_sdk_core_protos::temporal::api::failure::v1::Failure {
201
+ temporalio_common::protos::temporal::api::failure::v1::Failure {
200
202
  message: "Intentional test failure".to_string(),
201
203
  ..Default::default()
202
204
  },
@@ -9,7 +9,7 @@ use std::{
9
9
  sync::Arc,
10
10
  time::{Duration, Instant},
11
11
  };
12
- use temporal_sdk_core_protos::{
12
+ use temporalio_common::protos::{
13
13
  coresdk::{
14
14
  ActivityHeartbeat, IntoPayloadsExt,
15
15
  activity_task::{ActivityCancelReason, ActivityCancellationDetails, ActivityTask},
@@ -430,7 +430,7 @@ mod test {
430
430
 
431
431
  use crate::worker::client::mocks::mock_worker_client;
432
432
  use std::time::Duration;
433
- use temporal_sdk_core_protos::temporal::api::{
433
+ use temporalio_common::protos::temporal::api::{
434
434
  common::v1::Payload, workflowservice::v1::RecordActivityTaskHeartbeatResponse,
435
435
  };
436
436
  use tokio::time::sleep;
@@ -17,18 +17,20 @@ use std::{
17
17
  task::{Context, Poll},
18
18
  time::{Duration, Instant, SystemTime},
19
19
  };
20
- use temporal_sdk_core_api::worker::LocalActivitySlotKind;
21
- use temporal_sdk_core_protos::{
22
- coresdk::{
23
- LocalActivitySlotInfo,
24
- activity_result::{Cancellation, Failure as ActFail, Success},
25
- activity_task::{ActivityCancelReason, ActivityTask, Start, activity_task},
26
- },
27
- temporal::api::{
28
- common::v1::WorkflowExecution,
29
- enums::v1::TimeoutType,
30
- failure::v1::{Failure as APIFailure, TimeoutFailureInfo, failure},
20
+ use temporalio_common::{
21
+ protos::{
22
+ coresdk::{
23
+ LocalActivitySlotInfo,
24
+ activity_result::{Cancellation, Failure as ActFail, Success},
25
+ activity_task::{ActivityCancelReason, ActivityTask, Start, activity_task},
26
+ },
27
+ temporal::api::{
28
+ common::v1::WorkflowExecution,
29
+ enums::v1::TimeoutType,
30
+ failure::v1::{Failure as APIFailure, TimeoutFailureInfo, failure},
31
+ },
31
32
  },
33
+ worker::LocalActivitySlotKind,
32
34
  };
33
35
  use tokio::{
34
36
  sync::{
@@ -978,7 +980,7 @@ mod tests {
978
980
  use super::*;
979
981
  use crate::{prost_dur, protosext::LACloseTimeouts, retry_logic::ValidatedRetryPolicy};
980
982
  use futures_util::FutureExt;
981
- use temporal_sdk_core_protos::temporal::api::{
983
+ use temporalio_common::protos::temporal::api::{
982
984
  common::v1::RetryPolicy,
983
985
  failure::v1::{ApplicationFailureInfo, Failure, failure::FailureInfo},
984
986
  };
@@ -35,17 +35,21 @@ use std::{
35
35
  },
36
36
  time::{Duration, Instant, SystemTime},
37
37
  };
38
- use temporal_sdk_core_api::worker::ActivitySlotKind;
39
- use temporal_sdk_core_protos::{
40
- coresdk::{
41
- ActivityHeartbeat, ActivitySlotInfo,
42
- activity_result::{self as ar, activity_execution_result as aer},
43
- activity_task::{ActivityCancelReason, ActivityCancellationDetails, ActivityTask},
44
- },
45
- temporal::api::{
46
- failure::v1::{ApplicationFailureInfo, CanceledFailureInfo, Failure, failure::FailureInfo},
47
- workflowservice::v1::PollActivityTaskQueueResponse,
38
+ use temporalio_common::{
39
+ protos::{
40
+ coresdk::{
41
+ ActivityHeartbeat, ActivitySlotInfo,
42
+ activity_result::{self as ar, activity_execution_result as aer},
43
+ activity_task::{ActivityCancelReason, ActivityCancellationDetails, ActivityTask},
44
+ },
45
+ temporal::api::{
46
+ failure::v1::{
47
+ ApplicationFailureInfo, CanceledFailureInfo, Failure, failure::FailureInfo,
48
+ },
49
+ workflowservice::v1::PollActivityTaskQueueResponse,
50
+ },
48
51
  },
52
+ worker::ActivitySlotKind,
49
53
  };
50
54
  use tokio::{
51
55
  join,
@@ -735,8 +739,10 @@ mod tests {
735
739
  prost_dur,
736
740
  worker::client::mocks::mock_worker_client,
737
741
  };
738
- use temporal_sdk_core_api::worker::PollerBehavior;
739
- use temporal_sdk_core_protos::coresdk::activity_result::ActivityExecutionResult;
742
+ use crossbeam_utils::atomic::AtomicCell;
743
+ use temporalio_common::{
744
+ protos::coresdk::activity_result::ActivityExecutionResult, worker::PollerBehavior,
745
+ };
740
746
 
741
747
  #[tokio::test]
742
748
  async fn per_worker_ratelimit() {
@@ -780,6 +786,7 @@ mod tests {
780
786
  max_worker_acts_per_second: Some(2.0),
781
787
  max_tps: None,
782
788
  },
789
+ Arc::new(AtomicCell::new(None)),
783
790
  );
784
791
  let atm = WorkerActivityTasks::new(
785
792
  sem.clone(),
@@ -871,6 +878,7 @@ mod tests {
871
878
  max_worker_acts_per_second: None,
872
879
  max_tps: None,
873
880
  },
881
+ Arc::new(AtomicCell::new(None)),
874
882
  );
875
883
  let atm = WorkerActivityTasks::new(
876
884
  sem.clone(),
@@ -944,6 +952,7 @@ mod tests {
944
952
  max_worker_acts_per_second: None,
945
953
  max_tps: None,
946
954
  },
955
+ Arc::new(AtomicCell::new(None)),
947
956
  );
948
957
  let atm = WorkerActivityTasks::new(
949
958
  sem.clone(),
@@ -1,10 +1,10 @@
1
1
  use super::*;
2
2
  use futures_util::Future;
3
3
  use std::sync::{Arc, LazyLock};
4
- use temporal_client::SlotManager;
4
+ use temporalio_client::worker::ClientWorkerSet;
5
5
 
6
- pub(crate) static DEFAULT_WORKERS_REGISTRY: LazyLock<Arc<SlotManager>> =
7
- LazyLock::new(|| Arc::new(SlotManager::new()));
6
+ pub(crate) static DEFAULT_WORKERS_REGISTRY: LazyLock<Arc<ClientWorkerSet>> =
7
+ LazyLock::new(|| Arc::new(ClientWorkerSet::new()));
8
8
 
9
9
  pub(crate) static DEFAULT_TEST_CAPABILITIES: &Capabilities = &Capabilities {
10
10
  signal_and_query_header: true,
@@ -30,11 +30,18 @@ pub fn mock_worker_client() -> MockWorkerClient {
30
30
  .returning(|| DEFAULT_WORKERS_REGISTRY.clone());
31
31
  r.expect_is_mock().returning(|| true);
32
32
  r.expect_shutdown_worker()
33
- .returning(|_| Ok(ShutdownWorkerResponse {}));
33
+ .returning(|_, _| Ok(ShutdownWorkerResponse {}));
34
34
  r.expect_sdk_name_and_version()
35
35
  .returning(|| ("test-core".to_string(), "0.0.0".to_string()));
36
- r.expect_get_identity()
36
+ r.expect_identity()
37
37
  .returning(|| "test-identity".to_string());
38
+ r.expect_worker_grouping_key().returning(Uuid::new_v4);
39
+ r.expect_set_heartbeat_client_fields().returning(|hb| {
40
+ hb.sdk_name = "test-core".to_string();
41
+ hb.sdk_version = "0.0.0".to_string();
42
+ hb.worker_identity = "test-identity".to_string();
43
+ hb.heartbeat_time = Some(SystemTime::now().into());
44
+ });
38
45
  r
39
46
  }
40
47
 
@@ -48,7 +55,7 @@ pub(crate) fn mock_manual_worker_client() -> MockManualWorkerClient {
48
55
  r.expect_is_mock().returning(|| true);
49
56
  r.expect_sdk_name_and_version()
50
57
  .returning(|| ("test-core".to_string(), "0.0.0".to_string()));
51
- r.expect_get_identity()
58
+ r.expect_identity()
52
59
  .returning(|| "test-identity".to_string());
53
60
  r
54
61
  }
@@ -68,7 +75,7 @@ mockall::mock! {
68
75
  -> impl Future<Output = Result<PollActivityTaskQueueResponse>> + Send + 'b
69
76
  where 'a: 'b, Self: 'b;
70
77
 
71
- fn poll_nexus_task<'a, 'b>(&self, poll_options: PollOptions)
78
+ fn poll_nexus_task<'a, 'b>(&self, poll_options: PollOptions, send_heartbeat: bool)
72
79
  -> impl Future<Output = Result<PollNexusTaskQueueResponse>> + Send + 'b
73
80
  where 'a: 'b, Self: 'b;
74
81
 
@@ -139,7 +146,7 @@ mockall::mock! {
139
146
  fn respond_legacy_query<'a, 'b>(
140
147
  &self,
141
148
  task_token: TaskToken,
142
- query_result: LegacyQueryResult,
149
+ query_result: LegacyQueryResult,
143
150
  ) -> impl Future<Output = Result<RespondQueryTaskCompletedResponse>> + Send + 'b
144
151
  where 'a: 'b, Self: 'b;
145
152
 
@@ -147,16 +154,22 @@ mockall::mock! {
147
154
  impl Future<Output = Result<DescribeNamespaceResponse>> + Send + 'b
148
155
  where 'a: 'b, Self: 'b;
149
156
 
150
- fn shutdown_worker<'a, 'b>(&self, sticky_task_queue: String) -> impl Future<Output = Result<ShutdownWorkerResponse>> + Send + 'b
157
+ fn shutdown_worker<'a, 'b>(&self, sticky_task_queue: String, worker_heartbeat: Option<WorkerHeartbeat>) -> impl Future<Output = Result<ShutdownWorkerResponse>> + Send + 'b
151
158
  where 'a: 'b, Self: 'b;
152
159
 
153
- fn record_worker_heartbeat<'a, 'b>(&self, heartbeat: WorkerHeartbeat) -> impl Future<Output = Result<RecordWorkerHeartbeatResponse>> + Send + 'b where 'a: 'b, Self: 'b;
160
+ fn record_worker_heartbeat<'a, 'b>(
161
+ &self,
162
+ namespace: String,
163
+ heartbeat: Vec<WorkerHeartbeat>
164
+ ) -> impl Future<Output = Result<RecordWorkerHeartbeatResponse>> + Send + 'b where 'a: 'b, Self: 'b;
154
165
 
155
166
  fn replace_client(&self, new_client: Client);
156
167
  fn capabilities(&self) -> Option<Capabilities>;
157
- fn workers(&self) -> Arc<SlotManager>;
168
+ fn workers(&self) -> Arc<ClientWorkerSet>;
158
169
  fn is_mock(&self) -> bool;
159
170
  fn sdk_name_and_version(&self) -> (String, String);
160
- fn get_identity(&self) -> String;
171
+ fn identity(&self) -> String;
172
+ fn worker_grouping_key(&self) -> Uuid;
173
+ fn set_heartbeat_client_fields(&self, heartbeat: &mut WorkerHeartbeat);
161
174
  }
162
175
  }