temporalio 0.0.0 → 0.0.2

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 (327) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +301 -0
  3. data/bridge/Cargo.lock +2888 -0
  4. data/bridge/Cargo.toml +27 -0
  5. data/bridge/sdk-core/ARCHITECTURE.md +76 -0
  6. data/bridge/sdk-core/Cargo.lock +2606 -0
  7. data/bridge/sdk-core/Cargo.toml +2 -0
  8. data/bridge/sdk-core/LICENSE.txt +23 -0
  9. data/bridge/sdk-core/README.md +104 -0
  10. data/bridge/sdk-core/arch_docs/diagrams/README.md +10 -0
  11. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +40 -0
  12. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +1 -0
  13. data/bridge/sdk-core/arch_docs/sticky_queues.md +51 -0
  14. data/bridge/sdk-core/client/Cargo.toml +40 -0
  15. data/bridge/sdk-core/client/LICENSE.txt +23 -0
  16. data/bridge/sdk-core/client/src/lib.rs +1286 -0
  17. data/bridge/sdk-core/client/src/metrics.rs +165 -0
  18. data/bridge/sdk-core/client/src/raw.rs +932 -0
  19. data/bridge/sdk-core/client/src/retry.rs +751 -0
  20. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +185 -0
  21. data/bridge/sdk-core/core/Cargo.toml +116 -0
  22. data/bridge/sdk-core/core/LICENSE.txt +23 -0
  23. data/bridge/sdk-core/core/benches/workflow_replay.rs +76 -0
  24. data/bridge/sdk-core/core/src/abstractions.rs +166 -0
  25. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +1014 -0
  26. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +221 -0
  27. data/bridge/sdk-core/core/src/core_tests/determinism.rs +107 -0
  28. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +925 -0
  29. data/bridge/sdk-core/core/src/core_tests/mod.rs +100 -0
  30. data/bridge/sdk-core/core/src/core_tests/queries.rs +894 -0
  31. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +65 -0
  32. data/bridge/sdk-core/core/src/core_tests/workers.rs +259 -0
  33. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +124 -0
  34. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +2090 -0
  35. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +515 -0
  36. data/bridge/sdk-core/core/src/lib.rs +282 -0
  37. data/bridge/sdk-core/core/src/pollers/mod.rs +54 -0
  38. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +297 -0
  39. data/bridge/sdk-core/core/src/protosext/mod.rs +428 -0
  40. data/bridge/sdk-core/core/src/replay/mod.rs +215 -0
  41. data/bridge/sdk-core/core/src/retry_logic.rs +202 -0
  42. data/bridge/sdk-core/core/src/telemetry/log_export.rs +190 -0
  43. data/bridge/sdk-core/core/src/telemetry/metrics.rs +428 -0
  44. data/bridge/sdk-core/core/src/telemetry/mod.rs +407 -0
  45. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +78 -0
  46. data/bridge/sdk-core/core/src/test_help/mod.rs +889 -0
  47. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +580 -0
  48. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +1048 -0
  49. data/bridge/sdk-core/core/src/worker/activities.rs +481 -0
  50. data/bridge/sdk-core/core/src/worker/client/mocks.rs +87 -0
  51. data/bridge/sdk-core/core/src/worker/client.rs +373 -0
  52. data/bridge/sdk-core/core/src/worker/mod.rs +570 -0
  53. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +37 -0
  54. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +101 -0
  55. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +532 -0
  56. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +907 -0
  57. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +294 -0
  58. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +167 -0
  59. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +858 -0
  60. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +136 -0
  61. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +157 -0
  62. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +129 -0
  63. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +1450 -0
  64. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +316 -0
  65. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +178 -0
  66. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +708 -0
  67. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +439 -0
  68. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +435 -0
  69. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +175 -0
  70. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +242 -0
  71. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +96 -0
  72. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +1200 -0
  73. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +272 -0
  74. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +198 -0
  75. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +655 -0
  76. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +1200 -0
  77. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +145 -0
  78. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +88 -0
  79. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +985 -0
  80. data/bridge/sdk-core/core-api/Cargo.toml +32 -0
  81. data/bridge/sdk-core/core-api/LICENSE.txt +23 -0
  82. data/bridge/sdk-core/core-api/src/errors.rs +95 -0
  83. data/bridge/sdk-core/core-api/src/lib.rs +109 -0
  84. data/bridge/sdk-core/core-api/src/telemetry.rs +147 -0
  85. data/bridge/sdk-core/core-api/src/worker.rs +148 -0
  86. data/bridge/sdk-core/etc/deps.svg +162 -0
  87. data/bridge/sdk-core/etc/dynamic-config.yaml +2 -0
  88. data/bridge/sdk-core/etc/otel-collector-config.yaml +36 -0
  89. data/bridge/sdk-core/etc/prometheus.yaml +6 -0
  90. data/bridge/sdk-core/etc/regen-depgraph.sh +5 -0
  91. data/bridge/sdk-core/fsm/Cargo.toml +18 -0
  92. data/bridge/sdk-core/fsm/LICENSE.txt +23 -0
  93. data/bridge/sdk-core/fsm/README.md +3 -0
  94. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +27 -0
  95. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +23 -0
  96. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +647 -0
  97. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +8 -0
  98. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +18 -0
  99. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +12 -0
  100. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +41 -0
  101. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +14 -0
  102. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +11 -0
  103. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +32 -0
  104. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +31 -0
  105. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +46 -0
  106. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +29 -0
  107. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +12 -0
  108. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +32 -0
  109. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +18 -0
  110. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +5 -0
  111. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +11 -0
  112. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +5 -0
  113. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +11 -0
  114. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +5 -0
  115. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +14 -0
  116. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +23 -0
  117. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +249 -0
  118. data/bridge/sdk-core/fsm/src/lib.rs +2 -0
  119. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  120. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  121. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  122. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  123. data/bridge/sdk-core/integ-with-otel.sh +7 -0
  124. data/bridge/sdk-core/protos/api_upstream/README.md +9 -0
  125. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +40 -0
  126. data/bridge/sdk-core/protos/api_upstream/buf.yaml +9 -0
  127. data/bridge/sdk-core/protos/api_upstream/build/go.mod +7 -0
  128. data/bridge/sdk-core/protos/api_upstream/build/go.sum +5 -0
  129. data/bridge/sdk-core/protos/api_upstream/build/tools.go +29 -0
  130. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +141 -0
  131. data/bridge/sdk-core/protos/api_upstream/go.mod +6 -0
  132. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +89 -0
  133. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +260 -0
  134. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +112 -0
  135. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +47 -0
  136. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +57 -0
  137. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +56 -0
  138. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +170 -0
  139. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +118 -0
  140. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/interaction_type.proto +39 -0
  141. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +51 -0
  142. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +50 -0
  143. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +41 -0
  144. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +60 -0
  145. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +59 -0
  146. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +40 -0
  147. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +122 -0
  148. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +108 -0
  149. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +114 -0
  150. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +56 -0
  151. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +758 -0
  152. data/bridge/sdk-core/protos/api_upstream/temporal/api/interaction/v1/message.proto +87 -0
  153. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +97 -0
  154. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +121 -0
  155. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +80 -0
  156. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +61 -0
  157. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +55 -0
  158. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +379 -0
  159. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +108 -0
  160. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +59 -0
  161. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +146 -0
  162. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +1168 -0
  163. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +415 -0
  164. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +63 -0
  165. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +78 -0
  166. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +79 -0
  167. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +77 -0
  168. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +15 -0
  169. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +30 -0
  170. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +30 -0
  171. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +263 -0
  172. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +304 -0
  173. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +29 -0
  174. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +38 -0
  175. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +13 -0
  176. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +141 -0
  177. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +63 -0
  178. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +90 -0
  179. data/bridge/sdk-core/rustfmt.toml +1 -0
  180. data/bridge/sdk-core/sdk/Cargo.toml +47 -0
  181. data/bridge/sdk-core/sdk/LICENSE.txt +23 -0
  182. data/bridge/sdk-core/sdk/src/activity_context.rs +230 -0
  183. data/bridge/sdk-core/sdk/src/app_data.rs +37 -0
  184. data/bridge/sdk-core/sdk/src/interceptors.rs +50 -0
  185. data/bridge/sdk-core/sdk/src/lib.rs +794 -0
  186. data/bridge/sdk-core/sdk/src/payload_converter.rs +11 -0
  187. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +295 -0
  188. data/bridge/sdk-core/sdk/src/workflow_context.rs +694 -0
  189. data/bridge/sdk-core/sdk/src/workflow_future.rs +499 -0
  190. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +30 -0
  191. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +23 -0
  192. data/bridge/sdk-core/sdk-core-protos/build.rs +107 -0
  193. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +7 -0
  194. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +544 -0
  195. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +230 -0
  196. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +1970 -0
  197. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +38 -0
  198. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +14 -0
  199. data/bridge/sdk-core/test-utils/Cargo.toml +36 -0
  200. data/bridge/sdk-core/test-utils/src/canned_histories.rs +1579 -0
  201. data/bridge/sdk-core/test-utils/src/histfetch.rs +28 -0
  202. data/bridge/sdk-core/test-utils/src/lib.rs +650 -0
  203. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +36 -0
  204. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +128 -0
  205. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +221 -0
  206. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +37 -0
  207. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +133 -0
  208. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +437 -0
  209. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +93 -0
  210. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +878 -0
  211. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +61 -0
  212. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +59 -0
  213. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +58 -0
  214. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +50 -0
  215. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +60 -0
  216. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +54 -0
  217. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +788 -0
  218. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +53 -0
  219. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +113 -0
  220. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +223 -0
  221. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +93 -0
  222. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +167 -0
  223. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +99 -0
  224. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +131 -0
  225. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +75 -0
  226. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +597 -0
  227. data/bridge/sdk-core/tests/load_tests.rs +191 -0
  228. data/bridge/sdk-core/tests/main.rs +113 -0
  229. data/bridge/sdk-core/tests/runner.rs +93 -0
  230. data/bridge/src/connection.rs +186 -0
  231. data/bridge/src/lib.rs +239 -0
  232. data/bridge/src/runtime.rs +54 -0
  233. data/bridge/src/worker.rs +124 -0
  234. data/ext/Rakefile +9 -0
  235. data/lib/bridge.so +0 -0
  236. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +14 -0
  237. data/lib/gen/temporal/api/batch/v1/message_pb.rb +50 -0
  238. data/lib/gen/temporal/api/command/v1/message_pb.rb +174 -0
  239. data/lib/gen/temporal/api/common/v1/message_pb.rb +69 -0
  240. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +33 -0
  241. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +39 -0
  242. data/lib/gen/temporal/api/enums/v1/common_pb.rb +42 -0
  243. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +68 -0
  244. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +77 -0
  245. data/lib/gen/temporal/api/enums/v1/interaction_type_pb.rb +25 -0
  246. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +37 -0
  247. data/lib/gen/temporal/api/enums/v1/query_pb.rb +31 -0
  248. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +24 -0
  249. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +28 -0
  250. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +30 -0
  251. data/lib/gen/temporal/api/enums/v1/update_pb.rb +23 -0
  252. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +89 -0
  253. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +84 -0
  254. data/lib/gen/temporal/api/failure/v1/message_pb.rb +83 -0
  255. data/lib/gen/temporal/api/filter/v1/message_pb.rb +40 -0
  256. data/lib/gen/temporal/api/history/v1/message_pb.rb +490 -0
  257. data/lib/gen/temporal/api/interaction/v1/message_pb.rb +49 -0
  258. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +63 -0
  259. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +85 -0
  260. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +20 -0
  261. data/lib/gen/temporal/api/query/v1/message_pb.rb +38 -0
  262. data/lib/gen/temporal/api/replication/v1/message_pb.rb +37 -0
  263. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +149 -0
  264. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +73 -0
  265. data/lib/gen/temporal/api/version/v1/message_pb.rb +41 -0
  266. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +111 -0
  267. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +788 -0
  268. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +20 -0
  269. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +58 -0
  270. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +57 -0
  271. data/lib/gen/temporal/sdk/core/bridge/bridge_pb.rb +222 -0
  272. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +57 -0
  273. data/lib/gen/temporal/sdk/core/common/common_pb.rb +22 -0
  274. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +34 -0
  275. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +27 -0
  276. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +165 -0
  277. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +196 -0
  278. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +34 -0
  279. data/lib/temporalio/activity/context.rb +97 -0
  280. data/lib/temporalio/activity/info.rb +67 -0
  281. data/lib/temporalio/activity.rb +85 -0
  282. data/lib/temporalio/bridge/error.rb +8 -0
  283. data/lib/temporalio/bridge.rb +14 -0
  284. data/lib/temporalio/client/implementation.rb +340 -0
  285. data/lib/temporalio/client/workflow_handle.rb +243 -0
  286. data/lib/temporalio/client.rb +131 -0
  287. data/lib/temporalio/connection.rb +751 -0
  288. data/lib/temporalio/data_converter.rb +191 -0
  289. data/lib/temporalio/error/failure.rb +194 -0
  290. data/lib/temporalio/error/workflow_failure.rb +19 -0
  291. data/lib/temporalio/errors.rb +40 -0
  292. data/lib/temporalio/failure_converter/base.rb +26 -0
  293. data/lib/temporalio/failure_converter/basic.rb +319 -0
  294. data/lib/temporalio/failure_converter.rb +7 -0
  295. data/lib/temporalio/interceptor/chain.rb +28 -0
  296. data/lib/temporalio/interceptor/client.rb +123 -0
  297. data/lib/temporalio/payload_codec/base.rb +32 -0
  298. data/lib/temporalio/payload_converter/base.rb +24 -0
  299. data/lib/temporalio/payload_converter/bytes.rb +27 -0
  300. data/lib/temporalio/payload_converter/composite.rb +49 -0
  301. data/lib/temporalio/payload_converter/encoding_base.rb +35 -0
  302. data/lib/temporalio/payload_converter/json.rb +26 -0
  303. data/lib/temporalio/payload_converter/nil.rb +26 -0
  304. data/lib/temporalio/payload_converter.rb +14 -0
  305. data/lib/temporalio/retry_policy.rb +82 -0
  306. data/lib/temporalio/retry_state.rb +35 -0
  307. data/lib/temporalio/runtime.rb +25 -0
  308. data/lib/temporalio/timeout_type.rb +29 -0
  309. data/lib/temporalio/version.rb +3 -0
  310. data/lib/temporalio/worker/activity_runner.rb +92 -0
  311. data/lib/temporalio/worker/activity_worker.rb +138 -0
  312. data/lib/temporalio/worker/reactor.rb +46 -0
  313. data/lib/temporalio/worker/runner.rb +63 -0
  314. data/lib/temporalio/worker/sync_worker.rb +88 -0
  315. data/lib/temporalio/worker/thread_pool_executor.rb +51 -0
  316. data/lib/temporalio/worker.rb +198 -0
  317. data/lib/temporalio/workflow/execution_info.rb +54 -0
  318. data/lib/temporalio/workflow/execution_status.rb +36 -0
  319. data/lib/temporalio/workflow/id_reuse_policy.rb +36 -0
  320. data/lib/temporalio/workflow/query_reject_condition.rb +33 -0
  321. data/lib/temporalio.rb +12 -1
  322. data/lib/thermite_patch.rb +23 -0
  323. data/temporalio.gemspec +45 -0
  324. metadata +566 -9
  325. data/lib/temporal/version.rb +0 -3
  326. data/lib/temporal.rb +0 -4
  327. data/temporal.gemspec +0 -20
