@pisell/private-materials 6.12.168 → 6.12.169

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 (252) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/meta.js +1 -1
  5. package/build/lowcode/render/default/view.css +1 -1
  6. package/build/lowcode/render/default/view.js +10 -10
  7. package/build/lowcode/view.css +1 -1
  8. package/build/lowcode/view.js +10 -10
  9. package/es/components/HDLKiosk/{contracts → app/contracts}/config.js +1 -1
  10. package/es/components/HDLKiosk/app/manifest.js +11 -11
  11. package/es/components/HDLKiosk/app/operations.js +92 -0
  12. package/es/components/HDLKiosk/app/workflow/barcode.js +7 -3
  13. package/es/components/HDLKiosk/app/workflow/index.js +16 -0
  14. package/es/components/HDLKiosk/app/workflow/predicates.js +1 -1
  15. package/es/components/HDLKiosk/app/workflow/quick.js +1 -1
  16. package/es/components/HDLKiosk/app/workflow/registry.js +4 -4
  17. package/es/components/HDLKiosk/app/workflow/scale.js +5 -1
  18. package/es/components/HDLKiosk/docs/00-/346/226/207/344/273/266/345/257/274/350/210/252.md +104 -167
  19. package/es/components/HDLKiosk/docs/01-/346/240/270/345/277/203/350/277/220/350/241/214/346/234/272/345/210/266.md +95 -89
  20. package/es/components/HDLKiosk/docs/04-/350/256/276/345/244/207/344/270/216/347/247/260/351/207/215.md +43 -26
  21. package/es/components/HDLKiosk/docs/05-/344/272/244/346/230/223/345/256/211/345/205/250.md +2 -0
  22. package/es/components/HDLKiosk/docs/08-/346/227/240/345/244/264Application/350/277/220/350/241/214/346/227/266/351/207/215/346/236/204/350/256/276/350/256/241.md +719 -0
  23. package/es/components/HDLKiosk/docs/09-Entry/350/256/276/345/244/207/344/272/213/344/273/266/351/207/215/346/236/204/344/277/256/345/244/215/346/212/245/345/221/212.md +187 -0
  24. package/es/components/HDLKiosk/docs/README.md +6 -2
  25. package/es/components/HDLKiosk/docs//345/256/236/346/226/275/350/277/233/345/272/246.md +8 -7
  26. package/es/components/HDLKiosk/docs//346/236/266/346/236/204/350/256/276/350/256/241.md +16 -18
  27. package/es/components/HDLKiosk/index.js +22 -28
  28. package/es/components/HDLKiosk/index.less +1 -1
  29. package/es/components/HDLKiosk/kernel/README.md +13 -12
  30. package/es/components/HDLKiosk/kernel/application/defineApplication.js +63 -24
  31. package/es/components/HDLKiosk/kernel/application/defineSlice.js +6 -6
  32. package/es/components/HDLKiosk/kernel/application/runtime.js +237 -0
  33. package/es/components/HDLKiosk/kernel/operations/coordinator.js +1 -1
  34. package/es/components/HDLKiosk/kernel/operations/registry.js +3 -3
  35. package/es/components/HDLKiosk/kernel/operations/sessionEpoch.js +1 -1
  36. package/es/components/HDLKiosk/kernel/operations/types.js +7 -3
  37. package/es/components/HDLKiosk/kernel/workflow/actor.js +16 -17
  38. package/es/components/HDLKiosk/kernel/workflow/compiler.js +14 -16
  39. package/es/components/HDLKiosk/runtime/createRuntime.js +238 -0
  40. package/es/components/HDLKiosk/{devices → runtime/devices}/dedupeStore.js +1 -1
  41. package/es/components/HDLKiosk/{devices → runtime/devices}/scaleIngress.js +1 -1
  42. package/es/components/HDLKiosk/{devices/scale/runtime.js → runtime/devices/scaleStore.js} +18 -24
  43. package/es/components/HDLKiosk/{devices → runtime/devices}/scannerIngress.js +1 -1
  44. package/es/components/HDLKiosk/runtime/devices/scannerSessionPort.js +60 -0
  45. package/es/components/HDLKiosk/runtime/devices/scannerSessionRouter.js +212 -0
  46. package/es/components/HDLKiosk/runtime/operations/barcode.js +18 -0
  47. package/es/components/HDLKiosk/runtime/operations/cart.js +44 -0
  48. package/es/components/HDLKiosk/{app → runtime}/operations/cartConsistency.js +1 -1
  49. package/es/components/HDLKiosk/{app → runtime}/operations/checkout.js +95 -110
  50. package/es/components/HDLKiosk/{app → runtime}/operations/checkoutRequirements.js +1 -1
  51. package/es/components/HDLKiosk/{app → runtime}/operations/checkoutSafety.js +1 -1
  52. package/es/components/HDLKiosk/{app → runtime}/operations/coordinator.js +2 -2
  53. package/es/components/HDLKiosk/runtime/operations/customization.js +70 -0
  54. package/es/components/HDLKiosk/{app → runtime}/operations/errors.js +1 -1
  55. package/es/components/HDLKiosk/runtime/operations/fulfillment.js +6 -0
  56. package/es/components/HDLKiosk/runtime/operations/identity.js +55 -0
  57. package/es/components/HDLKiosk/runtime/operations/registry.js +34 -0
  58. package/es/components/HDLKiosk/runtime/operations/session.js +29 -0
  59. package/es/components/HDLKiosk/runtime/operations/types.js +13 -0
  60. package/es/components/HDLKiosk/runtime/session/blockPolicy.js +14 -0
  61. package/es/components/HDLKiosk/runtime/{createWorkflowSession.js → session/createSession.js} +67 -17
  62. package/es/components/HDLKiosk/runtime/{domainTransitionRunner.js → session/transitionRunner.js} +10 -5
  63. package/es/components/HDLKiosk/runtime/{workflowContext.js → session/workflowContext.js} +2 -2
  64. package/es/components/HDLKiosk/runtime/{workflowLifecycle.js → session/workflowLifecycle.js} +2 -2
  65. package/es/components/HDLKiosk/runtime/triggers.js +28 -0
  66. package/es/components/HDLKiosk/slices/catalog/Screen/index.js +15 -8
  67. package/es/components/HDLKiosk/slices/catalog/Screen/index.less +74 -13
  68. package/es/components/HDLKiosk/slices/catalog/slice.js +2 -2
  69. package/es/components/HDLKiosk/slices/customization/Screen/index.js +34 -35
  70. package/es/components/HDLKiosk/slices/customization/Screen/index.less +5 -0
  71. package/es/components/HDLKiosk/slices/customization/slice.js +2 -3
  72. package/es/components/HDLKiosk/slices/fulfillment/slice.js +2 -2
  73. package/es/components/HDLKiosk/slices/fulfillment/view.js +1 -1
  74. package/es/components/HDLKiosk/slices/identity/slice.js +2 -2
  75. package/es/components/HDLKiosk/slices/identity/view.js +1 -1
  76. package/es/components/HDLKiosk/slices/payment/slice.js +3 -3
  77. package/es/components/HDLKiosk/slices/primaryProductPrompt/slice.js +1 -1
  78. package/es/components/HDLKiosk/{runtime → ui}/HDLKioskWorkflowView.js +43 -129
  79. package/es/components/HDLKiosk/ui/ScaleSimulatorConsole/index.js +387 -0
  80. package/es/components/HDLKiosk/ui/ScaleSimulatorConsole/index.less +621 -0
  81. package/es/components/HDLKiosk/{app → ui}/ScreenRenderer.js +1 -1
  82. package/es/components/HDLKiosk/ui/controllers/useHDLKioskActionDispatcher.js +66 -0
  83. package/es/components/HDLKiosk/{runtime → ui}/controllers/useHDLKioskCustomerController.js +1 -1
  84. package/es/components/HDLKiosk/ui/controllers/useHDLKioskDeviceController.js +25 -0
  85. package/es/components/HDLKiosk/ui/controllers/useHDLKioskExitController.js +53 -0
  86. package/es/components/HDLKiosk/{runtime → ui}/controllers/useHDLKioskScreenData.js +1 -1
  87. package/es/components/HDLKiosk/ui/controllers/useHDLKioskSessionController.js +39 -0
  88. package/es/components/HDLKiosk/{app → ui}/entry/Screen/index.js +8 -6
  89. package/es/components/HDLKiosk/{app → ui}/entry/model.js +2 -2
  90. package/es/components/HDLKiosk/ui/scale.js +20 -0
  91. package/es/components/HDLKiosk/{runtime/useHostSnapshot.js → ui/snapshots.js} +6 -8
  92. package/es/components/HDLKiosk/{app → ui}/views.js +1 -1
  93. package/es/components/HDLKiosk/{runtime → ui}/workflowEvent.js +1 -1
  94. package/es/components/HDLKiosk/utils.js +4 -4
  95. package/es/components/bigSale/components/BookingFloatingPanel/useBookingPanelController.js +1 -0
  96. package/es/components/bigSale/components/TimeBar/index.js +1 -0
  97. package/es/components/bigSale/dialog.js +1 -0
  98. package/es/components/bigSale/hooks/useBigSaleContext.js +1 -0
  99. package/es/components/bigSale/hooks/useSelectFloorMapResourceForBigSale.js +1 -0
  100. package/es/components/bigSale/index.js +1 -0
  101. package/es/components/bigSale/templates/HDLKiosk/adapter/HDLKioskPaymentRuntime.js +2 -1
  102. package/es/components/bigSale/templates/HDLKiosk/adapter/capabilities.js +1 -1
  103. package/es/components/bigSale/templates/HDLKiosk/adapter/projection.js +21 -11
  104. package/es/components/bigSale/templates/HDLKiosk/adapter/sales.js +21 -3
  105. package/es/components/bigSale/templates/HDLKiosk/adapter/scaleTrigger.js +20 -5
  106. package/es/components/bigSale/templates/HDLKiosk/adapter/useBigSaleHDLKioskHost.js +3 -0
  107. package/es/components/bigSale/templates/HDLKiosk/index.js +3 -3
  108. package/es/components/bigSale/templates/Kiosk/index.js +1 -0
  109. package/es/components/sharedSecondaryBigSale/SharedSecondaryBigSaleReceiver.js +1 -0
  110. package/es/index.js +2 -0
  111. package/es/plus/pisellReservation/data/bookingToReservationTables.js +1 -1
  112. package/es/plus/pisellReservation/floorMap/floorPlanApi.js +1 -1
  113. package/es/plus/pisellReservation/floorMap/reservationMock.js +1 -1
  114. package/es/plus/pisellReservation/index.js +17 -0
  115. package/es/plus/saleDetail/Base.js +1 -0
  116. package/es/plus/saleDetail/components/Client/hooks/useClientSelectorProps.js +1 -0
  117. package/es/plus/saleDetail/components/DetailActions/index.js +1 -0
  118. package/es/plus/saleDetail/components/SummaryFinancialSections/index.js +1 -0
  119. package/es/plus/saleDetail/index.js +1 -0
  120. package/es/plus/saleDetail/tmpl/B/components/Dish/index.js +1 -0
  121. package/es/plus/saleDetail/tmpl/B/index.js +1 -0
  122. package/es/plus/salesSdk/index.js +52 -0
  123. package/es/plus/salesSdk/utils/addProductWithFlowDebounced.js +1 -1
  124. package/es/plus/salesSdk/utils/bookingDate.js +1 -1
  125. package/es/plus/salesSdk/utils/customerAuthGate.js +1 -1
  126. package/es/plus/salesSdk/utils/enrichCartLineHolderDisplay.js +1 -1
  127. package/es/pro/Login2.0/AuthModal.d.ts +1 -1
  128. package/es/pro/Login2.0/index.d.ts +2 -1
  129. package/es/pro/Login2.0/shared/types.d.ts +1 -1
  130. package/lib/components/HDLKiosk/{contracts → app/contracts}/config.js +1 -1
  131. package/lib/components/HDLKiosk/app/manifest.js +18 -19
  132. package/lib/components/HDLKiosk/app/operations.js +105 -0
  133. package/lib/components/HDLKiosk/app/workflow/barcode.js +7 -3
  134. package/lib/components/HDLKiosk/app/workflow/index.js +16 -0
  135. package/lib/components/HDLKiosk/app/workflow/predicates.js +1 -0
  136. package/lib/components/HDLKiosk/app/workflow/quick.js +1 -1
  137. package/lib/components/HDLKiosk/app/workflow/registry.js +3 -3
  138. package/lib/components/HDLKiosk/app/workflow/scale.js +5 -1
  139. package/lib/components/HDLKiosk/docs/00-/346/226/207/344/273/266/345/257/274/350/210/252.md +104 -167
  140. package/lib/components/HDLKiosk/docs/01-/346/240/270/345/277/203/350/277/220/350/241/214/346/234/272/345/210/266.md +95 -89
  141. package/lib/components/HDLKiosk/docs/04-/350/256/276/345/244/207/344/270/216/347/247/260/351/207/215.md +43 -26
  142. package/lib/components/HDLKiosk/docs/05-/344/272/244/346/230/223/345/256/211/345/205/250.md +2 -0
  143. package/lib/components/HDLKiosk/docs/08-/346/227/240/345/244/264Application/350/277/220/350/241/214/346/227/266/351/207/215/346/236/204/350/256/276/350/256/241.md +719 -0
  144. package/lib/components/HDLKiosk/docs/09-Entry/350/256/276/345/244/207/344/272/213/344/273/266/351/207/215/346/236/204/344/277/256/345/244/215/346/212/245/345/221/212.md +187 -0
  145. package/lib/components/HDLKiosk/docs/README.md +6 -2
  146. package/lib/components/HDLKiosk/docs//345/256/236/346/226/275/350/277/233/345/272/246.md +8 -7
  147. package/lib/components/HDLKiosk/docs//346/236/266/346/236/204/350/256/276/350/256/241.md +16 -18
  148. package/lib/components/HDLKiosk/index.js +25 -31
  149. package/lib/components/HDLKiosk/index.less +1 -1
  150. package/lib/components/HDLKiosk/kernel/README.md +13 -12
  151. package/lib/components/HDLKiosk/kernel/application/defineApplication.js +65 -25
  152. package/lib/components/HDLKiosk/kernel/application/defineSlice.js +6 -6
  153. package/lib/components/HDLKiosk/kernel/application/runtime.js +237 -0
  154. package/lib/components/HDLKiosk/kernel/operations/coordinator.js +1 -1
  155. package/lib/components/HDLKiosk/kernel/operations/registry.js +3 -3
  156. package/lib/components/HDLKiosk/kernel/operations/sessionEpoch.js +1 -1
  157. package/lib/components/HDLKiosk/kernel/operations/types.js +8 -3
  158. package/lib/components/HDLKiosk/kernel/workflow/actor.js +16 -17
  159. package/lib/components/HDLKiosk/kernel/workflow/compiler.js +14 -16
  160. package/lib/components/HDLKiosk/runtime/createRuntime.js +239 -0
  161. package/lib/components/HDLKiosk/{devices → runtime/devices}/dedupeStore.js +1 -1
  162. package/lib/components/HDLKiosk/{devices → runtime/devices}/scaleIngress.js +1 -1
  163. package/lib/components/HDLKiosk/{devices/scale/runtime.js → runtime/devices/scaleStore.js} +17 -27
  164. package/lib/components/HDLKiosk/{devices → runtime/devices}/scannerIngress.js +1 -1
  165. package/lib/components/HDLKiosk/runtime/devices/scannerSessionPort.js +60 -0
  166. package/lib/components/HDLKiosk/runtime/devices/scannerSessionRouter.js +212 -0
  167. package/lib/components/HDLKiosk/runtime/operations/barcode.js +17 -0
  168. package/lib/components/HDLKiosk/runtime/operations/cart.js +46 -0
  169. package/lib/components/HDLKiosk/{app → runtime}/operations/cartConsistency.js +1 -1
  170. package/lib/components/HDLKiosk/{app → runtime}/operations/checkout.js +97 -112
  171. package/lib/components/HDLKiosk/{app → runtime}/operations/checkoutRequirements.js +1 -1
  172. package/lib/components/HDLKiosk/{app → runtime}/operations/checkoutSafety.js +1 -1
  173. package/lib/components/HDLKiosk/{app → runtime}/operations/coordinator.js +2 -2
  174. package/lib/components/HDLKiosk/runtime/operations/customization.js +73 -0
  175. package/lib/components/HDLKiosk/{app → runtime}/operations/errors.js +1 -1
  176. package/lib/components/HDLKiosk/runtime/operations/fulfillment.js +5 -0
  177. package/lib/components/HDLKiosk/runtime/operations/identity.js +55 -0
  178. package/lib/components/HDLKiosk/runtime/operations/registry.js +34 -0
  179. package/lib/components/HDLKiosk/runtime/operations/session.js +30 -0
  180. package/lib/components/HDLKiosk/runtime/operations/types.js +14 -0
  181. package/lib/components/HDLKiosk/runtime/session/blockPolicy.js +14 -0
  182. package/lib/components/HDLKiosk/runtime/{createWorkflowSession.js → session/createSession.js} +71 -21
  183. package/lib/components/HDLKiosk/runtime/{domainTransitionRunner.js → session/transitionRunner.js} +10 -5
  184. package/lib/components/HDLKiosk/runtime/{workflowContext.js → session/workflowContext.js} +2 -2
  185. package/lib/components/HDLKiosk/runtime/{workflowLifecycle.js → session/workflowLifecycle.js} +2 -2
  186. package/lib/components/HDLKiosk/runtime/triggers.js +28 -0
  187. package/lib/components/HDLKiosk/slices/catalog/Screen/index.js +15 -8
  188. package/lib/components/HDLKiosk/slices/catalog/Screen/index.less +74 -13
  189. package/lib/components/HDLKiosk/slices/catalog/slice.js +3 -3
  190. package/lib/components/HDLKiosk/slices/customization/Screen/index.js +35 -36
  191. package/lib/components/HDLKiosk/slices/customization/Screen/index.less +5 -0
  192. package/lib/components/HDLKiosk/slices/customization/slice.js +5 -6
  193. package/lib/components/HDLKiosk/slices/fulfillment/slice.js +3 -3
  194. package/lib/components/HDLKiosk/slices/fulfillment/view.js +1 -1
  195. package/lib/components/HDLKiosk/slices/identity/slice.js +4 -4
  196. package/lib/components/HDLKiosk/slices/identity/view.js +1 -1
  197. package/lib/components/HDLKiosk/slices/payment/slice.js +5 -5
  198. package/lib/components/HDLKiosk/slices/primaryProductPrompt/slice.js +1 -1
  199. package/lib/components/HDLKiosk/{runtime → ui}/HDLKioskWorkflowView.js +44 -130
  200. package/lib/components/HDLKiosk/ui/ScaleSimulatorConsole/index.js +390 -0
  201. package/lib/components/HDLKiosk/ui/ScaleSimulatorConsole/index.less +621 -0
  202. package/lib/components/HDLKiosk/{app → ui}/ScreenRenderer.js +1 -1
  203. package/lib/components/HDLKiosk/ui/controllers/useHDLKioskActionDispatcher.js +67 -0
  204. package/lib/components/HDLKiosk/{runtime → ui}/controllers/useHDLKioskCustomerController.js +1 -1
  205. package/lib/components/HDLKiosk/ui/controllers/useHDLKioskDeviceController.js +26 -0
  206. package/lib/components/HDLKiosk/ui/controllers/useHDLKioskExitController.js +54 -0
  207. package/lib/components/HDLKiosk/{runtime → ui}/controllers/useHDLKioskScreenData.js +1 -1
  208. package/lib/components/HDLKiosk/ui/controllers/useHDLKioskSessionController.js +40 -0
  209. package/lib/components/HDLKiosk/{app → ui}/entry/Screen/index.js +8 -6
  210. package/lib/components/HDLKiosk/{app → ui}/entry/model.js +2 -2
  211. package/lib/components/HDLKiosk/ui/scale.js +24 -0
  212. package/lib/components/HDLKiosk/{runtime/useHostSnapshot.js → ui/snapshots.js} +6 -7
  213. package/lib/components/HDLKiosk/{app → ui}/views.js +1 -1
  214. package/lib/components/HDLKiosk/{runtime → ui}/workflowEvent.js +1 -1
  215. package/lib/components/HDLKiosk/utils.js +4 -4
  216. package/lib/components/bigSale/templates/HDLKiosk/adapter/HDLKioskPaymentRuntime.js +2 -1
  217. package/lib/components/bigSale/templates/HDLKiosk/adapter/capabilities.js +1 -1
  218. package/lib/components/bigSale/templates/HDLKiosk/adapter/projection.js +21 -10
  219. package/lib/components/bigSale/templates/HDLKiosk/adapter/sales.js +20 -2
  220. package/lib/components/bigSale/templates/HDLKiosk/adapter/scaleTrigger.js +19 -4
  221. package/lib/components/bigSale/templates/HDLKiosk/adapter/useBigSaleHDLKioskHost.js +3 -0
  222. package/lib/components/bigSale/templates/HDLKiosk/index.js +4 -4
  223. package/package.json +3 -3
  224. package/es/components/HDLKiosk/app/constants.js +0 -9
  225. package/es/components/HDLKiosk/app/operations/barcode.js +0 -22
  226. package/es/components/HDLKiosk/app/operations/cart.js +0 -60
  227. package/es/components/HDLKiosk/app/operations/fulfillment.js +0 -11
  228. package/es/components/HDLKiosk/app/operations/session.js +0 -41
  229. package/es/components/HDLKiosk/app/operations/types.js +0 -11
  230. package/es/components/HDLKiosk/devices/entryArbiter.js +0 -33
  231. package/es/components/HDLKiosk/runtime/controllers/useHDLKioskDeviceController.js +0 -75
  232. package/es/components/HDLKiosk/runtime/controllers/useHDLKioskScannerController.js +0 -160
  233. package/es/components/HDLKiosk/runtime/controllers/useHDLKioskSessionController.js +0 -185
  234. package/es/components/HDLKiosk/runtime/useWorkflowSnapshot.js +0 -12
  235. package/es/components/HDLKiosk/slices/customization/operation.js +0 -80
  236. package/es/components/HDLKiosk/slices/identity/operation.js +0 -60
  237. package/es/private-materials/lowcode/authmodal/meta.d.ts +0 -1
  238. package/lib/components/HDLKiosk/app/constants.js +0 -9
  239. package/lib/components/HDLKiosk/app/operations/barcode.js +0 -21
  240. package/lib/components/HDLKiosk/app/operations/cart.js +0 -62
  241. package/lib/components/HDLKiosk/app/operations/fulfillment.js +0 -10
  242. package/lib/components/HDLKiosk/app/operations/session.js +0 -42
  243. package/lib/components/HDLKiosk/app/operations/types.js +0 -12
  244. package/lib/components/HDLKiosk/devices/entryArbiter.js +0 -33
  245. package/lib/components/HDLKiosk/runtime/controllers/useHDLKioskDeviceController.js +0 -76
  246. package/lib/components/HDLKiosk/runtime/controllers/useHDLKioskScannerController.js +0 -161
  247. package/lib/components/HDLKiosk/runtime/controllers/useHDLKioskSessionController.js +0 -186
  248. package/lib/components/HDLKiosk/runtime/useWorkflowSnapshot.js +0 -13
  249. package/lib/components/HDLKiosk/slices/customization/operation.js +0 -83
  250. package/lib/components/HDLKiosk/slices/identity/operation.js +0 -60
  251. /package/es/components/HDLKiosk/{app → ui}/entry/Screen/index.less +0 -0
  252. /package/lib/components/HDLKiosk/{app → ui}/entry/Screen/index.less +0 -0
