temporalio 1.5.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 (516) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +1469 -659
  3. data/Cargo.toml +1 -1
  4. data/Gemfile +9 -5
  5. data/README.md +59 -3
  6. data/Rakefile +1 -1
  7. data/ext/Cargo.toml +9 -3
  8. data/lib/temporalio/api/activity/v1/message.rb +1 -1
  9. data/lib/temporalio/api/batch/v1/message.rb +4 -1
  10. data/lib/temporalio/api/cloud/billing/v1/message.rb +2 -1
  11. data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +17 -1
  12. data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +1 -1
  13. data/lib/temporalio/api/cloud/connectivityrule/v1/message.rb +1 -1
  14. data/lib/temporalio/api/cloud/identity/v1/message.rb +8 -1
  15. data/lib/temporalio/api/cloud/namespace/v1/message.rb +5 -1
  16. data/lib/temporalio/api/command/v1/message.rb +3 -1
  17. data/lib/temporalio/api/common/v1/message.rb +9 -1
  18. data/lib/temporalio/api/deployment/v1/message.rb +3 -1
  19. data/lib/temporalio/api/enums/v1/activity.rb +1 -1
  20. data/lib/temporalio/api/enums/v1/batch_operation.rb +1 -1
  21. data/lib/temporalio/api/enums/v1/common.rb +2 -1
  22. data/lib/temporalio/api/enums/v1/failed_cause.rb +1 -1
  23. data/lib/temporalio/api/enums/v1/time_skipping.rb +21 -0
  24. data/lib/temporalio/api/errordetails/v1/message.rb +2 -1
  25. data/lib/temporalio/api/history/v1/message.rb +3 -1
  26. data/lib/temporalio/api/namespace/v1/message.rb +1 -1
  27. data/lib/temporalio/api/nexus/v1/message.rb +1 -1
  28. data/lib/temporalio/api/nexusannotations/v1/options.rb +20 -0
  29. data/lib/temporalio/api/payload_visitor.rb +32 -0
  30. data/lib/temporalio/api/schedule/v1/message.rb +1 -1
  31. data/lib/temporalio/api/sdk/v1/event_group_marker.rb +26 -0
  32. data/lib/temporalio/api/taskqueue/v1/message.rb +2 -1
  33. data/lib/temporalio/api/update/v1/message.rb +1 -1
  34. data/lib/temporalio/api/worker/v1/message.rb +13 -1
  35. data/lib/temporalio/api/workflow/v1/message.rb +3 -2
  36. data/lib/temporalio/api/workflowservice/v1/request_response.rb +14 -1
  37. data/lib/temporalio/api/workflowservice/v1/service.rb +3 -2
  38. data/lib/temporalio/client/connection/cloud_service.rb +120 -0
  39. data/lib/temporalio/client/connection/workflow_service.rb +90 -0
  40. data/lib/temporalio/client/connection.rb +68 -3
  41. data/lib/temporalio/client/schedule.rb +4 -5
  42. data/lib/temporalio/client/workflow_execution.rb +2 -2
  43. data/lib/temporalio/client/workflow_handle.rb +2 -1
  44. data/lib/temporalio/client.rb +14 -11
  45. data/lib/temporalio/converters/data_converter.rb +1 -0
  46. data/lib/temporalio/converters/failure_converter.rb +7 -4
  47. data/lib/temporalio/internal/bridge/api/common/common.rb +2 -1
  48. data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +1 -1
  49. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +1 -1
  50. data/lib/temporalio/internal/bridge/client.rb +8 -1
  51. data/lib/temporalio/internal/bridge/runtime.rb +4 -1
  52. data/lib/temporalio/internal/bridge/worker.rb +3 -1
  53. data/lib/temporalio/internal/bridge.rb +20 -0
  54. data/lib/temporalio/internal/google_protobuf.rb +11 -0
  55. data/lib/temporalio/internal/worker/workflow_instance/context.rb +2 -0
  56. data/lib/temporalio/internal/worker/workflow_instance/details.rb +3 -1
  57. data/lib/temporalio/internal/worker/workflow_instance/illegal_call_tracer.rb +9 -0
  58. data/lib/temporalio/internal/worker/workflow_instance/scheduler.rb +73 -2
  59. data/lib/temporalio/internal/worker/workflow_instance.rb +36 -6
  60. data/lib/temporalio/internal/worker/workflow_worker.rb +10 -2
  61. data/lib/temporalio/internal/workflow_task_failure_error.rb +9 -0
  62. data/lib/temporalio/runtime.rb +25 -7
  63. data/lib/temporalio/scoped_logger.rb +15 -0
  64. data/lib/temporalio/version.rb +1 -1
  65. data/lib/temporalio/worker/activity_executor/fiber.rb +1 -1
  66. data/lib/temporalio/worker/activity_executor/thread_pool.rb +1 -1
  67. data/lib/temporalio/worker/illegal_workflow_call_validator.rb +3 -1
  68. data/lib/temporalio/worker/workflow_executor/thread_pool.rb +5 -1
  69. data/lib/temporalio/worker/workflow_replayer.rb +19 -4
  70. data/lib/temporalio/worker.rb +54 -9
  71. data/lib/temporalio/workflow/future.rb +5 -0
  72. data/lib/temporalio/workflow/nexus_operation_cancellation_type.rb +4 -2
  73. data/lib/temporalio/workflow.rb +16 -9
  74. data/rbi/google/protobuf.rbi +25 -0
  75. data/rbi/temporalio/activity/cancellation_details.rbi +33 -0
  76. data/rbi/temporalio/activity/complete_async_error.rbi +3 -0
  77. data/rbi/temporalio/activity/context.rbi +42 -0
  78. data/rbi/temporalio/activity/definition.rbi +74 -0
  79. data/rbi/temporalio/activity/info.rbi +112 -0
  80. data/rbi/temporalio/activity.rbi +3 -0
  81. data/rbi/temporalio/api/activity/v1/message.rbi +1539 -0
  82. data/rbi/temporalio/api/batch/v1/message.rbi +1510 -0
  83. data/rbi/temporalio/api/callback/v1/message.rbi +188 -0
  84. data/rbi/temporalio/api/cloud/account/v1/message.rbi +650 -0
  85. data/rbi/temporalio/api/cloud/auditlog/v1/message.rbi +318 -0
  86. data/rbi/temporalio/api/cloud/billing/v1/message.rbi +480 -0
  87. data/rbi/temporalio/api/cloud/cloudservice/v1/request_response.rbi +12454 -0
  88. data/rbi/temporalio/api/cloud/cloudservice/v1/service.rbi +3 -0
  89. data/rbi/temporalio/api/cloud/cloudservice/v1/service_services.rbi +709 -0
  90. data/rbi/temporalio/api/cloud/cloudservice.rbi +5 -0
  91. data/rbi/temporalio/api/cloud/connectivityrule/v1/message.rbi +403 -0
  92. data/rbi/temporalio/api/cloud/identity/v1/message.rbi +3072 -0
  93. data/rbi/temporalio/api/cloud/namespace/v1/message.rbi +3659 -0
  94. data/rbi/temporalio/api/cloud/nexus/v1/message.rbi +595 -0
  95. data/rbi/temporalio/api/cloud/operation/v1/message.rbi +244 -0
  96. data/rbi/temporalio/api/cloud/region/v1/message.rbi +166 -0
  97. data/rbi/temporalio/api/cloud/resource/v1/message.rbi +29 -0
  98. data/rbi/temporalio/api/cloud/sink/v1/message.rbi +438 -0
  99. data/rbi/temporalio/api/cloud/usage/v1/message.rbi +409 -0
  100. data/rbi/temporalio/api/command/v1/message.rbi +2675 -0
  101. data/rbi/temporalio/api/common/v1/grpc_status.rbi +92 -0
  102. data/rbi/temporalio/api/common/v1/message.rbi +3457 -0
  103. data/rbi/temporalio/api/compute/v1/config.rbi +421 -0
  104. data/rbi/temporalio/api/compute/v1/provider.rbi +125 -0
  105. data/rbi/temporalio/api/compute/v1/scaler.rbi +102 -0
  106. data/rbi/temporalio/api/deployment/v1/message.rbi +2340 -0
  107. data/rbi/temporalio/api/enums/v1/activity.rbi +63 -0
  108. data/rbi/temporalio/api/enums/v1/batch_operation.rbi +56 -0
  109. data/rbi/temporalio/api/enums/v1/command_type.rbi +36 -0
  110. data/rbi/temporalio/api/enums/v1/common.rbi +199 -0
  111. data/rbi/temporalio/api/enums/v1/deployment.rbi +80 -0
  112. data/rbi/temporalio/api/enums/v1/event_type.rbi +79 -0
  113. data/rbi/temporalio/api/enums/v1/failed_cause.rbi +159 -0
  114. data/rbi/temporalio/api/enums/v1/namespace.rbi +58 -0
  115. data/rbi/temporalio/api/enums/v1/nexus.rbi +98 -0
  116. data/rbi/temporalio/api/enums/v1/query.rbi +40 -0
  117. data/rbi/temporalio/api/enums/v1/reset.rbi +60 -0
  118. data/rbi/temporalio/api/enums/v1/schedule.rbi +25 -0
  119. data/rbi/temporalio/api/enums/v1/task_queue.rbi +134 -0
  120. data/rbi/temporalio/api/enums/v1/time_skipping.rbi +22 -0
  121. data/rbi/temporalio/api/enums/v1/update.rbi +39 -0
  122. data/rbi/temporalio/api/enums/v1/workflow.rbi +259 -0
  123. data/rbi/temporalio/api/errordetails/v1/message.rbi +1446 -0
  124. data/rbi/temporalio/api/export/v1/message.rbi +123 -0
  125. data/rbi/temporalio/api/failure/v1/message.rbi +1303 -0
  126. data/rbi/temporalio/api/filter/v1/message.rbi +267 -0
  127. data/rbi/temporalio/api/history/v1/message.rbi +10757 -0
  128. data/rbi/temporalio/api/namespace/v1/message.rbi +1135 -0
  129. data/rbi/temporalio/api/nexus/v1/message.rbi +2780 -0
  130. data/rbi/temporalio/api/nexusannotations/v1/options.rbi +161 -0
  131. data/rbi/temporalio/api/nexusservices/workerservice/v1/request_response.rbi +124 -0
  132. data/rbi/temporalio/api/operatorservice/v1/request_response.rbi +1836 -0
  133. data/rbi/temporalio/api/operatorservice/v1/service.rbi +3 -0
  134. data/rbi/temporalio/api/operatorservice/v1/service_services.rbi +143 -0
  135. data/rbi/temporalio/api/operatorservice.rbi +5 -0
  136. data/rbi/temporalio/api/payload_visitor.rbi +876 -0
  137. data/rbi/temporalio/api/protoc_gen_openapiv2/options/annotations.rbi +3 -0
  138. data/rbi/temporalio/api/protoc_gen_openapiv2/options/openapiv2.rbi +3482 -0
  139. data/rbi/temporalio/api/protocol/v1/message.rbi +139 -0
  140. data/rbi/temporalio/api/protometa/v1/annotations.rbi +97 -0
  141. data/rbi/temporalio/api/query/v1/message.rbi +288 -0
  142. data/rbi/temporalio/api/replication/v1/message.rbi +226 -0
  143. data/rbi/temporalio/api/rules/v1/message.rbi +492 -0
  144. data/rbi/temporalio/api/schedule/v1/message.rbi +2377 -0
  145. data/rbi/temporalio/api/sdk/v1/enhanced_stack_trace.rbi +478 -0
  146. data/rbi/temporalio/api/sdk/v1/event_group_marker.rbi +337 -0
  147. data/rbi/temporalio/api/sdk/v1/external_storage.rbi +85 -0
  148. data/rbi/temporalio/api/sdk/v1/task_complete_metadata.rbi +206 -0
  149. data/rbi/temporalio/api/sdk/v1/user_metadata.rbi +98 -0
  150. data/rbi/temporalio/api/sdk/v1/worker_config.rbi +255 -0
  151. data/rbi/temporalio/api/sdk/v1/workflow_metadata.rbi +297 -0
  152. data/rbi/temporalio/api/taskqueue/v1/message.rbi +2571 -0
  153. data/rbi/temporalio/api/testservice/v1/request_response.rbi +380 -0
  154. data/rbi/temporalio/api/testservice/v1/service.rbi +3 -0
  155. data/rbi/temporalio/api/testservice/v1/service_services.rbi +100 -0
  156. data/rbi/temporalio/api/update/v1/message.rbi +800 -0
  157. data/rbi/temporalio/api/version/v1/message.rbi +281 -0
  158. data/rbi/temporalio/api/worker/v1/message.rbi +2305 -0
  159. data/rbi/temporalio/api/workflow/v1/message.rbi +5031 -0
  160. data/rbi/temporalio/api/workflowservice/v1/request_response.rbi +31061 -0
  161. data/rbi/temporalio/api/workflowservice/v1/service.rbi +3 -0
  162. data/rbi/temporalio/api/workflowservice/v1/service_services.rbi +1579 -0
  163. data/rbi/temporalio/api/workflowservice.rbi +5 -0
  164. data/rbi/temporalio/api.rbi +7 -0
  165. data/rbi/temporalio/cancellation.rbi +40 -0
  166. data/rbi/temporalio/client/activity_execution.rbi +134 -0
  167. data/rbi/temporalio/client/activity_execution_count.rbi +23 -0
  168. data/rbi/temporalio/client/activity_execution_status.rbi +11 -0
  169. data/rbi/temporalio/client/activity_handle.rbi +49 -0
  170. data/rbi/temporalio/client/activity_id_reference.rbi +24 -0
  171. data/rbi/temporalio/client/async_activity_handle.rbi +49 -0
  172. data/rbi/temporalio/client/connection/cloud_service.rbi +239 -0
  173. data/rbi/temporalio/client/connection/operator_service.rbi +47 -0
  174. data/rbi/temporalio/client/connection/service.rbi +19 -0
  175. data/rbi/temporalio/client/connection/test_service.rbi +29 -0
  176. data/rbi/temporalio/client/connection/workflow_service.rbi +380 -0
  177. data/rbi/temporalio/client/connection.rbi +286 -0
  178. data/rbi/temporalio/client/interceptor.rbi +1067 -0
  179. data/rbi/temporalio/client/pending_activity_state.rbi +9 -0
  180. data/rbi/temporalio/client/plugin.rbi +17 -0
  181. data/rbi/temporalio/client/schedule.rbi +677 -0
  182. data/rbi/temporalio/client/schedule_handle.rbi +40 -0
  183. data/rbi/temporalio/client/with_start_workflow_operation.rbi +126 -0
  184. data/rbi/temporalio/client/workflow_execution.rbi +62 -0
  185. data/rbi/temporalio/client/workflow_execution_count.rbi +23 -0
  186. data/rbi/temporalio/client/workflow_execution_status.rbi +11 -0
  187. data/rbi/temporalio/client/workflow_handle.rbi +148 -0
  188. data/rbi/temporalio/client/workflow_query_reject_condition.rbi +7 -0
  189. data/rbi/temporalio/client/workflow_update_handle.rbi +38 -0
  190. data/rbi/temporalio/client/workflow_update_wait_stage.rbi +7 -0
  191. data/rbi/temporalio/client.rbi +534 -0
  192. data/rbi/temporalio/common_enums.rbi +45 -0
  193. data/rbi/temporalio/contrib/open_telemetry.rbi +73 -0
  194. data/rbi/temporalio/converters/data_converter.rbi +44 -0
  195. data/rbi/temporalio/converters/failure_converter.rbi +25 -0
  196. data/rbi/temporalio/converters/payload_codec.rbi +11 -0
  197. data/rbi/temporalio/converters/payload_converter/binary_null.rbi +5 -0
  198. data/rbi/temporalio/converters/payload_converter/binary_plain.rbi +5 -0
  199. data/rbi/temporalio/converters/payload_converter/binary_protobuf.rbi +5 -0
  200. data/rbi/temporalio/converters/payload_converter/composite.rbi +20 -0
  201. data/rbi/temporalio/converters/payload_converter/encoding.rbi +14 -0
  202. data/rbi/temporalio/converters/payload_converter/json_plain.rbi +10 -0
  203. data/rbi/temporalio/converters/payload_converter/json_protobuf.rbi +5 -0
  204. data/rbi/temporalio/converters/payload_converter.rbi +28 -0
  205. data/rbi/temporalio/converters/raw_value.rbi +11 -0
  206. data/rbi/temporalio/converters.rbi +3 -0
  207. data/rbi/temporalio/env_config.rbi +156 -0
  208. data/rbi/temporalio/error/failure.rbi +3 -0
  209. data/rbi/temporalio/error.rbi +313 -0
  210. data/rbi/temporalio/internal/bridge/api/activity_result/activity_result.rbi +547 -0
  211. data/rbi/temporalio/internal/bridge/api/activity_task/activity_task.rbi +705 -0
  212. data/rbi/temporalio/internal/bridge/api/child_workflow/child_workflow.rbi +332 -0
  213. data/rbi/temporalio/internal/bridge/api/common/common.rbi +306 -0
  214. data/rbi/temporalio/internal/bridge/api/core_interface.rbi +567 -0
  215. data/rbi/temporalio/internal/bridge/api/external_data/external_data.rbi +255 -0
  216. data/rbi/temporalio/internal/bridge/api/nexus/nexus.rbi +527 -0
  217. data/rbi/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rbi +2808 -0
  218. data/rbi/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rbi +3309 -0
  219. data/rbi/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rbi +312 -0
  220. data/rbi/temporalio/internal/bridge/api.rbi +3 -0
  221. data/rbi/temporalio/internal/bridge/client.rbi +346 -0
  222. data/rbi/temporalio/internal/bridge/runtime.rbi +251 -0
  223. data/rbi/temporalio/internal/bridge/testing.rbi +109 -0
  224. data/rbi/temporalio/internal/bridge/worker.rbi +252 -0
  225. data/rbi/temporalio/internal/bridge.rbi +47 -0
  226. data/rbi/temporalio/internal/client/implementation.rbi +53 -0
  227. data/rbi/temporalio/internal/google_protobuf.rbi +8 -0
  228. data/rbi/temporalio/internal/metric.rbi +55 -0
  229. data/rbi/temporalio/internal/proto_utils.rbi +148 -0
  230. data/rbi/temporalio/internal/worker/activity_worker.rbi +108 -0
  231. data/rbi/temporalio/internal/worker/multi_runner.rbi +175 -0
  232. data/rbi/temporalio/internal/worker/workflow_instance/child_workflow_handle.rbi +20 -0
  233. data/rbi/temporalio/internal/worker/workflow_instance/context.rbi +290 -0
  234. data/rbi/temporalio/internal/worker/workflow_instance/details.rbi +87 -0
  235. data/rbi/temporalio/internal/worker/workflow_instance/external_workflow_handle.rbi +14 -0
  236. data/rbi/temporalio/internal/worker/workflow_instance/externally_immutable_hash.rbi +17 -0
  237. data/rbi/temporalio/internal/worker/workflow_instance/handler_execution.rbi +17 -0
  238. data/rbi/temporalio/internal/worker/workflow_instance/handler_hash.rbi +24 -0
  239. data/rbi/temporalio/internal/worker/workflow_instance/illegal_call_tracer.rbi +17 -0
  240. data/rbi/temporalio/internal/worker/workflow_instance/inbound_implementation.rbi +21 -0
  241. data/rbi/temporalio/internal/worker/workflow_instance/nexus_client.rbi +47 -0
  242. data/rbi/temporalio/internal/worker/workflow_instance/nexus_operation_handle.rbi +19 -0
  243. data/rbi/temporalio/internal/worker/workflow_instance/outbound_implementation.rbi +43 -0
  244. data/rbi/temporalio/internal/worker/workflow_instance/replay_safe_logger.rbi +11 -0
  245. data/rbi/temporalio/internal/worker/workflow_instance/replay_safe_metric.rbi +15 -0
  246. data/rbi/temporalio/internal/worker/workflow_instance/scheduler.rbi +36 -0
  247. data/rbi/temporalio/internal/worker/workflow_instance.rbi +231 -0
  248. data/rbi/temporalio/internal/worker/workflow_worker.rbi +199 -0
  249. data/rbi/temporalio/internal/workflow_task_failure_error.rbi +3 -0
  250. data/rbi/temporalio/internal.rbi +3 -0
  251. data/rbi/temporalio/metric.rbi +56 -0
  252. data/rbi/temporalio/priority.rbi +38 -0
  253. data/rbi/temporalio/retry_policy.rbi +40 -0
  254. data/rbi/temporalio/runtime/metric_buffer.rbi +45 -0
  255. data/rbi/temporalio/runtime.rbi +194 -0
  256. data/rbi/temporalio/scoped_logger.rbi +50 -0
  257. data/rbi/temporalio/search_attributes.rbi +94 -0
  258. data/rbi/temporalio/simple_plugin.rbi +41 -0
  259. data/rbi/temporalio/testing/activity_environment.rbi +43 -0
  260. data/rbi/temporalio/testing/workflow_environment.rbi +116 -0
  261. data/rbi/temporalio/testing.rbi +3 -0
  262. data/rbi/temporalio/version.rbi +5 -0
  263. data/rbi/temporalio/versioning_override.rbi +13 -0
  264. data/rbi/temporalio/worker/activity_executor/fiber.rbi +20 -0
  265. data/rbi/temporalio/worker/activity_executor/thread_pool.rbi +20 -0
  266. data/rbi/temporalio/worker/activity_executor.rbi +20 -0
  267. data/rbi/temporalio/worker/deployment_options.rbi +23 -0
  268. data/rbi/temporalio/worker/illegal_workflow_call_validator.rbi +33 -0
  269. data/rbi/temporalio/worker/interceptor.rbi +489 -0
  270. data/rbi/temporalio/worker/plugin.rbi +49 -0
  271. data/rbi/temporalio/worker/poller_behavior.rbi +29 -0
  272. data/rbi/temporalio/worker/thread_pool.rbi +38 -0
  273. data/rbi/temporalio/worker/tuner.rbi +221 -0
  274. data/rbi/temporalio/worker/workflow_executor/thread_pool.rbi +15 -0
  275. data/rbi/temporalio/worker/workflow_executor.rbi +8 -0
  276. data/rbi/temporalio/worker/workflow_replayer.rbi +152 -0
  277. data/rbi/temporalio/worker.rbi +265 -0
  278. data/rbi/temporalio/worker_deployment_version.rbi +29 -0
  279. data/rbi/temporalio/workflow/activity_cancellation_type.rbi +7 -0
  280. data/rbi/temporalio/workflow/child_workflow_cancellation_type.rbi +8 -0
  281. data/rbi/temporalio/workflow/child_workflow_handle.rbi +27 -0
  282. data/rbi/temporalio/workflow/definition.rbi +305 -0
  283. data/rbi/temporalio/workflow/external_workflow_handle.rbi +24 -0
  284. data/rbi/temporalio/workflow/future.rbi +62 -0
  285. data/rbi/temporalio/workflow/handler_unfinished_policy.rbi +6 -0
  286. data/rbi/temporalio/workflow/info.rbi +100 -0
  287. data/rbi/temporalio/workflow/nexus_client.rbi +65 -0
  288. data/rbi/temporalio/workflow/nexus_operation_cancellation_type.rbi +8 -0
  289. data/rbi/temporalio/workflow/nexus_operation_handle.rbi +14 -0
  290. data/rbi/temporalio/workflow/parent_close_policy.rbi +8 -0
  291. data/rbi/temporalio/workflow/update_info.rbi +14 -0
  292. data/rbi/temporalio/workflow.rbi +393 -0
  293. data/rbi/temporalio/workflow_history.rbi +21 -0
  294. data/rbi/temporalio.rbi +5 -0
  295. data/sig/common.rbs +1 -0
  296. data/sig/google/protobuf_compat.rbs +17 -0
  297. data/sig/open_telemetry.rbs +47 -0
  298. data/sig/temporalio/activity/cancellation_details.rbs +21 -0
  299. data/sig/temporalio/activity/complete_async_error.rbs +6 -0
  300. data/sig/temporalio/activity/context.rbs +26 -0
  301. data/sig/temporalio/activity/definition.rbs +60 -0
  302. data/sig/temporalio/activity/info.rbs +57 -0
  303. data/sig/temporalio/activity.rbs +4 -0
  304. data/sig/temporalio/api/activity/v1/message.rbs +754 -0
  305. data/sig/temporalio/api/batch/v1/message.rbs +680 -0
  306. data/sig/temporalio/api/callback/v1/message.rbs +112 -0
  307. data/sig/temporalio/api/cloud/account/v1/message.rbs +314 -0
  308. data/sig/temporalio/api/cloud/auditlog/v1/message.rbs +168 -0
  309. data/sig/temporalio/api/cloud/billing/v1/message.rbs +279 -0
  310. data/sig/temporalio/api/cloud/cloudservice/v1/request_response.rbs +4726 -0
  311. data/sig/temporalio/api/cloud/cloudservice/v1/service.rbs +25 -0
  312. data/sig/temporalio/api/cloud/cloudservice.rbs +8 -0
  313. data/sig/temporalio/api/cloud/connectivityrule/v1/message.rbs +191 -0
  314. data/sig/temporalio/api/cloud/identity/v1/message.rbs +1372 -0
  315. data/sig/temporalio/api/cloud/namespace/v1/message.rbs +1571 -0
  316. data/sig/temporalio/api/cloud/nexus/v1/message.rbs +269 -0
  317. data/sig/temporalio/api/cloud/operation/v1/message.rbs +156 -0
  318. data/sig/temporalio/api/cloud/region/v1/message.rbs +109 -0
  319. data/sig/temporalio/api/cloud/resource/v1/message.rbs +61 -0
  320. data/sig/temporalio/api/cloud/sink/v1/message.rbs +207 -0
  321. data/sig/temporalio/api/cloud/usage/v1/message.rbs +230 -0
  322. data/sig/temporalio/api/command/v1/message.rbs +1221 -0
  323. data/sig/temporalio/api/common/v1/grpc_status.rbs +59 -0
  324. data/sig/temporalio/api/common/v1/message.rbs +1439 -0
  325. data/sig/temporalio/api/compute/v1/config.rbs +176 -0
  326. data/sig/temporalio/api/compute/v1/provider.rbs +73 -0
  327. data/sig/temporalio/api/compute/v1/scaler.rbs +60 -0
  328. data/sig/temporalio/api/deployment/v1/message.rbs +1063 -0
  329. data/sig/temporalio/api/enums/v1/activity.rbs +138 -0
  330. data/sig/temporalio/api/enums/v1/batch_operation.rbs +110 -0
  331. data/sig/temporalio/api/enums/v1/command_type.rbs +74 -0
  332. data/sig/temporalio/api/enums/v1/common.rbs +294 -0
  333. data/sig/temporalio/api/enums/v1/deployment.rbs +177 -0
  334. data/sig/temporalio/api/enums/v1/event_type.rbs +263 -0
  335. data/sig/temporalio/api/enums/v1/failed_cause.rbs +293 -0
  336. data/sig/temporalio/api/enums/v1/namespace.rbs +87 -0
  337. data/sig/temporalio/api/enums/v1/nexus.rbs +172 -0
  338. data/sig/temporalio/api/enums/v1/query.rbs +69 -0
  339. data/sig/temporalio/api/enums/v1/reset.rbs +106 -0
  340. data/sig/temporalio/api/enums/v1/schedule.rbs +68 -0
  341. data/sig/temporalio/api/enums/v1/task_queue.rbs +238 -0
  342. data/sig/temporalio/api/enums/v1/time_skipping.rbs +58 -0
  343. data/sig/temporalio/api/enums/v1/update.rbs +87 -0
  344. data/sig/temporalio/api/enums/v1/workflow.rbs +435 -0
  345. data/sig/temporalio/api/errordetails/v1/message.rbs +551 -0
  346. data/sig/temporalio/api/export/v1/message.rbs +63 -0
  347. data/sig/temporalio/api/failure/v1/message.rbs +579 -0
  348. data/sig/temporalio/api/filter/v1/message.rbs +121 -0
  349. data/sig/temporalio/api/history/v1/message.rbs +4938 -0
  350. data/sig/temporalio/api/namespace/v1/message.rbs +508 -0
  351. data/sig/temporalio/api/nexus/v1/message.rbs +1268 -0
  352. data/sig/temporalio/api/nexusannotations/v1/options.rbs +76 -0
  353. data/sig/temporalio/api/nexusservices/workerservice/v1/request_response.rbs +65 -0
  354. data/sig/temporalio/api/operatorservice/v1/request_response.rbs +679 -0
  355. data/sig/temporalio/api/operatorservice/v1/service.rbs +23 -0
  356. data/sig/temporalio/api/operatorservice.rbs +6 -0
  357. data/sig/temporalio/api/payload_visitor.rbs +298 -0
  358. data/sig/temporalio/api/protoc_gen_openapiv2/options/annotations.rbs +23 -0
  359. data/sig/temporalio/api/protoc_gen_openapiv2/options/openapiv2.rbs +1691 -0
  360. data/sig/temporalio/api/protocol/v1/message.rbs +90 -0
  361. data/sig/temporalio/api/protometa/v1/annotations.rbs +62 -0
  362. data/sig/temporalio/api/query/v1/message.rbs +138 -0
  363. data/sig/temporalio/api/replication/v1/message.rbs +109 -0
  364. data/sig/temporalio/api/rules/v1/message.rbs +213 -0
  365. data/sig/temporalio/api/schedule/v1/message.rbs +1066 -0
  366. data/sig/temporalio/api/sdk/v1/enhanced_stack_trace.rbs +210 -0
  367. data/sig/temporalio/api/sdk/v1/event_group_marker.rbs +154 -0
  368. data/sig/temporalio/api/sdk/v1/external_storage.rbs +54 -0
  369. data/sig/temporalio/api/sdk/v1/task_complete_metadata.rbs +92 -0
  370. data/sig/temporalio/api/sdk/v1/user_metadata.rbs +58 -0
  371. data/sig/temporalio/api/sdk/v1/worker_config.rbs +122 -0
  372. data/sig/temporalio/api/sdk/v1/workflow_metadata.rbs +138 -0
  373. data/sig/temporalio/api/taskqueue/v1/message.rbs +1057 -0
  374. data/sig/temporalio/api/testservice/v1/request_response.rbs +125 -0
  375. data/sig/temporalio/api/testservice/v1/service.rbs +23 -0
  376. data/sig/temporalio/api/update/v1/message.rbs +349 -0
  377. data/sig/temporalio/api/version/v1/message.rbs +143 -0
  378. data/sig/temporalio/api/worker/v1/message.rbs +1126 -0
  379. data/sig/temporalio/api/workflow/v1/message.rbs +2332 -0
  380. data/sig/temporalio/api/workflowservice/v1/request_response.rbs +13006 -0
  381. data/sig/temporalio/api/workflowservice/v1/service.rbs +23 -0
  382. data/sig/temporalio/api/workflowservice.rbs +6 -0
  383. data/sig/temporalio/api.rbs +4 -0
  384. data/sig/temporalio/cancellation.rbs +20 -0
  385. data/sig/temporalio/client/activity_execution.rbs +50 -0
  386. data/sig/temporalio/client/activity_execution_count.rbs +17 -0
  387. data/sig/temporalio/client/activity_execution_status.rbs +15 -0
  388. data/sig/temporalio/client/activity_handle.rbs +26 -0
  389. data/sig/temporalio/client/activity_id_reference.rbs +16 -0
  390. data/sig/temporalio/client/async_activity_handle.rbs +41 -0
  391. data/sig/temporalio/client/connection/cloud_service.rbs +315 -0
  392. data/sig/temporalio/client/connection/operator_service.rbs +59 -0
  393. data/sig/temporalio/client/connection/service.rbs +17 -0
  394. data/sig/temporalio/client/connection/test_service.rbs +35 -0
  395. data/sig/temporalio/client/connection/workflow_service.rbs +503 -0
  396. data/sig/temporalio/client/connection.rbs +156 -0
  397. data/sig/temporalio/client/interceptor.rbs +622 -0
  398. data/sig/temporalio/client/pending_activity_state.rbs +14 -0
  399. data/sig/temporalio/client/plugin.rbs +14 -0
  400. data/sig/temporalio/client/schedule.rbs +337 -0
  401. data/sig/temporalio/client/schedule_handle.rbs +44 -0
  402. data/sig/temporalio/client/with_start_workflow_operation.rbs +82 -0
  403. data/sig/temporalio/client/workflow_execution.rbs +37 -0
  404. data/sig/temporalio/client/workflow_execution_count.rbs +17 -0
  405. data/sig/temporalio/client/workflow_execution_status.rbs +16 -0
  406. data/sig/temporalio/client/workflow_handle.rbs +95 -0
  407. data/sig/temporalio/client/workflow_query_reject_condition.rbs +12 -0
  408. data/sig/temporalio/client/workflow_update_handle.rbs +26 -0
  409. data/sig/temporalio/client/workflow_update_wait_stage.rbs +12 -0
  410. data/sig/temporalio/client.rbs +271 -0
  411. data/sig/temporalio/common_enums.rbs +60 -0
  412. data/sig/temporalio/contrib/open_telemetry.rbs +74 -0
  413. data/sig/temporalio/converters/data_converter.rbs +32 -0
  414. data/sig/temporalio/converters/failure_converter.rbs +15 -0
  415. data/sig/temporalio/converters/payload_codec.rbs +8 -0
  416. data/sig/temporalio/converters/payload_converter/binary_null.rbs +9 -0
  417. data/sig/temporalio/converters/payload_converter/binary_plain.rbs +9 -0
  418. data/sig/temporalio/converters/payload_converter/binary_protobuf.rbs +9 -0
  419. data/sig/temporalio/converters/payload_converter/composite.rbs +16 -0
  420. data/sig/temporalio/converters/payload_converter/encoding.rbs +13 -0
  421. data/sig/temporalio/converters/payload_converter/json_plain.rbs +14 -0
  422. data/sig/temporalio/converters/payload_converter/json_protobuf.rbs +9 -0
  423. data/sig/temporalio/converters/payload_converter.rbs +24 -0
  424. data/sig/temporalio/converters/raw_value.rbs +9 -0
  425. data/sig/temporalio/converters.rbs +4 -0
  426. data/sig/temporalio/env_config.rbs +86 -0
  427. data/sig/temporalio/error/failure.rbs +170 -0
  428. data/sig/temporalio/error.rbs +88 -0
  429. data/sig/temporalio/internal/bridge/api/activity_result/activity_result.rbs +247 -0
  430. data/sig/temporalio/internal/bridge/api/activity_task/activity_task.rbs +372 -0
  431. data/sig/temporalio/internal/bridge/api/child_workflow/child_workflow.rbs +207 -0
  432. data/sig/temporalio/internal/bridge/api/common/common.rbs +173 -0
  433. data/sig/temporalio/internal/bridge/api/core_interface.rbs +231 -0
  434. data/sig/temporalio/internal/bridge/api/external_data/external_data.rbs +134 -0
  435. data/sig/temporalio/internal/bridge/api/nexus/nexus.rbs +285 -0
  436. data/sig/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rbs +1304 -0
  437. data/sig/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rbs +1526 -0
  438. data/sig/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rbs +156 -0
  439. data/sig/temporalio/internal/bridge/api.rbs +8 -0
  440. data/sig/temporalio/internal/bridge/client.rbs +148 -0
  441. data/sig/temporalio/internal/bridge/metric.rbs +28 -0
  442. data/sig/temporalio/internal/bridge/runtime.rbs +103 -0
  443. data/sig/temporalio/internal/bridge/testing.rbs +91 -0
  444. data/sig/temporalio/internal/bridge/worker.rbs +203 -0
  445. data/sig/temporalio/internal/bridge.rbs +36 -0
  446. data/sig/temporalio/internal/client/implementation.rbs +33 -0
  447. data/sig/temporalio/internal/google_protobuf.rbs +7 -0
  448. data/sig/temporalio/internal/metric.rbs +35 -0
  449. data/sig/temporalio/internal/proto_utils.rbs +94 -0
  450. data/sig/temporalio/internal/worker/activity_worker.rbs +64 -0
  451. data/sig/temporalio/internal/worker/multi_runner.rbs +132 -0
  452. data/sig/temporalio/internal/worker/workflow_instance/child_workflow_handle.rbs +22 -0
  453. data/sig/temporalio/internal/worker/workflow_instance/context.rbs +172 -0
  454. data/sig/temporalio/internal/worker/workflow_instance/details.rbs +43 -0
  455. data/sig/temporalio/internal/worker/workflow_instance/external_workflow_handle.rbs +15 -0
  456. data/sig/temporalio/internal/worker/workflow_instance/externally_immutable_hash.rbs +16 -0
  457. data/sig/temporalio/internal/worker/workflow_instance/handler_execution.rbs +19 -0
  458. data/sig/temporalio/internal/worker/workflow_instance/handler_hash.rbs +14 -0
  459. data/sig/temporalio/internal/worker/workflow_instance/illegal_call_tracer.rbs +20 -0
  460. data/sig/temporalio/internal/worker/workflow_instance/inbound_implementation.rbs +19 -0
  461. data/sig/temporalio/internal/worker/workflow_instance/nexus_client.rbs +25 -0
  462. data/sig/temporalio/internal/worker/workflow_instance/nexus_operation_handle.rbs +19 -0
  463. data/sig/temporalio/internal/worker/workflow_instance/outbound_implementation.rbs +35 -0
  464. data/sig/temporalio/internal/worker/workflow_instance/replay_safe_logger.rbs +16 -0
  465. data/sig/temporalio/internal/worker/workflow_instance/replay_safe_metric.rbs +15 -0
  466. data/sig/temporalio/internal/worker/workflow_instance/scheduler.rbs +52 -0
  467. data/sig/temporalio/internal/worker/workflow_instance.rbs +111 -0
  468. data/sig/temporalio/internal/worker/workflow_worker.rbs +99 -0
  469. data/sig/temporalio/internal/workflow_task_failure_error.rbs +6 -0
  470. data/sig/temporalio/internal.rbs +4 -0
  471. data/sig/temporalio/metric.rbs +55 -0
  472. data/sig/temporalio/priority.rbs +17 -0
  473. data/sig/temporalio/retry_policy.rbs +21 -0
  474. data/sig/temporalio/runtime/metric_buffer.rbs +49 -0
  475. data/sig/temporalio/runtime.rbs +129 -0
  476. data/sig/temporalio/scoped_logger.rbs +15 -0
  477. data/sig/temporalio/search_attributes.rbs +82 -0
  478. data/sig/temporalio/simple_plugin.rbs +65 -0
  479. data/sig/temporalio/testing/activity_environment.rbs +52 -0
  480. data/sig/temporalio/testing/workflow_environment.rbs +141 -0
  481. data/sig/temporalio/testing.rbs +4 -0
  482. data/sig/temporalio/version.rbs +3 -0
  483. data/sig/temporalio/versioning_override.rbs +17 -0
  484. data/sig/temporalio/worker/activity_executor/fiber.rbs +9 -0
  485. data/sig/temporalio/worker/activity_executor/thread_pool.rbs +11 -0
  486. data/sig/temporalio/worker/activity_executor.rbs +12 -0
  487. data/sig/temporalio/worker/deployment_options.rbs +17 -0
  488. data/sig/temporalio/worker/illegal_workflow_call_validator.rbs +25 -0
  489. data/sig/temporalio/worker/interceptor.rbs +373 -0
  490. data/sig/temporalio/worker/plugin.rbs +47 -0
  491. data/sig/temporalio/worker/poller_behavior.rbs +23 -0
  492. data/sig/temporalio/worker/thread_pool.rbs +44 -0
  493. data/sig/temporalio/worker/tuner.rbs +121 -0
  494. data/sig/temporalio/worker/workflow_executor/thread_pool.rbs +58 -0
  495. data/sig/temporalio/worker/workflow_executor.rbs +15 -0
  496. data/sig/temporalio/worker/workflow_replayer.rbs +105 -0
  497. data/sig/temporalio/worker.rbs +174 -0
  498. data/sig/temporalio/worker_deployment_version.rbs +17 -0
  499. data/sig/temporalio/workflow/activity_cancellation_type.rbs +11 -0
  500. data/sig/temporalio/workflow/child_workflow_cancellation_type.rbs +12 -0
  501. data/sig/temporalio/workflow/child_workflow_handle.rbs +18 -0
  502. data/sig/temporalio/workflow/definition.rbs +181 -0
  503. data/sig/temporalio/workflow/external_workflow_handle.rbs +17 -0
  504. data/sig/temporalio/workflow/future.rbs +24 -0
  505. data/sig/temporalio/workflow/handler_unfinished_policy.rbs +10 -0
  506. data/sig/temporalio/workflow/info.rbs +79 -0
  507. data/sig/temporalio/workflow/nexus_client.rbs +34 -0
  508. data/sig/temporalio/workflow/nexus_operation_cancellation_type.rbs +12 -0
  509. data/sig/temporalio/workflow/nexus_operation_handle.rbs +10 -0
  510. data/sig/temporalio/workflow/parent_close_policy.rbs +12 -0
  511. data/sig/temporalio/workflow/update_info.rbs +15 -0
  512. data/sig/temporalio/workflow.rbs +215 -0
  513. data/sig/temporalio/workflow_history.rbs +13 -0
  514. data/sig/temporalio.rbs +3 -0
  515. data/temporalio.gemspec +1 -1
  516. metadata +448 -2
