bunqueue 2.8.53 → 2.8.56

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 (747) hide show
  1. package/dist/application/background/dlq.d.ts +2 -0
  2. package/dist/application/background/dlq.js +26 -0
  3. package/dist/application/background/lifecycle.d.ts +4 -0
  4. package/dist/application/background/lifecycle.js +90 -0
  5. package/dist/application/background/recovery/active.d.ts +4 -0
  6. package/dist/application/background/recovery/active.js +69 -0
  7. package/dist/application/background/recovery/index.d.ts +2 -0
  8. package/dist/application/background/recovery/index.js +22 -0
  9. package/dist/application/background/recovery/pending.d.ts +3 -0
  10. package/dist/application/background/recovery/pending.js +69 -0
  11. package/dist/application/background/recovery/restore.d.ts +5 -0
  12. package/dist/application/background/recovery/restore.js +58 -0
  13. package/dist/application/background/recovery/shared.d.ts +6 -0
  14. package/dist/application/background/recovery/shared.js +15 -0
  15. package/dist/application/background/timeouts.d.ts +25 -0
  16. package/dist/application/background/timeouts.js +191 -0
  17. package/dist/application/backgroundTasks.d.ts +7 -31
  18. package/dist/application/backgroundTasks.js +6 -438
  19. package/dist/application/cleanupTasks.js +2 -1
  20. package/dist/application/clientTracking.js +3 -1
  21. package/dist/application/contextFactory.d.ts +13 -90
  22. package/dist/application/contextFactory.js +9 -0
  23. package/dist/application/dependencyResultTracker.d.ts +1 -0
  24. package/dist/application/dependencyResultTracker.js +3 -0
  25. package/dist/application/dlqManager.d.ts +9 -9
  26. package/dist/application/dlqManager.js +49 -167
  27. package/dist/application/dlqRetry.d.ts +12 -0
  28. package/dist/application/dlqRetry.js +97 -0
  29. package/dist/application/lockManager.js +24 -4
  30. package/dist/application/lockOperations.js +16 -3
  31. package/dist/application/operations/ack/batch.d.ts +8 -0
  32. package/dist/application/operations/ack/batch.js +64 -0
  33. package/dist/application/operations/ack/completion.d.ts +3 -0
  34. package/dist/application/operations/ack/completion.js +74 -0
  35. package/dist/application/operations/ack/failure.d.ts +3 -0
  36. package/dist/application/operations/ack/failure.js +160 -0
  37. package/dist/application/operations/ack.d.ts +5 -79
  38. package/dist/application/operations/ack.js +4 -319
  39. package/dist/application/operations/ackHelpers.d.ts +3 -52
  40. package/dist/application/operations/ackHelpers.js +11 -4
  41. package/dist/application/operations/customId.d.ts +18 -5
  42. package/dist/application/operations/customId.js +36 -25
  43. package/dist/application/operations/flowValidation.js +9 -4
  44. package/dist/application/operations/jobManagement.js +50 -11
  45. package/dist/application/operations/jobMoveOperations.js +3 -3
  46. package/dist/application/operations/jobStateTransitions.d.ts +1 -1
  47. package/dist/application/operations/jobStateTransitions.js +16 -2
  48. package/dist/application/operations/parentLink.d.ts +36 -0
  49. package/dist/application/operations/parentLink.js +153 -0
  50. package/dist/application/operations/parentLinkInput.d.ts +8 -0
  51. package/dist/application/operations/parentLinkInput.js +23 -0
  52. package/dist/application/operations/push.d.ts +5 -44
  53. package/dist/application/operations/push.js +62 -152
  54. package/dist/application/operations/pushAdmission.d.ts +32 -0
  55. package/dist/application/operations/pushAdmission.js +38 -0
  56. package/dist/application/operations/pushBatch.d.ts +4 -0
  57. package/dist/application/operations/pushBatch.js +136 -0
  58. package/dist/application/operations/pushContext.d.ts +39 -0
  59. package/dist/application/operations/pushContext.js +1 -0
  60. package/dist/application/operations/pushDeduplication.d.ts +42 -0
  61. package/dist/application/operations/pushDeduplication.js +131 -0
  62. package/dist/application/operations/pushInsert.d.ts +13 -1
  63. package/dist/application/operations/pushInsert.js +33 -17
  64. package/dist/application/operations/pushLocks.js +13 -9
  65. package/dist/application/operations/query/collect.d.ts +12 -0
  66. package/dist/application/operations/query/collect.js +118 -0
  67. package/dist/application/operations/query/jobLookup.d.ts +9 -0
  68. package/dist/application/operations/query/jobLookup.js +110 -0
  69. package/dist/application/operations/query/pagination.d.ts +8 -0
  70. package/dist/application/operations/query/pagination.js +90 -0
  71. package/dist/application/operations/query/state.d.ts +4 -0
  72. package/dist/application/operations/query/state.js +63 -0
  73. package/dist/application/operations/queryOperations.d.ts +5 -50
  74. package/dist/application/operations/queryOperations.js +4 -474
  75. package/dist/application/queue-manager/ack.d.ts +23 -0
  76. package/dist/application/queue-manager/ack.js +242 -0
  77. package/dist/application/queue-manager/configuration.d.ts +27 -0
  78. package/dist/application/queue-manager/configuration.js +84 -0
  79. package/dist/application/queue-manager/context.d.ts +5 -0
  80. package/dist/application/queue-manager/context.js +61 -0
  81. package/dist/application/queue-manager/control.d.ts +17 -0
  82. package/dist/application/queue-manager/control.js +133 -0
  83. package/dist/application/queue-manager/delivery.d.ts +32 -0
  84. package/dist/application/queue-manager/delivery.js +143 -0
  85. package/dist/application/queue-manager/dependencies.d.ts +8 -0
  86. package/dist/application/queue-manager/dependencies.js +127 -0
  87. package/dist/application/queue-manager/dependency-runtime.d.ts +8 -0
  88. package/dist/application/queue-manager/dependency-runtime.js +40 -0
  89. package/dist/application/queue-manager/flow-failures.d.ts +18 -0
  90. package/dist/application/queue-manager/flow-failures.js +107 -0
  91. package/dist/application/queue-manager/flow-options.d.ts +8 -0
  92. package/dist/application/queue-manager/flow-options.js +129 -0
  93. package/dist/application/queue-manager/job-management.d.ts +17 -0
  94. package/dist/application/queue-manager/job-management.js +100 -0
  95. package/dist/application/queue-manager/lifecycle.d.ts +4 -0
  96. package/dist/application/queue-manager/lifecycle.js +41 -0
  97. package/dist/application/queue-manager/limits.d.ts +41 -0
  98. package/dist/application/queue-manager/limits.js +108 -0
  99. package/dist/application/queue-manager/locks.d.ts +21 -0
  100. package/dist/application/queue-manager/locks.js +59 -0
  101. package/dist/application/queue-manager/observability.d.ts +16 -0
  102. package/dist/application/queue-manager/observability.js +44 -0
  103. package/dist/application/queue-manager/queries.d.ts +17 -0
  104. package/dist/application/queue-manager/queries.js +118 -0
  105. package/dist/application/queue-manager/repeat.d.ts +4 -0
  106. package/dist/application/queue-manager/repeat.js +26 -0
  107. package/dist/application/queue-manager/services.d.ts +19 -0
  108. package/dist/application/queue-manager/services.js +80 -0
  109. package/dist/application/queue-manager/state.d.ts +92 -0
  110. package/dist/application/queue-manager/state.js +144 -0
  111. package/dist/application/queue-manager/stats.d.ts +28 -0
  112. package/dist/application/queue-manager/stats.js +52 -0
  113. package/dist/application/queueManager.d.ts +4 -380
  114. package/dist/application/queueManager.js +3 -1880
  115. package/dist/application/queueTelemetryJournal.d.ts +20 -0
  116. package/dist/application/queueTelemetryJournal.js +133 -0
  117. package/dist/application/repeatJobs.d.ts +7 -0
  118. package/dist/application/repeatJobs.js +132 -0
  119. package/dist/application/stallDetection.js +9 -4
  120. package/dist/application/types/ack.d.ts +132 -0
  121. package/dist/application/types/ack.js +1 -0
  122. package/dist/application/types/background.d.ts +18 -0
  123. package/dist/application/types/background.js +1 -0
  124. package/dist/application/types/config.d.ts +37 -0
  125. package/dist/application/types/config.js +15 -0
  126. package/dist/application/types/contextFactory.d.ts +83 -0
  127. package/dist/application/types/contextFactory.js +1 -0
  128. package/dist/application/types/contexts.d.ts +110 -0
  129. package/dist/application/types/contexts.js +1 -0
  130. package/dist/application/types/index.d.ts +7 -0
  131. package/dist/application/types/index.js +1 -0
  132. package/dist/application/types/query.d.ts +23 -0
  133. package/dist/application/types/query.js +1 -0
  134. package/dist/application/types/queueManager.d.ts +94 -0
  135. package/dist/application/types/queueManager.js +1 -0
  136. package/dist/cli/commandRouter.d.ts +1 -1
  137. package/dist/cli/commands/core.js +1 -0
  138. package/dist/cli/output/collections.d.ts +8 -0
  139. package/dist/cli/output/collections.js +131 -0
  140. package/dist/cli/output/jobs.d.ts +2 -0
  141. package/dist/cli/output/jobs.js +61 -0
  142. package/dist/cli/output/style.d.ts +14 -0
  143. package/dist/cli/output/style.js +28 -0
  144. package/dist/cli/output/success.d.ts +1 -0
  145. package/dist/cli/output/success.js +108 -0
  146. package/dist/cli/output.d.ts +1 -6
  147. package/dist/cli/output.js +7 -395
  148. package/dist/client/bunqueue/dlqRateLimit.d.ts +8 -0
  149. package/dist/client/bunqueue/dlqRateLimit.js +24 -0
  150. package/dist/client/bunqueue/runtime.d.ts +35 -0
  151. package/dist/client/bunqueue/runtime.js +138 -0
  152. package/dist/client/bunqueue.d.ts +19 -34
  153. package/dist/client/bunqueue.js +45 -166
  154. package/dist/client/dlqConversion.d.ts +5 -0
  155. package/dist/client/dlqConversion.js +28 -0
  156. package/dist/client/events.d.ts +7 -56
  157. package/dist/client/events.js +38 -15
  158. package/dist/client/flow.d.ts +6 -12
  159. package/dist/client/flow.js +16 -34
  160. package/dist/client/flowJobDependencies.js +3 -1
  161. package/dist/client/flowJobFactory.d.ts +9 -1
  162. package/dist/client/flowJobFactory.js +25 -9
  163. package/dist/client/flowJobMoveMethods.d.ts +5 -5
  164. package/dist/client/flowJobMoveMethods.js +37 -17
  165. package/dist/client/flowLegacyPlan.js +22 -8
  166. package/dist/client/flowOptions.d.ts +1 -1
  167. package/dist/client/flowOptions.js +2 -1
  168. package/dist/client/flowPlan.js +2 -3
  169. package/dist/client/flowPush.d.ts +1 -0
  170. package/dist/client/flowPush.js +5 -1
  171. package/dist/client/flowReader.js +5 -5
  172. package/dist/client/flowResults.d.ts +11 -0
  173. package/dist/client/flowResults.js +42 -0
  174. package/dist/client/index.d.ts +3 -1
  175. package/dist/client/jobConversion.d.ts +3 -7
  176. package/dist/client/jobConversion.js +36 -33
  177. package/dist/client/jobConversionHelpers.d.ts +19 -3
  178. package/dist/client/jobConversionHelpers.js +20 -16
  179. package/dist/client/jobConversionTypes.d.ts +8 -0
  180. package/dist/client/jobDeduplication.d.ts +6 -0
  181. package/dist/client/jobDeduplication.js +14 -0
  182. package/dist/client/jobHelpers.d.ts +7 -2
  183. package/dist/client/jobHelpers.js +16 -8
  184. package/dist/client/queue/bullmqCompat.d.ts +18 -8
  185. package/dist/client/queue/bullmqCompat.js +39 -71
  186. package/dist/client/queue/deduplication.d.ts +2 -0
  187. package/dist/client/queue/deduplication.js +20 -11
  188. package/dist/client/queue/dlq.d.ts +11 -6
  189. package/dist/client/queue/dlq.js +57 -16
  190. package/dist/client/queue/dlqJobMethods.d.ts +9 -0
  191. package/dist/client/queue/dlqJobMethods.js +177 -0
  192. package/dist/client/queue/dlqOps.d.ts +2 -1
  193. package/dist/client/queue/dlqOps.js +4 -10
  194. package/dist/client/queue/dlqStats.d.ts +3 -0
  195. package/dist/client/queue/dlqStats.js +21 -0
  196. package/dist/client/queue/job-proxy/dependencies.d.ts +9 -0
  197. package/dist/client/queue/job-proxy/dependencies.js +67 -0
  198. package/dist/client/queue/job-proxy/reflection.d.ts +2 -0
  199. package/dist/client/queue/job-proxy/reflection.js +18 -0
  200. package/dist/client/queue/job-proxy/simple.d.ts +3 -0
  201. package/dist/client/queue/job-proxy/simple.js +316 -0
  202. package/dist/client/queue/job-proxy/tcp.d.ts +4 -0
  203. package/dist/client/queue/job-proxy/tcp.js +191 -0
  204. package/dist/client/queue/jobMetadata.d.ts +10 -0
  205. package/dist/client/queue/jobMetadata.js +24 -0
  206. package/dist/client/queue/jobMove.d.ts +4 -4
  207. package/dist/client/queue/jobMove.js +87 -24
  208. package/dist/client/queue/jobProxy.d.ts +4 -50
  209. package/dist/client/queue/jobProxy.js +3 -511
  210. package/dist/client/queue/operations/add/bulk.d.ts +7 -0
  211. package/dist/client/queue/operations/add/bulk.js +129 -0
  212. package/dist/client/queue/operations/add/payload.d.ts +24 -0
  213. package/dist/client/queue/operations/add/payload.js +85 -0
  214. package/dist/client/queue/operations/add/single.d.ts +3 -0
  215. package/dist/client/queue/operations/add/single.js +107 -0
  216. package/dist/client/queue/operations/add.d.ts +2 -47
  217. package/dist/client/queue/operations/add.js +2 -347
  218. package/dist/client/queue/operations/index.d.ts +1 -0
  219. package/dist/client/queue/operations/index.js +1 -0
  220. package/dist/client/queue/operations/management.d.ts +0 -4
  221. package/dist/client/queue/operations/management.js +35 -6
  222. package/dist/client/queue/operations/query.d.ts +1 -20
  223. package/dist/client/queue/operations/query.js +38 -116
  224. package/dist/client/queue/operations/queryStates.d.ts +13 -0
  225. package/dist/client/queue/operations/queryStates.js +32 -0
  226. package/dist/client/queue/operations/queryTcpPages.d.ts +14 -0
  227. package/dist/client/queue/operations/queryTcpPages.js +40 -0
  228. package/dist/client/queue/queue.d.ts +6 -189
  229. package/dist/client/queue/queue.js +6 -547
  230. package/dist/client/queue/rateLimit.d.ts +4 -4
  231. package/dist/client/queue/rateLimit.js +17 -8
  232. package/dist/client/queue/runtime/compatibility.d.ts +13 -0
  233. package/dist/client/queue/runtime/compatibility.js +38 -0
  234. package/dist/client/queue/runtime/configuration.d.ts +42 -0
  235. package/dist/client/queue/runtime/configuration.js +109 -0
  236. package/dist/client/queue/runtime/connection.d.ts +6 -0
  237. package/dist/client/queue/runtime/connection.js +16 -0
  238. package/dist/client/queue/runtime/control.d.ts +41 -0
  239. package/dist/client/queue/runtime/control.js +87 -0
  240. package/dist/client/queue/runtime/queries.d.ts +48 -0
  241. package/dist/client/queue/runtime/queries.js +95 -0
  242. package/dist/client/queue/runtime/scheduling.d.ts +33 -0
  243. package/dist/client/queue/runtime/scheduling.js +56 -0
  244. package/dist/client/queue/runtime/state.d.ts +96 -0
  245. package/dist/client/queue/runtime/state.js +149 -0
  246. package/dist/client/queue/scheduler.d.ts +2 -5
  247. package/dist/client/queue/scheduler.js +25 -23
  248. package/dist/client/queue/schedulerPagination.d.ts +7 -0
  249. package/dist/client/queue/schedulerPagination.js +10 -0
  250. package/dist/client/queue/types/add.d.ts +40 -0
  251. package/dist/client/queue/types/add.js +1 -0
  252. package/dist/client/queue/types/contexts.d.ts +33 -0
  253. package/dist/client/queue/types/contexts.js +5 -0
  254. package/dist/client/queue/types/index.d.ts +3 -0
  255. package/dist/client/queue/types/index.js +1 -0
  256. package/dist/client/queue/types/job.d.ts +50 -0
  257. package/dist/client/queue/types/job.js +1 -0
  258. package/dist/client/queue/types/runtime.d.ts +35 -0
  259. package/dist/client/queue/types/runtime.js +1 -0
  260. package/dist/client/queue/workers.d.ts +16 -8
  261. package/dist/client/queue/workers.js +42 -16
  262. package/dist/client/queue-events/tcpSubscription.d.ts +23 -0
  263. package/dist/client/queue-events/tcpSubscription.js +99 -0
  264. package/dist/client/queueGroup.d.ts +11 -0
  265. package/dist/client/queueGroup.js +28 -1
  266. package/dist/client/sandboxed/queueOps.d.ts +2 -2
  267. package/dist/client/sandboxed/queueOps.js +32 -5
  268. package/dist/client/sandboxed/runtime/dispatch.d.ts +13 -0
  269. package/dist/client/sandboxed/runtime/dispatch.js +186 -0
  270. package/dist/client/sandboxed/runtime/lifecycle.d.ts +20 -0
  271. package/dist/client/sandboxed/runtime/lifecycle.js +95 -0
  272. package/dist/client/sandboxed/runtime/log.d.ts +1 -0
  273. package/dist/client/sandboxed/runtime/log.js +15 -0
  274. package/dist/client/sandboxed/runtime/pool.d.ts +11 -0
  275. package/dist/client/sandboxed/runtime/pool.js +121 -0
  276. package/dist/client/sandboxed/runtime/recovery.d.ts +11 -0
  277. package/dist/client/sandboxed/runtime/recovery.js +122 -0
  278. package/dist/client/sandboxed/runtime/state.d.ts +39 -0
  279. package/dist/client/sandboxed/runtime/state.js +59 -0
  280. package/dist/client/sandboxed/types/index.d.ts +2 -0
  281. package/dist/client/sandboxed/types/index.js +1 -0
  282. package/dist/client/sandboxed/types/options.d.ts +27 -0
  283. package/dist/client/sandboxed/types/options.js +1 -0
  284. package/dist/client/sandboxed/types/process.d.ts +30 -0
  285. package/dist/client/sandboxed/types/process.js +1 -0
  286. package/dist/client/sandboxed/worker.d.ts +3 -85
  287. package/dist/client/sandboxed/worker.js +3 -557
  288. package/dist/client/sandboxed/wrapper.js +1 -0
  289. package/dist/client/tcp/client.d.ts +5 -112
  290. package/dist/client/tcp/client.js +5 -481
  291. package/dist/client/tcp/commandQueue.d.ts +23 -0
  292. package/dist/client/tcp/commandQueue.js +89 -0
  293. package/dist/client/tcp/connection.d.ts +4 -85
  294. package/dist/client/tcp/connection.js +3 -315
  295. package/dist/client/tcp/errors.d.ts +6 -0
  296. package/dist/client/tcp/errors.js +18 -0
  297. package/dist/client/tcp/runtime/commands.d.ts +9 -0
  298. package/dist/client/tcp/runtime/commands.js +124 -0
  299. package/dist/client/tcp/runtime/connectivity.d.ts +13 -0
  300. package/dist/client/tcp/runtime/connectivity.js +77 -0
  301. package/dist/client/tcp/runtime/health.d.ts +14 -0
  302. package/dist/client/tcp/runtime/health.js +127 -0
  303. package/dist/client/tcp/runtime/lifecycle.d.ts +8 -0
  304. package/dist/client/tcp/runtime/lifecycle.js +32 -0
  305. package/dist/client/tcp/runtime/state.d.ts +50 -0
  306. package/dist/client/tcp/runtime/state.js +45 -0
  307. package/dist/client/tcp/transport.d.ts +18 -0
  308. package/dist/client/tcp/transport.js +158 -0
  309. package/dist/client/tcp/types/command.d.ts +9 -0
  310. package/dist/client/tcp/types/command.js +1 -0
  311. package/dist/client/tcp/types/connection.d.ts +31 -0
  312. package/dist/client/tcp/types/connection.js +17 -0
  313. package/dist/client/tcp/types/index.d.ts +5 -0
  314. package/dist/client/tcp/types/index.js +1 -0
  315. package/dist/client/tcp/types/socket.d.ts +8 -0
  316. package/dist/client/tcp/types/socket.js +1 -0
  317. package/dist/client/tcp/types/tls.d.ts +4 -0
  318. package/dist/client/tcp/types/tls.js +1 -0
  319. package/dist/client/tcp/types.d.ts +2 -106
  320. package/dist/client/tcp/types.js +2 -22
  321. package/dist/client/types/connection.d.ts +29 -0
  322. package/dist/client/types/connection.js +1 -0
  323. package/dist/client/types/dlq.d.ts +45 -0
  324. package/dist/client/types/dlq.js +1 -0
  325. package/dist/client/types/events.d.ts +54 -0
  326. package/dist/client/types/events.js +1 -0
  327. package/dist/client/types/flow.d.ts +10 -0
  328. package/dist/client/types/flow.js +1 -0
  329. package/dist/client/types/index.d.ts +10 -0
  330. package/dist/client/types/index.js +1 -0
  331. package/dist/client/types/job.d.ts +127 -0
  332. package/dist/client/types/job.js +1 -0
  333. package/dist/client/types/metrics.d.ts +1 -0
  334. package/dist/client/types/metrics.js +1 -0
  335. package/dist/client/types/options.d.ts +62 -0
  336. package/dist/client/types/options.js +1 -0
  337. package/dist/client/types/worker.d.ts +38 -0
  338. package/dist/client/types/worker.js +1 -0
  339. package/dist/client/types.d.ts +2 -583
  340. package/dist/client/types.js +2 -6
  341. package/dist/client/worker/ackBatcher.d.ts +1 -1
  342. package/dist/client/worker/ackBatcher.js +17 -5
  343. package/dist/client/worker/ackOutcome.d.ts +8 -0
  344. package/dist/client/worker/ackOutcome.js +58 -0
  345. package/dist/client/worker/constants.d.ts +7 -0
  346. package/dist/client/worker/constants.js +7 -0
  347. package/dist/client/worker/groupConcurrency.js +3 -0
  348. package/dist/client/worker/handlers/completion.d.ts +28 -0
  349. package/dist/client/worker/handlers/completion.js +68 -0
  350. package/dist/client/worker/handlers/dependencies.d.ts +11 -0
  351. package/dist/client/worker/handlers/dependencies.js +107 -0
  352. package/dist/client/worker/handlers/mutations.d.ts +23 -0
  353. package/dist/client/worker/handlers/mutations.js +211 -0
  354. package/dist/client/worker/handlers/queries.d.ts +15 -0
  355. package/dist/client/worker/handlers/queries.js +100 -0
  356. package/dist/client/worker/index.d.ts +2 -2
  357. package/dist/client/worker/index.js +1 -1
  358. package/dist/client/worker/jobParser.js +4 -2
  359. package/dist/client/worker/processor.d.ts +2 -15
  360. package/dist/client/worker/processor.js +68 -125
  361. package/dist/client/worker/processorHandlers.d.ts +4 -65
  362. package/dist/client/worker/processorHandlers.js +4 -400
  363. package/dist/client/worker/processorOutcome.d.ts +14 -0
  364. package/dist/client/worker/processorOutcome.js +125 -0
  365. package/dist/client/worker/runtime/buffer.d.ts +8 -0
  366. package/dist/client/worker/runtime/buffer.js +50 -0
  367. package/dist/client/worker/runtime/control.d.ts +26 -0
  368. package/dist/client/worker/runtime/control.js +175 -0
  369. package/dist/client/worker/runtime/execution.d.ts +11 -0
  370. package/dist/client/worker/runtime/execution.js +123 -0
  371. package/dist/client/worker/runtime/lifecycle.d.ts +7 -0
  372. package/dist/client/worker/runtime/lifecycle.js +114 -0
  373. package/dist/client/worker/runtime/manual.d.ts +10 -0
  374. package/dist/client/worker/runtime/manual.js +137 -0
  375. package/dist/client/worker/runtime/options.d.ts +5 -0
  376. package/dist/client/worker/runtime/options.js +39 -0
  377. package/dist/client/worker/runtime/polling.d.ts +12 -0
  378. package/dist/client/worker/runtime/polling.js +123 -0
  379. package/dist/client/worker/runtime/state.d.ts +110 -0
  380. package/dist/client/worker/runtime/state.js +156 -0
  381. package/dist/client/worker/types/index.d.ts +5 -0
  382. package/dist/client/worker/types/index.js +1 -0
  383. package/dist/client/worker/types/manual.d.ts +7 -0
  384. package/dist/client/worker/types/manual.js +1 -0
  385. package/dist/client/worker/types/options.d.ts +24 -0
  386. package/dist/client/worker/types/options.js +1 -0
  387. package/dist/client/worker/types/outcome.d.ts +23 -0
  388. package/dist/client/worker/types/outcome.js +1 -0
  389. package/dist/client/worker/types/processor.d.ts +22 -0
  390. package/dist/client/worker/types/processor.js +1 -0
  391. package/dist/client/worker/types/transport.d.ts +11 -0
  392. package/dist/client/worker/types/transport.js +1 -0
  393. package/dist/client/worker/worker.d.ts +3 -160
  394. package/dist/client/worker/worker.js +3 -904
  395. package/dist/client/worker/workerRateLimiter.d.ts +5 -1
  396. package/dist/client/worker/workerRateLimiter.js +40 -20
  397. package/dist/client/worker.d.ts +1 -0
  398. package/dist/client/workflow/compensationChild.d.ts +2 -1
  399. package/dist/client/workflow/compensationChild.js +1 -1
  400. package/dist/client/workflow/compensationClaim.d.ts +11 -0
  401. package/dist/client/workflow/compensationClaim.js +30 -0
  402. package/dist/client/workflow/compensator.d.ts +7 -2
  403. package/dist/client/workflow/compensator.js +5 -11
  404. package/dist/client/workflow/recovery.js +25 -2
  405. package/dist/client/workflow/rollbackControl.js +1 -1
  406. package/dist/domain/job/constants.d.ts +12 -0
  407. package/dist/domain/job/constants.js +12 -0
  408. package/dist/domain/job/create.d.ts +2 -0
  409. package/dist/domain/job/create.js +103 -0
  410. package/dist/domain/job/ids.d.ts +5 -0
  411. package/dist/domain/job/ids.js +12 -0
  412. package/dist/domain/job/locks.d.ts +4 -0
  413. package/dist/domain/job/locks.js +23 -0
  414. package/dist/domain/job/payload.d.ts +18 -0
  415. package/dist/domain/job/payload.js +43 -0
  416. package/dist/domain/job/state.d.ts +8 -0
  417. package/dist/domain/job/state.js +51 -0
  418. package/dist/domain/job/terminal.d.ts +3 -0
  419. package/dist/domain/job/terminal.js +9 -0
  420. package/dist/domain/queue/dlqShard.d.ts +2 -0
  421. package/dist/domain/queue/dlqShard.js +34 -9
  422. package/dist/domain/queue/limiterManager.d.ts +11 -0
  423. package/dist/domain/queue/limiterManager.js +28 -0
  424. package/dist/domain/queue/priorityQueue.js +3 -39
  425. package/dist/domain/queue/priorityQueueOrder.d.ts +3 -0
  426. package/dist/domain/queue/priorityQueueOrder.js +21 -0
  427. package/dist/domain/queue/shard/dependencies.d.ts +11 -0
  428. package/dist/domain/queue/shard/dependencies.js +22 -0
  429. package/dist/domain/queue/shard/dlq.d.ts +25 -0
  430. package/dist/domain/queue/shard/dlq.js +71 -0
  431. package/dist/domain/queue/shard/keys.d.ts +18 -0
  432. package/dist/domain/queue/shard/keys.js +45 -0
  433. package/dist/domain/queue/shard/lifecycle.d.ts +10 -0
  434. package/dist/domain/queue/shard/lifecycle.js +43 -0
  435. package/dist/domain/queue/shard/limits.d.ts +24 -0
  436. package/dist/domain/queue/shard/limits.js +57 -0
  437. package/dist/domain/queue/shard/metrics.d.ts +32 -0
  438. package/dist/domain/queue/shard/metrics.js +72 -0
  439. package/dist/domain/queue/shard/state.d.ts +34 -0
  440. package/dist/domain/queue/shard/state.js +80 -0
  441. package/dist/domain/queue/shard.d.ts +5 -137
  442. package/dist/domain/queue/shard.js +4 -390
  443. package/dist/domain/queue/uniqueKeyManager.d.ts +3 -1
  444. package/dist/domain/queue/uniqueKeyManager.js +9 -1
  445. package/dist/domain/response/builders.d.ts +15 -0
  446. package/dist/domain/response/builders.js +39 -0
  447. package/dist/domain/types/command.d.ts +2 -522
  448. package/dist/domain/types/command.js +2 -5
  449. package/dist/domain/types/commands/base.d.ts +5 -0
  450. package/dist/domain/types/commands/base.js +1 -0
  451. package/dist/domain/types/commands/core.d.ts +106 -0
  452. package/dist/domain/types/commands/core.js +1 -0
  453. package/dist/domain/types/commands/cron.d.ts +36 -0
  454. package/dist/domain/types/commands/cron.js +1 -0
  455. package/dist/domain/types/commands/dashboard.d.ts +13 -0
  456. package/dist/domain/types/commands/dashboard.js +1 -0
  457. package/dist/domain/types/commands/dlq.d.ts +39 -0
  458. package/dist/domain/types/commands/dlq.js +1 -0
  459. package/dist/domain/types/commands/extended.d.ts +63 -0
  460. package/dist/domain/types/commands/extended.js +1 -0
  461. package/dist/domain/types/commands/index.d.ts +12 -0
  462. package/dist/domain/types/commands/index.js +12 -0
  463. package/dist/domain/types/commands/limits.d.ts +54 -0
  464. package/dist/domain/types/commands/limits.js +1 -0
  465. package/dist/domain/types/commands/management.d.ts +73 -0
  466. package/dist/domain/types/commands/management.js +1 -0
  467. package/dist/domain/types/commands/monitoring.d.ts +49 -0
  468. package/dist/domain/types/commands/monitoring.js +1 -0
  469. package/dist/domain/types/commands/protocol.d.ts +20 -0
  470. package/dist/domain/types/commands/protocol.js +1 -0
  471. package/dist/domain/types/commands/query.d.ts +46 -0
  472. package/dist/domain/types/commands/query.js +1 -0
  473. package/dist/domain/types/commands/union.d.ts +13 -0
  474. package/dist/domain/types/commands/union.js +1 -0
  475. package/dist/domain/types/commands/workers.d.ts +39 -0
  476. package/dist/domain/types/commands/workers.js +1 -0
  477. package/dist/domain/types/cron.d.ts +4 -2
  478. package/dist/domain/types/cron.js +3 -0
  479. package/dist/domain/types/dlq.d.ts +17 -0
  480. package/dist/domain/types/dlq.js +70 -14
  481. package/dist/domain/types/index.d.ts +2 -0
  482. package/dist/domain/types/index.js +1 -0
  483. package/dist/domain/types/job.d.ts +8 -269
  484. package/dist/domain/types/job.js +8 -234
  485. package/dist/domain/types/jobs/model.d.ts +152 -0
  486. package/dist/domain/types/jobs/model.js +1 -0
  487. package/dist/domain/types/metrics.d.ts +16 -0
  488. package/dist/domain/types/metrics.js +1 -0
  489. package/dist/domain/types/priorityQueue.d.ts +12 -0
  490. package/dist/domain/types/priorityQueue.js +1 -0
  491. package/dist/domain/types/protocol.d.ts +5 -0
  492. package/dist/domain/types/protocol.js +4 -0
  493. package/dist/domain/types/queue.d.ts +7 -0
  494. package/dist/domain/types/queue.js +13 -0
  495. package/dist/domain/types/response.d.ts +3 -192
  496. package/dist/domain/types/response.js +3 -101
  497. package/dist/domain/types/responses/model.d.ts +152 -0
  498. package/dist/domain/types/responses/model.js +1 -0
  499. package/dist/domain/types/shard.d.ts +4 -0
  500. package/dist/domain/types/shard.js +1 -0
  501. package/dist/infrastructure/cloud/cloudAgent.js +6 -0
  502. package/dist/infrastructure/cloud/commandHandler.d.ts +2 -41
  503. package/dist/infrastructure/cloud/commandHandler.js +1 -1
  504. package/dist/infrastructure/cloud/commands/integrations.d.ts +2 -0
  505. package/dist/infrastructure/cloud/commands/integrations.js +31 -0
  506. package/dist/infrastructure/cloud/commands/jobMapper.d.ts +56 -0
  507. package/dist/infrastructure/cloud/commands/jobMapper.js +72 -0
  508. package/dist/infrastructure/cloud/commands/jobs.d.ts +2 -0
  509. package/dist/infrastructure/cloud/commands/jobs.js +111 -0
  510. package/dist/infrastructure/cloud/commands/queues.d.ts +2 -0
  511. package/dist/infrastructure/cloud/commands/queues.js +126 -0
  512. package/dist/infrastructure/cloud/commands.d.ts +3 -10
  513. package/dist/infrastructure/cloud/commands.js +7 -344
  514. package/dist/infrastructure/cloud/snapshot/analytics.d.ts +16 -0
  515. package/dist/infrastructure/cloud/snapshot/analytics.js +132 -0
  516. package/dist/infrastructure/cloud/snapshot/collector.d.ts +24 -0
  517. package/dist/infrastructure/cloud/snapshot/collector.js +105 -0
  518. package/dist/infrastructure/cloud/snapshot/config.d.ts +5 -0
  519. package/dist/infrastructure/cloud/snapshot/config.js +86 -0
  520. package/dist/infrastructure/cloud/snapshot/jobs.d.ts +5 -0
  521. package/dist/infrastructure/cloud/snapshot/jobs.js +148 -0
  522. package/dist/infrastructure/cloud/snapshot/stalls.d.ts +3 -0
  523. package/dist/infrastructure/cloud/snapshot/stalls.js +34 -0
  524. package/dist/infrastructure/cloud/snapshotCollector.d.ts +2 -53
  525. package/dist/infrastructure/cloud/snapshotCollector.js +5 -107
  526. package/dist/infrastructure/cloud/snapshotHelpers.d.ts +5 -45
  527. package/dist/infrastructure/cloud/snapshotHelpers.js +4 -426
  528. package/dist/infrastructure/cloud/types/collector.d.ts +54 -0
  529. package/dist/infrastructure/cloud/types/collector.js +1 -0
  530. package/dist/infrastructure/cloud/types/command.d.ts +44 -0
  531. package/dist/infrastructure/cloud/types/command.js +1 -0
  532. package/dist/infrastructure/cloud/types/config.d.ts +18 -0
  533. package/dist/infrastructure/cloud/types/config.js +1 -0
  534. package/dist/infrastructure/cloud/types/event.d.ts +14 -0
  535. package/dist/infrastructure/cloud/types/event.js +1 -0
  536. package/dist/infrastructure/cloud/types/redact.d.ts +4 -0
  537. package/dist/infrastructure/cloud/types/redact.js +1 -0
  538. package/dist/infrastructure/cloud/types/snapshot.d.ts +52 -0
  539. package/dist/infrastructure/cloud/types/snapshot.js +1 -0
  540. package/dist/infrastructure/cloud/types/snapshotCore.d.ts +125 -0
  541. package/dist/infrastructure/cloud/types/snapshotCore.js +1 -0
  542. package/dist/infrastructure/cloud/types/snapshotJobs.d.ts +124 -0
  543. package/dist/infrastructure/cloud/types/snapshotJobs.js +1 -0
  544. package/dist/infrastructure/cloud/types/snapshotTelemetry.d.ts +100 -0
  545. package/dist/infrastructure/cloud/types/snapshotTelemetry.js +1 -0
  546. package/dist/infrastructure/cloud/types.d.ts +3 -445
  547. package/dist/infrastructure/cloud/types.js +0 -4
  548. package/dist/infrastructure/persistence/batchInsert.d.ts +13 -0
  549. package/dist/infrastructure/persistence/batchInsert.js +96 -0
  550. package/dist/infrastructure/persistence/jobOptionsBlob.d.ts +18 -0
  551. package/dist/infrastructure/persistence/jobOptionsBlob.js +56 -0
  552. package/dist/infrastructure/persistence/legacyNameMigration.d.ts +5 -0
  553. package/dist/infrastructure/persistence/legacyNameMigration.js +42 -0
  554. package/dist/infrastructure/persistence/migrations.d.ts +3 -0
  555. package/dist/infrastructure/persistence/migrations.js +120 -0
  556. package/dist/infrastructure/persistence/schema.d.ts +3 -5
  557. package/dist/infrastructure/persistence/schema.js +40 -136
  558. package/dist/infrastructure/persistence/sqlite/admission.d.ts +9 -0
  559. package/dist/infrastructure/persistence/sqlite/admission.js +34 -0
  560. package/dist/infrastructure/persistence/sqlite/control.d.ts +32 -0
  561. package/dist/infrastructure/persistence/sqlite/control.js +90 -0
  562. package/dist/infrastructure/persistence/sqlite/flows.d.ts +26 -0
  563. package/dist/infrastructure/persistence/sqlite/flows.js +167 -0
  564. package/dist/infrastructure/persistence/sqlite/jobs.d.ts +23 -0
  565. package/dist/infrastructure/persistence/sqlite/jobs.js +166 -0
  566. package/dist/infrastructure/persistence/sqlite/lifecycle.d.ts +6 -0
  567. package/dist/infrastructure/persistence/sqlite/lifecycle.js +30 -0
  568. package/dist/infrastructure/persistence/sqlite/mutations.d.ts +20 -0
  569. package/dist/infrastructure/persistence/sqlite/mutations.js +149 -0
  570. package/dist/infrastructure/persistence/sqlite/queries.d.ts +23 -0
  571. package/dist/infrastructure/persistence/sqlite/queries.js +89 -0
  572. package/dist/infrastructure/persistence/sqlite/records.d.ts +24 -0
  573. package/dist/infrastructure/persistence/sqlite/records.js +115 -0
  574. package/dist/infrastructure/persistence/sqlite/state.d.ts +36 -0
  575. package/dist/infrastructure/persistence/sqlite/state.js +207 -0
  576. package/dist/infrastructure/persistence/sqlite/telemetry.d.ts +16 -0
  577. package/dist/infrastructure/persistence/sqlite/telemetry.js +126 -0
  578. package/dist/infrastructure/persistence/sqlite.d.ts +5 -276
  579. package/dist/infrastructure/persistence/sqlite.js +3 -997
  580. package/dist/infrastructure/persistence/sqliteBatch.d.ts +4 -121
  581. package/dist/infrastructure/persistence/sqliteBatch.js +3 -422
  582. package/dist/infrastructure/persistence/sqliteSerializer.d.ts +6 -1
  583. package/dist/infrastructure/persistence/sqliteSerializer.js +33 -11
  584. package/dist/infrastructure/persistence/statements.d.ts +5 -1
  585. package/dist/infrastructure/persistence/statements.js +14 -9
  586. package/dist/infrastructure/persistence/types/admission.d.ts +8 -0
  587. package/dist/infrastructure/persistence/types/admission.js +1 -0
  588. package/dist/infrastructure/persistence/types/batch.d.ts +12 -0
  589. package/dist/infrastructure/persistence/types/batch.js +1 -0
  590. package/dist/infrastructure/persistence/types/sqlite.d.ts +17 -0
  591. package/dist/infrastructure/persistence/types/sqlite.js +1 -0
  592. package/dist/infrastructure/persistence/writeBuffer.d.ts +38 -0
  593. package/dist/infrastructure/persistence/writeBuffer.js +221 -0
  594. package/dist/infrastructure/scheduler/cron/execution.d.ts +12 -0
  595. package/dist/infrastructure/scheduler/cron/execution.js +150 -0
  596. package/dist/infrastructure/scheduler/cron/runtime.d.ts +31 -0
  597. package/dist/infrastructure/scheduler/cron/runtime.js +143 -0
  598. package/dist/infrastructure/scheduler/cronScheduler.d.ts +4 -117
  599. package/dist/infrastructure/scheduler/cronScheduler.js +3 -436
  600. package/dist/infrastructure/scheduler/types/cronScheduler.d.ts +16 -0
  601. package/dist/infrastructure/scheduler/types/cronScheduler.js +1 -0
  602. package/dist/infrastructure/server/bootstrap.js +3 -0
  603. package/dist/infrastructure/server/handler-routes/control.d.ts +8 -0
  604. package/dist/infrastructure/server/handler-routes/control.js +82 -0
  605. package/dist/infrastructure/server/handler-routes/jobs.d.ts +6 -0
  606. package/dist/infrastructure/server/handler-routes/jobs.js +110 -0
  607. package/dist/infrastructure/server/handler-routes/monitoring.d.ts +5 -0
  608. package/dist/infrastructure/server/handler-routes/monitoring.js +65 -0
  609. package/dist/infrastructure/server/handlerRoutes.d.ts +3 -26
  610. package/dist/infrastructure/server/handlerRoutes.js +3 -257
  611. package/dist/infrastructure/server/handlers/advanced/configNumbers.d.ts +2 -0
  612. package/dist/infrastructure/server/handlers/advanced/configNumbers.js +26 -0
  613. package/dist/infrastructure/server/handlers/advanced/dependencies.d.ts +15 -0
  614. package/dist/infrastructure/server/handlers/advanced/dependencies.js +38 -0
  615. package/dist/infrastructure/server/handlers/advanced/jobs.d.ts +33 -0
  616. package/dist/infrastructure/server/handlers/advanced/jobs.js +136 -0
  617. package/dist/infrastructure/server/handlers/advanced/queue.d.ts +42 -0
  618. package/dist/infrastructure/server/handlers/advanced/queue.js +111 -0
  619. package/dist/infrastructure/server/handlers/advanced.d.ts +3 -121
  620. package/dist/infrastructure/server/handlers/advanced.js +3 -336
  621. package/dist/infrastructure/server/handlers/core.d.ts +1 -4
  622. package/dist/infrastructure/server/handlers/core.js +37 -20
  623. package/dist/infrastructure/server/handlers/cron.js +9 -1
  624. package/dist/infrastructure/server/handlers/dlq.d.ts +3 -0
  625. package/dist/infrastructure/server/handlers/dlq.js +18 -4
  626. package/dist/infrastructure/server/handlers/flow.js +6 -1
  627. package/dist/infrastructure/server/handlers/introspection.d.ts +19 -0
  628. package/dist/infrastructure/server/handlers/introspection.js +21 -0
  629. package/dist/infrastructure/server/handlers/management.d.ts +8 -0
  630. package/dist/infrastructure/server/handlers/management.js +30 -0
  631. package/dist/infrastructure/server/handlers/monitoring/health.d.ts +13 -0
  632. package/dist/infrastructure/server/handlers/monitoring/health.js +61 -0
  633. package/dist/infrastructure/server/handlers/monitoring/operations.d.ts +8 -0
  634. package/dist/infrastructure/server/handlers/monitoring/operations.js +28 -0
  635. package/dist/infrastructure/server/handlers/monitoring/webhooks.d.ts +7 -0
  636. package/dist/infrastructure/server/handlers/monitoring/webhooks.js +56 -0
  637. package/dist/infrastructure/server/handlers/monitoring/workers.d.ts +6 -0
  638. package/dist/infrastructure/server/handlers/monitoring/workers.js +57 -0
  639. package/dist/infrastructure/server/handlers/monitoring.d.ts +4 -30
  640. package/dist/infrastructure/server/handlers/monitoring.js +4 -222
  641. package/dist/infrastructure/server/handlers/pushBatchValidation.d.ts +1 -1
  642. package/dist/infrastructure/server/handlers/pushBatchValidation.js +7 -0
  643. package/dist/infrastructure/server/handlers/query.js +13 -4
  644. package/dist/infrastructure/server/http-routes/jobAdvanced.d.ts +2 -0
  645. package/dist/infrastructure/server/http-routes/jobAdvanced.js +106 -0
  646. package/dist/infrastructure/server/http-routes/jobManagement.d.ts +2 -0
  647. package/dist/infrastructure/server/http-routes/jobManagement.js +74 -0
  648. package/dist/infrastructure/server/http-routes/queueJobs.d.ts +2 -0
  649. package/dist/infrastructure/server/http-routes/queueJobs.js +108 -0
  650. package/dist/infrastructure/server/httpRouteJobs.d.ts +1 -8
  651. package/dist/infrastructure/server/httpRouteJobs.js +33 -222
  652. package/dist/infrastructure/server/httpRouteQueues.d.ts +1 -6
  653. package/dist/infrastructure/server/httpRouteQueues.js +51 -217
  654. package/dist/infrastructure/server/httpRouteResources.js +1 -0
  655. package/dist/infrastructure/server/protocol/commands.d.ts +8 -0
  656. package/dist/infrastructure/server/protocol/commands.js +31 -0
  657. package/dist/infrastructure/server/protocol/frameParser.d.ts +16 -0
  658. package/dist/infrastructure/server/protocol/frameParser.js +65 -0
  659. package/dist/infrastructure/server/protocol/lineBuffer.d.ts +6 -0
  660. package/dist/infrastructure/server/protocol/lineBuffer.js +21 -0
  661. package/dist/infrastructure/server/protocol/validation.d.ts +9 -0
  662. package/dist/infrastructure/server/protocol/validation.js +75 -0
  663. package/dist/infrastructure/server/protocol.d.ts +5 -77
  664. package/dist/infrastructure/server/protocol.js +4 -265
  665. package/dist/infrastructure/server/rateLimiter.js +1 -0
  666. package/dist/infrastructure/server/socketWriteQueue.d.ts +1 -1
  667. package/dist/infrastructure/server/socketWriteQueue.js +8 -5
  668. package/dist/infrastructure/server/sse/constants.d.ts +5 -0
  669. package/dist/infrastructure/server/sse/constants.js +5 -0
  670. package/dist/infrastructure/server/sse/eventBuffer.d.ts +3 -0
  671. package/dist/infrastructure/server/sse/eventBuffer.js +21 -0
  672. package/dist/infrastructure/server/sseHandler.d.ts +2 -6
  673. package/dist/infrastructure/server/sseHandler.js +20 -96
  674. package/dist/infrastructure/server/tcp/clientRelease.d.ts +2 -0
  675. package/dist/infrastructure/server/tcp/clientRelease.js +18 -0
  676. package/dist/infrastructure/server/tcp/connections.d.ts +24 -0
  677. package/dist/infrastructure/server/tcp/connections.js +162 -0
  678. package/dist/infrastructure/server/tcp/constants.d.ts +3 -0
  679. package/dist/infrastructure/server/tcp/constants.js +3 -0
  680. package/dist/infrastructure/server/tcp/eventSubscriptions.d.ts +10 -0
  681. package/dist/infrastructure/server/tcp/eventSubscriptions.js +17 -0
  682. package/dist/infrastructure/server/tcp/responses.d.ts +3 -0
  683. package/dist/infrastructure/server/tcp/responses.js +8 -0
  684. package/dist/infrastructure/server/tcp.d.ts +10 -68
  685. package/dist/infrastructure/server/tcp.js +47 -256
  686. package/dist/infrastructure/server/types/protocol.d.ts +4 -0
  687. package/dist/infrastructure/server/types/protocol.js +1 -0
  688. package/dist/infrastructure/server/types/sse.d.ts +11 -0
  689. package/dist/infrastructure/server/types/sse.js +1 -0
  690. package/dist/infrastructure/server/types/tcpServer.d.ts +25 -0
  691. package/dist/infrastructure/server/types/tcpServer.js +1 -0
  692. package/dist/infrastructure/server/types/ws.d.ts +6 -0
  693. package/dist/infrastructure/server/types/ws.js +1 -0
  694. package/dist/infrastructure/server/ws/constants.d.ts +6 -0
  695. package/dist/infrastructure/server/ws/constants.js +130 -0
  696. package/dist/infrastructure/server/ws/snapshots.d.ts +4 -0
  697. package/dist/infrastructure/server/ws/snapshots.js +52 -0
  698. package/dist/infrastructure/server/ws/subscriptions.d.ts +10 -0
  699. package/dist/infrastructure/server/ws/subscriptions.js +39 -0
  700. package/dist/infrastructure/server/wsHandler.d.ts +2 -10
  701. package/dist/infrastructure/server/wsHandler.js +12 -237
  702. package/dist/mcp/adapter.d.ts +5 -403
  703. package/dist/mcp/adapter.js +6 -778
  704. package/dist/mcp/backend/embedded/base.d.ts +7 -0
  705. package/dist/mcp/backend/embedded/base.js +15 -0
  706. package/dist/mcp/backend/embedded/index.d.ts +14 -0
  707. package/dist/mcp/backend/embedded/index.js +22 -0
  708. package/dist/mcp/backend/embedded/jobs.d.ts +44 -0
  709. package/dist/mcp/backend/embedded/jobs.js +98 -0
  710. package/dist/mcp/backend/embedded/queues.d.ts +27 -0
  711. package/dist/mcp/backend/embedded/queues.js +84 -0
  712. package/dist/mcp/backend/embedded/services.d.ts +29 -0
  713. package/dist/mcp/backend/embedded/services.js +107 -0
  714. package/dist/mcp/backend/serializers.d.ts +7 -0
  715. package/dist/mcp/backend/serializers.js +32 -0
  716. package/dist/mcp/backend/tcp/base.d.ts +19 -0
  717. package/dist/mcp/backend/tcp/base.js +54 -0
  718. package/dist/mcp/backend/tcp/index.d.ts +14 -0
  719. package/dist/mcp/backend/tcp/index.js +20 -0
  720. package/dist/mcp/backend/tcp/jobs.d.ts +44 -0
  721. package/dist/mcp/backend/tcp/jobs.js +122 -0
  722. package/dist/mcp/backend/tcp/queues.d.ts +27 -0
  723. package/dist/mcp/backend/tcp/queues.js +89 -0
  724. package/dist/mcp/backend/tcp/services.d.ts +30 -0
  725. package/dist/mcp/backend/tcp/services.js +161 -0
  726. package/dist/mcp/types/adapter.d.ts +176 -0
  727. package/dist/mcp/types/adapter.js +1 -0
  728. package/dist/shared/asyncLock.d.ts +13 -0
  729. package/dist/shared/asyncLock.js +65 -0
  730. package/dist/shared/lock.d.ts +10 -72
  731. package/dist/shared/lock.js +7 -231
  732. package/dist/shared/lockError.d.ts +3 -0
  733. package/dist/shared/lockError.js +6 -0
  734. package/dist/shared/lockTimeout.d.ts +2 -0
  735. package/dist/shared/lockTimeout.js +2 -0
  736. package/dist/shared/rwLock.d.ts +22 -0
  737. package/dist/shared/rwLock.js +124 -0
  738. package/dist/shared/serialization.js +1 -0
  739. package/dist/shared/skipList.d.ts +0 -5
  740. package/dist/shared/skipList.js +10 -57
  741. package/dist/shared/skipListNodes.d.ts +6 -0
  742. package/dist/shared/skipListNodes.js +43 -0
  743. package/dist/shared/types/lock.d.ts +7 -0
  744. package/dist/shared/types/lock.js +1 -0
  745. package/dist/shared/types/skipList.d.ts +4 -0
  746. package/dist/shared/types/skipList.js +1 -0
  747. package/package.json +2 -1
