temporalio 0.3.0-x86_64-linux-musl → 0.4.0-x86_64-linux-musl
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.
- checksums.yaml +4 -4
- data/Gemfile +4 -0
- data/Rakefile +1 -1
- data/lib/temporalio/activity/context.rb +7 -0
- data/lib/temporalio/activity/definition.rb +4 -1
- data/lib/temporalio/activity/info.rb +3 -0
- data/lib/temporalio/api/batch/v1/message.rb +6 -1
- data/lib/temporalio/api/command/v1/message.rb +1 -1
- data/lib/temporalio/api/common/v1/message.rb +2 -1
- data/lib/temporalio/api/deployment/v1/message.rb +38 -0
- data/lib/temporalio/api/enums/v1/batch_operation.rb +1 -1
- data/lib/temporalio/api/enums/v1/common.rb +1 -1
- data/lib/temporalio/api/enums/v1/deployment.rb +23 -0
- data/lib/temporalio/api/enums/v1/event_type.rb +1 -1
- data/lib/temporalio/api/enums/v1/failed_cause.rb +1 -1
- data/lib/temporalio/api/enums/v1/nexus.rb +21 -0
- data/lib/temporalio/api/enums/v1/reset.rb +1 -1
- data/lib/temporalio/api/enums/v1/workflow.rb +2 -1
- data/lib/temporalio/api/errordetails/v1/message.rb +3 -1
- data/lib/temporalio/api/failure/v1/message.rb +3 -1
- data/lib/temporalio/api/history/v1/message.rb +3 -1
- data/lib/temporalio/api/nexus/v1/message.rb +2 -1
- data/lib/temporalio/api/payload_visitor.rb +75 -7
- data/lib/temporalio/api/query/v1/message.rb +2 -1
- data/lib/temporalio/api/taskqueue/v1/message.rb +4 -1
- data/lib/temporalio/api/workflow/v1/message.rb +9 -1
- data/lib/temporalio/api/workflowservice/v1/request_response.rb +40 -11
- data/lib/temporalio/api/workflowservice/v1/service.rb +1 -1
- data/lib/temporalio/api.rb +1 -0
- data/lib/temporalio/client/connection/workflow_service.rb +238 -28
- data/lib/temporalio/client/interceptor.rb +39 -0
- data/lib/temporalio/client/schedule.rb +25 -1
- data/lib/temporalio/client/with_start_workflow_operation.rb +115 -0
- data/lib/temporalio/client/workflow_execution.rb +19 -0
- data/lib/temporalio/client/workflow_handle.rb +3 -3
- data/lib/temporalio/client.rb +125 -2
- data/lib/temporalio/contrib/open_telemetry.rb +470 -0
- data/lib/temporalio/error.rb +1 -0
- data/lib/temporalio/internal/bridge/3.2/temporalio_bridge.so +0 -0
- data/lib/temporalio/internal/bridge/3.3/temporalio_bridge.so +0 -0
- data/lib/temporalio/internal/bridge/3.4/temporalio_bridge.so +0 -0
- data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +1 -1
- data/lib/temporalio/internal/bridge/api/common/common.rb +2 -1
- data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +1 -1
- data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +1 -1
- data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +2 -1
- data/lib/temporalio/internal/bridge/runtime.rb +3 -0
- data/lib/temporalio/internal/bridge/testing.rb +3 -0
- data/lib/temporalio/internal/client/implementation.rb +232 -10
- data/lib/temporalio/internal/proto_utils.rb +34 -2
- data/lib/temporalio/internal/worker/activity_worker.rb +14 -5
- data/lib/temporalio/internal/worker/multi_runner.rb +2 -2
- data/lib/temporalio/internal/worker/workflow_instance/context.rb +53 -3
- data/lib/temporalio/internal/worker/workflow_instance/details.rb +4 -2
- data/lib/temporalio/internal/worker/workflow_instance/outbound_implementation.rb +11 -26
- data/lib/temporalio/internal/worker/workflow_instance/scheduler.rb +22 -2
- data/lib/temporalio/internal/worker/workflow_instance.rb +76 -32
- data/lib/temporalio/internal/worker/workflow_worker.rb +6 -3
- data/lib/temporalio/runtime/metric_buffer.rb +94 -0
- data/lib/temporalio/runtime.rb +48 -10
- data/lib/temporalio/search_attributes.rb +13 -0
- data/lib/temporalio/testing/activity_environment.rb +32 -8
- data/lib/temporalio/testing/workflow_environment.rb +26 -3
- data/lib/temporalio/version.rb +1 -1
- data/lib/temporalio/worker/interceptor.rb +3 -0
- data/lib/temporalio/worker/thread_pool.rb +5 -5
- data/lib/temporalio/worker/workflow_executor/thread_pool.rb +8 -3
- data/lib/temporalio/worker/workflow_replayer.rb +7 -0
- data/lib/temporalio/worker.rb +34 -0
- data/lib/temporalio/workflow/definition.rb +40 -8
- data/lib/temporalio/workflow/future.rb +2 -2
- data/lib/temporalio/workflow/info.rb +22 -0
- data/lib/temporalio/workflow.rb +54 -8
- data/temporalio.gemspec +2 -1
- metadata +24 -4
    
        data/lib/temporalio/worker.rb
    CHANGED
    
    | @@ -6,6 +6,7 @@ require 'temporalio/client' | |
| 6 6 | 
             
            require 'temporalio/error'
         | 
| 7 7 | 
             
            require 'temporalio/internal/bridge'
         | 
| 8 8 | 
             
            require 'temporalio/internal/bridge/worker'
         | 
| 9 | 
            +
            require 'temporalio/internal/proto_utils'
         | 
| 9 10 | 
             
            require 'temporalio/internal/worker/activity_worker'
         | 
| 10 11 | 
             
            require 'temporalio/internal/worker/multi_runner'
         | 
| 11 12 | 
             
            require 'temporalio/internal/worker/workflow_instance'
         | 
| @@ -51,10 +52,13 @@ module Temporalio | |
| 51 52 | 
             
                  :illegal_workflow_calls,
         | 
| 52 53 | 
             
                  :workflow_failure_exception_types,
         | 
| 53 54 | 
             
                  :workflow_payload_codec_thread_pool,
         | 
| 55 | 
            +
                  :unsafe_workflow_io_enabled,
         | 
| 54 56 | 
             
                  :debug_mode
         | 
| 55 57 | 
             
                )
         | 
| 56 58 |  | 
| 57 59 | 
             
                # Options as returned from {options} for `**to_h` splat use in {initialize}. See {initialize} for details.
         | 
| 60 | 
            +
                #
         | 
| 61 | 
            +
                # Note, the `client` within can be replaced via client setter.
         | 
