@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
@@ -27,46 +27,47 @@ use std::{
27
27
  },
28
28
  time::Duration,
29
29
  };
30
- use temporal_sdk_core_api::{
30
+ use temporalio_client::MESSAGE_TOO_LARGE_KEY;
31
+ use temporalio_common::{
31
32
  Worker as WorkerTrait,
32
33
  errors::PollError,
33
- worker::{
34
- PollerBehavior, SlotMarkUsedContext, SlotReleaseContext, SlotReservationContext,
35
- SlotSupplier, SlotSupplierPermit, WorkflowSlotKind,
36
- },
37
- };
38
- use temporal_sdk_core_protos::{
39
- canned_histories,
40
- coresdk::{
41
- activity_result::{self as ar, ActivityResolution, activity_resolution},
42
- common::VersioningIntent,
43
- workflow_activation::{
44
- FireTimer, InitializeWorkflow, ResolveActivity, UpdateRandomSeed,
45
- WorkflowActivationJob, remove_from_cache::EvictionReason, workflow_activation_job,
34
+ protos::{
35
+ canned_histories,
36
+ coresdk::{
37
+ activity_result::{self as ar, ActivityResolution, activity_resolution},
38
+ common::VersioningIntent,
39
+ workflow_activation::{
40
+ FireTimer, InitializeWorkflow, ResolveActivity, UpdateRandomSeed,
41
+ WorkflowActivationJob, remove_from_cache::EvictionReason, workflow_activation_job,
42
+ },
43
+ workflow_commands::{
44
+ ActivityCancellationType, CancelTimer, CompleteWorkflowExecution,
45
+ ContinueAsNewWorkflowExecution, FailWorkflowExecution, RequestCancelActivity,
46
+ ScheduleActivity, SetPatchMarker, StartChildWorkflowExecution, UpdateResponse,
47
+ update_response::Response, workflow_command,
48
+ },
49
+ workflow_completion::WorkflowActivationCompletion,
46
50
  },
47
- workflow_commands::{
48
- ActivityCancellationType, CancelTimer, CompleteWorkflowExecution,
49
- ContinueAsNewWorkflowExecution, FailWorkflowExecution, RequestCancelActivity,
50
- ScheduleActivity, SetPatchMarker, StartChildWorkflowExecution, UpdateResponse,
51
- update_response::Response, workflow_command,
51
+ default_act_sched, default_wes_attribs,
52
+ temporal::api::{
53
+ command::v1::command::Attributes,
54
+ common::v1::{Payload, RetryPolicy},
55
+ enums::v1::{CommandType, EventType, WorkflowTaskFailedCause},
56
+ failure::v1::Failure,
57
+ history::v1::{
58
+ TimerFiredEventAttributes, WorkflowPropertiesModifiedExternallyEventAttributes,
59
+ history_event,
60
+ },
61
+ workflowservice::v1::{
62
+ GetWorkflowExecutionHistoryResponse, RespondWorkflowTaskCompletedResponse,
63
+ },
52
64
  },
53
- workflow_completion::WorkflowActivationCompletion,
65
+ test_utils::start_timer_cmd,
54
66
  },
55
- default_act_sched, default_wes_attribs,
56
- temporal::api::{
57
- command::v1::command::Attributes,
58
- common::v1::{Payload, RetryPolicy},
59
- enums::v1::{CommandType, EventType, WorkflowTaskFailedCause},
60
- failure::v1::Failure,
61
- history::v1::{
62
- TimerFiredEventAttributes, WorkflowPropertiesModifiedExternallyEventAttributes,
63
- history_event,
64
- },
65
- workflowservice::v1::{
66
- GetWorkflowExecutionHistoryResponse, RespondWorkflowTaskCompletedResponse,
67
- },
67
+ worker::{
68
+ PollerBehavior, SlotMarkUsedContext, SlotReleaseContext, SlotReservationContext,
69
+ SlotSupplier, SlotSupplierPermit, WorkerTaskTypes, WorkflowSlotKind,
68
70
  },
69
- test_utils::start_timer_cmd,
70
71
  };
71
72
  use tokio::{
72
73
  join,
@@ -1286,6 +1287,40 @@ async fn fail_wft_then_recover() {
1286
1287
  core.shutdown().await;
1287
1288
  }
1288
1289
 
1290
+ #[tokio::test]
1291
+ async fn default_wft_fail_cause_is_worker_unhandled() {
1292
+ let t = canned_histories::single_timer("1");
1293
+ let mut mh = MockPollCfg::from_resp_batches(
1294
+ "fake_wf_id",
1295
+ t,
1296
+ [ResponseType::AllHistory],
1297
+ mock_worker_client(),
1298
+ );
1299
+ mh.num_expected_fails = 1;
1300
+ mh.expect_fail_wft_matcher = Box::new(|_, cause, _| {
1301
+ matches!(
1302
+ cause,
1303
+ WorkflowTaskFailedCause::WorkflowWorkerUnhandledFailure
1304
+ )
1305
+ });
1306
+ let mock = build_mock_pollers(mh);
1307
+ let core = mock_worker(mock);
1308
+
1309
+ let act = core.poll_workflow_activation().await.unwrap();
1310
+ core.complete_workflow_activation(WorkflowActivationCompletion::fail(
1311
+ act.run_id,
1312
+ Failure {
1313
+ message: "Simulated workflow failure".to_string(),
1314
+ ..Default::default()
1315
+ },
1316
+ None,
1317
+ ))
1318
+ .await
1319
+ .unwrap();
1320
+
1321
+ core.shutdown().await;
1322
+ }
1323
+
1289
1324
  #[tokio::test]
1290
1325
  async fn poll_response_triggers_wf_error() {
1291
1326
  let mut t = TestHistoryBuilder::default();
@@ -2636,7 +2671,7 @@ async fn poller_wont_run_ahead_of_task_slots() {
2636
2671
  .max_cached_workflows(10_usize)
2637
2672
  .max_outstanding_workflow_tasks(10_usize)
2638
2673
  .workflow_task_poller_behavior(PollerBehavior::SimpleMaximum(10_usize))
2639
- .no_remote_activities(true)
2674
+ .task_types(WorkerTaskTypes::workflow_only())
2640
2675
  .build()
2641
2676
  .unwrap(),
2642
2677
  mock_client,
@@ -2696,7 +2731,7 @@ async fn poller_wont_poll_until_lang_polls() {
2696
2731
 
2697
2732
  let worker = Worker::new_test(
2698
2733
  test_worker_cfg()
2699
- .no_remote_activities(true)
2734
+ .task_types(WorkerTaskTypes::workflow_only())
2700
2735
  .build()
2701
2736
  .unwrap(),
2702
2737
  mock_client,
@@ -2841,7 +2876,7 @@ async fn slot_provider_cant_hand_out_more_permits_than_cache_size() {
2841
2876
  .build(),
2842
2877
  ))
2843
2878
  .workflow_task_poller_behavior(PollerBehavior::SimpleMaximum(10_usize))
2844
- .no_remote_activities(true)
2879
+ .task_types(WorkerTaskTypes::workflow_only())
2845
2880
  .build()
2846
2881
  .unwrap(),
2847
2882
  mock_client,
@@ -2989,14 +3024,15 @@ async fn both_normal_and_sticky_pollers_poll_concurrently() {
2989
3024
  .max_outstanding_workflow_tasks(2_usize)
2990
3025
  .workflow_task_poller_behavior(PollerBehavior::SimpleMaximum(2_usize))
2991
3026
  .nonsticky_to_sticky_poll_ratio(0.2)
2992
- .no_remote_activities(true)
3027
+ .task_types(WorkerTaskTypes::workflow_only())
2993
3028
  .build()
2994
3029
  .unwrap(),
2995
3030
  Some("stickytq".to_string()),
2996
3031
  Arc::new(mock_client),
2997
3032
  None,
2998
3033
  None,
2999
- );
3034
+ )
3035
+ .unwrap();
3000
3036
 
3001
3037
  for _ in 1..50 {
3002
3038
  let activation = worker.poll_workflow_activation().await.unwrap();
@@ -3035,3 +3071,54 @@ async fn both_normal_and_sticky_pollers_poll_concurrently() {
3035
3071
  "At peak, there should be exactly 2 pollers active at the same time"
3036
3072
  );
3037
3073
  }
3074
+
3075
+ #[tokio::test]
3076
+ async fn grpc_message_too_large_doesnt_spam_task_fails() {
3077
+ let mut t = TestHistoryBuilder::default();
3078
+ t.add_by_type(EventType::WorkflowExecutionStarted);
3079
+ t.add_workflow_task_scheduled_and_started();
3080
+
3081
+ let mut mh = MockPollCfg::from_resp_batches(
3082
+ "fake_wf_id",
3083
+ t,
3084
+ [
3085
+ ResponseType::AllHistory,
3086
+ ResponseType::AllHistory,
3087
+ ResponseType::AllHistory,
3088
+ ResponseType::AllHistory,
3089
+ ResponseType::AllHistory,
3090
+ ResponseType::AllHistory,
3091
+ ],
3092
+ mock_worker_client(),
3093
+ );
3094
+ mh.num_expected_fails = 1;
3095
+ let mut times = 1;
3096
+ mh.completion_mock_fn = Some(Box::new(move |_| {
3097
+ if times <= 5 {
3098
+ let mut err = tonic::Status::new(tonic::Code::ResourceExhausted, "message too large");
3099
+ // This key is what we look for
3100
+ err.metadata_mut().insert(MESSAGE_TOO_LARGE_KEY, 1.into());
3101
+ times += 1;
3102
+ Err(err)
3103
+ } else {
3104
+ Ok(Default::default())
3105
+ }
3106
+ }));
3107
+
3108
+ let mut mock = build_mock_pollers(mh);
3109
+ mock.worker_cfg(|wc| wc.max_cached_workflows = 1);
3110
+ let core = mock_worker(mock);
3111
+
3112
+ // Since the mock makes us fail 5 times, we should succeed on the sixth
3113
+ for _ in 1..=5 {
3114
+ let act = core.poll_workflow_activation().await.unwrap();
3115
+ core.complete_workflow_activation(WorkflowActivationCompletion::empty(&act.run_id))
3116
+ .await
3117
+ .unwrap();
3118
+ core.handle_eviction().await;
3119
+ }
3120
+ let act = core.poll_workflow_activation().await.unwrap();
3121
+ core.complete_execution(&act.run_id).await;
3122
+ core.drain_pollers_and_shutdown().await;
3123
+ // Mock only expects 1 task failure, and would fail here if we spammed
3124
+ }
@@ -6,7 +6,7 @@ use hyper::http::HeaderValue;
6
6
  use prost::Message;
7
7
  use reqwest::{self, header::HeaderMap};
8
8
  use std::time::Duration;
9
- use temporal_sdk_core_protos::temporal::api::history::v1::History;
9
+ use temporalio_common::protos::temporal::api::history::v1::History;
10
10
  use url::Url;
11
11
 
12
12
  /// A client for interacting with the VSCode debug plugin
@@ -10,7 +10,7 @@ use std::{
10
10
  io,
11
11
  path::{Path, PathBuf},
12
12
  };
13
- use temporal_client::ClientOptionsBuilder;
13
+ use temporalio_client::ClientOptions;
14
14
  use tokio::{
15
15
  task::spawn_blocking,
16
16
  time::{Duration, sleep},
@@ -224,12 +224,12 @@ impl EphemeralServer {
224
224
  // Try to connect every 100ms for 5s
225
225
  // TODO(cretz): Some other way, e.g. via stdout, to know whether the
226
226
  // server is up?
227
- let client_options = ClientOptionsBuilder::default()
227
+ let client_options = ClientOptions::builder()
228
228
  .identity("online_checker".to_owned())
229
229
  .target_url(Url::parse(&target_url)?)
230
230
  .client_name("online-checker".to_owned())
231
231
  .client_version("0.1.0".to_owned())
232
- .build()?;
232
+ .build();
233
233
  let mut last_error = None;
234
234
  for _ in 0..50 {
235
235
  sleep(Duration::from_millis(100)).await;
@@ -0,0 +1,33 @@
1
+ //! Use this binary to fetch histories as proto-encoded binary. The first argument must be a
2
+ //! workflow ID. A run id may optionally be provided as the second arg. The history is written to
3
+ //! `{workflow_id}_history.bin`.
4
+ //!
5
+ //! We can use `clap` if this needs more arguments / other stuff later on.
6
+
7
+ use prost::Message;
8
+ use temporalio_client::{ClientOptions, WorkflowClientTrait};
9
+ use url::Url;
10
+
11
+ #[tokio::main]
12
+ async fn main() -> Result<(), anyhow::Error> {
13
+ let url = Url::try_from("http://localhost:7233").unwrap();
14
+ let copts = ClientOptions::builder()
15
+ .client_name("histfetch")
16
+ .client_version("0.0")
17
+ .target_url(url)
18
+ .build();
19
+ let client = copts.connect("default", None).await?;
20
+ let wf_id = std::env::args()
21
+ .nth(1)
22
+ .expect("must provide workflow id as only argument");
23
+ let run_id = std::env::args().nth(2);
24
+ let hist = client
25
+ .get_workflow_execution_history(wf_id.clone(), run_id, vec![])
26
+ .await?
27
+ .history
28
+ .expect("history field must be populated");
29
+ // Serialize history to file
30
+ let byteified = hist.encode_to_vec();
31
+ tokio::fs::write(format!("{wf_id}_history.bin"), &byteified).await?;
32
+ Ok(())
33
+ }
@@ -6,7 +6,7 @@ use std::{
6
6
  collections::{BTreeSet, HashSet},
7
7
  iter,
8
8
  };
9
- use temporal_sdk_core_protos::temporal::api::{
9
+ use temporalio_common::protos::temporal::api::{
10
10
  history::v1::WorkflowTaskCompletedEventAttributes, sdk::v1::WorkflowTaskCompletedMetadata,
11
11
  workflowservice::v1::get_system_info_response,
12
12
  };
@@ -35,7 +35,7 @@ pub enum CoreInternalFlags {
35
35
  /// multiple workflow coroutines generated a terminal command). This has the
36
36
  /// consequence that all non-terminal commands are sent to the server, even
37
37
  /// if in the sequence delivered by lang they came after a terminal command.
38
- /// See https://github.com/temporalio/features/issues/481.
38
+ /// See <https://github.com/temporalio/features/issues/481>.
39
39
  MoveTerminalCommands = 3,
40
40
  /// We received a value higher than this code can understand.
41
41
  TooHigh = u32::MAX,
@@ -233,8 +233,9 @@ impl CoreInternalFlags {
233
233
  #[cfg(test)]
234
234
  mod tests {
235
235
  use super::*;
236
- use temporal_sdk_core_protos::temporal::api::workflowservice::v1::get_system_info_response::Capabilities;
236
+ use temporalio_common::protos::temporal::api::workflowservice::v1::get_system_info_response::Capabilities;
237
237
 
238
+ #[allow(clippy::derivable_impls)] // Only want this in test
238
239
  impl Default for InternalFlags {
239
240
  fn default() -> Self {
240
241
  Self::Disabled
@@ -12,6 +12,8 @@ extern crate tracing;
12
12
  extern crate core;
13
13
 
14
14
  mod abstractions;
15
+ #[cfg(feature = "antithesis_assertions")]
16
+ mod antithesis;
15
17
  #[cfg(feature = "debug-plugin")]
16
18
  pub mod debug_client;
17
19
  #[cfg(feature = "ephemeral-server")]
@@ -30,21 +32,18 @@ mod core_tests;
30
32
  #[macro_use]
31
33
  pub mod test_help;
32
34
 
33
- pub(crate) use temporal_sdk_core_api::errors;
35
+ pub(crate) use temporalio_common::errors;
34
36
 
35
37
  pub use pollers::{
36
- Client, ClientOptions, ClientOptionsBuilder, ClientTlsConfig, RetryClient, RetryConfig,
37
- TlsConfig, WorkflowClientTrait,
38
+ Client, ClientOptions, ClientTlsOptions, RetryClient, RetryOptions, TlsOptions,
39
+ WorkflowClientTrait,
38
40
  };
39
- pub use temporal_sdk_core_api as api;
40
- pub use temporal_sdk_core_protos as protos;
41
- pub use temporal_sdk_core_protos::TaskToken;
41
+ pub use temporalio_common::protos::TaskToken;
42
42
  pub use url::Url;
43
43
  pub use worker::{
44
- FixedSizeSlotSupplier, RealSysInfo, ResourceBasedSlotsOptions,
45
- ResourceBasedSlotsOptionsBuilder, ResourceBasedTuner, ResourceSlotOptions, SlotSupplierOptions,
46
- TunerBuilder, TunerHolder, TunerHolderOptions, TunerHolderOptionsBuilder, Worker, WorkerConfig,
47
- WorkerConfigBuilder,
44
+ FixedSizeSlotSupplier, ResourceBasedSlotsOptions, ResourceBasedSlotsOptionsBuilder,
45
+ ResourceBasedTuner, ResourceSlotOptions, SlotSupplierOptions, TunerBuilder, TunerHolder,
46
+ TunerHolderOptions, TunerHolderOptionsBuilder, Worker, WorkerConfig, WorkerConfigBuilder,
48
47
  };
49
48
 
50
49
  /// Expose [WorkerClient] symbols
@@ -61,14 +60,14 @@ use crate::{
61
60
  };
62
61
  use anyhow::bail;
63
62
  use futures_util::Stream;
64
- use std::sync::{Arc, OnceLock};
65
- use temporal_client::{ConfiguredClient, NamespacedClient, SharedReplaceableClient};
66
- use temporal_sdk_core_api::{
63
+ use std::{sync::Arc, time::Duration};
64
+ use temporalio_client::{ConfiguredClient, NamespacedClient, SharedReplaceableClient};
65
+ use temporalio_common::{
67
66
  Worker as WorkerTrait,
68
67
  errors::{CompleteActivityError, PollError},
68
+ protos::coresdk::ActivityHeartbeat,
69
69
  telemetry::TelemetryOptions,
70
70
  };
71
- use temporal_sdk_core_protos::coresdk::ActivityHeartbeat;
72
71
 
73
72
  /// Initialize a worker bound to a task queue.
74
73
  ///
@@ -89,40 +88,40 @@ pub fn init_worker<CT>(
89
88
  where
90
89
  CT: Into<sealed::AnyClient>,
91
90
  {
92
- if worker_config.namespace.is_empty() {
91
+ let namespace = worker_config.namespace.clone();
92
+ if namespace.is_empty() {
93
93
  bail!("Worker namespace cannot be empty");
94
94
  }
95
95
 
96
96
  let client = RetryClient::new(
97
- SharedReplaceableClient::new(init_worker_client(&worker_config, client)),
98
- RetryConfig::default(),
97
+ SharedReplaceableClient::new(init_worker_client(
98
+ worker_config.namespace.clone(),
99
+ worker_config.client_identity_override.clone(),
100
+ client,
101
+ )),
102
+ RetryOptions::default(),
99
103
  );
100
104
  let client_ident = client.identity();
101
- let sticky_q = sticky_q_name_for_worker(&client_ident, &worker_config);
105
+ let sticky_q = sticky_q_name_for_worker(&client_ident, worker_config.max_cached_workflows);
102
106
 
103
107
  if client_ident.is_empty() {
104
108
  bail!("Client identity cannot be empty. Either lang or user should be setting this value");
105
109
  }
106
110
 
107
- let heartbeat_fn = worker_config
108
- .heartbeat_interval
109
- .map(|_| Arc::new(OnceLock::new()));
110
-
111
111
  let client_bag = Arc::new(WorkerClientBag::new(
112
112
  client,
113
- worker_config.namespace.clone(),
114
- client_ident,
113
+ namespace.clone(),
114
+ client_ident.clone(),
115
115
  worker_config.versioning_strategy.clone(),
116
- heartbeat_fn.clone(),
117
116
  ));
118
117
 
119
- Ok(Worker::new(
120
- worker_config,
118
+ Worker::new(
119
+ worker_config.clone(),
121
120
  sticky_q,
122
- client_bag,
121
+ client_bag.clone(),
123
122
  Some(&runtime.telemetry),
124
- heartbeat_fn,
125
- ))
123
+ runtime.heartbeat_interval,
124
+ )
126
125
  }
127
126
 
128
127
  /// Create a worker for replaying one or more existing histories. It will auto-shutdown as soon as
@@ -142,12 +141,16 @@ where
142
141
  rwi.into_core_worker()
143
142
  }
144
143
 
145
- pub(crate) fn init_worker_client<CT>(config: &WorkerConfig, client: CT) -> Client
144
+ pub(crate) fn init_worker_client<CT>(
145
+ namespace: String,
146
+ client_identity_override: Option<String>,
147
+ client: CT,
148
+ ) -> Client
146
149
  where
147
150
  CT: Into<sealed::AnyClient>,
148
151
  {
149
- let mut client = Client::new(*client.into().into_inner(), config.namespace.clone());
150
- if let Some(ref id_override) = config.client_identity_override {
152
+ let mut client = Client::new(*client.into().into_inner(), namespace.clone());
153
+ if let Some(ref id_override) = client_identity_override {
151
154
  client.options_mut().identity.clone_from(id_override);
152
155
  }
153
156
  client
@@ -157,9 +160,9 @@ where
157
160
  /// workflows.
158
161
  pub(crate) fn sticky_q_name_for_worker(
159
162
  process_identity: &str,
160
- config: &WorkerConfig,
163
+ max_cached_workflows: usize,
161
164
  ) -> Option<String> {
162
- if config.max_cached_workflows > 0 {
165
+ if max_cached_workflows > 0 {
163
166
  Some(format!(
164
167
  "{}-{}",
165
168
  &process_identity,
@@ -172,7 +175,7 @@ pub(crate) fn sticky_q_name_for_worker(
172
175
 
173
176
  mod sealed {
174
177
  use super::*;
175
- use temporal_client::{SharedReplaceableClient, TemporalServiceClient};
178
+ use temporalio_client::{SharedReplaceableClient, TemporalServiceClient};
176
179
 
177
180
  /// Allows passing different kinds of clients into things that want to be flexible. Motivating
178
181
  /// use-case was worker initialization.
@@ -234,6 +237,37 @@ pub struct CoreRuntime {
234
237
  telemetry: TelemetryInstance,
235
238
  runtime: Option<tokio::runtime::Runtime>,
236
239
  runtime_handle: tokio::runtime::Handle,
240
+ heartbeat_interval: Option<Duration>,
241
+ }
242
+
243
+ /// Holds telemetry options, as well as worker heartbeat_interval. Construct with [RuntimeOptionsBuilder]
244
+ #[derive(Default, derive_builder::Builder)]
245
+ #[builder(build_fn(validate = "Self::validate"))]
246
+ #[non_exhaustive]
247
+ pub struct RuntimeOptions {
248
+ /// Telemetry configuration options.
249
+ #[builder(default)]
250
+ telemetry_options: TelemetryOptions,
251
+ /// Optional worker heartbeat interval - This configures the heartbeat setting of all
252
+ /// workers created using this runtime.
253
+ ///
254
+ /// Interval must be between 1s and 60s, inclusive.
255
+ #[builder(default = "Some(Duration::from_secs(60))")]
256
+ heartbeat_interval: Option<Duration>,
257
+ }
258
+
259
+ impl RuntimeOptionsBuilder {
260
+ fn validate(&self) -> Result<(), String> {
261
+ if let Some(Some(interval)) = self.heartbeat_interval
262
+ && (interval < Duration::from_secs(1) || interval > Duration::from_secs(60))
263
+ {
264
+ return Err(format!(
265
+ "heartbeat_interval ({interval:?}) must be between 1s and 60s",
266
+ ));
267
+ }
268
+
269
+ Ok(())
270
+ }
237
271
  }
238
272
 
239
273
  /// Wraps a [tokio::runtime::Builder] to allow layering multiple on_thread_start functions
@@ -268,13 +302,13 @@ impl CoreRuntime {
268
302
  /// If a tokio runtime has already been initialized. To re-use an existing runtime, call
269
303
  /// [CoreRuntime::new_assume_tokio].
270
304
  pub fn new<F>(
271
- telemetry_options: TelemetryOptions,
305
+ runtime_options: RuntimeOptions,
272
306
  mut tokio_builder: TokioRuntimeBuilder<F>,
273
307
  ) -> Result<Self, anyhow::Error>
274
308
  where
275
309
  F: Fn() + Send + Sync + 'static,
276
310
  {
277
- let telemetry = telemetry_init(telemetry_options)?;
311
+ let telemetry = telemetry_init(runtime_options.telemetry_options)?;
278
312
  let subscriber = telemetry.trace_subscriber();
279
313
  let runtime = tokio_builder
280
314
  .inner
@@ -289,7 +323,8 @@ impl CoreRuntime {
289
323
  })
290
324
  .build()?;
291
325
  let _rg = runtime.enter();
292
- let mut me = Self::new_assume_tokio_initialized_telem(telemetry);
326
+ let mut me =
327
+ Self::new_assume_tokio_initialized_telem(telemetry, runtime_options.heartbeat_interval);
293
328
  me.runtime = Some(runtime);
294
329
  Ok(me)
295
330
  }
@@ -299,9 +334,12 @@ impl CoreRuntime {
299
334
  ///
300
335
  /// # Panics
301
336
  /// If there is no currently active Tokio runtime
302
- pub fn new_assume_tokio(telemetry_options: TelemetryOptions) -> Result<Self, anyhow::Error> {
303
- let telemetry = telemetry_init(telemetry_options)?;
304
- Ok(Self::new_assume_tokio_initialized_telem(telemetry))
337
+ pub fn new_assume_tokio(runtime_options: RuntimeOptions) -> Result<Self, anyhow::Error> {
338
+ let telemetry = telemetry_init(runtime_options.telemetry_options)?;
339
+ Ok(Self::new_assume_tokio_initialized_telem(
340
+ telemetry,
341
+ runtime_options.heartbeat_interval,
342
+ ))
305
343
  }
306
344
 
307
345
  /// Construct a runtime from an already-initialized telemetry instance, assuming a tokio runtime
@@ -309,7 +347,10 @@ impl CoreRuntime {
309
347
  ///
310
348
  /// # Panics
311
349
  /// If there is no currently active Tokio runtime
312
- pub fn new_assume_tokio_initialized_telem(telemetry: TelemetryInstance) -> Self {
350
+ pub fn new_assume_tokio_initialized_telem(
351
+ telemetry: TelemetryInstance,
352
+ heartbeat_interval: Option<Duration>,
353
+ ) -> Self {
313
354
  let runtime_handle = tokio::runtime::Handle::current();
314
355
  if let Some(sub) = telemetry.trace_subscriber() {
315
356
  set_trace_subscriber_for_current_thread(sub);
@@ -318,6 +359,7 @@ impl CoreRuntime {
318
359
  telemetry,
319
360
  runtime: None,
320
361
  runtime_handle,
362
+ heartbeat_interval,
321
363
  }
322
364
  }
323
365
 
@@ -3,9 +3,9 @@ mod poll_buffer;
3
3
  pub(crate) use poll_buffer::{
4
4
  ActivityTaskOptions, LongPollBuffer, WorkflowTaskOptions, WorkflowTaskPoller,
5
5
  };
6
- pub use temporal_client::{
7
- Client, ClientOptions, ClientOptionsBuilder, ClientTlsConfig, RetryClient, RetryConfig,
8
- TlsConfig, WorkflowClientTrait,
6
+ pub use temporalio_client::{
7
+ Client, ClientOptions, ClientTlsOptions, RetryClient, RetryOptions, TlsOptions,
8
+ WorkflowClientTrait,
9
9
  };
10
10
 
11
11
  use crate::{
@@ -15,9 +15,11 @@ use crate::{
15
15
  use anyhow::{anyhow, bail};
16
16
  use futures_util::{Stream, stream};
17
17
  use std::{fmt::Debug, marker::PhantomData};
18
- use temporal_sdk_core_api::worker::{ActivitySlotKind, NexusSlotKind, SlotKind, WorkflowSlotKind};
19
- use temporal_sdk_core_protos::temporal::api::workflowservice::v1::{
20
- PollActivityTaskQueueResponse, PollNexusTaskQueueResponse, PollWorkflowTaskQueueResponse,
18
+ use temporalio_common::{
19
+ protos::temporal::api::workflowservice::v1::{
20
+ PollActivityTaskQueueResponse, PollNexusTaskQueueResponse, PollWorkflowTaskQueueResponse,
21
+ },
22
+ worker::{ActivitySlotKind, NexusSlotKind, SlotKind, WorkflowSlotKind},
21
23
  };
22
24
  use tokio::select;
23
25
  use tokio_util::sync::CancellationToken;