@logixjs/core 0.0.1 → 1.0.0

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 (398) hide show
  1. package/LICENSE +201 -0
  2. package/dist/{Action-mqVvtEHt.d.ts → Action-DYl88bwj.d.ts} +1 -1
  3. package/dist/{Action-BkRHy2vg.d.cts → Action-DkxsI_DK.d.cts} +1 -1
  4. package/dist/Action.cjs.map +1 -1
  5. package/dist/Action.d.cts +1 -1
  6. package/dist/Action.d.ts +1 -1
  7. package/dist/Action.js +2 -2
  8. package/dist/{Actions-AsQ07yTP.d.cts → Actions-Dicm7jdc.d.cts} +2 -2
  9. package/dist/{Actions-AsQ07yTP.d.ts → Actions-Dicm7jdc.d.ts} +2 -2
  10. package/dist/Actions.cjs.map +1 -1
  11. package/dist/Actions.d.cts +1 -1
  12. package/dist/Actions.d.ts +1 -1
  13. package/dist/Actions.js +1 -1
  14. package/dist/{Bound-BN1DQ_lM.d.ts → Bound-1OJLzVIS.d.ts} +2 -2
  15. package/dist/{Bound-BPIfH9SS.d.cts → Bound-BMLrtQ1V.d.cts} +2 -2
  16. package/dist/Bound.cjs +1737 -399
  17. package/dist/Bound.cjs.map +1 -1
  18. package/dist/Bound.d.cts +5 -5
  19. package/dist/Bound.d.ts +5 -5
  20. package/dist/Bound.js +19 -17
  21. package/dist/{Debug-B5q5Bkzx.d.ts → Debug-DKrWP5H1.d.ts} +40 -22
  22. package/dist/{Debug-Bq8Sqjcr.d.cts → Debug-hIT44XsY.d.cts} +40 -22
  23. package/dist/Debug.cjs +1348 -318
  24. package/dist/Debug.cjs.map +1 -1
  25. package/dist/Debug.d.cts +12 -11
  26. package/dist/Debug.d.ts +12 -11
  27. package/dist/Debug.js +20 -11
  28. package/dist/EffectOp.cjs +15 -6
  29. package/dist/EffectOp.cjs.map +1 -1
  30. package/dist/EffectOp.js +3 -3
  31. package/dist/Env.cjs +772 -6
  32. package/dist/Env.cjs.map +1 -1
  33. package/dist/Env.js +5 -2
  34. package/dist/ExternalStore-DqJKKRJ4.d.ts +61 -0
  35. package/dist/ExternalStore-JC-gAgEI.d.cts +61 -0
  36. package/dist/ExternalStore.cjs +774 -0
  37. package/dist/ExternalStore.cjs.map +1 -0
  38. package/dist/ExternalStore.d.cts +8 -0
  39. package/dist/ExternalStore.d.ts +8 -0
  40. package/dist/ExternalStore.js +19 -0
  41. package/dist/ExternalStore.js.map +1 -0
  42. package/dist/{Flow-BhpjE22E.d.ts → Flow-CZmXRDqp.d.cts} +13 -4
  43. package/dist/{Flow-1fZT8MpX.d.cts → Flow-DIVDxz7R.d.ts} +13 -4
  44. package/dist/Flow.cjs +765 -148
  45. package/dist/Flow.cjs.map +1 -1
  46. package/dist/Flow.d.cts +6 -6
  47. package/dist/Flow.d.ts +6 -6
  48. package/dist/Flow.js +9 -8
  49. package/dist/{Handle-D_cLW1Z3.d.ts → Handle-Bo6cAFut.d.ts} +1 -1
  50. package/dist/{Handle-D8D1zPb_.d.cts → Handle-CfDvSqN7.d.cts} +1 -1
  51. package/dist/Handle.d.cts +5 -5
  52. package/dist/Handle.d.ts +5 -5
  53. package/dist/{Kernel-8kC-jOda.d.cts → Kernel-CuXBF9S_.d.cts} +16 -7
  54. package/dist/{Kernel-CnGE1Fyk.d.ts → Kernel-D9guNwRL.d.ts} +16 -7
  55. package/dist/Kernel.cjs +814 -26
  56. package/dist/Kernel.cjs.map +1 -1
  57. package/dist/Kernel.d.cts +13 -12
  58. package/dist/Kernel.d.ts +13 -12
  59. package/dist/Kernel.js +7 -4
  60. package/dist/{Link-Db7975nU.d.ts → Link-CUM0yUCH.d.ts} +10 -3
  61. package/dist/{Link-fX8x1eCK.d.cts → Link-NAfR6uGD.d.cts} +10 -3
  62. package/dist/Link.cjs +1294 -121
  63. package/dist/Link.cjs.map +1 -1
  64. package/dist/Link.d.cts +5 -5
  65. package/dist/Link.d.ts +5 -5
  66. package/dist/Link.js +37 -29
  67. package/dist/{Logic-DRh4sDZj.d.cts → Logic-09VQpIj3.d.cts} +7 -4
  68. package/dist/{Logic-BRjEMr-W.d.ts → Logic-DKg7ghGy.d.ts} +7 -4
  69. package/dist/Logic.cjs +2 -1
  70. package/dist/Logic.cjs.map +1 -1
  71. package/dist/Logic.d.cts +5 -5
  72. package/dist/Logic.d.ts +5 -5
  73. package/dist/Logic.js +1 -1
  74. package/dist/{MatchBuilder-CJk5oCkR.d.cts → MatchBuilder-CsW5jgrL.d.ts} +1 -1
  75. package/dist/{MatchBuilder-0QOc-nlU.d.ts → MatchBuilder-Dksk07F4.d.cts} +1 -1
  76. package/dist/MatchBuilder.cjs +2 -2
  77. package/dist/MatchBuilder.cjs.map +1 -1
  78. package/dist/MatchBuilder.d.cts +6 -6
  79. package/dist/MatchBuilder.d.ts +6 -6
  80. package/dist/MatchBuilder.js +2 -2
  81. package/dist/Middleware-D8tUDLv_.d.cts +100 -0
  82. package/dist/Middleware-DS7CbTTN.d.ts +100 -0
  83. package/dist/Middleware.cjs +678 -58
  84. package/dist/Middleware.cjs.map +1 -1
  85. package/dist/Middleware.d.cts +2 -86
  86. package/dist/Middleware.d.ts +2 -86
  87. package/dist/Middleware.js +15 -12
  88. package/dist/{Module-DnzluX2J.d.ts → Module-B_Cntyms.d.ts} +54 -25
  89. package/dist/{Module-B_0xRDMR.d.cts → Module-CmNOVXzf.d.cts} +54 -25
  90. package/dist/Module.cjs +9331 -3317
  91. package/dist/Module.cjs.map +1 -1
  92. package/dist/Module.d.cts +7 -6
  93. package/dist/Module.d.ts +7 -6
  94. package/dist/Module.js +39 -31
  95. package/dist/ModuleTag-CGho_InD.d.ts +113 -0
  96. package/dist/ModuleTag-CITb8L_G.d.cts +113 -0
  97. package/dist/ModuleTag.cjs +7248 -2847
  98. package/dist/ModuleTag.cjs.map +1 -1
  99. package/dist/ModuleTag.d.cts +6 -6
  100. package/dist/ModuleTag.d.ts +6 -6
  101. package/dist/ModuleTag.js +35 -29
  102. package/dist/Observability-Bdhnx2Dv.d.ts +385 -0
  103. package/dist/Observability-DXGAFBIT.d.cts +385 -0
  104. package/dist/Observability.cjs +5093 -1556
  105. package/dist/Observability.cjs.map +1 -1
  106. package/dist/Observability.d.cts +6 -7
  107. package/dist/Observability.d.ts +6 -7
  108. package/dist/Observability.js +28 -23
  109. package/dist/{Platform-CHX8o-U4.d.ts → Platform-B4s8tg6C.d.cts} +4 -5
  110. package/dist/{Platform-C49Pv956.d.cts → Platform-BV_0MW7g.d.cts} +5 -2
  111. package/dist/{Platform-C49Pv956.d.ts → Platform-BV_0MW7g.d.ts} +5 -2
  112. package/dist/{Platform-CVlv0xLQ.d.cts → Platform-W0Mefy_e.d.ts} +4 -5
  113. package/dist/Platform.cjs +2 -1
  114. package/dist/Platform.cjs.map +1 -1
  115. package/dist/Platform.d.cts +2 -3
  116. package/dist/Platform.d.ts +2 -3
  117. package/dist/Platform.js +2 -2
  118. package/dist/{Process-CM9xbMdP.d.ts → Process-CO8G7HO9.d.cts} +30 -5
  119. package/dist/{Process-mL8fHDSB.d.cts → Process-Cyf6VNDR.d.ts} +30 -5
  120. package/dist/Process.cjs +1288 -120
  121. package/dist/Process.cjs.map +1 -1
  122. package/dist/Process.d.cts +6 -6
  123. package/dist/Process.d.ts +6 -6
  124. package/dist/Process.js +34 -26
  125. package/dist/ReadQuery-C_or5nLC.d.ts +128 -0
  126. package/dist/ReadQuery-DXLzCE0E.d.cts +614 -0
  127. package/dist/ReadQuery-DXLzCE0E.d.ts +614 -0
  128. package/dist/ReadQuery-Yve1lmUo.d.cts +128 -0
  129. package/dist/ReadQuery.cjs +290 -5
  130. package/dist/ReadQuery.cjs.map +1 -1
  131. package/dist/ReadQuery.d.cts +3 -2
  132. package/dist/ReadQuery.d.ts +3 -2
  133. package/dist/ReadQuery.js +23 -5
  134. package/dist/{Reflection-CQnKwPXj.d.ts → Reflection-B2Xi1e4Q.d.ts} +89 -7
  135. package/dist/{Reflection-Kabo1mlU.d.cts → Reflection-DNB4V4_e.d.cts} +89 -7
  136. package/dist/Reflection.cjs +3227 -1617
  137. package/dist/Reflection.cjs.map +1 -1
  138. package/dist/Reflection.d.cts +17 -15
  139. package/dist/Reflection.d.ts +17 -15
  140. package/dist/Reflection.js +33 -25
  141. package/dist/{Resource-Dy1xD_DG.d.cts → Resource-pKvQQ4x5.d.cts} +3 -3
  142. package/dist/{Resource-Dy1xD_DG.d.ts → Resource-pKvQQ4x5.d.ts} +3 -3
  143. package/dist/Resource.cjs +781 -15
  144. package/dist/Resource.cjs.map +1 -1
  145. package/dist/Resource.d.cts +1 -1
  146. package/dist/Resource.d.ts +1 -1
  147. package/dist/Resource.js +6 -3
  148. package/dist/{Root-7ADUMk4t.d.cts → Root-CCVuFHB6.d.cts} +3 -3
  149. package/dist/{Root-7ADUMk4t.d.ts → Root-CCVuFHB6.d.ts} +3 -3
  150. package/dist/Root.cjs +786 -20
  151. package/dist/Root.cjs.map +1 -1
  152. package/dist/Root.d.cts +2 -2
  153. package/dist/Root.d.ts +2 -2
  154. package/dist/Root.js +7 -3
  155. package/dist/{Runtime-CtyzZG4i.d.ts → Runtime-CRmvwK4I.d.ts} +70 -14
  156. package/dist/{Runtime-B-aL-f29.d.cts → Runtime-C_wJM9mN.d.cts} +70 -14
  157. package/dist/Runtime.cjs +4942 -1601
  158. package/dist/Runtime.cjs.map +1 -1
  159. package/dist/Runtime.d.cts +17 -15
  160. package/dist/Runtime.d.ts +17 -15
  161. package/dist/Runtime.js +44 -32
  162. package/dist/{ScopeRegistry-D1owDNSm.d.cts → ScopeRegistry-BhYzqWri.d.cts} +6 -6
  163. package/dist/{ScopeRegistry-D1owDNSm.d.ts → ScopeRegistry-BhYzqWri.d.ts} +6 -6
  164. package/dist/ScopeRegistry.cjs +776 -10
  165. package/dist/ScopeRegistry.cjs.map +1 -1
  166. package/dist/ScopeRegistry.d.cts +1 -1
  167. package/dist/ScopeRegistry.d.ts +1 -1
  168. package/dist/ScopeRegistry.js +6 -3
  169. package/dist/{State-CU50R26M.d.cts → State-rNFsFPTl.d.cts} +2 -2
  170. package/dist/{State-CU50R26M.d.ts → State-rNFsFPTl.d.ts} +2 -2
  171. package/dist/State.cjs.map +1 -1
  172. package/dist/State.d.cts +1 -1
  173. package/dist/State.d.ts +1 -1
  174. package/dist/State.js +1 -1
  175. package/dist/{StateTrait-BGsZghTz.d.ts → StateTrait-CijdwNb6.d.ts} +25 -8
  176. package/dist/{StateTrait-OWhbj12c.d.cts → StateTrait-Dltto6PU.d.cts} +25 -8
  177. package/dist/StateTrait.cjs +1890 -528
  178. package/dist/StateTrait.cjs.map +1 -1
  179. package/dist/StateTrait.d.cts +9 -7
  180. package/dist/StateTrait.d.ts +9 -7
  181. package/dist/StateTrait.js +18 -14
  182. package/dist/{TraitLifecycle-CwV5WPFX.d.cts → TraitLifecycle-BKzDqzLu.d.cts} +2 -2
  183. package/dist/{TraitLifecycle-LdIWmKlg.d.ts → TraitLifecycle-Cvo94uDB.d.ts} +2 -2
  184. package/dist/TraitLifecycle.cjs +630 -67
  185. package/dist/TraitLifecycle.cjs.map +1 -1
  186. package/dist/TraitLifecycle.d.cts +6 -6
  187. package/dist/TraitLifecycle.d.ts +6 -6
  188. package/dist/TraitLifecycle.js +8 -7
  189. package/dist/Workflow-C_OWr4dV.d.ts +415 -0
  190. package/dist/Workflow-DmydkHO8.d.cts +415 -0
  191. package/dist/Workflow.cjs +3150 -0
  192. package/dist/Workflow.cjs.map +1 -0
  193. package/dist/Workflow.d.cts +7 -0
  194. package/dist/Workflow.d.ts +7 -0
  195. package/dist/Workflow.js +58 -0
  196. package/dist/Workflow.js.map +1 -0
  197. package/dist/{action-DiMDD_0v.d.cts → action-BQxjPFEw.d.cts} +5 -5
  198. package/dist/{action-DiMDD_0v.d.ts → action-BQxjPFEw.d.ts} +5 -5
  199. package/dist/chunk-2XRLXDWR.js +276 -0
  200. package/dist/chunk-2XRLXDWR.js.map +1 -0
  201. package/dist/chunk-3L6QGFMM.js +701 -0
  202. package/dist/chunk-3L6QGFMM.js.map +1 -0
  203. package/dist/{chunk-GMPEOUP2.js → chunk-4MZ7BT3R.js} +2 -2
  204. package/dist/chunk-4MZ7BT3R.js.map +1 -0
  205. package/dist/{chunk-3IYZ5IGG.js → chunk-5WKUGEBY.js} +2 -2
  206. package/dist/{chunk-3RMKLXHX.js → chunk-63ZQ5RIN.js} +2 -2
  207. package/dist/{chunk-M3WTHJHJ.js → chunk-67DIEA53.js} +385 -148
  208. package/dist/chunk-67DIEA53.js.map +1 -0
  209. package/dist/{chunk-YS3AZQ2G.js → chunk-6HFAW2MH.js} +1 -1
  210. package/dist/chunk-6HFAW2MH.js.map +1 -0
  211. package/dist/{chunk-EY4NZKDR.js → chunk-6Y2TKCNY.js} +2 -2
  212. package/dist/{chunk-76WT3HOR.js → chunk-6YZOXFPQ.js} +25 -24
  213. package/dist/chunk-6YZOXFPQ.js.map +1 -0
  214. package/dist/{chunk-G5ZBFPNU.js → chunk-A2RQOJC7.js} +2 -2
  215. package/dist/{chunk-AUIR5O6W.js → chunk-AFSB6NKM.js} +13 -19
  216. package/dist/chunk-AFSB6NKM.js.map +1 -0
  217. package/dist/{chunk-JCXGZRMU.js → chunk-AO4JEOKD.js} +22 -23
  218. package/dist/chunk-AO4JEOKD.js.map +1 -0
  219. package/dist/{chunk-TAAPQVZN.js → chunk-AYELIQXR.js} +2 -2
  220. package/dist/{chunk-QMM6O4CD.js → chunk-BLHZW7DG.js} +15 -3
  221. package/dist/{chunk-QMM6O4CD.js.map → chunk-BLHZW7DG.js.map} +1 -1
  222. package/dist/{chunk-TQOBJYDP.js → chunk-CD4N74YC.js} +1 -1
  223. package/dist/chunk-CD4N74YC.js.map +1 -0
  224. package/dist/{chunk-ANLBCBDC.js → chunk-CGE2HBTH.js} +11 -11
  225. package/dist/chunk-CGE2HBTH.js.map +1 -0
  226. package/dist/{chunk-OFADUJWJ.js → chunk-CYYSQMLO.js} +5 -5
  227. package/dist/chunk-CYYSQMLO.js.map +1 -0
  228. package/dist/{chunk-66ALHVEX.js → chunk-EB46EYI7.js} +3 -3
  229. package/dist/{chunk-NZJKFF45.js → chunk-EKCDHWRK.js} +4 -4
  230. package/dist/chunk-EKCDHWRK.js.map +1 -0
  231. package/dist/{chunk-BABLDP24.js → chunk-EPQFNJU3.js} +152 -7
  232. package/dist/chunk-EPQFNJU3.js.map +1 -0
  233. package/dist/{chunk-OGWBVHB3.js → chunk-ESR6HGOY.js} +73 -14
  234. package/dist/chunk-ESR6HGOY.js.map +1 -0
  235. package/dist/{chunk-NBD3KUOZ.js → chunk-F6RP62H3.js} +150 -98
  236. package/dist/chunk-F6RP62H3.js.map +1 -0
  237. package/dist/chunk-FBYW3QDI.js +252 -0
  238. package/dist/chunk-FBYW3QDI.js.map +1 -0
  239. package/dist/{chunk-IPF7E66P.js → chunk-FYAODKVP.js} +2 -2
  240. package/dist/chunk-GNEN7NKO.js +908 -0
  241. package/dist/chunk-GNEN7NKO.js.map +1 -0
  242. package/dist/chunk-GWSM4KLB.js +763 -0
  243. package/dist/chunk-GWSM4KLB.js.map +1 -0
  244. package/dist/{chunk-4SO6JMZL.js → chunk-HDMXCUZL.js} +1 -1
  245. package/dist/chunk-HDMXCUZL.js.map +1 -0
  246. package/dist/{chunk-ZFY7U2FR.js → chunk-HJM5Y5NU.js} +43 -3
  247. package/dist/chunk-HJM5Y5NU.js.map +1 -0
  248. package/dist/{chunk-ZGDVUPTM.js → chunk-IOZ3VKPK.js} +129 -68
  249. package/dist/chunk-IOZ3VKPK.js.map +1 -0
  250. package/dist/{chunk-PYOE4VSI.js → chunk-IVXSVHO4.js} +303 -247
  251. package/dist/chunk-IVXSVHO4.js.map +1 -0
  252. package/dist/chunk-J3CWXIPV.js +242 -0
  253. package/dist/chunk-J3CWXIPV.js.map +1 -0
  254. package/dist/chunk-K6JQW266.js +42 -0
  255. package/dist/chunk-K6JQW266.js.map +1 -0
  256. package/dist/chunk-KMZYQF6Q.js +202 -0
  257. package/dist/chunk-KMZYQF6Q.js.map +1 -0
  258. package/dist/{chunk-JWOYLO27.js → chunk-LPPZDFTD.js} +22 -12
  259. package/dist/chunk-LPPZDFTD.js.map +1 -0
  260. package/dist/{chunk-PAYXCY6A.js → chunk-MYB2B5WX.js} +997 -576
  261. package/dist/chunk-MYB2B5WX.js.map +1 -0
  262. package/dist/chunk-MYKNINNN.js +228 -0
  263. package/dist/chunk-MYKNINNN.js.map +1 -0
  264. package/dist/chunk-NSQIRMVF.js +27 -0
  265. package/dist/{chunk-QCHIQWAJ.js.map → chunk-NSQIRMVF.js.map} +1 -1
  266. package/dist/chunk-NUDBM4MM.js +30 -0
  267. package/dist/chunk-NUDBM4MM.js.map +1 -0
  268. package/dist/chunk-NZMWWDAY.js +23 -0
  269. package/dist/chunk-NZMWWDAY.js.map +1 -0
  270. package/dist/{chunk-RNFE3ML2.js → chunk-OCUV2Y25.js} +4 -3
  271. package/dist/chunk-OCUV2Y25.js.map +1 -0
  272. package/dist/chunk-P4ZJOQA7.js +271 -0
  273. package/dist/chunk-P4ZJOQA7.js.map +1 -0
  274. package/dist/chunk-P6C5EZ3D.js +342 -0
  275. package/dist/chunk-P6C5EZ3D.js.map +1 -0
  276. package/dist/{chunk-CW6T36TN.js → chunk-PBD7BJUN.js} +62 -4
  277. package/dist/chunk-PBD7BJUN.js.map +1 -0
  278. package/dist/chunk-PBIUCQY3.js +696 -0
  279. package/dist/chunk-PBIUCQY3.js.map +1 -0
  280. package/dist/chunk-PD6YECQH.js +845 -0
  281. package/dist/chunk-PD6YECQH.js.map +1 -0
  282. package/dist/{chunk-M7IYCTJV.js → chunk-R4LFQGP3.js} +2 -2
  283. package/dist/chunk-RHJIGDUE.js +21 -0
  284. package/dist/chunk-RHJIGDUE.js.map +1 -0
  285. package/dist/{chunk-KP7MUZNX.js → chunk-RLXO27MW.js} +30 -8
  286. package/dist/chunk-RLXO27MW.js.map +1 -0
  287. package/dist/{chunk-DFNM3WX2.js → chunk-S44BEV4B.js} +168 -45
  288. package/dist/chunk-S44BEV4B.js.map +1 -0
  289. package/dist/chunk-S4S5N4BJ.js +1461 -0
  290. package/dist/chunk-S4S5N4BJ.js.map +1 -0
  291. package/dist/{chunk-BZ2SHDN2.js → chunk-SGTRAXXX.js} +3 -3
  292. package/dist/chunk-SGTRAXXX.js.map +1 -0
  293. package/dist/{chunk-M2RGJPXX.js → chunk-SJAE5PB5.js} +3 -3
  294. package/dist/{chunk-JGIWG6SR.js → chunk-SNPNHU3H.js} +3937 -1776
  295. package/dist/chunk-SNPNHU3H.js.map +1 -0
  296. package/dist/{chunk-IHVBV5C2.js → chunk-SOOBFXRR.js} +94 -71
  297. package/dist/chunk-SOOBFXRR.js.map +1 -0
  298. package/dist/{chunk-ZDTRWK5F.js → chunk-TAHFWKS6.js} +2 -2
  299. package/dist/chunk-UEFFTVPY.js +9 -0
  300. package/dist/chunk-UEFFTVPY.js.map +1 -0
  301. package/dist/{chunk-24VULZ7A.js → chunk-UR5BXLBP.js} +3 -3
  302. package/dist/chunk-UR5BXLBP.js.map +1 -0
  303. package/dist/{chunk-DMBALCE2.js → chunk-V2SBGVDO.js} +471 -186
  304. package/dist/chunk-V2SBGVDO.js.map +1 -0
  305. package/dist/chunk-VJLWD47W.js +23 -0
  306. package/dist/chunk-VJLWD47W.js.map +1 -0
  307. package/dist/{chunk-4CQAV7YB.js → chunk-W647DX5Z.js} +2 -2
  308. package/dist/{chunk-THATMZXD.js → chunk-WFIIU3YZ.js} +2 -2
  309. package/dist/{chunk-THATMZXD.js.map → chunk-WFIIU3YZ.js.map} +1 -1
  310. package/dist/chunk-YZDJMAKL.js +82 -0
  311. package/dist/chunk-YZDJMAKL.js.map +1 -0
  312. package/dist/{chunk-3TMODYZV.js → chunk-Z5XH6VHY.js} +5 -5
  313. package/dist/chunk-Z5XH6VHY.js.map +1 -0
  314. package/dist/{chunk-BE3HW4FY.js → chunk-ZBBMZMA6.js} +377 -170
  315. package/dist/chunk-ZBBMZMA6.js.map +1 -0
  316. package/dist/index.cjs +21224 -11714
  317. package/dist/index.cjs.map +1 -1
  318. package/dist/index.d.cts +195 -49
  319. package/dist/index.d.ts +195 -49
  320. package/dist/index.js +150 -74
  321. package/dist/index.js.map +1 -1
  322. package/dist/{ir-BMP7yxJJ.d.cts → ir-BSosEwc8.d.cts} +1 -1
  323. package/dist/{ir-DUOz6H-5.d.ts → ir-D-uqwL_4.d.ts} +1 -1
  324. package/dist/{module-B8CBqIZ_.d.cts → module-Ds4tarcI.d.cts} +230 -140
  325. package/dist/{module-k7m3txak.d.ts → module-Zd1Gn-Nj.d.ts} +230 -140
  326. package/package.json +20 -4
  327. package/dist/ModuleTag-C8FHY_sY.d.ts +0 -93
  328. package/dist/ModuleTag-EGbgBMpZ.d.cts +0 -93
  329. package/dist/Observability-COqEvp2C.d.cts +0 -713
  330. package/dist/Observability-cY4kLn0S.d.ts +0 -713
  331. package/dist/ReadQuery-BlMwhe-F.d.ts +0 -30
  332. package/dist/ReadQuery-CL5XlXts.d.cts +0 -30
  333. package/dist/ReadQuery-SinbStGF.d.cts +0 -38
  334. package/dist/ReadQuery-SinbStGF.d.ts +0 -38
  335. package/dist/chunk-24VULZ7A.js.map +0 -1
  336. package/dist/chunk-3QMIVH35.js +0 -43
  337. package/dist/chunk-3QMIVH35.js.map +0 -1
  338. package/dist/chunk-3TMODYZV.js.map +0 -1
  339. package/dist/chunk-4SO6JMZL.js.map +0 -1
  340. package/dist/chunk-76WT3HOR.js.map +0 -1
  341. package/dist/chunk-ANLBCBDC.js.map +0 -1
  342. package/dist/chunk-AUIR5O6W.js.map +0 -1
  343. package/dist/chunk-BABLDP24.js.map +0 -1
  344. package/dist/chunk-BE3HW4FY.js.map +0 -1
  345. package/dist/chunk-BZ2SHDN2.js.map +0 -1
  346. package/dist/chunk-CW6T36TN.js.map +0 -1
  347. package/dist/chunk-DFNM3WX2.js.map +0 -1
  348. package/dist/chunk-DMBALCE2.js.map +0 -1
  349. package/dist/chunk-EGK3KN7B.js +0 -406
  350. package/dist/chunk-EGK3KN7B.js.map +0 -1
  351. package/dist/chunk-GMPEOUP2.js.map +0 -1
  352. package/dist/chunk-IHVBV5C2.js.map +0 -1
  353. package/dist/chunk-JCXGZRMU.js.map +0 -1
  354. package/dist/chunk-JGIWG6SR.js.map +0 -1
  355. package/dist/chunk-JWOYLO27.js.map +0 -1
  356. package/dist/chunk-KIXAU3GM.js +0 -137
  357. package/dist/chunk-KIXAU3GM.js.map +0 -1
  358. package/dist/chunk-KL5ACTCT.js +0 -8
  359. package/dist/chunk-KL5ACTCT.js.map +0 -1
  360. package/dist/chunk-KP7MUZNX.js.map +0 -1
  361. package/dist/chunk-M3BFQ7HK.js +0 -13
  362. package/dist/chunk-M3BFQ7HK.js.map +0 -1
  363. package/dist/chunk-M3WTHJHJ.js.map +0 -1
  364. package/dist/chunk-NBD3KUOZ.js.map +0 -1
  365. package/dist/chunk-NQZ2OSGR.js +0 -151
  366. package/dist/chunk-NQZ2OSGR.js.map +0 -1
  367. package/dist/chunk-NZJKFF45.js.map +0 -1
  368. package/dist/chunk-OFADUJWJ.js.map +0 -1
  369. package/dist/chunk-OGWBVHB3.js.map +0 -1
  370. package/dist/chunk-PAYXCY6A.js.map +0 -1
  371. package/dist/chunk-PYOE4VSI.js.map +0 -1
  372. package/dist/chunk-QCHIQWAJ.js +0 -21
  373. package/dist/chunk-RNFE3ML2.js.map +0 -1
  374. package/dist/chunk-TKZ7MEIA.js +0 -27
  375. package/dist/chunk-TKZ7MEIA.js.map +0 -1
  376. package/dist/chunk-TQOBJYDP.js.map +0 -1
  377. package/dist/chunk-VZB726PE.js +0 -93
  378. package/dist/chunk-VZB726PE.js.map +0 -1
  379. package/dist/chunk-W3TEWHLO.js +0 -568
  380. package/dist/chunk-W3TEWHLO.js.map +0 -1
  381. package/dist/chunk-YS3AZQ2G.js.map +0 -1
  382. package/dist/chunk-ZFLHVFUC.js +0 -192
  383. package/dist/chunk-ZFLHVFUC.js.map +0 -1
  384. package/dist/chunk-ZFY7U2FR.js.map +0 -1
  385. package/dist/chunk-ZGDVUPTM.js.map +0 -1
  386. package/dist/protocol-g_1897M2.d.cts +0 -127
  387. package/dist/protocol-g_1897M2.d.ts +0 -127
  388. /package/dist/{chunk-3IYZ5IGG.js.map → chunk-5WKUGEBY.js.map} +0 -0
  389. /package/dist/{chunk-3RMKLXHX.js.map → chunk-63ZQ5RIN.js.map} +0 -0
  390. /package/dist/{chunk-EY4NZKDR.js.map → chunk-6Y2TKCNY.js.map} +0 -0
  391. /package/dist/{chunk-G5ZBFPNU.js.map → chunk-A2RQOJC7.js.map} +0 -0
  392. /package/dist/{chunk-TAAPQVZN.js.map → chunk-AYELIQXR.js.map} +0 -0
  393. /package/dist/{chunk-66ALHVEX.js.map → chunk-EB46EYI7.js.map} +0 -0
  394. /package/dist/{chunk-IPF7E66P.js.map → chunk-FYAODKVP.js.map} +0 -0
  395. /package/dist/{chunk-M7IYCTJV.js.map → chunk-R4LFQGP3.js.map} +0 -0
  396. /package/dist/{chunk-M2RGJPXX.js.map → chunk-SJAE5PB5.js.map} +0 -0
  397. /package/dist/{chunk-ZDTRWK5F.js.map → chunk-TAHFWKS6.js.map} +0 -0
  398. /package/dist/{chunk-4CQAV7YB.js.map → chunk-W647DX5Z.js.map} +0 -0