| 58 62 | 
             
                class Options; end # rubocop:disable Lint/EmptyClass
         | 
| 59 63 |  | 
| 60 64 | 
             
                # @return [String] Memoized default build ID. This default value is built as a checksum of all of the loaded Ruby
         | 
| @@ -344,6 +348,9 @@ module Temporalio | |
| 344 348 | 
             
                # @param workflow_payload_codec_thread_pool [ThreadPool, nil] Thread pool to run payload codec encode/decode within.
         | 
| 345 349 | 
             
                #   This is required if a payload codec exists and the worker is not fiber based. Codecs can potentially block
         | 
| 346 350 | 
             
                #   execution which is why they need to be run in the background.
         | 
| 351 | 
            +
                # @param unsafe_workflow_io_enabled [Boolean] If false, the default, workflow code that invokes io_wait on the fiber
         | 
| 352 | 
            +
                #   scheduler will fail. Instead of setting this to true, users are encouraged to use {Workflow::Unsafe.io_enabled}
         | 
| 353 | 
            +
                #   with a block for narrower enabling of IO.
         | 
| 347 354 | 
             
                # @param debug_mode [Boolean] If true, deadlock detection is disabled. Deadlock detection will fail workflow tasks
         | 
| 348 355 | 
             
                #   if they block the thread for too long. This defaults to true if the `TEMPORAL_DEBUG` environment variable is
         | 
| 349 356 | 
             
                #   `true` or `1`.
         | 
| @@ -375,10 +382,13 @@ module Temporalio | |
| 375 382 | 
             
                  illegal_workflow_calls: Worker.default_illegal_workflow_calls,
         | 
| 376 383 | 
             
                  workflow_failure_exception_types: [],
         | 
| 377 384 | 
             
                  workflow_payload_codec_thread_pool: nil,
         | 
| 385 | 
            +
                  unsafe_workflow_io_enabled: false,
         | 
| 378 386 | 
             
                  debug_mode: %w[true 1].include?(ENV['TEMPORAL_DEBUG'].to_s.downcase)
         | 
| 379 387 | 
             
                )
         | 
| 380 388 | 
             
                  raise ArgumentError, 'Must have at least one activity or workflow' if activities.empty? && workflows.empty?
         | 
| 381 389 |  | 
| 390 | 
            +
                  Internal::ProtoUtils.assert_non_reserved_name(task_queue)
         | 
| 391 | 
            +
             | 
| 382 392 | 
             
                  @options = Options.new(
         | 
| 383 393 | 
             
                    client:,
         | 
| 384 394 | 
             
                    task_queue:,
         | 
| @@ -407,6 +417,7 @@ module Temporalio | |
| 407 417 | 
             
                    illegal_workflow_calls:,
         | 
| 408 418 | 
             
                    workflow_failure_exception_types:,
         | 
| 409 419 | 
             
                    workflow_payload_codec_thread_pool:,
         | 
| 420 | 
            +
                    unsafe_workflow_io_enabled:,
         | 
| 410 421 | 
             
                    debug_mode:
         | 
| 411 422 | 
             
                  ).freeze
         | 
| 412 423 |  | 
| @@ -478,12 +489,16 @@ module Temporalio | |
| 478 489 | 
             
                      illegal_workflow_calls:,
         | 
| 479 490 | 
             
                      workflow_failure_exception_types:,
         | 
| 480 491 | 
             
                      workflow_payload_codec_thread_pool:,
         | 
| 492 | 
            +
                      unsafe_workflow_io_enabled:,
         | 
| 481 493 | 
             
                      debug_mode:
         | 
| 482 494 | 
             
                    )
         | 
| 483 495 | 
             
                  end
         | 
| 484 496 |  | 
| 485 497 | 
             
                  # Validate worker
         | 
| 486 498 | 
             
                  @bridge_worker.validate
         | 
| 499 | 
            +
             | 
| 500 | 
            +
                  # Mutex needed for accessing and replacing a client
         | 
| 501 | 
            +
                  @client_mutex = Mutex.new
         | 
| 487 502 | 
             
                end
         | 
| 488 503 |  | 
| 489 504 | 
             
                # @return [String] Task queue set on the worker options.
         | 
| @@ -491,6 +506,25 @@ module Temporalio | |
| 491 506 | 
             
                  @options.task_queue
         | 
| 492 507 | 
             
                end
         | 
| 493 508 |  | 
| 509 | 
            +
                # @return [Client] Client for this worker. This is the same as {Options.client} in {options}, but surrounded by a
         | 
| 510 | 
            +
                #   mutex to be safe for client replacement in {client=}.
         | 
| 511 | 
            +
                def client
         | 
| 512 | 
            +
                  @client_mutex.synchronize { @options.client }
         | 
| 513 | 
            +
                end
         | 
| 514 | 
            +
             | 
| 515 | 
            +
                # Replace the worker's client. When this is called, the client is replaced on the internal worker which means any
         | 
| 516 | 
            +
                # new calls will be made on the new client (but existing calls will still complete on the previous one). This is
         | 
| 517 | 
            +
                # commonly used for providing a new client with updated authentication credentials.
         | 
| 518 | 
            +
                #
         | 
| 519 | 
            +
                # @param new_client [Client] New client to use for new calls.
         | 
| 520 | 
            +
                def client=(new_client)
         | 
| 521 | 
            +
                  @client_mutex.synchronize do
         | 
| 522 | 
            +
                    @bridge_worker.replace_client(new_client.connection._core_client)
         | 
| 523 | 
            +
                    @options = @options.with(client: new_client)
         | 
| 524 | 
            +
                    new_client
         | 
| 525 | 
            +
                  end
         | 
| 526 | 
            +
                end
         | 
| 527 | 
            +
             | 
| 494 528 | 
             
                # Run this worker until cancellation or optional block completes. When the cancellation or block is complete, the
         | 
| 495 529 | 
             
                # worker is shut down. This will return the block result if everything successful or raise an error if not.
         | 
| 496 530 | 
             
                #
         | 
| @@ -1,5 +1,6 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            +
            require 'temporalio/internal/proto_utils'
         | 
| 3 4 | 
             
            require 'temporalio/workflow'
         | 
| 4 5 | 
             
            require 'temporalio/workflow/handler_unfinished_policy'
         | 
| 5 6 |  | 
| @@ -71,7 +72,9 @@ module Temporalio | |
| 71 72 | 
             
                    # `attr_accessor`. If a writer is needed alongside this, use `attr_writer`.
         | 
| 72 73 | 
             
                    #
         | 
| 73 74 | 
             
                    # @param attr_names [Array<Symbol>] Attributes to expose.
         | 
