@graphrefly/ts 0.0.0 → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/README.md +135 -0
  2. package/dist/adapters/index.cjs +105 -66
  3. package/dist/adapters/index.cjs.map +1 -1
  4. package/dist/adapters/index.d.cts +11 -136
  5. package/dist/adapters/index.d.ts +11 -136
  6. package/dist/adapters/index.js +27 -225
  7. package/dist/adapters/index.js.map +1 -1
  8. package/dist/adapters/observe-storage.d.cts +4 -4
  9. package/dist/adapters/observe-storage.d.ts +4 -4
  10. package/dist/adapters/observe-storage.js +1 -0
  11. package/dist/adapters/observe-storage.js.map +1 -1
  12. package/dist/adapters/react.cjs +166 -0
  13. package/dist/adapters/react.cjs.map +1 -0
  14. package/dist/adapters/react.d.cts +31 -0
  15. package/dist/adapters/react.d.ts +31 -0
  16. package/dist/adapters/react.js +51 -0
  17. package/dist/adapters/react.js.map +1 -0
  18. package/dist/adapters/solid.cjs +157 -0
  19. package/dist/adapters/solid.cjs.map +1 -0
  20. package/dist/adapters/solid.d.cts +26 -0
  21. package/dist/adapters/solid.d.ts +26 -0
  22. package/dist/adapters/solid.js +48 -0
  23. package/dist/adapters/solid.js.map +1 -0
  24. package/dist/adapters/svelte.cjs +148 -0
  25. package/dist/adapters/svelte.cjs.map +1 -0
  26. package/dist/adapters/svelte.d.cts +31 -0
  27. package/dist/adapters/svelte.d.ts +31 -0
  28. package/dist/adapters/svelte.js +46 -0
  29. package/dist/adapters/svelte.js.map +1 -0
  30. package/dist/adapters/vue.cjs +155 -0
  31. package/dist/adapters/vue.cjs.map +1 -0
  32. package/dist/adapters/vue.d.cts +26 -0
  33. package/dist/adapters/vue.d.ts +26 -0
  34. package/dist/adapters/vue.js +46 -0
  35. package/dist/adapters/vue.js.map +1 -0
  36. package/dist/agent-runtime-BesGDZcB.d.ts +555 -0
  37. package/dist/agent-runtime-DZTJ3C-p.d.cts +555 -0
  38. package/dist/agentic-memory-BmRCvh0d.d.ts +517 -0
  39. package/dist/agentic-memory-DfuVZ-lY.d.cts +517 -0
  40. package/dist/capability-admission-B0BzqAm5.d.cts +102 -0
  41. package/dist/capability-admission-g0mn9hpq.d.ts +102 -0
  42. package/dist/{chunk-JR4IKCR2.js → chunk-2747WN4Y.js} +5 -5
  43. package/dist/{chunk-2ILL7HQI.js → chunk-3JR3EDB2.js} +17 -17
  44. package/dist/{chunk-2ILL7HQI.js.map → chunk-3JR3EDB2.js.map} +1 -1
  45. package/dist/{chunk-GDL26N2T.js → chunk-3KN7NJDR.js} +2 -2
  46. package/dist/{chunk-DJC4CHLQ.js → chunk-43BKLFZU.js} +9 -9
  47. package/dist/chunk-6XAIOL3X.js +2407 -0
  48. package/dist/chunk-6XAIOL3X.js.map +1 -0
  49. package/dist/{chunk-SCRFRCGR.js → chunk-BSQGE5PS.js} +1 -1
  50. package/dist/{chunk-Y3ZLRGHC.js → chunk-CZNV3VXM.js} +16 -16
  51. package/dist/chunk-DGUM43GV.js +11 -0
  52. package/dist/chunk-DGUM43GV.js.map +1 -0
  53. package/dist/{chunk-JIMUDQN3.js → chunk-FBUU43PM.js} +2 -2
  54. package/dist/chunk-H75VXTGT.js +219 -0
  55. package/dist/chunk-H75VXTGT.js.map +1 -0
  56. package/dist/{chunk-RIIOUTGM.js → chunk-HKK2JD7Z.js} +12 -9
  57. package/dist/chunk-HKK2JD7Z.js.map +1 -0
  58. package/dist/{chunk-D6BG7U6A.js → chunk-IXZBUWSP.js} +3 -3
  59. package/dist/chunk-PC3BTTBE.js +3217 -0
  60. package/dist/chunk-PC3BTTBE.js.map +1 -0
  61. package/dist/chunk-QFY4AFY4.js +879 -0
  62. package/dist/chunk-QFY4AFY4.js.map +1 -0
  63. package/dist/{chunk-DK554R7P.js → chunk-S6HXABGL.js} +2 -1
  64. package/dist/chunk-S6HXABGL.js.map +1 -0
  65. package/dist/{chunk-PKVBHGBM.js → chunk-SS2A464I.js} +7 -7
  66. package/dist/chunk-UT3MHJCW.js +49 -0
  67. package/dist/chunk-UT3MHJCW.js.map +1 -0
  68. package/dist/{chunk-G4M3NHRJ.js → chunk-V7CIJE4B.js} +3 -3
  69. package/dist/{chunk-TEW47IVR.js → chunk-VPEFSDME.js} +2 -2
  70. package/dist/chunk-VTHLCFN4.js +368 -0
  71. package/dist/chunk-VTHLCFN4.js.map +1 -0
  72. package/dist/{chunk-SWTLEQL6.js → chunk-WQIA3GFB.js} +2 -2
  73. package/dist/chunk-WQIA3GFB.js.map +1 -0
  74. package/dist/{chunk-I3IHOHCJ.js → chunk-XKXWK2KP.js} +108 -64
  75. package/dist/chunk-XKXWK2KP.js.map +1 -0
  76. package/dist/{chunk-COHO25CZ.js → chunk-YDSIVHRR.js} +553 -7
  77. package/dist/chunk-YDSIVHRR.js.map +1 -0
  78. package/dist/chunk-YXMZ2N6J.js +1884 -0
  79. package/dist/chunk-YXMZ2N6J.js.map +1 -0
  80. package/dist/composition/index.cjs +102 -57
  81. package/dist/composition/index.cjs.map +1 -1
  82. package/dist/composition/index.d.cts +4 -4
  83. package/dist/composition/index.d.ts +4 -4
  84. package/dist/composition/index.js +6 -5
  85. package/dist/core/index.cjs +102 -57
  86. package/dist/core/index.cjs.map +1 -1
  87. package/dist/core/index.d.cts +2 -2
  88. package/dist/core/index.d.ts +2 -2
  89. package/dist/core/index.js +5 -4
  90. package/dist/cqrs/index.cjs.map +1 -1
  91. package/dist/cqrs/index.d.cts +4 -4
  92. package/dist/cqrs/index.d.ts +4 -4
  93. package/dist/cqrs/index.js +3 -2
  94. package/dist/cqrs/index.js.map +1 -1
  95. package/dist/cqrs/messaging.cjs +312 -0
  96. package/dist/cqrs/messaging.cjs.map +1 -0
  97. package/dist/cqrs/messaging.d.cts +57 -0
  98. package/dist/cqrs/messaging.d.ts +57 -0
  99. package/dist/cqrs/messaging.js +274 -0
  100. package/dist/cqrs/messaging.js.map +1 -0
  101. package/dist/cqrs/work-queue.cjs +329 -0
  102. package/dist/cqrs/work-queue.cjs.map +1 -0
  103. package/dist/cqrs/work-queue.d.cts +90 -0
  104. package/dist/cqrs/work-queue.d.ts +90 -0
  105. package/dist/cqrs/work-queue.js +292 -0
  106. package/dist/cqrs/work-queue.js.map +1 -0
  107. package/dist/data/index.cjs +19 -0
  108. package/dist/data/index.cjs.map +1 -0
  109. package/dist/data/index.d.cts +36 -0
  110. package/dist/data/index.d.ts +36 -0
  111. package/dist/data/index.js +1 -0
  112. package/dist/data/index.js.map +1 -0
  113. package/dist/data-structures/index.cjs +105 -57
  114. package/dist/data-structures/index.cjs.map +1 -1
  115. package/dist/data-structures/index.d.cts +8 -8
  116. package/dist/data-structures/index.d.ts +8 -8
  117. package/dist/data-structures/index.js +7 -6
  118. package/dist/{describe-BZb7AS2y.d.ts → describe-BpyJuWkw.d.ts} +1 -1
  119. package/dist/{describe-Ciu8SUnN.d.cts → describe-DYMw_l1C.d.cts} +1 -1
  120. package/dist/executors/work-queue.cjs +342 -0
  121. package/dist/executors/work-queue.cjs.map +1 -0
  122. package/dist/executors/work-queue.d.cts +90 -0
  123. package/dist/executors/work-queue.d.ts +90 -0
  124. package/dist/executors/work-queue.js +306 -0
  125. package/dist/executors/work-queue.js.map +1 -0
  126. package/dist/graph/index.cjs +112 -58
  127. package/dist/graph/index.cjs.map +1 -1
  128. package/dist/graph/index.d.cts +9 -9
  129. package/dist/graph/index.d.ts +9 -9
  130. package/dist/graph/index.js +18 -17
  131. package/dist/{graph-DfdF9zy4.d.ts → graph-D-1-SQeC.d.ts} +3 -3
  132. package/dist/{graph-s23RbbFO.d.cts → graph-DCEWh4T2.d.cts} +3 -3
  133. package/dist/{index-CAEmLCYF.d.cts → index-72VZC0-E.d.cts} +2 -2
  134. package/dist/{index-SnzZu3x7.d.ts → index-Bmxeu0nK.d.ts} +2 -2
  135. package/dist/index.cjs +112 -58
  136. package/dist/index.cjs.map +1 -1
  137. package/dist/index.d.cts +11 -10
  138. package/dist/index.d.ts +11 -10
  139. package/dist/index.js +118 -113
  140. package/dist/inspection/boundary.cjs +98 -0
  141. package/dist/inspection/boundary.cjs.map +1 -0
  142. package/dist/inspection/boundary.d.cts +61 -0
  143. package/dist/inspection/boundary.d.ts +61 -0
  144. package/dist/inspection/boundary.js +75 -0
  145. package/dist/inspection/boundary.js.map +1 -0
  146. package/dist/{messages-BZqrGGm1.d.ts → messages-CAzUPPJM.d.cts} +10 -5
  147. package/dist/{messages-BZqrGGm1.d.cts → messages-CAzUPPJM.d.ts} +10 -5
  148. package/dist/messaging/index.cjs +744 -613
  149. package/dist/messaging/index.cjs.map +1 -1
  150. package/dist/messaging/index.d.cts +216 -160
  151. package/dist/messaging/index.d.ts +216 -160
  152. package/dist/messaging/index.js +19 -749
  153. package/dist/messaging/index.js.map +1 -1
  154. package/dist/operators/index.cjs +102 -57
  155. package/dist/operators/index.cjs.map +1 -1
  156. package/dist/operators/index.d.cts +6 -6
  157. package/dist/operators/index.d.ts +6 -6
  158. package/dist/operators/index.js +8 -7
  159. package/dist/orchestration/index.cjs +3333 -59
  160. package/dist/orchestration/index.cjs.map +1 -1
  161. package/dist/orchestration/index.d.cts +7 -4
  162. package/dist/orchestration/index.d.ts +7 -4
  163. package/dist/orchestration/index.js +49 -8
  164. package/dist/orchestration/index.js.map +1 -1
  165. package/dist/orchestration/messaging.cjs +314 -0
  166. package/dist/orchestration/messaging.cjs.map +1 -0
  167. package/dist/orchestration/messaging.d.cts +59 -0
  168. package/dist/orchestration/messaging.d.ts +59 -0
  169. package/dist/orchestration/messaging.js +276 -0
  170. package/dist/orchestration/messaging.js.map +1 -0
  171. package/dist/orchestration/work-queue.cjs +262 -0
  172. package/dist/orchestration/work-queue.cjs.map +1 -0
  173. package/dist/orchestration/work-queue.d.cts +85 -0
  174. package/dist/orchestration/work-queue.d.ts +85 -0
  175. package/dist/orchestration/work-queue.js +226 -0
  176. package/dist/orchestration/work-queue.js.map +1 -0
  177. package/dist/patterns/event-flow.cjs +447 -0
  178. package/dist/patterns/event-flow.cjs.map +1 -0
  179. package/dist/patterns/event-flow.d.cts +115 -0
  180. package/dist/patterns/event-flow.d.ts +115 -0
  181. package/dist/patterns/event-flow.js +14 -0
  182. package/dist/patterns/event-flow.js.map +1 -0
  183. package/dist/patterns/index.cjs +423 -18
  184. package/dist/patterns/index.cjs.map +1 -1
  185. package/dist/patterns/index.d.cts +8 -5
  186. package/dist/patterns/index.d.ts +8 -5
  187. package/dist/patterns/index.js +13 -4
  188. package/dist/{reactive-collection-Cb1II1Fi.d.ts → reactive-collection-BAmfrGjd.d.ts} +9 -9
  189. package/dist/{reactive-collection-BxBqtIOE.d.cts → reactive-collection-DNV0-gFi.d.cts} +9 -9
  190. package/dist/{reactive-collection-storage-D-KmjE0J.d.cts → reactive-collection-storage-BNEldDyi.d.cts} +5 -5
  191. package/dist/{reactive-collection-storage-BNiEc-Gd.d.ts → reactive-collection-storage-YZsAQsWK.d.ts} +5 -5
  192. package/dist/{reactive-map-D-g3dv8I.d.cts → reactive-map-DRD1LJ2H.d.cts} +6 -6
  193. package/dist/{reactive-map-BcB4KsQR.d.ts → reactive-map-EsDiCmJk.d.ts} +6 -6
  194. package/dist/render/index.d.cts +3 -3
  195. package/dist/render/index.d.ts +3 -3
  196. package/dist/render/index.js +1 -0
  197. package/dist/{semantic-memory-graph-BYoIlP35.d.cts → semantic-memory-graph-DKuNzuWw.d.cts} +2 -2
  198. package/dist/{semantic-memory-graph-CxyXLms3.d.ts → semantic-memory-graph-uwbwJdhe.d.ts} +2 -2
  199. package/dist/solutions/index.cjs +4478 -2
  200. package/dist/solutions/index.cjs.map +1 -1
  201. package/dist/solutions/index.d.cts +13 -519
  202. package/dist/solutions/index.d.ts +13 -519
  203. package/dist/solutions/index.js +90 -6
  204. package/dist/solutions/reactive-layout/browser/index.cjs +449 -0
  205. package/dist/solutions/reactive-layout/browser/index.cjs.map +1 -0
  206. package/dist/solutions/reactive-layout/browser/index.d.cts +44 -0
  207. package/dist/solutions/reactive-layout/browser/index.d.ts +44 -0
  208. package/dist/solutions/reactive-layout/browser/index.js +69 -0
  209. package/dist/solutions/reactive-layout/browser/index.js.map +1 -0
  210. package/dist/solutions/reactive-layout/index.cjs +4266 -0
  211. package/dist/solutions/reactive-layout/index.cjs.map +1 -0
  212. package/dist/solutions/reactive-layout/index.d.cts +581 -0
  213. package/dist/solutions/reactive-layout/index.d.ts +581 -0
  214. package/dist/solutions/reactive-layout/index.js +86 -0
  215. package/dist/solutions/reactive-layout/index.js.map +1 -0
  216. package/dist/solutions/reactive-layout/node-canvas/index.cjs +545 -0
  217. package/dist/solutions/reactive-layout/node-canvas/index.cjs.map +1 -0
  218. package/dist/solutions/reactive-layout/node-canvas/index.d.cts +54 -0
  219. package/dist/solutions/reactive-layout/node-canvas/index.d.ts +54 -0
  220. package/dist/solutions/reactive-layout/node-canvas/index.js +131 -0
  221. package/dist/solutions/reactive-layout/node-canvas/index.js.map +1 -0
  222. package/dist/solutions/reactive-layout/react-native/index.cjs +494 -0
  223. package/dist/solutions/reactive-layout/react-native/index.cjs.map +1 -0
  224. package/dist/solutions/reactive-layout/react-native/index.d.cts +51 -0
  225. package/dist/solutions/reactive-layout/react-native/index.d.ts +51 -0
  226. package/dist/solutions/reactive-layout/react-native/index.js +77 -0
  227. package/dist/solutions/reactive-layout/react-native/index.js.map +1 -0
  228. package/dist/solutions/reactive-layout/skia/index.cjs +547 -0
  229. package/dist/solutions/reactive-layout/skia/index.cjs.map +1 -0
  230. package/dist/solutions/reactive-layout/skia/index.d.cts +64 -0
  231. package/dist/solutions/reactive-layout/skia/index.d.ts +64 -0
  232. package/dist/solutions/reactive-layout/skia/index.js +70 -0
  233. package/dist/solutions/reactive-layout/skia/index.js.map +1 -0
  234. package/dist/solutions/work-item/actions.cjs +2164 -0
  235. package/dist/solutions/work-item/actions.cjs.map +1 -0
  236. package/dist/solutions/work-item/actions.d.cts +201 -0
  237. package/dist/solutions/work-item/actions.d.ts +201 -0
  238. package/dist/solutions/work-item/actions.js +1454 -0
  239. package/dist/solutions/work-item/actions.js.map +1 -0
  240. package/dist/solutions/work-item/scheduling.cjs +2454 -0
  241. package/dist/solutions/work-item/scheduling.cjs.map +1 -0
  242. package/dist/solutions/work-item/scheduling.d.cts +433 -0
  243. package/dist/solutions/work-item/scheduling.d.ts +433 -0
  244. package/dist/solutions/work-item/scheduling.js +32 -0
  245. package/dist/solutions/work-item/scheduling.js.map +1 -0
  246. package/dist/solutions/work-item/work-queue.cjs +306 -0
  247. package/dist/solutions/work-item/work-queue.cjs.map +1 -0
  248. package/dist/solutions/work-item/work-queue.d.cts +71 -0
  249. package/dist/solutions/work-item/work-queue.d.ts +71 -0
  250. package/dist/solutions/work-item/work-queue.js +270 -0
  251. package/dist/solutions/work-item/work-queue.js.map +1 -0
  252. package/dist/sources/browser.cjs +169 -57
  253. package/dist/sources/browser.cjs.map +1 -1
  254. package/dist/sources/browser.d.cts +33 -6
  255. package/dist/sources/browser.d.ts +33 -6
  256. package/dist/sources/browser.js +73 -6
  257. package/dist/sources/browser.js.map +1 -1
  258. package/dist/sources/index.cjs +102 -57
  259. package/dist/sources/index.cjs.map +1 -1
  260. package/dist/sources/index.d.cts +5 -5
  261. package/dist/sources/index.d.ts +5 -5
  262. package/dist/sources/index.js +6 -5
  263. package/dist/sources/node.cjs.map +1 -1
  264. package/dist/sources/node.d.cts +4 -4
  265. package/dist/sources/node.d.ts +4 -4
  266. package/dist/sources/node.js +2 -1
  267. package/dist/sources/node.js.map +1 -1
  268. package/dist/storage/browser.js +1 -0
  269. package/dist/storage/browser.js.map +1 -1
  270. package/dist/storage/index.d.cts +5 -5
  271. package/dist/storage/index.d.ts +5 -5
  272. package/dist/storage/index.js +5 -4
  273. package/dist/storage/node.js +1 -0
  274. package/dist/storage/node.js.map +1 -1
  275. package/dist/store-C-joM4gh.d.ts +123 -0
  276. package/dist/store-CNJwmT-h.d.cts +123 -0
  277. package/dist/testing/index.cjs +1 -0
  278. package/dist/testing/index.cjs.map +1 -1
  279. package/dist/testing/index.d.cts +1 -1
  280. package/dist/testing/index.d.ts +1 -1
  281. package/dist/testing/index.js +3 -2
  282. package/dist/{types-h12mNYbq.d.ts → types-BsJvElYZ.d.ts} +31 -31
  283. package/dist/{types-bNMSWKqF.d.cts → types-CcPIn7sy.d.cts} +31 -31
  284. package/dist/work-item-runtime-C3M79vE9.d.ts +228 -0
  285. package/dist/work-item-runtime-qaVgsL0T.d.cts +228 -0
  286. package/dist/work-queue/index.cjs +1132 -0
  287. package/dist/work-queue/index.cjs.map +1 -0
  288. package/dist/work-queue/index.d.cts +369 -0
  289. package/dist/work-queue/index.d.ts +369 -0
  290. package/dist/work-queue/index.js +1078 -0
  291. package/dist/work-queue/index.js.map +1 -0
  292. package/package.json +266 -2
  293. package/dist/chunk-COHO25CZ.js.map +0 -1
  294. package/dist/chunk-DK554R7P.js.map +0 -1
  295. package/dist/chunk-I3IHOHCJ.js.map +0 -1
  296. package/dist/chunk-RIIOUTGM.js.map +0 -1
  297. package/dist/chunk-SWTLEQL6.js.map +0 -1
  298. /package/dist/{chunk-JR4IKCR2.js.map → chunk-2747WN4Y.js.map} +0 -0
  299. /package/dist/{chunk-GDL26N2T.js.map → chunk-3KN7NJDR.js.map} +0 -0
  300. /package/dist/{chunk-DJC4CHLQ.js.map → chunk-43BKLFZU.js.map} +0 -0
  301. /package/dist/{chunk-SCRFRCGR.js.map → chunk-BSQGE5PS.js.map} +0 -0
  302. /package/dist/{chunk-Y3ZLRGHC.js.map → chunk-CZNV3VXM.js.map} +0 -0
  303. /package/dist/{chunk-JIMUDQN3.js.map → chunk-FBUU43PM.js.map} +0 -0
  304. /package/dist/{chunk-D6BG7U6A.js.map → chunk-IXZBUWSP.js.map} +0 -0
  305. /package/dist/{chunk-PKVBHGBM.js.map → chunk-SS2A464I.js.map} +0 -0
  306. /package/dist/{chunk-G4M3NHRJ.js.map → chunk-V7CIJE4B.js.map} +0 -0
  307. /package/dist/{chunk-TEW47IVR.js.map → chunk-VPEFSDME.js.map} +0 -0
