temporalio 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +37 -67
  3. data/Gemfile +3 -0
  4. data/README.md +17 -2
  5. data/Rakefile +1 -1
  6. data/ext/Cargo.toml +3 -3
  7. data/lib/temporalio/api/activity/v1/message.rb +1 -1
  8. data/lib/temporalio/api/batch/v1/message.rb +4 -1
  9. data/lib/temporalio/api/command/v1/message.rb +2 -1
  10. data/lib/temporalio/api/common/v1/message.rb +5 -1
  11. data/lib/temporalio/api/enums/v1/activity.rb +1 -1
  12. data/lib/temporalio/api/enums/v1/batch_operation.rb +1 -1
  13. data/lib/temporalio/api/enums/v1/common.rb +2 -1
  14. data/lib/temporalio/api/enums/v1/failed_cause.rb +1 -1
  15. data/lib/temporalio/api/enums/v1/time_skipping.rb +21 -0
  16. data/lib/temporalio/api/errordetails/v1/message.rb +2 -1
  17. data/lib/temporalio/api/history/v1/message.rb +1 -1
  18. data/lib/temporalio/api/namespace/v1/message.rb +1 -1
  19. data/lib/temporalio/api/taskqueue/v1/message.rb +2 -1
  20. data/lib/temporalio/api/worker/v1/message.rb +13 -1
  21. data/lib/temporalio/api/workflow/v1/message.rb +1 -1
  22. data/lib/temporalio/api/workflowservice/v1/request_response.rb +4 -1
  23. data/lib/temporalio/api/workflowservice/v1/service.rb +1 -1
  24. data/lib/temporalio/client/connection/workflow_service.rb +15 -0
  25. data/lib/temporalio/client/connection.rb +33 -3
  26. data/lib/temporalio/client/schedule.rb +4 -5
  27. data/lib/temporalio/client/workflow_execution.rb +2 -2
  28. data/lib/temporalio/client/workflow_handle.rb +2 -1
  29. data/lib/temporalio/client.rb +4 -6
  30. data/lib/temporalio/converters/data_converter.rb +1 -0
  31. data/lib/temporalio/converters/failure_converter.rb +7 -4
  32. data/lib/temporalio/internal/bridge/api/common/common.rb +2 -1
  33. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +1 -1
  34. data/lib/temporalio/internal/bridge/client.rb +3 -1
  35. data/lib/temporalio/internal/bridge/runtime.rb +4 -1
  36. data/lib/temporalio/internal/bridge/worker.rb +3 -1
  37. data/lib/temporalio/internal/worker/workflow_instance/illegal_call_tracer.rb +9 -0
  38. data/lib/temporalio/runtime.rb +25 -7
  39. data/lib/temporalio/scoped_logger.rb +15 -0
  40. data/lib/temporalio/version.rb +1 -1
  41. data/lib/temporalio/worker/workflow_replayer.rb +2 -0
  42. data/lib/temporalio/worker.rb +24 -4
  43. data/lib/temporalio/workflow.rb +8 -9
  44. data/rbi/temporalio/api/activity/v1/message.rbi +100 -14
  45. data/rbi/temporalio/api/batch/v1/message.rbi +229 -2
  46. data/rbi/temporalio/api/command/v1/message.rbi +22 -2
  47. data/rbi/temporalio/api/common/v1/message.rbi +548 -74
  48. data/rbi/temporalio/api/enums/v1/activity.rbi +1 -0
  49. data/rbi/temporalio/api/enums/v1/batch_operation.rbi +9 -0
  50. data/rbi/temporalio/api/enums/v1/common.rbi +18 -0
  51. data/rbi/temporalio/api/enums/v1/failed_cause.rbi +4 -0
  52. data/rbi/temporalio/api/enums/v1/time_skipping.rbi +22 -0
  53. data/rbi/temporalio/api/errordetails/v1/message.rbi +59 -2
  54. data/rbi/temporalio/api/history/v1/message.rbi +27 -7
  55. data/rbi/temporalio/api/namespace/v1/message.rbi +95 -4
  56. data/rbi/temporalio/api/taskqueue/v1/message.rbi +113 -2
  57. data/rbi/temporalio/api/worker/v1/message.rbi +742 -2
  58. data/rbi/temporalio/api/workflow/v1/message.rbi +22 -2
  59. data/rbi/temporalio/api/workflowservice/v1/request_response.rbi +701 -117
  60. data/rbi/temporalio/api/workflowservice/v1/service_services.rbi +8 -0
  61. data/rbi/temporalio/client/connection/workflow_service.rbi +3 -0
  62. data/rbi/temporalio/client/connection.rbi +2 -0
  63. data/rbi/temporalio/converters/failure_converter.rbi +7 -2
  64. data/rbi/temporalio/internal/bridge/api/common/common.rbi +115 -0
  65. data/rbi/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rbi +42 -2
  66. data/rbi/temporalio/internal/bridge/runtime.rbi +24 -4
  67. data/rbi/temporalio/internal/bridge/worker.rbi +2 -0
  68. data/rbi/temporalio/runtime.rbi +13 -4
  69. data/rbi/temporalio/scoped_logger.rbi +1 -1
  70. data/rbi/temporalio/worker.rbi +9 -2
  71. data/rbi/temporalio/workflow/future.rbi +1 -1
  72. data/sig/temporalio/api/activity/v1/message.rbs +48 -2
  73. data/sig/temporalio/api/batch/v1/message.rbs +86 -0
  74. data/sig/temporalio/api/command/v1/message.rbs +10 -0
  75. data/sig/temporalio/api/common/v1/message.rbs +240 -39
  76. data/sig/temporalio/api/enums/v1/activity.rbs +9 -5
  77. data/sig/temporalio/api/enums/v1/batch_operation.rbs +33 -3
  78. data/sig/temporalio/api/enums/v1/common.rbs +23 -0
  79. data/sig/temporalio/api/enums/v1/failed_cause.rbs +18 -6
  80. data/sig/temporalio/api/enums/v1/time_skipping.rbs +58 -0
  81. data/sig/temporalio/api/errordetails/v1/message.rbs +19 -0
  82. data/sig/temporalio/api/history/v1/message.rbs +13 -3
  83. data/sig/temporalio/api/namespace/v1/message.rbs +43 -0
  84. data/sig/temporalio/api/taskqueue/v1/message.rbs +44 -0
  85. data/sig/temporalio/api/worker/v1/message.rbs +410 -0
  86. data/sig/temporalio/api/workflow/v1/message.rbs +10 -0
  87. data/sig/temporalio/api/workflowservice/v1/request_response.rbs +311 -40
  88. data/sig/temporalio/client/connection/workflow_service.rbs +4 -0
  89. data/sig/temporalio/client/connection.rbs +14 -1
  90. data/sig/temporalio/converters/failure_converter.rbs +4 -1
  91. data/sig/temporalio/internal/bridge/api/common/common.rbs +50 -0
  92. data/sig/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rbs +20 -0
  93. data/sig/temporalio/internal/bridge/client.rbs +5 -1
  94. data/sig/temporalio/internal/bridge/runtime.rbs +9 -3
  95. data/sig/temporalio/internal/bridge/worker.rbs +5 -1
  96. data/sig/temporalio/runtime.rbs +14 -3
  97. data/sig/temporalio/scoped_logger.rbs +1 -1
  98. data/sig/temporalio/worker.rbs +8 -2
  99. metadata +4 -1
