temporalio 0.3.0 → 0.4.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 (78) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +503 -395
  3. data/Gemfile +4 -0
  4. data/README.md +183 -10
  5. data/Rakefile +1 -1
  6. data/ext/Cargo.toml +1 -0
  7. data/lib/temporalio/activity/context.rb +13 -0
  8. data/lib/temporalio/activity/definition.rb +22 -5
  9. data/lib/temporalio/activity/info.rb +3 -0
  10. data/lib/temporalio/api/batch/v1/message.rb +6 -1
  11. data/lib/temporalio/api/command/v1/message.rb +1 -1
  12. data/lib/temporalio/api/common/v1/message.rb +2 -1
  13. data/lib/temporalio/api/deployment/v1/message.rb +38 -0
  14. data/lib/temporalio/api/enums/v1/batch_operation.rb +1 -1
  15. data/lib/temporalio/api/enums/v1/common.rb +1 -1
  16. data/lib/temporalio/api/enums/v1/deployment.rb +23 -0
  17. data/lib/temporalio/api/enums/v1/event_type.rb +1 -1
  18. data/lib/temporalio/api/enums/v1/failed_cause.rb +1 -1
  19. data/lib/temporalio/api/enums/v1/nexus.rb +21 -0
  20. data/lib/temporalio/api/enums/v1/reset.rb +1 -1
  21. data/lib/temporalio/api/enums/v1/workflow.rb +2 -1
  22. data/lib/temporalio/api/errordetails/v1/message.rb +3 -1
  23. data/lib/temporalio/api/failure/v1/message.rb +3 -1
  24. data/lib/temporalio/api/history/v1/message.rb +3 -1
  25. data/lib/temporalio/api/nexus/v1/message.rb +2 -1
  26. data/lib/temporalio/api/payload_visitor.rb +75 -7
  27. data/lib/temporalio/api/query/v1/message.rb +2 -1
  28. data/lib/temporalio/api/taskqueue/v1/message.rb +4 -1
  29. data/lib/temporalio/api/workflow/v1/message.rb +9 -1
  30. data/lib/temporalio/api/workflowservice/v1/request_response.rb +40 -11
  31. data/lib/temporalio/api/workflowservice/v1/service.rb +1 -1
  32. data/lib/temporalio/api.rb +1 -0
  33. data/lib/temporalio/client/connection/workflow_service.rb +238 -28
  34. data/lib/temporalio/client/interceptor.rb +39 -0
  35. data/lib/temporalio/client/schedule.rb +25 -1
  36. data/lib/temporalio/client/with_start_workflow_operation.rb +115 -0
  37. data/lib/temporalio/client/workflow_execution.rb +19 -0
  38. data/lib/temporalio/client/workflow_handle.rb +3 -3
  39. data/lib/temporalio/client.rb +125 -2
  40. data/lib/temporalio/contrib/open_telemetry.rb +470 -0
  41. data/lib/temporalio/error.rb +1 -0
  42. data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +1 -1
  43. data/lib/temporalio/internal/bridge/api/common/common.rb +2 -1
  44. data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +1 -1
  45. data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +1 -1
  46. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +2 -1
  47. data/lib/temporalio/internal/bridge/runtime.rb +3 -0
  48. data/lib/temporalio/internal/bridge/testing.rb +3 -0
  49. data/lib/temporalio/internal/client/implementation.rb +232 -10
  50. data/lib/temporalio/internal/proto_utils.rb +34 -2
  51. data/lib/temporalio/internal/worker/activity_worker.rb +20 -8
  52. data/lib/temporalio/internal/worker/multi_runner.rb +2 -2
  53. data/lib/temporalio/internal/worker/workflow_instance/context.rb +57 -3
  54. data/lib/temporalio/internal/worker/workflow_instance/details.rb +4 -2
  55. data/lib/temporalio/internal/worker/workflow_instance/outbound_implementation.rb +11 -26
  56. data/lib/temporalio/internal/worker/workflow_instance/scheduler.rb +22 -2
  57. data/lib/temporalio/internal/worker/workflow_instance.rb +76 -32
  58. data/lib/temporalio/internal/worker/workflow_worker.rb +62 -19
  59. data/lib/temporalio/runtime/metric_buffer.rb +94 -0
  60. data/lib/temporalio/runtime.rb +48 -10
  61. data/lib/temporalio/search_attributes.rb +13 -0
  62. data/lib/temporalio/testing/activity_environment.rb +42 -14
  63. data/lib/temporalio/testing/workflow_environment.rb +26 -3
  64. data/lib/temporalio/version.rb +1 -1
  65. data/lib/temporalio/worker/interceptor.rb +3 -0
  66. data/lib/temporalio/worker/thread_pool.rb +5 -5
  67. data/lib/temporalio/worker/tuner.rb +38 -0
  68. data/lib/temporalio/worker/workflow_executor/thread_pool.rb +13 -8
  69. data/lib/temporalio/worker/workflow_executor.rb +1 -1
  70. data/lib/temporalio/worker/workflow_replayer.rb +350 -0
  71. data/lib/temporalio/worker.rb +58 -52
  72. data/lib/temporalio/workflow/definition.rb +40 -8
  73. data/lib/temporalio/workflow/future.rb +2 -2
  74. data/lib/temporalio/workflow/info.rb +22 -0
  75. data/lib/temporalio/workflow.rb +60 -8
  76. data/lib/temporalio/workflow_history.rb +26 -1
  77. data/temporalio.gemspec +2 -1
  78. metadata +26 -5
