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
@@ -1,121 +1,4 @@
1
- /**
2
- * SQLite Batch Operations
3
- * High-performance batch insert with prepared statement caching
4
- */
5
- import type { Database } from 'bun:sqlite';
6
- import type { Job } from '../../domain/types/job';
7
- /** Outcome of a batch insert after isolating per-row failures. */
8
- export interface BatchInsertResult {
9
- /** Jobs that hit a transient (non-constraint) error — caller should retry. */
10
- transient: Job[];
11
- /** Jobs rejected by a permanent constraint (e.g. duplicate id) — drop, never retry. */
12
- conflicts: Job[];
13
- /** The originating error from the fast-path failure, for logging. */
14
- error?: Error;
15
- }
16
- /** Batch insert manager with prepared statement caching */
17
- export declare class BatchInsertManager {
18
- private readonly db;
19
- private readonly cache;
20
- constructor(db: Database);
21
- /**
22
- * Insert a batch of jobs using a single multi-row INSERT (50-100x speedup).
23
- * On the common path every row succeeds and an empty result is returned.
24
- *
25
- * If the atomic batch fails (e.g. a single duplicate `jobs.id`), the rows are
26
- * re-inserted ONE AT A TIME so a single bad row can no longer drop the rest:
27
- * valid jobs persist, constraint violations are isolated as `conflicts` (drop,
28
- * never retry — they would poison every future flush), and any transient
29
- * failures are returned so the caller can retry just those. Never throws.
30
- */
31
- insertJobsBatch(jobs: Job[]): BatchInsertResult;
32
- /** Fallback path: insert each job independently, isolating per-row failures. */
33
- private insertRowByRow;
34
- /** Get or create cached prepared statement for batch insert */
35
- private getBatchInsertStmt;
36
- /** Insert a chunk of jobs with single multi-row INSERT */
37
- private insertJobsChunk;
38
- }
39
- /** Extended error callback with retry information */
40
- export type WriteBufferErrorCallback = (err: Error, jobCount: number, retryInfo?: {
41
- retryCount: number;
42
- nextBackoffMs: number;
43
- maxRetries: number;
44
- }) => void;
45
- /** Callback when jobs are moved to dead letter after max retries */
46
- export type CriticalErrorCallback = (jobs: Job[], lastError: Error, totalAttempts: number) => void;
47
- /** Write buffer for batching inserts with double-buffering for atomic swap */
48
- export declare class WriteBuffer {
49
- /** Active buffer for new jobs */
50
- private activeBuffer;
51
- /** Flush buffer being written to disk */
52
- private flushBuffer;
53
- /** Lock to prevent concurrent flushes */
54
- private flushing;
55
- /** Flag to prevent operations after stop */
56
- private stopped;
57
- private timer;
58
- private readonly batchManager;
59
- private readonly bufferSize;
60
- private readonly onError;
61
- private readonly onCriticalError?;
62
- /** Retry state for exponential backoff */
63
- private retryCount;
64
- private currentBackoffMs;
65
- private readonly initialBackoffMs;
66
- private readonly maxBackoffMs;
67
- private readonly maxRetries;
68
- private lastError;
69
- private backoffTimer;
70
- constructor(batchManager: BatchInsertManager, bufferSize: number, flushIntervalMs: number, onError: WriteBufferErrorCallback, onCriticalError?: CriticalErrorCallback);
71
- /** Add job to buffer */
72
- add(job: Job): void;
73
- /** Add multiple jobs to buffer */
74
- addBatch(jobs: Job[]): void;
75
- /**
76
- * Flush buffer to disk using double-buffering. Returns number of jobs persisted.
77
- *
78
- * Per-row isolation (see BatchInsertManager.insertJobsBatch): valid jobs are
79
- * persisted even if a sibling row violates a constraint. Constraint conflicts
80
- * (e.g. duplicate id) are dropped+reported and NEVER re-buffered — re-buffering
81
- * them would poison every future flush and silently drop unrelated valid jobs
82
- * (the #92-class data-loss bug). Transient failures are re-buffered and retried
83
- * with exponential backoff, exactly as before.
84
- */
85
- flush(): number;
86
- /** Schedule a retry with exponential backoff */
87
- private scheduleBackoffRetry;
88
- /** Get pending job count (includes both buffers) */
89
- get pendingCount(): number;
90
- /**
91
- * Remove any pending buffered inserts for a given jobId.
92
- * Prevents a buffered insert from flushing to disk after an immediate deleteJob,
93
- * which would leave an orphan row with stale state.
94
- */
95
- removePending(jobId: string): void;
96
- /**
97
- * Check whether a job is still sitting in the WriteBuffer (not yet persisted).
98
- * Used by state-transition writes (markActive/Completed/Failed) to decide
99
- * whether they need to flush the buffer first — otherwise their UPDATE
100
- * would silently match 0 rows and the state change would be lost when the
101
- * buffered INSERT eventually writes with the original state.
102
- */
103
- hasPending(jobId: string): boolean;
104
- /** Stop auto-flush timer and flush pending jobs */
105
- stop(): void;
106
- /**
107
- * Graceful shutdown with timeout.
108
- * Attempts to flush pending jobs within the specified timeout.
109
- * @param timeoutMs Maximum time to wait for flush (default: 5000ms)
110
- * @returns Promise resolving to number of jobs flushed, or -1 if timed out
111
- */
112
- stopGracefully(timeoutMs?: number): Promise<number>;
113
- /** Report any remaining buffered jobs as lost via onCriticalError */
114
- private reportLostJobs;
115
- /** Get current retry state (for monitoring) */
116
- getRetryState(): {
117
- retryCount: number;
118
- currentBackoffMs: number;
119
- lastError: Error | null;
120
- };
121
- }
1
+ /** Stable batch-persistence import surface. */
2
+ export { BatchInsertManager } from './batchInsert';
3
+ export { WriteBuffer } from './writeBuffer';
4
+ export type { BatchInsertResult, CriticalErrorCallback, WriteBufferErrorCallback, } from './types/batch';
@@ -1,422 +1,3 @@
1
- /**
2
- * SQLite Batch Operations
3
- * High-performance batch insert with prepared statement caching
4
- */
5
- import { pack, persistedInitialState, persistedStallCount } from './sqliteSerializer';
6
- const COLS_PER_ROW = 29;
7
- // SQLite has a limit of ~999 variables, so batch in chunks
8
- const MAX_ROWS_PER_INSERT = Math.floor(999 / COLS_PER_ROW);
9
- /**
10
- * A constraint violation (e.g. a duplicate `jobs.id` PRIMARY KEY) is PERMANENT
11
- * for that row — retrying never succeeds. It must be isolated from the rest of
12
- * the batch, otherwise one bad row poisons the whole atomic flush and drops
13
- * unrelated valid jobs (data loss, #92-class). Everything else (disk I/O, busy,
14
- * full) is treated as transient and retried.
15
- */
16
- function isConstraintError(err) {
17
- const code = err.code ?? '';
18
- return code.startsWith('SQLITE_CONSTRAINT') || /constraint failed/i.test(err.message);
19
- }
20
- /** Batch insert manager with prepared statement caching */
21
- export class BatchInsertManager {
22
- db;
23
- cache = new Map();
24
- constructor(db) {
25
- this.db = db;
26
- }
27
- /**
28
- * Insert a batch of jobs using a single multi-row INSERT (50-100x speedup).
29
- * On the common path every row succeeds and an empty result is returned.
30
- *
31
- * If the atomic batch fails (e.g. a single duplicate `jobs.id`), the rows are
32
- * re-inserted ONE AT A TIME so a single bad row can no longer drop the rest:
33
- * valid jobs persist, constraint violations are isolated as `conflicts` (drop,
34
- * never retry — they would poison every future flush), and any transient
35
- * failures are returned so the caller can retry just those. Never throws.
36
- */
37
- insertJobsBatch(jobs) {
38
- if (jobs.length === 0)
39
- return { transient: [], conflicts: [] };
40
- const now = Date.now();
41
- try {
42
- this.db.transaction(() => {
43
- for (let offset = 0; offset < jobs.length; offset += MAX_ROWS_PER_INSERT) {
44
- const chunk = jobs.slice(offset, offset + MAX_ROWS_PER_INSERT);
45
- this.insertJobsChunk(chunk, now);
46
- }
47
- })();
48
- return { transient: [], conflicts: [] };
49
- }
50
- catch (err) {
51
- const batchError = err instanceof Error ? err : new Error(String(err));
52
- return this.insertRowByRow(jobs, now, batchError);
53
- }
54
- }
55
- /** Fallback path: insert each job independently, isolating per-row failures. */
56
- insertRowByRow(jobs, now, batchError) {
57
- const transient = [];
58
- const conflicts = [];
59
- for (const job of jobs) {
60
- try {
61
- // Single-row INSERT, auto-committed: succeeds/fails independently.
62
- this.insertJobsChunk([job], now);
63
- }
64
- catch (e) {
65
- const err = e instanceof Error ? e : new Error(String(e));
66
- if (isConstraintError(err))
67
- conflicts.push(job);
68
- else
69
- transient.push(job);
70
- }
71
- }
72
- return { transient, conflicts, error: batchError };
73
- }
74
- /** Get or create cached prepared statement for batch insert */
75
- getBatchInsertStmt(size) {
76
- let stmt = this.cache.get(size);
77
- if (!stmt) {
78
- const rowPlaceholder = '(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
79
- const placeholders = Array(size).fill(rowPlaceholder).join(', ');
80
- // ON CONFLICT(id) DO UPDATE (upsert): a colliding id overwrites in place instead
81
- // of failing the whole flush. Without it, one stale ORPHAN row (left when
82
- // obliterate()/a flush raced an in-flight insert) makes the batch throw UNIQUE,
83
- // and reportLostJobs() then drops EVERY innocent job batched in the same flush
84
- // window. Per-row conflict resolution isolates the collision; new ids stay a
85
- // plain INSERT (zero extra cost). jobs has no triggers/FKs → no cascade.
86
- const sql = `INSERT INTO jobs (
87
- id, queue, data, priority, created_at, run_at, attempts, max_attempts,
88
- backoff, ttl, timeout, unique_key, custom_id, depends_on, parent_id,
89
- children_ids, tags, state, lifo, group_id, remove_on_complete, remove_on_fail,
90
- fail_parent_on_failure, remove_dependency_on_failure,
91
- continue_parent_on_failure, ignore_dependency_on_failure,
92
- stall_timeout, stall_count, timeline
93
- ) VALUES ${placeholders}
94
- ON CONFLICT(id) DO UPDATE SET
95
- queue=excluded.queue, data=excluded.data, priority=excluded.priority,
96
- created_at=excluded.created_at, run_at=excluded.run_at, attempts=excluded.attempts,
97
- max_attempts=excluded.max_attempts, backoff=excluded.backoff, ttl=excluded.ttl,
98
- timeout=excluded.timeout, unique_key=excluded.unique_key, custom_id=excluded.custom_id,
99
- depends_on=excluded.depends_on, parent_id=excluded.parent_id, children_ids=excluded.children_ids,
100
- tags=excluded.tags, state=excluded.state, lifo=excluded.lifo, group_id=excluded.group_id,
101
- remove_on_complete=excluded.remove_on_complete, remove_on_fail=excluded.remove_on_fail,
102
- fail_parent_on_failure=excluded.fail_parent_on_failure,
103
- remove_dependency_on_failure=excluded.remove_dependency_on_failure,
104
- continue_parent_on_failure=excluded.continue_parent_on_failure,
105
- ignore_dependency_on_failure=excluded.ignore_dependency_on_failure,
106
- stall_timeout=excluded.stall_timeout, stall_count=excluded.stall_count,
107
- timeline=excluded.timeline,
108
- started_at=excluded.started_at, completed_at=excluded.completed_at,
109
- progress=excluded.progress, progress_msg=excluded.progress_msg,
110
- last_heartbeat=excluded.last_heartbeat, stacktrace=excluded.stacktrace`;
111
- stmt = this.db.prepare(sql);
112
- // Cache statements for common batch sizes (1-100)
113
- if (size <= 100) {
114
- this.cache.set(size, stmt);
115
- }
116
- }
117
- return stmt;
118
- }
119
- /** Insert a chunk of jobs with single multi-row INSERT */
120
- insertJobsChunk(jobs, now) {
121
- const stmt = this.getBatchInsertStmt(jobs.length);
122
- // Flatten all values
123
- const values = [];
124
- for (const job of jobs) {
125
- values.push(job.id, job.queue, pack(job.data), job.priority, job.createdAt, job.runAt, job.attempts, job.maxAttempts, job.backoff, job.ttl, job.timeout, job.uniqueKey, job.customId, job.dependsOn.length > 0 ? pack(job.dependsOn) : null, job.parentId, job.childrenIds.length > 0 ? pack(job.childrenIds) : null, job.tags.length > 0 ? pack(job.tags) : null, persistedInitialState(job, now), job.lifo ? 1 : 0, job.groupId, job.removeOnComplete ? 1 : 0, job.removeOnFail ? 1 : 0, job.failParentOnFailure ? 1 : 0, job.removeDependencyOnFailure ? 1 : 0, job.continueParentOnFailure ? 1 : 0, job.ignoreDependencyOnFailure ? 1 : 0, job.stallTimeout, persistedStallCount(job), job.timeline.length > 0 ? pack(job.timeline) : null);
126
- }
127
- stmt.run(...values);
128
- }
129
- }
130
- /** Write buffer for batching inserts with double-buffering for atomic swap */
131
- export class WriteBuffer {
132
- /** Active buffer for new jobs */
133
- activeBuffer = [];
134
- /** Flush buffer being written to disk */
135
- flushBuffer = [];
136
- /** Lock to prevent concurrent flushes */
137
- flushing = false;
138
- /** Flag to prevent operations after stop */
139
- stopped = false;
140
- timer = null;
141
- batchManager;
142
- bufferSize;
143
- onError;
144
- onCriticalError;
145
- /** Retry state for exponential backoff */
146
- retryCount = 0;
147
- currentBackoffMs = 100;
148
- initialBackoffMs = 100;
149
- maxBackoffMs = 30000;
150
- maxRetries = 10;
151
- lastError = null;
152
- backoffTimer = null;
153
- constructor(batchManager, bufferSize, flushIntervalMs, onError, onCriticalError) {
154
- this.batchManager = batchManager;
155
- this.bufferSize = bufferSize;
156
- this.onError = onError;
157
- this.onCriticalError = onCriticalError;
158
- // Auto-flush timer
159
- this.timer = setInterval(() => {
160
- // Skip if stopped or in backoff mode
161
- if (this.stopped || this.backoffTimer)
162
- return;
163
- try {
164
- this.flush();
165
- }
166
- catch {
167
- // Error already handled in flush
168
- }
169
- }, flushIntervalMs);
170
- }
171
- /** Add job to buffer */
172
- add(job) {
173
- this.activeBuffer.push(job);
174
- if (this.activeBuffer.length >= this.bufferSize) {
175
- this.flush();
176
- }
177
- }
178
- /** Add multiple jobs to buffer */
179
- addBatch(jobs) {
180
- for (const job of jobs) {
181
- this.activeBuffer.push(job);
182
- }
183
- if (this.activeBuffer.length >= this.bufferSize) {
184
- this.flush();
185
- }
186
- }
187
- /**
188
- * Flush buffer to disk using double-buffering. Returns number of jobs persisted.
189
- *
190
- * Per-row isolation (see BatchInsertManager.insertJobsBatch): valid jobs are
191
- * persisted even if a sibling row violates a constraint. Constraint conflicts
192
- * (e.g. duplicate id) are dropped+reported and NEVER re-buffered — re-buffering
193
- * them would poison every future flush and silently drop unrelated valid jobs
194
- * (the #92-class data-loss bug). Transient failures are re-buffered and retried
195
- * with exponential backoff, exactly as before.
196
- */
197
- flush() {
198
- // Prevent flush after stop or concurrent flushes
199
- if (this.stopped || this.flushing)
200
- return 0;
201
- if (this.activeBuffer.length === 0)
202
- return 0;
203
- this.flushing = true;
204
- // Atomic swap: move active to flush buffer
205
- this.flushBuffer = this.activeBuffer;
206
- this.activeBuffer = [];
207
- const jobCount = this.flushBuffer.length;
208
- try {
209
- // BatchInsertManager.insertJobsBatch isolates per-row failures and never
210
- // throws. Stay defensive: a manager that throws (or returns nothing) is
211
- // treated as a transient failure of the whole batch, preserving the
212
- // re-buffer/retry/critical-loss semantics.
213
- let result;
214
- try {
215
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- defensive against a non-conforming batch manager (e.g. a test double returning undefined)
216
- result = this.batchManager.insertJobsBatch(this.flushBuffer) ?? {
217
- transient: [],
218
- conflicts: [],
219
- };
220
- }
221
- catch (err) {
222
- result = {
223
- transient: this.flushBuffer,
224
- conflicts: [],
225
- error: err instanceof Error ? err : new Error(String(err)),
226
- };
227
- }
228
- const { transient, conflicts, error } = result;
229
- this.flushBuffer = [];
230
- // Permanent constraint conflicts: drop + report once, never retry.
231
- if (conflicts.length > 0) {
232
- this.onError(error ?? new Error('Constraint violation'), conflicts.length);
233
- }
234
- // Transient failures: re-buffer just those and retry with backoff.
235
- if (transient.length > 0) {
236
- const error2 = error ?? new Error('Write buffer flush failed');
237
- this.lastError = error2;
238
- this.retryCount++;
239
- // Prepend failed jobs back to active buffer (failed first, then new).
240
- this.activeBuffer = transient.concat(this.activeBuffer);
241
- if (this.retryCount >= this.maxRetries) {
242
- const lostJobs = [...this.activeBuffer];
243
- this.activeBuffer = [];
244
- if (this.onCriticalError)
245
- this.onCriticalError(lostJobs, error2, this.retryCount);
246
- this.onError(error2, lostJobs.length, {
247
- retryCount: this.retryCount,
248
- nextBackoffMs: 0,
249
- maxRetries: this.maxRetries,
250
- });
251
- this.retryCount = 0;
252
- this.currentBackoffMs = this.initialBackoffMs;
253
- this.lastError = null;
254
- }
255
- else {
256
- const nextBackoffMs = Math.min(this.currentBackoffMs * 2, this.maxBackoffMs);
257
- this.onError(error2, transient.length, {
258
- retryCount: this.retryCount,
259
- nextBackoffMs,
260
- maxRetries: this.maxRetries,
261
- });
262
- this.scheduleBackoffRetry();
263
- }
264
- return jobCount - transient.length - conflicts.length;
265
- }
266
- // Success (or success-modulo-dropped-conflicts): reset retry state.
267
- this.retryCount = 0;
268
- this.currentBackoffMs = this.initialBackoffMs;
269
- this.lastError = null;
270
- return jobCount - conflicts.length;
271
- }
272
- finally {
273
- this.flushing = false;
274
- }
275
- }
276
- /** Schedule a retry with exponential backoff */
277
- scheduleBackoffRetry() {
278
- // Clear any existing backoff timer
279
- if (this.backoffTimer) {
280
- clearTimeout(this.backoffTimer);
281
- }
282
- // Update backoff for next attempt
283
- this.currentBackoffMs = Math.min(this.currentBackoffMs * 2, this.maxBackoffMs);
284
- this.backoffTimer = setTimeout(() => {
285
- this.backoffTimer = null;
286
- try {
287
- this.flush();
288
- }
289
- catch {
290
- // Error already handled in flush
291
- }
292
- }, this.currentBackoffMs);
293
- }
294
- /** Get pending job count (includes both buffers) */
295
- get pendingCount() {
296
- return this.activeBuffer.length + this.flushBuffer.length;
297
- }
298
- /**
299
- * Remove any pending buffered inserts for a given jobId.
300
- * Prevents a buffered insert from flushing to disk after an immediate deleteJob,
301
- * which would leave an orphan row with stale state.
302
- */
303
- removePending(jobId) {
304
- const i = this.activeBuffer.findIndex((j) => j.id === jobId);
305
- if (i !== -1)
306
- this.activeBuffer.splice(i, 1);
307
- const j = this.flushBuffer.findIndex((j) => j.id === jobId);
308
- if (j !== -1)
309
- this.flushBuffer.splice(j, 1);
310
- }
311
- /**
312
- * Check whether a job is still sitting in the WriteBuffer (not yet persisted).
313
- * Used by state-transition writes (markActive/Completed/Failed) to decide
314
- * whether they need to flush the buffer first — otherwise their UPDATE
315
- * would silently match 0 rows and the state change would be lost when the
316
- * buffered INSERT eventually writes with the original state.
317
- */
318
- hasPending(jobId) {
319
- for (const j of this.activeBuffer)
320
- if (j.id === jobId)
321
- return true;
322
- for (const j of this.flushBuffer)
323
- if (j.id === jobId)
324
- return true;
325
- return false;
326
- }
327
- /** Stop auto-flush timer and flush pending jobs */
328
- stop() {
329
- // Clear auto-flush timer
330
- if (this.timer) {
331
- clearInterval(this.timer);
332
- this.timer = null;
333
- }
334
- // Flush any pending jobs before stopping
335
- if (this.pendingCount > 0) {
336
- try {
337
- this.flush();
338
- }
339
- catch {
340
- // Flush failed during shutdown - jobs will be reported as lost below
341
- }
342
- }
343
- // Mark as stopped to prevent any future flush attempts
344
- this.stopped = true;
345
- // Clear any backoff timer (pre-existing or scheduled by failed flush)
346
- if (this.backoffTimer) {
347
- clearTimeout(this.backoffTimer);
348
- this.backoffTimer = null;
349
- }
350
- // Report any jobs still stuck in buffers as lost
351
- this.reportLostJobs();
352
- }
353
- /**
354
- * Graceful shutdown with timeout.
355
- * Attempts to flush pending jobs within the specified timeout.
356
- * @param timeoutMs Maximum time to wait for flush (default: 5000ms)
357
- * @returns Promise resolving to number of jobs flushed, or -1 if timed out
358
- */
359
- async stopGracefully(timeoutMs = 5000) {
360
- // Clear backoff timer
361
- if (this.backoffTimer) {
362
- clearTimeout(this.backoffTimer);
363
- this.backoffTimer = null;
364
- }
365
- // Clear auto-flush timer
366
- if (this.timer) {
367
- clearInterval(this.timer);
368
- this.timer = null;
369
- }
370
- const pending = this.pendingCount;
371
- if (pending === 0) {
372
- this.stopped = true;
373
- return 0;
374
- }
375
- // Try to flush with timeout
376
- return new Promise((resolve) => {
377
- const timeout = setTimeout(() => {
378
- this.stopped = true;
379
- this.reportLostJobs();
380
- resolve(-1); // Timed out
381
- }, timeoutMs);
382
- try {
383
- const flushed = this.flush();
384
- clearTimeout(timeout);
385
- this.stopped = true;
386
- // flush() no longer throws on transient failure (it re-buffers); report
387
- // anything that could not be persisted so it isn't silently lost.
388
- if (this.pendingCount > 0)
389
- this.reportLostJobs();
390
- resolve(flushed);
391
- }
392
- catch {
393
- // Flush failed - clear any backoff timer that flush() scheduled
394
- if (this.backoffTimer) {
395
- clearTimeout(this.backoffTimer);
396
- this.backoffTimer = null;
397
- }
398
- clearTimeout(timeout);
399
- this.stopped = true;
400
- this.reportLostJobs();
401
- resolve(0);
402
- }
403
- });
404
- }
405
- /** Report any remaining buffered jobs as lost via onCriticalError */
406
- reportLostJobs() {
407
- const remaining = this.activeBuffer.concat(this.flushBuffer);
408
- if (remaining.length > 0 && this.onCriticalError) {
409
- this.onCriticalError(remaining, this.lastError ?? new Error('Flush failed during shutdown'), this.retryCount);
410
- this.activeBuffer = [];
411
- this.flushBuffer = [];
412
- }
413
- }
414
- /** Get current retry state (for monitoring) */
415
- getRetryState() {
416
- return {
417
- retryCount: this.retryCount,
418
- currentBackoffMs: this.currentBackoffMs,
419
- lastError: this.lastError,
420
- };
421
- }
422
- }
1
+ /** Stable batch-persistence import surface. */
2
+ export { BatchInsertManager } from './batchInsert';
3
+ export { WriteBuffer } from './writeBuffer';
@@ -4,12 +4,17 @@
4
4
  * Uses msgpackr for 2-3x faster serialization