@@ -193,12 +193,11 @@ module Temporalio
193
193
  # @return [String] Task queue to run the workflow on.
194
194
  # @!attribute static_summary
195
195
  # @return [String, nil] Fixed single-line summary for this workflow execution that may appear in CLI/UI.
196
- # This can be in single-line Temporal markdown format. This is currently experimental.
196
+ # This can be in single-line Temporal markdown format.
197
197
  # @!attribute static_details
198
198
  # @return [String, nil] Fixed details for this workflow execution that may appear in CLI/UI. This can be in
199
199
  # Temporal markdown format and can be multiple lines. This is a fixed value on the workflow that cannot be
200
- # updated. For details that can be updated, use {Workflow.current_details=} within the workflow. This is
201
- # currently experimental.
200
+ # updated. For details that can be updated, use {Workflow.current_details=} within the workflow.
202
201
  # @!attribute execution_timeout
203
202
  # @return [Float, nil] Total workflow execution timeout in seconds including retries and continue as new.
204
203
  # @!attribute run_timeout
@@ -231,11 +230,11 @@ module Temporalio
231
230
  # @param id [String] Unique identifier for the workflow execution.
232
231
  # @param task_queue [String] Task queue to run the workflow on.
233
232
  # @param static_summary [String, nil] Fixed single-line summary for this workflow execution that may appear
