temporalio 0.0.1

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 (317) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -0
  3. data/LICENSE +20 -0
  4. data/README.md +130 -0
  5. data/bridge/Cargo.lock +2865 -0
  6. data/bridge/Cargo.toml +26 -0
  7. data/bridge/sdk-core/ARCHITECTURE.md +76 -0
  8. data/bridge/sdk-core/Cargo.lock +2606 -0
  9. data/bridge/sdk-core/Cargo.toml +2 -0
  10. data/bridge/sdk-core/LICENSE.txt +23 -0
  11. data/bridge/sdk-core/README.md +107 -0
  12. data/bridge/sdk-core/arch_docs/diagrams/README.md +10 -0
  13. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +40 -0
  14. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +1 -0
  15. data/bridge/sdk-core/arch_docs/sticky_queues.md +51 -0
  16. data/bridge/sdk-core/bridge-ffi/Cargo.toml +24 -0
  17. data/bridge/sdk-core/bridge-ffi/LICENSE.txt +23 -0
  18. data/bridge/sdk-core/bridge-ffi/build.rs +25 -0
  19. data/bridge/sdk-core/bridge-ffi/include/sdk-core-bridge.h +249 -0
  20. data/bridge/sdk-core/bridge-ffi/src/lib.rs +825 -0
  21. data/bridge/sdk-core/bridge-ffi/src/wrappers.rs +211 -0
  22. data/bridge/sdk-core/client/Cargo.toml +40 -0
  23. data/bridge/sdk-core/client/LICENSE.txt +23 -0
  24. data/bridge/sdk-core/client/src/lib.rs +1294 -0
  25. data/bridge/sdk-core/client/src/metrics.rs +165 -0
  26. data/bridge/sdk-core/client/src/raw.rs +931 -0
  27. data/bridge/sdk-core/client/src/retry.rs +674 -0
  28. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +185 -0
  29. data/bridge/sdk-core/core/Cargo.toml +116 -0
  30. data/bridge/sdk-core/core/LICENSE.txt +23 -0
  31. data/bridge/sdk-core/core/benches/workflow_replay.rs +73 -0
  32. data/bridge/sdk-core/core/src/abstractions.rs +166 -0
  33. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +911 -0
  34. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +221 -0
  35. data/bridge/sdk-core/core/src/core_tests/determinism.rs +107 -0
  36. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +515 -0
  37. data/bridge/sdk-core/core/src/core_tests/mod.rs +100 -0
  38. data/bridge/sdk-core/core/src/core_tests/queries.rs +736 -0
  39. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +65 -0
  40. data/bridge/sdk-core/core/src/core_tests/workers.rs +259 -0
  41. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +124 -0
  42. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +2070 -0
  43. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +515 -0
  44. data/bridge/sdk-core/core/src/lib.rs +175 -0
  45. data/bridge/sdk-core/core/src/log_export.rs +62 -0
  46. data/bridge/sdk-core/core/src/pollers/mod.rs +54 -0
  47. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +297 -0
  48. data/bridge/sdk-core/core/src/protosext/mod.rs +428 -0
  49. data/bridge/sdk-core/core/src/replay/mod.rs +71 -0
  50. data/bridge/sdk-core/core/src/retry_logic.rs +202 -0
  51. data/bridge/sdk-core/core/src/telemetry/metrics.rs +383 -0
  52. data/bridge/sdk-core/core/src/telemetry/mod.rs +412 -0
  53. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +77 -0
  54. data/bridge/sdk-core/core/src/test_help/mod.rs +875 -0
  55. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +580 -0
  56. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +1042 -0
  57. data/bridge/sdk-core/core/src/worker/activities.rs +464 -0
  58. data/bridge/sdk-core/core/src/worker/client/mocks.rs +87 -0
  59. data/bridge/sdk-core/core/src/worker/client.rs +347 -0
  60. data/bridge/sdk-core/core/src/worker/mod.rs +566 -0
  61. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +37 -0
  62. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +110 -0
  63. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +458 -0
  64. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +911 -0
  65. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +298 -0
  66. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +171 -0
  67. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +860 -0
  68. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +140 -0
  69. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +161 -0
  70. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +133 -0
  71. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +1448 -0
  72. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +342 -0
  73. data/bridge/sdk-core/core/src/worker/workflow/machines/mutable_side_effect_state_machine.rs +127 -0
  74. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +712 -0
  75. data/bridge/sdk-core/core/src/worker/workflow/machines/side_effect_state_machine.rs +71 -0
  76. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +443 -0
  77. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +439 -0
  78. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +169 -0
  79. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +246 -0
  80. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +96 -0
  81. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +1184 -0
  82. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +277 -0
  83. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +198 -0
  84. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +647 -0
  85. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +1143 -0
  86. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +145 -0
  87. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +88 -0
  88. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +940 -0
  89. data/bridge/sdk-core/core-api/Cargo.toml +31 -0
  90. data/bridge/sdk-core/core-api/LICENSE.txt +23 -0
  91. data/bridge/sdk-core/core-api/src/errors.rs +95 -0
  92. data/bridge/sdk-core/core-api/src/lib.rs +151 -0
  93. data/bridge/sdk-core/core-api/src/worker.rs +135 -0
  94. data/bridge/sdk-core/etc/deps.svg +187 -0
  95. data/bridge/sdk-core/etc/dynamic-config.yaml +2 -0
  96. data/bridge/sdk-core/etc/otel-collector-config.yaml +36 -0
  97. data/bridge/sdk-core/etc/prometheus.yaml +6 -0
  98. data/bridge/sdk-core/fsm/Cargo.toml +18 -0
  99. data/bridge/sdk-core/fsm/LICENSE.txt +23 -0
  100. data/bridge/sdk-core/fsm/README.md +3 -0
  101. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +27 -0
  102. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +23 -0
  103. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +647 -0
  104. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +8 -0
  105. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +18 -0
  106. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +12 -0
  107. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +41 -0
  108. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +14 -0
  109. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +11 -0
  110. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +32 -0
  111. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +31 -0
  112. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +46 -0
  113. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +29 -0
  114. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +12 -0
  115. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +32 -0
  116. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +18 -0
  117. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +5 -0
  118. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +11 -0
  119. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +5 -0
  120. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +11 -0
  121. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +5 -0
  122. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +14 -0
  123. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +23 -0
  124. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +249 -0
  125. data/bridge/sdk-core/fsm/src/lib.rs +2 -0
  126. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  127. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  128. data/bridge/sdk-core/integ-with-otel.sh +7 -0
  129. data/bridge/sdk-core/protos/api_upstream/README.md +9 -0
  130. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +40 -0
  131. data/bridge/sdk-core/protos/api_upstream/buf.yaml +12 -0
  132. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +141 -0
  133. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +86 -0
  134. data/bridge/sdk-core/protos/api_upstream/temporal/api/cluster/v1/message.proto +83 -0
  135. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +259 -0
  136. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +112 -0
  137. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +46 -0
  138. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/cluster.proto +40 -0
  139. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +57 -0
  140. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +55 -0
  141. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +168 -0
  142. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +97 -0
  143. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +51 -0
  144. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +50 -0
  145. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +41 -0
  146. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +60 -0
  147. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +59 -0
  148. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +51 -0
  149. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +122 -0
  150. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +108 -0
  151. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +114 -0
  152. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +56 -0
  153. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +751 -0
  154. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +97 -0
  155. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +161 -0
  156. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +99 -0
  157. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +61 -0
  158. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +55 -0
  159. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +300 -0
  160. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +108 -0
  161. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +46 -0
  162. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +59 -0
  163. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +145 -0
  164. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +1124 -0
  165. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +401 -0
  166. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +63 -0
  167. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +78 -0
  168. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +79 -0
  169. data/bridge/sdk-core/protos/local/temporal/sdk/core/bridge/bridge.proto +210 -0
  170. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +77 -0
  171. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +15 -0
  172. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +30 -0
  173. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +30 -0
  174. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +261 -0
  175. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +297 -0
  176. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +29 -0
  177. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +38 -0
  178. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +13 -0
  179. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +141 -0
  180. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +63 -0
  181. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +90 -0
  182. data/bridge/sdk-core/rustfmt.toml +1 -0
  183. data/bridge/sdk-core/sdk/Cargo.toml +47 -0
  184. data/bridge/sdk-core/sdk/LICENSE.txt +23 -0
  185. data/bridge/sdk-core/sdk/src/activity_context.rs +230 -0
  186. data/bridge/sdk-core/sdk/src/app_data.rs +37 -0
  187. data/bridge/sdk-core/sdk/src/conversions.rs +8 -0
  188. data/bridge/sdk-core/sdk/src/interceptors.rs +17 -0
  189. data/bridge/sdk-core/sdk/src/lib.rs +792 -0
  190. data/bridge/sdk-core/sdk/src/payload_converter.rs +11 -0
  191. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +295 -0
  192. data/bridge/sdk-core/sdk/src/workflow_context.rs +683 -0
  193. data/bridge/sdk-core/sdk/src/workflow_future.rs +503 -0
  194. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +30 -0
  195. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +23 -0
  196. data/bridge/sdk-core/sdk-core-protos/build.rs +108 -0
  197. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +7 -0
  198. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +497 -0
  199. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +230 -0
  200. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +1910 -0
  201. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +38 -0
  202. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +14 -0
  203. data/bridge/sdk-core/test-utils/Cargo.toml +35 -0
  204. data/bridge/sdk-core/test-utils/src/canned_histories.rs +1579 -0
  205. data/bridge/sdk-core/test-utils/src/histfetch.rs +28 -0
  206. data/bridge/sdk-core/test-utils/src/lib.rs +598 -0
  207. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +36 -0
  208. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +128 -0
  209. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +218 -0
  210. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +146 -0
  211. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +437 -0
  212. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +93 -0
  213. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +878 -0
  214. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +61 -0
  215. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +59 -0
  216. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +58 -0
  217. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +50 -0
  218. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +60 -0
  219. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +54 -0
  220. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +634 -0
  221. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +113 -0
  222. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +137 -0
  223. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +93 -0
  224. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +167 -0
  225. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +99 -0
  226. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +131 -0
  227. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +75 -0
  228. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +587 -0
  229. data/bridge/sdk-core/tests/load_tests.rs +191 -0
  230. data/bridge/sdk-core/tests/main.rs +111 -0
  231. data/bridge/sdk-core/tests/runner.rs +93 -0
  232. data/bridge/src/connection.rs +167 -0
  233. data/bridge/src/lib.rs +180 -0
  234. data/bridge/src/runtime.rs +47 -0
  235. data/bridge/src/worker.rs +73 -0
  236. data/ext/Rakefile +9 -0
  237. data/lib/bridge.so +0 -0
  238. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +14 -0
  239. data/lib/gen/temporal/api/batch/v1/message_pb.rb +48 -0
  240. data/lib/gen/temporal/api/cluster/v1/message_pb.rb +67 -0
  241. data/lib/gen/temporal/api/command/v1/message_pb.rb +166 -0
  242. data/lib/gen/temporal/api/common/v1/message_pb.rb +69 -0
  243. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +32 -0
  244. data/lib/gen/temporal/api/enums/v1/cluster_pb.rb +26 -0
  245. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +37 -0
  246. data/lib/gen/temporal/api/enums/v1/common_pb.rb +41 -0
  247. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +67 -0
  248. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +71 -0
  249. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +37 -0
  250. data/lib/gen/temporal/api/enums/v1/query_pb.rb +31 -0
  251. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +24 -0
  252. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +28 -0
  253. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +30 -0
  254. data/lib/gen/temporal/api/enums/v1/update_pb.rb +28 -0
  255. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +89 -0
  256. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +84 -0
  257. data/lib/gen/temporal/api/failure/v1/message_pb.rb +83 -0
  258. data/lib/gen/temporal/api/filter/v1/message_pb.rb +40 -0
  259. data/lib/gen/temporal/api/history/v1/message_pb.rb +489 -0
  260. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +63 -0
  261. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +125 -0
  262. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +20 -0
  263. data/lib/gen/temporal/api/query/v1/message_pb.rb +38 -0
  264. data/lib/gen/temporal/api/replication/v1/message_pb.rb +37 -0
  265. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +128 -0
  266. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +73 -0
  267. data/lib/gen/temporal/api/update/v1/message_pb.rb +26 -0
  268. data/lib/gen/temporal/api/version/v1/message_pb.rb +41 -0
  269. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +110 -0
  270. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +771 -0
  271. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +20 -0
  272. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +58 -0
  273. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +57 -0
  274. data/lib/gen/temporal/sdk/core/bridge/bridge_pb.rb +222 -0
  275. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +57 -0
  276. data/lib/gen/temporal/sdk/core/common/common_pb.rb +22 -0
  277. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +34 -0
  278. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +27 -0
  279. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +164 -0
  280. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +192 -0
  281. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +34 -0
  282. data/lib/temporal/bridge.rb +14 -0
  283. data/lib/temporal/client/implementation.rb +339 -0
  284. data/lib/temporal/client/workflow_handle.rb +243 -0
  285. data/lib/temporal/client.rb +144 -0
  286. data/lib/temporal/connection.rb +736 -0
  287. data/lib/temporal/data_converter.rb +150 -0
  288. data/lib/temporal/error/failure.rb +194 -0
  289. data/lib/temporal/error/workflow_failure.rb +17 -0
  290. data/lib/temporal/errors.rb +22 -0
  291. data/lib/temporal/failure_converter/base.rb +26 -0
  292. data/lib/temporal/failure_converter/basic.rb +313 -0
  293. data/lib/temporal/failure_converter.rb +8 -0
  294. data/lib/temporal/interceptor/chain.rb +27 -0
  295. data/lib/temporal/interceptor/client.rb +102 -0
  296. data/lib/temporal/payload_codec/base.rb +32 -0
  297. data/lib/temporal/payload_converter/base.rb +24 -0
  298. data/lib/temporal/payload_converter/bytes.rb +26 -0
  299. data/lib/temporal/payload_converter/composite.rb +47 -0
  300. data/lib/temporal/payload_converter/encoding_base.rb +35 -0
  301. data/lib/temporal/payload_converter/json.rb +25 -0
  302. data/lib/temporal/payload_converter/nil.rb +25 -0
  303. data/lib/temporal/payload_converter.rb +14 -0
  304. data/lib/temporal/retry_policy.rb +82 -0
  305. data/lib/temporal/retry_state.rb +35 -0
  306. data/lib/temporal/runtime.rb +22 -0
  307. data/lib/temporal/timeout_type.rb +29 -0
  308. data/lib/temporal/version.rb +3 -0
  309. data/lib/temporal/workflow/execution_info.rb +54 -0
  310. data/lib/temporal/workflow/execution_status.rb +36 -0
  311. data/lib/temporal/workflow/id_reuse_policy.rb +36 -0
  312. data/lib/temporal/workflow/query_reject_condition.rb +33 -0
  313. data/lib/temporal.rb +8 -0
  314. data/lib/temporalio.rb +3 -0
  315. data/lib/thermite_patch.rb +23 -0
  316. data/temporalio.gemspec +41 -0
  317. metadata +583 -0