@@ -486,6 +486,95 @@ class Temporalio::Api::Common::V1::WorkflowExecution
486
486
  end
487
487
  end
488
488
 
489
+ # Identifies a specific execution within a namespace. This is used for standalone activities
490
+ # executions in batch jobs currently.
491
+ class Temporalio::Api::Common::V1::Execution
492
+ include ::Google::Protobuf::MessageExts
493
+ extend ::Google::Protobuf::MessageExts::ClassMethods
494
+
495
+ sig do
496
+ params(
497
+ type: T.nilable(T.any(Symbol, String, Integer)),
498
+ business_id: T.nilable(String),
499
+ run_id: T.nilable(String)
500
+ ).void
501
+ end
502
+ def initialize(
503
+ type: :EXECUTION_TYPE_UNSPECIFIED,
504
+ business_id: "",
505
+ run_id: ""
506
+ )
507
+ end
508
+
509
+ sig { returns(T.any(Symbol, Integer)) }
510
+ def type
511
+ end
512
+
513
+ sig { params(value: T.any(Symbol, String, Integer)).void }
514
+ def type=(value)
515
+ end
516
+
517
+ sig { void }
518
+ def clear_type
519
+ end
520
+
521
+ sig { returns(String) }
522
+ def business_id
523
+ end
524
+
525
+ sig { params(value: String).void }
526
+ def business_id=(value)
527
+ end
528
+
529
+ sig { void }
530
+ def clear_business_id
531
+ end
532
+
533
+ sig { returns(String) }
534
+ def run_id
535
+ end
536
+
537
+ sig { params(value: String).void }
538
+ def run_id=(value)
539
+ end
540
+
541
+ sig { void }
542
+ def clear_run_id
543
+ end
544
+
545
+ sig { params(field: String).returns(T.untyped) }
546
+ def [](field)
547
+ end
548
+
549
+ sig { params(field: String, value: T.untyped).void }
550
+ def []=(field, value)
551
+ end
552
+
553
+ sig { returns(T::Hash[Symbol, T.untyped]) }
554
+ def to_h
555
+ end
556
+
557
+ sig { params(str: String).returns(Temporalio::Api::Common::V1::Execution) }
558
+ def self.decode(str)
559
+ end
560
+
561
+ sig { params(msg: Temporalio::Api::Common::V1::Execution).returns(String) }
562
+ def self.encode(msg)
563
+ end
564
+
565
+ sig { params(str: String, kw: T.untyped).returns(Temporalio::Api::Common::V1::Execution) }
566
+ def self.decode_json(str, **kw)
567
+ end
568
+
569
+ sig { params(msg: Temporalio::Api::Common::V1::Execution, kw: T.untyped).returns(String) }
570
+ def self.encode_json(msg, **kw)
571
+ end
572
+
573
+ sig { returns(::Google::Protobuf::Descriptor) }
574
+ def self.descriptor
575
+ end
576
+ end
577
+
489
578
  # Represents the identifier used by a workflow author to define the workflow. Typically, the
490
579
  # name of a function. This is sometimes referred to as the workflow's "name"
491
580
  class Temporalio::Api::Common::V1::WorkflowType
@@ -1933,15 +2022,17 @@ class Temporalio::Api::Common::V1::OnConflictOptions
1933
2022
  end
