temporalio 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (310) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +180 -7
  3. data/bridge/Cargo.lock +208 -76
  4. data/bridge/Cargo.toml +5 -2
  5. data/bridge/sdk-core/Cargo.toml +1 -1
  6. data/bridge/sdk-core/README.md +20 -10
  7. data/bridge/sdk-core/client/Cargo.toml +1 -1
  8. data/bridge/sdk-core/client/src/lib.rs +227 -59
  9. data/bridge/sdk-core/client/src/metrics.rs +17 -8
  10. data/bridge/sdk-core/client/src/raw.rs +13 -12
  11. data/bridge/sdk-core/client/src/retry.rs +132 -43
  12. data/bridge/sdk-core/core/Cargo.toml +28 -15
  13. data/bridge/sdk-core/core/benches/workflow_replay.rs +13 -10
  14. data/bridge/sdk-core/core/src/abstractions.rs +225 -36
  15. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +217 -79
  16. data/bridge/sdk-core/core/src/core_tests/determinism.rs +165 -2
  17. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +565 -34
  18. data/bridge/sdk-core/core/src/core_tests/queries.rs +247 -90
  19. data/bridge/sdk-core/core/src/core_tests/workers.rs +3 -5
  20. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +1 -1
  21. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +430 -67
  22. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +106 -12
  23. data/bridge/sdk-core/core/src/internal_flags.rs +136 -0
  24. data/bridge/sdk-core/core/src/lib.rs +148 -34
  25. data/bridge/sdk-core/core/src/protosext/mod.rs +1 -1
  26. data/bridge/sdk-core/core/src/replay/mod.rs +185 -41
  27. data/bridge/sdk-core/core/src/telemetry/log_export.rs +190 -0
  28. data/bridge/sdk-core/core/src/telemetry/metrics.rs +219 -140
  29. data/bridge/sdk-core/core/src/telemetry/mod.rs +326 -315
  30. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +20 -14
  31. data/bridge/sdk-core/core/src/test_help/mod.rs +85 -21
  32. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +112 -156
  33. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +89 -0
  34. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +364 -128
  35. data/bridge/sdk-core/core/src/worker/activities.rs +263 -170
  36. data/bridge/sdk-core/core/src/worker/client/mocks.rs +23 -3
  37. data/bridge/sdk-core/core/src/worker/client.rs +48 -6
  38. data/bridge/sdk-core/core/src/worker/mod.rs +186 -75
  39. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +1 -3
  40. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +13 -24
  41. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +879 -226
  42. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +101 -48
  43. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +8 -12
  44. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +6 -9
  45. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +90 -32
  46. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +6 -9
  47. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +7 -10
  48. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +6 -9
  49. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +160 -83
  50. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +36 -54
  51. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +179 -0
  52. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +104 -157
  53. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +8 -12
  54. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +9 -13
  55. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +10 -4
  56. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +14 -11
  57. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +6 -17
  58. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +395 -299
  59. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +12 -20
  60. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +33 -18
  61. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +1032 -374
  62. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +525 -392
  63. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +40 -57
  64. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +125 -0
  65. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +3 -6
  66. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +117 -0
  67. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +24 -0
  68. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +456 -681
  69. data/bridge/sdk-core/core-api/Cargo.toml +6 -4
  70. data/bridge/sdk-core/core-api/src/errors.rs +1 -34
  71. data/bridge/sdk-core/core-api/src/lib.rs +7 -45
  72. data/bridge/sdk-core/core-api/src/telemetry.rs +141 -0
  73. data/bridge/sdk-core/core-api/src/worker.rs +27 -1
  74. data/bridge/sdk-core/etc/deps.svg +115 -140
  75. data/bridge/sdk-core/etc/regen-depgraph.sh +5 -0
  76. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +18 -15
  77. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +1 -1
  78. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +8 -3
  79. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  80. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  81. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  82. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -3
  83. data/bridge/sdk-core/protos/api_upstream/build/go.mod +7 -0
  84. data/bridge/sdk-core/protos/api_upstream/build/go.sum +5 -0
  85. data/bridge/sdk-core/protos/api_upstream/{temporal/api/enums/v1/cluster.proto → build/tools.go} +7 -18
  86. data/bridge/sdk-core/protos/api_upstream/go.mod +6 -0
  87. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +12 -9
  88. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +15 -26
  89. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +13 -2
  90. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +3 -2
  91. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +4 -9
  92. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +3 -2
  93. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +10 -8
  94. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +28 -2
  95. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +2 -2
  96. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +2 -2
  97. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +2 -2
  98. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +2 -2
  99. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +2 -2
  100. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +24 -19
  101. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +2 -2
  102. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +2 -2
  103. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +2 -2
  104. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +2 -2
  105. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +62 -26
  106. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +4 -2
  107. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +24 -61
  108. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +2 -21
  109. data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +57 -0
  110. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +2 -2
  111. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +2 -2
  112. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +110 -31
  113. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +63 -0
  114. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +4 -4
  115. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +71 -6
  116. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +2 -2
  117. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +3 -2
  118. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +111 -36
  119. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +19 -5
  120. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +1 -0
  121. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +1 -0
  122. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +1 -0
  123. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +1 -0
  124. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +1 -0
  125. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +1 -0
  126. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +9 -0
  127. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +9 -1
  128. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +6 -0
  129. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +2 -2
  130. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +2 -2
  131. data/bridge/sdk-core/sdk/Cargo.toml +4 -3
  132. data/bridge/sdk-core/sdk/src/interceptors.rs +36 -3
  133. data/bridge/sdk-core/sdk/src/lib.rs +94 -25
  134. data/bridge/sdk-core/sdk/src/workflow_context.rs +13 -2
  135. data/bridge/sdk-core/sdk/src/workflow_future.rs +10 -13
  136. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +5 -2
  137. data/bridge/sdk-core/sdk-core-protos/build.rs +36 -2
  138. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +164 -104
  139. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +27 -23
  140. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +252 -74
  141. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +12 -2
  142. data/bridge/sdk-core/test-utils/Cargo.toml +4 -1
  143. data/bridge/sdk-core/test-utils/src/canned_histories.rs +106 -296
  144. data/bridge/sdk-core/test-utils/src/histfetch.rs +1 -1
  145. data/bridge/sdk-core/test-utils/src/lib.rs +161 -50
  146. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +50 -0
  147. data/bridge/sdk-core/test-utils/src/workflows.rs +29 -0
  148. data/bridge/sdk-core/tests/fuzzy_workflow.rs +130 -0
  149. data/bridge/sdk-core/tests/{load_tests.rs → heavy_tests.rs} +125 -51
  150. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +25 -3
  151. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +10 -5
  152. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +239 -0
  153. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +4 -60
  154. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +5 -128
  155. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +83 -25
  156. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +93 -69
  157. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +1 -0
  158. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +6 -13
  159. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +1 -0
  160. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +6 -2
  161. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +3 -10
  162. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +151 -116
  163. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +54 -0
  164. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +7 -28
  165. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +115 -24
  166. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +1 -0
  167. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +18 -14
  168. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +6 -20
  169. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +10 -21
  170. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +6 -4
  171. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +27 -18
  172. data/bridge/sdk-core/tests/main.rs +8 -16
  173. data/bridge/sdk-core/tests/runner.rs +75 -36
  174. data/bridge/sdk-core/tests/wf_input_replay.rs +32 -0
  175. data/bridge/src/connection.rs +117 -82
  176. data/bridge/src/lib.rs +356 -42
  177. data/bridge/src/runtime.rs +10 -3
  178. data/bridge/src/test_server.rs +153 -0
  179. data/bridge/src/worker.rs +133 -9
  180. data/lib/gen/temporal/api/batch/v1/message_pb.rb +8 -6
  181. data/lib/gen/temporal/api/command/v1/message_pb.rb +10 -16
  182. data/lib/gen/temporal/api/common/v1/message_pb.rb +5 -1
  183. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +2 -1
  184. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +3 -3
  185. data/lib/gen/temporal/api/enums/v1/common_pb.rb +2 -1
  186. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +5 -4
  187. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +9 -1
  188. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +1 -1
  189. data/lib/gen/temporal/api/enums/v1/query_pb.rb +1 -1
  190. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +1 -1
  191. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +1 -1
  192. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +1 -1
  193. data/lib/gen/temporal/api/enums/v1/update_pb.rb +7 -10
  194. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +1 -1
  195. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +1 -1
  196. data/lib/gen/temporal/api/failure/v1/message_pb.rb +1 -1
  197. data/lib/gen/temporal/api/filter/v1/message_pb.rb +1 -1
  198. data/lib/gen/temporal/api/history/v1/message_pb.rb +34 -25
  199. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +2 -1
  200. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +14 -51
  201. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +1 -1
  202. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +30 -0
  203. data/lib/gen/temporal/api/query/v1/message_pb.rb +1 -1
  204. data/lib/gen/temporal/api/replication/v1/message_pb.rb +1 -1
  205. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +22 -1
  206. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +23 -0
  207. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +2 -2
  208. data/lib/gen/temporal/api/testservice/v1/request_response_pb.rb +49 -0
  209. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +21 -0
  210. data/lib/gen/temporal/api/update/v1/message_pb.rb +49 -3
  211. data/lib/gen/temporal/api/version/v1/message_pb.rb +1 -1
  212. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +2 -1
  213. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +47 -20
  214. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +1 -1
  215. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +13 -9
  216. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +10 -6
  217. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +13 -9
  218. data/lib/gen/temporal/sdk/core/common/common_pb.rb +7 -3
  219. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +9 -3
  220. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +7 -3
  221. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +28 -21
  222. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +32 -24
  223. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +12 -5
  224. data/lib/temporalio/activity/context.rb +102 -0
  225. data/lib/temporalio/activity/info.rb +67 -0
  226. data/lib/temporalio/activity.rb +85 -0
  227. data/lib/temporalio/bridge/connect_options.rb +15 -0
  228. data/lib/temporalio/bridge/error.rb +8 -0
  229. data/lib/temporalio/bridge/retry_config.rb +24 -0
  230. data/lib/temporalio/bridge/tls_options.rb +19 -0
  231. data/lib/temporalio/bridge.rb +14 -0
  232. data/lib/{temporal → temporalio}/client/implementation.rb +57 -56
  233. data/lib/{temporal → temporalio}/client/workflow_handle.rb +35 -35
  234. data/lib/{temporal → temporalio}/client.rb +19 -32
  235. data/lib/temporalio/connection/retry_config.rb +44 -0
  236. data/lib/temporalio/connection/service.rb +20 -0
  237. data/lib/temporalio/connection/test_service.rb +92 -0
  238. data/lib/temporalio/connection/tls_options.rb +51 -0
  239. data/lib/temporalio/connection/workflow_service.rb +731 -0
  240. data/lib/temporalio/connection.rb +86 -0
  241. data/lib/{temporal → temporalio}/data_converter.rb +76 -35
  242. data/lib/{temporal → temporalio}/error/failure.rb +6 -6
  243. data/lib/{temporal → temporalio}/error/workflow_failure.rb +4 -2
  244. data/lib/{temporal → temporalio}/errors.rb +19 -1
  245. data/lib/{temporal → temporalio}/failure_converter/base.rb +5 -5
  246. data/lib/{temporal → temporalio}/failure_converter/basic.rb +58 -52
  247. data/lib/temporalio/failure_converter.rb +7 -0
  248. data/lib/temporalio/interceptor/activity_inbound.rb +22 -0
  249. data/lib/temporalio/interceptor/activity_outbound.rb +24 -0
  250. data/lib/{temporal → temporalio}/interceptor/chain.rb +7 -6
  251. data/lib/{temporal → temporalio}/interceptor/client.rb +27 -2
  252. data/lib/temporalio/interceptor.rb +22 -0
  253. data/lib/{temporal → temporalio}/payload_codec/base.rb +5 -5
  254. data/lib/{temporal → temporalio}/payload_converter/base.rb +3 -3
  255. data/lib/{temporal → temporalio}/payload_converter/bytes.rb +4 -3
  256. data/lib/{temporal → temporalio}/payload_converter/composite.rb +7 -5
  257. data/lib/{temporal → temporalio}/payload_converter/encoding_base.rb +4 -4
  258. data/lib/{temporal → temporalio}/payload_converter/json.rb +4 -3
  259. data/lib/{temporal → temporalio}/payload_converter/nil.rb +4 -3
  260. data/lib/temporalio/payload_converter.rb +14 -0
  261. data/lib/{temporal → temporalio}/retry_policy.rb +17 -7
  262. data/lib/{temporal → temporalio}/retry_state.rb +1 -1
  263. data/lib/temporalio/runtime.rb +25 -0
  264. data/lib/temporalio/testing/time_skipping_handle.rb +32 -0
  265. data/lib/temporalio/testing/time_skipping_interceptor.rb +23 -0
  266. data/lib/temporalio/testing/workflow_environment.rb +112 -0
  267. data/lib/temporalio/testing.rb +175 -0
  268. data/lib/{temporal → temporalio}/timeout_type.rb +2 -2
  269. data/lib/temporalio/version.rb +3 -0
  270. data/lib/temporalio/worker/activity_runner.rb +114 -0
  271. data/lib/temporalio/worker/activity_worker.rb +164 -0
  272. data/lib/temporalio/worker/reactor.rb +46 -0
  273. data/lib/temporalio/worker/runner.rb +63 -0
  274. data/lib/temporalio/worker/sync_worker.rb +124 -0
  275. data/lib/temporalio/worker/thread_pool_executor.rb +51 -0
  276. data/lib/temporalio/worker.rb +204 -0
  277. data/lib/temporalio/workflow/async.rb +46 -0
  278. data/lib/{temporal → temporalio}/workflow/execution_info.rb +4 -4
  279. data/lib/{temporal → temporalio}/workflow/execution_status.rb +1 -1
  280. data/lib/temporalio/workflow/future.rb +138 -0
  281. data/lib/{temporal → temporalio}/workflow/id_reuse_policy.rb +6 -6
  282. data/lib/temporalio/workflow/info.rb +76 -0
  283. data/lib/{temporal → temporalio}/workflow/query_reject_condition.rb +5 -5
  284. data/lib/temporalio.rb +12 -3
  285. data/temporalio.gemspec +11 -6
  286. metadata +137 -64
  287. data/bridge/sdk-core/Cargo.lock +0 -2606
  288. data/bridge/sdk-core/bridge-ffi/Cargo.toml +0 -24
  289. data/bridge/sdk-core/bridge-ffi/LICENSE.txt +0 -23
  290. data/bridge/sdk-core/bridge-ffi/build.rs +0 -25
  291. data/bridge/sdk-core/bridge-ffi/include/sdk-core-bridge.h +0 -249
  292. data/bridge/sdk-core/bridge-ffi/src/lib.rs +0 -825
  293. data/bridge/sdk-core/bridge-ffi/src/wrappers.rs +0 -211
  294. data/bridge/sdk-core/core/src/log_export.rs +0 -62
  295. data/bridge/sdk-core/core/src/worker/workflow/machines/mutable_side_effect_state_machine.rs +0 -127
  296. data/bridge/sdk-core/core/src/worker/workflow/machines/side_effect_state_machine.rs +0 -71
  297. data/bridge/sdk-core/protos/api_upstream/temporal/api/cluster/v1/message.proto +0 -83
  298. data/bridge/sdk-core/protos/local/temporal/sdk/core/bridge/bridge.proto +0 -210
  299. data/bridge/sdk-core/sdk/src/conversions.rs +0 -8
  300. data/lib/bridge.so +0 -0
  301. data/lib/gen/temporal/api/cluster/v1/message_pb.rb +0 -67
  302. data/lib/gen/temporal/api/enums/v1/cluster_pb.rb +0 -26
  303. data/lib/gen/temporal/sdk/core/bridge/bridge_pb.rb +0 -222
  304. data/lib/temporal/bridge.rb +0 -14
  305. data/lib/temporal/connection.rb +0 -736
  306. data/lib/temporal/failure_converter.rb +0 -8
  307. data/lib/temporal/payload_converter.rb +0 -14
  308. data/lib/temporal/runtime.rb +0 -22
  309. data/lib/temporal/version.rb +0 -3
  310. data/lib/temporal.rb +0 -8