| 74 | 
            -
                     | 
| 75 | 
            +
                    # @param description [String, nil] Description that may appear in CLI/UI, applied to each query handler
         | 
| 76 | 
            +
                    #   implicitly created. This is currently experimental.
         | 
| 77 | 
            +
                    def workflow_query_attr_reader(*attr_names, description: nil)
         | 
| 75 78 | 
             
                      @workflow_queries ||= {}
         | 
| 76 79 | 
             
                      attr_names.each do |attr_name|
         | 
| 77 80 | 
             
                        raise 'Expected attr to be a symbol' unless attr_name.is_a?(Symbol)
         | 
| @@ -83,7 +86,7 @@ module Temporalio | |
| 83 86 | 
             
                        end
         | 
| 84 87 |  | 
| 85 88 | 
             
                        # Just run this as if done manually
         | 
| 86 | 
            -
                        workflow_query
         | 
| 89 | 
            +
                        workflow_query(description:)
         | 
| 87 90 | 
             
                        define_method(attr_name) { instance_variable_get("@#{attr_name}") }
         | 
| 88 91 | 
             
                      end
         | 
| 89 92 | 
             
                    end
         | 
| @@ -100,6 +103,8 @@ module Temporalio | |
| 100 103 | 
             
                    # values.
         | 
| 101 104 | 
             
                    #
         | 
| 102 105 | 
             
                    # @param name [String, Symbol, nil] Override the default name.
         | 
| 106 | 
            +
                    # @param description [String, nil] Description for this handler that may appear in CLI/UI. This is currently
         | 
| 107 | 
            +
                    #   experimental.
         | 
| 103 108 | 
             
                    # @param dynamic [Boolean] If true, make the signal dynamic. This means it receives all other signals without
         | 
| 104 109 | 
             
                    #   handlers. This cannot have a name override since it is nameless. The first parameter will be the name. Often
         | 
| 105 110 | 
             
                    #   it is useful to have the second parameter be `*args` and `raw_args` be true.
         | 
| @@ -109,19 +114,22 @@ module Temporalio | |
| 109 114 | 
             
                    #   when the workflow ends. The default warns, but this can be disabled.
         | 
| 110 115 | 
             
                    def workflow_signal(
         | 
| 111 116 | 
             
                      name: nil,
         | 
| 117 | 
            +
                      description: nil,
         | 
| 112 118 | 
             
                      dynamic: false,
         | 
| 113 119 | 
             
                      raw_args: false,
         | 
| 114 120 | 
             
                      unfinished_policy: HandlerUnfinishedPolicy::WARN_AND_ABANDON
         | 
| 115 121 | 
             
                    )
         | 
| 116 122 | 
             
                      raise 'Cannot provide name if dynamic is true' if name && dynamic
         | 
| 117 123 |  | 
| 118 | 
            -
                      self.pending_handler_details = { type: :signal, name:, dynamic:, raw_args:, unfinished_policy: }
         | 
| 124 | 
            +
                      self.pending_handler_details = { type: :signal, name:, description:, dynamic:, raw_args:, unfinished_policy: }
         | 
| 119 125 | 
             
                    end
         | 
| 120 126 |  | 
| 121 127 | 
             
                    # Mark the next method as a workflow query with a default name as the name of the method. Queries can not have
         | 
| 122 128 | 
             
                    # any side effects, meaning they should never mutate state or try to wait on anything.
         | 
| 123 129 | 
             
                    #
         | 
| 124 130 | 
             
                    # @param name [String, Symbol, nil] Override the default name.
         | 
| 131 | 
            +
                    # @param description [String, nil] Description for this handler that may appear in CLI/UI. This is currently
         | 
| 132 | 
            +
                    #   experimental.
         | 
| 125 133 | 
             
                    # @param dynamic [Boolean] If true, make the query dynamic. This means it receives all other queries without
         | 
| 126 134 | 
             
                    #   handlers. This cannot have a name override since it is nameless. The first parameter will be the name. Often
         | 
| 127 135 | 
             
                    #   it is useful to have the second parameter be `*args` and `raw_args` be true.
         | 
| @@ -129,18 +137,21 @@ module Temporalio | |
| 129 137 | 
             
                    #   {Converters::RawValue} which is a raw payload wrapper, convertible with {Workflow.payload_converter}.
         | 
| 130 138 | 
             
                    def workflow_query(
         | 
| 131 139 | 
             
                      name: nil,
         | 
| 140 | 
            +
                      description: nil,
         | 
| 132 141 | 
             
                      dynamic: false,
         | 
| 133 142 | 
             
                      raw_args: false
         | 
| 134 143 | 
             
                    )
         | 
| 135 144 | 
             
                      raise 'Cannot provide name if dynamic is true' if name && dynamic
         | 
| 136 145 |  | 
| 137 | 
            -
                      self.pending_handler_details = { type: :query, name:, dynamic:, raw_args: }
         | 
| 146 | 
            +
                      self.pending_handler_details = { type: :query, name:, description:, dynamic:, raw_args: }
         | 
| 138 147 | 
             
                    end
         | 
| 139 148 |  | 
| 140 149 | 
             
                    # Mark the next method as a workflow update with a default name as the name of the method. Updates can return
         | 
| 141 150 | 
             
                    # values. Separate validation methods can be provided via {workflow_update_validator}.
         | 
| 142 151 | 
             
                    #
         | 
| 143 152 | 
             
                    # @param name [String, Symbol, nil] Override the default name.
         | 
| 153 | 
            +
                    # @param description [String, nil] Description for this handler that may appear in CLI/UI. This is currently
         | 
| 154 | 
            +
                    #   experimental.
         | 
| 144 155 | 
             
                    # @param dynamic [Boolean] If true, make the update dynamic. This means it receives all other updates without
         | 
| 145 156 | 
             
                    #   handlers. This cannot have a name override since it is nameless. The first parameter will be the name. Often
         | 
| 146 157 | 
             
                    #   it is useful to have the second parameter be `*args` and `raw_args` be true.
         | 
| @@ -150,13 +161,14 @@ module Temporalio | |
| 150 161 | 
             
                    #   when the workflow ends. The default warns, but this can be disabled.
         | 
| 151 162 | 
             
                    def workflow_update(
         | 
| 152 163 | 
             
                      name: nil,
         | 
| 164 | 
            +
                      description: nil,
         | 
| 153 165 | 
             
                      dynamic: false,
         | 
| 154 166 | 
             
                      raw_args: false,
         | 
| 155 167 | 
             
                      unfinished_policy: HandlerUnfinishedPolicy::WARN_AND_ABANDON
         | 
| 156 168 | 
             
                    )
         | 
