nvent 0.4.4 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/dist/module.d.mts +4 -185
  2. package/dist/module.json +3 -3
  3. package/dist/module.mjs +451 -257
  4. package/dist/runtime/adapters/base/index.d.ts +6 -0
  5. package/dist/runtime/adapters/base/index.js +1 -0
  6. package/dist/runtime/adapters/base/store-validator.d.ts +48 -0
  7. package/dist/runtime/adapters/base/store-validator.js +147 -0
  8. package/dist/runtime/adapters/builtin/file-queue.d.ts +67 -0
  9. package/dist/runtime/adapters/builtin/file-queue.js +499 -0
  10. package/dist/runtime/adapters/builtin/file-store.d.ts +32 -0
  11. package/dist/runtime/adapters/builtin/file-store.js +206 -0
  12. package/dist/runtime/adapters/builtin/file-stream.d.ts +39 -0
  13. package/dist/runtime/adapters/builtin/file-stream.js +56 -0
  14. package/dist/runtime/adapters/builtin/index.d.ts +10 -0
  15. package/dist/runtime/adapters/builtin/index.js +5 -0
  16. package/dist/runtime/adapters/builtin/memory-queue.d.ts +52 -0
  17. package/dist/runtime/adapters/builtin/memory-queue.js +243 -0
  18. package/dist/runtime/adapters/builtin/memory-store.d.ts +68 -0
  19. package/dist/runtime/adapters/builtin/memory-store.js +333 -0
  20. package/dist/runtime/adapters/builtin/memory-stream.d.ts +21 -0
  21. package/dist/runtime/adapters/builtin/memory-stream.js +56 -0
  22. package/dist/runtime/adapters/factory.d.ts +31 -0
  23. package/dist/runtime/adapters/factory.js +134 -0
  24. package/dist/runtime/adapters/index.d.ts +8 -0
  25. package/dist/runtime/adapters/index.js +3 -0
  26. package/dist/runtime/adapters/interfaces/index.d.ts +11 -0
  27. package/dist/runtime/adapters/interfaces/index.js +3 -0
  28. package/dist/runtime/adapters/interfaces/queue.d.ts +150 -0
  29. package/dist/runtime/adapters/interfaces/store.d.ts +297 -0
  30. package/dist/runtime/adapters/interfaces/stream.d.ts +62 -0
  31. package/dist/runtime/adapters/registry.d.ts +85 -0
  32. package/dist/runtime/adapters/registry.js +161 -0
  33. package/dist/runtime/config/index.d.ts +29 -0
  34. package/dist/runtime/config/index.js +175 -0
  35. package/dist/runtime/config/types.d.ts +397 -0
  36. package/dist/runtime/config/types.js +0 -0
  37. package/dist/runtime/{server-utils/events → events}/eventBus.d.ts +1 -1
  38. package/dist/runtime/events/types.d.ts +145 -0
  39. package/dist/runtime/events/types.js +0 -0
  40. package/dist/runtime/events/utils/scheduleTrigger.d.ts +8 -0
  41. package/dist/runtime/events/utils/scheduleTrigger.js +69 -0
  42. package/dist/runtime/events/utils/stallDetector.d.ts +140 -0
  43. package/dist/runtime/events/utils/stallDetector.js +436 -0
  44. package/dist/runtime/events/utils/triggerRuntime.d.ts +58 -0
  45. package/dist/runtime/events/utils/triggerRuntime.js +212 -0
  46. package/dist/runtime/{server-utils/events → events}/wiring/flowWiring.d.ts +12 -11
  47. package/dist/runtime/events/wiring/flowWiring.js +1020 -0
  48. package/dist/runtime/events/wiring/registry.d.ts +19 -0
  49. package/dist/runtime/events/wiring/registry.js +35 -0
  50. package/dist/runtime/events/wiring/stateWiring.d.ts +37 -0
  51. package/dist/runtime/events/wiring/stateWiring.js +92 -0
  52. package/dist/runtime/events/wiring/streamWiring.d.ts +36 -0
  53. package/dist/runtime/events/wiring/streamWiring.js +156 -0
  54. package/dist/runtime/events/wiring/triggerWiring.d.ts +21 -0
  55. package/dist/runtime/events/wiring/triggerWiring.js +412 -0
  56. package/dist/runtime/nitro/plugins/00.adapters.d.ts +14 -0
  57. package/dist/runtime/nitro/plugins/00.adapters.js +73 -0
  58. package/dist/runtime/nitro/plugins/02.workers.js +63 -0
  59. package/dist/runtime/nitro/plugins/03.triggers.d.ts +12 -0
  60. package/dist/runtime/nitro/plugins/03.triggers.js +55 -0
  61. package/dist/runtime/nitro/routes/webhook.await.d.ts +23 -0
  62. package/dist/runtime/nitro/routes/webhook.await.js +90 -0
  63. package/dist/runtime/nitro/routes/webhook.trigger.d.ts +69 -0
  64. package/dist/runtime/nitro/routes/webhook.trigger.js +64 -0
  65. package/dist/runtime/nitro/utils/adapters.d.ts +66 -0
  66. package/dist/runtime/nitro/utils/adapters.js +51 -0
  67. package/dist/runtime/nitro/utils/awaitPatterns/event.d.ts +15 -0
  68. package/dist/runtime/nitro/utils/awaitPatterns/event.js +120 -0
  69. package/dist/runtime/nitro/utils/awaitPatterns/index.d.ts +28 -0
  70. package/dist/runtime/nitro/utils/awaitPatterns/index.js +55 -0
  71. package/dist/runtime/nitro/utils/awaitPatterns/schedule.d.ts +16 -0
  72. package/dist/runtime/nitro/utils/awaitPatterns/schedule.js +78 -0
  73. package/dist/runtime/nitro/utils/awaitPatterns/time.d.ts +15 -0
  74. package/dist/runtime/nitro/utils/awaitPatterns/time.js +67 -0
  75. package/dist/runtime/nitro/utils/awaitPatterns/webhook.d.ts +15 -0
  76. package/dist/runtime/nitro/utils/awaitPatterns/webhook.js +120 -0
  77. package/dist/runtime/nitro/utils/defineFunction.d.ts +10 -0
  78. package/dist/runtime/nitro/utils/defineFunction.js +17 -0
  79. package/dist/runtime/nitro/utils/defineFunctionConfig.d.ts +310 -0
  80. package/dist/runtime/nitro/utils/defineFunctionConfig.js +3 -0
  81. package/dist/runtime/nitro/utils/defineHooks.d.ts +41 -0
  82. package/dist/runtime/nitro/utils/defineHooks.js +6 -0
  83. package/dist/runtime/nitro/utils/registerAdapter.d.ts +59 -0
  84. package/dist/runtime/nitro/utils/registerAdapter.js +13 -0
  85. package/dist/runtime/nitro/utils/useAwait.d.ts +71 -0
  86. package/dist/runtime/nitro/utils/useAwait.js +139 -0
  87. package/dist/runtime/{server-utils → nitro}/utils/useEventManager.d.ts +2 -2
  88. package/dist/runtime/{server-utils → nitro}/utils/useEventManager.js +1 -1
  89. package/dist/runtime/nitro/utils/useFlow.d.ts +68 -0
  90. package/dist/runtime/nitro/utils/useFlow.js +226 -0
  91. package/dist/runtime/nitro/utils/useHookRegistry.d.ts +34 -0
  92. package/dist/runtime/nitro/utils/useHookRegistry.js +25 -0
  93. package/dist/runtime/{server-utils → nitro}/utils/useNventLogger.js +2 -2
  94. package/dist/runtime/nitro/utils/useRunContext.d.ts +6 -0
  95. package/dist/runtime/nitro/utils/useRunContext.js +102 -0
  96. package/dist/runtime/nitro/utils/useStreamTopics.d.ts +83 -0
  97. package/dist/runtime/nitro/utils/useStreamTopics.js +94 -0
  98. package/dist/runtime/nitro/utils/useTrigger.d.ts +150 -0
  99. package/dist/runtime/nitro/utils/useTrigger.js +320 -0
  100. package/dist/runtime/scheduler/index.d.ts +33 -0
  101. package/dist/runtime/scheduler/index.js +38 -0
  102. package/dist/runtime/scheduler/scheduler.d.ts +113 -0
  103. package/dist/runtime/scheduler/scheduler.js +623 -0
  104. package/dist/runtime/scheduler/types.d.ts +116 -0
  105. package/dist/runtime/scheduler/types.js +0 -0
  106. package/dist/runtime/tsconfig.json +8 -0
  107. package/dist/runtime/worker/node/runner.d.ts +53 -0
  108. package/dist/runtime/worker/node/runner.js +327 -0
  109. package/dist/types.d.mts +2 -2
  110. package/package.json +16 -46
  111. package/LICENSE +0 -21
  112. package/README.md +0 -389
  113. package/dist/runtime/app/assets/vueflow.css +0 -1
  114. package/dist/runtime/app/components/ConfirmDialog.d.vue.ts +0 -33
  115. package/dist/runtime/app/components/ConfirmDialog.vue +0 -121
  116. package/dist/runtime/app/components/ConfirmDialog.vue.d.ts +0 -33
  117. package/dist/runtime/app/components/FlowDiagram.d.vue.ts +0 -64
  118. package/dist/runtime/app/components/FlowDiagram.vue +0 -338
  119. package/dist/runtime/app/components/FlowDiagram.vue.d.ts +0 -64
  120. package/dist/runtime/app/components/FlowNodeCard.d.vue.ts +0 -29
  121. package/dist/runtime/app/components/FlowNodeCard.vue +0 -156
  122. package/dist/runtime/app/components/FlowNodeCard.vue.d.ts +0 -29
  123. package/dist/runtime/app/components/FlowRunOverview.d.vue.ts +0 -9
  124. package/dist/runtime/app/components/FlowRunOverview.vue +0 -291
  125. package/dist/runtime/app/components/FlowRunOverview.vue.d.ts +0 -9
  126. package/dist/runtime/app/components/FlowRunStatusBadge.d.vue.ts +0 -14
  127. package/dist/runtime/app/components/FlowRunStatusBadge.vue +0 -60
  128. package/dist/runtime/app/components/FlowRunStatusBadge.vue.d.ts +0 -14
  129. package/dist/runtime/app/components/FlowRunTimeline.d.vue.ts +0 -12
  130. package/dist/runtime/app/components/FlowRunTimeline.vue +0 -127
  131. package/dist/runtime/app/components/FlowRunTimeline.vue.d.ts +0 -12
  132. package/dist/runtime/app/components/FlowScheduleDialog.d.vue.ts +0 -16
  133. package/dist/runtime/app/components/FlowScheduleDialog.vue +0 -226
  134. package/dist/runtime/app/components/FlowScheduleDialog.vue.d.ts +0 -16
  135. package/dist/runtime/app/components/FlowSchedulesList.d.vue.ts +0 -12
  136. package/dist/runtime/app/components/FlowSchedulesList.vue +0 -99
  137. package/dist/runtime/app/components/FlowSchedulesList.vue.d.ts +0 -12
  138. package/dist/runtime/app/components/JobScheduling.d.vue.ts +0 -6
  139. package/dist/runtime/app/components/JobScheduling.vue +0 -203
  140. package/dist/runtime/app/components/JobScheduling.vue.d.ts +0 -6
  141. package/dist/runtime/app/components/ListItem.d.vue.ts +0 -23
  142. package/dist/runtime/app/components/ListItem.vue +0 -70
  143. package/dist/runtime/app/components/ListItem.vue.d.ts +0 -23
  144. package/dist/runtime/app/components/QueueConfigDetails.d.vue.ts +0 -45
  145. package/dist/runtime/app/components/QueueConfigDetails.vue +0 -412
  146. package/dist/runtime/app/components/QueueConfigDetails.vue.d.ts +0 -45
  147. package/dist/runtime/app/components/StatCounter.d.vue.ts +0 -9
  148. package/dist/runtime/app/components/StatCounter.vue +0 -25
  149. package/dist/runtime/app/components/StatCounter.vue.d.ts +0 -9
  150. package/dist/runtime/app/components/TimelineList.d.vue.ts +0 -7
  151. package/dist/runtime/app/components/TimelineList.vue +0 -210
  152. package/dist/runtime/app/components/TimelineList.vue.d.ts +0 -7
  153. package/dist/runtime/app/components/nhealth/component-router.d.vue.ts +0 -46
  154. package/dist/runtime/app/components/nhealth/component-router.vue +0 -26
  155. package/dist/runtime/app/components/nhealth/component-router.vue.d.ts +0 -46
  156. package/dist/runtime/app/components/nhealth/component-shell.d.vue.ts +0 -24
  157. package/dist/runtime/app/components/nhealth/component-shell.vue +0 -89
  158. package/dist/runtime/app/components/nhealth/component-shell.vue.d.ts +0 -24
  159. package/dist/runtime/app/composables/useAnalyzedFlows.d.ts +0 -14
  160. package/dist/runtime/app/composables/useAnalyzedFlows.js +0 -8
  161. package/dist/runtime/app/composables/useComponentRouter.d.ts +0 -38
  162. package/dist/runtime/app/composables/useComponentRouter.js +0 -240
  163. package/dist/runtime/app/composables/useFlowRunTimeline.d.ts +0 -80
  164. package/dist/runtime/app/composables/useFlowRunTimeline.js +0 -68
  165. package/dist/runtime/app/composables/useFlowRuns.d.ts +0 -18
  166. package/dist/runtime/app/composables/useFlowRuns.js +0 -32
  167. package/dist/runtime/app/composables/useFlowRunsInfinite.d.ts +0 -24
  168. package/dist/runtime/app/composables/useFlowRunsInfinite.js +0 -123
  169. package/dist/runtime/app/composables/useFlowRunsPolling.d.ts +0 -9
  170. package/dist/runtime/app/composables/useFlowRunsPolling.js +0 -33
  171. package/dist/runtime/app/composables/useFlowState.d.ts +0 -125
  172. package/dist/runtime/app/composables/useFlowState.js +0 -211
  173. package/dist/runtime/app/composables/useFlowWebSocket.d.ts +0 -27
  174. package/dist/runtime/app/composables/useFlowWebSocket.js +0 -205
  175. package/dist/runtime/app/composables/useFlowsNavigation.d.ts +0 -10
  176. package/dist/runtime/app/composables/useFlowsNavigation.js +0 -58
  177. package/dist/runtime/app/composables/useQueueJobs.d.ts +0 -26
  178. package/dist/runtime/app/composables/useQueueJobs.js +0 -20
  179. package/dist/runtime/app/composables/useQueueUpdates.d.ts +0 -26
  180. package/dist/runtime/app/composables/useQueueUpdates.js +0 -122
  181. package/dist/runtime/app/composables/useQueues.d.ts +0 -45
  182. package/dist/runtime/app/composables/useQueues.js +0 -26
  183. package/dist/runtime/app/composables/useQueuesLive.d.ts +0 -19
  184. package/dist/runtime/app/composables/useQueuesLive.js +0 -143
  185. package/dist/runtime/app/pages/flows/index.d.vue.ts +0 -3
  186. package/dist/runtime/app/pages/flows/index.vue +0 -645
  187. package/dist/runtime/app/pages/flows/index.vue.d.ts +0 -3
  188. package/dist/runtime/app/pages/index.d.vue.ts +0 -3
  189. package/dist/runtime/app/pages/index.vue +0 -34
  190. package/dist/runtime/app/pages/index.vue.d.ts +0 -3
  191. package/dist/runtime/app/pages/queues/index.d.vue.ts +0 -3
  192. package/dist/runtime/app/pages/queues/index.vue +0 -229
  193. package/dist/runtime/app/pages/queues/index.vue.d.ts +0 -3
  194. package/dist/runtime/app/pages/queues/job.d.vue.ts +0 -3
  195. package/dist/runtime/app/pages/queues/job.vue +0 -262
  196. package/dist/runtime/app/pages/queues/job.vue.d.ts +0 -3
  197. package/dist/runtime/app/pages/queues/jobs.d.vue.ts +0 -3
  198. package/dist/runtime/app/pages/queues/jobs.vue +0 -291
  199. package/dist/runtime/app/pages/queues/jobs.vue.d.ts +0 -3
  200. package/dist/runtime/app/plugins/vueflow.client.d.ts +0 -2
  201. package/dist/runtime/app/plugins/vueflow.client.js +0 -11
  202. package/dist/runtime/constants.d.ts +0 -11
  203. package/dist/runtime/constants.js +0 -11
  204. package/dist/runtime/schema.d.ts +0 -37
  205. package/dist/runtime/schema.js +0 -20
  206. package/dist/runtime/server/api/_flows/[name]/clear-history.delete.d.ts +0 -10
  207. package/dist/runtime/server/api/_flows/[name]/clear-history.delete.js +0 -44
  208. package/dist/runtime/server/api/_flows/[name]/runs.get.d.ts +0 -7
  209. package/dist/runtime/server/api/_flows/[name]/runs.get.js +0 -53
  210. package/dist/runtime/server/api/_flows/[name]/schedule.post.js +0 -57
  211. package/dist/runtime/server/api/_flows/[name]/schedules/[id].delete.d.ts +0 -2
  212. package/dist/runtime/server/api/_flows/[name]/schedules/[id].delete.js +0 -42
  213. package/dist/runtime/server/api/_flows/[name]/schedules.get.d.ts +0 -2
  214. package/dist/runtime/server/api/_flows/[name]/schedules.get.js +0 -48
  215. package/dist/runtime/server/api/_flows/[name]/start.post.d.ts +0 -2
  216. package/dist/runtime/server/api/_flows/[name]/start.post.js +0 -9
  217. package/dist/runtime/server/api/_flows/index.get.d.ts +0 -6
  218. package/dist/runtime/server/api/_flows/index.get.js +0 -5
  219. package/dist/runtime/server/api/_flows/ws.d.ts +0 -60
  220. package/dist/runtime/server/api/_flows/ws.js +0 -188
  221. package/dist/runtime/server/api/_queues/[name]/job/[id].get.d.ts +0 -2
  222. package/dist/runtime/server/api/_queues/[name]/job/[id].get.js +0 -9
  223. package/dist/runtime/server/api/_queues/[name]/job/index.get.d.ts +0 -2
  224. package/dist/runtime/server/api/_queues/[name]/job/index.get.js +0 -18
  225. package/dist/runtime/server/api/_queues/index.get.d.ts +0 -2
  226. package/dist/runtime/server/api/_queues/index.get.js +0 -63
  227. package/dist/runtime/server/api/_queues/ws.d.ts +0 -48
  228. package/dist/runtime/server/api/_queues/ws.js +0 -205
  229. package/dist/runtime/server/plugins/00.event-store.d.ts +0 -13
  230. package/dist/runtime/server/plugins/00.event-store.js +0 -16
  231. package/dist/runtime/server/plugins/flow-management.d.ts +0 -13
  232. package/dist/runtime/server/plugins/flow-management.js +0 -65
  233. package/dist/runtime/server/plugins/queue-management.d.ts +0 -2
  234. package/dist/runtime/server/plugins/queue-management.js +0 -27
  235. package/dist/runtime/server/plugins/state-cleanup.d.ts +0 -11
  236. package/dist/runtime/server/plugins/state-cleanup.js +0 -93
  237. package/dist/runtime/server/plugins/worker-management.d.ts +0 -2
  238. package/dist/runtime/server/plugins/worker-management.js +0 -33
  239. package/dist/runtime/server/tsconfig.json +0 -3
  240. package/dist/runtime/server-utils/events/adapters/fileAdapter.d.ts +0 -2
  241. package/dist/runtime/server-utils/events/adapters/fileAdapter.js +0 -382
  242. package/dist/runtime/server-utils/events/adapters/memoryAdapter.d.ts +0 -2
  243. package/dist/runtime/server-utils/events/adapters/memoryAdapter.js +0 -171
  244. package/dist/runtime/server-utils/events/adapters/redis/redisAdapter.d.ts +0 -2
  245. package/dist/runtime/server-utils/events/adapters/redis/redisAdapter.js +0 -348
  246. package/dist/runtime/server-utils/events/adapters/redis/redisPubSubGateway.d.ts +0 -30
  247. package/dist/runtime/server-utils/events/adapters/redis/redisPubSubGateway.js +0 -82
  248. package/dist/runtime/server-utils/events/eventStoreFactory.d.ts +0 -19
  249. package/dist/runtime/server-utils/events/eventStoreFactory.js +0 -44
  250. package/dist/runtime/server-utils/events/streamNames.d.ts +0 -17
  251. package/dist/runtime/server-utils/events/streamNames.js +0 -17
  252. package/dist/runtime/server-utils/events/types.d.ts +0 -63
  253. package/dist/runtime/server-utils/events/wiring/flowWiring.js +0 -409
  254. package/dist/runtime/server-utils/events/wiring/registry.d.ts +0 -10
  255. package/dist/runtime/server-utils/events/wiring/registry.js +0 -24
  256. package/dist/runtime/server-utils/queue/adapters/bullmq.d.ts +0 -18
  257. package/dist/runtime/server-utils/queue/adapters/bullmq.js +0 -164
  258. package/dist/runtime/server-utils/queue/queueFactory.d.ts +0 -3
  259. package/dist/runtime/server-utils/queue/queueFactory.js +0 -10
  260. package/dist/runtime/server-utils/queue/types.d.ts +0 -47
  261. package/dist/runtime/server-utils/state/adapters/redis.d.ts +0 -2
  262. package/dist/runtime/server-utils/state/adapters/redis.js +0 -42
  263. package/dist/runtime/server-utils/state/stateFactory.d.ts +0 -3
  264. package/dist/runtime/server-utils/state/stateFactory.js +0 -17
  265. package/dist/runtime/server-utils/state/types.d.ts +0 -23
  266. package/dist/runtime/server-utils/utils/defineQueueConfig.d.ts +0 -154
  267. package/dist/runtime/server-utils/utils/defineQueueConfig.js +0 -2
  268. package/dist/runtime/server-utils/utils/defineQueueWorker.d.ts +0 -10
  269. package/dist/runtime/server-utils/utils/defineQueueWorker.js +0 -17
  270. package/dist/runtime/server-utils/utils/useEventStore.d.ts +0 -20
  271. package/dist/runtime/server-utils/utils/useEventStore.js +0 -119
  272. package/dist/runtime/server-utils/utils/useFlowEngine.d.ts +0 -9
  273. package/dist/runtime/server-utils/utils/useFlowEngine.js +0 -44
  274. package/dist/runtime/server-utils/utils/useLogs.d.ts +0 -41
  275. package/dist/runtime/server-utils/utils/useLogs.js +0 -74
  276. package/dist/runtime/server-utils/utils/useQueue.d.ts +0 -31
  277. package/dist/runtime/server-utils/utils/useQueue.js +0 -24
  278. package/dist/runtime/server-utils/worker/adapter.d.ts +0 -4
  279. package/dist/runtime/server-utils/worker/adapter.js +0 -66
  280. package/dist/runtime/server-utils/worker/runner/node.d.ts +0 -27
  281. package/dist/runtime/server-utils/worker/runner/node.js +0 -196
  282. package/dist/runtime/types.d.ts +0 -132
  283. /package/dist/runtime/{server-utils/events/types.js → adapters/interfaces/queue.js} +0 -0
  284. /package/dist/runtime/{server-utils/queue/types.js → adapters/interfaces/store.js} +0 -0
  285. /package/dist/runtime/{server-utils/state/types.js → adapters/interfaces/stream.js} +0 -0
  286. /package/dist/runtime/{server-utils/events → events}/eventBus.js +0 -0
  287. /package/dist/runtime/{server/plugins/00.ws-lifecycle.d.ts → nitro/plugins/01.ws-lifecycle.d.ts} +0 -0
  288. /package/dist/runtime/{server/plugins/00.ws-lifecycle.js → nitro/plugins/01.ws-lifecycle.js} +0 -0
  289. /package/dist/runtime/{server/api/_flows/[name]/schedule.post.d.ts → nitro/plugins/02.workers.d.ts} +0 -0
  290. /package/dist/runtime/{server-utils → nitro}/utils/useNventLogger.d.ts +0 -0
  291. /package/dist/runtime/{server-utils → nitro}/utils/wsPeerManager.d.ts +0 -0
  292. /package/dist/runtime/{server-utils → nitro}/utils/wsPeerManager.js +0 -0
  293. /package/dist/runtime/{python → worker/python}/get_config.py +0 -0
