tasker-engine 0.1.0 → 1.0.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.

Potentially problematic release.


This version of tasker-engine might be problematic. Click here for more details.

Files changed (390) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -9
  3. data/app/controllers/tasker/analytics_controller.rb +2 -2
  4. data/app/controllers/tasker/graphql_controller.rb +3 -3
  5. data/app/controllers/tasker/health_controller.rb +1 -1
  6. data/app/controllers/tasker/metrics_controller.rb +3 -3
  7. data/app/controllers/tasker/task_diagrams_controller.rb +30 -0
  8. data/app/jobs/tasker/metrics_export_job.rb +1 -1
  9. data/app/models/tasker/application_record.rb +5 -5
  10. data/app/models/tasker/diagram/edge.rb +106 -0
  11. data/app/models/tasker/diagram/flowchart.rb +137 -0
  12. data/app/models/tasker/diagram/node.rb +99 -0
  13. data/app/models/tasker/task.rb +11 -1
  14. data/app/models/tasker/task_diagram.rb +332 -0
  15. data/app/models/tasker/workflow_step_edge.rb +4 -5
  16. data/app/views/tasker/task/_diagram.html.erb +32 -0
  17. data/config/routes.rb +3 -3
  18. data/db/init/schema.sql +23 -0
  19. data/docs/APPLICATION_GENERATOR.md +1 -1
  20. data/docs/AUTH.md +51 -12
  21. data/docs/DEVELOPER_GUIDE.md +9 -8
  22. data/docs/EXECUTION_CONFIGURATION.md +1 -1
  23. data/docs/HEALTH.md +3 -3
  24. data/docs/METRICS.md +4 -4
  25. data/docs/OPTIMIZATION_PLAN.md +3 -3
  26. data/docs/OVERVIEW.md +4 -0
  27. data/docs/QUICK_START.md +1 -1
  28. data/docs/REST_API.md +1 -1
  29. data/docs/TASK_DIAGRAM.md +252 -0
  30. data/docs/TELEMETRY.md +5 -5
  31. data/docs/TROUBLESHOOTING.md +3 -3
  32. data/docs/TaskHandlerGenerator.html +55 -55
  33. data/docs/Tasker/Analysis/RuntimeGraphAnalyzer.html +1 -1
  34. data/docs/Tasker/Analysis/TemplateGraphAnalyzer.html +1 -1
  35. data/docs/Tasker/Analysis.html +1 -1
  36. data/docs/Tasker/AnalyticsController.html +1 -1
  37. data/docs/Tasker/AnalyticsService/BottleneckAnalytics.html +1 -1
  38. data/docs/Tasker/AnalyticsService/PerformanceAnalytics.html +1 -1
  39. data/docs/Tasker/AnalyticsService.html +1 -1
  40. data/docs/Tasker/AnnotationType.html +1 -1
  41. data/docs/Tasker/AnnotationTypeSerializer.html +1 -1
  42. data/docs/Tasker/ApplicationController.html +2 -2
  43. data/docs/Tasker/ApplicationJob.html +1 -1
  44. data/docs/Tasker/ApplicationRecord.html +6 -6
  45. data/docs/Tasker/Authentication/AuthenticationError.html +1 -1
  46. data/docs/Tasker/Authentication/ConfigurationError.html +1 -1
  47. data/docs/Tasker/Authentication/Coordinator.html +1 -1
  48. data/docs/Tasker/Authentication/Interface.html +1 -1
  49. data/docs/Tasker/Authentication/InterfaceError.html +1 -1
  50. data/docs/Tasker/Authentication/NoneAuthenticator.html +1 -1
  51. data/docs/Tasker/Authentication.html +1 -1
  52. data/docs/Tasker/Authorization/AuthorizationError.html +1 -1
  53. data/docs/Tasker/Authorization/BaseCoordinator.html +2 -2
  54. data/docs/Tasker/Authorization/ConfigurationError.html +1 -1
  55. data/docs/Tasker/Authorization/ResourceConstants/ACTIONS.html +10 -10
  56. data/docs/Tasker/Authorization/ResourceConstants/RESOURCES.html +13 -8
  57. data/docs/Tasker/Authorization/ResourceConstants.html +1 -1
  58. data/docs/Tasker/Authorization/ResourceRegistry.html +40 -33
  59. data/docs/Tasker/Authorization/UnauthorizedError.html +1 -1
  60. data/docs/Tasker/Authorization.html +2 -2
  61. data/docs/Tasker/CacheCapabilities.html +1 -1
  62. data/docs/Tasker/CacheStrategy.html +1 -1
  63. data/docs/Tasker/Concerns/Authenticatable.html +1 -1
  64. data/docs/Tasker/Concerns/Authorizable/AdminStatusChecker.html +1 -1
  65. data/docs/Tasker/Concerns/Authorizable.html +1 -1
  66. data/docs/Tasker/Concerns/ControllerAuthorizable.html +1 -1
  67. data/docs/Tasker/Concerns/EventPublisher.html +1 -1
  68. data/docs/Tasker/Concerns/IdempotentStateTransitions.html +1 -1
  69. data/docs/Tasker/Concerns/StateMachineBase/ClassMethods.html +1 -1
  70. data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase/ClassMethods.html +1 -1
  71. data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase.html +1 -1
  72. data/docs/Tasker/Concerns/StateMachineBase.html +1 -1
  73. data/docs/Tasker/Concerns/StructuredLogging.html +1 -1
  74. data/docs/Tasker/Concerns.html +1 -1
  75. data/docs/Tasker/Configuration/ConfigurationProxy.html +1 -1
  76. data/docs/Tasker/Configuration/TelemetryConfigurationProxy.html +1 -1
  77. data/docs/Tasker/Configuration.html +1 -1
  78. data/docs/Tasker/ConfigurationError.html +1 -1
  79. data/docs/Tasker/ConfiguredTask.html +2 -2
  80. data/docs/Tasker/Constants/EventDefinitions.html +1 -1
  81. data/docs/Tasker/Constants/ObservabilityEvents/Step.html +1 -1
  82. data/docs/Tasker/Constants/ObservabilityEvents/Task.html +1 -1
  83. data/docs/Tasker/Constants/ObservabilityEvents.html +1 -1
  84. data/docs/Tasker/Constants/RegistryEvents.html +1 -1
  85. data/docs/Tasker/Constants/StepEvents.html +1 -1
  86. data/docs/Tasker/Constants/TaskEvents.html +1 -1
  87. data/docs/Tasker/Constants/TaskExecution/ExecutionStatus.html +1 -1
  88. data/docs/Tasker/Constants/TaskExecution/HealthStatus.html +1 -1
  89. data/docs/Tasker/Constants/TaskExecution/RecommendedAction.html +1 -1
  90. data/docs/Tasker/Constants/TaskExecution.html +1 -1
  91. data/docs/Tasker/Constants/TaskFinalization/ErrorMessages.html +1 -1
  92. data/docs/Tasker/Constants/TaskFinalization/PendingReasons.html +1 -1
  93. data/docs/Tasker/Constants/TaskFinalization/ReenqueueReasons.html +1 -1
  94. data/docs/Tasker/Constants/TaskFinalization.html +1 -1
  95. data/docs/Tasker/Constants/TaskStatuses.html +1 -1
  96. data/docs/Tasker/Constants/TestEvents.html +1 -1
  97. data/docs/Tasker/Constants/WorkflowEvents.html +1 -1
  98. data/docs/Tasker/Constants/WorkflowStepStatuses.html +1 -1
  99. data/docs/Tasker/Constants.html +1 -1
  100. data/docs/Tasker/DependentSystem.html +1 -1
  101. data/docs/Tasker/DependentSystemObjectMap.html +1 -1
  102. data/docs/Tasker/DetectorRegistry.html +1 -1
  103. data/docs/Tasker/Diagram/Edge.html +1 -1
  104. data/docs/Tasker/Diagram/Flowchart.html +1 -1
  105. data/docs/Tasker/Diagram/Node.html +1 -1
  106. data/docs/Tasker/Diagram.html +1 -1
  107. data/docs/Tasker/Engine.html +1 -1
  108. data/docs/Tasker/Error.html +1 -1
  109. data/docs/Tasker/Events/Catalog/CatalogPrinter.html +1 -1
  110. data/docs/Tasker/Events/Catalog/CustomEventRegistrar.html +1 -1
  111. data/docs/Tasker/Events/Catalog/ExamplePayloadGenerator.html +1 -1
  112. data/docs/Tasker/Events/Catalog.html +1 -1
  113. data/docs/Tasker/Events/CustomRegistry.html +1 -1
  114. data/docs/Tasker/Events/DefinitionLoader.html +1 -1
  115. data/docs/Tasker/Events/EventPayloadBuilder/ErrorInfoExtractor.html +1 -1
  116. data/docs/Tasker/Events/EventPayloadBuilder/StepPayloadBuilder.html +1 -1
  117. data/docs/Tasker/Events/EventPayloadBuilder.html +1 -1
  118. data/docs/Tasker/Events/Publisher.html +1 -1
  119. data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer/ErrorTypeClassifier.html +1 -1
  120. data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer.html +1 -1
  121. data/docs/Tasker/Events/Subscribers/BaseSubscriber/MetricTagsExtractor.html +1 -1
  122. data/docs/Tasker/Events/Subscribers/BaseSubscriber.html +1 -1
  123. data/docs/Tasker/Events/Subscribers/MetricsSubscriber.html +2 -2
  124. data/docs/Tasker/Events/Subscribers/TelemetrySubscriber.html +5 -5
  125. data/docs/Tasker/Events/Subscribers.html +1 -1
  126. data/docs/Tasker/Events/SubscriptionLoader.html +1 -1
  127. data/docs/Tasker/Events.html +1 -1
  128. data/docs/Tasker/EventsGenerator.html +2 -2
  129. data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics/AnalyticsMetrics.html +1 -1
  130. data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics.html +1 -1
  131. data/docs/Tasker/Functions/FunctionBasedDependencyLevels.html +1 -1
  132. data/docs/Tasker/Functions/FunctionBasedSlowestSteps/SlowestStep.html +1 -1
  133. data/docs/Tasker/Functions/FunctionBasedSlowestSteps.html +1 -1
  134. data/docs/Tasker/Functions/FunctionBasedSlowestTasks/SlowestTask.html +1 -1
  135. data/docs/Tasker/Functions/FunctionBasedSlowestTasks.html +1 -1
  136. data/docs/Tasker/Functions/FunctionBasedStepReadinessStatus.html +1 -1
  137. data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts/HealthMetrics.html +1 -1
  138. data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts.html +1 -1
  139. data/docs/Tasker/Functions/FunctionBasedTaskExecutionContext.html +1 -1
  140. data/docs/Tasker/Functions/FunctionWrapper.html +1 -1
  141. data/docs/Tasker/Functions.html +1 -1
  142. data/docs/Tasker/Generators/AuthenticatorGenerator/UsageInstructionsFormatter.html +1 -1
  143. data/docs/Tasker/Generators/AuthenticatorGenerator.html +1 -1
  144. data/docs/Tasker/Generators/AuthorizationCoordinatorGenerator.html +1 -1
  145. data/docs/Tasker/Generators/SubscriberGenerator.html +1 -1
  146. data/docs/Tasker/Generators/TaskHandlerGenerator.html +4 -4
  147. data/docs/Tasker/Generators.html +1 -1
  148. data/docs/Tasker/GraphQLTypes/AnnotationType.html +1 -1
  149. data/docs/Tasker/GraphQLTypes/BaseArgument.html +1 -1
  150. data/docs/Tasker/GraphQLTypes/BaseConnection.html +1 -1
  151. data/docs/Tasker/GraphQLTypes/BaseEdge.html +1 -1
  152. data/docs/Tasker/GraphQLTypes/BaseEnum.html +1 -1
  153. data/docs/Tasker/GraphQLTypes/BaseField.html +1 -1
  154. data/docs/Tasker/GraphQLTypes/BaseInputObject.html +1 -1
  155. data/docs/Tasker/GraphQLTypes/BaseInterface.html +1 -1
  156. data/docs/Tasker/GraphQLTypes/BaseObject.html +1 -1
  157. data/docs/Tasker/GraphQLTypes/BaseScalar.html +1 -1
  158. data/docs/Tasker/GraphQLTypes/BaseUnion.html +1 -1
  159. data/docs/Tasker/GraphQLTypes/DependentSystemObjectMapType.html +1 -1
  160. data/docs/Tasker/GraphQLTypes/DependentSystemType.html +1 -1
  161. data/docs/Tasker/GraphQLTypes/MutationType.html +1 -1
  162. data/docs/Tasker/GraphQLTypes/NamedStepType.html +1 -1
  163. data/docs/Tasker/GraphQLTypes/NamedTaskType.html +1 -1
  164. data/docs/Tasker/GraphQLTypes/NamedTasksNamedStepType.html +1 -1
  165. data/docs/Tasker/GraphQLTypes/NodeType.html +1 -1
  166. data/docs/Tasker/GraphQLTypes/QueryType.html +1 -1
  167. data/docs/Tasker/GraphQLTypes/TaskAnnotationType.html +1 -1
  168. data/docs/Tasker/GraphQLTypes/TaskInterface.html +1 -1
  169. data/docs/Tasker/GraphQLTypes/TaskType.html +1 -1
  170. data/docs/Tasker/GraphQLTypes/WorkflowStepType.html +1 -1
  171. data/docs/Tasker/GraphQLTypes.html +1 -1
  172. data/docs/Tasker/GraphqlController.html +1 -1
  173. data/docs/Tasker/HandlerFactory.html +44 -54
  174. data/docs/Tasker/HandlerSerializer.html +1 -1
  175. data/docs/Tasker/HandlersController.html +1 -1
  176. data/docs/Tasker/HashIdentityStrategy.html +1 -1
  177. data/docs/Tasker/Health/ReadinessChecker.html +2 -2
  178. data/docs/Tasker/Health/StatusChecker.html +2 -2
  179. data/docs/Tasker/Health.html +1 -1
  180. data/docs/Tasker/HealthController.html +1 -1
  181. data/docs/Tasker/IdentityStrategy.html +1 -1
  182. data/docs/Tasker/InvalidTaskHandlerConfig.html +1 -1
  183. data/docs/Tasker/Logging/CorrelationIdGenerator.html +2 -2
  184. data/docs/Tasker/Logging.html +1 -1
  185. data/docs/Tasker/MetricsController.html +1 -1
  186. data/docs/Tasker/MetricsExportJob.html +1 -1
  187. data/docs/Tasker/Mutations/BaseMutation.html +1 -1
  188. data/docs/Tasker/Mutations/CancelStep.html +1 -1
  189. data/docs/Tasker/Mutations/CancelTask.html +1 -1
  190. data/docs/Tasker/Mutations/CreateTask.html +1 -1
  191. data/docs/Tasker/Mutations/UpdateStep.html +1 -1
  192. data/docs/Tasker/Mutations/UpdateTask.html +1 -1
  193. data/docs/Tasker/Mutations.html +1 -1
  194. data/docs/Tasker/NamedStep.html +1 -1
  195. data/docs/Tasker/NamedTask.html +1 -1
  196. data/docs/Tasker/NamedTasksNamedStep.html +1 -1
  197. data/docs/Tasker/Orchestration/BackoffCalculator.html +1 -1
  198. data/docs/Tasker/Orchestration/ConnectionBuilder/ConfigValidator.html +1 -1
  199. data/docs/Tasker/Orchestration/ConnectionBuilder.html +2 -2
  200. data/docs/Tasker/Orchestration/ConnectionPoolIntelligence.html +3 -3
  201. data/docs/Tasker/Orchestration/Coordinator.html +1 -1
  202. data/docs/Tasker/Orchestration/FutureStateAnalyzer.html +1 -1
  203. data/docs/Tasker/Orchestration/PluginIntegration.html +1 -1
  204. data/docs/Tasker/Orchestration/ResponseProcessor.html +1 -1
  205. data/docs/Tasker/Orchestration/RetryHeaderParser.html +1 -1
  206. data/docs/Tasker/Orchestration/StepExecutor.html +4 -4
  207. data/docs/Tasker/Orchestration/StepSequenceFactory.html +1 -1
  208. data/docs/Tasker/Orchestration/TaskFinalizer/BlockageChecker.html +1 -1
  209. data/docs/Tasker/Orchestration/TaskFinalizer/ContextManager.html +1 -1
  210. data/docs/Tasker/Orchestration/TaskFinalizer/DelayCalculator.html +2 -2
  211. data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationDecisionMaker.html +1 -1
  212. data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationProcessor.html +1 -1
  213. data/docs/Tasker/Orchestration/TaskFinalizer/ReasonDeterminer.html +1 -1
  214. data/docs/Tasker/Orchestration/TaskFinalizer/ReenqueueManager.html +1 -1
  215. data/docs/Tasker/Orchestration/TaskFinalizer/UnclearStateHandler.html +1 -1
  216. data/docs/Tasker/Orchestration/TaskFinalizer.html +1 -1
  217. data/docs/Tasker/Orchestration/TaskInitializer.html +1 -1
  218. data/docs/Tasker/Orchestration/TaskReenqueuer.html +1 -1
  219. data/docs/Tasker/Orchestration/ViableStepDiscovery.html +1 -1
  220. data/docs/Tasker/Orchestration/WorkflowCoordinator.html +1 -1
  221. data/docs/Tasker/Orchestration.html +1 -1
  222. data/docs/Tasker/PageSort/PageSortParamsBuilder.html +1 -1
  223. data/docs/Tasker/PageSort.html +1 -1
  224. data/docs/Tasker/PermanentError.html +1 -1
  225. data/docs/Tasker/ProceduralError.html +1 -1
  226. data/docs/Tasker/Queries/AllAnnotationTypes.html +1 -1
  227. data/docs/Tasker/Queries/AllTasks.html +1 -1
  228. data/docs/Tasker/Queries/BaseQuery.html +1 -1
  229. data/docs/Tasker/Queries/Helpers.html +1 -1
  230. data/docs/Tasker/Queries/OneStep.html +1 -1
  231. data/docs/Tasker/Queries/OneTask.html +1 -1
  232. data/docs/Tasker/Queries/TasksByAnnotation.html +1 -1
  233. data/docs/Tasker/Queries/TasksByStatus.html +1 -1
  234. data/docs/Tasker/Queries.html +1 -1
  235. data/docs/Tasker/Railtie.html +1 -1
  236. data/docs/Tasker/Registry/BaseRegistry.html +2 -2
  237. data/docs/Tasker/Registry/EventPublisher.html +1 -1
  238. data/docs/Tasker/Registry/InterfaceValidator.html +1 -1
  239. data/docs/Tasker/Registry/RegistrationError.html +1 -1
  240. data/docs/Tasker/Registry/RegistryError.html +1 -1
  241. data/docs/Tasker/Registry/StatisticsCollector.html +1 -1
  242. data/docs/Tasker/Registry/SubscriberRegistry.html +1 -1
  243. data/docs/Tasker/Registry/ValidationError.html +1 -1
  244. data/docs/Tasker/Registry.html +1 -1
  245. data/docs/Tasker/RetryableError.html +1 -1
  246. data/docs/Tasker/StateMachine/Compatibility.html +1 -1
  247. data/docs/Tasker/StateMachine/InvalidStateTransition.html +1 -1
  248. data/docs/Tasker/StateMachine/StepStateMachine.html +1 -1
  249. data/docs/Tasker/StateMachine/TaskStateMachine.html +1 -1
  250. data/docs/Tasker/StateMachine.html +1 -1
  251. data/docs/Tasker/StepDagRelationship.html +1 -1
  252. data/docs/Tasker/StepHandler/Api/Config.html +1 -1
  253. data/docs/Tasker/StepHandler/Api.html +1 -1
  254. data/docs/Tasker/StepHandler/AutomaticEventPublishing.html +1 -1
  255. data/docs/Tasker/StepHandler/Base.html +1 -1
  256. data/docs/Tasker/StepHandler.html +1 -1
  257. data/docs/Tasker/StepReadinessStatus.html +1 -1
  258. data/docs/Tasker/Task.html +210 -113
  259. data/docs/Tasker/TaskAnnotation.html +1 -1
  260. data/docs/Tasker/TaskAnnotationSerializer.html +1 -1
  261. data/docs/Tasker/TaskBuilder/StepNameValidator.html +1 -1
  262. data/docs/Tasker/TaskBuilder/StepTemplateDefiner.html +1 -1
  263. data/docs/Tasker/TaskBuilder.html +1 -1
  264. data/docs/Tasker/TaskDiagram/StepToStepEdgeBuilder.html +1 -1
  265. data/docs/Tasker/TaskDiagram/TaskToRootStepEdgeBuilder.html +1 -1
  266. data/docs/Tasker/TaskDiagram.html +1 -1
  267. data/docs/Tasker/TaskDiagramsController.html +1 -1
  268. data/docs/Tasker/TaskExecutionContext.html +1 -1
  269. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/ClassBasedEventRegistrar.html +1 -1
  270. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/YamlEventRegistrar.html +1 -1
  271. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner.html +1 -1
  272. data/docs/Tasker/TaskHandler/ClassMethods.html +6 -44
  273. data/docs/Tasker/TaskHandler/InstanceMethods.html +1 -1
  274. data/docs/Tasker/TaskHandler/StepGroup.html +1 -1
  275. data/docs/Tasker/TaskHandler.html +1 -1
  276. data/docs/Tasker/TaskNamespace.html +1 -1
  277. data/docs/Tasker/TaskRunnerJob.html +1 -1
  278. data/docs/Tasker/TaskSerializer.html +1 -1
  279. data/docs/Tasker/TaskTransition.html +1 -1
  280. data/docs/Tasker/TaskerRailsSchema/InvalidObjectTypeError.html +1 -1
  281. data/docs/Tasker/TaskerRailsSchema/TypeResolutionError.html +1 -1
  282. data/docs/Tasker/TaskerRailsSchema/UnknownInterfaceError.html +1 -1
  283. data/docs/Tasker/TaskerRailsSchema.html +1 -1
  284. data/docs/Tasker/TasksController.html +1 -1
  285. data/docs/Tasker/Telemetry/EventMapping.html +1 -1
  286. data/docs/Tasker/Telemetry/EventRouter.html +1 -1
  287. data/docs/Tasker/Telemetry/Events/ExportEvents.html +1 -1
  288. data/docs/Tasker/Telemetry/Events.html +1 -1
  289. data/docs/Tasker/Telemetry/ExportCoordinator.html +1 -1
  290. data/docs/Tasker/Telemetry/IntelligentCacheManager.html +2 -2
  291. data/docs/Tasker/Telemetry/LogBackend.html +1 -1
  292. data/docs/Tasker/Telemetry/MetricTypes/Counter.html +2 -2
  293. data/docs/Tasker/Telemetry/MetricTypes/Gauge.html +73 -73
  294. data/docs/Tasker/Telemetry/MetricTypes/Histogram.html +103 -103
  295. data/docs/Tasker/Telemetry/MetricTypes.html +1 -1
  296. data/docs/Tasker/Telemetry/MetricsBackend.html +1 -1
  297. data/docs/Tasker/Telemetry/MetricsExportService.html +1 -1
  298. data/docs/Tasker/Telemetry/PluginRegistry.html +1 -1
  299. data/docs/Tasker/Telemetry/Plugins/BaseExporter.html +1 -1
  300. data/docs/Tasker/Telemetry/Plugins/CsvExporter.html +1 -1
  301. data/docs/Tasker/Telemetry/Plugins/JsonExporter.html +1 -1
  302. data/docs/Tasker/Telemetry/Plugins.html +1 -1
  303. data/docs/Tasker/Telemetry/PrometheusExporter.html +1 -1
  304. data/docs/Tasker/Telemetry/TraceBackend.html +1 -1
  305. data/docs/Tasker/Telemetry.html +1 -1
  306. data/docs/Tasker/Types/AuthConfig.html +1 -1
  307. data/docs/Tasker/Types/BackoffConfig.html +1 -1
  308. data/docs/Tasker/Types/BaseConfig.html +1 -1
  309. data/docs/Tasker/Types/CacheConfig.html +1 -1
  310. data/docs/Tasker/Types/DatabaseConfig.html +1 -1
  311. data/docs/Tasker/Types/DependencyGraph.html +1 -1
  312. data/docs/Tasker/Types/DependencyGraphConfig.html +1 -1
  313. data/docs/Tasker/Types/EngineConfig.html +1 -1
  314. data/docs/Tasker/Types/ExecutionConfig.html +1 -1
  315. data/docs/Tasker/Types/GraphEdge.html +1 -1
  316. data/docs/Tasker/Types/GraphMetadata.html +1 -1
  317. data/docs/Tasker/Types/GraphNode.html +1 -1
  318. data/docs/Tasker/Types/HealthConfig.html +1 -1
  319. data/docs/Tasker/Types/StepSequence.html +1 -1
  320. data/docs/Tasker/Types/StepTemplate.html +1 -1
  321. data/docs/Tasker/Types/TaskRequest.html +1 -1
  322. data/docs/Tasker/Types/TelemetryConfig.html +2 -2
  323. data/docs/Tasker/Types.html +1 -1
  324. data/docs/Tasker/WorkflowStep/StepFinder.html +1 -1
  325. data/docs/Tasker/WorkflowStep.html +1 -1
  326. data/docs/Tasker/WorkflowStepEdge.html +4 -6
  327. data/docs/Tasker/WorkflowStepSerializer.html +1 -1
  328. data/docs/Tasker/WorkflowStepTransition/TransitionDescriptionFormatter.html +1 -1
  329. data/docs/Tasker/WorkflowStepTransition.html +1 -1
  330. data/docs/Tasker/WorkflowStepsController.html +1 -1
  331. data/docs/Tasker.html +5 -21
  332. data/docs/VISION.md +1 -1
  333. data/docs/_index.html +77 -21
  334. data/docs/class_list.html +1 -1
  335. data/docs/file.README.html +14 -10
  336. data/docs/index.html +14 -10
  337. data/docs/method_list.html +1433 -1105
  338. data/docs/top-level-namespace.html +1 -1
  339. data/lib/generators/tasker/authenticator_generator.rb +5 -5
  340. data/lib/generators/tasker/authorization_coordinator_generator.rb +1 -1
  341. data/lib/generators/tasker/events_generator.rb +1 -1
  342. data/lib/generators/tasker/task_handler_generator.rb +4 -4
  343. data/lib/generators/tasker/templates/api_token_authenticator.rb.erb +1 -1
  344. data/lib/generators/tasker/templates/authorization_coordinator.rb.erb +13 -0
  345. data/lib/generators/tasker/templates/authorization_coordinator_spec.rb.erb +7 -1
  346. data/lib/generators/tasker/templates/custom_authenticator.rb.erb +1 -1
  347. data/lib/generators/tasker/templates/devise_authenticator.rb.erb +1 -1
  348. data/lib/generators/tasker/templates/initialize.rb.erb +1 -1
  349. data/lib/generators/tasker/templates/jwt_authenticator.rb.erb +1 -1
  350. data/lib/generators/tasker/templates/omniauth_authenticator.rb.erb +1 -1
  351. data/lib/generators/tasker/templates/opentelemetry_initializer.rb +4 -4
  352. data/lib/generators/tasker/templates/task_config.yaml.erb +25 -25
  353. data/lib/generators/tasker/templates/task_handler.rb.erb +2 -3
  354. data/lib/generators/tasker/templates/task_handler_spec.rb.erb +43 -49
  355. data/lib/tasker/analysis/runtime_graph_analyzer.rb +1 -1
  356. data/lib/tasker/authentication/coordinator.rb +2 -2
  357. data/lib/tasker/authorization/base_coordinator.rb +1 -1
  358. data/lib/tasker/authorization/resource_constants.rb +2 -1
  359. data/lib/tasker/authorization/resource_registry.rb +7 -0
  360. data/lib/tasker/authorization.rb +1 -1
  361. data/lib/tasker/concerns/authenticatable.rb +1 -1
  362. data/lib/tasker/concerns/controller_authorizable.rb +3 -3
  363. data/lib/tasker/concerns/structured_logging.rb +2 -2
  364. data/lib/tasker/events/definition_loader.rb +1 -1
  365. data/lib/tasker/events/subscribers/metrics_subscriber.rb +1 -1
  366. data/lib/tasker/events/subscribers/telemetry_subscriber.rb +5 -5
  367. data/lib/tasker/handler_factory.rb +2 -7
  368. data/lib/tasker/health/readiness_checker.rb +1 -1
  369. data/lib/tasker/health/status_checker.rb +1 -1
  370. data/lib/tasker/logging/correlation_id_generator.rb +1 -1
  371. data/lib/tasker/orchestration/backoff_calculator.rb +1 -1
  372. data/lib/tasker/orchestration/connection_builder.rb +1 -1
  373. data/lib/tasker/orchestration/connection_pool_intelligence.rb +3 -3
  374. data/lib/tasker/orchestration/step_executor.rb +2 -2
  375. data/lib/tasker/orchestration/task_finalizer.rb +1 -1
  376. data/lib/tasker/registry/base_registry.rb +1 -1
  377. data/lib/tasker/task_builder.rb +1 -1
  378. data/lib/tasker/task_handler/class_methods.rb +1 -4
  379. data/lib/tasker/telemetry/intelligent_cache_manager.rb +1 -1
  380. data/lib/tasker/telemetry/metric_types.rb +9 -57
  381. data/lib/tasker/telemetry/metrics_backend.rb +3 -3
  382. data/lib/tasker/telemetry/metrics_export_service.rb +1 -1
  383. data/lib/tasker/telemetry/prometheus_exporter.rb +2 -2
  384. data/lib/tasker/types/telemetry_config.rb +1 -1
  385. data/lib/tasker/version.rb +1 -2
  386. data/lib/tasks/tasker_tasks.rake +4 -85
  387. metadata +11 -7
  388. data/db/functions/get_step_readiness_status_single_and_batch_v02.sql +0 -223
  389. data/db/migrate/20250710110830_step_readiness_sql_functions_v02.rb +0 -39
  390. data/docs/REVERSIONING.md +0 -404
