@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
package/src/runtime.rs CHANGED
@@ -5,12 +5,12 @@ use futures::channel::mpsc::Receiver;
5
5
  use neon::prelude::*;
6
6
  use tracing::{Instrument, warn};
7
7
 
8
- use temporal_sdk_core::{
9
- CoreRuntime, TokioRuntimeBuilder,
10
- api::telemetry::{
11
- CoreLog, OtelCollectorOptions as CoreOtelCollectorOptions,
12
- PrometheusExporterOptions as CorePrometheusExporterOptions, metrics::CoreMeter,
13
- },
8
+ use temporalio_common::telemetry::{
9
+ CoreLog, OtelCollectorOptions as CoreOtelCollectorOptions,
10
+ PrometheusExporterOptions as CorePrometheusExporterOptions, metrics::CoreMeter,
11
+ };
12
+ use temporalio_sdk_core::{
13
+ CoreRuntime, RuntimeOptionsBuilder, TokioRuntimeBuilder,
14
14
  telemetry::{build_otlp_metric_exporter, start_prometheus_metric_exporter},
15
15
  };
16
16
 
@@ -59,10 +59,16 @@ pub struct Runtime {
59
59
  pub fn runtime_new(
60
60
  bridge_options: config::RuntimeOptions,
61
61
  ) -> BridgeResult<OpaqueOutboundHandle<Runtime>> {
62
- let (telemetry_options, metrics_options, logging_options) = bridge_options.try_into()?;
62
+ let (telemetry_options, metrics_options, logging_options, worker_heartbeat_interval_millis) =
63
+ bridge_options.try_into()?;
63
64
 
64
65
  // Create core runtime which starts tokio multi-thread runtime
65
- let mut core_runtime = CoreRuntime::new(telemetry_options, TokioRuntimeBuilder::default())
66
+ let runtime_options = RuntimeOptionsBuilder::default()
67
+ .telemetry_options(telemetry_options)
68
+ .heartbeat_interval(worker_heartbeat_interval_millis.map(Duration::from_millis))
69
+ .build()
70
+ .context("Failed to build runtime options")?;
71
+ let mut core_runtime = CoreRuntime::new(runtime_options, TokioRuntimeBuilder::default())
66
72
  .context("Failed to initialize Core Runtime")?;
67
73
 
68
74
  enter_sync!(core_runtime);
@@ -235,17 +241,14 @@ mod config {
235
241
  use anyhow::Context as _;
236
242
 
237
243
  use neon::prelude::*;
238
- use temporal_sdk_core::{
239
- Url,
240
- api::telemetry::{
241
- HistogramBucketOverrides, Logger as CoreTelemetryLogger, MetricTemporality,
242
- OtelCollectorOptions as CoreOtelCollectorOptions, OtelCollectorOptionsBuilder,
243
- OtlpProtocol, PrometheusExporterOptions as CorePrometheusExporterOptions,
244
- PrometheusExporterOptionsBuilder, TelemetryOptions as CoreTelemetryOptions,
245
- TelemetryOptionsBuilder,
246
- },
247
- telemetry::CoreLogStreamConsumer,
244
+ use temporalio_common::telemetry::{
245
+ HistogramBucketOverrides, Logger as CoreTelemetryLogger, MetricTemporality,
246
+ OtelCollectorOptions as CoreOtelCollectorOptions, OtelCollectorOptionsBuilder,
247
+ OtlpProtocol, PrometheusExporterOptions as CorePrometheusExporterOptions,
248
+ PrometheusExporterOptionsBuilder, TelemetryOptions as CoreTelemetryOptions,
249
+ TelemetryOptionsBuilder,
248
250
  };
251
+ use temporalio_sdk_core::{Url, telemetry::CoreLogStreamConsumer};
249
252
 
250
253
  use bridge_macros::TryFromJs;
251
254
 
@@ -264,6 +267,7 @@ mod config {
264
267
  log_exporter: LogExporterOptions,
265
268
  telemetry: TelemetryOptions,
266
269
  metrics_exporter: Option<MetricsExporterOptions>,
270
+ worker_heartbeat_interval_millis: Option<u64>,
267
271
  }
268
272
 
269
273
  #[derive(Debug, Clone, TryFromJs)]
@@ -320,6 +324,7 @@ mod config {
320
324
  CoreTelemetryOptions,
321
325
  Option<super::BridgeMetricsExporter>,
322
326
  super::BridgeLogExporter,
327
+ Option<u64>,
323
328
  )> for RuntimeOptions
324
329
  {
325
330
  type Error = BridgeError;
@@ -329,8 +334,16 @@ mod config {
329
334
  CoreTelemetryOptions,
330
335
  Option<super::BridgeMetricsExporter>,
331
336
  super::BridgeLogExporter,
337
+ Option<u64>,
332
338
  )> {
333
- let (telemetry_logger, log_exporter) = match self.log_exporter {
339
+ let Self {
340
+ log_exporter,
341
+ telemetry,
342
+ metrics_exporter,
343
+ worker_heartbeat_interval_millis,
344
+ } = self;
345
+
346
+ let (telemetry_logger, log_exporter) = match log_exporter {
334
347
  LogExporterOptions::Console { filter } => (
335
348
  CoreTelemetryLogger::Console { filter },
336
349
  BridgeLogExporter::Console,
@@ -350,17 +363,21 @@ mod config {
350
363
  let mut telemetry_options = TelemetryOptionsBuilder::default();
351
364
  let telemetry_options = telemetry_options
352
365
  .logging(telemetry_logger)
353
- .metric_prefix(self.telemetry.metric_prefix)
354
- .attach_service_name(self.telemetry.attach_service_name)
366
+ .metric_prefix(telemetry.metric_prefix)
367
+ .attach_service_name(telemetry.attach_service_name)
355
368
  .build()
356
369
  .context("Failed to build telemetry options")?;
357
370
 
358
- let metrics_exporter = self
359
- .metrics_exporter
371
+ let metrics_exporter = metrics_exporter
360
372
  .map(std::convert::TryInto::try_into)
361
373
  .transpose()?;
362
374
 
363
- Ok((telemetry_options, metrics_exporter, log_exporter))
375
+ Ok((
376
+ telemetry_options,
377
+ metrics_exporter,
378
+ log_exporter,
379
+ worker_heartbeat_interval_millis,
380
+ ))
364
381
  }
365
382
  }
366
383
 
package/src/testing.rs CHANGED
@@ -4,13 +4,13 @@ use std::{process::Stdio, sync::Arc};
4
4
  use anyhow::Context as _;
5
5
  use neon::prelude::*;
6
6
 
7
- use temporal_sdk_core::ephemeral_server::{
7
+ use temporalio_sdk_core::ephemeral_server::{
8
8
  EphemeralServer as CoreEphemeralServer, TemporalDevServerConfig as CoreTemporalDevServerConfig,
9
9
  TestServerConfig as CoreTestServerConfig,
10
10
  };
11
11
 
12
12
  use bridge_macros::js_function;
13
- use temporal_sdk_core::CoreRuntime;
13
+ use temporalio_sdk_core::CoreRuntime;
14
14
 
15
15
  use crate::helpers::*;
16
16
  use crate::runtime::{Runtime, RuntimeExt as _};
@@ -191,7 +191,7 @@ mod config {
191
191
 
192
192
  use anyhow::Context as _;
193
193
 
194
- use temporal_sdk_core::ephemeral_server::{
194
+ use temporalio_sdk_core::ephemeral_server::{
195
195
  EphemeralExe, EphemeralExeVersion, TemporalDevServerConfig as CoreTemporalDevServerConfig,
196
196
  TemporalDevServerConfigBuilder, TestServerConfig as CoreTestServerConfig,
197
197
  TestServerConfigBuilder,
package/src/worker.rs CHANGED
@@ -6,20 +6,19 @@ use prost::Message;
6
6
  use tokio::sync::mpsc::{Sender, channel};
7
7
  use tokio_stream::wrappers::ReceiverStream;
8
8
 
9
- use temporal_sdk_core::{
10
- CoreRuntime,
11
- api::{
12
- Worker as CoreWorkerTrait,
13
- errors::{CompleteActivityError, CompleteNexusError, CompleteWfError, PollError},
14
- },
15
- init_replay_worker, init_worker,
16
- protos::{
17
- coresdk::{
18
- ActivityHeartbeat, ActivityTaskCompletion, nexus::NexusTaskCompletion,
19
- workflow_completion::WorkflowActivationCompletion,
20
- },
21
- temporal::api::history::v1::History,
9
+ use temporalio_common::Worker as CoreWorkerTrait;
10
+ use temporalio_common::errors::{
11
+ CompleteActivityError, CompleteNexusError, CompleteWfError, PollError,
12
+ };
13
+ use temporalio_common::protos::{
14
+ coresdk::{
15
+ ActivityHeartbeat, ActivityTaskCompletion, nexus::NexusTaskCompletion,
16
+ workflow_completion::WorkflowActivationCompletion,
22
17
  },
18
+ temporal::api::history::v1::History,
19
+ };
20
+ use temporalio_sdk_core::{
21
+ CoreRuntime, init_replay_worker, init_worker,
23
22
  replay::{HistoryForReplay, ReplayWorkerInput},
24
23
  };
25
24
 
@@ -70,7 +69,7 @@ pub struct Worker {
70
69
  core_runtime: Arc<CoreRuntime>,
71
70
 
72
71
  // Arc so that we can send reference into async closures
73
- core_worker: Arc<temporal_sdk_core::Worker>,
72
+ core_worker: Arc<temporalio_sdk_core::Worker>,
74
73
  }
75
74
 
76
75
  /// Create a new worker.
@@ -167,6 +166,9 @@ pub fn worker_complete_workflow_activation(
167
166
  ),
168
167
  }
169
168
  }
169
+ CompleteWfError::WorkflowNotEnabled => {
170
+ BridgeError::UnexpectedError(err.to_string())
171
+ }
170
172
  })
171
173
  })
172
174
  }
@@ -226,6 +228,9 @@ pub fn worker_complete_activity_task(
226
228
  field: None,
227
229
  message: format!("Malformed Activity Completion: {reason:?}"),
228
230
  },
231
+ CompleteActivityError::ActivityNotEnabled => {
232
+ BridgeError::UnexpectedError(err.to_string())
233
+ }
229
234
  })
230
235
  })
231
236
  }
@@ -296,8 +301,8 @@ pub fn worker_complete_nexus_task(
296
301
  .complete_nexus_task(nexus_completion)
297
302
  .await
298
303
  .map_err(|err| match err {
299
- CompleteNexusError::NexusNotEnabled {} => {
300
- BridgeError::UnexpectedError(format!("{err}"))
304
+ CompleteNexusError::NexusNotEnabled => {
305
+ BridgeError::UnexpectedError(err.to_string())
301
306
  }
302
307
  CompleteNexusError::MalformedNexusCompletion { reason } => BridgeError::TypeError {
303
308
  field: None,
@@ -309,7 +314,7 @@ pub fn worker_complete_nexus_task(
309
314
 
310
315
  /// Request shutdown of the worker.
311
316
  /// Once complete Core will stop polling on new tasks and activations on worker's task queue.
312
- /// Caller should drain any pending tasks and activations and call worker_finalize_shutdown before breaking from
317
+ /// Caller should drain any pending tasks and activations and call `worker_finalize_shutdown` before breaking from
313
318
  /// the loop to ensure graceful shutdown.
314
319
  #[js_function]
315
320
  pub fn worker_initiate_shutdown(worker: OpaqueInboundHandle<Worker>) -> BridgeResult<()> {
@@ -464,18 +469,19 @@ impl MutableFinalize for HistoryForReplayTunnelHandle {}
464
469
  ////////////////////////////////////////////////////////////////////////////////////////////////////
465
470
 
466
471
  mod config {
472
+ use std::collections::HashSet;
467
473
  use std::{sync::Arc, time::Duration};
468
-
469
- use temporal_sdk_core::{
474
+ use temporalio_common::protos::temporal::api::enums::v1::VersioningBehavior as CoreVersioningBehavior;
475
+ use temporalio_common::protos::temporal::api::worker::v1::PluginInfo;
476
+ use temporalio_common::worker::{
477
+ ActivitySlotKind, LocalActivitySlotKind, NexusSlotKind,
478
+ PollerBehavior as CorePollerBehavior, SlotKind, WorkerConfig, WorkerConfigBuilder,
479
+ WorkerConfigBuilderError, WorkerDeploymentOptions as CoreWorkerDeploymentOptions,
480
+ WorkerDeploymentVersion as CoreWorkerDeploymentVersion, WorkflowSlotKind,
481
+ };
482
+ use temporalio_sdk_core::{
470
483
  ResourceBasedSlotsOptions, ResourceBasedSlotsOptionsBuilder, ResourceSlotOptions,
471
484
  SlotSupplierOptions as CoreSlotSupplierOptions, TunerHolder, TunerHolderOptionsBuilder,
472
- api::worker::{
473
- ActivitySlotKind, LocalActivitySlotKind, NexusSlotKind,
474
- PollerBehavior as CorePollerBehavior, SlotKind, WorkerConfig, WorkerConfigBuilder,
475
- WorkerConfigBuilderError, WorkerDeploymentOptions as CoreWorkerDeploymentOptions,
476
- WorkerDeploymentVersion as CoreWorkerDeploymentVersion, WorkflowSlotKind,
477
- },
478
- protos::temporal::api::enums::v1::VersioningBehavior as CoreVersioningBehavior,
479
485
  };
480
486
 
481
487
  use super::custom_slot_supplier::CustomSlotSupplierOptions;
@@ -485,7 +491,7 @@ mod config {
485
491
  use neon::object::Object;
486
492
  use neon::prelude::JsResult;
487
493
  use neon::types::JsObject;
488
- use temporal_sdk_core::api::worker::WorkerVersioningStrategy;
494
+ use temporalio_common::worker::WorkerVersioningStrategy;
489
495
 
490
496
  #[derive(TryFromJs)]
491
497
  pub struct BridgeWorkerOptions {
@@ -500,7 +506,7 @@ mod config {
500
506
  workflow_task_poller_behavior: PollerBehavior,
501
507
  activity_task_poller_behavior: PollerBehavior,
502
508
  nexus_task_poller_behavior: PollerBehavior,
503
- enable_non_local_activities: bool,
509
+ task_types: WorkerTaskTypes,
504
510
  sticky_queue_schedule_to_start_timeout: Duration,
505
511
  max_cached_workflows: usize,
506
512
  max_heartbeat_throttle_interval: Duration,
@@ -508,6 +514,7 @@ mod config {
508
514
  max_activities_per_second: Option<f64>,
509
515
  max_task_queue_activities_per_second: Option<f64>,
510
516
  shutdown_grace_time: Option<Duration>,
517
+ plugins: Vec<String>,
511
518
  }
512
519
 
513
520
  #[derive(TryFromJs)]
@@ -541,6 +548,26 @@ mod config {
541
548
  AutoUpgrade,
542
549
  }
543
550
 
551
+ #[derive(TryFromJs)]
552
+ #[allow(clippy::struct_excessive_bools)]
553
+ pub struct WorkerTaskTypes {
554
+ enable_workflows: bool,
555
+ enable_local_activities: bool,
556
+ enable_remote_activities: bool,
557
+ enable_nexus: bool,
558
+ }
559
+
560
+ impl From<&WorkerTaskTypes> for temporalio_common::worker::WorkerTaskTypes {
561
+ fn from(t: &WorkerTaskTypes) -> Self {
562
+ Self {
563
+ enable_workflows: t.enable_workflows,
564
+ enable_local_activities: t.enable_local_activities,
565
+ enable_remote_activities: t.enable_remote_activities,
566
+ enable_nexus: t.enable_nexus,
567
+ }
568
+ }
569
+ }
570
+
544
571
  impl BridgeWorkerOptions {
545
572
  pub(crate) fn into_core_config(self) -> Result<WorkerConfig, WorkerConfigBuilderError> {
546
573
  // Set all other options
@@ -567,7 +594,7 @@ mod config {
567
594
  .workflow_task_poller_behavior(self.workflow_task_poller_behavior)
568
595
  .activity_task_poller_behavior(self.activity_task_poller_behavior)
569
596
  .nexus_task_poller_behavior(self.nexus_task_poller_behavior)
570
- .no_remote_activities(!self.enable_non_local_activities)
597
+ .task_types(&self.task_types)
571
598
  .sticky_queue_schedule_to_start_timeout(self.sticky_queue_schedule_to_start_timeout)
572
599
  .max_cached_workflows(self.max_cached_workflows)
573
600
  .max_heartbeat_throttle_interval(self.max_heartbeat_throttle_interval)
@@ -575,6 +602,15 @@ mod config {
575
602
  .max_task_queue_activities_per_second(self.max_task_queue_activities_per_second)
576
603
  .max_worker_activities_per_second(self.max_activities_per_second)
577
604
  .graceful_shutdown_period(self.shutdown_grace_time)
605
+ .plugins(
606
+ self.plugins
607
+ .into_iter()
608
+ .map(|name| PluginInfo {
609
+ name,
610
+ version: String::new(),
611
+ })
612
+ .collect::<HashSet<_>>(),
613
+ )
578
614
  .build()
579
615
  }
580
616
  }
@@ -749,16 +785,14 @@ mod custom_slot_supplier {
749
785
 
750
786
  use neon::{context::Context, handle::Handle, prelude::*};
751
787
 
752
- use temporal_sdk_core::{
753
- SlotSupplierOptions as CoreSlotSupplierOptions,
754
- api::worker::{
755
- SlotInfo as CoreSlotInfo, SlotInfoTrait as _, SlotKind,
756
- SlotKindType as CoreSlotKindType, SlotMarkUsedContext as CoreSlotMarkUsedContext,
757
- SlotReleaseContext as CoreSlotReleaseContext,
758
- SlotReservationContext as CoreSlotReservationContext, SlotSupplier as CoreSlotSupplier,
759
- SlotSupplierPermit as CoreSlotSupplierPermit,
760
- },
788
+ use temporalio_common::worker::{
789
+ SlotInfo as CoreSlotInfo, SlotInfoTrait as _, SlotKind, SlotKindType as CoreSlotKindType,
790
+ SlotMarkUsedContext as CoreSlotMarkUsedContext,
791
+ SlotReleaseContext as CoreSlotReleaseContext,
792
+ SlotReservationContext as CoreSlotReservationContext, SlotSupplier as CoreSlotSupplier,
793
+ SlotSupplierPermit as CoreSlotSupplierPermit,
761
794
  };
795
+ use temporalio_sdk_core::SlotSupplierOptions as CoreSlotSupplierOptions;
762
796
 
763
797
  use bridge_macros::{TryFromJs, TryIntoJs};
764
798
  use tracing::warn;
@@ -817,7 +851,6 @@ mod custom_slot_supplier {
817
851
  Err(err) => {
818
852
  warn!("Error reserving slot: {err:?}");
819
853
  tokio::time::sleep(std::time::Duration::from_millis(1000)).await;
820
- continue;
821
854
  }
822
855
  }
823
856
  }
@@ -941,18 +974,18 @@ mod custom_slot_supplier {
941
974
  fn from(info: &'a CoreSlotInfo<'a>) -> Self {
942
975
  match info {
943
976
  CoreSlotInfo::Workflow(info) => Self::Workflow {
944
- workflow_type: info.workflow_type.to_string(),
977
+ workflow_type: info.workflow_type.clone(),
945
978
  is_sticky: info.is_sticky,
946
979
  },
947
980
  CoreSlotInfo::Activity(info) => Self::Activity {
948
- activity_type: info.activity_type.to_string(),
981
+ activity_type: info.activity_type.clone(),
949
982
  },
950
983
  CoreSlotInfo::LocalActivity(info) => Self::LocalActivity {
951
- activity_type: info.activity_type.to_string(),
984
+ activity_type: info.activity_type.clone(),
952
985
  },
953
986
  CoreSlotInfo::Nexus(info) => Self::Nexus {
954
- service: info.service.to_string(),
955
- operation: info.operation.to_string(),
987
+ service: info.service.clone(),
988
+ operation: info.operation.clone(),
956
989
  },
957
990
  }
958
991
  }
package/ts/native.ts CHANGED
@@ -40,7 +40,7 @@ export type JsonString<_T> = string;
40
40
  // Runtime
41
41
  ////////////////////////////////////////////////////////////////////////////////////////////////////
42
42
 
43
- export declare function newRuntime(telemOptions: RuntimeOptions): Runtime;
43
+ export declare function newRuntime(runtimeOptions: RuntimeOptions): Runtime;
44
44
 
45
45
  export declare function runtimeShutdown(runtime: Runtime): void;
46
46
 
@@ -52,6 +52,7 @@ export type RuntimeOptions = {
52
52
  logExporter: LogExporterOptions;
53
53
  telemetry: TelemetryOptions;
54
54
  metricsExporter: MetricExporterOptions;
55
+ workerHeartbeatIntervalMillis: Option<number>;
55
56
  };
56
57
 
57
58
  export type TelemetryOptions = {
@@ -100,7 +101,7 @@ export interface OtelMetricsExporterOptions {
100
101
 
101
102
  export declare function newClient(runtime: Runtime, clientOptions: ClientOptions): Promise<Client>;
102
103
 
103
- export declare function clientUpdateHeaders(client: Client, headers: Record<string, string>): void;
104
+ export declare function clientUpdateHeaders(client: Client, headers: Record<string, MetadataValue>): void;
104
105
 
105
106
  export declare function clientUpdateApiKey(client: Client, apiKey: string): void;
106
107
 
@@ -122,20 +123,20 @@ export interface ClientOptions {
122
123
  targetUrl: string;
123
124
  clientName: string;
124
125
  clientVersion: string;
125
- tls: Option<TLSConfig>;
126
+ tls: Option<TlsOptions>;
126
127
  httpConnectProxy: Option<HttpConnectProxy>;
127
- headers: Option<Record<string, string>>;
128
+ headers: Option<Record<string, MetadataValue>>;
128
129
  apiKey: Option<string>;
129
130
  disableErrorCodeMetricTags: boolean;
130
131
  }
131
132
 
132
- export interface TLSConfig {
133
+ export interface TlsOptions {
133
134
  domain: Option<string>;
134
135
  serverRootCaCert: Option<Buffer>;
135
- clientTlsConfig: Option<TlsConfigClientCertPair>;
136
+ clientTlsOptions: Option<TlsOptionsClientCertPair>;
136
137
  }
137
138
 
138
- export interface TlsConfigClientCertPair {
139
+ export interface TlsOptionsClientCertPair {
139
140
  clientCert: Buffer;
140
141
  clientPrivateKey: Buffer;
141
142
  }
@@ -157,7 +158,7 @@ export interface RpcCall {
157
158
  rpc: string;
158
159
  req: Buffer;
159
160
  retry: boolean;
160
- metadata: Record<string, string>;
161
+ metadata: Record<string, MetadataValue>;
161
162
  timeout: Option<number>;
162
163
  }
163
164
 
@@ -191,6 +192,16 @@ export interface Worker {
191
192
  type: 'worker';
192
193
  }
193
194
 
195
+ export type MetadataValue =
196
+ | {
197
+ type: 'ascii';
198
+ value: string;
199
+ }
200
+ | {
201
+ type: 'binary';
202
+ value: Buffer;
203
+ };
204
+
194
205
  export interface WorkerOptions {
195
206
  identity: string;
196
207
  buildId: string;
@@ -203,7 +214,12 @@ export interface WorkerOptions {
203
214
  workflowTaskPollerBehavior: PollerBehavior;
204
215
  activityTaskPollerBehavior: PollerBehavior;
205
216
  nexusTaskPollerBehavior: PollerBehavior;
206
- enableNonLocalActivities: boolean;
217
+ taskTypes: {
218
+ enableWorkflows: boolean;
219
+ enableLocalActivities: boolean;
220
+ enableRemoteActivities: boolean;
221
+ enableNexus: boolean;
222
+ };
207
223
  stickyQueueScheduleToStartTimeout: number;
208
224
  maxCachedWorkflows: number;
209
225
  maxHeartbeatThrottleInterval: number;
@@ -211,6 +227,7 @@ export interface WorkerOptions {
211
227
  maxTaskQueueActivitiesPerSecond: Option<number>;
212
228
  maxActivitiesPerSecond: Option<number>;
213
229
  shutdownGraceTime: number;
230
+ plugins: string[];
214
231
  }
215
232
 
216
233
  export type PollerBehavior =
package/LICENSE.md DELETED
@@ -1,23 +0,0 @@
1
- Temporal TypeScript SDK
2
-
3
- MIT License
4
-
5
- Copyright (c) 2021 Temporal Technologies Inc. All Rights Reserved
6
-
7
- Permission is hereby granted, free of charge, to any person obtaining a copy
8
- of this software and associated documentation files (the "Software"), to deal
9
- in the Software without restriction, including without limitation the rights
10
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
- copies of the Software, and to permit persons to whom the Software is
12
- furnished to do so, subject to the following conditions:
13
-
14
- The above copyright notice and this permission notice shall be included in all
15
- copies or substantial portions of the Software.
16
-
17
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
- SOFTWARE.