temporalio 0.1.1 → 0.3.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 (628) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -0
  3. data/Cargo.lock +4324 -0
  4. data/Cargo.toml +25 -0
  5. data/Gemfile +20 -0
  6. data/LICENSE +16 -15
  7. data/README.md +985 -183
  8. data/Rakefile +101 -0
  9. data/ext/Cargo.toml +26 -0
  10. data/lib/temporalio/activity/complete_async_error.rb +11 -0
  11. data/lib/temporalio/activity/context.rb +86 -78
  12. data/lib/temporalio/activity/definition.rb +175 -0
  13. data/lib/temporalio/activity/info.rb +44 -47
  14. data/lib/temporalio/activity.rb +8 -81
  15. data/lib/temporalio/api/activity/v1/message.rb +25 -0
  16. data/lib/temporalio/api/batch/v1/message.rb +31 -0
  17. data/lib/temporalio/api/cloud/account/v1/message.rb +28 -0
  18. data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +126 -0
  19. data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +25 -0
  20. data/lib/temporalio/api/cloud/cloudservice.rb +3 -0
  21. data/lib/temporalio/api/cloud/identity/v1/message.rb +41 -0
  22. data/lib/temporalio/api/cloud/namespace/v1/message.rb +42 -0
  23. data/lib/temporalio/api/cloud/nexus/v1/message.rb +31 -0
  24. data/lib/temporalio/api/cloud/operation/v1/message.rb +28 -0
  25. data/lib/temporalio/api/cloud/region/v1/message.rb +24 -0
  26. data/lib/temporalio/api/cloud/resource/v1/message.rb +23 -0
  27. data/lib/temporalio/api/cloud/sink/v1/message.rb +24 -0
  28. data/lib/temporalio/api/cloud/usage/v1/message.rb +31 -0
  29. data/lib/temporalio/api/command/v1/message.rb +46 -0
  30. data/lib/temporalio/api/common/v1/grpc_status.rb +23 -0
  31. data/lib/temporalio/api/common/v1/message.rb +47 -0
  32. data/lib/temporalio/api/enums/v1/batch_operation.rb +22 -0
  33. data/lib/temporalio/api/enums/v1/command_type.rb +21 -0
  34. data/lib/temporalio/api/enums/v1/common.rb +26 -0
  35. data/lib/temporalio/api/enums/v1/event_type.rb +21 -0
  36. data/lib/temporalio/api/enums/v1/failed_cause.rb +26 -0
  37. data/lib/temporalio/api/enums/v1/namespace.rb +23 -0
  38. data/lib/temporalio/api/enums/v1/query.rb +22 -0
  39. data/lib/temporalio/api/enums/v1/reset.rb +23 -0
  40. data/lib/temporalio/api/enums/v1/schedule.rb +21 -0
  41. data/lib/temporalio/api/enums/v1/task_queue.rb +25 -0
  42. data/lib/temporalio/api/enums/v1/update.rb +22 -0
  43. data/lib/temporalio/api/enums/v1/workflow.rb +30 -0
  44. data/lib/temporalio/api/errordetails/v1/message.rb +42 -0
  45. data/lib/temporalio/api/export/v1/message.rb +24 -0
  46. data/lib/temporalio/api/failure/v1/message.rb +35 -0
  47. data/lib/temporalio/api/filter/v1/message.rb +27 -0
  48. data/lib/temporalio/api/history/v1/message.rb +90 -0
  49. data/lib/temporalio/api/namespace/v1/message.rb +31 -0
  50. data/lib/temporalio/api/nexus/v1/message.rb +40 -0
  51. data/lib/temporalio/api/operatorservice/v1/request_response.rb +49 -0
  52. data/lib/temporalio/api/operatorservice/v1/service.rb +23 -0
  53. data/lib/temporalio/api/operatorservice.rb +3 -0
  54. data/lib/temporalio/api/payload_visitor.rb +1513 -0
  55. data/lib/temporalio/api/protocol/v1/message.rb +23 -0
  56. data/lib/temporalio/api/query/v1/message.rb +27 -0
  57. data/lib/temporalio/api/replication/v1/message.rb +26 -0
  58. data/lib/temporalio/api/schedule/v1/message.rb +43 -0
  59. data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +25 -0
  60. data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +21 -0
  61. data/lib/temporalio/api/sdk/v1/user_metadata.rb +23 -0
  62. data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +23 -0
  63. data/lib/temporalio/api/taskqueue/v1/message.rb +45 -0
  64. data/lib/{gen/temporal/api/testservice/v1/request_response_pb.rb → temporalio/api/testservice/v1/request_response.rb} +6 -24
  65. data/lib/temporalio/api/testservice/v1/service.rb +23 -0
  66. data/lib/temporalio/api/update/v1/message.rb +33 -0
  67. data/lib/temporalio/api/version/v1/message.rb +26 -0
  68. data/lib/temporalio/api/workflow/v1/message.rb +43 -0
  69. data/lib/temporalio/api/workflowservice/v1/request_response.rb +204 -0
  70. data/lib/temporalio/api/workflowservice/v1/service.rb +23 -0
  71. data/lib/temporalio/api/workflowservice.rb +3 -0
  72. data/lib/temporalio/api.rb +14 -0
  73. data/lib/temporalio/cancellation.rb +170 -0
  74. data/lib/temporalio/client/activity_id_reference.rb +32 -0
  75. data/lib/temporalio/client/async_activity_handle.rb +85 -0
  76. data/lib/temporalio/client/connection/cloud_service.rb +726 -0
  77. data/lib/temporalio/client/connection/operator_service.rb +201 -0
  78. data/lib/temporalio/client/connection/service.rb +42 -0
  79. data/lib/temporalio/client/connection/test_service.rb +111 -0
  80. data/lib/temporalio/client/connection/workflow_service.rb +1041 -0
  81. data/lib/temporalio/client/connection.rb +316 -0
  82. data/lib/temporalio/client/interceptor.rb +416 -0
  83. data/lib/temporalio/client/schedule.rb +967 -0
  84. data/lib/temporalio/client/schedule_handle.rb +126 -0
  85. data/lib/temporalio/client/workflow_execution.rb +100 -0
  86. data/lib/temporalio/client/workflow_execution_count.rb +36 -0
  87. data/lib/temporalio/client/workflow_execution_status.rb +18 -0
  88. data/lib/temporalio/client/workflow_handle.rb +326 -180
  89. data/lib/temporalio/client/workflow_query_reject_condition.rb +14 -0
  90. data/lib/temporalio/client/workflow_update_handle.rb +65 -0
  91. data/lib/temporalio/client/workflow_update_wait_stage.rb +17 -0
  92. data/lib/temporalio/client.rb +447 -94
  93. data/lib/temporalio/common_enums.rb +41 -0
  94. data/lib/temporalio/converters/data_converter.rb +99 -0
  95. data/lib/temporalio/converters/failure_converter.rb +202 -0
  96. data/lib/temporalio/converters/payload_codec.rb +26 -0
  97. data/lib/temporalio/converters/payload_converter/binary_null.rb +34 -0
  98. data/lib/temporalio/converters/payload_converter/binary_plain.rb +35 -0
  99. data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +42 -0
  100. data/lib/temporalio/converters/payload_converter/composite.rb +66 -0
  101. data/lib/temporalio/converters/payload_converter/encoding.rb +35 -0
  102. data/lib/temporalio/converters/payload_converter/json_plain.rb +44 -0
  103. data/lib/temporalio/converters/payload_converter/json_protobuf.rb +41 -0
  104. data/lib/temporalio/converters/payload_converter.rb +71 -0
  105. data/lib/temporalio/converters/raw_value.rb +20 -0
  106. data/lib/temporalio/converters.rb +9 -0
  107. data/lib/temporalio/error/failure.rb +119 -94
  108. data/lib/temporalio/error.rb +155 -0
  109. data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +34 -0
  110. data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +31 -0
  111. data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +33 -0
  112. data/lib/temporalio/internal/bridge/api/common/common.rb +26 -0
  113. data/lib/temporalio/internal/bridge/api/core_interface.rb +40 -0
  114. data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +27 -0
  115. data/lib/temporalio/internal/bridge/api/nexus/nexus.rb +33 -0
  116. data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +56 -0
  117. data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +57 -0
  118. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +30 -0
  119. data/lib/temporalio/internal/bridge/api.rb +3 -0
  120. data/lib/temporalio/internal/bridge/client.rb +95 -0
  121. data/lib/temporalio/internal/bridge/runtime.rb +53 -0
  122. data/lib/temporalio/internal/bridge/testing.rb +66 -0
  123. data/lib/temporalio/internal/bridge/worker.rb +85 -0
  124. data/lib/temporalio/internal/bridge.rb +36 -0
  125. data/lib/temporalio/internal/client/implementation.rb +700 -0
  126. data/lib/temporalio/internal/metric.rb +122 -0
  127. data/lib/temporalio/internal/proto_utils.rb +133 -0
  128. data/lib/temporalio/internal/worker/activity_worker.rb +373 -0
  129. data/lib/temporalio/internal/worker/multi_runner.rb +213 -0
  130. data/lib/temporalio/internal/worker/workflow_instance/child_workflow_handle.rb +54 -0
  131. data/lib/temporalio/internal/worker/workflow_instance/context.rb +329 -0
  132. data/lib/temporalio/internal/worker/workflow_instance/details.rb +44 -0
  133. data/lib/temporalio/internal/worker/workflow_instance/external_workflow_handle.rb +32 -0
  134. data/lib/temporalio/internal/worker/workflow_instance/externally_immutable_hash.rb +22 -0
  135. data/lib/temporalio/internal/worker/workflow_instance/handler_execution.rb +25 -0
  136. data/lib/temporalio/internal/worker/workflow_instance/handler_hash.rb +41 -0
  137. data/lib/temporalio/internal/worker/workflow_instance/illegal_call_tracer.rb +97 -0
  138. data/lib/temporalio/internal/worker/workflow_instance/inbound_implementation.rb +62 -0
  139. data/lib/temporalio/internal/worker/workflow_instance/outbound_implementation.rb +415 -0
  140. data/lib/temporalio/internal/worker/workflow_instance/replay_safe_logger.rb +37 -0
  141. data/lib/temporalio/internal/worker/workflow_instance/replay_safe_metric.rb +40 -0
  142. data/lib/temporalio/internal/worker/workflow_instance/scheduler.rb +163 -0
  143. data/lib/temporalio/internal/worker/workflow_instance.rb +730 -0
  144. data/lib/temporalio/internal/worker/workflow_worker.rb +196 -0
  145. data/lib/temporalio/internal.rb +7 -0
  146. data/lib/temporalio/metric.rb +109 -0
  147. data/lib/temporalio/retry_policy.rb +55 -73
  148. data/lib/temporalio/runtime.rb +302 -13
  149. data/lib/temporalio/scoped_logger.rb +96 -0
  150. data/lib/temporalio/search_attributes.rb +343 -0
  151. data/lib/temporalio/testing/activity_environment.rb +132 -0
  152. data/lib/temporalio/testing/workflow_environment.rb +345 -74
  153. data/lib/temporalio/testing.rb +4 -169
  154. data/lib/temporalio/version.rb +3 -1
  155. data/lib/temporalio/worker/activity_executor/fiber.rb +49 -0
  156. data/lib/temporalio/worker/activity_executor/thread_pool.rb +46 -0
  157. data/lib/temporalio/worker/activity_executor.rb +55 -0
  158. data/lib/temporalio/worker/interceptor.rb +362 -0
  159. data/lib/temporalio/worker/thread_pool.rb +237 -0
  160. data/lib/temporalio/worker/tuner.rb +151 -0
  161. data/lib/temporalio/worker/workflow_executor/thread_pool.rb +230 -0
  162. data/lib/temporalio/worker/workflow_executor.rb +26 -0
  163. data/lib/temporalio/worker.rb +554 -161
  164. data/lib/temporalio/workflow/activity_cancellation_type.rb +20 -0
  165. data/lib/temporalio/workflow/child_workflow_cancellation_type.rb +21 -0
  166. data/lib/temporalio/workflow/child_workflow_handle.rb +43 -0
  167. data/lib/temporalio/workflow/definition.rb +566 -0
  168. data/lib/temporalio/workflow/external_workflow_handle.rb +41 -0
  169. data/lib/temporalio/workflow/future.rb +117 -104
  170. data/lib/temporalio/workflow/handler_unfinished_policy.rb +13 -0
  171. data/lib/temporalio/workflow/info.rb +63 -57
  172. data/lib/temporalio/workflow/parent_close_policy.rb +19 -0
  173. data/lib/temporalio/workflow/update_info.rb +20 -0
  174. data/lib/temporalio/workflow.rb +523 -0
  175. data/lib/temporalio/workflow_history.rb +22 -0
  176. data/lib/temporalio.rb +6 -7
  177. data/temporalio.gemspec +20 -39
  178. metadata +171 -710
  179. data/bridge/Cargo.lock +0 -2997
  180. data/bridge/Cargo.toml +0 -29
  181. data/bridge/sdk-core/ARCHITECTURE.md +0 -76
  182. data/bridge/sdk-core/Cargo.toml +0 -2
  183. data/bridge/sdk-core/LICENSE.txt +0 -23
  184. data/bridge/sdk-core/README.md +0 -117
  185. data/bridge/sdk-core/arch_docs/diagrams/README.md +0 -10
  186. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +0 -40
  187. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
  188. data/bridge/sdk-core/arch_docs/sticky_queues.md +0 -51
  189. data/bridge/sdk-core/client/Cargo.toml +0 -40
  190. data/bridge/sdk-core/client/LICENSE.txt +0 -23
  191. data/bridge/sdk-core/client/src/lib.rs +0 -1462
  192. data/bridge/sdk-core/client/src/metrics.rs +0 -174
  193. data/bridge/sdk-core/client/src/raw.rs +0 -932
  194. data/bridge/sdk-core/client/src/retry.rs +0 -763
  195. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +0 -185
  196. data/bridge/sdk-core/core/Cargo.toml +0 -129
  197. data/bridge/sdk-core/core/LICENSE.txt +0 -23
  198. data/bridge/sdk-core/core/benches/workflow_replay.rs +0 -76
  199. data/bridge/sdk-core/core/src/abstractions.rs +0 -355
  200. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +0 -1049
  201. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +0 -221
  202. data/bridge/sdk-core/core/src/core_tests/determinism.rs +0 -270
  203. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +0 -1046
  204. data/bridge/sdk-core/core/src/core_tests/mod.rs +0 -100
  205. data/bridge/sdk-core/core/src/core_tests/queries.rs +0 -893
  206. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +0 -65
  207. data/bridge/sdk-core/core/src/core_tests/workers.rs +0 -257
  208. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +0 -124
  209. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +0 -2433
  210. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +0 -609
  211. data/bridge/sdk-core/core/src/internal_flags.rs +0 -136
  212. data/bridge/sdk-core/core/src/lib.rs +0 -289
  213. data/bridge/sdk-core/core/src/pollers/mod.rs +0 -54
  214. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +0 -297
  215. data/bridge/sdk-core/core/src/protosext/mod.rs +0 -428
  216. data/bridge/sdk-core/core/src/replay/mod.rs +0 -215
  217. data/bridge/sdk-core/core/src/retry_logic.rs +0 -202
  218. data/bridge/sdk-core/core/src/telemetry/log_export.rs +0 -190
  219. data/bridge/sdk-core/core/src/telemetry/metrics.rs +0 -462
  220. data/bridge/sdk-core/core/src/telemetry/mod.rs +0 -423
  221. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +0 -83
  222. data/bridge/sdk-core/core/src/test_help/mod.rs +0 -939
  223. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +0 -536
  224. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +0 -89
  225. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +0 -1278
  226. data/bridge/sdk-core/core/src/worker/activities.rs +0 -557
  227. data/bridge/sdk-core/core/src/worker/client/mocks.rs +0 -107
  228. data/bridge/sdk-core/core/src/worker/client.rs +0 -389
  229. data/bridge/sdk-core/core/src/worker/mod.rs +0 -677
  230. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +0 -35
  231. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +0 -99
  232. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +0 -1111
  233. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +0 -964
  234. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +0 -294
  235. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -168
  236. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +0 -918
  237. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +0 -137
  238. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +0 -158
  239. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +0 -130
  240. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +0 -1525
  241. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +0 -324
  242. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +0 -179
  243. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -659
  244. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +0 -439
  245. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +0 -435
  246. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +0 -175
  247. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +0 -249
  248. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +0 -85
  249. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +0 -1280
  250. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +0 -269
  251. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +0 -213
  252. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +0 -1305
  253. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +0 -1276
  254. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +0 -128
  255. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +0 -125
  256. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +0 -85
  257. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +0 -117
  258. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +0 -24
  259. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +0 -715
  260. data/bridge/sdk-core/core-api/Cargo.toml +0 -33
  261. data/bridge/sdk-core/core-api/LICENSE.txt +0 -23
  262. data/bridge/sdk-core/core-api/src/errors.rs +0 -62
  263. data/bridge/sdk-core/core-api/src/lib.rs +0 -113
  264. data/bridge/sdk-core/core-api/src/telemetry.rs +0 -141
  265. data/bridge/sdk-core/core-api/src/worker.rs +0 -161
  266. data/bridge/sdk-core/etc/deps.svg +0 -162
  267. data/bridge/sdk-core/etc/dynamic-config.yaml +0 -2
  268. data/bridge/sdk-core/etc/otel-collector-config.yaml +0 -36
  269. data/bridge/sdk-core/etc/prometheus.yaml +0 -6
  270. data/bridge/sdk-core/etc/regen-depgraph.sh +0 -5
  271. data/bridge/sdk-core/fsm/Cargo.toml +0 -18
  272. data/bridge/sdk-core/fsm/LICENSE.txt +0 -23
  273. data/bridge/sdk-core/fsm/README.md +0 -3
  274. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
  275. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -23
  276. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +0 -650
  277. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
  278. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +0 -18
  279. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
  280. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +0 -41
  281. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +0 -14
  282. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +0 -11
  283. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +0 -32
  284. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +0 -31
  285. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +0 -46
  286. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +0 -29
  287. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -12
  288. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +0 -32
  289. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +0 -18
  290. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
  291. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +0 -11
  292. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
  293. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +0 -11
  294. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
  295. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
  296. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -23
  297. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +0 -254
  298. data/bridge/sdk-core/fsm/src/lib.rs +0 -2
  299. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  300. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  301. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  302. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  303. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  304. data/bridge/sdk-core/integ-with-otel.sh +0 -7
  305. data/bridge/sdk-core/protos/api_upstream/README.md +0 -9
  306. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +0 -40
  307. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -9
  308. data/bridge/sdk-core/protos/api_upstream/build/go.mod +0 -7
  309. data/bridge/sdk-core/protos/api_upstream/build/go.sum +0 -5
  310. data/bridge/sdk-core/protos/api_upstream/build/tools.go +0 -29
  311. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +0 -141
  312. data/bridge/sdk-core/protos/api_upstream/go.mod +0 -6
  313. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -89
  314. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +0 -248
  315. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +0 -123
  316. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -47
  317. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -52
  318. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -56
  319. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -170
  320. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -123
  321. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -51
  322. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -50
  323. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -41
  324. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -60
  325. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -59
  326. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -56
  327. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -122
  328. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -108
  329. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -114
  330. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -56
  331. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +0 -787
  332. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -99
  333. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -124
  334. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -80
  335. data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -57
  336. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +0 -61
  337. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -55
  338. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -379
  339. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -63
  340. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -108
  341. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +0 -111
  342. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +0 -59
  343. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -146
  344. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -1199
  345. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -415
  346. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +0 -63
  347. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -79
  348. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -80
  349. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -78
  350. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +0 -16
  351. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +0 -31
  352. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -31
  353. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -270
  354. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -305
  355. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -35
  356. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +0 -38
  357. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +0 -13
  358. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +0 -141
  359. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -63
  360. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -90
  361. data/bridge/sdk-core/rustfmt.toml +0 -1
  362. data/bridge/sdk-core/sdk/Cargo.toml +0 -48
  363. data/bridge/sdk-core/sdk/LICENSE.txt +0 -23
  364. data/bridge/sdk-core/sdk/src/activity_context.rs +0 -230
  365. data/bridge/sdk-core/sdk/src/app_data.rs +0 -37
  366. data/bridge/sdk-core/sdk/src/interceptors.rs +0 -50
  367. data/bridge/sdk-core/sdk/src/lib.rs +0 -861
  368. data/bridge/sdk-core/sdk/src/payload_converter.rs +0 -11
  369. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +0 -295
  370. data/bridge/sdk-core/sdk/src/workflow_context.rs +0 -694
  371. data/bridge/sdk-core/sdk/src/workflow_future.rs +0 -500
  372. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +0 -33
  373. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +0 -23
  374. data/bridge/sdk-core/sdk-core-protos/build.rs +0 -142
  375. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +0 -7
  376. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +0 -557
  377. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +0 -234
  378. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +0 -2088
  379. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +0 -48
  380. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +0 -14
  381. data/bridge/sdk-core/test-utils/Cargo.toml +0 -38
  382. data/bridge/sdk-core/test-utils/src/canned_histories.rs +0 -1389
  383. data/bridge/sdk-core/test-utils/src/histfetch.rs +0 -28
  384. data/bridge/sdk-core/test-utils/src/lib.rs +0 -709
  385. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +0 -50
  386. data/bridge/sdk-core/test-utils/src/workflows.rs +0 -29
  387. data/bridge/sdk-core/tests/fuzzy_workflow.rs +0 -130
  388. data/bridge/sdk-core/tests/heavy_tests.rs +0 -265
  389. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +0 -36
  390. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +0 -150
  391. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +0 -223
  392. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +0 -239
  393. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -90
  394. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +0 -314
  395. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +0 -151
  396. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +0 -902
  397. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
  398. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -60
  399. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -51
  400. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -51
  401. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -64
  402. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -47
  403. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -669
  404. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -54
  405. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -92
  406. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +0 -228
  407. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +0 -94
  408. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -171
  409. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +0 -85
  410. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -120
  411. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +0 -77
  412. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +0 -596
  413. data/bridge/sdk-core/tests/main.rs +0 -103
  414. data/bridge/sdk-core/tests/runner.rs +0 -132
  415. data/bridge/sdk-core/tests/wf_input_replay.rs +0 -32
  416. data/bridge/src/connection.rs +0 -202
  417. data/bridge/src/lib.rs +0 -494
  418. data/bridge/src/runtime.rs +0 -54
  419. data/bridge/src/test_server.rs +0 -153
  420. data/bridge/src/worker.rs +0 -197
  421. data/ext/Rakefile +0 -9
  422. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +0 -14
  423. data/lib/gen/temporal/api/batch/v1/message_pb.rb +0 -50
  424. data/lib/gen/temporal/api/command/v1/message_pb.rb +0 -160
  425. data/lib/gen/temporal/api/common/v1/message_pb.rb +0 -73
  426. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +0 -33
  427. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +0 -37
  428. data/lib/gen/temporal/api/enums/v1/common_pb.rb +0 -42
  429. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +0 -68
  430. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +0 -79
  431. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +0 -37
  432. data/lib/gen/temporal/api/enums/v1/query_pb.rb +0 -31
  433. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +0 -24
  434. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +0 -28
  435. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +0 -30
  436. data/lib/gen/temporal/api/enums/v1/update_pb.rb +0 -25
  437. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +0 -89
  438. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +0 -84
  439. data/lib/gen/temporal/api/failure/v1/message_pb.rb +0 -83
  440. data/lib/gen/temporal/api/filter/v1/message_pb.rb +0 -40
  441. data/lib/gen/temporal/api/history/v1/message_pb.rb +0 -498
  442. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +0 -64
  443. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +0 -88
  444. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +0 -20
  445. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +0 -30
  446. data/lib/gen/temporal/api/query/v1/message_pb.rb +0 -38
  447. data/lib/gen/temporal/api/replication/v1/message_pb.rb +0 -37
  448. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +0 -149
  449. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +0 -23
  450. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +0 -73
  451. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +0 -21
  452. data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -72
  453. data/lib/gen/temporal/api/version/v1/message_pb.rb +0 -41
  454. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +0 -111
  455. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +0 -798
  456. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +0 -20
  457. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +0 -62
  458. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +0 -61
  459. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +0 -61
  460. data/lib/gen/temporal/sdk/core/common/common_pb.rb +0 -26
  461. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +0 -40
  462. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +0 -31
  463. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +0 -171
  464. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +0 -200
  465. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +0 -41
  466. data/lib/temporalio/bridge/connect_options.rb +0 -15
  467. data/lib/temporalio/bridge/error.rb +0 -8
  468. data/lib/temporalio/bridge/retry_config.rb +0 -24
  469. data/lib/temporalio/bridge/tls_options.rb +0 -19
  470. data/lib/temporalio/bridge.rb +0 -14
  471. data/lib/temporalio/client/implementation.rb +0 -340
  472. data/lib/temporalio/connection/retry_config.rb +0 -44
  473. data/lib/temporalio/connection/service.rb +0 -20
  474. data/lib/temporalio/connection/test_service.rb +0 -92
  475. data/lib/temporalio/connection/tls_options.rb +0 -51
  476. data/lib/temporalio/connection/workflow_service.rb +0 -731
  477. data/lib/temporalio/connection.rb +0 -86
  478. data/lib/temporalio/data_converter.rb +0 -191
  479. data/lib/temporalio/error/workflow_failure.rb +0 -19
  480. data/lib/temporalio/errors.rb +0 -40
  481. data/lib/temporalio/failure_converter/base.rb +0 -26
  482. data/lib/temporalio/failure_converter/basic.rb +0 -319
  483. data/lib/temporalio/failure_converter.rb +0 -7
  484. data/lib/temporalio/interceptor/activity_inbound.rb +0 -22
  485. data/lib/temporalio/interceptor/activity_outbound.rb +0 -24
  486. data/lib/temporalio/interceptor/chain.rb +0 -28
  487. data/lib/temporalio/interceptor/client.rb +0 -127
  488. data/lib/temporalio/interceptor.rb +0 -22
  489. data/lib/temporalio/payload_codec/base.rb +0 -32
  490. data/lib/temporalio/payload_converter/base.rb +0 -24
  491. data/lib/temporalio/payload_converter/bytes.rb +0 -27
  492. data/lib/temporalio/payload_converter/composite.rb +0 -49
  493. data/lib/temporalio/payload_converter/encoding_base.rb +0 -35
  494. data/lib/temporalio/payload_converter/json.rb +0 -26
  495. data/lib/temporalio/payload_converter/nil.rb +0 -26
  496. data/lib/temporalio/payload_converter.rb +0 -14
  497. data/lib/temporalio/retry_state.rb +0 -35
  498. data/lib/temporalio/testing/time_skipping_handle.rb +0 -32
  499. data/lib/temporalio/testing/time_skipping_interceptor.rb +0 -23
  500. data/lib/temporalio/timeout_type.rb +0 -29
  501. data/lib/temporalio/worker/activity_runner.rb +0 -114
  502. data/lib/temporalio/worker/activity_worker.rb +0 -164
  503. data/lib/temporalio/worker/reactor.rb +0 -46
  504. data/lib/temporalio/worker/runner.rb +0 -63
  505. data/lib/temporalio/worker/sync_worker.rb +0 -124
  506. data/lib/temporalio/worker/thread_pool_executor.rb +0 -51
  507. data/lib/temporalio/workflow/async.rb +0 -46
  508. data/lib/temporalio/workflow/execution_info.rb +0 -54
  509. data/lib/temporalio/workflow/execution_status.rb +0 -36
  510. data/lib/temporalio/workflow/id_reuse_policy.rb +0 -36
  511. data/lib/temporalio/workflow/query_reject_condition.rb +0 -33
  512. data/lib/thermite_patch.rb +0 -33
  513. data/sig/async.rbs +0 -17
  514. data/sig/protobuf.rbs +0 -16
  515. data/sig/protos/dependencies/gogoproto/gogo.rbs +0 -914
  516. data/sig/protos/google/protobuf/any.rbs +0 -157
  517. data/sig/protos/google/protobuf/descriptor.rbs +0 -2825
  518. data/sig/protos/google/protobuf/duration.rbs +0 -114
  519. data/sig/protos/google/protobuf/empty.rbs +0 -36
  520. data/sig/protos/google/protobuf/timestamp.rbs +0 -145
  521. data/sig/protos/google/protobuf/wrappers.rbs +0 -358
  522. data/sig/protos/temporal/api/batch/v1/message.rbs +0 -300
  523. data/sig/protos/temporal/api/command/v1/message.rbs +0 -1399
  524. data/sig/protos/temporal/api/common/v1/message.rbs +0 -528
  525. data/sig/protos/temporal/api/enums/v1/batch_operation.rbs +0 -79
  526. data/sig/protos/temporal/api/enums/v1/command_type.rbs +0 -68
  527. data/sig/protos/temporal/api/enums/v1/common.rbs +0 -118
  528. data/sig/protos/temporal/api/enums/v1/event_type.rbs +0 -264
  529. data/sig/protos/temporal/api/enums/v1/failed_cause.rbs +0 -277
  530. data/sig/protos/temporal/api/enums/v1/namespace.rbs +0 -108
  531. data/sig/protos/temporal/api/enums/v1/query.rbs +0 -81
  532. data/sig/protos/temporal/api/enums/v1/reset.rbs +0 -44
  533. data/sig/protos/temporal/api/enums/v1/schedule.rbs +0 -72
  534. data/sig/protos/temporal/api/enums/v1/task_queue.rbs +0 -92
  535. data/sig/protos/temporal/api/enums/v1/update.rbs +0 -64
  536. data/sig/protos/temporal/api/enums/v1/workflow.rbs +0 -371
  537. data/sig/protos/temporal/api/errordetails/v1/message.rbs +0 -551
  538. data/sig/protos/temporal/api/failure/v1/message.rbs +0 -581
  539. data/sig/protos/temporal/api/filter/v1/message.rbs +0 -171
  540. data/sig/protos/temporal/api/history/v1/message.rbs +0 -4609
  541. data/sig/protos/temporal/api/namespace/v1/message.rbs +0 -410
  542. data/sig/protos/temporal/api/operatorservice/v1/request_response.rbs +0 -643
  543. data/sig/protos/temporal/api/operatorservice/v1/service.rbs +0 -17
  544. data/sig/protos/temporal/api/protocol/v1/message.rbs +0 -84
  545. data/sig/protos/temporal/api/query/v1/message.rbs +0 -182
  546. data/sig/protos/temporal/api/replication/v1/message.rbs +0 -148
  547. data/sig/protos/temporal/api/schedule/v1/message.rbs +0 -1488
  548. data/sig/protos/temporal/api/sdk/v1/task_complete_metadata.rbs +0 -110
  549. data/sig/protos/temporal/api/taskqueue/v1/message.rbs +0 -486
  550. data/sig/protos/temporal/api/testservice/v1/request_response.rbs +0 -249
  551. data/sig/protos/temporal/api/testservice/v1/service.rbs +0 -15
  552. data/sig/protos/temporal/api/update/v1/message.rbs +0 -489
  553. data/sig/protos/temporal/api/version/v1/message.rbs +0 -184
  554. data/sig/protos/temporal/api/workflow/v1/message.rbs +0 -824
  555. data/sig/protos/temporal/api/workflowservice/v1/request_response.rbs +0 -7250
  556. data/sig/protos/temporal/api/workflowservice/v1/service.rbs +0 -22
  557. data/sig/protos/temporal/sdk/core/activity_result/activity_result.rbs +0 -380
  558. data/sig/protos/temporal/sdk/core/activity_task/activity_task.rbs +0 -386
  559. data/sig/protos/temporal/sdk/core/child_workflow/child_workflow.rbs +0 -323
  560. data/sig/protos/temporal/sdk/core/common/common.rbs +0 -62
  561. data/sig/protos/temporal/sdk/core/core_interface.rbs +0 -101
  562. data/sig/protos/temporal/sdk/core/external_data/external_data.rbs +0 -119
  563. data/sig/protos/temporal/sdk/core/workflow_activation/workflow_activation.rbs +0 -1473
  564. data/sig/protos/temporal/sdk/core/workflow_commands/workflow_commands.rbs +0 -1784
  565. data/sig/protos/temporal/sdk/core/workflow_completion/workflow_completion.rbs +0 -180
  566. data/sig/ruby.rbs +0 -12
  567. data/sig/temporalio/activity/context.rbs +0 -29
  568. data/sig/temporalio/activity/info.rbs +0 -43
  569. data/sig/temporalio/activity.rbs +0 -19
  570. data/sig/temporalio/bridge/connect_options.rbs +0 -19
  571. data/sig/temporalio/bridge/error.rbs +0 -8
  572. data/sig/temporalio/bridge/retry_config.rbs +0 -21
  573. data/sig/temporalio/bridge/tls_options.rbs +0 -17
  574. data/sig/temporalio/bridge.rbs +0 -71
  575. data/sig/temporalio/client/implementation.rbs +0 -38
  576. data/sig/temporalio/client/workflow_handle.rbs +0 -41
  577. data/sig/temporalio/client.rbs +0 -35
  578. data/sig/temporalio/connection/retry_config.rbs +0 -37
  579. data/sig/temporalio/connection/service.rbs +0 -14
  580. data/sig/temporalio/connection/test_service.rbs +0 -13
  581. data/sig/temporalio/connection/tls_options.rbs +0 -43
  582. data/sig/temporalio/connection/workflow_service.rbs +0 -48
  583. data/sig/temporalio/connection.rbs +0 -30
  584. data/sig/temporalio/data_converter.rbs +0 -35
  585. data/sig/temporalio/error/failure.rbs +0 -121
  586. data/sig/temporalio/error/workflow_failure.rbs +0 -9
  587. data/sig/temporalio/errors.rbs +0 -36
  588. data/sig/temporalio/failure_converter/base.rbs +0 -12
  589. data/sig/temporalio/failure_converter/basic.rbs +0 -86
  590. data/sig/temporalio/failure_converter.rbs +0 -5
  591. data/sig/temporalio/interceptor/activity_inbound.rbs +0 -21
  592. data/sig/temporalio/interceptor/activity_outbound.rbs +0 -10
  593. data/sig/temporalio/interceptor/chain.rbs +0 -24
  594. data/sig/temporalio/interceptor/client.rbs +0 -148
  595. data/sig/temporalio/interceptor.rbs +0 -6
  596. data/sig/temporalio/payload_codec/base.rbs +0 -12
  597. data/sig/temporalio/payload_converter/base.rbs +0 -12
  598. data/sig/temporalio/payload_converter/bytes.rbs +0 -9
  599. data/sig/temporalio/payload_converter/composite.rbs +0 -19
  600. data/sig/temporalio/payload_converter/encoding_base.rbs +0 -14
  601. data/sig/temporalio/payload_converter/json.rbs +0 -9
  602. data/sig/temporalio/payload_converter/nil.rbs +0 -9
  603. data/sig/temporalio/payload_converter.rbs +0 -5
  604. data/sig/temporalio/retry_policy.rbs +0 -25
  605. data/sig/temporalio/retry_state.rbs +0 -20
  606. data/sig/temporalio/runtime.rbs +0 -12
  607. data/sig/temporalio/testing/time_skipping_handle.rbs +0 -15
  608. data/sig/temporalio/testing/time_skipping_interceptor.rbs +0 -13
  609. data/sig/temporalio/testing/workflow_environment.rbs +0 -22
  610. data/sig/temporalio/testing.rbs +0 -35
  611. data/sig/temporalio/timeout_type.rbs +0 -15
  612. data/sig/temporalio/version.rbs +0 -3
  613. data/sig/temporalio/worker/activity_runner.rbs +0 -35
  614. data/sig/temporalio/worker/activity_worker.rbs +0 -44
  615. data/sig/temporalio/worker/reactor.rbs +0 -22
  616. data/sig/temporalio/worker/runner.rbs +0 -21
  617. data/sig/temporalio/worker/sync_worker.rbs +0 -23
  618. data/sig/temporalio/worker/thread_pool_executor.rbs +0 -23
  619. data/sig/temporalio/worker.rbs +0 -46
  620. data/sig/temporalio/workflow/async.rbs +0 -9
  621. data/sig/temporalio/workflow/execution_info.rbs +0 -55
  622. data/sig/temporalio/workflow/execution_status.rbs +0 -21
  623. data/sig/temporalio/workflow/future.rbs +0 -40
  624. data/sig/temporalio/workflow/id_reuse_policy.rbs +0 -15
  625. data/sig/temporalio/workflow/info.rbs +0 -55
  626. data/sig/temporalio/workflow/query_reject_condition.rbs +0 -14
  627. data/sig/temporalio.rbs +0 -2
  628. data/sig/thermite_patch.rbs +0 -15