1934
2023
  end
1935
2024
 
1936
- # The configuration for time skipping of a workflow execution (a chain of runs including retries, cron, continue-as-new).
2025
+ # The configuration for time skipping of an execution.
1937
2026
  # When time skipping is enabled, virtual time advances automatically whenever there is no in-flight work.
1938
- # In-flight work includes activities, child workflows, Nexus operations, signal/cancel external workflow operations,
1939
- # and possibly other features added in the future.
1940
- # User timers are not classified as in-flight work and will be skipped over; the virtual clock may also skip to the
1941
- # time point of the registered fast forward when there is no in-flight work.
1942
- # When time is skipped, a WorkflowExecutionTimeSkippingTransitionedEvent will be
1943
- # added to the workflow history to capture the state changes.
2027
+ # Options like fast_forward, disable_propagation, and max_session_skip_count are provided for granular
2028
+ # control of the execution's time skipping behavior. See each field's comment for a detailed explanation.
1944
2029
  #
2030
+ # An example of workflows with time skipping:
2031
+ # For workflows, an execution is a chain of runs including retries, cron, and continue-as-new.
2032
+ # In-flight work includes activities, child workflows, Nexus operations, signal/cancel external workflow operations, etc.
2033
+ # User timers are not classified as in-flight work and will be skipped over; the virtual clock may also skip to the
2034
+ # time point of the registered fast-forward when there is no in-flight work.
2035
+ # Whenever time is skipped, the skip count is incremented by one; max_session_skip_count bounds the number of skips allowed within a single time-skipping session.
1945
2036
  # For child workflows, by default, if the parent execution is skipping time, the child execution will also skip time,
1946
2037
  # but a parent's fast_forward won't affect its child's execution. A flag is provided to disable propagation of the
1947
2038
  # "enabled" flag to child workflows; regardless of that flag, a child workflow inherits the virtual time from the
@@ -1953,14 +2044,16 @@ class Temporalio::Api::Common::V1::TimeSkippingConfig
1953
2044
  sig do
1954
2045
  params(
1955
2046
  enabled: T.nilable(T::Boolean),
1956
- fast_forward: T.nilable(Google::Protobuf::Duration),
1957
- disable_child_propagation: T.nilable(T::Boolean)
2047
+ fast_forward_config: T.nilable(Temporalio::Api::Common::V1::FastForwardConfig),
2048
+ disable_propagation: T.nilable(T::Boolean),
2049
+ max_session_skip_count: T.nilable(Integer)
1958
2050
  ).void
1959
2051
  end
1960
2052
  def initialize(
1961
2053
  enabled: false,
1962
- fast_forward: nil,
1963
- disable_child_propagation: false
2054
+ fast_forward_config: nil,
2055
+ disable_propagation: false,
2056
+ max_session_skip_count: 0
1964
2057
  )
1965
2058
  end
1966
2059
 
@@ -1979,70 +2072,85 @@ class Temporalio::Api::Common::V1::TimeSkippingConfig
1979
2072
  def clear_enabled
1980
2073
  end
1981
2074
 
1982
- # Optionally fast-forward the current workflow execution by this duration ahead of current workflow execution time.
1983
- # After the fast-forward completes, time skipping is disabled, and this
1984
- # action is recorded in the WorkflowExecutionTimeSkippingTransitionedEvent. It can be re-enabled by
1985
- # setting `enabled` to true or setting `fast_forward` again via UpdateWorkflowExecutionOptions.
1986
- # The current workflow execution is a chain of runs (retries, cron, continue-as-new);
1987
- # child workflows are separate executions, so this fast_forward won't affect them.
1988
- #
1989
- # For a given workflow execution, only one active fast-forward is allowed at a time.
1990
- # If a new fast-forward is set via UpdateWorkflowExecutionOptions before the previous
1991
- # one completes, the new one will override the previous one.
1992
- # If the fast-forward duration exceeds the remaining execution timeout, time will only
1993
- # be fast-forwarded up to the end of the execution.
1994
- sig { returns(T.nilable(Google::Protobuf::Duration)) }
1995
- def fast_forward
2075
+ # An optional opt-in to control time-skipping behavior through fast-forward; see its definition for details.
2076
+ sig { returns(T.nilable(Temporalio::Api::Common::V1::FastForwardConfig)) }
2077
+ def fast_forward_config
1996
2078
  end
1997
2079
 
1998
- # Optionally fast-forward the current workflow execution by this duration ahead of current workflow execution time.
1999
- # After the fast-forward completes, time skipping is disabled, and this
2000
- # action is recorded in the WorkflowExecutionTimeSkippingTransitionedEvent. It can be re-enabled by
2001
- # setting `enabled` to true or setting `fast_forward` again via UpdateWorkflowExecutionOptions.
2002
- # The current workflow execution is a chain of runs (retries, cron, continue-as-new);
2003
- # child workflows are separate executions, so this fast_forward won't affect them.
2004
- #
2005
- # For a given workflow execution, only one active fast-forward is allowed at a time.
2006
- # If a new fast-forward is set via UpdateWorkflowExecutionOptions before the previous
2007
- # one completes, the new one will override the previous one.
2008
- # If the fast-forward duration exceeds the remaining execution timeout, time will only
2009
- # be fast-forwarded up to the end of the execution.
2010
- sig { params(value: T.nilable(Google::Protobuf::Duration)).void }
2011
- def fast_forward=(value)
2080
+ # An optional opt-in to control time-skipping behavior through fast-forward; see its definition for details.
2081
+ sig { params(value: T.nilable(Temporalio::Api::Common::V1::FastForwardConfig)).void }
2082
+ def fast_forward_config=(value)
2012
2083
  end