@@ -28,19 +28,84 @@ option go_package = "go.temporal.io/api/update/v1;update";
28
28
  option java_package = "io.temporal.api.update.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "MessageProto";
31
- option ruby_package = "Temporal::Api::Update::V1";
32
- option csharp_namespace = "Temporal.Api.Update.V1";
31
+ option ruby_package = "Temporalio::Api::Update::V1";
32
+ option csharp_namespace = "Temporalio.Api.Update.V1";
33
33
 
34
34
  import "temporal/api/common/v1/message.proto";
35
+ import "temporal/api/enums/v1/update.proto";
36
+ import "temporal/api/failure/v1/message.proto";
35
37
 
36
- message WorkflowUpdate {
37
- // Headers that are passed with the update to the processing workflow.
38
+ // Sepcifies to the gRPC server how the client wants the UpdateWorkflowExecution
39
+ // call to wait before returning control to the caller.
40
+ message WaitPolicy {
41
+
42
+ // Indicates the update lifecycle stage that the gRPC call should wait for
43
+ // before returning.
44
+ temporal.api.enums.v1.UpdateWorkflowExecutionLifecycleStage lifecycle_stage = 1;
45
+ }
46
+
47
+ // The data needed by a client to refer to an previously invoked workflow
48
+ // execution update process.
49
+ message UpdateRef {
50
+ temporal.api.common.v1.WorkflowExecution workflow_execution = 1;
51
+ string update_id = 2;
52
+ }
53
+
54
+ // The outcome of a workflow update - success or failure.
55
+ message Outcome {
56
+ oneof value {
57
+ temporal.api.common.v1.Payloads success = 1;
58
+ temporal.api.failure.v1.Failure failure = 2;
59
+ }
60
+ }
61
+
62
+ // Metadata about a workflow execution update.
63
+ message Meta {
64
+ // An ID with workflow-scoped uniqueness for this update
65
+ string update_id = 1;
66
+
67
+ // A string identifying the agent that requested this update.
68
+ string identity = 2;
69
+ }
70
+
71
+ message Input {
72
+ // Headers that are passed with the update from the requesting entity.
38
73
  // These can include things like auth or tracing tokens.
39
74
  temporal.api.common.v1.Header header = 1;
40
75
 
41
- // The name of the update function to invoke on the target workflow.
76
+ // The name of the input handler to invoke on the target workflow
42
77
  string name = 2;
43
78
 
44
- // The arguments to pass to the named update function.
79
+ // The arguments to pass to the named handler.
45
80
  temporal.api.common.v1.Payloads args = 3;
46
81
  }
82
+
83
+ // The client request that triggers a workflow execution update
84
+ message Request {
85
+ Meta meta = 1;
86
+ Input input = 2;
87
+ }
88
+
89
+ // An update protocol message indicating that a workflow execution update has
90
+ // been rejected.
91
+ message Rejection {
92
+ string rejected_request_message_id = 1;
93
+ int64 rejected_request_sequencing_event_id = 2;
94
+ Request rejected_request = 3;
95
+ temporal.api.failure.v1.Failure failure = 4;
96
+ }
97
+
98
+ // An update protocol message indicating that a workflow execution update has
99
+ // been accepted (i.e. passed the worker-side validation phase).
100
+ message Acceptance {
101
+ string accepted_request_message_id = 1;
102
+ int64 accepted_request_sequencing_event_id = 2;
103
+ Request accepted_request = 3;
104
+ }
105
+
106
+ // An update protocol message indicating that a workflow execution update has
107
+ // completed with the contained outcome.
108
+ message Response {
109
+ Meta meta = 1;
110
+ Outcome outcome = 2;
111
+ }
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/version/v1;version";
28
28
  option java_package = "io.temporal.api.version.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "MessageProto";
31
- option ruby_package = "Temporal::Api::Version::V1";
32
- option csharp_namespace = "Temporal.Api.Version.V1";
31
+ option ruby_package = "Temporalio::Api::Version::V1";
32
+ option csharp_namespace = "Temporalio.Api.Version.V1";
33
33
 
34
34
  import "google/protobuf/timestamp.proto";
35
35
  import "dependencies/gogoproto/gogo.proto";
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/workflow/v1;workflow";
28
28
  option java_package = "io.temporal.api.workflow.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "MessageProto";
31
- option ruby_package = "Temporal::Api::Workflow::V1";
32
- option csharp_namespace = "Temporal.Api.Workflow.V1";
31
+ option ruby_package = "Temporalio::Api::Workflow::V1";
32
+ option csharp_namespace = "Temporalio.Api.Workflow.V1";
33
33
 
34
34
  import "google/protobuf/duration.proto";
35
35
  import "google/protobuf/timestamp.proto";
@@ -56,6 +56,7 @@ message WorkflowExecutionInfo {
56
56
  ResetPoints auto_reset_points = 12;
57
57
  string task_queue = 13;
58
58
  int64 state_transition_count = 14;
59
+ int64 history_size_bytes = 15;
59
60
  }
60
61
 
61
62
  message WorkflowExecutionConfig {
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/workflowservice/v1;workflowservice";
28
28
  option java_package = "io.temporal.api.workflowservice.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "RequestResponseProto";
31
- option ruby_package = "Temporal::Api::WorkflowService::V1";
32
- option csharp_namespace = "Temporal.Api.WorkflowService.V1";
31
+ option ruby_package = "Temporalio::Api::WorkflowService::V1";
32
+ option csharp_namespace = "Temporalio.Api.WorkflowService.V1";
33
33
 
34
34
  import "temporal/api/enums/v1/batch_operation.proto";
35
35
  import "temporal/api/enums/v1/workflow.proto";
@@ -39,13 +39,13 @@ import "temporal/api/enums/v1/common.proto";
39
39
  import "temporal/api/enums/v1/query.proto";
40
40
  import "temporal/api/enums/v1/reset.proto";
41
41
  import "temporal/api/enums/v1/task_queue.proto";
42
- import "temporal/api/enums/v1/update.proto";
43
42
  import "temporal/api/common/v1/message.proto";
44
43
  import "temporal/api/history/v1/message.proto";
45
44
  import "temporal/api/workflow/v1/message.proto";
46
45
  import "temporal/api/command/v1/message.proto";
47
46
  import "temporal/api/failure/v1/message.proto";
48
47
  import "temporal/api/filter/v1/message.proto";
48
+ import "temporal/api/protocol/v1/message.proto";
49
49
  import "temporal/api/namespace/v1/message.proto";
50
50
  import "temporal/api/query/v1/message.proto";
51
51
  import "temporal/api/replication/v1/message.proto";
@@ -54,6 +54,7 @@ import "temporal/api/taskqueue/v1/message.proto";
54
54
  import "temporal/api/update/v1/message.proto";
55
55
  import "temporal/api/version/v1/message.proto";
56
56
  import "temporal/api/batch/v1/message.proto";
57
+ import "temporal/api/sdk/v1/task_complete_metadata.proto";
57
58
 
58
59
  import "google/protobuf/duration.proto";
59
60
  import "google/protobuf/timestamp.proto";
@@ -168,10 +169,25 @@ message StartWorkflowExecutionRequest {
168
169
  temporal.api.common.v1.Memo memo = 14;
169
170
  temporal.api.common.v1.SearchAttributes search_attributes = 15;
170
171
  temporal.api.common.v1.Header header = 16;
172
+ // Request to get the first workflow task inline in the response bypassing matching service and worker polling.
173
+ // If set to `true` the caller is expected to have a worker available and capable of processing the task.
174
+ // The returned task will be marked as started and is expected to be completed by the specified
175
+ // `workflow_task_timeout`.
176
+ bool request_eager_execution = 17;
177
+ // These values will be available as ContinuedFailure and LastCompletionResult in the
178
+ // WorkflowExecutionStarted event and through SDKs. The are currently only used by the
179
+ // server itself (for the schedules feature) and are not intended to be exposed in
180
+ // StartWorkflowExecution.
181
+ temporal.api.failure.v1.Failure continued_failure = 18;
182
+ temporal.api.common.v1.Payloads last_completion_result = 19;
171
183
  }
172
184
 
173
185
  message StartWorkflowExecutionResponse {
174
186
  string run_id = 1;
187
+ // When `request_eager_execution` is set on the `StartWorkflowExecutionRequest`, the server - if supported - will
188
+ // return the first workflow task to be eagerly executed.
189
+ // The caller is expected to have a worker available to process the task.
190
+ PollWorkflowTaskQueueResponse eager_workflow_task = 2;
175
191
  }
176
192
 
177
193
  message GetWorkflowExecutionHistoryRequest {
@@ -222,11 +238,11 @@ message PollWorkflowTaskQueueRequest {
222
238
  // "checksum" in this field name isn't very accurate, it should be though of as an id.
223
239
  string binary_checksum = 4;
224
240
  // If set, the worker is opting in to build-id based versioning and wishes to only
225
- // receive tasks that are considered compatible with the version provided in the string.
241
+ // receive tasks that are considered compatible with the version provided.
226
242
  // Doing so only makes sense in conjunction with the `UpdateWorkerBuildIdOrdering` API.
227
- // When set, and `binary_checksum` is not, this value should also be considered as the
228
- // `binary_checksum`.
229
- string worker_versioning_build_id = 5;
243
+ // When `worker_versioning_id` has a `worker_build_id`, and `binary_checksum` is not
244
+ // set, that value should also be considered as the `binary_checksum`.
245
+ temporal.api.taskqueue.v1.VersionId worker_versioning_id = 5;
230
246
  }
231
247
 
232
248
  message PollWorkflowTaskQueueResponse {
@@ -267,6 +283,8 @@ message PollWorkflowTaskQueueResponse {
267
283
  // Queries that should be executed after applying the history in this task. Responses should be
268
284
  // attached to `RespondWorkflowTaskCompletedRequest::query_results`
269
285
  map<string, temporal.api.query.v1.WorkflowQuery> queries = 14;
286
+ // Protocol messages piggybacking on a WFT as a transport
287
+ repeated temporal.api.protocol.v1.Message messages = 15;
270
288
  }
271
289
 
272
290
  message RespondWorkflowTaskCompletedRequest {
@@ -292,6 +310,18 @@ message RespondWorkflowTaskCompletedRequest {
292
310
  // Responses to the `queries` field in the task being responded to
293
311
  map<string, temporal.api.query.v1.WorkflowQueryResult> query_results = 8;
294
312
  string namespace = 9;
313
+ // If using versioning, worker should send the same id here that it used to
314
+ // poll for the workflow task.
315
+ // When `worker_versioning_id` has a `worker_build_id`, and `binary_checksum` is not
316
+ // set, that value should also be considered as the `binary_checksum`.
317
+ temporal.api.taskqueue.v1.VersionId worker_versioning_id = 10;
318
+ // Protocol messages piggybacking on a WFT as a transport
319
+ repeated temporal.api.protocol.v1.Message messages = 11;
320
+ // Data the SDK wishes to record for itself, but server need not interpret, and does not
321
+ // directly impact workflow state.
322
+ temporal.api.sdk.v1.WorkflowTaskCompletedMetadata sdk_metadata = 12;
323
+ // Local usage data collected for metering
324
+ temporal.api.common.v1.MeteringMetadata metering_metadata = 13;
295
325
  }
296
326
 
297
327
  message RespondWorkflowTaskCompletedResponse {
@@ -299,6 +329,8 @@ message RespondWorkflowTaskCompletedResponse {
299
329
  PollWorkflowTaskQueueResponse workflow_task = 1;
300
330
  // See `ScheduleActivityTaskCommandAttributes::request_start`
301
331
  repeated PollActivityTaskQueueResponse activity_tasks = 2;
332
+
333
+ int64 reset_history_event_id = 3;
302
334
  }
303
335
 
304
336
  message RespondWorkflowTaskFailedRequest {
@@ -314,6 +346,8 @@ message RespondWorkflowTaskFailedRequest {
314
346
  // Worker process' unique binary id
315
347
  string binary_checksum = 5;
316
348
  string namespace = 6;
349
+ // Protocol messages piggybacking on a WFT as a transport
350
+ repeated temporal.api.protocol.v1.Message messages = 7;
317
351
  }
318
352
 
319
353
  message RespondWorkflowTaskFailedResponse {
@@ -326,9 +360,9 @@ message PollActivityTaskQueueRequest {
326
360
  string identity = 3;
327
361
  temporal.api.taskqueue.v1.TaskQueueMetadata task_queue_metadata = 4;
328
362
  // If set, the worker is opting in to build-id based versioning and wishes to only
329
- // receive tasks that are considered compatible with the version provided in the string.
363
+ // receive tasks that are considered compatible with the version provided.
330
364
  // Doing so only makes sense in conjunction with the `UpdateWorkerBuildIdOrdering` API.
331
- string worker_versioning_build_id = 5;
365
+ temporal.api.taskqueue.v1.VersionId worker_versioning_id = 5;
332
366
  }
333
367
 
334
368
  message PollActivityTaskQueueResponse {
@@ -630,6 +664,19 @@ message TerminateWorkflowExecutionRequest {
630
664
  message TerminateWorkflowExecutionResponse {
631
665
  }
632
666
 
667
+ // (-- api-linter: core::0135::request-unknown-fields=disabled
668
+ // aip.dev/not-precedent: DeleteNamespace RPC doesn't follow Google API format. --)
669
+ // (-- api-linter: core::0135::request-name-required=disabled
670
+ // aip.dev/not-precedent: DeleteNamespace RPC doesn't follow Google API format. --)
671
+ message DeleteWorkflowExecutionRequest {
672
+ string namespace = 1;
673
+ // Workflow Execution to delete. If run_id is not specified, the latest one is used.
674
+ temporal.api.common.v1.WorkflowExecution workflow_execution = 2;
675
+ }
676
+
677
+ message DeleteWorkflowExecutionResponse {
678
+ }
679
+
633
680
  message ListOpenWorkflowExecutionsRequest {
634
681
  string namespace = 1;
635
682
  int32 maximum_page_size = 2;
@@ -821,6 +868,21 @@ message GetSystemInfoResponse {
821
868
 
822
869
  // True if server uses protos that include temporal.api.failure.v1.Failure.encoded_attributes
823
870
  bool encoded_failure_attributes = 5;
871
+
872
+ // True if server supports dispatching Workflow and Activity tasks based on a worker's build_id
873
+ // (see:
874
+ // https://github.com/temporalio/proposals/blob/a123af3b559f43db16ea6dd31870bfb754c4dc5e/versioning/worker-versions.md)
875
+ bool build_id_based_versioning = 6;
876
+
877
+ // True if server supports upserting workflow memo
878
+ bool upsert_memo = 7;
879
+
880
+ // True if server supports eager workflow task dispatching for the StartWorkflowExecution API
881
+ bool eager_workflow_start = 8;
882
+
883
+ // True if the server knows about the sdk metadata field on WFT completions and will record
884
+ // it in history
885
+ bool sdk_metadata = 9;
824
886
  }
825
887
  }
826
888
 
@@ -874,6 +936,9 @@ message DescribeScheduleRequest {
874
936
  message DescribeScheduleResponse {
875
937
  // The complete current schedule details. This may not match the schedule as
876
938
  // created because:
939
+ // - some types of schedule specs may get compiled into others (e.g.
940
+ // CronString into StructuredCalendarSpec)
941
+ // - some unspecified fields may be replaced by defaults
877
942
  // - some fields in the state are modified automatically
878
943
  // - the schedule may have been modified by UpdateSchedule or PatchSchedule
879
944
  temporal.api.schedule.v1.Schedule schedule = 1;
@@ -1018,58 +1083,60 @@ message GetWorkerBuildIdOrderingResponse {
1018
1083
 
1019
1084
  // (-- api-linter: core::0134=disabled
1020
1085
  // aip.dev/not-precedent: Update RPCs don't follow Google API format. --)
1021
- message UpdateWorkflowRequest {
1022
- // A unique ID for this logical request
1023
- string request_id = 1;
1024
-
1025
- // The manner in which the update result will be accessed.
1026
- // This field requires a non-default value; the default value of the enum
1027
- // will result in an error.
1028
- temporal.api.enums.v1.WorkflowUpdateResultAccessStyle result_access_style = 2;
1029
-
1086
+ message UpdateWorkflowExecutionRequest {
1030
1087
  // The namespace name of the target workflow
1031
- string namespace = 3;
1088
+ string namespace = 1;
1032
1089
  // The target workflow id and (optionally) a specific run thereof
1033
1090
  // (-- api-linter: core::0203::optional=disabled
1034
1091
  // aip.dev/not-precedent: false positive triggered by the word "optional" --)
1035
- temporal.api.common.v1.WorkflowExecution workflow_execution = 4;
1092
+ temporal.api.common.v1.WorkflowExecution workflow_execution = 2;
1036
1093
  // If set, this call will error if the most recent (if no run id is set on
1037
1094
  // `workflow_execution`), or specified (if it is) workflow execution is not
1038
1095
  // part of the same execution chain as this id.
1039
- string first_execution_run_id = 5;
1096
+ string first_execution_run_id = 3;
1097
+
1098
+ // Describes when this request should return - basically whether the
1099
+ // update is synchronous, asynchronous, or somewhere in between.
1100
+ temporal.api.update.v1.WaitPolicy wait_policy = 4;
1040
1101
 
1041
- // The name under which the workflow update function is registered and the
1042
- // arguments to pass to said function.
1043
- temporal.api.update.v1.WorkflowUpdate update = 6;
1102
+ // The request information that will be delivered all the way down to the
1103
+ // workflow execution.
1104
+ temporal.api.update.v1.Request request = 5;
1044
1105
  }
1045
1106
 
1046
- message UpdateWorkflowResponse {
1047
- // An opaque token that can be used to retrieve the update result via
1048
- // polling if it is not returned as part of the gRPC response
1049
- bytes update_token = 1;
1050
- // The success or failure status of the update
1051
- oneof result {
1052
- temporal.api.common.v1.Payloads success = 2;
1053
- temporal.api.failure.v1.Failure failure = 3;
1054
- }
1107
+ message UpdateWorkflowExecutionResponse {
1108
+ // Enough information for subsequent poll calls if needed. Never null.
1109
+ temporal.api.update.v1.UpdateRef update_ref = 1;
1110
+
1111
+ // The outcome of the update if and only if the workflow execution update
1112
+ // has completed. If this response is being returned before the update has
1113
+ // completed then this field will not be set.
1114
+ temporal.api.update.v1.Outcome outcome = 2;
1055
1115
  }
1056
1116
 
1057
1117
  message StartBatchOperationRequest {
1058
1118
  // Namespace that contains the batch operation
1059
1119
  string namespace = 1;
1060
- // Visibility query defines the the group of workflow to do batch operation
1120
+ // Visibility query defines the the group of workflow to apply the batch operation
1121
+ // This field and Executions are mutually exclusive
1061
1122
  string visibility_query = 2;
1123
+ // Job ID defines the unique ID for the batch job
1124
+ string job_id = 3;
1125
+ // Reason to perform the batch operation
1126
+ string reason = 4;
1127
+ // Executions to apply the batch operation
1128
+ // This field and VisibilityQuery are mutually exclusive
1129
+ repeated temporal.api.common.v1.WorkflowExecution executions = 5;
1062
1130
  // Operation input
1063
1131
  oneof operation {
1064
1132
  temporal.api.batch.v1.BatchOperationTermination termination_operation = 10;
1065
1133
  temporal.api.batch.v1.BatchOperationSignal signal_operation = 11;
1066
1134
  temporal.api.batch.v1.BatchOperationCancellation cancellation_operation = 12;
1135
+ temporal.api.batch.v1.BatchOperationDeletion deletion_operation = 13;
1067
1136
  }
1068
1137
  }
1069
1138
 
1070
1139
  message StartBatchOperationResponse {
1071
- // Batch job id
1072
- string job_id = 1;
1073
1140
  }
1074
1141
 
1075
1142
  message StopBatchOperationRequest {
@@ -1077,6 +1144,10 @@ message StopBatchOperationRequest {
1077
1144
  string namespace = 1;
1078
1145
  // Batch job id
1079
1146
  string job_id = 2;
1147
+ // Reason to stop a batch operation
1148
+ string reason = 3;
1149
+ // Identity of the operator
1150
+ string identity = 4;
1080
1151
  }
1081
1152
 
1082
1153
  message StopBatchOperationResponse {
@@ -1106,6 +1177,10 @@ message DescribeBatchOperationResponse {
1106
1177
  int64 complete_operation_count = 7;
1107
1178
  // Failure operation count
1108
1179
  int64 failure_operation_count = 8;
1180
+ // Identity indicates the operator identity
1181
+ string identity = 9;
1182
+ // Reason indicates the reason to stop a operation
1183
+ string reason = 10;
1109
1184
  }
1110
1185
 
1111
1186
  message ListBatchOperationsRequest {
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/workflowservice/v1;workflowservice";
28
28
  option java_package = "io.temporal.api.workflowservice.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "ServiceProto";
31
- option ruby_package = "Temporal::Api::WorkflowService::V1";
32
- option csharp_namespace = "Temporal.Api.WorkflowService.V1";
31
+ option ruby_package = "Temporalio::Api::WorkflowService::V1";
32
+ option csharp_namespace = "Temporalio.Api.WorkflowService.V1";
33
33
 
34
34
 
35
35
  import "temporal/api/workflowservice/v1/request_response.proto";
@@ -256,6 +256,17 @@ service WorkflowService {
256
256
  rpc TerminateWorkflowExecution (TerminateWorkflowExecutionRequest) returns (TerminateWorkflowExecutionResponse) {
257
257
  }
258
258
 
259
+ // DeleteWorkflowExecution asynchronously deletes a specific Workflow Execution (when
260
+ // WorkflowExecution.run_id is provided) or the latest Workflow Execution (when
261
+ // WorkflowExecution.run_id is not provided). If the Workflow Execution is Running, it will be
262
+ // terminated before deletion.
263
+ // (-- api-linter: core::0135::method-signature=disabled
264
+ // aip.dev/not-precedent: DeleteNamespace RPC doesn't follow Google API format. --)
265
+ // (-- api-linter: core::0135::response-message-name=disabled
266
+ // aip.dev/not-precedent: DeleteNamespace RPC doesn't follow Google API format. --)
267
+ rpc DeleteWorkflowExecution (DeleteWorkflowExecutionRequest) returns (DeleteWorkflowExecutionResponse) {
268
+ }
269
+
259
270
  // ListOpenWorkflowExecutions is a visibility API to list the open executions in a specific namespace.
260
271
  rpc ListOpenWorkflowExecutions (ListOpenWorkflowExecutionsRequest) returns (ListOpenWorkflowExecutionsResponse) {
261
272
  }
@@ -369,18 +380,21 @@ service WorkflowService {
369
380
  rpc ListSchedules (ListSchedulesRequest) returns (ListSchedulesResponse) {
370
381
  }
371
382
 
383
+ // Allows users to specify a graph of worker build id based versions on a
384
+ // per task queue basis. Versions are ordered, and may be either compatible
385
+ // with some extant version, or a new incompatible version.
372
386
  // (-- api-linter: core::0134::response-message-name=disabled
373
387
  // aip.dev/not-precedent: UpdateWorkerBuildIdOrdering RPC doesn't follow Google API format. --)
374
388
  // (-- api-linter: core::0134::method-signature=disabled
375
389
  // aip.dev/not-precedent: UpdateWorkerBuildIdOrdering RPC doesn't follow Google API format. --)
376
390
  rpc UpdateWorkerBuildIdOrdering (UpdateWorkerBuildIdOrderingRequest) returns (UpdateWorkerBuildIdOrderingResponse) {}
377
- // This could / maybe should just be part of `DescribeTaskQueue`, but is broken out here to show easily.
391
+ // Fetches the worker build id versioning graph for some task queue.
378
392
  rpc GetWorkerBuildIdOrdering (GetWorkerBuildIdOrderingRequest) returns (GetWorkerBuildIdOrderingResponse) {}
379
393
 
380
394
  // Invokes the specified update function on user workflow code.
381
395
  // (-- api-linter: core::0134=disabled
382
- // aip.dev/not-precedent: UpdateWorkflow doesn't follow Google API format --)
383
- rpc UpdateWorkflow(UpdateWorkflowRequest) returns (UpdateWorkflowResponse) {
396
+ // aip.dev/not-precedent: UpdateWorkflowExecution doesn't follow Google API format --)
397
+ rpc UpdateWorkflowExecution(UpdateWorkflowExecutionRequest) returns (UpdateWorkflowExecutionResponse) {
384
398
  }
385
399
 
386
400
  // StartBatchOperation starts a new batch operation
@@ -1,6 +1,7 @@
1
1
  syntax = "proto3";
2
2
 
3
3
  package coresdk.activity_result;
4
+ option ruby_package = "Temporalio::Bridge::Api::ActivityResult";
4
5
 
5
6
  import "google/protobuf/duration.proto";
6
7
  import "google/protobuf/timestamp.proto";
@@ -4,6 +4,7 @@ syntax = "proto3";
4
4
  * Definitions of the different activity tasks returned from [crate::Core::poll_task].
5
5
  */
6
6
  package coresdk.activity_task;
7
+ option ruby_package = "Temporalio::Bridge::Api::ActivityTask";
7
8
 
8
9
  import "google/protobuf/duration.proto";
9
10
  import "google/protobuf/timestamp.proto";
@@ -1,6 +1,7 @@
1
1
  syntax = "proto3";
2
2
 
3
3
  package coresdk.child_workflow;
4
+ option ruby_package = "Temporalio::Bridge::Api::ChildWorkflow";
4
5
 
5
6
  import "temporal/api/common/v1/message.proto";
6
7
  import "temporal/api/failure/v1/message.proto";
@@ -1,6 +1,7 @@
1
1
  syntax = "proto3";
2
2
 
3
3
  package coresdk.common;
4
+ option ruby_package = "Temporalio::Bridge::Api::Common";
4
5
 
5
6
  import "google/protobuf/duration.proto";
6
7
 
@@ -1,6 +1,7 @@
1
1
  syntax = "proto3";
2
2
 
3
3
  package coresdk;
4
+ option ruby_package = "Temporalio::Bridge::Api::CoreInterface";
4
5
 
5
6
  // Note: Intellij will think the Google imports don't work because of the slightly odd nature of
6
7
  // the include paths. You can make it work by going to the "Protobuf Support" settings section
@@ -1,6 +1,7 @@
1
1
  syntax = "proto3";
2
2
 
3
3
  package coresdk.external_data;
4
+ option ruby_package = "Temporalio::Bridge::Api::ExternalData";
4
5
 
5
6
  import "google/protobuf/duration.proto";
6
7
  import "google/protobuf/timestamp.proto";
@@ -5,6 +5,7 @@ syntax = "proto3";
5
5
  * lang SDK applies these activation jobs to drive workflows.
6
6
  */
7
7
  package coresdk.workflow_activation;
8
+ option ruby_package = "Temporalio::Bridge::Api::WorkflowActivation";
8
9
 
9
10
  import "google/protobuf/timestamp.proto";
10
11
  import "google/protobuf/duration.proto";
@@ -30,6 +31,10 @@ message WorkflowActivation {
30
31
  uint32 history_length = 4;
31
32
  /// The things to do upon activating the workflow
32
33
  repeated WorkflowActivationJob jobs = 5;
34
+ // Internal flags which are available for use by lang. If `is_replaying` is false, all
35
+ // internal flags may be used. This is not a delta - all previously used flags always
36
+ // appear since this representation is cheap.
37
+ repeated uint32 available_internal_flags = 6;
33
38
  }
34
39
 
35
40
  message WorkflowActivationJob {
@@ -119,6 +124,8 @@ message StartWorkflow {
119
124
  temporal.api.common.v1.Memo memo = 21;
120
125
  // Search attributes created/updated when this workflow was started
121
126
  temporal.api.common.v1.SearchAttributes search_attributes = 22;
127
+ // When the workflow execution started event was first written
128
+ google.protobuf.Timestamp start_time = 23;
122
129
  }
123
130
 
124
131
  /// Notify a workflow that a timer has fired
@@ -256,6 +263,8 @@ message RemoveFromCache {
256
263
  // There was some fatal error processing the workflow, typically an internal error, but
257
264
  // can also happen if then network drops out while paginating. Check message string.
258
265
  FATAL = 8;
266
+ // Something went wrong attempting to fetch more history events.
267
+ PAGINATION_OR_HISTORY_FETCH = 9;
259
268
  }
260
269
  EvictionReason reason = 2;
261
270
  }
@@ -6,6 +6,7 @@ syntax = "proto3";
6
6
  * activation.
7
7
  */
8
8
  package coresdk.workflow_commands;
9
+ option ruby_package = "Temporalio::Bridge::Api::WorkflowCommands";
9
10
 
10
11
  import "google/protobuf/duration.proto";
11
12
  import "google/protobuf/timestamp.proto";
@@ -35,6 +36,7 @@ message WorkflowCommand {
35
36
  ScheduleLocalActivity schedule_local_activity = 16;
36
37
  RequestCancelLocalActivity request_cancel_local_activity = 17;
37
38
  UpsertWorkflowSearchAttributes upsert_workflow_search_attributes = 18;
39
+ ModifyWorkflowProperties modify_workflow_properties = 19;
38
40
  }
39
41
  }
40
42
 
@@ -54,7 +56,6 @@ message ScheduleActivity {
54
56
  uint32 seq = 1;
55
57
  string activity_id = 2;
56
58
  string activity_type = 3;
57
- string namespace = 4;
58
59
  // The name of the task queue to place this activity request in
59
60
  string task_queue = 5;
60
61
  map<string, temporal.api.common.v1.Payload> headers = 6;
@@ -295,3 +296,10 @@ message UpsertWorkflowSearchAttributes {
295
296
  /// value?
296
297
  map<string, temporal.api.common.v1.Payload> search_attributes = 1;
297
298
  }
299
+
300
+ message ModifyWorkflowProperties {
301
+ // If set, update the workflow memo with the provided values. The values will be merged with
302
+ // the existing memo. If the user wants to delete values, a default/empty Payload should be
303
+ // used as the value for the key being deleted.
304
+ temporal.api.common.v1.Memo upserted_memo = 1;
305
+ }
@@ -1,8 +1,10 @@
1
1
  syntax = "proto3";
2
2
 
3
3
  package coresdk.workflow_completion;
4
+ option ruby_package = "Temporalio::Bridge::Api::WorkflowCompletion";
4
5
 
5
6
  import "temporal/api/failure/v1/message.proto";
7
+ import "temporal/api/enums/v1/failed_cause.proto";
6
8
  import "temporal/sdk/core/common/common.proto";
7
9
  import "temporal/sdk/core/workflow_commands/workflow_commands.proto";
8
10
 
@@ -20,10 +22,14 @@ message WorkflowActivationCompletion {
20
22
  message Success {
21
23
  // A list of commands to send back to the temporal server
22
24
  repeated workflow_commands.WorkflowCommand commands = 1;
25
+ // Any internal flags which the lang SDK used in the processing of this activation
26
+ repeated uint32 used_internal_flags = 6;
23
27
  }
24
28
 
25
29
  /// Failure to activate or execute a workflow
26
30
  message Failure {
27
31
  temporal.api.failure.v1.Failure failure = 1;
32
+ // Forces overriding the WFT failure cause
33
+ temporal.api.enums.v1.WorkflowTaskFailedCause force_cause = 2;
28
34
  }
29
35
 
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/testservice/v1;testservice";
28
28
  option java_package = "io.temporal.api.testservice.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "RequestResponseProto";
31
- option ruby_package = "Temporal::Api::TestService::V1";
32
- option csharp_namespace = "Temporal.Api.TestService.V1";
31
+ option ruby_package = "Temporalio::Api::TestService::V1";
32
+ option csharp_namespace = "Temporalio.Api.TestService.V1";
33
33
 
34
34
  import "google/protobuf/duration.proto";
35
35
  import "google/protobuf/timestamp.proto";
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/testservice/v1;testservice";
28
28
  option java_package = "io.temporal.api.testservice.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "ServiceProto";
31
- option ruby_package = "Temporal::Api::TestService::V1";
32
- option csharp_namespace = "Temporal.Api.TestService.V1";
31
+ option ruby_package = "Temporalio::Api::TestService::V1";
32
+ option csharp_namespace = "Temporalio.Api.TestService.V1";
33
33
 
34
34
  import "temporal/api/testservice/v1/request_response.proto";
35
35
  import "google/protobuf/empty.proto";