@@ -559,6 +559,30 @@
559
559
  <p>Provides runtime dependency graph analysis Delegates to RuntimeGraphAnalyzer for graph-based analysis.</p>
560
560
  </div></span>
561
561
 
562
+ </li>
563
+
564
+
565
+ <li class="public ">
566
+ <span class="summary_signature">
567
+
568
+ <a href="#diagram-instance_method" title="#diagram (instance method)">#<strong>diagram</strong>(base_url = nil) &#x21d2; Tasker::TaskDiagram </a>
569
+
570
+
571
+
572
+ </span>
573
+
574
+
575
+
576
+
577
+
578
+
579
+
580
+
581
+
582
+ <span class="summary_desc"><div class='inline'>
583
+ <p>Gets or creates a diagram representation of this task.</p>
584
+ </div></span>
585
+
562
586
  </li>
563
587
 
564
588
 
@@ -789,7 +813,6 @@
789
813
  <pre class="lines">
790
814
 
791
815
 
792
- 182
793
816
  183
794
817
  184
795
818
  185
@@ -798,29 +821,20 @@
798
821
  188
799
822
  189
800
823
  190
801
- 191
802
- 192
803
- 193
804
- 194
805
- 195</pre>
824
+ 191</pre>
806
825
  </td>
807
826
  <td>