@@ -1,9 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'temporalio/api'
4
+
3
5
  module Temporalio
4
6
  # Representation of a workflow's history.
5
7
  class WorkflowHistory
6
- # History events for the workflow.
8
+ # Convert a JSON string to workflow history. This supports the JSON format exported by Temporal UI and CLI.
9
+ #
10
+ # @param json [String] JSON string.
11
+ # @return [WorkflowHistory] Converted history.
12
+ def self.from_history_json(json)
13
+ WorkflowHistory.new(Api::History::V1::History.decode_json(json).events.to_a)
14
+ end
15
+
16
+ # @return [Array<Api::History::V1::HistoryEvent>] History events for the workflow.
7
17
  attr_reader :events
8
18
 
9
19
  # @!visibility private
@@ -18,5 +28,20 @@ module Temporalio
18
28
 
19
29
  start.workflow_id
20
30
  end
31
+
32
+ # Convert to history JSON.
33
+ #
34
+ # @return [String] JSON string.
35
+ def to_history_json
36
+ Api::History::V1::History.encode_json(Api::History::V1::History.new(events:))
37
+ end
38
+
39
+ # Compare history.
40
+ #
41
+ # @param other [WorkflowHistory] Other history.
42
+ # @return [Boolean] True if equal.
43
+ def ==(other)
44
+ other.is_a?(WorkflowHistory) && events == other.events
45
+ end
21
46
  end
22
47
  end
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.0'
27
+ spec.add_dependency 'google-protobuf', '>= 3.25.0'
28
+ spec.add_dependency 'logger'
28
29
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: temporalio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Temporal Technologies Inc
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-01-22 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: google-protobuf
@@ -15,14 +15,28 @@ dependencies:
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: 3.27.0
18
+ version: 3.25.0
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: 3.27.0
25
+ version: 3.25.0
26
+ - !ruby/object:Gem::Dependency
27
+ name: logger
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
26
40
  email:
27
41
  - sdk@temporal.io
28
42
  executables: []
@@ -62,12 +76,15 @@ files:
62
76
  - lib/temporalio/api/command/v1/message.rb
63
77
  - lib/temporalio/api/common/v1/grpc_status.rb
64
78
  - lib/temporalio/api/common/v1/message.rb
79
+ - lib/temporalio/api/deployment/v1/message.rb
65
80
  - lib/temporalio/api/enums/v1/batch_operation.rb
66
81
  - lib/temporalio/api/enums/v1/command_type.rb
67
82
  - lib/temporalio/api/enums/v1/common.rb
83
+ - lib/temporalio/api/enums/v1/deployment.rb
68
84
  - lib/temporalio/api/enums/v1/event_type.rb
69
85
  - lib/temporalio/api/enums/v1/failed_cause.rb
70
86
  - lib/temporalio/api/enums/v1/namespace.rb
87
+ - lib/temporalio/api/enums/v1/nexus.rb
71
88
  - lib/temporalio/api/enums/v1/query.rb
72
89
  - lib/temporalio/api/enums/v1/reset.rb
73
90
  - lib/temporalio/api/enums/v1/schedule.rb
@@ -115,6 +132,7 @@ files:
115
132
  - lib/temporalio/client/interceptor.rb
116
133
  - lib/temporalio/client/schedule.rb
117
134
  - lib/temporalio/client/schedule_handle.rb
135
+ - lib/temporalio/client/with_start_workflow_operation.rb
118
136
  - lib/temporalio/client/workflow_execution.rb
119
137
  - lib/temporalio/client/workflow_execution_count.rb
120
138
  - lib/temporalio/client/workflow_execution_status.rb
@@ -123,6 +141,7 @@ files:
123
141
  - lib/temporalio/client/workflow_update_handle.rb
124
142
  - lib/temporalio/client/workflow_update_wait_stage.rb
125
143
  - lib/temporalio/common_enums.rb
144
+ - lib/temporalio/contrib/open_telemetry.rb
126
145
  - lib/temporalio/converters.rb
127
146
  - lib/temporalio/converters/data_converter.rb
128
147
  - lib/temporalio/converters/failure_converter.rb
@@ -178,6 +197,7 @@ files:
178
197
  - lib/temporalio/metric.rb
179
198
  - lib/temporalio/retry_policy.rb
180
199
  - lib/temporalio/runtime.rb
200
+ - lib/temporalio/runtime/metric_buffer.rb
181
201
  - lib/temporalio/scoped_logger.rb
182
202
  - lib/temporalio/search_attributes.rb
183
203
  - lib/temporalio/testing.rb
@@ -193,6 +213,7 @@ files:
193
213
  - lib/temporalio/worker/tuner.rb
194
214
  - lib/temporalio/worker/workflow_executor.rb
195
215
  - lib/temporalio/worker/workflow_executor/thread_pool.rb
216
+ - lib/temporalio/worker/workflow_replayer.rb
196
217
  - lib/temporalio/workflow.rb
197
218
  - lib/temporalio/workflow/activity_cancellation_type.rb
198
219
  - lib/temporalio/workflow/child_workflow_cancellation_type.rb
@@ -227,7 +248,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
227
248
  - !ruby/object:Gem::Version
228
249
  version: '0'
229
250
  requirements: []
230
- rubygems_version: 3.6.2
251
+ rubygems_version: 3.6.7
231
252
  specification_version: 4
232
253
  summary: Temporal.io Ruby SDK
233
254
  test_files: []