@@ -1,16 +1,6 @@
1
1
  import {
2
2
  layer as layer2
3
- } from "./chunk-3TMODYZV.js";
4
- import {
5
- withDebug
6
- } from "./chunk-QMM6O4CD.js";
7
- import {
8
- getRuntimeByModuleAndInstance,
9
- normalizeBoolean,
10
- normalizeNonNegativeNumber,
11
- normalizePositiveInt,
12
- normalizePositiveNumber
13
- } from "./chunk-JGIWG6SR.js";
3
+ } from "./chunk-Z5XH6VHY.js";
14
4
  import {
15
5
  BootError,
16
6
  DisposeError,
@@ -21,35 +11,45 @@ import {
21
11
  makeApp,
22
12
  makeProgramRunnerKernel,
23
13
  provide
24
- } from "./chunk-EGK3KN7B.js";
14
+ } from "./chunk-PBIUCQY3.js";
25
15
  import {
26
- make
27
- } from "./chunk-BE3HW4FY.js";
16
+ withDebug
17
+ } from "./chunk-BLHZW7DG.js";
28
18
  import {
29
- inSyncTransactionFiber,
30
- isInSyncTransaction
31
- } from "./chunk-ZFLHVFUC.js";
19
+ getRuntimeByModuleAndInstance,
20
+ normalizeBoolean,
21
+ normalizeNonNegativeNumber,
22
+ normalizePositiveInt,
23
+ normalizePositiveNumber
24
+ } from "./chunk-SNPNHU3H.js";
25
+ import {
26
+ make
27
+ } from "./chunk-ZBBMZMA6.js";
32
28
  import {
33
29
  devtoolsHubLayer,
34
30
  layer,
35
31
  runtimeLabel
36
- } from "./chunk-W3TEWHLO.js";
32
+ } from "./chunk-GNEN7NKO.js";
37
33
  import {
38
34
  getRuntimeInternals
39
- } from "./chunk-3RMKLXHX.js";
35
+ } from "./chunk-63ZQ5RIN.js";
40
36
  import {
41
- ConcurrencyPolicyOverridesTag,
42
- ConcurrencyPolicyTag,
37
+ SchedulingPolicySurfaceOverridesTag,
38
+ SchedulingPolicySurfaceTag,
43
39
  StateTransactionConfigTag,
44
40
  StateTransactionOverridesTag,
45
- isDevEnv
46
- } from "./chunk-3QMIVH35.js";
41
+ enterRuntimeBatch,
42
+ exitRuntimeBatch,
43
+ inSyncTransactionFiber,
44
+ isDevEnv,
45
+ isInSyncTransactionShadow
46
+ } from "./chunk-S4S5N4BJ.js";
47
47
  import {
48
48
  runSessionLayer
49
- } from "./chunk-OFADUJWJ.js";
49
+ } from "./chunk-CYYSQMLO.js";
50
50
  import {
51
51
  EffectOpMiddlewareTag
52
- } from "./chunk-JWOYLO27.js";
52
+ } from "./chunk-LPPZDFTD.js";
53
53
  import {
54
54
  __export
55
55
  } from "./chunk-PZ5AY32C.js";