| 157 169 | 
             
                      raise 'Cannot provide name if dynamic is true' if name && dynamic
         | 
| 158 170 |  | 
| 159 | 
            -
                      self.pending_handler_details = { type: :update, name:, dynamic:, raw_args:, unfinished_policy: }
         | 
| 171 | 
            +
                      self.pending_handler_details = { type: :update, name:, description:, dynamic:, raw_args:, unfinished_policy: }
         | 
| 160 172 | 
             
                    end
         | 
| 161 173 |  | 
| 162 174 | 
             
                    # Mark the next method as a workflow update validator to the given update method. The validator is expected to
         | 
| @@ -225,6 +237,7 @@ module Temporalio | |
| 225 237 | 
             
                        [Signal.new(
         | 
| 226 238 | 
             
                          name: handler[:dynamic] ? nil : (handler[:name] || method_name).to_s,
         | 
| 227 239 | 
             
                          to_invoke: method_name,
         | 
| 240 | 
            +
                          description: handler[:description],
         | 
| 228 241 | 
             
                          raw_args: handler[:raw_args],
         | 
| 229 242 | 
             
                          unfinished_policy: handler[:unfinished_policy]
         | 
| 230 243 | 
             
                        ), @workflow_signals, [@workflow_queries, @workflow_updates]]
         | 
| @@ -232,12 +245,14 @@ module Temporalio | |
| 232 245 | 
             
                        [Query.new(
         | 
| 233 246 | 
             
                          name: handler[:dynamic] ? nil : (handler[:name] || method_name).to_s,
         | 
| 234 247 | 
             
                          to_invoke: method_name,
         | 
| 248 | 
            +
                          description: handler[:description],
         | 
| 235 249 | 
             
                          raw_args: handler[:raw_args]
         | 
| 236 250 | 
             
                        ), @workflow_queries, [@workflow_signals, @workflow_updates]]
         | 
| 237 251 | 
             
                      when :update
         | 
| 238 252 | 
             
                        [Update.new(
         | 
| 239 253 | 
             
                          name: handler[:dynamic] ? nil : (handler[:name] || method_name).to_s,
         | 
| 240 254 | 
             
                          to_invoke: method_name,
         | 
| 255 | 
            +
                          description: handler[:description],
         | 
| 241 256 | 
             
                          raw_args: handler[:raw_args],
         | 
| 242 257 | 
             
                          unfinished_policy: handler[:unfinished_policy]
         | 
| 243 258 | 
             
                        ), @workflow_updates, [@workflow_signals, @workflow_queries]]
         | 
| @@ -430,6 +445,7 @@ module Temporalio | |
| 430 445 | 
             
                      @signals = signals.dup.freeze
         | 
| 431 446 | 
             
                      @queries = queries.dup.freeze
         | 
| 432 447 | 
             
                      @updates = updates.dup.freeze
         | 
| 448 | 
            +
                      Internal::ProtoUtils.assert_non_reserved_name(name)
         | 
| 433 449 | 
             
                    end
         | 
| 434 450 |  | 
| 435 451 | 
             
                    # @return [String] Workflow name.
         | 
| @@ -441,7 +457,7 @@ module Temporalio | |
| 441 457 | 
             
                  # A signal definition. This is usually built as a result of a {Definition.workflow_signal} method, but can be
         | 
| 442 458 | 
             
                  # manually created to set at runtime on {Workflow.signal_handlers}.
         | 
| 443 459 | 
             
                  class Signal
         | 
| 444 | 
            -
                    attr_reader :name, :to_invoke, :raw_args, :unfinished_policy
         | 
| 460 | 
            +
                    attr_reader :name, :to_invoke, :description, :raw_args, :unfinished_policy
         | 
| 445 461 |  | 
| 446 462 | 
             
                    # @!visibility private
         | 
| 447 463 | 
             
                    def self._name_from_parameter(signal)
         | 
| @@ -460,26 +476,31 @@ module Temporalio | |
| 460 476 | 
             
                    #
         | 
| 461 477 | 
             
                    # @param name [String, nil] Name or nil if dynamic.
         | 
| 462 478 | 
             
                    # @param to_invoke [Symbol, Proc] Method name or proc to invoke.
         | 
| 479 | 
            +
                    # @param description [String, nil] Description for this handler that may appear in CLI/UI. This is currently
         | 
| 480 | 
            +
                    #   experimental.
         | 
| 463 481 | 
             
                    # @param raw_args [Boolean] Whether the parameters should be raw values.
         | 
| 464 482 | 
             
                    # @param unfinished_policy [HandlerUnfinishedPolicy] How the workflow reacts when this handler is still running
         | 
| 465 483 | 
             
                    #   on workflow completion.
         | 
| 466 484 | 
             
                    def initialize(
         | 
| 467 485 | 
             
                      name:,
         | 
| 468 486 | 
             
                      to_invoke:,
         | 
| 487 | 
            +
                      description: nil,
         | 
| 469 488 | 
             
                      raw_args: false,
         | 
| 470 489 | 
             
                      unfinished_policy: HandlerUnfinishedPolicy::WARN_AND_ABANDON
         | 
| 471 490 | 
             
                    )
         | 
| 472 491 | 
             
                      @name = name
         | 
| 473 492 | 
             
                      @to_invoke = to_invoke
         | 
| 493 | 
            +
                      @description = description
         | 
| 474 494 | 
             
                      @raw_args = raw_args
         | 
| 475 495 | 
             
                      @unfinished_policy = unfinished_policy
         | 
| 496 | 
            +
                      Internal::ProtoUtils.assert_non_reserved_name(name)
         | 
| 476 497 | 
             
                    end
         | 
| 477 498 | 
             
                  end
         | 
| 478 499 |  | 
| 479 500 | 
             
                  # A query definition. This is usually built as a result of a {Definition.workflow_query} method, but can be
         | 
| 480 501 | 
             
                  # manually created to set at runtime on {Workflow.query_handlers}.
         | 
| 481 502 | 
             
                  class Query
         | 
| 482 | 
            -
                    attr_reader :name, :to_invoke, :raw_args
         | 
| 503 | 
            +
                    attr_reader :name, :to_invoke, :description, :raw_args
         | 
| 483 504 |  | 
| 484 505 | 
             
                    # @!visibility private
         | 
| 485 506 | 
             
                    def self._name_from_parameter(query)
         | 
| @@ -498,22 +519,27 @@ module Temporalio | |
| 498 519 | 
             
                    #
         | 
| 499 520 | 
             
                    # @param name [String, nil] Name or nil if dynamic.
         | 
| 500 521 | 
             
                    # @param to_invoke [Symbol, Proc] Method name or proc to invoke.
         | 