2013
2084
 
2014
- # Optionally fast-forward the current workflow execution by this duration ahead of current workflow execution time.
2015
- # After the fast-forward completes, time skipping is disabled, and this
2016
- # action is recorded in the WorkflowExecutionTimeSkippingTransitionedEvent. It can be re-enabled by
2017
- # setting `enabled` to true or setting `fast_forward` again via UpdateWorkflowExecutionOptions.
2018
- # The current workflow execution is a chain of runs (retries, cron, continue-as-new);
2019
- # child workflows are separate executions, so this fast_forward won't affect them.
2020
- #
2021
- # For a given workflow execution, only one active fast-forward is allowed at a time.
2022
- # If a new fast-forward is set via UpdateWorkflowExecutionOptions before the previous
2023
- # one completes, the new one will override the previous one.
2024
- # If the fast-forward duration exceeds the remaining execution timeout, time will only
2025
- # be fast-forwarded up to the end of the execution.
2085
+ # An optional opt-in to control time-skipping behavior through fast-forward; see its definition for details.
2026
2086
  sig { void }
2027
- def clear_fast_forward
2087
+ def clear_fast_forward_config
2028
2088
  end
2029
2089
 
2030
- # By default, child workflows inherit the "enabled" flag when they are started.
2090
+ # By default, executions started by another execution (e.g. a child workflow of a parent workflow or
2091
+ # a schedule with the time-skipping policy enabled) inherit the "enabled" flag and skip time when possible.
2031
2092
  # This flag disables that inheritance.
2032
2093
  sig { returns(T::Boolean) }
2033
- def disable_child_propagation
2094
+ def disable_propagation
2034
2095
  end
2035
2096
 
2036
- # By default, child workflows inherit the "enabled" flag when they are started.
2097
+ # By default, executions started by another execution (e.g. a child workflow of a parent workflow or
2098
+ # a schedule with the time-skipping policy enabled) inherit the "enabled" flag and skip time when possible.
2037
2099
  # This flag disables that inheritance.
2038
2100
  sig { params(value: T::Boolean).void }
2039
- def disable_child_propagation=(value)
2101
+ def disable_propagation=(value)
2040
2102
  end
2041
2103
 
2042
- # By default, child workflows inherit the "enabled" flag when they are started.
2104
+ # By default, executions started by another execution (e.g. a child workflow of a parent workflow or
2105
+ # a schedule with the time-skipping policy enabled) inherit the "enabled" flag and skip time when possible.
2043
2106
  # This flag disables that inheritance.
2044
2107
  sig { void }
2045
- def clear_disable_child_propagation
2108
+ def clear_disable_propagation
2109
+ end
2110
+
2111
+ # The maximum number of skips allowed every time this field is updated. It protects the execution from
2112
+ # situations like unlimited retries when backoff is skipped.
2113
+ #
2114
+ # Every time the execution skips time, the skip count is incremented by one, and when it reaches
2115
+ # max_session_skip_count, time skipping stops. Whenever this config field is updated, the accumulated
2116
+ # skip count is cleared, marking the start of a new session.
2117
+ # For an execution with a chain of runs (retry, cron, continue-as-new), the count is accumulated
2118
+ # across all runs within the same session.
2119
+ #
2120
+ # If this field is not set, the server applies a large default value (e.g. 100). The default can
2121
+ # be changed through dynamic config, and is overridden by this field when set.
2122
+ sig { returns(Integer) }
2123
+ def max_session_skip_count
2124
+ end
2125
+
2126
+ # The maximum number of skips allowed every time this field is updated. It protects the execution from
2127
+ # situations like unlimited retries when backoff is skipped.
2128
+ #
2129
+ # Every time the execution skips time, the skip count is incremented by one, and when it reaches
2130
+ # max_session_skip_count, time skipping stops. Whenever this config field is updated, the accumulated
2131
+ # skip count is cleared, marking the start of a new session.
2132
+ # For an execution with a chain of runs (retry, cron, continue-as-new), the count is accumulated
2133
+ # across all runs within the same session.
2134
+ #
2135
+ # If this field is not set, the server applies a large default value (e.g. 100). The default can
2136
+ # be changed through dynamic config, and is overridden by this field when set.
2137
+ sig { params(value: Integer).void }
2138
+ def max_session_skip_count=(value)
2139
+ end
2140
+
2141
+ # The maximum number of skips allowed every time this field is updated. It protects the execution from
2142
+ # situations like unlimited retries when backoff is skipped.
2143
+ #
2144
+ # Every time the execution skips time, the skip count is incremented by one, and when it reaches
2145
+ # max_session_skip_count, time skipping stops. Whenever this config field is updated, the accumulated
2146
+ # skip count is cleared, marking the start of a new session.
2147
+ # For an execution with a chain of runs (retry, cron, continue-as-new), the count is accumulated
2148
+ # across all runs within the same session.
2149
+ #
2150
+ # If this field is not set, the server applies a large default value (e.g. 100). The default can
2151
+ # be changed through dynamic config, and is overridden by this field when set.
2152
+ sig { void }
2153
+ def clear_max_session_skip_count
2046
2154
  end
