temporalio 0.0.1 → 0.1.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 (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,8 +28,8 @@ option go_package = "go.temporal.io/api/command/v1;command";
28
28
  option java_package = "io.temporal.api.command.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "MessageProto";
31
- option ruby_package = "Temporal::Api::Command::V1";
32
- option csharp_namespace = "Temporal.Api.Command.V1";
31
+ option ruby_package = "Temporalio::Api::Command::V1";
32
+ option csharp_namespace = "Temporalio.Api.Command.V1";
33
33
 
34
34
  import "google/protobuf/duration.proto";
35
35
 
@@ -37,7 +37,6 @@ import "dependencies/gogoproto/gogo.proto";
37
37
 
38
38
  import "temporal/api/enums/v1/workflow.proto";
39
39
  import "temporal/api/enums/v1/command_type.proto";
40
- import "temporal/api/enums/v1/update.proto";
41
40
  import "temporal/api/common/v1/message.proto";
42
41
  import "temporal/api/failure/v1/message.proto";
43
42
  import "temporal/api/taskqueue/v1/message.proto";
@@ -155,6 +154,13 @@ message UpsertWorkflowSearchAttributesCommandAttributes {
155
154
  temporal.api.common.v1.SearchAttributes search_attributes = 1;
156
155
  }
157
156
 
157
+ message ModifyWorkflowPropertiesCommandAttributes {
158
+ // If set, update the workflow memo with the provided values. The values will be merged with
159
+ // the existing memo. If the user wants to delete values, a default/empty Payload should be
160
+ // used as the value for the key being deleted.
161
+ temporal.api.common.v1.Memo upserted_memo = 1;
162
+ }
163
+
158
164
  message RecordMarkerCommandAttributes {
159
165
  string marker_name = 1;
160
166
  map<string, temporal.api.common.v1.Payloads> details = 2;
@@ -214,27 +220,9 @@ message StartChildWorkflowExecutionCommandAttributes {
214
220
  temporal.api.common.v1.SearchAttributes search_attributes = 16;
215
221
  }
216
222
 
217
- message AcceptWorkflowUpdateCommandAttributes {
218
- // A unique identifier for an update within a given workflow context
219
- string update_id = 1;
220
- }
221
-
222
- message CompleteWorkflowUpdateCommandAttributes {
223
- // A unique identifier for an update within a given workflow context
224
- string update_id = 1;
225
-
226
- // Whether the server should attempt to bypass making this update rejection
227
- // durable in history. This field is only consulted when the result field
228
- // indicates failure. Leaving this field in its default state (i.e.
229
- // UPDATE_WORKFLOW_REJECTION_DURABILITY_PREFERENCE_UNSPECIFIED) will result
230
- // in making the rejection durable.
231
- temporal.api.enums.v1.WorkflowUpdateDurabilityPreference durability_preference = 2;
232
-
233
- // The success or failure output of the update
234
- oneof result {
235
- temporal.api.common.v1.Payloads success = 3;
236
- temporal.api.failure.v1.Failure failure = 4;
237
- }
223
+ message ProtocolMessageCommandAttributes {
224
+ // The message ID of the message to which this command is a pointer.
225
+ string message_id = 1;
238
226
  }
239
227
 
240
228
  message Command {
@@ -253,7 +241,8 @@ message Command {
253
241
  StartChildWorkflowExecutionCommandAttributes start_child_workflow_execution_command_attributes = 12;
254
242
  SignalExternalWorkflowExecutionCommandAttributes signal_external_workflow_execution_command_attributes = 13;
255
243
  UpsertWorkflowSearchAttributesCommandAttributes upsert_workflow_search_attributes_command_attributes = 14;
256
- AcceptWorkflowUpdateCommandAttributes accept_workflow_update_command_attributes = 15;
257
- CompleteWorkflowUpdateCommandAttributes complete_workflow_update_command_attributes = 16;
244
+ ProtocolMessageCommandAttributes protocol_message_command_attributes = 15;
245
+ // 16 is available for use - it was used as part of a prototype that never made it into a release
246
+ ModifyWorkflowPropertiesCommandAttributes modify_workflow_properties_command_attributes = 17;
258
247
  }
259
248
  }
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/common/v1;common";
28
28
  option java_package = "io.temporal.api.common.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "MessageProto";
31
- option ruby_package = "Temporal::Api::Common::V1";
32
- option csharp_namespace = "Temporal.Api.Common.V1";
31
+ option ruby_package = "Temporalio::Api::Common::V1";
32
+ option csharp_namespace = "Temporalio.Api.Common.V1";
33
33
 
34
34
  import "google/protobuf/duration.proto";
35
35
 
@@ -110,3 +110,14 @@ message RetryPolicy {
110
110
  // this is not a substring match, the error *type* (not message) must match exactly.
111
111
  repeated string non_retryable_error_types = 5;
112
112
  }
113
+
114
+ // Metadata relevant for metering purposes
115
+ message MeteringMetadata {
116
+ // Count of local activities which have begun an execution attempt during this workflow task,
117
+ // and whose first attempt occurred in some previous task. This is used for metering
118
+ // purposes, and does not affect workflow state.
119
+ //
120
+ // (-- api-linter: core::0141::forbidden-types=disabled
121
+ // aip.dev/not-precedent: Negative values make no sense to represent. --)
122
+ uint32 nonfirst_local_activity_execution_attempts = 13;
123
+ }
@@ -28,14 +28,15 @@ option go_package = "go.temporal.io/api/enums/v1;enums";
28
28
  option java_package = "io.temporal.api.enums.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "BatchOperationProto";
31
- option ruby_package = "Temporal::Api::Enums::V1";
32
- option csharp_namespace = "Temporal.Api.Enums.V1";
31
+ option ruby_package = "Temporalio::Api::Enums::V1";
32
+ option csharp_namespace = "Temporalio.Api.Enums.V1";
33
33
 
34
34
  enum BatchOperationType {
35
35
  BATCH_OPERATION_TYPE_UNSPECIFIED = 0;
36
36
  BATCH_OPERATION_TYPE_TERMINATE = 1;
37
37
  BATCH_OPERATION_TYPE_CANCEL = 2;
38
38
  BATCH_OPERATION_TYPE_SIGNAL = 3;
39
+ BATCH_OPERATION_TYPE_DELETE = 4;
39
40
  }
40
41
 
41
42
  enum BatchOperationState {
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/enums/v1;enums";
28
28
  option java_package = "io.temporal.api.enums.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "CommandTypeProto";
31
- option ruby_package = "Temporal::Api::Enums::V1";
32
- option csharp_namespace = "Temporal.Api.Enums.V1";
31
+ option ruby_package = "Temporalio::Api::Enums::V1";
32
+ option csharp_namespace = "Temporalio.Api.Enums.V1";
33
33
 
34
34
  // Whenever this list of command types is changed do change the function shouldBufferEvent in mutableStateBuilder.go to make sure to do the correct event ordering.
35
35
  enum CommandType {
@@ -47,11 +47,6 @@ enum CommandType {
47
47
  COMMAND_TYPE_START_CHILD_WORKFLOW_EXECUTION = 11;
48
48
  COMMAND_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION = 12;
49
49
  COMMAND_TYPE_UPSERT_WORKFLOW_SEARCH_ATTRIBUTES = 13;
50
-
51
- // Indicates that an update has been accepted for processing workflow code
52
- COMMAND_TYPE_ACCEPT_WORKFLOW_UPDATE = 14;
53
-
54
- // Indicates that an update has completed and carries either the success or
55
- // failure outcome of said update.
56
- COMMAND_TYPE_COMPLETE_WORKFLOW_UPDATE = 15;
50
+ COMMAND_TYPE_PROTOCOL_MESSAGE = 14;
51
+ COMMAND_TYPE_MODIFY_WORKFLOW_PROPERTIES = 16;
57
52
  }
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/enums/v1;enums";
28
28
  option java_package = "io.temporal.api.enums.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "CommonProto";
31
- option ruby_package = "Temporal::Api::Enums::V1";
32
- option csharp_namespace = "Temporal.Api.Enums.V1";
31
+ option ruby_package = "Temporalio::Api::Enums::V1";
32
+ option csharp_namespace = "Temporalio.Api.Enums.V1";
33
33
 
34
34
  enum EncodingType {
35
35
  ENCODING_TYPE_UNSPECIFIED = 0;
@@ -45,6 +45,7 @@ enum IndexedValueType {
45
45
  INDEXED_VALUE_TYPE_DOUBLE = 4;
46
46
  INDEXED_VALUE_TYPE_BOOL = 5;
47
47
  INDEXED_VALUE_TYPE_DATETIME = 6;
48
+ INDEXED_VALUE_TYPE_KEYWORD_LIST = 7;
48
49
  }
49
50
 
50
51
  enum Severity {
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/enums/v1;enums";
28
28
  option java_package = "io.temporal.api.enums.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "EventTypeProto";
31
- option ruby_package = "Temporal::Api::Enums::V1";
32
- option csharp_namespace = "Temporal.Api.Enums.V1";
31
+ option ruby_package = "Temporalio::Api::Enums::V1";
32
+ option csharp_namespace = "Temporalio.Api.Enums.V1";
33
33
 
34
34
  // Whenever this list of events is changed do change the function shouldBufferEvent in mutableStateBuilder.go to make sure to do the correct event ordering
35
35
  enum EventType {
@@ -151,12 +151,12 @@ enum EventType {
151
151
  EVENT_TYPE_EXTERNAL_WORKFLOW_EXECUTION_SIGNALED = 39;
152
152
  // Workflow search attributes should be updated and synchronized with the visibility store
153
153
  EVENT_TYPE_UPSERT_WORKFLOW_SEARCH_ATTRIBUTES = 40;
154
- // Workflow update request has been received
155
- EVENT_TYPE_WORKFLOW_UPDATE_REQUESTED = 41;
156
- // Workflow update request has been accepted by user workflow code
157
- EVENT_TYPE_WORKFLOW_UPDATE_ACCEPTED = 42;
158
- // Workflow update has been completed
159
- EVENT_TYPE_WORKFLOW_UPDATE_COMPLETED = 43;
154
+ // An update was accepted (i.e. validated)
155
+ EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_ACCEPTED = 41;
156
+ // An update was rejected (i.e. failed validation)
157
+ EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_REJECTED = 42;
158
+ // An update completed
159
+ EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_COMPLETED = 43;
160
160
  // Some property or properties of the workflow as a whole have changed by non-workflow code.
161
161
  // The distinction of external vs. command-based modification is important so the SDK can
162
162
  // maintain determinism when using the command-based approach.
@@ -165,4 +165,6 @@ enum EventType {
165
165
  // The distinction of external vs. command-based modification is important so the SDK can
166
166
  // maintain determinism when using the command-based approach.
167
167
  EVENT_TYPE_ACTIVITY_PROPERTIES_MODIFIED_EXTERNALLY = 45;
168
+ // Workflow properties modified by user workflow code
169
+ EVENT_TYPE_WORKFLOW_PROPERTIES_MODIFIED = 46;
168
170
  }
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/enums/v1;enums";
28
28
  option java_package = "io.temporal.api.enums.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "FailedCauseProto";
31
- option ruby_package = "Temporal::Api::Enums::V1";
32
- option csharp_namespace = "Temporal.Api.Enums.V1";
31
+ option ruby_package = "Temporalio::Api::Enums::V1";
32
+ option csharp_namespace = "Temporalio.Api.Enums.V1";
33
33
 
34
34
  // Workflow tasks can fail for various reasons. Note that some of these reasons can only originate
35
35
  // from the server, and some of them can only originate from the SDK/worker.
@@ -66,6 +66,30 @@ enum WorkflowTaskFailedCause {
66
66
  // The worker encountered a mismatch while replaying history between what was expected, and
67
67
  // what the workflow code actually did.
68
68
  WORKFLOW_TASK_FAILED_CAUSE_NON_DETERMINISTIC_ERROR = 24;
69
+ WORKFLOW_TASK_FAILED_CAUSE_BAD_MODIFY_WORKFLOW_PROPERTIES_ATTRIBUTES = 25;
70
+
71
+ // We send the below error codes to users when their requests would violate a size constraint
72
+ // of their workflow. We do this to ensure that the state of their workflow does not become too
73
+ // large because that can cause severe performance degradation. You can modify the thresholds for
74
+ // each of these errors within your dynamic config.
75
+ //
76
+ // Spawning a new child workflow would cause this workflow to exceed its limit of pending child
77
+ // workflows.
78
+ WORKFLOW_TASK_FAILED_CAUSE_PENDING_CHILD_WORKFLOWS_LIMIT_EXCEEDED = 26;
79
+ // Starting a new activity would cause this workflow to exceed its limit of pending activities
80
+ // that we track.
81
+ WORKFLOW_TASK_FAILED_CAUSE_PENDING_ACTIVITIES_LIMIT_EXCEEDED = 27;
82
+ // A workflow has a buffer of signals that have not yet reached their destination. We return this
83
+ // error when sending a new signal would exceed the capacity of this buffer.
84
+ WORKFLOW_TASK_FAILED_CAUSE_PENDING_SIGNALS_LIMIT_EXCEEDED = 28;
85
+ // Similarly, we have a buffer of pending requests to cancel other workflows. We return this error
86
+ // when our capacity for pending cancel requests is already reached.
87
+ WORKFLOW_TASK_FAILED_CAUSE_PENDING_REQUEST_CANCEL_LIMIT_EXCEEDED = 29;
88
+ // Workflow execution update message (update.Acceptance, update.Rejection, or update.Response)
89
+ // has wrong format, or missing required fields.
90
+ WORKFLOW_TASK_FAILED_CAUSE_BAD_UPDATE_WORKFLOW_EXECUTION_MESSAGE = 30;
91
+ // Similar to WORKFLOW_TASK_FAILED_CAUSE_UNHANDLED_COMMAND, but for updates.
92
+ WORKFLOW_TASK_FAILED_CAUSE_UNHANDLED_UPDATE = 31;
69
93
  }
70
94
 
71
95
  enum StartChildWorkflowExecutionFailedCause {
@@ -94,4 +118,6 @@ enum ResourceExhaustedCause {
94
118
  RESOURCE_EXHAUSTED_CAUSE_CONCURRENT_LIMIT = 2;
95
119
  // System overloaded.
96
120
  RESOURCE_EXHAUSTED_CAUSE_SYSTEM_OVERLOADED = 3;
121
+ // Namespace exceeds persistence rate limit.
122
+ RESOURCE_EXHAUSTED_CAUSE_PERSISTENCE_LIMIT = 4;
97
123
  }
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/enums/v1;enums";
28
28
  option java_package = "io.temporal.api.enums.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "NamespaceProto";
31
- option ruby_package = "Temporal::Api::Enums::V1";
32
- option csharp_namespace = "Temporal.Api.Enums.V1";
31
+ option ruby_package = "Temporalio::Api::Enums::V1";
32
+ option csharp_namespace = "Temporalio.Api.Enums.V1";
33
33
 
34
34
  enum NamespaceState {
35
35
  NAMESPACE_STATE_UNSPECIFIED = 0;
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/enums/v1;enums";
28
28
  option java_package = "io.temporal.api.enums.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "QueryProto";
31
- option ruby_package = "Temporal::Api::Enums::V1";
32
- option csharp_namespace = "Temporal.Api.Enums.V1";
31
+ option ruby_package = "Temporalio::Api::Enums::V1";
32
+ option csharp_namespace = "Temporalio.Api.Enums.V1";
33
33
 
34
34
  enum QueryResultType {
35
35
  QUERY_RESULT_TYPE_UNSPECIFIED = 0;
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/enums/v1;enums";
28
28
  option java_package = "io.temporal.api.enums.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "ResetProto";
31
- option ruby_package = "Temporal::Api::Enums::V1";
32
- option csharp_namespace = "Temporal.Api.Enums.V1";
31
+ option ruby_package = "Temporalio::Api::Enums::V1";
32
+ option csharp_namespace = "Temporalio.Api.Enums.V1";
33
33
 
34
34
  // Reset reapplay(replay) options
35
35
  // * RESET_REAPPLY_TYPE_SIGNAL (default) - Signals are reapplied when workflow is reset
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/enums/v1;enums";
28
28
  option java_package = "io.temporal.api.enums.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "ScheduleProto";
31
- option ruby_package = "Temporal::Api::Enums::V1";
32
- option csharp_namespace = "Temporal.Api.Enums.V1";
31
+ option ruby_package = "Temporalio::Api::Enums::V1";
32
+ option csharp_namespace = "Temporalio.Api.Enums.V1";
33
33
 
34
34
 
35
35
  // ScheduleOverlapPolicy controls what happens when a workflow would be started
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/enums/v1;enums";
28
28
  option java_package = "io.temporal.api.enums.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "TaskQueueProto";
31
- option ruby_package = "Temporal::Api::Enums::V1";
32
- option csharp_namespace = "Temporal.Api.Enums.V1";
31
+ option ruby_package = "Temporalio::Api::Enums::V1";
32
+ option csharp_namespace = "Temporalio.Api.Enums.V1";
33
33
 
34
34
  enum TaskQueueKind {
35
35
  TASK_QUEUE_KIND_UNSPECIFIED = 0;
@@ -28,24 +28,29 @@ option go_package = "go.temporal.io/api/enums/v1;enums";
28
28
  option java_package = "io.temporal.api.enums.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "UpdateProto";
31
- option ruby_package = "Temporal::Api::Enums::V1";
32
- option csharp_namespace = "Temporal.Api.Enums.V1";
31
+ option ruby_package = "Temporalio::Api::Enums::V1";
32
+ option csharp_namespace = "Temporalio.Api.Enums.V1";
33
33
 
34
- enum WorkflowUpdateResultAccessStyle {
35
- WORKFLOW_UPDATE_RESULT_ACCESS_STYLE_UNSPECIFIED = 0;
36
-
37
- // Indicates that the update response _must_ be included as part of the gRPC
38
- // response body
39
- WORKFLOW_UPDATE_RESULT_ACCESS_STYLE_REQUIRE_INLINE = 1;
40
- }
41
-
42
- enum WorkflowUpdateDurabilityPreference {
43
- // The workflow expresses no preference as to the durability of the
44
- // the associated update.
45
- WORKFLOW_UPDATE_DURABILITY_PREFERENCE_UNSPECIFIED = 0;
46
-
47
- // Used by a workflow to indicate that no workflow state mutation occurred
48
- // while processing the update and that it wishes that the update not be
49
- // made durable (and thus not take up space in workflow history).
50
- WORKFLOW_UPDATE_DURABILITY_PREFERENCE_BYPASS = 1;
34
+ // UpdateWorkflowExecutionLifecycleStage is specified by clients invoking
35
+ // workflow execution updates and used to indicate to the server how long the
36
+ // client wishes to wait for a return value from the RPC. If any value other
37
+ // than UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_COMPLETED is sent by the
38
+ // client then the RPC will complete before the update is finished and will
39
+ // return a handle to the running update so that it can later be polled for
40
+ // completion.
41
+ enum UpdateWorkflowExecutionLifecycleStage {
42
+ // An unspecified vale for this enum.
43
+ UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_UNSPECIFIED = 0;
44
+ // The gRPC call will not return until the update request has been admitted
45
+ // by the server - it may be the case that due to a considerations like load
46
+ // or resource limits that an update is made to wait before the server will
47
+ // indicate that it has been received and will be processed. This value
48
+ // does not wait for any sort of acknowledgement from a worker.
49
+ UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ADMITTED = 1;
50
+ // The gRPC call will not return until the update has passed validation on
51
+ // a worker.
52
+ UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ACCEPTED = 2;
53
+ // The gRPC call will not return until the update has executed to completion
54
+ // on a worker and has either been rejected or returned a value or an error.
55
+ UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_COMPLETED = 3;
51
56
  }
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/enums/v1;enums";
28
28
  option java_package = "io.temporal.api.enums.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "WorkflowProto";
31
- option ruby_package = "Temporal::Api::Enums::V1";
32
- option csharp_namespace = "Temporal.Api.Enums.V1";
31
+ option ruby_package = "Temporalio::Api::Enums::V1";
32
+ option csharp_namespace = "Temporalio.Api.Enums.V1";
33
33
 
34
34
  // Defines how new runs of a workflow with a particular ID may or may not be allowed. Note that
35
35
  // it is *never* valid to have two actively running instances of the same workflow id.
@@ -31,8 +31,8 @@ option go_package = "go.temporal.io/api/errordetails/v1;errordetails";
31
31
  option java_package = "io.temporal.api.errordetails.v1";
32
32
  option java_multiple_files = true;
33
33
  option java_outer_classname = "MessageProto";
34
- option ruby_package = "Temporal::Api::ErrorDetails::V1";
35
- option csharp_namespace = "Temporal.Api.ErrorDetails.V1";
34
+ option ruby_package = "Temporalio::Api::ErrorDetails::V1";
35
+ option csharp_namespace = "Temporalio.Api.ErrorDetails.V1";
36
36
 
37
37
  import "temporal/api/common/v1/message.proto";
38
38
 
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/failure/v1;failure";
28
28
  option java_package = "io.temporal.api.failure.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "MessageProto";
31
- option ruby_package = "Temporal::Api::Failure::V1";
32
- option csharp_namespace = "Temporal.Api.Failure.V1";
31
+ option ruby_package = "Temporalio::Api::Failure::V1";
32
+ option csharp_namespace = "Temporalio.Api.Failure.V1";
33
33
 
34
34
  import "temporal/api/common/v1/message.proto";
35
35
  import "temporal/api/enums/v1/workflow.proto";
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/filter/v1;filter";
28
28
  option java_package = "io.temporal.api.filter.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "MessageProto";
31
- option ruby_package = "Temporal::Api::Filter::V1";
32
- option csharp_namespace = "Temporal.Api.Filter.V1";
31
+ option ruby_package = "Temporalio::Api::Filter::V1";
32
+ option csharp_namespace = "Temporalio.Api.Filter.V1";
33
33
 
34
34
  import "google/protobuf/timestamp.proto";
35
35
 
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/history/v1;history";
28
28
  option java_package = "io.temporal.api.history.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "MessageProto";
31
- option ruby_package = "Temporal::Api::History::V1";
32
- option csharp_namespace = "Temporal.Api.History.V1";
31
+ option ruby_package = "Temporalio::Api::History::V1";
32
+ option csharp_namespace = "Temporalio.Api.History.V1";
33
33
 
34
34
  import "google/protobuf/duration.proto";
35
35
  import "google/protobuf/timestamp.proto";
@@ -44,6 +44,7 @@ import "temporal/api/failure/v1/message.proto";
44
44
  import "temporal/api/taskqueue/v1/message.proto";
45
45
  import "temporal/api/update/v1/message.proto";
46
46
  import "temporal/api/workflow/v1/message.proto";
47
+ import "temporal/api/sdk/v1/task_complete_metadata.proto";
47
48
 
48
49
  // Always the first event in workflow history
49
50
  message WorkflowExecutionStartedEventAttributes {
@@ -192,6 +193,14 @@ message WorkflowTaskCompletedEventAttributes {
192
193
  string identity = 3;
193
194
  // Binary ID of the worker who completed this task
194
195
  string binary_checksum = 4;
196
+ // ID of the worker who picked up this workflow task, or missing if worker
197
+ // is not using versioning.
198
+ temporal.api.taskqueue.v1.VersionId worker_versioning_id = 5;
199
+ // Data the SDK wishes to record for itself, but server need not interpret, and does not
200
+ // directly impact workflow state.
201
+ temporal.api.sdk.v1.WorkflowTaskCompletedMetadata sdk_metadata = 6;
202
+ // Local usage data sent during workflow task completion and recorded here for posterity
203
+ temporal.api.common.v1.MeteringMetadata metering_metadata = 13;
195
204
  }
196
205
 
197
206
  message WorkflowTaskTimedOutEventAttributes {
@@ -506,6 +515,15 @@ message UpsertWorkflowSearchAttributesEventAttributes {
506
515
  temporal.api.common.v1.SearchAttributes search_attributes = 2;
507
516
  }
508
517
 
518
+ message WorkflowPropertiesModifiedEventAttributes {
519
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
520
+ int64 workflow_task_completed_event_id = 1;
521
+ // If set, update the workflow memo with the provided values. The values will be merged with
522
+ // the existing memo. If the user wants to delete values, a default/empty Payload should be
523
+ // used as the value for the key being deleted.
524
+ temporal.api.common.v1.Memo upserted_memo = 2;
525
+ }
526
+
509
527
  message StartChildWorkflowExecutionInitiatedEventAttributes {
510
528
  // Namespace of the child workflow.
511
529
  // SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
@@ -635,27 +653,6 @@ message ChildWorkflowExecutionTerminatedEventAttributes {
635
653
  int64 started_event_id = 5;
636
654
  }
637
655
 
638
- message WorkflowUpdateRequestedEventAttributes {
639
- temporal.api.common.v1.Header header = 1;
640
- string request_id = 2;
641
- string update_id = 3;
642
- temporal.api.update.v1.WorkflowUpdate update = 4;
643
- }
644
-
645
- message WorkflowUpdateAcceptedEventAttributes {
646
- temporal.api.common.v1.Header header = 1;
647
- string update_id = 2;
648
- }
649
-
650
- message WorkflowUpdateCompletedEventAttributes {
651
- temporal.api.common.v1.Header system_header = 1;
652
- string update_id = 3;
653
- oneof result {
654
- temporal.api.common.v1.Payloads success = 4;
655
- temporal.api.failure.v1.Failure failure = 5;
656
- }
657
- }
658
-
659
656
  message WorkflowPropertiesModifiedExternallyEventAttributes {
660
657
  // If set to a nonempty string, future workflow tasks for this workflow shall be dispatched on
661
658
  // the provided queue.
@@ -680,6 +677,44 @@ message ActivityPropertiesModifiedExternallyEventAttributes {
680
677
  temporal.api.common.v1.RetryPolicy new_retry_policy = 2;
681
678
  }
682
679
 
680
+ message WorkflowExecutionUpdateAcceptedEventAttributes {
681
+ // The instance ID of the update protocol that generated this event.
682
+ string protocol_instance_id = 1;
683
+ // The message ID of the original request message that initiated this
684
+ // update. Needed so that the worker can recreate and deliver that same
685
+ // message as part of replay.
686
+ string accepted_request_message_id = 2;
687
+ // The event ID used to sequence the original request message.
688
+ int64 accepted_request_sequencing_event_id = 3;
689
+ // The message payload of the original request message that initiated this
690
+ // update.
691
+ temporal.api.update.v1.Request accepted_request = 4;
692
+ }
693
+
694
+ message WorkflowExecutionUpdateCompletedEventAttributes {
695
+ // The metadata about this update.
696
+ temporal.api.update.v1.Meta meta = 1;
697
+ // The outcome of executing the workflow update function.
698
+ temporal.api.update.v1.Outcome outcome = 2;
699
+ }
700
+
701
+ message WorkflowExecutionUpdateRejectedEventAttributes {
702
+ // The instance ID of the update protocol that generated this event.
703
+ string protocol_instance_id = 1;
704
+ // The message ID of the original request message that initiated this
705
+ // update. Needed so that the worker can recreate and deliver that same
706
+ // message as part of replay.
707
+ string rejected_request_message_id = 2;
708
+ // The event ID used to sequence the original request message.
709
+ int64 rejected_request_sequencing_event_id = 3;
710
+ // The message payload of the original request message that initiated this
711
+ // update.
712
+ temporal.api.update.v1.Request rejected_request = 4;
713
+ // The cause of rejection.
714
+ temporal.api.failure.v1.Failure failure = 5;
715
+ }
716
+
717
+
683
718
  // History events are the method by which Temporal SDKs advance (or recreate) workflow state.
684
719
  // See the `EventType` enum for more info about what each event is for.
685
720
  message HistoryEvent {
@@ -738,11 +773,12 @@ message HistoryEvent {
738
773
  SignalExternalWorkflowExecutionFailedEventAttributes signal_external_workflow_execution_failed_event_attributes = 43;
739
774
  ExternalWorkflowExecutionSignaledEventAttributes external_workflow_execution_signaled_event_attributes = 44;
740
775
  UpsertWorkflowSearchAttributesEventAttributes upsert_workflow_search_attributes_event_attributes = 45;
741
- WorkflowUpdateRequestedEventAttributes workflow_update_requested_event_attributes = 46;
742
- WorkflowUpdateAcceptedEventAttributes workflow_update_accepted_event_attributes = 47;
743
- WorkflowUpdateCompletedEventAttributes workflow_update_completed_event_attributes = 48;
776
+ WorkflowExecutionUpdateAcceptedEventAttributes workflow_execution_update_accepted_event_attributes = 46;
777
+ WorkflowExecutionUpdateRejectedEventAttributes workflow_execution_update_rejected_event_attributes = 47;
778
+ WorkflowExecutionUpdateCompletedEventAttributes workflow_execution_update_completed_event_attributes = 48;
744
779
  WorkflowPropertiesModifiedExternallyEventAttributes workflow_properties_modified_externally_event_attributes = 49;
745
780
  ActivityPropertiesModifiedExternallyEventAttributes activity_properties_modified_externally_event_attributes = 50;
781
+ WorkflowPropertiesModifiedEventAttributes workflow_properties_modified_event_attributes = 51;
746
782
  }
747
783
  }
748
784
 
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/namespace/v1;namespace";
28
28
  option java_package = "io.temporal.api.namespace.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "MessageProto";
31
- option ruby_package = "Temporal::Api::Namespace::V1";
32
- option csharp_namespace = "Temporal.Api.Namespace.V1";
31
+ option ruby_package = "Temporalio::Api::Namespace::V1";
32
+ option csharp_namespace = "Temporalio.Api.Namespace.V1";
33
33
 
34
34
  import "google/protobuf/duration.proto";
35
35
  import "google/protobuf/timestamp.proto";
@@ -62,6 +62,8 @@ message NamespaceConfig {
62
62
  // If unspecified (ARCHIVAL_STATE_UNSPECIFIED) then default server configuration is used.
63
63
  temporal.api.enums.v1.ArchivalState visibility_archival_state = 5;
64
64
  string visibility_archival_uri = 6;
65
+ // Map from field name to alias.
66
+ map<string, string> custom_search_attribute_aliases = 7;
65
67
  }
66
68
 
67
69
  message BadBinaries {