@@ -0,0 +1,8 @@
1
+ import type { JobInput } from '../../domain/types/job';
2
+ /**
3
+ * Queue.add parent options carry the parent queue in reserved metadata. A bare
4
+ * parentId remains the legacy flow forward-reference contract and is linked
5
+ * later when the parent declares the edge.
6
+ */
7
+ export declare function parentLinkQueue(input: JobInput): string | null;
8
+ export declare function isParentLinkInput(input: JobInput): boolean;
@@ -0,0 +1,23 @@
1
+ function inputData(input) {
2
+ return input.data && typeof input.data === 'object' && !Array.isArray(input.data)
3
+ ? input.data
4
+ : null;
5
+ }
6
+ /**
7
+ * Queue.add parent options carry the parent queue in reserved metadata. A bare
8
+ * parentId remains the legacy flow forward-reference contract and is linked
9
+ * later when the parent declares the edge.
10
+ */
11
+ export function parentLinkQueue(input) {
12
+ if (!input.parentId)
13
+ return null;
14
+ const data = inputData(input);
15
+ if (!data || String(data.__parentId) !== String(input.parentId))
16
+ return null;
17
+ return typeof data.__parentQueue === 'string' && data.__parentQueue.length > 0
18
+ ? data.__parentQueue
19
+ : null;
20
+ }
21
+ export function isParentLinkInput(input) {
22
+ return parentLinkQueue(input) !== null;
23
+ }
@@ -1,52 +1,13 @@
1
1
  /**
2
2
  * Push Operations
3
- * Job push and batch push logic
3
+ * Single-job push logic and stable batch re-export
4
4
  */