@@ -1,2088 +0,0 @@
1
- //! Contains the protobuf definitions used as arguments to and return values from interactions with
2
- //! the Temporal Core SDK. Language SDK authors can generate structs using the proto definitions
3
- //! that will match the generated structs in this module.
4
-
5
- pub mod constants;
6
- pub mod utilities;
7
-
8
- #[cfg(feature = "history_builders")]
9
- mod history_builder;
10
- #[cfg(feature = "history_builders")]
11
- mod history_info;
12
- mod task_token;
13
-
14
- #[cfg(feature = "history_builders")]
15
- pub use history_builder::{
16
- default_act_sched, default_wes_attribs, TestHistoryBuilder, DEFAULT_ACTIVITY_TYPE,
17
- DEFAULT_WORKFLOW_TYPE,
18
- };
19
- #[cfg(feature = "history_builders")]
20
- pub use history_info::HistoryInfo;
21
- pub use task_token::TaskToken;
22
-
23
- #[allow(clippy::large_enum_variant, clippy::derive_partial_eq_without_eq)]
24
- // I'd prefer not to do this, but there are some generated things that just don't need it.
25
- #[allow(missing_docs)]
26
- pub mod coresdk {
27
- //! Contains all protobufs relating to communication between core and lang-specific SDKs
28
-
29
- tonic::include_proto!("coresdk");
30
-
31
- use crate::temporal::api::{
32
- common::v1::{Payload, Payloads, WorkflowExecution},
33
- enums::v1::WorkflowTaskFailedCause,
34
- failure::v1::{failure::FailureInfo, ApplicationFailureInfo, Failure},
35
- workflowservice::v1::PollActivityTaskQueueResponse,
36
- };
37
- use activity_task::ActivityTask;
38
- use serde::{Deserialize, Serialize};
39
- use std::{
40
- collections::HashMap,
41
- convert::TryFrom,
42
- fmt::{Display, Formatter},
43
- iter::FromIterator,
44
- };
45
- use workflow_activation::{workflow_activation_job, WorkflowActivationJob};
46
- use workflow_commands::{workflow_command, workflow_command::Variant, WorkflowCommand};
47
- use workflow_completion::{workflow_activation_completion, WorkflowActivationCompletion};
48
-
49
- #[allow(clippy::module_inception)]
50
- pub mod activity_task {
51
- use crate::{coresdk::ActivityTaskCompletion, task_token::fmt_tt};
52
- use std::fmt::{Display, Formatter};
53
- tonic::include_proto!("coresdk.activity_task");
54
-
55
- impl ActivityTask {
56
- pub fn cancel_from_ids(task_token: Vec<u8>, reason: ActivityCancelReason) -> Self {
57
- Self {
58
- task_token,
59
- variant: Some(activity_task::Variant::Cancel(Cancel {
60
- reason: reason as i32,
61
- })),
62
- }
63
- }
64
- }
65
-
66
- impl Display for ActivityTaskCompletion {
67
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
68
- write!(
69
- f,
70
- "ActivityTaskCompletion(token: {}",
71
- fmt_tt(&self.task_token),
72
- )?;
73
- if let Some(r) = self.result.as_ref().and_then(|r| r.status.as_ref()) {
74
- write!(f, ", {r}")?;
75
- } else {
76
- write!(f, ", missing result")?;
77
- }
78
- write!(f, ")")
79
- }
80
- }
81
- }
82
- #[allow(clippy::module_inception)]
83
- pub mod activity_result {
84
- tonic::include_proto!("coresdk.activity_result");
85
- use super::super::temporal::api::{
86
- common::v1::Payload,
87
- failure::v1::{failure, CanceledFailureInfo, Failure as APIFailure},
88
- };
89
- use crate::temporal::api::{enums::v1::TimeoutType, failure::v1::TimeoutFailureInfo};
90
- use activity_execution_result as aer;
91
- use std::fmt::{Display, Formatter};
92
-
93
- impl ActivityExecutionResult {
94
- pub const fn ok(result: Payload) -> Self {
95
- Self {
96
- status: Some(aer::Status::Completed(Success {
97
- result: Some(result),
98
- })),
99
- }
100
- }
101
-
102
- pub fn fail(fail: APIFailure) -> Self {
103
- Self {
104
- status: Some(aer::Status::Failed(Failure {
105
- failure: Some(fail),
106
- })),
107
- }
108
- }
109
-
110
- pub fn cancel_from_details(payload: Option<Payload>) -> Self {
111
- Self {
112
- status: Some(aer::Status::Cancelled(Cancellation::from_details(payload))),
113
- }
114
- }
115
-
116
- pub const fn will_complete_async() -> Self {
117
- Self {
118
- status: Some(aer::Status::WillCompleteAsync(WillCompleteAsync {})),
119
- }
120
- }
121
-
122
- pub fn is_cancelled(&self) -> bool {
123
- matches!(self.status, Some(aer::Status::Cancelled(_)))
124
- }
125
- }
126
-
127
- impl Display for aer::Status {
128
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
129
- write!(f, "ActivityExecutionResult(")?;
130
- match self {
131
- aer::Status::Completed(v) => {
132
- write!(f, "{v})")
133
- }
134
- aer::Status::Failed(v) => {
135
- write!(f, "{v})")
136
- }
137
- aer::Status::Cancelled(v) => {
138
- write!(f, "{v})")
139
- }
140
- aer::Status::WillCompleteAsync(_) => {
141
- write!(f, "Will complete async)")
142
- }
143
- }
144
- }
145
- }
146
-
147
- impl Display for Success {
148
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
149
- write!(f, "Success(")?;
150
- if let Some(ref v) = self.result {
151
- write!(f, "{v}")?;
152
- }
153
- write!(f, ")")
154
- }
155
- }
156
-
157
- impl Display for Failure {
158
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
159
- write!(f, "Failure(")?;
160
- if let Some(ref v) = self.failure {
161
- write!(f, "{v}")?;
162
- }
163
- write!(f, ")")
164
- }
165
- }
166
-
167
- impl Display for Cancellation {
168
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
169
- write!(f, "Cancellation(")?;
170
- if let Some(ref v) = self.failure {
171
- write!(f, "{v}")?;
172
- }
173
- write!(f, ")")
174
- }
175
- }
176
-
177
- impl From<Result<Payload, APIFailure>> for ActivityExecutionResult {
178
- fn from(r: Result<Payload, APIFailure>) -> Self {
179
- Self {
180
- status: match r {
181
- Ok(p) => Some(aer::Status::Completed(Success { result: Some(p) })),
182
- Err(f) => Some(aer::Status::Failed(Failure { failure: Some(f) })),
183
- },
184
- }
185
- }
186
- }
187
-
188
- impl ActivityResolution {
189
- pub fn unwrap_ok_payload(self) -> Payload {
190
- match self.status.unwrap() {
191
- activity_resolution::Status::Completed(c) => c.result.unwrap(),
192
- e => panic!("Activity was not successful: {e:?}"),
193
- }
194
- }
195
-
196
- pub fn completed_ok(&self) -> bool {
197
- matches!(self.status, Some(activity_resolution::Status::Completed(_)))
198
- }
199
-
200
- pub fn failed(&self) -> bool {
201
- matches!(self.status, Some(activity_resolution::Status::Failed(_)))
202
- }
203
-
204
- pub fn timed_out(&self) -> Option<crate::temporal::api::enums::v1::TimeoutType> {
205
- match self.status {
206
- Some(activity_resolution::Status::Failed(Failure {
207
- failure: Some(ref f),
208
- })) => f
209
- .is_timeout()
210
- .or_else(|| f.cause.as_ref().and_then(|c| c.is_timeout())),
211
- _ => None,
212
- }
213
- }
214
-
215
- pub fn cancelled(&self) -> bool {
216
- matches!(self.status, Some(activity_resolution::Status::Cancelled(_)))
217
- }
218
- }
219
-
220
- impl Cancellation {
221
- pub fn from_details(payload: Option<Payload>) -> Self {
222
- Cancellation {
223
- failure: Some(APIFailure {
224
- message: "Activity cancelled".to_string(),
225
- failure_info: Some(failure::FailureInfo::CanceledFailureInfo(
226
- CanceledFailureInfo {
227
- details: payload.map(Into::into),
228
- },
229
- )),
230
- ..Default::default()
231
- }),
232
- }
233
- }
234
- }
235
-
236
- impl Failure {
237
- pub fn timeout(timeout_type: TimeoutType) -> Self {
238
- Failure {
239
- failure: Some(APIFailure {
240
- message: "Activity timed out".to_string(),
241
- failure_info: Some(failure::FailureInfo::TimeoutFailureInfo(
242
- TimeoutFailureInfo {
243
- timeout_type: timeout_type as i32,
244
- last_heartbeat_details: None,
245
- },
246
- )),
247
- ..Default::default()
248
- }),
249
- }
250
- }
251
- }
252
- }
253
-
254
- pub mod common {
255
- tonic::include_proto!("coresdk.common");
256
- use super::external_data::LocalActivityMarkerData;
257
- use crate::{
258
- coresdk::{AsJsonPayloadExt, IntoPayloadsExt},
259
- temporal::api::common::v1::{Payload, Payloads},
260
- };
261
- use std::collections::HashMap;
262
-
263
- pub fn build_has_change_marker_details(
264
- patch_id: &str,
265
- deprecated: bool,
266
- ) -> HashMap<String, Payloads> {
267
- let mut hm = HashMap::new();
268
- hm.insert("patch_id".to_string(), patch_id.as_bytes().into());
269
- let deprecated = deprecated as u8;
270
- hm.insert("deprecated".to_string(), (&[deprecated]).into());
271
- hm
272
- }
273
-
274
- pub fn decode_change_marker_details(
275
- details: &HashMap<String, Payloads>,
276
- ) -> Option<(String, bool)> {
277
- let name =
278
- std::str::from_utf8(&details.get("patch_id")?.payloads.first()?.data).ok()?;
279
- let deprecated = *details.get("deprecated")?.payloads.first()?.data.first()? != 0;
280
- Some((name.to_string(), deprecated))
281
- }
282
-
283
- pub fn build_local_activity_marker_details(
284
- metadata: LocalActivityMarkerData,
285
- result: Option<Payload>,
286
- ) -> HashMap<String, Payloads> {
287
- let mut hm = HashMap::new();
288
- // It would be more efficient for this to be proto binary, but then it shows up as
289
- // meaningless in the Temporal UI...
290
- if let Some(jsonified) = metadata.as_json_payload().into_payloads() {
291
- hm.insert("data".to_string(), jsonified);
292
- }
293
- if let Some(res) = result {
294
- hm.insert("result".to_string(), res.into());
295
- }
296
- hm
297
- }
298
-
299
- /// Given a marker detail map, returns just the local activity info, but not the payload.
300
- /// This is fairly inexpensive. Deserializing the whole payload may not be.
301
- pub fn extract_local_activity_marker_data(
302
- details: &HashMap<String, Payloads>,
303
- ) -> Option<LocalActivityMarkerData> {
304
- details
305
- .get("data")
306
- .and_then(|p| p.payloads.get(0))
307
- .and_then(|p| std::str::from_utf8(&p.data).ok())
308
- .and_then(|s| serde_json::from_str(s).ok())
309
- }
310
-
311
- /// Given a marker detail map, returns the local activity info and the result payload
312
- /// if they are found and the marker data is well-formed. This removes the data from the
313
- /// map.
314
- pub fn extract_local_activity_marker_details(
315
- details: &mut HashMap<String, Payloads>,
316
- ) -> (Option<LocalActivityMarkerData>, Option<Payload>) {
317
- let data = extract_local_activity_marker_data(details);
318
- let result = details.remove("result").and_then(|mut p| p.payloads.pop());
319
- (data, result)
320
- }
321
- }
322
-
323
- pub mod external_data {
324
- use prost_wkt_types::{Duration, Timestamp};
325
- use serde::{Deserialize, Deserializer, Serialize, Serializer};
326
- tonic::include_proto!("coresdk.external_data");
327
-
328
- // Buncha hullaballoo because prost types aren't serde compat.
329
- // See https://github.com/tokio-rs/prost/issues/75 which hilariously Chad opened ages ago
330
-
331
- #[derive(Serialize, Deserialize)]
332
- #[serde(remote = "Timestamp")]
333
- struct TimestampDef {
334
- pub seconds: i64,
335
- pub nanos: i32,
336
- }
337
- mod opt_timestamp {
338
- use super::*;
339
-
340
- pub fn serialize<S>(value: &Option<Timestamp>, serializer: S) -> Result<S::Ok, S::Error>
341
- where
342
- S: Serializer,
343
- {
344
- #[derive(Serialize)]
345
- struct Helper<'a>(#[serde(with = "TimestampDef")] &'a Timestamp);
346
-
347
- value.as_ref().map(Helper).serialize(serializer)
348
- }
349
-
350
- pub fn deserialize<'de, D>(deserializer: D) -> Result<Option<Timestamp>, D::Error>
351
- where
352
- D: Deserializer<'de>,
353
- {
354
- #[derive(Deserialize)]
355
- struct Helper(#[serde(with = "TimestampDef")] Timestamp);
356
-
357
- let helper = Option::deserialize(deserializer)?;
358
- Ok(helper.map(|Helper(external)| external))
359
- }
360
- }
361
-
362
- // Luckily Duration is also stored the exact same way
363
- #[derive(Serialize, Deserialize)]
364
- #[serde(remote = "Duration")]
365
- struct DurationDef {
366
- pub seconds: i64,
367
- pub nanos: i32,
368
- }
369
- mod opt_duration {
370
- use super::*;
371
-
372
- pub fn serialize<S>(value: &Option<Duration>, serializer: S) -> Result<S::Ok, S::Error>
373
- where
374
- S: Serializer,
375
- {
376
- #[derive(Serialize)]
377
- struct Helper<'a>(#[serde(with = "DurationDef")] &'a Duration);
378
-
379
- value.as_ref().map(Helper).serialize(serializer)
380
- }
381
-
382
- pub fn deserialize<'de, D>(deserializer: D) -> Result<Option<Duration>, D::Error>
383
- where
384
- D: Deserializer<'de>,
385
- {
386
- #[derive(Deserialize)]
387
- struct Helper(#[serde(with = "DurationDef")] Duration);
388
-
389
- let helper = Option::deserialize(deserializer)?;
390
- Ok(helper.map(|Helper(external)| external))
391
- }
392
- }
393
- }
394
-
395
- pub mod workflow_activation {
396
- use crate::{
397
- coresdk::{
398
- common::NamespacedWorkflowExecution,
399
- workflow_activation::remove_from_cache::EvictionReason, FromPayloadsExt,
400
- },
401
- temporal::api::{
402
- common::v1::Header,
403
- enums::v1::WorkflowTaskFailedCause,
404
- history::v1::{
405
- WorkflowExecutionCancelRequestedEventAttributes,
406
- WorkflowExecutionSignaledEventAttributes,
407
- WorkflowExecutionStartedEventAttributes,
408
- },
409
- query::v1::WorkflowQuery,
410
- },
411
- };
412
- use prost_wkt_types::Timestamp;
413
- use std::{
414
- collections::HashMap,
415
- fmt::{Display, Formatter},
416
- };
417
-
418
- tonic::include_proto!("coresdk.workflow_activation");
419
-
420
- pub fn create_evict_activation(
421
- run_id: String,
422
- message: String,
423
- reason: EvictionReason,
424
- ) -> WorkflowActivation {
425
- WorkflowActivation {
426
- timestamp: None,
427
- run_id,
428
- is_replaying: false,
429
- history_length: 0,
430
- jobs: vec![WorkflowActivationJob::from(
431
- workflow_activation_job::Variant::RemoveFromCache(RemoveFromCache {
432
- message,
433
- reason: reason as i32,
434
- }),
435
- )],
436
- available_internal_flags: vec![],
437
- }
438
- }
439
-
440
- pub fn query_to_job(id: String, q: WorkflowQuery) -> QueryWorkflow {
441
- QueryWorkflow {
442
- query_id: id,
443
- query_type: q.query_type,
444
- arguments: Vec::from_payloads(q.query_args),
445
- headers: q.header.map(|h| h.into()).unwrap_or_default(),
446
- }
447
- }
448
-
449
- impl WorkflowActivation {
450
- /// Returns the index of the eviction job if this activation contains one. If present
451
- /// it should always be the last job in the list.
452
- pub fn eviction_index(&self) -> Option<usize> {
453
- self.jobs.iter().position(|j| {
454
- matches!(
455
- j,
456
- WorkflowActivationJob {
457
- variant: Some(workflow_activation_job::Variant::RemoveFromCache(_))
458
- }
459
- )
460
- })
461
- }
462
-
463
- /// Returns true if the only job is eviction
464
- pub fn is_only_eviction(&self) -> bool {
465
- self.jobs.len() == 1 && self.eviction_index().is_some()
466
- }
467
-
468
- /// Returns eviction reason if this activation has an evict job
469
- pub fn eviction_reason(&self) -> Option<EvictionReason> {
470
- self.jobs.iter().find_map(|j| {
471
- if let Some(workflow_activation_job::Variant::RemoveFromCache(ref rj)) =
472
- j.variant
473
- {
474
- EvictionReason::from_i32(rj.reason)
475
- } else {
476
- None
477
- }
478
- })
479
- }
480
-
481
- /// Append an eviction job to the joblist
482
- pub fn append_evict_job(&mut self, evict_job: RemoveFromCache) {
483
- if let Some(last_job) = self.jobs.last() {
484
- if matches!(
485
- last_job.variant,
486
- Some(workflow_activation_job::Variant::RemoveFromCache(_))
487
- ) {
488
- return;
489
- }
490
- }
491
- let evict_job = WorkflowActivationJob::from(
492
- workflow_activation_job::Variant::RemoveFromCache(evict_job),
493
- );
494
- self.jobs.push(evict_job);
495
- }
496
- }
497
-
498
- impl Display for EvictionReason {
499
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
500
- write!(f, "{self:?}")
501
- }
502
- }
503
-
504
- impl From<EvictionReason> for WorkflowTaskFailedCause {
505
- fn from(value: EvictionReason) -> Self {
506
- match value {
507
- EvictionReason::Nondeterminism => {
508
- WorkflowTaskFailedCause::NonDeterministicError
509
- }
510
- _ => WorkflowTaskFailedCause::Unspecified,
511
- }
512
- }
513
- }
514
-
515
- impl Display for WorkflowActivation {
516
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
517
- write!(f, "WorkflowActivation(")?;
518
- write!(f, "run_id: {}, ", self.run_id)?;
519
- write!(f, "is_replaying: {}, ", self.is_replaying)?;
520
- write!(
521
- f,
522
- "jobs: {})",
523
- self.jobs
524
- .iter()
525
- .map(ToString::to_string)
526
- .collect::<Vec<_>>()
527
- .as_slice()
528
- .join(", ")
529
- )
530
- }
531
- }
532
-
533
- impl Display for WorkflowActivationJob {
534
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
535
- match &self.variant {
536
- None => write!(f, "empty"),
537
- Some(v) => write!(f, "{v}"),
538
- }
539
- }
540
- }
541
-
542
- impl Display for workflow_activation_job::Variant {
543
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
544
- match self {
545
- workflow_activation_job::Variant::StartWorkflow(_) => {
546
- write!(f, "StartWorkflow")
547
- }
548
- workflow_activation_job::Variant::FireTimer(t) => {
549
- write!(f, "FireTimer({})", t.seq)
550
- }
551
- workflow_activation_job::Variant::UpdateRandomSeed(_) => {
552
- write!(f, "UpdateRandomSeed")
553
- }
554
- workflow_activation_job::Variant::QueryWorkflow(_) => {
555
- write!(f, "QueryWorkflow")
556
- }
557
- workflow_activation_job::Variant::CancelWorkflow(_) => {
558
- write!(f, "CancelWorkflow")
559
- }
560
- workflow_activation_job::Variant::SignalWorkflow(_) => {
561
- write!(f, "SignalWorkflow")
562
- }
563
- workflow_activation_job::Variant::ResolveActivity(r) => {
564
- write!(f, "ResolveActivity({})", r.seq)
565
- }
566
- workflow_activation_job::Variant::NotifyHasPatch(_) => {
567
- write!(f, "NotifyHasPatch")
568
- }
569
- workflow_activation_job::Variant::ResolveChildWorkflowExecutionStart(_) => {
570
- write!(f, "ResolveChildWorkflowExecutionStart")
571
- }
572
- workflow_activation_job::Variant::ResolveChildWorkflowExecution(_) => {
573
- write!(f, "ResolveChildWorkflowExecution")
574
- }
575
- workflow_activation_job::Variant::ResolveSignalExternalWorkflow(_) => {
576
- write!(f, "ResolveSignalExternalWorkflow")
577
- }
578
- workflow_activation_job::Variant::RemoveFromCache(_) => {
579
- write!(f, "RemoveFromCache")
580
- }
581
- workflow_activation_job::Variant::ResolveRequestCancelExternalWorkflow(_) => {
582
- write!(f, "ResolveRequestCancelExternalWorkflow")
583
- }
584
- }
585
- }
586
- }
587
-
588
- impl Display for QueryWorkflow {
589
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
590
- write!(
591
- f,
592
- "QueryWorkflow(id: {}, type: {})",
593
- self.query_id, self.query_type
594
- )
595
- }
596
- }
597
-
598
- impl From<WorkflowExecutionSignaledEventAttributes> for SignalWorkflow {
599
- fn from(a: WorkflowExecutionSignaledEventAttributes) -> Self {
600
- Self {
601
- signal_name: a.signal_name,
602
- input: Vec::from_payloads(a.input),
603
- identity: a.identity,
604
- headers: a.header.map(Into::into).unwrap_or_default(),
605
- }
606
- }
607
- }
608
-
609
- impl From<WorkflowExecutionCancelRequestedEventAttributes> for CancelWorkflow {
610
- fn from(_a: WorkflowExecutionCancelRequestedEventAttributes) -> Self {
611
- Self { details: vec![] }
612
- }
613
- }
614
-
615
- /// Create a [StartWorkflow] job from corresponding event attributes
616
- pub fn start_workflow_from_attribs(
617
- attrs: WorkflowExecutionStartedEventAttributes,
618
- workflow_id: String,
619
- randomness_seed: u64,
620
- start_time: Timestamp,
621
- ) -> StartWorkflow {
622
- StartWorkflow {
623
- workflow_type: attrs.workflow_type.map(|wt| wt.name).unwrap_or_default(),
624
- workflow_id,
625
- arguments: Vec::from_payloads(attrs.input),
626
- randomness_seed,
627
- headers: match attrs.header {
628
- None => HashMap::new(),
629
- Some(Header { fields }) => fields,
630
- },
631
- identity: attrs.identity,
632
- parent_workflow_info: attrs.parent_workflow_execution.map(|pe| {
633
- NamespacedWorkflowExecution {
634
- namespace: attrs.parent_workflow_namespace,
635
- run_id: pe.run_id,
636
- workflow_id: pe.workflow_id,
637
- }
638
- }),
639
- workflow_execution_timeout: attrs.workflow_execution_timeout,
640
- workflow_run_timeout: attrs.workflow_run_timeout,
641
- workflow_task_timeout: attrs.workflow_task_timeout,
642
- continued_from_execution_run_id: attrs.continued_execution_run_id,
643
- continued_initiator: attrs.initiator,
644
- continued_failure: attrs.continued_failure,
645
- last_completion_result: attrs.last_completion_result,
646
- first_execution_run_id: attrs.first_execution_run_id,
647
- retry_policy: attrs.retry_policy,
648
- attempt: attrs.attempt,
649
- cron_schedule: attrs.cron_schedule,
650
- workflow_execution_expiration_time: attrs.workflow_execution_expiration_time,
651
- cron_schedule_to_schedule_interval: attrs.first_workflow_task_backoff,
652
- memo: attrs.memo,
653
- search_attributes: attrs.search_attributes,
654
- start_time: Some(start_time),
655
- }
656
- }
657
- }
658
-
659
- pub mod workflow_completion {
660
- use crate::temporal::api::{enums::v1::WorkflowTaskFailedCause, failure};
661
- tonic::include_proto!("coresdk.workflow_completion");
662
-
663
- impl workflow_activation_completion::Status {
664
- pub const fn is_success(&self) -> bool {
665
- match &self {
666
- Self::Successful(_) => true,
667
- Self::Failed(_) => false,
668
- }
669
- }
670
- }
671
-
672
- impl From<failure::v1::Failure> for Failure {
673
- fn from(f: failure::v1::Failure) -> Self {
674
- Failure {
675
- failure: Some(f),
676
- force_cause: WorkflowTaskFailedCause::Unspecified as i32,
677
- }
678
- }
679
- }
680
- }
681
-
682
- pub mod child_workflow {
683
- tonic::include_proto!("coresdk.child_workflow");
684
- }
685
-
686
- pub mod workflow_commands {
687
- tonic::include_proto!("coresdk.workflow_commands");
688
-
689
- use crate::temporal::api::{common::v1::Payloads, enums::v1::QueryResultType};
690
- use std::fmt::{Display, Formatter};
691
-
692
- impl Display for WorkflowCommand {
693
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
694
- match &self.variant {
695
- None => write!(f, "Empty"),
696
- Some(v) => write!(f, "{v}"),
697
- }
698
- }
699
- }
700
-
701
- impl Display for StartTimer {
702
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
703
- write!(f, "StartTimer({})", self.seq)
704
- }
705
- }
706
-
707
- impl Display for ScheduleActivity {
708
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
709
- write!(f, "ScheduleActivity({}, {})", self.seq, self.activity_type)
710
- }
711
- }
712
-
713
- impl Display for ScheduleLocalActivity {
714
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
715
- write!(
716
- f,
717
- "ScheduleLocalActivity({}, {})",
718
- self.seq, self.activity_type
719
- )
720
- }
721
- }
722
-
723
- impl Display for QueryResult {
724
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
725
- write!(f, "RespondToQuery({})", self.query_id)
726
- }
727
- }
728
-
729
- impl Display for RequestCancelActivity {
730
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
731
- write!(f, "RequestCancelActivity({})", self.seq)
732
- }
733
- }
734
-
735
- impl Display for RequestCancelLocalActivity {
736
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
737
- write!(f, "RequestCancelLocalActivity({})", self.seq)
738
- }
739
- }
740
-
741
- impl Display for CancelTimer {
742
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
743
- write!(f, "CancelTimer({})", self.seq)
744
- }
745
- }
746
-
747
- impl Display for CompleteWorkflowExecution {
748
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
749
- write!(f, "CompleteWorkflowExecution")
750
- }
751
- }
752
-
753
- impl Display for FailWorkflowExecution {
754
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
755
- write!(f, "FailWorkflowExecution")
756
- }
757
- }
758
-
759
- impl Display for ContinueAsNewWorkflowExecution {
760
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
761
- write!(f, "ContinueAsNewWorkflowExecution")
762
- }
763
- }
764
-
765
- impl Display for CancelWorkflowExecution {
766
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
767
- write!(f, "CancelWorkflowExecution")
768
- }
769
- }
770
-
771
- impl Display for SetPatchMarker {
772
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
773
- write!(f, "SetPatchMarker({})", self.patch_id)
774
- }
775
- }
776
-
777
- impl Display for StartChildWorkflowExecution {
778
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
779
- write!(
780
- f,
781
- "StartChildWorkflowExecution({}, {})",
782
- self.seq, self.workflow_type
783
- )
784
- }
785
- }
786
-
787
- impl Display for RequestCancelExternalWorkflowExecution {
788
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
789
- write!(f, "RequestCancelExternalWorkflowExecution({})", self.seq)
790
- }
791
- }
792
-
793
- impl Display for UpsertWorkflowSearchAttributes {
794
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
795
- write!(
796
- f,
797
- "UpsertWorkflowSearchAttributes({:?})",
798
- self.search_attributes.keys()
799
- )
800
- }
801
- }
802
-
803
- impl Display for SignalExternalWorkflowExecution {
804
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
805
- write!(f, "SignalExternalWorkflowExecution({})", self.seq)
806
- }
807
- }
808
-
809
- impl Display for CancelSignalWorkflow {
810
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
811
- write!(f, "CancelSignalWorkflow({})", self.seq)
812
- }
813
- }
814
-
815
- impl Display for CancelChildWorkflowExecution {
816
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
817
- write!(
818
- f,
819
- "CancelChildWorkflowExecution({})",
820
- self.child_workflow_seq
821
- )
822
- }
823
- }
824
-
825
- impl Display for ModifyWorkflowProperties {
826
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
827
- write!(
828
- f,
829
- "ModifyWorkflowProperties(upserted memo keys: {:?})",
830
- self.upserted_memo.as_ref().map(|m| m.fields.keys())
831
- )
832
- }
833
- }
834
-
835
- impl QueryResult {
836
- /// Helper to construct the Temporal API query result types.
837
- pub fn into_components(self) -> (String, QueryResultType, Option<Payloads>, String) {
838
- match self {
839
- QueryResult {
840
- variant: Some(query_result::Variant::Succeeded(qs)),
841
- query_id,
842
- } => (
843
- query_id,
844
- QueryResultType::Answered,
845
- qs.response.map(Into::into),
846
- "".to_string(),
847
- ),
848
- QueryResult {
849
- variant: Some(query_result::Variant::Failed(err)),
850
- query_id,
851
- } => (query_id, QueryResultType::Failed, None, err.message),
852
- QueryResult {
853
- variant: None,
854
- query_id,
855
- } => (
856
- query_id,
857
- QueryResultType::Failed,
858
- None,
859
- "Query response was empty".to_string(),
860
- ),
861
- }
862
- }
863
- }
864
- }
865
-
866
- pub type HistoryEventId = i64;
867
-
868
- impl From<workflow_activation_job::Variant> for WorkflowActivationJob {
869
- fn from(a: workflow_activation_job::Variant) -> Self {
870
- Self { variant: Some(a) }
871
- }
872
- }
873
-
874
- impl From<Vec<WorkflowCommand>> for workflow_completion::Success {
875
- fn from(v: Vec<WorkflowCommand>) -> Self {
876
- Self {
877
- commands: v,
878
- used_internal_flags: vec![],
879
- }
880
- }
881
- }
882
-
883
- impl From<workflow_command::Variant> for WorkflowCommand {
884
- fn from(v: workflow_command::Variant) -> Self {
885
- Self { variant: Some(v) }
886
- }
887
- }
888
-
889
- impl workflow_completion::Success {
890
- pub fn from_variants(cmds: Vec<Variant>) -> Self {
891
- let cmds: Vec<_> = cmds
892
- .into_iter()
893
- .map(|c| WorkflowCommand { variant: Some(c) })
894
- .collect();
895
- cmds.into()
896
- }
897
- }
898
-
899
- impl WorkflowActivationCompletion {
900
- /// Create a successful activation with no commands in it
901
- pub fn empty(run_id: impl Into<String>) -> Self {
902
- let success = workflow_completion::Success::from_variants(vec![]);
903
- Self {
904
- run_id: run_id.into(),
905
- status: Some(workflow_activation_completion::Status::Successful(success)),
906
- }
907
- }
908
-
909
- /// Create a successful activation from a list of commands
910
- pub fn from_cmds(run_id: impl Into<String>, cmds: Vec<workflow_command::Variant>) -> Self {
911
- let success = workflow_completion::Success::from_variants(cmds);
912
- Self {
913
- run_id: run_id.into(),
914
- status: Some(workflow_activation_completion::Status::Successful(success)),
915
- }
916
- }
917
-
918
- /// Create a successful activation from just one command
919
- pub fn from_cmd(run_id: impl Into<String>, cmd: workflow_command::Variant) -> Self {
920
- let success = workflow_completion::Success::from_variants(vec![cmd]);
921
- Self {
922
- run_id: run_id.into(),
923
- status: Some(workflow_activation_completion::Status::Successful(success)),
924
- }
925
- }
926
-
927
- pub fn fail(run_id: impl Into<String>, failure: Failure) -> Self {
928
- Self {
929
- run_id: run_id.into(),
930
- status: Some(workflow_activation_completion::Status::Failed(
931
- workflow_completion::Failure {
932
- failure: Some(failure),
933
- force_cause: WorkflowTaskFailedCause::Unspecified as i32,
934
- },
935
- )),
936
- }
937
- }
938
-
939
- /// Returns true if the activation has either a fail, continue, cancel, or complete workflow
940
- /// execution command in it.
941
- pub fn has_execution_ending(&self) -> bool {
942
- self.has_complete_workflow_execution()
943
- || self.has_fail_execution()
944
- || self.has_continue_as_new()
945
- || self.has_cancel_workflow_execution()
946
- }
947
-
948
- /// Returns true if the activation contains a fail workflow execution command
949
- pub fn has_fail_execution(&self) -> bool {
950
- if let Some(workflow_activation_completion::Status::Successful(s)) = &self.status {
951
- return s.commands.iter().any(|wfc| {
952
- matches!(
953
- wfc,
954
- WorkflowCommand {
955
- variant: Some(workflow_command::Variant::FailWorkflowExecution(_)),
956
- }
957
- )
958
- });
959
- }
960
- false
961
- }
962
-
963
- /// Returns true if the activation contains a cancel workflow execution command
964
- pub fn has_cancel_workflow_execution(&self) -> bool {
965
- if let Some(workflow_activation_completion::Status::Successful(s)) = &self.status {
966
- return s.commands.iter().any(|wfc| {
967
- matches!(
968
- wfc,
969
- WorkflowCommand {
970
- variant: Some(workflow_command::Variant::CancelWorkflowExecution(_)),
971
- }
972
- )
973
- });
974
- }
975
- false
976
- }
977
-
978
- /// Returns true if the activation contains a continue as new workflow execution command
979
- pub fn has_continue_as_new(&self) -> bool {
980
- if let Some(workflow_activation_completion::Status::Successful(s)) = &self.status {
981
- return s.commands.iter().any(|wfc| {
982
- matches!(
983
- wfc,
984
- WorkflowCommand {
985
- variant: Some(
986
- workflow_command::Variant::ContinueAsNewWorkflowExecution(_)
987
- ),
988
- }
989
- )
990
- });
991
- }
992
- false
993
- }
994
-
995
- /// Returns true if the activation contains a complete workflow execution command
996
- pub fn has_complete_workflow_execution(&self) -> bool {
997
- if let Some(workflow_activation_completion::Status::Successful(s)) = &self.status {
998
- return s.commands.iter().any(|wfc| {
999
- matches!(
1000
- wfc,
1001
- WorkflowCommand {
1002
- variant: Some(workflow_command::Variant::CompleteWorkflowExecution(_)),
1003
- }
1004
- )
1005
- });
1006
- }
1007
- false
1008
- }
1009
-
1010
- /// Returns true if the activation completion is a success with no commands
1011
- pub fn is_empty(&self) -> bool {
1012
- if let Some(workflow_activation_completion::Status::Successful(s)) = &self.status {
1013
- return s.commands.is_empty();
1014
- }
1015
- false
1016
- }
1017
-
1018
- pub fn add_internal_flags(&mut self, patch: u32) {
1019
- if let Some(workflow_activation_completion::Status::Successful(s)) = &mut self.status {
1020
- s.used_internal_flags.push(patch);
1021
- }
1022
- }
1023
- }
1024
-
1025
- /// Makes converting outgoing lang commands into [WorkflowActivationCompletion]s easier
1026
- pub trait IntoCompletion {
1027
- /// The conversion function
1028
- fn into_completion(self, run_id: String) -> WorkflowActivationCompletion;
1029
- }
1030
-
1031
- impl IntoCompletion for workflow_command::Variant {
1032
- fn into_completion(self, run_id: String) -> WorkflowActivationCompletion {
1033
- WorkflowActivationCompletion::from_cmd(run_id, self)
1034
- }
1035
- }
1036
-
1037
- impl<I, V> IntoCompletion for I
1038
- where
1039
- I: IntoIterator<Item = V>,
1040
- V: Into<WorkflowCommand>,
1041
- {
1042
- fn into_completion(self, run_id: String) -> WorkflowActivationCompletion {
1043
- let success = self.into_iter().map(Into::into).collect::<Vec<_>>().into();
1044
- WorkflowActivationCompletion {
1045
- run_id,
1046
- status: Some(workflow_activation_completion::Status::Successful(success)),
1047
- }
1048
- }
1049
- }
1050
-
1051
- impl Display for WorkflowActivationCompletion {
1052
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1053
- write!(
1054
- f,
1055
- "WorkflowActivationCompletion(run_id: {}, status: ",
1056
- &self.run_id
1057
- )?;
1058
- match &self.status {
1059
- None => write!(f, "empty")?,
1060
- Some(s) => write!(f, "{s}")?,
1061
- };
1062
- write!(f, ")")
1063
- }
1064
- }
1065
-
1066
- impl Display for workflow_activation_completion::Status {
1067
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1068
- match self {
1069
- workflow_activation_completion::Status::Successful(
1070
- workflow_completion::Success { commands, .. },
1071
- ) => {
1072
- write!(f, "Success(")?;
1073
- let mut written = 0;
1074
- for c in commands {
1075
- write!(f, "{c} ")?;
1076
- written += 1;
1077
- if written >= 10 && written < commands.len() {
1078
- write!(f, "... {} more", commands.len() - written)?;
1079
- break;
1080
- }
1081
- }
1082
- write!(f, ")")
1083
- }
1084
- workflow_activation_completion::Status::Failed(_) => {
1085
- write!(f, "Failed")
1086
- }
1087
- }
1088
- }
1089
- }
1090
-
1091
- impl ActivityTask {
1092
- pub fn start_from_poll_resp(r: PollActivityTaskQueueResponse) -> Self {
1093
- let (workflow_id, run_id) = r
1094
- .workflow_execution
1095
- .map(|we| (we.workflow_id, we.run_id))
1096
- .unwrap_or_default();
1097
- Self {
1098
- task_token: r.task_token,
1099
- variant: Some(activity_task::activity_task::Variant::Start(
1100
- activity_task::Start {
1101
- workflow_namespace: r.workflow_namespace,
1102
- workflow_type: r.workflow_type.map_or_else(|| "".to_string(), |wt| wt.name),
1103
- workflow_execution: Some(WorkflowExecution {
1104
- workflow_id,
1105
- run_id,
1106
- }),
1107
- activity_id: r.activity_id,
1108
- activity_type: r.activity_type.map_or_else(|| "".to_string(), |at| at.name),
1109
- header_fields: r.header.map(Into::into).unwrap_or_default(),
1110
- input: Vec::from_payloads(r.input),
1111
- heartbeat_details: Vec::from_payloads(r.heartbeat_details),
1112
- scheduled_time: r.scheduled_time,
1113
- current_attempt_scheduled_time: r.current_attempt_scheduled_time,
1114
- started_time: r.started_time,
1115
- attempt: r.attempt as u32,
1116
- schedule_to_close_timeout: r.schedule_to_close_timeout,
1117
- start_to_close_timeout: r.start_to_close_timeout,
1118
- heartbeat_timeout: r.heartbeat_timeout,
1119
- retry_policy: r.retry_policy.map(Into::into),
1120
- is_local: false,
1121
- },
1122
- )),
1123
- }
1124
- }
1125
- }
1126
-
1127
- impl Failure {
1128
- pub fn is_timeout(&self) -> Option<crate::temporal::api::enums::v1::TimeoutType> {
1129
- match &self.failure_info {
1130
- Some(FailureInfo::TimeoutFailureInfo(ti)) => Some(ti.timeout_type()),
1131
- _ => None,
1132
- }
1133
- }
1134
-
1135
- pub fn application_failure(message: String, non_retryable: bool) -> Self {
1136
- Self {
1137
- message,
1138
- failure_info: Some(FailureInfo::ApplicationFailureInfo(
1139
- ApplicationFailureInfo {
1140
- non_retryable,
1141
- ..Default::default()
1142
- },
1143
- )),
1144
- ..Default::default()
1145
- }
1146
- }
1147
-
1148
- pub fn application_failure_from_error(ae: anyhow::Error, non_retryable: bool) -> Self {
1149
- Self {
1150
- failure_info: Some(FailureInfo::ApplicationFailureInfo(
1151
- ApplicationFailureInfo {
1152
- non_retryable,
1153
- ..Default::default()
1154
- },
1155
- )),
1156
- ..ae.chain()
1157
- .rfold(None, |cause, e| {
1158
- Some(Self {
1159
- message: e.to_string(),
1160
- cause: cause.map(Box::new),
1161
- ..Default::default()
1162
- })
1163
- })
1164
- .unwrap_or_default()
1165
- }
1166
- }
1167
-
1168
- /// Extracts an ApplicationFailureInfo from a Failure instance if it exists
1169
- pub fn maybe_application_failure(&self) -> Option<&ApplicationFailureInfo> {
1170
- if let Failure {
1171
- failure_info: Some(FailureInfo::ApplicationFailureInfo(f)),
1172
- ..
1173
- } = self
1174
- {
1175
- Some(f)
1176
- } else {
1177
- None
1178
- }
1179
- }
1180
- }
1181
-
1182
- impl Display for Failure {
1183
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1184
- write!(f, "Failure({}, ", self.message)?;
1185
- match self.failure_info.as_ref() {
1186
- None => write!(f, "missing info")?,
1187
- Some(FailureInfo::TimeoutFailureInfo(v)) => {
1188
- write!(f, "Timeout: {:?}", v.timeout_type())?;
1189
- }
1190
- Some(FailureInfo::ApplicationFailureInfo(v)) => {
1191
- write!(f, "Application Failure: {}", v.r#type)?;
1192
- }
1193
- Some(FailureInfo::CanceledFailureInfo(_)) => {
1194
- write!(f, "Cancelled")?;
1195
- }
1196
- Some(FailureInfo::TerminatedFailureInfo(_)) => {
1197
- write!(f, "Terminated")?;
1198
- }
1199
- Some(FailureInfo::ServerFailureInfo(_)) => {
1200
- write!(f, "Server Failure")?;
1201
- }
1202
- Some(FailureInfo::ResetWorkflowFailureInfo(_)) => {
1203
- write!(f, "Reset Workflow")?;
1204
- }
1205
- Some(FailureInfo::ActivityFailureInfo(v)) => {
1206
- write!(
1207
- f,
1208
- "Activity Failure: scheduled_event_id: {}",
1209
- v.scheduled_event_id
1210
- )?;
1211
- }
1212
- Some(FailureInfo::ChildWorkflowExecutionFailureInfo(v)) => {
1213
- write!(
1214
- f,
1215
- "Child Workflow: started_event_id: {}",
1216
- v.started_event_id
1217
- )?;
1218
- }
1219
- }
1220
- write!(f, ")")
1221
- }
1222
- }
1223
-
1224
- impl From<&str> for Failure {
1225
- fn from(v: &str) -> Self {
1226
- Failure::application_failure(v.to_string(), false)
1227
- }
1228
- }
1229
-
1230
- impl From<String> for Failure {
1231
- fn from(v: String) -> Self {
1232
- Failure::application_failure(v, false)
1233
- }
1234
- }
1235
-
1236
- impl From<anyhow::Error> for Failure {
1237
- fn from(ae: anyhow::Error) -> Self {
1238
- Failure::application_failure_from_error(ae, false)
1239
- }
1240
- }
1241
-
1242
- pub trait FromPayloadsExt {
1243
- fn from_payloads(p: Option<Payloads>) -> Self;
1244
- }
1245
- impl<T> FromPayloadsExt for T
1246
- where
1247
- T: FromIterator<Payload>,
1248
- {
1249
- fn from_payloads(p: Option<Payloads>) -> Self {
1250
- match p {
1251
- None => std::iter::empty().collect(),
1252
- Some(p) => p.payloads.into_iter().map(Into::into).collect(),
1253
- }
1254
- }
1255
- }
1256
-
1257
- pub trait IntoPayloadsExt {
1258
- fn into_payloads(self) -> Option<Payloads>;
1259
- }
1260
- impl<T> IntoPayloadsExt for T
1261
- where
1262
- T: IntoIterator<Item = Payload>,
1263
- {
1264
- fn into_payloads(self) -> Option<Payloads> {
1265
- let mut iterd = self.into_iter().peekable();
1266
- if iterd.peek().is_none() {
1267
- None
1268
- } else {
1269
- Some(Payloads {
1270
- payloads: iterd.map(Into::into).collect(),
1271
- })
1272
- }
1273
- }
1274
- }
1275
-
1276
- impl From<Payload> for Payloads {
1277
- fn from(p: Payload) -> Self {
1278
- Self { payloads: vec![p] }
1279
- }
1280
- }
1281
-
1282
- impl<T> From<T> for Payloads
1283
- where
1284
- T: AsRef<[u8]>,
1285
- {
1286
- fn from(v: T) -> Self {
1287
- Self {
1288
- payloads: vec![v.into()],
1289
- }
1290
- }
1291
- }
1292
-
1293
- #[derive(thiserror::Error, Debug)]
1294
- pub enum PayloadDeserializeErr {
1295
- /// This deserializer does not handle this type of payload. Allows composing multiple
1296
- /// deserializers.
1297
- #[error("This deserializer does not understand this payload")]
1298
- DeserializerDoesNotHandle,
1299
- #[error("Error during deserialization: {0}")]
1300
- DeserializeErr(#[from] anyhow::Error),
1301
- }
1302
-
1303
- // TODO: Once the prototype SDK is un-prototyped this serialization will need to be compat with
1304
- // other SDKs (given they might execute an activity).
1305
- pub trait AsJsonPayloadExt {
1306
- fn as_json_payload(&self) -> anyhow::Result<Payload>;
1307
- }
1308
- impl<T> AsJsonPayloadExt for T
1309
- where
1310
- T: Serialize,
1311
- {
1312
- fn as_json_payload(&self) -> anyhow::Result<Payload> {
1313
- let as_json = serde_json::to_string(self)?;
1314
- let mut metadata = HashMap::new();
1315
- metadata.insert("encoding".to_string(), b"json/plain".to_vec());
1316
- Ok(Payload {
1317
- metadata,
1318
- data: as_json.into_bytes(),
1319
- })
1320
- }
1321
- }
1322
-
1323
- pub trait FromJsonPayloadExt: Sized {
1324
- fn from_json_payload(payload: &Payload) -> Result<Self, PayloadDeserializeErr>;
1325
- }
1326
- impl<T> FromJsonPayloadExt for T
1327
- where
1328
- T: for<'de> Deserialize<'de>,
1329
- {
1330
- fn from_json_payload(payload: &Payload) -> Result<Self, PayloadDeserializeErr> {
1331
- if !matches!(
1332
- payload.metadata.get("encoding").map(|v| v.as_slice()),
1333
- Some(b"json/plain")
1334
- ) {
1335
- return Err(PayloadDeserializeErr::DeserializerDoesNotHandle);
1336
- }
1337
- let payload_str = std::str::from_utf8(&payload.data).map_err(anyhow::Error::from)?;
1338
- Ok(serde_json::from_str(payload_str).map_err(anyhow::Error::from)?)
1339
- }
1340
- }
1341
-
1342
- /// Errors when converting from a [Payloads] api proto to our internal [Payload]
1343
- #[derive(derive_more::Display, Debug)]
1344
- pub enum PayloadsToPayloadError {
1345
- MoreThanOnePayload,
1346
- NoPayload,
1347
- }
1348
- impl TryFrom<Payloads> for Payload {
1349
- type Error = PayloadsToPayloadError;
1350
-
1351
- fn try_from(mut v: Payloads) -> Result<Self, Self::Error> {
1352
- match v.payloads.pop() {
1353
- None => Err(PayloadsToPayloadError::NoPayload),
1354
- Some(p) => {
1355
- if v.payloads.is_empty() {
1356
- Ok(p)
1357
- } else {
1358
- Err(PayloadsToPayloadError::MoreThanOnePayload)
1359
- }
1360
- }
1361
- }
1362
- }
1363
- }
1364
- }
1365
-
1366
- // No need to lint these
1367
- #[allow(
1368
- clippy::all,
1369
- missing_docs,
1370
- rustdoc::broken_intra_doc_links,
1371
- rustdoc::bare_urls
1372
- )]
1373
- // This is disgusting, but unclear to me how to avoid it. TODO: Discuss w/ prost maintainer
1374
- pub mod temporal {
1375
- pub mod api {
1376
- pub mod batch {
1377
- pub mod v1 {
1378
- tonic::include_proto!("temporal.api.batch.v1");
1379
- }
1380
- }
1381
- pub mod command {
1382
- pub mod v1 {
1383
- tonic::include_proto!("temporal.api.command.v1");
1384
-
1385
- use crate::{
1386
- coresdk::{workflow_commands, IntoPayloadsExt},
1387
- temporal::api::{
1388
- common::v1::{ActivityType, WorkflowType},
1389
- enums::v1::CommandType,
1390
- },
1391
- };
1392
- use command::Attributes;
1393
- use std::fmt::{Display, Formatter};
1394
-
1395
- impl From<command::Attributes> for Command {
1396
- fn from(c: command::Attributes) -> Self {
1397
- match c {
1398
- a @ Attributes::StartTimerCommandAttributes(_) => Self {
1399
- command_type: CommandType::StartTimer as i32,
1400
- attributes: Some(a),
1401
- },
1402
- a @ Attributes::CancelTimerCommandAttributes(_) => Self {
1403
- command_type: CommandType::CancelTimer as i32,
1404
- attributes: Some(a),
1405
- },
1406
- a @ Attributes::CompleteWorkflowExecutionCommandAttributes(_) => Self {
1407
- command_type: CommandType::CompleteWorkflowExecution as i32,
1408
- attributes: Some(a),
1409
- },
1410
- a @ Attributes::FailWorkflowExecutionCommandAttributes(_) => Self {
1411
- command_type: CommandType::FailWorkflowExecution as i32,
1412
- attributes: Some(a),
1413
- },
1414
- a @ Attributes::ScheduleActivityTaskCommandAttributes(_) => Self {
1415
- command_type: CommandType::ScheduleActivityTask as i32,
1416
- attributes: Some(a),
1417
- },
1418
- a @ Attributes::RequestCancelActivityTaskCommandAttributes(_) => Self {
1419
- command_type: CommandType::RequestCancelActivityTask as i32,
1420
- attributes: Some(a),
1421
- },
1422
- a @ Attributes::ContinueAsNewWorkflowExecutionCommandAttributes(_) => {
1423
- Self {
1424
- command_type: CommandType::ContinueAsNewWorkflowExecution
1425
- as i32,
1426
- attributes: Some(a),
1427
- }
1428
- }
1429
- a @ Attributes::CancelWorkflowExecutionCommandAttributes(_) => Self {
1430
- command_type: CommandType::CancelWorkflowExecution as i32,
1431
- attributes: Some(a),
1432
- },
1433
- _ => unimplemented!(),
1434
- }
1435
- }
1436
- }
1437
-
1438
- impl Display for Command {
1439
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1440
- let ct = CommandType::from_i32(self.command_type)
1441
- .unwrap_or(CommandType::Unspecified);
1442
- write!(f, "{:?}", ct)
1443
- }
1444
- }
1445
-
1446
- impl From<workflow_commands::StartTimer> for command::Attributes {
1447
- fn from(s: workflow_commands::StartTimer) -> Self {
1448
- Self::StartTimerCommandAttributes(StartTimerCommandAttributes {
1449
- timer_id: s.seq.to_string(),
1450
- start_to_fire_timeout: s.start_to_fire_timeout,
1451
- })
1452
- }
1453
- }
1454
-
1455
- impl From<workflow_commands::UpsertWorkflowSearchAttributes> for command::Attributes {
1456
- fn from(s: workflow_commands::UpsertWorkflowSearchAttributes) -> Self {
1457
- Self::UpsertWorkflowSearchAttributesCommandAttributes(
1458
- UpsertWorkflowSearchAttributesCommandAttributes {
1459
- search_attributes: Some(s.search_attributes.into()),
1460
- },
1461
- )
1462
- }
1463
- }
1464
-
1465
- impl From<workflow_commands::ModifyWorkflowProperties> for command::Attributes {
1466
- fn from(s: workflow_commands::ModifyWorkflowProperties) -> Self {
1467
- Self::ModifyWorkflowPropertiesCommandAttributes(
1468
- ModifyWorkflowPropertiesCommandAttributes {
1469
- upserted_memo: s.upserted_memo.map(Into::into),
1470
- },
1471
- )
1472
- }
1473
- }
1474
-
1475
- impl From<workflow_commands::CancelTimer> for command::Attributes {
1476
- fn from(s: workflow_commands::CancelTimer) -> Self {
1477
- Self::CancelTimerCommandAttributes(CancelTimerCommandAttributes {
1478
- timer_id: s.seq.to_string(),
1479
- })
1480
- }
1481
- }
1482
-
1483
- impl From<workflow_commands::ScheduleActivity> for command::Attributes {
1484
- fn from(s: workflow_commands::ScheduleActivity) -> Self {
1485
- Self::ScheduleActivityTaskCommandAttributes(
1486
- ScheduleActivityTaskCommandAttributes {
1487
- activity_id: s.activity_id,
1488
- activity_type: Some(ActivityType {
1489
- name: s.activity_type,
1490
- }),
1491
- task_queue: Some(s.task_queue.into()),
1492
- header: Some(s.headers.into()),
1493
- input: s.arguments.into_payloads(),
1494
- schedule_to_close_timeout: s.schedule_to_close_timeout,
1495
- schedule_to_start_timeout: s.schedule_to_start_timeout,
1496
- start_to_close_timeout: s.start_to_close_timeout,
1497
- heartbeat_timeout: s.heartbeat_timeout,
1498
- retry_policy: s.retry_policy.map(Into::into),
1499
- request_eager_execution: !s.do_not_eagerly_execute,
1500
- },
1501
- )
1502
- }
1503
- }
1504
-
1505
- impl From<workflow_commands::StartChildWorkflowExecution> for command::Attributes {
1506
- fn from(s: workflow_commands::StartChildWorkflowExecution) -> Self {
1507
- Self::StartChildWorkflowExecutionCommandAttributes(
1508
- StartChildWorkflowExecutionCommandAttributes {
1509
- workflow_id: s.workflow_id,
1510
- workflow_type: Some(WorkflowType {
1511
- name: s.workflow_type,
1512
- }),
1513
- control: "".into(),
1514
- namespace: s.namespace,
1515
- task_queue: Some(s.task_queue.into()),
1516
- header: Some(s.headers.into()),
1517
- memo: Some(s.memo.into()),
1518
- search_attributes: Some(s.search_attributes.into()),
1519
- input: s.input.into_payloads(),
1520
- workflow_id_reuse_policy: s.workflow_id_reuse_policy,
1521
- workflow_execution_timeout: s.workflow_execution_timeout,
1522
- workflow_run_timeout: s.workflow_run_timeout,
1523
- workflow_task_timeout: s.workflow_task_timeout,
1524
- retry_policy: s.retry_policy.map(Into::into),
1525
- cron_schedule: s.cron_schedule.clone(),
1526
- parent_close_policy: s.parent_close_policy,
1527
- },
1528
- )
1529
- }
1530
- }
1531
-
1532
- impl From<workflow_commands::CompleteWorkflowExecution> for command::Attributes {
1533
- fn from(c: workflow_commands::CompleteWorkflowExecution) -> Self {
1534
- Self::CompleteWorkflowExecutionCommandAttributes(
1535
- CompleteWorkflowExecutionCommandAttributes {
1536
- result: c.result.map(Into::into),
1537
- },
1538
- )
1539
- }
1540
- }
1541
-
1542
- impl From<workflow_commands::FailWorkflowExecution> for command::Attributes {
1543
- fn from(c: workflow_commands::FailWorkflowExecution) -> Self {
1544
- Self::FailWorkflowExecutionCommandAttributes(
1545
- FailWorkflowExecutionCommandAttributes {
1546
- failure: c.failure.map(Into::into),
1547
- },
1548
- )
1549
- }
1550
- }
1551
-
1552
- impl From<workflow_commands::ContinueAsNewWorkflowExecution> for command::Attributes {
1553
- fn from(c: workflow_commands::ContinueAsNewWorkflowExecution) -> Self {
1554
- Self::ContinueAsNewWorkflowExecutionCommandAttributes(
1555
- ContinueAsNewWorkflowExecutionCommandAttributes {
1556
- workflow_type: Some(c.workflow_type.into()),
1557
- task_queue: Some(c.task_queue.into()),
1558
- input: c.arguments.into_payloads(),
1559
- workflow_run_timeout: c.workflow_run_timeout,
1560
- workflow_task_timeout: c.workflow_task_timeout,
1561
- memo: if c.memo.is_empty() {
1562
- None
1563
- } else {
1564
- Some(c.memo.into())
1565
- },
1566
- header: if c.headers.is_empty() {
1567
- None
1568
- } else {
1569
- Some(c.headers.into())
1570
- },
1571
- retry_policy: c.retry_policy,
1572
- search_attributes: if c.search_attributes.is_empty() {
1573
- None
1574
- } else {
1575
- Some(c.search_attributes.into())
1576
- },
1577
- ..Default::default()
1578
- },
1579
- )
1580
- }
1581
- }
1582
-
1583
- impl From<workflow_commands::CancelWorkflowExecution> for command::Attributes {
1584
- fn from(_c: workflow_commands::CancelWorkflowExecution) -> Self {
1585
- Self::CancelWorkflowExecutionCommandAttributes(
1586
- CancelWorkflowExecutionCommandAttributes { details: None },
1587
- )
1588
- }
1589
- }
1590
- }
1591
- }
1592
- pub mod common {
1593
- pub mod v1 {
1594
- use base64::{prelude::BASE64_STANDARD, Engine};
1595
- use std::{
1596
- collections::HashMap,
1597
- fmt::{Display, Formatter},
1598
- };
1599
- tonic::include_proto!("temporal.api.common.v1");
1600
-
1601
- impl<T> From<T> for Payload
1602
- where
1603
- T: AsRef<[u8]>,
1604
- {
1605
- fn from(v: T) -> Self {
1606
- // TODO: Set better encodings, whole data converter deal. Setting anything
1607
- // for now at least makes it show up in the web UI.
1608
- let mut metadata = HashMap::new();
1609
- metadata.insert("encoding".to_string(), b"binary/plain".to_vec());
1610
- Self {
1611
- metadata,
1612
- data: v.as_ref().to_vec(),
1613
- }
1614
- }
1615
- }
1616
-
1617
- impl Payload {
1618
- // Is its own function b/c asref causes implementation conflicts
1619
- pub fn as_slice(&self) -> &[u8] {
1620
- self.data.as_slice()
1621
- }
1622
- }
1623
-
1624
- impl Display for Payload {
1625
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1626
- if self.data.len() > 64 {
1627
- let mut windows = self.data.as_slice().windows(32);
1628
- write!(
1629
- f,
1630
- "[{}..{}]",
1631
- BASE64_STANDARD.encode(windows.next().unwrap_or_default()),
1632
- BASE64_STANDARD.encode(windows.next_back().unwrap_or_default())
1633
- )
1634
- } else {
1635
- write!(f, "[{}]", BASE64_STANDARD.encode(&self.data))
1636
- }
1637
- }
1638
- }
1639
-
1640
- impl Display for Header {
1641
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1642
- write!(f, "Header(")?;
1643
- for kv in &self.fields {
1644
- write!(f, "{}: ", kv.0)?;
1645
- write!(f, "{}, ", kv.1)?;
1646
- }
1647
- write!(f, ")")
1648
- }
1649
- }
1650
-
1651
- impl From<Header> for HashMap<String, Payload> {
1652
- fn from(h: Header) -> Self {
1653
- h.fields.into_iter().map(|(k, v)| (k, v.into())).collect()
1654
- }
1655
- }
1656
-
1657
- impl From<Memo> for HashMap<String, Payload> {
1658
- fn from(h: Memo) -> Self {
1659
- h.fields.into_iter().map(|(k, v)| (k, v.into())).collect()
1660
- }
1661
- }
1662
-
1663
- impl From<SearchAttributes> for HashMap<String, Payload> {
1664
- fn from(h: SearchAttributes) -> Self {
1665
- h.indexed_fields
1666
- .into_iter()
1667
- .map(|(k, v)| (k, v.into()))
1668
- .collect()
1669
- }
1670
- }
1671
-
1672
- impl From<HashMap<String, Payload>> for SearchAttributes {
1673
- fn from(h: HashMap<String, Payload>) -> Self {
1674
- Self {
1675
- indexed_fields: h.into_iter().map(|(k, v)| (k, v.into())).collect(),
1676
- }
1677
- }
1678
- }
1679
-
1680
- impl From<String> for ActivityType {
1681
- fn from(name: String) -> Self {
1682
- Self { name }
1683
- }
1684
- }
1685
-
1686
- impl From<&str> for ActivityType {
1687
- fn from(name: &str) -> Self {
1688
- Self {
1689
- name: name.to_string(),
1690
- }
1691
- }
1692
- }
1693
-
1694
- impl From<ActivityType> for String {
1695
- fn from(at: ActivityType) -> Self {
1696
- at.name
1697
- }
1698
- }
1699
- }
1700
- }
1701
- pub mod enums {
1702
- pub mod v1 {
1703
- tonic::include_proto!("temporal.api.enums.v1");
1704
- }
1705
- }
1706
- pub mod failure {
1707
- pub mod v1 {
1708
- tonic::include_proto!("temporal.api.failure.v1");
1709
- }
1710
- }
1711
- pub mod filter {
1712
- pub mod v1 {
1713
- tonic::include_proto!("temporal.api.filter.v1");
1714
- }
1715
- }
1716
- pub mod history {
1717
- pub mod v1 {
1718
- use crate::temporal::api::{
1719
- enums::v1::EventType, history::v1::history_event::Attributes,
1720
- };
1721
- use anyhow::bail;
1722
- use prost::alloc::fmt::Formatter;
1723
- use std::fmt::Display;
1724
-
1725
- tonic::include_proto!("temporal.api.history.v1");
1726
-
1727
- impl History {
1728
- pub fn extract_run_id_from_start(&self) -> Result<&str, anyhow::Error> {
1729
- extract_original_run_id_from_events(&self.events)
1730
- }
1731
-
1732
- /// Returns the event id of the final event in the history. Will return 0 if
1733
- /// there are no events.
1734
- pub fn last_event_id(&self) -> i64 {
1735
- self.events.last().map(|e| e.event_id).unwrap_or_default()
1736
- }
1737
- }
1738
-
1739
- pub fn extract_original_run_id_from_events(
1740
- events: &[HistoryEvent],
1741
- ) -> Result<&str, anyhow::Error> {
1742
- if let Some(Attributes::WorkflowExecutionStartedEventAttributes(wes)) =
1743
- events.get(0).and_then(|x| x.attributes.as_ref())
1744
- {
1745
- Ok(&wes.original_execution_run_id)
1746
- } else {
1747
- bail!("First event is not WorkflowExecutionStarted?!?")
1748
- }
1749
- }
1750
-
1751
- impl HistoryEvent {
1752
- /// Returns true if this is an event created to mirror a command
1753
- pub fn is_command_event(&self) -> bool {
1754
- EventType::from_i32(self.event_type).map_or(false, |et| match et {
1755
- EventType::ActivityTaskScheduled
1756
- | EventType::ActivityTaskCancelRequested
1757
- | EventType::MarkerRecorded
1758
- | EventType::RequestCancelExternalWorkflowExecutionInitiated
1759
- | EventType::SignalExternalWorkflowExecutionInitiated
1760
- | EventType::StartChildWorkflowExecutionInitiated
1761
- | EventType::TimerCanceled
1762
- | EventType::TimerStarted
1763
- | EventType::UpsertWorkflowSearchAttributes
1764
- | EventType::WorkflowPropertiesModified
1765
- | EventType::WorkflowExecutionCanceled
1766
- | EventType::WorkflowExecutionCompleted
1767
- | EventType::WorkflowExecutionContinuedAsNew
1768
- | EventType::WorkflowExecutionFailed => true,
1769
- _ => false,
1770
- })
1771
- }
1772
-
1773
- /// Returns the command's initiating event id, if present. This is the id of the
1774
- /// event which "started" the command. Usually, the "scheduled" event for the
1775
- /// command.
1776
- pub fn get_initial_command_event_id(&self) -> Option<i64> {
1777
- self.attributes.as_ref().and_then(|a| {
1778
- // Fun! Not really any way to make this better w/o incompatibly changing
1779
- // protos.
1780
- match a {
1781
- Attributes::ActivityTaskStartedEventAttributes(a) =>
1782
- Some(a.scheduled_event_id),
1783
- Attributes::ActivityTaskCompletedEventAttributes(a) =>
1784
- Some(a.scheduled_event_id),
1785
- Attributes::ActivityTaskFailedEventAttributes(a) => Some(a.scheduled_event_id),
1786
- Attributes::ActivityTaskTimedOutEventAttributes(a) => Some(a.scheduled_event_id),
1787
- Attributes::ActivityTaskCancelRequestedEventAttributes(a) => Some(a.scheduled_event_id),
1788
- Attributes::ActivityTaskCanceledEventAttributes(a) => Some(a.scheduled_event_id),
1789
- Attributes::TimerFiredEventAttributes(a) => Some(a.started_event_id),
1790
- Attributes::TimerCanceledEventAttributes(a) => Some(a.started_event_id),
1791
- Attributes::RequestCancelExternalWorkflowExecutionFailedEventAttributes(a) => Some(a.initiated_event_id),
1792
- Attributes::ExternalWorkflowExecutionCancelRequestedEventAttributes(a) => Some(a.initiated_event_id),
1793
- Attributes::StartChildWorkflowExecutionFailedEventAttributes(a) => Some(a.initiated_event_id),
1794
- Attributes::ChildWorkflowExecutionStartedEventAttributes(a) => Some(a.initiated_event_id),
1795
- Attributes::ChildWorkflowExecutionCompletedEventAttributes(a) => Some(a.initiated_event_id),
1796
- Attributes::ChildWorkflowExecutionFailedEventAttributes(a) => Some(a.initiated_event_id),
1797
- Attributes::ChildWorkflowExecutionCanceledEventAttributes(a) => Some(a.initiated_event_id),
1798
- Attributes::ChildWorkflowExecutionTimedOutEventAttributes(a) => Some(a.initiated_event_id),
1799
- Attributes::ChildWorkflowExecutionTerminatedEventAttributes(a) => Some(a.initiated_event_id),
1800
- Attributes::SignalExternalWorkflowExecutionFailedEventAttributes(a) => Some(a.initiated_event_id),
1801
- Attributes::ExternalWorkflowExecutionSignaledEventAttributes(a) => Some(a.initiated_event_id),
1802
- Attributes::WorkflowTaskStartedEventAttributes(a) => Some(a.scheduled_event_id),
1803
- Attributes::WorkflowTaskCompletedEventAttributes(a) => Some(a.scheduled_event_id),
1804
- Attributes::WorkflowTaskTimedOutEventAttributes(a) => Some(a.scheduled_event_id),
1805
- Attributes::WorkflowTaskFailedEventAttributes(a) => Some(a.scheduled_event_id),
1806
- _ => None
1807
- }
1808
- })
1809
- }
1810
-
1811
- /// Returns true if the event is one which would end a workflow
1812
- pub fn is_final_wf_execution_event(&self) -> bool {
1813
- match self.event_type() {
1814
- EventType::WorkflowExecutionCompleted => true,
1815
- EventType::WorkflowExecutionCanceled => true,
1816
- EventType::WorkflowExecutionFailed => true,
1817
- EventType::WorkflowExecutionTimedOut => true,
1818
- EventType::WorkflowExecutionContinuedAsNew => true,
1819
- EventType::WorkflowExecutionTerminated => true,
1820
- _ => false,
1821
- }
1822
- }
1823
-
1824
- pub fn is_wft_closed_event(&self) -> bool {
1825
- match self.event_type() {
1826
- EventType::WorkflowTaskCompleted => true,
1827
- EventType::WorkflowTaskFailed => true,
1828
- EventType::WorkflowTaskTimedOut => true,
1829
- _ => false,
1830
- }
1831
- }
1832
- }
1833
-
1834
- impl Display for HistoryEvent {
1835
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1836
- write!(
1837
- f,
1838
- "HistoryEvent(id: {}, {:?})",
1839
- self.event_id,
1840
- EventType::from_i32(self.event_type)
1841
- )
1842
- }
1843
- }
1844
-
1845
- impl Attributes {
1846
- pub fn event_type(&self) -> EventType {
1847
- // I just absolutely _love_ this
1848
- match self {
1849
- Attributes::WorkflowExecutionStartedEventAttributes(_) => {EventType::WorkflowExecutionStarted}
1850
- Attributes::WorkflowExecutionCompletedEventAttributes(_) => {EventType::WorkflowExecutionCompleted}
1851
- Attributes::WorkflowExecutionFailedEventAttributes(_) => {EventType::WorkflowExecutionFailed}
1852
- Attributes::WorkflowExecutionTimedOutEventAttributes(_) => {EventType::WorkflowExecutionTimedOut}
1853
- Attributes::WorkflowTaskScheduledEventAttributes(_) => {EventType::WorkflowTaskScheduled}
1854
- Attributes::WorkflowTaskStartedEventAttributes(_) => {EventType::WorkflowTaskStarted}
1855
- Attributes::WorkflowTaskCompletedEventAttributes(_) => {EventType::WorkflowTaskCompleted}
1856
- Attributes::WorkflowTaskTimedOutEventAttributes(_) => {EventType::WorkflowTaskTimedOut}
1857
- Attributes::WorkflowTaskFailedEventAttributes(_) => {EventType::WorkflowTaskFailed}
1858
- Attributes::ActivityTaskScheduledEventAttributes(_) => {EventType::ActivityTaskScheduled}
1859
- Attributes::ActivityTaskStartedEventAttributes(_) => {EventType::ActivityTaskStarted}
1860
- Attributes::ActivityTaskCompletedEventAttributes(_) => {EventType::ActivityTaskCompleted}
1861
- Attributes::ActivityTaskFailedEventAttributes(_) => {EventType::ActivityTaskFailed}
1862
- Attributes::ActivityTaskTimedOutEventAttributes(_) => {EventType::ActivityTaskTimedOut}
1863
- Attributes::TimerStartedEventAttributes(_) => {EventType::TimerStarted}
1864
- Attributes::TimerFiredEventAttributes(_) => {EventType::TimerFired}
1865
- Attributes::ActivityTaskCancelRequestedEventAttributes(_) => {EventType::ActivityTaskCancelRequested}
1866
- Attributes::ActivityTaskCanceledEventAttributes(_) => {EventType::ActivityTaskCanceled}
1867
- Attributes::TimerCanceledEventAttributes(_) => {EventType::TimerCanceled}
1868
- Attributes::MarkerRecordedEventAttributes(_) => {EventType::MarkerRecorded}
1869
- Attributes::WorkflowExecutionSignaledEventAttributes(_) => {EventType::WorkflowExecutionSignaled}
1870
- Attributes::WorkflowExecutionTerminatedEventAttributes(_) => {EventType::WorkflowExecutionTerminated}
1871
- Attributes::WorkflowExecutionCancelRequestedEventAttributes(_) => {EventType::WorkflowExecutionCancelRequested}
1872
- Attributes::WorkflowExecutionCanceledEventAttributes(_) => {EventType::WorkflowExecutionCanceled}
1873
- Attributes::RequestCancelExternalWorkflowExecutionInitiatedEventAttributes(_) => {EventType::RequestCancelExternalWorkflowExecutionInitiated}
1874
- Attributes::RequestCancelExternalWorkflowExecutionFailedEventAttributes(_) => {EventType::RequestCancelExternalWorkflowExecutionFailed}
1875
- Attributes::ExternalWorkflowExecutionCancelRequestedEventAttributes(_) => {EventType::ExternalWorkflowExecutionCancelRequested}
1876
- Attributes::WorkflowExecutionContinuedAsNewEventAttributes(_) => {EventType::WorkflowExecutionContinuedAsNew}
1877
- Attributes::StartChildWorkflowExecutionInitiatedEventAttributes(_) => {EventType::StartChildWorkflowExecutionInitiated}
1878
- Attributes::StartChildWorkflowExecutionFailedEventAttributes(_) => {EventType::StartChildWorkflowExecutionFailed}
1879
- Attributes::ChildWorkflowExecutionStartedEventAttributes(_) => {EventType::ChildWorkflowExecutionStarted}
1880
- Attributes::ChildWorkflowExecutionCompletedEventAttributes(_) => {EventType::ChildWorkflowExecutionCompleted}
1881
- Attributes::ChildWorkflowExecutionFailedEventAttributes(_) => {EventType::ChildWorkflowExecutionFailed}
1882
- Attributes::ChildWorkflowExecutionCanceledEventAttributes(_) => {EventType::ChildWorkflowExecutionCanceled}
1883
- Attributes::ChildWorkflowExecutionTimedOutEventAttributes(_) => {EventType::ChildWorkflowExecutionTimedOut}
1884
- Attributes::ChildWorkflowExecutionTerminatedEventAttributes(_) => {EventType::ChildWorkflowExecutionTerminated}
1885
- Attributes::SignalExternalWorkflowExecutionInitiatedEventAttributes(_) => {EventType::SignalExternalWorkflowExecutionInitiated}
1886
- Attributes::SignalExternalWorkflowExecutionFailedEventAttributes(_) => {EventType::SignalExternalWorkflowExecutionFailed}
1887
- Attributes::ExternalWorkflowExecutionSignaledEventAttributes(_) => {EventType::ExternalWorkflowExecutionSignaled}
1888
- Attributes::UpsertWorkflowSearchAttributesEventAttributes(_) => {EventType::UpsertWorkflowSearchAttributes}
1889
- Attributes::WorkflowExecutionUpdateRejectedEventAttributes(_) => {EventType::WorkflowExecutionUpdateRejected}
1890
- Attributes::WorkflowExecutionUpdateAcceptedEventAttributes(_) => {EventType::WorkflowExecutionUpdateAccepted}
1891
- Attributes::WorkflowExecutionUpdateCompletedEventAttributes(_) => {EventType::WorkflowExecutionUpdateCompleted}
1892
- Attributes::WorkflowPropertiesModifiedExternallyEventAttributes(_) => {EventType::WorkflowPropertiesModifiedExternally}
1893
- Attributes::ActivityPropertiesModifiedExternallyEventAttributes(_) => {EventType::ActivityPropertiesModifiedExternally}
1894
- Attributes::WorkflowPropertiesModifiedEventAttributes(_) => {EventType::WorkflowPropertiesModified}
1895
- }
1896
- }
1897
- }
1898
- }
1899
- }
1900
- pub mod namespace {
1901
- pub mod v1 {
1902
- tonic::include_proto!("temporal.api.namespace.v1");
1903
- }
1904
- }
1905
- pub mod operatorservice {
1906
- pub mod v1 {
1907
- tonic::include_proto!("temporal.api.operatorservice.v1");
1908
- }
1909
- }
1910
- pub mod protocol {
1911
- pub mod v1 {
1912
- tonic::include_proto!("temporal.api.protocol.v1");
1913
- }
1914
- }
1915
- pub mod query {
1916
- pub mod v1 {
1917
- tonic::include_proto!("temporal.api.query.v1");
1918
- }
1919
- }
1920
- pub mod replication {
1921
- pub mod v1 {
1922
- tonic::include_proto!("temporal.api.replication.v1");
1923
- }
1924
- }
1925
- pub mod schedule {
1926
- pub mod v1 {
1927
- tonic::include_proto!("temporal.api.schedule.v1");
1928
- }
1929
- }
1930
- pub mod sdk {
1931
- pub mod v1 {
1932
- tonic::include_proto!("temporal.api.sdk.v1");
1933
- }
1934
- }
1935
- pub mod taskqueue {
1936
- pub mod v1 {
1937
- use crate::temporal::api::enums::v1::TaskQueueKind;
1938
- tonic::include_proto!("temporal.api.taskqueue.v1");
1939
-
1940
- impl From<String> for TaskQueue {
1941
- fn from(name: String) -> Self {
1942
- Self {
1943
- name,
1944
- kind: TaskQueueKind::Normal as i32,
1945
- }
1946
- }
1947
- }
1948
- }
1949
- }
1950
- pub mod testservice {
1951
- pub mod v1 {
1952
- tonic::include_proto!("temporal.api.testservice.v1");
1953
- }
1954
- }
1955
- pub mod update {
1956
- pub mod v1 {
1957
- tonic::include_proto!("temporal.api.update.v1");
1958
- }
1959
- }
1960
- pub mod version {
1961
- pub mod v1 {
1962
- tonic::include_proto!("temporal.api.version.v1");
1963
- }
1964
- }
1965
- pub mod workflow {
1966
- pub mod v1 {
1967
- tonic::include_proto!("temporal.api.workflow.v1");
1968
- }
1969
- }
1970
- pub mod workflowservice {
1971
- pub mod v1 {
1972
- use std::{
1973
- convert::TryInto,
1974
- fmt::{Display, Formatter},
1975
- time::{Duration, SystemTime},
1976
- };
1977
-
1978
- tonic::include_proto!("temporal.api.workflowservice.v1");
1979
-
1980
- macro_rules! sched_to_start_impl {
1981
- ($sched_field:ident) => {
1982
- /// Return the duration of the task schedule time (current attempt) to its
1983
- /// start time if both are set and time went forward.
1984
- pub fn sched_to_start(&self) -> Option<Duration> {
1985
- if let Some((sch, st)) =
1986
- self.$sched_field.clone().zip(self.started_time.clone())
1987
- {
1988
- let sch: Result<SystemTime, _> = sch.try_into();
1989
- let st: Result<SystemTime, _> = st.try_into();
1990
- if let (Ok(sch), Ok(st)) = (sch, st) {
1991
- return st.duration_since(sch).ok();
1992
- }
1993
- }
1994
- None
1995
- }
1996
- };
1997
- }
1998
-
1999
- impl PollWorkflowTaskQueueResponse {
2000
- sched_to_start_impl!(scheduled_time);
2001
- }
2002
-
2003
- impl Display for PollWorkflowTaskQueueResponse {
2004
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
2005
- let last_event = self
2006
- .history
2007
- .as_ref()
2008
- .and_then(|h| h.events.last().map(|he| he.event_id))
2009
- .unwrap_or(0);
2010
- write!(
2011
- f,
2012
- "PollWFTQResp(run_id: {}, attempt: {}, last_event: {})",
2013
- self.workflow_execution
2014
- .as_ref()
2015
- .map_or("", |we| we.run_id.as_str()),
2016
- self.attempt,
2017
- last_event
2018
- )
2019
- }
2020
- }
2021
-
2022
- /// Can be used while debugging to avoid filling up a whole screen with poll resps
2023
- pub struct CompactHist<'a>(pub &'a PollWorkflowTaskQueueResponse);
2024
- impl Display for CompactHist<'_> {
2025
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
2026
- writeln!(
2027
- f,
2028
- "PollWorkflowTaskQueueResponse (prev_started: {}, started: {})",
2029
- self.0.previous_started_event_id, self.0.started_event_id
2030
- )?;
2031
- if let Some(h) = self.0.history.as_ref() {
2032
- for event in &h.events {
2033
- writeln!(f, "{}", event)?;
2034
- }
2035
- }
2036
- writeln!(f, "query: {:#?}", self.0.query)?;
2037
- writeln!(f, "queries: {:#?}", self.0.queries)
2038
- }
2039
- }
2040
-
2041
- impl PollActivityTaskQueueResponse {
2042
- sched_to_start_impl!(current_attempt_scheduled_time);
2043
- }
2044
-
2045
- impl QueryWorkflowResponse {
2046
- /// Unwrap a successful response as vec of payloads
2047
- pub fn unwrap(self) -> Vec<crate::temporal::api::common::v1::Payload> {
2048
- self.query_result.unwrap().payloads
2049
- }
2050
- }
2051
- }
2052
- }
2053
- }
2054
- }
2055
-
2056
- #[allow(
2057
- clippy::all,
2058
- missing_docs,
2059
- rustdoc::broken_intra_doc_links,
2060
- rustdoc::bare_urls
2061
- )]
2062
- pub mod grpc {
2063
- pub mod health {
2064
- pub mod v1 {
2065
- tonic::include_proto!("grpc.health.v1");
2066
- }
2067
- }
2068
- }
2069
-
2070
- #[cfg(test)]
2071
- mod tests {
2072
- use crate::temporal::api::failure::v1::Failure;
2073
- use anyhow::anyhow;
2074
-
2075
- #[test]
2076
- fn anyhow_to_failure_conversion() {
2077
- let no_causes: Failure = anyhow!("no causes").into();
2078
- assert_eq!(no_causes.cause, None);
2079
- assert_eq!(no_causes.message, "no causes");
2080
- let orig = anyhow!("fail 1");
2081
- let mid = orig.context("fail 2");
2082
- let top = mid.context("fail 3");
2083
- let as_fail: Failure = top.into();
2084
- assert_eq!(as_fail.message, "fail 3");
2085
- assert_eq!(as_fail.cause.as_ref().unwrap().message, "fail 2");
2086
- assert_eq!(as_fail.cause.unwrap().cause.unwrap().message, "fail 1");
2087
- }
2088
- }