808
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 182</span>
827
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 183</span>
809
828
 
810
829
  <span class='id identifier rubyid_scope'>scope</span> <span class='symbol'>:active</span><span class='comma'>,</span> <span class='id identifier rubyid_lambda'>lambda</span> <span class='lbrace'>{</span>
811
- <span class='comment'># Active tasks are those with at least one workflow step whose most recent transition
812
- </span> <span class='comment'># is NOT in a terminal state. Using EXISTS subquery for clarity and performance.
813
- </span> <span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='heredoc_beg'>&lt;&lt;-SQL</span><span class='period'>.</span><span class='id identifier rubyid_squish'>squish</span><span class='rparen'>)</span>
814
- <span class='tstring_content'> EXISTS (
815
- SELECT 1
816
- FROM tasker_workflow_steps ws
817
- INNER JOIN tasker_workflow_step_transitions wst ON wst.workflow_step_id = ws.workflow_step_id
818
- WHERE ws.task_id = tasker_tasks.task_id
819
- AND wst.most_recent = true
820
- AND wst.to_state NOT IN (&#39;complete&#39;, &#39;error&#39;, &#39;skipped&#39;, &#39;resolved_manually&#39;)
821
- )
822
- </span><span class='heredoc_end'> SQL
823
- </span><span class='rbrace'>}</span></pre>
830
+ <span class='id identifier rubyid_joins'>joins</span><span class='lparen'>(</span><span class='label'>workflow_steps:</span> <span class='symbol'>:workflow_step_transitions</span><span class='rparen'>)</span>
831
+ <span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='period'>.</span><span class='id identifier rubyid_not'>not</span><span class='lparen'>(</span>
832
+ <span class='label'>tasker_workflow_step_transitions:</span> <span class='lbrace'>{</span>
833
+ <span class='label'>to_state:</span> <span class='qwords_beg'>%w[</span><span class='tstring_content'>complete</span><span class='words_sep'> </span><span class='tstring_content'>error</span><span class='words_sep'> </span><span class='tstring_content'>skipped</span><span class='words_sep'> </span><span class='tstring_content'>resolved_manually</span><span class='tstring_end'>]</span></span><span class='comma'>,</span>
834
+ <span class='label'>most_recent:</span> <span class='kw'>true</span>
835
+ <span class='rbrace'>}</span>
836
+ <span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_distinct'>distinct</span>
837
+ <span class='rbrace'>}</span></pre>
824
838
  </td>