234
- # in CLI/UI. This can be in single-line Temporal markdown format. This is currently experimental.
233
+ # in CLI/UI. This can be in single-line Temporal markdown format.
235
234
  # @param static_details [String, nil] Fixed details for this workflow execution that may appear in CLI/UI.
236
235
  # This can be in Temporal markdown format and can be multiple lines. This is a fixed value on the workflow
237
236
  # that cannot be updated. For details that can be updated, use {Workflow.current_details=} within the
238
- # workflow. This is currently experimental.
237
+ # workflow.
239
238
  # @param execution_timeout [Float, nil] Total workflow execution timeout in seconds including retries and
240
239
  # continue as new.
241
240
  # @param run_timeout [Float, nil] Timeout of a single workflow run in seconds.
@@ -96,12 +96,12 @@ module Temporalio
96
96
  @data_converter = data_converter
97
97
  end
98
98
 
99
- # @return [String, nil] Static summary configured on the workflow. This is currently experimental.
99
+ # @return [String, nil] Static summary configured on the workflow.
100
100
  def static_summary
101
101
  user_metadata.first
102
102
  end
103
103
 
104
- # @return [String, nil] Static details configured on the workflow. This is currently experimental.
104
+ # @return [String, nil] Static details configured on the workflow.
105
105
  def static_details