| 522 | 
            +
                    # @param description [String, nil] Description for this handler that may appear in CLI/UI. This is currently
         | 
| 523 | 
            +
                    #   experimental.
         | 
| 501 524 | 
             
                    # @param raw_args [Boolean] Whether the parameters should be raw values.
         | 
| 502 525 | 
             
                    def initialize(
         | 
| 503 526 | 
             
                      name:,
         | 
| 504 527 | 
             
                      to_invoke:,
         | 
| 528 | 
            +
                      description: nil,
         | 
| 505 529 | 
             
                      raw_args: false
         | 
| 506 530 | 
             
                    )
         | 
| 507 531 | 
             
                      @name = name
         | 
| 508 532 | 
             
                      @to_invoke = to_invoke
         | 
| 533 | 
            +
                      @description = description
         | 
| 509 534 | 
             
                      @raw_args = raw_args
         | 
| 535 | 
            +
                      Internal::ProtoUtils.assert_non_reserved_name(name)
         | 
| 510 536 | 
             
                    end
         | 
| 511 537 | 
             
                  end
         | 
| 512 538 |  | 
| 513 539 | 
             
                  # An update definition. This is usually built as a result of a {Definition.workflow_update} method, but can be
         | 
| 514 540 | 
             
                  # manually created to set at runtime on {Workflow.update_handlers}.
         | 
| 515 541 | 
             
                  class Update
         | 
| 516 | 
            -
                    attr_reader :name, :to_invoke, :raw_args, :unfinished_policy, :validator_to_invoke
         | 
| 542 | 
            +
                    attr_reader :name, :to_invoke, :description, :raw_args, :unfinished_policy, :validator_to_invoke
         | 
| 517 543 |  | 
| 518 544 | 
             
                    # @!visibility private
         | 
| 519 545 | 
             
                    def self._name_from_parameter(update)
         | 
| @@ -532,6 +558,8 @@ module Temporalio | |
| 532 558 | 
             
                    #
         | 
| 533 559 | 
             
                    # @param name [String, nil] Name or nil if dynamic.
         | 
| 534 560 | 
             
                    # @param to_invoke [Symbol, Proc] Method name or proc to invoke.
         | 
| 561 | 
            +
                    # @param description [String, nil] Description for this handler that may appear in CLI/UI. This is currently
         | 
| 562 | 
            +
                    #   experimental.
         | 
| 535 563 | 
             
                    # @param raw_args [Boolean] Whether the parameters should be raw values.
         | 
| 536 564 | 
             
                    # @param unfinished_policy [HandlerUnfinishedPolicy] How the workflow reacts when this handler is still running
         | 
| 537 565 | 
             
                    #   on workflow completion.
         | 
| @@ -539,15 +567,18 @@ module Temporalio | |
| 539 567 | 
             
                    def initialize(
         | 
| 540 568 | 
             
                      name:,
         | 
| 541 569 | 
             
                      to_invoke:,
         | 
| 570 | 
            +
                      description: nil,
         | 
| 542 571 | 
             
                      raw_args: false,
         | 
| 543 572 | 
             
                      unfinished_policy: HandlerUnfinishedPolicy::WARN_AND_ABANDON,
         | 
| 544 573 | 
             
                      validator_to_invoke: nil
         | 
| 545 574 | 
             
                    )
         | 
| 546 575 | 
             
                      @name = name
         | 
| 547 576 | 
             
                      @to_invoke = to_invoke
         | 
| 577 | 
            +
                      @description = description
         | 
| 548 578 | 
             
                      @raw_args = raw_args
         | 
| 549 579 | 
             
                      @unfinished_policy = unfinished_policy
         | 
| 550 580 | 
             
                      @validator_to_invoke = validator_to_invoke
         | 
| 581 | 
            +
                      Internal::ProtoUtils.assert_non_reserved_name(name)
         | 
| 551 582 | 
             
                    end
         | 
| 552 583 |  | 
| 553 584 | 
             
                    # @!visibility private
         | 
| @@ -555,6 +586,7 @@ module Temporalio | |
| 555 586 | 
             
                      Update.new(
         | 
| 556 587 | 
             
                        name:,
         | 
| 557 588 | 
             
                        to_invoke:,
         | 
| 589 | 
            +
                        description:,
         | 
| 558 590 | 
             
                        raw_args:,
         | 
| 559 591 | 
             
                        unfinished_policy:,
         | 
| 560 592 | 
             
                        validator_to_invoke:
         | 
| @@ -8,7 +8,7 @@ module Temporalio | |
| 8 8 | 
             
                # workflows.
         | 
| 9 9 | 
             
                class Future
         | 
| 10 10 | 
             
                  # Return a future that completes when any of the given futures complete. The returned future will return the first
         | 
| 11 | 
            -
                  # completed  | 
| 11 | 
            +
                  # completed future's value or raise the first completed future's exception. To not raise the exception, see
         | 
| 12 12 | 
             
                  # {try_any_of}.
         | 
| 13 13 | 
             
                  #
         | 
| 14 14 | 
             
                  # @param futures [Array<Future<Object>>] Futures to wait for the first to complete.
         | 
| @@ -16,7 +16,7 @@ module Temporalio | |
| 16 16 | 
             
                  def self.any_of(*futures)
         | 
| 17 17 | 
             
                    Future.new do
         | 
| 18 18 | 
             
                      Workflow.wait_condition(cancellation: nil) { futures.any?(&:done?) }
         | 
| 19 | 
            -
                      # We know a future is always returned from find, the  | 
| 19 | 
            +
                      # We know a future is always returned from find, the || just helps type checker
         | 
| 20 20 | 
             
                      (futures.find(&:done?) || raise).wait
         | 
| 21 21 | 
             
                    end
         | 
| 22 22 | 
             
                  end
         | 
| @@ -7,11 +7,13 @@ module Temporalio | |
| 7 7 | 
             
                  :continued_run_id,
         | 
| 8 8 | 
             
                  :cron_schedule,
         | 
| 9 9 | 
             
                  :execution_timeout,
         | 
| 10 | 
            +
                  :headers,
         | 
| 10 11 | 
             
                  :last_failure,
         | 
| 11 12 | 
             
                  :last_result,
         | 
| 12 13 | 
             
                  :namespace,
         | 
| 13 14 | 
             
                  :parent,
         | 
| 14 15 | 
             
                  :retry_policy,
         | 
| 16 | 
            +
                  :root,
         | 
| 15 17 | 
             
                  :run_id,
         | 
| 16 18 | 
             
                  :run_timeout,
         | 
| 17 19 | 
             
                  :start_time,
         | 
| @@ -32,6 +34,8 @@ module Temporalio | |
| 32 34 | 
             
                #   @return [String, nil] Cron schedule if applicable.
         | 
| 33 35 | 
             
                # @!attribute execution_timeout
         | 
| 34 36 | 
             
                #   @return [Float, nil] Execution timeout for the workflow.
         | 
| 37 | 
            +
                # @!attribute headers
         | 
| 38 | 
            +
                #   @return [Hash<String, Api::Common::V1::Payload>] Headers.
         | 
| 35 39 | 
             
                # @!attribute last_failure
         | 
| 36 40 | 
             
                #   @return [Exception, nil] Failure if this workflow run is a continuation of a failure.
         | 
| 37 41 | 
             
                # @!attribute last_result
         | 
| @@ -42,6 +46,9 @@ module Temporalio | |
| 42 46 | 
             
                #   @return [ParentInfo, nil] Parent information for the workflow if this is a child.
         | 
| 43 47 | 
             
                # @!attribute retry_policy
         | 
| 44 48 | 
             
                #   @return [RetryPolicy, nil] Retry policy for the workflow.
         | 
| 49 | 
            +
                # @!attribute root
         | 
| 50 | 
            +
                #   @return [RootInfo, nil] Root information for the workflow. This is nil in pre-1.27.0 server versions or if there
         | 
| 51 | 
            +
                #     is no root (i.e. the root is itself).
         | 
| 45 52 | 
             
                # @!attribute run_id
         | 
| 46 53 | 
             
                #   @return [String] Run ID for the workflow.
         | 
| 47 54 | 
             
                # @!attribute run_timeout
         | 
| @@ -77,6 +84,21 @@ module Temporalio | |
| 77 84 | 
             
                    :workflow_id,
         | 
| 78 85 | 
             
                    keyword_init: true
         | 
| 79 86 | 
             
                  )
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                  # Information about a root of a workflow.
         | 