@@ -0,0 +1,90 @@
1
+ import { defineEventHandler, readBody, getRouterParams, createError, setResponseStatus } from "h3";
2
+ import { useStoreAdapter, useStreamTopics, useNventLogger, useAwait } from "#imports";
3
+ export default defineEventHandler(async (event) => {
4
+ const logger = useNventLogger("webhook-handler");
5
+ const store = useStoreAdapter();
6
+ const await$ = useAwait();
7
+ const { StoreSubjects } = useStreamTopics();
8
+ const params = getRouterParams(event);
9
+ const flowName = params.flowName;
10
+ const runId = params.runId;
11
+ const stepName = params.stepName;
12
+ if (!flowName || !runId || !stepName) {
13
+ logger.warn("Missing required webhook parameters", { params });
14
+ throw createError({
15
+ statusCode: 400,
16
+ statusMessage: "Invalid webhook path",
17
+ message: "Webhook path must include flowName, runId, and stepName"
18
+ });
19
+ }
20
+ logger.info(`Webhook received: ${event.method} for ${flowName}/${runId}/${stepName}`);
21
+ const indexKey = StoreSubjects.flowRunIndex(flowName);
22
+ const flowEntry = await store.index.get?.(indexKey, runId);
23
+ if (!flowEntry) {
24
+ logger.warn(`Flow not found`, { flowName, runId, stepName });
25
+ setResponseStatus(event, 404);
26
+ throw createError({
27
+ statusCode: 404,
28
+ statusMessage: "Flow not found",
29
+ message: "The flow associated with this webhook no longer exists."
30
+ });
31
+ }
32
+ const status = flowEntry.metadata?.status;
33
+ if (status && status !== "running") {
34
+ logger.warn(`Flow is not running`, { flowName, runId, stepName, status });
35
+ setResponseStatus(event, 410);
36
+ throw createError({
37
+ statusCode: 410,
38
+ statusMessage: `Flow is ${status}`,
39
+ message: `This webhook is no longer valid because the flow is ${status}.`
40
+ });
41
+ }
42
+ const awaitState = flowEntry.metadata?.awaitingSteps?.[stepName];
43
+ if (!awaitState || awaitState.status !== "awaiting") {
44
+ logger.warn(`Step is not awaiting`, { flowName, runId, stepName, awaitState });
45
+ setResponseStatus(event, 410);
46
+ throw createError({
47
+ statusCode: 410,
48
+ statusMessage: "Step is not awaiting",
49
+ message: "This webhook has already been called or the await has expired."
50
+ });
51
+ }
52
+ if (awaitState.awaitType !== "webhook") {
53
+ logger.warn(`Step is not waiting for webhook`, { flowName, runId, stepName, awaitType: awaitState.awaitType });
54
+ throw createError({
55
+ statusCode: 400,
56
+ statusMessage: "Invalid await type",
57
+ message: `This step is waiting for ${awaitState.awaitType}, not a webhook.`
58
+ });
59
+ }
60
+ const expectedMethod = awaitState.config?.method || "POST";
61
+ if (event.method !== expectedMethod) {
62
+ logger.warn(`Method mismatch: expected ${expectedMethod}, got ${event.method}`, { flowName, runId, stepName });
63
+ throw createError({
64
+ statusCode: 405,
65
+ statusMessage: "Method Not Allowed",
66
+ message: `This webhook expects ${expectedMethod} requests.`
67
+ });
68
+ }
69
+ const position = awaitState.position || "after";
70
+ let webhookData;
71
+ if (event.method === "GET") {
72
+ webhookData = getRouterParams(event, { decode: true });
73
+ } else {
74
+ webhookData = await readBody(event).catch(() => ({}));
75
+ }
76
+ logger.debug(`Webhook data received`, {
77
+ runId,
78
+ stepName,
79
+ dataKeys: Object.keys(webhookData || {})
80
+ });
81
+ await await$.webhook.resolve(runId, stepName, flowName, position, webhookData);
82
+ logger.info(`Webhook await resolved`, { flowName, runId, stepName });
83
+ return {
84
+ success: true,
85
+ runId,
86
+ stepName,
87
+ flowName,
88
+ message: "Webhook processed successfully. Flow will resume shortly."
89
+ };
90
+ });
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Dynamic webhook trigger handler for entry triggers (flow-scoped)
3
+ * Receives webhook calls and fires triggers to start flows
4
+ *
5
+ * Routes:
6
+ * - POST /api/_webhook/trigger/{triggerName}
7
+ * - GET /api/_webhook/trigger/{triggerName}
8
+ *
9
+ * Different from await webhooks:
10
+ * - Entry triggers are flow-scoped (start new flow runs)
11
+ * - Await webhooks are run-scoped (resume specific steps)
12
+ */
13
+ declare const _default: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<{
14
+ error: string;
15
+ message: string;
16
+ triggerName?: undefined;
17
+ expectedType?: undefined;
18
+ actualType?: undefined;
19
+ expectedMethod?: undefined;
20
+ actualMethod?: undefined;
21
+ success?: undefined;
22
+ subscribedFlows?: undefined;
23
+ timestamp?: undefined;
24
+ } | {
25
+ error: string;
26
+ triggerName: string;
27
+ message: string;
28
+ expectedType?: undefined;
29
+ actualType?: undefined;
30
+ expectedMethod?: undefined;
31
+ actualMethod?: undefined;
32
+ success?: undefined;
33
+ subscribedFlows?: undefined;
34
+ timestamp?: undefined;
35
+ } | {
36
+ error: string;
37
+ triggerName: string;
38
+ expectedType: string;
39
+ actualType: any;
40
+ message?: undefined;
41
+ expectedMethod?: undefined;
42
+ actualMethod?: undefined;
43
+ success?: undefined;
44
+ subscribedFlows?: undefined;
45
+ timestamp?: undefined;
46
+ } | {
47
+ error: string;
48
+ expectedMethod: any;
49
+ actualMethod: import("h3").HTTPMethod;
50
+ message?: undefined;
51
+ triggerName?: undefined;
52
+ expectedType?: undefined;
53
+ actualType?: undefined;
54
+ success?: undefined;
55
+ subscribedFlows?: undefined;
56
+ timestamp?: undefined;
57
+ } | {
58
+ success: boolean;
59
+ triggerName: string;
60
+ subscribedFlows: any;
61
+ message: string;
62
+ timestamp: string;
63
+ error?: undefined;
64
+ expectedType?: undefined;
65
+ actualType?: undefined;
66
+ expectedMethod?: undefined;
67
+ actualMethod?: undefined;
68
+ }>>;
69
+ export default _default;
@@ -0,0 +1,64 @@
1
+ import { defineEventHandler, readBody } from "h3";
2
+ import { useNventLogger, useTrigger } from "#imports";
3
+ export default defineEventHandler(async (event) => {
4
+ const logger = useNventLogger("webhook-trigger");
5
+ const trigger = useTrigger();
6
+ const triggerName = event.context.params?.triggerName;
7
+ if (!triggerName) {
8
+ logger.warn("No trigger name provided in request");
9
+ return {
10
+ error: "Missing trigger name",
11
+ message: "Trigger name is required"
12
+ };
13
+ }
14
+ logger.info(`Webhook trigger received: ${event.method} ${triggerName}`);
15
+ const triggerEntry = trigger.getTrigger(triggerName);
16
+ if (!triggerEntry) {
17
+ logger.warn(`Trigger not found: ${triggerName}`);
18
+ return {
19
+ error: "Trigger not found",
20
+ triggerName,
21
+ message: `No trigger registered with name '${triggerName}'`
22
+ };
23
+ }
24
+ if (triggerEntry.type !== "webhook") {
25
+ logger.warn(`Trigger is not a webhook: ${triggerName} (type: ${triggerEntry.type})`);
26
+ return {
27
+ error: "Invalid trigger type",
28
+ triggerName,
29
+ expectedType: "webhook",
30
+ actualType: triggerEntry.type
31
+ };
32
+ }
33
+ const expectedMethod = triggerEntry.webhook?.method || "POST";
34
+ if (event.method !== expectedMethod) {
35
+ logger.warn(`Method mismatch: expected ${expectedMethod}, got ${event.method}`);
36
+ return {
37
+ error: "Method not allowed",
38
+ expectedMethod,
39
+ actualMethod: event.method
40
+ };
41
+ }
42
+ let webhookData;
43
+ if (event.method === "GET") {
44
+ webhookData = event.context.params || {};
45
+ } else {
46
+ webhookData = await readBody(event);
47
+ }
48
+ logger.debug(`Webhook data received`, {
49
+ triggerName,
50
+ dataKeys: Object.keys(webhookData || {})
51
+ });
52
+ await trigger.emitTrigger(triggerName, webhookData);
53
+ logger.info(`Webhook trigger fired`, {
54
+ triggerName,
55
+ subscribedFlows: trigger.getSubscribedFlows(triggerName).length
56
+ });
57
+ return {
58
+ success: true,
59
+ triggerName,
60
+ subscribedFlows: trigger.getSubscribedFlows(triggerName),
61
+ message: "Trigger fired successfully",
62
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
63
+ };
64
+ });
@@ -0,0 +1,66 @@
1
+ import type { QueueAdapter } from '../../adapters/interfaces/queue.js';
2
+ import type { StreamAdapter } from '../../adapters/interfaces/stream.js';
3
+ import type { StoreAdapter } from '../../adapters/interfaces/store.js';
4
+ import type { AdapterSet } from '../../adapters/factory.js';
5
+ declare global {
6
+ var __nq_adapters: AdapterSet | undefined;
7
+ }
8
+ /**
9
+ * Set the global adapter set (called by plugin during initialization)
10
+ */
11
+ export declare function setAdapters(adapters: AdapterSet): void;
12
+ /**
13
+ * Get all adapters (internal use)
14
+ */
15
+ export declare function getAdapters(): AdapterSet;
16
+ /**
17
+ * Access QueueAdapter for job queue operations
18
+ *
19
+ * @example
20
+ * const queue = useQueueAdapter()
21
+ * await queue.enqueue('my-queue', { name: 'job', data: {...} })
22
+ */
23
+ export declare function useQueueAdapter(): QueueAdapter;
24
+ /**
25
+ * Access StreamAdapter for cross-instance pub/sub
26
+ *
27
+ * @example
28
+ * const stream = useStreamAdapter()
29
+ * await stream.subscribe('store:append:*', (event) => {
30
+ * console.log('Remote update:', event)
31
+ * })
32
+ */
33
+ export declare function useStreamAdapter(): StreamAdapter;
34
+ /**
35
+ * Access StoreAdapter for storage operations
36
+ *
37
+ * @example
38
+ * const store = useStoreAdapter()
39
+ * await store.stream.append('nq:flow:abc-123', { type: 'step.completed', data: {...} })
40
+ * const events = await store.stream.read('nq:flow:abc-123')
41
+ */
42
+ export declare function useStoreAdapter(): StoreAdapter;
43
+ /**
44
+ * State provider interface for flow state management
45
+ */
46
+ export interface StateAdapter {
47
+ get<T = any>(key: string): Promise<T | null>;
48
+ set<T = any>(key: string, value: T, opts?: {
49
+ ttl?: number;
50
+ }): Promise<void>;
51
+ delete(key: string): Promise<void>;
52
+ clear(pattern: string): Promise<number>;
53
+ increment?: (key: string, by?: number) => Promise<number>;
54
+ }
55
+ /**
56
+ * Access StateAdapter for scoped key-value state storage
57
+ *
58
+ * State is backed by StoreAdapter's KV store with automatic namespacing.
59
+ * Used by worker context (ctx.state) for flow-scoped state management.
60
+ *
61
+ * @example
62
+ * const state = useStateAdapter()
63
+ * await state.set('lastEmail', { to: 'user@example.com' })
64
+ * const value = await state.get('lastEmail')
65
+ */
66
+ export declare function useStateAdapter(): StateAdapter;
@@ -0,0 +1,51 @@
1
+ import { useRuntimeConfig } from "#imports";
2
+ export function setAdapters(adapters) {
3
+ globalThis.__nq_adapters = adapters;
4
+ }
5
+ export function getAdapters() {
6
+ if (!globalThis.__nq_adapters) {
7
+ throw new Error("[nvent] Adapters not initialized. Make sure the nvent plugin is loaded.");
8
+ }
9
+ return globalThis.__nq_adapters;
10
+ }
11
+ export function useQueueAdapter() {
12
+ return getAdapters().queue;
13
+ }
14
+ export function useStreamAdapter() {
15
+ return getAdapters().stream;
16
+ }
17
+ export function useStoreAdapter() {
18
+ return getAdapters().store;
19
+ }
20
+ export function useStateAdapter() {
21
+ const store = useStoreAdapter();
22
+ let namespace = "nq";
23
+ try {
24
+ const rc = useRuntimeConfig();
25
+ namespace = rc?.nvent?.state?.namespace || "nq";
26
+ } catch {
27
+ }
28
+ return {
29
+ async get(key) {
30
+ return store.kv.get(`${namespace}:${key}`);
31
+ },
32
+ async set(key, value, opts) {
33
+ await store.kv.set(`${namespace}:${key}`, value, opts?.ttl);
34
+ },
35
+ async delete(key) {
36
+ await store.kv.delete(`${namespace}:${key}`);
37
+ },
38
+ async clear(pattern) {
39
+ if (!store.kv.clear) {
40
+ throw new Error("Store adapter does not support clear operation");
41
+ }
42
+ return store.kv.clear(`${namespace}:${pattern}`);
43
+ },
44
+ increment: store.kv.increment ? async (key, by = 1) => {
45
+ if (!store.kv.increment) {
46
+ throw new Error("Store adapter does not support increment operation");
47
+ }
48
+ return store.kv.increment(`${namespace}:${key}`, by);
49
+ } : void 0
50
+ };
51
+ }
@@ -0,0 +1,15 @@
1
+ import type { AwaitConfig } from '../../../../registry/types.js';
2
+ /**
3
+ * Await Pattern: Event
4
+ *
5
+ * Waits for a specific event to be emitted (internal or external)
6
+ * Useful for cross-flow coordination, external system notifications
7
+ */
8
+ export declare function registerEventAwait(runId: string, stepName: string, flowName: string, config: AwaitConfig, position?: 'before' | 'after'): Promise<{
9
+ eventName: string;
10
+ timeout: number | undefined;
11
+ }>;
12
+ /**
13
+ * Resolve event await when target event is received
14
+ */
15
+ export declare function resolveEventAwait(runId: string, stepName: string, flowName: string, position: 'before' | 'after', eventData: any): Promise<void>;
@@ -0,0 +1,120 @@
1
+ import { useNventLogger, useScheduler } from "#imports";
2
+ import { getEventBus } from "../../../events/eventBus.js";
3
+ export async function registerEventAwait(runId, stepName, flowName, config, position = "after") {
4
+ const logger = useNventLogger("await-event");
5
+ const eventBus = getEventBus();
6
+ if (!config.event) {
7
+ throw new Error("Event await requires event name configuration");
8
+ }
9
+ logger.info(`Registering event await: ${config.event}`, { runId, stepName });
10
+ const unsubscribe = eventBus.onType(config.event, async (event) => {
11
+ if (config.filterKey) {
12
+ const awaitValue = event.data?.[config.filterKey];
13
+ const stepValue = event.data?.stepData?.[config.filterKey];
14
+ if (awaitValue !== stepValue) {
15
+ return;
16
+ }
17
+ }
18
+ await resolveEventAwait(runId, stepName, flowName, position, event.data);
19
+ unsubscribe();
20
+ });
21
+ eventBus.publish({
22
+ type: "await.registered",
23
+ flowName,
24
+ runId,
25
+ stepName,
26
+ awaitType: "event",
27
+ position,
28
+ config,
29
+ data: {
30
+ eventName: config.event,
31
+ filterKey: config.filterKey,
32
+ timeout: config.timeout,
33
+ registeredAt: Date.now()
34
+ }
35
+ });
36
+ if (config.timeout && config.timeout > 0) {
37
+ const scheduler = useScheduler();
38
+ const timeoutAt = Date.now() + config.timeout;
39
+ const jobId = `await-event-timeout-${runId}-${stepName}-${position}`;
40
+ await scheduler.schedule({
41
+ id: jobId,
42
+ name: `Event Await Timeout: ${flowName} - ${stepName}`,
43
+ type: "one-time",
44
+ executeAt: timeoutAt,
45
+ handler: async () => {
46
+ logger.warn("Event await timeout", {
47
+ runId,
48
+ stepName,
49
+ flowName,
50
+ eventName: config.event,
51
+ timeout: config.timeout,
52
+ timeoutAction: config.timeoutAction || "fail"
53
+ });
54
+ eventBus.publish({
55
+ type: "await.timeout",
56
+ flowName,
57
+ runId,
58
+ stepName,
59
+ position,
60
+ awaitType: "event",
61
+ timeoutAction: config.timeoutAction || "fail",
62
+ data: {
63
+ eventName: config.event,
64
+ timeout: config.timeout,
65
+ registeredAt: Date.now() - (config.timeout || 0),
66
+ timedOutAt: Date.now()
67
+ }
68
+ });
69
+ unsubscribe();
70
+ },
71
+ metadata: {
72
+ component: "await-pattern",
73
+ awaitType: "event",
74
+ runId,
75
+ stepName,
76
+ flowName,
77
+ position,
78
+ timeout: config.timeout,
79
+ eventName: config.event
80
+ }
81
+ });
82
+ logger.debug(`Event timeout scheduled`, {
83
+ runId,
84
+ stepName,
85
+ eventName: config.event,
86
+ timeout: config.timeout,
87
+ timeoutAction: config.timeoutAction
88
+ });
89
+ }
90
+ logger.debug(`Event await registered: ${config.event}`, { runId, stepName });
91
+ return {
92
+ eventName: config.event,
93
+ timeout: config.timeout
94
+ };
95
+ }
96
+ export async function resolveEventAwait(runId, stepName, flowName, position, eventData) {
97
+ const logger = useNventLogger("await-event");
98
+ const eventBus = getEventBus();
99
+ const scheduler = useScheduler();
100
+ logger.info(`Resolving event await`, { runId, stepName });
101
+ const jobId = `await-event-timeout-${runId}-${stepName}-${position}`;
102
+ try {
103
+ await scheduler.unschedule(jobId);
104
+ logger.debug("Unscheduled event timeout job", { runId, stepName, jobId });
105
+ } catch {
106
+ logger.debug("Could not unschedule timeout job (may not exist)", { runId, stepName, jobId });
107
+ }
108
+ eventBus.publish({
109
+ type: "await.resolved",
110
+ flowName,
111
+ runId,
112
+ stepName,
113
+ position,
114
+ triggerData: eventData,
115
+ data: {
116
+ resolvedAt: Date.now()
117
+ }
118
+ });
119
+ logger.debug(`Event await resolved`, { runId, stepName });
120
+ }
@@ -0,0 +1,28 @@
1
+ import type { AwaitConfig } from '../../../../registry/types.js';
2
+ import { registerWebhookAwait, resolveWebhookAwait } from './webhook.js';
3
+ import { registerEventAwait, resolveEventAwait } from './event.js';
4
+ import { registerScheduleAwait, resolveScheduleAwait } from './schedule.js';
5
+ import { registerTimeAwait, resolveTimeAwait } from './time.js';
6
+ /**
7
+ * Unified await pattern registry
8
+ * Routes to appropriate await implementation based on type
9
+ */
10
+ export declare function registerAwaitPattern(runId: string, stepName: string, flowName: string, config: AwaitConfig, position?: 'before' | 'after'): Promise<{
11
+ delay: number;
12
+ resolveAt: number;
13
+ } | {
14
+ cron: string;
15
+ nextOccurrence: number;
16
+ timeUntilNext: number;
17
+ } | {
18
+ webhookUrl: string;
19
+ timeout: number | undefined;
20
+ } | {
21
+ eventName: string;
22
+ timeout: number | undefined;
23
+ }>;
24
+ /**
25
+ * Resolve await pattern by type
26
+ */
27
+ export declare function resolveAwaitPattern(type: 'webhook' | 'event' | 'schedule' | 'time', runId: string, stepName: string, flowName: string, position: 'before' | 'after', data: any): Promise<void>;
28
+ export { registerWebhookAwait, resolveWebhookAwait, registerEventAwait, resolveEventAwait, registerScheduleAwait, resolveScheduleAwait, registerTimeAwait, resolveTimeAwait, };
@@ -0,0 +1,55 @@
1
+ import { useNventLogger } from "#imports";
2
+ import { registerWebhookAwait, resolveWebhookAwait } from "./webhook.js";
3
+ import { registerEventAwait, resolveEventAwait } from "./event.js";
4
+ import { registerScheduleAwait, resolveScheduleAwait } from "./schedule.js";
5
+ import { registerTimeAwait, resolveTimeAwait } from "./time.js";
6
+ export async function registerAwaitPattern(runId, stepName, flowName, config, position = "after") {
7
+ const logger = useNventLogger("await-patterns");
8
+ logger.info(`Registering await pattern: ${config.type}`, {
9
+ runId,
10
+ stepName,
11
+ type: config.type
12
+ });
13
+ switch (config.type) {
14
+ case "webhook":
15
+ return await registerWebhookAwait(runId, stepName, flowName, config, position);
16
+ case "event":
17
+ return await registerEventAwait(runId, stepName, flowName, config, position);
18
+ case "schedule":
19
+ return await registerScheduleAwait(runId, stepName, flowName, config, position);
20
+ case "time":
21
+ return await registerTimeAwait(runId, stepName, flowName, config, position);
22
+ default:
23
+ throw new Error(`Unknown await pattern type: ${config.type}`);
24
+ }
25
+ }
26
+ export async function resolveAwaitPattern(type, runId, stepName, flowName, position, data) {
27
+ const logger = useNventLogger("await-patterns");
28
+ logger.info(`Resolving await pattern: ${type}`, {
29
+ runId,
30
+ stepName,
31
+ type
32
+ });
33
+ switch (type) {
34
+ case "webhook":
35
+ return await resolveWebhookAwait(runId, stepName, data);
36
+ case "event":
37
+ return await resolveEventAwait(runId, stepName, data);
38
+ case "schedule":
39
+ return await resolveScheduleAwait(runId, stepName, data);
40
+ case "time":
41
+ return await resolveTimeAwait(runId, stepName, flowName, position, data);
42
+ default:
43
+ throw new Error(`Unknown await pattern type: ${type}`);
44
+ }
45
+ }
46
+ export {
47
+ registerWebhookAwait,
48
+ resolveWebhookAwait,
49
+ registerEventAwait,
50
+ resolveEventAwait,
51
+ registerScheduleAwait,
52
+ resolveScheduleAwait,
53
+ registerTimeAwait,
54
+ resolveTimeAwait
55
+ };
@@ -0,0 +1,16 @@
1
+ import type { AwaitConfig } from '../../../../registry/types.js';
2
+ /**
3
+ * Await Pattern: Schedule
4
+ *
5
+ * Waits until next cron schedule occurrence
6
+ * Useful for batch processing, daily reports, scheduled operations
7
+ */
8
+ export declare function registerScheduleAwait(runId: string, stepName: string, flowName: string, config: AwaitConfig, position?: 'before' | 'after'): Promise<{
9
+ cron: string;
10
+ nextOccurrence: number;
11
+ timeUntilNext: number;
12
+ }>;
13
+ /**
14
+ * Resolve schedule await when cron time is reached
15
+ */
16
+ export declare function resolveScheduleAwait(runId: string, stepName: string, flowName: string, position: 'before' | 'after', scheduleData: any): Promise<void>;
@@ -0,0 +1,78 @@
1
+ import { useNventLogger, useScheduler } from "#imports";
2
+ import { getEventBus } from "../../../events/eventBus.js";
3
+ import { CronJob } from "cron";
4
+ export async function registerScheduleAwait(runId, stepName, flowName, config, position = "after") {
5
+ const logger = useNventLogger("await-schedule");
6
+ const eventBus = getEventBus();
7
+ const scheduler = useScheduler();
8
+ if (!config.cron) {
9
+ throw new Error("Schedule await requires cron expression configuration");
10
+ }
11
+ logger.info(`Registering schedule await: ${config.cron}`, { runId, stepName });
12
+ const cronJob = new CronJob(config.cron, () => {
13
+ }, null, false, config.timezone || "UTC");
14
+ const nextDate = cronJob.nextDate();
15
+ const nextOccurrence = nextDate ? nextDate.toMillis() : Date.now() + 6e4;
16
+ const timeUntilNext = nextOccurrence - Date.now();
17
+ const jobId = `await-schedule-${runId}-${stepName}-${position}`;
18
+ await scheduler.schedule({
19
+ id: jobId,
20
+ name: `Schedule Await: ${flowName} - ${stepName}`,
21
+ type: "one-time",
22
+ executeAt: nextOccurrence,
23
+ handler: async () => {
24
+ await resolveScheduleAwait(runId, stepName, flowName, position, { scheduledAt: nextOccurrence });
25
+ },
26
+ metadata: {
27
+ component: "await-pattern",
28
+ awaitType: "schedule",
29
+ runId,
30
+ stepName,
31
+ flowName,
32
+ position,
33
+ cron: config.cron,
34
+ timezone: config.timezone
35
+ }
36
+ });
37
+ eventBus.publish({
38
+ type: "await.registered",
39
+ flowName,
40
+ runId,
41
+ stepName,
42
+ awaitType: "schedule",
43
+ position,
44
+ config,
45
+ data: {
46
+ cron: config.cron,
47
+ nextOccurrence,
48
+ timeUntilNext,
49
+ registeredAt: Date.now()
50
+ }
51
+ });
52
+ logger.debug(`Schedule await registered: ${config.cron} (next: ${new Date(nextOccurrence).toISOString()})`, {
53
+ runId,
54
+ stepName
55
+ });
56
+ return {
57
+ cron: config.cron,
58
+ nextOccurrence,
59
+ timeUntilNext
60
+ };
61
+ }
62
+ export async function resolveScheduleAwait(runId, stepName, flowName, position, scheduleData) {
63
+ const logger = useNventLogger("await-schedule");
64
+ const eventBus = getEventBus();
65
+ logger.info(`Resolving schedule await`, { runId, stepName });
66
+ eventBus.publish({
67
+ type: "await.resolved",
68
+ flowName,
69
+ runId,
70
+ stepName,
71
+ position,
72
+ triggerData: scheduleData,
73
+ data: {
74
+ resolvedAt: Date.now()
75
+ }
76
+ });
77
+ logger.debug(`Schedule await resolved`, { runId, stepName });
78
+ }
@@ -0,0 +1,15 @@
1
+ import type { AwaitConfig } from '../../../../registry/types.js';
2
+ /**
3
+ * Await Pattern: Time
4
+ *
5
+ * Simple delay/timeout - waits for a specific duration
6
+ * Useful for cooldown periods, rate limiting, delayed notifications
7
+ */
8
+ export declare function registerTimeAwait(runId: string, stepName: string, flowName: string, config: AwaitConfig, position?: 'before' | 'after'): Promise<{
9
+ delay: number;
10
+ resolveAt: number;
11
+ }>;
12
+ /**
13
+ * Resolve time await when delay completes
14
+ */
15
+ export declare function resolveTimeAwait(runId: string, stepName: string, flowName: string, position: 'before' | 'after', timeData: any): Promise<void>;