5
5
  */
6
6
  import { type Job } from '../../domain/types/job';
7
- import type { DlqEntry } from '../../domain/types/dlq';
7
+ import { type DlqEntry } from '../../domain/types/dlq';
8
8
  import type { DbJob } from './statements';
9
9
  /** Encode data to MessagePack buffer */
10
10
  export declare function pack(data: unknown): Uint8Array;
11
11
  /** Decode MessagePack buffer to data */
12
12
  export declare function unpack<T>(buffer: Uint8Array | null, fallback: T, context: string): T;
13
+ /** Decode a modern named payload or a pre-v31 name-in-data envelope. */
14
+ export declare function decodeStoredNamedPayload(name: string | null | undefined, buffer: Uint8Array, context: string): {
15
+ name: string;
16
+ data: unknown;
17
+ };
13
18
  /**
14
19
  * Normalize jobs constructed by pre-stallCount integrations at the persistence
15
20
  * boundary. The database keeps its NOT NULL invariant while an omitted legacy
@@ -4,6 +4,9 @@
4
4
  * Uses msgpackr for 2-3x faster serialization
5
5
  */
6
6
  import { jobId } from '../../domain/types/job';
7
+ import { setDlqRetryState } from '../../domain/types/dlq';
8
+ import { normalizeLegacyJobPayload } from '../../domain/job/payload';
9
+ import { decodeJobOptions } from './jobOptionsBlob';
7
10
  import { storageLog } from '../../shared/logger';
