@temporalio/core-bridge 1.13.1 → 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 (422) hide show
  1. package/Cargo.lock +350 -436
  2. package/Cargo.toml +14 -13
  3. package/{sdk-core/fsm/rustfsm_procmacro/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 +23 -9
  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 +78 -12
  18. package/sdk-core/.clippy.toml +1 -0
  19. package/sdk-core/.github/workflows/heavy.yml +2 -0
  20. package/sdk-core/.github/workflows/per-pr.yml +90 -21
  21. package/sdk-core/AGENTS.md +17 -19
  22. package/sdk-core/ARCHITECTURE.md +44 -48
  23. package/sdk-core/Cargo.toml +25 -7
  24. package/sdk-core/README.md +16 -15
  25. package/sdk-core/arch_docs/diagrams/TimerMachine_Coverage.puml +14 -0
  26. package/sdk-core/arch_docs/diagrams/deps.svg +102 -0
  27. package/sdk-core/arch_docs/diagrams/initial_event_history.png +0 -0
  28. package/sdk-core/arch_docs/sdks_intro.md +299 -0
  29. package/sdk-core/{client → crates/client}/Cargo.toml +15 -16
  30. package/sdk-core/{client → crates/client}/src/callback_based.rs +1 -2
  31. package/sdk-core/{client → crates/client}/src/lib.rs +594 -457
  32. package/sdk-core/{client → crates/client}/src/metrics.rs +32 -8
  33. package/sdk-core/crates/client/src/proxy.rs +209 -0
  34. package/sdk-core/{client → crates/client}/src/raw.rs +648 -328
  35. package/sdk-core/crates/client/src/replaceable.rs +253 -0
  36. package/sdk-core/crates/client/src/request_extensions.rs +40 -0
  37. package/sdk-core/{client → crates/client}/src/retry.rs +32 -22
  38. package/sdk-core/crates/client/src/worker/mod.rs +1468 -0
  39. package/sdk-core/{client → crates/client}/src/workflow_handle/mod.rs +24 -21
  40. package/sdk-core/{core-api → crates/common}/Cargo.toml +21 -12
  41. package/sdk-core/{sdk-core-protos → crates/common}/build.rs +10 -23
  42. package/sdk-core/crates/common/protos/api_cloud_upstream/VERSION +1 -0
  43. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/account/v1/message.proto +18 -0
  44. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/cloudservice/v1/request_response.proto +38 -11
  45. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/cloudservice/v1/service.proto +21 -4
  46. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/operation/v1/message.proto +6 -6
  47. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/sink/v1/message.proto +22 -0
  48. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/create-release.yml +13 -0
  49. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/openapi/openapiv2.json +254 -5
  50. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/openapi/openapiv3.yaml +234 -5
  51. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/common/v1/message.proto +1 -1
  52. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/deployment/v1/message.proto +6 -0
  53. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/namespace/v1/message.proto +6 -2
  54. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +60 -2
  55. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +30 -6
  56. package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +2 -0
  57. package/sdk-core/{core-api → crates/common}/src/envconfig.rs +155 -56
  58. package/sdk-core/{core-api → crates/common}/src/errors.rs +8 -1
  59. package/sdk-core/{fsm/rustfsm_trait/src/lib.rs → crates/common/src/fsm_trait.rs} +1 -27
  60. package/sdk-core/{core-api → crates/common}/src/lib.rs +92 -9
  61. package/sdk-core/{test-utils/src → crates/common/src/protos}/canned_histories.rs +5 -5
  62. package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/history_builder.rs +3 -3
  63. package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/history_info.rs +2 -2
  64. package/sdk-core/{sdk-core-protos/src/lib.rs → crates/common/src/protos/mod.rs} +43 -26
  65. package/sdk-core/crates/common/src/protos/test_utils.rs +89 -0
  66. package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/utilities.rs +14 -5
  67. package/sdk-core/{core-api → crates/common}/src/telemetry/metrics.rs +449 -51
  68. package/sdk-core/{core-api → crates/common}/src/telemetry.rs +16 -1
  69. package/sdk-core/{core-api → crates/common}/src/worker.rs +112 -18
  70. package/sdk-core/crates/common/tests/worker_task_types_test.rs +129 -0
  71. package/sdk-core/crates/macros/Cargo.toml +23 -0
  72. package/sdk-core/{fsm/rustfsm_procmacro → crates/macros}/src/lib.rs +12 -12
  73. package/sdk-core/{sdk → crates/sdk}/Cargo.toml +18 -12
  74. package/sdk-core/{sdk → crates/sdk}/src/activity_context.rs +9 -7
  75. package/sdk-core/{sdk → crates/sdk}/src/app_data.rs +1 -1
  76. package/sdk-core/{sdk → crates/sdk}/src/interceptors.rs +2 -5
  77. package/sdk-core/{sdk → crates/sdk}/src/lib.rs +43 -42
  78. package/sdk-core/{sdk → crates/sdk}/src/workflow_context/options.rs +12 -3
  79. package/sdk-core/{sdk → crates/sdk}/src/workflow_context.rs +21 -19
  80. package/sdk-core/{sdk → crates/sdk}/src/workflow_future.rs +2 -2
  81. package/sdk-core/crates/sdk-core/Cargo.toml +222 -0
  82. package/sdk-core/{core/benches/workflow_replay.rs → crates/sdk-core/benches/workflow_replay_bench.rs} +15 -10
  83. package/sdk-core/crates/sdk-core/machine_coverage/ActivityMachine_Coverage.puml +32 -0
  84. package/sdk-core/crates/sdk-core/machine_coverage/CancelExternalMachine_Coverage.puml +9 -0
  85. package/sdk-core/crates/sdk-core/machine_coverage/CancelWorkflowMachine_Coverage.puml +6 -0
  86. package/sdk-core/crates/sdk-core/machine_coverage/ChildWorkflowMachine_Coverage.puml +27 -0
  87. package/sdk-core/crates/sdk-core/machine_coverage/CompleteWorkflowMachine_Coverage.puml +6 -0
  88. package/sdk-core/crates/sdk-core/machine_coverage/ContinueAsNewWorkflowMachine_Coverage.puml +6 -0
  89. package/sdk-core/crates/sdk-core/machine_coverage/FailWorkflowMachine_Coverage.puml +6 -0
  90. package/sdk-core/crates/sdk-core/machine_coverage/LocalActivityMachine_Coverage.puml +23 -0
  91. package/sdk-core/crates/sdk-core/machine_coverage/ModifyWorkflowPropertiesMachine_Coverage.puml +5 -0
  92. package/sdk-core/crates/sdk-core/machine_coverage/PatchMachine_Coverage.puml +8 -0
  93. package/sdk-core/crates/sdk-core/machine_coverage/SignalExternalMachine_Coverage.puml +12 -0
  94. package/sdk-core/crates/sdk-core/machine_coverage/TimerMachine_Coverage.puml +13 -0
  95. package/sdk-core/crates/sdk-core/machine_coverage/UpdateMachine_Coverage.puml +19 -0
  96. package/sdk-core/crates/sdk-core/machine_coverage/UpsertSearchAttributesMachine_Coverage.puml +5 -0
  97. package/sdk-core/crates/sdk-core/machine_coverage/WorkflowTaskMachine_Coverage.puml +11 -0
  98. package/sdk-core/{core → crates/sdk-core}/src/abstractions.rs +62 -6
  99. package/sdk-core/crates/sdk-core/src/antithesis.rs +60 -0
  100. package/sdk-core/{core → crates/sdk-core}/src/core_tests/activity_tasks.rs +85 -250
  101. package/sdk-core/{core → crates/sdk-core}/src/core_tests/mod.rs +13 -16
  102. package/sdk-core/{core → crates/sdk-core}/src/core_tests/queries.rs +25 -24
  103. package/sdk-core/{core → crates/sdk-core}/src/core_tests/replay_flag.rs +11 -68
  104. package/sdk-core/{core → crates/sdk-core}/src/core_tests/updates.rs +21 -20
  105. package/sdk-core/{core → crates/sdk-core}/src/core_tests/workers.rs +242 -16
  106. package/sdk-core/{core → crates/sdk-core}/src/core_tests/workflow_cancels.rs +10 -7
  107. package/sdk-core/{core → crates/sdk-core}/src/core_tests/workflow_tasks.rs +150 -326
  108. package/sdk-core/{core → crates/sdk-core}/src/debug_client.rs +1 -1
  109. package/sdk-core/{core → crates/sdk-core}/src/ephemeral_server/mod.rs +18 -6
  110. package/sdk-core/{test-utils → crates/sdk-core}/src/histfetch.rs +9 -4
  111. package/sdk-core/{core → crates/sdk-core}/src/internal_flags.rs +15 -4
  112. package/sdk-core/{core → crates/sdk-core}/src/lib.rs +128 -72
  113. package/sdk-core/{core → crates/sdk-core}/src/pollers/mod.rs +13 -11
  114. package/sdk-core/{core → crates/sdk-core}/src/pollers/poll_buffer.rs +53 -18
  115. package/sdk-core/{core → crates/sdk-core}/src/protosext/mod.rs +14 -6
  116. package/sdk-core/{core → crates/sdk-core}/src/protosext/protocol_messages.rs +5 -12
  117. package/sdk-core/{core → crates/sdk-core}/src/replay/mod.rs +14 -11
  118. package/sdk-core/crates/sdk-core/src/retry_logic.rs +390 -0
  119. package/sdk-core/{core → crates/sdk-core}/src/telemetry/log_export.rs +2 -2
  120. package/sdk-core/{core → crates/sdk-core}/src/telemetry/metrics.rs +80 -33
  121. package/sdk-core/{core → crates/sdk-core}/src/telemetry/mod.rs +12 -6
  122. package/sdk-core/{core → crates/sdk-core}/src/telemetry/otel.rs +1 -1
  123. package/sdk-core/{core → crates/sdk-core}/src/telemetry/prometheus_meter.rs +14 -14
  124. package/sdk-core/{core → crates/sdk-core}/src/telemetry/prometheus_server.rs +2 -2
  125. package/sdk-core/{core/src/test_help/mod.rs → crates/sdk-core/src/test_help/integ_helpers.rs} +284 -329
  126. package/sdk-core/crates/sdk-core/src/test_help/mod.rs +13 -0
  127. package/sdk-core/crates/sdk-core/src/test_help/unit_helpers.rs +220 -0
  128. package/sdk-core/{core → crates/sdk-core}/src/worker/activities/activity_heartbeat_manager.rs +44 -8
  129. package/sdk-core/{core → crates/sdk-core}/src/worker/activities/local_activities.rs +33 -31
  130. package/sdk-core/{core → crates/sdk-core}/src/worker/activities.rs +31 -15
  131. package/sdk-core/{core → crates/sdk-core}/src/worker/client/mocks.rs +28 -15
  132. package/sdk-core/{core → crates/sdk-core}/src/worker/client.rs +275 -145
  133. package/sdk-core/crates/sdk-core/src/worker/heartbeat.rs +246 -0
  134. package/sdk-core/crates/sdk-core/src/worker/mod.rs +1462 -0
  135. package/sdk-core/{core → crates/sdk-core}/src/worker/nexus.rs +24 -12
  136. package/sdk-core/{core → crates/sdk-core}/src/worker/slot_provider.rs +18 -10
  137. package/sdk-core/{core → crates/sdk-core}/src/worker/tuner/fixed_size.rs +5 -1
  138. package/sdk-core/{core → crates/sdk-core}/src/worker/tuner/resource_based.rs +453 -57
  139. package/sdk-core/{core → crates/sdk-core}/src/worker/tuner.rs +179 -3
  140. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/driven_workflow.rs +1 -1
  141. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/history_update.rs +5 -267
  142. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/activity_state_machine.rs +147 -90
  143. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/cancel_external_state_machine.rs +8 -91
  144. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/cancel_nexus_op_state_machine.rs +14 -12
  145. package/sdk-core/crates/sdk-core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +97 -0
  146. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/child_workflow_state_machine.rs +32 -229
  147. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/complete_workflow_state_machine.rs +13 -8
  148. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +6 -50
  149. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/fail_workflow_state_machine.rs +6 -7
  150. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/local_activity_state_machine.rs +39 -584
  151. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/mod.rs +22 -17
  152. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +4 -74
  153. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/nexus_operation_state_machine.rs +118 -21
  154. package/sdk-core/crates/sdk-core/src/worker/workflow/machines/patch_state_machine.rs +273 -0
  155. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/signal_external_state_machine.rs +9 -151
  156. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/timer_state_machine.rs +27 -132
  157. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/transition_coverage.rs +1 -2
  158. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/update_state_machine.rs +19 -13
  159. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +25 -80
  160. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/workflow_machines/local_acts.rs +1 -1
  161. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/workflow_machines.rs +68 -72
  162. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/workflow_task_state_machine.rs +13 -15
  163. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/managed_run.rs +55 -37
  164. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/mod.rs +171 -61
  165. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/run_cache.rs +10 -7
  166. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/wft_extraction.rs +4 -2
  167. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/wft_poller.rs +15 -4
  168. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/workflow_stream.rs +38 -19
  169. package/sdk-core/crates/sdk-core/tests/c_bridge_smoke_test.c +10 -0
  170. package/sdk-core/crates/sdk-core/tests/cloud_tests.rs +25 -0
  171. package/sdk-core/crates/sdk-core/tests/common/fake_grpc_server.rs +106 -0
  172. package/sdk-core/crates/sdk-core/tests/common/http_proxy.rs +134 -0
  173. package/sdk-core/{test-utils/src/lib.rs → crates/sdk-core/tests/common/mod.rs} +286 -334
  174. package/sdk-core/{test-utils/src → crates/sdk-core/tests/common}/workflows.rs +6 -4
  175. package/sdk-core/crates/sdk-core/tests/fsm_procmacro.rs +6 -0
  176. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/dupe_transitions_fail.rs +1 -3
  177. package/sdk-core/crates/sdk-core/tests/fsm_trybuild/dupe_transitions_fail.stderr +12 -0
  178. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/dynamic_dest_pass.rs +2 -4
  179. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/forgot_name_fail.rs +1 -3
  180. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/forgot_name_fail.stderr +4 -4
  181. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/handler_arg_pass.rs +2 -4
  182. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/handler_pass.rs +2 -4
  183. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/medium_complex_pass.rs +2 -4
  184. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/no_handle_conversions_require_into_fail.rs +2 -4
  185. package/sdk-core/crates/sdk-core/tests/fsm_trybuild/no_handle_conversions_require_into_fail.stderr +15 -0
  186. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/simple_pass.rs +2 -4
  187. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/struct_event_variant_fail.rs +1 -3
  188. package/sdk-core/crates/sdk-core/tests/fsm_trybuild/struct_event_variant_fail.stderr +5 -0
  189. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/tuple_more_item_event_variant_fail.rs +1 -3
  190. package/sdk-core/crates/sdk-core/tests/fsm_trybuild/tuple_more_item_event_variant_fail.stderr +5 -0
  191. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/tuple_zero_item_event_variant_fail.rs +1 -3
  192. package/sdk-core/crates/sdk-core/tests/fsm_trybuild/tuple_zero_item_event_variant_fail.stderr +5 -0
  193. package/sdk-core/{tests → crates/sdk-core/tests}/global_metric_tests.rs +22 -22
  194. package/sdk-core/{tests → crates/sdk-core/tests/heavy_tests}/fuzzy_workflow.rs +4 -4
  195. package/sdk-core/{tests → crates/sdk-core/tests}/heavy_tests.rs +25 -14
  196. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/activity_functions.rs +1 -1
  197. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/client_tests.rs +115 -123
  198. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/ephemeral_server_tests.rs +19 -15
  199. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/heartbeat_tests.rs +24 -20
  200. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/metrics_tests.rs +241 -67
  201. package/sdk-core/crates/sdk-core/tests/integ_tests/pagination_tests.rs +273 -0
  202. package/sdk-core/crates/sdk-core/tests/integ_tests/polling_tests.rs +513 -0
  203. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/queries_tests.rs +13 -11
  204. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/update_tests.rs +47 -29
  205. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/visibility_tests.rs +49 -27
  206. package/sdk-core/crates/sdk-core/tests/integ_tests/worker_heartbeat_tests.rs +1061 -0
  207. package/sdk-core/crates/sdk-core/tests/integ_tests/worker_tests.rs +920 -0
  208. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/worker_versioning_tests.rs +58 -40
  209. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/activities.rs +268 -30
  210. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/appdata_propagation.rs +4 -4
  211. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +155 -0
  212. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +121 -0
  213. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +717 -0
  214. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +109 -0
  215. package/sdk-core/{core/src/core_tests → crates/sdk-core/tests/integ_tests/workflow_tests}/determinism.rs +108 -20
  216. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/eager.rs +10 -5
  217. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +2884 -0
  218. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +119 -0
  219. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/nexus.rs +174 -46
  220. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/patches.rs +740 -0
  221. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/replay.rs +78 -27
  222. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/resets.rs +46 -28
  223. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/signals.rs +294 -0
  224. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/stickyness.rs +9 -8
  225. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/timers.rs +249 -0
  226. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/upsert_search_attrs.rs +72 -7
  227. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests.rs +97 -33
  228. package/sdk-core/{tests → crates/sdk-core/tests}/main.rs +40 -25
  229. package/sdk-core/{tests → crates/sdk-core/tests}/manual_tests.rs +25 -15
  230. package/sdk-core/{tests → crates/sdk-core/tests}/runner.rs +23 -41
  231. package/sdk-core/{tests → crates/sdk-core/tests}/shared_tests/mod.rs +11 -6
  232. package/sdk-core/{tests → crates/sdk-core/tests}/shared_tests/priority.rs +6 -6
  233. package/sdk-core/crates/sdk-core-c-bridge/Cargo.toml +59 -0
  234. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/include/temporal-sdk-core-c-bridge.h +215 -44
  235. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/client.rs +515 -214
  236. package/sdk-core/crates/sdk-core-c-bridge/src/envconfig.rs +314 -0
  237. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/lib.rs +2 -1
  238. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/metric.rs +1 -1
  239. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/random.rs +4 -4
  240. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/runtime.rs +42 -28
  241. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/testing.rs +2 -5
  242. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/tests/context.rs +42 -41
  243. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/tests/mod.rs +38 -34
  244. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/tests/utils.rs +10 -11
  245. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/worker.rs +427 -121
  246. package/sdk-core/docker-cgroup-tests.sh +24 -0
  247. package/sdk-core/{docker → etc/docker}/docker-compose-ci.yaml +9 -9
  248. package/sdk-core/{docker → etc/docker}/docker-compose-telem.yaml +11 -11
  249. package/sdk-core/{docker → etc/docker}/docker-compose.yaml +8 -8
  250. package/sdk-core/{integ-with-otel.sh → etc/integ-with-otel.sh} +1 -1
  251. package/sdk-core/etc/regen-depgraph.sh +2 -2
  252. package/src/client.rs +117 -49
  253. package/src/helpers/callbacks.rs +4 -4
  254. package/src/helpers/errors.rs +7 -1
  255. package/src/helpers/handles.rs +1 -0
  256. package/src/helpers/try_from_js.rs +5 -4
  257. package/src/lib.rs +3 -2
  258. package/src/logs.rs +1 -1
  259. package/src/metrics.rs +6 -3
  260. package/src/runtime.rs +41 -24
  261. package/src/testing.rs +3 -3
  262. package/src/worker.rs +77 -44
  263. package/ts/native.ts +26 -9
  264. package/LICENSE.md +0 -23
  265. package/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
  266. package/sdk-core/client/src/proxy.rs +0 -90
  267. package/sdk-core/client/src/worker_registry/mod.rs +0 -266
  268. package/sdk-core/core/Cargo.toml +0 -146
  269. package/sdk-core/core/src/core_tests/child_workflows.rs +0 -281
  270. package/sdk-core/core/src/core_tests/local_activities.rs +0 -1442
  271. package/sdk-core/core/src/retry_logic.rs +0 -224
  272. package/sdk-core/core/src/worker/heartbeat.rs +0 -231
  273. package/sdk-core/core/src/worker/mod.rs +0 -980
  274. package/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -165
  275. package/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -801
  276. package/sdk-core/core-c-bridge/Cargo.toml +0 -51
  277. package/sdk-core/etc/deps.svg +0 -162
  278. package/sdk-core/fsm/Cargo.toml +0 -21
  279. package/sdk-core/fsm/README.md +0 -3
  280. package/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
  281. package/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
  282. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
  283. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -15
  284. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
  285. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
  286. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
  287. package/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
  288. package/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -21
  289. package/sdk-core/fsm/src/lib.rs +0 -2
  290. package/sdk-core/sdk-core-protos/Cargo.toml +0 -37
  291. package/sdk-core/sdk-core-protos/protos/api_cloud_upstream/VERSION +0 -1
  292. package/sdk-core/test-utils/Cargo.toml +0 -38
  293. package/sdk-core/test-utils/src/interceptors.rs +0 -46
  294. package/sdk-core/tests/cloud_tests.rs +0 -23
  295. package/sdk-core/tests/integ_tests/polling_tests.rs +0 -294
  296. package/sdk-core/tests/integ_tests/worker_tests.rs +0 -203
  297. package/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -74
  298. package/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -57
  299. package/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -246
  300. package/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -65
  301. package/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -85
  302. package/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -908
  303. package/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -51
  304. package/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -206
  305. package/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -164
  306. package/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -123
  307. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/.github/workflows/build.yaml +0 -0
  308. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/.github/workflows/push-to-buf.yml +0 -0
  309. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/CODEOWNERS +0 -0
  310. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/LICENSE +0 -0
  311. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/Makefile +0 -0
  312. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/README.md +0 -0
  313. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/buf.gen.yaml +0 -0
  314. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/buf.lock +0 -0
  315. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/buf.yaml +0 -0
  316. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/connectivityrule/v1/message.proto +0 -0
  317. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/identity/v1/message.proto +0 -0
  318. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/namespace/v1/message.proto +0 -0
  319. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/nexus/v1/message.proto +0 -0
  320. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/region/v1/message.proto +0 -0
  321. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/resource/v1/message.proto +0 -0
  322. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/usage/v1/message.proto +0 -0
  323. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/CODEOWNERS +0 -0
  324. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  325. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/ci.yml +0 -0
  326. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/publish-docs.yml +0 -0
  327. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/push-to-buf.yml +0 -0
  328. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/trigger-api-go-delete-release.yml +0 -0
  329. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/trigger-api-go-publish-release.yml +0 -0
  330. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/trigger-api-go-update.yml +0 -0
  331. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/LICENSE +0 -0
  332. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/Makefile +0 -0
  333. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/README.md +0 -0
  334. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/api-linter.yaml +0 -0
  335. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/buf.gen.yaml +0 -0
  336. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/buf.lock +0 -0
  337. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/buf.yaml +0 -0
  338. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/api/annotations.proto +0 -0
  339. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/api/http.proto +0 -0
  340. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/any.proto +0 -0
  341. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/descriptor.proto +0 -0
  342. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/duration.proto +0 -0
  343. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/empty.proto +0 -0
  344. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/struct.proto +0 -0
  345. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/timestamp.proto +0 -0
  346. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/wrappers.proto +0 -0
  347. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/openapi/payload_description.txt +0 -0
  348. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/activity/v1/message.proto +0 -0
  349. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -0
  350. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/command/v1/message.proto +0 -0
  351. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -0
  352. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -0
  353. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -0
  354. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/deployment.proto +0 -0
  355. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -0
  356. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -0
  357. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -0
  358. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/nexus.proto +0 -0
  359. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -0
  360. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -0
  361. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -0
  362. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -0
  363. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -0
  364. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -0
  365. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -0
  366. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/export/v1/message.proto +0 -0
  367. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -0
  368. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -0
  369. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/history/v1/message.proto +0 -0
  370. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/nexus/v1/message.proto +0 -0
  371. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -0
  372. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -0
  373. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -0
  374. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/query/v1/message.proto +0 -0
  375. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -0
  376. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/rules/v1/message.proto +0 -0
  377. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -0
  378. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/enhanced_stack_trace.proto +0 -0
  379. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -0
  380. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/user_metadata.proto +0 -0
  381. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/worker_config.proto +0 -0
  382. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/workflow_metadata.proto +0 -0
  383. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -0
  384. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/update/v1/message.proto +0 -0
  385. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/version/v1/message.proto +0 -0
  386. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/worker/v1/message.proto +0 -0
  387. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -0
  388. /package/sdk-core/{sdk-core-protos → crates/common}/protos/google/rpc/status.proto +0 -0
  389. /package/sdk-core/{sdk-core-protos → crates/common}/protos/grpc/health/v1/health.proto +0 -0
  390. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -0
  391. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -0
  392. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -0
  393. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/common/common.proto +0 -0
  394. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/core_interface.proto +0 -0
  395. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -0
  396. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/nexus/nexus.proto +0 -0
  397. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -0
  398. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -0
  399. /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/Makefile +0 -0
  400. /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/api-linter.yaml +0 -0
  401. /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/buf.yaml +0 -0
  402. /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -0
  403. /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -0
  404. /package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/constants.rs +0 -0
  405. /package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/task_token.rs +0 -0
  406. /package/sdk-core/{fsm → crates/macros}/LICENSE.txt +0 -0
  407. /package/sdk-core/{core → crates/sdk-core}/src/abstractions/take_cell.rs +0 -0
  408. /package/sdk-core/{core → crates/sdk-core}/src/worker/slot_supplier.rs +0 -0
  409. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/ends_empty_wft_complete.bin +0 -0
  410. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/evict_while_la_running_no_interference-16_history.bin +0 -0
  411. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/evict_while_la_running_no_interference-23_history.bin +0 -0
  412. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/evict_while_la_running_no_interference-85_history.bin +0 -0
  413. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/fail_wf_task.bin +0 -0
  414. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/long_local_activity_with_update-0_history.bin +0 -0
  415. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/long_local_activity_with_update-1_history.bin +0 -0
  416. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/long_local_activity_with_update-2_history.bin +0 -0
  417. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/long_local_activity_with_update-3_history.bin +0 -0
  418. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/old_change_marker_format.bin +0 -0
  419. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/timer_workflow_history.bin +0 -0
  420. /package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/priority.rs +0 -0
  421. /package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/build.rs +0 -0
  422. /package/sdk-core/{cargo-tokio-console.sh → etc/cargo-tokio-console.sh} +0 -0
@@ -1,3 +1,5 @@
1
+ //! Contains tracing/logging and metrics related functionality
2
+
1
3
  pub mod metrics;
2
4
 
3
5
  use crate::telemetry::metrics::CoreMeter;
@@ -49,6 +51,9 @@ pub struct TelemetryOptions {
49
51
  /// all logging and traces.
50
52
  #[builder(setter(strip_option), default)]
51
53
  pub subscriber_override: Option<Arc<dyn Subscriber + Send + Sync>>,
54
+ /// See [TaskQueueLabelStrategy].
55
+ #[builder(default = "TaskQueueLabelStrategy::UseNormal")]
56
+ pub task_queue_label_strategy: TaskQueueLabelStrategy,
52
57
  }
53
58
  impl Debug for TelemetryOptions {
54
59
  fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
@@ -80,6 +85,16 @@ impl Debug for TelemetryOptions {
80
85
  }
81
86
  }
82
87
 
88
+ /// Determines how the `task_queue` label value is set on metrics.
89
+ #[derive(Copy, Clone, Debug)]
90
+ #[non_exhaustive]
91
+ pub enum TaskQueueLabelStrategy {
92
+ /// Always use the normal task queue name, including for actions relating to sticky queues.
93
+ UseNormal,
94
+ /// Use the sticky queue name when recording metrics operating on sticky queues.
95
+ UseNormalAndSticky,
96
+ }
97
+
83
98
  /// Options for exporting to an OpenTelemetry Collector
84
99
  #[derive(Debug, Clone, derive_builder::Builder)]
85
100
  pub struct OtelCollectorOptions {
@@ -160,7 +175,7 @@ pub enum Logger {
160
175
  filter: String,
161
176
  },
162
177
  /// Push logs to Lang. Can be used with
163
- /// temporal_sdk_core::telemetry::log_export::CoreLogBufferedConsumer to buffer.
178
+ /// temporalio_sdk_core::telemetry::log_export::CoreLogBufferedConsumer to buffer.
164
179
  Push {
165
180
  /// An [EnvFilter](https://docs.rs/tracing-subscriber/latest/tracing_subscriber/struct.EnvFilter.html) filter string.
166
181
  filter: String,
@@ -1,4 +1,16 @@
1
- use crate::{errors::WorkflowErrorType, telemetry::metrics::TemporalMeter};
1
+ //! Contains types that are needed by both the client and the sdk when configuring / interacting
2
+ //! with workers.
3
+
4
+ use crate::{
5
+ errors::WorkflowErrorType,
6
+ protos::{
7
+ coresdk,
8
+ coresdk::{ActivitySlotInfo, LocalActivitySlotInfo, NexusSlotInfo, WorkflowSlotInfo},
9
+ temporal,
10
+ temporal::api::{enums::v1::VersioningBehavior, worker::v1::PluginInfo},
11
+ },
12
+ telemetry::metrics::TemporalMeter,
13
+ };
2
14
  use std::{
3
15
  any::Any,
4
16
  collections::{HashMap, HashSet},
@@ -6,12 +18,74 @@ use std::{
6
18
  sync::Arc,
7
19
  time::Duration,
8
20
  };
9
- use temporal_sdk_core_protos::{
10
- coresdk,
11
- coresdk::{ActivitySlotInfo, LocalActivitySlotInfo, NexusSlotInfo, WorkflowSlotInfo},
12
- temporal,
13
- temporal::api::enums::v1::VersioningBehavior,
14
- };
21
+
22
+ /// Specifies which task types a worker will poll for.
23
+ ///
24
+ /// Workers can be configured to handle any combination of workflows, activities, and nexus operations.
25
+ #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
26
+ pub struct WorkerTaskTypes {
27
+ pub enable_workflows: bool,
28
+ pub enable_local_activities: bool,
29
+ pub enable_remote_activities: bool,
30
+ pub enable_nexus: bool,
31
+ }
32
+
33
+ impl WorkerTaskTypes {
34
+ /// Check if no task types are enabled
35
+ pub fn is_empty(&self) -> bool {
36
+ !self.enable_workflows
37
+ && !self.enable_local_activities
38
+ && !self.enable_remote_activities
39
+ && !self.enable_nexus
40
+ }
41
+
42
+ /// Create a config with all task types enabled
43
+ pub fn all() -> WorkerTaskTypes {
44
+ WorkerTaskTypes {
45
+ enable_workflows: true,
46
+ enable_local_activities: true,
47
+ enable_remote_activities: true,
48
+ enable_nexus: true,
49
+ }
50
+ }
51
+
52
+ /// Create a config with only workflow tasks enabled
53
+ pub fn workflow_only() -> WorkerTaskTypes {
54
+ WorkerTaskTypes {
55
+ enable_workflows: true,
56
+ enable_local_activities: false,
57
+ enable_remote_activities: false,
58
+ enable_nexus: false,
59
+ }
60
+ }
61
+
62
+ /// Create a config with only activity tasks enabled
63
+ pub fn activity_only() -> WorkerTaskTypes {
64
+ WorkerTaskTypes {
65
+ enable_workflows: false,
66
+ enable_local_activities: false,
67
+ enable_remote_activities: true,
68
+ enable_nexus: false,
69
+ }
70
+ }
71
+
72
+ /// Create a config with only nexus tasks enabled
73
+ pub fn nexus_only() -> WorkerTaskTypes {
74
+ WorkerTaskTypes {
75
+ enable_workflows: false,
76
+ enable_local_activities: false,
77
+ enable_remote_activities: false,
78
+ enable_nexus: true,
79
+ }
80
+ }
81
+
82
+ pub fn overlaps_with(&self, other: &WorkerTaskTypes) -> bool {
83
+ (self.enable_workflows && other.enable_workflows)
84
+ || (self.enable_local_activities && other.enable_local_activities)
85
+ || (self.enable_remote_activities && other.enable_remote_activities)
86
+ || (self.enable_nexus && other.enable_nexus)
87
+ }
88
+ }
15
89
 
16
90
  /// Defines per-worker configuration options
17
91
  #[derive(Clone, derive_builder::Builder)]
@@ -61,10 +135,10 @@ pub struct WorkerConfig {
61
135
  /// worker's task queue
62
136
  #[builder(default = "PollerBehavior::SimpleMaximum(5)")]
63
137
  pub nexus_task_poller_behavior: PollerBehavior,
64
- /// If set to true this worker will only handle workflow tasks and local activities, it will not
65
- /// poll for activity tasks.
66
- #[builder(default = "false")]
67
- pub no_remote_activities: bool,
138
+ /// Specifies which task types this worker will poll for.
139
+ ///
140
+ /// Note: At least one task type must be specified or the worker will fail validation.
141
+ pub task_types: WorkerTaskTypes,
68
142
  /// How long a workflow task is allowed to sit on the sticky queue before it is timed out
69
143
  /// and moved to the non-sticky queue where it may be picked up by any worker.
70
144
  #[builder(default = "Duration::from_secs(10)")]
@@ -141,19 +215,19 @@ pub struct WorkerConfig {
141
215
  /// Mutually exclusive with `tuner`
142
216
  #[builder(setter(into, strip_option), default)]
143
217
  pub max_outstanding_workflow_tasks: Option<usize>,
144
- /// The maximum number of activity tasks that will ever be given to this worker concurrently
218
+ /// The maximum number of activity tasks that will ever be given to this worker concurrently.
145
219
  ///
146
220
  /// Mutually exclusive with `tuner`
147
221
  #[builder(setter(into, strip_option), default)]
148
222
  pub max_outstanding_activities: Option<usize>,
149
223
  /// The maximum number of local activity tasks that will ever be given to this worker
150
- /// concurrently
224
+ /// concurrently.
151
225
  ///
152
226
  /// Mutually exclusive with `tuner`
153
227
  #[builder(setter(into, strip_option), default)]
154
228
  pub max_outstanding_local_activities: Option<usize>,
155
229
  /// The maximum number of nexus tasks that will ever be given to this worker
156
- /// concurrently
230
+ /// concurrently.
157
231
  ///
158
232
  /// Mutually exclusive with `tuner`
159
233
  #[builder(setter(into, strip_option), default)]
@@ -162,11 +236,13 @@ pub struct WorkerConfig {
162
236
  /// A versioning strategy for this worker.
163
237
  pub versioning_strategy: WorkerVersioningStrategy,
164
238
 
165
- /// The interval within which the worker will send a heartbeat.
166
- /// The timer is reset on each existing RPC call that also happens to send this data, like
167
- /// `PollWorkflowTaskQueueRequest`.
239
+ /// List of plugins used by lang.
168
240
  #[builder(default)]
169
- pub heartbeat_interval: Option<Duration>,
241
+ pub plugins: HashSet<PluginInfo>,
242
+
243
+ /// Skips the single worker+client+namespace+task_queue check
244
+ #[builder(default = "false")]
245
+ pub skip_client_worker_set_check: bool,
170
246
  }
171
247
 
172
248
  impl WorkerConfig {
@@ -213,6 +289,18 @@ impl WorkerConfigBuilder {
213
289
  }
214
290
 
215
291
  fn validate(&self) -> Result<(), String> {
292
+ let task_types = self
293
+ .task_types
294
+ .as_ref()
295
+ .cloned()
296
+ .unwrap_or_else(WorkerTaskTypes::all);
297
+ if task_types.is_empty() {
298
+ return Err("At least one task type must be enabled in `task_types`".to_owned());
299
+ }
300
+ if !task_types.enable_workflows && task_types.enable_local_activities {
301
+ return Err("`task_types` cannot enable local activities without workflows".to_owned());
302
+ }
303
+
216
304
  if let Some(b) = self.workflow_task_poller_behavior.as_ref() {
217
305
  b.validate()?
218
306
  }
@@ -363,6 +451,12 @@ pub trait SlotSupplier {
363
451
  fn available_slots(&self) -> Option<usize> {
364
452
  None
365
453
  }
454
+
455
+ /// Returns a human-friendly identifier describing this supplier implementation for
456
+ /// diagnostics and telemetry.
457
+ fn slot_supplier_kind(&self) -> String {
458
+ "Custom".to_string()
459
+ }
366
460
  }
367
461
 
368
462
  pub trait SlotReservationContext: Send + Sync {
@@ -0,0 +1,129 @@
1
+ use temporalio_common::worker::{WorkerConfigBuilder, WorkerTaskTypes, WorkerVersioningStrategy};
2
+
3
+ fn default_versioning_strategy() -> WorkerVersioningStrategy {
4
+ WorkerVersioningStrategy::None {
5
+ build_id: String::new(),
6
+ }
7
+ }
8
+
9
+ #[test]
10
+ fn test_default_configuration_polls_all_types() {
11
+ let config = WorkerConfigBuilder::default()
12
+ .namespace("default")
13
+ .task_queue("test-queue")
14
+ .versioning_strategy(default_versioning_strategy())
15
+ .task_types(WorkerTaskTypes::all())
16
+ .build()
17
+ .expect("Failed to build default config");
18
+
19
+ let effective = &config.task_types;
20
+ assert!(
21
+ effective.enable_workflows,
22
+ "Should poll workflows by default"
23
+ );
24
+ assert!(
25
+ effective.enable_local_activities,
26
+ "should poll local activities by default"
27
+ );
28
+ assert!(
29
+ effective.enable_remote_activities,
30
+ "Should poll remote activities by default"
31
+ );
32
+ assert!(effective.enable_nexus, "Should poll nexus by default");
33
+ }
34
+
35
+ #[test]
36
+ fn test_invalid_task_types_fails_validation() {
37
+ // empty task types
38
+ let result = WorkerConfigBuilder::default()
39
+ .namespace("default")
40
+ .task_queue("test-queue")
41
+ .versioning_strategy(default_versioning_strategy())
42
+ .task_types(WorkerTaskTypes {
43
+ enable_workflows: false,
44
+ enable_local_activities: false,
45
+ enable_remote_activities: false,
46
+ enable_nexus: false,
47
+ })
48
+ .build();
49
+
50
+ assert!(result.is_err(), "Empty task_types should fail validation");
51
+ let err = result.err().unwrap().to_string();
52
+ assert!(
53
+ err.contains("At least one task type"),
54
+ "Error should mention task types: {err}",
55
+ );
56
+
57
+ // local activities with no workflows
58
+ let result = WorkerConfigBuilder::default()
59
+ .namespace("default")
60
+ .task_queue("test-queue")
61
+ .versioning_strategy(default_versioning_strategy())
62
+ .task_types(WorkerTaskTypes {
63
+ enable_workflows: false,
64
+ enable_local_activities: true,
65
+ enable_remote_activities: false,
66
+ enable_nexus: false,
67
+ })
68
+ .build();
69
+
70
+ assert!(result.is_err(), "Empty task_types should fail validation");
71
+ let err = result.err().unwrap().to_string();
72
+ assert!(
73
+ err.contains("cannot enable local activities without workflows"),
74
+ "Error should mention task types: {err}",
75
+ );
76
+ }
77
+
78
+ #[test]
79
+ fn test_all_combinations() {
80
+ let combinations = [
81
+ (WorkerTaskTypes::workflow_only(), "workflows only"),
82
+ (WorkerTaskTypes::activity_only(), "activities only"),
83
+ (WorkerTaskTypes::nexus_only(), "nexus only"),
84
+ (
85
+ WorkerTaskTypes {
86
+ enable_workflows: true,
87
+ enable_local_activities: true,
88
+ enable_remote_activities: true,
89
+ enable_nexus: false,
90
+ },
91
+ "workflows + activities",
92
+ ),
93
+ (
94
+ WorkerTaskTypes {
95
+ enable_workflows: true,
96
+ enable_local_activities: true,
97
+ enable_remote_activities: false,
98
+ enable_nexus: true,
99
+ },
100
+ "workflows + nexus",
101
+ ),
102
+ (
103
+ WorkerTaskTypes {
104
+ enable_workflows: false,
105
+ enable_local_activities: false,
106
+ enable_remote_activities: true,
107
+ enable_nexus: true,
108
+ },
109
+ "activities + nexus",
110
+ ),
111
+ (WorkerTaskTypes::all(), "all types"),
112
+ ];
113
+
114
+ for (task_types, description) in combinations {
115
+ let config = WorkerConfigBuilder::default()
116
+ .namespace("default")
117
+ .task_queue("test-queue")
118
+ .versioning_strategy(default_versioning_strategy())
119
+ .task_types(task_types)
120
+ .build()
121
+ .unwrap_or_else(|e| panic!("Failed to build config for {description}: {e:?}"));
122
+
123
+ let effective = config.task_types;
124
+ assert_eq!(
125
+ effective, task_types,
126
+ "Effective types should match for {description}",
127
+ );
128
+ }
129
+ }
@@ -0,0 +1,23 @@
1
+ [package]
2
+ name = "temporalio-macros"
3
+ version = "0.1.0"
4
+ edition = "2024"
5
+ authors = ["Temporal Technologies Inc. <sdk@temporal.io>"]
6
+ license-file = { workspace = true }
7
+ description = "Procmacros used in Temporal Core & Rust SDKs"
8
+
9
+ [lib]
10
+ proc-macro = true
11
+
12
+ [dependencies]
13
+ derive_more = { workspace = true }
14
+ proc-macro2 = "1.0"
15
+ syn = { version = "2.0", features = ["default", "extra-traits"] }
16
+ quote = "1.0"
17
+
18
+ [dev-dependencies]
19
+ # This is to enable doctests for the macros
20
+ temporalio-common = { path = "../common" }
21
+
22
+ [package.metadata.workspaces]
23
+ independent = true
@@ -13,10 +13,9 @@ use syn::{
13
13
  ///
14
14
  /// An example state machine definition of a card reader for unlocking a door:
15
15
  /// ```
16
- /// # extern crate rustfsm_trait as rustfsm;
17
- /// use rustfsm_procmacro::fsm;
16
+ /// use temporalio_macros::fsm;
18
17
  /// use std::convert::Infallible;
19
- /// use rustfsm_trait::{StateMachine, TransitionResult};
18
+ /// use temporalio_common::fsm_trait::{StateMachine, TransitionResult};
20
19
  ///
21
20
  /// fsm! {
22
21
  /// name CardReader; command Commands; error Infallible; shared_state SharedState;
@@ -434,6 +433,7 @@ impl StateMachineDefinition {
434
433
  }
435
434
  };
436
435
  let mut multi_dest_enums = vec![];
436
+ let mut multi_dest_enum_names = HashSet::new();
437
437
  let state_branches: Vec<_> = statemap.into_iter().map(|(from, transitions)| {
438
438
  let occupied_current_state = quote! { Some(#state_enum_name::#from(state_data)) };
439
439
  // Merge transition dest states with the same handler
@@ -468,7 +468,11 @@ impl StateMachineDefinition {
468
468
  }
469
469
  }
470
470
  };
471
- multi_dest_enums.push(multi_dest_enum);
471
+ // Deduplicate; two different events may each result in a transition
472
+ // set with the same set of dest states
473
+ if multi_dest_enum_names.insert(enum_ident.clone()) {
474
+ multi_dest_enums.push(multi_dest_enum);
475
+ }
472
476
  quote! {
473
477
  #transition_result_name<#enum_ident>
474
478
  }
@@ -538,7 +542,7 @@ impl StateMachineDefinition {
538
542
  quote! { _ => {
539
543
  // Restore state in event the transition doesn't match
540
544
  self.state = #occupied_current_state;
541
- return Err(::rustfsm::MachineError::InvalidTransition)
545
+ return Err(::temporalio_common::fsm_trait::MachineError::InvalidTransition)
542
546
  } },
543
547
  ));
544
548
  quote! {
@@ -548,14 +552,14 @@ impl StateMachineDefinition {
548
552
  }
549
553
  }).chain(std::iter::once(
550
554
  quote! {
551
- None => Err(::rustfsm::MachineError::InvalidTransition)
555
+ None => Err(::temporalio_common::fsm_trait::MachineError::InvalidTransition)
552
556
  }
553
557
  )).collect();
554
558
 
555
559
  let viz_str = self.visualize();
556
560
 
557
561
  let trait_impl = quote! {
558
- impl ::rustfsm::StateMachine for #name {
562
+ impl ::temporalio_common::fsm_trait::StateMachine for #name {
559
563
  type Error = #err_type;
560
564
  type State = #state_enum_name;
561
565
  type SharedState = #shared_state_type;
@@ -568,7 +572,7 @@ impl StateMachineDefinition {
568
572
 
569
573
  fn on_event(&mut self, event: #events_enum_name)
570
574
  -> ::core::result::Result<::std::vec::Vec<Self::Command>,
571
- ::rustfsm::MachineError<Self::Error>> {
575
+ ::temporalio_common::fsm_trait::MachineError<Self::Error>> {
572
576
  let taken_state = self.state.take();
573
577
  match taken_state {
574
578
  #(#state_branches),*
@@ -579,10 +583,6 @@ impl StateMachineDefinition {
579
583
  self.state.as_ref().unwrap()
580
584
  }
581
585
 
582
- fn set_state(&mut self, new: Self::State) {
583
- self.state = Some(new)
584
- }
585
-
586
586
  fn shared_state(&self) -> &Self::SharedState{
587
587
  &self.shared_state
588
588
  }
@@ -1,5 +1,5 @@
1
1
  [package]
2
- name = "temporal-sdk"
2
+ name = "temporalio-sdk"
3
3
  version = "0.1.0-alpha.1"
4
4
  edition = "2024"
5
5
  authors = ["Spencer Judge <spencer@temporal.io>"]
@@ -16,29 +16,35 @@ anyhow = "1.0"
16
16
  derive_more = { workspace = true }
17
17
  futures-util = { version = "0.3", default-features = false }
18
18
  parking_lot = { version = "0.12", features = ["send_guard"] }
19
- prost-types = { version = "0.6", package = "prost-wkt-types" }
19
+ prost-types = { workspace = true }
20
20
  serde = "1.0"
21
- tokio = { version = "1.26", features = ["rt", "rt-multi-thread", "parking_lot", "time", "fs"] }
21
+ tokio = { version = "1.47", features = [
22
+ "rt",
23
+ "rt-multi-thread",
24
+ "parking_lot",
25
+ "time",
26
+ "fs",
27
+ ] }
22
28
  tokio-util = { version = "0.7" }
23
29
  tokio-stream = "0.1"
24
30
  tracing = "0.1"
25
31
 
26
- [dependencies.temporal-sdk-core]
27
- path = "../core"
32
+ [dependencies.temporalio-sdk-core]
33
+ path = "../sdk-core"
28
34
  version = "0.1"
29
35
  default-features = false
30
36
 
31
- [dependencies.temporal-sdk-core-protos]
32
- path = "../sdk-core-protos"
37
+ [dependencies.temporalio-common]
38
+ path = "../common"
33
39
  version = "0.1"
34
40
 
35
- [dependencies.temporal-sdk-core-api]
36
- path = "../core-api"
37
- version = "0.1"
38
-
39
- [dependencies.temporal-client]
41
+ [dependencies.temporalio-client]
40
42
  path = "../client"
41
43
  version = "0.1"
42
44
 
45
+ [features]
46
+ default = []
47
+ antithesis_assertions = ["temporalio-sdk-core/antithesis_assertions"]
48
+
43
49
  [lints]
44
50
  workspace = true
@@ -6,12 +6,14 @@ use std::{
6
6
  sync::Arc,
7
7
  time::{Duration as StdDuration, SystemTime},
8
8
  };
9
- use temporal_client::Priority;
10
- use temporal_sdk_core_api::Worker;
11
- use temporal_sdk_core_protos::{
12
- coresdk::{ActivityHeartbeat, activity_task},
13
- temporal::api::common::v1::{Payload, RetryPolicy, WorkflowExecution},
14
- utilities::TryIntoOrNone,
9
+ use temporalio_client::Priority;
10
+ use temporalio_common::{
11
+ Worker,
12
+ protos::{
13
+ coresdk::{ActivityHeartbeat, activity_task},
14
+ temporal::api::common::v1::{Payload, RetryPolicy, WorkflowExecution},
15
+ utilities::TryIntoOrNone,
16
+ },
15
17
  };
16
18
  use tokio_util::sync::CancellationToken;
17
19
 
@@ -56,7 +58,7 @@ pub struct ActivityInfo {
56
58
  impl ActContext {
57
59
  /// Construct new Activity Context, returning the context and the first argument to the activity
58
60
  /// (which may be a default [Payload]).
59
- pub(crate) fn new(
61
+ pub fn new(
60
62
  worker: Arc<dyn Worker>,
61
63
  app_data: Arc<AppData>,
62
64
  cancellation_token: CancellationToken,
@@ -6,7 +6,7 @@ use std::{
6
6
 
7
7
  /// A Wrapper Type for workflow and activity app data
8
8
  #[derive(Default)]
9
- pub(crate) struct AppData {
9
+ pub struct AppData {
10
10
  map: HashMap<TypeId, Box<dyn Any + Send + Sync>>,
11
11
  }
12
12
 
@@ -3,7 +3,7 @@
3
3
  use crate::Worker;
4
4
  use anyhow::bail;
5
5
  use std::sync::{Arc, OnceLock};
6
- use temporal_sdk_core_protos::{
6
+ use temporalio_common::protos::{
7
7
  coresdk::{
8
8
  workflow_activation::{WorkflowActivation, remove_from_cache::EvictionReason},
9
9
  workflow_completion::WorkflowActivationCompletion,
@@ -88,10 +88,7 @@ impl WorkerInterceptor for FailOnNondeterminismInterceptor {
88
88
  activation.eviction_reason(),
89
89
  Some(EvictionReason::Nondeterminism)
90
90
  ) {
91
- bail!(
92
- "Workflow is being evicted because of nondeterminism! {}",
93
- activation
94
- );
91
+ bail!("Workflow is being evicted because of nondeterminism! {activation}");
95
92
  }
96
93
  Ok(())
97
94
  }