825
839
  </tr>
826
840
  </table>
@@ -922,16 +936,16 @@
922
936
  <pre class="lines">
923
937
 
924
938
 
925
- 96
926
939
  97
927
940
  98
928
941
  99
929
942
  100
930
943
  101
931
- 102</pre>
944
+ 102
945
+ 103</pre>
932
946
  </td>
933
947
  <td>
934
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 96</span>
948
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 97</span>
935
949
 
936
950
  <span class='id identifier rubyid_scope'>scope</span> <span class='symbol'>:by_annotation</span><span class='comma'>,</span>
937
951
  <span class='id identifier rubyid_lambda'>lambda</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='op'>|</span>
@@ -1009,7 +1023,6 @@
1009
1023
  <pre class="lines">
1010
1024
 
1011
1025
 
1012
- 109
1013
1026
  110
1014
1027
  111
1015
1028
  112
@@ -1024,10 +1037,11 @@
1024
1037
  121
1025
1038
  122
1026
1039
  123
1027
- 124</pre>
1040
+ 124
1041
+ 125</pre>
1028
1042
  </td>
1029
1043
  <td>
1030
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 109</span>
1044
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 110</span>
1031
1045
 
1032
1046
  <span class='id identifier rubyid_scope'>scope</span> <span class='symbol'>:by_current_state</span><span class='comma'>,</span>