@@ -62,23 +62,23 @@ __export(Runtime_exports, {
62
62
  DisposeTimeoutError: () => DisposeTimeoutError,
63
63
  MainError: () => MainError,
64
64
  applyTransactionSnapshot: () => applyTransactionSnapshot,
65
+ batch: () => batch,
65
66
  concurrencyPolicyOverridesLayer: () => concurrencyPolicyOverridesLayer,
66
67
  make: () => make2,
67
68
  openProgram: () => openProgram2,
68
69
  runProgram: () => runProgram2,
70
+ schedulingPolicyOverridesLayer: () => schedulingPolicyOverridesLayer,
69
71
  setConcurrencyPolicyOverride: () => setConcurrencyPolicyOverride,
72
+ setSchedulingPolicyOverride: () => setSchedulingPolicyOverride,
70
73
  setTraitConvergeOverride: () => setTraitConvergeOverride,
71
74
  stateTransactionOverridesLayer: () => stateTransactionOverridesLayer
72
75
  });
73
- import { Effect as Effect2, Layer, Option as Option2 } from "effect";
76
+ import { Effect as Effect2, Layer, Option as Option2, ServiceMap } from "effect";
74
77
 
75
78
  // src/internal/runtime/core/configValidation.ts
76
- import { Schema } from "effect";
77
- var PositiveIntSchema = Schema.Int.pipe(Schema.positive());
78
- var PositiveNumberSchema = Schema.Number.pipe(Schema.positive());
79
- var ConvergeModeSchema = Schema.Union(Schema.Literal("auto"), Schema.Literal("full"), Schema.Literal("dirty"));
80
- var InstrumentationSchema = Schema.Union(Schema.Literal("full"), Schema.Literal("light"));
81
- var ConcurrencyLimitSchema = Schema.Union(Schema.Literal("unbounded"), PositiveIntSchema);
79
+ var isConvergeMode = (value) => value === "auto" || value === "full" || value === "dirty";
80
+ var isInstrumentation = (value) => value === "full" || value === "light";
81
+ var isConcurrencyLimit = (value) => value === "unbounded" || normalizePositiveInt(value) != null;
82
82
  var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