2047
2155
 
2048
2156
  sig { params(field: String).returns(T.untyped) }
@@ -2078,8 +2186,117 @@ class Temporalio::Api::Common::V1::TimeSkippingConfig
2078
2186
  end
2079
2187
  end
2080
2188
 
2081
- # The time-skipping state that needs to be propagated from a parent workflow to a child workflow,
2082
- # or through a chain of runs.
2189
+ class Temporalio::Api::Common::V1::FastForwardConfig
2190
+ include ::Google::Protobuf::MessageExts
2191
+ extend ::Google::Protobuf::MessageExts::ClassMethods
2192
+
2193
+ sig do
2194
+ params(
2195
+ id: T.nilable(String),
2196
+ duration: T.nilable(Google::Protobuf::Duration)
2197
+ ).void
2198
+ end
2199
+ def initialize(
2200
+ id: "",
2201
+ duration: nil
2202
+ )
2203
+ end
2204
+
2205
+ # A client-supplied ID, required field, set alongside `duration`. It is used to poll for
2206
+ # fast-forward completion via PollWorkflowExecutionTimeSkipping.
2207
+ # The server performs no idempotency check on this ID; the client is responsible for managing it.
2208
+ sig { returns(String) }
2209
+ def id
2210
+ end
2211
+
2212
+ # A client-supplied ID, required field, set alongside `duration`. It is used to poll for
2213
+ # fast-forward completion via PollWorkflowExecutionTimeSkipping.
2214
+ # The server performs no idempotency check on this ID; the client is responsible for managing it.
2215
+ sig { params(value: String).void }
2216
+ def id=(value)
2217
+ end
2218
+
2219
+ # A client-supplied ID, required field, set alongside `duration`. It is used to poll for
2220
+ # fast-forward completion via PollWorkflowExecutionTimeSkipping.
2221
+ # The server performs no idempotency check on this ID; the client is responsible for managing it.
2222
+ sig { void }
2223
+ def clear_id
2224
+ end
2225
+
2226
+ # Fast-forward the current execution by this duration ahead of the current execution time; required field.
2227
+ # The duration yields a target time (current execution time + duration), surfaced as `target_time` in
2228
+ # TimeSkippingFastForwardInfo. Once virtual time reaches that target, the fast-forward completes, time
2229
+ # skipping is disabled, and no further time is skipped. Time skipping can be resumed either
2230
+ # by updating the TimeSkippingConfig with a new FastForwardConfig, or by clearing the FastForwardConfig
2231
+ # to skip through to the end of the execution.
2232
+ #
2233
+ # If this duration exceeds the remaining execution timeout, time will not pass beyond the end
2234
+ # of the execution, and the fast-forward won't have a chance to complete.
2235
+ sig { returns(T.nilable(Google::Protobuf::Duration)) }
2236
+ def duration
2237
+ end
2238
+
2239
+ # Fast-forward the current execution by this duration ahead of the current execution time; required field.
2240
+ # The duration yields a target time (current execution time + duration), surfaced as `target_time` in
2241
+ # TimeSkippingFastForwardInfo. Once virtual time reaches that target, the fast-forward completes, time
2242
+ # skipping is disabled, and no further time is skipped. Time skipping can be resumed either
2243
+ # by updating the TimeSkippingConfig with a new FastForwardConfig, or by clearing the FastForwardConfig
2244
+ # to skip through to the end of the execution.
2245
+ #
2246
+ # If this duration exceeds the remaining execution timeout, time will not pass beyond the end
2247
+ # of the execution, and the fast-forward won't have a chance to complete.
2248
+ sig { params(value: T.nilable(Google::Protobuf::Duration)).void }
2249
+ def duration=(value)
2250
+ end
2251
+
2252
+ # Fast-forward the current execution by this duration ahead of the current execution time; required field.
2253
+ # The duration yields a target time (current execution time + duration), surfaced as `target_time` in
2254
+ # TimeSkippingFastForwardInfo. Once virtual time reaches that target, the fast-forward completes, time
2255
+ # skipping is disabled, and no further time is skipped. Time skipping can be resumed either
2256
+ # by updating the TimeSkippingConfig with a new FastForwardConfig, or by clearing the FastForwardConfig
2257
+ # to skip through to the end of the execution.
2258
+ #
2259
+ # If this duration exceeds the remaining execution timeout, time will not pass beyond the end
2260
+ # of the execution, and the fast-forward won't have a chance to complete.
2261
+ sig { void }
2262
+ def clear_duration
2263
+ end
2264
+
2265
+ sig { params(field: String).returns(T.untyped) }
2266
+ def [](field)
2267
+ end
2268
+
2269
+ sig { params(field: String, value: T.untyped).void }
2270
+ def []=(field, value)
2271
+ end
2272
+
2273
+ sig { returns(T::Hash[Symbol, T.untyped]) }
2274
+ def to_h
2275
+ end
2276
+
2277
+ sig { params(str: String).returns(Temporalio::Api::Common::V1::FastForwardConfig) }
2278
+ def self.decode(str)
2279
+ end
2280
+
2281
+ sig { params(msg: Temporalio::Api::Common::V1::FastForwardConfig).returns(String) }
2282
+ def self.encode(msg)
2283
+ end
2284
+
2285
+ sig { params(str: String, kw: T.untyped).returns(Temporalio::Api::Common::V1::FastForwardConfig) }
2286
+ def self.decode_json(str, **kw)
2287
+ end
2288
+
2289
+ sig { params(msg: Temporalio::Api::Common::V1::FastForwardConfig, kw: T.untyped).returns(String) }
2290
+ def self.encode_json(msg, **kw)
2291
+ end
2292
+
2293
+ sig { returns(::Google::Protobuf::Descriptor) }
2294
+ def self.descriptor
2295
+ end
2296
+ end
2297
+
2298
+ # The time-skipping state that needs to be propagated from one execution to another, or through a chain of runs
2299
+ # within the same execution.
2083
2300
  class Temporalio::Api::Common::V1::TimeSkippingStatePropagation
