clara-temporalio 0.4.3

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 (192) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +2 -0
  3. data/Cargo.lock +4429 -0
  4. data/Cargo.toml +31 -0
  5. data/Gemfile +27 -0
  6. data/LICENSE +21 -0
  7. data/README.md +1311 -0
  8. data/Rakefile +101 -0
  9. data/ext/Cargo.toml +27 -0
  10. data/lib/temporalio/activity/cancellation_details.rb +58 -0
  11. data/lib/temporalio/activity/complete_async_error.rb +11 -0
  12. data/lib/temporalio/activity/context.rb +131 -0
  13. data/lib/temporalio/activity/definition.rb +197 -0
  14. data/lib/temporalio/activity/info.rb +70 -0
  15. data/lib/temporalio/activity.rb +14 -0
  16. data/lib/temporalio/api/activity/v1/message.rb +25 -0
  17. data/lib/temporalio/api/batch/v1/message.rb +38 -0
  18. data/lib/temporalio/api/cloud/account/v1/message.rb +28 -0
  19. data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +135 -0
  20. data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +25 -0
  21. data/lib/temporalio/api/cloud/cloudservice.rb +3 -0
  22. data/lib/temporalio/api/cloud/identity/v1/message.rb +46 -0
  23. data/lib/temporalio/api/cloud/namespace/v1/message.rb +46 -0
  24. data/lib/temporalio/api/cloud/nexus/v1/message.rb +32 -0
  25. data/lib/temporalio/api/cloud/operation/v1/message.rb +28 -0
  26. data/lib/temporalio/api/cloud/region/v1/message.rb +24 -0
  27. data/lib/temporalio/api/cloud/resource/v1/message.rb +23 -0
  28. data/lib/temporalio/api/cloud/sink/v1/message.rb +24 -0
  29. data/lib/temporalio/api/cloud/usage/v1/message.rb +31 -0
  30. data/lib/temporalio/api/command/v1/message.rb +46 -0
  31. data/lib/temporalio/api/common/v1/grpc_status.rb +23 -0
  32. data/lib/temporalio/api/common/v1/message.rb +49 -0
  33. data/lib/temporalio/api/deployment/v1/message.rb +39 -0
  34. data/lib/temporalio/api/enums/v1/batch_operation.rb +22 -0
  35. data/lib/temporalio/api/enums/v1/command_type.rb +21 -0
  36. data/lib/temporalio/api/enums/v1/common.rb +28 -0
  37. data/lib/temporalio/api/enums/v1/deployment.rb +23 -0
  38. data/lib/temporalio/api/enums/v1/event_type.rb +21 -0
  39. data/lib/temporalio/api/enums/v1/failed_cause.rb +26 -0
  40. data/lib/temporalio/api/enums/v1/namespace.rb +23 -0
  41. data/lib/temporalio/api/enums/v1/nexus.rb +21 -0
  42. data/lib/temporalio/api/enums/v1/query.rb +22 -0
  43. data/lib/temporalio/api/enums/v1/reset.rb +23 -0
  44. data/lib/temporalio/api/enums/v1/schedule.rb +21 -0
  45. data/lib/temporalio/api/enums/v1/task_queue.rb +25 -0
  46. data/lib/temporalio/api/enums/v1/update.rb +22 -0
  47. data/lib/temporalio/api/enums/v1/workflow.rb +31 -0
  48. data/lib/temporalio/api/errordetails/v1/message.rb +44 -0
  49. data/lib/temporalio/api/export/v1/message.rb +24 -0
  50. data/lib/temporalio/api/failure/v1/message.rb +38 -0
  51. data/lib/temporalio/api/filter/v1/message.rb +27 -0
  52. data/lib/temporalio/api/history/v1/message.rb +94 -0
  53. data/lib/temporalio/api/namespace/v1/message.rb +31 -0
  54. data/lib/temporalio/api/nexus/v1/message.rb +41 -0
  55. data/lib/temporalio/api/operatorservice/v1/request_response.rb +49 -0
  56. data/lib/temporalio/api/operatorservice/v1/service.rb +23 -0
  57. data/lib/temporalio/api/operatorservice.rb +3 -0
  58. data/lib/temporalio/api/payload_visitor.rb +1668 -0
  59. data/lib/temporalio/api/protocol/v1/message.rb +23 -0
  60. data/lib/temporalio/api/query/v1/message.rb +28 -0
  61. data/lib/temporalio/api/replication/v1/message.rb +26 -0
  62. data/lib/temporalio/api/rules/v1/message.rb +27 -0
  63. data/lib/temporalio/api/schedule/v1/message.rb +43 -0
  64. data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +25 -0
  65. data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +21 -0
  66. data/lib/temporalio/api/sdk/v1/user_metadata.rb +23 -0
  67. data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +23 -0
  68. data/lib/temporalio/api/taskqueue/v1/message.rb +48 -0
  69. data/lib/temporalio/api/testservice/v1/request_response.rb +31 -0
  70. data/lib/temporalio/api/testservice/v1/service.rb +23 -0
  71. data/lib/temporalio/api/update/v1/message.rb +33 -0
  72. data/lib/temporalio/api/version/v1/message.rb +26 -0
  73. data/lib/temporalio/api/workflow/v1/message.rb +63 -0
  74. data/lib/temporalio/api/workflowservice/v1/request_response.rb +244 -0
  75. data/lib/temporalio/api/workflowservice/v1/service.rb +23 -0
  76. data/lib/temporalio/api/workflowservice.rb +3 -0
  77. data/lib/temporalio/api.rb +15 -0
  78. data/lib/temporalio/cancellation.rb +170 -0
  79. data/lib/temporalio/client/activity_id_reference.rb +32 -0
  80. data/lib/temporalio/client/async_activity_handle.rb +85 -0
  81. data/lib/temporalio/client/connection/cloud_service.rb +786 -0
  82. data/lib/temporalio/client/connection/operator_service.rb +201 -0
  83. data/lib/temporalio/client/connection/service.rb +42 -0
  84. data/lib/temporalio/client/connection/test_service.rb +111 -0
  85. data/lib/temporalio/client/connection/workflow_service.rb +1326 -0
  86. data/lib/temporalio/client/connection.rb +316 -0
  87. data/lib/temporalio/client/interceptor.rb +457 -0
  88. data/lib/temporalio/client/schedule.rb +991 -0
  89. data/lib/temporalio/client/schedule_handle.rb +126 -0
  90. data/lib/temporalio/client/with_start_workflow_operation.rb +115 -0
  91. data/lib/temporalio/client/workflow_execution.rb +119 -0
  92. data/lib/temporalio/client/workflow_execution_count.rb +36 -0
  93. data/lib/temporalio/client/workflow_execution_status.rb +18 -0
  94. data/lib/temporalio/client/workflow_handle.rb +389 -0
  95. data/lib/temporalio/client/workflow_query_reject_condition.rb +14 -0
  96. data/lib/temporalio/client/workflow_update_handle.rb +65 -0
  97. data/lib/temporalio/client/workflow_update_wait_stage.rb +17 -0
  98. data/lib/temporalio/client.rb +625 -0
  99. data/lib/temporalio/common_enums.rb +55 -0
  100. data/lib/temporalio/contrib/open_telemetry.rb +469 -0
  101. data/lib/temporalio/converters/data_converter.rb +99 -0
  102. data/lib/temporalio/converters/failure_converter.rb +205 -0
  103. data/lib/temporalio/converters/payload_codec.rb +26 -0
  104. data/lib/temporalio/converters/payload_converter/binary_null.rb +34 -0
  105. data/lib/temporalio/converters/payload_converter/binary_plain.rb +35 -0
  106. data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +42 -0
  107. data/lib/temporalio/converters/payload_converter/composite.rb +66 -0
  108. data/lib/temporalio/converters/payload_converter/encoding.rb +35 -0
  109. data/lib/temporalio/converters/payload_converter/json_plain.rb +44 -0
  110. data/lib/temporalio/converters/payload_converter/json_protobuf.rb +41 -0
  111. data/lib/temporalio/converters/payload_converter.rb +71 -0
  112. data/lib/temporalio/converters/raw_value.rb +20 -0
  113. data/lib/temporalio/converters.rb +9 -0
  114. data/lib/temporalio/error/failure.rb +237 -0
  115. data/lib/temporalio/error.rb +156 -0
  116. data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +34 -0
  117. data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +32 -0
  118. data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +33 -0
  119. data/lib/temporalio/internal/bridge/api/common/common.rb +27 -0
  120. data/lib/temporalio/internal/bridge/api/core_interface.rb +40 -0
  121. data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +27 -0
  122. data/lib/temporalio/internal/bridge/api/nexus/nexus.rb +34 -0
  123. data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +56 -0
  124. data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +58 -0
  125. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +31 -0
  126. data/lib/temporalio/internal/bridge/api.rb +3 -0
  127. data/lib/temporalio/internal/bridge/client.rb +95 -0
  128. data/lib/temporalio/internal/bridge/runtime.rb +56 -0
  129. data/lib/temporalio/internal/bridge/testing.rb +69 -0
  130. data/lib/temporalio/internal/bridge/worker.rb +109 -0
  131. data/lib/temporalio/internal/bridge.rb +36 -0
  132. data/lib/temporalio/internal/client/implementation.rb +926 -0
  133. data/lib/temporalio/internal/metric.rb +122 -0
  134. data/lib/temporalio/internal/proto_utils.rb +165 -0
  135. data/lib/temporalio/internal/worker/activity_worker.rb +448 -0
  136. data/lib/temporalio/internal/worker/multi_runner.rb +213 -0
  137. data/lib/temporalio/internal/worker/workflow_instance/child_workflow_handle.rb +54 -0
  138. data/lib/temporalio/internal/worker/workflow_instance/context.rb +391 -0
  139. data/lib/temporalio/internal/worker/workflow_instance/details.rb +49 -0
  140. data/lib/temporalio/internal/worker/workflow_instance/external_workflow_handle.rb +32 -0
  141. data/lib/temporalio/internal/worker/workflow_instance/externally_immutable_hash.rb +22 -0
  142. data/lib/temporalio/internal/worker/workflow_instance/handler_execution.rb +25 -0
  143. data/lib/temporalio/internal/worker/workflow_instance/handler_hash.rb +41 -0
  144. data/lib/temporalio/internal/worker/workflow_instance/illegal_call_tracer.rb +97 -0
  145. data/lib/temporalio/internal/worker/workflow_instance/inbound_implementation.rb +62 -0
  146. data/lib/temporalio/internal/worker/workflow_instance/outbound_implementation.rb +404 -0
  147. data/lib/temporalio/internal/worker/workflow_instance/replay_safe_logger.rb +37 -0
  148. data/lib/temporalio/internal/worker/workflow_instance/replay_safe_metric.rb +40 -0
  149. data/lib/temporalio/internal/worker/workflow_instance/scheduler.rb +183 -0
  150. data/lib/temporalio/internal/worker/workflow_instance.rb +800 -0
  151. data/lib/temporalio/internal/worker/workflow_worker.rb +249 -0
  152. data/lib/temporalio/internal.rb +7 -0
  153. data/lib/temporalio/metric.rb +109 -0
  154. data/lib/temporalio/priority.rb +59 -0
  155. data/lib/temporalio/retry_policy.rb +74 -0
  156. data/lib/temporalio/runtime/metric_buffer.rb +94 -0
  157. data/lib/temporalio/runtime.rb +352 -0
  158. data/lib/temporalio/scoped_logger.rb +96 -0
  159. data/lib/temporalio/search_attributes.rb +356 -0
  160. data/lib/temporalio/testing/activity_environment.rb +175 -0
  161. data/lib/temporalio/testing/workflow_environment.rb +406 -0
  162. data/lib/temporalio/testing.rb +10 -0
  163. data/lib/temporalio/version.rb +5 -0
  164. data/lib/temporalio/versioning_override.rb +55 -0
  165. data/lib/temporalio/worker/activity_executor/fiber.rb +49 -0
  166. data/lib/temporalio/worker/activity_executor/thread_pool.rb +46 -0
  167. data/lib/temporalio/worker/activity_executor.rb +55 -0
  168. data/lib/temporalio/worker/deployment_options.rb +45 -0
  169. data/lib/temporalio/worker/interceptor.rb +367 -0
  170. data/lib/temporalio/worker/poller_behavior.rb +61 -0
  171. data/lib/temporalio/worker/thread_pool.rb +237 -0
  172. data/lib/temporalio/worker/tuner.rb +189 -0
  173. data/lib/temporalio/worker/workflow_executor/thread_pool.rb +236 -0
  174. data/lib/temporalio/worker/workflow_executor.rb +26 -0
  175. data/lib/temporalio/worker/workflow_replayer.rb +349 -0
  176. data/lib/temporalio/worker.rb +633 -0
  177. data/lib/temporalio/worker_deployment_version.rb +67 -0
  178. data/lib/temporalio/workflow/activity_cancellation_type.rb +20 -0
  179. data/lib/temporalio/workflow/child_workflow_cancellation_type.rb +21 -0
  180. data/lib/temporalio/workflow/child_workflow_handle.rb +43 -0
  181. data/lib/temporalio/workflow/definition.rb +680 -0
  182. data/lib/temporalio/workflow/external_workflow_handle.rb +41 -0
  183. data/lib/temporalio/workflow/future.rb +151 -0
  184. data/lib/temporalio/workflow/handler_unfinished_policy.rb +13 -0
  185. data/lib/temporalio/workflow/info.rb +107 -0
  186. data/lib/temporalio/workflow/parent_close_policy.rb +19 -0
  187. data/lib/temporalio/workflow/update_info.rb +20 -0
  188. data/lib/temporalio/workflow.rb +594 -0
  189. data/lib/temporalio/workflow_history.rb +47 -0
  190. data/lib/temporalio.rb +12 -0
  191. data/temporalio.gemspec +31 -0
  192. metadata +263 -0
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'temporalio/internal/bridge/worker'
4
+
5
+ module Temporalio
6
+ WorkerDeploymentVersion = Data.define(
7
+ :deployment_name,
8
+ :build_id
9
+ )
10
+
11
+ # Represents the version of a specific worker deployment.
12
+ #
13
+ # WARNING: Experimental API.
14
+ class WorkerDeploymentVersion
15
+ # Parse a version from a canonical string, which must be in the format
16
+ # `<deployment_name>.<build_id>`. Deployment name must not have a `.` in it.
17
+ #
18
+ # @param canonical [String] The canonical string representation of the version.
19
+ # @return [WorkerDeploymentVersion] The parsed version.
20
+ def self.from_canonical_string(canonical)
21
+ parts = canonical.split('.', 2)
22
+ if parts.length != 2
23
+ raise ArgumentError,
24
+ "Cannot parse version string: #{canonical}, must be in format <deployment_name>.<build_id>"
25
+ end
26
+ new(deployment_name: parts[0], build_id: parts[1])
27
+ end
28
+
29
+ # @!visibility private
30
+ def self._from_bridge(bridge)
31
+ return nil if bridge.nil?
32
+
33
+ new(deployment_name: bridge.deployment_name, build_id: bridge.build_id)
34
+ end
35
+
36
+ # Create WorkerDeploymentVersion.
37
+ #
38
+ # @param deployment_name [String] The name of the deployment.
39
+ # @param build_id [String] The build identifier specific to this worker build.
40
+ def initialize(deployment_name:, build_id:) # rubocop:disable Lint/UselessMethodDefinition
41
+ super
42
+ end
43
+
44
+ # Returns the canonical string representation of the version.
45
+ #
46
+ # @return [String]
47
+ def to_canonical_string
48
+ "#{deployment_name}.#{build_id}"
49
+ end
50
+
51
+ # @!visibility private
52
+ def _to_bridge_options
53
+ Internal::Bridge::Worker::WorkerDeploymentVersion.new(
54
+ deployment_name: deployment_name,
55
+ build_id: build_id
56
+ )
57
+ end
58
+
59
+ # @!visibility private
60
+ def _to_proto
61
+ Api::Deployment::V1::WorkerDeploymentVersion.new(
62
+ deployment_name: deployment_name,
63
+ build_id: build_id
64
+ )
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'temporalio/internal/bridge/api'
4
+
5
+ module Temporalio
6
+ module Workflow
7
+ # Cancellation types for activities.
8
+ module ActivityCancellationType
9
+ # Initiate a cancellation request and immediately report cancellation to the workflow.
10
+ TRY_CANCEL = Internal::Bridge::Api::WorkflowCommands::ActivityCancellationType::TRY_CANCEL
11
+ # Wait for activity cancellation completion. Note that activity must heartbeat to receive a cancellation
12
+ # notification. This can block the cancellation for a long time if activity doesn't heartbeat or chooses to ignore
13
+ # the cancellation request.
14
+ WAIT_CANCELLATION_COMPLETED =
15
+ Internal::Bridge::Api::WorkflowCommands::ActivityCancellationType::WAIT_CANCELLATION_COMPLETED
16
+ # Do not request cancellation of the activity and immediately report cancellation to the workflow.
17
+ ABANDON = Internal::Bridge::Api::WorkflowCommands::ActivityCancellationType::ABANDON
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'temporalio/internal/bridge/api'
4
+
5
+ module Temporalio
6
+ module Workflow
7
+ # Cancellation types for child workflows.
8
+ module ChildWorkflowCancellationType
9
+ # Do not request cancellation of the child workflow if already scheduled.
10
+ ABANDON = Internal::Bridge::Api::ChildWorkflow::ChildWorkflowCancellationType::ABANDON
11
+ # Initiate a cancellation request and immediately report cancellation to the parent.
12
+ TRY_CANCEL = Internal::Bridge::Api::ChildWorkflow::ChildWorkflowCancellationType::TRY_CANCEL
13
+ # Wait for child cancellation completion.
14
+ WAIT_CANCELLATION_COMPLETED =
15
+ Internal::Bridge::Api::ChildWorkflow::ChildWorkflowCancellationType::WAIT_CANCELLATION_COMPLETED
16
+ # Request cancellation of the child and wait for confirmation that the request was received.
17
+ WAIT_CANCELLATION_REQUESTED =
18
+ Internal::Bridge::Api::ChildWorkflow::ChildWorkflowCancellationType::WAIT_CANCELLATION_REQUESTED
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Temporalio
4
+ module Workflow
5
+ # Handle for interacting with a child workflow.
6
+ #
7
+ # This is created via {Workflow.start_child_workflow}, it is never instantiated directly.
8
+ class ChildWorkflowHandle
9
+ # @!visibility private
10
+ def initialize
11
+ raise NotImplementedError, 'Cannot instantiate a child handle directly'
12
+ end
13
+
14
+ # @return [String] ID for the workflow.
15
+ def id
16
+ raise NotImplementedError
17
+ end
18
+
19
+ # @return [String] Run ID for the workflow.
20
+ def first_execution_run_id
21
+ raise NotImplementedError
22
+ end
23
+
24
+ # Wait for the result.
25
+ #
26
+ # @return [Object] Result of the child workflow.
27
+ #
28
+ # @raise [Error::ChildWorkflowError] Workflow failed with +cause+ as the cause.
29
+ def result
30
+ raise NotImplementedError
31
+ end
32
+
33
+ # Signal the child workflow.
34
+ #
35
+ # @param signal [Workflow::Definition::Signal, Symbol, String] Signal definition or name.
36
+ # @param args [Array<Object>] Signal args.
37
+ # @param cancellation [Cancellation] Cancellation for canceling the signalling.
38
+ def signal(signal, *args, cancellation: Workflow.cancellation)
39
+ raise NotImplementedError
40
+ end
41
+ end
42
+ end
43
+ end