5
- import { type Job, type JobId, type JobInput } from '../../domain/types/job';
6
- import { type JobLocation, EventType } from '../../domain/types/queue';
7
- import type { Shard } from '../../domain/queue/shard';
8
- import type { SqliteStorage } from '../../infrastructure/persistence/sqlite';
9
- import type { RWLock } from '../../shared/lock';
10
- import type { SetLike, MapLike } from '../../shared/lru';
11
- import type { DependencyResultTracker } from '../dependencyResultTracker';
12
- import type { DependencyCompletionTracker } from '../dependencyCompletions';
13
- /** Push operation context */
14
- export interface PushContext {
15
- storage: SqliteStorage | null;
16
- shards: Shard[];
17
- shardLocks: RWLock[];
18
- /** Serializes deterministic IDs before any shard lock is acquired. */
19
- customIdLock: RWLock;
20
- completedJobs: SetLike<JobId>;
21
- completedJobsData: MapLike<JobId, Job>;
22
- /** Bare completion ids for removeOnComplete jobs so dependents start ready */
23
- depCompletions?: DependencyCompletionTracker;
24
- maxDependencyCompletions: number;
25
- /** Timeout markers — cleared on custom-id reuse so a recycled id starts clean */
26
- timedOutJobs?: SetLike<JobId>;
27
- jobResults: MapLike<JobId, unknown>;
28
- dependencyResults: DependencyResultTracker;
29
- customIdMap: MapLike<string, JobId>;
30
- jobIndex: Map<JobId, JobLocation>;
31
- totalPushed: {
32
- value: bigint;
33
- };
34
- broadcast: (event: {
35
- eventType: EventType;
36
- queue: string;
37
- jobId: JobId;
38
- timestamp: number;
39
- }) => void;
40
- dashboardEmit?: (event: string, data: Record<string, unknown>) => void;
41
- registerQueueName?: (queue: string) => void;
42
- }
5
+ import { type Job, type JobInput } from '../../domain/types/job';
6
+ import type { PushContext } from './pushContext';
7
+ export type { PushContext } from './pushContext';
8
+ export { pushJobBatch } from './pushBatch';
43
9
  /**
44
10
  * Push a single job to queue
45
11
  * NOTE: customId check happens INSIDE lock to prevent race conditions
46
12
  */