| 89 | 
            +
                  #
         | 
| 90 | 
            +
                  # @!attribute run_id
         | 
| 91 | 
            +
                  #   @return [String] Run ID for the root.
         | 
| 92 | 
            +
                  # @!attribute workflow_id
         | 
| 93 | 
            +
                  #   @return [String] Workflow ID for the root.
         | 
| 94 | 
            +
                  #
         | 
| 95 | 
            +
                  # @note WARNING: This class may have required parameters added to its constructor. Users should not instantiate
         | 
| 96 | 
            +
                  #   this class or it may break in incompatible ways.
         | 
| 97 | 
            +
                  RootInfo = Struct.new(
         | 
| 98 | 
            +
                    :run_id,
         | 
| 99 | 
            +
                    :workflow_id,
         | 
| 100 | 
            +
                    keyword_init: true
         | 
| 101 | 
            +
                  )
         | 
| 80 102 | 
             
                end
         | 
| 81 103 | 
             
              end
         | 
| 82 104 | 
             
            end
         | 
    
        data/lib/temporalio/workflow.rb
    CHANGED
    
    | @@ -38,6 +38,24 @@ module Temporalio | |
| 38 38 | 
             
                  _current.continue_as_new_suggested
         | 
| 39 39 | 
             
                end
         | 
| 40 40 |  | 
| 41 | 
            +
                # Get current details for this workflow that may appear in UI/CLI. Unlike static details set at start, this value
         | 
| 42 | 
            +
                # can be updated throughout the life of the workflow. This can be in Temporal markdown format and can span multiple
         | 
| 43 | 
            +
                # lines. This is currently experimental.
         | 
| 44 | 
            +
                #
         | 
| 45 | 
            +
                # @return [String] Current details. Default is empty string.
         | 
| 46 | 
            +
                def self.current_details
         | 
| 47 | 
            +
                  _current.current_details
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                # Set current details for this workflow that may appear in UI/CLI. Unlike static details set at start, this value
         | 
| 51 | 
            +
                # can be updated throughout the life of the workflow. This can be in Temporal markdown format and can span multiple
         | 
| 52 | 
            +
                # lines. This is currently experimental.
         | 
| 53 | 
            +
                #
         | 
| 54 | 
            +
                # @param details [String] Current details. Can use empty string to unset.
         | 
| 55 | 
            +
                def self.current_details=(details)
         | 
| 56 | 
            +
                  _current.current_details = details
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
             | 
| 41 59 | 
             
                # @return [Integer] Current number of events in history. This value is the current history event count up until the
         | 
| 42 60 | 
             
                #   current task. Note, this value may not be up to date when accessed in a query.
         | 
| 43 61 | 
             
                def self.current_history_length
         | 
| @@ -77,6 +95,8 @@ module Temporalio | |
| 77 95 | 
             
                # @param activity [Class<Activity::Definition>, Symbol, String] Activity definition class or activity name.
         | 
| 78 96 | 
             
                # @param args [Array<Object>] Arguments to the activity.
         | 
| 79 97 | 
             
                # @param task_queue [String] Task queue to run the activity on. Defaults to the current workflow's task queue.
         | 
| 98 | 
            +
                # @param summary [String, nil] Single-line summary for this activity that may appear in CLI/UI. This can be in
         | 
| 99 | 
            +
                #   single-line Temporal markdown format. This is currently experimental.
         | 
| 80 100 | 
             
                # @param schedule_to_close_timeout [Float, nil] Max amount of time the activity can take from first being scheduled
         | 
| 81 101 | 
             
                #   to being completed before it times out. This is inclusive of all retries.
         | 
| 82 102 | 
             
                # @param schedule_to_start_timeout [Float, nil] Max amount of time the activity can take to be started from first
         | 
| @@ -107,6 +127,7 @@ module Temporalio | |
| 107 127 | 
             
                  activity,
         | 
| 108 128 | 
             
                  *args,
         | 
| 109 129 | 
             
                  task_queue: info.task_queue,
         | 
| 130 | 
            +
                  summary: nil,
         | 
| 110 131 | 
             
                  schedule_to_close_timeout: nil,
         | 
| 111 132 | 
             
                  schedule_to_start_timeout: nil,
         | 
| 112 133 | 
             
                  start_to_close_timeout: nil,
         | 
| @@ -119,7 +140,7 @@ module Temporalio | |
| 119 140 | 
             
                )
         | 
| 120 141 | 
             
                  _current.execute_activity(
         | 
| 121 142 | 
             
                    activity, *args,
         | 
| 122 | 
            -
                    task_queue:, schedule_to_close_timeout:, schedule_to_start_timeout:, start_to_close_timeout:,
         | 
| 143 | 
            +
                    task_queue:, summary:, schedule_to_close_timeout:, schedule_to_start_timeout:, start_to_close_timeout:,
         | 
| 123 144 | 
             
                    heartbeat_timeout:, retry_policy:, cancellation:, cancellation_type:, activity_id:, disable_eager_execution:
         | 
| 124 145 | 
             
                  )
         | 
