@graphrefly/ts 0.0.0 → 0.0.2

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 (405) hide show
  1. package/README.md +135 -0
  2. package/dist/actions-types-CSC3NMDl.d.ts +657 -0
  3. package/dist/actions-types-wl9Mgkmr.d.cts +657 -0
  4. package/dist/adapters/index.cjs +5219 -2974
  5. package/dist/adapters/index.cjs.map +1 -1
  6. package/dist/adapters/index.d.cts +204 -192
  7. package/dist/adapters/index.d.ts +204 -192
  8. package/dist/adapters/index.js +3685 -1833
  9. package/dist/adapters/index.js.map +1 -1
  10. package/dist/adapters/nestjs/microservices.cjs +841 -0
  11. package/dist/adapters/nestjs/microservices.cjs.map +1 -0
  12. package/dist/adapters/nestjs/microservices.d.cts +45 -0
  13. package/dist/adapters/nestjs/microservices.d.ts +45 -0
  14. package/dist/adapters/nestjs/microservices.js +206 -0
  15. package/dist/adapters/nestjs/microservices.js.map +1 -0
  16. package/dist/adapters/nestjs/native.cjs +1391 -0
  17. package/dist/adapters/nestjs/native.cjs.map +1 -0
  18. package/dist/adapters/nestjs/native.d.cts +111 -0
  19. package/dist/adapters/nestjs/native.d.ts +111 -0
  20. package/dist/adapters/nestjs/native.js +577 -0
  21. package/dist/adapters/nestjs/native.js.map +1 -0
  22. package/dist/adapters/nestjs/websockets.cjs +924 -0
  23. package/dist/adapters/nestjs/websockets.cjs.map +1 -0
  24. package/dist/adapters/nestjs/websockets.d.cts +47 -0
  25. package/dist/adapters/nestjs/websockets.d.ts +47 -0
  26. package/dist/adapters/nestjs/websockets.js +286 -0
  27. package/dist/adapters/nestjs/websockets.js.map +1 -0
  28. package/dist/adapters/nestjs.cjs +1085 -0
  29. package/dist/adapters/nestjs.cjs.map +1 -0
  30. package/dist/adapters/nestjs.d.cts +385 -0
  31. package/dist/adapters/nestjs.d.ts +385 -0
  32. package/dist/adapters/nestjs.js +112 -0
  33. package/dist/adapters/nestjs.js.map +1 -0
  34. package/dist/adapters/observe-storage.d.cts +4 -4
  35. package/dist/adapters/observe-storage.d.ts +4 -4
  36. package/dist/adapters/observe-storage.js +5 -4
  37. package/dist/adapters/observe-storage.js.map +1 -1
  38. package/dist/adapters/react.cjs +166 -0
  39. package/dist/adapters/react.cjs.map +1 -0
  40. package/dist/adapters/react.d.cts +31 -0
  41. package/dist/adapters/react.d.ts +31 -0
  42. package/dist/adapters/react.js +51 -0
  43. package/dist/adapters/react.js.map +1 -0
  44. package/dist/adapters/solid.cjs +157 -0
  45. package/dist/adapters/solid.cjs.map +1 -0
  46. package/dist/adapters/solid.d.cts +26 -0
  47. package/dist/adapters/solid.d.ts +26 -0
  48. package/dist/adapters/solid.js +48 -0
  49. package/dist/adapters/solid.js.map +1 -0
  50. package/dist/adapters/svelte.cjs +148 -0
  51. package/dist/adapters/svelte.cjs.map +1 -0
  52. package/dist/adapters/svelte.d.cts +31 -0
  53. package/dist/adapters/svelte.d.ts +31 -0
  54. package/dist/adapters/svelte.js +46 -0
  55. package/dist/adapters/svelte.js.map +1 -0
  56. package/dist/adapters/vue.cjs +155 -0
  57. package/dist/adapters/vue.cjs.map +1 -0
  58. package/dist/adapters/vue.d.cts +26 -0
  59. package/dist/adapters/vue.d.ts +26 -0
  60. package/dist/adapters/vue.js +46 -0
  61. package/dist/adapters/vue.js.map +1 -0
  62. package/dist/agent-runtime-types-core-CaXfKNtY.d.cts +406 -0
  63. package/dist/agent-runtime-types-core-hU299uIC.d.ts +406 -0
  64. package/dist/agent-runtime-types-tool-BEpSINol.d.ts +695 -0
  65. package/dist/agent-runtime-types-tool-DninPEzk.d.cts +695 -0
  66. package/dist/agentic-memory-retention-BmGX368S.d.ts +14 -0
  67. package/dist/agentic-memory-retention-Ih1qhX9Z.d.cts +14 -0
  68. package/dist/agentic-memory-types-CVSUS6XR.d.ts +473 -0
  69. package/dist/agentic-memory-types-FnnYlVUs.d.cts +473 -0
  70. package/dist/capability-admission-BW2CziT6.d.ts +102 -0
  71. package/dist/capability-admission-lwSecxXs.d.cts +102 -0
  72. package/dist/chunk-2KUAG2GZ.js +9693 -0
  73. package/dist/chunk-2KUAG2GZ.js.map +1 -0
  74. package/dist/chunk-2NJP6GO4.js +1320 -0
  75. package/dist/chunk-2NJP6GO4.js.map +1 -0
  76. package/dist/{chunk-GDL26N2T.js → chunk-3KN7NJDR.js} +2 -2
  77. package/dist/{chunk-COHO25CZ.js → chunk-4NWSNI4K.js} +2232 -1672
  78. package/dist/chunk-4NWSNI4K.js.map +1 -0
  79. package/dist/{chunk-Z2ANQ6JW.js → chunk-4Q77MMJY.js} +2 -2
  80. package/dist/chunk-6E76H4OU.js +132 -0
  81. package/dist/chunk-6E76H4OU.js.map +1 -0
  82. package/dist/chunk-7GOTIIQ7.js +819 -0
  83. package/dist/chunk-7GOTIIQ7.js.map +1 -0
  84. package/dist/{chunk-D6BG7U6A.js → chunk-7HZRJMN6.js} +3 -3
  85. package/dist/{chunk-SCRFRCGR.js → chunk-BSQGE5PS.js} +1 -1
  86. package/dist/{chunk-PKVBHGBM.js → chunk-CJIFGJQG.js} +7 -7
  87. package/dist/{chunk-G4M3NHRJ.js → chunk-CX6B6PO2.js} +93 -10
  88. package/dist/chunk-CX6B6PO2.js.map +1 -0
  89. package/dist/chunk-DGUM43GV.js +11 -0
  90. package/dist/chunk-DGUM43GV.js.map +1 -0
  91. package/dist/{chunk-JIMUDQN3.js → chunk-E4QCH32M.js} +449 -447
  92. package/dist/chunk-E4QCH32M.js.map +1 -0
  93. package/dist/{chunk-RIIOUTGM.js → chunk-ECURQ3HD.js} +19 -129
  94. package/dist/chunk-ECURQ3HD.js.map +1 -0
  95. package/dist/{chunk-2ILL7HQI.js → chunk-EOKT4QFF.js} +134 -128
  96. package/dist/chunk-EOKT4QFF.js.map +1 -0
  97. package/dist/{chunk-K3FXTC3I.js → chunk-HJACH5PU.js} +3 -3
  98. package/dist/{chunk-GTPCOEOZ.js → chunk-IDMLXLLG.js} +3 -3
  99. package/dist/{chunk-DKP56CSW.js → chunk-JKAYLDQV.js} +2 -2
  100. package/dist/{chunk-4VLAQHZI.js → chunk-K7FB3JTD.js} +17 -1
  101. package/dist/chunk-K7FB3JTD.js.map +1 -0
  102. package/dist/chunk-L6LDXRWE.js +219 -0
  103. package/dist/chunk-L6LDXRWE.js.map +1 -0
  104. package/dist/chunk-M7J6Z4IJ.js +1930 -0
  105. package/dist/chunk-M7J6Z4IJ.js.map +1 -0
  106. package/dist/chunk-MQEQMS7B.js +1009 -0
  107. package/dist/chunk-MQEQMS7B.js.map +1 -0
  108. package/dist/chunk-MTELVIYR.js +1421 -0
  109. package/dist/chunk-MTELVIYR.js.map +1 -0
  110. package/dist/chunk-PVC7WDKI.js +885 -0
  111. package/dist/chunk-PVC7WDKI.js.map +1 -0
  112. package/dist/chunk-RAHNUYA5.js +368 -0
  113. package/dist/chunk-RAHNUYA5.js.map +1 -0
  114. package/dist/{chunk-DK554R7P.js → chunk-S6HXABGL.js} +2 -1
  115. package/dist/chunk-S6HXABGL.js.map +1 -0
  116. package/dist/{chunk-I3IHOHCJ.js → chunk-SHZDP2MQ.js} +1181 -1001
  117. package/dist/chunk-SHZDP2MQ.js.map +1 -0
  118. package/dist/{chunk-Y3ZLRGHC.js → chunk-SIDJO2T4.js} +16 -16
  119. package/dist/chunk-STXRMPW4.js +4131 -0
  120. package/dist/chunk-STXRMPW4.js.map +1 -0
  121. package/dist/{chunk-JR4IKCR2.js → chunk-TPND5MJS.js} +5 -5
  122. package/dist/chunk-TQPCAIQI.js +612 -0
  123. package/dist/chunk-TQPCAIQI.js.map +1 -0
  124. package/dist/chunk-UT3MHJCW.js +49 -0
  125. package/dist/chunk-UT3MHJCW.js.map +1 -0
  126. package/dist/{chunk-TEW47IVR.js → chunk-VPEFSDME.js} +2 -2
  127. package/dist/{chunk-SWTLEQL6.js → chunk-WQIA3GFB.js} +2 -2
  128. package/dist/chunk-WQIA3GFB.js.map +1 -0
  129. package/dist/{chunk-DJC4CHLQ.js → chunk-YDWBXXQZ.js} +5 -5
  130. package/dist/{chunk-6PHB5CJS.js → chunk-ZLFRB6FI.js} +2 -2
  131. package/dist/composition/index.cjs +1256 -1059
  132. package/dist/composition/index.cjs.map +1 -1
  133. package/dist/composition/index.d.cts +4 -4
  134. package/dist/composition/index.d.ts +4 -4
  135. package/dist/composition/index.js +7 -6
  136. package/dist/core/index.cjs +1218 -1021
  137. package/dist/core/index.cjs.map +1 -1
  138. package/dist/core/index.d.cts +2 -2
  139. package/dist/core/index.d.ts +2 -2
  140. package/dist/core/index.js +5 -4
  141. package/dist/cqrs/index.cjs.map +1 -1
  142. package/dist/cqrs/index.d.cts +4 -4
  143. package/dist/cqrs/index.d.ts +4 -4
  144. package/dist/cqrs/index.js +3 -2
  145. package/dist/cqrs/index.js.map +1 -1
  146. package/dist/cqrs/messaging.cjs +312 -0
  147. package/dist/cqrs/messaging.cjs.map +1 -0
  148. package/dist/cqrs/messaging.d.cts +57 -0
  149. package/dist/cqrs/messaging.d.ts +57 -0
  150. package/dist/cqrs/messaging.js +274 -0
  151. package/dist/cqrs/messaging.js.map +1 -0
  152. package/dist/cqrs/work-queue.cjs +329 -0
  153. package/dist/cqrs/work-queue.cjs.map +1 -0
  154. package/dist/cqrs/work-queue.d.cts +90 -0
  155. package/dist/cqrs/work-queue.d.ts +90 -0
  156. package/dist/cqrs/work-queue.js +292 -0
  157. package/dist/cqrs/work-queue.js.map +1 -0
  158. package/dist/data/index.cjs +19 -0
  159. package/dist/data/index.cjs.map +1 -0
  160. package/dist/data/index.d.cts +36 -0
  161. package/dist/data/index.d.ts +36 -0
  162. package/dist/data/index.js +1 -0
  163. package/dist/data/index.js.map +1 -0
  164. package/dist/data-structures/index.cjs +1252 -1052
  165. package/dist/data-structures/index.cjs.map +1 -1
  166. package/dist/data-structures/index.d.cts +9 -8
  167. package/dist/data-structures/index.d.ts +9 -8
  168. package/dist/data-structures/index.js +9 -7
  169. package/dist/{describe-BZb7AS2y.d.ts → describe-B_A5fbXH.d.ts} +1 -1
  170. package/dist/{describe-Ciu8SUnN.d.cts → describe-CQRrkv-Q.d.cts} +1 -1
  171. package/dist/executors/tool-provider-adapters.cjs +3091 -0
  172. package/dist/executors/tool-provider-adapters.cjs.map +1 -0
  173. package/dist/executors/tool-provider-adapters.d.cts +174 -0
  174. package/dist/executors/tool-provider-adapters.d.ts +174 -0
  175. package/dist/executors/tool-provider-adapters.js +1336 -0
  176. package/dist/executors/tool-provider-adapters.js.map +1 -0
  177. package/dist/executors/tool-provider-runtime.cjs +5178 -0
  178. package/dist/executors/tool-provider-runtime.cjs.map +1 -0
  179. package/dist/executors/tool-provider-runtime.d.cts +17 -0
  180. package/dist/executors/tool-provider-runtime.d.ts +17 -0
  181. package/dist/executors/tool-provider-runtime.js +15 -0
  182. package/dist/executors/tool-provider-runtime.js.map +1 -0
  183. package/dist/executors/tool-provider.cjs +6392 -0
  184. package/dist/executors/tool-provider.cjs.map +1 -0
  185. package/dist/executors/tool-provider.d.cts +60 -0
  186. package/dist/executors/tool-provider.d.ts +60 -0
  187. package/dist/executors/tool-provider.js +89 -0
  188. package/dist/executors/tool-provider.js.map +1 -0
  189. package/dist/executors/work-queue.cjs +342 -0
  190. package/dist/executors/work-queue.cjs.map +1 -0
  191. package/dist/executors/work-queue.d.cts +90 -0
  192. package/dist/executors/work-queue.d.ts +90 -0
  193. package/dist/executors/work-queue.js +306 -0
  194. package/dist/executors/work-queue.js.map +1 -0
  195. package/dist/graph/index.cjs +1536 -1324
  196. package/dist/graph/index.cjs.map +1 -1
  197. package/dist/graph/index.d.cts +10 -9
  198. package/dist/graph/index.d.ts +10 -9
  199. package/dist/graph/index.js +22 -20
  200. package/dist/{graph-s23RbbFO.d.cts → graph-CWK3HLPB.d.cts} +134 -132
  201. package/dist/{graph-DfdF9zy4.d.ts → graph-ho5sotHP.d.ts} +134 -132
  202. package/dist/{index-SnzZu3x7.d.ts → index-CQWcE0Dw.d.ts} +18 -4
  203. package/dist/{index-CAEmLCYF.d.cts → index-DHA1i67c.d.cts} +18 -4
  204. package/dist/index.cjs +3331 -3020
  205. package/dist/index.cjs.map +1 -1
  206. package/dist/index.d.cts +14 -10
  207. package/dist/index.d.ts +14 -10
  208. package/dist/index.js +114 -108
  209. package/dist/inspection/boundary.cjs +98 -0
  210. package/dist/inspection/boundary.cjs.map +1 -0
  211. package/dist/inspection/boundary.d.cts +61 -0
  212. package/dist/inspection/boundary.d.ts +61 -0
  213. package/dist/inspection/boundary.js +75 -0
  214. package/dist/inspection/boundary.js.map +1 -0
  215. package/dist/measurements-C0mAvWU1.d.cts +164 -0
  216. package/dist/measurements-OMpCeBwh.d.ts +164 -0
  217. package/dist/{messages-BZqrGGm1.d.ts → messages-CAzUPPJM.d.cts} +10 -5
  218. package/dist/{messages-BZqrGGm1.d.cts → messages-CAzUPPJM.d.ts} +10 -5
  219. package/dist/messaging/index.cjs +756 -619
  220. package/dist/messaging/index.cjs.map +1 -1
  221. package/dist/messaging/index.d.cts +17 -226
  222. package/dist/messaging/index.d.ts +17 -226
  223. package/dist/messaging/index.js +19 -749
  224. package/dist/messaging/index.js.map +1 -1
  225. package/dist/operators/index.cjs +1256 -1059
  226. package/dist/operators/index.cjs.map +1 -1
  227. package/dist/operators/index.d.cts +6 -6
  228. package/dist/operators/index.d.ts +6 -6
  229. package/dist/operators/index.js +9 -8
  230. package/dist/orchestration/index.cjs +8664 -2617
  231. package/dist/orchestration/index.cjs.map +1 -1
  232. package/dist/orchestration/index.d.cts +171 -221
  233. package/dist/orchestration/index.d.ts +171 -221
  234. package/dist/orchestration/index.js +74 -982
  235. package/dist/orchestration/index.js.map +1 -1
  236. package/dist/orchestration/messaging.cjs +314 -0
  237. package/dist/orchestration/messaging.cjs.map +1 -0
  238. package/dist/orchestration/messaging.d.cts +56 -0
  239. package/dist/orchestration/messaging.d.ts +56 -0
  240. package/dist/orchestration/messaging.js +276 -0
  241. package/dist/orchestration/messaging.js.map +1 -0
  242. package/dist/orchestration/work-queue.cjs +1500 -0
  243. package/dist/orchestration/work-queue.cjs.map +1 -0
  244. package/dist/orchestration/work-queue.d.cts +196 -0
  245. package/dist/orchestration/work-queue.d.ts +196 -0
  246. package/dist/orchestration/work-queue.js +1289 -0
  247. package/dist/orchestration/work-queue.js.map +1 -0
  248. package/dist/patterns/event-flow.cjs +433 -0
  249. package/dist/patterns/event-flow.cjs.map +1 -0
  250. package/dist/patterns/event-flow.d.cts +115 -0
  251. package/dist/patterns/event-flow.d.ts +115 -0
  252. package/dist/patterns/event-flow.js +14 -0
  253. package/dist/patterns/event-flow.js.map +1 -0
  254. package/dist/patterns/index.cjs +748 -355
  255. package/dist/patterns/index.cjs.map +1 -1
  256. package/dist/patterns/index.d.cts +9 -5
  257. package/dist/patterns/index.d.ts +9 -5
  258. package/dist/patterns/index.js +13 -4
  259. package/dist/process-types-C9uMYz3i.d.ts +200 -0
  260. package/dist/process-types-h3uRlzDc.d.cts +200 -0
  261. package/dist/{reactive-collection-BxBqtIOE.d.cts → reactive-collection-B9R0Bl1P.d.cts} +11 -41
  262. package/dist/{reactive-collection-Cb1II1Fi.d.ts → reactive-collection-BXFrH0U2.d.ts} +11 -41
  263. package/dist/{reactive-collection-storage-D-KmjE0J.d.cts → reactive-collection-storage-BLGv8Xp8.d.cts} +5 -5
  264. package/dist/{reactive-collection-storage-BNiEc-Gd.d.ts → reactive-collection-storage-a4zD3665.d.ts} +5 -5
  265. package/dist/{reactive-map-BcB4KsQR.d.ts → reactive-map-C_8sOfdS.d.cts} +7 -6
  266. package/dist/{reactive-map-D-g3dv8I.d.cts → reactive-map-jle5dnok.d.ts} +7 -6
  267. package/dist/render/index.d.cts +3 -3
  268. package/dist/render/index.d.ts +3 -3
  269. package/dist/render/index.js +1 -0
  270. package/dist/scheduled-readiness-5rwQlyjV.d.ts +91 -0
  271. package/dist/scheduled-readiness-DpRY8jI0.d.cts +91 -0
  272. package/dist/semantic-memory-graph-C2ZUwIlq.d.ts +30 -0
  273. package/dist/semantic-memory-graph-DlZBD_Eu.d.cts +30 -0
  274. package/dist/{semantic-memory-graph-BYoIlP35.d.cts → semantic-memory-graph-types-BvzdqmkY.d.cts} +2 -28
  275. package/dist/{semantic-memory-graph-CxyXLms3.d.ts → semantic-memory-graph-types-Ci-OtahO.d.ts} +2 -28
  276. package/dist/solutions/index.cjs +6788 -2128
  277. package/dist/solutions/index.cjs.map +1 -1
  278. package/dist/solutions/index.d.cts +15 -519
  279. package/dist/solutions/index.d.ts +15 -519
  280. package/dist/solutions/index.js +91 -7
  281. package/dist/solutions/reactive-layout/browser/index.cjs +457 -0
  282. package/dist/solutions/reactive-layout/browser/index.cjs.map +1 -0
  283. package/dist/solutions/reactive-layout/browser/index.d.cts +44 -0
  284. package/dist/solutions/reactive-layout/browser/index.d.ts +44 -0
  285. package/dist/solutions/reactive-layout/browser/index.js +69 -0
  286. package/dist/solutions/reactive-layout/browser/index.js.map +1 -0
  287. package/dist/solutions/reactive-layout/index.cjs +4494 -0
  288. package/dist/solutions/reactive-layout/index.cjs.map +1 -0
  289. package/dist/solutions/reactive-layout/index.d.cts +37 -0
  290. package/dist/solutions/reactive-layout/index.d.ts +37 -0
  291. package/dist/solutions/reactive-layout/index.js +146 -0
  292. package/dist/solutions/reactive-layout/index.js.map +1 -0
  293. package/dist/solutions/reactive-layout/node-canvas/index.cjs +555 -0
  294. package/dist/solutions/reactive-layout/node-canvas/index.cjs.map +1 -0
  295. package/dist/solutions/reactive-layout/node-canvas/index.d.cts +54 -0
  296. package/dist/solutions/reactive-layout/node-canvas/index.d.ts +54 -0
  297. package/dist/solutions/reactive-layout/node-canvas/index.js +131 -0
  298. package/dist/solutions/reactive-layout/node-canvas/index.js.map +1 -0
  299. package/dist/solutions/reactive-layout/react-native/index.cjs +504 -0
  300. package/dist/solutions/reactive-layout/react-native/index.cjs.map +1 -0
  301. package/dist/solutions/reactive-layout/react-native/index.d.cts +51 -0
  302. package/dist/solutions/reactive-layout/react-native/index.d.ts +51 -0
  303. package/dist/solutions/reactive-layout/react-native/index.js +77 -0
  304. package/dist/solutions/reactive-layout/react-native/index.js.map +1 -0
  305. package/dist/solutions/reactive-layout/skia/index.cjs +557 -0
  306. package/dist/solutions/reactive-layout/skia/index.cjs.map +1 -0
  307. package/dist/solutions/reactive-layout/skia/index.d.cts +64 -0
  308. package/dist/solutions/reactive-layout/skia/index.d.ts +64 -0
  309. package/dist/solutions/reactive-layout/skia/index.js +70 -0
  310. package/dist/solutions/reactive-layout/skia/index.js.map +1 -0
  311. package/dist/solutions/work-item/actions.cjs +2345 -0
  312. package/dist/solutions/work-item/actions.cjs.map +1 -0
  313. package/dist/solutions/work-item/actions.d.cts +40 -0
  314. package/dist/solutions/work-item/actions.d.ts +40 -0
  315. package/dist/solutions/work-item/actions.js +2078 -0
  316. package/dist/solutions/work-item/actions.js.map +1 -0
  317. package/dist/solutions/work-item/scheduling.cjs +9797 -0
  318. package/dist/solutions/work-item/scheduling.cjs.map +1 -0
  319. package/dist/solutions/work-item/scheduling.d.cts +1868 -0
  320. package/dist/solutions/work-item/scheduling.d.ts +1868 -0
  321. package/dist/solutions/work-item/scheduling.js +146 -0
  322. package/dist/solutions/work-item/scheduling.js.map +1 -0
  323. package/dist/solutions/work-item/work-queue.cjs +306 -0
  324. package/dist/solutions/work-item/work-queue.cjs.map +1 -0
  325. package/dist/solutions/work-item/work-queue.d.cts +71 -0
  326. package/dist/solutions/work-item/work-queue.d.ts +71 -0
  327. package/dist/solutions/work-item/work-queue.js +270 -0
  328. package/dist/solutions/work-item/work-queue.js.map +1 -0
  329. package/dist/sources/browser.cjs +1399 -1052
  330. package/dist/sources/browser.cjs.map +1 -1
  331. package/dist/sources/browser.d.cts +33 -6
  332. package/dist/sources/browser.d.ts +33 -6
  333. package/dist/sources/browser.js +73 -6
  334. package/dist/sources/browser.js.map +1 -1
  335. package/dist/sources/index.cjs +1345 -1065
  336. package/dist/sources/index.cjs.map +1 -1
  337. package/dist/sources/index.d.cts +5 -5
  338. package/dist/sources/index.d.ts +5 -5
  339. package/dist/sources/index.js +7 -6
  340. package/dist/sources/node.cjs.map +1 -1
  341. package/dist/sources/node.d.cts +4 -4
  342. package/dist/sources/node.d.ts +4 -4
  343. package/dist/sources/node.js +2 -1
  344. package/dist/sources/node.js.map +1 -1
  345. package/dist/storage/browser.cjs +16 -0
  346. package/dist/storage/browser.cjs.map +1 -1
  347. package/dist/storage/browser.js +4 -3
  348. package/dist/storage/browser.js.map +1 -1
  349. package/dist/storage/index.cjs +16 -0
  350. package/dist/storage/index.cjs.map +1 -1
  351. package/dist/storage/index.d.cts +6 -5
  352. package/dist/storage/index.d.ts +6 -5
  353. package/dist/storage/index.js +10 -9
  354. package/dist/storage/node.cjs +16 -0
  355. package/dist/storage/node.cjs.map +1 -1
  356. package/dist/storage/node.js +4 -3
  357. package/dist/storage/node.js.map +1 -1
  358. package/dist/store-BmtEs9mG.d.ts +123 -0
  359. package/dist/store-PAAsYvML.d.cts +123 -0
  360. package/dist/testing/index.cjs +1 -0
  361. package/dist/testing/index.cjs.map +1 -1
  362. package/dist/testing/index.d.cts +1 -1
  363. package/dist/testing/index.d.ts +1 -1
  364. package/dist/testing/index.js +3 -2
  365. package/dist/types-BRNKoFHj.d.ts +357 -0
  366. package/dist/{types-h12mNYbq.d.ts → types-BS6CyR-x.d.cts} +49 -130
  367. package/dist/types-BWK2ay3e.d.cts +457 -0
  368. package/dist/types-BXKSAoE1.d.cts +357 -0
  369. package/dist/types-BaPpZItj.d.ts +457 -0
  370. package/dist/types-BhveCMg5.d.cts +274 -0
  371. package/dist/{types-bNMSWKqF.d.cts → types-C9NOgNJw.d.ts} +49 -130
  372. package/dist/types-CTsQ8Ww4.d.ts +274 -0
  373. package/dist/types-DL_05n2M.d.ts +34 -0
  374. package/dist/types-XDoqxYO9.d.cts +34 -0
  375. package/dist/work-item-runtime-types-BqtWnSCS.d.ts +138 -0
  376. package/dist/work-item-runtime-types-CHO03AKh.d.cts +138 -0
  377. package/dist/work-queue/index.cjs +1136 -0
  378. package/dist/work-queue/index.cjs.map +1 -0
  379. package/dist/work-queue/index.d.cts +21 -0
  380. package/dist/work-queue/index.d.ts +21 -0
  381. package/dist/work-queue/index.js +1082 -0
  382. package/dist/work-queue/index.js.map +1 -0
  383. package/package.json +603 -249
  384. package/dist/chunk-2ILL7HQI.js.map +0 -1
  385. package/dist/chunk-4VLAQHZI.js.map +0 -1
  386. package/dist/chunk-COHO25CZ.js.map +0 -1
  387. package/dist/chunk-DK554R7P.js.map +0 -1
  388. package/dist/chunk-G4M3NHRJ.js.map +0 -1
  389. package/dist/chunk-I3IHOHCJ.js.map +0 -1
  390. package/dist/chunk-JIMUDQN3.js.map +0 -1
  391. package/dist/chunk-RIIOUTGM.js.map +0 -1
  392. package/dist/chunk-SWTLEQL6.js.map +0 -1
  393. /package/dist/{chunk-GDL26N2T.js.map → chunk-3KN7NJDR.js.map} +0 -0
  394. /package/dist/{chunk-Z2ANQ6JW.js.map → chunk-4Q77MMJY.js.map} +0 -0
  395. /package/dist/{chunk-D6BG7U6A.js.map → chunk-7HZRJMN6.js.map} +0 -0
  396. /package/dist/{chunk-SCRFRCGR.js.map → chunk-BSQGE5PS.js.map} +0 -0
  397. /package/dist/{chunk-PKVBHGBM.js.map → chunk-CJIFGJQG.js.map} +0 -0
  398. /package/dist/{chunk-K3FXTC3I.js.map → chunk-HJACH5PU.js.map} +0 -0
  399. /package/dist/{chunk-GTPCOEOZ.js.map → chunk-IDMLXLLG.js.map} +0 -0
  400. /package/dist/{chunk-DKP56CSW.js.map → chunk-JKAYLDQV.js.map} +0 -0
  401. /package/dist/{chunk-Y3ZLRGHC.js.map → chunk-SIDJO2T4.js.map} +0 -0
  402. /package/dist/{chunk-JR4IKCR2.js.map → chunk-TPND5MJS.js.map} +0 -0
  403. /package/dist/{chunk-TEW47IVR.js.map → chunk-VPEFSDME.js.map} +0 -0
  404. /package/dist/{chunk-DJC4CHLQ.js.map → chunk-YDWBXXQZ.js.map} +0 -0
  405. /package/dist/{chunk-6PHB5CJS.js.map → chunk-ZLFRB6FI.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/work-queue/utils.ts","../../src/work-queue/projections.ts","../../src/work-queue/index.ts"],"sourcesContent":["import type { Node } from \"../node/node.js\";\nimport type { PullDemand } from \"../protocol/messages.js\";\nimport type { QueueEvent, RuntimeState, WorkQueueRecordDraft, WorkState } from \"./runtime-types.js\";\nimport type {\n\tWorkQueueCommand,\n\tWorkQueueDerivedState,\n\tWorkQueueRecord,\n\tWorkQueueStatus,\n} from \"./types.js\";\n\nexport function appendRecord<T>(\n\tstate: RuntimeState<T>,\n\tqueueId: string,\n\trecord: WorkQueueRecordDraft,\n): WorkQueueRecord<T> {\n\tconst full = { ...record, queueId, recordSeq: ++state.recordSeq } as WorkQueueRecord<T>;\n\tstate.records.push(full);\n\treturn full;\n}\n\nexport function recordEvent<T>(record: WorkQueueRecord<T>): QueueEvent<T> {\n\treturn { kind: \"record\", record };\n}\n\nexport function statusEvent<T>(\n\tqueueId: string,\n\tkind: WorkQueueStatus[\"kind\"],\n\ttimestampMs: number,\n\tfields: Partial<WorkQueueStatus> = {},\n): QueueEvent<T> {\n\treturn {\n\t\tkind: \"status\",\n\t\tstatus: {\n\t\t\tkind,\n\t\t\tqueueId,\n\t\t\ttimestampMs,\n\t\t\t...(fields.workId === undefined ? {} : { workId: fields.workId }),\n\t\t\t...(fields.commandId === undefined ? {} : { commandId: fields.commandId }),\n\t\t\t...(fields.recordSeq === undefined ? {} : { recordSeq: fields.recordSeq }),\n\t\t\t...(fields.asOfRecordSeq === undefined ? {} : { asOfRecordSeq: fields.asOfRecordSeq }),\n\t\t\t...(fields.issueCode === undefined ? {} : { issueCode: fields.issueCode }),\n\t\t\t...(fields.details === undefined ? {} : { details: fields.details }),\n\t\t},\n\t};\n}\n\nexport function issueEvent<T>(\n\tqueueId: string,\n\tcode: string,\n\tmessage: string,\n\ttimestampMs: number,\n\tdetails: unknown,\n): QueueEvent<T> {\n\treturn {\n\t\tkind: \"issue\",\n\t\tissue: {\n\t\t\tkind: \"issue\",\n\t\t\tcode,\n\t\t\tmessage,\n\t\t\tseverity: \"error\",\n\t\t\tsource: \"workQueue\",\n\t\t\tdetails,\n\t\t\tmetadata: { queueId, timestampMs },\n\t\t},\n\t};\n}\n\nexport function rejectQueueCommand<T>(\n\tqueueId: string,\n\tcommand: unknown,\n\tcode: string,\n\tmessage: string,\n\tnowMs: number,\n\tcommandId = commandIdFrom(command),\n): QueueEvent<T>[] {\n\treturn [\n\t\tissueEvent(queueId, code, message, nowMs, command),\n\t\tstatusEvent(queueId, \"command-rejected\", nowMs, {\n\t\t\t...(commandId === undefined ? {} : { commandId }),\n\t\t\tissueCode: code,\n\t\t}),\n\t];\n}\n\nexport function validateQueueCommand(\n\tqueueId: string,\n\tcommand: unknown,\n): { readonly code: string; readonly message: string } | undefined {\n\tif (!isObjectRecord(command))\n\t\treturn { code: \"malformed-command\", message: \"command must be an object\" };\n\tif (typeof command.kind !== \"string\")\n\t\treturn { code: \"malformed-command\", message: \"command kind is required\" };\n\tif (!isWorkQueueCommandKind(command.kind))\n\t\treturn { code: \"malformed-command\", message: `unknown command kind '${command.kind}'` };\n\tif (typeof command.commandId !== \"string\" || command.commandId.length === 0)\n\t\treturn { code: \"malformed-command\", message: \"commandId must be a non-empty string\" };\n\tif (command.queueId !== undefined && command.queueId !== queueId)\n\t\treturn { code: \"queue-mismatch\", message: \"command queueId does not match this queue\" };\n\tswitch (command.kind) {\n\t\tcase \"submit\":\n\t\t\treturn command.payload === undefined\n\t\t\t\t? { code: \"malformed-command\", message: \"submit payload is required\" }\n\t\t\t\t: undefined;\n\t\tcase \"claim\":\n\t\t\tif (typeof command.workerId !== \"string\" || command.workerId.length === 0)\n\t\t\t\treturn { code: \"malformed-command\", message: \"claim workerId is required\" };\n\t\t\tif (command.limit !== undefined && !isPositiveInteger(command.limit))\n\t\t\t\treturn { code: \"malformed-command\", message: \"claim limit must be a positive integer\" };\n\t\t\tif (\n\t\t\t\tcommand.requestedWorkIds !== undefined &&\n\t\t\t\t(!Array.isArray(command.requestedWorkIds) ||\n\t\t\t\t\t!command.requestedWorkIds.every((id) => typeof id === \"string\" && id.length > 0))\n\t\t\t) {\n\t\t\t\treturn { code: \"malformed-command\", message: \"requestedWorkIds must be strings\" };\n\t\t\t}\n\t\t\tif (command.leaseDurationMs !== undefined && !isPositiveInteger(command.leaseDurationMs))\n\t\t\t\treturn {\n\t\t\t\t\tcode: \"malformed-command\",\n\t\t\t\t\tmessage: \"leaseDurationMs must be a positive integer\",\n\t\t\t\t};\n\t\t\treturn undefined;\n\t\tcase \"renew-lease\":\n\t\t\tif (command.leaseDurationMs !== undefined && !isPositiveInteger(command.leaseDurationMs))\n\t\t\t\treturn {\n\t\t\t\t\tcode: \"malformed-command\",\n\t\t\t\t\tmessage: \"leaseDurationMs must be a positive integer\",\n\t\t\t\t};\n\t\t\tif (command.leaseExpiresAtMs !== undefined && !isFiniteNumber(command.leaseExpiresAtMs))\n\t\t\t\treturn { code: \"malformed-command\", message: \"leaseExpiresAtMs must be finite\" };\n\t\t\treturn validateLeaseCommand(command);\n\t\tcase \"release\":\n\t\tcase \"complete\":\n\t\tcase \"fail\":\n\t\t\treturn validateLeaseCommand(command);\n\t\tcase \"cancel\":\n\t\t\treturn requiredString(command.workId, \"workId\");\n\t\tcase \"schedule\": {\n\t\t\tconst workIdError = requiredString(command.workId, \"workId\");\n\t\t\tif (workIdError !== undefined) return workIdError;\n\t\t\tif (!isFiniteNumber(command.notBeforeMs))\n\t\t\t\treturn { code: \"malformed-command\", message: \"notBeforeMs must be finite\" };\n\t\t\tif (command.deadlineMs !== undefined && !isFiniteNumber(command.deadlineMs))\n\t\t\t\treturn { code: \"malformed-command\", message: \"deadlineMs must be finite\" };\n\t\t\treturn undefined;\n\t\t}\n\t\tcase \"expire-leases\":\n\t\t\tif (command.limit !== undefined && !isPositiveInteger(command.limit))\n\t\t\t\treturn {\n\t\t\t\t\tcode: \"malformed-command\",\n\t\t\t\t\tmessage: \"expire-leases limit must be a positive integer\",\n\t\t\t\t};\n\t\t\tif (\n\t\t\t\tcommand.workIds !== undefined &&\n\t\t\t\t(!Array.isArray(command.workIds) ||\n\t\t\t\t\t!command.workIds.every((id) => typeof id === \"string\" && id.length > 0))\n\t\t\t) {\n\t\t\t\treturn { code: \"malformed-command\", message: \"workIds must be strings\" };\n\t\t\t}\n\t\t\treturn undefined;\n\t}\n}\n\nexport function validateLeaseCommand(\n\tcommand: Record<string, unknown>,\n): { readonly code: string; readonly message: string } | undefined {\n\tfor (const key of [\"workId\", \"leaseId\", \"workerId\"]) {\n\t\tconst err = requiredString(command[key], key);\n\t\tif (err !== undefined) return err;\n\t}\n\tif (!isPositiveInteger(command.attempt))\n\t\treturn { code: \"malformed-command\", message: \"attempt must be a positive integer\" };\n\treturn undefined;\n}\n\nexport function requiredString(\n\tvalue: unknown,\n\tname: string,\n): { readonly code: string; readonly message: string } | undefined {\n\treturn typeof value === \"string\" && value.length > 0\n\t\t? undefined\n\t\t: { code: \"malformed-command\", message: `${name} must be a non-empty string` };\n}\n\nexport function commandIdFrom(command: unknown): string | undefined {\n\treturn isObjectRecord(command) && typeof command.commandId === \"string\"\n\t\t? command.commandId\n\t\t: undefined;\n}\n\nexport function isWorkQueueCommandKind(kind: string): kind is WorkQueueCommand[\"kind\"] {\n\treturn (\n\t\tkind === \"submit\" ||\n\t\tkind === \"claim\" ||\n\t\tkind === \"renew-lease\" ||\n\t\tkind === \"release\" ||\n\t\tkind === \"complete\" ||\n\t\tkind === \"fail\" ||\n\t\tkind === \"cancel\" ||\n\t\tkind === \"schedule\" ||\n\t\tkind === \"expire-leases\"\n\t);\n}\n\nexport function isObjectRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function isPositiveInteger(value: unknown): value is number {\n\treturn Number.isInteger(value) && (value as number) > 0;\n}\n\nexport function isFiniteNumber(value: unknown): value is number {\n\treturn typeof value === \"number\" && Number.isFinite(value);\n}\n\nexport function publishQueueCommand<T>(\n\tnode: Node<WorkQueueCommand<T>>,\n\tcommand: WorkQueueCommand<T>,\n): WorkQueueCommand<T> {\n\tnode.down([[\"DATA\", command]]);\n\treturn command;\n}\n\nlet commandSeq = 0;\nexport function nextCommandId(queueId: string, kind: string): string {\n\tcommandSeq += 1;\n\treturn `${queueId}:${kind}:${commandSeq}`;\n}\n\nexport function isReady<T>(work: WorkState<T>, nowMs: number): boolean {\n\tif (work.state === \"scheduled\")\n\t\treturn work.notBeforeMs !== undefined && work.notBeforeMs <= nowMs;\n\tif (work.state === \"retry-wait\") return work.retryAtMs !== undefined && work.retryAtMs <= nowMs;\n\treturn work.state === \"ready\";\n}\n\nexport function isReadyForProjection<T>(work: WorkState<T>, nowMs: number | undefined): boolean {\n\tif (work.state === \"scheduled\" || work.state === \"retry-wait\") {\n\t\treturn nowMs === undefined ? false : isReady(work, nowMs);\n\t}\n\treturn isReady(work, 0);\n}\n\nexport function isTerminal(state: WorkQueueDerivedState): boolean {\n\treturn state === \"completed\" || state === \"canceled\" || state === \"dead-lettered\";\n}\n\nexport function payloadAsRecord(value: unknown): Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: {};\n}\n\nexport function numberOrUndefined(value: unknown): number | undefined {\n\treturn typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n\nexport function stringArrayOrUndefined(value: unknown): readonly string[] | undefined {\n\treturn Array.isArray(value) && value.every((entry) => typeof entry === \"string\")\n\t\t? value\n\t\t: undefined;\n}\n\nexport function pullParams<T>(pull: PullDemand | undefined): T {\n\treturn (\n\t\ttypeof pull?.params === \"object\" && pull.params !== null && !Array.isArray(pull.params)\n\t\t\t? pull.params\n\t\t\t: {}\n\t) as T;\n}\n\nconst SUBMIT_ENVELOPE = \"__graphreflyWorkQueueSubmit\";\n\nexport function submitPayload<T>(\n\tpayload: T,\n\tmeta: Record<string, unknown>,\n): T | (Record<string, unknown> & { readonly [SUBMIT_ENVELOPE]: true; readonly payload: T }) {\n\tif (Object.keys(meta).length === 0) return payload;\n\treturn { [SUBMIT_ENVELOPE]: true, payload, ...meta };\n}\n\nexport function decodeSubmittedPayload<T>(payload: T): {\n\tpayload: T;\n\tmeta: Record<string, unknown>;\n} {\n\tif (\n\t\tisObjectRecord(payload) &&\n\t\tpayload[SUBMIT_ENVELOPE] === true &&\n\t\tObject.hasOwn(payload, \"payload\")\n\t) {\n\t\tconst { payload: inner, [SUBMIT_ENVELOPE]: _tag, ...meta } = payload as Record<string, unknown>;\n\t\treturn { payload: inner as T, meta };\n\t}\n\treturn { payload, meta: payloadAsRecord(payload) };\n}\n\nexport function commandNowMs<T>(command: WorkQueueCommand<T>, fallback: number): number {\n\treturn typeof command.nowMs === \"number\" && Number.isFinite(command.nowMs)\n\t\t? command.nowMs\n\t\t: fallback;\n}\n\nexport function positiveLimit(limit: number): number {\n\tif (!Number.isInteger(limit) || limit < 1)\n\t\tthrow new Error(\"workQueue: limit must be a positive integer\");\n\treturn limit;\n}\n\nexport function assertNonEmpty(value: string, owner: string): void {\n\tif (typeof value !== \"string\" || value.length === 0)\n\t\tthrow new Error(`${owner} must be a non-empty string`);\n}\n\nexport function materializeLeaseExpired<T>(\n\tqueueId: string,\n\tstate: RuntimeState<T>,\n\twork: WorkState<T>,\n\tcommandId: string | undefined,\n\tnowMs: number,\n\trejection?: { readonly command: unknown; readonly code: string; readonly message: string },\n): QueueEvent<T>[] {\n\tconst record = appendRecord(state, queueId, {\n\t\tkind: \"lease-expired\",\n\t\tworkId: work.workId,\n\t\t...(commandId === undefined ? {} : { commandId }),\n\t\tleaseId: work.leaseId as string,\n\t\tattempt: work.attempt,\n\t\tworkerId: work.workerId as string,\n\t\tleaseExpiresAtMs: work.leaseExpiresAtMs as number,\n\t\texpiredAtMs: nowMs,\n\t\trecordedAtMs: nowMs,\n\t});\n\twork.state = \"ready\";\n\tclearLease(work);\n\tconst events: QueueEvent<T>[] = [recordEvent(record)];\n\tif (rejection !== undefined) {\n\t\tevents.push(\n\t\t\t...rejectQueueCommand<T>(\n\t\t\t\tqueueId,\n\t\t\t\trejection.command,\n\t\t\t\trejection.code,\n\t\t\t\trejection.message,\n\t\t\t\tnowMs,\n\t\t\t\tcommandId,\n\t\t\t),\n\t\t);\n\t}\n\treturn events;\n}\n\nexport function isExpiredLease<T>(work: WorkState<T>, nowMs: number): boolean {\n\treturn (\n\t\twork.state === \"leased\" && work.leaseExpiresAtMs !== undefined && work.leaseExpiresAtMs <= nowMs\n\t);\n}\n\nexport function clearLease<T>(work: WorkState<T>): void {\n\twork.leaseId = undefined;\n\twork.workerId = undefined;\n\twork.leaseExpiresAtMs = undefined;\n}\n","import type { RuntimeState } from \"./runtime-types.js\";\nimport type {\n\tWorkQueueAvailablePage,\n\tWorkQueueAvailableParams,\n\tWorkQueueDeadLetterPage,\n\tWorkQueueDeadLetterParams,\n\tWorkQueueWorkSnapshot,\n} from \"./types.js\";\nimport { isReadyForProjection, positiveLimit } from \"./utils.js\";\n\nexport function availablePage<T>(\n\tstate: RuntimeState<T>,\n\tparams: WorkQueueAvailableParams,\n): WorkQueueAvailablePage<T> {\n\tconst limit = positiveLimit(params.limit ?? 100);\n\tconst orderByWorkId = params.afterWorkId !== undefined && params.afterAdmissionSeq === undefined;\n\tconst all = [...state.works.values()]\n\t\t.filter((work) => isReadyForProjection(work, params.nowMs))\n\t\t.filter((work) => params.afterWorkId === undefined || work.workId > params.afterWorkId)\n\t\t.filter(\n\t\t\t(work) =>\n\t\t\t\tparams.afterAdmissionSeq === undefined || work.admissionSeq > params.afterAdmissionSeq,\n\t\t)\n\t\t.sort((a, b) =>\n\t\t\torderByWorkId\n\t\t\t\t? a.workId.localeCompare(b.workId)\n\t\t\t\t: a.admissionSeq - b.admissionSeq || a.workId.localeCompare(b.workId),\n\t\t);\n\tconst items = all.map((work) => ({\n\t\tworkId: work.workId,\n\t\tstate: work.state,\n\t\tpayload: work.payload,\n\t\tadmissionSeq: work.admissionSeq,\n\t\tpriority: work.priority,\n\t\ttags: work.tags,\n\t\trequirements: work.requirements,\n\t\tnotBeforeMs: work.notBeforeMs,\n\t\tretryAtMs: work.retryAtMs,\n\t\tdeadlineMs: work.deadlineMs,\n\t}));\n\tconst page = items.slice(0, limit);\n\treturn {\n\t\titems: page,\n\t\t...(items.length > limit && page.length > 0\n\t\t\t? { nextAfterWorkId: page[page.length - 1]?.workId }\n\t\t\t: {}),\n\t\t...(items.length > limit && page.length > 0\n\t\t\t? { nextAfterAdmissionSeq: page[page.length - 1]?.admissionSeq }\n\t\t\t: {}),\n\t\thasMore: items.length > limit,\n\t\tasOfRecordSeq: state.recordSeq,\n\t};\n}\n\nexport function workSnapshot<T>(state: RuntimeState<T>, workId: string): WorkQueueWorkSnapshot<T> {\n\tconst work = state.works.get(workId);\n\treturn {\n\t\tworkId,\n\t\tstate: work?.state,\n\t\tpayload: work?.payload,\n\t\t...(work?.state !== \"leased\" || work.leaseId === undefined\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\tactiveLease: {\n\t\t\t\t\t\tleaseId: work.leaseId,\n\t\t\t\t\t\tattempt: work.attempt,\n\t\t\t\t\t\tworkerId: work.workerId as string,\n\t\t\t\t\t\tleaseExpiresAtMs: work.leaseExpiresAtMs as number,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\trecords: state.records.filter((record) => record.workId === workId),\n\t\tasOfRecordSeq: state.recordSeq,\n\t};\n}\n\nexport function deadLetterPage<T>(\n\tstate: RuntimeState<T>,\n\tparams: WorkQueueDeadLetterParams,\n): WorkQueueDeadLetterPage<T> {\n\tconst limit = positiveLimit(params.limit ?? 100);\n\tconst entries = state.deadLetters.filter((record) => {\n\t\tif (params.afterDeadLetterSeq !== undefined && record.recordSeq <= params.afterDeadLetterSeq)\n\t\t\treturn false;\n\t\tif (params.afterWorkId !== undefined && (record.workId ?? \"\") <= params.afterWorkId)\n\t\t\treturn false;\n\t\treturn true;\n\t});\n\tconst page = entries.slice(0, limit);\n\treturn {\n\t\tentries: page,\n\t\t...(entries.length > limit && page.length > 0\n\t\t\t? { nextAfterDeadLetterSeq: page[page.length - 1]?.recordSeq }\n\t\t\t: {}),\n\t\thasMore: entries.length > limit,\n\t\tasOfRecordSeq: state.recordSeq,\n\t};\n}\n","/**\n * MessageBus-backed generic work queue (D299-D324).\n *\n * The queue core is graph-visible facts: commands, records, status, issues. It is intentionally\n * independent from orchestration/WorkItem/executor registries.\n */\n\nimport { depBatch } from \"../ctx/types.js\";\nimport type { DataIssue } from \"../data/index.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type {\n\tMessageBusAvailablePage,\n\tMessageBusCommand,\n\tMessageBusMessage,\n\tMessageBusStatus,\n} from \"../messaging/index.js\";\nimport { attachMessageBusDeferredCommandSink } from \"../messaging/internal.js\";\nimport { availablePage, deadLetterPage, workSnapshot } from \"./projections.js\";\nimport type { QueueEvent, RuntimeState, WorkState } from \"./runtime-types.js\";\nimport type {\n\tWorkQueue,\n\tWorkQueueAvailablePage,\n\tWorkQueueAvailableParams,\n\tWorkQueueCommand,\n\tWorkQueueDeadLetterPage,\n\tWorkQueueDeadLetterParams,\n\tWorkQueueOptions,\n\tWorkQueueRecord,\n\tWorkQueueRetryPolicy,\n\tWorkQueueStatus,\n\tWorkQueueWorkSnapshot,\n} from \"./types.js\";\nimport {\n\tappendRecord,\n\tassertNonEmpty,\n\tclearLease,\n\tcommandNowMs,\n\tdecodeSubmittedPayload,\n\tisExpiredLease,\n\tisReady,\n\tissueEvent,\n\tisTerminal,\n\tmaterializeLeaseExpired,\n\tnextCommandId,\n\tnumberOrUndefined,\n\tpayloadAsRecord,\n\tpositiveLimit,\n\tpublishQueueCommand,\n\tpullParams,\n\trecordEvent,\n\trejectQueueCommand,\n\tstatusEvent,\n\tstringArrayOrUndefined,\n\tsubmitPayload,\n\tvalidateQueueCommand,\n} from \"./utils.js\";\n\nexport type {\n\tWorkQueue,\n\tWorkQueueAvailableItem,\n\tWorkQueueAvailablePage,\n\tWorkQueueAvailableParams,\n\tWorkQueueAvailableProjection,\n\tWorkQueueCommand,\n\tWorkQueueDeadLetterPage,\n\tWorkQueueDeadLetterParams,\n\tWorkQueueDerivedState,\n\tWorkQueueOptions,\n\tWorkQueueProjection,\n\tWorkQueueRecord,\n\tWorkQueueRetryPolicy,\n\tWorkQueueStatus,\n\tWorkQueueWorkSnapshot,\n} from \"./types.js\";\n\nexport function workQueue<T = unknown>(graph: Graph, opts: WorkQueueOptions<T>): WorkQueue<T> {\n\tassertNonEmpty(opts.queueId, \"workQueue.queueId\");\n\tassertNonEmpty(opts.topic, \"workQueue.topic\");\n\tassertNonEmpty(opts.subscriptionId, \"workQueue.subscriptionId\");\n\tconst name = opts.name ?? `workQueue/${opts.queueId}`;\n\tconst now = opts.now ?? Date.now;\n\tconst leaseDurationMs = opts.leaseDurationMs ?? 30_000;\n\tconst retry = opts.retry ?? { maxAttempts: 3, delayMs: 0 };\n\tconst admission = opts.bus.subscription<T>({\n\t\ttopic: opts.topic,\n\t\tsubscriptionId: opts.subscriptionId,\n\t\tfrom: opts.from ?? \"earliest\",\n\t\tname: `${name}/admission`,\n\t});\n\tconst commands = graph.node<WorkQueueCommand<T>>(\n\t\t[],\n\t\t(ctx) => {\n\t\t\tfor (const command of depBatch(ctx, 0) ?? []) ctx.down([[\"DATA\", command]]);\n\t\t},\n\t\t{\n\t\t\tname: `${name}/commands`,\n\t\t\tfactory: \"workQueueCommands\",\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\tconst state: RuntimeState<T> = {\n\t\trecordSeq: 0,\n\t\tleaseSeq: 0,\n\t\tworks: new Map(),\n\t\tsourceSeqs: new Set(),\n\t\tcommandIds: new Set(),\n\t\tidempotencyKeys: new Set(),\n\t\trecords: [],\n\t\tdeadLetters: [],\n\t};\n\tconst admissionKick = graph.node<\"poll\">([], null, {\n\t\tname: `${name}/admissionKick`,\n\t\tfactory: \"workQueueAdmissionKick\",\n\t\tinitial: \"poll\",\n\t\tcompleteWhenDepsComplete: false,\n\t\terrorWhenDepsError: false,\n\t});\n\tconst admissionPages = graph.node<MessageBusAvailablePage<T>>(\n\t\t[admission.available, admissionKick, opts.bus.messages, opts.bus.status],\n\t\t(ctx) => {\n\t\t\tfor (const page of depBatch(ctx, 0) ?? []) {\n\t\t\t\tctx.down([[\"DATA\", page as MessageBusAvailablePage<T>]]);\n\t\t\t}\n\t\t\tlet shouldPull = (depBatch(ctx, 1)?.length ?? 0) > 0;\n\t\t\tfor (const message of depBatch(ctx, 2) ?? []) {\n\t\t\t\tif ((message as MessageBusMessage<T>).topic === opts.topic) shouldPull = true;\n\t\t\t}\n\t\t\tfor (const status of depBatch(ctx, 3) ?? []) {\n\t\t\t\tif (shouldPollAdmission(status as MessageBusStatus, opts.topic, opts.subscriptionId)) {\n\t\t\t\t\tshouldPull = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (shouldPull) {\n\t\t\t\tctx.upNext([[\"PULL\", { pullId: admission.availablePullId, params: { limit: 100 } }]], 0);\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname: `${name}/admissionPages`,\n\t\t\tfactory: \"workQueueAdmissionPages\",\n\t\t\tpartial: true,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\tconst runtime = graph.node<QueueEvent<T>>(\n\t\t[commands, admissionPages],\n\t\t(ctx) => {\n\t\t\tfor (const page of depBatch(ctx, 1) ?? []) {\n\t\t\t\tfor (const msg of (page as MessageBusAvailablePage<T>).messages) {\n\t\t\t\t\tfor (const event of admitMessage(opts, state, msg, now())) ctx.down([[\"DATA\", event]]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const command of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst commandTime = commandNowMs(command as WorkQueueCommand<T>, now());\n\t\t\t\tfor (const event of reduceQueueCommand(\n\t\t\t\t\topts,\n\t\t\t\t\tstate,\n\t\t\t\t\tcommand as WorkQueueCommand<T>,\n\t\t\t\t\tcommandTime,\n\t\t\t\t\tleaseDurationMs,\n\t\t\t\t\tretry,\n\t\t\t\t)) {\n\t\t\t\t\tctx.down([[\"DATA\", event]]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname: `${name}/runtime`,\n\t\t\tfactory: \"workQueueRuntime\",\n\t\t\tpartial: true,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\tconst records = graph.node<WorkQueueRecord<T>>(\n\t\t[runtime],\n\t\t(ctx) => {\n\t\t\tfor (const event of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst typed = event as QueueEvent<T>;\n\t\t\t\tif (typed.kind === \"record\") ctx.down([[\"DATA\", typed.record]]);\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname: `${name}/records`,\n\t\t\tfactory: \"workQueueRecords\",\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\tconst status = graph.node<WorkQueueStatus>(\n\t\t[runtime],\n\t\t(ctx) => {\n\t\t\tfor (const event of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst typed = event as QueueEvent<T>;\n\t\t\t\tif (typed.kind === \"status\") ctx.down([[\"DATA\", typed.status]]);\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname: `${name}/status`,\n\t\t\tfactory: \"workQueueStatus\",\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\tconst issues = graph.node<DataIssue>(\n\t\t[runtime],\n\t\t(ctx) => {\n\t\t\tfor (const event of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst typed = event as QueueEvent<T>;\n\t\t\t\tif (typed.kind === \"issue\") ctx.down([[\"DATA\", typed.issue]]);\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname: `${name}/issues`,\n\t\t\tfactory: \"workQueueIssues\",\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\tconst admissionAckCommands = graph.node<MessageBusCommand>(\n\t\t[records],\n\t\t(ctx) => {\n\t\t\tfor (const record of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst command = admissionAckCommand(record as WorkQueueRecord<T>);\n\t\t\t\tif (command !== undefined) ctx.down([[\"DATA\", command]]);\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname: `${name}/admissionAckCommands`,\n\t\t\tfactory: \"workQueueAdmissionAckCommands\",\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\tattachMessageBusDeferredCommandSink(graph, opts.bus, admissionAckCommands);\n\tgraph.retain(runtime, { reason: `${name}.workQueue.runtime` });\n\tconst queue: WorkQueue<T> = {\n\t\tcommands,\n\t\trecords,\n\t\tstatus,\n\t\tissues,\n\t\tsubmit(payload, submitOpts = {}) {\n\t\t\tconst command = opts.bus.publish(\n\t\t\t\topts.topic,\n\t\t\t\tsubmitPayload(payload, {\n\t\t\t\t\t...(submitOpts.workId === undefined ? {} : { workId: submitOpts.workId }),\n\t\t\t\t\t...(submitOpts.priority === undefined ? {} : { priority: submitOpts.priority }),\n\t\t\t\t\t...(submitOpts.tags === undefined ? {} : { tags: submitOpts.tags }),\n\t\t\t\t\t...(submitOpts.requirements === undefined\n\t\t\t\t\t\t? {}\n\t\t\t\t\t\t: { requirements: submitOpts.requirements }),\n\t\t\t\t\t...(submitOpts.notBeforeMs === undefined ? {} : { notBeforeMs: submitOpts.notBeforeMs }),\n\t\t\t\t\t...(submitOpts.deadlineMs === undefined ? {} : { deadlineMs: submitOpts.deadlineMs }),\n\t\t\t\t}),\n\t\t\t\t{\n\t\t\t\t\tcommandId: submitOpts.commandId ?? nextCommandId(opts.queueId, \"submit\"),\n\t\t\t\t\tidempotencyKey: submitOpts.idempotencyKey,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn command;\n\t\t},\n\t\tclaim(claimOpts) {\n\t\t\treturn publishQueueCommand(commands, {\n\t\t\t\t...claimOpts,\n\t\t\t\tkind: \"claim\",\n\t\t\t\tcommandId: claimOpts.commandId ?? nextCommandId(opts.queueId, \"claim\"),\n\t\t\t} as WorkQueueCommand<T>);\n\t\t},\n\t\trenewLease(renewOpts) {\n\t\t\treturn publishQueueCommand(commands, {\n\t\t\t\t...renewOpts,\n\t\t\t\tkind: \"renew-lease\",\n\t\t\t\tcommandId: renewOpts.commandId ?? nextCommandId(opts.queueId, \"renew\"),\n\t\t\t} as WorkQueueCommand<T>);\n\t\t},\n\t\trelease(releaseOpts) {\n\t\t\treturn publishQueueCommand(commands, {\n\t\t\t\t...releaseOpts,\n\t\t\t\tkind: \"release\",\n\t\t\t\tcommandId: releaseOpts.commandId ?? nextCommandId(opts.queueId, \"release\"),\n\t\t\t} as WorkQueueCommand<T>);\n\t\t},\n\t\tcomplete(completeOpts) {\n\t\t\treturn publishQueueCommand(commands, {\n\t\t\t\t...completeOpts,\n\t\t\t\tkind: \"complete\",\n\t\t\t\tcommandId: completeOpts.commandId ?? nextCommandId(opts.queueId, \"complete\"),\n\t\t\t} as WorkQueueCommand<T>);\n\t\t},\n\t\tfail(failOpts) {\n\t\t\treturn publishQueueCommand(commands, {\n\t\t\t\t...failOpts,\n\t\t\t\tkind: \"fail\",\n\t\t\t\tcommandId: failOpts.commandId ?? nextCommandId(opts.queueId, \"fail\"),\n\t\t\t} as WorkQueueCommand<T>);\n\t\t},\n\t\tcancel(cancelOpts) {\n\t\t\treturn publishQueueCommand(commands, {\n\t\t\t\t...cancelOpts,\n\t\t\t\tkind: \"cancel\",\n\t\t\t\tcommandId: cancelOpts.commandId ?? nextCommandId(opts.queueId, \"cancel\"),\n\t\t\t} as WorkQueueCommand<T>);\n\t\t},\n\t\tschedule(scheduleOpts) {\n\t\t\treturn publishQueueCommand(commands, {\n\t\t\t\t...scheduleOpts,\n\t\t\t\tkind: \"schedule\",\n\t\t\t\tcommandId: scheduleOpts.commandId ?? nextCommandId(opts.queueId, \"schedule\"),\n\t\t\t} as WorkQueueCommand<T>);\n\t\t},\n\t\texpireLeases(expireOpts = {}) {\n\t\t\treturn publishQueueCommand(commands, {\n\t\t\t\t...expireOpts,\n\t\t\t\tkind: \"expire-leases\",\n\t\t\t\tcommandId: expireOpts.commandId ?? nextCommandId(opts.queueId, \"expire\"),\n\t\t\t} as WorkQueueCommand<T>);\n\t\t},\n\t\tavailable(projectionOpts = {}) {\n\t\t\tconst availablePullId = Symbol(`${name}/available`);\n\t\t\tconst available = graph.node<WorkQueueAvailablePage<T>>(\n\t\t\t\t[records],\n\t\t\t\t(ctx) => {\n\t\t\t\t\tconst params = pullParams<WorkQueueAvailableParams>(ctx.pull);\n\t\t\t\t\tctx.down([[\"DATA\", availablePage(state, params)]]);\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: projectionOpts.name ?? `${name}/available`,\n\t\t\t\t\tfactory: \"workQueueAvailable\",\n\t\t\t\t\tpullId: availablePullId,\n\t\t\t\t\tpartial: true,\n\t\t\t\t\tcompleteWhenDepsComplete: false,\n\t\t\t\t\terrorWhenDepsError: false,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn { available, availablePullId, status, issues };\n\t\t},\n\t\twork(workId, projectionOpts = {}) {\n\t\t\tconst snapshotPullId = Symbol(`${name}/${workId}/snapshot`);\n\t\t\tconst snapshot = graph.node<WorkQueueWorkSnapshot<T>>(\n\t\t\t\t[records],\n\t\t\t\t(ctx) => {\n\t\t\t\t\tctx.down([[\"DATA\", workSnapshot(state, workId)]]);\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: projectionOpts.name ?? `${name}/${workId}`,\n\t\t\t\t\tfactory: \"workQueueWorkSnapshot\",\n\t\t\t\t\tpullId: snapshotPullId,\n\t\t\t\t\tpartial: true,\n\t\t\t\t\tcompleteWhenDepsComplete: false,\n\t\t\t\t\terrorWhenDepsError: false,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn { snapshot, snapshotPullId, status, issues };\n\t\t},\n\t\tdeadLetter(projectionOpts = {}) {\n\t\t\tconst snapshotPullId = Symbol(`${name}/deadLetter`);\n\t\t\tconst snapshot = graph.node<WorkQueueDeadLetterPage<T>>(\n\t\t\t\t[records],\n\t\t\t\t(ctx) => {\n\t\t\t\t\tconst params = pullParams<WorkQueueDeadLetterParams>(ctx.pull);\n\t\t\t\t\tctx.down([[\"DATA\", deadLetterPage(state, params)]]);\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: projectionOpts.name ?? `${name}/deadLetter`,\n\t\t\t\t\tfactory: \"workQueueDeadLetter\",\n\t\t\t\t\tpullId: snapshotPullId,\n\t\t\t\t\tpartial: true,\n\t\t\t\t\tcompleteWhenDepsComplete: false,\n\t\t\t\t\terrorWhenDepsError: false,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn { snapshot, snapshotPullId, status, issues };\n\t\t},\n\t};\n\treturn queue;\n}\n\nfunction shouldPollAdmission(\n\tstatus: MessageBusStatus,\n\ttopic: string,\n\tsubscriptionId: string,\n): boolean {\n\tif (status.topic !== topic) return false;\n\tif (status.kind === \"message-published\" || status.kind === \"retention-trimmed\") return true;\n\treturn (\n\t\tstatus.subscriptionId === subscriptionId &&\n\t\t(status.kind === \"subscription-acked\" || status.kind === \"subscription-sought\")\n\t);\n}\n\nfunction admissionAckCommand<T>(record: WorkQueueRecord<T>): MessageBusCommand | undefined {\n\tconst messageBus = admissionMessageBus(record);\n\tif (messageBus === undefined) return undefined;\n\treturn {\n\t\tkind: \"ack\",\n\t\ttopic: messageBus.topic,\n\t\tsubscriptionId: messageBus.subscriptionId,\n\t\tseq: messageBus.seq,\n\t\tcommandId: `${record.queueId}:admission-ack:${messageBus.topic}:${messageBus.subscriptionId}:${messageBus.seq}`,\n\t};\n}\n\nfunction admissionMessageBus<T>(\n\trecord: WorkQueueRecord<T>,\n): { readonly topic: string; readonly seq: number; readonly subscriptionId: string } | undefined {\n\treturn \"messageBus\" in record ? record.messageBus : undefined;\n}\n\nfunction admitMessage<T>(\n\topts: WorkQueueOptions<T>,\n\tstate: RuntimeState<T>,\n\tmessage: MessageBusMessage<T>,\n\tnowMs: number,\n): QueueEvent<T>[] {\n\tconst source = `${message.topic}:${message.seq}`;\n\tif (state.sourceSeqs.has(source)) return [];\n\tstate.sourceSeqs.add(source);\n\tconst submitted = decodeSubmittedPayload(message.payload);\n\tconst payload = submitted.payload as T;\n\tconst payloadRecord = payloadAsRecord(submitted.meta);\n\tconst workId =\n\t\ttypeof payloadRecord.workId === \"string\"\n\t\t\t? payloadRecord.workId\n\t\t\t: `${opts.queueId}:${message.topic}:${message.seq}`;\n\tif (state.works.has(workId)) {\n\t\tconst record = appendRecord(state, opts.queueId, {\n\t\t\tkind: \"admission-deduped\",\n\t\t\tworkId,\n\t\t\tmessageBus: { topic: message.topic, seq: message.seq, subscriptionId: opts.subscriptionId },\n\t\t\treason: \"duplicate-work\",\n\t\t\texistingWorkId: workId,\n\t\t\trecordedAtMs: nowMs,\n\t\t});\n\t\treturn [\n\t\t\trecordEvent(record),\n\t\t\tstatusEvent(opts.queueId, \"admission-rejected\", nowMs, {\n\t\t\t\tworkId,\n\t\t\t\trecordSeq: record.recordSeq,\n\t\t\t\tissueCode: \"duplicate-work\",\n\t\t\t}),\n\t\t];\n\t}\n\tconst work: WorkState<T> = {\n\t\tworkId,\n\t\tpayload,\n\t\tstate:\n\t\t\ttypeof payloadRecord.notBeforeMs === \"number\" && payloadRecord.notBeforeMs > nowMs\n\t\t\t\t? \"scheduled\"\n\t\t\t\t: \"ready\",\n\t\tadmissionSeq: message.seq,\n\t\tpriority: numberOrUndefined(payloadRecord.priority),\n\t\ttags: stringArrayOrUndefined(payloadRecord.tags),\n\t\trequirements: stringArrayOrUndefined(payloadRecord.requirements),\n\t\tnotBeforeMs: numberOrUndefined(payloadRecord.notBeforeMs),\n\t\tdeadlineMs: numberOrUndefined(payloadRecord.deadlineMs),\n\t\tattempt: 0,\n\t};\n\tstate.works.set(workId, work);\n\tconst record = appendRecord<T>(state, opts.queueId, {\n\t\tkind: \"work-admitted\",\n\t\tworkId,\n\t\tpayload,\n\t\tmessageBus: { topic: message.topic, seq: message.seq, subscriptionId: opts.subscriptionId },\n\t\tpriority: work.priority,\n\t\ttags: work.tags,\n\t\trequirements: work.requirements,\n\t\tnotBeforeMs: work.notBeforeMs,\n\t\tdeadlineMs: work.deadlineMs,\n\t\trecordedAtMs: nowMs,\n\t});\n\treturn [\n\t\trecordEvent(record),\n\t\tstatusEvent(opts.queueId, \"admission-accepted\", nowMs, { workId, recordSeq: record.recordSeq }),\n\t];\n}\n\nfunction reduceQueueCommand<T>(\n\topts: WorkQueueOptions<T>,\n\tstate: RuntimeState<T>,\n\tcommand: WorkQueueCommand<T>,\n\tnowMs: number,\n\tleaseDurationMs: number,\n\tretry: WorkQueueRetryPolicy,\n): QueueEvent<T>[] {\n\tconst invalid = validateQueueCommand(opts.queueId, command);\n\tif (invalid !== undefined)\n\t\treturn rejectQueueCommand<T>(opts.queueId, command, invalid.code, invalid.message, nowMs);\n\tif (state.commandIds.has(command.commandId)) {\n\t\treturn rejectQueueCommand<T>(\n\t\t\topts.queueId,\n\t\t\tcommand,\n\t\t\t\"duplicate-command\",\n\t\t\t\"duplicate commandId\",\n\t\t\tnowMs,\n\t\t);\n\t}\n\tif (command.idempotencyKey !== undefined && state.idempotencyKeys.has(command.idempotencyKey)) {\n\t\treturn rejectQueueCommand<T>(\n\t\t\topts.queueId,\n\t\t\tcommand,\n\t\t\t\"duplicate-command\",\n\t\t\t\"duplicate idempotencyKey\",\n\t\t\tnowMs,\n\t\t);\n\t}\n\tstate.commandIds.add(command.commandId);\n\tif (command.idempotencyKey !== undefined) state.idempotencyKeys.add(command.idempotencyKey);\n\tswitch (command.kind) {\n\t\tcase \"claim\":\n\t\t\treturn claimWork(opts.queueId, state, command, nowMs, leaseDurationMs);\n\t\tcase \"renew-lease\":\n\t\t\treturn renewLease(opts.queueId, state, command, nowMs, leaseDurationMs);\n\t\tcase \"release\":\n\t\t\treturn releaseWork(opts.queueId, state, command, nowMs);\n\t\tcase \"complete\":\n\t\t\treturn completeWork(opts.queueId, state, command, nowMs);\n\t\tcase \"fail\":\n\t\t\treturn failWork(opts.queueId, state, command, nowMs, retry);\n\t\tcase \"cancel\":\n\t\t\treturn cancelWork(opts.queueId, state, command, nowMs);\n\t\tcase \"schedule\":\n\t\t\treturn scheduleWork(opts.queueId, state, command, nowMs);\n\t\tcase \"expire-leases\":\n\t\t\treturn expireLeases(opts.queueId, state, command, nowMs);\n\t\tcase \"submit\":\n\t\t\treturn [\n\t\t\t\tstatusEvent(opts.queueId, \"command-accepted\", nowMs, {\n\t\t\t\t\tcommandId: command.commandId,\n\t\t\t\t\tdetails: { submitUsesMessageBus: true },\n\t\t\t\t}),\n\t\t\t];\n\t}\n}\n\nfunction claimWork<T>(\n\tqueueId: string,\n\tstate: RuntimeState<T>,\n\tcommand: Extract<WorkQueueCommand<T>, { kind: \"claim\" }>,\n\tnowMs: number,\n\tdefaultLeaseDurationMs: number,\n): QueueEvent<T>[] {\n\tconst limit = positiveLimit(command.limit ?? command.requestedWorkIds?.length ?? 1);\n\tconst requested = new Set(command.requestedWorkIds ?? []);\n\tconst events: QueueEvent<T>[] = [];\n\tfor (const work of [...state.works.values()]\n\t\t.filter((entry) => (requested.size === 0 ? true : requested.has(entry.workId)))\n\t\t.filter((entry) => isExpiredLease(entry, nowMs))) {\n\t\tevents.push(...materializeLeaseExpired(queueId, state, work, command.commandId, nowMs));\n\t}\n\tconst candidates = [...state.works.values()]\n\t\t.filter((work) => (requested.size === 0 ? true : requested.has(work.workId)))\n\t\t.filter((work) => isReady(work, nowMs))\n\t\t.sort((a, b) => a.admissionSeq - b.admissionSeq)\n\t\t.slice(0, limit);\n\tif (candidates.length === 0)\n\t\treturn [\n\t\t\t...events,\n\t\t\t...(requested.size === 0\n\t\t\t\t? rejectQueueCommand<T>(queueId, command, \"not-ready\", \"no ready work\", nowMs)\n\t\t\t\t: claimMissEvents(queueId, state, command, requested, new Set(), nowMs)),\n\t\t];\n\tconst claimed = new Set<string>();\n\tfor (const work of candidates) {\n\t\tclaimed.add(work.workId);\n\t\twork.state = \"leased\";\n\t\twork.attempt += 1;\n\t\twork.leaseId = `${work.workId}:lease:${++state.leaseSeq}`;\n\t\twork.workerId = command.workerId;\n\t\twork.leaseExpiresAtMs = nowMs + (command.leaseDurationMs ?? defaultLeaseDurationMs);\n\t\tconst record = appendRecord(state, queueId, {\n\t\t\tkind: \"work-claimed\",\n\t\t\tworkId: work.workId,\n\t\t\tcommandId: command.commandId,\n\t\t\tleaseId: work.leaseId,\n\t\t\tattempt: work.attempt,\n\t\t\tworkerId: command.workerId,\n\t\t\tclaimedAtMs: nowMs,\n\t\t\tleaseExpiresAtMs: work.leaseExpiresAtMs,\n\t\t\trecordedAtMs: nowMs,\n\t\t});\n\t\tevents.push(\n\t\t\trecordEvent(record),\n\t\t\tstatusEvent(queueId, \"command-accepted\", nowMs, {\n\t\t\t\tworkId: work.workId,\n\t\t\t\tcommandId: command.commandId,\n\t\t\t\trecordSeq: record.recordSeq,\n\t\t\t}),\n\t\t);\n\t}\n\tif (requested.size > 0) {\n\t\tevents.push(...claimMissEvents(queueId, state, command, requested, claimed, nowMs));\n\t}\n\treturn events;\n}\n\nfunction claimMissEvents<T>(\n\tqueueId: string,\n\tstate: RuntimeState<T>,\n\tcommand: Extract<WorkQueueCommand<T>, { kind: \"claim\" }>,\n\trequested: ReadonlySet<string>,\n\tclaimed: ReadonlySet<string>,\n\tnowMs: number,\n): QueueEvent<T>[] {\n\tconst events: QueueEvent<T>[] = [];\n\tfor (const workId of requested) {\n\t\tif (claimed.has(workId)) continue;\n\t\tconst work = state.works.get(workId);\n\t\tif (work === undefined) {\n\t\t\tevents.push(\n\t\t\t\t...rejectQueueCommand<T>(\n\t\t\t\t\tqueueId,\n\t\t\t\t\tcommand,\n\t\t\t\t\t\"unknown-work\",\n\t\t\t\t\t`unknown work '${workId}'`,\n\t\t\t\t\tnowMs,\n\t\t\t\t),\n\t\t\t);\n\t\t\tcontinue;\n\t\t}\n\t\tif (isReady(work, nowMs)) continue;\n\t\tconst code = isTerminal(work.state)\n\t\t\t? \"terminal-work\"\n\t\t\t: work.state === \"leased\"\n\t\t\t\t? \"already-leased\"\n\t\t\t\t: \"not-ready\";\n\t\tevents.push(\n\t\t\t...rejectQueueCommand<T>(\n\t\t\t\tqueueId,\n\t\t\t\tcommand,\n\t\t\t\tcode,\n\t\t\t\t`requested work '${workId}' is not claimable`,\n\t\t\t\tnowMs,\n\t\t\t),\n\t\t);\n\t}\n\treturn events;\n}\n\nfunction renewLease<T>(\n\tqueueId: string,\n\tstate: RuntimeState<T>,\n\tcommand: Extract<WorkQueueCommand<T>, { kind: \"renew-lease\" }>,\n\tnowMs: number,\n\tdefaultLeaseDurationMs: number,\n): QueueEvent<T>[] {\n\tconst checked = currentLease(queueId, state, command, nowMs);\n\tif (\"issue\" in checked) return [checked.issue];\n\tif (\"events\" in checked) return checked.events;\n\tconst work = checked.work;\n\tconst previous = work.leaseExpiresAtMs as number;\n\twork.leaseExpiresAtMs =\n\t\tcommand.leaseExpiresAtMs ?? nowMs + (command.leaseDurationMs ?? defaultLeaseDurationMs);\n\tconst record = appendRecord(state, queueId, {\n\t\tkind: \"lease-renewed\",\n\t\tworkId: work.workId,\n\t\tcommandId: command.commandId,\n\t\tleaseId: command.leaseId,\n\t\tattempt: command.attempt,\n\t\tworkerId: command.workerId,\n\t\tpreviousLeaseExpiresAtMs: previous,\n\t\tleaseExpiresAtMs: work.leaseExpiresAtMs,\n\t\trenewedAtMs: nowMs,\n\t\trecordedAtMs: nowMs,\n\t});\n\treturn [\n\t\trecordEvent(record),\n\t\tstatusEvent(queueId, \"command-accepted\", nowMs, {\n\t\t\tworkId: work.workId,\n\t\t\tcommandId: command.commandId,\n\t\t\trecordSeq: record.recordSeq,\n\t\t}),\n\t];\n}\n\nfunction releaseWork<T>(\n\tqueueId: string,\n\tstate: RuntimeState<T>,\n\tcommand: Extract<WorkQueueCommand<T>, { kind: \"release\" }>,\n\tnowMs: number,\n): QueueEvent<T>[] {\n\tconst checked = currentLease(queueId, state, command, nowMs);\n\tif (\"issue\" in checked) return [checked.issue];\n\tif (\"events\" in checked) return checked.events;\n\tconst work = checked.work;\n\twork.state = \"ready\";\n\twork.leaseId = undefined;\n\twork.workerId = undefined;\n\twork.leaseExpiresAtMs = undefined;\n\tconst record = appendRecord(state, queueId, {\n\t\tkind: \"work-released\",\n\t\tworkId: work.workId,\n\t\tcommandId: command.commandId,\n\t\tleaseId: command.leaseId,\n\t\tattempt: command.attempt,\n\t\tworkerId: command.workerId,\n\t\treleasedAtMs: nowMs,\n\t\treason: command.reason,\n\t\trecordedAtMs: nowMs,\n\t});\n\treturn [\n\t\trecordEvent(record),\n\t\tstatusEvent(queueId, \"command-accepted\", nowMs, {\n\t\t\tworkId: work.workId,\n\t\t\tcommandId: command.commandId,\n\t\t\trecordSeq: record.recordSeq,\n\t\t}),\n\t];\n}\n\nfunction completeWork<T>(\n\tqueueId: string,\n\tstate: RuntimeState<T>,\n\tcommand: Extract<WorkQueueCommand<T>, { kind: \"complete\" }>,\n\tnowMs: number,\n): QueueEvent<T>[] {\n\tconst checked = currentLease(queueId, state, command, nowMs);\n\tif (\"issue\" in checked) return [checked.issue];\n\tif (\"events\" in checked) return checked.events;\n\tconst work = checked.work;\n\twork.state = \"completed\";\n\tclearLease(work);\n\twork.terminalRecordSeq = state.recordSeq + 2;\n\tconst attempt = appendRecord(state, queueId, {\n\t\tkind: \"attempt-completed\",\n\t\tworkId: work.workId,\n\t\tcommandId: command.commandId,\n\t\tleaseId: command.leaseId,\n\t\tattempt: command.attempt,\n\t\tworkerId: command.workerId,\n\t\tresult: command.result,\n\t\trecordedAtMs: nowMs,\n\t});\n\tconst done = appendRecord(state, queueId, {\n\t\tkind: \"work-completed\",\n\t\tworkId: work.workId,\n\t\tcommandId: command.commandId,\n\t\tleaseId: command.leaseId,\n\t\tattempt: command.attempt,\n\t\tworkerId: command.workerId,\n\t\tresult: command.result,\n\t\trecordedAtMs: nowMs,\n\t});\n\treturn [\n\t\trecordEvent(attempt),\n\t\trecordEvent(done),\n\t\tstatusEvent(queueId, \"command-accepted\", nowMs, {\n\t\t\tworkId: work.workId,\n\t\t\tcommandId: command.commandId,\n\t\t\trecordSeq: done.recordSeq,\n\t\t}),\n\t];\n}\n\nfunction failWork<T>(\n\tqueueId: string,\n\tstate: RuntimeState<T>,\n\tcommand: Extract<WorkQueueCommand<T>, { kind: \"fail\" }>,\n\tnowMs: number,\n\tretry: WorkQueueRetryPolicy,\n): QueueEvent<T>[] {\n\tconst checked = currentLease(queueId, state, command, nowMs);\n\tif (\"issue\" in checked) return [checked.issue];\n\tif (\"events\" in checked) return checked.events;\n\tconst work = checked.work;\n\tconst failed = appendRecord(state, queueId, {\n\t\tkind: \"attempt-failed\",\n\t\tworkId: work.workId,\n\t\tcommandId: command.commandId,\n\t\tleaseId: command.leaseId,\n\t\tattempt: command.attempt,\n\t\tworkerId: command.workerId,\n\t\terror: command.error,\n\t\tretryable: command.retryable,\n\t\trecordedAtMs: nowMs,\n\t});\n\tconst maxAttempts = retry.maxAttempts ?? 3;\n\tif (command.retryable === false || work.attempt >= maxAttempts) {\n\t\twork.state = \"dead-lettered\";\n\t\tclearLease(work);\n\t\twork.retryAtMs = undefined;\n\t\tconst dead = appendRecord(state, queueId, {\n\t\t\tkind: \"work-dead-lettered\",\n\t\t\tworkId: work.workId,\n\t\t\tcommandId: command.commandId,\n\t\t\treason: command.retryable === false ? \"non-retryable\" : \"attempts-exhausted\",\n\t\t\texhaustedAttempts: work.attempt,\n\t\t\trecordedAtMs: nowMs,\n\t\t});\n\t\tstate.deadLetters.push(dead);\n\t\treturn [\n\t\t\trecordEvent(failed),\n\t\t\trecordEvent(dead),\n\t\t\tstatusEvent(queueId, \"command-accepted\", nowMs, {\n\t\t\t\tworkId: work.workId,\n\t\t\t\tcommandId: command.commandId,\n\t\t\t\trecordSeq: dead.recordSeq,\n\t\t\t}),\n\t\t];\n\t}\n\tconst delayMs = retry.delayMs ?? 0;\n\twork.state = delayMs > 0 ? \"retry-wait\" : \"ready\";\n\twork.retryAtMs = nowMs + delayMs;\n\tclearLease(work);\n\tconst retryRecord = appendRecord(state, queueId, {\n\t\tkind: \"retry-scheduled\",\n\t\tworkId: work.workId,\n\t\tcommandId: command.commandId,\n\t\tretryAtMs: work.retryAtMs,\n\t\tdelayMs,\n\t\treason: \"retry-policy\",\n\t\trecordedAtMs: nowMs,\n\t});\n\treturn [\n\t\trecordEvent(failed),\n\t\trecordEvent(retryRecord),\n\t\tstatusEvent(queueId, \"command-accepted\", nowMs, {\n\t\t\tworkId: work.workId,\n\t\t\tcommandId: command.commandId,\n\t\t\trecordSeq: retryRecord.recordSeq,\n\t\t}),\n\t];\n}\n\nfunction cancelWork<T>(\n\tqueueId: string,\n\tstate: RuntimeState<T>,\n\tcommand: Extract<WorkQueueCommand<T>, { kind: \"cancel\" }>,\n\tnowMs: number,\n): QueueEvent<T>[] {\n\tconst work = state.works.get(command.workId);\n\tif (work === undefined)\n\t\treturn [issueEvent(queueId, \"unknown-work\", \"unknown work\", nowMs, command)];\n\tif (isTerminal(work.state))\n\t\treturn [issueEvent(queueId, \"terminal-work\", \"work is terminal\", nowMs, command)];\n\twork.state = \"canceled\";\n\tconst canceledLeaseId = work.leaseId;\n\tconst attempt = work.attempt || undefined;\n\tconst record = appendRecord(state, queueId, {\n\t\tkind: \"work-canceled\",\n\t\tworkId: work.workId,\n\t\tcommandId: command.commandId,\n\t\treason: command.reason,\n\t\tcanceledAtMs: nowMs,\n\t\tcanceledLeaseId,\n\t\tattempt,\n\t\trecordedAtMs: nowMs,\n\t});\n\tclearLease(work);\n\treturn [\n\t\trecordEvent(record),\n\t\tstatusEvent(queueId, \"command-accepted\", nowMs, {\n\t\t\tworkId: work.workId,\n\t\t\tcommandId: command.commandId,\n\t\t\trecordSeq: record.recordSeq,\n\t\t}),\n\t];\n}\n\nfunction scheduleWork<T>(\n\tqueueId: string,\n\tstate: RuntimeState<T>,\n\tcommand: Extract<WorkQueueCommand<T>, { kind: \"schedule\" }>,\n\tnowMs: number,\n): QueueEvent<T>[] {\n\tconst work = state.works.get(command.workId);\n\tif (work === undefined)\n\t\treturn [issueEvent(queueId, \"unknown-work\", \"unknown work\", nowMs, command)];\n\tif (isTerminal(work.state))\n\t\treturn [issueEvent(queueId, \"terminal-work\", \"work is terminal\", nowMs, command)];\n\twork.state = \"scheduled\";\n\twork.notBeforeMs = command.notBeforeMs;\n\twork.deadlineMs = command.deadlineMs;\n\tconst record = appendRecord(state, queueId, {\n\t\tkind: \"work-scheduled\",\n\t\tworkId: work.workId,\n\t\tcommandId: command.commandId,\n\t\tscheduleId: command.scheduleId,\n\t\tscheduleAtMs: command.scheduleAtMs,\n\t\trunAtMs: command.runAtMs,\n\t\tnotBeforeMs: command.notBeforeMs,\n\t\tdeadlineMs: command.deadlineMs,\n\t\treason: command.reason,\n\t\trecordedAtMs: nowMs,\n\t});\n\treturn [\n\t\trecordEvent(record),\n\t\tstatusEvent(queueId, \"command-accepted\", nowMs, {\n\t\t\tworkId: work.workId,\n\t\t\tcommandId: command.commandId,\n\t\t\trecordSeq: record.recordSeq,\n\t\t}),\n\t];\n}\n\nfunction expireLeases<T>(\n\tqueueId: string,\n\tstate: RuntimeState<T>,\n\tcommand: Extract<WorkQueueCommand<T>, { kind: \"expire-leases\" }>,\n\tnowMs: number,\n): QueueEvent<T>[] {\n\tconst workIds = new Set(command.workIds ?? []);\n\tconst limit = positiveLimit(command.limit ?? Number.MAX_SAFE_INTEGER);\n\tconst expired = [...state.works.values()]\n\t\t.filter(\n\t\t\t(work) =>\n\t\t\t\twork.state === \"leased\" &&\n\t\t\t\twork.leaseExpiresAtMs !== undefined &&\n\t\t\t\twork.leaseExpiresAtMs <= nowMs,\n\t\t)\n\t\t.filter((work) => workIds.size === 0 || workIds.has(work.workId))\n\t\t.slice(0, limit);\n\tif (expired.length === 0)\n\t\treturn [statusEvent(queueId, \"maintenance-noop\", nowMs, { commandId: command.commandId })];\n\tconst events: QueueEvent<T>[] = [];\n\tfor (const work of expired) {\n\t\tevents.push(...materializeLeaseExpired(queueId, state, work, command.commandId, nowMs));\n\t}\n\tevents.push(\n\t\tstatusEvent(queueId, \"maintenance-applied\", nowMs, {\n\t\t\tcommandId: command.commandId,\n\t\t\tdetails: { expired: expired.length },\n\t\t}),\n\t);\n\treturn events;\n}\n\nfunction currentLease<T>(\n\tqueueId: string,\n\tstate: RuntimeState<T>,\n\tcommand: {\n\t\tcommandId?: string;\n\t\tworkId: string;\n\t\tleaseId: string;\n\t\tattempt: number;\n\t\tworkerId: string;\n\t},\n\tnowMs: number,\n): { work: WorkState<T> } | { issue: QueueEvent<T> } | { events: QueueEvent<T>[] } {\n\tconst work = state.works.get(command.workId);\n\tif (work === undefined)\n\t\treturn { issue: issueEvent(queueId, \"unknown-work\", \"unknown work\", nowMs, command) };\n\tif (isTerminal(work.state))\n\t\treturn { issue: issueEvent(queueId, \"terminal-work\", \"work is terminal\", nowMs, command) };\n\tif (work.state !== \"leased\")\n\t\treturn {\n\t\t\tissue: issueEvent(queueId, \"lease-not-current\", \"work is not leased\", nowMs, command),\n\t\t};\n\tif (work.leaseId !== command.leaseId)\n\t\treturn { issue: issueEvent(queueId, \"stale-lease\", \"lease is not current\", nowMs, command) };\n\tif (work.attempt !== command.attempt)\n\t\treturn { issue: issueEvent(queueId, \"attempt-mismatch\", \"attempt mismatch\", nowMs, command) };\n\tif (work.workerId !== command.workerId)\n\t\treturn { issue: issueEvent(queueId, \"worker-mismatch\", \"worker mismatch\", nowMs, command) };\n\tif (isExpiredLease(work, nowMs))\n\t\treturn {\n\t\t\tevents: materializeLeaseExpired(queueId, state, work, command.commandId, nowMs, {\n\t\t\t\tcommand,\n\t\t\t\tcode: \"lease-expired\",\n\t\t\t\tmessage: \"lease expired\",\n\t\t\t}),\n\t\t};\n\treturn { work };\n}\n"],"mappings":"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","names":["status","record"]}