@@ -1,31 +1,51 @@
1
1
  const require_objectSpread2 = require("../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js");
2
2
  const require_objectWithoutProperties = require("../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectWithoutProperties.js");
3
3
  //#region src/components/HDLKiosk/kernel/application/defineApplication.ts
4
- const _excluded = ["slice"];
5
- function getKioskSliceNavigationGuardId(sliceId, phase) {
4
+ const _excluded = ["start"], _excluded2 = ["slice"];
5
+ function getSliceNavigationGuardId(sliceId, phase) {
6
6
  return `${sliceId}.${phase}`;
7
7
  }
8
8
  function isWorkflowStep(value) {
9
9
  return "slice" in value;
10
10
  }
11
11
  function defineWorkflow(workflow) {
12
- if (!workflow.id.trim()) throw new Error("Kiosk Workflow id cannot be empty");
13
- if (workflow.steps.length === 0) throw new Error(`Kiosk Workflow ${workflow.id} must contain steps`);
14
- return Object.freeze(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, workflow), {}, { steps: Object.freeze([...workflow.steps]) }));
12
+ if (!workflow.id.trim()) throw new Error("Workflow id cannot be empty");
13
+ if (workflow.steps.length === 0) throw new Error(`Workflow ${workflow.id} must contain steps`);
14
+ return Object.freeze(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, workflow), workflow.start ? { start: Object.freeze(require_objectSpread2._objectSpread2({}, workflow.start)) } : {}), {}, { steps: Object.freeze([...workflow.steps]) }));
15
15
  }
