temporalio 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (232) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +175 -4
  3. data/bridge/Cargo.lock +44 -21
  4. data/bridge/Cargo.toml +1 -0
  5. data/bridge/sdk-core/Cargo.toml +1 -1
  6. data/bridge/sdk-core/README.md +1 -4
  7. data/bridge/sdk-core/client/Cargo.toml +1 -1
  8. data/bridge/sdk-core/client/src/lib.rs +12 -20
  9. data/bridge/sdk-core/client/src/raw.rs +9 -8
  10. data/bridge/sdk-core/client/src/retry.rs +100 -23
  11. data/bridge/sdk-core/core/Cargo.toml +7 -7
  12. data/bridge/sdk-core/core/benches/workflow_replay.rs +13 -10
  13. data/bridge/sdk-core/core/src/abstractions.rs +22 -22
  14. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +146 -43
  15. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +419 -9
  16. data/bridge/sdk-core/core/src/core_tests/queries.rs +247 -89
  17. data/bridge/sdk-core/core/src/core_tests/workers.rs +2 -2
  18. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +1 -1
  19. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +47 -27
  20. data/bridge/sdk-core/core/src/lib.rs +139 -32
  21. data/bridge/sdk-core/core/src/protosext/mod.rs +1 -1
  22. data/bridge/sdk-core/core/src/replay/mod.rs +185 -41
  23. data/bridge/sdk-core/core/src/telemetry/log_export.rs +190 -0
  24. data/bridge/sdk-core/core/src/telemetry/metrics.rs +184 -139
  25. data/bridge/sdk-core/core/src/telemetry/mod.rs +310 -315
  26. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +4 -3
  27. data/bridge/sdk-core/core/src/test_help/mod.rs +23 -9
  28. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +12 -6
  29. data/bridge/sdk-core/core/src/worker/activities.rs +40 -23
  30. data/bridge/sdk-core/core/src/worker/client/mocks.rs +1 -1
  31. data/bridge/sdk-core/core/src/worker/client.rs +30 -4
  32. data/bridge/sdk-core/core/src/worker/mod.rs +23 -19
  33. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +10 -19
  34. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +99 -25
  35. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +1 -5
  36. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +1 -5
  37. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +1 -5
  38. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +3 -5
  39. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +1 -5
  40. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +2 -6
  41. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +1 -5
  42. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +24 -22
  43. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +12 -38
  44. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +178 -0
  45. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +1 -5
  46. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +1 -5
  47. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +1 -5
  48. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +8 -2
  49. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +1 -5
  50. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +1 -1
  51. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +233 -217
  52. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +1 -6
  53. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +4 -4
  54. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +13 -5
  55. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +86 -29
  56. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +2 -2
  57. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +56 -11
  58. data/bridge/sdk-core/core-api/Cargo.toml +4 -3
  59. data/bridge/sdk-core/core-api/src/lib.rs +1 -43
  60. data/bridge/sdk-core/core-api/src/telemetry.rs +147 -0
  61. data/bridge/sdk-core/core-api/src/worker.rs +13 -0
  62. data/bridge/sdk-core/etc/deps.svg +115 -140
  63. data/bridge/sdk-core/etc/regen-depgraph.sh +5 -0
  64. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +1 -1
  65. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  66. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  67. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -3
  68. data/bridge/sdk-core/protos/api_upstream/build/go.mod +7 -0
  69. data/bridge/sdk-core/protos/api_upstream/build/go.sum +5 -0
  70. data/bridge/sdk-core/protos/api_upstream/{temporal/api/update/v1/message.proto → build/tools.go} +6 -23
  71. data/bridge/sdk-core/protos/api_upstream/go.mod +6 -0
  72. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +12 -9
  73. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +20 -19
  74. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +2 -2
  75. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +3 -2
  76. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +4 -4
  77. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +3 -2
  78. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +5 -3
  79. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +23 -2
  80. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/{cluster.proto → interaction_type.proto} +10 -11
  81. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +2 -2
  82. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +2 -2
  83. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +2 -2
  84. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +2 -2
  85. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +2 -2
  86. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +2 -13
  87. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +2 -2
  88. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +2 -2
  89. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +2 -2
  90. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +2 -2
  91. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +26 -19
  92. data/bridge/sdk-core/protos/api_upstream/temporal/api/interaction/v1/message.proto +87 -0
  93. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +2 -2
  94. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +21 -61
  95. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +2 -21
  96. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +2 -2
  97. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +2 -2
  98. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +110 -31
  99. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +4 -4
  100. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +2 -2
  101. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +3 -2
  102. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +60 -16
  103. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +17 -3
  104. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +2 -0
  105. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +8 -1
  106. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +2 -2
  107. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +2 -2
  108. data/bridge/sdk-core/sdk/Cargo.toml +2 -2
  109. data/bridge/sdk-core/sdk/src/interceptors.rs +36 -3
  110. data/bridge/sdk-core/sdk/src/lib.rs +7 -5
  111. data/bridge/sdk-core/sdk/src/workflow_context.rs +13 -2
  112. data/bridge/sdk-core/sdk/src/workflow_future.rs +3 -7
  113. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +1 -1
  114. data/bridge/sdk-core/sdk-core-protos/build.rs +0 -1
  115. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +65 -18
  116. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +22 -22
  117. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +104 -44
  118. data/bridge/sdk-core/test-utils/Cargo.toml +2 -1
  119. data/bridge/sdk-core/test-utils/src/lib.rs +81 -29
  120. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +5 -2
  121. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +37 -0
  122. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -13
  123. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +167 -13
  124. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +53 -0
  125. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +106 -20
  126. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +18 -8
  127. data/bridge/sdk-core/tests/main.rs +6 -4
  128. data/bridge/src/connection.rs +81 -62
  129. data/bridge/src/lib.rs +92 -33
  130. data/bridge/src/runtime.rs +9 -2
  131. data/bridge/src/worker.rs +53 -2
  132. data/lib/bridge.so +0 -0
  133. data/lib/gen/temporal/api/batch/v1/message_pb.rb +8 -6
  134. data/lib/gen/temporal/api/command/v1/message_pb.rb +17 -9
  135. data/lib/gen/temporal/api/common/v1/message_pb.rb +1 -1
  136. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +2 -1
  137. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +3 -1
  138. data/lib/gen/temporal/api/enums/v1/common_pb.rb +2 -1
  139. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +3 -2
  140. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +7 -1
  141. data/lib/gen/temporal/api/enums/v1/interaction_type_pb.rb +25 -0
  142. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +1 -1
  143. data/lib/gen/temporal/api/enums/v1/query_pb.rb +1 -1
  144. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +1 -1
  145. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +1 -1
  146. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +1 -1
  147. data/lib/gen/temporal/api/enums/v1/update_pb.rb +1 -6
  148. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +1 -1
  149. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +1 -1
  150. data/lib/gen/temporal/api/failure/v1/message_pb.rb +1 -1
  151. data/lib/gen/temporal/api/filter/v1/message_pb.rb +1 -1
  152. data/lib/gen/temporal/api/history/v1/message_pb.rb +19 -18
  153. data/lib/gen/temporal/api/interaction/v1/message_pb.rb +49 -0
  154. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +1 -1
  155. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +11 -51
  156. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +1 -1
  157. data/lib/gen/temporal/api/query/v1/message_pb.rb +1 -1
  158. data/lib/gen/temporal/api/replication/v1/message_pb.rb +1 -1
  159. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +22 -1
  160. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +2 -2
  161. data/lib/gen/temporal/api/version/v1/message_pb.rb +1 -1
  162. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +2 -1
  163. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +27 -10
  164. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +1 -1
  165. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +1 -0
  166. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +5 -1
  167. data/lib/temporalio/activity/context.rb +97 -0
  168. data/lib/temporalio/activity/info.rb +67 -0
  169. data/lib/temporalio/activity.rb +85 -0
  170. data/lib/temporalio/bridge/error.rb +8 -0
  171. data/lib/temporalio/bridge.rb +14 -0
  172. data/lib/{temporal → temporalio}/client/implementation.rb +49 -48
  173. data/lib/{temporal → temporalio}/client/workflow_handle.rb +35 -35
  174. data/lib/{temporal → temporalio}/client.rb +19 -32
  175. data/lib/{temporal → temporalio}/connection.rb +238 -223
  176. data/lib/{temporal → temporalio}/data_converter.rb +76 -35
  177. data/lib/{temporal → temporalio}/error/failure.rb +6 -6
  178. data/lib/{temporal → temporalio}/error/workflow_failure.rb +4 -2
  179. data/lib/{temporal → temporalio}/errors.rb +19 -1
  180. data/lib/{temporal → temporalio}/failure_converter/base.rb +5 -5
  181. data/lib/{temporal → temporalio}/failure_converter/basic.rb +58 -52
  182. data/lib/temporalio/failure_converter.rb +7 -0
  183. data/lib/{temporal → temporalio}/interceptor/chain.rb +2 -1
  184. data/lib/{temporal → temporalio}/interceptor/client.rb +22 -1
  185. data/lib/{temporal → temporalio}/payload_codec/base.rb +5 -5
  186. data/lib/{temporal → temporalio}/payload_converter/base.rb +3 -3
  187. data/lib/{temporal → temporalio}/payload_converter/bytes.rb +4 -3
  188. data/lib/{temporal → temporalio}/payload_converter/composite.rb +7 -5
  189. data/lib/{temporal → temporalio}/payload_converter/encoding_base.rb +4 -4
  190. data/lib/{temporal → temporalio}/payload_converter/json.rb +4 -3
  191. data/lib/{temporal → temporalio}/payload_converter/nil.rb +4 -3
  192. data/lib/temporalio/payload_converter.rb +14 -0
  193. data/lib/{temporal → temporalio}/retry_policy.rb +4 -4
  194. data/lib/{temporal → temporalio}/retry_state.rb +1 -1
  195. data/lib/temporalio/runtime.rb +25 -0
  196. data/lib/{temporal → temporalio}/timeout_type.rb +2 -2
  197. data/lib/temporalio/version.rb +3 -0
  198. data/lib/temporalio/worker/activity_runner.rb +92 -0
  199. data/lib/temporalio/worker/activity_worker.rb +138 -0
  200. data/lib/temporalio/worker/reactor.rb +46 -0
  201. data/lib/temporalio/worker/runner.rb +63 -0
  202. data/lib/temporalio/worker/sync_worker.rb +88 -0
  203. data/lib/temporalio/worker/thread_pool_executor.rb +51 -0
  204. data/lib/temporalio/worker.rb +198 -0
  205. data/lib/{temporal → temporalio}/workflow/execution_info.rb +4 -4
  206. data/lib/{temporal → temporalio}/workflow/execution_status.rb +1 -1
  207. data/lib/{temporal → temporalio}/workflow/id_reuse_policy.rb +6 -6
  208. data/lib/{temporal → temporalio}/workflow/query_reject_condition.rb +5 -5
  209. data/lib/temporalio.rb +12 -3
  210. data/temporalio.gemspec +7 -3
  211. metadata +79 -56
  212. data/bridge/sdk-core/bridge-ffi/Cargo.toml +0 -24
  213. data/bridge/sdk-core/bridge-ffi/LICENSE.txt +0 -23
  214. data/bridge/sdk-core/bridge-ffi/build.rs +0 -25
  215. data/bridge/sdk-core/bridge-ffi/include/sdk-core-bridge.h +0 -249
  216. data/bridge/sdk-core/bridge-ffi/src/lib.rs +0 -825
  217. data/bridge/sdk-core/bridge-ffi/src/wrappers.rs +0 -211
  218. data/bridge/sdk-core/core/src/log_export.rs +0 -62
  219. data/bridge/sdk-core/core/src/worker/workflow/machines/mutable_side_effect_state_machine.rs +0 -127
  220. data/bridge/sdk-core/core/src/worker/workflow/machines/side_effect_state_machine.rs +0 -71
  221. data/bridge/sdk-core/protos/api_upstream/temporal/api/cluster/v1/message.proto +0 -83
  222. data/bridge/sdk-core/protos/local/temporal/sdk/core/bridge/bridge.proto +0 -210
  223. data/bridge/sdk-core/sdk/src/conversions.rs +0 -8
  224. data/lib/gen/temporal/api/cluster/v1/message_pb.rb +0 -67
  225. data/lib/gen/temporal/api/enums/v1/cluster_pb.rb +0 -26
  226. data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -26
  227. data/lib/temporal/bridge.rb +0 -14
  228. data/lib/temporal/failure_converter.rb +0 -8
  229. data/lib/temporal/payload_converter.rb +0 -14
  230. data/lib/temporal/runtime.rb +0 -22
  231. data/lib/temporal/version.rb +0 -3
  232. data/lib/temporal.rb +0 -8
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/query/v1;query";
28
28
  option java_package = "io.temporal.api.query.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "MessageProto";