2084
2301
  include ::Google::Protobuf::MessageExts
2085
2302
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -2087,51 +2304,65 @@ class Temporalio::Api::Common::V1::TimeSkippingStatePropagation
2087
2304
  sig do
2088
2305
  params(
2089
2306
  initial_skipped_duration: T.nilable(Google::Protobuf::Duration),
2090
- fast_forward_target_time: T.nilable(Google::Protobuf::Timestamp)
2307
+ fast_forward_target_time: T.nilable(Google::Protobuf::Timestamp),
2308
+ initial_skip_count: T.nilable(Integer)
2091
2309
  ).void
2092
2310
  end
2093
2311
  def initialize(
2094
2312
  initial_skipped_duration: nil,
2095
- fast_forward_target_time: nil
2313
+ fast_forward_target_time: nil,
2314
+ initial_skip_count: 0
2096
2315
  )
2097
2316
  end
2098
2317
 
2099
- # The time skipped by the previous execution that started this workflow.
2100
- # It can happen in child workflows and a chain of runs (CaN, cron, retry).
2318
+ # The time skipped by the previous run. It is propagated both to executions started by the
2319
+ # current execution and through a chain of runs (CaN, cron, retry).
2101
2320
  sig { returns(T.nilable(Google::Protobuf::Duration)) }
2102
2321
  def initial_skipped_duration
2103
2322
  end
2104
2323
 
2105
- # The time skipped by the previous execution that started this workflow.
2106
- # It can happen in child workflows and a chain of runs (CaN, cron, retry).
2324
+ # The time skipped by the previous run. It is propagated both to executions started by the
2325
+ # current execution and through a chain of runs (CaN, cron, retry).
2107
2326
  sig { params(value: T.nilable(Google::Protobuf::Duration)).void }
2108
2327
  def initial_skipped_duration=(value)
2109
2328
  end
2110
2329
 
2111
- # The time skipped by the previous execution that started this workflow.
2112
- # It can happen in child workflows and a chain of runs (CaN, cron, retry).
2330
+ # The time skipped by the previous run. It is propagated both to executions started by the
2331
+ # current execution and through a chain of runs (CaN, cron, retry).
2113
2332
  sig { void }
2114
2333
  def clear_initial_skipped_duration
2115
2334
  end
2116
2335
 
2117
- # If there is a fast-forward action set for the previous run in a chain of runs,
2118
- # the target time should be propagated to the next run as well.
2336
+ # The fast-forward target time. It only propagates across a chain of runs within the same execution.
2119
2337
  sig { returns(T.nilable(Google::Protobuf::Timestamp)) }
2120
2338
  def fast_forward_target_time
2121
2339
  end
2122
2340
 
2123
- # If there is a fast-forward action set for the previous run in a chain of runs,
2124
- # the target time should be propagated to the next run as well.
2341
+ # The fast-forward target time. It only propagates across a chain of runs within the same execution.
2125
2342
  sig { params(value: T.nilable(Google::Protobuf::Timestamp)).void }
2126
2343
  def fast_forward_target_time=(value)
2127
2344
  end
2128
2345
 
2129
- # If there is a fast-forward action set for the previous run in a chain of runs,
2130
- # the target time should be propagated to the next run as well.
2346
+ # The fast-forward target time. It only propagates across a chain of runs within the same execution.
2131
2347
  sig { void }
2132
2348
  def clear_fast_forward_target_time
2133
2349
  end
2134
2350
 
2351
+ # The initial skip count. It only propagates across a chain of runs within the same execution.
2352
+ sig { returns(Integer) }
2353
+ def initial_skip_count
2354
+ end
2355
+
2356
+ # The initial skip count. It only propagates across a chain of runs within the same execution.
2357
+ sig { params(value: Integer).void }
2358
+ def initial_skip_count=(value)
2359
+ end
2360
+
2361
+ # The initial skip count. It only propagates across a chain of runs within the same execution.
2362
+ sig { void }
2363
+ def clear_initial_skip_count
2364
+ end
2365
+
2135
2366
  sig { params(field: String).returns(T.untyped) }
2136
2367
  def [](field)
2137
2368
  end
@@ -2165,6 +2396,249 @@ class Temporalio::Api::Common::V1::TimeSkippingStatePropagation
2165
2396
  end
2166
2397
  end
2167
2398
 