@@ -0,0 +1,165 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: temporal/sdk/core/workflow_activation/workflow_activation.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ require 'google/protobuf/timestamp_pb'
7
+ require 'google/protobuf/duration_pb'
8
+ require 'temporal/api/failure/v1/message_pb'
9
+ require 'temporal/api/common/v1/message_pb'
10
+ require 'temporal/api/enums/v1/workflow_pb'
11
+ require 'temporal/sdk/core/activity_result/activity_result_pb'
12
+ require 'temporal/sdk/core/child_workflow/child_workflow_pb'
13
+ require 'temporal/sdk/core/common/common_pb'
14
+
15
+ Google::Protobuf::DescriptorPool.generated_pool.build do
16
+ add_file("temporal/sdk/core/workflow_activation/workflow_activation.proto", :syntax => :proto3) do
17
+ add_message "coresdk.workflow_activation.WorkflowActivation" do
18
+ optional :run_id, :string, 1
19
+ optional :timestamp, :message, 2, "google.protobuf.Timestamp"
20
+ optional :is_replaying, :bool, 3
21
+ optional :history_length, :uint32, 4
22
+ repeated :jobs, :message, 5, "coresdk.workflow_activation.WorkflowActivationJob"
23
+ end
24
+ add_message "coresdk.workflow_activation.WorkflowActivationJob" do
25
+ oneof :variant do
26
+ optional :start_workflow, :message, 1, "coresdk.workflow_activation.StartWorkflow"
27
+ optional :fire_timer, :message, 2, "coresdk.workflow_activation.FireTimer"
28
+ optional :update_random_seed, :message, 4, "coresdk.workflow_activation.UpdateRandomSeed"
29
+ optional :query_workflow, :message, 5, "coresdk.workflow_activation.QueryWorkflow"
30
+ optional :cancel_workflow, :message, 6, "coresdk.workflow_activation.CancelWorkflow"
31
+ optional :signal_workflow, :message, 7, "coresdk.workflow_activation.SignalWorkflow"
32
+ optional :resolve_activity, :message, 8, "coresdk.workflow_activation.ResolveActivity"
33
+ optional :notify_has_patch, :message, 9, "coresdk.workflow_activation.NotifyHasPatch"
34
+ optional :resolve_child_workflow_execution_start, :message, 10, "coresdk.workflow_activation.ResolveChildWorkflowExecutionStart"
35
+ optional :resolve_child_workflow_execution, :message, 11, "coresdk.workflow_activation.ResolveChildWorkflowExecution"
36
+ optional :resolve_signal_external_workflow, :message, 12, "coresdk.workflow_activation.ResolveSignalExternalWorkflow"
37
+ optional :resolve_request_cancel_external_workflow, :message, 13, "coresdk.workflow_activation.ResolveRequestCancelExternalWorkflow"
38
+ optional :remove_from_cache, :message, 50, "coresdk.workflow_activation.RemoveFromCache"
39
+ end
40
+ end
41
+ add_message "coresdk.workflow_activation.StartWorkflow" do
42
+ optional :workflow_type, :string, 1
43
+ optional :workflow_id, :string, 2
44
+ repeated :arguments, :message, 3, "temporal.api.common.v1.Payload"
45
+ optional :randomness_seed, :uint64, 4
46
+ map :headers, :string, :message, 5, "temporal.api.common.v1.Payload"
47
+ optional :identity, :string, 6
48
+ optional :parent_workflow_info, :message, 7, "coresdk.common.NamespacedWorkflowExecution"
49
+ optional :workflow_execution_timeout, :message, 8, "google.protobuf.Duration"
50
+ optional :workflow_run_timeout, :message, 9, "google.protobuf.Duration"
51
+ optional :workflow_task_timeout, :message, 10, "google.protobuf.Duration"
52
+ optional :continued_from_execution_run_id, :string, 11
53
+ optional :continued_initiator, :enum, 12, "temporal.api.enums.v1.ContinueAsNewInitiator"
54
+ optional :continued_failure, :message, 13, "temporal.api.failure.v1.Failure"
55
+ optional :last_completion_result, :message, 14, "temporal.api.common.v1.Payloads"
56
+ optional :first_execution_run_id, :string, 15
57
+ optional :retry_policy, :message, 16, "temporal.api.common.v1.RetryPolicy"
58
+ optional :attempt, :int32, 17
59
+ optional :cron_schedule, :string, 18
60
+ optional :workflow_execution_expiration_time, :message, 19, "google.protobuf.Timestamp"
61
+ optional :cron_schedule_to_schedule_interval, :message, 20, "google.protobuf.Duration"
62
+ optional :memo, :message, 21, "temporal.api.common.v1.Memo"
63
+ optional :search_attributes, :message, 22, "temporal.api.common.v1.SearchAttributes"
64
+ optional :start_time, :message, 23, "google.protobuf.Timestamp"
65
+ end
66
+ add_message "coresdk.workflow_activation.FireTimer" do
67
+ optional :seq, :uint32, 1
68
+ end
69
+ add_message "coresdk.workflow_activation.ResolveActivity" do
70
+ optional :seq, :uint32, 1
71
+ optional :result, :message, 2, "coresdk.activity_result.ActivityResolution"
72
+ end
73
+ add_message "coresdk.workflow_activation.ResolveChildWorkflowExecutionStart" do
74
+ optional :seq, :uint32, 1
75
+ oneof :status do
76
+ optional :succeeded, :message, 2, "coresdk.workflow_activation.ResolveChildWorkflowExecutionStartSuccess"
77
+ optional :failed, :message, 3, "coresdk.workflow_activation.ResolveChildWorkflowExecutionStartFailure"
78
+ optional :cancelled, :message, 4, "coresdk.workflow_activation.ResolveChildWorkflowExecutionStartCancelled"
79
+ end
80
+ end
81
+ add_message "coresdk.workflow_activation.ResolveChildWorkflowExecutionStartSuccess" do
82
+ optional :run_id, :string, 1
83
+ end
84
+ add_message "coresdk.workflow_activation.ResolveChildWorkflowExecutionStartFailure" do
85
+ optional :workflow_id, :string, 1
86
+ optional :workflow_type, :string, 2
87
+ optional :cause, :enum, 3, "coresdk.child_workflow.StartChildWorkflowExecutionFailedCause"
88
+ end
89
+ add_message "coresdk.workflow_activation.ResolveChildWorkflowExecutionStartCancelled" do
90
+ optional :failure, :message, 1, "temporal.api.failure.v1.Failure"
91
+ end
92
+ add_message "coresdk.workflow_activation.ResolveChildWorkflowExecution" do
93
+ optional :seq, :uint32, 1
94
+ optional :result, :message, 2, "coresdk.child_workflow.ChildWorkflowResult"
95
+ end
96
+ add_message "coresdk.workflow_activation.UpdateRandomSeed" do
97
+ optional :randomness_seed, :uint64, 1
98
+ end
99
+ add_message "coresdk.workflow_activation.QueryWorkflow" do
100
+ optional :query_id, :string, 1
101
+ optional :query_type, :string, 2
102
+ repeated :arguments, :message, 3, "temporal.api.common.v1.Payload"
103
+ map :headers, :string, :message, 5, "temporal.api.common.v1.Payload"
104
+ end
105
+ add_message "coresdk.workflow_activation.CancelWorkflow" do
106
+ repeated :details, :message, 1, "temporal.api.common.v1.Payload"
107
+ end
108
+ add_message "coresdk.workflow_activation.SignalWorkflow" do
109
+ optional :signal_name, :string, 1
110
+ repeated :input, :message, 2, "temporal.api.common.v1.Payload"
111
+ optional :identity, :string, 3
112
+ map :headers, :string, :message, 5, "temporal.api.common.v1.Payload"
113
+ end
114
+ add_message "coresdk.workflow_activation.NotifyHasPatch" do
115
+ optional :patch_id, :string, 1
116
+ end
117
+ add_message "coresdk.workflow_activation.ResolveSignalExternalWorkflow" do
118
+ optional :seq, :uint32, 1
119
+ optional :failure, :message, 2, "temporal.api.failure.v1.Failure"
120
+ end
121
+ add_message "coresdk.workflow_activation.ResolveRequestCancelExternalWorkflow" do
122
+ optional :seq, :uint32, 1
123
+ optional :failure, :message, 2, "temporal.api.failure.v1.Failure"
124
+ end
125
+ add_message "coresdk.workflow_activation.RemoveFromCache" do
126
+ optional :message, :string, 1
127
+ optional :reason, :enum, 2, "coresdk.workflow_activation.RemoveFromCache.EvictionReason"
128
+ end
129
+ add_enum "coresdk.workflow_activation.RemoveFromCache.EvictionReason" do
130
+ value :UNSPECIFIED, 0
131
+ value :CACHE_FULL, 1
132
+ value :CACHE_MISS, 2
133
+ value :NONDETERMINISM, 3
134
+ value :LANG_FAIL, 4
135
+ value :LANG_REQUESTED, 5
136
+ value :TASK_NOT_FOUND, 6
137
+ value :UNHANDLED_COMMAND, 7
138
+ value :FATAL, 8
139
+ end
140
+ end
141
+ end
142
+
143
+ module Coresdk
144
+ module WorkflowActivation
145
+ WorkflowActivation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.WorkflowActivation").msgclass
146
+ WorkflowActivationJob = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.WorkflowActivationJob").msgclass
147
+ StartWorkflow = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.StartWorkflow").msgclass
148
+ FireTimer = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.FireTimer").msgclass
149
+ ResolveActivity = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.ResolveActivity").msgclass
150
+ ResolveChildWorkflowExecutionStart = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.ResolveChildWorkflowExecutionStart").msgclass
151
+ ResolveChildWorkflowExecutionStartSuccess = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.ResolveChildWorkflowExecutionStartSuccess").msgclass
152
+ ResolveChildWorkflowExecutionStartFailure = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.ResolveChildWorkflowExecutionStartFailure").msgclass
153
+ ResolveChildWorkflowExecutionStartCancelled = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.ResolveChildWorkflowExecutionStartCancelled").msgclass
154
+ ResolveChildWorkflowExecution = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.ResolveChildWorkflowExecution").msgclass
155
+ UpdateRandomSeed = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.UpdateRandomSeed").msgclass
156
+ QueryWorkflow = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.QueryWorkflow").msgclass
157
+ CancelWorkflow = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.CancelWorkflow").msgclass
158
+ SignalWorkflow = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.SignalWorkflow").msgclass
159
+ NotifyHasPatch = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.NotifyHasPatch").msgclass
160
+ ResolveSignalExternalWorkflow = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.ResolveSignalExternalWorkflow").msgclass
161
+ ResolveRequestCancelExternalWorkflow = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.ResolveRequestCancelExternalWorkflow").msgclass
162
+ RemoveFromCache = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.RemoveFromCache").msgclass
163
+ RemoveFromCache::EvictionReason = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_activation.RemoveFromCache.EvictionReason").enummodule
164
+ end
165
+ end
@@ -0,0 +1,196 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: temporal/sdk/core/workflow_commands/workflow_commands.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ require 'google/protobuf/duration_pb'
7
+ require 'google/protobuf/timestamp_pb'
8
+ require 'temporal/api/common/v1/message_pb'
9
+ require 'temporal/api/enums/v1/workflow_pb'
10
+ require 'temporal/api/failure/v1/message_pb'
11
+ require 'temporal/sdk/core/child_workflow/child_workflow_pb'
12
+ require 'temporal/sdk/core/common/common_pb'
13
+
14
+ Google::Protobuf::DescriptorPool.generated_pool.build do
15
+ add_file("temporal/sdk/core/workflow_commands/workflow_commands.proto", :syntax => :proto3) do
16
+ add_message "coresdk.workflow_commands.WorkflowCommand" do
17
+ oneof :variant do
18
+ optional :start_timer, :message, 1, "coresdk.workflow_commands.StartTimer"
19
+ optional :schedule_activity, :message, 2, "coresdk.workflow_commands.ScheduleActivity"
20
+ optional :respond_to_query, :message, 3, "coresdk.workflow_commands.QueryResult"
21
+ optional :request_cancel_activity, :message, 4, "coresdk.workflow_commands.RequestCancelActivity"
22
+ optional :cancel_timer, :message, 5, "coresdk.workflow_commands.CancelTimer"
23
+ optional :complete_workflow_execution, :message, 6, "coresdk.workflow_commands.CompleteWorkflowExecution"
24
+ optional :fail_workflow_execution, :message, 7, "coresdk.workflow_commands.FailWorkflowExecution"
25
+ optional :continue_as_new_workflow_execution, :message, 8, "coresdk.workflow_commands.ContinueAsNewWorkflowExecution"
26
+ optional :cancel_workflow_execution, :message, 9, "coresdk.workflow_commands.CancelWorkflowExecution"
27
+ optional :set_patch_marker, :message, 10, "coresdk.workflow_commands.SetPatchMarker"
28
+ optional :start_child_workflow_execution, :message, 11, "coresdk.workflow_commands.StartChildWorkflowExecution"
29
+ optional :cancel_child_workflow_execution, :message, 12, "coresdk.workflow_commands.CancelChildWorkflowExecution"
30
+ optional :request_cancel_external_workflow_execution, :message, 13, "coresdk.workflow_commands.RequestCancelExternalWorkflowExecution"
31
+ optional :signal_external_workflow_execution, :message, 14, "coresdk.workflow_commands.SignalExternalWorkflowExecution"
32
+ optional :cancel_signal_workflow, :message, 15, "coresdk.workflow_commands.CancelSignalWorkflow"
33
+ optional :schedule_local_activity, :message, 16, "coresdk.workflow_commands.ScheduleLocalActivity"
34
+ optional :request_cancel_local_activity, :message, 17, "coresdk.workflow_commands.RequestCancelLocalActivity"
35
+ optional :upsert_workflow_search_attributes, :message, 18, "coresdk.workflow_commands.UpsertWorkflowSearchAttributes"
36
+ optional :modify_workflow_properties, :message, 19, "coresdk.workflow_commands.ModifyWorkflowProperties"
37
+ end
38
+ end
39
+ add_message "coresdk.workflow_commands.StartTimer" do
40
+ optional :seq, :uint32, 1
41
+ optional :start_to_fire_timeout, :message, 2, "google.protobuf.Duration"
42
+ end
43
+ add_message "coresdk.workflow_commands.CancelTimer" do
44
+ optional :seq, :uint32, 1
45
+ end
46
+ add_message "coresdk.workflow_commands.ScheduleActivity" do
47
+ optional :seq, :uint32, 1
48
+ optional :activity_id, :string, 2
49
+ optional :activity_type, :string, 3
50
+ optional :task_queue, :string, 5
51
+ map :headers, :string, :message, 6, "temporal.api.common.v1.Payload"
52
+ repeated :arguments, :message, 7, "temporal.api.common.v1.Payload"
53
+ optional :schedule_to_close_timeout, :message, 8, "google.protobuf.Duration"
54
+ optional :schedule_to_start_timeout, :message, 9, "google.protobuf.Duration"
55
+ optional :start_to_close_timeout, :message, 10, "google.protobuf.Duration"
56
+ optional :heartbeat_timeout, :message, 11, "google.protobuf.Duration"
57
+ optional :retry_policy, :message, 12, "temporal.api.common.v1.RetryPolicy"
58
+ optional :cancellation_type, :enum, 13, "coresdk.workflow_commands.ActivityCancellationType"
59
+ optional :do_not_eagerly_execute, :bool, 14
60
+ end
61
+ add_message "coresdk.workflow_commands.ScheduleLocalActivity" do
62
+ optional :seq, :uint32, 1
63
+ optional :activity_id, :string, 2
64
+ optional :activity_type, :string, 3
65
+ optional :attempt, :uint32, 4
66
+ optional :original_schedule_time, :message, 5, "google.protobuf.Timestamp"
67
+ map :headers, :string, :message, 6, "temporal.api.common.v1.Payload"
68
+ repeated :arguments, :message, 7, "temporal.api.common.v1.Payload"
69
+ optional :schedule_to_close_timeout, :message, 8, "google.protobuf.Duration"
70
+ optional :schedule_to_start_timeout, :message, 9, "google.protobuf.Duration"
71
+ optional :start_to_close_timeout, :message, 10, "google.protobuf.Duration"
72
+ optional :retry_policy, :message, 11, "temporal.api.common.v1.RetryPolicy"
73
+ optional :local_retry_threshold, :message, 12, "google.protobuf.Duration"
74
+ optional :cancellation_type, :enum, 13, "coresdk.workflow_commands.ActivityCancellationType"
75
+ end
76
+ add_message "coresdk.workflow_commands.RequestCancelActivity" do
77
+ optional :seq, :uint32, 1
78
+ end
79
+ add_message "coresdk.workflow_commands.RequestCancelLocalActivity" do
80
+ optional :seq, :uint32, 1
81
+ end
82
+ add_message "coresdk.workflow_commands.QueryResult" do
83
+ optional :query_id, :string, 1
84
+ oneof :variant do
85
+ optional :succeeded, :message, 2, "coresdk.workflow_commands.QuerySuccess"
86
+ optional :failed, :message, 3, "temporal.api.failure.v1.Failure"
87
+ end
88
+ end
89
+ add_message "coresdk.workflow_commands.QuerySuccess" do
90
+ optional :response, :message, 1, "temporal.api.common.v1.Payload"
91
+ end
92
+ add_message "coresdk.workflow_commands.CompleteWorkflowExecution" do
93
+ optional :result, :message, 1, "temporal.api.common.v1.Payload"
94
+ end
95
+ add_message "coresdk.workflow_commands.FailWorkflowExecution" do
96
+ optional :failure, :message, 1, "temporal.api.failure.v1.Failure"
97
+ end
98
+ add_message "coresdk.workflow_commands.ContinueAsNewWorkflowExecution" do
99
+ optional :workflow_type, :string, 1
100
+ optional :task_queue, :string, 2
101
+ repeated :arguments, :message, 3, "temporal.api.common.v1.Payload"
102
+ optional :workflow_run_timeout, :message, 4, "google.protobuf.Duration"
103
+ optional :workflow_task_timeout, :message, 5, "google.protobuf.Duration"
104
+ map :memo, :string, :message, 6, "temporal.api.common.v1.Payload"
105
+ map :headers, :string, :message, 7, "temporal.api.common.v1.Payload"
106
+ map :search_attributes, :string, :message, 8, "temporal.api.common.v1.Payload"
107
+ optional :retry_policy, :message, 9, "temporal.api.common.v1.RetryPolicy"
108
+ end
109
+ add_message "coresdk.workflow_commands.CancelWorkflowExecution" do
110
+ end
111
+ add_message "coresdk.workflow_commands.SetPatchMarker" do
112
+ optional :patch_id, :string, 1
113
+ optional :deprecated, :bool, 2
114
+ end
115
+ add_message "coresdk.workflow_commands.StartChildWorkflowExecution" do
116
+ optional :seq, :uint32, 1
117
+ optional :namespace, :string, 2
118
+ optional :workflow_id, :string, 3
119
+ optional :workflow_type, :string, 4
120
+ optional :task_queue, :string, 5
121
+ repeated :input, :message, 6, "temporal.api.common.v1.Payload"
122
+ optional :workflow_execution_timeout, :message, 7, "google.protobuf.Duration"
123
+ optional :workflow_run_timeout, :message, 8, "google.protobuf.Duration"
124
+ optional :workflow_task_timeout, :message, 9, "google.protobuf.Duration"
125
+ optional :parent_close_policy, :enum, 10, "coresdk.child_workflow.ParentClosePolicy"
126
+ optional :workflow_id_reuse_policy, :enum, 12, "temporal.api.enums.v1.WorkflowIdReusePolicy"
127
+ optional :retry_policy, :message, 13, "temporal.api.common.v1.RetryPolicy"
128
+ optional :cron_schedule, :string, 14
129
+ map :headers, :string, :message, 15, "temporal.api.common.v1.Payload"
130
+ map :memo, :string, :message, 16, "temporal.api.common.v1.Payload"
131
+ map :search_attributes, :string, :message, 17, "temporal.api.common.v1.Payload"
132
+ optional :cancellation_type, :enum, 18, "coresdk.child_workflow.ChildWorkflowCancellationType"
133
+ end
134
+ add_message "coresdk.workflow_commands.CancelChildWorkflowExecution" do
135
+ optional :child_workflow_seq, :uint32, 1
136
+ end
137
+ add_message "coresdk.workflow_commands.RequestCancelExternalWorkflowExecution" do
138
+ optional :seq, :uint32, 1
139
+ oneof :target do
140
+ optional :workflow_execution, :message, 2, "coresdk.common.NamespacedWorkflowExecution"
141
+ optional :child_workflow_id, :string, 3
142
+ end
143
+ end
144
+ add_message "coresdk.workflow_commands.SignalExternalWorkflowExecution" do
145
+ optional :seq, :uint32, 1
146
+ optional :signal_name, :string, 4
147
+ repeated :args, :message, 5, "temporal.api.common.v1.Payload"
148
+ map :headers, :string, :message, 6, "temporal.api.common.v1.Payload"
149
+ oneof :target do
150
+ optional :workflow_execution, :message, 2, "coresdk.common.NamespacedWorkflowExecution"
151
+ optional :child_workflow_id, :string, 3
152
+ end
153
+ end
154
+ add_message "coresdk.workflow_commands.CancelSignalWorkflow" do
155
+ optional :seq, :uint32, 1
156
+ end
157
+ add_message "coresdk.workflow_commands.UpsertWorkflowSearchAttributes" do
158
+ map :search_attributes, :string, :message, 1, "temporal.api.common.v1.Payload"
159
+ end
160
+ add_message "coresdk.workflow_commands.ModifyWorkflowProperties" do
161
+ optional :upserted_memo, :message, 1, "temporal.api.common.v1.Memo"
162
+ end
163
+ add_enum "coresdk.workflow_commands.ActivityCancellationType" do
164
+ value :TRY_CANCEL, 0
165
+ value :WAIT_CANCELLATION_COMPLETED, 1
166
+ value :ABANDON, 2
167
+ end
168
+ end
169
+ end
170
+
171
+ module Coresdk
172
+ module WorkflowCommands
173
+ WorkflowCommand = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.WorkflowCommand").msgclass
174
+ StartTimer = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.StartTimer").msgclass
175
+ CancelTimer = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.CancelTimer").msgclass
176
+ ScheduleActivity = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.ScheduleActivity").msgclass
177
+ ScheduleLocalActivity = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.ScheduleLocalActivity").msgclass
178
+ RequestCancelActivity = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.RequestCancelActivity").msgclass
179
+ RequestCancelLocalActivity = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.RequestCancelLocalActivity").msgclass
180
+ QueryResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.QueryResult").msgclass
181
+ QuerySuccess = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.QuerySuccess").msgclass
182
+ CompleteWorkflowExecution = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.CompleteWorkflowExecution").msgclass
183
+ FailWorkflowExecution = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.FailWorkflowExecution").msgclass
184
+ ContinueAsNewWorkflowExecution = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.ContinueAsNewWorkflowExecution").msgclass
185
+ CancelWorkflowExecution = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.CancelWorkflowExecution").msgclass
186
+ SetPatchMarker = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.SetPatchMarker").msgclass
187
+ StartChildWorkflowExecution = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.StartChildWorkflowExecution").msgclass
188
+ CancelChildWorkflowExecution = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.CancelChildWorkflowExecution").msgclass
189
+ RequestCancelExternalWorkflowExecution = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.RequestCancelExternalWorkflowExecution").msgclass
190
+ SignalExternalWorkflowExecution = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.SignalExternalWorkflowExecution").msgclass
191
+ CancelSignalWorkflow = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.CancelSignalWorkflow").msgclass
192
+ UpsertWorkflowSearchAttributes = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.UpsertWorkflowSearchAttributes").msgclass
193
+ ModifyWorkflowProperties = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.ModifyWorkflowProperties").msgclass
194
+ ActivityCancellationType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_commands.ActivityCancellationType").enummodule
195
+ end
196
+ end
@@ -0,0 +1,34 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: temporal/sdk/core/workflow_completion/workflow_completion.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ require 'temporal/api/failure/v1/message_pb'
7
+ require 'temporal/sdk/core/common/common_pb'
8
+ require 'temporal/sdk/core/workflow_commands/workflow_commands_pb'
9
+
10
+ Google::Protobuf::DescriptorPool.generated_pool.build do
11
+ add_file("temporal/sdk/core/workflow_completion/workflow_completion.proto", :syntax => :proto3) do
12
+ add_message "coresdk.workflow_completion.WorkflowActivationCompletion" do
13
+ optional :run_id, :string, 1
14
+ oneof :status do
15
+ optional :successful, :message, 2, "coresdk.workflow_completion.Success"
16
+ optional :failed, :message, 3, "coresdk.workflow_completion.Failure"
17
+ end
18
+ end
19
+ add_message "coresdk.workflow_completion.Success" do
20
+ repeated :commands, :message, 1, "coresdk.workflow_commands.WorkflowCommand"
21
+ end
22
+ add_message "coresdk.workflow_completion.Failure" do
23
+ optional :failure, :message, 1, "temporal.api.failure.v1.Failure"
24
+ end
25
+ end
26
+ end
27
+
28
+ module Coresdk
29
+ module WorkflowCompletion
30
+ WorkflowActivationCompletion = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_completion.WorkflowActivationCompletion").msgclass
31
+ Success = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_completion.Success").msgclass
32
+ Failure = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.workflow_completion.Failure").msgclass
33
+ end
34
+ end
@@ -0,0 +1,97 @@
1
+ require 'temporalio/error/failure'
2
+ require 'temporalio/errors'
3
+
4
+ module Temporalio
5
+ class Activity
6
+ # This class provides methods that can be called from activity classes.
7
+ class Context
8
+ # Information about the running activity.
9
+ #
10
+ # @return [Temporalio::Activity::Info]
11
+ attr_reader :info
12
+
13
+ # @api private
14
+ def initialize(info, heartbeat_proc, shielded: false)
15
+ @thread = Thread.current
16
+ @info = info
17
+ @heartbeat_proc = heartbeat_proc
18
+ @pending_cancellation = nil
19
+ @shielded = shielded
20
+ @mutex = Mutex.new
21
+ end
22
+
23
+ # Send a heartbeat for the current activity.
24
+ #
25
+ # @param details [Array<any>] Data to store with the heartbeat.
26
+ def heartbeat(*details)
27
+ heartbeat_proc.call(*details)
28
+ end
29
+
30
+ # Protect a part of activity's implementation from cancellations.
31
+ #
32
+ # Activity cancellations are implemented using the `Thread#raise`, which can unsafely
33
+ # terminate your implementation. To disable this behaviour make sure to wrap critical parts of
34
+ # your business logic in this method.
35
+ #
36
+ # For shielding a whole activity consider using {Temporalio::Activity.shielded!}.
37
+ #
38
+ # A cancellation that got requested while in a shielded block will not interrupt the execution
39
+ # and will raise a {Temporalio::Error::CancelledError} right after the block has finished.
40
+ #
41
+ # @yield Block to be protected from cancellations.
42
+ def shield(&block)
43
+ # The whole activity is shielded, called from a nested shield
44
+ # or while handling a CancelledError (in a rescue or ensure blocks)
45
+ return block.call if @shielded || cancelled?
46
+
47
+ if Thread.current != thread
48
+ # TODO: Use logger instead when implemented
49
+ warn "Activity shielding is not intended to be used outside of activity's thread."
50
+ return block.call
51
+ end
52
+
53
+ mutex.synchronize do
54
+ @shielded = true
55
+ result = block.call
56
+ # RBS: StandardError fallback is only needed to satisfy steep - https://github.com/soutaro/steep/issues/477
57
+ raise @pending_cancellation || StandardError if cancelled?
58
+
59
+ result
60
+ ensure # runs while still holding the lock
61
+ @shielded = false
62
+ end
63
+ end
64
+
65
+ # Whether a cancellation was ever requested on this activity.
66
+ #
67
+ # @return [Boolean] true if the activity has had a cancellation request, false otherwise.
68
+ def cancelled?
69
+ !!@pending_cancellation
70
+ end
71
+
72
+ # Cancel the running activity by raising a provided error.
73
+ #
74
+ # @param reason [String] Reason for cancellation.
75
+ # @param by_request [Boolean] Cancellation requested by the server or not.
76
+ #
77
+ # @api private
78
+ def cancel(reason, by_request: false)
79
+ error = Temporalio::Error::ActivityCancelled.new(reason, by_request)
80
+ @pending_cancellation = error
81
+
82
+ locked = mutex.try_lock
83
+ # @shielded inside the lock means the whole activity is shielded
84
+ if locked && !@shielded
85
+ thread.raise(error)
86
+ end
87
+ ensure
88
+ # only release the lock if we locked it
89
+ mutex.unlock if locked
90
+ end
91
+
92
+ private
93
+
94
+ attr_reader :thread, :heartbeat_proc, :mutex
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,67 @@
1
+ module Temporalio
2
+ class Activity
3
+ # Class containing information about an activity.
4
+ class Info < Struct.new(
5
+ :activity_id,
6
+ :activity_type,
7
+ :attempt,
8
+ :current_attempt_scheduled_time,
9
+ :heartbeat_details,
10
+ :heartbeat_timeout,
11
+ :local,
12
+ :schedule_to_close_timeout,
13
+ :scheduled_time,
14
+ :start_to_close_timeout,
15
+ :started_time,
16
+ :task_queue,
17
+ :task_token,
18
+ :workflow_id,
19
+ :workflow_namespace,
20
+ :workflow_run_id,
21
+ :workflow_type,
22
+ keyword_init: true,
23
+ )
24
+ # @!attribute [r] activity_id
25
+ # @return [String] Activity ID.
26
+ # @!attribute [r] activity_type
27
+ # @return [String] Name of the activity.
28
+ # @!attribute [r] attempt
29
+ # @return [Integer] Activity's execution attempt.
30
+ # @!attribute [r] current_attempt_scheduled_time
31
+ # @return [Time] Scheduled time of the current attempt.
32
+ # @!attribute [r] heartbeat_details
33
+ # @return [Array<any>] Details submitted with the last heartbeat.
34
+ # @!attribute [r] heartbeat_timeout
35
+ # @return [Float] Max time between heartbeats (in seconds).
36
+ # @!attribute [r] local
37
+ # @return [Boolean] Whether activity is local or not.
38
+ # @!attribute [r] schedule_to_close_timeout
39
+ # @return [Float] Max overall activity execution time (in seconds).
40
+ # @!attribute [r] scheduled_time
41
+ # @return [Time] Time when activity was first scheduled.
42
+ # @!attribute [r] start_to_close_timeout
43
+ # @return [Floaat] Max time of a single invocation (in seconds).
44
+ # @!attribute [r] started_time
45
+ # @return [Time] Time when activity was started.
46
+ # @!attribute [r] task_queue
47
+ # @return [String] Task queue on which the activity got scheduled.
48
+ # @!attribute [r] task_token
49
+ # @return [String] A token for completing the activity.
50
+ # @!attribute [r] workflow_id
51
+ # @return [String] Workflow ID.
52
+ # @!attribute [r] workflow_namespace
53
+ # @return [String] Workflow namespace.
54
+ # @!attribute [r] workflow_run_id
55
+ # @return [String] Workflow run ID.
56
+ # @!attribute [r] workflow_type
57
+ # @return [String] Name of the workflow.
58
+
59
+ # Whether activity is local or not
60
+ #
61
+ # @return [Boolean] True for local activities, falst otherwise.
62
+ def local?
63
+ local
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,85 @@
1
+ module Temporalio
2
+ # This is an abstract superclass for implementing activities.
3
+ #
4
+ # Temporal SDK users are expected to subclass it and implement the {#execute} method by adding
5
+ # their desired business logic.
6
+ #
7
+ # @abstract
8
+ #
9
+ # @example "Hello World" Activity
10
+ # class HelloWorld < Temporalio::Activity
11
+ # def execute(name)
12
+ # "Hello, #{name}!"
13
+ # end
14
+ # end
15
+ class Activity
16
+ # Specify a custom name to be used for this activity.
17
+ #
18
+ # By default a full class (with any namespace modules/classes) name will be used.
19
+ #
20
+ # @param new_name [String] Name to be used for this activity
21
+ #
22
+ # @example
23
+ # class Test < Temporalio::Activity
24
+ # activity_name 'custom-activity-name'
25
+ #
26
+ # def execute
27
+ # ...
28
+ # end
29
+ # end
30
+ def self.activity_name(new_name)
31
+ @activity_name = new_name
32
+ end
33
+
34
+ # Mark the activity as shielded from cancellations.
35
+ #
36
+ # Activity cancellations are implemented using the `Thread#raise`, which can unsafely terminate
37
+ # your implementation. To disable this behaviour make sure to mark critical activities as
38
+ # `shielded!`. For shielding a part of your activity consider using
39
+ # {Temporalio::Activity::Context#shield}.
40
+ #
41
+ # @example
42
+ # class Test < Temporalio::Activity
43
+ # shielded!
44
+ #
45
+ # def execute
46
+ # ...
47
+ # end
48
+ # end
49
+ def self.shielded!
50
+ @shielded = true
51
+ end
52
+
53
+ # @api private
54
+ def self._name
55
+ @activity_name || name || ''
56
+ end
57
+
58
+ # @api private
59
+ def self._shielded
60
+ @shielded || false
61
+ end
62
+
63
+ # @api private
64
+ def initialize(context)
65
+ @context = context
66
+ end
67
+
68
+ # This is the main body of your activity's implementation.
69
+ #
70
+ # When implementing this method, you can use as many positional arguments as needed, which will
71
+ # get converted based on the activity invocation in your workflow.
72
+ #
73
+ # Inside of this method you have access to activity's context using the `activity` method. Check
74
+ # out {Temporalio::Activity::Context} for more information on how to use it.
75
+ def execute(*_args)
76
+ raise NoMethodError, 'must implement #execute'
77
+ end
78
+
79
+ private
80
+
81
+ def activity
82
+ @context
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,8 @@
1
+ module Temporalio
2
+ module Bridge
3
+ # @api private
4
+ class Error < StandardError
5
+ class WorkerShutdown < Error; end
6
+ end
7
+ end
8
+ end