31
- option ruby_package = "Temporal::Api::Query::V1";
32
- option csharp_namespace = "Temporal.Api.Query.V1";
31
+ option ruby_package = "Temporalio::Api::Query::V1";
32
+ option csharp_namespace = "Temporalio.Api.Query.V1";
33
33
 
34
34
  import "temporal/api/enums/v1/query.proto";
35
35
  import "temporal/api/enums/v1/workflow.proto";
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/replication/v1;replication";
28
28
  option java_package = "io.temporal.api.replication.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "MessageProto";
31
- option ruby_package = "Temporal::Api::Replication::V1";
32
- option csharp_namespace = "Temporal.Api.Replication.V1";
31
+ option ruby_package = "Temporalio::Api::Replication::V1";
32
+ option csharp_namespace = "Temporalio.Api.Replication.V1";
33
33
 
34
34
  import "google/protobuf/timestamp.proto";
35
35
 
@@ -20,6 +20,11 @@
20
20
  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
21
  // THE SOFTWARE.
22
22
 
23
+ // (-- api-linter: core::0203::optional=disabled
24
+ // aip.dev/not-precedent: field_behavior annotation not available in our gogo fork --)
25
+ // (-- api-linter: core::0203::input-only=disabled
26
+ // aip.dev/not-precedent: field_behavior annotation not available in our gogo fork --)
27
+
23
28
  syntax = "proto3";