@@ -0,0 +1,150 @@
1
+ require 'temporal/api/common/v1/message_pb'
2
+ require 'temporal/errors'
3
+
4
+ module Temporal
5
+ class DataConverter
6
+ class MissingPayload < Temporal::Error; end
7
+
8
+ def initialize(payload_converter:, payload_codecs:, failure_converter:)
9
+ @payload_converter = payload_converter
10
+ @payload_codecs = payload_codecs
11
+ @failure_converter = failure_converter
12
+ end
13
+
14
+ def to_payloads(data)
15
+ return if data.nil? || Array(data).empty?
16
+
17
+ payloads = Array(data).map { |value| to_payload(value) }
18
+ Temporal::Api::Common::V1::Payloads.new(payloads: encode(payloads))
19
+ end
20
+
21
+ def to_payload_map(data)
22
+ data.to_h do |key, value|
23
+ payload = to_payload(value)
24
+ encoded_payload = encode([payload]).first
25
+ raise MissingPayload, 'Payload Codecs returned no payloads' unless encoded_payload
26
+
27
+ [key.to_s, encoded_payload]
28
+ end
29
+ end
30
+
31
+ def to_failure(error)
32
+ failure = failure_converter.to_failure(error, payload_converter)
33
+ encode_failure(failure)
34
+ end
35
+
36
+ def from_payloads(payloads)
37
+ return unless payloads
38
+
39
+ decode(payloads.payloads)
40
+ .map { |payload| from_payload(payload) }
41
+ end
42
+
43
+ def from_payload_map(payload_map)
44
+ return unless payload_map
45
+
46
+ # Protobuf's Hash isn't compatible with the native Hash, ignore rubocop here
47
+ # rubocop:disable Style/MapToHash
48
+ payload_map.map do |key, payload|
49
+ decoded_payload = decode([payload]).first
50
+ raise MissingPayload, 'Payload Codecs returned no payloads' unless decoded_payload
51
+
52
+ [key, from_payload(decoded_payload)]
53
+ end.to_h
54
+ # rubocop:enable Style/MapToHash
55
+ end
56
+
57
+ def from_failure(failure)
58
+ raise ArgumentError, 'missing a failure to convert from' unless failure
59
+
60
+ failure = decode_failure(failure)
61
+ failure_converter.from_failure(failure, payload_converter)
62
+ end
63
+
64
+ private
65
+
66
+ attr_reader :payload_converter, :payload_codecs, :failure_converter
67
+
68
+ def encode(payloads)
69
+ return [] unless payloads
70
+
71
+ payload_codecs.each do |codec|
72
+ payloads = codec.encode(payloads)
73
+ end
74
+
75
+ payloads
76
+ end
77
+
78
+ def decode(payloads)
79
+ return [] unless payloads
80
+
81
+ payload_codecs.reverse_each do |codec|
82
+ payloads = codec.decode(payloads)
83
+ end
84
+
85
+ payloads
86
+ end
87
+
88
+ def to_payload(data)
89
+ payload_converter.to_payload(data)
90
+ end
91
+
92
+ def from_payload(payload)
93
+ payload_converter.from_payload(payload)
94
+ end
95
+
96
+ def encode_failure(failure)
97
+ failure = failure.dup
98
+
99
+ failure.encoded_attributes = failure.encoded_attributes ? encode([failure.encoded_attributes])&.first : nil
100
+ failure.cause = failure.cause ? encode_failure(failure.cause) : nil
101
+
102
+ if failure.application_failure_info
103
+ failure.application_failure_info.details = Temporal::Api::Common::V1::Payloads.new(
104
+ payloads: encode(failure.application_failure_info.details&.payloads).to_a,
105
+ )
106
+ elsif failure.timeout_failure_info
107
+ failure.timeout_failure_info.last_heartbeat_details = Temporal::Api::Common::V1::Payloads.new(
108
+ payloads: encode(failure.timeout_failure_info.last_heartbeat_details&.payloads).to_a,
109
+ )
110
+ elsif failure.canceled_failure_info
111
+ failure.canceled_failure_info.details = Temporal::Api::Common::V1::Payloads.new(
112
+ payloads: encode(failure.canceled_failure_info.details&.payloads).to_a,
113
+ )
114
+ elsif failure.reset_workflow_failure_info
115
+ failure.reset_workflow_failure_info.last_heartbeat_details = Temporal::Api::Common::V1::Payloads.new(
116
+ payloads: encode(failure.reset_workflow_failure_info.last_heartbeat_details&.payloads).to_a,
117
+ )
118
+ end
119
+
120
+ failure
121
+ end
122
+
123
+ def decode_failure(failure)
124
+ failure = failure.dup
125
+
126
+ failure.encoded_attributes = failure.encoded_attributes ? decode([failure.encoded_attributes])&.first : nil
127
+ failure.cause = failure.cause ? decode_failure(failure.cause) : nil
128
+
129
+ if failure.application_failure_info
130
+ failure.application_failure_info.details = Temporal::Api::Common::V1::Payloads.new(
131
+ payloads: decode(failure.application_failure_info.details&.payloads).to_a,
132
+ )
133
+ elsif failure.timeout_failure_info
134
+ failure.timeout_failure_info.last_heartbeat_details = Temporal::Api::Common::V1::Payloads.new(
135
+ payloads: decode(failure.timeout_failure_info.last_heartbeat_details&.payloads).to_a,
136
+ )
137
+ elsif failure.canceled_failure_info
138
+ failure.canceled_failure_info.details = Temporal::Api::Common::V1::Payloads.new(
139
+ payloads: decode(failure.canceled_failure_info.details&.payloads).to_a,
140
+ )
141
+ elsif failure.reset_workflow_failure_info
142
+ failure.reset_workflow_failure_info.last_heartbeat_details = Temporal::Api::Common::V1::Payloads.new(
143
+ payloads: decode(failure.reset_workflow_failure_info.last_heartbeat_details&.payloads).to_a,
144
+ )
145
+ end
146
+
147
+ failure
148
+ end
149
+ end
150
+ end
@@ -0,0 +1,194 @@
1
+ # TODO: Figure out the hierarchy
2
+ require 'temporal/errors'
3
+
4
+ module Temporal
5
+ class Error
6
+ # Base for runtime failures during workflow/activity execution.
7
+ class Failure < Error
8
+ # @return [Temporal::Api::Failure::V1::Failure, nil] Original proto failure
9
+ attr_reader :raw
10
+
11
+ def initialize(message, raw: nil, cause: nil)
12
+ super(message)
13
+
14
+ @raw = raw
15
+ @cause = cause
16
+ end
17
+
18
+ def cause
19
+ @cause || super
20
+ end
21
+ end
22
+
23
+ # Error raised during workflow/activity execution.
24
+ class ApplicationError < Failure
25
+ # @return [String] General error type.
26
+ attr_reader :type
27
+
28
+ # @return [Array<any>] User-defined details on the error.
29
+ attr_reader :details
30
+
31
+ # @return [Bool] Whether the error is non-retryable.
32
+ attr_reader :non_retryable
33
+
34
+ def initialize(message, type:, details: [], non_retryable: false, raw: nil, cause: nil)
35
+ super(message, raw: raw, cause: cause)
36
+
37
+ @type = type
38
+ @details = details
39
+ @non_retryable = non_retryable
40
+ end
41
+
42
+ def retryable?
43
+ !non_retryable
44
+ end
45
+ end
46
+
47
+ # Error raised on workflow/activity timeout.
48
+ class TimeoutError < Failure
49
+ # @return [Symbol] Type of timeout error. Refer to {Temporal::TimeoutType}.
50
+ attr_reader :type
51
+
52
+ # @return [Array<any>] Last heartbeat details if this is for an activity heartbeat.
53
+ attr_reader :last_heartbeat_details
54
+
55
+ def initialize(message, type:, last_heartbeat_details: [], raw: nil, cause: nil)
56
+ super(message, raw: raw, cause: cause)
57
+
58
+ @type = type
59
+ @last_heartbeat_details = last_heartbeat_details
60
+ end
61
+ end
62
+
63
+ # Error raised on workflow/activity cancellation.
64
+ class CancelledError < Failure
65
+ # @return [Array<any>] User-defined details on the error.
66
+ attr_reader :details
67
+
68
+ def initialize(message, details: [], raw: nil, cause: nil)
69
+ super(message, raw: raw, cause: cause)
70
+
71
+ @details = details
72
+ end
73
+ end
74
+
75
+ # Error raised on workflow cancellation.
76
+ class TerminatedError < Failure; end
77
+
78
+ # Error originating in the Temporal server.
79
+ class ServerError < Failure
80
+ # @return [Bool] Whether the error is non-retryable.
81
+ attr_reader :non_retryable
82
+
83
+ def initialize(message, non_retryable:, raw: nil, cause: nil)
84
+ super(message, raw: raw, cause: cause)
85
+
86
+ @non_retryable = non_retryable
87
+ end
88
+
89
+ def retryable?
90
+ !non_retryable
91
+ end
92
+ end
93
+
94
+ class ResetWorkflowError < Failure
95
+ # @return [Array<any>] Last heartbeat details if this is for an activity heartbeat.
96
+ attr_reader :last_heartbeat_details
97
+
98
+ def initialize(message, last_heartbeat_details: [], raw: nil, cause: nil)
99
+ super(message, raw: raw, cause: cause)
100
+
101
+ @last_heartbeat_details = last_heartbeat_details
102
+ end
103
+ end
104
+
105
+ # Error raised on activity failure.
106
+ class ActivityError < Failure
107
+ # @return [Integer] Scheduled event ID for this error.
108
+ attr_reader :scheduled_event_id
109
+
110
+ # @return [Integer] Started event ID for this error.
111
+ attr_reader :started_event_id
112
+
113
+ # @return [String] Identity for this error.
114
+ attr_reader :identity
115
+
116
+ # @return [String] Activity name for this error.
117
+ attr_reader :activity_name
118
+
119
+ # @return [String] Activity ID for this error.
120
+ attr_reader :activity_id
121
+
122
+ # @return [Symbol] Retry state for this error. Refer to {Temporal::RetryState}.
123
+ attr_reader :retry_state
124
+
125
+ def initialize(
126
+ message,
127
+ scheduled_event_id:,
128
+ started_event_id:,
129
+ identity:,
130
+ activity_name:,
131
+ activity_id:,
132
+ retry_state:,
133
+ raw: nil,
134
+ cause: nil
135
+ )
136
+ super(message, raw: raw, cause: cause)
137
+
138
+ @scheduled_event_id = scheduled_event_id
139
+ @started_event_id = started_event_id
140
+ @identity = identity
141
+ @activity_name = activity_name
142
+ @activity_id = activity_id
143
+ @retry_state = retry_state
144
+ end
145
+ end
146
+
147
+ # Error raised on child workflow failure.
148
+ class ChildWorkflowError < Failure
149
+ # @return [String] Namespace for this error.
150
+ attr_reader :namespace
151
+
152
+ # @return [String] Workflow ID for this error.
153
+ attr_reader :workflow_id
154
+
155
+ # @return [String] Run ID for this error.
156
+ attr_reader :run_id
157
+
158
+ # @return [String] Workflow name for this error.
159
+ attr_reader :workflow_name
160
+
161
+ # @return [Integer] Initiated event ID for this error.
162
+ attr_reader :initiated_event_id
163
+
164
+ # @return [Integer] Started event ID for this error.
165
+ attr_reader :started_event_id
166
+
167
+ # @return [Symbol] Retry state for this error. Refer to {Temporal::RetryState}.
168
+ attr_reader :retry_state
169
+
170
+ def initialize(
171
+ message,
172
+ namespace:,
173
+ workflow_id:,
174
+ run_id:,
175
+ workflow_name:,
176
+ initiated_event_id:,
177
+ started_event_id:,
178
+ retry_state:,
179
+ raw: nil,
180
+ cause: nil
181
+ )
182
+ super(message, raw: raw, cause: cause)
183
+
184
+ @namespace = namespace
185
+ @workflow_id = workflow_id
186
+ @run_id = run_id
187
+ @workflow_name = workflow_name
188
+ @initiated_event_id = initiated_event_id
189
+ @started_event_id = started_event_id
190
+ @retry_state = retry_state
191
+ end
192
+ end
193
+ end
194
+ end
@@ -0,0 +1,17 @@
1
+ require 'temporal/errors'
2
+
3
+ module Temporal
4
+ class Error
5
+ # Used as a wrapper to perserve failure hierarchy in nested calls
6
+ # i.e. WorkflowFailure(ActivityError(WorkflowFailure(CancelledError)))
7
+ class WorkflowFailure < Error
8
+ attr_reader :cause
9
+
10
+ def initialize(cause:)
11
+ super
12
+
13
+ @cause = cause
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ module Temporal
2
+ # Superclass for all Temporal errors
3
+ class Error < StandardError
4
+ # Superclass for RPC and proto related errors
5
+ class RPCError < Error; end
6
+
7
+ class UnexpectedResponse < RPCError; end
8
+
9
+ class WorkflowExecutionAlreadyStarted < RPCError; end
10
+
11
+ class QueryFailed < RPCError; end
12
+
13
+ class QueryRejected < RPCError
14
+ attr_reader :status
15
+
16
+ def initialize(status)
17
+ super("Query rejected, workflow status: #{status}")
18
+ @status = status
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,26 @@
1
+ module Temporal
2
+ module FailureConverter
3
+ # @abstract Use this Interface for implementing your failure converter.
4
+ class Base
5
+ # Convert an Error object to a proto Failure.
6
+ #
7
+ # @param _error [Exception] An Error to be converter.
8
+ # @param _payload_converter [Temporal::PayloadConverter::Base] A payload converter.
9
+ #
10
+ # @return [Temporal::Api::Failure::V1::Failure]
11
+ def to_failure(_error, _payload_converter)
12
+ raise NoMethodError, 'must implement #to_failure'
13
+ end
14
+
15
+ # Convert an proto Failure object to an Error.
16
+ #
17
+ # @param _failure [Temporal::Api::Failure::V1::Failure] A proto Failure to be converted.
18
+ # @param _payload_converter [Temporal::PayloadConverter::Base] A payload converter.
19
+ #
20
+ # @return [Exception]
21
+ def from_failure(_failure, _payload_converter)
22
+ raise NoMethodError, 'must implement #from_failure'
23
+ end
24
+ end
25
+ end
26
+ end