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
@@ -1,609 +0,0 @@
1
- //! This module implements support for downloading and running ephemeral test
2
- //! servers useful for testing.
3
-
4
- use anyhow::anyhow;
5
- use flate2::read::GzDecoder;
6
- use futures::StreamExt;
7
- use serde::Deserialize;
8
- use std::{
9
- fs::OpenOptions,
10
- path::{Path, PathBuf},
11
- };
12
- use temporal_client::ClientOptionsBuilder;
13
- use tokio::{
14
- task::spawn_blocking,
15
- time::{sleep, Duration},
16
- };
17
- use tokio_util::io::{StreamReader, SyncIoBridge};
18
- use url::Url;
19
- use zip::read::read_zipfile_from_stream;
20
-
21
- #[cfg(target_family = "unix")]
22
- use std::os::unix::fs::OpenOptionsExt;
23
- use std::process::Stdio;
24
-
25
- /// Configuration for Temporalite.
26
- /// Will be removed eventually as its successor, Temporal CLI matures.
27
- /// We don't care for the duplication between this struct and [TemporalDevServerConfig] and prefer that over another
28
- /// abstraction since the existence of this struct is temporary.
29
- #[derive(Debug, Clone, derive_builder::Builder)]
30
- pub struct TemporaliteConfig {
31
- /// Required path to executable or download info.
32
- pub exe: EphemeralExe,
33
- /// Namespace to use.
34
- #[builder(default = "\"default\".to_owned()")]
35
- pub namespace: String,
36
- /// IP to bind to.
37
- #[builder(default = "\"127.0.0.1\".to_owned()")]
38
- pub ip: String,
39
- /// Port to use or obtains a free one if none given.
40
- #[builder(default)]
41
- pub port: Option<u16>,
42
- /// Sqlite DB filename if persisting or non-persistent if none.
43
- #[builder(default)]
44
- pub db_filename: Option<String>,
45
- /// Whether to enable the UI.
46
- #[builder(default)]
47
- pub ui: bool,
48
- /// Log format and level
49
- #[builder(default = "(\"pretty\".to_owned(), \"warn\".to_owned())")]
50
- pub log: (String, String),
51
- /// Additional arguments to Temporalite.
52
- #[builder(default)]
53
- pub extra_args: Vec<String>,
54
- }
55
-
56
- impl TemporaliteConfig {
57
- /// Start a Temporalite server.
58
- pub async fn start_server(&self) -> anyhow::Result<EphemeralServer> {
59
- self.start_server_with_output(Stdio::inherit()).await
60
- }
61
-
62
- /// Start a Temporalite server with configurable stdout destination.
63
- pub async fn start_server_with_output(&self, output: Stdio) -> anyhow::Result<EphemeralServer> {
64
- // Get exe path
65
- let exe_path = self
66
- .exe
67
- .get_or_download("temporalite", "temporalite")
68
- .await?;
69
-
70
- // Get free port if not already given
71
- let port = self.port.unwrap_or_else(|| get_free_port(&self.ip));
72
-
73
- // Build arg set
74
- let mut args = vec![
75
- "start".to_owned(),
76
- "--port".to_owned(),
77
- port.to_string(),
78
- "--namespace".to_owned(),
79
- self.namespace.clone(),
80
- "--ip".to_owned(),
81
- self.ip.clone(),
82
- "--log-format".to_owned(),
83
- self.log.0.clone(),
84
- "--log-level".to_owned(),
85
- self.log.1.clone(),
86
- "--dynamic-config-value".to_owned(),
87
- "frontend.enableServerVersionCheck=false".to_owned(),
88
- ];
89
- if let Some(db_filename) = &self.db_filename {
90
- args.push("--filename".to_owned());
91
- args.push(db_filename.clone());
92
- } else {
93
- args.push("--ephemeral".to_owned());
94
- }
95
- if !self.ui {
96
- args.push("--headless".to_owned());
97
- }
98
- args.extend(self.extra_args.clone());
99
-
100
- // Start
101
- EphemeralServer::start(EphemeralServerConfig {
102
- exe_path,
103
- port,
104
- args,
105
- has_test_service: false,
106
- output,
107
- })
108
- .await
109
- }
110
- }
111
-
112
- /// Configuration for Temporal CLI dev server.
113
- #[derive(Debug, Clone, derive_builder::Builder)]
114
- pub struct TemporalDevServerConfig {
115
- /// Required path to executable or download info.
116
- pub exe: EphemeralExe,
117
- /// Namespace to use.
118
- #[builder(default = "\"default\".to_owned()")]
119
- pub namespace: String,
120
- /// IP to bind to.
121
- #[builder(default = "\"127.0.0.1\".to_owned()")]
122
- pub ip: String,
123
- /// Port to use or obtains a free one if none given.
124
- #[builder(default)]
125
- pub port: Option<u16>,
126
- /// Sqlite DB filename if persisting or non-persistent if none.
127
- #[builder(default)]
128
- pub db_filename: Option<String>,
129
- /// Whether to enable the UI.
130
- #[builder(default)]
131
- pub ui: bool,
132
- /// Log format and level
133
- #[builder(default = "(\"pretty\".to_owned(), \"warn\".to_owned())")]
134
- pub log: (String, String),
135
- /// Additional arguments to Temporalite.
136
- #[builder(default)]
137
- pub extra_args: Vec<String>,
138
- }
139
-
140
- impl TemporalDevServerConfig {
141
- /// Start a Temporal CLI dev server.
142
- pub async fn start_server(&self) -> anyhow::Result<EphemeralServer> {
143
- self.start_server_with_output(Stdio::inherit()).await
144
- }
145
-
146
- /// Start a Temporal CLI dev server with configurable stdout destination.
147
- pub async fn start_server_with_output(&self, output: Stdio) -> anyhow::Result<EphemeralServer> {
148
- // Get exe path
149
- let exe_path = self.exe.get_or_download("cli", "temporal").await?;
150
-
151
- // Get free port if not already given
152
- let port = self.port.unwrap_or_else(|| get_free_port(&self.ip));
153
-
154
- // Build arg set
155
- let mut args = vec![
156
- "server".to_owned(),
157
- "start-dev".to_owned(),
158
- "--port".to_owned(),
159
- port.to_string(),
160
- "--namespace".to_owned(),
161
- self.namespace.clone(),
162
- "--ip".to_owned(),
163
- self.ip.clone(),
164
- "--log-format".to_owned(),
165
- self.log.0.clone(),
166
- "--log-level".to_owned(),
167
- self.log.1.clone(),
168
- "--dynamic-config-value".to_owned(),
169
- "frontend.enableServerVersionCheck=false".to_owned(),
170
- ];
171
- if let Some(db_filename) = &self.db_filename {
172
- args.push("--filename".to_owned());
173
- args.push(db_filename.clone());
174
- }
175
- if !self.ui {
176
- args.push("--headless".to_owned());
177
- }
178
- args.extend(self.extra_args.clone());
179
-
180
- // Start
181
- EphemeralServer::start(EphemeralServerConfig {
182
- exe_path,
183
- port,
184
- args,
185
- has_test_service: false,
186
- output,
187
- })
188
- .await
189
- }
190
- }
191
-
192
- /// Configuration for the test server.
193
- #[derive(Debug, Clone, derive_builder::Builder)]
194
- pub struct TestServerConfig {
195
- /// Required path to executable or download info.
196
- pub exe: EphemeralExe,
197
- /// Port to use or obtains a free one if none given.
198
- #[builder(default)]
199
- pub port: Option<u16>,
200
- /// Additional arguments to the test server.
201
- #[builder(default)]
202
- pub extra_args: Vec<String>,
203
- }
204
-
205
- impl TestServerConfig {
206
- /// Start a test server.
207
- pub async fn start_server(&self) -> anyhow::Result<EphemeralServer> {
208
- self.start_server_with_output(Stdio::inherit()).await
209
- }
210
-
211
- /// Start a test server with configurable stdout.
212
- pub async fn start_server_with_output(&self, output: Stdio) -> anyhow::Result<EphemeralServer> {
213
- // Get exe path
214
- let exe_path = self
215
- .exe
216
- .get_or_download("temporal-test-server", "temporal-test-server")
217
- .await?;
218
-
219
- // Get free port if not already given
220
- let port = self.port.unwrap_or_else(|| get_free_port("0.0.0.0"));
221
-
222
- // Build arg set
223
- let mut args = vec![port.to_string()];
224
- args.extend(self.extra_args.clone());
225
-
226
- // Start
227
- EphemeralServer::start(EphemeralServerConfig {
228
- exe_path,
229
- port,
230
- args,
231
- has_test_service: true,
232
- output,
233
- })
234
- .await
235
- }
236
- }
237
-
238
- struct EphemeralServerConfig {
239
- exe_path: PathBuf,
240
- port: u16,
241
- args: Vec<String>,
242
- has_test_service: bool,
243
- output: Stdio,
244
- }
245
-
246
- /// Server that will be stopped when dropped.
247
- #[derive(Debug)]
248
- pub struct EphemeralServer {
249
- /// gRPC target host:port for the server frontend.
250
- pub target: String,
251
- /// Whether the target implements the gRPC TestService
252
- pub has_test_service: bool,
253
- child: tokio::process::Child,
254
- }
255
-
256
- impl EphemeralServer {
257
- async fn start(config: EphemeralServerConfig) -> anyhow::Result<EphemeralServer> {
258
- // Start process
259
- // TODO(cretz): Offer stdio suppression?
260
- let child = tokio::process::Command::new(config.exe_path)
261
- .args(config.args)
262
- .stdin(Stdio::null())
263
- .stdout(config.output)
264
- .spawn()?;
265
- let target = format!("127.0.0.1:{}", config.port);
266
- let target_url = format!("http://{target}");
267
- let success = Ok(EphemeralServer {
268
- target,
269
- has_test_service: config.has_test_service,
270
- child,
271
- });
272
-
273
- // Try to connect every 100ms for 5s
274
- // TODO(cretz): Some other way, e.g. via stdout, to know whether the
275
- // server is up?
276
- let client_options = ClientOptionsBuilder::default()
277
- .identity("online_checker".to_owned())
278
- .target_url(Url::parse(&target_url)?)
279
- .client_name("online-checker".to_owned())
280
- .client_version("0.1.0".to_owned())
281
- .build()?;
282
- for _ in 0..50 {
283
- sleep(Duration::from_millis(100)).await;
284
- if client_options
285
- .connect_no_namespace(None, None)
286
- .await
287
- .is_ok()
288
- {
289
- return success;
290
- }
291
- }
292
- Err(anyhow!("Failed connecting to test server after 5 seconds"))
293
- }
294
-
295
- /// Shutdown the server (i.e. kill the child process). This does not attempt
296
- /// a kill if the child process appears completed, but such a check is not
297
- /// atomic so a kill could still fail as completed if completed just before
298
- /// kill.
299
- #[cfg(not(target_family = "unix"))]
300
- pub async fn shutdown(&mut self) -> anyhow::Result<()> {
301
- // Only kill if there is a PID
302
- if self.child.id().is_some() {
303
- Ok(self.child.kill().await?)
304
- } else {
305
- Ok(())
306
- }
307
- }
308
-
309
- /// Shutdown the server (i.e. kill the child process). This does not attempt
310
- /// a kill if the child process appears completed, but such a check is not
311
- /// atomic so a kill could still fail as completed if completed just before
312
- /// kill.
313
- #[cfg(target_family = "unix")]
314
- pub async fn shutdown(&mut self) -> anyhow::Result<()> {
315
- // For whatever reason, Tokio is not properly waiting on result
316
- // after sending kill in some cases which is causing defunct zombie
317
- // processes to remain and kill() to hang. Therefore, we are sending
318
- // SIGKILL and waiting on the process ourselves using a low-level call.
319
- //
320
- // WARNING: This is based on empirical evidence starting a Python test
321
- // run on Linux with Python 3.7 (does not happen on Python 3.10 nor does
322
- // it happen on Temporalite nor does it happen in Rust integration
323
- // tests). Don't alter without running that scenario. EX: SIGINT works but not SIGKILL
324
- if let Some(pid) = self.child.id() {
325
- let nix_pid = nix::unistd::Pid::from_raw(pid as i32);
326
- Ok(spawn_blocking(move || {
327
- nix::sys::signal::kill(nix_pid, nix::sys::signal::Signal::SIGINT)?;
328
- nix::sys::wait::waitpid(Some(nix_pid), None)
329
- })
330
- .await?
331
- .map(|_| ())?)
332
- } else {
333
- Ok(())
334
- }
335
- }
336
- }
337
-
338
- /// Where to find an executable. Can be a path or download.
339
- #[derive(Debug, Clone)]
340
- pub enum EphemeralExe {
341
- /// Existing path on the filesystem for the executable.
342
- ExistingPath(String),
343
- /// Download the executable if not already there.
344
- CachedDownload {
345
- /// Which version to download.
346
- version: EphemeralExeVersion,
347
- /// Destination directory or the user temp directory if none set.
348
- dest_dir: Option<String>,
349
- },
350
- }
351
-
352
- /// Which version of the exe to download.
353
- #[derive(Debug, Clone)]
354
- pub enum EphemeralExeVersion {
355
- /// Use a default version for the given SDK name and version.
356
- SDKDefault {
357
- /// Name of the SDK to get the default for.
358
- sdk_name: String,
359
- /// Version of the SDK to get the default for.
360
- sdk_version: String,
361
- },
362
- /// Specific version.
363
- Fixed(String),
364
- }
365
-
366
- #[derive(Deserialize, Debug)]
367
- #[serde(rename_all = "camelCase")]
368
- struct DownloadInfo {
369
- archive_url: String,
370
- file_to_extract: String,
371
- }
372
-
373
- impl EphemeralExe {
374
- async fn get_or_download(
375
- &self,
376
- artifact_name: &str,
377
- downloaded_name_prefix: &str,
378
- ) -> anyhow::Result<PathBuf> {
379
- match self {
380
- EphemeralExe::ExistingPath(exe_path) => {
381
- let path = PathBuf::from(exe_path);
382
- if !path.exists() {
383
- return Err(anyhow!("Exe path does not exist"));
384
- }
385
- Ok(path)
386
- }
387
- EphemeralExe::CachedDownload { version, dest_dir } => {
388
- let dest_dir = dest_dir
389
- .as_ref()
390
- .map(PathBuf::from)
391
- .unwrap_or_else(std::env::temp_dir);
392
- let (platform, out_ext) = match std::env::consts::OS {
393
- "windows" => ("windows", ".exe"),
394
- "macos" => ("darwin", ""),
395
- _ => ("linux", ""),
396
- };
397
- // Create dest file based on SDK name/version or fixed version
398
- let dest = dest_dir.join(match version {
399
- EphemeralExeVersion::SDKDefault {
400
- sdk_name,
401
- sdk_version,
402
- } => format!("{downloaded_name_prefix}-{sdk_name}-{sdk_version}{out_ext}"),
403
- EphemeralExeVersion::Fixed(version) => {
404
- format!("{downloaded_name_prefix}-{version}{out_ext}")
405
- }
406
- });
407
- debug!(
408
- "Lazily downloading or using existing exe at {}",
409
- dest.display()
410
- );
411
-
412
- // If it already exists, skip
413
- if dest.exists() {
414
- return Ok(dest);
415
- }
416
-
417
- // Get info about the proper archive and in-archive file
418
- let arch = match std::env::consts::ARCH {
419
- "x86_64" => "amd64",
420
- "arm" | "aarch64" => "arm64",
421
- other => return Err(anyhow!("Unsupported arch: {}", other)),
422
- };
423
- let mut get_info_params = vec![("arch", arch), ("platform", platform)];
424
- let version_name = match version {
425
- EphemeralExeVersion::SDKDefault {
426
- sdk_name,
427
- sdk_version,
428
- } => {
429
- get_info_params.push(("sdk-name", sdk_name.as_str()));
430
- get_info_params.push(("sdk-version", sdk_version.as_str()));
431
- "default"
432
- }
433
- EphemeralExeVersion::Fixed(version) => version,
434
- };
435
- let client = reqwest::Client::new();
436
- let info: DownloadInfo = client
437
- .get(format!(
438
- "https://temporal.download/{artifact_name}/{version_name}"
439
- ))
440
- .query(&get_info_params)
441
- .send()
442
- .await?
443
- .json()
444
- .await?;
445
-
446
- // Attempt download, looping because it could have waited for
447
- // concurrent one to finish
448
- loop {
449
- if lazy_download_exe(
450
- &client,
451
- &info.archive_url,
452
- Path::new(&info.file_to_extract),
453
- &dest,
454
- )
455
- .await?
456
- {
457
- return Ok(dest);
458
- }
459
- }
460
- }
461
- }
462
- }
463
- }
464
-
465
- fn get_free_port(bind_ip: &str) -> u16 {
466
- // Can just ask OS to give us a port then close socket. OS's don't give that
467
- // port back to anyone else anytime soon.
468
- std::net::TcpListener::bind(format!("{bind_ip}:0"))
469
- .unwrap()
470
- .local_addr()
471
- .unwrap()
472
- .port()
473
- }
474
-
475
- /// Returns false if we successfully waited for another download to complete, or
476
- /// true if the destination is known to exist. Should call again if false is
477
- /// returned.
478
- async fn lazy_download_exe(
479
- client: &reqwest::Client,
480
- uri: &str,
481
- file_to_extract: &Path,
482
- dest: &Path,
483
- ) -> anyhow::Result<bool> {
484
- // If it already exists, do not extract
485
- if dest.exists() {
486
- return Ok(true);
487
- }
488
-
489
- // We only want to download if we're not already downloading. To avoid some
490
- // kind of global lock, we'll just create the file eagerly w/ a temp
491
- // filename and delete it on failure or move it on success. If the temp file
492
- // already exists, we'll wait a bit and re-run this.
493
- let temp_dest_str = format!("{}{}", dest.to_str().unwrap(), ".downloading");
494
- let temp_dest = Path::new(&temp_dest_str);
495
- // Try to open file, using a file mode on unix families
496
- #[cfg(target_family = "unix")]
497
- let file = OpenOptions::new()
498
- .create_new(true)
499
- .write(true)
500
- .mode(0o755)
501
- .open(temp_dest);
502
- #[cfg(not(target_family = "unix"))]
503
- let file = OpenOptions::new()
504
- .create_new(true)
505
- .write(true)
506
- .open(temp_dest);
507
- // This match only gets Ok if the file was downloaded and extracted to the
508
- // temporary path
509
- match file {
510
- Err(err) if err.kind() == std::io::ErrorKind::AlreadyExists => {
511
- // Since it already exists, we'll try once a second for 20 seconds
512
- // to wait for it to be done, then return false so the caller can
513
- // try again.
514
- for _ in 0..20 {
515
- sleep(Duration::from_secs(1)).await;
516
- if !temp_dest.exists() {
517
- return Ok(false);
518
- }
519
- }
520
- Err(anyhow!(
521
- "Temp download file at {} not complete after 20 seconds. \
522
- Make sure another download isn't running for too long and delete the temp file.",
523
- temp_dest.display()
524
- ))
525
- }
526
- Err(err) => Err(err.into()),
527
- // If the dest was added since, just remove temp file
528
- Ok(_) if dest.exists() => {
529
- std::fs::remove_file(temp_dest)?;
530
- return Ok(true);
531
- }
532
- // Download and extract the binary
533
- Ok(mut temp_file) => {
534
- info!("Downloading {} to {}", uri, dest.display());
535
- download_and_extract(client, uri, file_to_extract, &mut temp_file)
536
- .await
537
- .map_err(|err| {
538
- // Failed to download, just remove file
539
- if let Err(err) = std::fs::remove_file(temp_dest) {
540
- warn!(
541
- "Failed removing temp file at {}: {:?}",
542
- temp_dest.display(),
543
- err
544
- );
545
- }
546
- err
547
- })
548
- }
549
- }?;
550
- // Now that file should be dropped, we can rename
551
- std::fs::rename(temp_dest, dest)?;
552
- Ok(true)
553
- }
554
-
555
- async fn download_and_extract(
556
- client: &reqwest::Client,
557
- uri: &str,
558
- file_to_extract: &Path,
559
- dest: &mut std::fs::File,
560
- ) -> anyhow::Result<()> {
561
- // Start download. We are using streaming here to extract the file from the
562
- // tarball or zip instead of loading into memory for Cursor/Seek.
563
- let resp = client.get(uri).send().await?;
564
- // We have to map the error type to an io error
565
- let stream = resp
566
- .bytes_stream()
567
- .map(|item| item.map_err(|err| std::io::Error::new(std::io::ErrorKind::Other, err)));
568
-
569
- // Since our tar/zip impls use sync IO, we have to create a bridge and run
570
- // in a blocking closure.
571
- let mut reader = SyncIoBridge::new(StreamReader::new(stream));
572
- let tarball = if uri.ends_with(".tar.gz") {
573
- true
574
- } else if uri.ends_with(".zip") {
575
- false
576
- } else {
577
- return Err(anyhow!("URI not .tar.gz or .zip"));
578
- };
579
- let file_to_extract = file_to_extract.to_path_buf();
580
- let mut dest = dest.try_clone()?;
581
-
582
- spawn_blocking(move || {
583
- if tarball {
584
- for entry in tar::Archive::new(GzDecoder::new(reader)).entries()? {
585
- let mut entry = entry?;
586
- if entry.path()? == file_to_extract {
587
- std::io::copy(&mut entry, &mut dest)?;
588
- return Ok(());
589
- }
590
- }
591
- Err(anyhow!("Unable to find file in tarball"))
592
- } else {
593
- loop {
594
- // This is the way to stream a zip file without creating an archive
595
- // that requires Seek.
596
- if let Some(mut file) = read_zipfile_from_stream(&mut reader)? {
597
- // If this is the file we're expecting, extract it
598
- if file.enclosed_name() == Some(&file_to_extract) {
599
- std::io::copy(&mut file, &mut dest)?;
600
- return Ok(());
601
- }
602
- } else {
603
- return Err(anyhow!("Unable to find file in zip"));
604
- }
605
- }
606
- }
607
- })
608
- .await?
609
- }