@bluelibs/runner 5.1.0 → 5.2.1

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 (314) hide show
  1. package/README.md +25 -15
  2. package/dist/browser/index.cjs +851 -478
  3. package/dist/browser/index.cjs.map +1 -1
  4. package/dist/browser/index.mjs +849 -478
  5. package/dist/browser/index.mjs.map +1 -1
  6. package/dist/edge/index.cjs +851 -478
  7. package/dist/edge/index.cjs.map +1 -1
  8. package/dist/edge/index.mjs +849 -478
  9. package/dist/edge/index.mjs.map +1 -1
  10. package/dist/node/node.cjs +1305 -583
  11. package/dist/node/node.cjs.map +1 -1
  12. package/dist/node/node.mjs +1299 -583
  13. package/dist/node/node.mjs.map +1 -1
  14. package/dist/types/define.d.ts +9 -0
  15. package/dist/types/definers/builders/asyncContext/fluent-builder.d.ts +6 -0
  16. package/dist/types/definers/builders/asyncContext/fluent-builder.interface.d.ts +9 -0
  17. package/dist/types/definers/builders/asyncContext/index.d.ts +10 -0
  18. package/dist/types/definers/builders/asyncContext/types.d.ts +13 -0
  19. package/dist/types/definers/builders/asyncContext/utils.d.ts +5 -0
  20. package/dist/types/definers/builders/asyncContext.d.ts +1 -0
  21. package/dist/types/definers/builders/core.d.ts +30 -0
  22. package/dist/types/definers/builders/error/fluent-builder.d.ts +7 -0
  23. package/dist/types/definers/builders/error/fluent-builder.interface.d.ts +10 -0
  24. package/dist/types/definers/builders/error/index.d.ts +11 -0
  25. package/dist/types/definers/builders/error/types.d.ts +14 -0
  26. package/dist/types/definers/builders/error/utils.d.ts +6 -0
  27. package/dist/types/definers/builders/error.d.ts +1 -0
  28. package/dist/types/definers/builders/event/fluent-builder.d.ts +7 -0
  29. package/dist/types/definers/builders/event/fluent-builder.interface.d.ts +18 -0
  30. package/dist/types/definers/builders/event/index.d.ts +10 -0
  31. package/dist/types/definers/builders/event/types.d.ts +8 -0
  32. package/dist/types/definers/builders/event/utils.d.ts +9 -0
  33. package/dist/types/definers/builders/event.d.ts +1 -0
  34. package/dist/types/definers/builders/hook/fluent-builder.d.ts +8 -0
  35. package/dist/types/definers/builders/hook/fluent-builder.interface.d.ts +27 -0
  36. package/dist/types/definers/builders/hook/index.d.ts +12 -0
  37. package/dist/types/definers/builders/hook/types.d.ts +14 -0
  38. package/dist/types/definers/builders/hook/utils.d.ts +14 -0
  39. package/dist/types/definers/builders/hook.d.ts +1 -0
  40. package/dist/types/definers/builders/middleware/index.d.ts +19 -0
  41. package/dist/types/definers/builders/middleware/resource.d.ts +7 -0
  42. package/dist/types/definers/builders/middleware/resource.interface.d.ts +18 -0
  43. package/dist/types/definers/builders/middleware/task.d.ts +7 -0
  44. package/dist/types/definers/builders/middleware/task.interface.d.ts +18 -0
  45. package/dist/types/definers/builders/middleware/types.d.ts +13 -0
  46. package/dist/types/definers/builders/middleware/utils.d.ts +18 -0
  47. package/dist/types/definers/builders/middleware.d.ts +1 -0
  48. package/dist/types/definers/builders/override/hook.d.ts +16 -0
  49. package/dist/types/definers/builders/override/index.d.ts +11 -0
  50. package/dist/types/definers/builders/override/resource-middleware.d.ts +3 -0
  51. package/dist/types/definers/builders/override/resource.d.ts +3 -0
  52. package/dist/types/definers/builders/override/task-middleware.d.ts +3 -0
  53. package/dist/types/definers/builders/override/task.d.ts +3 -0
  54. package/dist/types/definers/builders/resource/fluent-builder.d.ts +8 -0
  55. package/dist/types/definers/builders/resource/fluent-builder.interface.d.ts +42 -0
  56. package/dist/types/definers/builders/resource/index.d.ts +13 -0
  57. package/dist/types/definers/builders/resource/types.d.ts +37 -0
  58. package/dist/types/definers/builders/resource/utils.d.ts +26 -0
  59. package/dist/types/definers/builders/resource.d.ts +1 -0
  60. package/dist/types/definers/builders/tag/fluent-builder.d.ts +6 -0
  61. package/dist/types/definers/builders/tag/fluent-builder.interface.d.ts +8 -0
  62. package/dist/types/definers/builders/tag/index.d.ts +10 -0
  63. package/dist/types/definers/builders/tag/types.d.ts +12 -0
  64. package/dist/types/definers/builders/tag/utils.d.ts +5 -0
  65. package/dist/types/definers/builders/tag.d.ts +1 -0
  66. package/dist/types/definers/builders/task/fluent-builder.d.ts +8 -0
  67. package/dist/types/definers/builders/task/fluent-builder.interface.d.ts +33 -0
  68. package/dist/types/definers/builders/task/index.d.ts +21 -0
  69. package/dist/types/definers/builders/task/phantom-builder.d.ts +8 -0
  70. package/dist/types/definers/builders/task/phantom-builder.interface.d.ts +31 -0
  71. package/dist/types/definers/builders/task/types.d.ts +34 -0
  72. package/dist/types/definers/builders/task/utils.d.ts +14 -0
  73. package/dist/types/definers/builders/task.d.ts +1 -0
  74. package/dist/types/definers/builders/task.phantom.d.ts +1 -0
  75. package/dist/types/definers/builders/utils.d.ts +4 -0
  76. package/dist/types/definers/defineAsyncContext.d.ts +15 -0
  77. package/dist/types/definers/defineError.d.ts +27 -0
  78. package/dist/types/definers/defineEvent.d.ts +2 -0
  79. package/dist/types/definers/defineHook.d.ts +6 -0
  80. package/dist/types/definers/defineOverride.d.ts +12 -0
  81. package/dist/types/definers/defineResource.d.ts +2 -0
  82. package/dist/types/definers/defineResourceMiddleware.d.ts +2 -0
  83. package/dist/types/definers/defineTag.d.ts +12 -0
  84. package/dist/types/definers/defineTask.d.ts +18 -0
  85. package/dist/types/definers/defineTaskMiddleware.d.ts +2 -0
  86. package/dist/types/definers/middlewareConfig.d.ts +1 -0
  87. package/dist/types/definers/resourceFork.d.ts +13 -0
  88. package/dist/types/definers/tools.d.ts +53 -0
  89. package/dist/types/defs.d.ts +33 -0
  90. package/dist/types/errors.d.ts +75 -0
  91. package/dist/types/globals/debug.d.ts +10 -0
  92. package/dist/types/globals/globalEvents.d.ts +8 -0
  93. package/dist/types/globals/globalMiddleware.d.ts +97 -0
  94. package/dist/types/globals/globalResources.d.ts +64 -0
  95. package/dist/types/globals/globalTags.d.ts +12 -0
  96. package/dist/types/globals/middleware/cache.middleware.d.ts +36 -0
  97. package/dist/types/globals/middleware/circuitBreaker.middleware.d.ts +56 -0
  98. package/dist/types/globals/middleware/concurrency.middleware.d.ts +47 -0
  99. package/dist/types/globals/middleware/fallback.middleware.d.ts +23 -0
  100. package/dist/types/globals/middleware/rateLimit.middleware.d.ts +47 -0
  101. package/dist/types/globals/middleware/requireContext.middleware.d.ts +5 -0
  102. package/dist/types/globals/middleware/retry.middleware.d.ts +31 -0
  103. package/dist/types/globals/middleware/temporal.middleware.d.ts +48 -0
  104. package/dist/types/globals/middleware/timeout.middleware.d.ts +24 -0
  105. package/dist/types/globals/middleware/tunnel.middleware.d.ts +3 -0
  106. package/dist/types/globals/resources/debug/debug.resource.d.ts +7 -0
  107. package/dist/types/globals/resources/debug/debug.tag.d.ts +2 -0
  108. package/dist/types/globals/resources/debug/debugConfig.resource.d.ts +22 -0
  109. package/dist/types/globals/resources/debug/executionTracker.middleware.d.ts +50 -0
  110. package/dist/types/globals/resources/debug/globalEvent.hook.d.ts +27 -0
  111. package/dist/types/globals/resources/debug/hook.hook.d.ts +30 -0
  112. package/dist/types/globals/resources/debug/index.d.ts +6 -0
  113. package/dist/types/globals/resources/debug/middleware.hook.d.ts +30 -0
  114. package/dist/types/globals/resources/debug/types.d.ts +25 -0
  115. package/dist/types/globals/resources/debug/utils.d.ts +2 -0
  116. package/dist/types/globals/resources/httpClientFactory.resource.d.ts +28 -0
  117. package/dist/types/globals/resources/queue.resource.d.ts +10 -0
  118. package/dist/types/globals/resources/tunnel/error-utils.d.ts +1 -0
  119. package/dist/types/globals/resources/tunnel/plan.d.ts +19 -0
  120. package/dist/types/globals/resources/tunnel/protocol.d.ts +48 -0
  121. package/dist/types/globals/resources/tunnel/tunnel.policy.tag.d.ts +26 -0
  122. package/dist/types/globals/resources/tunnel/tunnel.tag.d.ts +2 -0
  123. package/dist/types/globals/resources/tunnel/types.d.ts +48 -0
  124. package/dist/types/globals/tunnels/index.d.ts +23 -0
  125. package/dist/types/globals/types.d.ts +15 -0
  126. package/dist/types/http-client.d.ts +26 -0
  127. package/dist/types/http-fetch-tunnel.resource.d.ts +11 -0
  128. package/dist/types/index.d.ts +44 -0
  129. package/dist/types/models/DependencyProcessor.d.ts +46 -0
  130. package/dist/types/models/EventManager.d.ts +115 -0
  131. package/dist/types/models/ExecutionJournal.d.ts +35 -0
  132. package/dist/types/models/LogPrinter.d.ts +56 -0
  133. package/dist/types/models/Logger.d.ts +85 -0
  134. package/dist/types/models/MiddlewareManager.d.ts +73 -0
  135. package/dist/types/models/OverrideManager.d.ts +13 -0
  136. package/dist/types/models/Queue.d.ts +40 -0
  137. package/dist/types/models/ResourceInitializer.d.ts +20 -0
  138. package/dist/types/models/RunResult.d.ts +41 -0
  139. package/dist/types/models/Semaphore.d.ts +80 -0
  140. package/dist/types/models/Store.d.ts +76 -0
  141. package/dist/types/models/StoreRegistry.d.ts +49 -0
  142. package/dist/types/models/StoreValidator.d.ts +8 -0
  143. package/dist/types/models/TaskRunner.d.ts +28 -0
  144. package/dist/types/models/UnhandledError.d.ts +11 -0
  145. package/dist/types/models/event/CycleContext.d.ts +9 -0
  146. package/dist/types/models/event/EmissionExecutor.d.ts +11 -0
  147. package/dist/types/models/event/InterceptorPipeline.d.ts +5 -0
  148. package/dist/types/models/event/ListenerRegistry.d.ts +31 -0
  149. package/dist/types/models/event/types.d.ts +50 -0
  150. package/dist/types/models/index.d.ts +13 -0
  151. package/dist/types/models/middleware/InterceptorRegistry.d.ts +56 -0
  152. package/dist/types/models/middleware/MiddlewareResolver.d.ts +31 -0
  153. package/dist/types/models/middleware/ResourceMiddlewareComposer.d.ts +34 -0
  154. package/dist/types/models/middleware/TaskMiddlewareComposer.d.ts +44 -0
  155. package/dist/types/models/middleware/ValidationHelper.d.ts +20 -0
  156. package/dist/types/models/middleware/index.d.ts +6 -0
  157. package/dist/types/models/middleware/types.d.ts +10 -0
  158. package/dist/types/models/utils/findCircularDependencies.d.ts +16 -0
  159. package/dist/types/models/utils/safeStringify.d.ts +3 -0
  160. package/dist/types/node/durable/bus/MemoryEventBus.d.ts +7 -0
  161. package/dist/types/node/durable/bus/NoopEventBus.d.ts +6 -0
  162. package/dist/types/node/durable/bus/RedisEventBus.d.ts +30 -0
  163. package/dist/types/node/durable/core/CronParser.d.ts +15 -0
  164. package/dist/types/node/durable/core/DurableContext.d.ts +64 -0
  165. package/dist/types/node/durable/core/DurableOperator.d.ts +47 -0
  166. package/dist/types/node/durable/core/DurableResource.d.ts +80 -0
  167. package/dist/types/node/durable/core/DurableService.d.ts +73 -0
  168. package/dist/types/node/durable/core/DurableWorker.d.ts +19 -0
  169. package/dist/types/node/durable/core/StepBuilder.d.ts +23 -0
  170. package/dist/types/node/durable/core/audit.d.ts +152 -0
  171. package/dist/types/node/durable/core/createRunnerDurableRuntime.d.ts +18 -0
  172. package/dist/types/node/durable/core/durable-context/DurableContext.audit.d.ts +14 -0
  173. package/dist/types/node/durable/core/durable-context/DurableContext.determinism.d.ts +13 -0
  174. package/dist/types/node/durable/core/durable-context/DurableContext.emit.d.ts +16 -0
  175. package/dist/types/node/durable/core/durable-context/DurableContext.sleep.d.ts +16 -0
  176. package/dist/types/node/durable/core/durable-context/DurableContext.steps.d.ts +25 -0
  177. package/dist/types/node/durable/core/durable-context/DurableContext.switch.d.ts +22 -0
  178. package/dist/types/node/durable/core/durable-context/DurableContext.waitForSignal.d.ts +23 -0
  179. package/dist/types/node/durable/core/flowShape.d.ts +50 -0
  180. package/dist/types/node/durable/core/ids.d.ts +11 -0
  181. package/dist/types/node/durable/core/index.d.ts +11 -0
  182. package/dist/types/node/durable/core/interfaces/bus.d.ts +13 -0
  183. package/dist/types/node/durable/core/interfaces/context.d.ts +105 -0
  184. package/dist/types/node/durable/core/interfaces/queue.d.ts +17 -0
  185. package/dist/types/node/durable/core/interfaces/service.d.ts +146 -0
  186. package/dist/types/node/durable/core/interfaces/store.d.ts +66 -0
  187. package/dist/types/node/durable/core/managers/AuditLogger.d.ts +29 -0
  188. package/dist/types/node/durable/core/managers/ExecutionManager.d.ts +48 -0
  189. package/dist/types/node/durable/core/managers/PollingManager.d.ts +48 -0
  190. package/dist/types/node/durable/core/managers/ScheduleManager.d.ts +33 -0
  191. package/dist/types/node/durable/core/managers/SignalHandler.d.ts +25 -0
  192. package/dist/types/node/durable/core/managers/TaskRegistry.d.ts +16 -0
  193. package/dist/types/node/durable/core/managers/WaitManager.d.ts +26 -0
  194. package/dist/types/node/durable/core/managers/index.d.ts +7 -0
  195. package/dist/types/node/durable/core/resource.d.ts +14 -0
  196. package/dist/types/node/durable/core/types.d.ts +84 -0
  197. package/dist/types/node/durable/core/utils.d.ts +28 -0
  198. package/dist/types/node/durable/dashboard/server.d.ts +20 -0
  199. package/dist/types/node/durable/emitters/runnerAuditEmitter.d.ts +6 -0
  200. package/dist/types/node/durable/events.d.ts +76 -0
  201. package/dist/types/node/durable/index.d.ts +34 -0
  202. package/dist/types/node/durable/optionalDeps/amqplib.d.ts +1 -0
  203. package/dist/types/node/durable/optionalDeps/ioredis.d.ts +1 -0
  204. package/dist/types/node/durable/queue/MemoryQueue.d.ts +12 -0
  205. package/dist/types/node/durable/queue/RabbitMQQueue.d.ts +30 -0
  206. package/dist/types/node/durable/resources/isolation.d.ts +15 -0
  207. package/dist/types/node/durable/resources/memoryDurableResource.d.ts +21 -0
  208. package/dist/types/node/durable/resources/redisDurableResource.d.ts +35 -0
  209. package/dist/types/node/durable/store/MemoryStore.d.ts +56 -0
  210. package/dist/types/node/durable/store/RedisStore.d.ts +89 -0
  211. package/dist/types/node/durable/test-utils.d.ts +29 -0
  212. package/dist/types/node/exposure/allowList.d.ts +3 -0
  213. package/dist/types/node/exposure/authenticator.d.ts +16 -0
  214. package/dist/types/node/exposure/cors.d.ts +4 -0
  215. package/dist/types/node/exposure/createNodeExposure.d.ts +2 -0
  216. package/dist/types/node/exposure/exposureServer.d.ts +18 -0
  217. package/dist/types/node/exposure/handlers/contextWrapper.d.ts +18 -0
  218. package/dist/types/node/exposure/handlers/errorHandlers.d.ts +23 -0
  219. package/dist/types/node/exposure/handlers/eventHandler.d.ts +20 -0
  220. package/dist/types/node/exposure/handlers/taskHandler.d.ts +24 -0
  221. package/dist/types/node/exposure/httpResponse.d.ts +10 -0
  222. package/dist/types/node/exposure/index.d.ts +3 -0
  223. package/dist/types/node/exposure/logging.d.ts +4 -0
  224. package/dist/types/node/exposure/multipart.d.ts +36 -0
  225. package/dist/types/node/exposure/requestBody.d.ts +11 -0
  226. package/dist/types/node/exposure/requestContext.d.ts +17 -0
  227. package/dist/types/node/exposure/requestHandlers.d.ts +29 -0
  228. package/dist/types/node/exposure/resource.d.ts +12 -0
  229. package/dist/types/node/exposure/resourceTypes.d.ts +73 -0
  230. package/dist/types/node/exposure/router.d.ts +17 -0
  231. package/dist/types/node/exposure/serverLifecycle.d.ts +13 -0
  232. package/dist/types/node/exposure/types.d.ts +45 -0
  233. package/dist/types/node/exposure/utils.d.ts +17 -0
  234. package/dist/types/node/files/createNodeFile.d.ts +9 -0
  235. package/dist/types/node/files/index.d.ts +4 -0
  236. package/dist/types/node/files/inputFile.model.d.ts +22 -0
  237. package/dist/types/node/files/inputFile.utils.d.ts +14 -0
  238. package/dist/types/node/http/http-mixed-client.d.ts +45 -0
  239. package/dist/types/node/http/http-mixed-client.factory.resource.d.ts +17 -0
  240. package/dist/types/node/http/http-smart-client.factory.resource.d.ts +16 -0
  241. package/dist/types/node/http/http-smart-client.model.d.ts +27 -0
  242. package/dist/types/node/http/index.d.ts +4 -0
  243. package/dist/types/node/index.d.ts +1 -0
  244. package/dist/types/node/node.d.ts +193 -0
  245. package/dist/types/node/platform/createFile.d.ts +9 -0
  246. package/dist/types/node/tunnel/allowlist.d.ts +7 -0
  247. package/dist/types/node/tunnel/index.d.ts +2 -0
  248. package/dist/types/node/upload/manifest.d.ts +23 -0
  249. package/dist/types/platform/adapters/browser.d.ts +14 -0
  250. package/dist/types/platform/adapters/edge.d.ts +5 -0
  251. package/dist/types/platform/adapters/node-als.d.ts +1 -0
  252. package/dist/types/platform/adapters/node.d.ts +15 -0
  253. package/dist/types/platform/adapters/universal-generic.d.ts +14 -0
  254. package/dist/types/platform/adapters/universal.d.ts +18 -0
  255. package/dist/types/platform/createFile.d.ts +10 -0
  256. package/dist/types/platform/createWebFile.d.ts +11 -0
  257. package/dist/types/platform/factory.d.ts +2 -0
  258. package/dist/types/platform/index.d.ts +27 -0
  259. package/dist/types/platform/types.d.ts +31 -0
  260. package/dist/types/processHooks.d.ts +2 -0
  261. package/dist/types/public-types.d.ts +13 -0
  262. package/dist/types/public.d.ts +210 -0
  263. package/dist/types/run.d.ts +14 -0
  264. package/dist/types/serializer/Serializer.d.ts +84 -0
  265. package/dist/types/serializer/binary-builtins.d.ts +5 -0
  266. package/dist/types/serializer/builtins.d.ts +47 -0
  267. package/dist/types/serializer/deserializer.d.ts +27 -0
  268. package/dist/types/serializer/error-url-builtins.d.ts +13 -0
  269. package/dist/types/serializer/graph-serializer.d.ts +27 -0
  270. package/dist/types/serializer/index.d.ts +6 -0
  271. package/dist/types/serializer/option-normalizers.d.ts +2 -0
  272. package/dist/types/serializer/regexp-validator.d.ts +34 -0
  273. package/dist/types/serializer/serialize-utils.d.ts +15 -0
  274. package/dist/types/serializer/special-values.d.ts +20 -0
  275. package/dist/types/serializer/tree-serializer.d.ts +20 -0
  276. package/dist/types/serializer/type-registry.d.ts +58 -0
  277. package/dist/types/serializer/types.d.ts +126 -0
  278. package/dist/types/serializer/validation.d.ts +34 -0
  279. package/dist/types/testing.d.ts +19 -0
  280. package/dist/types/tools/detectRunnerMode.d.ts +9 -0
  281. package/dist/types/tools/getCallerFile.d.ts +1 -0
  282. package/dist/types/tools/throws.d.ts +7 -0
  283. package/dist/types/tunnels/buildUniversalManifest.d.ts +24 -0
  284. package/dist/types/types/asyncContext.d.ts +41 -0
  285. package/dist/types/types/contracts.d.ts +62 -0
  286. package/dist/types/types/error.d.ts +39 -0
  287. package/dist/types/types/event.d.ts +79 -0
  288. package/dist/types/types/executionJournal.d.ts +29 -0
  289. package/dist/types/types/hook.d.ts +23 -0
  290. package/dist/types/types/inputFile.d.ts +34 -0
  291. package/dist/types/types/meta.d.ts +22 -0
  292. package/dist/types/types/resource.d.ts +133 -0
  293. package/dist/types/types/resourceMiddleware.d.ts +48 -0
  294. package/dist/types/types/runner.d.ts +68 -0
  295. package/dist/types/types/storeTypes.d.ts +46 -0
  296. package/dist/types/types/symbols.d.ts +34 -0
  297. package/dist/types/types/tag.d.ts +45 -0
  298. package/dist/types/types/task.d.ts +76 -0
  299. package/dist/types/types/taskMiddleware.d.ts +55 -0
  300. package/dist/types/types/utilities.d.ts +125 -0
  301. package/dist/universal/index.cjs +851 -476
  302. package/dist/universal/index.cjs.map +1 -1
  303. package/dist/universal/index.mjs +849 -476
  304. package/dist/universal/index.mjs.map +1 -1
  305. package/package.json +15 -14
  306. package/readmes/AI.md +30 -9
  307. package/dist/browser/index.d.mts +0 -2919
  308. package/dist/browser/index.d.ts +0 -2919
  309. package/dist/edge/index.d.mts +0 -2919
  310. package/dist/edge/index.d.ts +0 -2919
  311. package/dist/node/node.d.mts +0 -4622
  312. package/dist/node/node.d.ts +0 -4622
  313. package/dist/universal/index.d.mts +0 -2919
  314. package/dist/universal/index.d.ts +0 -2919