| 125 146 | 
             
                end
         | 
| @@ -130,6 +151,8 @@ module Temporalio | |
| 130 151 | 
             
                  *args,
         | 
| 131 152 | 
             
                  id: random.uuid,
         | 
| 132 153 | 
             
                  task_queue: info.task_queue,
         | 
| 154 | 
            +
                  static_summary: nil,
         | 
| 155 | 
            +
                  static_details: nil,
         | 
| 133 156 | 
             
                  cancellation: Workflow.cancellation,
         | 
| 134 157 | 
             
                  cancellation_type: ChildWorkflowCancellationType::WAIT_CANCELLATION_COMPLETED,
         | 
| 135 158 | 
             
                  parent_close_policy: ParentClosePolicy::TERMINATE,
         | 
| @@ -144,8 +167,9 @@ module Temporalio | |
| 144 167 | 
             
                )
         | 
| 145 168 | 
             
                  start_child_workflow(
         | 
| 146 169 | 
             
                    workflow, *args,
         | 
| 147 | 
            -
                    id:, task_queue:,  | 
| 148 | 
            -
                     | 
| 170 | 
            +
                    id:, task_queue:, static_summary:, static_details:, cancellation:, cancellation_type:,
         | 
| 171 | 
            +
                    parent_close_policy:, execution_timeout:, run_timeout:, task_timeout:, id_reuse_policy:,
         | 
| 172 | 
            +
                    retry_policy:, cron_schedule:, memo:, search_attributes:
         | 
| 149 173 | 
             
                  ).result
         | 
| 150 174 | 
             
                end
         | 
| 151 175 |  | 
| @@ -304,7 +328,7 @@ module Temporalio | |
| 304 328 | 
             
                #   value cannot be negative. Since Temporal timers are server-side, timer resolution may not end up as precise as
         | 
| 305 329 | 
             
                #   system timers.
         | 
| 306 330 | 
             
                # @param summary [String, nil] A simple string identifying this timer that may be visible in UI/CLI. While it can be
         | 
| 307 | 
            -
                #   normal text, it is best to treat as a timer ID.
         | 
| 331 | 
            +
                #   normal text, it is best to treat as a timer ID. This is currently experimental.
         | 
| 308 332 | 
             
                # @param cancellation [Cancellation] Cancellation for this timer.
         | 
| 309 333 | 
             
                # @raise [Error::CanceledError] Sleep canceled.
         | 
| 310 334 | 
             
                def self.sleep(duration, summary: nil, cancellation: Workflow.cancellation)
         | 
| @@ -317,6 +341,12 @@ module Temporalio | |
| 317 341 | 
             
                # @param args [Array<Object>] Arguments to the workflow.
         | 
| 318 342 | 
             
                # @param id [String] Unique identifier for the workflow execution. Defaults to a new UUID from {random}.
         | 
| 319 343 | 
             
                # @param task_queue [String] Task queue to run the workflow on. Defaults to the current workflow's task queue.
         | 
| 344 | 
            +
                # @param static_summary [String, nil] Fixed single-line summary for this workflow execution that may appear in
         | 
| 345 | 
            +
                #   CLI/UI. This can be in single-line Temporal markdown format. This is currently experimental.
         | 
| 346 | 
            +
                # @param static_details [String, nil] Fixed details for this workflow execution that may appear in CLI/UI. This can
         | 
| 347 | 
            +
                #   be in Temporal markdown format and can be multiple lines. This is a fixed value on the workflow that cannot be
         | 
| 348 | 
            +
                #   updated. For details that can be updated, use {Workflow.current_details=} within the workflow. This is currently
         | 
| 349 | 
            +
                #   experimental.
         | 
| 320 350 | 
             
                # @param cancellation [Cancellation] Cancellation to apply to the child workflow. How cancellation is treated is
         | 
| 321 351 | 
             
                #   based on `cancellation_type`. This defaults to the workflow's cancellation.
         | 
| 322 352 | 
             
                # @param cancellation_type [ChildWorkflowCancellationType] How the child workflow will react to cancellation.
         | 
| @@ -339,6 +369,8 @@ module Temporalio | |
| 339 369 | 
             
                  *args,
         | 
| 340 370 | 
             
                  id: random.uuid,
         | 
| 341 371 | 
             
                  task_queue: info.task_queue,
         | 
| 372 | 
            +
                  static_summary: nil,
         | 
| 373 | 
            +
                  static_details: nil,
         | 
| 342 374 | 
             
                  cancellation: Workflow.cancellation,
         | 
| 343 375 | 
             
                  cancellation_type: ChildWorkflowCancellationType::WAIT_CANCELLATION_COMPLETED,
         | 
| 344 376 | 
             
                  parent_close_policy: ParentClosePolicy::TERMINATE,
         | 
| @@ -353,11 +385,18 @@ module Temporalio | |
| 353 385 | 
             
                )
         | 
| 354 386 | 
             
                  _current.start_child_workflow(
         | 
| 355 387 | 
             
                    workflow, *args,
         | 
| 356 | 
            -
                    id:, task_queue:,  | 
| 357 | 
            -
                     | 
| 388 | 
            +
                    id:, task_queue:, static_summary:, static_details:, cancellation:, cancellation_type:,
         | 
| 389 | 
            +
                    parent_close_policy:, execution_timeout:, run_timeout:, task_timeout:, id_reuse_policy:,
         | 
| 390 | 
            +
                    retry_policy:, cron_schedule:, memo:, search_attributes:
         | 
| 358 391 | 
             
                  )
         | 
| 359 392 | 
             
                end
         | 
| 360 393 |  | 
| 394 | 
            +
                # @return [Hash<Object, Object>] General in-workflow storage. Most users will store state on the workflow class
         | 
| 395 | 
            +
                #   instance instead, this is only for utilities without access to the class instance.
         | 
| 396 | 
            +
                def self.storage
         | 
| 397 | 
            +
                  _current.storage
         | 
| 398 | 
            +
                end
         | 
| 399 | 
            +
             | 
| 361 400 | 
             
                # Run the block until the timeout is reached. This is backed by {sleep}. This does not accept cancellation because
         | 
| 362 401 | 
             
                # it is expected the block within will properly handle/bubble cancellation.
         | 
| 363 402 | 
             
                #
         | 
| @@ -367,8 +406,8 @@ module Temporalio | |
| 367 406 | 
             
                #   exception.
         | 
| 368 407 | 
             
                # @param message [String] Message to use for timeout exception. Defaults to "execution expired" like
         | 
| 369 408 | 
             
                #   {::Timeout.timeout}.
         | 