47
13
  export declare function pushJob(queue: string, input: JobInput, ctx: PushContext): Promise<Job>;
48
- /**
49
- * Push multiple jobs to queue
50
- * NOTE: customId check happens INSIDE lock (safer for concurrent batch inserts)
51
- */
52
- export declare function pushJobBatch(queue: string, inputs: JobInput[], ctx: PushContext): Promise<JobId[]>;
@@ -1,92 +1,35 @@
1
1
  /**
2
2
  * Push Operations
3
- * Job push and batch push logic
3
+ * Single-job push logic and stable batch re-export
4
4
  */
5
5
  import { createJob } from '../../domain/types/job';
6
6
  import { shardIndex } from '../../shared/hash';
7
7
  import { latencyTracker } from '../latencyTracker';
8
8
  import { throughputTracker } from '../throughputTracker';
9
9
  import { handleCustomId } from './customId';
10
- import { insertJobToShard } from './pushInsert';
10
+ import { acceptParentedJob, validateParentLinkInputs } from './parentLink';
11
+ import { isParentLinkInput } from './parentLinkInput';
12
+ import { acceptStandardJob, throwPushErrors } from './pushAdmission';
11
13
  import { withPushWriteLocks } from './pushLocks';
12
- /**
13
- * Handle unique key deduplication
14
- * Returns existing job ID if duplicate found and should skip, or allows insert
15
- */
16
- function handleDeduplication(job, input, queue, shard, ctx) {
17
- if (!job.uniqueKey) {
18
- return { skip: false };
19
- }
20
- const q = shard.getQueue(queue);
21
- const existingEntry = shard.getUniqueKeyEntry(queue, job.uniqueKey);
22
- if (!existingEntry) {
23
- shard.registerUniqueKeyWithTtl(queue, job.uniqueKey, job.id, input.dedup?.ttl);
24
- return { skip: false };
25
- }
26
- const dedupOpts = input.dedup;
27
- // Replace strategy: remove old, insert new
28
- if (dedupOpts?.replace) {
29
- const existingJob = q.find(existingEntry.jobId);
30
- if (existingJob) {
31
- q.remove(existingEntry.jobId);
32
- shard.decrementQueued(existingEntry.jobId);
33
- ctx.jobIndex.delete(existingEntry.jobId);
34
- }
35
- shard.releaseUniqueKey(queue, job.uniqueKey);
36
- shard.registerUniqueKeyWithTtl(queue, job.uniqueKey, job.id, dedupOpts?.ttl);
37
- return { skip: false };
38
- }
39
- // Extend strategy: reset TTL, return existing
40
- if (dedupOpts?.extend && dedupOpts?.ttl) {
41
- shard.extendUniqueKeyTtl(queue, job.uniqueKey, dedupOpts.ttl);
42
- if (input.customId)
43
- ctx.customIdMap.delete(input.customId);
44
- const existingJob = q.find(existingEntry.jobId);
45
- if (existingJob) {
46
- ctx.dashboardEmit?.('job:deduplicated', {
47
- queue,
48
- jobId: String(existingEntry.jobId),
49
- strategy: 'extend',
50
- });
51
- return { skip: true, existingId: existingEntry.jobId };
52
- }
53
- throw new Error('Duplicate unique_key (extended TTL)');
54
- }
55
- // Default: return existing job (BullMQ-style)
56
- // Block if job is waiting (in priority queue) OR active (uniqueKey held until ack,
57
- // jobIndex entry type 'processing' means the worker is still running it).
58
- if (input.customId)
59
- ctx.customIdMap.delete(input.customId);
60
- const existingJob = q.find(existingEntry.jobId);
61
- if (existingJob || ctx.jobIndex.has(existingEntry.jobId)) {
62
- ctx.broadcast({
63
- eventType: "duplicated" /* EventType.Duplicated */,
64
- queue,
65
- jobId: existingEntry.jobId,
66
- timestamp: Date.now(),
67
- });
68
- ctx.dashboardEmit?.('job:deduplicated', {
69
- queue,
70
- jobId: String(existingEntry.jobId),
71
- strategy: 'default',
72
- });
73
- return { skip: true, existingId: existingEntry.jobId };
74
- }
75
- // Job is completed/failed (not in jobIndex) - allow new insert
76
- shard.registerUniqueKeyWithTtl(queue, job.uniqueKey, job.id, input.dedup?.ttl);
77
- return { skip: false };
78
- }
14
+ import { releaseDependencyCompletionPins } from '../dependencyCompletions';
15
+ import { handleDeduplication, replaceActiveDedupJob, replacePendingDedupJob, } from './pushDeduplication';
16
+ import { validateRepeatJobInput } from '../repeatJobs';
17
+ export { pushJobBatch } from './pushBatch';
79
18
  /**
80
19
  * Push a single job to queue
81
20
  * NOTE: customId check happens INSIDE lock to prevent race conditions
82
21
  */