1033
1047
  <span class='id identifier rubyid_lambda'>lambda</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_state'>state</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='op'>|</span>
@@ -1114,15 +1128,15 @@
1114
1128
  <pre class="lines">
1115
1129
 
1116
1130
 
1117
- 152
1118
1131
  153
1119
1132
  154
1120
1133
  155
1121
1134
  156
1122
- 157</pre>
1135
+ 157
1136
+ 158</pre>
1123
1137
  </td>
1124
1138
  <td>
1125
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 152</span>
1139
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 153</span>
1126
1140
 
1127
1141
  <span class='id identifier rubyid_scope'>scope</span> <span class='symbol'>:completed_since</span><span class='comma'>,</span> <span class='id identifier rubyid_lambda'>lambda</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_since_time'>since_time</span><span class='op'>|</span>
1128
1142
  <span class='id identifier rubyid_joins'>joins</span><span class='lparen'>(</span><span class='label'>workflow_steps:</span> <span class='symbol'>:workflow_step_transitions</span><span class='rparen'>)</span>
@@ -1217,14 +1231,14 @@
1217
1231
  <pre class="lines">
1218
1232
 
1219
1233
 
1220
- 239
1221
- 240
1222
- 241
1223
- 242
1224
- 243</pre>
1234
+ 235
1235
+ 236
1236
+ 237
1237
+ 238
1238
+ 239</pre>
1225
1239
  </td>