106
106
  user_metadata.last
107
107
  end
@@ -92,7 +92,8 @@ module Temporalio
92
92
  skip_archival: true,
93
93
  specific_run_id: hist_run_id,
94
94
  rpc_options:
95
- ).next
95
+ ).find { true }
96
+ next unless event
96
97
 
97
98
  # Check each close type'
98
99
  case event.event_type
@@ -99,6 +99,9 @@ module Temporalio
99
99
  # @param dns_load_balancing [Connection::DnsLoadBalancingOptions, nil] DNS load balancing options for the
100
100
  # connection. Default is +nil+ (disabled). Silently disabled when +http_connect_proxy+ is set, since the two are
101
101
  # mutually exclusive.
102
+ # @param grpc_compression [Connection::GrpcCompressionOptions::Gzip, Connection::GrpcCompressionOptions::None]
103
+ # Transport-level gRPC compression. Defaults to gzip. Set to {Connection::GrpcCompressionOptions::None} to opt
104
+ # out.
102
105
  #
103
106
  # @return [Client] Connected client.
104
107
  #
@@ -121,7 +124,8 @@ module Temporalio
121
124
  http_connect_proxy: nil,
122
125
  runtime: Runtime.default,
123
126
  lazy_connect: false,
124
- dns_load_balancing: nil
127
+ dns_load_balancing: nil,
128
+ grpc_compression: Connection::GrpcCompressionOptions::Gzip.new
125
129
  )
126
130
  # Prepare connection. The connection var is needed here so it can be used in callback for plugin.
127
131
  base_connection = nil
@@ -138,16 +142,16 @@ module Temporalio
138
142
 
139
143
  # Root next call
140
144
  next_call_called = false
141
- next_call = proc do |options|
145
+ next_call = proc do |call_options|
142
146
  raise 'next_call called more than once' if next_call_called
143
147
 
144
148
  next_call_called = true
145
- block&.call(options)
149
+ block&.call(call_options)
146
150
  base_connection
147
151
  end
148
152
  # Go backwards, building up new next_call invocations on plugins
149
- next_call = plugins.reverse_each.reduce(next_call) do |next_call, plugin|
150
- proc { |options| plugin.connect_client(options, next_call) }
153
+ next_call = plugins.reverse_each.reduce(next_call) do |inner_next_call, plugin|
154
+ proc { |call_options| plugin.connect_client(call_options, inner_next_call) }
151
155
  end
152
156
  # Do call
153
157
  final_connection = next_call.call(options)
@@ -168,6 +172,7 @@ module Temporalio
168
172
  runtime:,
169
173
  lazy_connect:,
170
174
  dns_load_balancing:,
175
+ grpc_compression:,
171
176
  around_connect: # steep:ignore
172
177
  )
173
178
 
@@ -282,11 +287,10 @@ module Temporalio
282
287
  # @param id [String] Unique identifier for the workflow execution.
283
288
  # @param task_queue [String] Task queue to run the workflow on.
284
289
  # @param static_summary [String, nil] Fixed single-line summary for this workflow execution that may appear in
285
- # CLI/UI. This can be in single-line Temporal markdown format. This is currently experimental.
290
+ # CLI/UI. This can be in single-line Temporal markdown format.
286
291
  # @param static_details [String, nil] Fixed details for this workflow execution that may appear in CLI/UI. This can
287
292
  # be in Temporal markdown format and can be multiple lines. This is a fixed value on the workflow that cannot be
