temporalio 0.0.0 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (327) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +301 -0
  3. data/bridge/Cargo.lock +2888 -0
  4. data/bridge/Cargo.toml +27 -0
  5. data/bridge/sdk-core/ARCHITECTURE.md +76 -0
  6. data/bridge/sdk-core/Cargo.lock +2606 -0
  7. data/bridge/sdk-core/Cargo.toml +2 -0
  8. data/bridge/sdk-core/LICENSE.txt +23 -0
  9. data/bridge/sdk-core/README.md +104 -0
  10. data/bridge/sdk-core/arch_docs/diagrams/README.md +10 -0
  11. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +40 -0
  12. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +1 -0
  13. data/bridge/sdk-core/arch_docs/sticky_queues.md +51 -0
  14. data/bridge/sdk-core/client/Cargo.toml +40 -0
  15. data/bridge/sdk-core/client/LICENSE.txt +23 -0
  16. data/bridge/sdk-core/client/src/lib.rs +1286 -0
  17. data/bridge/sdk-core/client/src/metrics.rs +165 -0
  18. data/bridge/sdk-core/client/src/raw.rs +932 -0
  19. data/bridge/sdk-core/client/src/retry.rs +751 -0
  20. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +185 -0
  21. data/bridge/sdk-core/core/Cargo.toml +116 -0
  22. data/bridge/sdk-core/core/LICENSE.txt +23 -0
  23. data/bridge/sdk-core/core/benches/workflow_replay.rs +76 -0
  24. data/bridge/sdk-core/core/src/abstractions.rs +166 -0
  25. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +1014 -0
  26. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +221 -0
  27. data/bridge/sdk-core/core/src/core_tests/determinism.rs +107 -0
  28. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +925 -0
  29. data/bridge/sdk-core/core/src/core_tests/mod.rs +100 -0
  30. data/bridge/sdk-core/core/src/core_tests/queries.rs +894 -0
  31. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +65 -0
  32. data/bridge/sdk-core/core/src/core_tests/workers.rs +259 -0
  33. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +124 -0
  34. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +2090 -0
  35. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +515 -0
  36. data/bridge/sdk-core/core/src/lib.rs +282 -0
  37. data/bridge/sdk-core/core/src/pollers/mod.rs +54 -0
  38. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +297 -0
  39. data/bridge/sdk-core/core/src/protosext/mod.rs +428 -0
  40. data/bridge/sdk-core/core/src/replay/mod.rs +215 -0
  41. data/bridge/sdk-core/core/src/retry_logic.rs +202 -0
  42. data/bridge/sdk-core/core/src/telemetry/log_export.rs +190 -0
  43. data/bridge/sdk-core/core/src/telemetry/metrics.rs +428 -0
  44. data/bridge/sdk-core/core/src/telemetry/mod.rs +407 -0
  45. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +78 -0
  46. data/bridge/sdk-core/core/src/test_help/mod.rs +889 -0
  47. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +580 -0
  48. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +1048 -0
  49. data/bridge/sdk-core/core/src/worker/activities.rs +481 -0
  50. data/bridge/sdk-core/core/src/worker/client/mocks.rs +87 -0
  51. data/bridge/sdk-core/core/src/worker/client.rs +373 -0
  52. data/bridge/sdk-core/core/src/worker/mod.rs +570 -0
  53. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +37 -0
  54. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +101 -0
  55. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +532 -0
  56. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +907 -0
  57. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +294 -0
  58. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +167 -0
  59. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +858 -0
  60. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +136 -0
  61. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +157 -0
  62. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +129 -0
  63. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +1450 -0
  64. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +316 -0
  65. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +178 -0
  66. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +708 -0
  67. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +439 -0
  68. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +435 -0
  69. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +175 -0
  70. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +242 -0
  71. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +96 -0
  72. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +1200 -0
  73. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +272 -0
  74. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +198 -0
  75. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +655 -0
  76. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +1200 -0
  77. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +145 -0
  78. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +88 -0
  79. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +985 -0
  80. data/bridge/sdk-core/core-api/Cargo.toml +32 -0
  81. data/bridge/sdk-core/core-api/LICENSE.txt +23 -0
  82. data/bridge/sdk-core/core-api/src/errors.rs +95 -0
  83. data/bridge/sdk-core/core-api/src/lib.rs +109 -0
  84. data/bridge/sdk-core/core-api/src/telemetry.rs +147 -0
  85. data/bridge/sdk-core/core-api/src/worker.rs +148 -0
  86. data/bridge/sdk-core/etc/deps.svg +162 -0
  87. data/bridge/sdk-core/etc/dynamic-config.yaml +2 -0
  88. data/bridge/sdk-core/etc/otel-collector-config.yaml +36 -0
  89. data/bridge/sdk-core/etc/prometheus.yaml +6 -0
  90. data/bridge/sdk-core/etc/regen-depgraph.sh +5 -0
  91. data/bridge/sdk-core/fsm/Cargo.toml +18 -0
  92. data/bridge/sdk-core/fsm/LICENSE.txt +23 -0
  93. data/bridge/sdk-core/fsm/README.md +3 -0
  94. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +27 -0
  95. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +23 -0
  96. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +647 -0
  97. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +8 -0
  98. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +18 -0
  99. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +12 -0
  100. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +41 -0
  101. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +14 -0
  102. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +11 -0
  103. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +32 -0
  104. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +31 -0
  105. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +46 -0
  106. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +29 -0
  107. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +12 -0
  108. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +32 -0
  109. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +18 -0
  110. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +5 -0
  111. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +11 -0
  112. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +5 -0
  113. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +11 -0
  114. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +5 -0
  115. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +14 -0
  116. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +23 -0
  117. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +249 -0
  118. data/bridge/sdk-core/fsm/src/lib.rs +2 -0
  119. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  120. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  121. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  122. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  123. data/bridge/sdk-core/integ-with-otel.sh +7 -0
  124. data/bridge/sdk-core/protos/api_upstream/README.md +9 -0
  125. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +40 -0
  126. data/bridge/sdk-core/protos/api_upstream/buf.yaml +9 -0
  127. data/bridge/sdk-core/protos/api_upstream/build/go.mod +7 -0
  128. data/bridge/sdk-core/protos/api_upstream/build/go.sum +5 -0
  129. data/bridge/sdk-core/protos/api_upstream/build/tools.go +29 -0
  130. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +141 -0
  131. data/bridge/sdk-core/protos/api_upstream/go.mod +6 -0
  132. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +89 -0
  133. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +260 -0
  134. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +112 -0
  135. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +47 -0
  136. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +57 -0
  137. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +56 -0
  138. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +170 -0
  139. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +118 -0
  140. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/interaction_type.proto +39 -0
  141. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +51 -0
  142. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +50 -0
  143. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +41 -0
  144. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +60 -0
  145. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +59 -0
  146. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +40 -0
  147. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +122 -0
  148. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +108 -0
  149. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +114 -0
  150. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +56 -0
  151. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +758 -0
  152. data/bridge/sdk-core/protos/api_upstream/temporal/api/interaction/v1/message.proto +87 -0
  153. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +97 -0
  154. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +121 -0
  155. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +80 -0
  156. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +61 -0
  157. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +55 -0
  158. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +379 -0
  159. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +108 -0
  160. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +59 -0
  161. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +146 -0
  162. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +1168 -0
  163. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +415 -0
  164. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +63 -0
  165. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +78 -0
  166. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +79 -0
  167. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +77 -0
  168. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +15 -0
  169. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +30 -0
  170. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +30 -0
  171. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +263 -0
  172. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +304 -0
  173. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +29 -0
  174. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +38 -0
  175. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +13 -0
  176. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +141 -0
  177. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +63 -0
  178. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +90 -0
  179. data/bridge/sdk-core/rustfmt.toml +1 -0
  180. data/bridge/sdk-core/sdk/Cargo.toml +47 -0
  181. data/bridge/sdk-core/sdk/LICENSE.txt +23 -0
  182. data/bridge/sdk-core/sdk/src/activity_context.rs +230 -0
  183. data/bridge/sdk-core/sdk/src/app_data.rs +37 -0
  184. data/bridge/sdk-core/sdk/src/interceptors.rs +50 -0
  185. data/bridge/sdk-core/sdk/src/lib.rs +794 -0
  186. data/bridge/sdk-core/sdk/src/payload_converter.rs +11 -0
  187. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +295 -0
  188. data/bridge/sdk-core/sdk/src/workflow_context.rs +694 -0
  189. data/bridge/sdk-core/sdk/src/workflow_future.rs +499 -0
  190. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +30 -0
  191. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +23 -0
  192. data/bridge/sdk-core/sdk-core-protos/build.rs +107 -0
  193. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +7 -0
  194. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +544 -0
  195. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +230 -0
  196. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +1970 -0
  197. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +38 -0
  198. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +14 -0
  199. data/bridge/sdk-core/test-utils/Cargo.toml +36 -0
  200. data/bridge/sdk-core/test-utils/src/canned_histories.rs +1579 -0
  201. data/bridge/sdk-core/test-utils/src/histfetch.rs +28 -0
  202. data/bridge/sdk-core/test-utils/src/lib.rs +650 -0
  203. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +36 -0
  204. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +128 -0
  205. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +221 -0
  206. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +37 -0
  207. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +133 -0
  208. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +437 -0
  209. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +93 -0
  210. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +878 -0
  211. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +61 -0
  212. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +59 -0
  213. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +58 -0
  214. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +50 -0
  215. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +60 -0
  216. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +54 -0
  217. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +788 -0
  218. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +53 -0
  219. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +113 -0
  220. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +223 -0
  221. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +93 -0
  222. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +167 -0
  223. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +99 -0
  224. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +131 -0
  225. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +75 -0
  226. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +597 -0
  227. data/bridge/sdk-core/tests/load_tests.rs +191 -0
  228. data/bridge/sdk-core/tests/main.rs +113 -0
  229. data/bridge/sdk-core/tests/runner.rs +93 -0
  230. data/bridge/src/connection.rs +186 -0
  231. data/bridge/src/lib.rs +239 -0
  232. data/bridge/src/runtime.rs +54 -0
  233. data/bridge/src/worker.rs +124 -0
  234. data/ext/Rakefile +9 -0
  235. data/lib/bridge.so +0 -0
  236. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +14 -0
  237. data/lib/gen/temporal/api/batch/v1/message_pb.rb +50 -0
  238. data/lib/gen/temporal/api/command/v1/message_pb.rb +174 -0
  239. data/lib/gen/temporal/api/common/v1/message_pb.rb +69 -0
  240. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +33 -0
  241. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +39 -0
  242. data/lib/gen/temporal/api/enums/v1/common_pb.rb +42 -0
  243. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +68 -0
  244. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +77 -0
  245. data/lib/gen/temporal/api/enums/v1/interaction_type_pb.rb +25 -0
  246. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +37 -0
  247. data/lib/gen/temporal/api/enums/v1/query_pb.rb +31 -0
  248. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +24 -0
  249. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +28 -0
  250. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +30 -0
  251. data/lib/gen/temporal/api/enums/v1/update_pb.rb +23 -0
  252. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +89 -0
  253. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +84 -0
  254. data/lib/gen/temporal/api/failure/v1/message_pb.rb +83 -0
  255. data/lib/gen/temporal/api/filter/v1/message_pb.rb +40 -0
  256. data/lib/gen/temporal/api/history/v1/message_pb.rb +490 -0
  257. data/lib/gen/temporal/api/interaction/v1/message_pb.rb +49 -0
  258. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +63 -0
  259. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +85 -0
  260. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +20 -0
  261. data/lib/gen/temporal/api/query/v1/message_pb.rb +38 -0
  262. data/lib/gen/temporal/api/replication/v1/message_pb.rb +37 -0
  263. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +149 -0
  264. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +73 -0
  265. data/lib/gen/temporal/api/version/v1/message_pb.rb +41 -0
  266. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +111 -0
  267. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +788 -0
  268. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +20 -0
  269. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +58 -0
  270. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +57 -0
  271. data/lib/gen/temporal/sdk/core/bridge/bridge_pb.rb +222 -0
  272. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +57 -0
  273. data/lib/gen/temporal/sdk/core/common/common_pb.rb +22 -0
  274. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +34 -0
  275. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +27 -0
  276. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +165 -0
  277. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +196 -0
  278. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +34 -0
  279. data/lib/temporalio/activity/context.rb +97 -0
  280. data/lib/temporalio/activity/info.rb +67 -0
  281. data/lib/temporalio/activity.rb +85 -0
  282. data/lib/temporalio/bridge/error.rb +8 -0
  283. data/lib/temporalio/bridge.rb +14 -0
  284. data/lib/temporalio/client/implementation.rb +340 -0
  285. data/lib/temporalio/client/workflow_handle.rb +243 -0
  286. data/lib/temporalio/client.rb +131 -0
  287. data/lib/temporalio/connection.rb +751 -0
  288. data/lib/temporalio/data_converter.rb +191 -0
  289. data/lib/temporalio/error/failure.rb +194 -0
  290. data/lib/temporalio/error/workflow_failure.rb +19 -0
  291. data/lib/temporalio/errors.rb +40 -0
  292. data/lib/temporalio/failure_converter/base.rb +26 -0
  293. data/lib/temporalio/failure_converter/basic.rb +319 -0
  294. data/lib/temporalio/failure_converter.rb +7 -0
  295. data/lib/temporalio/interceptor/chain.rb +28 -0
  296. data/lib/temporalio/interceptor/client.rb +123 -0
  297. data/lib/temporalio/payload_codec/base.rb +32 -0
  298. data/lib/temporalio/payload_converter/base.rb +24 -0
  299. data/lib/temporalio/payload_converter/bytes.rb +27 -0
  300. data/lib/temporalio/payload_converter/composite.rb +49 -0
  301. data/lib/temporalio/payload_converter/encoding_base.rb +35 -0
  302. data/lib/temporalio/payload_converter/json.rb +26 -0
  303. data/lib/temporalio/payload_converter/nil.rb +26 -0
  304. data/lib/temporalio/payload_converter.rb +14 -0
  305. data/lib/temporalio/retry_policy.rb +82 -0
  306. data/lib/temporalio/retry_state.rb +35 -0
  307. data/lib/temporalio/runtime.rb +25 -0
  308. data/lib/temporalio/timeout_type.rb +29 -0
  309. data/lib/temporalio/version.rb +3 -0
  310. data/lib/temporalio/worker/activity_runner.rb +92 -0
  311. data/lib/temporalio/worker/activity_worker.rb +138 -0
  312. data/lib/temporalio/worker/reactor.rb +46 -0
  313. data/lib/temporalio/worker/runner.rb +63 -0
  314. data/lib/temporalio/worker/sync_worker.rb +88 -0
  315. data/lib/temporalio/worker/thread_pool_executor.rb +51 -0
  316. data/lib/temporalio/worker.rb +198 -0
  317. data/lib/temporalio/workflow/execution_info.rb +54 -0
  318. data/lib/temporalio/workflow/execution_status.rb +36 -0
  319. data/lib/temporalio/workflow/id_reuse_policy.rb +36 -0
  320. data/lib/temporalio/workflow/query_reject_condition.rb +33 -0
  321. data/lib/temporalio.rb +12 -1
  322. data/lib/thermite_patch.rb +23 -0
  323. data/temporalio.gemspec +45 -0
  324. metadata +566 -9
  325. data/lib/temporal/version.rb +0 -3
  326. data/lib/temporal.rb +0 -4
  327. data/temporal.gemspec +0 -20