1226
1240
  <td>
1227
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 239</span>
1241
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 235</span>
1228
1242
 
1229
1243
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_create_with_defaults!'>create_with_defaults!</span><span class='lparen'>(</span><span class='id identifier rubyid_task_request'>task_request</span><span class='rparen'>)</span>
1230
1244
  <span class='id identifier rubyid_task'>task</span> <span class='op'>=</span> <span class='id identifier rubyid_from_task_request'>from_task_request</span><span class='lparen'>(</span><span class='id identifier rubyid_task_request'>task_request</span><span class='rparen'>)</span>
@@ -1300,12 +1314,12 @@
1300
1314
  <pre class="lines">
1301
1315
 
1302
1316
 
1303
- 143
1304
1317
  144
1305
- 145</pre>
1318
+ 145
1319
+ 146</pre>
1306
1320
  </td>
1307
1321
  <td>
1308
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 143</span>
1322
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 144</span>
1309
1323
 
1310
1324
  <span class='id identifier rubyid_scope'>scope</span> <span class='symbol'>:created_since</span><span class='comma'>,</span> <span class='id identifier rubyid_lambda'>lambda</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_since_time'>since_time</span><span class='op'>|</span>
1311
1325
  <span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>tasker_tasks.created_at &gt; ?</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_since_time'>since_time</span><span class='rparen'>)</span>
@@ -1379,7 +1393,6 @@
1379
1393
  <pre class="lines">
1380
1394
 
1381
1395
 
1382
- 166
1383
1396
  167
1384
1397
  168
1385
1398
  169
@@ -1389,10 +1402,11 @@
1389
1402
  173
1390
1403
  174
1391
1404
  175
1392
- 176</pre>
1405
+ 176
1406
+ 177</pre>
1393
1407
  </td>
1394
1408
  <td>
1395
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 166</span>
1409
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 167</span>
1396
1410
 
1397
1411
  <span class='id identifier rubyid_scope'>scope</span> <span class='symbol'>:failed_since</span><span class='comma'>,</span> <span class='id identifier rubyid_lambda'>lambda</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_since_time'>since_time</span><span class='op'>|</span>
1398
1412
  <span class='id identifier rubyid_joins'>joins</span><span class='lparen'>(</span><span class='heredoc_beg'>&lt;&lt;-SQL</span><span class='period'>.</span><span class='id identifier rubyid_squish'>squish</span><span class='rparen'>)</span>
@@ -1474,6 +1488,10 @@
1474
1488
  <pre class="lines">
1475
1489
 
1476
1490
 
1491
+ 245
1492
+ 246
1493
+ 247
1494
+ 248
1477
1495
  249
1478
1496
  250
1479
1497
  251
@@ -1481,14 +1499,10 @@
1481
1499
  253
1482
1500
  254
1483
1501
  255
1484
- 256
1485
- 257
1486
- 258
1487
- 259
1488
- 260</pre>
1502
+ 256</pre>
1489
1503
  </td>
1490
1504
  <td>
1491
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 249</span>
1505
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 245</span>
1492
1506
 