24
29
 
25
30
  package temporal.api.schedule.v1;
@@ -28,8 +33,8 @@ option go_package = "go.temporal.io/api/schedule/v1;schedule";
28
33
  option java_package = "io.temporal.api.schedule.v1";
29
34
  option java_multiple_files = true;
30
35
  option java_outer_classname = "MessageProto";
31
- option ruby_package = "Temporal::Api::Schedule::V1";
32
- option csharp_namespace = "Temporal.Api.Schedule.V1";
36
+ option ruby_package = "Temporalio::Api::Schedule::V1";
37
+ option csharp_namespace = "Temporalio.Api.Schedule.V1";
33
38
 
34
39
  import "google/protobuf/duration.proto";
35
40
  import "google/protobuf/timestamp.proto";
@@ -41,7 +46,8 @@ import "temporal/api/enums/v1/schedule.proto";
41
46
  import "temporal/api/workflow/v1/message.proto";
42
47
 
43
48
  // CalendarSpec describes an event specification relative to the calendar,
44
- // similar to a traditional cron specification. Each field can be one of:
49
+ // similar to a traditional cron specification, but with labeled fields. Each
50
+ // field can be one of:
45
51
  // *: matches always
46
52
  // x: matches when the field equals x
47
53
  // x/y : matches when the field equals x+n*y where n is an integer
@@ -49,13 +55,14 @@ import "temporal/api/workflow/v1/message.proto";
49
55
  // w,x,y,...: matches when the field is one of the listed values
50
56
  // Each x, y, z, ... is either a decimal integer, or a month or day of week name
51
57
  // or abbreviation (in the appropriate fields).
52
- // A second in time matches if all fields match.
58
+ // A timestamp matches if all fields match.
59
+ // Note that fields have different default values, for convenience.
53
60
  // Note that the special case that some cron implementations have for treating
54
61
  // day_of_month and day_of_week as "or" instead of "and" when both are set is
55
62
  // not implemented.
56
63
  // day_of_week can accept 0 or 7 as Sunday