83
22
  export async function pushJob(queue, input, ctx) {
23
+ validateRepeatJobInput(input);
84
24
  const startNs = Bun.nanoseconds();
85
25
  const idx = shardIndex(queue);
86
26
  const now = Date.now();
27
+ const releasedDependencies = [];
87
28
  let result;
88
29
  await withPushWriteLocks(queue, [input], ctx, (lockedShardIndexes) => {
89
30
  const shard = ctx.shards[idx];
31
+ validateParentLinkInputs([input], ctx);
32
+ const linkParent = isParentLinkInput(input);
90
33
  // Check custom ID idempotency INSIDE lock to prevent race conditions
91
34
  const customIdResult = handleCustomId(input, ctx, lockedShardIndexes);
92
35
  if (customIdResult.skip) {
@@ -115,17 +58,62 @@ export async function pushJob(queue, input, ctx) {
115
58
  };
116
59
  return;
117
60
  }
118
- // Insert to shard
119
- insertJobToShard(job, { queue, shard, shardIdx: idx }, ctx);
61
+ const target = { queue, shard, shardIdx: idx };
62
+ let storageHandled = false;
63
+ if (linkParent) {
64
+ releasedDependencies.push(...acceptParentedJob({
65
+ job,
66
+ input,
67
+ target,
68
+ dedup: dedupResult,
69
+ customId: customIdResult,
70
+ ctx,
71
+ }));
72
+ }
73
+ else if (dedupResult.replacement) {
74
+ releasedDependencies.push(...replacePendingDedupJob(dedupResult.replacement, job, input, target, {
75
+ ctx,
76
+ customId: customIdResult,
77
+ }));
78
+ }
79
+ else if (dedupResult.activeOwnerId) {
80
+ replaceActiveDedupJob(dedupResult.activeOwnerId, job, input, target, {
81
+ ctx,
82
+ customId: customIdResult,
83
+ });
84
+ }
85
+ else {
86
+ storageHandled = acceptStandardJob(job, input, target, customIdResult, ctx).storageHandled;
87
+ }
120
88
  shard.notify(queue);
121
- result = { job, persisted: true };
89
+ result = {
90
+ job,
91
+ persisted: true,
92
+ storageHandled: Boolean(storageHandled || linkParent || dedupResult.replacement || dedupResult.activeOwnerId),
93
+ };
122
94
  });
95
+ let cleanupError;
96
+ try {
97
+ releaseDependencyCompletionPins(releasedDependencies, ctx);
98
+ }
99
+ catch (error) {
100
+ cleanupError = error;
101
+ }
123
102
  if (!result) {
103
+ if (cleanupError)
104
+ throw cleanupError;
124
105
  console.error('[Push] Push failed unexpectedly', { queue, input });
125
106
  throw new Error('Push failed');
126
107
  }
108
+ let persistenceError;
127
109
  if (result.persisted) {
128
- ctx.storage?.insertJob(result.job, input.durable);
110
+ try {
111
+ if (!result.storageHandled)
112
+ ctx.storage?.insertJob(result.job, input.durable);
113
+ }
114
+ catch (error) {
115
+ persistenceError = error;
116
+ }
129
117
  ctx.totalPushed.value++;
130
118
  throughputTracker.pushRate.increment();
131
119
  ctx.broadcast({
@@ -136,84 +124,6 @@ export async function pushJob(queue, input, ctx) {
136
124
  });
137
125
  }
138
126
  latencyTracker.push.observe((Bun.nanoseconds() - startNs) / 1e6);
127
+ throwPushErrors([cleanupError, persistenceError], 'Push failed while finalizing an accepted job');
139
128
  return result.job;
140
129
  }
141
- /**
142
- * Push multiple jobs to queue
143
- * NOTE: customId check happens INSIDE lock (safer for concurrent batch inserts)
144
- */
145
- export async function pushJobBatch(queue, inputs, ctx) {
146
- const startNs = Bun.nanoseconds();
147
- const now = Date.now();
148
- const idx = shardIndex(queue);
149
- const resultIds = [];
150
- const jobsToInsert = [];
151
- // Jobs flagged durable must bypass the 10ms write buffer (immediate fsync
152
- // path), exactly like a single durable push — otherwise addBulk silently
153
- // downgrades the documented "durable" guarantee.
154
- const durableJobs = [];
155
- await withPushWriteLocks(queue, inputs, ctx, (lockedShardIndexes) => {
156
- const shard = ctx.shards[idx];
157
- for (const input of inputs) {
158
- // Check custom ID idempotency
159
- const customIdResult = handleCustomId(input, ctx, lockedShardIndexes);
160
- if (customIdResult.skip) {
161
- // Idempotent re-add (queued, active, or waiting-children) — no insert.
162
- resultIds.push('existingJob' in customIdResult
163
- ? customIdResult.existingJob.id
164
- : customIdResult.existingId);
165
- continue;
166
- }
167
- const job = createJob(customIdResult.id, queue, input, now);
168
- // Check deduplication
169
- const dedupResult = handleDeduplication(job, input, queue, shard, ctx);
170
- if (dedupResult.skip) {
171
- resultIds.push(dedupResult.existingId);
172
- continue;
173
- }
174
- // Insert to shard
175
- insertJobToShard(job, { queue, shard, shardIdx: idx }, ctx);
176
- jobsToInsert.push(job);
177
- if (input.durable)
178
- durableJobs.push(job);
179
- resultIds.push(job.id);
180
- }
181
- if (jobsToInsert.length > 0) {
182
- shard.notifyBatch(queue, jobsToInsert.length);
183
- }
184
- });
185
- if (jobsToInsert.length > 0) {
186
- if (durableJobs.length === 0) {
187
- ctx.storage?.insertJobsBatch(jobsToInsert);
188
- }
189
- else {
190
- // Durable jobs bypass the write buffer (immediate disk write); the rest
191
- // still go through the batched buffer for throughput.
192
- const durableSet = new Set(durableJobs);
193
- const buffered = jobsToInsert.filter((j) => !durableSet.has(j));
194
- if (buffered.length > 0)
195
- ctx.storage?.insertJobsBatch(buffered);
196
- ctx.storage?.insertJobsBatch(durableJobs, true);
197
- }
198
- ctx.totalPushed.value += BigInt(jobsToInsert.length);
199
- throughputTracker.pushRate.increment(jobsToInsert.length);
200
- for (const job of jobsToInsert) {
201
- ctx.broadcast({
202
- eventType: 'pushed',
203
- queue: job.queue,
204
- jobId: job.id,
205
- timestamp: now,
206
- });
207
- }
208
- }
209
- if (jobsToInsert.length > 0 && inputs.length > 1) {
210
- ctx.dashboardEmit?.('batch:pushed', {
211
- queue,
212
- total: inputs.length,
213
- inserted: jobsToInsert.length,
214
- duplicates: inputs.length - jobsToInsert.length,
215
- });
216
- }
217
- latencyTracker.push.observe((Bun.nanoseconds() - startNs) / 1e6);
218
- return resultIds;
219
- }
@@ -0,0 +1,32 @@
1
+ import type { Job, JobInput } from '../../domain/types/job';
2
+ import type { Shard } from '../../domain/queue/shard';
3
+ import type { DurableAdmissionMetadata } from '../../infrastructure/persistence/sqlite';
4
+ import { type CustomIdResult } from './customId';
5
+ import type { PushContext } from './pushContext';
6
+ import { type PreparedJobInsertion } from './pushInsert';
7
+ export type AcceptedCustomId = Exclude<CustomIdResult, {
8
+ skip: true;
9
+ }>;
10
+ export interface PushTarget {
11
+ queue: string;
12
+ shard: Shard;
13
+ shardIdx: number;
14
+ }
15
+ interface PublishPreparedJobOptions {
16
+ job: Job;
17
+ input: JobInput;
18
+ target: PushTarget;
19
+ customId: AcceptedCustomId;
20
+ prepared: PreparedJobInsertion;
21
+ ctx: PushContext;
22
+ registerDedupKey?: boolean;
23
+ }
24
+ export declare function admissionMetadata(customId: AcceptedCustomId, prepared: PreparedJobInsertion): DurableAdmissionMetadata | undefined;
25
+ /** Publish only non-throwing RAM ownership after the storage admission commits. */
26
+ export declare function publishPreparedJob(options: PublishPreparedJobOptions): void;
27
+ /** Persist first whenever admission can fail, then expose the job in RAM. */
28
+ export declare function acceptStandardJob(job: Job, input: JobInput, target: PushTarget, customId: AcceptedCustomId, ctx: PushContext): {
29
+ storageHandled: boolean;
30
+ };
31
+ export declare function throwPushErrors(errors: unknown[], message: string): void;
32
+ export {};
@@ -0,0 +1,38 @@
1
+ import { commitCustomIdAdmission } from './customId';
2
+ import { insertPreparedJobToShard, prepareJobInsertion, } from './pushInsert';
3
+ export function admissionMetadata(customId, prepared) {
4
+ const retireGenerationId = customId.retirement ? customId.id : undefined;
5
+ if (!retireGenerationId && prepared.completionPins.length === 0)
6
+ return undefined;
7
+ return {
8
+ retireGenerationId,
9
+ completionPins: prepared.completionPins.length > 0 ? prepared.completionPins : undefined,
10
+ };
11
+ }
12
+ /** Publish only non-throwing RAM ownership after the storage admission commits. */
13
+ export function publishPreparedJob(options) {
14
+ const { job, input, target, customId, prepared, ctx, registerDedupKey = true } = options;
15
+ commitCustomIdAdmission(input, customId, ctx);
16
+ if (registerDedupKey && job.uniqueKey) {
17
+ target.shard.registerUniqueKeyWithTtl(target.queue, job.uniqueKey, job.id, job.deduplicationTtl ?? undefined);
18
+ }
19
+ insertPreparedJobToShard(job, target, ctx, prepared);
20
+ }
21
+ /** Persist first whenever admission can fail, then expose the job in RAM. */
22
+ export function acceptStandardJob(job, input, target, customId, ctx) {
23
+ const prepared = prepareJobInsertion(job, ctx);
24
+ const admission = admissionMetadata(customId, prepared);
25
+ const mustPersistBeforePublish = Boolean(ctx.storage && (input.durable || admission));
26
+ if (mustPersistBeforePublish) {
27
+ ctx.storage?.insertJob(job, input.durable, admission);
28
+ }
29
+ publishPreparedJob({ job, input, target, customId, prepared, ctx });
30
+ return { storageHandled: mustPersistBeforePublish };
31
+ }
32
+ export function throwPushErrors(errors, message) {
33
+ const present = errors.filter((error) => error !== undefined);
34
+ if (present.length === 1)
35
+ throw present[0];
36
+ if (present.length > 1)
37
+ throw new AggregateError(present, message);
38
+ }
@@ -0,0 +1,4 @@
1
+ import { type JobId, type JobInput } from '../../domain/types/job';
2
+ import type { PushContext } from './pushContext';
3
+ /** Push an ordered batch while preserving its accepted-prefix contract. */
4
+ export declare function pushJobBatch(queue: string, inputs: JobInput[], ctx: PushContext): Promise<JobId[]>;
@@ -0,0 +1,136 @@
1
+ import { createJob, normalizeJobPayload, } from '../../domain/types/job';
2
+ import { shardIndex } from '../../shared/hash';
3
+ import { releaseDependencyCompletionPins } from '../dependencyCompletions';
4
+ import { latencyTracker } from '../latencyTracker';
5
+ import { validateRepeatJobInput } from '../repeatJobs';
6
+ import { throughputTracker } from '../throughputTracker';
7
+ import { handleCustomId } from './customId';
8
+ import { acceptParentedJob, validateParentLinkInputs } from './parentLink';
9
+ import { isParentLinkInput } from './parentLinkInput';
10
+ import { acceptStandardJob, throwPushErrors } from './pushAdmission';
11
+ import { handleDeduplication, replaceActiveDedupJob, replacePendingDedupJob, } from './pushDeduplication';
12
+ import { withPushWriteLocks } from './pushLocks';
13
+ /** Push an ordered batch while preserving its accepted-prefix contract. */
14
+ export async function pushJobBatch(queue, inputs, ctx) {
15
+ for (const input of inputs) {
16
+ validateRepeatJobInput(input);
17
+ normalizeJobPayload(input);
18
+ }
19
+ const startNs = Bun.nanoseconds();
20
+ const now = Date.now();
21
+ const idx = shardIndex(queue);
22
+ const resultIds = [];
23
+ const releasedDependencies = [];
24
+ const acceptedJobs = [];
25
+ const jobsToInsert = [];
26
+ let batchError;
27
+ try {
28
+ await withPushWriteLocks(queue, inputs, ctx, (lockedShardIndexes) => {
29
+ const shard = ctx.shards[idx];
30
+ validateParentLinkInputs(inputs, ctx);
31
+ for (const input of inputs) {
32
+ const linkParent = isParentLinkInput(input);
33
+ const customIdResult = handleCustomId(input, ctx, lockedShardIndexes);
34
+ if (customIdResult.skip) {
35
+ resultIds.push('existingJob' in customIdResult
36
+ ? customIdResult.existingJob.id
37
+ : customIdResult.existingId);
38
+ continue;
39
+ }
40
+ const job = createJob(customIdResult.id, queue, input, now);
41
+ const dedupResult = handleDeduplication(job, input, queue, shard, ctx);
42
+ if (dedupResult.skip) {
43
+ resultIds.push(dedupResult.existingId);
44
+ continue;
45
+ }
46
+ const target = { queue, shard, shardIdx: idx };
47
+ let storageHandled = false;
48
+ if (linkParent) {
49
+ releasedDependencies.push(...acceptParentedJob({
50
+ job,
51
+ input,
52
+ target,
53
+ dedup: dedupResult,
54
+ customId: customIdResult,
55
+ ctx,
56
+ }));
57
+ const supersededIndex = jobsToInsert.findIndex(({ job: pending }) => pending.id === dedupResult.replacement?.job.id);
58
+ if (supersededIndex !== -1)
59
+ jobsToInsert.splice(supersededIndex, 1);
60
+ storageHandled = true;
61
+ }
62
+ else if (dedupResult.replacement) {
63
+ releasedDependencies.push(...replacePendingDedupJob(dedupResult.replacement, job, input, target, {
64
+ ctx,
65
+ customId: customIdResult,
66
+ }));
67
+ const supersededIndex = jobsToInsert.findIndex(({ job: pending }) => pending.id === dedupResult.replacement?.job.id);
68
+ if (supersededIndex !== -1)
69
+ jobsToInsert.splice(supersededIndex, 1);
70
+ storageHandled = true;
71
+ }
72
+ else if (dedupResult.activeOwnerId) {
73
+ replaceActiveDedupJob(dedupResult.activeOwnerId, job, input, target, {
74
+ ctx,
75
+ customId: customIdResult,
76
+ });
77
+ storageHandled = true;
78
+ }
79
+ else {
80
+ storageHandled = acceptStandardJob(job, input, target, customIdResult, ctx).storageHandled;
81
+ }
82
+ jobsToInsert.push({ job, durable: Boolean(input.durable), storageHandled });
83
+ acceptedJobs.push(job);
84
+ resultIds.push(job.id);
85
+ }
86
+ });
87
+ }
88
+ catch (error) {
89
+ batchError = error;
90
+ }
91
+ let cleanupError;
92
+ try {
93
+ releaseDependencyCompletionPins(releasedDependencies, ctx);
94
+ }
95
+ catch (error) {
96
+ cleanupError = error;
97
+ }
98
+ let persistenceError;
99
+ if (acceptedJobs.length > 0) {
100
+ const pendingPersistence = jobsToInsert.filter(({ storageHandled }) => !storageHandled);
101
+ const durableJobs = pendingPersistence.filter(({ durable }) => durable).map(({ job }) => job);
102
+ const bufferedJobs = pendingPersistence.filter(({ durable }) => !durable).map(({ job }) => job);
103
+ try {
104
+ if (bufferedJobs.length > 0)
105
+ ctx.storage?.insertJobsBatch(bufferedJobs);
106
+ if (durableJobs.length > 0)
107
+ ctx.storage?.insertJobsBatch(durableJobs, true);
108
+ }
109
+ catch (error) {
110
+ persistenceError = error;
111
+ }
112
+ ctx.totalPushed.value += BigInt(acceptedJobs.length);
113
+ throughputTracker.pushRate.increment(acceptedJobs.length);
114
+ for (const job of acceptedJobs) {
115
+ ctx.broadcast({
116
+ eventType: 'pushed',
117
+ queue: job.queue,
118
+ jobId: job.id,
119
+ timestamp: now,
120
+ });
121
+ }
122
+ }
123
+ if (jobsToInsert.length > 0)
124
+ ctx.shards[idx].notifyBatch(queue, jobsToInsert.length);
125
+ if (!batchError && !persistenceError && acceptedJobs.length > 0 && inputs.length > 1) {
126
+ ctx.dashboardEmit?.('batch:pushed', {
127
+ queue,
128
+ total: inputs.length,
129
+ inserted: acceptedJobs.length,
130
+ duplicates: inputs.length - acceptedJobs.length,
131
+ });
132
+ }
133
+ latencyTracker.push.observe((Bun.nanoseconds() - startNs) / 1e6);
134
+ throwPushErrors([batchError, cleanupError, persistenceError], 'Batch push failed while finalizing its accepted prefix');
135
+ return resultIds;
136
+ }
@@ -0,0 +1,39 @@
1
+ import type { Shard } from '../../domain/queue/shard';
2
+ import type { Job, JobId } from '../../domain/types/job';
3
+ import type { JobLocation } from '../../domain/types/queue';
4
+ import { type EventType } from '../../domain/types/queue';
5
+ import type { SqliteStorage } from '../../infrastructure/persistence/sqlite';
6
+ import type { RWLock } from '../../shared/lock';
7
+ import type { MapLike, SetLike } from '../../shared/lru';
8
+ import type { DependencyCompletionTracker } from '../dependencyCompletions';
9
+ import type { DependencyResultTracker } from '../dependencyResultTracker';
10
+ import type { RetiredTimeoutGeneration } from '../types/background';
11
+ /** Shared mutable state required by queue and flow insertion operations. */
12
+ export interface PushContext {
13
+ storage: SqliteStorage | null;
14
+ shards: Shard[];
15
+ shardLocks: RWLock[];
16
+ customIdLock: RWLock;
17
+ completedJobs: SetLike<JobId>;
18
+ completedJobsData: MapLike<JobId, Job>;
19
+ depCompletions?: DependencyCompletionTracker;
20
+ maxDependencyCompletions: number;
21
+ timedOutJobs?: MapLike<JobId, RetiredTimeoutGeneration>;
22
+ retiredTimeoutLeaseTokens?: MapLike<string, RetiredTimeoutGeneration>;
23
+ retiredCronLeaseTokens?: MapLike<JobId, string>;
24
+ jobResults: MapLike<JobId, unknown>;
25
+ dependencyResults: DependencyResultTracker;
26
+ customIdMap: MapLike<string, JobId>;
27
+ jobIndex: Map<JobId, JobLocation>;
28
+ totalPushed: {
29
+ value: bigint;
30
+ };
31
+ broadcast: (event: {
32
+ eventType: EventType;
33
+ queue: string;
34
+ jobId: JobId;
35
+ timestamp: number;
36
+ }) => void;
37
+ dashboardEmit?: (event: string, data: Record<string, unknown>) => void;
38
+ registerQueueName?: (queue: string) => void;
39
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,42 @@
1
+ import type { Shard } from '../../domain/queue/shard';
2
+ import type { Job, JobId, JobInput } from '../../domain/types/job';
3
+ import type { DurableAdmissionMetadata } from '../../infrastructure/persistence/sqlite';
4
+ import { type AcceptedCustomId } from './pushAdmission';
5
+ import type { PushContext } from './push';
6
+ type PendingLocation = 'queue' | 'waiting-deps' | 'waiting-children';
7
+ export interface DedupReplacement {
8
+ job: Job;
9
+ location: PendingLocation;
10
+ }
11
+ export interface DedupCommitOptions {
12
+ readonly ctx: PushContext;
13
+ readonly customId: AcceptedCustomId;
14
+ readonly persist?: (admission?: DurableAdmissionMetadata) => void;
15
+ }
16
+ export type DedupResult = {
17
+ skip: true;
18
+ existingId: JobId;
19
+ } | {
20
+ skip: false;
21
+ replacement?: DedupReplacement;
22
+ activeOwnerId?: JobId;
23
+ };
24
+ /** Inspect dedup state while deferring destructive replacement mutations. */
25
+ export declare function handleDeduplication(job: Job, input: JobInput, queue: string, shard: Shard, ctx: PushContext): DedupResult;
26
+ /** Commit the RAM half of a replacement after persistence has succeeded. */
27
+ export declare function commitDedupReplacement(replacement: DedupReplacement, newJob: Job, queue: string, shard: Shard, ctx: PushContext): JobId[];
28
+ /** Defensive cleanup for callers that may have pre-published custom-ID ownership. */
29
+ export declare function rollbackIncomingCustomId(job: Job, ctx: PushContext): void;
30
+ /** Persist, detach, and insert a replacement without exposing a half-transition. */
31
+ export declare function replacePendingDedupJob(replacement: DedupReplacement, newJob: Job, input: JobInput, target: {
32
+ queue: string;
33
+ shard: Shard;
34
+ shardIdx: number;
35
+ }, options: DedupCommitOptions): JobId[];
36
+ /** Persist and publish a successor while leaving its active predecessor live. */
37
+ export declare function replaceActiveDedupJob(activeOwnerId: JobId, newJob: Job, input: JobInput, target: {
38
+ queue: string;
39
+ shard: Shard;
40
+ shardIdx: number;
41
+ }, options: DedupCommitOptions): void;
42
+ export {};