288
- # updated. For details that can be updated, use {Workflow.current_details=} within the workflow. This is currently
289
- # experimental.
293
+ # updated. For details that can be updated, use {Workflow.current_details=} within the workflow.
290
294
  # @param execution_timeout [Float, nil] Total workflow execution timeout in seconds including retries and continue
291
295
  # as new.
292
296
  # @param run_timeout [Float, nil] Timeout of a single workflow run in seconds.
@@ -375,11 +379,10 @@ module Temporalio
375
379
  # @param id [String] Unique identifier for the workflow execution.
376
380
  # @param task_queue [String] Task queue to run the workflow on.
377
381
  # @param static_summary [String, nil] Fixed single-line summary for this workflow execution that may appear in
378
- # CLI/UI. This can be in single-line Temporal markdown format. This is currently experimental.
382
+ # CLI/UI. This can be in single-line Temporal markdown format.
379
383
  # @param static_details [String, nil] Fixed details for this workflow execution that may appear in CLI/UI. This can
380
384
  # be in Temporal markdown format and can be multiple lines. This is a fixed value on the workflow that cannot be
381
- # updated. For details that can be updated, use {Workflow.current_details=} within the workflow. This is currently
382
- # experimental.
385
+ # updated. For details that can be updated, use {Workflow.current_details=} within the workflow.
383
386
  # @param execution_timeout [Float, nil] Total workflow execution timeout in seconds including retries and continue
384
387
  # as new.
385
388
  # @param run_timeout [Float, nil] Timeout of a single workflow run in seconds.
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'temporalio/api'
4
4
  require 'temporalio/converters/failure_converter'
5
+ require 'temporalio/converters/payload_codec'
5
6
  require 'temporalio/converters/payload_converter'
6
7
 
7
8
  module Temporalio
@@ -21,8 +21,11 @@ module Temporalio
21
21
  #
22
22
  # @param encode_common_attributes [Boolean] If +true+, the message and stack trace of the failure will be moved
23
23
  # into the encoded attribute section of the failure which can be encoded with a codec.
24
- def initialize(encode_common_attributes: false)
24
+ # @param process_common_attributes [Proc, nil] If present, called with the message and stack trace of failure
25
+ # before they are converted to a payload.
26
+ def initialize(encode_common_attributes: false, process_common_attributes: nil)
25
27
  @encode_common_attributes = encode_common_attributes
28
+ @process_common_attributes = process_common_attributes
26
29
  end
27
30
 
28
31
  # Convert a Ruby error to a Temporal failure.
@@ -104,9 +107,9 @@ module Temporalio
104
107
 
105
108
  # If encoding common attributes, move message and stack trace
106
109
  if @encode_common_attributes
107
- failure.encoded_attributes = converter.to_payload(
108
- { message: failure.message, stack_trace: failure.stack_trace }
109
- )
110
+ common_attributes = { message: failure.message, stack_trace: failure.stack_trace }
111
+ common_attributes = @process_common_attributes.call(common_attributes) if @process_common_attributes
112
+ failure.encoded_attributes = converter.to_payload(common_attributes)
110
113
  failure.message = 'Encoded failure'
111
114
  failure.stack_trace = ''
112
115
  end
@@ -7,7 +7,7 @@ require 'google/protobuf'
7
7
  require 'google/protobuf/duration_pb'
8
8
 
9
9
 
10
- descriptor_data = "\n%temporal/sdk/core/common/common.proto\x12\x0e\x63oresdk.common\x1a\x1egoogle/protobuf/duration.proto\"U\n\x1bNamespacedWorkflowExecution\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\t\"D\n\x17WorkerDeploymentVersion\x12\x17\n\x0f\x64\x65ployment_name\x18\x01 \x01(\t\x12\x10\n\x08\x62uild_id\x18\x02 \x01(\t*@\n\x10VersioningIntent\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0e\n\nCOMPATIBLE\x10\x01\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x02\x42,\xea\x02)Temporalio::Internal::Bridge::Api::Commonb\x06proto3"
10
+ descriptor_data = "\n%temporal/sdk/core/common/common.proto\x12\x0e\x63oresdk.common\x1a\x1egoogle/protobuf/duration.proto\"U\n\x1bNamespacedWorkflowExecution\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\t\"D\n\x17WorkerDeploymentVersion\x12\x17\n\x0f\x64\x65ployment_name\x18\x01 \x01(\t\x12\x10\n\x08\x62uild_id\x18\x02 \x01(\t\"\x92\x01\n\x16\x45xternalStorageMetrics\x12\x15\n\rpayload_count\x18\x01 \x01(\x04\x12\x18\n\x10total_size_bytes\x18\x02 \x01(\x04\x12\x31\n\x0etotal_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x14\n\x0c\x64river_names\x18\x04 \x03(\t*@\n\x10VersioningIntent\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0e\n\nCOMPATIBLE\x10\x01\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x02\x42,\xea\x02)Temporalio::Internal::Bridge::Api::Commonb\x06proto3"
11
11
 
12
12
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
13
13
  pool.add_serialized_file(descriptor_data)
@@ -19,6 +19,7 @@ module Temporalio
19
19
  module Common
20
20
  NamespacedWorkflowExecution = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.common.NamespacedWorkflowExecution").msgclass
21
21
  WorkerDeploymentVersion = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.common.WorkerDeploymentVersion").msgclass
22
+ ExternalStorageMetrics = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.common.ExternalStorageMetrics").msgclass
22
23
  VersioningIntent = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("coresdk.common.VersioningIntent").enummodule
23
24
  end
24
25
  end
@@ -16,7 +16,7 @@ require 'temporalio/internal/bridge/api/nexus/nexus'
16
16
  require 'temporalio/internal/bridge/api/common/common'
17
17
 
18
18
 