57
- // TODO: add relative-to-end-of-month
58
- // TODO: add nth day-of-week in month
64
+ // CalendarSpec gets compiled into StructuredCalendarSpec, which is what will be
65
+ // returned if you describe the schedule.
59
66
  message CalendarSpec {
60
67
  // Expression to match seconds. Default: 0
61
68
  string second = 1;
@@ -73,6 +80,51 @@ message CalendarSpec {
73
80
  string year = 6;
74
81
  // Expression to match days of the week. Default: *
75
82
  string day_of_week = 7;
83
+ // Free-form comment describing the intention of this spec.
84
+ string comment = 8;
85
+ }
86
+
87
+ // Range represents a set of integer values, used to match fields of a calendar
88
+ // time in StructuredCalendarSpec. If end < start, then end is interpreted as
89
+ // equal to start. This means you can use a Range with start set to a value, and
90
+ // end and step unset (defaulting to 0) to represent a single value.
91
+ message Range {
92
+ // Start of range (inclusive).
93
+ int32 start = 1;
94
+ // End of range (inclusive).
95
+ int32 end = 2;
96
+ // Step (optional, default 1).
97
+ int32 step = 3;
98
+ }
99
+
100
+ // StructuredCalendarSpec describes an event specification relative to the
101
+ // calendar, in a form that's easy to work with programmatically. Each field can
102
+ // be one or more ranges.
103
+ // A timestamp matches if at least one range of each field matches the
104
+ // corresponding fields of the timestamp, except for year: if year is missing,
105
+ // that means all years match. For all fields besides year, at least one Range
106
+ // must be present to match anything.
107
+ // TODO: add relative-to-end-of-month
108
+ // TODO: add nth day-of-week in month
109
+ message StructuredCalendarSpec {
110
+ // Match seconds (0-59)
111
+ repeated Range second = 1;
112
+ // Match minutes (0-59)
113
+ repeated Range minute = 2;
114
+ // Match hours (0-23)
115
+ repeated Range hour = 3;
116
+ // Match days of the month (1-31)
117
+ // (-- api-linter: core::0140::prepositions=disabled
118
+ // aip.dev/not-precedent: standard name of field --)
119
+ repeated Range day_of_month = 4;
120
+ // Match months (1-12)
121
+ repeated Range month = 5;
122
+ // Match years.
123
+ repeated Range year = 6;
124
+ // Match days of the week (0-6; 0 is Sunday).
125
+ repeated Range day_of_week = 7;
126
+ // Free-form comment describing the intention of this spec.
127
+ string comment = 8;
76
128
  }
77
129
 
78
130
  // IntervalSpec matches times that can be expressed as:
@@ -97,24 +149,56 @@ message IntervalSpec {
97
149
  // definition of a time zone can change over time (most commonly, when daylight
98
150
  // saving time policy changes for an area). To create a totally self-contained
99
151
  // ScheduleSpec, use UTC or include timezone_data.
152
+ //
153
+ // For input, you can provide zero or more of: structured_calendar, calendar,
154
+ // cron_string, interval, and exclude_structured_calendar, and all of them will
155
+ // be used (the schedule will take action at the union of all of their times,
156
+ // minus the ones that match exclude_structured_calendar).
157
+ //
158
+ // On input, calendar and cron_string fields will be compiled into
159
+ // structured_calendar (and maybe interval and timezone_name), so if you
160
+ // Describe a schedule, you'll see only structured_calendar, interval, etc.
100
161
  message ScheduleSpec {
162
+ // Calendar-based specifications of times.
163
+ repeated StructuredCalendarSpec structured_calendar = 7;
164
+ // cron_string holds a traditional cron specification as a string. It
165
+ // accepts 5, 6, or 7 fields, separated by spaces, and interprets them the
166
+ // same way as CalendarSpec.
167
+ // 5 fields: minute, hour, day_of_month, month, day_of_week
168
+ // 6 fields: minute, hour, day_of_month, month, day_of_week, year
169
+ // 7 fields: second, minute, hour, day_of_month, month, day_of_week, year
170
+ // If year is not given, it defaults to *. If second is not given, it
171
+ // defaults to 0.
172
+ // Shorthands @yearly, @monthly, @weekly, @daily, and @hourly are also
173
+ // accepted instead of the 5-7 time fields.
174
+ // Optionally, the string can be preceded by CRON_TZ=<timezone name> or
175
+ // TZ=<timezone name>, which will get copied to timezone_name. (There must
176
+ // not also be a timezone_name present.)
177
+ // Optionally "#" followed by a comment can appear at the end of the string.
178
+ // Note that the special case that some cron implementations have for
179
+ // treating day_of_month and day_of_week as "or" instead of "and" when both
180
+ // are set is not implemented.
181
+ // @every <interval>[/<phase>] is accepted and gets compiled into an
182
+ // IntervalSpec instead. <interval> and <phase> should be a decimal integer
183
+ // with a unit suffix s, m, h, or d.
184
+ repeated string cron_string = 8;
101
185
  // Calendar-based specifications of times.
102
186
  repeated CalendarSpec calendar = 1;
103
187
  // Interval-based specifications of times.
104
188
  repeated IntervalSpec interval = 2;
105
- // Any timestamps matching any of the exclude_calendar specs will be
106
- // skipped.
107
- repeated CalendarSpec exclude_calendar = 3;
108
- // Any timestamps before start_time will be skipped. Together, start_time
109
- // and end_time make an inclusive interval.
189
+ // Any timestamps matching any of exclude_* will be skipped.
190
+ repeated CalendarSpec exclude_calendar = 3 [deprecated = true]; // use exclude_structured_calendar
191
+ repeated StructuredCalendarSpec exclude_structured_calendar = 9;
192
+ // If start_time is set, any timestamps before start_time will be skipped.
193
+ // (Together, start_time and end_time make an inclusive interval.)
110
194
  google.protobuf.Timestamp start_time = 4 [(gogoproto.stdtime) = true];
111
- // Any timestamps after end_time will be skipped.
195
+ // If end_time is set, any timestamps after end_time will be skipped.
112
196
  google.protobuf.Timestamp end_time = 5 [(gogoproto.stdtime) = true];
113
197
  // All timestamps will be incremented by a random value from 0 to this
114
- // amount of jitter. Default: 1 second
198
+ // amount of jitter. Default: 0
115
199
  google.protobuf.Duration jitter = 6 [(gogoproto.stdduration) = true];
116
200
 
117
- // Time zone to interpret all CalendarSpecs in.
201
+ // Time zone to interpret all calendar-based specs in.
118
202
  //
119
203
  // If unset, defaults to UTC. We recommend using UTC for your application if
120
204
  // at all possible, to avoid various surprising properties of time zones.
@@ -134,21 +218,17 @@ message ScheduleSpec {
134
218
  // at 2:30am and specify a time zone that follows DST, that action will not
135
219
  // be triggered on the day that has no 2:30am. Similarly, an action that
136
220
  // fires at 1:30am will be triggered twice on the day that has two 1:30s.
221
+ //
222
+ // Also note that no actions are taken on leap-seconds (e.g. 23:59:60 UTC).
137
223
  string timezone_name = 10;
138
224
  bytes timezone_data = 11;
139
225
  }
140
226
 
141
227
  message SchedulePolicies {
142
228
  // Policy for overlaps.
143
- // Note that this can be changed after a schedule has taken some actions, and we can't
144
- // provide 100% sensible semantics for all changes. The most confusing case would be
145
- // changes to/from ALLOW_ALL: with that policy multiple scheduled workflows can run
146
- // concurrently, but for all other policies only one can run at a time. Changing
147
- // between these two classes will leave all workflows with the other class alone.
148
- // E.g., if changing from ALLOW_ALL to CANCEL_OTHER, and there are workflows running,
149
- // those workflows will not be cancelled. If changing from ALLOW_ALL to SKIP with
150
- // workflows running, the running workflows will not cause the next action to be
151
- // skipped.
229
+ // Note that this can be changed after a schedule has taken some actions,
230
+ // and some changes might produce unintuitive results. In general, the later
231
+ // policy overrides the earlier policy.
152
232
  temporal.api.enums.v1.ScheduleOverlapPolicy overlap_policy = 1;
153
233
 
154
234
  // Policy for catchups:
@@ -195,10 +275,11 @@ message ScheduleState {
195
275
  // If true, do not take any actions based on the schedule spec.
196
276
  bool paused = 2;
197
277
 
198
- // If limited_actions is true, decrement remaining_actions after each action, and do
199
- // not take any more scheduled actions if remaining_actions is zero. Actions may still
200
- // be taken by explicit request. Skipped actions (due to overlap policy) do not count
201
- // against remaining actions.
278
+ // If limited_actions is true, decrement remaining_actions after each
279
+ // action, and do not take any more scheduled actions if remaining_actions
280
+ // is zero. Actions may still be taken by explicit request (i.e. trigger
281
+ // immediately or backfill). Skipped actions (due to overlap policy) do not
282
+ // count against remaining actions.
202
283
  bool limited_actions = 3;
203
284
  int64 remaining_actions = 4;
204
285
  }
@@ -258,8 +339,7 @@ message ScheduleInfo {
258
339
  google.protobuf.Timestamp create_time = 6 [(gogoproto.stdtime) = true];
259
340
  google.protobuf.Timestamp update_time = 7 [(gogoproto.stdtime) = true];
260
341
 
261
- // Error for invalid schedule. If this is set, no actions will be taken.
262
- string invalid_schedule_error = 8;
342
+ string invalid_schedule_error = 8 [deprecated = true];
263
343
  }
264
344
 
265
345
  message Schedule {
@@ -273,8 +353,7 @@ message Schedule {
273
353
  // that's returned in ListSchedules.
274
354
  message ScheduleListInfo {
275
355
  // From spec:
276
- // Some fields are too large/unimportant for the purpose of listing, so we'll clear them
277
- // from this copy of spec: exclude_calendar, jitter, timezone_data.
356
+ // Some fields are dropped from this copy of spec: timezone_data
278
357
  ScheduleSpec spec = 1;
279
358
 
280
359
  // From action:
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/taskqueue/v1;taskqueue";
28
28
  option java_package = "io.temporal.api.taskqueue.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "MessageProto";
31
- option ruby_package = "Temporal::Api::TaskQueue::V1";
32
- option csharp_namespace = "Temporal.Api.TaskQueue.V1";
31
+ option ruby_package = "Temporalio::Api::TaskQueue::V1";
32
+ option csharp_namespace = "Temporalio.Api.TaskQueue.V1";
33
33
 
34
34
  import "google/protobuf/duration.proto";
35
35
  import "google/protobuf/timestamp.proto";
@@ -77,7 +77,7 @@ message PollerInfo {
77
77
  double rate_per_second = 3;
78
78
  // If a worker has specified an ID for use with the worker versioning feature while polling,
79
79
  // that id must appear here.
80
- string worker_versioning_build_id = 4;
80
+ VersionId worker_versioning_id = 4;
81
81
  }
82
82
 
83
83
  message StickyExecutionAttributes {
@@ -98,7 +98,7 @@ message VersionIdNode {
98
98
  }
99
99
 
100
100
  // Used by the worker versioning APIs, represents a specific version of something
101
- // Currently, that's just a whole-worker id. In the future, if we support
101
+ // Currently, that's just a whole-worker id. In the future, if we support
102
102
  // WASM workflow bundle based versioning, for example, then the inside of this
103
103
  // message may become a oneof of different version types.
104
104
  message VersionId {
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/version/v1;version";
28
28
  option java_package = "io.temporal.api.version.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "MessageProto";
31
- option ruby_package = "Temporal::Api::Version::V1";
32
- option csharp_namespace = "Temporal.Api.Version.V1";
31
+ option ruby_package = "Temporalio::Api::Version::V1";
32
+ option csharp_namespace = "Temporalio.Api.Version.V1";
33
33
 
34
34
  import "google/protobuf/timestamp.proto";
35
35
  import "dependencies/gogoproto/gogo.proto";
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/workflow/v1;workflow";
28
28
  option java_package = "io.temporal.api.workflow.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "MessageProto";
31
- option ruby_package = "Temporal::Api::Workflow::V1";
32
- option csharp_namespace = "Temporal.Api.Workflow.V1";
31
+ option ruby_package = "Temporalio::Api::Workflow::V1";
32
+ option csharp_namespace = "Temporalio.Api.Workflow.V1";
33
33
 
34
34
  import "google/protobuf/duration.proto";
35
35
  import "google/protobuf/timestamp.proto";
@@ -56,6 +56,7 @@ message WorkflowExecutionInfo {
56
56
  ResetPoints auto_reset_points = 12;
57
57
  string task_queue = 13;
58
58
  int64 state_transition_count = 14;
59
+ int64 history_size_bytes = 15;
59
60
  }
60
61
 
61
62
  message WorkflowExecutionConfig {
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/workflowservice/v1;workflowservice";
28
28
  option java_package = "io.temporal.api.workflowservice.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "RequestResponseProto";
31
- option ruby_package = "Temporal::Api::WorkflowService::V1";
32
- option csharp_namespace = "Temporal.Api.WorkflowService.V1";
31
+ option ruby_package = "Temporalio::Api::WorkflowService::V1";
32
+ option csharp_namespace = "Temporalio.Api.WorkflowService.V1";
33
33
 
34
34
  import "temporal/api/enums/v1/batch_operation.proto";
35
35
  import "temporal/api/enums/v1/workflow.proto";
@@ -42,6 +42,7 @@ import "temporal/api/enums/v1/task_queue.proto";
42
42
  import "temporal/api/enums/v1/update.proto";
43
43
  import "temporal/api/common/v1/message.proto";
44
44
  import "temporal/api/history/v1/message.proto";
45
+ import "temporal/api/interaction/v1/message.proto";
45
46
  import "temporal/api/workflow/v1/message.proto";
46
47
  import "temporal/api/command/v1/message.proto";
47
48
  import "temporal/api/failure/v1/message.proto";
@@ -51,7 +52,6 @@ import "temporal/api/query/v1/message.proto";
51
52
  import "temporal/api/replication/v1/message.proto";
52
53
  import "temporal/api/schedule/v1/message.proto";
53
54
  import "temporal/api/taskqueue/v1/message.proto";
54
- import "temporal/api/update/v1/message.proto";
55
55
  import "temporal/api/version/v1/message.proto";
56
56
  import "temporal/api/batch/v1/message.proto";
57
57
 
@@ -222,11 +222,11 @@ message PollWorkflowTaskQueueRequest {
222
222
  // "checksum" in this field name isn't very accurate, it should be though of as an id.
223
223
  string binary_checksum = 4;
224
224
  // If set, the worker is opting in to build-id based versioning and wishes to only
225
- // receive tasks that are considered compatible with the version provided in the string.
225
+ // receive tasks that are considered compatible with the version provided.
226
226
  // Doing so only makes sense in conjunction with the `UpdateWorkerBuildIdOrdering` API.
227
- // When set, and `binary_checksum` is not, this value should also be considered as the
228
- // `binary_checksum`.
229
- string worker_versioning_build_id = 5;
227
+ // When `worker_versioning_id` has a `worker_build_id`, and `binary_checksum` is not
228
+ // set, that value should also be considered as the `binary_checksum`.
229
+ temporal.api.taskqueue.v1.VersionId worker_versioning_id = 5;
230
230
  }
231
231
 
232
232
  message PollWorkflowTaskQueueResponse {
@@ -267,6 +267,8 @@ message PollWorkflowTaskQueueResponse {
267
267
  // Queries that should be executed after applying the history in this task. Responses should be
268
268
  // attached to `RespondWorkflowTaskCompletedRequest::query_results`
269
269
  map<string, temporal.api.query.v1.WorkflowQuery> queries = 14;
270
+
271
+ repeated temporal.api.interaction.v1.Invocation interactions = 15;
270
272
  }
271
273
 
272
274
  message RespondWorkflowTaskCompletedRequest {
@@ -292,6 +294,11 @@ message RespondWorkflowTaskCompletedRequest {
292
294
  // Responses to the `queries` field in the task being responded to
293
295
  map<string, temporal.api.query.v1.WorkflowQueryResult> query_results = 8;
294
296
  string namespace = 9;
297
+ // If using versioning, worker should send the same id here that it used to
298
+ // poll for the workflow task.
299
+ // When `worker_versioning_id` has a `worker_build_id`, and `binary_checksum` is not
300
+ // set, that value should also be considered as the `binary_checksum`.
301
+ temporal.api.taskqueue.v1.VersionId worker_versioning_id = 10;
295
302
  }
296
303
 
297
304
  message RespondWorkflowTaskCompletedResponse {
@@ -299,6 +306,8 @@ message RespondWorkflowTaskCompletedResponse {
299
306
  PollWorkflowTaskQueueResponse workflow_task = 1;
300
307
  // See `ScheduleActivityTaskCommandAttributes::request_start`
301
308
  repeated PollActivityTaskQueueResponse activity_tasks = 2;
309
+
310
+ int64 reset_history_event_id = 3;
302
311
  }
303
312
 
304
313
  message RespondWorkflowTaskFailedRequest {
@@ -326,9 +335,9 @@ message PollActivityTaskQueueRequest {
326
335
  string identity = 3;
327
336
  temporal.api.taskqueue.v1.TaskQueueMetadata task_queue_metadata = 4;
328
337
  // If set, the worker is opting in to build-id based versioning and wishes to only
329
- // receive tasks that are considered compatible with the version provided in the string.
338
+ // receive tasks that are considered compatible with the version provided.
330
339
  // Doing so only makes sense in conjunction with the `UpdateWorkerBuildIdOrdering` API.
331
- string worker_versioning_build_id = 5;
340
+ temporal.api.taskqueue.v1.VersionId worker_versioning_id = 5;
332
341
  }
333
342
 
334
343
  message PollActivityTaskQueueResponse {
@@ -630,6 +639,19 @@ message TerminateWorkflowExecutionRequest {
630
639
  message TerminateWorkflowExecutionResponse {
631
640
  }
632
641
 
642
+ // (-- api-linter: core::0135::request-unknown-fields=disabled
643
+ // aip.dev/not-precedent: DeleteNamespace RPC doesn't follow Google API format. --)
644
+ // (-- api-linter: core::0135::request-name-required=disabled
645
+ // aip.dev/not-precedent: DeleteNamespace RPC doesn't follow Google API format. --)
646
+ message DeleteWorkflowExecutionRequest {
647
+ string namespace = 1;
648
+ // Workflow Execution to delete. If run_id is not specified, the latest one is used.
649
+ temporal.api.common.v1.WorkflowExecution workflow_execution = 2;
650
+ }
651
+
652
+ message DeleteWorkflowExecutionResponse {
653
+ }
654
+
633
655
  message ListOpenWorkflowExecutionsRequest {
634
656
  string namespace = 1;
635
657
  int32 maximum_page_size = 2;
@@ -821,6 +843,14 @@ message GetSystemInfoResponse {
821
843
 
822
844
  // True if server uses protos that include temporal.api.failure.v1.Failure.encoded_attributes
823
845
  bool encoded_failure_attributes = 5;
846
+
847
+ // True if server supports dispatching Workflow and Activity tasks based on a worker's build_id
848
+ // (see:
849
+ // https://github.com/temporalio/proposals/blob/a123af3b559f43db16ea6dd31870bfb754c4dc5e/versioning/worker-versions.md)
850
+ bool build_id_based_versioning = 6;
851
+
852
+ // True if server supports upserting workflow memo
853
+ bool upsert_memo = 7;
824
854
  }
825
855
  }
826
856
 
@@ -874,6 +904,9 @@ message DescribeScheduleRequest {
874
904
  message DescribeScheduleResponse {
875
905
  // The complete current schedule details. This may not match the schedule as
876
906
  // created because:
907
+ // - some types of schedule specs may get compiled into others (e.g.
908
+ // CronString into StructuredCalendarSpec)
909
+ // - some unspecified fields may be replaced by defaults
877
910
  // - some fields in the state are modified automatically
878
911
  // - the schedule may have been modified by UpdateSchedule or PatchSchedule
879
912
  temporal.api.schedule.v1.Schedule schedule = 1;
@@ -1038,9 +1071,12 @@ message UpdateWorkflowRequest {
1038
1071
  // part of the same execution chain as this id.
1039
1072
  string first_execution_run_id = 5;
1040
1073
 
1074
+ // A string identifying the agent that requested this interaction.
1075
+ string identity = 6;
1076
+
1041
1077
  // The name under which the workflow update function is registered and the
1042
1078
  // arguments to pass to said function.
1043
- temporal.api.update.v1.WorkflowUpdate update = 6;
1079
+ temporal.api.interaction.v1.Input input = 7;
1044
1080
  }
1045
1081
 
1046
1082
  message UpdateWorkflowResponse {
@@ -1048,10 +1084,7 @@ message UpdateWorkflowResponse {
1048
1084
  // polling if it is not returned as part of the gRPC response
1049
1085
  bytes update_token = 1;
1050
1086
  // The success or failure status of the update
1051
- oneof result {
1052
- temporal.api.common.v1.Payloads success = 2;
1053
- temporal.api.failure.v1.Failure failure = 3;
1054
- }
1087
+ temporal.api.interaction.v1.Output output = 2;
1055
1088
  }
1056
1089
 
1057
1090
  message StartBatchOperationRequest {
@@ -1059,17 +1092,20 @@ message StartBatchOperationRequest {
1059
1092
  string namespace = 1;
1060
1093
  // Visibility query defines the the group of workflow to do batch operation
1061
1094
  string visibility_query = 2;
1095
+ // Job ID defines the unique ID for the batch job
1096
+ string job_id = 3;
1097
+ // Reason to perform the batch operation
1098
+ string reason = 4;
1062
1099
  // Operation input
1063
1100
  oneof operation {
1064
1101
  temporal.api.batch.v1.BatchOperationTermination termination_operation = 10;
1065
1102
  temporal.api.batch.v1.BatchOperationSignal signal_operation = 11;
1066
1103
  temporal.api.batch.v1.BatchOperationCancellation cancellation_operation = 12;
1104
+ temporal.api.batch.v1.BatchOperationDeletion deletion_operation = 13;
1067
1105
  }
1068
1106
  }
1069
1107
 
1070
1108
  message StartBatchOperationResponse {
1071
- // Batch job id
1072
- string job_id = 1;
1073
1109
  }
1074
1110
 
1075
1111
  message StopBatchOperationRequest {
@@ -1077,6 +1113,10 @@ message StopBatchOperationRequest {
1077
1113
  string namespace = 1;
1078
1114
  // Batch job id
1079
1115
  string job_id = 2;
1116
+ // Reason to stop a batch operation
1117
+ string reason = 3;
1118
+ // Identity of the operator
1119
+ string identity = 4;
1080
1120
  }
1081
1121
 
1082
1122
  message StopBatchOperationResponse {
@@ -1106,6 +1146,10 @@ message DescribeBatchOperationResponse {
1106
1146
  int64 complete_operation_count = 7;
1107
1147
  // Failure operation count
1108
1148
  int64 failure_operation_count = 8;
1149
+ // Identity indicates the operator identity
1150
+ string identity = 9;
1151
+ // Reason indicates the reason to stop a operation
1152
+ string reason = 10;
1109
1153
  }
1110
1154
 
1111
1155
  message ListBatchOperationsRequest {
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/workflowservice/v1;workflowservice";
28
28
  option java_package = "io.temporal.api.workflowservice.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "ServiceProto";
31
- option ruby_package = "Temporal::Api::WorkflowService::V1";
32
- option csharp_namespace = "Temporal.Api.WorkflowService.V1";
31
+ option ruby_package = "Temporalio::Api::WorkflowService::V1";
32
+ option csharp_namespace = "Temporalio.Api.WorkflowService.V1";
33
33
 
34
34
 
35
35
  import "temporal/api/workflowservice/v1/request_response.proto";
@@ -256,6 +256,17 @@ service WorkflowService {
256
256
  rpc TerminateWorkflowExecution (TerminateWorkflowExecutionRequest) returns (TerminateWorkflowExecutionResponse) {
257
257
  }
258
258
 
259
+ // DeleteWorkflowExecution asynchronously deletes a specific Workflow Execution (when
260
+ // WorkflowExecution.run_id is provided) or the latest Workflow Execution (when
261
+ // WorkflowExecution.run_id is not provided). If the Workflow Execution is Running, it will be
262
+ // terminated before deletion.
263
+ // (-- api-linter: core::0135::method-signature=disabled
264
+ // aip.dev/not-precedent: DeleteNamespace RPC doesn't follow Google API format. --)
265
+ // (-- api-linter: core::0135::response-message-name=disabled
266
+ // aip.dev/not-precedent: DeleteNamespace RPC doesn't follow Google API format. --)
267
+ rpc DeleteWorkflowExecution (DeleteWorkflowExecutionRequest) returns (DeleteWorkflowExecutionResponse) {
268
+ }
269
+
259
270
  // ListOpenWorkflowExecutions is a visibility API to list the open executions in a specific namespace.
260
271
  rpc ListOpenWorkflowExecutions (ListOpenWorkflowExecutionsRequest) returns (ListOpenWorkflowExecutionsResponse) {
261
272
  }
@@ -369,12 +380,15 @@ service WorkflowService {
369
380
  rpc ListSchedules (ListSchedulesRequest) returns (ListSchedulesResponse) {
370
381
  }
371
382
 
383
+ // Allows users to specify a graph of worker build id based versions on a
384
+ // per task queue basis. Versions are ordered, and may be either compatible
385
+ // with some extant version, or a new incompatible version.
372
386
  // (-- api-linter: core::0134::response-message-name=disabled
373
387
  // aip.dev/not-precedent: UpdateWorkerBuildIdOrdering RPC doesn't follow Google API format. --)
374
388
  // (-- api-linter: core::0134::method-signature=disabled
375
389
  // aip.dev/not-precedent: UpdateWorkerBuildIdOrdering RPC doesn't follow Google API format. --)
376
390
  rpc UpdateWorkerBuildIdOrdering (UpdateWorkerBuildIdOrderingRequest) returns (UpdateWorkerBuildIdOrderingResponse) {}
377
- // This could / maybe should just be part of `DescribeTaskQueue`, but is broken out here to show easily.
391
+ // Fetches the worker build id versioning graph for some task queue.
378
392
  rpc GetWorkerBuildIdOrdering (GetWorkerBuildIdOrderingRequest) returns (GetWorkerBuildIdOrderingResponse) {}
379
393
 
380
394
  // Invokes the specified update function on user workflow code.
@@ -119,6 +119,8 @@ message StartWorkflow {
119
119
  temporal.api.common.v1.Memo memo = 21;
120
120
  // Search attributes created/updated when this workflow was started
121
121
  temporal.api.common.v1.SearchAttributes search_attributes = 22;
122
+ // When the workflow execution started event was first written
123
+ google.protobuf.Timestamp start_time = 23;
122
124
  }
123
125
 
124
126
  /// Notify a workflow that a timer has fired
@@ -35,6 +35,7 @@ message WorkflowCommand {
35
35
  ScheduleLocalActivity schedule_local_activity = 16;
36
36
  RequestCancelLocalActivity request_cancel_local_activity = 17;
37
37
  UpsertWorkflowSearchAttributes upsert_workflow_search_attributes = 18;
38
+ ModifyWorkflowProperties modify_workflow_properties = 19;
38
39
  }
39
40
  }
40
41
 
@@ -54,7 +55,6 @@ message ScheduleActivity {
54
55
  uint32 seq = 1;
55
56
  string activity_id = 2;
56
57
  string activity_type = 3;
57
- string namespace = 4;
58
58
  // The name of the task queue to place this activity request in
59
59
  string task_queue = 5;
60
60
  map<string, temporal.api.common.v1.Payload> headers = 6;
@@ -295,3 +295,10 @@ message UpsertWorkflowSearchAttributes {
295
295
  /// value?
296
296
  map<string, temporal.api.common.v1.Payload> search_attributes = 1;
297
297
  }
298
+
299
+ message ModifyWorkflowProperties {
300
+ // If set, update the workflow memo with the provided values. The values will be merged with
301
+ // the existing memo. If the user wants to delete values, a default/empty Payload should be
302
+ // used as the value for the key being deleted.
303
+ temporal.api.common.v1.Memo upserted_memo = 1;
304
+ }
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/testservice/v1;testservice";
28
28
  option java_package = "io.temporal.api.testservice.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "RequestResponseProto";
31
- option ruby_package = "Temporal::Api::TestService::V1";
32
- option csharp_namespace = "Temporal.Api.TestService.V1";
31
+ option ruby_package = "Temporalio::Api::TestService::V1";
32
+ option csharp_namespace = "Temporalio.Api.TestService.V1";
33
33
 
34
34
  import "google/protobuf/duration.proto";
35
35
  import "google/protobuf/timestamp.proto";
@@ -28,8 +28,8 @@ option go_package = "go.temporal.io/api/testservice/v1;testservice";
28
28
  option java_package = "io.temporal.api.testservice.v1";
29
29
  option java_multiple_files = true;
30
30
  option java_outer_classname = "ServiceProto";
31
- option ruby_package = "Temporal::Api::TestService::V1";
32
- option csharp_namespace = "Temporal.Api.TestService.V1";
31
+ option ruby_package = "Temporalio::Api::TestService::V1";
32
+ option csharp_namespace = "Temporalio.Api.TestService.V1";
33
33
 
34
34
  import "temporal/api/testservice/v1/request_response.proto";
35
35
  import "google/protobuf/empty.proto";
@@ -15,7 +15,7 @@ categories = ["development-tools"]
15
15
  [dependencies]
16
16
  async-trait = "0.1"
17
17
  anyhow = "1.0"
18
- base64 = "0.13"
18
+ base64 = "0.20"
19
19
  crossbeam = "0.8"
20
20
  derive_more = "0.99"
21
21
  futures = "0.3"
@@ -28,7 +28,7 @@ tokio = { version = "1.1", features = ["rt", "rt-multi-thread", "parking_lot", "
28
28
  tokio-util = { version = "0.7" }
29
29
  tokio-stream = "0.1"
30
30
  tonic = "0.8"
31
- tracing = { version = "0.1", features = ["log-always"] }
31
+ tracing = "0.1"
32
32
 
33
33
  [dependencies.temporal-sdk-core]
34
34
  path = "../core"