@@ -0,0 +1,758 @@
1
+ // The MIT License
2
+ //
3
+ // Copyright (c) 2020 Temporal Technologies Inc. All rights reserved.
4
+ //
5
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ // of this software and associated documentation files (the "Software"), to deal
7
+ // in the Software without restriction, including without limitation the rights
8
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ // copies of the Software, and to permit persons to whom the Software is
10
+ // furnished to do so, subject to the following conditions:
11
+ //
12
+ // The above copyright notice and this permission notice shall be included in
13
+ // all copies or substantial portions of the Software.
14
+ //
15
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ // THE SOFTWARE.
22
+
23
+ syntax = "proto3";
24
+
25
+ package temporal.api.history.v1;
26
+
27
+ option go_package = "go.temporal.io/api/history/v1;history";
28
+ option java_package = "io.temporal.api.history.v1";
29
+ option java_multiple_files = true;
30
+ option java_outer_classname = "MessageProto";
31
+ option ruby_package = "Temporalio::Api::History::V1";
32
+ option csharp_namespace = "Temporalio.Api.History.V1";
33
+
34
+ import "google/protobuf/duration.proto";
35
+ import "google/protobuf/timestamp.proto";
36
+
37
+ import "dependencies/gogoproto/gogo.proto";
38
+
39
+ import "temporal/api/enums/v1/event_type.proto";
40
+ import "temporal/api/enums/v1/failed_cause.proto";
41
+ import "temporal/api/enums/v1/workflow.proto";
42
+ import "temporal/api/common/v1/message.proto";
43
+ import "temporal/api/failure/v1/message.proto";
44
+ import "temporal/api/interaction/v1/message.proto";
45
+ import "temporal/api/taskqueue/v1/message.proto";
46
+ import "temporal/api/workflow/v1/message.proto";
47
+
48
+ // Always the first event in workflow history
49
+ message WorkflowExecutionStartedEventAttributes {
50
+ temporal.api.common.v1.WorkflowType workflow_type = 1;
51
+ // If this workflow is a child, the namespace our parent lives in.
52
+ // SDKs and UI tools should use `parent_workflow_namespace` field but server must use `parent_workflow_namespace_id` only.
53
+ string parent_workflow_namespace = 2;
54
+ string parent_workflow_namespace_id = 27;
55
+ // Contains information about parent workflow execution that initiated the child workflow these attributes belong to.
56
+ // If the workflow these attributes belong to is not a child workflow of any other execution, this field will not be populated.
57
+ temporal.api.common.v1.WorkflowExecution parent_workflow_execution = 3;
58
+ // EventID of the child execution initiated event in parent workflow
59
+ int64 parent_initiated_event_id = 4;
60
+ temporal.api.taskqueue.v1.TaskQueue task_queue = 5;
61
+ // SDK will deserialize this and provide it as arguments to the workflow function
62
+ temporal.api.common.v1.Payloads input = 6;
63
+ // Total workflow execution timeout including retries and continue as new.
64
+ google.protobuf.Duration workflow_execution_timeout = 7 [(gogoproto.stdduration) = true];
65
+ // Timeout of a single workflow run.
66
+ google.protobuf.Duration workflow_run_timeout = 8 [(gogoproto.stdduration) = true];
67
+ // Timeout of a single workflow task.
68
+ google.protobuf.Duration workflow_task_timeout = 9 [(gogoproto.stdduration) = true];
69
+ // Run id of the previous workflow which continued-as-new or retired or cron executed into this
70
+ // workflow.
71
+ string continued_execution_run_id = 10;
72
+ temporal.api.enums.v1.ContinueAsNewInitiator initiator = 11;
73
+ temporal.api.failure.v1.Failure continued_failure = 12;
74
+ temporal.api.common.v1.Payloads last_completion_result = 13;
75
+ // This is the run id when the WorkflowExecutionStarted event was written.
76
+ // A workflow reset changes the execution run_id, but preserves this field.
77
+ string original_execution_run_id = 14;
78
+ // Identity of the client who requested this execution
79
+ string identity = 15;
80
+ // This is the very first runId along the chain of ContinueAsNew, Retry, Cron and Reset.
81
+ // Used to identify a chain.
82
+ string first_execution_run_id = 16;
83
+ temporal.api.common.v1.RetryPolicy retry_policy = 17;
84
+ // Starting at 1, the number of times we have tried to execute this workflow
85
+ int32 attempt = 18;
86
+ // The absolute time at which the workflow will be timed out.
87
+ // This is passed without change to the next run/retry of a workflow.
88
+ google.protobuf.Timestamp workflow_execution_expiration_time = 19 [(gogoproto.stdtime) = true];
89
+ // If this workflow runs on a cron schedule, it will appear here
90
+ string cron_schedule = 20;
91
+ // For a cron workflow, this contains the amount of time between when this iteration of
92
+ // the cron workflow was scheduled and when it should run next per its cron_schedule.
93
+ google.protobuf.Duration first_workflow_task_backoff = 21 [(gogoproto.stdduration) = true];
94
+ temporal.api.common.v1.Memo memo = 22;
95
+ temporal.api.common.v1.SearchAttributes search_attributes = 23;
96
+ temporal.api.workflow.v1.ResetPoints prev_auto_reset_points = 24;
97
+ temporal.api.common.v1.Header header = 25;
98
+ // Version of the child execution initiated event in parent workflow
99
+ // It should be used together with parent_initiated_event_id to identify
100
+ // a child initiated event for global namespace
101
+ int64 parent_initiated_event_version = 26;
102
+ }
103
+
104
+ message WorkflowExecutionCompletedEventAttributes {
105
+ // Serialized result of workflow completion (ie: The return value of the workflow function)
106
+ temporal.api.common.v1.Payloads result = 1;
107
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
108
+ int64 workflow_task_completed_event_id = 2;
109
+ // If another run is started by cron, this contains the new run id.
110
+ string new_execution_run_id = 3;
111
+ }
112
+
113
+ message WorkflowExecutionFailedEventAttributes {
114
+ // Serialized result of workflow failure (ex: An exception thrown, or error returned)
115
+ temporal.api.failure.v1.Failure failure = 1;
116
+ temporal.api.enums.v1.RetryState retry_state = 2;
117
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
118
+ int64 workflow_task_completed_event_id = 3;
119
+ // If another run is started by cron or retry, this contains the new run id.
120
+ string new_execution_run_id = 4;
121
+ }
122
+
123
+ message WorkflowExecutionTimedOutEventAttributes {
124
+ temporal.api.enums.v1.RetryState retry_state = 1;
125
+ // If another run is started by cron or retry, this contains the new run id.
126
+ string new_execution_run_id = 2;
127
+ }
128
+
129
+ message WorkflowExecutionContinuedAsNewEventAttributes {
130
+ // The run ID of the new workflow started by this continue-as-new
131
+ string new_execution_run_id = 1;
132
+ temporal.api.common.v1.WorkflowType workflow_type = 2;
133
+ temporal.api.taskqueue.v1.TaskQueue task_queue = 3;
134
+ temporal.api.common.v1.Payloads input = 4;
135
+ // Timeout of a single workflow run.
136
+ google.protobuf.Duration workflow_run_timeout = 5 [(gogoproto.stdduration) = true];
137
+ // Timeout of a single workflow task.
138
+ google.protobuf.Duration workflow_task_timeout = 6 [(gogoproto.stdduration) = true];
139
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
140
+ int64 workflow_task_completed_event_id = 7;
141
+ // TODO: How and is this used?
142
+ google.protobuf.Duration backoff_start_interval = 8 [(gogoproto.stdduration) = true];
143
+ temporal.api.enums.v1.ContinueAsNewInitiator initiator = 9;
144
+ // TODO: David are these right?
145
+ // Deprecated. If a workflow's retry policy would cause a new run to start when the current one
146
+ // has failed, this field would be populated with that failure. Now (when supported by server
147
+ // and sdk) the final event will be `WORKFLOW_EXECUTION_FAILED` with `new_execution_run_id` set.
148
+ temporal.api.failure.v1.Failure failure = 10;
149
+ // TODO: Is this the result of *this* workflow as it continued-as-new?
150
+ temporal.api.common.v1.Payloads last_completion_result = 11;
151
+ temporal.api.common.v1.Header header = 12;
152
+ temporal.api.common.v1.Memo memo = 13;
153
+ temporal.api.common.v1.SearchAttributes search_attributes = 14;
154
+
155
+ // workflow_execution_timeout is omitted as it shouldn't be overridden from within a workflow.
156
+ }
157
+
158
+ message WorkflowTaskScheduledEventAttributes {
159
+ // The task queue this workflow task was enqueued in, which could be a normal or sticky queue
160
+ temporal.api.taskqueue.v1.TaskQueue task_queue = 1;
161
+ // How long the worker has to process this task once receiving it before it times out
162
+ //
163
+ // (-- api-linter: core::0140::prepositions=disabled
164
+ // aip.dev/not-precedent: "to" is used to indicate interval. --)
165
+ google.protobuf.Duration start_to_close_timeout = 2 [(gogoproto.stdduration) = true];
166
+ // Starting at 1, how many attempts there have been to complete this task
167
+ int32 attempt = 3;
168
+ }
169
+
170
+ message WorkflowTaskStartedEventAttributes {
171
+ // The id of the `WORKFLOW_TASK_SCHEDULED` event this task corresponds to
172
+ int64 scheduled_event_id = 1;
173
+ // Identity of the worker who picked up this task
174
+ string identity = 2;
175
+ // TODO: ? Appears unused?
176
+ string request_id = 3;
177
+ // True if this workflow should continue-as-new soon because its history size (in
178
+ // either event count or bytes) is getting large.
179
+ bool suggest_continue_as_new = 4;
180
+ // Total history size in bytes, which the workflow might use to decide when to
181
+ // continue-as-new regardless of the suggestion. Note that history event count is
182
+ // just the event id of this event, so we don't include it explicitly here.
183
+ int64 history_size_bytes = 5;
184
+ }
185
+
186
+ message WorkflowTaskCompletedEventAttributes {
187
+ // The id of the `WORKFLOW_TASK_SCHEDULED` event this task corresponds to
188
+ int64 scheduled_event_id = 1;
189
+ // The id of the `WORKFLOW_TASK_STARTED` event this task corresponds to
190
+ int64 started_event_id = 2;
191
+ // Identity of the worker who completed this task
192
+ string identity = 3;
193
+ // Binary ID of the worker who completed this task
194
+ string binary_checksum = 4;
195
+ // ID of the worker who picked up this workflow task, or missing if worker
196
+ // is not using versioning.
197
+ temporal.api.taskqueue.v1.VersionId worker_versioning_id = 5;
198
+ }
199
+
200
+ message WorkflowTaskTimedOutEventAttributes {
201
+ // The id of the `WORKFLOW_TASK_SCHEDULED` event this task corresponds to
202
+ int64 scheduled_event_id = 1;
203
+ // The id of the `WORKFLOW_TASK_STARTED` event this task corresponds to
204
+ int64 started_event_id = 2;
205
+ temporal.api.enums.v1.TimeoutType timeout_type = 3;
206
+ }
207
+
208
+ message WorkflowTaskFailedEventAttributes {
209
+ // The id of the `WORKFLOW_TASK_SCHEDULED` event this task corresponds to
210
+ int64 scheduled_event_id = 1;
211
+ // The id of the `WORKFLOW_TASK_STARTED` event this task corresponds to
212
+ int64 started_event_id = 2;
213
+ temporal.api.enums.v1.WorkflowTaskFailedCause cause = 3;
214
+ // The failure details
215
+ temporal.api.failure.v1.Failure failure = 4;
216
+ // If a worker explicitly failed this task, it's identity. TODO: What is this set to if server fails the task?
217
+ string identity = 5;
218
+ // The original run id of the workflow. For reset workflow.
219
+ string base_run_id = 6;
220
+ // If the workflow is being reset, the new run id.
221
+ string new_run_id = 7;
222
+ // TODO: ?
223
+ int64 fork_event_version = 8;
224
+ // If a worker explicitly failed this task, it's binary id
225
+ string binary_checksum = 9;
226
+ }
227
+
228
+ message ActivityTaskScheduledEventAttributes {
229
+ // The worker/user assigned identifier for the activity
230
+ string activity_id = 1;
231
+ temporal.api.common.v1.ActivityType activity_type = 2;
232
+ // This used to be a `namespace` field which allowed to schedule activity in another namespace.
233
+ reserved 3;
234
+ temporal.api.taskqueue.v1.TaskQueue task_queue = 4;
235
+ temporal.api.common.v1.Header header = 5;
236
+ temporal.api.common.v1.Payloads input = 6;
237
+ // Indicates how long the caller is willing to wait for an activity completion. Limits how long
238
+ // retries will be attempted. Either this or `start_to_close_timeout` must be specified.
239
+ //
240
+ // (-- api-linter: core::0140::prepositions=disabled
241
+ // aip.dev/not-precedent: "to" is used to indicate interval. --)
242
+ google.protobuf.Duration schedule_to_close_timeout = 7 [(gogoproto.stdduration) = true];
243
+ // Limits time an activity task can stay in a task queue before a worker picks it up. This
244
+ // timeout is always non retryable, as all a retry would achieve is to put it back into the same
245
+ // queue. Defaults to `schedule_to_close_timeout` or workflow execution timeout if not
246
+ // specified.
247
+ //
248
+ // (-- api-linter: core::0140::prepositions=disabled
249
+ // aip.dev/not-precedent: "to" is used to indicate interval. --)
250
+ google.protobuf.Duration schedule_to_start_timeout = 8 [(gogoproto.stdduration) = true];
251
+ // Maximum time an activity is allowed to execute after being picked up by a worker. This
252
+ // timeout is always retryable. Either this or `schedule_to_close_timeout` must be
253
+ // specified.
254
+ //
255
+ // (-- api-linter: core::0140::prepositions=disabled
256
+ // aip.dev/not-precedent: "to" is used to indicate interval. --)
257
+ google.protobuf.Duration start_to_close_timeout = 9 [(gogoproto.stdduration) = true];
258
+ // Maximum permitted time between successful worker heartbeats.
259
+ google.protobuf.Duration heartbeat_timeout = 10 [(gogoproto.stdduration) = true];
260
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
261
+ int64 workflow_task_completed_event_id = 11;
262
+ // Activities are assigned a default retry policy controlled by the service's dynamic
263
+ // configuration. Retries will happen up to `schedule_to_close_timeout`. To disable retries set
264
+ // retry_policy.maximum_attempts to 1.
265
+ temporal.api.common.v1.RetryPolicy retry_policy = 12;
266
+ }
267
+
268
+ message ActivityTaskStartedEventAttributes {
269
+ // The id of the `ACTIVITY_TASK_SCHEDULED` event this task corresponds to
270
+ int64 scheduled_event_id = 1;
271
+ // id of the worker that picked up this task
272
+ string identity = 2;
273
+ // TODO ??
274
+ string request_id = 3;
275
+ // Starting at 1, the number of times this task has been attempted
276
+ int32 attempt = 4;
277
+ // Will be set to the most recent failure details, if this task has previously failed and then
278
+ // been retried.
279
+ temporal.api.failure.v1.Failure last_failure = 5;
280
+ }
281
+
282
+ message ActivityTaskCompletedEventAttributes {
283
+ // Serialized results of the activity. IE: The return value of the activity function
284
+ temporal.api.common.v1.Payloads result = 1;
285
+ // The id of the `ACTIVITY_TASK_SCHEDULED` event this completion corresponds to
286
+ int64 scheduled_event_id = 2;
287
+ // The id of the `ACTIVITY_TASK_STARTED` event this completion corresponds to
288
+ int64 started_event_id = 3;
289
+ // id of the worker that completed this task
290
+ string identity = 4;
291
+ }
292
+
293
+ message ActivityTaskFailedEventAttributes {
294
+ // Failure details
295
+ temporal.api.failure.v1.Failure failure = 1;
296
+ // The id of the `ACTIVITY_TASK_SCHEDULED` event this failure corresponds to
297
+ int64 scheduled_event_id = 2;
298
+ // The id of the `ACTIVITY_TASK_STARTED` event this failure corresponds to
299
+ int64 started_event_id = 3;
300
+ // id of the worker that failed this task
301
+ string identity = 4;
302
+ temporal.api.enums.v1.RetryState retry_state = 5;
303
+ }
304
+
305
+ message ActivityTaskTimedOutEventAttributes {
306
+ // If this activity had failed, was retried, and then timed out, that failure is stored as the
307
+ // `cause` in here.
308
+ temporal.api.failure.v1.Failure failure = 1;
309
+ // The id of the `ACTIVITY_TASK_SCHEDULED` event this timeout corresponds to
310
+ int64 scheduled_event_id = 2;
311
+ // The id of the `ACTIVITY_TASK_STARTED` event this timeout corresponds to
312
+ int64 started_event_id = 3;
313
+ temporal.api.enums.v1.RetryState retry_state = 4;
314
+ }
315
+
316
+ message ActivityTaskCancelRequestedEventAttributes {
317
+ // The id of the `ACTIVITY_TASK_SCHEDULED` event this cancel request corresponds to
318
+ int64 scheduled_event_id = 1;
319
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
320
+ int64 workflow_task_completed_event_id = 2;
321
+ }
322
+
323
+ message ActivityTaskCanceledEventAttributes {
324
+ // Additional information that the activity reported upon confirming cancellation
325
+ temporal.api.common.v1.Payloads details = 1;
326
+ // id of the most recent `ACTIVITY_TASK_CANCEL_REQUESTED` event which refers to the same
327
+ // activity
328
+ int64 latest_cancel_requested_event_id = 2;
329
+ // The id of the `ACTIVITY_TASK_SCHEDULED` event this cancel confirmation corresponds to
330
+ int64 scheduled_event_id = 3;
331
+ // The id of the `ACTIVITY_TASK_STARTED` event this cancel confirmation corresponds to
332
+ int64 started_event_id = 4;
333
+ // id of the worker who canceled this activity
334
+ string identity = 5;
335
+ }
336
+
337
+ message TimerStartedEventAttributes {
338
+ // The worker/user assigned id for this timer
339
+ string timer_id = 1;
340
+ // How long until this timer fires
341
+ //
342
+ // (-- api-linter: core::0140::prepositions=disabled
343
+ // aip.dev/not-precedent: "to" is used to indicate interval. --)
344
+ google.protobuf.Duration start_to_fire_timeout = 2 [(gogoproto.stdduration) = true];
345
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
346
+ int64 workflow_task_completed_event_id = 3;
347
+ }
348
+
349
+ message TimerFiredEventAttributes {
350
+ // Will match the `timer_id` from `TIMER_STARTED` event for this timer
351
+ string timer_id = 1;
352
+ // The id of the `TIMER_STARTED` event itself
353
+ int64 started_event_id = 2;
354
+ }
355
+
356
+ message TimerCanceledEventAttributes {
357
+ // Will match the `timer_id` from `TIMER_STARTED` event for this timer
358
+ string timer_id = 1;
359
+ // The id of the `TIMER_STARTED` event itself
360
+ int64 started_event_id = 2;
361
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
362
+ int64 workflow_task_completed_event_id = 3;
363
+ // The id of the worker who requested this cancel
364
+ string identity = 4;
365
+ }
366
+
367
+ message WorkflowExecutionCancelRequestedEventAttributes {
368
+ // User provided reason for requesting cancellation
369
+ // TODO: shall we create a new field with name "reason" and deprecate this one?
370
+ string cause = 1;
371
+ // TODO: Is this the ID of the event in the workflow which initiated this cancel, if there was one?
372
+ int64 external_initiated_event_id = 2;
373
+ temporal.api.common.v1.WorkflowExecution external_workflow_execution = 3;
374
+ // id of the worker or client who requested this cancel
375
+ string identity = 4;
376
+ }
377
+
378
+ message WorkflowExecutionCanceledEventAttributes {
379
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
380
+ int64 workflow_task_completed_event_id = 1;
381
+ temporal.api.common.v1.Payloads details = 2;
382
+ }
383
+
384
+ message MarkerRecordedEventAttributes {
385
+ // Workers use this to identify the "types" of various markers. Ex: Local activity, side effect.
386
+ string marker_name = 1;
387
+ // Serialized information recorded in the marker
388
+ map<string, temporal.api.common.v1.Payloads> details = 2;
389
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
390
+ int64 workflow_task_completed_event_id = 3;
391
+ temporal.api.common.v1.Header header = 4;
392
+ // Some uses of markers, like a local activity, could "fail". If they did that is recorded here.
393
+ temporal.api.failure.v1.Failure failure = 5;
394
+ }
395
+
396
+ message WorkflowExecutionSignaledEventAttributes {
397
+ // The name/type of the signal to fire
398
+ string signal_name = 1;
399
+ // Will be deserialized and provided as argument(s) to the signal handler
400
+ temporal.api.common.v1.Payloads input = 2;
401
+ // id of the worker/client who sent this signal
402
+ string identity = 3;
403
+ // Headers that were passed by the sender of the signal and copied by temporal
404
+ // server into the workflow task.
405
+ temporal.api.common.v1.Header header = 4;
406
+ }
407
+
408
+ message WorkflowExecutionTerminatedEventAttributes {
409
+ // User/client provided reason for termination
410
+ string reason = 1;
411
+ temporal.api.common.v1.Payloads details = 2;
412
+ // id of the client who requested termination
413
+ string identity = 3;
414
+ }
415
+
416
+ message RequestCancelExternalWorkflowExecutionInitiatedEventAttributes {
417
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
418
+ int64 workflow_task_completed_event_id = 1;
419
+ // The namespace the workflow to be cancelled lives in.
420
+ // SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
421
+ string namespace = 2;
422
+ string namespace_id = 7;
423
+ temporal.api.common.v1.WorkflowExecution workflow_execution = 3;
424
+ // Deprecated
425
+ string control = 4;
426
+ // Workers are expected to set this to true if the workflow they are requesting to cancel is
427
+ // a child of the workflow which issued the request
428
+ bool child_workflow_only = 5;
429
+ // Reason for requesting the cancellation
430
+ string reason = 6;
431
+ }
432
+
433
+ message RequestCancelExternalWorkflowExecutionFailedEventAttributes {
434
+ temporal.api.enums.v1.CancelExternalWorkflowExecutionFailedCause cause = 1;
435
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
436
+ int64 workflow_task_completed_event_id = 2;
437
+ // Namespace of the workflow which failed to cancel.
438
+ // SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
439
+ string namespace = 3;
440
+ string namespace_id = 7;
441
+ temporal.api.common.v1.WorkflowExecution workflow_execution = 4;
442
+ // id of the `REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED` event this failure
443
+ // corresponds to
444
+ int64 initiated_event_id = 5;
445
+ // Deprecated
446
+ string control = 6;
447
+ }
448
+
449
+ message ExternalWorkflowExecutionCancelRequestedEventAttributes {
450
+ // id of the `REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED` event this event corresponds
451
+ // to
452
+ int64 initiated_event_id = 1;
453
+ // Namespace of the to-be-cancelled workflow.
454
+ // SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
455
+ string namespace = 2;
456
+ string namespace_id = 4;
457
+ temporal.api.common.v1.WorkflowExecution workflow_execution = 3;
458
+ }
459
+
460
+ message SignalExternalWorkflowExecutionInitiatedEventAttributes {
461
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
462
+ int64 workflow_task_completed_event_id = 1;
463
+ // Namespace of the to-be-signalled workflow.
464
+ // SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
465
+ string namespace = 2;
466
+ string namespace_id = 9;
467
+ temporal.api.common.v1.WorkflowExecution workflow_execution = 3;
468
+ // name/type of the signal to fire in the external workflow
469
+ string signal_name = 4;
470
+ // Serialized arguments to provide to the signal handler
471
+ temporal.api.common.v1.Payloads input = 5;
472
+ // Deprecated
473
+ string control = 6;
474
+ // Workers are expected to set this to true if the workflow they are requesting to cancel is
475
+ // a child of the workflow which issued the request
476
+ bool child_workflow_only = 7;
477
+ temporal.api.common.v1.Header header = 8;
478
+ }
479
+
480
+ message SignalExternalWorkflowExecutionFailedEventAttributes {
481
+ temporal.api.enums.v1.SignalExternalWorkflowExecutionFailedCause cause = 1;
482
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
483
+ int64 workflow_task_completed_event_id = 2;
484
+ // Namespace of the workflow which failed the signal.
485
+ // SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
486
+ string namespace = 3;
487
+ string namespace_id = 7;
488
+ temporal.api.common.v1.WorkflowExecution workflow_execution = 4;
489
+ int64 initiated_event_id = 5;
490
+ // Deprecated
491
+ string control = 6;
492
+ }
493
+
494
+ message ExternalWorkflowExecutionSignaledEventAttributes {
495
+ // id of the `SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED` event this event corresponds to
496
+ int64 initiated_event_id = 1;
497
+ // Namespace of the workflow which was signaled.
498
+ // SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
499
+ string namespace = 2;
500
+ string namespace_id = 5;
501
+ temporal.api.common.v1.WorkflowExecution workflow_execution = 3;
502
+ // Deprecated
503
+ string control = 4;
504
+ }
505
+
506
+ message UpsertWorkflowSearchAttributesEventAttributes {
507
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
508
+ int64 workflow_task_completed_event_id = 1;
509
+ temporal.api.common.v1.SearchAttributes search_attributes = 2;
510
+ }
511
+
512
+ message WorkflowPropertiesModifiedEventAttributes {
513
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
514
+ int64 workflow_task_completed_event_id = 1;
515
+ // If set, update the workflow memo with the provided values. The values will be merged with
516
+ // the existing memo. If the user wants to delete values, a default/empty Payload should be
517
+ // used as the value for the key being deleted.
518
+ temporal.api.common.v1.Memo upserted_memo = 2;
519
+ }
520
+
521
+ message StartChildWorkflowExecutionInitiatedEventAttributes {
522
+ // Namespace of the child workflow.
523
+ // SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
524
+ string namespace = 1;
525
+ string namespace_id = 18;
526
+ string workflow_id = 2;
527
+ temporal.api.common.v1.WorkflowType workflow_type = 3;
528
+ temporal.api.taskqueue.v1.TaskQueue task_queue = 4;
529
+ temporal.api.common.v1.Payloads input = 5;
530
+ // Total workflow execution timeout including retries and continue as new.
531
+ google.protobuf.Duration workflow_execution_timeout = 6 [(gogoproto.stdduration) = true];
532
+ // Timeout of a single workflow run.
533
+ google.protobuf.Duration workflow_run_timeout = 7 [(gogoproto.stdduration) = true];
534
+ // Timeout of a single workflow task.
535
+ google.protobuf.Duration workflow_task_timeout = 8 [(gogoproto.stdduration) = true];
536
+ // Default: PARENT_CLOSE_POLICY_TERMINATE.
537
+ temporal.api.enums.v1.ParentClosePolicy parent_close_policy = 9;
538
+ // Deprecated
539
+ string control = 10;
540
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
541
+ int64 workflow_task_completed_event_id = 11;
542
+ // Default: WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE.
543
+ temporal.api.enums.v1.WorkflowIdReusePolicy workflow_id_reuse_policy = 12;
544
+ temporal.api.common.v1.RetryPolicy retry_policy = 13;
545
+ // If this child runs on a cron schedule, it will appear here
546
+ string cron_schedule = 14;
547
+ temporal.api.common.v1.Header header = 15;
548
+ temporal.api.common.v1.Memo memo = 16;
549
+ temporal.api.common.v1.SearchAttributes search_attributes = 17;
550
+ }
551
+
552
+ message StartChildWorkflowExecutionFailedEventAttributes {
553
+ // Namespace of the child workflow.
554
+ // SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
555
+ string namespace = 1;
556
+ string namespace_id = 8;
557
+ string workflow_id = 2;
558
+ temporal.api.common.v1.WorkflowType workflow_type = 3;
559
+ temporal.api.enums.v1.StartChildWorkflowExecutionFailedCause cause = 4;
560
+ // Deprecated
561
+ string control = 5;
562
+ // Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to
563
+ int64 initiated_event_id = 6;
564
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
565
+ int64 workflow_task_completed_event_id = 7;
566
+ }
567
+
568
+ message ChildWorkflowExecutionStartedEventAttributes {
569
+ // Namespace of the child workflow.
570
+ // SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
571
+ string namespace = 1;
572
+ string namespace_id = 6;
573
+ // Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to
574
+ int64 initiated_event_id = 2;
575
+ temporal.api.common.v1.WorkflowExecution workflow_execution = 3;
576
+ temporal.api.common.v1.WorkflowType workflow_type = 4;
577
+ temporal.api.common.v1.Header header = 5;
578
+ }
579
+
580
+ message ChildWorkflowExecutionCompletedEventAttributes {
581
+ temporal.api.common.v1.Payloads result = 1;
582
+ // Namespace of the child workflow.
583
+ // SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
584
+ string namespace = 2;
585
+ string namespace_id = 7;
586
+ temporal.api.common.v1.WorkflowExecution workflow_execution = 3;
587
+ temporal.api.common.v1.WorkflowType workflow_type = 4;
588
+ // Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to
589
+ int64 initiated_event_id = 5;
590
+ // Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to
591
+ int64 started_event_id = 6;
592
+ }
593
+
594
+ message ChildWorkflowExecutionFailedEventAttributes {
595
+ temporal.api.failure.v1.Failure failure = 1;
596
+ // Namespace of the child workflow.
597
+ // SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
598
+ string namespace = 2;
599
+ string namespace_id = 8;
600
+ temporal.api.common.v1.WorkflowExecution workflow_execution = 3;
601
+ temporal.api.common.v1.WorkflowType workflow_type = 4;
602
+ // Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to
603
+ int64 initiated_event_id = 5;
604
+ // Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to
605
+ int64 started_event_id = 6;
606
+ temporal.api.enums.v1.RetryState retry_state = 7;
607
+ }
608
+
609
+ message ChildWorkflowExecutionCanceledEventAttributes {
610
+ temporal.api.common.v1.Payloads details = 1;
611
+ // Namespace of the child workflow.
612
+ // SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
613
+ string namespace = 2;
614
+ string namespace_id = 7;
615
+ temporal.api.common.v1.WorkflowExecution workflow_execution = 3;
616
+ temporal.api.common.v1.WorkflowType workflow_type = 4;
617
+ // Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to
618
+ int64 initiated_event_id = 5;
619
+ // Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to
620
+ int64 started_event_id = 6;
621
+ }
622
+
623
+ message ChildWorkflowExecutionTimedOutEventAttributes {
624
+ // Namespace of the child workflow.
625
+ // SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
626
+ string namespace = 1;
627
+ string namespace_id = 7;
628
+ temporal.api.common.v1.WorkflowExecution workflow_execution = 2;
629
+ temporal.api.common.v1.WorkflowType workflow_type = 3;
630
+ // Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to
631
+ int64 initiated_event_id = 4;
632
+ // Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to
633
+ int64 started_event_id = 5;
634
+ temporal.api.enums.v1.RetryState retry_state = 6;
635
+ }
636
+
637
+ message ChildWorkflowExecutionTerminatedEventAttributes {
638
+ // Namespace of the child workflow.
639
+ // SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
640
+ string namespace = 1;
641
+ string namespace_id = 6;
642
+ temporal.api.common.v1.WorkflowExecution workflow_execution = 2;
643
+ temporal.api.common.v1.WorkflowType workflow_type = 3;
644
+ // Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to
645
+ int64 initiated_event_id = 4;
646
+ // Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to
647
+ int64 started_event_id = 5;
648
+ }
649
+
650
+ message WorkflowUpdateAcceptedEventAttributes {
651
+ temporal.api.interaction.v1.Meta meta = 1;
652
+ temporal.api.interaction.v1.Input input = 2;
653
+ }
654
+
655
+ message WorkflowUpdateCompletedEventAttributes {
656
+ temporal.api.interaction.v1.Meta meta = 1;
657
+ temporal.api.interaction.v1.Output output = 2;
658
+ }
659
+
660
+ message WorkflowUpdateRejectedEventAttributes {
661
+ temporal.api.interaction.v1.Meta meta = 1;
662
+ temporal.api.failure.v1.Failure failure = 2;
663
+ }
664
+
665
+ message WorkflowPropertiesModifiedExternallyEventAttributes {
666
+ // If set to a nonempty string, future workflow tasks for this workflow shall be dispatched on
667
+ // the provided queue.
668
+ string new_task_queue = 1;
669
+ // If set, update the workflow task timeout to this value.
670
+ google.protobuf.Duration new_workflow_task_timeout = 2 [(gogoproto.stdduration) = true];
671
+ // If set, update the workflow run timeout to this value. May be set to 0 for no timeout.
672
+ google.protobuf.Duration new_workflow_run_timeout = 3 [(gogoproto.stdduration) = true];
673
+ // If set, update the workflow execution timeout to this value. May be set to 0 for no timeout.
674
+ google.protobuf.Duration new_workflow_execution_timeout = 4 [(gogoproto.stdduration) = true];
675
+ // If set, update the workflow memo with the provided values. The values will be merged with
676
+ // the existing memo. If the user wants to delete values, a default/empty Payload should be
677
+ // used as the value for the key being deleted.
678
+ temporal.api.common.v1.Memo upserted_memo = 5;
679
+ }
680
+
681
+ message ActivityPropertiesModifiedExternallyEventAttributes {
682
+ // The id of the `ACTIVITY_TASK_SCHEDULED` event this modification corresponds to.
683
+ int64 scheduled_event_id = 1;
684
+ // If set, update the retry policy of the activity, replacing it with the specified one.
685
+ // The number of attempts at the activity is preserved.
686
+ temporal.api.common.v1.RetryPolicy new_retry_policy = 2;
687
+ }
688
+
689
+ // History events are the method by which Temporal SDKs advance (or recreate) workflow state.
690
+ // See the `EventType` enum for more info about what each event is for.
691
+ message HistoryEvent {
692
+ // Monotonically increasing event number, starts at 1.
693
+ int64 event_id = 1;
694
+ google.protobuf.Timestamp event_time = 2 [(gogoproto.stdtime) = true];
695
+ temporal.api.enums.v1.EventType event_type = 3;
696
+ // TODO: What is this? Appears unused by SDKs
697
+ int64 version = 4;
698
+ // TODO: What is this? Appears unused by SDKs
699
+ int64 task_id = 5;
700
+ // Set to true when the SDK may ignore the event as it does not impact workflow state or
701
+ // information in any way that the SDK need be concerned with. If an SDK encounters an event
702
+ // type which it does not understand, it must error unless this is true. If it is true, it's
703
+ // acceptable for the event type and/or attributes to be uninterpretable.
704
+ bool worker_may_ignore = 300;
705
+ // The event details. The type must match that in `event_type`.
706
+ oneof attributes {
707
+ WorkflowExecutionStartedEventAttributes workflow_execution_started_event_attributes = 6;
708
+ WorkflowExecutionCompletedEventAttributes workflow_execution_completed_event_attributes = 7;
709
+ WorkflowExecutionFailedEventAttributes workflow_execution_failed_event_attributes = 8;
710
+ WorkflowExecutionTimedOutEventAttributes workflow_execution_timed_out_event_attributes = 9;
711
+ WorkflowTaskScheduledEventAttributes workflow_task_scheduled_event_attributes = 10;
712
+ WorkflowTaskStartedEventAttributes workflow_task_started_event_attributes = 11;
713
+ WorkflowTaskCompletedEventAttributes workflow_task_completed_event_attributes = 12;
714
+ WorkflowTaskTimedOutEventAttributes workflow_task_timed_out_event_attributes = 13;
715
+ WorkflowTaskFailedEventAttributes workflow_task_failed_event_attributes = 14;
716
+ ActivityTaskScheduledEventAttributes activity_task_scheduled_event_attributes = 15;
717
+ ActivityTaskStartedEventAttributes activity_task_started_event_attributes = 16;
718
+ ActivityTaskCompletedEventAttributes activity_task_completed_event_attributes = 17;
719
+ ActivityTaskFailedEventAttributes activity_task_failed_event_attributes = 18;
720
+ ActivityTaskTimedOutEventAttributes activity_task_timed_out_event_attributes = 19;
721
+ TimerStartedEventAttributes timer_started_event_attributes = 20;
722
+ TimerFiredEventAttributes timer_fired_event_attributes = 21;
723
+ ActivityTaskCancelRequestedEventAttributes activity_task_cancel_requested_event_attributes = 22;
724
+ ActivityTaskCanceledEventAttributes activity_task_canceled_event_attributes = 23;
725
+ TimerCanceledEventAttributes timer_canceled_event_attributes = 24;
726
+ MarkerRecordedEventAttributes marker_recorded_event_attributes = 25;
727
+ WorkflowExecutionSignaledEventAttributes workflow_execution_signaled_event_attributes = 26;
728
+ WorkflowExecutionTerminatedEventAttributes workflow_execution_terminated_event_attributes = 27;
729
+ WorkflowExecutionCancelRequestedEventAttributes workflow_execution_cancel_requested_event_attributes = 28;
730
+ WorkflowExecutionCanceledEventAttributes workflow_execution_canceled_event_attributes = 29;
731
+ RequestCancelExternalWorkflowExecutionInitiatedEventAttributes request_cancel_external_workflow_execution_initiated_event_attributes = 30;
732
+ RequestCancelExternalWorkflowExecutionFailedEventAttributes request_cancel_external_workflow_execution_failed_event_attributes = 31;
733
+ ExternalWorkflowExecutionCancelRequestedEventAttributes external_workflow_execution_cancel_requested_event_attributes = 32;
734
+ WorkflowExecutionContinuedAsNewEventAttributes workflow_execution_continued_as_new_event_attributes = 33;
735
+ StartChildWorkflowExecutionInitiatedEventAttributes start_child_workflow_execution_initiated_event_attributes = 34;
736
+ StartChildWorkflowExecutionFailedEventAttributes start_child_workflow_execution_failed_event_attributes = 35;
737
+ ChildWorkflowExecutionStartedEventAttributes child_workflow_execution_started_event_attributes = 36;
738
+ ChildWorkflowExecutionCompletedEventAttributes child_workflow_execution_completed_event_attributes = 37;
739
+ ChildWorkflowExecutionFailedEventAttributes child_workflow_execution_failed_event_attributes = 38;
740
+ ChildWorkflowExecutionCanceledEventAttributes child_workflow_execution_canceled_event_attributes = 39;
741
+ ChildWorkflowExecutionTimedOutEventAttributes child_workflow_execution_timed_out_event_attributes = 40;
742
+ ChildWorkflowExecutionTerminatedEventAttributes child_workflow_execution_terminated_event_attributes = 41;
743
+ SignalExternalWorkflowExecutionInitiatedEventAttributes signal_external_workflow_execution_initiated_event_attributes = 42;
744
+ SignalExternalWorkflowExecutionFailedEventAttributes signal_external_workflow_execution_failed_event_attributes = 43;
745
+ ExternalWorkflowExecutionSignaledEventAttributes external_workflow_execution_signaled_event_attributes = 44;
746
+ UpsertWorkflowSearchAttributesEventAttributes upsert_workflow_search_attributes_event_attributes = 45;
747
+ WorkflowUpdateRejectedEventAttributes workflow_update_rejected_event_attributes = 46;
748
+ WorkflowUpdateAcceptedEventAttributes workflow_update_accepted_event_attributes = 47;
749
+ WorkflowUpdateCompletedEventAttributes workflow_update_completed_event_attributes = 48;
750
+ WorkflowPropertiesModifiedExternallyEventAttributes workflow_properties_modified_externally_event_attributes = 49;
751
+ ActivityPropertiesModifiedExternallyEventAttributes activity_properties_modified_externally_event_attributes = 50;
752
+ WorkflowPropertiesModifiedEventAttributes workflow_properties_modified_event_attributes = 51;
753
+ }
754
+ }
755
+
756
+ message History {
757
+ repeated HistoryEvent events = 1;
758
+ }