temporalio 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (585) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +4035 -0
  3. data/Cargo.toml +25 -0
  4. data/Gemfile +20 -0
  5. data/LICENSE +16 -15
  6. data/README.md +455 -195
  7. data/Rakefile +387 -0
  8. data/ext/Cargo.toml +25 -0
  9. data/lib/temporalio/activity/complete_async_error.rb +11 -0
  10. data/lib/temporalio/activity/context.rb +82 -77
  11. data/lib/temporalio/activity/definition.rb +77 -0
  12. data/lib/temporalio/activity/info.rb +42 -46
  13. data/lib/temporalio/activity.rb +49 -65
  14. data/lib/temporalio/api/batch/v1/message.rb +31 -0
  15. data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +93 -0
  16. data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +25 -0
  17. data/lib/temporalio/api/cloud/cloudservice.rb +3 -0
  18. data/lib/temporalio/api/cloud/identity/v1/message.rb +36 -0
  19. data/lib/temporalio/api/cloud/namespace/v1/message.rb +35 -0
  20. data/lib/temporalio/api/cloud/operation/v1/message.rb +27 -0
  21. data/lib/temporalio/api/cloud/region/v1/message.rb +23 -0
  22. data/lib/temporalio/api/command/v1/message.rb +46 -0
  23. data/lib/temporalio/api/common/v1/grpc_status.rb +23 -0
  24. data/lib/temporalio/api/common/v1/message.rb +41 -0
  25. data/lib/temporalio/api/enums/v1/batch_operation.rb +22 -0
  26. data/lib/temporalio/api/enums/v1/command_type.rb +21 -0
  27. data/lib/temporalio/api/enums/v1/common.rb +26 -0
  28. data/lib/temporalio/api/enums/v1/event_type.rb +21 -0
  29. data/lib/temporalio/api/enums/v1/failed_cause.rb +26 -0
  30. data/lib/temporalio/api/enums/v1/namespace.rb +23 -0
  31. data/lib/temporalio/api/enums/v1/query.rb +22 -0
  32. data/lib/temporalio/api/enums/v1/reset.rb +23 -0
  33. data/lib/temporalio/api/enums/v1/schedule.rb +21 -0
  34. data/lib/temporalio/api/enums/v1/task_queue.rb +25 -0
  35. data/lib/temporalio/api/enums/v1/update.rb +22 -0
  36. data/lib/temporalio/api/enums/v1/workflow.rb +30 -0
  37. data/lib/temporalio/api/errordetails/v1/message.rb +42 -0
  38. data/lib/temporalio/api/export/v1/message.rb +24 -0
  39. data/lib/temporalio/api/failure/v1/message.rb +35 -0
  40. data/lib/temporalio/api/filter/v1/message.rb +27 -0
  41. data/lib/temporalio/api/history/v1/message.rb +90 -0
  42. data/lib/temporalio/api/namespace/v1/message.rb +31 -0
  43. data/lib/temporalio/api/nexus/v1/message.rb +40 -0
  44. data/lib/temporalio/api/operatorservice/v1/request_response.rb +49 -0
  45. data/lib/temporalio/api/operatorservice/v1/service.rb +23 -0
  46. data/lib/temporalio/api/operatorservice.rb +3 -0
  47. data/lib/temporalio/api/protocol/v1/message.rb +23 -0
  48. data/lib/temporalio/api/query/v1/message.rb +27 -0
  49. data/lib/temporalio/api/replication/v1/message.rb +26 -0
  50. data/lib/temporalio/api/schedule/v1/message.rb +42 -0
  51. data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +25 -0
  52. data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +21 -0
  53. data/lib/temporalio/api/sdk/v1/user_metadata.rb +23 -0
  54. data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +23 -0
  55. data/lib/temporalio/api/taskqueue/v1/message.rb +45 -0
  56. data/lib/temporalio/api/update/v1/message.rb +33 -0
  57. data/lib/temporalio/api/version/v1/message.rb +26 -0
  58. data/lib/temporalio/api/workflow/v1/message.rb +43 -0
  59. data/lib/temporalio/api/workflowservice/v1/request_response.rb +189 -0
  60. data/lib/temporalio/api/workflowservice/v1/service.rb +23 -0
  61. data/lib/temporalio/api/workflowservice.rb +3 -0
  62. data/lib/temporalio/api.rb +13 -0
  63. data/lib/temporalio/cancellation.rb +150 -0
  64. data/lib/temporalio/client/activity_id_reference.rb +32 -0
  65. data/lib/temporalio/client/async_activity_handle.rb +110 -0
  66. data/lib/temporalio/client/connection/cloud_service.rb +648 -0
  67. data/lib/temporalio/client/connection/operator_service.rb +249 -0
  68. data/lib/temporalio/client/connection/service.rb +41 -0
  69. data/lib/temporalio/client/connection/workflow_service.rb +1218 -0
  70. data/lib/temporalio/client/connection.rb +270 -0
  71. data/lib/temporalio/client/interceptor.rb +316 -0
  72. data/lib/temporalio/client/workflow_execution.rb +103 -0
  73. data/lib/temporalio/client/workflow_execution_count.rb +36 -0
  74. data/lib/temporalio/client/workflow_execution_status.rb +18 -0
  75. data/lib/temporalio/client/workflow_handle.rb +380 -177
  76. data/lib/temporalio/client/workflow_query_reject_condition.rb +14 -0
  77. data/lib/temporalio/client/workflow_update_handle.rb +67 -0
  78. data/lib/temporalio/client/workflow_update_wait_stage.rb +17 -0
  79. data/lib/temporalio/client.rb +366 -93
  80. data/lib/temporalio/common_enums.rb +24 -0
  81. data/lib/temporalio/converters/data_converter.rb +102 -0
  82. data/lib/temporalio/converters/failure_converter.rb +200 -0
  83. data/lib/temporalio/converters/payload_codec.rb +26 -0
  84. data/lib/temporalio/converters/payload_converter/binary_null.rb +34 -0
  85. data/lib/temporalio/converters/payload_converter/binary_plain.rb +35 -0
  86. data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +42 -0
  87. data/lib/temporalio/converters/payload_converter/composite.rb +62 -0
  88. data/lib/temporalio/converters/payload_converter/encoding.rb +35 -0
  89. data/lib/temporalio/converters/payload_converter/json_plain.rb +44 -0
  90. data/lib/temporalio/converters/payload_converter/json_protobuf.rb +41 -0
  91. data/lib/temporalio/converters/payload_converter.rb +73 -0
  92. data/lib/temporalio/converters.rb +9 -0
  93. data/lib/temporalio/error/failure.rb +119 -94
  94. data/lib/temporalio/error.rb +147 -0
  95. data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +34 -0
  96. data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +31 -0
  97. data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +33 -0
  98. data/lib/temporalio/internal/bridge/api/common/common.rb +26 -0
  99. data/lib/temporalio/internal/bridge/api/core_interface.rb +36 -0
  100. data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +27 -0
  101. data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +52 -0
  102. data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +54 -0
  103. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +30 -0
  104. data/lib/temporalio/internal/bridge/api.rb +3 -0
  105. data/lib/temporalio/internal/bridge/client.rb +90 -0
  106. data/lib/temporalio/internal/bridge/runtime.rb +53 -0
  107. data/lib/temporalio/internal/bridge/testing.rb +46 -0
  108. data/lib/temporalio/internal/bridge/worker.rb +83 -0
  109. data/lib/temporalio/internal/bridge.rb +36 -0
  110. data/lib/temporalio/internal/client/implementation.rb +525 -0
  111. data/lib/temporalio/internal/proto_utils.rb +54 -0
  112. data/lib/temporalio/internal/worker/activity_worker.rb +345 -0
  113. data/lib/temporalio/internal/worker/multi_runner.rb +169 -0
  114. data/lib/temporalio/internal.rb +7 -0
  115. data/lib/temporalio/retry_policy.rb +39 -80
  116. data/lib/temporalio/runtime.rb +259 -13
  117. data/lib/temporalio/scoped_logger.rb +96 -0
  118. data/lib/temporalio/search_attributes.rb +300 -0
  119. data/lib/temporalio/testing/activity_environment.rb +132 -0
  120. data/lib/temporalio/testing/workflow_environment.rb +113 -88
  121. data/lib/temporalio/testing.rb +4 -169
  122. data/lib/temporalio/version.rb +3 -1
  123. data/lib/temporalio/worker/activity_executor/fiber.rb +49 -0
  124. data/lib/temporalio/worker/activity_executor/thread_pool.rb +254 -0
  125. data/lib/temporalio/worker/activity_executor.rb +55 -0
  126. data/lib/temporalio/worker/interceptor.rb +88 -0
  127. data/lib/temporalio/worker/tuner.rb +151 -0
  128. data/lib/temporalio/worker.rb +385 -163
  129. data/lib/temporalio/workflow_history.rb +22 -0
  130. data/lib/temporalio.rb +2 -7
  131. data/temporalio.gemspec +20 -39
  132. metadata +131 -712
  133. data/bridge/Cargo.lock +0 -2997
  134. data/bridge/Cargo.toml +0 -29
  135. data/bridge/sdk-core/ARCHITECTURE.md +0 -76
  136. data/bridge/sdk-core/Cargo.toml +0 -2
  137. data/bridge/sdk-core/LICENSE.txt +0 -23
  138. data/bridge/sdk-core/README.md +0 -117
  139. data/bridge/sdk-core/arch_docs/diagrams/README.md +0 -10
  140. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +0 -40
  141. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
  142. data/bridge/sdk-core/arch_docs/sticky_queues.md +0 -51
  143. data/bridge/sdk-core/client/Cargo.toml +0 -40
  144. data/bridge/sdk-core/client/LICENSE.txt +0 -23
  145. data/bridge/sdk-core/client/src/lib.rs +0 -1462
  146. data/bridge/sdk-core/client/src/metrics.rs +0 -174
  147. data/bridge/sdk-core/client/src/raw.rs +0 -932
  148. data/bridge/sdk-core/client/src/retry.rs +0 -763
  149. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +0 -185
  150. data/bridge/sdk-core/core/Cargo.toml +0 -129
  151. data/bridge/sdk-core/core/LICENSE.txt +0 -23
  152. data/bridge/sdk-core/core/benches/workflow_replay.rs +0 -76
  153. data/bridge/sdk-core/core/src/abstractions.rs +0 -355
  154. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +0 -1049
  155. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +0 -221
  156. data/bridge/sdk-core/core/src/core_tests/determinism.rs +0 -270
  157. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +0 -1046
  158. data/bridge/sdk-core/core/src/core_tests/mod.rs +0 -100
  159. data/bridge/sdk-core/core/src/core_tests/queries.rs +0 -893
  160. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +0 -65
  161. data/bridge/sdk-core/core/src/core_tests/workers.rs +0 -257
  162. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +0 -124
  163. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +0 -2433
  164. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +0 -609
  165. data/bridge/sdk-core/core/src/internal_flags.rs +0 -136
  166. data/bridge/sdk-core/core/src/lib.rs +0 -289
  167. data/bridge/sdk-core/core/src/pollers/mod.rs +0 -54
  168. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +0 -297
  169. data/bridge/sdk-core/core/src/protosext/mod.rs +0 -428
  170. data/bridge/sdk-core/core/src/replay/mod.rs +0 -215
  171. data/bridge/sdk-core/core/src/retry_logic.rs +0 -202
  172. data/bridge/sdk-core/core/src/telemetry/log_export.rs +0 -190
  173. data/bridge/sdk-core/core/src/telemetry/metrics.rs +0 -462
  174. data/bridge/sdk-core/core/src/telemetry/mod.rs +0 -423
  175. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +0 -83
  176. data/bridge/sdk-core/core/src/test_help/mod.rs +0 -939
  177. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +0 -536
  178. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +0 -89
  179. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +0 -1278
  180. data/bridge/sdk-core/core/src/worker/activities.rs +0 -557
  181. data/bridge/sdk-core/core/src/worker/client/mocks.rs +0 -107
  182. data/bridge/sdk-core/core/src/worker/client.rs +0 -389
  183. data/bridge/sdk-core/core/src/worker/mod.rs +0 -677
  184. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +0 -35
  185. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +0 -99
  186. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +0 -1111
  187. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +0 -964
  188. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +0 -294
  189. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -168
  190. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +0 -918
  191. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +0 -137
  192. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +0 -158
  193. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +0 -130
  194. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +0 -1525
  195. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +0 -324
  196. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +0 -179
  197. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -659
  198. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +0 -439
  199. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +0 -435
  200. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +0 -175
  201. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +0 -249
  202. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +0 -85
  203. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +0 -1280
  204. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +0 -269
  205. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +0 -213
  206. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +0 -1305
  207. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +0 -1276
  208. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +0 -128
  209. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +0 -125
  210. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +0 -85
  211. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +0 -117
  212. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +0 -24
  213. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +0 -715
  214. data/bridge/sdk-core/core-api/Cargo.toml +0 -33
  215. data/bridge/sdk-core/core-api/LICENSE.txt +0 -23
  216. data/bridge/sdk-core/core-api/src/errors.rs +0 -62
  217. data/bridge/sdk-core/core-api/src/lib.rs +0 -113
  218. data/bridge/sdk-core/core-api/src/telemetry.rs +0 -141
  219. data/bridge/sdk-core/core-api/src/worker.rs +0 -161
  220. data/bridge/sdk-core/etc/deps.svg +0 -162
  221. data/bridge/sdk-core/etc/dynamic-config.yaml +0 -2
  222. data/bridge/sdk-core/etc/otel-collector-config.yaml +0 -36
  223. data/bridge/sdk-core/etc/prometheus.yaml +0 -6
  224. data/bridge/sdk-core/etc/regen-depgraph.sh +0 -5
  225. data/bridge/sdk-core/fsm/Cargo.toml +0 -18
  226. data/bridge/sdk-core/fsm/LICENSE.txt +0 -23
  227. data/bridge/sdk-core/fsm/README.md +0 -3
  228. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
  229. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -23
  230. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +0 -650
  231. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
  232. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +0 -18
  233. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
  234. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +0 -41
  235. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +0 -14
  236. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +0 -11
  237. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +0 -32
  238. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +0 -31
  239. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +0 -46
  240. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +0 -29
  241. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -12
  242. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +0 -32
  243. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +0 -18
  244. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
  245. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +0 -11
  246. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
  247. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +0 -11
  248. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
  249. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
  250. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -23
  251. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +0 -254
  252. data/bridge/sdk-core/fsm/src/lib.rs +0 -2
  253. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  254. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  255. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  256. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  257. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  258. data/bridge/sdk-core/integ-with-otel.sh +0 -7
  259. data/bridge/sdk-core/protos/api_upstream/README.md +0 -9
  260. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +0 -40
  261. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -9
  262. data/bridge/sdk-core/protos/api_upstream/build/go.mod +0 -7
  263. data/bridge/sdk-core/protos/api_upstream/build/go.sum +0 -5
  264. data/bridge/sdk-core/protos/api_upstream/build/tools.go +0 -29
  265. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +0 -141
  266. data/bridge/sdk-core/protos/api_upstream/go.mod +0 -6
  267. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -89
  268. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +0 -248
  269. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +0 -123
  270. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -47
  271. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -52
  272. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -56
  273. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -170
  274. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -123
  275. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -51
  276. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -50
  277. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -41
  278. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -60
  279. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -59
  280. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -56
  281. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -122
  282. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -108
  283. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -114
  284. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -56
  285. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +0 -787
  286. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -99
  287. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -124
  288. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -80
  289. data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -57
  290. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +0 -61
  291. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -55
  292. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -379
  293. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -63
  294. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -108
  295. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +0 -111
  296. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +0 -59
  297. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -146
  298. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -1199
  299. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -415
  300. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +0 -63
  301. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -79
  302. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -80
  303. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -78
  304. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +0 -16
  305. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +0 -31
  306. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -31
  307. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -270
  308. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -305
  309. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -35
  310. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +0 -38
  311. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +0 -13
  312. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +0 -141
  313. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -63
  314. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -90
  315. data/bridge/sdk-core/rustfmt.toml +0 -1
  316. data/bridge/sdk-core/sdk/Cargo.toml +0 -48
  317. data/bridge/sdk-core/sdk/LICENSE.txt +0 -23
  318. data/bridge/sdk-core/sdk/src/activity_context.rs +0 -230
  319. data/bridge/sdk-core/sdk/src/app_data.rs +0 -37
  320. data/bridge/sdk-core/sdk/src/interceptors.rs +0 -50
  321. data/bridge/sdk-core/sdk/src/lib.rs +0 -861
  322. data/bridge/sdk-core/sdk/src/payload_converter.rs +0 -11
  323. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +0 -295
  324. data/bridge/sdk-core/sdk/src/workflow_context.rs +0 -694
  325. data/bridge/sdk-core/sdk/src/workflow_future.rs +0 -500
  326. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +0 -33
  327. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +0 -23
  328. data/bridge/sdk-core/sdk-core-protos/build.rs +0 -142
  329. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +0 -7
  330. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +0 -557
  331. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +0 -234
  332. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +0 -2088
  333. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +0 -48
  334. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +0 -14
  335. data/bridge/sdk-core/test-utils/Cargo.toml +0 -38
  336. data/bridge/sdk-core/test-utils/src/canned_histories.rs +0 -1389
  337. data/bridge/sdk-core/test-utils/src/histfetch.rs +0 -28
  338. data/bridge/sdk-core/test-utils/src/lib.rs +0 -709
  339. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +0 -50
  340. data/bridge/sdk-core/test-utils/src/workflows.rs +0 -29
  341. data/bridge/sdk-core/tests/fuzzy_workflow.rs +0 -130
  342. data/bridge/sdk-core/tests/heavy_tests.rs +0 -265
  343. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +0 -36
  344. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +0 -150
  345. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +0 -223
  346. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +0 -239
  347. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -90
  348. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +0 -314
  349. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +0 -151
  350. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +0 -902
  351. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
  352. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -60
  353. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -51
  354. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -51
  355. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -64
  356. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -47
  357. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -669
  358. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -54
  359. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -92
  360. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +0 -228
  361. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +0 -94
  362. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -171
  363. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +0 -85
  364. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -120
  365. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +0 -77
  366. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +0 -596
  367. data/bridge/sdk-core/tests/main.rs +0 -103
  368. data/bridge/sdk-core/tests/runner.rs +0 -132
  369. data/bridge/sdk-core/tests/wf_input_replay.rs +0 -32
  370. data/bridge/src/connection.rs +0 -202
  371. data/bridge/src/lib.rs +0 -494
  372. data/bridge/src/runtime.rs +0 -54
  373. data/bridge/src/test_server.rs +0 -153
  374. data/bridge/src/worker.rs +0 -197
  375. data/ext/Rakefile +0 -9
  376. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +0 -14
  377. data/lib/gen/temporal/api/batch/v1/message_pb.rb +0 -50
  378. data/lib/gen/temporal/api/command/v1/message_pb.rb +0 -160
  379. data/lib/gen/temporal/api/common/v1/message_pb.rb +0 -73
  380. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +0 -33
  381. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +0 -37
  382. data/lib/gen/temporal/api/enums/v1/common_pb.rb +0 -42
  383. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +0 -68
  384. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +0 -79
  385. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +0 -37
  386. data/lib/gen/temporal/api/enums/v1/query_pb.rb +0 -31
  387. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +0 -24
  388. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +0 -28
  389. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +0 -30
  390. data/lib/gen/temporal/api/enums/v1/update_pb.rb +0 -25
  391. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +0 -89
  392. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +0 -84
  393. data/lib/gen/temporal/api/failure/v1/message_pb.rb +0 -83
  394. data/lib/gen/temporal/api/filter/v1/message_pb.rb +0 -40
  395. data/lib/gen/temporal/api/history/v1/message_pb.rb +0 -498
  396. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +0 -64
  397. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +0 -88
  398. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +0 -20
  399. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +0 -30
  400. data/lib/gen/temporal/api/query/v1/message_pb.rb +0 -38
  401. data/lib/gen/temporal/api/replication/v1/message_pb.rb +0 -37
  402. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +0 -149
  403. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +0 -23
  404. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +0 -73
  405. data/lib/gen/temporal/api/testservice/v1/request_response_pb.rb +0 -49
  406. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +0 -21
  407. data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -72
  408. data/lib/gen/temporal/api/version/v1/message_pb.rb +0 -41
  409. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +0 -111
  410. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +0 -798
  411. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +0 -20
  412. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +0 -62
  413. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +0 -61
  414. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +0 -61
  415. data/lib/gen/temporal/sdk/core/common/common_pb.rb +0 -26
  416. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +0 -40
  417. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +0 -31
  418. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +0 -171
  419. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +0 -200
  420. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +0 -41
  421. data/lib/temporalio/bridge/connect_options.rb +0 -15
  422. data/lib/temporalio/bridge/error.rb +0 -8
  423. data/lib/temporalio/bridge/retry_config.rb +0 -24
  424. data/lib/temporalio/bridge/tls_options.rb +0 -19
  425. data/lib/temporalio/bridge.rb +0 -14
  426. data/lib/temporalio/client/implementation.rb +0 -340
  427. data/lib/temporalio/connection/retry_config.rb +0 -44
  428. data/lib/temporalio/connection/service.rb +0 -20
  429. data/lib/temporalio/connection/test_service.rb +0 -92
  430. data/lib/temporalio/connection/tls_options.rb +0 -51
  431. data/lib/temporalio/connection/workflow_service.rb +0 -731
  432. data/lib/temporalio/connection.rb +0 -86
  433. data/lib/temporalio/data_converter.rb +0 -191
  434. data/lib/temporalio/error/workflow_failure.rb +0 -19
  435. data/lib/temporalio/errors.rb +0 -40
  436. data/lib/temporalio/failure_converter/base.rb +0 -26
  437. data/lib/temporalio/failure_converter/basic.rb +0 -319
  438. data/lib/temporalio/failure_converter.rb +0 -7
  439. data/lib/temporalio/interceptor/activity_inbound.rb +0 -22
  440. data/lib/temporalio/interceptor/activity_outbound.rb +0 -24
  441. data/lib/temporalio/interceptor/chain.rb +0 -28
  442. data/lib/temporalio/interceptor/client.rb +0 -127
  443. data/lib/temporalio/interceptor.rb +0 -22
  444. data/lib/temporalio/payload_codec/base.rb +0 -32
  445. data/lib/temporalio/payload_converter/base.rb +0 -24
  446. data/lib/temporalio/payload_converter/bytes.rb +0 -27
  447. data/lib/temporalio/payload_converter/composite.rb +0 -49
  448. data/lib/temporalio/payload_converter/encoding_base.rb +0 -35
  449. data/lib/temporalio/payload_converter/json.rb +0 -26
  450. data/lib/temporalio/payload_converter/nil.rb +0 -26
  451. data/lib/temporalio/payload_converter.rb +0 -14
  452. data/lib/temporalio/retry_state.rb +0 -35
  453. data/lib/temporalio/testing/time_skipping_handle.rb +0 -32
  454. data/lib/temporalio/testing/time_skipping_interceptor.rb +0 -23
  455. data/lib/temporalio/timeout_type.rb +0 -29
  456. data/lib/temporalio/worker/activity_runner.rb +0 -114
  457. data/lib/temporalio/worker/activity_worker.rb +0 -164
  458. data/lib/temporalio/worker/reactor.rb +0 -46
  459. data/lib/temporalio/worker/runner.rb +0 -63
  460. data/lib/temporalio/worker/sync_worker.rb +0 -124
  461. data/lib/temporalio/worker/thread_pool_executor.rb +0 -51
  462. data/lib/temporalio/workflow/async.rb +0 -46
  463. data/lib/temporalio/workflow/execution_info.rb +0 -54
  464. data/lib/temporalio/workflow/execution_status.rb +0 -36
  465. data/lib/temporalio/workflow/future.rb +0 -138
  466. data/lib/temporalio/workflow/id_reuse_policy.rb +0 -36
  467. data/lib/temporalio/workflow/info.rb +0 -76
  468. data/lib/temporalio/workflow/query_reject_condition.rb +0 -33
  469. data/lib/thermite_patch.rb +0 -33
  470. data/sig/async.rbs +0 -17
  471. data/sig/protobuf.rbs +0 -16
  472. data/sig/protos/dependencies/gogoproto/gogo.rbs +0 -914
  473. data/sig/protos/google/protobuf/any.rbs +0 -157
  474. data/sig/protos/google/protobuf/descriptor.rbs +0 -2825
  475. data/sig/protos/google/protobuf/duration.rbs +0 -114
  476. data/sig/protos/google/protobuf/empty.rbs +0 -36
  477. data/sig/protos/google/protobuf/timestamp.rbs +0 -145
  478. data/sig/protos/google/protobuf/wrappers.rbs +0 -358
  479. data/sig/protos/temporal/api/batch/v1/message.rbs +0 -300
  480. data/sig/protos/temporal/api/command/v1/message.rbs +0 -1399
  481. data/sig/protos/temporal/api/common/v1/message.rbs +0 -528
  482. data/sig/protos/temporal/api/enums/v1/batch_operation.rbs +0 -79
  483. data/sig/protos/temporal/api/enums/v1/command_type.rbs +0 -68
  484. data/sig/protos/temporal/api/enums/v1/common.rbs +0 -118
  485. data/sig/protos/temporal/api/enums/v1/event_type.rbs +0 -264
  486. data/sig/protos/temporal/api/enums/v1/failed_cause.rbs +0 -277
  487. data/sig/protos/temporal/api/enums/v1/namespace.rbs +0 -108
  488. data/sig/protos/temporal/api/enums/v1/query.rbs +0 -81
  489. data/sig/protos/temporal/api/enums/v1/reset.rbs +0 -44
  490. data/sig/protos/temporal/api/enums/v1/schedule.rbs +0 -72
  491. data/sig/protos/temporal/api/enums/v1/task_queue.rbs +0 -92
  492. data/sig/protos/temporal/api/enums/v1/update.rbs +0 -64
  493. data/sig/protos/temporal/api/enums/v1/workflow.rbs +0 -371
  494. data/sig/protos/temporal/api/errordetails/v1/message.rbs +0 -551
  495. data/sig/protos/temporal/api/failure/v1/message.rbs +0 -581
  496. data/sig/protos/temporal/api/filter/v1/message.rbs +0 -171
  497. data/sig/protos/temporal/api/history/v1/message.rbs +0 -4609
  498. data/sig/protos/temporal/api/namespace/v1/message.rbs +0 -410
  499. data/sig/protos/temporal/api/operatorservice/v1/request_response.rbs +0 -643
  500. data/sig/protos/temporal/api/operatorservice/v1/service.rbs +0 -17
  501. data/sig/protos/temporal/api/protocol/v1/message.rbs +0 -84
  502. data/sig/protos/temporal/api/query/v1/message.rbs +0 -182
  503. data/sig/protos/temporal/api/replication/v1/message.rbs +0 -148
  504. data/sig/protos/temporal/api/schedule/v1/message.rbs +0 -1488
  505. data/sig/protos/temporal/api/sdk/v1/task_complete_metadata.rbs +0 -110
  506. data/sig/protos/temporal/api/taskqueue/v1/message.rbs +0 -486
  507. data/sig/protos/temporal/api/testservice/v1/request_response.rbs +0 -249
  508. data/sig/protos/temporal/api/testservice/v1/service.rbs +0 -15
  509. data/sig/protos/temporal/api/update/v1/message.rbs +0 -489
  510. data/sig/protos/temporal/api/version/v1/message.rbs +0 -184
  511. data/sig/protos/temporal/api/workflow/v1/message.rbs +0 -824
  512. data/sig/protos/temporal/api/workflowservice/v1/request_response.rbs +0 -7250
  513. data/sig/protos/temporal/api/workflowservice/v1/service.rbs +0 -22
  514. data/sig/protos/temporal/sdk/core/activity_result/activity_result.rbs +0 -380
  515. data/sig/protos/temporal/sdk/core/activity_task/activity_task.rbs +0 -386
  516. data/sig/protos/temporal/sdk/core/child_workflow/child_workflow.rbs +0 -323
  517. data/sig/protos/temporal/sdk/core/common/common.rbs +0 -62
  518. data/sig/protos/temporal/sdk/core/core_interface.rbs +0 -101
  519. data/sig/protos/temporal/sdk/core/external_data/external_data.rbs +0 -119
  520. data/sig/protos/temporal/sdk/core/workflow_activation/workflow_activation.rbs +0 -1473
  521. data/sig/protos/temporal/sdk/core/workflow_commands/workflow_commands.rbs +0 -1784
  522. data/sig/protos/temporal/sdk/core/workflow_completion/workflow_completion.rbs +0 -180
  523. data/sig/ruby.rbs +0 -12
  524. data/sig/temporalio/activity/context.rbs +0 -29
  525. data/sig/temporalio/activity/info.rbs +0 -43
  526. data/sig/temporalio/activity.rbs +0 -19
  527. data/sig/temporalio/bridge/connect_options.rbs +0 -19
  528. data/sig/temporalio/bridge/error.rbs +0 -8
  529. data/sig/temporalio/bridge/retry_config.rbs +0 -21
  530. data/sig/temporalio/bridge/tls_options.rbs +0 -17
  531. data/sig/temporalio/bridge.rbs +0 -71
  532. data/sig/temporalio/client/implementation.rbs +0 -38
  533. data/sig/temporalio/client/workflow_handle.rbs +0 -41
  534. data/sig/temporalio/client.rbs +0 -35
  535. data/sig/temporalio/connection/retry_config.rbs +0 -37
  536. data/sig/temporalio/connection/service.rbs +0 -14
  537. data/sig/temporalio/connection/test_service.rbs +0 -13
  538. data/sig/temporalio/connection/tls_options.rbs +0 -43
  539. data/sig/temporalio/connection/workflow_service.rbs +0 -48
  540. data/sig/temporalio/connection.rbs +0 -30
  541. data/sig/temporalio/data_converter.rbs +0 -35
  542. data/sig/temporalio/error/failure.rbs +0 -121
  543. data/sig/temporalio/error/workflow_failure.rbs +0 -9
  544. data/sig/temporalio/errors.rbs +0 -36
  545. data/sig/temporalio/failure_converter/base.rbs +0 -12
  546. data/sig/temporalio/failure_converter/basic.rbs +0 -86
  547. data/sig/temporalio/failure_converter.rbs +0 -5
  548. data/sig/temporalio/interceptor/activity_inbound.rbs +0 -21
  549. data/sig/temporalio/interceptor/activity_outbound.rbs +0 -10
  550. data/sig/temporalio/interceptor/chain.rbs +0 -24
  551. data/sig/temporalio/interceptor/client.rbs +0 -148
  552. data/sig/temporalio/interceptor.rbs +0 -6
  553. data/sig/temporalio/payload_codec/base.rbs +0 -12
  554. data/sig/temporalio/payload_converter/base.rbs +0 -12
  555. data/sig/temporalio/payload_converter/bytes.rbs +0 -9
  556. data/sig/temporalio/payload_converter/composite.rbs +0 -19
  557. data/sig/temporalio/payload_converter/encoding_base.rbs +0 -14
  558. data/sig/temporalio/payload_converter/json.rbs +0 -9
  559. data/sig/temporalio/payload_converter/nil.rbs +0 -9
  560. data/sig/temporalio/payload_converter.rbs +0 -5
  561. data/sig/temporalio/retry_policy.rbs +0 -25
  562. data/sig/temporalio/retry_state.rbs +0 -20
  563. data/sig/temporalio/runtime.rbs +0 -12
  564. data/sig/temporalio/testing/time_skipping_handle.rbs +0 -15
  565. data/sig/temporalio/testing/time_skipping_interceptor.rbs +0 -13
  566. data/sig/temporalio/testing/workflow_environment.rbs +0 -22
  567. data/sig/temporalio/testing.rbs +0 -35
  568. data/sig/temporalio/timeout_type.rbs +0 -15
  569. data/sig/temporalio/version.rbs +0 -3
  570. data/sig/temporalio/worker/activity_runner.rbs +0 -35
  571. data/sig/temporalio/worker/activity_worker.rbs +0 -44
  572. data/sig/temporalio/worker/reactor.rbs +0 -22
  573. data/sig/temporalio/worker/runner.rbs +0 -21
  574. data/sig/temporalio/worker/sync_worker.rbs +0 -23
  575. data/sig/temporalio/worker/thread_pool_executor.rbs +0 -23
  576. data/sig/temporalio/worker.rbs +0 -46
  577. data/sig/temporalio/workflow/async.rbs +0 -9
  578. data/sig/temporalio/workflow/execution_info.rbs +0 -55
  579. data/sig/temporalio/workflow/execution_status.rbs +0 -21
  580. data/sig/temporalio/workflow/future.rbs +0 -40
  581. data/sig/temporalio/workflow/id_reuse_policy.rbs +0 -15
  582. data/sig/temporalio/workflow/info.rbs +0 -55
  583. data/sig/temporalio/workflow/query_reject_condition.rbs +0 -14
  584. data/sig/temporalio.rbs +0 -2
  585. data/sig/thermite_patch.rbs +0 -15