2399
+ # Describes the current time-skipping state of a workflow execution.
2400
+ class Temporalio::Api::Common::V1::TimeSkippingInfo
2401
+ include ::Google::Protobuf::MessageExts
2402
+ extend ::Google::Protobuf::MessageExts::ClassMethods
2403
+
2404
+ sig do
2405
+ params(
2406
+ current_time: T.nilable(Google::Protobuf::Timestamp),
2407
+ effective_config: T.nilable(Temporalio::Api::Common::V1::TimeSkippingConfig),
2408
+ fast_forward_info: T.nilable(Temporalio::Api::Common::V1::TimeSkippingFastForwardInfo),
2409
+ current_session_skip_count: T.nilable(Integer)
2410
+ ).void
2411
+ end
2412
+ def initialize(
2413
+ current_time: nil,
2414
+ effective_config: nil,
2415
+ fast_forward_info: nil,
2416
+ current_session_skip_count: 0
2417
+ )
2418
+ end
2419
+
2420
+ # Current virtual time of the execution. If the execution hasn't skipped
2421
+ # any time yet, it will be the same as wall clock time.
2422
+ sig { returns(T.nilable(Google::Protobuf::Timestamp)) }
2423
+ def current_time
2424
+ end
2425
+
2426
+ # Current virtual time of the execution. If the execution hasn't skipped
2427
+ # any time yet, it will be the same as wall clock time.
2428
+ sig { params(value: T.nilable(Google::Protobuf::Timestamp)).void }
2429
+ def current_time=(value)
2430
+ end
2431
+
2432
+ # Current virtual time of the execution. If the execution hasn't skipped
2433
+ # any time yet, it will be the same as wall clock time.
2434
+ sig { void }
2435
+ def clear_current_time
2436
+ end
2437
+
2438
+ # The current effective time-skipping config, which can differ from the config the user last set:
2439
+ # internally-defaulted fields are populated, and `enabled` reflects whether the execution is still
2440
+ # skipping time — e.g. it is set to false once `max_session_skip_count` is reached, the fast-forward
2441
+ # completes, or a client call disables time skipping.
2442
+ sig { returns(T.nilable(Temporalio::Api::Common::V1::TimeSkippingConfig)) }
2443
+ def effective_config
2444
+ end
2445
+
2446
+ # The current effective time-skipping config, which can differ from the config the user last set:
2447
+ # internally-defaulted fields are populated, and `enabled` reflects whether the execution is still
2448
+ # skipping time — e.g. it is set to false once `max_session_skip_count` is reached, the fast-forward
2449
+ # completes, or a client call disables time skipping.
2450
+ sig { params(value: T.nilable(Temporalio::Api::Common::V1::TimeSkippingConfig)).void }
2451
+ def effective_config=(value)
2452
+ end
2453
+
2454
+ # The current effective time-skipping config, which can differ from the config the user last set:
2455
+ # internally-defaulted fields are populated, and `enabled` reflects whether the execution is still
2456
+ # skipping time — e.g. it is set to false once `max_session_skip_count` is reached, the fast-forward
2457
+ # completes, or a client call disables time skipping.
2458
+ sig { void }
2459
+ def clear_effective_config
2460
+ end
2461
+
2462
+ # The execution's current fast-forward, if any. Unset if time skipping is enabled without a fast-forward.
2463
+ sig { returns(T.nilable(Temporalio::Api::Common::V1::TimeSkippingFastForwardInfo)) }
2464
+ def fast_forward_info
2465
+ end
2466
+
2467
+ # The execution's current fast-forward, if any. Unset if time skipping is enabled without a fast-forward.
2468
+ sig { params(value: T.nilable(Temporalio::Api::Common::V1::TimeSkippingFastForwardInfo)).void }
2469
+ def fast_forward_info=(value)
2470
+ end
2471
+
2472
+ # The execution's current fast-forward, if any. Unset if time skipping is enabled without a fast-forward.
2473
+ sig { void }
2474
+ def clear_fast_forward_info
2475
+ end
2476
+
2477
+ # The number of skips accumulated in the current session, bounded by `max_session_skip_count`.
2478
+ # A new session begins — and this resets to 0 — each time `max_session_skip_count` is updated.
2479
+ sig { returns(Integer) }
2480
+ def current_session_skip_count
2481
+ end
2482
+
2483
+ # The number of skips accumulated in the current session, bounded by `max_session_skip_count`.
2484
+ # A new session begins — and this resets to 0 — each time `max_session_skip_count` is updated.
2485
+ sig { params(value: Integer).void }
2486
+ def current_session_skip_count=(value)
2487
+ end
2488
+
2489
+ # The number of skips accumulated in the current session, bounded by `max_session_skip_count`.
2490
+ # A new session begins — and this resets to 0 — each time `max_session_skip_count` is updated.
2491
+ sig { void }
2492
+ def clear_current_session_skip_count
2493
+ end
2494
+
2495
+ sig { params(field: String).returns(T.untyped) }
2496
+ def [](field)
2497
+ end
2498
+
2499
+ sig { params(field: String, value: T.untyped).void }
2500
+ def []=(field, value)
2501
+ end
2502
+
2503
+ sig { returns(T::Hash[Symbol, T.untyped]) }
2504
+ def to_h
2505
+ end
2506
+
2507
+ sig { params(str: String).returns(Temporalio::Api::Common::V1::TimeSkippingInfo) }
2508
+ def self.decode(str)
2509
+ end
2510
+
2511
+ sig { params(msg: Temporalio::Api::Common::V1::TimeSkippingInfo).returns(String) }
2512
+ def self.encode(msg)
2513
+ end
2514
+
2515
+ sig { params(str: String, kw: T.untyped).returns(Temporalio::Api::Common::V1::TimeSkippingInfo) }
2516
+ def self.decode_json(str, **kw)
2517
+ end
2518
+
2519
+ sig { params(msg: Temporalio::Api::Common::V1::TimeSkippingInfo, kw: T.untyped).returns(String) }
2520
+ def self.encode_json(msg, **kw)
2521
+ end
2522
+
2523
+ sig { returns(::Google::Protobuf::Descriptor) }
2524
+ def self.descriptor
2525
+ end
2526
+ end
2527
+
2528
+ # TimeSkippingFastForwardInfo describes the current time-skipping fast-forward on an execution.
2529
+ class Temporalio::Api::Common::V1::TimeSkippingFastForwardInfo
2530
+ include ::Google::Protobuf::MessageExts
2531
+ extend ::Google::Protobuf::MessageExts::ClassMethods
2532
+
2533
+ sig do
2534
+ params(
2535
+ fast_forward_duration: T.nilable(Google::Protobuf::Duration),
2536
+ fast_forward_id: T.nilable(String),
2537
+ target_time: T.nilable(Google::Protobuf::Timestamp),
2538
+ has_completed: T.nilable(T::Boolean)
2539
+ ).void
2540
+ end
2541
+ def initialize(
2542
+ fast_forward_duration: nil,
2543
+ fast_forward_id: "",
2544
+ target_time: nil,
2545
+ has_completed: false
2546
+ )
2547
+ end
2548
+
2549
+ # The client-supplied `fast_forward` duration.
2550
+ sig { returns(T.nilable(Google::Protobuf::Duration)) }
2551
+ def fast_forward_duration
2552
+ end
2553
+
2554
+ # The client-supplied `fast_forward` duration.
2555
+ sig { params(value: T.nilable(Google::Protobuf::Duration)).void }
2556
+ def fast_forward_duration=(value)
2557
+ end
2558
+
2559
+ # The client-supplied `fast_forward` duration.
2560
+ sig { void }
2561
+ def clear_fast_forward_duration
2562
+ end
2563
+
2564
+ # The client-supplied ID set alongside `fast_forward` duration.
2565
+ sig { returns(String) }
2566
+ def fast_forward_id
2567
+ end
2568
+
2569
+ # The client-supplied ID set alongside `fast_forward` duration.
2570
+ sig { params(value: String).void }
2571
+ def fast_forward_id=(value)
2572
+ end
2573
+
2574
+ # The client-supplied ID set alongside `fast_forward` duration.
2575
+ sig { void }
2576
+ def clear_fast_forward_id
2577
+ end
2578
+
2579
+ # The target virtual time at which the fast-forward completes.
2580
+ sig { returns(T.nilable(Google::Protobuf::Timestamp)) }
2581
+ def target_time
2582
+ end
2583
+
2584
+ # The target virtual time at which the fast-forward completes.
2585
+ sig { params(value: T.nilable(Google::Protobuf::Timestamp)).void }
2586
+ def target_time=(value)
2587
+ end
2588
+
2589
+ # The target virtual time at which the fast-forward completes.
2590
+ sig { void }
2591
+ def clear_target_time
2592
+ end
2593
+
2594
+ # True once `target_time` has been reached.
2595
+ sig { returns(T::Boolean) }
2596
+ def has_completed
2597
+ end
2598
+
2599
+ # True once `target_time` has been reached.
2600
+ sig { params(value: T::Boolean).void }
2601
+ def has_completed=(value)
2602
+ end
2603
+
2604
+ # True once `target_time` has been reached.
2605
+ sig { void }
2606
+ def clear_has_completed
2607
+ end
2608
+
2609
+ sig { params(field: String).returns(T.untyped) }
2610
+ def [](field)
2611
+ end
2612
+
2613
+ sig { params(field: String, value: T.untyped).void }
2614
+ def []=(field, value)
2615
+ end
2616
+
2617
+ sig { returns(T::Hash[Symbol, T.untyped]) }
2618
+ def to_h
2619
+ end
2620
+
2621
+ sig { params(str: String).returns(Temporalio::Api::Common::V1::TimeSkippingFastForwardInfo) }
2622
+ def self.decode(str)
2623
+ end
2624
+
2625
+ sig { params(msg: Temporalio::Api::Common::V1::TimeSkippingFastForwardInfo).returns(String) }
2626
+ def self.encode(msg)
2627
+ end
2628
+
2629
+ sig { params(str: String, kw: T.untyped).returns(Temporalio::Api::Common::V1::TimeSkippingFastForwardInfo) }
2630
+ def self.decode_json(str, **kw)
2631
+ end
2632
+
2633
+ sig { params(msg: Temporalio::Api::Common::V1::TimeSkippingFastForwardInfo, kw: T.untyped).returns(String) }
2634
+ def self.encode_json(msg, **kw)
2635
+ end
2636
+
2637
+ sig { returns(::Google::Protobuf::Descriptor) }
2638
+ def self.descriptor
2639
+ end
2640
+ end
2641
+
2168
2642
  # Describes an externally stored object referenced by this payload.
2169
2643
  class Temporalio::Api::Common::V1::Payload::ExternalPayloadDetails
2170
2644
  include ::Google::Protobuf::MessageExts