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,191 @@
1
+ require 'temporal/api/common/v1/message_pb'
2
+ require 'temporalio/errors'
3
+ require 'temporalio/failure_converter'
4
+ require 'temporalio/payload_converter'
5
+
6
+ module Temporalio
7
+ class DataConverter
8
+ class MissingPayload < Temporalio::Error; end
9
+
10
+ # Initialize a new data converter with optional payload converter, codecs and failure converter.
11
+ #
12
+ # @param payload_converter [Temporalio::PayloadConverter::Base] A custom payload converter for
13
+ # converting Ruby values to/from protos. See {Temporalio::PayloadConverter::Base} for the
14
+ # interface definition.
15
+ # @param payload_codecs [Array<Temporalio::PayloadCodec::Base>] A list of payload codecs to
16
+ # transform payload protos. See {Temporalio::PayloadCodec::Base} for the interface definition.
17
+ # @param failure_converter [Temporalio::FailureConverter::Base] A custom failure converter for
18
+ # converting Exceptions to/from protos. See {Temporalio::FailureConverter::Base} for the
19
+ # interface definition.
20
+ #
21
+ # @see https://docs.temporal.io/concepts/what-is-a-data-converter for more information on
22
+ # payload converters and codecs.
23
+ def initialize(
24
+ payload_converter: Temporalio::PayloadConverter::DEFAULT,
25
+ payload_codecs: [],
26
+ failure_converter: Temporalio::FailureConverter::DEFAULT
27
+ )
28
+ @payload_converter = payload_converter
29
+ @payload_codecs = payload_codecs
30
+ @failure_converter = failure_converter
31
+ end
32
+
33
+ def to_payload(value)
34
+ payload = value_to_payload(value)
35
+ encoded_payload = encode([payload]).first
36
+ raise MissingPayload, 'Payload Codecs returned no payloads' unless encoded_payload
37
+
38
+ encoded_payload
39
+ end
40
+
41
+ def to_payload_array(data)
42
+ return [] if data.nil? || Array(data).empty?
43
+
44
+ payloads = Array(data).map { |value| value_to_payload(value) }
45
+ encode(payloads)
46
+ end
47
+
48
+ def to_payloads(data)
49
+ return if data.nil? || Array(data).empty?
50
+
51
+ payloads = Array(data).map { |value| value_to_payload(value) }
52
+ Temporalio::Api::Common::V1::Payloads.new(payloads: encode(payloads))
53
+ end
54
+
55
+ def to_payload_map(data)
56
+ data.to_h do |key, value|
57
+ [key.to_s, to_payload(value)]
58
+ end
59
+ end
60
+
61
+ def to_failure(error)
62
+ failure = failure_converter.to_failure(error, payload_converter)
63
+ encode_failure(failure)
64
+ end
65
+
66
+ def from_payload(payload)
67
+ decoded_payload = decode([payload]).first
68
+ raise MissingPayload, 'Payload Codecs returned no payloads' unless decoded_payload
69
+
70
+ payload_to_value(decoded_payload)
71
+ end
72
+
73
+ def from_payload_array(payloads)
74
+ return [] if payloads.empty?
75
+
76
+ decode(payloads)
77
+ .map { |payload| payload_to_value(payload) }
78
+ end
79
+
80
+ def from_payloads(payloads)
81
+ return unless payloads
82
+
83
+ decode(payloads.payloads)
84
+ .map { |payload| payload_to_value(payload) }
85
+ end
86
+
87
+ def from_payload_map(payload_map)
88
+ return unless payload_map
89
+
90
+ # Protobuf's Hash isn't compatible with the native Hash, ignore rubocop here
91
+ # rubocop:disable Style/MapToHash, Style/HashTransformValues
92
+ payload_map.map do |key, payload|
93
+ [key, from_payload(payload)]
94
+ end.to_h
95
+ # rubocop:enable Style/MapToHash, Style/HashTransformValues
96
+ end
97
+
98
+ def from_failure(failure)
99
+ raise ArgumentError, 'missing a failure to convert from' unless failure
100
+
101
+ failure = decode_failure(failure)
102
+ failure_converter.from_failure(failure, payload_converter)
103
+ end
104
+
105
+ private
106
+
107
+ attr_reader :payload_converter, :payload_codecs, :failure_converter
108
+
109
+ def value_to_payload(value)
110
+ payload_converter.to_payload(value)
111
+ end
112
+
113
+ def payload_to_value(payload)
114
+ payload_converter.from_payload(payload)
115
+ end
116
+
117
+ def encode(payloads)
118
+ return [] unless payloads
119
+
120
+ payload_codecs.each do |codec|
121
+ payloads = codec.encode(payloads)
122
+ end
123
+
124
+ payloads
125
+ end
126
+
127
+ def decode(payloads)
128
+ return [] unless payloads
129
+
130
+ payload_codecs.reverse_each do |codec|
131
+ payloads = codec.decode(payloads)
132
+ end
133
+
134
+ payloads
135
+ end
136
+
137
+ def encode_failure(failure)
138
+ failure = failure.dup
139
+
140
+ failure.encoded_attributes = failure.encoded_attributes ? encode([failure.encoded_attributes])&.first : nil
141
+ failure.cause = failure.cause ? encode_failure(failure.cause) : nil
142
+
143
+ if failure.application_failure_info
144
+ failure.application_failure_info.details = Temporalio::Api::Common::V1::Payloads.new(
145
+ payloads: encode(failure.application_failure_info.details&.payloads).to_a,
146
+ )
147
+ elsif failure.timeout_failure_info
148
+ failure.timeout_failure_info.last_heartbeat_details = Temporalio::Api::Common::V1::Payloads.new(
149
+ payloads: encode(failure.timeout_failure_info.last_heartbeat_details&.payloads).to_a,
150
+ )
151
+ elsif failure.canceled_failure_info
152
+ failure.canceled_failure_info.details = Temporalio::Api::Common::V1::Payloads.new(
153
+ payloads: encode(failure.canceled_failure_info.details&.payloads).to_a,
154
+ )
155
+ elsif failure.reset_workflow_failure_info
156
+ failure.reset_workflow_failure_info.last_heartbeat_details = Temporalio::Api::Common::V1::Payloads.new(
157
+ payloads: encode(failure.reset_workflow_failure_info.last_heartbeat_details&.payloads).to_a,
158
+ )
159
+ end
160
+
161
+ failure
162
+ end
163
+
164
+ def decode_failure(failure)
165
+ failure = failure.dup
166
+
167
+ failure.encoded_attributes = failure.encoded_attributes ? decode([failure.encoded_attributes])&.first : nil
168
+ failure.cause = failure.cause ? decode_failure(failure.cause) : nil
169
+
170
+ if failure.application_failure_info
171
+ failure.application_failure_info.details = Temporalio::Api::Common::V1::Payloads.new(
172
+ payloads: decode(failure.application_failure_info.details&.payloads).to_a,
173
+ )
174
+ elsif failure.timeout_failure_info
175
+ failure.timeout_failure_info.last_heartbeat_details = Temporalio::Api::Common::V1::Payloads.new(
176
+ payloads: decode(failure.timeout_failure_info.last_heartbeat_details&.payloads).to_a,
177
+ )
178
+ elsif failure.canceled_failure_info
179
+ failure.canceled_failure_info.details = Temporalio::Api::Common::V1::Payloads.new(
180
+ payloads: decode(failure.canceled_failure_info.details&.payloads).to_a,
181
+ )
182
+ elsif failure.reset_workflow_failure_info
183
+ failure.reset_workflow_failure_info.last_heartbeat_details = Temporalio::Api::Common::V1::Payloads.new(
184
+ payloads: decode(failure.reset_workflow_failure_info.last_heartbeat_details&.payloads).to_a,
185
+ )
186
+ end
187
+
188
+ failure
189
+ end
190
+ end
191
+ end
@@ -0,0 +1,194 @@
1
+ # TODO: Figure out the hierarchy
2
+ require 'temporalio/errors'
3
+
4
+ module Temporalio
5
+ class Error
6
+ # Base for runtime failures during workflow/activity execution.
7
+ class Failure < Error
8
+ # @return [Temporalio::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 {Temporalio::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 {Temporalio::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 {Temporalio::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,19 @@
1
+ require 'temporalio/errors'
2
+
3
+ module Temporalio
4
+ class Error
5
+ # Used as a wrapper to perserve failure hierarchy in nested calls
6
+ # i.e. WorkflowFailure(ActivityError(WorkflowFailure(CancelledError)))
7
+ #
8
+ # @api private
9
+ class WorkflowFailure < Error
10
+ attr_reader :cause
11
+
12
+ def initialize(cause:)
13
+ super
14
+
15
+ @cause = cause
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,40 @@
1
+ module Temporalio
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
+
22
+ # Superclass for internal errors
23
+ class Internal < Error; end
24
+
25
+ class WorkerShutdown < Internal; end
26
+
27
+ # This error is used within the SDK to communicate Activity cancellations
28
+ # (and whether it was requested by server or not)
29
+ class ActivityCancelled < Internal
30
+ def initialize(reason, by_request)
31
+ super(reason)
32
+ @by_request = by_request
33
+ end
34
+
35
+ def by_request?
36
+ @by_request
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,26 @@
1
+ module Temporalio
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 [Temporalio::PayloadConverter::Base] A payload converter.
9
+ #
10
+ # @return [Temporalio::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 [Temporalio::Api::Failure::V1::Failure] A proto Failure to be converted.
18
+ # @param _payload_converter [Temporalio::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