@@ -0,0 +1,90 @@
1
+ import { DataIssue } from '../data/index.js';
2
+ import { d as Graph } from '../graph-D-1-SQeC.js';
3
+ import { N as Node } from '../types-BsJvElYZ.js';
4
+ import { S as SourceRef, A as AgentRequestIssued, E as ExecutorOutcome } from '../agent-runtime-BesGDZcB.js';
5
+ import { WorkQueueCommand, WorkQueueRecord } from '../work-queue/index.js';
6
+ import '../core/index.js';
7
+ import '../messages-CAzUPPJM.js';
8
+ import '../codec-BB7p8fJc.js';
9
+ import '../describe-BpyJuWkw.js';
10
+ import '../messaging/index.js';
11
+
12
+ /**
13
+ * Durable executor dispatch recipe over workQueue (D328/D331).
14
+ *
15
+ * Claim records become graph-visible dispatch-attempt facts. Executor outcomes become queue
16
+ * lifecycle commands. The recipe never calls ExecutorBinding or treats a queue claim as dispatch.
17
+ */
18
+
19
+ interface ExecutorQueuedDispatchPayload {
20
+ readonly kind: "executor-queued-dispatch";
21
+ readonly requestId: string;
22
+ readonly operationId: string;
23
+ readonly parentRequestId?: string;
24
+ readonly sourceDecisionId?: string;
25
+ readonly intentId?: string;
26
+ readonly inputId?: string;
27
+ readonly toolCallSeriesId?: string;
28
+ readonly routeId?: string;
29
+ readonly profileId?: string;
30
+ readonly executorId?: string;
31
+ readonly effectRunId?: string;
32
+ readonly promptBundleRefs?: readonly SourceRef[];
33
+ readonly toolDefinitionRefs?: readonly SourceRef[];
34
+ readonly policyRefs?: readonly SourceRef[];
35
+ readonly budgetRefs?: readonly SourceRef[];
36
+ readonly permissionRefs?: readonly SourceRef[];
37
+ readonly sandboxRefs?: readonly SourceRef[];
38
+ readonly sourceRefs?: readonly SourceRef[];
39
+ readonly artifactRefs?: readonly SourceRef[];
40
+ readonly idempotencyKey?: string;
41
+ readonly requirements?: readonly string[];
42
+ readonly metadata?: Record<string, unknown>;
43
+ }
44
+ type ExecutorQueuedDispatchPayloadExtra = Partial<Omit<ExecutorQueuedDispatchPayload, "kind" | "requestId" | "operationId">>;
45
+ interface ExecutorQueuedDispatchAttempt {
46
+ readonly kind: "executor-queued-dispatch-attempt";
47
+ readonly workId: string;
48
+ readonly leaseId: string;
49
+ readonly queueAttempt: number;
50
+ readonly workerId: string;
51
+ readonly requestId: string;
52
+ readonly operationId: string;
53
+ readonly routeId?: string;
54
+ readonly executorId?: string;
55
+ readonly profileId?: string;
56
+ readonly payload: ExecutorQueuedDispatchPayload;
57
+ readonly sourceRefs?: readonly SourceRef[];
58
+ }
59
+ interface ExecutorWorkQueueSubmitOptions {
60
+ readonly workId?: string;
61
+ readonly priority?: number;
62
+ readonly tags?: readonly string[];
63
+ readonly requirements?: readonly string[];
64
+ readonly notBeforeMs?: number;
65
+ readonly deadlineMs?: number;
66
+ }
67
+ interface ExecutorWorkQueuePolicy {
68
+ readonly submit?: (request: AgentRequestIssued) => ExecutorWorkQueueSubmitOptions;
69
+ readonly payload?: (request: AgentRequestIssued) => ExecutorQueuedDispatchPayloadExtra;
70
+ readonly retryableBlocked?: boolean;
71
+ readonly retryableTimeout?: boolean;
72
+ }
73
+ interface ExecutorWorkQueueRecipeOptions {
74
+ readonly name?: string;
75
+ readonly requests?: Node<AgentRequestIssued>;
76
+ readonly records: Node<WorkQueueRecord<ExecutorQueuedDispatchPayload>>;
77
+ readonly outcomes: Node<ExecutorOutcome>;
78
+ readonly workerId?: string;
79
+ readonly policy?: ExecutorWorkQueuePolicy;
80
+ }
81
+ interface ExecutorWorkQueueRecipeBundle {
82
+ readonly submitCommands?: Node<WorkQueueCommand<ExecutorQueuedDispatchPayload>>;
83
+ readonly attempts: Node<ExecutorQueuedDispatchAttempt>;
84
+ readonly commands: Node<WorkQueueCommand<ExecutorQueuedDispatchPayload>>;
85
+ readonly issues: Node<DataIssue>;
86
+ }
87
+ declare function executorWorkQueueRecipe(graph: Graph, opts: ExecutorWorkQueueRecipeOptions): ExecutorWorkQueueRecipeBundle;
88
+ declare function executorSubmitCommand(request: AgentRequestIssued, policy?: ExecutorWorkQueuePolicy): WorkQueueCommand<ExecutorQueuedDispatchPayload>;
89
+
90
+ export { type ExecutorQueuedDispatchAttempt, type ExecutorQueuedDispatchPayload, type ExecutorQueuedDispatchPayloadExtra, type ExecutorWorkQueuePolicy, type ExecutorWorkQueueRecipeBundle, type ExecutorWorkQueueRecipeOptions, type ExecutorWorkQueueSubmitOptions, executorSubmitCommand, executorWorkQueueRecipe };
@@ -0,0 +1,306 @@
1
+ import {
2
+ depBatch
3
+ } from "../chunk-WQIA3GFB.js";
4
+ import "../chunk-S6HXABGL.js";
5
+ import "../chunk-DGUM43GV.js";
6
+
7
+ // src/executors/work-queue.ts
8
+ function executorWorkQueueRecipe(graph, opts) {
9
+ const name = opts.name ?? "executorWorkQueue";
10
+ const submitCommands = opts.requests === void 0 ? void 0 : graph.node(
11
+ [opts.requests],
12
+ (ctx) => {
13
+ for (const raw of depBatch(ctx, 0) ?? []) {
14
+ const request = raw;
15
+ ctx.down([["DATA", executorSubmitCommand(request, opts.policy)]]);
16
+ }
17
+ },
18
+ { name: `${name}/submitCommands`, factory: "executorWorkQueueSubmitCommands" }
19
+ );
20
+ const runtime = graph.node(
21
+ [opts.records, opts.outcomes],
22
+ (ctx) => {
23
+ const state = ctx.state.get() ?? emptyState();
24
+ for (const raw of depBatch(ctx, 0) ?? []) {
25
+ reduceRecord(ctx, state, raw, opts);
26
+ }
27
+ for (const raw of depBatch(ctx, 1) ?? []) {
28
+ reduceOutcome(ctx, state, raw, opts);
29
+ }
30
+ ctx.state.set(state);
31
+ },
32
+ {
33
+ name: `${name}/runtime`,
34
+ factory: "executorWorkQueueRuntime",
35
+ partial: true,
36
+ completeWhenDepsComplete: false,
37
+ errorWhenDepsError: false
38
+ }
39
+ );
40
+ return {
41
+ ...submitCommands === void 0 ? {} : { submitCommands },
42
+ attempts: project(
43
+ graph,
44
+ runtime,
45
+ `${name}/attempts`,
46
+ "executorWorkQueueAttempts",
47
+ (fact) => fact.kind === "attempt" ? fact.attempt : void 0
48
+ ),
49
+ commands: project(
50
+ graph,
51
+ runtime,
52
+ `${name}/commands`,
53
+ "executorWorkQueueCommands",
54
+ (fact) => fact.kind === "command" ? fact.command : void 0
55
+ ),
56
+ issues: project(
57
+ graph,
58
+ runtime,
59
+ `${name}/issues`,
60
+ "executorWorkQueueIssues",
61
+ (fact) => fact.kind === "issue" ? fact.issue : void 0
62
+ )
63
+ };
64
+ }
65
+ function executorSubmitCommand(request, policy) {
66
+ const payloadExtra = policy?.payload?.(request) ?? {};
67
+ const submit = policy?.submit?.(request) ?? {};
68
+ const payload = {
69
+ ...payloadExtra,
70
+ kind: "executor-queued-dispatch",
71
+ requestId: request.requestId,
72
+ operationId: request.operationId,
73
+ parentRequestId: request.parentRequestId,
74
+ inputId: request.input?.inputId,
75
+ effectRunId: request.effectRunId,
76
+ sourceRefs: request.sourceRefs,
77
+ idempotencyKey: request.requestId,
78
+ metadata: request.metadata
79
+ };
80
+ return {
81
+ kind: "submit",
82
+ commandId: `${request.requestId}:executor-work-queue-submit`,
83
+ payload,
84
+ workId: submit.workId ?? `executor:${request.requestId}`,
85
+ priority: submit.priority,
86
+ tags: submit.tags ?? ["executor", request.requestKind],
87
+ requirements: submit.requirements,
88
+ notBeforeMs: submit.notBeforeMs,
89
+ deadlineMs: submit.deadlineMs,
90
+ idempotencyKey: request.requestId,
91
+ sourceRefs: stringRefs(request.sourceRefs)
92
+ };
93
+ }
94
+ function reduceRecord(ctx, state, record, opts) {
95
+ if (record.kind === "work-admitted") {
96
+ state.payloads.set(record.workId, record.payload);
97
+ return;
98
+ }
99
+ retireClaimForRecord(state, record);
100
+ if (record.kind !== "work-claimed") return;
101
+ if (opts.workerId !== void 0 && record.workerId !== opts.workerId) return;
102
+ const payload = state.payloads.get(record.workId);
103
+ if (payload === void 0) {
104
+ emit(ctx, { kind: "issue", issue: queueIssue(record, "executor-claim-without-payload") });
105
+ return;
106
+ }
107
+ const attempt = {
108
+ kind: "executor-queued-dispatch-attempt",
109
+ workId: record.workId,
110
+ leaseId: record.leaseId,
111
+ queueAttempt: record.attempt,
112
+ workerId: record.workerId,
113
+ requestId: payload.requestId,
114
+ operationId: payload.operationId,
115
+ routeId: payload.routeId,
116
+ executorId: payload.executorId,
117
+ profileId: payload.profileId,
118
+ payload,
119
+ sourceRefs: [...payload.sourceRefs ?? [], ref("work-queue-record", String(record.recordSeq))]
120
+ };
121
+ const key = outcomeKey(payload, record.attempt);
122
+ state.activeClaims.set(key, attempt);
123
+ emit(ctx, { kind: "attempt", attempt });
124
+ const pending = state.pendingOutcomes.get(key);
125
+ if (pending !== void 0) {
126
+ state.pendingOutcomes.delete(key);
127
+ for (const outcome of pending) {
128
+ mapClaimedOutcome(ctx, state, key, attempt, outcome, opts);
129
+ }
130
+ }
131
+ }
132
+ function reduceOutcome(ctx, state, outcome, opts) {
133
+ if (state.seenOutcomes.has(outcome.outcomeId)) return;
134
+ const key = outcomeKey(outcome, outcome.attempt);
135
+ if (state.terminalClaims.has(key)) {
136
+ state.seenOutcomes.add(outcome.outcomeId);
137
+ emit(ctx, {
138
+ kind: "issue",
139
+ issue: {
140
+ kind: "issue",
141
+ code: "executor-duplicate-terminal-outcome-for-queue-claim",
142
+ message: `ExecutorOutcome '${outcome.outcomeId}' arrived after the queue claim was already terminal`,
143
+ refs: [`executor-outcome:${outcome.outcomeId}`]
144
+ }
145
+ });
146
+ return;
147
+ }
148
+ const claim = state.activeClaims.get(key);
149
+ if (claim === void 0) {
150
+ bufferPendingOutcome(state, key, outcome);
151
+ return;
152
+ }
153
+ mapClaimedOutcome(ctx, state, key, claim, outcome, opts);
154
+ }
155
+ function mapClaimedOutcome(ctx, state, key, claim, outcome, opts) {
156
+ if (state.seenOutcomes.has(outcome.outcomeId)) return;
157
+ state.seenOutcomes.add(outcome.outcomeId);
158
+ if (state.terminalClaims.has(key)) {
159
+ emit(ctx, {
160
+ kind: "issue",
161
+ issue: {
162
+ kind: "issue",
163
+ code: "executor-duplicate-terminal-outcome-for-queue-claim",
164
+ message: `ExecutorOutcome '${outcome.outcomeId}' arrived after the queue claim was already terminal`,
165
+ refs: [`executor-outcome:${outcome.outcomeId}`, `work-queue-work:${claim.workId}`]
166
+ }
167
+ });
168
+ return;
169
+ }
170
+ if (outcome.kind === "result") {
171
+ terminalizeClaim(state, key);
172
+ emit(ctx, {
173
+ kind: "command",
174
+ command: {
175
+ kind: "complete",
176
+ commandId: `${outcome.outcomeId}:queue-complete`,
177
+ workId: claim.workId,
178
+ leaseId: claim.leaseId,
179
+ attempt: claim.queueAttempt,
180
+ workerId: claim.workerId,
181
+ result: outcome.result,
182
+ sourceRefs: stringRefs(outcome.evidenceRefs)
183
+ }
184
+ });
185
+ return;
186
+ }
187
+ if (outcome.kind === "canceled") {
188
+ terminalizeClaim(state, key);
189
+ emit(ctx, {
190
+ kind: "command",
191
+ command: {
192
+ kind: "cancel",
193
+ commandId: `${outcome.outcomeId}:queue-cancel`,
194
+ workId: claim.workId,
195
+ reason: outcome.reason,
196
+ sourceRefs: stringRefs(outcome.evidenceRefs)
197
+ }
198
+ });
199
+ return;
200
+ }
201
+ terminalizeClaim(state, key);
202
+ emit(ctx, {
203
+ kind: "command",
204
+ command: {
205
+ kind: "fail",
206
+ commandId: `${outcome.outcomeId}:queue-fail`,
207
+ workId: claim.workId,
208
+ leaseId: claim.leaseId,
209
+ attempt: claim.queueAttempt,
210
+ workerId: claim.workerId,
211
+ error: outcomeError(outcome),
212
+ retryable: outcomeRetryable(outcome, opts.policy),
213
+ sourceRefs: stringRefs(outcome.evidenceRefs)
214
+ }
215
+ });
216
+ }
217
+ function outcomeError(outcome) {
218
+ if (outcome.kind === "failure") return outcome.error;
219
+ if (outcome.kind === "timeout") {
220
+ return {
221
+ kind: "issue",
222
+ code: "executor-timeout",
223
+ message: `ExecutorOutcome '${outcome.outcomeId}' timed out`,
224
+ metadata: { timeoutMs: outcome.timeoutMs }
225
+ };
226
+ }
227
+ return {
228
+ kind: "issue",
229
+ code: "executor-blocked",
230
+ message: `ExecutorOutcome '${outcome.outcomeId}' blocked`,
231
+ metadata: { needs: outcome.needs }
232
+ };
233
+ }
234
+ function outcomeRetryable(outcome, policy) {
235
+ if (outcome.kind === "failure") return outcome.retryable;
236
+ if (outcome.kind === "timeout") return outcome.retryable ?? policy?.retryableTimeout;
237
+ if (outcome.kind === "blocked") return policy?.retryableBlocked;
238
+ return void 0;
239
+ }
240
+ function project(graph, runtime, name, factory, select) {
241
+ return graph.node(
242
+ [runtime],
243
+ (ctx) => {
244
+ for (const raw of depBatch(ctx, 0) ?? []) {
245
+ const selected = select(raw);
246
+ if (selected !== void 0) ctx.down([["DATA", selected]]);
247
+ }
248
+ },
249
+ { name, factory, partial: true, completeWhenDepsComplete: false, errorWhenDepsError: false }
250
+ );
251
+ }
252
+ function emit(ctx, fact) {
253
+ ctx.down([["DATA", fact]]);
254
+ }
255
+ function emptyState() {
256
+ return {
257
+ payloads: /* @__PURE__ */ new Map(),
258
+ activeClaims: /* @__PURE__ */ new Map(),
259
+ pendingOutcomes: /* @__PURE__ */ new Map(),
260
+ terminalClaims: /* @__PURE__ */ new Set(),
261
+ seenOutcomes: /* @__PURE__ */ new Set()
262
+ };
263
+ }
264
+ function terminalizeClaim(state, key) {
265
+ state.terminalClaims.add(key);
266
+ state.activeClaims.delete(key);
267
+ }
268
+ function bufferPendingOutcome(state, key, outcome) {
269
+ const pending = state.pendingOutcomes.get(key) ?? [];
270
+ if (!pending.some((candidate) => candidate.outcomeId === outcome.outcomeId)) {
271
+ state.pendingOutcomes.set(key, [...pending, outcome]);
272
+ }
273
+ }
274
+ function retireClaimForRecord(state, record) {
275
+ if (record.kind !== "attempt-completed" && record.kind !== "work-completed" && record.kind !== "work-canceled" && record.kind !== "work-dead-lettered" && record.kind !== "work-released" && record.kind !== "lease-expired") {
276
+ return;
277
+ }
278
+ for (const [key, claim] of state.activeClaims) {
279
+ if (claim.workId !== record.workId) continue;
280
+ if ("attempt" in record && record.attempt !== claim.queueAttempt) continue;
281
+ terminalizeClaim(state, key);
282
+ }
283
+ }
284
+ function outcomeKey(value, attempt) {
285
+ return `${value.requestId}:${value.operationId}:${attempt}`;
286
+ }
287
+ function queueIssue(record, code) {
288
+ return {
289
+ kind: "issue",
290
+ code,
291
+ message: `WorkQueue record '${record.kind}' cannot be mapped to executor dispatch`,
292
+ refs: [`work-queue-record:${record.recordSeq}`],
293
+ metadata: { queueRecordKind: record.kind, workId: record.workId }
294
+ };
295
+ }
296
+ function ref(kind, id) {
297
+ return { kind, id };
298
+ }
299
+ function stringRefs(refs) {
300
+ return refs?.map((sourceRef) => `${sourceRef.kind}:${sourceRef.id}`);
301
+ }
302
+ export {
303
+ executorSubmitCommand,
304
+ executorWorkQueueRecipe
305
+ };
306
+ //# sourceMappingURL=work-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/executors/work-queue.ts"],"sourcesContent":["/**\n * Durable executor dispatch recipe over workQueue (D328/D331).\n *\n * Claim records become graph-visible dispatch-attempt facts. Executor outcomes become queue\n * lifecycle commands. The recipe never calls ExecutorBinding or treats a queue claim as dispatch.\n */\n\nimport { type Ctx, depBatch } from \"../ctx/types.js\";\nimport type { DataIssue } from \"../data/index.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { Node } from \"../node/node.js\";\nimport type {\n\tAgentRequestIssued,\n\tExecutorOutcome,\n\tSourceRef,\n} from \"../orchestration/agent-runtime.js\";\nimport type { WorkQueueCommand, WorkQueueRecord } from \"../work-queue/index.js\";\n\nexport interface ExecutorQueuedDispatchPayload {\n\treadonly kind: \"executor-queued-dispatch\";\n\treadonly requestId: string;\n\treadonly operationId: string;\n\treadonly parentRequestId?: string;\n\treadonly sourceDecisionId?: string;\n\treadonly intentId?: string;\n\treadonly inputId?: string;\n\treadonly toolCallSeriesId?: string;\n\treadonly routeId?: string;\n\treadonly profileId?: string;\n\treadonly executorId?: string;\n\treadonly effectRunId?: string;\n\treadonly promptBundleRefs?: readonly SourceRef[];\n\treadonly toolDefinitionRefs?: readonly SourceRef[];\n\treadonly policyRefs?: readonly SourceRef[];\n\treadonly budgetRefs?: readonly SourceRef[];\n\treadonly permissionRefs?: readonly SourceRef[];\n\treadonly sandboxRefs?: readonly SourceRef[];\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly artifactRefs?: readonly SourceRef[];\n\treadonly idempotencyKey?: string;\n\treadonly requirements?: readonly string[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport type ExecutorQueuedDispatchPayloadExtra = Partial<\n\tOmit<ExecutorQueuedDispatchPayload, \"kind\" | \"requestId\" | \"operationId\">\n>;\n\nexport interface ExecutorQueuedDispatchAttempt {\n\treadonly kind: \"executor-queued-dispatch-attempt\";\n\treadonly workId: string;\n\treadonly leaseId: string;\n\treadonly queueAttempt: number;\n\treadonly workerId: string;\n\treadonly requestId: string;\n\treadonly operationId: string;\n\treadonly routeId?: string;\n\treadonly executorId?: string;\n\treadonly profileId?: string;\n\treadonly payload: ExecutorQueuedDispatchPayload;\n\treadonly sourceRefs?: readonly SourceRef[];\n}\n\nexport interface ExecutorWorkQueueSubmitOptions {\n\treadonly workId?: string;\n\treadonly priority?: number;\n\treadonly tags?: readonly string[];\n\treadonly requirements?: readonly string[];\n\treadonly notBeforeMs?: number;\n\treadonly deadlineMs?: number;\n}\n\nexport interface ExecutorWorkQueuePolicy {\n\treadonly submit?: (request: AgentRequestIssued) => ExecutorWorkQueueSubmitOptions;\n\treadonly payload?: (request: AgentRequestIssued) => ExecutorQueuedDispatchPayloadExtra;\n\treadonly retryableBlocked?: boolean;\n\treadonly retryableTimeout?: boolean;\n}\n\nexport interface ExecutorWorkQueueRecipeOptions {\n\treadonly name?: string;\n\treadonly requests?: Node<AgentRequestIssued>;\n\treadonly records: Node<WorkQueueRecord<ExecutorQueuedDispatchPayload>>;\n\treadonly outcomes: Node<ExecutorOutcome>;\n\treadonly workerId?: string;\n\treadonly policy?: ExecutorWorkQueuePolicy;\n}\n\nexport interface ExecutorWorkQueueRecipeBundle {\n\treadonly submitCommands?: Node<WorkQueueCommand<ExecutorQueuedDispatchPayload>>;\n\treadonly attempts: Node<ExecutorQueuedDispatchAttempt>;\n\treadonly commands: Node<WorkQueueCommand<ExecutorQueuedDispatchPayload>>;\n\treadonly issues: Node<DataIssue>;\n}\n\ntype ExecutorQueueFact =\n\t| { readonly kind: \"attempt\"; readonly attempt: ExecutorQueuedDispatchAttempt }\n\t| { readonly kind: \"command\"; readonly command: WorkQueueCommand<ExecutorQueuedDispatchPayload> }\n\t| { readonly kind: \"issue\"; readonly issue: DataIssue };\n\ninterface ExecutorQueueState {\n\treadonly payloads: Map<string, ExecutorQueuedDispatchPayload>;\n\treadonly activeClaims: Map<string, ExecutorQueuedDispatchAttempt>;\n\treadonly pendingOutcomes: Map<string, ExecutorOutcome[]>;\n\treadonly terminalClaims: Set<string>;\n\treadonly seenOutcomes: Set<string>;\n}\n\nexport function executorWorkQueueRecipe(\n\tgraph: Graph,\n\topts: ExecutorWorkQueueRecipeOptions,\n): ExecutorWorkQueueRecipeBundle {\n\tconst name = opts.name ?? \"executorWorkQueue\";\n\tconst submitCommands =\n\t\topts.requests === undefined\n\t\t\t? undefined\n\t\t\t: graph.node<WorkQueueCommand<ExecutorQueuedDispatchPayload>>(\n\t\t\t\t\t[opts.requests],\n\t\t\t\t\t(ctx) => {\n\t\t\t\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\t\t\t\tconst request = raw as AgentRequestIssued;\n\t\t\t\t\t\t\tctx.down([[\"DATA\", executorSubmitCommand(request, opts.policy)]]);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{ name: `${name}/submitCommands`, factory: \"executorWorkQueueSubmitCommands\" },\n\t\t\t\t);\n\tconst runtime = graph.node<ExecutorQueueFact>(\n\t\t[opts.records, opts.outcomes],\n\t\t(ctx) => {\n\t\t\tconst state = ctx.state.get<ExecutorQueueState>() ?? emptyState();\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\treduceRecord(ctx, state, raw as WorkQueueRecord<ExecutorQueuedDispatchPayload>, opts);\n\t\t\t}\n\t\t\tfor (const raw of depBatch(ctx, 1) ?? []) {\n\t\t\t\treduceOutcome(ctx, state, raw as ExecutorOutcome, opts);\n\t\t\t}\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{\n\t\t\tname: `${name}/runtime`,\n\t\t\tfactory: \"executorWorkQueueRuntime\",\n\t\t\tpartial: true,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\treturn {\n\t\t...(submitCommands === undefined ? {} : { submitCommands }),\n\t\tattempts: project(graph, runtime, `${name}/attempts`, \"executorWorkQueueAttempts\", (fact) =>\n\t\t\tfact.kind === \"attempt\" ? fact.attempt : undefined,\n\t\t),\n\t\tcommands: project(graph, runtime, `${name}/commands`, \"executorWorkQueueCommands\", (fact) =>\n\t\t\tfact.kind === \"command\" ? fact.command : undefined,\n\t\t),\n\t\tissues: project(graph, runtime, `${name}/issues`, \"executorWorkQueueIssues\", (fact) =>\n\t\t\tfact.kind === \"issue\" ? fact.issue : undefined,\n\t\t),\n\t};\n}\n\nexport function executorSubmitCommand(\n\trequest: AgentRequestIssued,\n\tpolicy?: ExecutorWorkQueuePolicy,\n): WorkQueueCommand<ExecutorQueuedDispatchPayload> {\n\tconst payloadExtra = policy?.payload?.(request) ?? {};\n\tconst submit = policy?.submit?.(request) ?? {};\n\tconst payload: ExecutorQueuedDispatchPayload = {\n\t\t...payloadExtra,\n\t\tkind: \"executor-queued-dispatch\",\n\t\trequestId: request.requestId,\n\t\toperationId: request.operationId,\n\t\tparentRequestId: request.parentRequestId,\n\t\tinputId: request.input?.inputId,\n\t\teffectRunId: request.effectRunId,\n\t\tsourceRefs: request.sourceRefs,\n\t\tidempotencyKey: request.requestId,\n\t\tmetadata: request.metadata,\n\t};\n\treturn {\n\t\tkind: \"submit\",\n\t\tcommandId: `${request.requestId}:executor-work-queue-submit`,\n\t\tpayload,\n\t\tworkId: submit.workId ?? `executor:${request.requestId}`,\n\t\tpriority: submit.priority,\n\t\ttags: submit.tags ?? [\"executor\", request.requestKind],\n\t\trequirements: submit.requirements,\n\t\tnotBeforeMs: submit.notBeforeMs,\n\t\tdeadlineMs: submit.deadlineMs,\n\t\tidempotencyKey: request.requestId,\n\t\tsourceRefs: stringRefs(request.sourceRefs),\n\t};\n}\n\nfunction reduceRecord(\n\tctx: Ctx,\n\tstate: ExecutorQueueState,\n\trecord: WorkQueueRecord<ExecutorQueuedDispatchPayload>,\n\topts: ExecutorWorkQueueRecipeOptions,\n): void {\n\tif (record.kind === \"work-admitted\") {\n\t\tstate.payloads.set(record.workId, record.payload);\n\t\treturn;\n\t}\n\tretireClaimForRecord(state, record);\n\tif (record.kind !== \"work-claimed\") return;\n\tif (opts.workerId !== undefined && record.workerId !== opts.workerId) return;\n\tconst payload = state.payloads.get(record.workId);\n\tif (payload === undefined) {\n\t\temit(ctx, { kind: \"issue\", issue: queueIssue(record, \"executor-claim-without-payload\") });\n\t\treturn;\n\t}\n\tconst attempt: ExecutorQueuedDispatchAttempt = {\n\t\tkind: \"executor-queued-dispatch-attempt\",\n\t\tworkId: record.workId,\n\t\tleaseId: record.leaseId,\n\t\tqueueAttempt: record.attempt,\n\t\tworkerId: record.workerId,\n\t\trequestId: payload.requestId,\n\t\toperationId: payload.operationId,\n\t\trouteId: payload.routeId,\n\t\texecutorId: payload.executorId,\n\t\tprofileId: payload.profileId,\n\t\tpayload,\n\t\tsourceRefs: [...(payload.sourceRefs ?? []), ref(\"work-queue-record\", String(record.recordSeq))],\n\t};\n\tconst key = outcomeKey(payload, record.attempt);\n\tstate.activeClaims.set(key, attempt);\n\temit(ctx, { kind: \"attempt\", attempt });\n\tconst pending = state.pendingOutcomes.get(key);\n\tif (pending !== undefined) {\n\t\tstate.pendingOutcomes.delete(key);\n\t\tfor (const outcome of pending) {\n\t\t\tmapClaimedOutcome(ctx, state, key, attempt, outcome, opts);\n\t\t}\n\t}\n}\n\nfunction reduceOutcome(\n\tctx: Ctx,\n\tstate: ExecutorQueueState,\n\toutcome: ExecutorOutcome,\n\topts: ExecutorWorkQueueRecipeOptions,\n): void {\n\tif (state.seenOutcomes.has(outcome.outcomeId)) return;\n\tconst key = outcomeKey(outcome, outcome.attempt);\n\tif (state.terminalClaims.has(key)) {\n\t\tstate.seenOutcomes.add(outcome.outcomeId);\n\t\temit(ctx, {\n\t\t\tkind: \"issue\",\n\t\t\tissue: {\n\t\t\t\tkind: \"issue\",\n\t\t\t\tcode: \"executor-duplicate-terminal-outcome-for-queue-claim\",\n\t\t\t\tmessage: `ExecutorOutcome '${outcome.outcomeId}' arrived after the queue claim was already terminal`,\n\t\t\t\trefs: [`executor-outcome:${outcome.outcomeId}`],\n\t\t\t},\n\t\t});\n\t\treturn;\n\t}\n\tconst claim = state.activeClaims.get(key);\n\tif (claim === undefined) {\n\t\tbufferPendingOutcome(state, key, outcome);\n\t\treturn;\n\t}\n\tmapClaimedOutcome(ctx, state, key, claim, outcome, opts);\n}\n\nfunction mapClaimedOutcome(\n\tctx: Ctx,\n\tstate: ExecutorQueueState,\n\tkey: string,\n\tclaim: ExecutorQueuedDispatchAttempt,\n\toutcome: ExecutorOutcome,\n\topts: ExecutorWorkQueueRecipeOptions,\n): void {\n\tif (state.seenOutcomes.has(outcome.outcomeId)) return;\n\tstate.seenOutcomes.add(outcome.outcomeId);\n\tif (state.terminalClaims.has(key)) {\n\t\temit(ctx, {\n\t\t\tkind: \"issue\",\n\t\t\tissue: {\n\t\t\t\tkind: \"issue\",\n\t\t\t\tcode: \"executor-duplicate-terminal-outcome-for-queue-claim\",\n\t\t\t\tmessage: `ExecutorOutcome '${outcome.outcomeId}' arrived after the queue claim was already terminal`,\n\t\t\t\trefs: [`executor-outcome:${outcome.outcomeId}`, `work-queue-work:${claim.workId}`],\n\t\t\t},\n\t\t});\n\t\treturn;\n\t}\n\tif (outcome.kind === \"result\") {\n\t\tterminalizeClaim(state, key);\n\t\temit(ctx, {\n\t\t\tkind: \"command\",\n\t\t\tcommand: {\n\t\t\t\tkind: \"complete\",\n\t\t\t\tcommandId: `${outcome.outcomeId}:queue-complete`,\n\t\t\t\tworkId: claim.workId,\n\t\t\t\tleaseId: claim.leaseId,\n\t\t\t\tattempt: claim.queueAttempt,\n\t\t\t\tworkerId: claim.workerId,\n\t\t\t\tresult: outcome.result,\n\t\t\t\tsourceRefs: stringRefs(outcome.evidenceRefs),\n\t\t\t},\n\t\t});\n\t\treturn;\n\t}\n\tif (outcome.kind === \"canceled\") {\n\t\tterminalizeClaim(state, key);\n\t\temit(ctx, {\n\t\t\tkind: \"command\",\n\t\t\tcommand: {\n\t\t\t\tkind: \"cancel\",\n\t\t\t\tcommandId: `${outcome.outcomeId}:queue-cancel`,\n\t\t\t\tworkId: claim.workId,\n\t\t\t\treason: outcome.reason,\n\t\t\t\tsourceRefs: stringRefs(outcome.evidenceRefs),\n\t\t\t},\n\t\t});\n\t\treturn;\n\t}\n\tterminalizeClaim(state, key);\n\temit(ctx, {\n\t\tkind: \"command\",\n\t\tcommand: {\n\t\t\tkind: \"fail\",\n\t\t\tcommandId: `${outcome.outcomeId}:queue-fail`,\n\t\t\tworkId: claim.workId,\n\t\t\tleaseId: claim.leaseId,\n\t\t\tattempt: claim.queueAttempt,\n\t\t\tworkerId: claim.workerId,\n\t\t\terror: outcomeError(outcome),\n\t\t\tretryable: outcomeRetryable(outcome, opts.policy),\n\t\t\tsourceRefs: stringRefs(outcome.evidenceRefs),\n\t\t},\n\t});\n}\n\nfunction outcomeError(\n\toutcome: Extract<ExecutorOutcome, { kind: \"failure\" | \"timeout\" | \"blocked\" }>,\n): unknown {\n\tif (outcome.kind === \"failure\") return outcome.error;\n\tif (outcome.kind === \"timeout\") {\n\t\treturn {\n\t\t\tkind: \"issue\",\n\t\t\tcode: \"executor-timeout\",\n\t\t\tmessage: `ExecutorOutcome '${outcome.outcomeId}' timed out`,\n\t\t\tmetadata: { timeoutMs: outcome.timeoutMs },\n\t\t} satisfies DataIssue;\n\t}\n\treturn {\n\t\tkind: \"issue\",\n\t\tcode: \"executor-blocked\",\n\t\tmessage: `ExecutorOutcome '${outcome.outcomeId}' blocked`,\n\t\tmetadata: { needs: outcome.needs },\n\t} satisfies DataIssue;\n}\n\nfunction outcomeRetryable(\n\toutcome: ExecutorOutcome,\n\tpolicy: ExecutorWorkQueuePolicy | undefined,\n): boolean | undefined {\n\tif (outcome.kind === \"failure\") return outcome.retryable;\n\tif (outcome.kind === \"timeout\") return outcome.retryable ?? policy?.retryableTimeout;\n\tif (outcome.kind === \"blocked\") return policy?.retryableBlocked;\n\treturn undefined;\n}\n\nfunction project<T>(\n\tgraph: Graph,\n\truntime: Node<ExecutorQueueFact>,\n\tname: string,\n\tfactory: string,\n\tselect: (fact: ExecutorQueueFact) => T | undefined,\n): Node<T> {\n\treturn graph.node<T>(\n\t\t[runtime],\n\t\t(ctx) => {\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst selected = select(raw as ExecutorQueueFact);\n\t\t\t\tif (selected !== undefined) ctx.down([[\"DATA\", selected]]);\n\t\t\t}\n\t\t},\n\t\t{ name, factory, partial: true, completeWhenDepsComplete: false, errorWhenDepsError: false },\n\t);\n}\n\nfunction emit(ctx: Ctx, fact: ExecutorQueueFact): void {\n\tctx.down([[\"DATA\", fact]]);\n}\n\nfunction emptyState(): ExecutorQueueState {\n\treturn {\n\t\tpayloads: new Map(),\n\t\tactiveClaims: new Map(),\n\t\tpendingOutcomes: new Map(),\n\t\tterminalClaims: new Set(),\n\t\tseenOutcomes: new Set(),\n\t};\n}\n\nfunction terminalizeClaim(state: ExecutorQueueState, key: string): void {\n\tstate.terminalClaims.add(key);\n\tstate.activeClaims.delete(key);\n}\n\nfunction bufferPendingOutcome(\n\tstate: ExecutorQueueState,\n\tkey: string,\n\toutcome: ExecutorOutcome,\n): void {\n\tconst pending = state.pendingOutcomes.get(key) ?? [];\n\tif (!pending.some((candidate) => candidate.outcomeId === outcome.outcomeId)) {\n\t\tstate.pendingOutcomes.set(key, [...pending, outcome]);\n\t}\n}\n\nfunction retireClaimForRecord(\n\tstate: ExecutorQueueState,\n\trecord: WorkQueueRecord<ExecutorQueuedDispatchPayload>,\n): void {\n\tif (\n\t\trecord.kind !== \"attempt-completed\" &&\n\t\trecord.kind !== \"work-completed\" &&\n\t\trecord.kind !== \"work-canceled\" &&\n\t\trecord.kind !== \"work-dead-lettered\" &&\n\t\trecord.kind !== \"work-released\" &&\n\t\trecord.kind !== \"lease-expired\"\n\t) {\n\t\treturn;\n\t}\n\tfor (const [key, claim] of state.activeClaims) {\n\t\tif (claim.workId !== record.workId) continue;\n\t\tif (\"attempt\" in record && record.attempt !== claim.queueAttempt) continue;\n\t\tterminalizeClaim(state, key);\n\t}\n}\n\nfunction outcomeKey(\n\tvalue: Pick<ExecutorQueuedDispatchPayload | ExecutorOutcome, \"requestId\" | \"operationId\">,\n\tattempt: number,\n): string {\n\treturn `${value.requestId}:${value.operationId}:${attempt}`;\n}\n\nfunction queueIssue(record: WorkQueueRecord, code: string): DataIssue {\n\treturn {\n\t\tkind: \"issue\",\n\t\tcode,\n\t\tmessage: `WorkQueue record '${record.kind}' cannot be mapped to executor dispatch`,\n\t\trefs: [`work-queue-record:${record.recordSeq}`],\n\t\tmetadata: { queueRecordKind: record.kind, workId: record.workId },\n\t};\n}\n\nfunction ref(kind: string, id: string): SourceRef {\n\treturn { kind, id };\n}\n\nfunction stringRefs(refs: readonly SourceRef[] | undefined): readonly string[] | undefined {\n\treturn refs?.map((sourceRef) => `${sourceRef.kind}:${sourceRef.id}`);\n}\n"],"mappings":";;;;;;;AA4GO,SAAS,wBACf,OACA,MACgC;AAChC,QAAM,OAAO,KAAK,QAAQ;AAC1B,QAAM,iBACL,KAAK,aAAa,SACf,SACA,MAAM;AAAA,IACN,CAAC,KAAK,QAAQ;AAAA,IACd,CAAC,QAAQ;AACR,iBAAW,OAAO,SAAS,KAAK,CAAC,KAAK,CAAC,GAAG;AACzC,cAAM,UAAU;AAChB,YAAI,KAAK,CAAC,CAAC,QAAQ,sBAAsB,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC;AAAA,MACjE;AAAA,IACD;AAAA,IACA,EAAE,MAAM,GAAG,IAAI,mBAAmB,SAAS,kCAAkC;AAAA,EAC9E;AACH,QAAM,UAAU,MAAM;AAAA,IACrB,CAAC,KAAK,SAAS,KAAK,QAAQ;AAAA,IAC5B,CAAC,QAAQ;AACR,YAAM,QAAQ,IAAI,MAAM,IAAwB,KAAK,WAAW;AAChE,iBAAW,OAAO,SAAS,KAAK,CAAC,KAAK,CAAC,GAAG;AACzC,qBAAa,KAAK,OAAO,KAAuD,IAAI;AAAA,MACrF;AACA,iBAAW,OAAO,SAAS,KAAK,CAAC,KAAK,CAAC,GAAG;AACzC,sBAAc,KAAK,OAAO,KAAwB,IAAI;AAAA,MACvD;AACA,UAAI,MAAM,IAAI,KAAK;AAAA,IACpB;AAAA,IACA;AAAA,MACC,MAAM,GAAG,IAAI;AAAA,MACb,SAAS;AAAA,MACT,SAAS;AAAA,MACT,0BAA0B;AAAA,MAC1B,oBAAoB;AAAA,IACrB;AAAA,EACD;AACA,SAAO;AAAA,IACN,GAAI,mBAAmB,SAAY,CAAC,IAAI,EAAE,eAAe;AAAA,IACzD,UAAU;AAAA,MAAQ;AAAA,MAAO;AAAA,MAAS,GAAG,IAAI;AAAA,MAAa;AAAA,MAA6B,CAAC,SACnF,KAAK,SAAS,YAAY,KAAK,UAAU;AAAA,IAC1C;AAAA,IACA,UAAU;AAAA,MAAQ;AAAA,MAAO;AAAA,MAAS,GAAG,IAAI;AAAA,MAAa;AAAA,MAA6B,CAAC,SACnF,KAAK,SAAS,YAAY,KAAK,UAAU;AAAA,IAC1C;AAAA,IACA,QAAQ;AAAA,MAAQ;AAAA,MAAO;AAAA,MAAS,GAAG,IAAI;AAAA,MAAW;AAAA,MAA2B,CAAC,SAC7E,KAAK,SAAS,UAAU,KAAK,QAAQ;AAAA,IACtC;AAAA,EACD;AACD;AAEO,SAAS,sBACf,SACA,QACkD;AAClD,QAAM,eAAe,QAAQ,UAAU,OAAO,KAAK,CAAC;AACpD,QAAM,SAAS,QAAQ,SAAS,OAAO,KAAK,CAAC;AAC7C,QAAM,UAAyC;AAAA,IAC9C,GAAG;AAAA,IACH,MAAM;AAAA,IACN,WAAW,QAAQ;AAAA,IACnB,aAAa,QAAQ;AAAA,IACrB,iBAAiB,QAAQ;AAAA,IACzB,SAAS,QAAQ,OAAO;AAAA,IACxB,aAAa,QAAQ;AAAA,IACrB,YAAY,QAAQ;AAAA,IACpB,gBAAgB,QAAQ;AAAA,IACxB,UAAU,QAAQ;AAAA,EACnB;AACA,SAAO;AAAA,IACN,MAAM;AAAA,IACN,WAAW,GAAG,QAAQ,SAAS;AAAA,IAC/B;AAAA,IACA,QAAQ,OAAO,UAAU,YAAY,QAAQ,SAAS;AAAA,IACtD,UAAU,OAAO;AAAA,IACjB,MAAM,OAAO,QAAQ,CAAC,YAAY,QAAQ,WAAW;AAAA,IACrD,cAAc,OAAO;AAAA,IACrB,aAAa,OAAO;AAAA,IACpB,YAAY,OAAO;AAAA,IACnB,gBAAgB,QAAQ;AAAA,IACxB,YAAY,WAAW,QAAQ,UAAU;AAAA,EAC1C;AACD;AAEA,SAAS,aACR,KACA,OACA,QACA,MACO;AACP,MAAI,OAAO,SAAS,iBAAiB;AACpC,UAAM,SAAS,IAAI,OAAO,QAAQ,OAAO,OAAO;AAChD;AAAA,EACD;AACA,uBAAqB,OAAO,MAAM;AAClC,MAAI,OAAO,SAAS,eAAgB;AACpC,MAAI,KAAK,aAAa,UAAa,OAAO,aAAa,KAAK,SAAU;AACtE,QAAM,UAAU,MAAM,SAAS,IAAI,OAAO,MAAM;AAChD,MAAI,YAAY,QAAW;AAC1B,SAAK,KAAK,EAAE,MAAM,SAAS,OAAO,WAAW,QAAQ,gCAAgC,EAAE,CAAC;AACxF;AAAA,EACD;AACA,QAAM,UAAyC;AAAA,IAC9C,MAAM;AAAA,IACN,QAAQ,OAAO;AAAA,IACf,SAAS,OAAO;AAAA,IAChB,cAAc,OAAO;AAAA,IACrB,UAAU,OAAO;AAAA,IACjB,WAAW,QAAQ;AAAA,IACnB,aAAa,QAAQ;AAAA,IACrB,SAAS,QAAQ;AAAA,IACjB,YAAY,QAAQ;AAAA,IACpB,WAAW,QAAQ;AAAA,IACnB;AAAA,IACA,YAAY,CAAC,GAAI,QAAQ,cAAc,CAAC,GAAI,IAAI,qBAAqB,OAAO,OAAO,SAAS,CAAC,CAAC;AAAA,EAC/F;AACA,QAAM,MAAM,WAAW,SAAS,OAAO,OAAO;AAC9C,QAAM,aAAa,IAAI,KAAK,OAAO;AACnC,OAAK,KAAK,EAAE,MAAM,WAAW,QAAQ,CAAC;AACtC,QAAM,UAAU,MAAM,gBAAgB,IAAI,GAAG;AAC7C,MAAI,YAAY,QAAW;AAC1B,UAAM,gBAAgB,OAAO,GAAG;AAChC,eAAW,WAAW,SAAS;AAC9B,wBAAkB,KAAK,OAAO,KAAK,SAAS,SAAS,IAAI;AAAA,IAC1D;AAAA,EACD;AACD;AAEA,SAAS,cACR,KACA,OACA,SACA,MACO;AACP,MAAI,MAAM,aAAa,IAAI,QAAQ,SAAS,EAAG;AAC/C,QAAM,MAAM,WAAW,SAAS,QAAQ,OAAO;AAC/C,MAAI,MAAM,eAAe,IAAI,GAAG,GAAG;AAClC,UAAM,aAAa,IAAI,QAAQ,SAAS;AACxC,SAAK,KAAK;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS,oBAAoB,QAAQ,SAAS;AAAA,QAC9C,MAAM,CAAC,oBAAoB,QAAQ,SAAS,EAAE;AAAA,MAC/C;AAAA,IACD,CAAC;AACD;AAAA,EACD;AACA,QAAM,QAAQ,MAAM,aAAa,IAAI,GAAG;AACxC,MAAI,UAAU,QAAW;AACxB,yBAAqB,OAAO,KAAK,OAAO;AACxC;AAAA,EACD;AACA,oBAAkB,KAAK,OAAO,KAAK,OAAO,SAAS,IAAI;AACxD;AAEA,SAAS,kBACR,KACA,OACA,KACA,OACA,SACA,MACO;AACP,MAAI,MAAM,aAAa,IAAI,QAAQ,SAAS,EAAG;AAC/C,QAAM,aAAa,IAAI,QAAQ,SAAS;AACxC,MAAI,MAAM,eAAe,IAAI,GAAG,GAAG;AAClC,SAAK,KAAK;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS,oBAAoB,QAAQ,SAAS;AAAA,QAC9C,MAAM,CAAC,oBAAoB,QAAQ,SAAS,IAAI,mBAAmB,MAAM,MAAM,EAAE;AAAA,MAClF;AAAA,IACD,CAAC;AACD;AAAA,EACD;AACA,MAAI,QAAQ,SAAS,UAAU;AAC9B,qBAAiB,OAAO,GAAG;AAC3B,SAAK,KAAK;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,QACR,MAAM;AAAA,QACN,WAAW,GAAG,QAAQ,SAAS;AAAA,QAC/B,QAAQ,MAAM;AAAA,QACd,SAAS,MAAM;AAAA,QACf,SAAS,MAAM;AAAA,QACf,UAAU,MAAM;AAAA,QAChB,QAAQ,QAAQ;AAAA,QAChB,YAAY,WAAW,QAAQ,YAAY;AAAA,MAC5C;AAAA,IACD,CAAC;AACD;AAAA,EACD;AACA,MAAI,QAAQ,SAAS,YAAY;AAChC,qBAAiB,OAAO,GAAG;AAC3B,SAAK,KAAK;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,QACR,MAAM;AAAA,QACN,WAAW,GAAG,QAAQ,SAAS;AAAA,QAC/B,QAAQ,MAAM;AAAA,QACd,QAAQ,QAAQ;AAAA,QAChB,YAAY,WAAW,QAAQ,YAAY;AAAA,MAC5C;AAAA,IACD,CAAC;AACD;AAAA,EACD;AACA,mBAAiB,OAAO,GAAG;AAC3B,OAAK,KAAK;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACR,MAAM;AAAA,MACN,WAAW,GAAG,QAAQ,SAAS;AAAA,MAC/B,QAAQ,MAAM;AAAA,MACd,SAAS,MAAM;AAAA,MACf,SAAS,MAAM;AAAA,MACf,UAAU,MAAM;AAAA,MAChB,OAAO,aAAa,OAAO;AAAA,MAC3B,WAAW,iBAAiB,SAAS,KAAK,MAAM;AAAA,MAChD,YAAY,WAAW,QAAQ,YAAY;AAAA,IAC5C;AAAA,EACD,CAAC;AACF;AAEA,SAAS,aACR,SACU;AACV,MAAI,QAAQ,SAAS,UAAW,QAAO,QAAQ;AAC/C,MAAI,QAAQ,SAAS,WAAW;AAC/B,WAAO;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS,oBAAoB,QAAQ,SAAS;AAAA,MAC9C,UAAU,EAAE,WAAW,QAAQ,UAAU;AAAA,IAC1C;AAAA,EACD;AACA,SAAO;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS,oBAAoB,QAAQ,SAAS;AAAA,IAC9C,UAAU,EAAE,OAAO,QAAQ,MAAM;AAAA,EAClC;AACD;AAEA,SAAS,iBACR,SACA,QACsB;AACtB,MAAI,QAAQ,SAAS,UAAW,QAAO,QAAQ;AAC/C,MAAI,QAAQ,SAAS,UAAW,QAAO,QAAQ,aAAa,QAAQ;AACpE,MAAI,QAAQ,SAAS,UAAW,QAAO,QAAQ;AAC/C,SAAO;AACR;AAEA,SAAS,QACR,OACA,SACA,MACA,SACA,QACU;AACV,SAAO,MAAM;AAAA,IACZ,CAAC,OAAO;AAAA,IACR,CAAC,QAAQ;AACR,iBAAW,OAAO,SAAS,KAAK,CAAC,KAAK,CAAC,GAAG;AACzC,cAAM,WAAW,OAAO,GAAwB;AAChD,YAAI,aAAa,OAAW,KAAI,KAAK,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC;AAAA,MAC1D;AAAA,IACD;AAAA,IACA,EAAE,MAAM,SAAS,SAAS,MAAM,0BAA0B,OAAO,oBAAoB,MAAM;AAAA,EAC5F;AACD;AAEA,SAAS,KAAK,KAAU,MAA+B;AACtD,MAAI,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;AAC1B;AAEA,SAAS,aAAiC;AACzC,SAAO;AAAA,IACN,UAAU,oBAAI,IAAI;AAAA,IAClB,cAAc,oBAAI,IAAI;AAAA,IACtB,iBAAiB,oBAAI,IAAI;AAAA,IACzB,gBAAgB,oBAAI,IAAI;AAAA,IACxB,cAAc,oBAAI,IAAI;AAAA,EACvB;AACD;AAEA,SAAS,iBAAiB,OAA2B,KAAmB;AACvE,QAAM,eAAe,IAAI,GAAG;AAC5B,QAAM,aAAa,OAAO,GAAG;AAC9B;AAEA,SAAS,qBACR,OACA,KACA,SACO;AACP,QAAM,UAAU,MAAM,gBAAgB,IAAI,GAAG,KAAK,CAAC;AACnD,MAAI,CAAC,QAAQ,KAAK,CAAC,cAAc,UAAU,cAAc,QAAQ,SAAS,GAAG;AAC5E,UAAM,gBAAgB,IAAI,KAAK,CAAC,GAAG,SAAS,OAAO,CAAC;AAAA,EACrD;AACD;AAEA,SAAS,qBACR,OACA,QACO;AACP,MACC,OAAO,SAAS,uBAChB,OAAO,SAAS,oBAChB,OAAO,SAAS,mBAChB,OAAO,SAAS,wBAChB,OAAO,SAAS,mBAChB,OAAO,SAAS,iBACf;AACD;AAAA,EACD;AACA,aAAW,CAAC,KAAK,KAAK,KAAK,MAAM,cAAc;AAC9C,QAAI,MAAM,WAAW,OAAO,OAAQ;AACpC,QAAI,aAAa,UAAU,OAAO,YAAY,MAAM,aAAc;AAClE,qBAAiB,OAAO,GAAG;AAAA,EAC5B;AACD;AAEA,SAAS,WACR,OACA,SACS;AACT,SAAO,GAAG,MAAM,SAAS,IAAI,MAAM,WAAW,IAAI,OAAO;AAC1D;AAEA,SAAS,WAAW,QAAyB,MAAyB;AACrE,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA,SAAS,qBAAqB,OAAO,IAAI;AAAA,IACzC,MAAM,CAAC,qBAAqB,OAAO,SAAS,EAAE;AAAA,IAC9C,UAAU,EAAE,iBAAiB,OAAO,MAAM,QAAQ,OAAO,OAAO;AAAA,EACjE;AACD;AAEA,SAAS,IAAI,MAAc,IAAuB;AACjD,SAAO,EAAE,MAAM,GAAG;AACnB;AAEA,SAAS,WAAW,MAAuE;AAC1F,SAAO,MAAM,IAAI,CAAC,cAAc,GAAG,UAAU,IAAI,IAAI,UAAU,EAAE,EAAE;AACpE;","names":[]}