16
- function defineKioskApplication(definition) {
17
- var _definition$operation;
18
- if (!definition.id.trim()) throw new Error("Kiosk Application id cannot be empty");
16
+ const manualTrigger = Object.freeze({
17
+ id: "manual",
18
+ mode: "manual"
19
+ });
20
+ function defineTrigger(trigger) {
21
+ if (!trigger.id.trim()) throw new Error("Application Trigger id cannot be empty");
22
+ return Object.freeze(require_objectSpread2._objectSpread2({}, trigger));
23
+ }
24
+ function resolveWorkflowStartBinding(workflow) {
25
+ var _workflow$start;
26
+ const start = (_workflow$start = workflow.start) !== null && _workflow$start !== void 0 ? _workflow$start : {
27
+ trigger: manualTrigger.id,
28
+ channel: workflow.id
29
+ };
30
+ if (!start.trigger.trim()) throw new Error(`Workflow ${workflow.id} trigger cannot be empty`);
31
+ if (!start.channel.trim()) throw new Error(`Workflow ${workflow.id} trigger channel cannot be empty`);
32
+ return Object.freeze(require_objectSpread2._objectSpread2({}, start));
33
+ }
34
+ function defineApplication(definition) {
35
+ var _definition$operation, _definition$triggers;
36
+ if (!definition.id.trim()) throw new Error("Application id cannot be empty");
19
37
  const slices = /* @__PURE__ */ new Map();
20
38
  const operations = /* @__PURE__ */ new Map();
39
+ const triggers = new Map([[manualTrigger.id, manualTrigger]]);
40
+ const workflowStarts = /* @__PURE__ */ new Map();
21
41
  const registerOperation = (operation) => {
22
42
  const existing = operations.get(operation.id);
23
- if (existing && existing !== operation) throw new Error(`Duplicate Kiosk Operation: ${operation.id}`);
43
+ if (existing && existing !== operation) throw new Error(`Duplicate Operation: ${operation.id}`);
24
44
  operations.set(operation.id, operation);
25
45
  };
26
46
  definition.slices.forEach((slice) => {
27
47
  var _slice$commands;
28
- if (slices.has(slice.id)) throw new Error(`Duplicate Kiosk Slice: ${slice.id}`);
48
+ if (slices.has(slice.id)) throw new Error(`Duplicate Slice: ${slice.id}`);
29
49
  const operationIds = /* @__PURE__ */ new Set();
30
50
  Object.values(slice.intents).forEach((intent) => {
31
51
  if (intent.kind !== "effect") return;
@@ -42,22 +62,41 @@ function defineKioskApplication(definition) {
42
62
  }));
43
63
  });
44
64
  (_definition$operation = definition.operations) === null || _definition$operation === void 0 || _definition$operation.forEach(registerOperation);
65
+ (_definition$triggers = definition.triggers) === null || _definition$triggers === void 0 || _definition$triggers.forEach((trigger) => {
66
+ if (triggers.has(trigger.id)) throw new Error(`Duplicate Application Trigger: ${trigger.id}`);
67
+ if (!trigger.id.trim()) throw new Error("Application Trigger id cannot be empty");
68
+ triggers.set(trigger.id, Object.freeze(require_objectSpread2._objectSpread2({}, trigger)));
69
+ });
70
+ const automaticTriggerOwners = /* @__PURE__ */ new Map();
45
71
  Object.values(definition.workflows).forEach((workflow) => {
72
+ if (workflowStarts.has(workflow.id)) throw new Error(`Duplicate Workflow: ${workflow.id}`);
73
+ const start = resolveWorkflowStartBinding(workflow);
74
+ const trigger = triggers.get(start.trigger);
75
+ if (!trigger) throw new Error(`Workflow ${workflow.id} references unknown Trigger ${start.trigger}`);
76
+ if (trigger.mode === "automatic") {
77
+ const owner = automaticTriggerOwners.get(trigger.id);
78
+ if (owner) throw new Error(`Automatic Trigger ${trigger.id} is already bound to Workflow ${owner}`);
79
+ automaticTriggerOwners.set(trigger.id, workflow.id);
80
+ }
81
+ workflowStarts.set(workflow.id, start);
46
82
  workflow.steps.forEach((rawStep) => {
47
83
  var _slices$get;
48
84
  const slice = isWorkflowStep(rawStep) ? rawStep.slice : rawStep;
49
- if (((_slices$get = slices.get(slice.id)) === null || _slices$get === void 0 ? void 0 : _slices$get.definition) !== slice) throw new Error(`Kiosk Workflow ${workflow.id} references unregistered Slice ${slice.id}`);
85
+ if (((_slices$get = slices.get(slice.id)) === null || _slices$get === void 0 ? void 0 : _slices$get.definition) !== slice) throw new Error(`Workflow ${workflow.id} references unregistered Slice ${slice.id}`);
50
86
  });
51
87
  });
52
88
  return Object.freeze({
53
89
  id: definition.id,
54
90
  slices,
55
91
  operations,
92
+ triggers,
93
+ workflowStarts,
56
94
  workflows: Object.freeze(require_objectSpread2._objectSpread2({}, definition.workflows))
57
95
  });
58
96
  }
59
- function normalizeKioskWorkflow(workflow) {
60
- return Object.freeze(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, workflow), {}, { steps: Object.freeze(workflow.steps.map((rawStep) => {
97
+ function normalizeApplicationWorkflow(workflow) {
98
+ const { start: _start } = workflow, structure = require_objectWithoutProperties._objectWithoutProperties(workflow, _excluded);
99
+ return Object.freeze(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, structure), {}, { steps: Object.freeze(workflow.steps.map((rawStep) => {
61
100
  if (!isWorkflowStep(rawStep)) {
62
101
  const authoringOverrides = rawStep;
63
102
  return Object.freeze({
@@ -65,10 +104,10 @@ function normalizeKioskWorkflow(workflow) {
65
104
  presentation: typeof authoringOverrides.presentation === "object" ? authoringOverrides.presentation : void 0,
66
105
  readiness: authoringOverrides.readiness,
67
106
  on: authoringOverrides.on,
68
- end: authoringOverrides.end
107
+ isTerminal: authoringOverrides.isTerminal
69
108
  });
70
109
  }
71
- const { slice } = rawStep, step = require_objectWithoutProperties._objectWithoutProperties(rawStep, _excluded);
110
+ const { slice } = rawStep, step = require_objectWithoutProperties._objectWithoutProperties(rawStep, _excluded2);
72
111
  return Object.freeze(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, step), {}, { activity: slice.id }));
73
112
  })) }));
74
113
  }
@@ -76,7 +115,7 @@ function normalizeKioskWorkflow(workflow) {
76
115
  function createApplicationActivityRegistry(application) {
77
116
  const contracts = /* @__PURE__ */ new Map();
78
117
  application.slices.forEach(({ definition }) => {
79
- var _definition$presentat, _definition$additiona;
118
+ var _definition$presentat, _definition$surface$i, _definition$surface, _definition$additiona;
80
119
  const exitPolicies = {};
81
120
  Object.entries(definition.intents).forEach(([intent, behavior]) => {
82
121
  let policy;
@@ -90,12 +129,12 @@ function createApplicationActivityRegistry(application) {
90
129
  const primaryPresentation = (_definition$presentat = definition.presentation) !== null && _definition$presentat !== void 0 ? _definition$presentat : "page";
91
130
  contracts.set(definition.id, Object.freeze({
92
131
  id: definition.id,
93
- screenId: definition.screen.id,
132
+ surfaceId: (_definition$surface$i = (_definition$surface = definition.surface) === null || _definition$surface === void 0 ? void 0 : _definition$surface.id) !== null && _definition$surface$i !== void 0 ? _definition$surface$i : definition.id,
94
133
  intents: Object.freeze(Object.keys(definition.intents)),
95
134
  exitPolicies: Object.freeze(exitPolicies),
96
135
  navigationGuards: definition.guards ? Object.freeze(Object.keys(definition.guards).reduce((guards, rawPhase) => {
97
136
  const phase = rawPhase;
98
- guards[phase] = getKioskSliceNavigationGuardId(definition.id, phase);
137
+ guards[phase] = getSliceNavigationGuardId(definition.id, phase);
99
138
  return guards;
100
139
  }, {})) : void 0,
101
140
  allowedPresentations: Object.freeze([...new Set([primaryPresentation, ...(_definition$additiona = definition.additionalPresentations) !== null && _definition$additiona !== void 0 ? _definition$additiona : []])]),
@@ -108,7 +147,7 @@ function createApplicationActivityRegistry(application) {
108
147
  has: (id) => contracts.has(id),
109
148
  require: (id) => {
110
149
  const contract = contracts.get(id);
111
- if (!contract) throw new Error(`Unknown Kiosk Slice: ${id}`);
150
+ if (!contract) throw new Error(`Unknown Slice: ${id}`);
112
151
  return contract;
113
152
  }
114
153
  });
@@ -123,8 +162,8 @@ function createApplicationNavigationGuardRegistry(application) {
123
162
  var _definition$guards;
124
163
  Object.entries((_definition$guards = definition.guards) !== null && _definition$guards !== void 0 ? _definition$guards : {}).forEach(([rawPhase, guard]) => {
125
164
  const phase = rawPhase;
126
- const id = getKioskSliceNavigationGuardId(definition.id, phase);
127
- if (navigationGuards.has(id)) throw new Error(`Duplicate Kiosk Navigation Guard: ${id}`);
165
+ const id = getSliceNavigationGuardId(definition.id, phase);
166
+ if (navigationGuards.has(id)) throw new Error(`Duplicate Navigation Guard: ${id}`);
128
167
  navigationGuards.set(id, guard);
129
168
  });
130
169
  });
@@ -133,8 +172,8 @@ function createApplicationNavigationGuardRegistry(application) {
133
172
  has: (id) => navigationGuards.has(id),
134
173
  evaluate: (id, context) => {
135
174
  const navigationGuard = navigationGuards.get(id);
136
- if (!navigationGuard) throw new Error(`Unknown Kiosk Navigation Guard: ${id}`);
137
- if (context.to.kind !== "step") throw new Error(`Kiosk Slice Navigation Guard ${id} requires a Step target`);
175
+ if (!navigationGuard) throw new Error(`Unknown Navigation Guard: ${id}`);
176
+ if (context.to.kind !== "step") throw new Error(`Slice Navigation Guard ${id} requires a Step target`);
138
177
  return navigationGuard(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, context), {}, {
139
178
  workflow: context.context,
140
179
  to: context.to
@@ -145,6 +184,7 @@ function createApplicationNavigationGuardRegistry(application) {
145
184
  //#endregion
146
185
  exports.createApplicationActivityRegistry = createApplicationActivityRegistry;
147
186
  exports.createApplicationNavigationGuardRegistry = createApplicationNavigationGuardRegistry;
148
- exports.defineKioskApplication = defineKioskApplication;
187
+ exports.defineApplication = defineApplication;
188
+ exports.defineTrigger = defineTrigger;
149
189
  exports.defineWorkflow = defineWorkflow;
150
- exports.normalizeKioskWorkflow = normalizeKioskWorkflow;
190
+ exports.normalizeApplicationWorkflow = normalizeApplicationWorkflow;
@@ -13,17 +13,17 @@ const effect = (operation, options = {}) => Object.freeze({
13
13
  });
14
14
  function defineSlice(slice) {
15
15
  var _slice$guards;
16
- if (!slice.id.trim()) throw new Error("Kiosk Slice id cannot be empty");
17
- if (!slice.screen.id.trim()) throw new Error(`Kiosk Slice ${slice.id} screen id cannot be empty`);
16
+ if (!slice.id.trim()) throw new Error("Slice id cannot be empty");
17
+ if (slice.surface && !slice.surface.id.trim()) throw new Error(`Slice ${slice.id} surface id cannot be empty`);
18
18
  Object.entries(slice.intents).forEach(([intent]) => {
19
- if (!intent.trim()) throw new Error(`Kiosk Slice ${slice.id} has an empty intent`);
19
+ if (!intent.trim()) throw new Error(`Slice ${slice.id} has an empty intent`);
20
20
  });
21
21
  Object.entries((_slice$guards = slice.guards) !== null && _slice$guards !== void 0 ? _slice$guards : {}).forEach(([phase, navigationGuard]) => {
22
- if (phase !== "beforeEnter") throw new Error(`Kiosk Slice ${slice.id} has an unknown navigation guard phase: ${phase}`);
23
- if (typeof navigationGuard !== "function") throw new Error(`Kiosk Slice ${slice.id} guard ${phase} must be a function`);
22
+ if (phase !== "beforeEnter") throw new Error(`Slice ${slice.id} has an unknown navigation guard phase: ${phase}`);
23
+ if (typeof navigationGuard !== "function") throw new Error(`Slice ${slice.id} guard ${phase} must be a function`);
24
24
  });
25
25
  return Object.freeze(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, slice), {}, {
26
- screen: Object.freeze(require_objectSpread2._objectSpread2({}, slice.screen)),
26
+ surface: slice.surface ? Object.freeze(require_objectSpread2._objectSpread2({}, slice.surface)) : void 0,
27
27
  intents: Object.freeze(require_objectSpread2._objectSpread2({}, slice.intents)),
28
28
  guards: slice.guards ? Object.freeze(require_objectSpread2._objectSpread2({}, slice.guards)) : void 0,
29
29
  commands: slice.commands ? Object.freeze(require_objectSpread2._objectSpread2({}, slice.commands)) : void 0,
@@ -0,0 +1,237 @@
1
+ const require_objectSpread2 = require("../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js");
2
+ const require_asyncToGenerator = require("../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/asyncToGenerator.js");
3
+ //#region src/components/HDLKiosk/kernel/application/runtime.ts
4
+ function createApplicationRuntime({ definition, sessionFactory, triggerAdapters = [], maxActiveSessions = Number.POSITIVE_INFINITY }) {
5
+ if (maxActiveSessions <= 0) throw new Error("Application Runtime maxActiveSessions must be positive");
6
+ const workflowsByTrigger = /* @__PURE__ */ new Map();
7
+ definition.workflowStarts.forEach((start, workflowId) => {
8
+ if (start.trigger === "manual") return;
9
+ if (workflowsByTrigger.has(start.trigger)) throw new Error(`Automatic Trigger ${start.trigger} has multiple Workflow bindings`);
10
+ workflowsByTrigger.set(start.trigger, {
11
+ workflowId,
12
+ start
13
+ });
14
+ });
15
+ const adapters = /* @__PURE__ */ new Map();
16
+ triggerAdapters.forEach((adapter) => {
17
+ if (adapters.has(adapter.trigger)) throw new Error(`Duplicate Trigger Adapter: ${adapter.trigger}`);
18
+ const contract = definition.triggers.get(adapter.trigger);
19
+ if (!contract || contract.mode !== "automatic") throw new Error(`Unknown automatic Trigger Adapter: ${adapter.trigger}`);
20
+ adapters.set(adapter.trigger, adapter);
21
+ });
22
+ const sessions = /* @__PURE__ */ new Map();
23
+ const ownedSessionIds = /* @__PURE__ */ new Set();
24
+ const sessionListeners = /* @__PURE__ */ new Set();
25
+ const occurrenceSessions = /* @__PURE__ */ new Map();
26
+ const pendingOccurrences = /* @__PURE__ */ new Map();
27
+ const cleanups = [];
28
+ let state = "inactive";
29
+ let activationEpoch = 0;
30
+ let manualSequence = 0;
31
+ let pendingStartCount = 0;
32
+ const publishSessionEvent = (event) => {
33
+ sessionListeners.forEach((listener) => listener(event));
34
+ };
35
+ const create = function() {
36
+ var _ref = require_asyncToGenerator._asyncToGenerator(function* (input) {
37
+ if (state !== "active") return {
38
+ status: "rejected",
39
+ reason: "runtimeInactive"
40
+ };
41
+ const occurrenceKey = `${input.cause.trigger}\u0000${input.cause.occurrenceId}`;
42
+ const existingId = occurrenceSessions.get(occurrenceKey);
43
+ const existing = existingId ? sessions.get(existingId) : void 0;
44
+ if (existing) return {
45
+ status: "duplicate",
46
+ session: existing
47
+ };
48
+ const pending = pendingOccurrences.get(occurrenceKey);
49
+ if (pending) return pending;
50
+ if (ownedSessionIds.size + pendingStartCount >= maxActiveSessions) return {
51
+ status: "rejected",
52
+ reason: "admissionRejected"
53
+ };
54
+ const startActivationEpoch = activationEpoch;
55
+ pendingStartCount += 1;
56
+ const promise = sessionFactory.create(input).then((session) => {
57
+ if (state !== "active" || activationEpoch !== startActivationEpoch) {
58
+ session.dispose();
59
+ return {
60
+ status: "rejected",
61
+ reason: "runtimeInactive"
62
+ };
63
+ }
64
+ if (session.workflowId !== input.workflowId) {
65
+ session.dispose();
66
+ return {
67
+ status: "rejected",
68
+ reason: "sessionStartFailed",
69
+ error: /* @__PURE__ */ new Error(`Session Workflow ${session.workflowId} does not match ${input.workflowId}`)
70
+ };
71
+ }
72
+ if (sessions.has(session.id)) {
73
+ session.dispose();
74
+ return {
75
+ status: "rejected",
76
+ reason: "sessionStartFailed",
77
+ error: /* @__PURE__ */ new Error(`Duplicate Workflow Session: ${session.id}`)
78
+ };
79
+ }
80
+ sessions.set(session.id, session);
81
+ ownedSessionIds.add(session.id);
82
+ occurrenceSessions.set(occurrenceKey, session.id);
83
+ publishSessionEvent({
84
+ type: "started",
85
+ session
86
+ });
87
+ try {
88
+ var _sessionFactory$onSta;
89
+ (_sessionFactory$onSta = sessionFactory.onStarted) === null || _sessionFactory$onSta === void 0 || _sessionFactory$onSta.call(sessionFactory, require_objectSpread2._objectSpread2({ session }, input));
90
+ } catch (error) {
91
+ sessions.delete(session.id);
92
+ ownedSessionIds.delete(session.id);
93
+ occurrenceSessions.delete(occurrenceKey);
94
+ session.dispose();
95
+ publishSessionEvent({
96
+ type: "disposed",
97
+ sessionId: session.id
98
+ });
99
+ return {
100
+ status: "rejected",
101
+ reason: "sessionStartFailed",
102
+ error
103
+ };
104
+ }
105
+ return {
106
+ status: "started",
107
+ session
108
+ };
109
+ }).catch((error) => ({
110
+ status: "rejected",
111
+ reason: "sessionStartFailed",
112
+ error
113
+ })).finally(() => {
114
+ pendingStartCount -= 1;
115
+ pendingOccurrences.delete(occurrenceKey);
116
+ });
117
+ pendingOccurrences.set(occurrenceKey, promise);
118
+ return promise;
119
+ });
120
+ return function create(_x) {
121
+ return _ref.apply(this, arguments);
122
+ };
123
+ }();
124
+ const emitAutomatic = (trigger, occurrence) => {
125
+ var _occurrence$correlati;
126
+ const binding = workflowsByTrigger.get(trigger);
127
+ if (!binding || binding.start.channel !== occurrence.channel) return Promise.resolve({
128
+ status: "rejected",
129
+ reason: "unknownChannel"
130
+ });
131
+ return create({
132
+ workflowId: binding.workflowId,
133
+ payload: occurrence.payload,
134
+ cause: Object.freeze({
135
+ trigger,
136
+ channel: occurrence.channel,
137
+ occurrenceId: occurrence.occurrenceId,
138
+ correlationId: (_occurrence$correlati = occurrence.correlationId) !== null && _occurrence$correlati !== void 0 ? _occurrence$correlati : `${definition.id}:${trigger}:${occurrence.occurrenceId}`
139
+ })
140
+ });
141
+ };
142
+ const registry = Object.freeze({
143
+ get: (sessionId) => sessions.get(sessionId),
144
+ list: () => Object.freeze([...sessions.values()]),
145
+ listActive: () => Object.freeze([...sessions.values()].filter((session) => session.isActive())),
146
+ subscribe: (listener) => {
147
+ sessionListeners.add(listener);
148
+ return () => sessionListeners.delete(listener);
149
+ }
150
+ });
151
+ const runtime = {
152
+ id: definition.id,
153
+ sessions: registry,
154
+ activate: () => {
155
+ if (state === "disposed") throw new Error(`Application Runtime ${definition.id} is disposed`);
156
+ if (state === "active") return;
157
+ workflowsByTrigger.forEach((_binding, trigger) => {
158
+ if (!adapters.has(trigger)) throw new Error(`Missing Trigger Adapter: ${trigger}`);
159
+ });
160
+ activationEpoch += 1;
161
+ state = "active";
162
+ try {
163
+ adapters.forEach((adapter) => {
164
+ const cleanup = adapter.activate({ emit: (occurrence) => emitAutomatic(adapter.trigger, occurrence) });
165
+ if (cleanup) cleanups.push(cleanup);
166
+ });
167
+ } catch (error) {
168
+ var _cleanups$pop;
169
+ state = "inactive";
170
+ while (cleanups.length > 0) (_cleanups$pop = cleanups.pop()) === null || _cleanups$pop === void 0 || _cleanups$pop();
171
+ throw error;
172
+ }
173
+ },
174
+ deactivate: () => {
175
+ var _cleanups$pop2;
176
+ if (state !== "active") return;
177
+ state = "inactive";
178
+ while (cleanups.length > 0) (_cleanups$pop2 = cleanups.pop()) === null || _cleanups$pop2 === void 0 || _cleanups$pop2();
179
+ },
180
+ workflow: (workflowId) => {
181
+ if (!definition.workflowStarts.get(workflowId)) throw new Error(`Unknown Workflow: ${workflowId}`);
182
+ return Object.freeze({
183
+ id: workflowId,
184
+ start: function() {
185
+ var _ref2 = require_asyncToGenerator._asyncToGenerator(function* (payload) {
186
+ if (start.trigger !== "manual") throw new Error(`Workflow ${workflowId} cannot be started through manual Trigger`);
187
+ manualSequence += 1;
188
+ const occurrenceId = `${workflowId}:${manualSequence}`;
189
+ const result = yield create({
190
+ workflowId,
191
+ payload,
192
+ cause: Object.freeze({
193
+ trigger: "manual",
194
+ channel: start.channel,
195
+ occurrenceId,
196
+ correlationId: `${definition.id}:manual:${occurrenceId}`
197
+ })
198
+ });
199
+ if (result.status === "started" || result.status === "duplicate") return result.session;
200
+ throw result.error instanceof Error ? result.error : /* @__PURE__ */ new Error(`Workflow ${workflowId} start rejected: ${result.reason}`);
201
+ });
202
+ return function start(_x2) {
203
+ return _ref2.apply(this, arguments);
204
+ };
205
+ }()
206
+ });
207
+ },
208
+ disposeSession: (sessionId) => {
209
+ const session = sessions.get(sessionId);
210
+ if (!session) return false;
211
+ if (!ownedSessionIds.delete(sessionId)) return false;
212
+ sessions.delete(sessionId);
213
+ const occurrenceKey = `${session.cause.trigger}\u0000${session.cause.occurrenceId}`;
214
+ if (occurrenceSessions.get(occurrenceKey) === sessionId) occurrenceSessions.delete(occurrenceKey);
215
+ session.dispose();
216
+ publishSessionEvent({
217
+ type: "disposed",
218
+ sessionId
219
+ });
220
+ return true;
221
+ },
222
+ dispose: () => {
223
+ var _cleanups$pop3;
224
+ if (state === "disposed") return;
225
+ state = "disposed";
226
+ while (cleanups.length > 0) (_cleanups$pop3 = cleanups.pop()) === null || _cleanups$pop3 === void 0 || _cleanups$pop3();
227
+ sessions.forEach((session) => session.dispose());
228
+ ownedSessionIds.clear();
229
+ sessions.clear();
230
+ pendingOccurrences.clear();
231
+ sessionListeners.clear();
232
+ }
233
+ };
234
+ return Object.freeze(runtime);
235
+ }
236
+ //#endregion
237
+ exports.createApplicationRuntime = createApplicationRuntime;
@@ -16,7 +16,7 @@ function createKernelOperationCoordinator(registry, policy, options = {}) {
16
16
  const queue = [];
17
17
  const active = /* @__PURE__ */ new Set();
18
18
  const queueLimit = policy.queueLimit;
19
- if (queueLimit && (!Number.isSafeInteger(queueLimit.max) || queueLimit.max < 1)) throw new Error("Kiosk operation queue limit must be a positive integer");
19
+ if (queueLimit && (!Number.isSafeInteger(queueLimit.max) || queueLimit.max < 1)) throw new Error("Operation queue limit must be a positive integer");
20
20
  let disposed = false;
21
21
  const metadata = (execution) => {
22
22
  var _execution$operation$;
@@ -2,8 +2,8 @@
2
2
  function createKernelOperationRegistry(operations) {
3
3
  const definitions = /* @__PURE__ */ new Map();
4
4
  operations.forEach((operation) => {
5
- if (definitions.has(operation.id)) throw new Error(`Duplicate Kiosk operation: ${operation.id}`);
6
- if (operation.timeoutMs !== void 0 && (!Number.isFinite(operation.timeoutMs) || operation.timeoutMs <= 0)) throw new Error(`Invalid timeout for Kiosk operation: ${operation.id}`);
5
+ if (definitions.has(operation.id)) throw new Error(`Duplicate Operation: ${operation.id}`);
6
+ if (operation.timeoutMs !== void 0 && (!Number.isFinite(operation.timeoutMs) || operation.timeoutMs <= 0)) throw new Error(`Invalid timeout for Operation: ${operation.id}`);
7
7
  definitions.set(operation.id, operation);
8
8
  });
9
9
  return Object.freeze({
@@ -12,7 +12,7 @@ function createKernelOperationRegistry(operations) {
12
12
  get: (id) => definitions.get(id),
13
13
  require: (id) => {
14
14
  const operation = definitions.get(id);
15
- if (!operation) throw new Error(`Unknown Kiosk operation: ${id}`);
15
+ if (!operation) throw new Error(`Unknown Operation: ${id}`);
16
16
  return operation;
17
17
  }
18
18
  });
@@ -1,6 +1,6 @@
1
1
  //#region src/components/HDLKiosk/kernel/operations/sessionEpoch.ts
2
2
  function createSessionEpochController(initialEpoch = 1) {
3
- if (!Number.isSafeInteger(initialEpoch) || initialEpoch < 1) throw new Error("Kiosk session epoch must be a positive integer");
3
+ if (!Number.isSafeInteger(initialEpoch) || initialEpoch < 1) throw new Error("Session epoch must be a positive integer");
4
4
  let epoch = initialEpoch;
5
5
  return Object.freeze({
6
6
  current: () => epoch,
@@ -1,6 +1,11 @@
1
+ const require_objectSpread2 = require("../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js");
1
2
  //#region src/components/HDLKiosk/kernel/operations/types.ts
2
- function defineKernelOperation(operation) {
3
- return Object.freeze(operation);
3
+ function defineKernelOperationContract(contract) {
4
+ return Object.freeze(contract);
5
+ }
6
+ function bindKernelOperation(contract, handler) {
7
+ return Object.freeze(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, contract), handler));
4
8
  }
5
9
  //#endregion
6
- exports.defineKernelOperation = defineKernelOperation;
10
+ exports.bindKernelOperation = bindKernelOperation;
11
+ exports.defineKernelOperationContract = defineKernelOperationContract;
@@ -8,13 +8,12 @@ function createWorkflowError(code, recovery, cause) {
8
8
  code,
9
9
  source: "workflow",
10
10
  recovery,
11
- safeMessageKey: `hdlKiosk.error.${code}`,
12
- traceId: `hdl-workflow-${Date.now()}-${workflowErrorSequence}`,
11
+ safeMessageKey: `workflow.error.${code}`,
12
+ traceId: `workflow-${Date.now()}-${workflowErrorSequence}`,
13
13
  cause
14
14
  };
15
15
  }
16
16
  function createWorkflowActor({ definition, context, sessionEpoch, transitionRunner, lifecycle, reduceContext, beforeEach, now = Date.now, initialNodeId, initialError }) {
17
- var _ref2;
18
17
  const listeners = /* @__PURE__ */ new Set();
19
18
  const mailbox = [];
20
19
  let executionSequence = 0;
@@ -181,7 +180,7 @@ function createWorkflowActor({ definition, context, sessionEpoch, transitionRunn
181
180
  sessionEpoch,
182
181
  workflowId: definition.id,
183
182
  nodeId: startingNodeId,
184
- status: initialError || initialResolutionError || startingNode.end === "blocked" ? "blocked" : startingNode.end === "success" ? "finished" : "idle",
183
+ status: initialError || initialResolutionError ? "blocked" : startingNode.isTerminal ? "finished" : "idle",
185
184
  context: Object.freeze(require_objectSpread2._objectSpread2({}, context)),
186
185
  completedStepIds: Object.freeze([]),
187
186
  stepResolutions: Object.freeze({}),
@@ -190,7 +189,7 @@ function createWorkflowActor({ definition, context, sessionEpoch, transitionRunn
190
189
  overlays: Object.freeze([])
191
190
  }),
192
191
  navigationHistory: Object.freeze([]),
193
- lastError: (_ref2 = initialError !== null && initialError !== void 0 ? initialError : initialResolutionError) !== null && _ref2 !== void 0 ? _ref2 : startingNode.end === "blocked" ? createWorkflowError("workflowEndedBlocked", "staff") : void 0
192
+ lastError: initialError !== null && initialError !== void 0 ? initialError : initialResolutionError
194
193
  });
195
194
  const publish = (next) => {
196
195
  snapshot = Object.freeze(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, next), {}, {
@@ -206,13 +205,13 @@ function createWorkflowActor({ definition, context, sessionEpoch, transitionRunn
206
205
  to: Object.freeze(require_objectSpread2._objectSpread2({}, next.pendingNavigation.to)),
207
206
  request: Object.freeze(require_objectSpread2._objectSpread2({}, next.pendingNavigation.request))
208
207
  })) : void 0,
209
- confirmedCheckout: next.confirmedCheckout,
208
+ receipt: next.receipt,
210
209
  activeOperation: next.activeOperation ? Object.freeze(require_objectSpread2._objectSpread2({}, next.activeOperation)) : void 0
211
210
  }));
212
211
  listeners.forEach((listener) => listener());
213
212
  };
214
213
  const commit = function() {
215
- var _ref3 = require_asyncToGenerator._asyncToGenerator(function* (fromNodeId, nodeId, event, nextContext, blocked, lastError, confirmedCheckout) {
214
+ var _ref2 = require_asyncToGenerator._asyncToGenerator(function* (fromNodeId, nodeId, event, nextContext, blocked, lastError, receipt) {
216
215
  const node = definition.nodes[nodeId];
217
216
  const surface = node.presentation.mode === "modal" ? Object.freeze({
218
217
  pageStepId: snapshot.surface.pageStepId,
@@ -223,14 +222,14 @@ function createWorkflowActor({ definition, context, sessionEpoch, transitionRunn
223
222
  });
224
223
  publish(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, snapshot), {}, {
225
224
  nodeId,
226
- status: blocked || node.end === "blocked" ? "blocked" : node.end === "success" ? "finished" : "idle",
225
+ status: blocked ? "blocked" : node.isTerminal ? "finished" : "idle",
227
226
  context: nextContext,
228
227
  completedStepIds: Object.freeze([...completedStepIds]),
229
228
  stepResolutions: Object.freeze(readStepResolutions()),
230
229
  surface,
231
230
  navigationHistory: Object.freeze([...navigationHistory]),
232
231
  pendingNavigation: void 0,
233
- confirmedCheckout: confirmedCheckout !== null && confirmedCheckout !== void 0 ? confirmedCheckout : snapshot.confirmedCheckout,
232
+ receipt: receipt !== null && receipt !== void 0 ? receipt : snapshot.receipt,
234
233
  activeOperation: void 0,
235
234
  lastError
236
235
  }));
@@ -241,11 +240,11 @@ function createWorkflowActor({ definition, context, sessionEpoch, transitionRunn
241
240
  });
242
241
  });
243
242
  return function commit(_x, _x2, _x3, _x4, _x5, _x6, _x7) {
244
- return _ref3.apply(this, arguments);
243
+ return _ref2.apply(this, arguments);
245
244
  };
246
245
  }();
247
246
  const blockForRuntimeError = function() {
248
- var _ref4 = require_asyncToGenerator._asyncToGenerator(function* (fromNodeId, event, code, cause) {
247
+ var _ref3 = require_asyncToGenerator._asyncToGenerator(function* (fromNodeId, event, code, cause) {
249
248
  const workflowError = createWorkflowError(code, "staff", cause);
250
249
  lifecycle.runtimeError({
251
250
  stepId: fromNodeId,
@@ -255,11 +254,11 @@ function createWorkflowActor({ definition, context, sessionEpoch, transitionRunn
255
254
  yield commit(fromNodeId, fromNodeId, event, snapshot.context, true, workflowError);
256
255
  });
257
256
  return function blockForRuntimeError(_x8, _x9, _x10, _x11) {
258
- return _ref4.apply(this, arguments);
257
+ return _ref3.apply(this, arguments);
259
258
  };
260
259
  }();
261
260
  const handleEvent = function() {
262
- var _ref5 = require_asyncToGenerator._asyncToGenerator(function* (event) {
261
+ var _ref4 = require_asyncToGenerator._asyncToGenerator(function* (event) {
263
262
  var _repeatCounts$get, _transition$exitPolic;
264
263
  if (disposed || snapshot.status === "finished" || snapshot.status === "blocked") return;
265
264
  const fromNodeId = snapshot.nodeId;
@@ -383,7 +382,7 @@ function createWorkflowActor({ definition, context, sessionEpoch, transitionRunn
383
382
  navigationHistory = navigationHistory.filter((stepId) => stepId !== fromNodeId);
384
383
  navigationHistory.push(fromNodeId);
385
384
  } else if (event.intent === "omit") navigationHistory = navigationHistory.filter((stepId) => stepId !== fromNodeId);
386
- yield commit(fromNodeId, resolvedTarget, event, nextContext, false, void 0, result.confirmedCheckout);
385
+ yield commit(fromNodeId, resolvedTarget, event, nextContext, false, void 0, result.receipt);
387
386
  return;
388
387
  }
389
388
  if (result.status === "blocked") {
@@ -393,7 +392,7 @@ function createWorkflowActor({ definition, context, sessionEpoch, transitionRunn
393
392
  yield commit(fromNodeId, fromNodeId, event, previousContext, false, result.lastError);
394
393
  });
395
394
  return function handleEvent(_x12) {
396
- return _ref5.apply(this, arguments);
395
+ return _ref4.apply(this, arguments);
397
396
  };
398
397
  }();
399
398
  function handleDirectNavigation(_x13, _x14) {
@@ -465,7 +464,7 @@ function createWorkflowActor({ definition, context, sessionEpoch, transitionRunn
465
464
  return _handleDirectNavigation.apply(this, arguments);
466
465
  }
467
466
  const drain = function() {
468
- var _ref6 = require_asyncToGenerator._asyncToGenerator(function* () {
467
+ var _ref5 = require_asyncToGenerator._asyncToGenerator(function* () {
469
468
  if (processing || disposed) return;
470
469
  processing = true;
471
470
  try {
@@ -478,7 +477,7 @@ function createWorkflowActor({ definition, context, sessionEpoch, transitionRunn
478
477
  }
479
478
  });
480
479
  return function drain() {
481
- return _ref6.apply(this, arguments);
480
+ return _ref5.apply(this, arguments);
482
481
  };
483
482
  }();
484
483
  return {