| 370 | 
            -
                # @param summary [String] Timer  | 
| 371 | 
            -
                #   method for details.
         | 
| 409 | 
            +
                # @param summary [String] Timer summary for the timer created by this timeout. This is backed by {sleep} so see that
         | 
| 410 | 
            +
                #   method for details. This is currently experimental.
         | 
| 372 411 | 
             
                #
         | 
| 373 412 | 
             
                # @yield Block to run with a timeout.
         | 
| 374 413 | 
             
                # @return [Object] The result of the block.
         | 
| @@ -464,6 +503,13 @@ module Temporalio | |
| 464 503 | 
             
                  def self.illegal_call_tracing_disabled(&)
         | 
| 465 504 | 
             
                    Workflow._current.illegal_call_tracing_disabled(&)
         | 
| 466 505 | 
             
                  end
         | 
| 506 | 
            +
             | 
| 507 | 
            +
                  # Run a block of code with IO enabled. Specifically this allows the `io_wait` call of the fiber scheduler to work.
         | 
| 508 | 
            +
                  # Users should be cautious about using this as it can often signify unsafe code. Note, this is often only
         | 
| 509 | 
            +
                  # applicable to network code as file IO and most process-based IO does not go through scheduler `io_wait`.
         | 
| 510 | 
            +
                  def self.io_enabled(&)
         | 
| 511 | 
            +
                    Workflow._current.io_enabled(&)
         | 
| 512 | 
            +
                  end
         | 
| 467 513 | 
             
                end
         | 
| 468 514 |  | 
| 469 515 | 
             
                # Error that is raised by a workflow out of the primary workflow method to issue a continue-as-new.
         | 
    
        data/temporalio.gemspec
    CHANGED
    
    | @@ -24,5 +24,6 @@ Gem::Specification.new do |spec| | |
| 24 24 | 
             
              spec.extensions = ['ext/Cargo.toml']
         | 
| 25 25 | 
             
              spec.metadata['rubygems_mfa_required'] = 'true'
         | 
| 26 26 |  | 
| 27 | 
            -
              spec.add_dependency 'google-protobuf', '>= 3. | 
| 27 | 
            +
              spec.add_dependency 'google-protobuf', '>= 3.25.0'
         | 
| 28 | 
            +
              spec.add_dependency 'logger'
         | 
| 28 29 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: temporalio
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.4.0
         | 
| 5 5 | 
             
            platform: x86_64-linux-musl
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Temporal Technologies Inc
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2025- | 
| 11 | 
            +
            date: 2025-04-18 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: google-protobuf
         | 
| @@ -16,14 +16,28 @@ dependencies: | |
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - ">="
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: 3. | 
| 19 | 
            +
                    version: 3.25.0
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 24 | 
             
                - - ">="
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: 3. | 
| 26 | 
            +
                    version: 3.25.0
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: logger
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - ">="
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '0'
         | 
| 34 | 
            +
              type: :runtime
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - ">="
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: '0'
         | 
| 27 41 | 
             
            description: 
         | 
| 28 42 | 
             
            email:
         | 
| 29 43 | 
             
            - sdk@temporal.io
         | 
| @@ -58,12 +72,15 @@ files: | |
| 58 72 | 
             
            - lib/temporalio/api/command/v1/message.rb
         | 
| 59 73 | 
             
            - lib/temporalio/api/common/v1/grpc_status.rb
         | 
| 60 74 | 
             
            - lib/temporalio/api/common/v1/message.rb
         | 
| 75 | 
            +
            - lib/temporalio/api/deployment/v1/message.rb
         | 
| 61 76 | 
             
            - lib/temporalio/api/enums/v1/batch_operation.rb
         | 
| 62 77 | 
             
            - lib/temporalio/api/enums/v1/command_type.rb
         | 
| 63 78 | 
             
            - lib/temporalio/api/enums/v1/common.rb
         | 
| 79 | 
            +
            - lib/temporalio/api/enums/v1/deployment.rb
         | 
| 64 80 | 
             
            - lib/temporalio/api/enums/v1/event_type.rb
         | 
| 65 81 | 
             
            - lib/temporalio/api/enums/v1/failed_cause.rb
         | 
| 66 82 | 
             
            - lib/temporalio/api/enums/v1/namespace.rb
         | 
| 83 | 
            +
            - lib/temporalio/api/enums/v1/nexus.rb
         | 
| 67 84 | 
             
            - lib/temporalio/api/enums/v1/query.rb
         | 
| 68 85 | 
             
            - lib/temporalio/api/enums/v1/reset.rb
         | 
| 69 86 | 
             
            - lib/temporalio/api/enums/v1/schedule.rb
         | 
| @@ -111,6 +128,7 @@ files: | |
| 111 128 | 
             
            - lib/temporalio/client/interceptor.rb
         | 
| 112 129 | 
             
            - lib/temporalio/client/schedule.rb
         | 
| 113 130 | 
             
            - lib/temporalio/client/schedule_handle.rb
         | 
| 131 | 
            +
            - lib/temporalio/client/with_start_workflow_operation.rb
         | 
| 114 132 | 
             
            - lib/temporalio/client/workflow_execution.rb
         | 
| 115 133 | 
             
            - lib/temporalio/client/workflow_execution_count.rb
         | 
| 116 134 | 
             
            - lib/temporalio/client/workflow_execution_status.rb
         | 
| @@ -119,6 +137,7 @@ files: | |
| 119 137 | 
             
            - lib/temporalio/client/workflow_update_handle.rb
         | 
| 120 138 | 
             
            - lib/temporalio/client/workflow_update_wait_stage.rb
         | 
| 121 139 | 
             
            - lib/temporalio/common_enums.rb
         | 
| 140 | 
            +
            - lib/temporalio/contrib/open_telemetry.rb
         | 
| 122 141 | 
             
            - lib/temporalio/converters.rb
         | 
| 123 142 | 
             
            - lib/temporalio/converters/data_converter.rb
         | 
| 124 143 | 
             
            - lib/temporalio/converters/failure_converter.rb
         | 
| @@ -177,6 +196,7 @@ files: | |
| 177 196 | 
             
            - lib/temporalio/metric.rb
         | 
| 178 197 | 
             
            - lib/temporalio/retry_policy.rb
         | 
| 179 198 | 
             
            - lib/temporalio/runtime.rb
         | 
| 199 | 
            +
            - lib/temporalio/runtime/metric_buffer.rb
         | 
| 180 200 | 
             
            - lib/temporalio/scoped_logger.rb
         | 
| 181 201 | 
             
            - lib/temporalio/search_attributes.rb
         | 
| 182 202 | 
             
            - lib/temporalio/testing.rb
         |