@@ -0,0 +1,102 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'temporalio/api'
4
+ require 'temporalio/converters/failure_converter'
5
+ require 'temporalio/converters/payload_converter'
6
+
7
+ module Temporalio
8
+ module Converters
9
+ # Data converter for converting/encoding payloads to/from Ruby values.
10
+ class DataConverter
11
+ # @return [PayloadConverter] Payload converter. This must be Ractor shareable.
12
+ attr_reader :payload_converter
13
+
14
+ # @return [FailureConverter] Failure converter. This must be Ractor shareable.
15
+ attr_reader :failure_converter
16
+
17
+ # @return [PayloadCodec, nil] Optional codec for encoding/decoding payload bytes such as for encryption.
18
+ attr_reader :payload_codec
19
+
20
+ # @return [DataConverter] Default data converter.
21
+ def self.default
22
+ @default ||= DataConverter.new
23
+ end
24
+
25
+ # Create data converter.
26
+ #
27
+ # @param payload_converter [PayloadConverter] Payload converter to use. This must be Ractor shareable.
28
+ # @param failure_converter [FailureConverter] Failure converter to use. This must be Ractor shareable.
29
+ # @param payload_codec [PayloadCodec, nil] Payload codec to use.
30
+ def initialize(
31
+ payload_converter: PayloadConverter.default,
32
+ failure_converter: FailureConverter.default,
33
+ payload_codec: nil
34
+ )
35
+ raise 'Payload converter not shareable' unless Ractor.shareable?(payload_converter)
36
+ raise 'Failure converter not shareable' unless Ractor.shareable?(failure_converter)
37
+
38
+ @payload_converter = payload_converter
39
+ @failure_converter = failure_converter
40
+ @payload_codec = payload_codec
41
+ end
42
+
43
+ # Convert a Ruby value to a payload and encode it.
44
+ #
45
+ # @param value [Object] Ruby value.
46
+ # @return [Api::Common::V1::Payload] Converted and encoded payload.
47
+ def to_payload(value)
48
+ payload = payload_converter.to_payload(value)
49
+ payload = payload_codec.encode([payload]).first if payload_codec
50
+ payload
51
+ end
52
+
53
+ # Convert multiple Ruby values to a payload set and encode it.
54
+ #
55
+ # @param values [Object] Ruby values, converted to array via {::Array}.
56
+ # @return [Api::Common::V1::Payloads] Converted and encoded payload set.
57
+ def to_payloads(values)
58
+ payloads = payload_converter.to_payloads(values)
59
+ payloads.payloads.replace(payload_codec.encode(payloads.payloads)) if payload_codec && !payloads.payloads.empty?
60
+ payloads
61
+ end
62
+
63
+ # Decode and convert a payload to a Ruby value.
64
+ #
65
+ # @param payload [Api::Common::V1::Payload] Encoded payload.
66
+ # @return [Object] Decoded and converted Ruby value.
67
+ def from_payload(payload)
68
+ payload = payload_codec.decode([payload]).first if payload_codec
69
+ payload_converter.from_payload(payload)
70
+ end
71
+
72
+ # Decode and convert a payload set to Ruby values.
73
+ #
74
+ # @param payloads [Api::Common::V1::Payloads, nil] Encoded payload set.
75
+ # @return [Array<Object>] Decoded and converted Ruby values.
76
+ def from_payloads(payloads)
77
+ return [] unless payloads && !payloads.payloads.empty?
78
+
79
+ if payload_codec && !payloads.payloads.empty?
80
+ payloads = Api::Common::V1::Payloads.new(payloads: payload_codec.decode(payloads.payloads))
81
+ end
82
+ payload_converter.from_payloads(payloads)
83
+ end
84
+
85
+ # Convert a Ruby error to a Temporal failure and encode it.
86
+ #
87
+ # @param error [Exception] Ruby error.
88
+ # @return [Api::Failure::V1::Failure] Converted and encoded failure.
89
+ def to_failure(error)
90
+ failure_converter.to_failure(error, self)
91
+ end
92
+
93
+ # Decode and convert a Temporal failure to a Ruby error.
94
+ #
95
+ # @param failure [Api::Failure::V1::Failure] Encoded failure.
96
+ # @return [Exception] Decoded and converted Ruby error.
97
+ def from_failure(failure)
98
+ failure_converter.from_failure(failure, self)
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,200 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'temporalio/api'
4
+ require 'temporalio/error'
5
+ require 'temporalio/internal/proto_utils'
6
+
7
+ module Temporalio
8
+ module Converters
9
+ # Base class for converting Ruby errors to/from Temporal failures.
10
+ class FailureConverter
11
+ # @return [FailureConverter] Default failure converter.
12
+ def self.default
13
+ @default ||= Ractor.make_shareable(FailureConverter.new)
14
+ end
15
+
16
+ # @return [Boolean] If +true+, the message and stack trace of the failure will be moved into the encoded attribute
17
+ # section of the failure which can be encoded with a codec.
18
+ attr_reader :encode_common_attributes
19
+
20
+ # Create failure converter.
21
+ #
22
+ # @param encode_common_attributes [Boolean] If +true+, the message and stack trace of the failure will be moved
23
+ # into the encoded attribute section of the failure which can be encoded with a codec.
24
+ def initialize(encode_common_attributes: false)
25
+ @encode_common_attributes = encode_common_attributes
26
+ end
27
+
28
+ # Convert a Ruby error to a Temporal failure.
29
+ #
30
+ # @param error [Exception] Ruby error.
31
+ # @param converter [DataConverter, PayloadConverter] Converter for payloads.
32
+ # @return [Api::Failure::V1::Failure] Converted failure.
33
+ def to_failure(error, converter)
34
+ failure = Api::Failure::V1::Failure.new(
35
+ message: error.message,
36
+ stack_trace: error.backtrace&.join("\n")
37
+ )
38
+ cause = error.cause
39
+ failure.cause = to_failure(cause, converter) if cause
40
+
41
+ # Convert specific error type details
42
+ case error
43
+ when Error::ApplicationError
44
+ failure.application_failure_info = Api::Failure::V1::ApplicationFailureInfo.new(
45
+ type: error.type,
46
+ non_retryable: error.non_retryable,
47
+ details: converter.to_payloads(error.details),
48
+ next_retry_delay: Internal::ProtoUtils.seconds_to_duration(error.next_retry_delay)
49
+ )
50
+ when Error::TimeoutError
51
+ failure.timeout_failure_info = Api::Failure::V1::TimeoutFailureInfo.new(
52
+ timeout_type: error.type,
53
+ last_heartbeat_details: converter.to_payloads(error.last_heartbeat_details)
54
+ )
55
+ when Error::CanceledError
56
+ failure.canceled_failure_info = Api::Failure::V1::CanceledFailureInfo.new(
57
+ details: converter.to_payloads(error.details)
58
+ )
59
+ when Error::TerminatedError
60
+ failure.terminated_failure_info = Api::Failure::V1::TerminatedFailureInfo.new
61
+ when Error::ServerError
62
+ failure.server_failure_info = Api::Failure::V1::ServerFailureInfo.new(
63
+ non_retryable: error.non_retryable
64
+ )
65
+ when Error::ActivityError
66
+ failure.activity_failure_info = Api::Failure::V1::ActivityFailureInfo.new(
67
+ scheduled_event_id: error.scheduled_event_id,
68
+ started_event_id: error.started_event_id,
69
+ identity: error.identity,
70
+ activity_type: Api::Common::V1::ActivityType.new(name: error.activity_type),
71
+ activity_id: error.activity_id,
72
+ retry_state: error.retry_state
73
+ )
74
+ when Error::ChildWorkflowError
75
+ failure.child_workflow_execution_failure_info = Api::Failure::V1::ChildWorkflowExecutionFailureInfo.new(
76
+ namespace: error.namespace,
77
+ workflow_execution: Api::Common::V1::WorkflowExecution.new(
78
+ workflow_id: error.workflow_id,
79
+ run_id: error.run_id
80
+ ),
81
+ workflow_type: Api::Common::V1::WorkflowType.new(name: error.workflow_type),
82
+ initiated_event_id: error.initiated_event_id,
83
+ started_event_id: error.started_event_id,
84
+ retry_state: error.retry_state
85
+ )
86
+ else
87
+ failure.application_failure_info = Api::Failure::V1::ApplicationFailureInfo.new(
88
+ type: error.class.name.split('::').last
89
+ )
90
+ end
91
+
92
+ # If encoding common attributes, move message and stack trace
93
+ if @encode_common_attributes
94
+ failure.encoded_attributes = converter.to_payload(
95
+ { message: failure.message, stack_trace: failure.stack_trace }
96
+ )
97
+ failure.message = 'Encoded failure'
98
+ failure.stack_trace = ''
99
+ end
100
+
101
+ failure
102
+ end
103
+
104
+ # Convert a Temporal failure to a Ruby error.
105
+ #
106
+ # @param failure [Api::Failure::V1::Failure] Failure.
107
+ # @param converter [DataConverter, PayloadConverter] Converter for payloads.
108
+ # @return [Error::Failure] Converted Ruby error.
109
+ def from_failure(failure, converter)
110
+ # If encoded attributes have any of the fields we expect, try to decode
111
+ # but ignore any error
112
+ unless failure.encoded_attributes.nil?
113
+ begin
114
+ attrs = converter.from_payload(failure.encoded_attributes)
115
+ if attrs.is_a?(Hash)
116
+ # Shallow dup failure here to avoid affecting caller
117
+ failure = failure.dup
118
+ failure.message = attrs['message'] if attrs.key?('message')
119
+ failure.stack_trace = attrs['stack_trace'] if attrs.key?('stack_trace')
120
+ end
121
+ rescue StandardError
122
+ # Ignore failures
123
+ end
124
+ end
125
+
126
+ # Convert
127
+ error = if failure.application_failure_info
128
+ Error::ApplicationError.new(
129
+ Internal::ProtoUtils.string_or(failure.message, 'Application error'),
130
+ *converter.from_payloads(failure.application_failure_info.details),
131
+ type: Internal::ProtoUtils.string_or(failure.application_failure_info.type),
132
+ non_retryable: failure.application_failure_info.non_retryable,
133
+ next_retry_delay: failure.application_failure_info.next_retry_delay&.to_f
134
+ )
135
+ elsif failure.timeout_failure_info
136
+ Error::TimeoutError.new(
137
+ Internal::ProtoUtils.string_or(failure.message, 'Timeout'),
138
+ type: Internal::ProtoUtils.enum_to_int(Api::Enums::V1::TimeoutType,
139
+ failure.timeout_failure_info.timeout_type),
140
+ last_heartbeat_details: converter.from_payloads(
141
+ failure.timeout_failure_info.last_heartbeat_details
142
+ )
143
+ )
144
+ elsif failure.canceled_failure_info
145
+ Error::CanceledError.new(
146
+ Internal::ProtoUtils.string_or(failure.message, 'Canceled'),
147
+ details: converter.from_payloads(failure.canceled_failure_info.details)
148
+ )
149
+ elsif failure.terminated_failure_info
150
+ Error::TerminatedError.new(
151
+ Internal::ProtoUtils.string_or(failure.message, 'Terminated'),
152
+ details: []
153
+ )
154
+ elsif failure.server_failure_info
155
+ Error::ServerError.new(
156
+ Internal::ProtoUtils.string_or(failure.message, 'Server error'),
157
+ non_retryable: failure.server_failure_info.non_retryable
158
+ )
159
+ elsif failure.activity_failure_info
160
+ Error::ActivityError.new(
161
+ Internal::ProtoUtils.string_or(failure.message, 'Activity error'),
162
+ scheduled_event_id: failure.activity_failure_info.scheduled_event_id,
163
+ started_event_id: failure.activity_failure_info.started_event_id,
164
+ identity: failure.activity_failure_info.identity,
165
+ activity_type: failure.activity_failure_info.activity_type.name,
166
+ activity_id: failure.activity_failure_info.activity_id,
167
+ retry_state: Internal::ProtoUtils.enum_to_int(
168
+ Api::Enums::V1::RetryState,
169
+ failure.activity_failure_info.retry_state,
170
+ zero_means_nil: true
171
+ )
172
+ )
173
+ elsif failure.child_workflow_execution_failure_info
174
+ Error::ChildWorkflowError.new(
175
+ Internal::ProtoUtils.string_or(failure.message, 'Child workflow error'),
176
+ namespace: failure.child_workflow_execution_failure_info.namespace,
177
+ workflow_id: failure.child_workflow_execution_failure_info.workflow_execution.workflow_id,
178
+ run_id: failure.child_workflow_execution_failure_info.workflow_execution.run_id,
179
+ workflow_type: failure.child_workflow_execution_failure_info.workflow_type.name,
180
+ initiated_event_id: failure.child_workflow_execution_failure_info.initiated_event_id,
181
+ started_event_id: failure.child_workflow_execution_failure_info.started_event_id,
182
+ retry_state: Internal::ProtoUtils.enum_to_int(
183
+ Api::Enums::V1::RetryState,
184
+ failure.child_workflow_execution_failure_info.retry_state,
185
+ zero_means_nil: true
186
+ )
187
+ )
188
+ else
189
+ Error::Failure.new(Internal::ProtoUtils.string_or(failure.message, 'Failure error'))
190
+ end
191
+
192
+ Error._with_backtrace_and_cause(
193
+ error,
194
+ backtrace: failure.stack_trace.split("\n"),
195
+ cause: failure.cause ? from_failure(failure.cause, converter) : nil
196
+ )
197
+ end
198
+ end
199
+ end
200
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Temporalio
4
+ module Converters
5
+ # Base class for encoding and decoding payloads. Commonly used for encryption.
6
+ class PayloadCodec
7
+ # Encode the given payloads into a new set of payloads.
8
+ #
9
+ # @param payloads [Enumerable<Api::Common::V1::Payload>] Payloads to encode. This value should not be mutated.
10
+ # @return [Array<Api::Common::V1::Payload>] Encoded payloads. Note, this does not have to be the same number as
11
+ # payloads given, but it must be at least one and cannot be more than was given.
12
+ def encode(payloads)
13
+ raise NotImplementedError
14
+ end
15
+
16
+ # Decode the given payloads into a new set of payloads.
17
+ #
18
+ # @param payloads [Enumerable<Api::Common::V1::Payload>] Payloads to decode. This value should not be mutated.
19
+ # @return [Array<Api::Common::V1::Payload>] Decoded payloads. Note, this does not have to be the same number as
20
+ # payloads given, but it must be at least one and cannot be more than was given.
21
+ def decode(payloads)
22
+ raise NotImplementedError
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'temporalio/api'
4
+ require 'temporalio/converters/payload_converter/encoding'
5
+
6
+ module Temporalio
7
+ module Converters
8
+ class PayloadConverter
9
+ # Encoding for +nil+ values for +binary/null+ encoding.
10
+ class BinaryNull < Encoding
11
+ ENCODING = 'binary/null'
12
+
13
+ # (see Encoding.encoding)
14
+ def encoding
15
+ ENCODING
16
+ end
17
+
18
+ # (see Encoding.to_payload)
19
+ def to_payload(value)
20
+ return nil unless value.nil?
21
+
22
+ Api::Common::V1::Payload.new(
23
+ metadata: { 'encoding' => ENCODING }
24
+ )
25
+ end
26
+
27
+ # (see Encoding.from_payload)
28
+ def from_payload(payload) # rubocop:disable Lint/UnusedMethodArgument
29
+ nil
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'temporalio/api'
4
+ require 'temporalio/converters/payload_converter/encoding'
5
+
6
+ module Temporalio
7
+ module Converters
8
+ class PayloadConverter
9
+ # Encoding for +ASCII_8BIT+ string values for +binary/plain+ encoding.
10
+ class BinaryPlain < Encoding
11
+ ENCODING = 'binary/plain'
12
+
13
+ # (see Encoding.encoding)
14
+ def encoding
15
+ ENCODING
16
+ end
17
+
18
+ # (see Encoding.to_payload)
19
+ def to_payload(value)
20
+ return nil unless value.is_a?(String) && value.encoding == ::Encoding::ASCII_8BIT
21
+
22
+ Temporalio::Api::Common::V1::Payload.new(
23
+ metadata: { 'encoding' => ENCODING },
24
+ data: value
25
+ )
26
+ end
27
+
28
+ # (see Encoding.from_payload)
29
+ def from_payload(payload)
30
+ payload.data
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'google/protobuf'
4
+ require 'temporalio/api'
5
+ require 'temporalio/converters/payload_converter/encoding'
6
+
7
+ module Temporalio
8
+ module Converters
9
+ class PayloadConverter
10
+ # Encoding for Protobuf values for +binary/protobuf+ encoding.
11
+ class BinaryProtobuf < Encoding
12
+ ENCODING = 'binary/protobuf'
13
+
14
+ # (see Encoding.encoding)
15
+ def encoding
16
+ ENCODING
17
+ end
18
+
19
+ # (see Encoding.to_payload)
20
+ def to_payload(value)
21
+ return nil unless value.is_a?(Google::Protobuf::MessageExts)
22
+
23
+ # @type var value: Google::Protobuf::MessageExts
24
+ Api::Common::V1::Payload.new(
25
+ metadata: { 'encoding' => ENCODING, 'messageType' => value.class.descriptor.name },
26
+ data: value.to_proto
27
+ )
28
+ end
29
+
30
+ # (see Encoding.from_payload)
31
+ def from_payload(payload)
32
+ type = payload.metadata['messageType']
33
+ # @type var desc: untyped
34
+ desc = Google::Protobuf::DescriptorPool.generated_pool.lookup(type)
35
+ raise "No protobuf message found in global pool for message type #{type}" unless desc
36
+
37
+ desc.msgclass.decode(payload.data)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'temporalio/api'
4
+ require 'temporalio/converters/payload_converter'
5
+
6
+ module Temporalio
7
+ module Converters
8
+ class PayloadConverter
9
+ # Payload converter that is a collection of {Encoding}s. When converting to a payload, it tries each encoding
10
+ # converter in order until one works. The encoding converter is expected to set the +encoding+ metadata which is
11
+ # then used to match to the proper encoding converter when converting back to a Ruby value.
12
+ class Composite < PayloadConverter
13
+ class ConverterNotFound < Error; end
14
+ class EncodingNotSet < Error; end
15
+
16
+ # @return [Hash<String, Encoding>] Encoding converters processed in order.
17
+ attr_reader :converters
18
+
19
+ # Create a payload converter with the given encoding converters processed in order.
20
+ #
21
+ # @param converters [Array<Encoding>] Encoding converters.
22
+ def initialize(*converters)
23
+ super()
24
+ @converters = converters.each_with_object({}) do |converter, result|
25
+ result[converter.encoding] = converter
26
+ result
27
+ end
28
+ @converters.freeze
29
+ end
30
+
31
+ # Convert Ruby value to a payload by going over each encoding converter in order until one can convert.
32
+ #
33
+ # @param value [Object] Ruby value to convert.
34
+ # @return [Api::Common::V1::Payload] Converted payload.
35
+ # @raise [ConverterNotFound] If no converters can process the value.
36
+ def to_payload(value)
37
+ converters.each_value do |converter|
38
+ payload = converter.to_payload(value)
39
+ return payload unless payload.nil?
40
+ end
41
+ raise ConverterNotFound, "Value of type #{value} has no known converter"
42
+ end
43
+
44
+ # Convert payload to Ruby value based on its +encoding+ metadata on the payload.
45
+ #
46
+ # @param payload [Api::Common::V1::Payload] Payload to convert.
47
+ # @return [Object] Converted Ruby value.
48
+ # @raise [EncodingNotSet] If encoding not set on the metadata.
49
+ # @raise [ConverterNotFound] If no converter found for the encoding.
50
+ def from_payload(payload)
51
+ encoding = payload.metadata['encoding']
52
+ raise EncodingNotSet, 'Missing payload encoding' unless encoding
53
+
54
+ converter = converters[encoding]
55
+ raise ConverterNotFound, "No converter for encoding #{encoding}" unless converter
56
+
57
+ converter.from_payload(payload)
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Temporalio
4
+ module Converters
5
+ class PayloadConverter
6
+ # Base class for encoding converters that can be used for {Composite} converters. Each converter has an {encoding}
7
+ # that should be set on the Payload metadata for values it can process. Implementers must implement {encoding}
8
+ class Encoding
9
+ # @return [String] Encoding that will be put on the payload metadata if this encoding converter can handle the
10
+ # value.
11
+ def encoding
12
+ raise NotImplementedError
13
+ end
14
+
15
+ # Convert value to payload if this encoding converter can handle it, or return +nil+. If the converter can
16
+ # handle it, the resulting payload must have +encoding+ metadata on the payload set to the value of {encoding}.
17
+ #
18
+ # @param value [Object] Ruby value to possibly convert.
19
+ # @return [Api::Common::V1::Payload, nil] Converted payload if it can handle it, +nil+ otherwise.
20
+ def to_payload(value)
21
+ raise NotImplementedError
22
+ end
23
+
24
+ # Convert the payload to a Ruby value. The caller confirms the +encoding+ metadata matches {encoding}, so this
25
+ # will error if it cannot convert.
26
+ #
27
+ # @param payload [Api::Common::V1::Payload] Payload to convert.
28
+ # @return [Object] Converted Ruby value.
29
+ def from_payload(payload)
30
+ raise NotImplementedError
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+ require 'temporalio/api'
5
+ require 'temporalio/converters/payload_converter/encoding'
6
+
7
+ module Temporalio
8
+ module Converters
9
+ class PayloadConverter
10
+ # Encoding for all values for +json/plain+ encoding.
11
+ class JSONPlain < Encoding
12
+ ENCODING = 'json/plain'
13
+
14
+ # Create JSONPlain converter.
15
+ #
16
+ # @param parse_options [Hash] Options for {::JSON.parse}.
17
+ # @param generate_options [Hash] Options for {::JSON.generate}.
18
+ def initialize(parse_options: { create_additions: true }, generate_options: {})
19
+ super()
20
+ @parse_options = parse_options
21
+ @generate_options = generate_options
22
+ end
23
+
24
+ # (see Encoding.encoding)
25
+ def encoding
26
+ ENCODING
27
+ end
28
+
29
+ # (see Encoding.to_payload)
30
+ def to_payload(value)
31
+ Api::Common::V1::Payload.new(
32
+ metadata: { 'encoding' => ENCODING },
33
+ data: JSON.generate(value, @generate_options).b
34
+ )
35
+ end
36
+
37
+ # (see Encoding.from_payload)
38
+ def from_payload(payload)
39
+ JSON.parse(payload.data, @parse_options)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'google/protobuf'
4
+ require 'temporalio/api'
5
+ require 'temporalio/converters/payload_converter/encoding'
6
+
7
+ module Temporalio
8
+ module Converters
9
+ class PayloadConverter
10
+ # Encoding for Protobuf values for +json/protobuf+ encoding.
11
+ class JSONProtobuf < Encoding
12
+ ENCODING = 'json/protobuf'
13
+
14
+ # (see Encoding.encoding)
15
+ def encoding
16
+ ENCODING
17
+ end
18
+
19
+ # (see Encoding.to_payload)
20
+ def to_payload(value)
21
+ return nil unless value.is_a?(Google::Protobuf::MessageExts)
22
+
23
+ Api::Common::V1::Payload.new(
24
+ metadata: { 'encoding' => ENCODING, 'messageType' => value.class.descriptor.name },
25
+ data: value.to_json
26
+ )
27
+ end
28
+
29
+ # (see Encoding.from_payload)
30
+ def from_payload(payload)
31
+ type = payload.metadata['messageType']
32
+ # @type var desc: untyped
33
+ desc = Google::Protobuf::DescriptorPool.generated_pool.lookup(type)
34
+ raise "No protobuf message found in global pool for message type #{type}" unless desc
35
+
36
+ desc.msgclass.decode_json(payload.data)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end