@@ -0,0 +1,50 @@
1
+ import { DependencyValuesType, EventHandlerType, IEventEmission } from "../../defs";
2
+ import { IHook } from "../../types/hook";
3
+ /**
4
+ * Default options for event handlers.
5
+ */
6
+ export declare const HandlerOptionsDefaults: {
7
+ order: number;
8
+ };
9
+ /**
10
+ * Internal storage structure for event listeners.
11
+ */
12
+ export interface IListenerStorage {
13
+ order: number;
14
+ filter?: (event: IEventEmission<any>) => boolean;
15
+ handler: EventHandlerType;
16
+ /** Optional listener id (from IEventHandlerOptions.id) */
17
+ id?: string;
18
+ /** True when this listener originates from addGlobalListener(). */
19
+ isGlobal: boolean;
20
+ }
21
+ /**
22
+ * Options for configuring event listeners.
23
+ */
24
+ export interface IEventHandlerOptions<T = any> {
25
+ order?: number;
26
+ filter?: (event: IEventEmission<T>) => boolean;
27
+ /**
28
+ * Represents the listener ID. Use this to avoid a listener calling itself.
29
+ */
30
+ id?: string;
31
+ }
32
+ /**
33
+ * Interceptor for event emissions.
34
+ */
35
+ export type EventEmissionInterceptor = (next: (event: IEventEmission<any>) => Promise<void>, event: IEventEmission<any>) => Promise<void>;
36
+ /**
37
+ * Interceptor for hook execution.
38
+ */
39
+ export type HookExecutionInterceptor = (next: (hook: IHook<any, any>, event: IEventEmission<any>) => Promise<any>, hook: IHook<any, any>, event: IEventEmission<any>) => Promise<any>;
40
+ /**
41
+ * Shared contract for cycle-aware hook execution.
42
+ */
43
+ export type HookExecutor = (hook: IHook<any, any>, event: IEventEmission<any>, computedDependencies: DependencyValuesType<any>) => Promise<any>;
44
+ /**
45
+ * Utility shape representing an emission frame used for cycle detection.
46
+ */
47
+ export interface IEmissionFrame {
48
+ id: string;
49
+ source: string;
50
+ }
@@ -0,0 +1,13 @@
1
+ export * from "./DependencyProcessor";
2
+ export * from "./EventManager";
3
+ export * from "./Logger";
4
+ export * from "./Store";
5
+ export * from "./TaskRunner";
6
+ export * from "./ResourceInitializer";
7
+ export * from "./MiddlewareManager";
8
+ export { LogPrinter } from "./LogPrinter";
9
+ export type { PrintableLog, ColorTheme, LogLevels as LogPrinterLevels, PrintStrategy as LogPrinterPrintStrategy, } from "./LogPrinter";
10
+ export * from "./Semaphore";
11
+ export * from "./Queue";
12
+ export * from "./UnhandledError";
13
+ export * from "./RunResult";
@@ -0,0 +1,56 @@
1
+ import { TaskMiddlewareInterceptor, ResourceMiddlewareInterceptor } from "./types";
2
+ /**
3
+ * Centralized registry for all interceptor types.
4
+ * Manages storage and retrieval of global and per-middleware interceptors.
5
+ */
6
+ export declare class InterceptorRegistry {
7
+ #private;
8
+ private taskInterceptors;
9
+ private resourceInterceptors;
10
+ private perTaskMiddleware;
11
+ private perResourceMiddleware;
12
+ /**
13
+ * Gets the current lock status
14
+ */
15
+ get isLocked(): boolean;
16
+ /**
17
+ * Locks the registry, preventing any further modifications
18
+ */
19
+ lock(): void;
20
+ /**
21
+ * Throws an error if the registry is locked
22
+ */
23
+ private checkLock;
24
+ /**
25
+ * Adds a global task interceptor
26
+ */
27
+ addGlobalTaskInterceptor(interceptor: TaskMiddlewareInterceptor): void;
28
+ /**
29
+ * Adds a global resource interceptor
30
+ */
31
+ addGlobalResourceInterceptor(interceptor: ResourceMiddlewareInterceptor): void;
32
+ /**
33
+ * Adds an interceptor for a specific task middleware instance
34
+ */
35
+ addTaskMiddlewareInterceptor(middlewareId: string, interceptor: TaskMiddlewareInterceptor): void;
36
+ /**
37
+ * Adds an interceptor for a specific resource middleware instance
38
+ */
39
+ addResourceMiddlewareInterceptor(middlewareId: string, interceptor: ResourceMiddlewareInterceptor): void;
40
+ /**
41
+ * Gets all global task interceptors
42
+ */
43
+ getGlobalTaskInterceptors(): readonly TaskMiddlewareInterceptor[];
44
+ /**
45
+ * Gets all global resource interceptors
46
+ */
47
+ getGlobalResourceInterceptors(): readonly ResourceMiddlewareInterceptor[];
48
+ /**
49
+ * Gets interceptors for a specific task middleware
50
+ */
51
+ getTaskMiddlewareInterceptors(middlewareId: string): readonly TaskMiddlewareInterceptor[];
52
+ /**
53
+ * Gets interceptors for a specific resource middleware
54
+ */
55
+ getResourceMiddlewareInterceptors(middlewareId: string): readonly ResourceMiddlewareInterceptor[];
56
+ }
@@ -0,0 +1,31 @@
1
+ import { ITask, IResource, ITaskMiddleware, IResourceMiddleware } from "../../defs";
2
+ import { Store } from "../Store";
3
+ /**
4
+ * Resolves which middlewares should be applied to tasks and resources.
5
+ * Handles global "everywhere" middlewares, local middlewares, and tunnel policies.
6
+ */
7
+ export declare class MiddlewareResolver {
8
+ private readonly store;
9
+ constructor(store: Store);
10
+ /**
11
+ * Gets all applicable middlewares for a task (global + local, deduplicated)
12
+ */
13
+ getApplicableTaskMiddlewares(task: ITask<any, any, any>): ITaskMiddleware[];
14
+ /**
15
+ * Gets all applicable middlewares for a resource (global + local, deduplicated)
16
+ */
17
+ getApplicableResourceMiddlewares(resource: IResource<any, any, any, any>): IResourceMiddleware[];
18
+ /**
19
+ * For tunneled tasks, controls caller-side task middleware execution.
20
+ * Caller-side middleware is skipped by default and can be re-enabled via allowlist.
21
+ */
22
+ applyTunnelPolicyFilter(task: ITask<any, any, any>, middlewares: ITaskMiddleware[]): ITaskMiddleware[];
23
+ /**
24
+ * Gets all "everywhere" middlewares that apply to the given task
25
+ */
26
+ getEverywhereTaskMiddlewares(task: ITask<any, any, any>): ITaskMiddleware[];
27
+ /**
28
+ * Gets all "everywhere" middlewares that apply to the given resource
29
+ */
30
+ getEverywhereResourceMiddlewares(resource: IResource<any, any, any, any>): IResourceMiddleware[];
31
+ }
@@ -0,0 +1,34 @@
1
+ import { IResource, DependencyMapType } from "../../defs";
2
+ import { Store } from "../Store";
3
+ import { InterceptorRegistry } from "./InterceptorRegistry";
4
+ import { MiddlewareResolver } from "./MiddlewareResolver";
5
+ /**
6
+ * Composes resource initialization chains with validation, interceptors, and middlewares.
7
+ * Builds the onion-style wrapping of resource init functions.
8
+ */
9
+ export declare class ResourceMiddlewareComposer {
10
+ private readonly store;
11
+ private readonly interceptorRegistry;
12
+ private readonly middlewareResolver;
13
+ constructor(store: Store, interceptorRegistry: InterceptorRegistry, middlewareResolver: MiddlewareResolver);
14
+ /**
15
+ * Runs resource initialization with all middleware and interceptors applied
16
+ */
17
+ runInit<TConfig, TValue extends Promise<any>, TDeps extends DependencyMapType, TContext>(resource: IResource<TConfig, TValue, TDeps, TContext>, config: TConfig, dependencies: any, context: TContext): Promise<TValue | undefined>;
18
+ /**
19
+ * Creates the base resource init runner with result validation
20
+ */
21
+ private createBaseInitRunner;
22
+ /**
23
+ * Applies resource middleware layers
24
+ */
25
+ private applyMiddlewares;
26
+ /**
27
+ * Applies global resource middleware interceptors
28
+ */
29
+ private applyGlobalInterceptors;
30
+ /**
31
+ * Wraps a middleware runner with its specific interceptors in onion style
32
+ */
33
+ private wrapWithInterceptors;
34
+ }
@@ -0,0 +1,44 @@
1
+ import { ITask, DependencyMapType } from "../../defs";
2
+ import { Store } from "../Store";
3
+ import { InterceptorRegistry } from "./InterceptorRegistry";
4
+ import { MiddlewareResolver } from "./MiddlewareResolver";
5
+ import type { ExecutionJournal } from "../../types/executionJournal";
6
+ /**
7
+ * Composes task execution chains with validation, interceptors, and middlewares.
8
+ * Builds the onion-style wrapping of task runners.
9
+ */
10
+ export declare class TaskMiddlewareComposer {
11
+ private readonly store;
12
+ private readonly interceptorRegistry;
13
+ private readonly middlewareResolver;
14
+ constructor(store: Store, interceptorRegistry: InterceptorRegistry, middlewareResolver: MiddlewareResolver);
15
+ /**
16
+ * Composes a complete task runner with all middleware and interceptors applied
17
+ */
18
+ compose<TInput, TOutput extends Promise<any>, TDeps extends DependencyMapType>(task: ITask<TInput, TOutput, TDeps>): (input: TInput, parentJournal?: ExecutionJournal) => Promise<Awaited<TOutput>>;
19
+ /**
20
+ * Creates the base task runner with input/result validation
21
+ */
22
+ private createBaseRunner;
23
+ /**
24
+ * Determines which task definition to use for execution
25
+ * Prefers store definition when task is tunneled (tunnel overrides apply)
26
+ */
27
+ private resolveTaskDefinition;
28
+ /**
29
+ * Applies local per-task interceptors (closest to the task)
30
+ */
31
+ private applyLocalInterceptors;
32
+ /**
33
+ * Applies global task middleware interceptors
34
+ */
35
+ private applyGlobalInterceptors;
36
+ /**
37
+ * Applies task middleware layers (global first, then local)
38
+ */
39
+ private applyMiddlewares;
40
+ /**
41
+ * Wraps a middleware runner with its specific interceptors in onion style
42
+ */
43
+ private wrapWithInterceptors;
44
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Centralized validation logic for inputs and results across tasks and resources.
3
+ * Provides consistent error handling and messaging.
4
+ */
5
+ export declare class ValidationHelper {
6
+ /**
7
+ * Validates input using the provided schema
8
+ * @throws ValidationError if validation fails
9
+ */
10
+ static validateInput<T>(value: any, schema: {
11
+ parse: (v: any) => T;
12
+ } | undefined, id: string, type: "Task" | "Resource"): T;
13
+ /**
14
+ * Validates result using the provided schema
15
+ * @throws ValidationError if validation fails
16
+ */
17
+ static validateResult<T>(value: any, schema: {
18
+ parse: (v: any) => T;
19
+ } | undefined, id: string, type: "Task" | "Resource"): T;
20
+ }
@@ -0,0 +1,6 @@
1
+ export { InterceptorRegistry } from "./InterceptorRegistry";
2
+ export { MiddlewareResolver } from "./MiddlewareResolver";
3
+ export { TaskMiddlewareComposer } from "./TaskMiddlewareComposer";
4
+ export { ResourceMiddlewareComposer } from "./ResourceMiddlewareComposer";
5
+ export { ValidationHelper } from "./ValidationHelper";
6
+ export type { TaskMiddlewareInterceptor, ResourceMiddlewareInterceptor, } from "./types";
@@ -0,0 +1,10 @@
1
+ import { ITaskMiddlewareExecutionInput } from "../../types/taskMiddleware";
2
+ import { IResourceMiddlewareExecutionInput } from "../../types/resourceMiddleware";
3
+ /**
4
+ * Interceptor for task middleware execution
5
+ */
6
+ export type TaskMiddlewareInterceptor = (next: (input: ITaskMiddlewareExecutionInput<any>) => Promise<any>, input: ITaskMiddlewareExecutionInput<any>) => Promise<any>;
7
+ /**
8
+ * Interceptor for resource middleware execution
9
+ */
10
+ export type ResourceMiddlewareInterceptor = (next: (input: IResourceMiddlewareExecutionInput<any>) => Promise<any>, input: IResourceMiddlewareExecutionInput<any>) => Promise<any>;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * A node that has dependencies.
3
+ */
4
+ export interface IDependentNode {
5
+ id: string;
6
+ dependencies: Record<string, IDependentNode>;
7
+ }
8
+ interface FindCircularDependenciesResult {
9
+ cycles: string[];
10
+ missingDependencies: Array<{
11
+ nodeId: string;
12
+ dependencyId: string;
13
+ }>;
14
+ }
15
+ export declare function findCircularDependencies(nodes: IDependentNode[]): FindCircularDependenciesResult;
16
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare function safeStringify(value: unknown, space?: number, options?: {
2
+ maxDepth?: number;
3
+ }): string;
@@ -0,0 +1,7 @@
1
+ import type { BusEvent, BusEventHandler, IEventBus } from "../core/interfaces/bus";
2
+ export declare class MemoryEventBus implements IEventBus {
3
+ private handlers;
4
+ publish(channel: string, event: BusEvent): Promise<void>;
5
+ subscribe(channel: string, handler: BusEventHandler): Promise<void>;
6
+ unsubscribe(channel: string): Promise<void>;
7
+ }
@@ -0,0 +1,6 @@
1
+ import type { BusEvent, BusEventHandler, IEventBus } from "../core/interfaces/bus";
2
+ export declare class NoopEventBus implements IEventBus {
3
+ publish(_channel: string, _event: BusEvent): Promise<void>;
4
+ subscribe(_channel: string, _handler: BusEventHandler): Promise<void>;
5
+ unsubscribe(_channel: string): Promise<void>;
6
+ }
@@ -0,0 +1,30 @@
1
+ import type { BusEvent, BusEventHandler, IEventBus } from "../core/interfaces/bus";
2
+ export interface RedisEventBusConfig {
3
+ prefix?: string;
4
+ redis?: RedisEventBusClient | string;
5
+ }
6
+ export interface RedisEventBusClient {
7
+ publish(channel: string, payload: string): Promise<unknown>;
8
+ subscribe(channel: string): Promise<unknown>;
9
+ unsubscribe(channel: string): Promise<unknown>;
10
+ on(event: "message", fn: (channel: string, message: string) => void): unknown;
11
+ quit(): Promise<unknown>;
12
+ duplicate(): RedisEventBusClient;
13
+ }
14
+ export declare class RedisEventBus implements IEventBus {
15
+ private pub;
16
+ private sub;
17
+ private prefix;
18
+ private readonly channels;
19
+ private readonly serializer;
20
+ constructor(config: RedisEventBusConfig);
21
+ private k;
22
+ private tryParse;
23
+ private coerceTimestamp;
24
+ private toBusEvent;
25
+ private deserializeEvent;
26
+ publish(channel: string, event: BusEvent): Promise<void>;
27
+ subscribe(channel: string, handler: BusEventHandler): Promise<void>;
28
+ unsubscribe(channel: string): Promise<void>;
29
+ dispose(): Promise<void>;
30
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Cron helper used by `ScheduleManager`.
3
+ *
4
+ * Prefers the optional `cron-parser` dependency when available, but provides a
5
+ * deterministic fallback implementation so durable scheduling works even when
6
+ * optional deps are not installed (important for the multi-platform packaging
7
+ * and optionalDependency setup).
8
+ */
9
+ export declare class CronParser {
10
+ static getNextRun(cron: string, from?: Date): Date;
11
+ static isValid(cron: string): boolean;
12
+ private static tryGetExternalParser;
13
+ private static parseFallback;
14
+ private static getNextRunFallback;
15
+ }
@@ -0,0 +1,64 @@
1
+ import type { IEventBus } from "./interfaces/bus";
2
+ import type { EmitOptions, IDurableContext, IStepBuilder, SignalOptions, SleepOptions, StepOptions, SwitchBranch } from "./interfaces/context";
3
+ import type { IDurableStore } from "./interfaces/store";
4
+ import type { IEventDefinition } from "../../../types/event";
5
+ import type { DurableStepId } from "./ids";
6
+ import { type DurableAuditEmitter } from "./audit";
7
+ import { type ImplicitInternalStepIdsPolicy } from "./durable-context/DurableContext.determinism";
8
+ /**
9
+ * Per-execution workflow toolkit used by durable tasks.
10
+ *
11
+ * `DurableContext` is created by `ExecutionManager` for each execution attempt and
12
+ * made available to user code via `DurableResource.use()` (AsyncLocalStorage).
13
+ *
14
+ * It provides deterministic "save points" (`step()`), durable suspension primitives
15
+ * (`sleep()`, `waitForSignal()`), and best-effort side-channel notifications (`emit()`).
16
+ * The durable store is the source of truth; this class is intentionally thin state
17
+ * around indexes/guards to keep a single in-memory attempt deterministic.
18
+ */
19
+ export declare class DurableContext implements IDurableContext {
20
+ private readonly store;
21
+ private readonly bus;
22
+ readonly executionId: string;
23
+ readonly attempt: number;
24
+ private readonly sleepIndexRef;
25
+ private readonly signalIndexes;
26
+ private readonly emitIndexes;
27
+ private noteIndex;
28
+ private readonly implicitInternalStepIdsWarned;
29
+ private readonly seenStepIds;
30
+ private readonly compensations;
31
+ private readonly audit;
32
+ private readonly determinism;
33
+ private readonly auditEnabled;
34
+ private readonly auditEmitter;
35
+ private readonly implicitInternalStepIdsPolicy;
36
+ constructor(store: IDurableStore, bus: IEventBus, executionId: string, attempt: number, options?: {
37
+ auditEnabled?: boolean;
38
+ auditEmitter?: DurableAuditEmitter;
39
+ implicitInternalStepIds?: ImplicitInternalStepIdsPolicy;
40
+ });
41
+ private assertNotCancelled;
42
+ private getStepId;
43
+ private internalStep;
44
+ step<T>(stepId: string): IStepBuilder<T>;
45
+ step<T>(stepId: DurableStepId<T>): IStepBuilder<T>;
46
+ step<T>(stepId: string | DurableStepId<T>, fn: () => Promise<T>): Promise<T>;
47
+ step<T>(stepId: string | DurableStepId<T>, options: StepOptions, fn: () => Promise<T>): Promise<T>;
48
+ _executeStep<T>(stepId: string, options: StepOptions, upFn: () => Promise<T>, downFn?: (result: T) => Promise<void>): Promise<T>;
49
+ rollback(): Promise<void>;
50
+ sleep(durationMs: number, options?: SleepOptions): Promise<void>;
51
+ waitForSignal<TPayload>(signal: IEventDefinition<TPayload>): Promise<TPayload>;
52
+ waitForSignal<TPayload>(signal: IEventDefinition<TPayload>, options: SignalOptions & {
53
+ timeoutMs: number;
54
+ }): Promise<{
55
+ kind: "signal";
56
+ payload: TPayload;
57
+ } | {
58
+ kind: "timeout";
59
+ }>;
60
+ waitForSignal<TPayload>(signal: IEventDefinition<TPayload>, options: SignalOptions): Promise<TPayload>;
61
+ emit<TPayload>(event: IEventDefinition<TPayload>, payload: TPayload, options?: EmitOptions): Promise<void>;
62
+ switch<TValue, TResult>(stepId: string, value: TValue, branches: SwitchBranch<TValue, TResult>[], defaultBranch?: Omit<SwitchBranch<TValue, TResult>, "match">): Promise<TResult>;
63
+ note(message: string, meta?: Record<string, unknown>): Promise<void>;
64
+ }
@@ -0,0 +1,47 @@
1
+ import { IDurableStore } from "./interfaces/store";
2
+ import { Execution } from "./types";
3
+ import type { DurableAuditEntry } from "./audit";
4
+ import type { StepResult } from "./types";
5
+ import type { ListExecutionsOptions } from "./interfaces/store";
6
+ /**
7
+ * Administrative / operator API for durable workflows.
8
+ *
9
+ * This class is intentionally store-backed and side-effect free with respect to
10
+ * "running" workflows: it reads execution details and, when supported by the store,
11
+ * can perform operator actions (retry rollback, skip a step, force fail, patch state).
12
+ *
13
+ * Used by dashboards / CLIs / tooling to inspect and recover executions.
14
+ */
15
+ export declare class DurableOperator {
16
+ private readonly store;
17
+ constructor(store: IDurableStore);
18
+ listExecutions(options?: ListExecutionsOptions): Promise<Execution[]>;
19
+ getExecutionDetail(executionId: string): Promise<{
20
+ execution: Execution | null;
21
+ steps: StepResult[];
22
+ audit: DurableAuditEntry[];
23
+ }>;
24
+ /**
25
+ * Resets an execution from `compensation_failed` (or other states) to `pending`.
26
+ * This effectively retries the workflow from the last memoized step.
27
+ */
28
+ retryRollback(executionId: string): Promise<void>;
29
+ /**
30
+ * Manually marks a step as completed with a specific result.
31
+ * Useful for skipping broken steps or providing a manual fix.
32
+ */
33
+ skipStep(executionId: string, stepId: string): Promise<void>;
34
+ /**
35
+ * Forces an execution to the `failed` state.
36
+ */
37
+ forceFail(executionId: string, reason: string): Promise<void>;
38
+ /**
39
+ * Manually patches the result of a step.
40
+ * Useful when a step failed to save its result but the side effect occurred.
41
+ */
42
+ editState(executionId: string, stepId: string, newState: unknown): Promise<void>;
43
+ /**
44
+ * Lists all executions that require manual intervention.
45
+ */
46
+ listStuckExecutions(): Promise<Execution[]>;
47
+ }
@@ -0,0 +1,80 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ import type { Store } from "../../../models/Store";
3
+ import type { IEventDefinition } from "../../../types/event";
4
+ import type { ITask } from "../../../types/task";
5
+ import type { IDurableContext } from "./interfaces/context";
6
+ import type { DurableTask, ExecuteOptions, IDurableService, ScheduleOptions } from "./interfaces/service";
7
+ import type { Schedule } from "./types";
8
+ import type { IDurableStore } from "./interfaces/store";
9
+ import { DurableOperator } from "./DurableOperator";
10
+ import { type DurableFlowShape } from "./flowShape";
11
+ export interface DurableResourceConfig {
12
+ worker?: boolean;
13
+ }
14
+ export interface IDurableResource extends Pick<IDurableService, "startExecution" | "cancelExecution" | "wait" | "execute" | "executeStrict" | "schedule" | "ensureSchedule" | "pauseSchedule" | "resumeSchedule" | "getSchedule" | "listSchedules" | "updateSchedule" | "removeSchedule" | "recover" | "signal"> {
15
+ /**
16
+ * Reads the durable context for the currently running workflow execution.
17
+ * Throws if called outside of a durable execution.
18
+ */
19
+ use(): IDurableContext;
20
+ /**
21
+ * Describe a durable workflow task using real runtime dependencies.
22
+ *
23
+ * - Non-durable deps are kept as-is (so pre-step control flow can use them).
24
+ * - Durable deps are shimmed so `durable.use()` returns the recorder context.
25
+ *
26
+ * The task must be registered in the runtime store (ie. part of the app tree).
27
+ *
28
+ * Accepts any Runner `ITask`. Generic `TInput` is inferred from the task,
29
+ * or can be specified explicitly: `describe<MyInput>(task, input)`.
30
+ */
31
+ describe<TInput>(task: ITask<TInput, any, any, any, any, any>, input?: TInput): Promise<DurableFlowShape>;
32
+ /**
33
+ * Store-backed operator API to inspect and administrate executions
34
+ * (steps/audit/history and operator actions where supported by the store).
35
+ */
36
+ readonly operator: DurableOperator;
37
+ }
38
+ /**
39
+ * A Runner-facing wrapper around `DurableService` that exposes a per-instance
40
+ * context store and the public durable API (`execute`, `signal`, `wait`, etc.).
41
+ *
42
+ * This enables tasks to depend on a specific durable instance and call
43
+ * `durable.use()` to access the per-execution durable context.
44
+ */
45
+ export declare class DurableResource implements IDurableResource {
46
+ readonly service: IDurableService;
47
+ private readonly contextStorage;
48
+ private readonly store?;
49
+ private readonly runnerStore?;
50
+ private operatorInstance;
51
+ constructor(service: IDurableService, contextStorage: AsyncLocalStorage<IDurableContext>, store?: IDurableStore | undefined, runnerStore?: Store | undefined);
52
+ get operator(): DurableOperator;
53
+ use(): IDurableContext;
54
+ describe<TInput>(task: ITask<TInput, any, any, any, any, any>, input?: TInput): Promise<DurableFlowShape>;
55
+ private injectRecorderIntoDurableDeps;
56
+ startExecution<TInput>(task: DurableTask<TInput, unknown>, input?: TInput, options?: ExecuteOptions): Promise<string>;
57
+ cancelExecution(executionId: string, reason?: string): Promise<void>;
58
+ wait<TResult>(executionId: string, options?: {
59
+ timeout?: number;
60
+ waitPollIntervalMs?: number;
61
+ }): Promise<TResult>;
62
+ execute<TInput, TResult>(task: DurableTask<TInput, TResult>, input?: TInput, options?: ExecuteOptions): Promise<TResult>;
63
+ executeStrict<TInput, TResult>(task: undefined extends TResult ? never : DurableTask<TInput, TResult>, input?: TInput, options?: ExecuteOptions): Promise<TResult>;
64
+ schedule<TInput>(task: DurableTask<TInput, unknown>, input: TInput | undefined, options: ScheduleOptions): Promise<string>;
65
+ ensureSchedule<TInput>(task: DurableTask<TInput, unknown>, input: TInput | undefined, options: ScheduleOptions & {
66
+ id: string;
67
+ }): Promise<string>;
68
+ pauseSchedule(scheduleId: string): Promise<void>;
69
+ resumeSchedule(scheduleId: string): Promise<void>;
70
+ getSchedule(scheduleId: string): Promise<Schedule | null>;
71
+ listSchedules(): Promise<Schedule[]>;
72
+ updateSchedule(scheduleId: string, updates: {
73
+ cron?: string;
74
+ interval?: number;
75
+ input?: unknown;
76
+ }): Promise<void>;
77
+ removeSchedule(scheduleId: string): Promise<void>;
78
+ recover(): Promise<void>;
79
+ signal<TPayload>(executionId: string, signal: IEventDefinition<TPayload>, payload: TPayload): Promise<void>;
80
+ }
@@ -0,0 +1,73 @@
1
+ import { NoopEventBus } from "../bus/NoopEventBus";
2
+ import type { DurableServiceConfig, DurableTask, ExecuteOptions, IDurableService, ScheduleOptions } from "./interfaces/service";
3
+ import { type Schedule } from "./types";
4
+ import type { IEventDefinition } from "../../../types/event";
5
+ import { ExecutionManager, PollingManager } from "./managers";
6
+ export { DurableExecutionError } from "./utils";
7
+ /**
8
+ * High-level facade for the Durable Workflows subsystem.
9
+ *
10
+ * `DurableService` glues together the durable backends (store/queue/event bus) and
11
+ * the specialized managers that implement durable semantics:
12
+ *
13
+ * - `ExecutionManager` runs workflow attempts and injects `DurableContext`
14
+ * - `SignalHandler` delivers external signals to waiting steps
15
+ * - `WaitManager` waits for results (event-bus first, polling fallback)
16
+ * - `ScheduleManager` creates/updates schedules and their timers
17
+ * - `PollingManager` drives timers (sleep, retries, signal timeouts, schedules)
18
+ * - `AuditLogger` emits/persists an audit trail (best-effort)
19
+ *
20
+ * `DurableResource` wraps this service for Runner integration and provides
21
+ * `durable.use()` to read the per-execution `DurableContext`.
22
+ */
23
+ export declare class DurableService implements IDurableService {
24
+ private readonly config;
25
+ private readonly taskRegistry;
26
+ private readonly auditLogger;
27
+ private readonly waitManager;
28
+ private readonly scheduleManager;
29
+ private readonly signalHandler;
30
+ private readonly executionManager;
31
+ private readonly pollingManager;
32
+ /** Unique worker ID for distributed timer coordination */
33
+ private readonly workerId;
34
+ constructor(config: DurableServiceConfig);
35
+ registerTask<TInput, TResult>(task: DurableTask<TInput, TResult>): void;
36
+ findTask(taskId: string): DurableTask<any, any> | undefined;
37
+ startExecution<TInput>(task: DurableTask<TInput, unknown>, input?: TInput, options?: ExecuteOptions): Promise<string>;
38
+ cancelExecution(executionId: string, reason?: string): Promise<void>;
39
+ execute<TInput, TResult>(task: DurableTask<TInput, TResult>, input?: TInput, options?: ExecuteOptions): Promise<TResult>;
40
+ executeStrict<TInput, TResult>(task: undefined extends TResult ? never : DurableTask<TInput, TResult>, input?: TInput, options?: ExecuteOptions): Promise<TResult>;
41
+ wait<TResult>(executionId: string, options?: {
42
+ timeout?: number;
43
+ waitPollIntervalMs?: number;
44
+ }): Promise<TResult>;
45
+ schedule<TInput>(task: DurableTask<TInput, unknown>, input: TInput | undefined, options: ScheduleOptions): Promise<string>;
46
+ ensureSchedule<TInput>(task: DurableTask<TInput, unknown>, input: TInput | undefined, options: ScheduleOptions & {
47
+ id: string;
48
+ }): Promise<string>;
49
+ recover(): Promise<void>;
50
+ start(): void;
51
+ stop(): Promise<void>;
52
+ pauseSchedule(id: string): Promise<void>;
53
+ resumeSchedule(id: string): Promise<void>;
54
+ getSchedule(id: string): Promise<Schedule | null>;
55
+ listSchedules(): Promise<Schedule[]>;
56
+ updateSchedule(id: string, updates: {
57
+ cron?: string;
58
+ interval?: number;
59
+ input?: unknown;
60
+ }): Promise<void>;
61
+ removeSchedule(id: string): Promise<void>;
62
+ signal<TPayload>(executionId: string, signal: IEventDefinition<TPayload>, payload: TPayload): Promise<void>;
63
+ processExecution(executionId: string): Promise<void>;
64
+ getEventBus(): NoopEventBus;
65
+ /** @internal - exposed for unit testing */
66
+ get _pollingManager(): PollingManager;
67
+ /** @internal - exposed for unit testing */
68
+ get _executionManager(): ExecutionManager;
69
+ /** @internal - exposed for unit testing (delegates to pollingManager) */
70
+ handleTimer(timer: import("./types").Timer): Promise<void>;
71
+ }
72
+ export declare function initDurableService(config: DurableServiceConfig): Promise<DurableService>;
73
+ export declare function disposeDurableService(service: IDurableService, config: DurableServiceConfig): Promise<void>;
@@ -0,0 +1,19 @@
1
+ import type { IDurableQueue } from "./interfaces/queue";
2
+ import type { IDurableExecutionProcessor } from "./interfaces/service";
3
+ /**
4
+ * Durable queue consumer (worker process role).
5
+ *
6
+ * The worker listens to the durable queue and turns queue messages into
7
+ * `processExecution(executionId)` calls on the service layer (`ExecutionManager`
8
+ * behind `IDurableExecutionProcessor`). This is how "resume" work is distributed
9
+ * horizontally: the store is the source of truth, the queue provides delivery.
10
+ */
11
+ export declare class DurableWorker {
12
+ private readonly service;
13
+ private readonly queue;
14
+ constructor(service: IDurableExecutionProcessor, queue: IDurableQueue);
15
+ start(): Promise<void>;
16
+ private handleMessage;
17
+ private extractExecutionId;
18
+ }
19
+ export declare function initDurableWorker(service: IDurableExecutionProcessor, queue: IDurableQueue): Promise<DurableWorker>;