19
- descriptor_data = "\n;temporal/sdk/core/workflow_commands/workflow_commands.proto\x12\x19\x63oresdk.workflow_commands\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a$temporal/api/common/v1/message.proto\x1a$temporal/api/enums/v1/workflow.proto\x1a%temporal/api/failure/v1/message.proto\x1a\'temporal/api/sdk/v1/user_metadata.proto\x1a\x35temporal/sdk/core/child_workflow/child_workflow.proto\x1a#temporal/sdk/core/nexus/nexus.proto\x1a%temporal/sdk/core/common/common.proto\"\xe5\x0f\n\x0fWorkflowCommand\x12\x38\n\ruser_metadata\x18\x64 \x01(\x0b\x32!.temporal.api.sdk.v1.UserMetadata\x12<\n\x0bstart_timer\x18\x01 \x01(\x0b\x32%.coresdk.workflow_commands.StartTimerH\x00\x12H\n\x11schedule_activity\x18\x02 \x01(\x0b\x32+.coresdk.workflow_commands.ScheduleActivityH\x00\x12\x42\n\x10respond_to_query\x18\x03 \x01(\x0b\x32&.coresdk.workflow_commands.QueryResultH\x00\x12S\n\x17request_cancel_activity\x18\x04 \x01(\x0b\x32\x30.coresdk.workflow_commands.RequestCancelActivityH\x00\x12>\n\x0c\x63\x61ncel_timer\x18\x05 \x01(\x0b\x32&.coresdk.workflow_commands.CancelTimerH\x00\x12[\n\x1b\x63omplete_workflow_execution\x18\x06 \x01(\x0b\x32\x34.coresdk.workflow_commands.CompleteWorkflowExecutionH\x00\x12S\n\x17\x66\x61il_workflow_execution\x18\x07 \x01(\x0b\x32\x30.coresdk.workflow_commands.FailWorkflowExecutionH\x00\x12g\n\"continue_as_new_workflow_execution\x18\x08 \x01(\x0b\x32\x39.coresdk.workflow_commands.ContinueAsNewWorkflowExecutionH\x00\x12W\n\x19\x63\x61ncel_workflow_execution\x18\t \x01(\x0b\x32\x32.coresdk.workflow_commands.CancelWorkflowExecutionH\x00\x12\x45\n\x10set_patch_marker\x18\n \x01(\x0b\x32).coresdk.workflow_commands.SetPatchMarkerH\x00\x12`\n\x1estart_child_workflow_execution\x18\x0b \x01(\x0b\x32\x36.coresdk.workflow_commands.StartChildWorkflowExecutionH\x00\x12\x62\n\x1f\x63\x61ncel_child_workflow_execution\x18\x0c \x01(\x0b\x32\x37.coresdk.workflow_commands.CancelChildWorkflowExecutionH\x00\x12w\n*request_cancel_external_workflow_execution\x18\r \x01(\x0b\x32\x41.coresdk.workflow_commands.RequestCancelExternalWorkflowExecutionH\x00\x12h\n\"signal_external_workflow_execution\x18\x0e \x01(\x0b\x32:.coresdk.workflow_commands.SignalExternalWorkflowExecutionH\x00\x12Q\n\x16\x63\x61ncel_signal_workflow\x18\x0f \x01(\x0b\x32/.coresdk.workflow_commands.CancelSignalWorkflowH\x00\x12S\n\x17schedule_local_activity\x18\x10 \x01(\x0b\x32\x30.coresdk.workflow_commands.ScheduleLocalActivityH\x00\x12^\n\x1drequest_cancel_local_activity\x18\x11 \x01(\x0b\x32\x35.coresdk.workflow_commands.RequestCancelLocalActivityH\x00\x12\x66\n!upsert_workflow_search_attributes\x18\x12 \x01(\x0b\x32\x39.coresdk.workflow_commands.UpsertWorkflowSearchAttributesH\x00\x12Y\n\x1amodify_workflow_properties\x18\x13 \x01(\x0b\x32\x33.coresdk.workflow_commands.ModifyWorkflowPropertiesH\x00\x12\x44\n\x0fupdate_response\x18\x14 \x01(\x0b\x32).coresdk.workflow_commands.UpdateResponseH\x00\x12U\n\x18schedule_nexus_operation\x18\x15 \x01(\x0b\x32\x31.coresdk.workflow_commands.ScheduleNexusOperationH\x00\x12`\n\x1erequest_cancel_nexus_operation\x18\x16 \x01(\x0b\x32\x36.coresdk.workflow_commands.RequestCancelNexusOperationH\x00\x42\t\n\x07variant\"S\n\nStartTimer\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x38\n\x15start_to_fire_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x1a\n\x0b\x43\x61ncelTimer\x12\x0b\n\x03seq\x18\x01 \x01(\r\"\xb8\x06\n\x10ScheduleActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x13\n\x0b\x61\x63tivity_id\x18\x02 \x01(\t\x12\x15\n\ractivity_type\x18\x03 \x01(\t\x12\x12\n\ntask_queue\x18\x05 \x01(\t\x12I\n\x07headers\x18\x06 \x03(\x0b\x32\x38.coresdk.workflow_commands.ScheduleActivity.HeadersEntry\x12\x32\n\targuments\x18\x07 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12<\n\x19schedule_to_close_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x19schedule_to_start_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x11heartbeat_timeout\x18\x0b \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x0cretry_policy\x18\x0c \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12N\n\x11\x63\x61ncellation_type\x18\r \x01(\x0e\x32\x33.coresdk.workflow_commands.ActivityCancellationType\x12\x1e\n\x16\x64o_not_eagerly_execute\x18\x0e \x01(\x08\x12;\n\x11versioning_intent\x18\x0f \x01(\x0e\x32 .coresdk.common.VersioningIntent\x12\x32\n\x08priority\x18\x10 \x01(\x0b\x32 .temporal.api.common.v1.Priority\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"\xee\x05\n\x15ScheduleLocalActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x13\n\x0b\x61\x63tivity_id\x18\x02 \x01(\t\x12\x15\n\ractivity_type\x18\x03 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\r\x12:\n\x16original_schedule_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12N\n\x07headers\x18\x06 \x03(\x0b\x32=.coresdk.workflow_commands.ScheduleLocalActivity.HeadersEntry\x12\x32\n\targuments\x18\x07 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12<\n\x19schedule_to_close_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x19schedule_to_start_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x0cretry_policy\x18\x0b \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12\x38\n\x15local_retry_threshold\x18\x0c \x01(\x0b\x32\x19.google.protobuf.Duration\x12N\n\x11\x63\x61ncellation_type\x18\r \x01(\x0e\x32\x33.coresdk.workflow_commands.ActivityCancellationType\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"$\n\x15RequestCancelActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r\")\n\x1aRequestCancelLocalActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r\"\x9c\x01\n\x0bQueryResult\x12\x10\n\x08query_id\x18\x01 \x01(\t\x12<\n\tsucceeded\x18\x02 \x01(\x0b\x32\'.coresdk.workflow_commands.QuerySuccessH\x00\x12\x32\n\x06\x66\x61iled\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.FailureH\x00\x42\t\n\x07variant\"A\n\x0cQuerySuccess\x12\x31\n\x08response\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\"L\n\x19\x43ompleteWorkflowExecution\x12/\n\x06result\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\"J\n\x15\x46\x61ilWorkflowExecution\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\"\xd7\x06\n\x1e\x43ontinueAsNewWorkflowExecution\x12\x15\n\rworkflow_type\x18\x01 \x01(\t\x12\x12\n\ntask_queue\x18\x02 \x01(\t\x12\x32\n\targuments\x18\x03 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\x14workflow_run_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12Q\n\x04memo\x18\x06 \x03(\x0b\x32\x43.coresdk.workflow_commands.ContinueAsNewWorkflowExecution.MemoEntry\x12W\n\x07headers\x18\x07 \x03(\x0b\x32\x46.coresdk.workflow_commands.ContinueAsNewWorkflowExecution.HeadersEntry\x12\x43\n\x11search_attributes\x18\x08 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\x12\x39\n\x0cretry_policy\x18\t \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12;\n\x11versioning_intent\x18\n \x01(\x0e\x32 .coresdk.common.VersioningIntent\x12[\n\x1binitial_versioning_behavior\x18\x0b \x01(\x0e\x32\x36.temporal.api.enums.v1.ContinueAsNewVersioningBehavior\x1aL\n\tMemoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"\x19\n\x17\x43\x61ncelWorkflowExecution\"6\n\x0eSetPatchMarker\x12\x10\n\x08patch_id\x18\x01 \x01(\t\x12\x12\n\ndeprecated\x18\x02 \x01(\x08\"\x96\t\n\x1bStartChildWorkflowExecution\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x03 \x01(\t\x12\x15\n\rworkflow_type\x18\x04 \x01(\t\x12\x12\n\ntask_queue\x18\x05 \x01(\t\x12.\n\x05input\x18\x06 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12=\n\x1aworkflow_execution_timeout\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\x14workflow_run_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x46\n\x13parent_close_policy\x18\n \x01(\x0e\x32).coresdk.child_workflow.ParentClosePolicy\x12N\n\x18workflow_id_reuse_policy\x18\x0c \x01(\x0e\x32,.temporal.api.enums.v1.WorkflowIdReusePolicy\x12\x39\n\x0cretry_policy\x18\r \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12\x15\n\rcron_schedule\x18\x0e \x01(\t\x12T\n\x07headers\x18\x0f \x03(\x0b\x32\x43.coresdk.workflow_commands.StartChildWorkflowExecution.HeadersEntry\x12N\n\x04memo\x18\x10 \x03(\x0b\x32@.coresdk.workflow_commands.StartChildWorkflowExecution.MemoEntry\x12\x43\n\x11search_attributes\x18\x11 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\x12P\n\x11\x63\x61ncellation_type\x18\x12 \x01(\x0e\x32\x35.coresdk.child_workflow.ChildWorkflowCancellationType\x12;\n\x11versioning_intent\x18\x13 \x01(\x0e\x32 .coresdk.common.VersioningIntent\x12\x32\n\x08priority\x18\x14 \x01(\x0b\x32 .temporal.api.common.v1.Priority\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aL\n\tMemoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"J\n\x1c\x43\x61ncelChildWorkflowExecution\x12\x1a\n\x12\x63hild_workflow_seq\x18\x01 \x01(\r\x12\x0e\n\x06reason\x18\x02 \x01(\t\"\x8e\x01\n&RequestCancelExternalWorkflowExecution\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12G\n\x12workflow_execution\x18\x02 \x01(\x0b\x32+.coresdk.common.NamespacedWorkflowExecution\x12\x0e\n\x06reason\x18\x03 \x01(\t\"\x8f\x03\n\x1fSignalExternalWorkflowExecution\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12I\n\x12workflow_execution\x18\x02 \x01(\x0b\x32+.coresdk.common.NamespacedWorkflowExecutionH\x00\x12\x1b\n\x11\x63hild_workflow_id\x18\x03 \x01(\tH\x00\x12\x13\n\x0bsignal_name\x18\x04 \x01(\t\x12-\n\x04\x61rgs\x18\x05 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12X\n\x07headers\x18\x06 \x03(\x0b\x32G.coresdk.workflow_commands.SignalExternalWorkflowExecution.HeadersEntry\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x42\x08\n\x06target\"#\n\x14\x43\x61ncelSignalWorkflow\x12\x0b\n\x03seq\x18\x01 \x01(\r\"e\n\x1eUpsertWorkflowSearchAttributes\x12\x43\n\x11search_attributes\x18\x01 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\"O\n\x18ModifyWorkflowProperties\x12\x33\n\rupserted_memo\x18\x01 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo\"\xd2\x01\n\x0eUpdateResponse\x12\x1c\n\x14protocol_instance_id\x18\x01 \x01(\t\x12*\n\x08\x61\x63\x63\x65pted\x18\x02 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12\x34\n\x08rejected\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.FailureH\x00\x12\x34\n\tcompleted\x18\x04 \x01(\x0b\x32\x1f.temporal.api.common.v1.PayloadH\x00\x42\n\n\x08response\"\x9a\x04\n\x16ScheduleNexusOperation\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x10\n\x08\x65ndpoint\x18\x02 \x01(\t\x12\x0f\n\x07service\x18\x03 \x01(\t\x12\x11\n\toperation\x18\x04 \x01(\t\x12.\n\x05input\x18\x05 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12<\n\x19schedule_to_close_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12X\n\x0cnexus_header\x18\x07 \x03(\x0b\x32\x42.coresdk.workflow_commands.ScheduleNexusOperation.NexusHeaderEntry\x12H\n\x11\x63\x61ncellation_type\x18\x08 \x01(\x0e\x32-.coresdk.nexus.NexusOperationCancellationType\x12<\n\x19schedule_to_start_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x32\n\x10NexusHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"*\n\x1bRequestCancelNexusOperation\x12\x0b\n\x03seq\x18\x01 \x01(\r*X\n\x18\x41\x63tivityCancellationType\x12\x0e\n\nTRY_CANCEL\x10\x00\x12\x1f\n\x1bWAIT_CANCELLATION_COMPLETED\x10\x01\x12\x0b\n\x07\x41\x42\x41NDON\x10\x02\x42\x36\xea\x02\x33Temporalio::Internal::Bridge::Api::WorkflowCommandsb\x06proto3"
19
+ descriptor_data = "\n;temporal/sdk/core/workflow_commands/workflow_commands.proto\x12\x19\x63oresdk.workflow_commands\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a$temporal/api/common/v1/message.proto\x1a$temporal/api/enums/v1/workflow.proto\x1a%temporal/api/failure/v1/message.proto\x1a\'temporal/api/sdk/v1/user_metadata.proto\x1a\x35temporal/sdk/core/child_workflow/child_workflow.proto\x1a#temporal/sdk/core/nexus/nexus.proto\x1a%temporal/sdk/core/common/common.proto\"\xe5\x0f\n\x0fWorkflowCommand\x12\x38\n\ruser_metadata\x18\x64 \x01(\x0b\x32!.temporal.api.sdk.v1.UserMetadata\x12<\n\x0bstart_timer\x18\x01 \x01(\x0b\x32%.coresdk.workflow_commands.StartTimerH\x00\x12H\n\x11schedule_activity\x18\x02 \x01(\x0b\x32+.coresdk.workflow_commands.ScheduleActivityH\x00\x12\x42\n\x10respond_to_query\x18\x03 \x01(\x0b\x32&.coresdk.workflow_commands.QueryResultH\x00\x12S\n\x17request_cancel_activity\x18\x04 \x01(\x0b\x32\x30.coresdk.workflow_commands.RequestCancelActivityH\x00\x12>\n\x0c\x63\x61ncel_timer\x18\x05 \x01(\x0b\x32&.coresdk.workflow_commands.CancelTimerH\x00\x12[\n\x1b\x63omplete_workflow_execution\x18\x06 \x01(\x0b\x32\x34.coresdk.workflow_commands.CompleteWorkflowExecutionH\x00\x12S\n\x17\x66\x61il_workflow_execution\x18\x07 \x01(\x0b\x32\x30.coresdk.workflow_commands.FailWorkflowExecutionH\x00\x12g\n\"continue_as_new_workflow_execution\x18\x08 \x01(\x0b\x32\x39.coresdk.workflow_commands.ContinueAsNewWorkflowExecutionH\x00\x12W\n\x19\x63\x61ncel_workflow_execution\x18\t \x01(\x0b\x32\x32.coresdk.workflow_commands.CancelWorkflowExecutionH\x00\x12\x45\n\x10set_patch_marker\x18\n \x01(\x0b\x32).coresdk.workflow_commands.SetPatchMarkerH\x00\x12`\n\x1estart_child_workflow_execution\x18\x0b \x01(\x0b\x32\x36.coresdk.workflow_commands.StartChildWorkflowExecutionH\x00\x12\x62\n\x1f\x63\x61ncel_child_workflow_execution\x18\x0c \x01(\x0b\x32\x37.coresdk.workflow_commands.CancelChildWorkflowExecutionH\x00\x12w\n*request_cancel_external_workflow_execution\x18\r \x01(\x0b\x32\x41.coresdk.workflow_commands.RequestCancelExternalWorkflowExecutionH\x00\x12h\n\"signal_external_workflow_execution\x18\x0e \x01(\x0b\x32:.coresdk.workflow_commands.SignalExternalWorkflowExecutionH\x00\x12Q\n\x16\x63\x61ncel_signal_workflow\x18\x0f \x01(\x0b\x32/.coresdk.workflow_commands.CancelSignalWorkflowH\x00\x12S\n\x17schedule_local_activity\x18\x10 \x01(\x0b\x32\x30.coresdk.workflow_commands.ScheduleLocalActivityH\x00\x12^\n\x1drequest_cancel_local_activity\x18\x11 \x01(\x0b\x32\x35.coresdk.workflow_commands.RequestCancelLocalActivityH\x00\x12\x66\n!upsert_workflow_search_attributes\x18\x12 \x01(\x0b\x32\x39.coresdk.workflow_commands.UpsertWorkflowSearchAttributesH\x00\x12Y\n\x1amodify_workflow_properties\x18\x13 \x01(\x0b\x32\x33.coresdk.workflow_commands.ModifyWorkflowPropertiesH\x00\x12\x44\n\x0fupdate_response\x18\x14 \x01(\x0b\x32).coresdk.workflow_commands.UpdateResponseH\x00\x12U\n\x18schedule_nexus_operation\x18\x15 \x01(\x0b\x32\x31.coresdk.workflow_commands.ScheduleNexusOperationH\x00\x12`\n\x1erequest_cancel_nexus_operation\x18\x16 \x01(\x0b\x32\x36.coresdk.workflow_commands.RequestCancelNexusOperationH\x00\x42\t\n\x07variant\"S\n\nStartTimer\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x38\n\x15start_to_fire_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x1a\n\x0b\x43\x61ncelTimer\x12\x0b\n\x03seq\x18\x01 \x01(\r\"\xb8\x06\n\x10ScheduleActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x13\n\x0b\x61\x63tivity_id\x18\x02 \x01(\t\x12\x15\n\ractivity_type\x18\x03 \x01(\t\x12\x12\n\ntask_queue\x18\x05 \x01(\t\x12I\n\x07headers\x18\x06 \x03(\x0b\x32\x38.coresdk.workflow_commands.ScheduleActivity.HeadersEntry\x12\x32\n\targuments\x18\x07 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12<\n\x19schedule_to_close_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x19schedule_to_start_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x11heartbeat_timeout\x18\x0b \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x0cretry_policy\x18\x0c \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12N\n\x11\x63\x61ncellation_type\x18\r \x01(\x0e\x32\x33.coresdk.workflow_commands.ActivityCancellationType\x12\x1e\n\x16\x64o_not_eagerly_execute\x18\x0e \x01(\x08\x12;\n\x11versioning_intent\x18\x0f \x01(\x0e\x32 .coresdk.common.VersioningIntent\x12\x32\n\x08priority\x18\x10 \x01(\x0b\x32 .temporal.api.common.v1.Priority\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"\xee\x05\n\x15ScheduleLocalActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x13\n\x0b\x61\x63tivity_id\x18\x02 \x01(\t\x12\x15\n\ractivity_type\x18\x03 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\r\x12:\n\x16original_schedule_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12N\n\x07headers\x18\x06 \x03(\x0b\x32=.coresdk.workflow_commands.ScheduleLocalActivity.HeadersEntry\x12\x32\n\targuments\x18\x07 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12<\n\x19schedule_to_close_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x19schedule_to_start_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x0cretry_policy\x18\x0b \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12\x38\n\x15local_retry_threshold\x18\x0c \x01(\x0b\x32\x19.google.protobuf.Duration\x12N\n\x11\x63\x61ncellation_type\x18\r \x01(\x0e\x32\x33.coresdk.workflow_commands.ActivityCancellationType\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"$\n\x15RequestCancelActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r\")\n\x1aRequestCancelLocalActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r\"\x9c\x01\n\x0bQueryResult\x12\x10\n\x08query_id\x18\x01 \x01(\t\x12<\n\tsucceeded\x18\x02 \x01(\x0b\x32\'.coresdk.workflow_commands.QuerySuccessH\x00\x12\x32\n\x06\x66\x61iled\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.FailureH\x00\x42\t\n\x07variant\"A\n\x0cQuerySuccess\x12\x31\n\x08response\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\"L\n\x19\x43ompleteWorkflowExecution\x12/\n\x06result\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\"J\n\x15\x46\x61ilWorkflowExecution\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\"\x92\x07\n\x1e\x43ontinueAsNewWorkflowExecution\x12\x15\n\rworkflow_type\x18\x01 \x01(\t\x12\x12\n\ntask_queue\x18\x02 \x01(\t\x12\x32\n\targuments\x18\x03 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\x14workflow_run_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12Q\n\x04memo\x18\x06 \x03(\x0b\x32\x43.coresdk.workflow_commands.ContinueAsNewWorkflowExecution.MemoEntry\x12W\n\x07headers\x18\x07 \x03(\x0b\x32\x46.coresdk.workflow_commands.ContinueAsNewWorkflowExecution.HeadersEntry\x12\x43\n\x11search_attributes\x18\x08 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\x12\x39\n\x0cretry_policy\x18\t \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12;\n\x11versioning_intent\x18\n \x01(\x0e\x32 .coresdk.common.VersioningIntent\x12[\n\x1binitial_versioning_behavior\x18\x0b \x01(\x0e\x32\x36.temporal.api.enums.v1.ContinueAsNewVersioningBehavior\x12\x39\n\x16\x62\x61\x63koff_start_interval\x18\x0c \x01(\x0b\x32\x19.google.protobuf.Duration\x1aL\n\tMemoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"\x19\n\x17\x43\x61ncelWorkflowExecution\"6\n\x0eSetPatchMarker\x12\x10\n\x08patch_id\x18\x01 \x01(\t\x12\x12\n\ndeprecated\x18\x02 \x01(\x08\"\x96\t\n\x1bStartChildWorkflowExecution\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x03 \x01(\t\x12\x15\n\rworkflow_type\x18\x04 \x01(\t\x12\x12\n\ntask_queue\x18\x05 \x01(\t\x12.\n\x05input\x18\x06 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12=\n\x1aworkflow_execution_timeout\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\x14workflow_run_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x46\n\x13parent_close_policy\x18\n \x01(\x0e\x32).coresdk.child_workflow.ParentClosePolicy\x12N\n\x18workflow_id_reuse_policy\x18\x0c \x01(\x0e\x32,.temporal.api.enums.v1.WorkflowIdReusePolicy\x12\x39\n\x0cretry_policy\x18\r \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12\x15\n\rcron_schedule\x18\x0e \x01(\t\x12T\n\x07headers\x18\x0f \x03(\x0b\x32\x43.coresdk.workflow_commands.StartChildWorkflowExecution.HeadersEntry\x12N\n\x04memo\x18\x10 \x03(\x0b\x32@.coresdk.workflow_commands.StartChildWorkflowExecution.MemoEntry\x12\x43\n\x11search_attributes\x18\x11 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\x12P\n\x11\x63\x61ncellation_type\x18\x12 \x01(\x0e\x32\x35.coresdk.child_workflow.ChildWorkflowCancellationType\x12;\n\x11versioning_intent\x18\x13 \x01(\x0e\x32 .coresdk.common.VersioningIntent\x12\x32\n\x08priority\x18\x14 \x01(\x0b\x32 .temporal.api.common.v1.Priority\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aL\n\tMemoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"J\n\x1c\x43\x61ncelChildWorkflowExecution\x12\x1a\n\x12\x63hild_workflow_seq\x18\x01 \x01(\r\x12\x0e\n\x06reason\x18\x02 \x01(\t\"\x8e\x01\n&RequestCancelExternalWorkflowExecution\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12G\n\x12workflow_execution\x18\x02 \x01(\x0b\x32+.coresdk.common.NamespacedWorkflowExecution\x12\x0e\n\x06reason\x18\x03 \x01(\t\"\x8f\x03\n\x1fSignalExternalWorkflowExecution\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12I\n\x12workflow_execution\x18\x02 \x01(\x0b\x32+.coresdk.common.NamespacedWorkflowExecutionH\x00\x12\x1b\n\x11\x63hild_workflow_id\x18\x03 \x01(\tH\x00\x12\x13\n\x0bsignal_name\x18\x04 \x01(\t\x12-\n\x04\x61rgs\x18\x05 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12X\n\x07headers\x18\x06 \x03(\x0b\x32G.coresdk.workflow_commands.SignalExternalWorkflowExecution.HeadersEntry\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x42\x08\n\x06target\"#\n\x14\x43\x61ncelSignalWorkflow\x12\x0b\n\x03seq\x18\x01 \x01(\r\"e\n\x1eUpsertWorkflowSearchAttributes\x12\x43\n\x11search_attributes\x18\x01 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\"O\n\x18ModifyWorkflowProperties\x12\x33\n\rupserted_memo\x18\x01 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo\"\xd2\x01\n\x0eUpdateResponse\x12\x1c\n\x14protocol_instance_id\x18\x01 \x01(\t\x12*\n\x08\x61\x63\x63\x65pted\x18\x02 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12\x34\n\x08rejected\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.FailureH\x00\x12\x34\n\tcompleted\x18\x04 \x01(\x0b\x32\x1f.temporal.api.common.v1.PayloadH\x00\x42\n\n\x08response\"\x9a\x04\n\x16ScheduleNexusOperation\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x10\n\x08\x65ndpoint\x18\x02 \x01(\t\x12\x0f\n\x07service\x18\x03 \x01(\t\x12\x11\n\toperation\x18\x04 \x01(\t\x12.\n\x05input\x18\x05 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12<\n\x19schedule_to_close_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12X\n\x0cnexus_header\x18\x07 \x03(\x0b\x32\x42.coresdk.workflow_commands.ScheduleNexusOperation.NexusHeaderEntry\x12H\n\x11\x63\x61ncellation_type\x18\x08 \x01(\x0e\x32-.coresdk.nexus.NexusOperationCancellationType\x12<\n\x19schedule_to_start_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x32\n\x10NexusHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"*\n\x1bRequestCancelNexusOperation\x12\x0b\n\x03seq\x18\x01 \x01(\r*X\n\x18\x41\x63tivityCancellationType\x12\x0e\n\nTRY_CANCEL\x10\x00\x12\x1f\n\x1bWAIT_CANCELLATION_COMPLETED\x10\x01\x12\x0b\n\x07\x41\x42\x41NDON\x10\x02\x42\x36\xea\x02\x33Temporalio::Internal::Bridge::Api::WorkflowCommandsb\x06proto3"
20
20
 
21
21
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
22
22
  pool.add_serialized_file(descriptor_data)
@@ -11,7 +11,7 @@ require 'temporalio/internal/bridge/api/common/common'
11
11
  require 'temporalio/internal/bridge/api/workflow_commands/workflow_commands'
12
12
 
13
13
 
14
- descriptor_data = "\n?temporal/sdk/core/workflow_completion/workflow_completion.proto\x12\x1b\x63oresdk.workflow_completion\x1a%temporal/api/failure/v1/message.proto\x1a(temporal/api/enums/v1/failed_cause.proto\x1a$temporal/api/enums/v1/workflow.proto\x1a%temporal/sdk/core/common/common.proto\x1a;temporal/sdk/core/workflow_commands/workflow_commands.proto\"\xac\x01\n\x1cWorkflowActivationCompletion\x12\x0e\n\x06run_id\x18\x01 \x01(\t\x12:\n\nsuccessful\x18\x02 \x01(\x0b\x32$.coresdk.workflow_completion.SuccessH\x00\x12\x36\n\x06\x66\x61iled\x18\x03 \x01(\x0b\x32$.coresdk.workflow_completion.FailureH\x00\x42\x08\n\x06status\"\xac\x01\n\x07Success\x12<\n\x08\x63ommands\x18\x01 \x03(\x0b\x32*.coresdk.workflow_commands.WorkflowCommand\x12\x1b\n\x13used_internal_flags\x18\x06 \x03(\r\x12\x46\n\x13versioning_behavior\x18\x07 \x01(\x0e\x32).temporal.api.enums.v1.VersioningBehavior\"\x81\x01\n\x07\x46\x61ilure\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x43\n\x0b\x66orce_cause\x18\x02 \x01(\x0e\x32..temporal.api.enums.v1.WorkflowTaskFailedCauseB8\xea\x02\x35Temporalio::Internal::Bridge::Api::WorkflowCompletionb\x06proto3"
14
+ descriptor_data = "\n?temporal/sdk/core/workflow_completion/workflow_completion.proto\x12\x1b\x63oresdk.workflow_completion\x1a%temporal/api/failure/v1/message.proto\x1a(temporal/api/enums/v1/failed_cause.proto\x1a$temporal/api/enums/v1/workflow.proto\x1a%temporal/sdk/core/common/common.proto\x1a;temporal/sdk/core/workflow_commands/workflow_commands.proto\"\xbe\x02\n\x1cWorkflowActivationCompletion\x12\x0e\n\x06run_id\x18\x01 \x01(\t\x12:\n\nsuccessful\x18\x02 \x01(\x0b\x32$.coresdk.workflow_completion.SuccessH\x00\x12\x36\n\x06\x66\x61iled\x18\x03 \x01(\x0b\x32$.coresdk.workflow_completion.FailureH\x00\x12H\n\x18payload_download_metrics\x18\x04 \x01(\x0b\x32&.coresdk.common.ExternalStorageMetrics\x12\x46\n\x16payload_upload_metrics\x18\x05 \x01(\x0b\x32&.coresdk.common.ExternalStorageMetricsB\x08\n\x06status\"\xac\x01\n\x07Success\x12<\n\x08\x63ommands\x18\x01 \x03(\x0b\x32*.coresdk.workflow_commands.WorkflowCommand\x12\x1b\n\x13used_internal_flags\x18\x06 \x03(\r\x12\x46\n\x13versioning_behavior\x18\x07 \x01(\x0e\x32).temporal.api.enums.v1.VersioningBehavior\"\x81\x01\n\x07\x46\x61ilure\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x43\n\x0b\x66orce_cause\x18\x02 \x01(\x0e\x32..temporal.api.enums.v1.WorkflowTaskFailedCauseB8\xea\x02\x35Temporalio::Internal::Bridge::Api::WorkflowCompletionb\x06proto3"
15
15
 
16
16
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
17
17
  pool.add_serialized_file(descriptor_data)
@@ -17,7 +17,10 @@ module Temporalio
17
17
  :rpc_retry,
18
18
  :keep_alive, # Optional
19
19
  :http_connect_proxy, # Optional
20
- :dns_load_balancing # Optional
20
+ :dns_load_balancing, # Optional
21
+ :grpc_compression,
22
+ :payloads_warn_size,
23
+ :memo_warn_size
21
24
  )
22
25
 
23
26
  TLSOptions = Struct.new(
@@ -51,6 +54,10 @@ module Temporalio
51
54
  :resolution_interval
52
55
  )
53
56
 
57
+ GrpcCompressionOptions = Struct.new(
58
+ :codec
59
+ )
60
+
54
61
  def self.new(runtime, options)
55
62
  queue = Queue.new
56
63
  async_new(runtime, options, queue)
@@ -6,7 +6,9 @@ module Temporalio
6
6
  class Runtime
7
7
  Options = Struct.new(
8
8
  :telemetry,
9
- :worker_heartbeat_interval
9
+ :worker_heartbeat_interval,
10
+ :disable_environment_info,
11
+ :runtime_version
10
12
  )
11
13
 
12
14
  TelemetryOptions = Struct.new(
@@ -16,6 +18,7 @@ module Temporalio
16
18
 
17
19
  LoggingOptions = Struct.new(
18
20
  :log_filter,
21
+ :log_format,
19
22
  :forward_to # Optional
20
23
  )
21
24
 
@@ -24,11 +24,13 @@ module Temporalio
24
24
  :default_heartbeat_throttle_interval,
25
25
  :max_worker_activities_per_second,
26
26
  :max_task_queue_activities_per_second,
27
+ :max_eager_activity_reservations_per_workflow_task,
27
28
  :graceful_shutdown_period,
28
29
  :nondeterminism_as_workflow_fail,
29
30
  :nondeterminism_as_workflow_fail_for_types,
30
31
  :deployment_options,
31
- :plugins
32
+ :plugins,
33
+ :disable_payload_error_limit
32
34
  )
33
35
 
34
36
  TunerOptions = Struct.new(
@@ -25,6 +25,26 @@ module Temporalio
25
25
  'see https://github.com/temporalio/sdk-ruby/issues/162'
26
26
  end
27
27
 
28
+ # On FIPS builds the native crypto backend (aws-lc-rs) is FIPS-validated, but the SDK still relies on Ruby's
29
+ # own OpenSSL for `SecureRandom` (request IDs) and the default worker build id digest. Those are only
30
+ # FIPS-backed if Ruby was built against a FIPS-enabled OpenSSL with FIPS mode active. If not, warn once rather
31
+ # than raise. No-op on non-FIPS builds.
32
+ def self.assert_fips_compatibility!
33
+ return unless FIPS
34
+ return if @fips_compatibility_checked
35
+
36
+ @fips_compatibility_checked = true
37
+ require 'openssl'
38
+ return if OpenSSL.fips_mode
39
+
40
+ warn 'temporalio: built for FIPS (aws-lc-rs) but Ruby OpenSSL is not in FIPS mode; SecureRandom and the ' \
41
+ 'default worker build id will not use a FIPS-validated module. Build Ruby against a FIPS-enabled ' \
42
+ 'OpenSSL and enable FIPS mode for full compliance.'
43
+ rescue StandardError
44
+ # Some OpenSSL builds cannot report fips_mode; do not block usage over an unanswerable check.
45
+ nil
46
+ end
47
+
28
48
  def self.fibers_supported
29
49
  # We do not allow fibers on < 3.3 due to a bug we still need to dig
30
50
  # into: https://github.com/temporalio/sdk-ruby/issues/162
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Temporalio
4
+ module Internal
5
+ module GoogleProtobuf
6
+ def self.in_call_stack?(locations)
7
+ locations&.any? { |loc| loc.path&.include?('google/protobuf/') } || false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -248,6 +248,8 @@ module Temporalio
248
248
  end
249
249
 
250
250
  def random
251
+ raise Workflow::InvalidWorkflowStateError, 'Cannot use random in this context' if @instance.random_disabled
252
+
251
253
  @instance.random
252
254
  end
253
255
 
@@ -9,7 +9,7 @@ module Temporalio
9
9
  attr_reader :namespace, :task_queue, :definition, :initial_activation, :logger, :metric_meter,
10
10
  :payload_converter, :failure_converter, :interceptors, :disable_eager_activity_execution,
11
11
  :illegal_calls, :workflow_failure_exception_types, :unsafe_workflow_io_enabled,
12
- :assert_valid_local_activity
12
+ :patch_activation_callback, :assert_valid_local_activity
13
13
 
14
14
  def initialize(
15
15
  namespace:,
@@ -25,6 +25,7 @@ module Temporalio
25
25
  illegal_calls:,
26
26
  workflow_failure_exception_types:,
27
27
  unsafe_workflow_io_enabled:,
28
+ patch_activation_callback:,
28
29
  assert_valid_local_activity:
29
30
  )
30
31
  @namespace = namespace
@@ -40,6 +41,7 @@ module Temporalio
40
41
  @illegal_calls = illegal_calls
41
42
  @workflow_failure_exception_types = workflow_failure_exception_types
42
43
  @unsafe_workflow_io_enabled = unsafe_workflow_io_enabled
44
+ @patch_activation_callback = patch_activation_callback
43
45
  @assert_valid_local_activity = assert_valid_local_activity
44
46
  end
45
47
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'temporalio/internal/workflow_task_failure_error'
3
4
  require 'temporalio/worker/illegal_workflow_call_validator'
4
5
  require 'temporalio/workflow'
5
6
 
@@ -92,6 +93,11 @@ module Temporalio
92
93
  ))
93
94
  nil
94
95
  rescue Exception => e # rubocop:disable Lint/RescueException
96
+ # Errors that invalidate the whole workflow task (e.g. an async DeadlockError landing while the
97
+ # validator runs) must propagate with their class intact so they fail the task instead of being
98
+ # flattened into a NondeterminismError message that futures may store
99
+ raise if e.is_a?(Internal::WorkflowTaskFailureError)
100
+
95
101
  ", reason: #{e}"
96
102
  end
97
103
  else
@@ -108,6 +114,9 @@ module Temporalio
108
114
  ))
109
115
  nil
110
116
  rescue Exception => e # rubocop:disable Lint/RescueException
117
+ # See workflow-task-failure comment on the class-level validator rescue above
118
+ raise if e.is_a?(Internal::WorkflowTaskFailureError)
119
+
111
120
  ", reason: #{e}"
112
121
  end
113
122
  end
@@ -3,6 +3,7 @@
3
3
  require 'temporalio'
4
4
  require 'temporalio/cancellation'
5
5
  require 'temporalio/error'
6
+ require 'temporalio/internal/google_protobuf'
6
7
  require 'temporalio/internal/worker/workflow_instance'
7
8
  require 'temporalio/workflow'
8
9
  require 'timeout'
@@ -19,6 +20,10 @@ module Temporalio
19
20
  @ready = []
20
21
  @wait_conditions = {}
21
22
  @wait_condition_counter = 0
23
+ @thread_blocking_fibers = {}
24
+ @thread_blocking_mutex = Mutex.new
25
+ @thread_blocking_condition = ConditionVariable.new
26
+ @workflow_thread = nil
22
27
  end
23
28
 
24
29
  def context
@@ -26,12 +31,17 @@ module Temporalio
26
31
  end
27
32
 
28
33
  def run_until_all_yielded
34
+ @workflow_thread = Thread.current
29
35
  loop do
30
36
  # Run all fibers until all yielded
31
37
  while (fiber = @ready.shift)
32
38
  fiber.resume
33
39
  end
34
40
 
41
+ # Thread-blocking fibers are not durable workflow yields. Wait for them to unblock before satisfying any
42
+ # wait condition so the condition sees the workflow after all runnable work has settled.
43
+ next if wait_for_thread_blocking_fiber
44
+
35
45
  # Find the _first_ resolvable wait condition and if there, resolve it, and loop again, otherwise return.
36
46
  # It is important that we both let fibers get all settled _before_ this and only allow a _single_ wait
37
47
  # condition to be satisfied before looping. This allows wait condition users to trust that the line of
@@ -55,6 +65,8 @@ module Temporalio
55
65
 
56
66
  cond_fiber.resume(cond_result)
57
67
  end
68
+ ensure
69
+ @workflow_thread = nil
58
70
  end
59
71
 
60
72
  def wait_condition(cancellation:, &block)
@@ -110,9 +122,26 @@ module Temporalio
110
122
  # work inside of workflows. So we only implement the bare minimum.
111
123
  ###
112
124
 
113
- def block(_blocker, timeout = nil)
125
+ def block(blocker, timeout = nil)
114
126
  # TODO(cretz): Make the blocker visible in the stack trace?
115
127
 
128
+ # Protobuf's object cache uses a process-local Mutex. We allowlist that Mutex use, but it is not a durable
129
+ # workflow yield: if it blocks the only runnable workflow fiber, the workflow task must remain blocked so
130
+ # deadlock detection can fail it instead of completing a partial command set.
131
+ if timeout.nil? && thread_blocking_protobuf_mutex_wait?(blocker)
132
+ fiber = Fiber.current
133
+ synchronize_thread_blocking_fibers { @thread_blocking_fibers[fiber] = true }
134
+ begin
135
+ Fiber.yield
136
+ return true
137
+ ensure
138
+ synchronize_thread_blocking_fibers do
139
+ @thread_blocking_fibers.delete(fiber)
140
+ @thread_blocking_condition.broadcast
141
+ end
142
+ end
143
+ end
144
+
116
145
  # We just yield because unblock will resume this. We will just wrap in timeout if needed.
117
146
  if timeout
118
147
  begin
@@ -189,7 +218,49 @@ module Temporalio
189
218
  end
190
219
 
191
220
  def unblock(_blocker, fiber)
192
- @ready << fiber
221
+ synchronize_thread_blocking_fibers do
222
+ @thread_blocking_fibers.delete(fiber)
223
+ @ready << fiber
224
+ @thread_blocking_condition.broadcast
225
+ end
226
+ end
227
+
228
+ private
229
+
230
+ def thread_blocking_protobuf_mutex_wait?(blocker)
231
+ blocker.is_a?(::Mutex) &&
232
+ ::Temporalio::Internal::GoogleProtobuf.in_call_stack?(caller_locations)
233
+ end
234
+
235
+ def wait_for_thread_blocking_fiber
236
+ synchronize_thread_blocking_fibers do
237
+ return true unless @ready.empty?
238
+ return false if @thread_blocking_fibers.empty?
239
+
240
+ @thread_blocking_condition.wait(@thread_blocking_mutex) while @ready.empty? &&
241
+ !@thread_blocking_fibers.empty?
242
+ true
243
+ end
244
+ end
245
+
246
+ def synchronize_thread_blocking_fibers(&)
247
+ if Thread.current == @workflow_thread
248
+ with_workflow_scheduler_disabled do
249
+ @thread_blocking_mutex.synchronize(&)
250
+ end
251
+ else
252
+ @thread_blocking_mutex.synchronize(&)
253
+ end
254
+ end
255
+
256
+ def with_workflow_scheduler_disabled
257
+ previous_scheduler = Fiber.scheduler
258
+ @instance.illegal_call_tracing_disabled do
259
+ Fiber.set_scheduler(nil)
260
+ yield
261
+ ensure
262
+ Fiber.set_scheduler(previous_scheduler)
263
+ end
193
264
  end
194
265
  end
195
266
  end