1493
1507
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_from_task_request'>from_task_request</span><span class='lparen'>(</span><span class='id identifier rubyid_task_request'>task_request</span><span class='rparen'>)</span>
1494
1508
  <span class='id identifier rubyid_named_task'>named_task</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="NamedTask.html" title="Tasker::NamedTask (class)">NamedTask</a></span></span><span class='period'>.</span><span class='id identifier rubyid_find_or_create_by_full_name!'><span class='object_link'><a href="NamedTask.html#find_or_create_by_full_name!-class_method" title="Tasker::NamedTask.find_or_create_by_full_name! (method)">find_or_create_by_full_name!</a></span></span><span class='lparen'>(</span><span class='label'>name:</span> <span class='id identifier rubyid_task_request'>task_request</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span>
@@ -1571,6 +1585,10 @@
1571
1585
  <pre class="lines">
1572
1586
 
1573
1587
 
1588
+ 278
1589
+ 279
1590
+ 280
1591
+ 281
1574
1592
  282
1575
1593
  283
1576
1594
  284
@@ -1578,14 +1596,10 @@
1578
1596
  286
1579
1597
  287
1580
1598
  288
1581
- 289
1582
- 290
1583
- 291
1584
- 292
1585
- 293</pre>
1599
+ 289</pre>
1586
1600
  </td>
1587
1601
  <td>
1588
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 282</span>
1602
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 278</span>
1589
1603
 
1590
1604
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_get_default_task_request_options'>get_default_task_request_options</span><span class='lparen'>(</span><span class='id identifier rubyid_named_task'>named_task</span><span class='rparen'>)</span>
1591
1605
  <span class='lbrace'>{</span>
@@ -1668,20 +1682,20 @@
1668
1682
  <pre class="lines">
1669
1683
 
1670
1684
 
1685
+ 262
1686
+ 263
1687
+ 264
1688
+ 265
1671
1689
  266
1672
1690
  267
1673
1691
  268
1674
1692
  269
1675
1693
  270
1676
1694
  271
1677
- 272
1678
- 273
1679
- 274
1680
- 275
1681
- 276</pre>
1695
+ 272</pre>
1682
1696
  </td>
1683
1697
  <td>
1684
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 266</span>
1698
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 262</span>
1685
1699
 
1686
1700
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_get_request_options'>get_request_options</span><span class='lparen'>(</span><span class='id identifier rubyid_task_request'>task_request</span><span class='rparen'>)</span>
1687
1701
  <span class='lbrace'>{</span>
@@ -1763,13 +1777,13 @@
1763
1777
  <pre class="lines">
1764
1778
 
1765
1779
 
1766
- 202
1767
- 203
1768
- 204
1769
- 205</pre>
1780
+ 198
1781
+ 199
1782
+ 200
1783
+ 201</pre>
1770
1784
  </td>
1771
1785
  <td>
1772
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 202</span>
1786
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 198</span>
1773
1787
 
1774
1788
  <span class='id identifier rubyid_scope'>scope</span> <span class='symbol'>:in_namespace</span><span class='comma'>,</span> <span class='id identifier rubyid_lambda'>lambda</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_namespace_name'>namespace_name</span><span class='op'>|</span>
1775
1789
  <span class='id identifier rubyid_joins'>joins</span><span class='lparen'>(</span><span class='label'>named_task:</span> <span class='symbol'>:task_namespace</span><span class='rparen'>)</span>
@@ -1824,12 +1838,12 @@
1824
1838
  <pre class="lines">
1825
1839
 
1826
1840
 
1827
- 230
1828
- 231
1829
- 232</pre>
1841
+ 226
1842
+ 227
1843
+ 228</pre>
1830
1844
  </td>
1831
1845
  <td>
1832
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 230</span>
1846
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 226</span>
1833
1847
 
1834
1848
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_unique_task_types_count'>unique_task_types_count</span>
1835
1849
  <span class='id identifier rubyid_joins'>joins</span><span class='lparen'>(</span><span class='symbol'>:named_task</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_distinct'>distinct</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>tasker_named_tasks.name</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
@@ -1903,13 +1917,13 @@
1903
1917
  <pre class="lines">
1904
1918
 
1905
1919
 
1906
- 212
1907
- 213
1908
- 214
1909
- 215</pre>
1920
+ 208
1921
+ 209
1922
+ 210
1923
+ 211</pre>
1910
1924
  </td>
1911
1925
  <td>
1912
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 212</span>
1926
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 208</span>
1913
1927
 
1914
1928
  <span class='id identifier rubyid_scope'>scope</span> <span class='symbol'>:with_task_name</span><span class='comma'>,</span> <span class='id identifier rubyid_lambda'>lambda</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_task_name'>task_name</span><span class='op'>|</span>
1915
1929
  <span class='id identifier rubyid_joins'>joins</span><span class='lparen'>(</span><span class='symbol'>:named_task</span><span class='rparen'>)</span>
@@ -1984,13 +1998,13 @@
1984
1998
  <pre class="lines">
1985
1999
 
1986
2000
 
1987
- 222
1988
- 223
1989
- 224
1990
- 225</pre>
2001
+ 218
2002
+ 219
2003
+ 220
2004
+ 221</pre>
1991
2005
  </td>
1992
2006
  <td>
1993
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 222</span>
2007
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 218</span>
1994
2008
 
1995
2009
  <span class='id identifier rubyid_scope'>scope</span> <span class='symbol'>:with_version</span><span class='comma'>,</span> <span class='id identifier rubyid_lambda'>lambda</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_version'>version</span><span class='op'>|</span>
1996
2010
  <span class='id identifier rubyid_joins'>joins</span><span class='lparen'>(</span><span class='symbol'>:named_task</span><span class='rparen'>)</span>
@@ -2051,12 +2065,12 @@
2051
2065
  <pre class="lines">
2052
2066
 
2053
2067
 
2054
- 318
2055
- 319
2056
- 320</pre>
2068
+ 322
2069
+ 323
2070
+ 324</pre>
2057
2071
  </td>
2058
2072
  <td>
2059
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 318</span>
2073
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 322</span>
2060
2074
 
2061
2075
  <span class='kw'>def</span> <span class='id identifier rubyid_all_steps_complete?'>all_steps_complete?</span>
2062
2076
  <span class='const'><span class='object_link'><a href="../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="StepReadinessStatus.html" title="Tasker::StepReadinessStatus (class)">StepReadinessStatus</a></span></span><span class='period'>.</span><span class='id identifier rubyid_all_steps_complete_for_task?'><span class='object_link'><a href="StepReadinessStatus.html#all_steps_complete_for_task%3F-class_method" title="Tasker::StepReadinessStatus.all_steps_complete_for_task? (method)">all_steps_complete_for_task?</a></span></span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
@@ -2110,12 +2124,12 @@
2110
2124
  <pre class="lines">
2111
2125
 
2112
2126
 
2113
- 311
2114
- 312
2115
- 313</pre>
2127
+ 315
2128
+ 316
2129
+ 317</pre>
2116
2130
  </td>
2117
2131
  <td>
2118
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 311</span>
2132
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 315</span>
2119
2133
 
2120
2134
  <span class='kw'>def</span> <span class='id identifier rubyid_dependency_graph'>dependency_graph</span>
2121
2135
  <span class='id identifier rubyid_runtime_analyzer'>runtime_analyzer</span><span class='period'>.</span><span class='id identifier rubyid_analyze'>analyze</span>
@@ -2123,6 +2137,87 @@
2123
2137
  </td>
2124
2138
  </tr>
2125
2139
  </table>
2140
+ </div>
2141
+
2142
+ <div class="method_details ">
2143
+ <h3 class="signature " id="diagram-instance_method">
2144
+
2145
+ #<strong>diagram</strong>(base_url = nil) &#x21d2; <tt><span class='object_link'><a href="TaskDiagram.html" title="Tasker::TaskDiagram (class)">Tasker::TaskDiagram</a></span></tt>
2146
+
2147
+
2148
+
2149
+
2150
+
2151
+ </h3><div class="docstring">
2152
+ <div class="discussion">
2153
+
2154
+ <p>Gets or creates a diagram representation of this task</p>
2155
+
2156
+
2157
+ </div>
2158
+ </div>
2159
+ <div class="tags">
2160
+ <p class="tag_title">Parameters:</p>
2161
+ <ul class="param">
2162
+
2163
+ <li>
2164
+
2165
+ <span class='name'>base_url</span>
2166
+
2167
+
2168
+ <span class='type'>(<tt>String</tt>, <tt>nil</tt>)</span>
2169
+
2170
+
2171
+ <em class="default">(defaults to: <tt>nil</tt>)</em>
2172
+
2173
+
2174
+ &mdash;
2175
+ <div class='inline'>
2176
+ <p>The base URL to use for links in the diagram, defaults to nil</p>
2177
+ </div>
2178
+
2179
+ </li>
2180
+
2181
+ </ul>
2182
+
2183
+ <p class="tag_title">Returns:</p>
2184
+ <ul class="return">
2185
+
2186
+ <li>
2187
+
2188
+
2189
+ <span class='type'>(<tt><span class='object_link'><a href="TaskDiagram.html" title="Tasker::TaskDiagram (class)">Tasker::TaskDiagram</a></span></tt>)</span>
2190
+
2191
+
2192
+
2193
+ &mdash;
2194
+ <div class='inline'>
2195
+ <p>The diagram representation of this task</p>
2196
+ </div>
2197
+
2198
+ </li>
2199
+
2200
+ </ul>
2201
+
2202
+ </div><table class="source_code">
2203
+ <tr>
2204
+ <td>
2205
+ <pre class="lines">
2206
+
2207
+
2208
+ 303
2209
+ 304
2210
+ 305</pre>
2211
+ </td>
2212
+ <td>
2213
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 303</span>
2214
+
2215
+ <span class='kw'>def</span> <span class='id identifier rubyid_diagram'>diagram</span><span class='lparen'>(</span><span class='id identifier rubyid_base_url'>base_url</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
2216
+ <span class='ivar'>@diagram</span> <span class='op'>||=</span> <span class='const'><span class='object_link'><a href="../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="TaskDiagram.html" title="Tasker::TaskDiagram (class)">TaskDiagram</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="TaskDiagram.html#initialize-instance_method" title="Tasker::TaskDiagram#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id identifier rubyid_base_url'>base_url</span><span class='rparen'>)</span>
2217
+ <span class='kw'>end</span></pre>
2218
+ </td>
2219
+ </tr>
2220
+ </table>
2126
2221
  </div>
2127
2222
 
2128
2223
  <div class="method_details ">
@@ -2189,12 +2284,12 @@
2189
2284
  <pre class="lines">
2190
2285
 
2191
2286
 
2192
- 299
2193
- 300
2194
- 301</pre>
2287
+ 295
2288
+ 296
2289
+ 297</pre>
2195
2290
  </td>
2196
2291
  <td>
2197
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 299</span>
2292
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 295</span>
2198
2293
 
2199
2294
  <span class='kw'>def</span> <span class='id identifier rubyid_get_step_by_name'>get_step_by_name</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
2200
2295
  <span class='id identifier rubyid_workflow_steps'>workflow_steps</span><span class='period'>.</span><span class='id identifier rubyid_includes'>includes</span><span class='lparen'>(</span><span class='symbol'>:named_step</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='label'>named_step:</span> <span class='lbrace'>{</span> <span class='label'>name:</span> <span class='id identifier rubyid_name'>name</span> <span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
@@ -2219,17 +2314,19 @@
2219
2314
  <pre class="lines">
2220
2315
 
2221
2316
 
2222
- 326
2223
- 327
2224
- 328
2225
- 329</pre>
2317
+ 330
2318
+ 331
2319
+ 332
2320
+ 333
2321
+ 334</pre>
2226
2322
  </td>
2227
2323
  <td>
2228
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 326</span>
2324
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 330</span>
2229
2325
 
2230
2326
  <span class='kw'>def</span> <span class='id identifier rubyid_reload'>reload</span>
2231
2327
  <span class='kw'>super</span>
2232
2328
  <span class='ivar'>@task_execution_context</span> <span class='op'>=</span> <span class='kw'>nil</span>
2329
+ <span class='ivar'>@diagram</span> <span class='op'>=</span> <span class='kw'>nil</span>
2233
2330
  <span class='kw'>end</span></pre>
2234
2331
  </td>
2235
2332
  </tr>
@@ -2251,12 +2348,12 @@
2251
2348
  <pre class="lines">
2252
2349
 
2253
2350
 
2254
- 303
2255
- 304
2256
- 305</pre>
2351
+ 307
2352
+ 308
2353
+ 309</pre>
2257
2354
  </td>
2258
2355
  <td>
2259
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 303</span>
2356
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 307</span>
2260
2357
 
2261
2358
  <span class='kw'>def</span> <span class='id identifier rubyid_runtime_analyzer'>runtime_analyzer</span>
2262
2359
  <span class='ivar'>@runtime_analyzer</span> <span class='op'>||=</span> <span class='const'><span class='object_link'><a href="../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Analysis.html" title="Tasker::Analysis (module)">Analysis</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Analysis/RuntimeGraphAnalyzer.html" title="Tasker::Analysis::RuntimeGraphAnalyzer (class)">RuntimeGraphAnalyzer</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Analysis/RuntimeGraphAnalyzer.html#initialize-instance_method" title="Tasker::Analysis::RuntimeGraphAnalyzer#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='label'>task:</span> <span class='kw'>self</span><span class='rparen'>)</span>
@@ -2292,16 +2389,16 @@
2292
2389
  <pre class="lines">
2293
2390
 
2294
2391
 
2295
- 70
2296
2392
  71
2297
2393
  72
2298
2394
  73
2299
2395
  74
2300
2396
  75
2301
- 76</pre>
2397
+ 76
2398
+ 77</pre>
2302
2399
  </td>
2303
2400
  <td>
2304
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 70</span>
2401
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 71</span>
2305
2402
 
2306
2403
  <span class='kw'>def</span> <span class='id identifier rubyid_state_machine'>state_machine</span>
2307
2404
  <span class='ivar'>@state_machine</span> <span class='op'>||=</span> <span class='const'><span class='object_link'><a href="../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="StateMachine.html" title="Tasker::StateMachine (module)">StateMachine</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="StateMachine/TaskStateMachine.html" title="Tasker::StateMachine::TaskStateMachine (class)">TaskStateMachine</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span>
@@ -2341,7 +2438,6 @@
2341
2438
  <pre class="lines">
2342
2439
 
2343
2440
 
2344
- 79
2345
2441
  80
2346
2442
  81
2347
2443
  82
@@ -2349,10 +2445,11 @@
2349
2445
  84
2350
2446
  85
2351
2447
  86
2352
- 87</pre>
2448
+ 87
2449
+ 88</pre>
2353
2450
  </td>
2354
2451
  <td>
2355
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 79</span>
2452
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 80</span>
2356
2453
 
2357
2454
  <span class='kw'>def</span> <span class='id identifier rubyid_status'>status</span>
2358
2455
  <span class='kw'>if</span> <span class='id identifier rubyid_new_record?'>new_record?</span>
@@ -2383,12 +2480,12 @@
2383
2480
  <pre class="lines">
2384
2481
 
2385
2482
 
2386
- 322
2387
- 323
2388
- 324</pre>
2483
+ 326
2484
+ 327
2485
+ 328</pre>
2389
2486
  </td>
2390
2487
  <td>
2391
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 322</span>
2488
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 326</span>
2392
2489
 
2393
2490
  <span class='kw'>def</span> <span class='id identifier rubyid_task_execution_context'>task_execution_context</span>
2394
2491
  <span class='ivar'>@task_execution_context</span> <span class='op'>||=</span> <span class='const'><span class='object_link'><a href="../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="TaskExecutionContext.html" title="Tasker::TaskExecutionContext (class)">TaskExecutionContext</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="TaskExecutionContext.html#initialize-instance_method" title="Tasker::TaskExecutionContext#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_task_id'>task_id</span><span class='rparen'>)</span>
@@ -2442,15 +2539,15 @@
2442
2539
  <pre class="lines">
2443
2540
 
2444
2541
 
2445
- 129
2446
2542
  130
2447
2543
  131
2448
2544
  132
2449
2545
  133
2450
- 134</pre>
2546
+ 134
2547
+ 135</pre>
2451
2548
  </td>
2452
2549
  <td>
2453
- <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 129</span>
2550
+ <pre class="code"><span class="info file"># File 'app/models/tasker/task.rb', line 130</span>
2454
2551
 
2455
2552
  <span class='id identifier rubyid_scope'>scope</span> <span class='symbol'>:with_all_associated</span><span class='comma'>,</span> <span class='id identifier rubyid_lambda'>lambda</span> <span class='lbrace'>{</span>
2456
2553
  <span class='id identifier rubyid_includes'>includes</span><span class='lparen'>(</span><span class='label'>named_task:</span> <span class='lbracket'>[</span><span class='symbol'>:task_namespace</span><span class='rbracket'>]</span><span class='rparen'>)</span>
@@ -2468,7 +2565,7 @@
2468
2565
  </div>
2469
2566
 
2470
2567
  <div id="footer">
2471
- Generated on Sun Jul 13 16:58:46 2025 by
2568
+ Generated on Tue Jul 1 16:47:35 2025 by
2472
2569
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
2473
2570
  0.9.37 (ruby-3.2.4).
2474
2571
  </div>
@@ -127,7 +127,7 @@
127
127
  </div>
128
128
 
129
129
  <div id="footer">
130
- Generated on Sun Jul 13 16:58:47 2025 by
130
+ Generated on Tue Jul 1 16:47:37 2025 by
131
131
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
132
132
  0.9.37 (ruby-3.2.4).
133
133
  </div>
@@ -114,7 +114,7 @@
114
114
  </div>
115
115
 
116
116
  <div id="footer">
117
- Generated on Sun Jul 13 16:58:51 2025 by
117
+ Generated on Tue Jul 1 16:47:41 2025 by
118
118
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
119
119
  0.9.37 (ruby-3.2.4).
120
120
  </div>