8
11
  import { decodeMessagePack as msgpackDecode, encodeMessagePack as msgpackEncode, } from '../../shared/msgpack';
9
12
  /** Encode data to MessagePack buffer */
@@ -22,6 +25,14 @@ export function unpack(buffer, fallback, context) {
22
25
  return fallback;
23
26
  }
24
27
  }
28
+ /** Decode a modern named payload or a pre-v31 name-in-data envelope. */
29
+ export function decodeStoredNamedPayload(name, buffer, context) {
30
+ const data = unpack(buffer, {}, context);
31
+ if (name !== null && name !== undefined)
32
+ return { name, data };
33
+ const legacy = normalizeLegacyJobPayload({ data });
34
+ return { name: legacy.name, data: legacy.data };
35
+ }
25
36
  /**
26
37
  * Normalize jobs constructed by pre-stallCount integrations at the persistence
27
38
  * boundary. The database keeps its NOT NULL invariant while an omitted legacy
@@ -88,6 +99,7 @@ function decodeDependsOn(buffer, context) {
88
99
  /** Convert database row to Job object */
89
100
  export function rowToJob(row) {
90
101
  const jobContext = `rowToJob:${row.id}`;
102
+ const payload = decodeStoredNamedPayload(row.name, row.data, `${jobContext}:data`);
91
103
  // A corrupt depends_on blob must NOT be silently swallowed into [] (which the
92
104
  // recovery path treats as "ready, no deps" -> out-of-order execution).
93
105
  // decodeDependsOn() surfaces the corruption via a `corrupt` flag; we then
@@ -99,10 +111,12 @@ export function rowToJob(row) {
99
111
  ? unpack(row.children_ids, [], `${jobContext}:childrenIds`)
100
112
  : [];
101
113
  const tags = row.tags ? unpack(row.tags, [], `${jobContext}:tags`) : [];
114
+ const extended = decodeJobOptions(row.extended_options, `${jobContext}:extendedOptions`);
102
115
  const job = {
103
116
  id: jobId(row.id),
104
117
  queue: row.queue,
105
- data: unpack(row.data, {}, `${jobContext}:data`),
118
+ name: payload.name,
119
+ data: payload.data,
106
120
  priority: row.priority,
107
121
  createdAt: row.created_at,
108
122
  runAt: row.run_at,
@@ -111,7 +125,7 @@ export function rowToJob(row) {
111
125
  attempts: row.attempts,
112
126
  maxAttempts: row.max_attempts,
113
127
  backoff: row.backoff,
114
- backoffConfig: null, // BullMQ v5: not persisted in DB, use default
128
+ backoffConfig: extended.backoffConfig,
115
129
  ttl: row.ttl,
116
130
  timeout: row.timeout,
117
131
  uniqueKey: row.unique_key,
@@ -127,23 +141,24 @@ export function rowToJob(row) {
127
141
  progressMessage: row.progress_msg,
128
142
  removeOnComplete: row.remove_on_complete === 1,
129
143
  removeOnFail: row.remove_on_fail === 1,
130
- repeat: null,
144
+ repeat: extended.repeat,
131
145
  lastHeartbeat: row.last_heartbeat ?? row.created_at,
132
146
  stallTimeout: row.stall_timeout,
133
147
  stallCount: row.stall_count ?? 0,
134
148
  // BullMQ v5 additional fields
135
- stackTraceLimit: 10,
136
- keepLogs: null,
137
- sizeLimit: null,
149
+ stackTraceLimit: extended.stackTraceLimit,
150
+ keepLogs: extended.keepLogs,
151
+ sizeLimit: extended.sizeLimit,
138
152
  failParentOnFailure: row.fail_parent_on_failure === 1,
139
153
  removeDependencyOnFailure: row.remove_dependency_on_failure === 1,
140
154
  continueParentOnFailure: row.continue_parent_on_failure === 1,
141
155
  ignoreDependencyOnFailure: row.ignore_dependency_on_failure === 1,
142
- deduplicationTtl: null,
143
- deduplicationExtend: false,
144
- deduplicationReplace: false,
145
- debounceId: null,
146
- debounceTtl: null,
156
+ deduplicationTtl: extended.deduplicationTtl,
157
+ deduplicationExtend: extended.deduplicationExtend,
158
+ deduplicationReplace: extended.deduplicationReplace,
159
+ debounceId: extended.debounceId,
160
+ debounceTtl: extended.debounceTtl,
161
+ durable: extended.durable,
147
162
  timeline: row.timeline
148
163
  ? unpack(row.timeline, [], `${jobContext}:timeline`)
149
164
  : [],
@@ -151,6 +166,10 @@ export function rowToJob(row) {
151
166
  ? unpack(row.stacktrace, null, `${jobContext}:stacktrace`)
152
167
  : null,
153
168
  };
169
+ const dlqRetryState = row.dlq_retry_state
170
+ ? unpack(row.dlq_retry_state, null, `${jobContext}:dlqRetryState`)
171
+ : null;
172
+ setDlqRetryState(job, dlqRetryState);
154
173
  Object.defineProperty(job, PERSISTED_JOB_STATE, {
155
174
  value: row.state,
156
175
  enumerable: false,
@@ -183,10 +202,13 @@ function brandId(id) {
183
202
  }
184
203
  /** Reconstruct DlqEntry from MessagePack-decoded data */
185
204
  export function reconstructDlqEntry(entry) {
205
+ const payload = normalizeLegacyJobPayload(entry.job);
186
206
  return {
187
207
  ...entry,
188
208
  job: {
189
209
  ...entry.job,
210
+ name: payload.name,
211
+ data: payload.data,
190
212
  id: brandId(entry.job.id),
191
213
  dependsOn: entry.job.dependsOn.map((id) => brandId(id)),
192
214
  parentId: entry.job.parentId !== null ? brandId(entry.job.parentId) : null,