83
83
  var warnDevOnly = (label, issues) => {
84
84
  if (!isDevEnv()) return;
@@ -99,7 +99,7 @@ var collectUnknownKeys = (obj, allowed, prefix) => {
99
99
  var validateConcurrencyPolicyPatch = (obj, prefix) => {
100
100
  const issues = [];
101
101
  if ("concurrencyLimit" in obj && obj.concurrencyLimit != null) {
102
- if (!Schema.is(ConcurrencyLimitSchema)(obj.concurrencyLimit)) {
102
+ if (!isConcurrencyLimit(obj.concurrencyLimit)) {
103
103
  issues.push(`${prefix}concurrencyLimit: expected positive int | "unbounded"`);
104
104
  }
105
105
  }
@@ -218,10 +218,12 @@ var warnInvalidConcurrencyPolicyPatchDevOnly = (value, label) => {
218
218
  issues.push(...validateConcurrencyPolicyPatch(value, ""));
219
219
  warnDevOnly(label, issues);
220
220
  };
221
+ var warnInvalidSchedulingPolicySurfaceDevOnly = (value, label) => warnInvalidConcurrencyPolicyDevOnly(value, label);
222
+ var warnInvalidSchedulingPolicySurfacePatchDevOnly = (value, label) => warnInvalidConcurrencyPolicyPatchDevOnly(value, label);
221
223
  var validateStateTransactionTraitOverrides = (obj, prefix) => {
222
224
  const issues = [];
223
225
  if ("traitConvergeMode" in obj && obj.traitConvergeMode != null) {
224
- if (!Schema.is(ConvergeModeSchema)(obj.traitConvergeMode)) {
226
+ if (!isConvergeMode(obj.traitConvergeMode)) {
225
227
  issues.push(`${prefix}traitConvergeMode: expected "auto" | "full" | "dirty"`);
226
228
  }
227
229
  }
@@ -350,7 +352,7 @@ var warnInvalidStateTransactionRuntimeConfigDevOnly = (value, label) => {
350
352
  )
351
353
  );
352
354
  if ("instrumentation" in value && value.instrumentation != null) {
353
- if (!Schema.is(InstrumentationSchema)(value.instrumentation)) {
355
+ if (!isInstrumentation(value.instrumentation)) {
354
356
  issues.push(`instrumentation: expected "full" | "light"`);
355
357
  }
356
358
  }
@@ -527,7 +529,7 @@ var warnInvalidStateTransactionOverridesDevOnly = (value, label) => {
527
529
  };
528
530
 
529
531
  // src/internal/runtime/core/runner/ProgramRunner.ts
530
- import { Cause, Effect, FiberRef, Option, Scope } from "effect";
532
+ import { Cause, Effect, Exit, Option, Scope } from "effect";
531
533
 
532
534
  // src/internal/runtime/core/runner/ProgramRunner.exitCode.ts
533
535
  var isRecord2 = (value) => typeof value === "object" && value !== null;
@@ -570,11 +572,9 @@ var resolveProgramRunnerOptions = (options) => {
570
572
 
571
573
  // src/internal/runtime/core/runner/ProgramRunner.ts
572
574
  var openProgram = (makeRuntime, rootImpl, options) => Effect.gen(function* () {
573
- const inTxn = yield* FiberRef.get(inSyncTransactionFiber);
575
+ const inTxn = yield* Effect.service(inSyncTransactionFiber).pipe(Effect.orDie);
574
576
  if (inTxn) {
575
- return yield* Effect.dieMessage(
576
- "[Logix] Runtime.openProgram/runProgram is not allowed inside a synchronous StateTransaction body"
577
- );
577
+ return yield* Effect.die(new Error("[Logix] Runtime.openProgram/runProgram is not allowed inside a synchronous StateTransaction body"));
578
578
  }
579
579
  const runnerOptions = resolveProgramRunnerOptions(options);
580
580
  const kernel = yield* makeProgramRunnerKernel(makeRuntime, rootImpl, options);
@@ -586,14 +586,14 @@ var openProgram = (makeRuntime, rootImpl, options) => Effect.gen(function* () {
586
586
  );
587
587
  yield* kernel.installSignals(runnerOptions.handleSignals);
588
588
  const moduleRuntime = yield* Effect.tryPromise({
589
- try: () => kernel.runtime.runPromise(rootImpl.module),
589
+ try: () => kernel.runtime.runPromise(Effect.service(rootImpl.module).pipe(Effect.orDie)),
590
590
  catch: (error) => new BootError(kernel.identity, error)
591
591
  });
592
592
  kernel.setInstanceId(moduleRuntime.instanceId);
593
593
  return kernel.toContext(moduleRuntime);
594
594
  });
595
595
  var runProgram = async (makeRuntime, rootImpl, main, options) => {
596
- if (isInSyncTransaction()) {
596
+ if (isInSyncTransactionShadow()) {
597
597
  throw new Error("[Logix] Runtime.openProgram/runProgram is not allowed inside a synchronous StateTransaction body");
598
598
  }
599
599
  const runnerOptions = resolveProgramRunnerOptions(options);
@@ -608,18 +608,38 @@ var runProgram = async (makeRuntime, rootImpl, main, options) => {
608
608
  let closeError;
609
609
  let result;
610
610
  try {
611
- Effect.runSync(Scope.addFinalizer(scope, Effect.promise(() => runtime.dispose()).pipe(Effect.asVoid)));
612
611
  if (runnerOptions.handleSignals) {
613
612
  Effect.runSync(
614
613
  installGracefulShutdownHandlers({
615
614
  scope,
616
- enabled: true
615
+ enabled: true,
616
+ onSignal: () => Effect.gen(function* () {
617
+ yield* Effect.exit(
618
+ closeProgramScope({
619
+ scope,
620
+ timeoutMs: runnerOptions.closeScopeTimeout,
621
+ identity,
622
+ onError: options?.onError
623
+ })
624
+ );
625
+ const disposeResult = yield* Effect.promise(
626
+ () => new Promise((resolve) => {
627
+ void runtime.dispose().then(
628
+ () => resolve({ _tag: "Success" }),
629
+ () => resolve({ _tag: "Failure" })
630
+ );
631
+ })
632
+ );
633
+ if (disposeResult._tag === "Failure") {
634
+ return yield* Effect.void;
635
+ }
636
+ }).pipe(Effect.catchCause(() => Effect.void))
617
637
  })
618
638
  );
619
639
  }
620
640
  let moduleRuntime;
621
641
  try {
622
- moduleRuntime = await runtime.runPromise(rootImpl.module);
642
+ moduleRuntime = await runtime.runPromise(Effect.service(rootImpl.module).pipe(Effect.orDie));
623
643
  } catch (error) {
624
644
  setFailureExitCodeIfEnabled(runnerOptions.exitCode);
625
645
  reportErrorIfEnabled(runnerOptions.exitCode && runnerOptions.reportError, error);
@@ -651,15 +671,25 @@ var runProgram = async (makeRuntime, rootImpl, main, options) => {
651
671
  }
652
672
  } finally {
653
673
  const exit = await Effect.runPromiseExit(
654
- closeProgramScope({
655
- scope,
656
- timeoutMs: runnerOptions.closeScopeTimeout,
657
- identity,
658
- onError: options?.onError
674
+ Effect.gen(function* () {
675
+ const closeExit = yield* Effect.exit(
676
+ closeProgramScope({
677
+ scope,
678
+ timeoutMs: runnerOptions.closeScopeTimeout,
679
+ identity,
680
+ onError: options?.onError
681
+ })
682
+ );
683
+ if (Exit.isSuccess(closeExit)) {
684
+ yield* Effect.promise(() => runtime.dispose()).pipe(Effect.asVoid);
685
+ return;
686
+ }
687
+ void runtime.dispose();
688
+ return yield* Effect.failCause(closeExit.cause);
659
689
  })
660
690
  );
661
691
  if (exit._tag === "Failure") {
662
- const failureOpt = Cause.failureOption(exit.cause);
692
+ const failureOpt = Cause.findErrorOption(exit.cause);
663
693
  if (Option.isSome(failureOpt)) {
664
694
  const error = failureOpt.value;
665
695
  if (mainError !== void 0 && error && typeof error === "object") {
@@ -667,9 +697,9 @@ var runProgram = async (makeRuntime, rootImpl, main, options) => {
667
697
  }
668
698
  closeError = error;
669
699
  } else {
670
- const defectOpt = Cause.dieOption(exit.cause);
671
- if (Option.isSome(defectOpt) && defectOpt.value instanceof Error) {
672
- const error = defectOpt.value;
700
+ const defect = exit.cause.reasons.filter(Cause.isDieReason).map((reason) => reason.defect)[0];
701
+ if (defect instanceof Error) {
702
+ const error = defect;
673
703
  if (mainError !== void 0 && error && typeof error === "object") {
674
704
  error.mainError = mainError;
675
705
  }
@@ -697,16 +727,23 @@ var runProgram = async (makeRuntime, rootImpl, main, options) => {
697
727
 
698
728
  // src/Runtime.ts
699
729
  var resolveRootImpl = (root) => root?._tag === "ModuleImpl" ? root : root?.impl;
730
+ var resolveSchedulingPolicySurface = (options) => options?.schedulingPolicy ?? options?.concurrencyPolicy;
700
731
  var make2 = (root, options) => {
701
732
  const rootImpl = resolveRootImpl(root);
702
- warnInvalidConcurrencyPolicyDevOnly(options?.concurrencyPolicy, "Runtime.make options.concurrencyPolicy");
733
+ const schedulingPolicy = resolveSchedulingPolicySurface(options);
734
+ if (options?.schedulingPolicy !== void 0) {
735
+ warnInvalidSchedulingPolicySurfaceDevOnly(options.schedulingPolicy, "Runtime.make options.schedulingPolicy");
736
+ } else {
737
+ warnInvalidConcurrencyPolicyDevOnly(options?.concurrencyPolicy, "Runtime.make options.concurrencyPolicy");
738
+ }
703
739
  warnInvalidStateTransactionRuntimeConfigDevOnly(options?.stateTransaction, "Runtime.make options.stateTransaction");
704
740
  const debugLayer = options?.debug === true ? layer() : options?.debug ? layer(options.debug) : Layer.empty;
705
741
  const userLayer = options?.layer ?? Layer.empty;
706
742
  const userWithDebug = options?.debug ? Layer.mergeAll(userLayer, debugLayer) : userLayer;
707
743
  let middlewareStack = options?.middleware ?? [];
708
744
  const devtoolsOptions = options?.devtools === true ? {} : options?.devtools;
709
- if (options?.devtools) {
745
+ const useDevtoolsVacuumPath = devtoolsOptions?.diagnosticsLevel === "off";
746
+ if (options?.devtools && !useDevtoolsVacuumPath) {
710
747
  const observerConfig = devtoolsOptions?.observer === false ? false : devtoolsOptions?.observer;
711
748
  middlewareStack = withDebug(middlewareStack, {
712
749
  logger: false,
@@ -717,9 +754,10 @@ var make2 = (root, options) => {
717
754
  stack: middlewareStack
718
755
  }) : Layer.empty;
719
756
  const baseLayer = options?.label != null ? Layer.mergeAll(runtimeLabel(options.label), userWithDebug) : userWithDebug;
720
- const baseWithDevtools = options?.devtools ? devtoolsHubLayer(baseLayer, {
757
+ const baseWithDevtools = options?.devtools && !useDevtoolsVacuumPath ? devtoolsHubLayer(baseLayer, {
721
758
  bufferSize: devtoolsOptions?.bufferSize,
722
759
  diagnosticsLevel: devtoolsOptions?.diagnosticsLevel,
760
+ traceMode: devtoolsOptions?.traceMode ?? "on",
723
761
  traitConvergeDiagnosticsSampling: devtoolsOptions?.traitConvergeDiagnosticsSampling
724
762
  }) : baseLayer;
725
763
  const appLayer = Layer.mergeAll(
@@ -744,13 +782,22 @@ var make2 = (root, options) => {
744
782
  modules: [provide(rootImpl.module, rootImpl.layer)],
745
783
  processes: rootImpl.processes ?? [],
746
784
  onError: options?.onError,
785
+ hostScheduler: options?.hostScheduler,
747
786
  stateTransaction: options?.stateTransaction,
748
- concurrencyPolicy: options?.concurrencyPolicy,
787
+ schedulingPolicy,
749
788
  readQueryStrictGate
750
789
  };
751
790
  const app = makeApp(appConfig);
752
791
  return app.makeRuntime();
753
792
  };
793
+ var batch = (fn) => {
794
+ enterRuntimeBatch();
795
+ try {
796
+ return fn();
797
+ } finally {
798
+ exitRuntimeBatch();
799
+ }
800
+ };
754
801
  var openProgram2 = (root, options) => openProgram(
755
802
  (rootImpl, runtimeOptions) => make2(rootImpl, runtimeOptions),
756
803
  resolveRootImpl(root),
@@ -766,51 +813,53 @@ var stateTransactionOverridesLayer = (overrides) => {
766
813
  warnInvalidStateTransactionOverridesDevOnly(overrides, "Runtime.stateTransactionOverridesLayer");
767
814
  return Layer.succeed(StateTransactionOverridesTag, overrides);
768
815
  };
816
+ var schedulingPolicyOverridesLayer = (overrides) => {
817
+ warnInvalidSchedulingPolicySurfaceDevOnly(overrides, "Runtime.schedulingPolicyOverridesLayer");
818
+ return Layer.succeed(SchedulingPolicySurfaceOverridesTag, overrides);
819
+ };
769
820
  var concurrencyPolicyOverridesLayer = (overrides) => {
770
- warnInvalidConcurrencyPolicyDevOnly(overrides, "Runtime.concurrencyPolicyOverridesLayer");
771
- return Layer.succeed(ConcurrencyPolicyOverridesTag, overrides);
821
+ return schedulingPolicyOverridesLayer(overrides);
772
822
  };
773
823
  var setTraitConvergeOverride = (runtime, moduleId, overrides) => {
774
824
  warnInvalidStateTransactionTraitConvergeOverridesDevOnly(overrides, `Runtime.setTraitConvergeOverride(${moduleId})`);
775
- runtime.runSync(
776
- Effect2.gen(function* () {
777
- const runtimeConfigOpt = yield* Effect2.serviceOption(StateTransactionConfigTag);
778
- if (Option2.isNone(runtimeConfigOpt)) {
779
- return;
780
- }
781
- const runtimeConfig = runtimeConfigOpt.value;
782
- const next = {
783
- ...runtimeConfig.traitConvergeOverridesByModuleId ?? {}
784
- };
785
- if (overrides) {
786
- next[moduleId] = overrides;
787
- } else {
788
- delete next[moduleId];
789
- }
790
- runtimeConfig.traitConvergeOverridesByModuleId = next;
791
- })
792
- );
825
+ return Effect2.map(runtime.servicesEffect, (services) => {
826
+ const runtimeConfigOpt = ServiceMap.getOption(services, StateTransactionConfigTag);
827
+ if (Option2.isNone(runtimeConfigOpt)) {
828
+ return;
829
+ }
830
+ const runtimeConfig = runtimeConfigOpt.value;
831
+ const next = {
832
+ ...runtimeConfig.traitConvergeOverridesByModuleId ?? {}
833
+ };
834
+ if (overrides) {
835
+ next[moduleId] = overrides;
836
+ } else {
837
+ delete next[moduleId];
838
+ }
839
+ runtimeConfig.traitConvergeOverridesByModuleId = next;
840
+ });
841
+ };
842
+ var setSchedulingPolicyOverride = (runtime, moduleId, patch) => {
843
+ warnInvalidSchedulingPolicySurfacePatchDevOnly(patch, `Runtime.setSchedulingPolicyOverride(${moduleId})`);
844
+ return Effect2.map(runtime.servicesEffect, (services) => {
845
+ const runtimeConfigOpt = ServiceMap.getOption(services, SchedulingPolicySurfaceTag);
846
+ if (Option2.isNone(runtimeConfigOpt)) {
847
+ return;
848
+ }
849
+ const runtimeConfig = runtimeConfigOpt.value;
850
+ const next = {
851
+ ...runtimeConfig.overridesByModuleId ?? {}
852
+ };
853
+ if (patch) {
854
+ next[moduleId] = patch;
855
+ } else {
856
+ delete next[moduleId];
857
+ }
858
+ runtimeConfig.overridesByModuleId = next;
859
+ });
793
860
  };
794
861
  var setConcurrencyPolicyOverride = (runtime, moduleId, patch) => {
795
- warnInvalidConcurrencyPolicyPatchDevOnly(patch, `Runtime.setConcurrencyPolicyOverride(${moduleId})`);
796
- runtime.runSync(
797
- Effect2.gen(function* () {
798
- const runtimeConfigOpt = yield* Effect2.serviceOption(ConcurrencyPolicyTag);
799
- if (Option2.isNone(runtimeConfigOpt)) {
800
- return;
801
- }
802
- const runtimeConfig = runtimeConfigOpt.value;
803
- const next = {
804
- ...runtimeConfig.overridesByModuleId ?? {}
805
- };
806
- if (patch) {
807
- next[moduleId] = patch;
808
- } else {
809
- delete next[moduleId];
810
- }
811
- runtimeConfig.overridesByModuleId = next;
812
- })
813
- );
862
+ return setSchedulingPolicyOverride(runtime, moduleId, patch);
814
863
  };
815
864
  var applyTransactionSnapshot = (moduleId, instanceId, txnId, mode) => Effect2.gen(function* () {
816
865
  const runtime = getRuntimeByModuleAndInstance(moduleId, instanceId);
@@ -826,13 +875,16 @@ var applyTransactionSnapshot = (moduleId, instanceId, txnId, mode) => Effect2.ge
826
875
 
827
876
  export {
828
877
  make2 as make,
878
+ batch,
829
879
  openProgram2 as openProgram,
830
880
  runProgram2 as runProgram,
831
881
  stateTransactionOverridesLayer,
882
+ schedulingPolicyOverridesLayer,
832
883
  concurrencyPolicyOverridesLayer,
833
884
  setTraitConvergeOverride,
885
+ setSchedulingPolicyOverride,
834
886
  setConcurrencyPolicyOverride,
835
887
  applyTransactionSnapshot,
836
888
  Runtime_exports
837
889
  };
838
- //# sourceMappingURL=chunk-NBD3KUOZ.js.map
890
+ //# sourceMappingURL=chunk-F6RP62H3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Runtime.ts","../src/internal/runtime/core/configValidation.ts","../src/internal/runtime/core/runner/ProgramRunner.ts","../src/internal/runtime/core/runner/ProgramRunner.exitCode.ts","../src/internal/runtime/core/runner/ProgramRunner.options.ts"],"sourcesContent":["import { Effect, Layer, ManagedRuntime, Option, Scope, ServiceMap } from 'effect'\nimport type { AnyModuleShape, ModuleImpl } from './internal/module.js'\nimport type { AnyModule } from './Module.js'\nimport * as AppRuntimeImpl from './internal/runtime/AppRuntime.js'\nimport * as ModuleRuntime from './internal/runtime/ModuleRuntime.js'\nimport * as Debug from './Debug.js'\nimport type * as EffectOp from './EffectOp.js'\nimport * as EffectOpCore from './internal/runtime/core/EffectOpCore.js'\nimport * as RunSession from './internal/observability/runSession.js'\nimport type { ReadQueryFallbackReason as ReadQueryFallbackReasonCore } from './internal/runtime/core/ReadQuery.js'\nimport {\n SchedulingPolicySurfaceTag,\n SchedulingPolicySurfaceOverridesTag,\n type ReadQueryStrictGateRuntimeConfig,\n StateTransactionConfigTag,\n StateTransactionOverridesTag,\n type ConcurrencyPolicy,\n type ConcurrencyPolicyOverrides,\n type ConcurrencyPolicyPatch,\n type SchedulingPolicySurface,\n type SchedulingPolicySurfaceOverrides,\n type SchedulingPolicySurfacePatch,\n type StateTransactionOverrides,\n type StateTransactionInstrumentation,\n type StateTransactionTraitConvergeOverrides,\n type TraitConvergeTimeSlicingPatch,\n type TxnLanesPatch,\n} from './internal/runtime/core/env.js'\nimport * as Middleware from './Middleware.js'\nimport { getRuntimeInternals } from './internal/runtime/core/runtimeInternalsAccessor.js'\nimport { enterRuntimeBatch, exitRuntimeBatch } from './internal/runtime/core/TickScheduler.js'\nimport * as ScopeRegistry from './ScopeRegistry.js'\nimport {\n warnInvalidConcurrencyPolicyDevOnly,\n warnInvalidSchedulingPolicySurfaceDevOnly,\n warnInvalidSchedulingPolicySurfacePatchDevOnly,\n warnInvalidStateTransactionOverridesDevOnly,\n warnInvalidStateTransactionRuntimeConfigDevOnly,\n warnInvalidStateTransactionTraitConvergeOverridesDevOnly,\n} from './internal/runtime/core/configValidation.js'\nimport * as ProgramRunner from './internal/runtime/ProgramRunner.js'\nimport type { ProgramRunContext } from './internal/runtime/ProgramRunner.context.js'\n\nexport type { ProgramRunContext } from './internal/runtime/ProgramRunner.context.js'\nexport {\n BootError,\n DisposeError,\n DisposeTimeoutError,\n MainError,\n type ProgramIdentity,\n type ProgramRunnerErrorTag,\n} from './internal/runtime/ProgramRunner.errors.js'\n\nexport interface OpenProgramOptions extends RuntimeOptions {\n readonly closeScopeTimeout?: number\n readonly handleSignals?: boolean\n}\n\nexport interface RunProgramOptions<Args = unknown> extends OpenProgramOptions {\n readonly args?: Args\n readonly exitCode?: boolean\n readonly reportError?: boolean\n}\n\ntype HostSchedulerCancel = () => void\n\ntype HostScheduler = {\n readonly nowMs: () => number\n readonly scheduleMicrotask: (cb: () => void) => void\n readonly scheduleMacrotask: (cb: () => void) => HostSchedulerCancel\n readonly scheduleAnimationFrame: (cb: () => void) => HostSchedulerCancel\n readonly scheduleTimeout: (ms: number, cb: () => void) => HostSchedulerCancel\n}\n\nconst resolveRootImpl = <Sh extends AnyModuleShape>(\n root: ModuleImpl<any, Sh, any> | AnyModule,\n): ModuleImpl<any, Sh, any> =>\n ((root as any)?._tag === 'ModuleImpl'\n ? (root as ModuleImpl<any, Sh, any>)\n : ((root as any)?.impl as ModuleImpl<any, Sh, any>)) satisfies ModuleImpl<any, Sh, any>\n\nconst resolveSchedulingPolicySurface = (options: RuntimeOptions | undefined): SchedulingPolicySurface | undefined =>\n options?.schedulingPolicy ?? options?.concurrencyPolicy\n\n/**\n * Runtime-level StateTransaction defaults.\n *\n * Applied as the `runtime_default` baseline; modules and providers may override.\n */\nexport interface RuntimeStateTransactionOptions {\n readonly instrumentation?: StateTransactionInstrumentation\n readonly traitConvergeBudgetMs?: number\n readonly traitConvergeDecisionBudgetMs?: number\n readonly traitConvergeMode?: 'auto' | 'full' | 'dirty'\n readonly traitConvergeTimeSlicing?: TraitConvergeTimeSlicingPatch\n /** Txn lanes configuration at the `runtime_default` baseline (enabled by default). */\n readonly txnLanes?: TxnLanesPatch\n readonly traitConvergeOverridesByModuleId?: Readonly<Record<string, StateTransactionTraitConvergeOverrides>>\n /** Txn lanes overrides at the `runtime_module` layer. */\n readonly txnLanesOverridesByModuleId?: Readonly<Record<string, TxnLanesPatch>>\n}\n\nexport type ReadQueryFallbackReason = ReadQueryFallbackReasonCore\n\nexport interface RuntimeReadQueryStrictGateOptions {\n /**\n * Strict gate mode for ReadQuery fallbacks.\n *\n * - `off`: disabled (default).\n * - `warn`: allow but emit structured diagnostics.\n * - `error`: fail on forbidden fallbacks (CI/perf gate).\n *\n * O-009: runtime only consumes build-graded selectors.\n * This gate applies to explicit runtime fallback paths (e.g. missing build grade), not to re-evaluate graded selectors.\n */\n readonly mode?: 'off' | 'warn' | 'error'\n /**\n * Selectors that must stay on the static lane (keyed by selectorId).\n *\n * When undefined, the implementation decides the gate coverage (typically `all`).\n */\n readonly requireStatic?: {\n readonly selectorIds?: ReadonlyArray<string>\n readonly modules?: ReadonlyArray<string>\n }\n /**\n * Fine-grained kill switch: deny specific fallback reasons (e.g. `unstableSelectorId`).\n */\n readonly denyFallbackReasons?: ReadonlyArray<ReadQueryFallbackReason>\n}\n\nexport interface RuntimeReadQueryOptions {\n readonly strictGate?: RuntimeReadQueryStrictGateOptions\n}\n\nexport interface RuntimeOptions {\n readonly layer?: Layer.Layer<any, never, never>\n readonly onError?: (cause: import('effect').Cause.Cause<unknown>) => Effect.Effect<void>\n /**\n * Optional runtime label (e.g. `AppDemoRuntime`) for Debug / DevTools grouping.\n */\n readonly label?: string\n /**\n * Optional HostScheduler override for this Runtime.\n *\n * Use it when you need deterministic host scheduling (tests) or a custom host integration.\n *\n * NOTE:\n * - TickScheduler captures HostScheduler at Layer build-time (073); overriding HostScheduler via `options.layer`\n * is not sufficient unless the dependent layer is built under that override.\n * - This option avoids the pitfall by injecting HostScheduler into the runtime tick services build pipeline.\n */\n readonly hostScheduler?: HostScheduler\n /**\n * Optional Debug console output configuration.\n *\n * - `true`: enable `Debug.layer()` (auto mode).\n * - `Debug.DebugLayerOptions`: forwarded to `Debug.layer(options)`.\n *\n * Advanced: for full control, omit this option and provide your own Debug layers via `options.layer`.\n */\n readonly debug?: true | Debug.DebugLayerOptions\n readonly middleware?: EffectOp.MiddlewareStack\n /**\n * Enable Devtools (explicit override).\n *\n * - `true`: use default `DevtoolsRuntimeOptions`.\n * - `DevtoolsRuntimeOptions`: customize hub buffer size, DebugObserver filters, etc.\n */\n readonly devtools?: true | DevtoolsRuntimeOptions\n /**\n * Runtime-level StateTransaction defaults.\n *\n * When not provided, modules fall back to NODE_ENV-based defaults; modules may override via\n * `ModuleDef.implement({ stateTransaction })`.\n */\n readonly stateTransaction?: RuntimeStateTransactionOptions\n /**\n * Runtime-level unified scheduling policy surface.\n *\n * Converges queue/tick/concurrency knobs into one policy contract (default limit=16 with bounded fallback).\n */\n readonly schedulingPolicy?: SchedulingPolicySurface\n /**\n * Legacy alias of `schedulingPolicy` (phase-1 migration path).\n *\n * If both are provided, `schedulingPolicy` wins.\n */\n readonly concurrencyPolicy?: ConcurrencyPolicy\n /**\n * ReadQuery governance (e.g. strict gate policies).\n */\n readonly readQuery?: RuntimeReadQueryOptions\n}\n\nexport interface DevtoolsRuntimeOptions {\n /** Hub ring buffer capacity (events). Default: 500. */\n readonly bufferSize?: number\n /**\n * Diagnostics level for exportable Devtools events.\n *\n * Forwarded to `Debug.devtoolsHubLayer({ diagnosticsLevel })`.\n * When explicitly set to `\"off\"`, `Runtime.make` enters a vacuum path:\n * it skips both DevtoolsHub sink mounting and DebugObserver middleware wiring.\n * Default: `\"light\"`.\n */\n readonly diagnosticsLevel?: Debug.DiagnosticsLevel\n /**\n * Trait converge diagnostics sampling config.\n *\n * Forwarded to `Debug.devtoolsHubLayer({ traitConvergeDiagnosticsSampling })`.\n */\n readonly traitConvergeDiagnosticsSampling?: Debug.TraitConvergeDiagnosticsSamplingConfig\n /** DebugObserver config for `trace:effectop`; undefined means full observation. */\n readonly observer?: Middleware.DebugObserverConfig | false\n readonly traceMode?: Debug.TraceMode\n /** Reserved: React render sampling / throttling config (consumed by `@logixjs/react`). */\n readonly sampling?: {\n readonly reactRenderSampleRate?: number\n }\n}\n\n/**\n * Construct an application runtime from a root module.\n *\n * - Uses the root module + layer as the composition root.\n * - Forks root processes within the runtime Scope.\n * - Exposes a ManagedRuntime; the full Env is provided by `root.layer + options.layer`.\n */\nexport const make = (\n root: ModuleImpl<any, AnyModuleShape, any> | AnyModule,\n options?: RuntimeOptions,\n): ManagedRuntime.ManagedRuntime<any, never> => {\n const rootImpl = resolveRootImpl(root)\n const schedulingPolicy = resolveSchedulingPolicySurface(options)\n\n if (options?.schedulingPolicy !== undefined) {\n warnInvalidSchedulingPolicySurfaceDevOnly(options.schedulingPolicy, 'Runtime.make options.schedulingPolicy')\n } else {\n warnInvalidConcurrencyPolicyDevOnly(options?.concurrencyPolicy, 'Runtime.make options.concurrencyPolicy')\n }\n warnInvalidStateTransactionRuntimeConfigDevOnly(options?.stateTransaction, 'Runtime.make options.stateTransaction')\n\n const debugLayer =\n options?.debug === true\n ? (Debug.layer() as Layer.Layer<any, never, never>)\n : options?.debug\n ? (Debug.layer(options.debug) as Layer.Layer<any, never, never>)\n : (Layer.empty as Layer.Layer<any, never, never>)\n\n // Base Env: fully defined by caller-provided Layers (e.g. Config / platform services).\n // Debug sinks can be enabled via options.debug, or manually composed via options.layer.\n const userLayer = (options?.layer ?? Layer.empty) as Layer.Layer<any, never, never>\n const userWithDebug = options?.debug ? (Layer.mergeAll(userLayer, debugLayer) as Layer.Layer<any, never, never>) : userLayer\n\n let middlewareStack: EffectOp.MiddlewareStack = options?.middleware ?? []\n\n // When devtools is explicitly enabled:\n // 1) Append DebugObserver (`trace:effectop`).\n // 2) Mount the DevtoolsHub sink in appLayer (process-level event aggregation).\n const devtoolsOptions: DevtoolsRuntimeOptions | undefined = options?.devtools === true ? {} : options?.devtools\n const useDevtoolsVacuumPath = devtoolsOptions?.diagnosticsLevel === 'off'\n\n if (options?.devtools && !useDevtoolsVacuumPath) {\n const observerConfig = devtoolsOptions?.observer === false ? false : devtoolsOptions?.observer\n middlewareStack = Middleware.withDebug(middlewareStack, {\n logger: false,\n observer: observerConfig,\n })\n }\n\n // Optional: inject the EffectOp MiddlewareStack service for this Runtime,\n // so runtime code (e.g. StateTrait.install) can resolve the unified EffectOp bus configuration from Env.\n const effectOpLayer: Layer.Layer<any, never, never> =\n middlewareStack.length > 0\n ? (Layer.succeed(EffectOpCore.EffectOpMiddlewareTag, {\n stack: middlewareStack,\n }) as Layer.Layer<any, never, never>)\n : (Layer.empty as Layer.Layer<any, never, never>)\n\n const baseLayer =\n options?.label != null\n ? (Layer.mergeAll(Debug.runtimeLabel(options.label), userWithDebug) as Layer.Layer<any, never, never>)\n : userWithDebug\n\n const baseWithDevtools = options?.devtools && !useDevtoolsVacuumPath\n ? (Debug.devtoolsHubLayer(baseLayer, {\n bufferSize: devtoolsOptions?.bufferSize,\n diagnosticsLevel: devtoolsOptions?.diagnosticsLevel,\n traceMode: devtoolsOptions?.traceMode ?? 'on',\n traitConvergeDiagnosticsSampling: devtoolsOptions?.traitConvergeDiagnosticsSampling,\n }) as Layer.Layer<any, never, never>)\n : baseLayer\n\n // NOTE: runSession should be overrideable by callers (e.g. CI/trial-run injecting a stable runId).\n // In Layer.mergeAll, later layers override earlier ones; keep the default layer first.\n const appLayer = Layer.mergeAll(\n RunSession.runSessionLayer(),\n ScopeRegistry.layer(),\n baseWithDevtools,\n effectOpLayer,\n ) as Layer.Layer<any, never, never>\n\n const readQueryStrictGate: ReadQueryStrictGateRuntimeConfig | undefined = (() => {\n const strictGate = options?.readQuery?.strictGate\n if (!strictGate) return undefined\n\n const mode = strictGate.mode ?? 'off'\n if (mode === 'off') return undefined\n\n return {\n mode,\n requireStatic: strictGate.requireStatic,\n denyFallbackReasons: strictGate.denyFallbackReasons,\n }\n })()\n\n const appConfig: AppRuntimeImpl.LogixAppConfig<any> = {\n layer: appLayer,\n modules: [AppRuntimeImpl.provide(rootImpl.module, rootImpl.layer as Layer.Layer<any, any, any>)],\n processes: rootImpl.processes ?? [],\n onError: options?.onError,\n hostScheduler: options?.hostScheduler,\n stateTransaction: options?.stateTransaction,\n schedulingPolicy,\n readQueryStrictGate,\n }\n\n const app = AppRuntimeImpl.makeApp(appConfig)\n return app.makeRuntime() as ManagedRuntime.ManagedRuntime<any, never>\n}\n\n/**\n * Runtime.batch:\n * - Provides a stronger \"tick boundary\" for RuntimeStore/TickScheduler than the default microtask boundary.\n * - Sync-only: nested batches flatten; only the outermost batch triggers the flush boundary.\n * - NOT a transaction: no rollback; errors may result in partial commits, but the flush boundary is still released in finally.\n *\n * WARNING:\n * - Do not `await` inside the batch callback expecting mid-flush; batch only establishes a synchronous boundary.\n */\nexport const batch = <A>(fn: () => A): A => {\n enterRuntimeBatch()\n try {\n return fn()\n } finally {\n exitRuntimeBatch()\n }\n}\n\n/**\n * Resourceful entry: returns a scope-bound ProgramRunContext (booted and ready).\n */\nexport const openProgram = <Sh extends AnyModuleShape>(\n root: ModuleImpl<any, Sh, any> | AnyModule,\n options?: OpenProgramOptions,\n): Effect.Effect<ProgramRunContext<Sh>, unknown, Scope.Scope> =>\n ProgramRunner.openProgram(\n (rootImpl, runtimeOptions) => make(rootImpl, runtimeOptions as RuntimeOptions),\n resolveRootImpl(root),\n options,\n )\n\n/**\n * One-shot entry: boot → main(ctx,args) → dispose.\n */\nexport const runProgram = async <Sh extends AnyModuleShape, Args, A, E, R>(\n root: ModuleImpl<any, Sh, any> | AnyModule,\n main: (ctx: ProgramRunContext<Sh>, args: Args) => Effect.Effect<A, E, R>,\n options?: RunProgramOptions<Args>,\n): Promise<A> =>\n ProgramRunner.runProgram(\n (rootImpl, runtimeOptions) => make(rootImpl, runtimeOptions as RuntimeOptions),\n resolveRootImpl(root),\n main,\n options,\n )\n\n/**\n * Provider-scoped StateTransactionOverrides layer.\n *\n * Use it to apply local overrides on top of the `runtime_default` baseline.\n */\nexport const stateTransactionOverridesLayer = (\n overrides: StateTransactionOverrides,\n): Layer.Layer<any, never, never> => {\n warnInvalidStateTransactionOverridesDevOnly(overrides, 'Runtime.stateTransactionOverridesLayer')\n return Layer.succeed(StateTransactionOverridesTag, overrides) as Layer.Layer<any, never, never>\n}\n\n/**\n * Provider-scoped SchedulingPolicySurfaceOverrides layer.\n *\n * Use it to apply local overrides on top of the `runtime_default` baseline.\n */\nexport const schedulingPolicyOverridesLayer = (\n overrides: SchedulingPolicySurfaceOverrides,\n): Layer.Layer<any, never, never> => {\n warnInvalidSchedulingPolicySurfaceDevOnly(overrides, 'Runtime.schedulingPolicyOverridesLayer')\n return Layer.succeed(SchedulingPolicySurfaceOverridesTag, overrides) as Layer.Layer<any, never, never>\n}\n\n/**\n * Legacy alias: provider-scoped ConcurrencyPolicyOverrides layer.\n *\n * Kept for phase-1 migration. Internally it is the same scheduling policy surface override layer.\n */\nexport const concurrencyPolicyOverridesLayer = (\n overrides: ConcurrencyPolicyOverrides,\n): Layer.Layer<any, never, never> => {\n return schedulingPolicyOverridesLayer(overrides)\n}\n\n/**\n * Hot-switch Trait converge overrides for a moduleId.\n *\n * This mutates the `runtime_module` patch map only; provider overrides still take precedence.\n */\nexport const setTraitConvergeOverride = (\n runtime: ManagedRuntime.ManagedRuntime<any, never>,\n moduleId: string,\n overrides: StateTransactionTraitConvergeOverrides | undefined,\n): Effect.Effect<void, never, never> => {\n warnInvalidStateTransactionTraitConvergeOverridesDevOnly(overrides, `Runtime.setTraitConvergeOverride(${moduleId})`)\n\n return Effect.map(runtime.servicesEffect, (services) => {\n const runtimeConfigOpt = ServiceMap.getOption(services, StateTransactionConfigTag as any)\n if (Option.isNone(runtimeConfigOpt)) {\n return\n }\n\n // NOTE: runtime config lives in Env as a Service; hot-switch by replacing the per-module patch map.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const runtimeConfig: any = runtimeConfigOpt.value\n const next = {\n ...(runtimeConfig.traitConvergeOverridesByModuleId ?? {}),\n }\n\n if (overrides) {\n next[moduleId] = overrides\n } else {\n delete next[moduleId]\n }\n\n runtimeConfig.traitConvergeOverridesByModuleId = next\n }) as Effect.Effect<void, never, never>\n}\n\n/**\n * Hot-switch SchedulingPolicySurface patch for a moduleId.\n *\n * This mutates the `runtime_module` patch map only; provider overrides still take precedence.\n */\nexport const setSchedulingPolicyOverride = (\n runtime: ManagedRuntime.ManagedRuntime<any, never>,\n moduleId: string,\n patch: SchedulingPolicySurfacePatch | undefined,\n): Effect.Effect<void, never, never> => {\n warnInvalidSchedulingPolicySurfacePatchDevOnly(patch, `Runtime.setSchedulingPolicyOverride(${moduleId})`)\n\n return Effect.map(runtime.servicesEffect, (services) => {\n const runtimeConfigOpt = ServiceMap.getOption(services, SchedulingPolicySurfaceTag as any)\n if (Option.isNone(runtimeConfigOpt)) {\n return\n }\n\n // NOTE: runtime config lives in Env as a Service; hot-switch by replacing the per-module patch map.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const runtimeConfig: any = runtimeConfigOpt.value\n const next = {\n ...(runtimeConfig.overridesByModuleId ?? {}),\n }\n\n if (patch) {\n next[moduleId] = patch\n } else {\n delete next[moduleId]\n }\n\n runtimeConfig.overridesByModuleId = next\n }) as Effect.Effect<void, never, never>\n}\n\n/**\n * Legacy alias: hot-switch ConcurrencyPolicy patch for a moduleId.\n *\n * Kept for phase-1 migration. Internally routes to scheduling policy surface override.\n */\nexport const setConcurrencyPolicyOverride = (\n runtime: ManagedRuntime.ManagedRuntime<any, never>,\n moduleId: string,\n patch: ConcurrencyPolicyPatch | undefined,\n): Effect.Effect<void, never, never> => {\n return setSchedulingPolicyOverride(runtime, moduleId, patch)\n}\n\n/**\n * Apply a transaction snapshot for time-travel replay (dev/test).\n *\n * - `moduleId` / `instanceId` match Debug events.\n * - `mode`: `before` replays pre-transaction; `after` replays post-commit.\n *\n * No-op if the runtime/instance cannot be resolved.\n */\nexport const applyTransactionSnapshot = (\n moduleId: string,\n instanceId: string,\n txnId: string,\n mode: 'before' | 'after',\n): Effect.Effect<void, never, any> =>\n Effect.gen(function* () {\n const runtime = ModuleRuntime.getRuntimeByModuleAndInstance<any, any>(moduleId, instanceId)\n\n if (!runtime) {\n return\n }\n\n try {\n yield* getRuntimeInternals(runtime as any).txn.applyTransactionSnapshot(txnId, mode)\n } catch {\n return\n }\n })\n","import { isDevEnv } from './env.js'\nimport {\n normalizeBoolean,\n normalizeNonNegativeNumber,\n normalizePositiveInt,\n normalizePositiveNumber,\n} from './normalize.js'\n\nconst isConvergeMode = (value: unknown): value is 'auto' | 'full' | 'dirty' =>\n value === 'auto' || value === 'full' || value === 'dirty'\n\nconst isInstrumentation = (value: unknown): value is 'full' | 'light' => value === 'full' || value === 'light'\n\nconst isConcurrencyLimit = (value: unknown): value is 'unbounded' | number =>\n value === 'unbounded' || normalizePositiveInt(value) != null\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst warnDevOnly = (label: string, issues: ReadonlyArray<string>): void => {\n if (!isDevEnv()) return\n if (issues.length === 0) return\n // eslint-disable-next-line no-console\n console.warn(\n ['[Logix] Invalid runtime config detected.', `context: ${label}`, 'issues:']\n .concat(issues.map((i) => `- ${i}`))\n .join('\\n'),\n )\n}\n\nconst collectUnknownKeys = (\n obj: Record<string, unknown>,\n allowed: ReadonlySet<string>,\n prefix: string,\n): ReadonlyArray<string> => {\n const issues: string[] = []\n for (const key of Object.keys(obj)) {\n if (!allowed.has(key)) {\n issues.push(`${prefix}${key}: unknown key`)\n }\n }\n return issues\n}\n\nconst validateConcurrencyPolicyPatch = (obj: Record<string, unknown>, prefix: string): ReadonlyArray<string> => {\n const issues: string[] = []\n\n if ('concurrencyLimit' in obj && obj.concurrencyLimit != null) {\n if (!isConcurrencyLimit(obj.concurrencyLimit)) {\n issues.push(`${prefix}concurrencyLimit: expected positive int | \"unbounded\"`)\n }\n }\n\n if ('losslessBackpressureCapacity' in obj && obj.losslessBackpressureCapacity != null) {\n if (normalizePositiveInt(obj.losslessBackpressureCapacity) == null) {\n issues.push(`${prefix}losslessBackpressureCapacity: expected positive int`)\n }\n }\n\n if ('allowUnbounded' in obj && obj.allowUnbounded != null) {\n if (normalizeBoolean(obj.allowUnbounded) == null) {\n issues.push(`${prefix}allowUnbounded: expected boolean`)\n }\n }\n\n if ('pressureWarningThreshold' in obj && obj.pressureWarningThreshold != null) {\n const threshold = obj.pressureWarningThreshold\n if (!isRecord(threshold)) {\n issues.push(`${prefix}pressureWarningThreshold: expected object`)\n } else {\n const backlogCount = threshold['backlogCount']\n if (backlogCount != null) {\n if (normalizePositiveInt(backlogCount) == null) {\n issues.push(`${prefix}pressureWarningThreshold.backlogCount: expected positive int`)\n }\n }\n const backlogDurationMs = threshold['backlogDurationMs']\n if (backlogDurationMs != null) {\n if (normalizePositiveNumber(backlogDurationMs) == null) {\n issues.push(`${prefix}pressureWarningThreshold.backlogDurationMs: expected positive number`)\n }\n }\n }\n }\n\n if ('warningCooldownMs' in obj && obj.warningCooldownMs != null) {\n if (normalizePositiveNumber(obj.warningCooldownMs) == null) {\n issues.push(`${prefix}warningCooldownMs: expected positive number`)\n }\n }\n\n return issues\n}\n\nexport const warnInvalidConcurrencyPolicyDevOnly = (value: unknown, label: string): void => {\n if (!isDevEnv()) return\n if (value == null) return\n\n if (!isRecord(value)) {\n warnDevOnly(label, ['expected object'])\n return\n }\n\n const policy = value\n const issues: string[] = []\n\n issues.push(\n ...collectUnknownKeys(\n policy,\n new Set([\n 'concurrencyLimit',\n 'losslessBackpressureCapacity',\n 'allowUnbounded',\n 'pressureWarningThreshold',\n 'warningCooldownMs',\n 'overridesByModuleId',\n ]),\n '',\n ),\n )\n\n issues.push(...validateConcurrencyPolicyPatch(policy, ''))\n\n const overridesByModuleId = policy.overridesByModuleId\n if (overridesByModuleId != null) {\n if (!isRecord(overridesByModuleId)) {\n issues.push(`overridesByModuleId: expected record`)\n } else {\n for (const [moduleId, patch] of Object.entries(overridesByModuleId)) {\n const prefix = `overridesByModuleId.${moduleId}.`\n if (patch == null) continue\n if (!isRecord(patch)) {\n issues.push(`${prefix}<value>: expected object`)\n continue\n }\n issues.push(\n ...collectUnknownKeys(\n patch,\n new Set([\n 'concurrencyLimit',\n 'losslessBackpressureCapacity',\n 'allowUnbounded',\n 'pressureWarningThreshold',\n 'warningCooldownMs',\n ]),\n prefix,\n ),\n )\n issues.push(...validateConcurrencyPolicyPatch(patch, prefix))\n }\n }\n }\n\n warnDevOnly(label, issues)\n}\n\nexport const warnInvalidConcurrencyPolicyPatchDevOnly = (value: unknown, label: string): void => {\n if (!isDevEnv()) return\n if (value == null) return\n if (!isRecord(value)) {\n warnDevOnly(label, ['expected object'])\n return\n }\n\n const issues: string[] = []\n issues.push(\n ...collectUnknownKeys(\n value,\n new Set([\n 'concurrencyLimit',\n 'losslessBackpressureCapacity',\n 'allowUnbounded',\n 'pressureWarningThreshold',\n 'warningCooldownMs',\n ]),\n '',\n ),\n )\n issues.push(...validateConcurrencyPolicyPatch(value, ''))\n\n warnDevOnly(label, issues)\n}\n\nexport const warnInvalidSchedulingPolicySurfaceDevOnly = (value: unknown, label: string): void =>\n warnInvalidConcurrencyPolicyDevOnly(value, label)\n\nexport const warnInvalidSchedulingPolicySurfacePatchDevOnly = (value: unknown, label: string): void =>\n warnInvalidConcurrencyPolicyPatchDevOnly(value, label)\n\nconst validateStateTransactionTraitOverrides = (\n obj: Record<string, unknown>,\n prefix: string,\n): ReadonlyArray<string> => {\n const issues: string[] = []\n\n if ('traitConvergeMode' in obj && obj.traitConvergeMode != null) {\n if (!isConvergeMode(obj.traitConvergeMode)) {\n issues.push(`${prefix}traitConvergeMode: expected \"auto\" | \"full\" | \"dirty\"`)\n }\n }\n if ('traitConvergeBudgetMs' in obj && obj.traitConvergeBudgetMs != null) {\n if (normalizePositiveNumber(obj.traitConvergeBudgetMs) == null) {\n issues.push(`${prefix}traitConvergeBudgetMs: expected positive number`)\n }\n }\n if ('traitConvergeDecisionBudgetMs' in obj && obj.traitConvergeDecisionBudgetMs != null) {\n if (normalizePositiveNumber(obj.traitConvergeDecisionBudgetMs) == null) {\n issues.push(`${prefix}traitConvergeDecisionBudgetMs: expected positive number`)\n }\n }\n if ('traitConvergeTimeSlicing' in obj && obj.traitConvergeTimeSlicing != null) {\n const timeSlicing = obj.traitConvergeTimeSlicing\n if (!isRecord(timeSlicing)) {\n issues.push(`${prefix}traitConvergeTimeSlicing: expected object`)\n } else {\n const tsPrefix = `${prefix}traitConvergeTimeSlicing.`\n issues.push(...collectUnknownKeys(timeSlicing, new Set(['enabled', 'debounceMs', 'maxLagMs']), tsPrefix))\n\n if ('enabled' in timeSlicing && timeSlicing.enabled != null) {\n if (typeof timeSlicing.enabled !== 'boolean') {\n issues.push(`${tsPrefix}enabled: expected boolean`)\n }\n }\n if ('debounceMs' in timeSlicing && timeSlicing.debounceMs != null) {\n if (normalizePositiveNumber(timeSlicing.debounceMs) == null) {\n issues.push(`${tsPrefix}debounceMs: expected positive number`)\n }\n }\n if ('maxLagMs' in timeSlicing && timeSlicing.maxLagMs != null) {\n if (normalizePositiveNumber(timeSlicing.maxLagMs) == null) {\n issues.push(`${tsPrefix}maxLagMs: expected positive number`)\n }\n }\n }\n }\n\n return issues\n}\n\nconst validateTxnLanesPatch = (obj: Record<string, unknown>, prefix: string): ReadonlyArray<string> => {\n const issues: string[] = []\n\n if ('enabled' in obj && obj.enabled != null) {\n if (normalizeBoolean(obj.enabled) == null) {\n issues.push(`${prefix}enabled: expected boolean`)\n }\n }\n\n if ('overrideMode' in obj && obj.overrideMode != null) {\n const raw = obj.overrideMode\n if (typeof raw !== 'string' || (raw !== 'forced_off' && raw !== 'forced_sync')) {\n issues.push(`${prefix}overrideMode: expected \"forced_off\" | \"forced_sync\"`)\n }\n }\n\n if ('budgetMs' in obj && obj.budgetMs != null) {\n if (normalizeNonNegativeNumber(obj.budgetMs) == null) {\n issues.push(`${prefix}budgetMs: expected non-negative number`)\n }\n }\n\n if ('debounceMs' in obj && obj.debounceMs != null) {\n if (normalizeNonNegativeNumber(obj.debounceMs) == null) {\n issues.push(`${prefix}debounceMs: expected non-negative number`)\n }\n }\n\n if ('maxLagMs' in obj && obj.maxLagMs != null) {\n if (normalizeNonNegativeNumber(obj.maxLagMs) == null) {\n issues.push(`${prefix}maxLagMs: expected non-negative number`)\n }\n }\n\n if ('allowCoalesce' in obj && obj.allowCoalesce != null) {\n if (normalizeBoolean(obj.allowCoalesce) == null) {\n issues.push(`${prefix}allowCoalesce: expected boolean`)\n }\n }\n\n if ('yieldStrategy' in obj && obj.yieldStrategy != null) {\n const raw = obj.yieldStrategy\n if (typeof raw !== 'string' || (raw !== 'baseline' && raw !== 'inputPending')) {\n issues.push(`${prefix}yieldStrategy: expected \"baseline\" | \"inputPending\"`)\n }\n }\n\n return issues\n}\n\nexport const warnInvalidStateTransactionTraitConvergeOverridesDevOnly = (value: unknown, label: string): void => {\n if (!isDevEnv()) return\n if (value == null) return\n if (!isRecord(value)) {\n warnDevOnly(label, ['expected object'])\n return\n }\n\n const issues: string[] = []\n issues.push(\n ...collectUnknownKeys(\n value,\n new Set([\n 'traitConvergeBudgetMs',\n 'traitConvergeDecisionBudgetMs',\n 'traitConvergeMode',\n 'traitConvergeTimeSlicing',\n ]),\n '',\n ),\n )\n issues.push(...validateStateTransactionTraitOverrides(value, ''))\n\n warnDevOnly(label, issues)\n}\n\nexport const warnInvalidStateTransactionRuntimeConfigDevOnly = (value: unknown, label: string): void => {\n if (!isDevEnv()) return\n if (value == null) return\n if (!isRecord(value)) {\n warnDevOnly(label, ['expected object'])\n return\n }\n\n const issues: string[] = []\n issues.push(\n ...collectUnknownKeys(\n value,\n new Set([\n 'instrumentation',\n 'traitConvergeBudgetMs',\n 'traitConvergeDecisionBudgetMs',\n 'traitConvergeMode',\n 'traitConvergeTimeSlicing',\n 'traitConvergeOverridesByModuleId',\n 'txnLanes',\n 'txnLanesOverridesByModuleId',\n ]),\n '',\n ),\n )\n\n if ('instrumentation' in value && value.instrumentation != null) {\n if (!isInstrumentation(value.instrumentation)) {\n issues.push(`instrumentation: expected \"full\" | \"light\"`)\n }\n }\n\n issues.push(...validateStateTransactionTraitOverrides(value, ''))\n\n const txnLanes = (value as any).txnLanes\n if (txnLanes != null) {\n if (!isRecord(txnLanes)) {\n issues.push(`txnLanes: expected object`)\n } else {\n const prefix = 'txnLanes.'\n issues.push(\n ...collectUnknownKeys(\n txnLanes,\n new Set(['enabled', 'overrideMode', 'budgetMs', 'debounceMs', 'maxLagMs', 'allowCoalesce', 'yieldStrategy']),\n prefix,\n ),\n )\n issues.push(...validateTxnLanesPatch(txnLanes, prefix))\n }\n }\n\n const overridesByModuleId = value.traitConvergeOverridesByModuleId\n if (overridesByModuleId != null) {\n if (!isRecord(overridesByModuleId)) {\n issues.push(`traitConvergeOverridesByModuleId: expected record`)\n } else {\n for (const [moduleId, patch] of Object.entries(overridesByModuleId)) {\n const prefix = `traitConvergeOverridesByModuleId.${moduleId}.`\n if (patch == null) continue\n if (!isRecord(patch)) {\n issues.push(`${prefix}<value>: expected object`)\n continue\n }\n issues.push(\n ...collectUnknownKeys(\n patch,\n new Set([\n 'traitConvergeMode',\n 'traitConvergeBudgetMs',\n 'traitConvergeDecisionBudgetMs',\n 'traitConvergeTimeSlicing',\n ]),\n prefix,\n ),\n )\n issues.push(...validateStateTransactionTraitOverrides(patch, prefix))\n }\n }\n }\n\n const lanesOverridesByModuleId = (value as any).txnLanesOverridesByModuleId\n if (lanesOverridesByModuleId != null) {\n if (!isRecord(lanesOverridesByModuleId)) {\n issues.push(`txnLanesOverridesByModuleId: expected record`)\n } else {\n for (const [moduleId, patch] of Object.entries(lanesOverridesByModuleId)) {\n const prefix = `txnLanesOverridesByModuleId.${moduleId}.`\n if (patch == null) continue\n if (!isRecord(patch)) {\n issues.push(`${prefix}<value>: expected object`)\n continue\n }\n issues.push(\n ...collectUnknownKeys(\n patch,\n new Set([\n 'enabled',\n 'overrideMode',\n 'budgetMs',\n 'debounceMs',\n 'maxLagMs',\n 'allowCoalesce',\n 'yieldStrategy',\n ]),\n prefix,\n ),\n )\n issues.push(...validateTxnLanesPatch(patch, prefix))\n }\n }\n }\n\n warnDevOnly(label, issues)\n}\n\nexport const warnInvalidStateTransactionOverridesDevOnly = (value: unknown, label: string): void => {\n if (!isDevEnv()) return\n if (value == null) return\n if (!isRecord(value)) {\n warnDevOnly(label, ['expected object'])\n return\n }\n\n const issues: string[] = []\n issues.push(\n ...collectUnknownKeys(\n value,\n new Set([\n 'traitConvergeBudgetMs',\n 'traitConvergeDecisionBudgetMs',\n 'traitConvergeMode',\n 'traitConvergeTimeSlicing',\n 'traitConvergeOverridesByModuleId',\n 'txnLanes',\n 'txnLanesOverridesByModuleId',\n ]),\n '',\n ),\n )\n\n issues.push(...validateStateTransactionTraitOverrides(value, ''))\n\n const txnLanes = (value as any).txnLanes\n if (txnLanes != null) {\n if (!isRecord(txnLanes)) {\n issues.push(`txnLanes: expected object`)\n } else {\n const prefix = 'txnLanes.'\n issues.push(\n ...collectUnknownKeys(\n txnLanes,\n new Set(['enabled', 'overrideMode', 'budgetMs', 'debounceMs', 'maxLagMs', 'allowCoalesce']),\n prefix,\n ),\n )\n issues.push(...validateTxnLanesPatch(txnLanes, prefix))\n }\n }\n\n const overridesByModuleId = value.traitConvergeOverridesByModuleId\n if (overridesByModuleId != null) {\n if (!isRecord(overridesByModuleId)) {\n issues.push(`traitConvergeOverridesByModuleId: expected record`)\n } else {\n for (const [moduleId, patch] of Object.entries(overridesByModuleId)) {\n const prefix = `traitConvergeOverridesByModuleId.${moduleId}.`\n if (patch == null) continue\n if (!isRecord(patch)) {\n issues.push(`${prefix}<value>: expected object`)\n continue\n }\n issues.push(\n ...collectUnknownKeys(\n patch,\n new Set([\n 'traitConvergeMode',\n 'traitConvergeBudgetMs',\n 'traitConvergeDecisionBudgetMs',\n 'traitConvergeTimeSlicing',\n ]),\n prefix,\n ),\n )\n issues.push(...validateStateTransactionTraitOverrides(patch, prefix))\n }\n }\n }\n\n const lanesOverridesByModuleId = (value as any).txnLanesOverridesByModuleId\n if (lanesOverridesByModuleId != null) {\n if (!isRecord(lanesOverridesByModuleId)) {\n issues.push(`txnLanesOverridesByModuleId: expected record`)\n } else {\n for (const [moduleId, patch] of Object.entries(lanesOverridesByModuleId)) {\n const prefix = `txnLanesOverridesByModuleId.${moduleId}.`\n if (patch == null) continue\n if (!isRecord(patch)) {\n issues.push(`${prefix}<value>: expected object`)\n continue\n }\n issues.push(\n ...collectUnknownKeys(\n patch,\n new Set(['enabled', 'overrideMode', 'budgetMs', 'debounceMs', 'maxLagMs', 'allowCoalesce']),\n prefix,\n ),\n )\n issues.push(...validateTxnLanesPatch(patch, prefix))\n }\n }\n }\n\n warnDevOnly(label, issues)\n}\n","import { Cause, Effect, Exit, Option, Scope } from 'effect'\nimport type { ManagedRuntime } from 'effect'\nimport type { AnyModuleShape, ModuleImpl } from '../module.js'\nimport { make as makeBoundApi } from '../BoundApiRuntime.js'\nimport * as TaskRunner from '../TaskRunner.js'\nimport { closeProgramScope } from './ProgramRunner.closeScope.js'\nimport { BootError, MainError, type ProgramIdentity } from './ProgramRunner.errors.js'\nimport { reportErrorIfEnabled, setExitCodeIfEnabled, setFailureExitCodeIfEnabled } from './ProgramRunner.exitCode.js'\nimport { installGracefulShutdownHandlers } from './ProgramRunner.signals.js'\nimport type { ProgramRunContext } from './ProgramRunner.context.js'\nimport { makeProgramRunnerKernel } from './ProgramRunner.kernel.js'\nimport { resolveProgramRunnerOptions } from './ProgramRunner.options.js'\n\nexport type RuntimeFactory = (\n rootImpl: ModuleImpl<any, AnyModuleShape, any>,\n options?: unknown,\n) => ManagedRuntime.ManagedRuntime<any, never>\n\nexport const openProgram = <Sh extends AnyModuleShape>(\n makeRuntime: RuntimeFactory,\n rootImpl: ModuleImpl<any, Sh, any>,\n options?: unknown,\n): Effect.Effect<ProgramRunContext<Sh>, unknown, Scope.Scope> =>\n Effect.gen(function* () {\n const inTxn = yield* Effect.service(TaskRunner.inSyncTransactionFiber).pipe(Effect.orDie)\n if (inTxn) {\n return yield* Effect.die(new Error('[Logix] Runtime.openProgram/runProgram is not allowed inside a synchronous StateTransaction body'))\n }\n\n const runnerOptions = resolveProgramRunnerOptions(options)\n const kernel = yield* makeProgramRunnerKernel(makeRuntime, rootImpl, options)\n\n // Bind ctx.scope disposal to the outer scope (openProgram is scope-bound).\n yield* Effect.addFinalizer(() =>\n kernel.close({\n timeoutMs: runnerOptions.closeScopeTimeout,\n onError: (options as any)?.onError,\n }),\n )\n\n // Node-only: signals trigger graceful shutdown (closing ctx.scope).\n yield* kernel.installSignals(runnerOptions.handleSignals)\n\n // boot: touch the program module tag to ensure instantiation and logics/processes start.\n const moduleRuntime = yield* Effect.tryPromise({\n try: () => kernel.runtime.runPromise(Effect.service(rootImpl.module as any).pipe(Effect.orDie)),\n catch: (error) => new BootError(kernel.identity, error),\n })\n\n kernel.setInstanceId((moduleRuntime as any).instanceId)\n return kernel.toContext(moduleRuntime)\n })\n\nexport const runProgram = async <Sh extends AnyModuleShape, Args, A, E, R>(\n makeRuntime: RuntimeFactory,\n rootImpl: ModuleImpl<any, Sh, any>,\n main: (ctx: ProgramRunContext<Sh>, args: Args) => Effect.Effect<A, E, R>,\n options?: unknown,\n): Promise<A> => {\n if (TaskRunner.isInSyncTransactionShadow()) {\n throw new Error('[Logix] Runtime.openProgram/runProgram is not allowed inside a synchronous StateTransaction body')\n }\n\n const runnerOptions = resolveProgramRunnerOptions<Args>(options)\n const identity: ProgramIdentity = {\n moduleId: String(rootImpl.module.id),\n instanceId: 'unknown',\n }\n\n const scope = Effect.runSync(Scope.make())\n const runtime = makeRuntime(rootImpl as unknown as ModuleImpl<any, AnyModuleShape, any>, options)\n\n let ctx:\n | (ProgramRunContext<Sh> & {\n readonly module: { readonly instanceId: string }\n })\n | undefined\n let mainError: unknown | undefined\n let closeError: unknown | undefined\n let result:\n | { readonly _tag: 'success'; readonly value: A }\n | { readonly _tag: 'failure'; readonly error: unknown }\n | undefined\n\n try {\n // Node-only: signals trigger graceful shutdown (closing ctx.scope).\n if (runnerOptions.handleSignals) {\n Effect.runSync(\n installGracefulShutdownHandlers({\n scope,\n enabled: true,\n onSignal: () =>\n Effect.gen(function* () {\n yield* Effect.exit(\n closeProgramScope({\n scope,\n timeoutMs: runnerOptions.closeScopeTimeout,\n identity,\n onError: (options as any)?.onError,\n }),\n )\n\n const disposeResult = yield* Effect.promise<\n { readonly _tag: 'Success' } | { readonly _tag: 'Failure' }\n >(() =>\n new Promise((resolve) => {\n void runtime.dispose().then(\n () => resolve({ _tag: 'Success' as const }),\n () => resolve({ _tag: 'Failure' as const }),\n )\n }),\n )\n\n if (disposeResult._tag === 'Failure') {\n return yield* Effect.void\n }\n }).pipe(Effect.catchCause(() => Effect.void)),\n }),\n )\n }\n\n // boot: touch the program module tag to ensure instantiation and logics/processes start.\n let moduleRuntime: any\n try {\n moduleRuntime = await runtime.runPromise(Effect.service(rootImpl.module as any).pipe(Effect.orDie))\n } catch (error) {\n setFailureExitCodeIfEnabled(runnerOptions.exitCode)\n reportErrorIfEnabled(runnerOptions.exitCode && runnerOptions.reportError, error)\n result = {\n _tag: 'failure',\n error: new BootError(identity, error),\n }\n }\n\n if (result?._tag !== 'failure') {\n identity.instanceId = String(moduleRuntime.instanceId ?? 'unknown')\n\n ctx = {\n scope,\n runtime,\n module: moduleRuntime,\n $: makeBoundApi(rootImpl.module.shape as any, moduleRuntime as any) as any,\n } satisfies ProgramRunContext<Sh> as any\n }\n\n if (ctx) {\n try {\n const value = (await ctx.runtime.runPromise(main(ctx, runnerOptions.args as Args) as any)) as A\n setExitCodeIfEnabled(runnerOptions.exitCode, value)\n result = { _tag: 'success', value }\n } catch (error) {\n mainError = error\n setFailureExitCodeIfEnabled(runnerOptions.exitCode)\n reportErrorIfEnabled(runnerOptions.exitCode && runnerOptions.reportError, error)\n result = { _tag: 'failure', error: new MainError(identity, error) }\n }\n }\n } finally {\n const exit = await Effect.runPromiseExit(\n Effect.gen(function* () {\n const closeExit = yield* Effect.exit(\n closeProgramScope({\n scope,\n timeoutMs: runnerOptions.closeScopeTimeout,\n identity,\n onError: (options as any)?.onError,\n }),\n )\n\n if (Exit.isSuccess(closeExit)) {\n yield* Effect.promise(() => runtime.dispose()).pipe(Effect.asVoid)\n return\n }\n\n void runtime.dispose()\n return yield* Effect.failCause(closeExit.cause)\n }),\n )\n\n if (exit._tag === 'Failure') {\n const failureOpt = Cause.findErrorOption(exit.cause)\n if (Option.isSome(failureOpt)) {\n const error: any = failureOpt.value\n if (mainError !== undefined && error && typeof error === 'object') {\n error.mainError = mainError\n }\n closeError = error\n } else {\n const defect = exit.cause.reasons.filter(Cause.isDieReason).map((reason) => reason.defect)[0]\n if (defect instanceof Error) {\n const error: any = defect\n if (mainError !== undefined && error && typeof error === 'object') {\n error.mainError = mainError\n }\n closeError = error\n } else {\n closeError = new Error(String(exit.cause))\n }\n }\n }\n }\n\n if (closeError !== undefined) {\n setFailureExitCodeIfEnabled(runnerOptions.exitCode)\n reportErrorIfEnabled(runnerOptions.exitCode && runnerOptions.reportError, closeError)\n throw closeError\n }\n\n if (!result) {\n setFailureExitCodeIfEnabled(runnerOptions.exitCode)\n throw new Error('[Logix] ProgramRunner.runProgram: missing result')\n }\n\n if (result._tag === 'failure') {\n throw result.error\n }\n\n return result.value\n}\n","const isRecord = (value: unknown): value is Record<string, unknown> => typeof value === 'object' && value !== null\n\nconst getProcess = (): any => (globalThis as any).process\n\nexport const setExitCodeIfEnabled = (enabled: boolean, value: unknown): void => {\n if (!enabled) return\n\n const proc = getProcess()\n if (!isRecord(proc)) return\n\n const next = typeof value === 'number' && Number.isInteger(value) ? value : 0\n\n proc.exitCode = next\n}\n\nexport const setFailureExitCodeIfEnabled = (enabled: boolean): void => {\n if (!enabled) return\n\n const proc = getProcess()\n if (!isRecord(proc)) return\n\n proc.exitCode = 1\n}\n\nexport const reportErrorIfEnabled = (enabled: boolean, error: unknown): void => {\n if (!enabled) return\n\n // eslint-disable-next-line no-console\n console.error(error)\n}\n","export interface ProgramRunnerOptions<Args = unknown> {\n readonly closeScopeTimeout: number\n readonly handleSignals: boolean\n readonly args: Args | undefined\n readonly exitCode: boolean\n readonly reportError: boolean\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => typeof value === 'object' && value !== null\n\nexport const resolveProgramRunnerOptions = <Args = unknown>(options: unknown): ProgramRunnerOptions<Args> => {\n const record = isRecord(options) ? options : undefined\n\n const closeScopeTimeout = typeof record?.closeScopeTimeout === 'number' ? record.closeScopeTimeout : 1000\n\n const handleSignals = typeof record?.handleSignals === 'boolean' ? record.handleSignals : true\n\n const exitCode = typeof record?.exitCode === 'boolean' ? record.exitCode : false\n\n const reportError = typeof record?.reportError === 'boolean' ? record.reportError : true\n\n const args = (record?.args as Args | undefined) ?? undefined\n\n return {\n closeScopeTimeout,\n handleSignals,\n args,\n exitCode,\n reportError,\n }\n}\n"],"mappings":"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","names":["make","openProgram","runProgram","Effect","Option","isRecord","isRecord","make","layer","openProgram","runProgram","Effect","Option"]}