@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 +0,0 @@
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 } 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 ConcurrencyPolicyTag,\n ConcurrencyPolicyOverridesTag,\n type ReadQueryStrictGateRuntimeConfig,\n StateTransactionConfigTag,\n StateTransactionOverridesTag,\n type ConcurrencyPolicy,\n type ConcurrencyPolicyOverrides,\n type ConcurrencyPolicyPatch,\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 * as ScopeRegistry from './ScopeRegistry.js'\nimport {\n warnInvalidConcurrencyPolicyDevOnly,\n warnInvalidConcurrencyPolicyPatchDevOnly,\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\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\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 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 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 concurrency control plane.\n *\n * Converges unbounded concurrency into bounded (default 16), with module/provider overrides.\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 * 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 /** 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\n warnInvalidConcurrencyPolicyDevOnly(options?.concurrencyPolicy, 'Runtime.make options.concurrencyPolicy')\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\n if (options?.devtools) {\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\n ? (Debug.devtoolsHubLayer(baseLayer, {\n bufferSize: devtoolsOptions?.bufferSize,\n diagnosticsLevel: devtoolsOptions?.diagnosticsLevel,\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 stateTransaction: options?.stateTransaction,\n concurrencyPolicy: options?.concurrencyPolicy,\n readQueryStrictGate,\n }\n\n const app = AppRuntimeImpl.makeApp(appConfig)\n return app.makeRuntime() as ManagedRuntime.ManagedRuntime<any, never>\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 ConcurrencyPolicyOverrides layer.\n *\n * Use it to apply local overrides on top of the `runtime_default` baseline.\n */\nexport const concurrencyPolicyOverridesLayer = (\n overrides: ConcurrencyPolicyOverrides,\n): Layer.Layer<any, never, never> => {\n warnInvalidConcurrencyPolicyDevOnly(overrides, 'Runtime.concurrencyPolicyOverridesLayer')\n return Layer.succeed(ConcurrencyPolicyOverridesTag, overrides) as Layer.Layer<any, never, never>\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): void => {\n warnInvalidStateTransactionTraitConvergeOverridesDevOnly(overrides, `Runtime.setTraitConvergeOverride(${moduleId})`)\n\n runtime.runSync(\n Effect.gen(function* () {\n const runtimeConfigOpt = yield* Effect.serviceOption(StateTransactionConfigTag)\n\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 }),\n )\n}\n\n/**\n * Hot-switch ConcurrencyPolicy patch for a moduleId.\n *\n * This mutates the `runtime_module` patch map only; provider overrides still take precedence.\n */\nexport const setConcurrencyPolicyOverride = (\n runtime: ManagedRuntime.ManagedRuntime<any, never>,\n moduleId: string,\n patch: ConcurrencyPolicyPatch | undefined,\n): void => {\n warnInvalidConcurrencyPolicyPatchDevOnly(patch, `Runtime.setConcurrencyPolicyOverride(${moduleId})`)\n\n runtime.runSync(\n Effect.gen(function* () {\n const runtimeConfigOpt = yield* Effect.serviceOption(ConcurrencyPolicyTag)\n\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 }),\n )\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 { Schema } from 'effect'\nimport { isDevEnv } from './env.js'\nimport {\n normalizeBoolean,\n normalizeNonNegativeNumber,\n normalizePositiveInt,\n normalizePositiveNumber,\n} from './normalize.js'\n\nconst PositiveIntSchema = Schema.Int.pipe(Schema.positive())\nconst PositiveNumberSchema = Schema.Number.pipe(Schema.positive())\nconst ConvergeModeSchema = Schema.Union(Schema.Literal('auto'), Schema.Literal('full'), Schema.Literal('dirty'))\nconst InstrumentationSchema = Schema.Union(Schema.Literal('full'), Schema.Literal('light'))\nconst ConcurrencyLimitSchema = Schema.Union(Schema.Literal('unbounded'), PositiveIntSchema)\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 (!Schema.is(ConcurrencyLimitSchema)(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\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 (!Schema.is(ConvergeModeSchema)(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 (!Schema.is(InstrumentationSchema)(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, FiberRef, 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* FiberRef.get(TaskRunner.inSyncTransactionFiber)\n if (inTxn) {\n return yield* Effect.dieMessage(\n '[Logix] Runtime.openProgram/runProgram is not allowed inside a synchronous StateTransaction body',\n )\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(rootImpl.module as any),\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.isInSyncTransaction()) {\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 // Runtime resource disposal: bind runtime.dispose to ctx.scope.\n Effect.runSync(Scope.addFinalizer(scope, Effect.promise(() => runtime.dispose()).pipe(Effect.asVoid)))\n\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 }),\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(rootImpl.module as any)\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 closeProgramScope({\n scope,\n timeoutMs: runnerOptions.closeScopeTimeout,\n identity,\n onError: (options as any)?.onError,\n }),\n )\n\n if (exit._tag === 'Failure') {\n const failureOpt = Cause.failureOption(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 defectOpt = Cause.dieOption(exit.cause)\n if (Option.isSome(defectOpt) && defectOpt.value instanceof Error) {\n const error: any = defectOpt.value\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"]}
@@ -1,151 +0,0 @@
1
- import {
2
- isReadQuery
3
- } from "./chunk-CW6T36TN.js";
4
- import {
5
- record
6
- } from "./chunk-DMBALCE2.js";
7
- import {
8
- RunSessionTag,
9
- make,
10
- run
11
- } from "./chunk-OFADUJWJ.js";
12
- import {
13
- EffectOpMiddlewareTag
14
- } from "./chunk-JWOYLO27.js";
15
-
16
- // src/internal/runtime/core/FlowRuntime.ts
17
- import { Effect, Stream, Ref, Option } from "effect";
18
- var getMiddlewareStack = () => Effect.serviceOption(EffectOpMiddlewareTag).pipe(
19
- Effect.map((maybe) => Option.isSome(maybe) ? maybe.value.stack : [])
20
- );
21
- var getRuntimeScope = (runtime) => {
22
- if (!runtime) return {};
23
- if (typeof runtime !== "object" && typeof runtime !== "function") return {};
24
- const scope = runtime;
25
- return {
26
- moduleId: typeof scope.moduleId === "string" ? scope.moduleId : void 0,
27
- instanceId: typeof scope.instanceId === "string" ? scope.instanceId : void 0
28
- };
29
- };
30
- var resolveEffect = (eff, payload) => typeof eff === "function" ? eff(payload) : eff;
31
- var make2 = (runtime, runtimeInternals) => {
32
- const scope = getRuntimeScope(runtime);
33
- const resolveConcurrencyLimit = () => runtimeInternals ? runtimeInternals.concurrency.resolveConcurrencyPolicy().pipe(Effect.map((p) => p.concurrencyLimit)) : Effect.succeed(16);
34
- const runAsFlowOp = (name, payload, eff, options) => Effect.gen(function* () {
35
- const stack = yield* getMiddlewareStack();
36
- const meta = {
37
- ...options?.meta ?? {},
38
- policy: options?.policy,
39
- tags: options?.tags,
40
- trace: options?.trace,
41
- moduleId: scope.moduleId,
42
- instanceId: scope.instanceId
43
- };
44
- if (!(typeof meta.opSeq === "number" && Number.isFinite(meta.opSeq))) {
45
- const sessionOpt = yield* Effect.serviceOption(RunSessionTag);
46
- if (Option.isSome(sessionOpt)) {
47
- const key = meta.instanceId ?? "global";
48
- meta.opSeq = sessionOpt.value.local.nextSeq("opSeq", key);
49
- }
50
- }
51
- const op = make({
52
- kind: "flow",
53
- name,
54
- payload,
55
- effect: eff,
56
- meta
57
- });
58
- return yield* run(op, stack);
59
- });
60
- const runEffect = (eff) => (payload) => resolveEffect(eff, payload);
61
- const runStreamSequential = (eff, options) => (stream) => Stream.runForEach(
62
- stream,
63
- (payload) => runAsFlowOp("flow.run", payload, runEffect(eff)(payload), options)
64
- );
65
- const runStreamParallel = (eff, options) => (stream) => Effect.gen(function* () {
66
- const concurrency = yield* resolveConcurrencyLimit();
67
- return yield* Stream.runDrain(
68
- stream.pipe(
69
- Stream.mapEffect(
70
- (payload) => runAsFlowOp("flow.runParallel", payload, runEffect(eff)(payload), options),
71
- { concurrency }
72
- )
73
- )
74
- ).pipe(
75
- Effect.catchAllCause(
76
- (cause) => record({
77
- type: "diagnostic",
78
- moduleId: scope.moduleId,
79
- instanceId: scope.instanceId,
80
- code: "flow::unhandled_failure",
81
- severity: "error",
82
- message: "Flow watcher (runParallel) failed with an unhandled error.",
83
- hint: "Handle errors explicitly inside the watcher (catch/catchAll) or write back via TaskRunner failure; avoid silent failures.",
84
- kind: "flow_unhandled_failure",
85
- trigger: {
86
- kind: "flow",
87
- name: "runParallel"
88
- }
89
- }).pipe(Effect.zipRight(Effect.failCause(cause)))
90
- )
91
- );
92
- });
93
- return {
94
- fromAction: (predicate) => runtime.actions$.pipe(Stream.filter(predicate)),
95
- fromState: (selectorOrQuery) => runtime.changes(isReadQuery(selectorOrQuery) ? selectorOrQuery.select : selectorOrQuery),
96
- debounce: (ms) => (stream) => Stream.debounce(stream, ms),
97
- throttle: (ms) => (stream) => Stream.throttle(stream, {
98
- cost: () => 1,
99
- units: 1,
100
- duration: ms,
101
- strategy: "enforce"
102
- }),
103
- filter: (predicate) => (stream) => Stream.filter(stream, predicate),
104
- run: (eff, options) => (stream) => runStreamSequential(eff, options)(stream),
105
- runParallel: (eff, options) => (stream) => runStreamParallel(eff, options)(stream),
106
- runLatest: (eff, options) => (stream) => Stream.runDrain(
107
- Stream.map(
108
- stream,
109
- (payload) => runAsFlowOp(
110
- "flow.runLatest",
111
- payload,
112
- runEffect(eff)(payload),
113
- options
114
- )
115
- ).pipe(
116
- Stream.flatMap((effect) => Stream.fromEffect(effect), {
117
- switch: true
118
- })
119
- )
120
- ),
121
- runExhaust: (eff, options) => (stream) => Effect.gen(function* () {
122
- const concurrency = yield* resolveConcurrencyLimit();
123
- const busyRef = yield* Ref.make(false);
124
- const mapper = (payload) => Effect.gen(function* () {
125
- const acquired = yield* Ref.modify(
126
- busyRef,
127
- (busy) => busy ? [false, busy] : [true, true]
128
- );
129
- if (!acquired) {
130
- return;
131
- }
132
- try {
133
- yield* runAsFlowOp(
134
- "flow.runExhaust",
135
- payload,
136
- runEffect(eff)(payload),
137
- options
138
- );
139
- } finally {
140
- yield* Ref.set(busyRef, false);
141
- }
142
- });
143
- return yield* Stream.runDrain(stream.pipe(Stream.mapEffect(mapper, { concurrency })));
144
- })
145
- };
146
- };
147
-
148
- export {
149
- make2 as make
150
- };
151
- //# sourceMappingURL=chunk-NQZ2OSGR.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/internal/runtime/core/FlowRuntime.ts"],"sourcesContent":["import { Effect, Stream, Ref, Option } from 'effect'\nimport type { AnyModuleShape, ModuleRuntime, StateOf, ActionOf, ModuleShape } from './module.js'\nimport type * as Logic from './LogicMiddleware.js'\nimport * as EffectOp from '../../effect-op.js'\nimport * as EffectOpCore from './EffectOpCore.js'\nimport { RunSessionTag } from '../../observability/runSession.js'\nimport type { RuntimeInternals } from './RuntimeInternals.js'\nimport * as Debug from './DebugSink.js'\nimport * as ReadQuery from './ReadQuery.js'\n\nconst getMiddlewareStack = (): Effect.Effect<EffectOp.MiddlewareStack, never, any> =>\n Effect.serviceOption(EffectOpCore.EffectOpMiddlewareTag).pipe(\n Effect.map((maybe) => (Option.isSome(maybe) ? maybe.value.stack : [])),\n )\n\nconst getRuntimeScope = (runtime: unknown): { readonly moduleId?: string; readonly instanceId?: string } => {\n if (!runtime) return {}\n if (typeof runtime !== 'object' && typeof runtime !== 'function') return {}\n const scope = runtime as { readonly moduleId?: unknown; readonly instanceId?: unknown }\n return {\n moduleId: typeof scope.moduleId === 'string' ? scope.moduleId : undefined,\n instanceId: typeof scope.instanceId === 'string' ? scope.instanceId : undefined,\n }\n}\n\nexport interface Api<Sh extends ModuleShape<any, any>, R = never> {\n readonly fromAction: <T extends ActionOf<Sh>>(predicate: (a: ActionOf<Sh>) => a is T) => Stream.Stream<T>\n\n readonly fromState: {\n <V>(selector: (s: StateOf<Sh>) => V): Stream.Stream<V>\n <V>(query: ReadQuery.ReadQuery<StateOf<Sh>, V>): Stream.Stream<V>\n }\n\n readonly debounce: <V>(ms: number) => (stream: Stream.Stream<V>) => Stream.Stream<V>\n\n readonly throttle: <V>(ms: number) => (stream: Stream.Stream<V>) => Stream.Stream<V>\n\n readonly filter: <V>(predicate: (value: V) => boolean) => (stream: Stream.Stream<V>) => Stream.Stream<V>\n\n readonly run: <V, A = void, E = never, R2 = unknown>(\n eff: Logic.Of<Sh, R & R2, A, E> | ((payload: V) => Logic.Of<Sh, R & R2, A, E>),\n options?: Logic.OperationOptions,\n ) => (stream: Stream.Stream<V>) => Effect.Effect<void, E, Logic.Env<Sh, R & R2>>\n\n readonly runParallel: <V, A = void, E = never, R2 = unknown>(\n eff: Logic.Of<Sh, R & R2, A, E> | ((payload: V) => Logic.Of<Sh, R & R2, A, E>),\n options?: Logic.OperationOptions,\n ) => (stream: Stream.Stream<V>) => Effect.Effect<void, E, Logic.Env<Sh, R & R2>>\n\n readonly runLatest: <V, A = void, E = never, R2 = unknown>(\n eff: Logic.Of<Sh, R & R2, A, E> | ((payload: V) => Logic.Of<Sh, R & R2, A, E>),\n options?: Logic.OperationOptions,\n ) => (stream: Stream.Stream<V>) => Effect.Effect<void, E, Logic.Env<Sh, R & R2>>\n\n readonly runExhaust: <V, A = void, E = never, R2 = unknown>(\n eff: Logic.Of<Sh, R & R2, A, E> | ((payload: V) => Logic.Of<Sh, R & R2, A, E>),\n options?: Logic.OperationOptions,\n ) => (stream: Stream.Stream<V>) => Effect.Effect<void, E, Logic.Env<Sh, R & R2>>\n}\n\nconst resolveEffect = <T, Sh extends AnyModuleShape, R, A, E>(\n eff: Logic.Of<Sh, R, A, E> | ((payload: T) => Logic.Of<Sh, R, A, E>),\n payload: T,\n): Logic.Of<Sh, R, A, E> => (typeof eff === 'function' ? (eff as (p: T) => Logic.Of<Sh, R, A, E>)(payload) : eff)\n\nexport const make = <Sh extends AnyModuleShape, R = never>(\n runtime: ModuleRuntime<StateOf<Sh>, ActionOf<Sh>>,\n runtimeInternals?: RuntimeInternals,\n): Api<Sh, R> => {\n const scope = getRuntimeScope(runtime)\n const resolveConcurrencyLimit = (): Effect.Effect<number | 'unbounded', never, any> =>\n runtimeInternals\n ? runtimeInternals.concurrency.resolveConcurrencyPolicy().pipe(Effect.map((p) => p.concurrencyLimit))\n : Effect.succeed(16)\n\n const runAsFlowOp = <A, E, R2, V>(\n name: string,\n payload: V,\n eff: Effect.Effect<A, E, Logic.Env<Sh, R & R2>>,\n options?: Logic.OperationOptions,\n ): Effect.Effect<A, E, Logic.Env<Sh, R & R2>> =>\n Effect.gen(function* () {\n const stack = yield* getMiddlewareStack()\n const meta: any = {\n ...(options?.meta ?? {}),\n policy: options?.policy,\n tags: options?.tags,\n trace: options?.trace,\n moduleId: scope.moduleId,\n instanceId: scope.instanceId,\n }\n\n if (!(typeof meta.opSeq === 'number' && Number.isFinite(meta.opSeq))) {\n const sessionOpt = yield* Effect.serviceOption(RunSessionTag)\n if (Option.isSome(sessionOpt)) {\n const key = meta.instanceId ?? 'global'\n meta.opSeq = sessionOpt.value.local.nextSeq('opSeq', key)\n }\n }\n\n const op = EffectOp.make<A, E, any>({\n kind: 'flow',\n name,\n payload,\n effect: eff as any,\n meta,\n })\n return yield* EffectOp.run(op, stack)\n }) as any\n\n const runEffect =\n <T, A, E, R2>(eff: Logic.Of<Sh, R & R2, A, E> | ((payload: T) => Logic.Of<Sh, R & R2, A, E>)) =>\n (payload: T) =>\n resolveEffect<T, Sh, R & R2, A, E>(eff, payload)\n\n const runStreamSequential =\n <T, A, E, R2>(\n eff: Logic.Of<Sh, R & R2, A, E> | ((payload: T) => Logic.Of<Sh, R & R2, A, E>),\n options?: Logic.OperationOptions,\n ) =>\n (stream: Stream.Stream<T>): Effect.Effect<void, E, Logic.Env<Sh, R & R2>> =>\n Stream.runForEach(stream, (payload) =>\n runAsFlowOp<A, E, R2, T>('flow.run', payload, runEffect<T, A, E, R2>(eff)(payload), options),\n )\n\n const runStreamParallel =\n <T, A, E, R2>(\n eff: Logic.Of<Sh, R & R2, A, E> | ((payload: T) => Logic.Of<Sh, R & R2, A, E>),\n options?: Logic.OperationOptions,\n ) =>\n (stream: Stream.Stream<T>): Effect.Effect<void, E, Logic.Env<Sh, R & R2>> =>\n Effect.gen(function* () {\n const concurrency = yield* resolveConcurrencyLimit()\n\n return yield* Stream.runDrain(\n stream.pipe(\n Stream.mapEffect(\n (payload) =>\n runAsFlowOp<A, E, R2, T>('flow.runParallel', payload, runEffect<T, A, E, R2>(eff)(payload), options),\n { concurrency },\n ),\n ),\n ).pipe(\n Effect.catchAllCause((cause) =>\n Debug.record({\n type: 'diagnostic',\n moduleId: scope.moduleId,\n instanceId: scope.instanceId,\n code: 'flow::unhandled_failure',\n severity: 'error',\n message: 'Flow watcher (runParallel) failed with an unhandled error.',\n hint: 'Handle errors explicitly inside the watcher (catch/catchAll) or write back via TaskRunner failure; avoid silent failures.',\n kind: 'flow_unhandled_failure',\n trigger: {\n kind: 'flow',\n name: 'runParallel',\n },\n }).pipe(Effect.zipRight(Effect.failCause(cause))),\n ),\n )\n }) as any\n\n return {\n fromAction: <T extends ActionOf<Sh>>(predicate: (a: ActionOf<Sh>) => a is T) =>\n runtime.actions$.pipe(Stream.filter(predicate)),\n\n fromState: <V>(selectorOrQuery: ((s: StateOf<Sh>) => V) | ReadQuery.ReadQuery<StateOf<Sh>, V>) =>\n runtime.changes(ReadQuery.isReadQuery(selectorOrQuery) ? selectorOrQuery.select : selectorOrQuery),\n\n debounce: (ms: number) => (stream) => Stream.debounce(stream, ms),\n\n throttle: (ms: number) => (stream) =>\n Stream.throttle(stream, {\n cost: () => 1,\n units: 1,\n duration: ms,\n strategy: 'enforce',\n }),\n\n filter: (predicate: (value: any) => boolean) => (stream) => Stream.filter(stream, predicate),\n\n run: (eff, options) => (stream) => runStreamSequential<any, any, any, any>(eff, options)(stream),\n\n runParallel: (eff, options) => (stream) => runStreamParallel<any, any, any, any>(eff, options)(stream),\n\n runLatest: (eff, options) => (stream) =>\n Stream.runDrain(\n Stream.map(stream, (payload) =>\n runAsFlowOp<any, any, any, any>(\n 'flow.runLatest',\n payload,\n runEffect<any, any, any, any>(eff)(payload),\n options,\n ),\n ).pipe(\n Stream.flatMap((effect) => Stream.fromEffect(effect), {\n switch: true,\n }),\n ),\n ),\n\n runExhaust: (eff, options) => (stream) =>\n Effect.gen(function* () {\n const concurrency = yield* resolveConcurrencyLimit()\n const busyRef = yield* Ref.make(false)\n const mapper = (payload: any) =>\n Effect.gen(function* () {\n const acquired = yield* Ref.modify(busyRef, (busy) =>\n busy ? ([false, busy] as const) : ([true, true] as const),\n )\n if (!acquired) {\n return\n }\n try {\n yield* runAsFlowOp<any, any, any, any>(\n 'flow.runExhaust',\n payload,\n runEffect<any, any, any, any>(eff)(payload),\n options,\n )\n } finally {\n yield* Ref.set(busyRef, false)\n }\n })\n\n return yield* Stream.runDrain(stream.pipe(Stream.mapEffect(mapper, { concurrency })))\n }),\n }\n}\n"],"mappings":"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","names":["make"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/internal/resource.ts"],"sourcesContent":["import { Context, Layer } from 'effect'\nimport { isDevEnv } from './runtime/core/env.js'\n\nexport interface ResourceSpec<Key, Out, Err, Env> {\n readonly id: string\n readonly keySchema: import('effect').Schema.Schema<Key, any>\n readonly load: (key: Key) => import('effect').Effect.Effect<Out, Err, Env>\n readonly meta?: {\n readonly cacheGroup?: string\n readonly description?: string\n readonly [k: string]: unknown\n }\n}\n\nexport type AnyResourceSpec = ResourceSpec<any, any, any, any>\n\nexport type ResourceStatus = 'idle' | 'loading' | 'success' | 'error'\n\nexport interface ResourceSnapshot<Data = unknown, Err = unknown> {\n readonly status: ResourceStatus\n readonly keyHash?: string\n readonly data?: Data\n readonly error?: Err\n}\n\nconst stableStringify = (value: unknown): string => {\n const seen = new WeakSet<object>()\n const encode = (input: unknown): unknown => {\n if (input === null) return null\n if (typeof input === 'string' || typeof input === 'number' || typeof input === 'boolean') {\n return input\n }\n if (typeof input === 'bigint') return input.toString()\n if (typeof input === 'undefined') return '__undefined__'\n if (typeof input === 'symbol') return `__symbol__:${String(input)}`\n if (typeof input === 'function') return '__function__'\n\n if (Array.isArray(input)) {\n return input.map((v) => encode(v))\n }\n if (input instanceof Date) {\n return `__date__:${input.toISOString()}`\n }\n if (input instanceof Error) {\n return {\n _tag: 'Error',\n name: input.name,\n message: input.message,\n }\n }\n if (input && typeof input === 'object') {\n const obj = input as object\n if (seen.has(obj)) return '__cycle__'\n seen.add(obj)\n\n const record = input as Record<string, unknown>\n const keys = Object.keys(record).sort()\n const out: Record<string, unknown> = {}\n for (const k of keys) {\n out[k] = encode(record[k])\n }\n return out\n }\n return String(input)\n }\n\n try {\n return JSON.stringify(encode(value))\n } catch {\n return String(value)\n }\n}\n\nexport const keyHash = (key: unknown): string => stableStringify(key)\n\nexport const Snapshot = {\n idle: <Data = never, Err = never>(): ResourceSnapshot<Data, Err> => ({\n status: 'idle',\n keyHash: undefined,\n data: undefined,\n error: undefined,\n }),\n loading: <Data = never, Err = never>(params: { readonly keyHash: string }): ResourceSnapshot<Data, Err> => ({\n status: 'loading',\n keyHash: params.keyHash,\n data: undefined,\n error: undefined,\n }),\n success: <Data>(params: { readonly keyHash: string; readonly data: Data }): ResourceSnapshot<Data, never> => ({\n status: 'success',\n keyHash: params.keyHash,\n data: params.data,\n error: undefined,\n }),\n error: <Err>(params: { readonly keyHash: string; readonly error: Err }): ResourceSnapshot<never, Err> => ({\n status: 'error',\n keyHash: params.keyHash,\n data: undefined,\n error: params.error,\n }),\n} as const\n\nexport interface ResourceRegistry {\n readonly specs: ReadonlyMap<string, AnyResourceSpec>\n}\n\nexport class ResourceRegistryTag extends Context.Tag('@logixjs/core/ResourceRegistry')<\n ResourceRegistryTag,\n ResourceRegistry\n>() {}\n\nexport const internal = {\n ResourceRegistryTag,\n}\n\nexport type Spec<Key, Out, Err, Env> = ResourceSpec<Key, Out, Err, Env>\n\nexport const make = <Key, Out, Err, Env>(spec: ResourceSpec<Key, Out, Err, Env>): ResourceSpec<Key, Out, Err, Env> =>\n spec\n\nexport const layer = (specs: ReadonlyArray<AnyResourceSpec>): Layer.Layer<ResourceRegistryTag, never, never> =>\n Layer.succeed(\n ResourceRegistryTag,\n (() => {\n const map = new Map<string, AnyResourceSpec>()\n for (const spec of specs) {\n if (isDevEnv() && map.has(spec.id) && map.get(spec.id) !== spec) {\n throw new Error(`[Resource.layer] Duplicate resource id \"${spec.id}\" detected in the same runtime scope`)\n }\n map.set(spec.id, spec)\n }\n return { specs: map }\n })(),\n )\n"],"mappings":";;;;;AAAA,SAAS,SAAS,aAAa;AAyB/B,IAAM,kBAAkB,CAAC,UAA2B;AAClD,QAAM,OAAO,oBAAI,QAAgB;AACjC,QAAM,SAAS,CAAC,UAA4B;AAC1C,QAAI,UAAU,KAAM,QAAO;AAC3B,QAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AACxF,aAAO;AAAA,IACT;AACA,QAAI,OAAO,UAAU,SAAU,QAAO,MAAM,SAAS;AACrD,QAAI,OAAO,UAAU,YAAa,QAAO;AACzC,QAAI,OAAO,UAAU,SAAU,QAAO,cAAc,OAAO,KAAK,CAAC;AACjE,QAAI,OAAO,UAAU,WAAY,QAAO;AAExC,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,aAAO,MAAM,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC;AAAA,IACnC;AACA,QAAI,iBAAiB,MAAM;AACzB,aAAO,YAAY,MAAM,YAAY,CAAC;AAAA,IACxC;AACA,QAAI,iBAAiB,OAAO;AAC1B,aAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM,MAAM;AAAA,QACZ,SAAS,MAAM;AAAA,MACjB;AAAA,IACF;AACA,QAAI,SAAS,OAAO,UAAU,UAAU;AACtC,YAAM,MAAM;AACZ,UAAI,KAAK,IAAI,GAAG,EAAG,QAAO;AAC1B,WAAK,IAAI,GAAG;AAEZ,YAAM,SAAS;AACf,YAAM,OAAO,OAAO,KAAK,MAAM,EAAE,KAAK;AACtC,YAAM,MAA+B,CAAC;AACtC,iBAAW,KAAK,MAAM;AACpB,YAAI,CAAC,IAAI,OAAO,OAAO,CAAC,CAAC;AAAA,MAC3B;AACA,aAAO;AAAA,IACT;AACA,WAAO,OAAO,KAAK;AAAA,EACrB;AAEA,MAAI;AACF,WAAO,KAAK,UAAU,OAAO,KAAK,CAAC;AAAA,EACrC,QAAQ;AACN,WAAO,OAAO,KAAK;AAAA,EACrB;AACF;AAEO,IAAM,UAAU,CAAC,QAAyB,gBAAgB,GAAG;AAE7D,IAAM,WAAW;AAAA,EACtB,MAAM,OAA+D;AAAA,IACnE,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAAA,EACA,SAAS,CAA4B,YAAuE;AAAA,IAC1G,QAAQ;AAAA,IACR,SAAS,OAAO;AAAA,IAChB,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAAA,EACA,SAAS,CAAO,YAA8F;AAAA,IAC5G,QAAQ;AAAA,IACR,SAAS,OAAO;AAAA,IAChB,MAAM,OAAO;AAAA,IACb,OAAO;AAAA,EACT;AAAA,EACA,OAAO,CAAM,YAA6F;AAAA,IACxG,QAAQ;AAAA,IACR,SAAS,OAAO;AAAA,IAChB,MAAM;AAAA,IACN,OAAO,OAAO;AAAA,EAChB;AACF;AAMO,IAAM,sBAAN,cAAkC,QAAQ,IAAI,gCAAgC,EAGnF,EAAE;AAAC;AAEE,IAAM,WAAW;AAAA,EACtB;AACF;AAIO,IAAM,OAAO,CAAqB,SACvC;AAEK,IAAM,QAAQ,CAAC,UACpB,MAAM;AAAA,EACJ;AAAA,GACC,MAAM;AACL,UAAM,MAAM,oBAAI,IAA6B;AAC7C,eAAW,QAAQ,OAAO;AACxB,UAAI,SAAS,KAAK,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,IAAI,KAAK,EAAE,MAAM,MAAM;AAC/D,cAAM,IAAI,MAAM,2CAA2C,KAAK,EAAE,sCAAsC;AAAA,MAC1G;AACA,UAAI,IAAI,KAAK,IAAI,IAAI;AAAA,IACvB;AACA,WAAO,EAAE,OAAO,IAAI;AAAA,EACtB,GAAG;AACL;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/internal/observability/runSession.ts","../src/internal/effect-op.ts"],"sourcesContent":["import { Context, Layer } from 'effect'\nimport type { JsonValue } from './jsonValue.js'\nimport type { EvidencePackage, EvidencePackageSource, ObservationEnvelope } from './evidence.js'\nimport { exportEvidencePackage, OBSERVABILITY_PROTOCOL_VERSION } from './evidence.js'\n\nexport type RunId = string\n\nexport interface RunSessionLocalState {\n /**\n * once: a de-dup key set for \"emit only once\" behavior (must be isolated per session to avoid cross-session pollution).\n * Returns true if it's the first occurrence, false if the key has been seen before.\n */\n readonly once: (key: string) => boolean\n\n /**\n * seq: allocate monotonic sequences by key (e.g. opSeq/eventSeq), must be isolated per session.\n */\n readonly nextSeq: (namespace: string, key: string) => number\n\n /** Tests/reset only: clear this session's local state. */\n readonly clear: () => void\n}\n\nexport interface RunSession {\n readonly runId: RunId\n readonly source: EvidencePackageSource\n readonly startedAt: number\n readonly local: RunSessionLocalState\n}\n\nclass RunSessionTagImpl extends Context.Tag('@logixjs/core/RunSession')<RunSessionTagImpl, RunSession>() {}\n\nexport const RunSessionTag = RunSessionTagImpl\n\nexport interface EvidenceSink {\n readonly record: (type: string, payload: JsonValue, options?: { readonly timestamp?: number }) => void\n readonly export: (options?: {\n readonly protocolVersion?: string\n readonly createdAt?: number\n readonly summary?: JsonValue\n readonly maxEvents?: number\n }) => EvidencePackage\n readonly clear: () => void\n}\n\nconst NEXT_RUN_SEQ_KEY = Symbol.for('@logixjs/core/runSession/nextRunSeq')\nlet fallbackNextRunSeq = 0\n\nconst nextRunSeq = (): number => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const g: any = globalThis as any\n const prev = typeof g[NEXT_RUN_SEQ_KEY] === 'number' ? (g[NEXT_RUN_SEQ_KEY] as number) : 0\n const next = prev + 1\n g[NEXT_RUN_SEQ_KEY] = next\n return next\n } catch {\n fallbackNextRunSeq += 1\n return fallbackNextRunSeq\n }\n}\n\nconst makeRunId = (startedAt: number): RunId => `run-${startedAt}.${nextRunSeq()}`\n\nexport const makeRunSessionLocalState = (): RunSessionLocalState => {\n const onceKeys = new Set<string>()\n const seqByNamespace = new Map<string, Map<string, number>>()\n\n return {\n once: (key) => {\n if (onceKeys.has(key)) return false\n onceKeys.add(key)\n return true\n },\n nextSeq: (namespace, key) => {\n const byKey = seqByNamespace.get(namespace) ?? new Map<string, number>()\n if (!seqByNamespace.has(namespace)) seqByNamespace.set(namespace, byKey)\n const prev = byKey.get(key) ?? 0\n const next = prev + 1\n byKey.set(key, next)\n return next\n },\n clear: () => {\n onceKeys.clear()\n seqByNamespace.clear()\n },\n }\n}\n\nexport const makeRunSession = (options?: {\n readonly runId?: RunId\n readonly source?: EvidencePackageSource\n readonly startedAt?: number\n readonly local?: RunSessionLocalState\n}): RunSession => {\n const startedAt = options?.startedAt ?? Date.now()\n return {\n runId: options?.runId ?? makeRunId(startedAt),\n source: options?.source ?? { host: 'unknown' },\n startedAt,\n local: options?.local ?? makeRunSessionLocalState(),\n }\n}\n\nexport const makeEvidenceSink = (session: RunSession): EvidenceSink => {\n const events: ObservationEnvelope[] = []\n let nextSeq = 1\n\n return {\n record: (type, payload, options) => {\n events.push({\n protocolVersion: OBSERVABILITY_PROTOCOL_VERSION,\n runId: session.runId,\n seq: nextSeq++,\n timestamp: options?.timestamp ?? Date.now(),\n type,\n payload,\n })\n },\n export: (options) => {\n const protocolVersion = options?.protocolVersion ?? OBSERVABILITY_PROTOCOL_VERSION\n const maxEvents = options?.maxEvents\n\n const selected =\n typeof maxEvents === 'number' && Number.isFinite(maxEvents) && maxEvents > 0\n ? events.slice(Math.max(0, events.length - Math.floor(maxEvents)))\n : events.slice()\n\n return exportEvidencePackage({\n protocolVersion,\n runId: session.runId,\n source: session.source,\n createdAt: options?.createdAt,\n events: selected,\n summary: options?.summary,\n })\n },\n clear: () => {\n events.length = 0\n nextSeq = 1\n },\n }\n}\n\nexport const runSessionLayer = (session?: RunSession): Layer.Layer<RunSessionTagImpl, never, never> =>\n Layer.succeed(RunSessionTag, session ?? makeRunSession()) as Layer.Layer<RunSessionTagImpl, never, never>\n","// Internal EffectOp API (for internal implementation code).\n//\n// Goal:\n// - Internal modules must never import root public submodules (e.g. `../EffectOp`).\n// - This file hosts the shared implementation; public `src/EffectOp.ts` delegates to it.\n\nimport { Effect, Option } from 'effect'\nimport * as Core from './runtime/core/EffectOpCore.js'\nimport { RunSessionTag } from './observability/runSession.js'\n\nexport type EffectOp<Out = unknown, Err = unknown, Env = unknown> = Core.EffectOp<Out, Err, Env>\n\nexport type OperationPolicy = Core.OperationPolicy\n\nexport type OperationRejected = Core.OperationRejected\n\nexport type OperationError<E> = Core.OperationError<E>\n\nexport type Middleware = Core.Middleware\n\nexport type MiddlewareStack = Core.MiddlewareStack\n\nexport const composeMiddleware = Core.composeMiddleware\n\nexport const makeOperationRejected = Core.makeOperationRejected\n\n/**\n * Generate a stable id for identifying an EffectOp.\n * - Uses a monotonic sequence by default to avoid non-replayability from randomness/time.\n * - If meta.instanceId is available, prefer deriving `${instanceId}::o${opSeq}`.\n */\nlet nextGlobalOpSeq = 0\n\nconst nextOpSeq = (): number => {\n nextGlobalOpSeq += 1\n return nextGlobalOpSeq\n}\n\nconst makeId = (instanceId: string | undefined, opSeq: number): string =>\n instanceId ? `${instanceId}::o${opSeq}` : `o${opSeq}`\n\n/**\n * EffectOp.make:\n * - Create an EffectOp with basic meta.\n * - Generates a stable id by default (based on `instanceId` + monotonic `opSeq`); callers may override externally.\n */\nexport const make = <A, E, R>(params: {\n readonly kind: EffectOp['kind']\n readonly name: string\n readonly effect: Effect.Effect<A, E, R>\n readonly payload?: unknown\n readonly meta?: EffectOp['meta']\n readonly id?: string\n}): EffectOp<A, E, R> => ({\n ...(params.id\n ? { id: params.id, meta: params.meta }\n : (() => {\n const meta: any = params.meta ?? {}\n const instanceId: string | undefined = meta.instanceId\n const opSeq: number =\n typeof meta.opSeq === 'number' && Number.isFinite(meta.opSeq) ? Math.floor(meta.opSeq) : nextOpSeq()\n return {\n id: makeId(instanceId, opSeq),\n meta: meta.opSeq === opSeq ? meta : { ...meta, opSeq },\n }\n })()),\n kind: params.kind,\n name: params.name,\n payload: params.payload,\n effect: params.effect,\n})\n\n/**\n * EffectOp.makeInRunSession:\n * - Allocate a stable `opSeq` within a RunSession scope (per-session + per-instance).\n * - If RunSession is missing from Env, fall back to a process-wide monotonic sequence (no process-wide Map).\n */\nexport const makeInRunSession = <A, E, R>(params: {\n readonly kind: EffectOp['kind']\n readonly name: string\n readonly effect: Effect.Effect<A, E, R>\n readonly payload?: unknown\n readonly meta?: EffectOp['meta']\n readonly id?: string\n}): Effect.Effect<EffectOp<A, E, R>, never, any> =>\n Effect.gen(function* () {\n if (params.id) {\n return {\n id: params.id,\n kind: params.kind,\n name: params.name,\n payload: params.payload,\n meta: params.meta,\n effect: params.effect,\n } satisfies EffectOp<A, E, R>\n }\n\n const meta: any = params.meta ?? {}\n const instanceId: string | undefined = meta.instanceId\n\n let opSeq: number\n if (typeof meta.opSeq === 'number' && Number.isFinite(meta.opSeq)) {\n opSeq = Math.floor(meta.opSeq)\n } else {\n const sessionOpt = yield* Effect.serviceOption(RunSessionTag)\n if (Option.isSome(sessionOpt)) {\n const key = instanceId ?? 'global'\n opSeq = sessionOpt.value.local.nextSeq('opSeq', key)\n } else {\n opSeq = nextOpSeq()\n }\n }\n\n return {\n id: makeId(instanceId, opSeq),\n kind: params.kind,\n name: params.name,\n payload: params.payload,\n meta: meta.opSeq === opSeq ? meta : { ...meta, opSeq },\n effect: params.effect,\n } satisfies EffectOp<A, E, R>\n })\n\n/**\n * EffectOp.withMeta:\n * - Append or override meta fields on an existing EffectOp.\n * - Does not change the effect itself.\n */\nexport const withMeta = <A, E, R>(\n op: EffectOp<A, E, R>,\n meta: Partial<NonNullable<EffectOp['meta']>>,\n): EffectOp<A, E, R> => ({\n ...op,\n meta: { ...(op.meta ?? {}), ...meta },\n})\n\n/**\n * EffectOp.run:\n * - Execute an EffectOp using the given MiddlewareStack.\n * - If the stack is empty, return op.effect directly.\n */\nexport const run = <A, E, R>(op: EffectOp<A, E, R>, stack: MiddlewareStack): Effect.Effect<A, E, R> =>\n Core.runWithMiddleware(op, stack)\n"],"mappings":"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","names":["composeMiddleware","makeOperationRejected"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/Module.ts"],"sourcesContent":["import { Context, Effect, FiberRef, Layer, Schema } from 'effect'\nimport * as Debug from './Debug.js'\nimport * as Logic from './Logic.js'\nimport * as ModuleTagNS from './ModuleTag.js'\nimport * as Action from './internal/action.js'\nimport { isDevEnv } from './internal/runtime/core/env.js'\nimport * as LogicUnitMetaInternal from './internal/runtime/core/LogicUnitMeta.js'\nimport type {\n ActionsFromMap,\n ActionOf,\n AnyModuleShape,\n AnySchema,\n BoundApi,\n ModuleLike,\n ModuleHandle,\n ModuleImpl,\n ModuleImplementStateTransactionOptions,\n ModuleLogic,\n ModuleRuntime,\n ModuleTag,\n ModuleShape,\n MutatorsFromMap,\n ReducersFromMap,\n StateChangeWithMeta,\n StateCommitMeta,\n StateCommitMode,\n StateCommitPriority,\n StateOf,\n} from './internal/module.js'\n\n/**\n * Module (definition object) public API.\n *\n * - Domain factories (Form / CRUD / ...) should return this object.\n * - `.tag` is the identity anchor (ModuleTag/Context.Tag), used by `$.use(...)` and Env injection.\n * - `.impl` is the assembly blueprint (ModuleImpl), consumed by React/Runtime entry points.\n * - `.logic()` only produces the logic value; `.withLogic/withLayer(s)` changes the runnable shape (immutable: returns a new object).\n */\n\nexport type {\n AnySchema,\n AnyModuleShape,\n ModuleShape,\n ModuleLogic,\n ModuleImpl,\n ModuleRuntime,\n ModuleHandle,\n ModuleTag,\n StateOf,\n ActionOf,\n ActionsFromMap,\n MutatorsFromMap,\n ReducersFromMap,\n BoundApi,\n StateCommitMode,\n StateCommitPriority,\n StateCommitMeta,\n StateChangeWithMeta,\n} from './internal/module.js'\n\nexport interface DevSource {\n readonly file: string\n readonly line: number\n readonly column: number\n}\n\nexport interface ModuleDev {\n readonly source?: DevSource\n}\n\nexport interface LogicUnitOptions {\n readonly id?: string\n readonly kind?: string\n readonly name?: string\n readonly source?: DevSource\n}\n\nexport interface MountedLogicUnitSummary {\n readonly kind: string\n readonly id: string\n readonly derived?: boolean\n readonly name?: string\n}\n\nexport interface ModuleDescriptor {\n readonly id: string\n readonly moduleId: string\n readonly instanceId: string\n readonly actionKeys: ReadonlyArray<string>\n readonly logicUnits: ReadonlyArray<MountedLogicUnitSummary>\n readonly schemaKeys?: ReadonlyArray<string>\n readonly meta?: Record<string, unknown>\n readonly source?: DevSource\n}\n\nexport type HandleExtendFn<Sh extends AnyModuleShape, Ext extends object> = (\n runtime: ModuleRuntime<StateOf<Sh>, ActionOf<Sh>>,\n base: ModuleHandle<Sh>,\n) => Ext | (ModuleHandle<Sh> & Ext) | null | undefined\n\ntype LogicUnitMeta = LogicUnitMetaInternal.LogicUnitMeta\nconst attachLogicUnitMeta = <L extends object>(logic: L, meta: LogicUnitMeta): L =>\n LogicUnitMetaInternal.attachLogicUnitMeta(logic, meta as any) as any\n\ntype NoInfer_<T> = [T][T extends any ? 0 : never]\n\ntype MountedLogicUnit<Sh extends AnyModuleShape> = {\n readonly id: string\n readonly derived: boolean\n readonly kind: string\n readonly name?: string\n readonly source?: DevSource\n readonly logic: ModuleLogic<Sh, any, any>\n readonly origin?: {\n readonly explicitId?: string\n readonly defaultId?: string\n readonly derivedBase?: string\n }\n}\n\ntype LogicOverrideWarning = {\n readonly id: string\n readonly from: Pick<MountedLogicUnit<any>, 'kind' | 'name' | 'source'> & {\n readonly order: number\n }\n readonly to: Pick<MountedLogicUnit<any>, 'kind' | 'name' | 'source'> & {\n readonly order: number\n }\n}\n\ntype ModuleInternal<Id extends string, Sh extends AnyModuleShape> = {\n readonly initial: StateOf<Sh>\n readonly imports?: ReadonlyArray<Layer.Layer<any, any, any> | ModuleImpl<any, AnyModuleShape, any>>\n readonly processes?: ReadonlyArray<Effect.Effect<void, any, any>>\n readonly stateTransaction?: ModuleImplementStateTransactionOptions\n readonly mounted: ReadonlyArray<MountedLogicUnit<Sh>>\n readonly overrides: ReadonlyArray<LogicOverrideWarning>\n readonly layers: ReadonlyArray<Layer.Layer<any, never, any>>\n readonly rebuild: () => ModuleImpl<Id, Sh, any>\n}\n\nconst MODULE_INTERNAL = Symbol.for('logix.module.internal')\nconst MODULE_DECLARED_EFFECTS = Symbol.for('logix.module.effects.declared')\n\ntype ModuleDefBase<\n Id extends string = string,\n Sh extends AnyModuleShape = AnyModuleShape,\n Ext extends object = {},\n> = ModuleLike<Id, Sh, Ext> & {\n readonly shape: Sh\n readonly stateSchema: Sh['stateSchema']\n readonly actionSchema: Sh['actionSchema']\n /**\n * Raw ActionMap (tag -> payload schema).\n * - Mainly for DX/reflection; runtime contract is still based on tag.shape/actionSchema.\n */\n readonly actions: Sh['actionMap']\n /**\n * Raw reducers (if provided by the definition).\n * - Mainly for DX/reflection; runtime normalizes them into primary reducers inside ModuleTag/ModuleFactory.\n */\n readonly reducers?: ReducersFromMap<Sh['stateSchema'], Sh['actionMap']>\n readonly live: <R = never, E = never>(\n initial: StateOf<Sh>,\n ...logics: Array<ModuleLogic<Sh, R, E>>\n ) => Layer.Layer<ModuleRuntime<StateOf<Sh>, ActionOf<Sh>>, E, R>\n readonly schemas?: Record<string, unknown>\n readonly meta?: Record<string, unknown>\n readonly services?: Record<string, Context.Tag<any, any>>\n readonly dev?: ModuleDev\n readonly logic: <R = never, E = unknown>(\n build: (\n api: BoundApi<Sh, R> & {\n readonly self: Logic.Of<Sh, R, ModuleHandle<Sh> & Ext, never>\n },\n ) => ModuleLogic<Sh, R, E>,\n options?: LogicUnitOptions,\n ) => ModuleLogic<Sh, R, E>\n}\n\nexport type AnyModule = {\n readonly _kind: 'Module'\n readonly id: string\n readonly tag: ModuleTag<string, AnyModuleShape>\n readonly impl: ModuleImpl<any, AnyModuleShape, any>\n readonly actions: Record<string, AnySchema>\n readonly reducers?: Record<string, unknown>\n readonly schemas?: Record<string, unknown>\n readonly meta?: Record<string, unknown>\n readonly services?: Record<string, Context.Tag<any, any>>\n readonly dev?: ModuleDev\n}\n\nexport type Module<Id extends string, Sh extends AnyModuleShape, Ext extends object = {}, R = never> = ModuleDefBase<\n Id,\n Sh,\n Ext\n> & {\n readonly _kind: 'Module'\n readonly impl: ModuleImpl<Id, Sh, R>\n readonly withLogic: (logic: ModuleLogic<Sh, any, any>, options?: LogicUnitOptions) => Module<Id, Sh, Ext, R>\n readonly withLogics: (...inputs: ReadonlyArray<MountInput<Sh>>) => Module<Id, Sh, Ext, R>\n readonly withLayer: (layer: Layer.Layer<any, never, any>) => Module<Id, Sh, Ext, R>\n readonly withLayers: (...layers: ReadonlyArray<Layer.Layer<any, never, any>>) => Module<Id, Sh, Ext, R>\n}\n\nexport type ModuleDef<Id extends string, Sh extends AnyModuleShape, Ext extends object = {}> = ModuleDefBase<\n Id,\n Sh,\n Ext\n> & {\n readonly _kind: 'ModuleDef'\n readonly implement: <R = never>(config: {\n readonly initial: StateOf<Sh>\n readonly logics?: Array<ModuleLogic<Sh, R, any>>\n readonly imports?: ReadonlyArray<Layer.Layer<any, any, any> | ModuleImpl<any, AnyModuleShape, any>>\n readonly processes?: ReadonlyArray<Effect.Effect<void, any, any>>\n readonly stateTransaction?: ModuleImplementStateTransactionOptions\n }) => Module<Id, Sh, Ext, R>\n}\n\nexport const is = (value: unknown): value is ModuleDefBase => {\n if (!value || typeof value !== 'object') return false\n const kind = (value as any)._kind\n if (kind !== 'ModuleDef' && kind !== 'Module') return false\n return Context.isTag((value as any).tag)\n}\n\nexport const hasImpl = (value: unknown): value is AnyModule => {\n if (!is(value)) return false\n return (\n typeof (value as any).impl === 'object' && (value as any).impl !== null && (value as any).impl._tag === 'ModuleImpl'\n )\n}\n\nexport const unwrapTag = <Id extends string, Sh extends AnyModuleShape>(\n module: ModuleLike<Id, Sh, any>,\n): ModuleTag<Id, Sh> => module.tag\n\nexport const unwrapImpl = <Id extends string, Sh extends AnyModuleShape>(\n module: AnyModule & { readonly id: Id; readonly tag: ModuleTag<Id, Sh> },\n): ModuleImpl<Id, Sh, any> => (module as any).impl as ModuleImpl<Id, Sh, any>\n\nexport const descriptor = (\n module: ModuleDefBase<string, AnyModuleShape, any>,\n runtime: ModuleRuntime<any, any>,\n): ModuleDescriptor => {\n const actionKeys = Object.keys((module.tag as any).shape?.actionMap ?? {})\n\n const internal = (module as any)[MODULE_INTERNAL] as ModuleInternal<string, AnyModuleShape> | undefined\n\n const logicUnits: ReadonlyArray<MountedLogicUnitSummary> = internal\n ? internal.mounted.map((u) => ({\n kind: u.kind,\n id: u.id,\n derived: u.derived ? true : undefined,\n name: u.name,\n }))\n : []\n\n const schemaKeys = module.schemas && typeof module.schemas === 'object' ? Object.keys(module.schemas) : undefined\n\n const meta = module.meta && typeof module.meta === 'object' ? module.meta : undefined\n\n const source = module.dev?.source\n\n return {\n id: module.id,\n moduleId: String(runtime.moduleId),\n instanceId: String(runtime.instanceId),\n actionKeys,\n logicUnits,\n schemaKeys,\n meta,\n source,\n }\n}\n\ntype MountInput<Sh extends AnyModuleShape> =\n | ModuleLogic<Sh, any, any>\n | readonly [ModuleLogic<Sh, any, any>, LogicUnitOptions]\n\nconst normalizeMountInput = <Sh extends AnyModuleShape>(\n input: MountInput<Sh>,\n): { readonly logic: ModuleLogic<Sh, any, any>; readonly options?: LogicUnitOptions } => {\n if (Array.isArray(input)) {\n return { logic: input[0], options: input[1] }\n }\n return { logic: input as ModuleLogic<Sh, any, any> }\n}\n\nconst resolveLogicUnit = <Sh extends AnyModuleShape>(\n existing: ReadonlyArray<MountedLogicUnit<Sh>>,\n logic: ModuleLogic<Sh, any, any>,\n options?: LogicUnitOptions,\n): MountedLogicUnit<Sh> => {\n const meta = LogicUnitMetaInternal.getLogicUnitMeta(logic)\n const explicitId = options?.id\n const defaultId = meta?.id\n\n const kind = (options?.kind ?? meta?.kind ?? 'user').trim() || 'user'\n const name =\n options?.name ?? meta?.name ?? (typeof defaultId === 'string' && defaultId.length > 0 ? defaultId : undefined)\n\n const source = options?.source ?? meta?.source\n\n if (typeof explicitId === 'string' && explicitId.trim().length > 0) {\n return {\n id: explicitId.trim(),\n derived: false,\n kind,\n name,\n source,\n logic,\n origin: { explicitId: explicitId.trim(), defaultId },\n }\n }\n\n if (typeof defaultId === 'string' && defaultId.trim().length > 0) {\n return {\n id: defaultId.trim(),\n derived: false,\n kind,\n name,\n source,\n logic,\n origin: { defaultId: defaultId.trim() },\n }\n }\n\n // Derived id: reproducible within the same composition order.\n const used = new Set(existing.map((u) => u.id))\n const baseRaw = (name ?? kind ?? 'logic').trim() || 'logic'\n const base = baseRaw.replace(/\\s+/g, '_')\n\n let n = 1\n while (used.has(`${base}#${n}`)) n += 1\n const derivedId = `${base}#${n}`\n\n return {\n id: derivedId,\n derived: true,\n kind,\n name: name ?? baseRaw,\n source,\n logic,\n origin: { derivedBase: baseRaw },\n }\n}\n\nconst mountLogicUnit = <Sh extends AnyModuleShape>(\n current: ReadonlyArray<MountedLogicUnit<Sh>>,\n overrides: ReadonlyArray<LogicOverrideWarning>,\n input: { readonly logic: ModuleLogic<Sh, any, any>; readonly options?: LogicUnitOptions },\n): {\n readonly mounted: ReadonlyArray<MountedLogicUnit<Sh>>\n readonly overrides: ReadonlyArray<LogicOverrideWarning>\n} => {\n const nextUnit = resolveLogicUnit(current, input.logic, input.options)\n // Write the resolved verdict back to logic meta for provenance/diagnostics (aligned with 022-module).\n LogicUnitMetaInternal.updateLogicUnitMeta(nextUnit.logic as any, {\n resolvedId: nextUnit.id,\n resolvedIdKind: nextUnit.derived ? 'derived' : 'explicit',\n resolvedKind: nextUnit.kind,\n resolvedName: nextUnit.name,\n resolvedSource: nextUnit.source as any,\n })\n\n const prevIndex = current.findIndex((u) => u.id === nextUnit.id)\n if (prevIndex < 0) {\n return { mounted: [...current, nextUnit], overrides }\n }\n\n const prev = current[prevIndex]\n const nextMounted = [...current.slice(0, prevIndex), ...current.slice(prevIndex + 1), nextUnit]\n\n const nextOverrides: ReadonlyArray<LogicOverrideWarning> = [\n ...overrides,\n {\n id: nextUnit.id,\n from: {\n kind: prev.kind,\n name: prev.name,\n source: prev.source,\n order: prevIndex,\n },\n to: {\n kind: nextUnit.kind,\n name: nextUnit.name,\n source: nextUnit.source,\n order: nextMounted.length - 1,\n },\n },\n ]\n\n return { mounted: nextMounted, overrides: nextOverrides }\n}\n\nconst formatSource = (source?: DevSource): string => {\n if (!source) return 'unknown'\n return `${source.file}:${source.line}:${source.column}`\n}\n\nconst makeOverrideDiagnosticsLogic = (\n tag: ModuleTag<any, AnyModuleShape>,\n overrides: ReadonlyArray<LogicOverrideWarning>,\n): ModuleLogic<any, any, never> => {\n if (overrides.length === 0) {\n return Effect.void as any\n }\n\n return tag.logic(() =>\n Effect.gen(function* () {\n if (!isDevEnv()) return\n\n const diagnosticsLevel = yield* FiberRef.get(Debug.internal.currentDiagnosticsLevel as any)\n if (diagnosticsLevel === 'off') return\n\n const runtime = (yield* tag) as ModuleRuntime<any, any>\n\n yield* Effect.forEach(\n overrides,\n (o) =>\n Debug.record({\n type: 'diagnostic',\n moduleId: runtime.moduleId,\n instanceId: runtime.instanceId,\n code: 'module_logic::override',\n severity: 'warning',\n message: `logicUnitId \"${o.id}\" overridden (last-write-wins).`,\n hint:\n `from(#${o.from.order}) kind=${o.from.kind} name=${o.from.name ?? 'unknown'} source=${formatSource(o.from.source)}\\n` +\n `to(#${o.to.order}) kind=${o.to.kind} name=${o.to.name ?? 'unknown'} source=${formatSource(o.to.source)}`,\n kind: 'logic_unit_override',\n }),\n { discard: true },\n )\n }),\n )\n}\n\nconst makeDeclaredEffectsLogic = (\n tag: ModuleTag<any, AnyModuleShape>,\n effects: Record<string, ReadonlyArray<unknown> | undefined> | undefined,\n moduleId: string,\n): ModuleLogic<any, any, never> => {\n if (!effects || typeof effects !== 'object' || Object.keys(effects).length === 0) {\n return Effect.void as any\n }\n\n const logic = tag.logic(($) => ({\n setup: Effect.gen(function* () {\n const actions = ($ as any).actions as Record<string, Action.AnyActionToken>\n const effectApi = ($ as any).effect as\n | ((token: unknown, handler: (payload: unknown) => Effect.Effect<void, any, any>) => Effect.Effect<void, never, any>)\n | undefined\n if (typeof effectApi !== 'function') return\n\n const wrappedHandlers = new WeakMap<(...args: any[]) => any, (payload: unknown) => Effect.Effect<void, any, any>>()\n\n for (const actionTag of Object.keys(effects).sort()) {\n const token = actions[actionTag]\n if (!Action.isActionToken(token)) continue\n\n const handlers = effects[actionTag]\n if (!Array.isArray(handlers)) continue\n\n for (const handler of handlers) {\n if (typeof handler !== 'function') continue\n let wrapped = wrappedHandlers.get(handler)\n if (!wrapped) {\n wrapped = (payload: unknown) => (handler as any)($, payload)\n wrappedHandlers.set(handler, wrapped)\n }\n yield* effectApi(token, wrapped)\n }\n }\n }),\n run: Effect.void,\n })) as ModuleLogic<any, any, never>\n\n LogicUnitMetaInternal.attachLogicUnitMeta(logic as any, {\n id: '__logix_internal:effects:declared',\n kind: 'internal',\n name: 'effects:declared',\n moduleId,\n })\n\n return logic\n}\n\nconst makeLogicFactory = <Id extends string, Sh extends AnyModuleShape, Ext extends object>(\n selfModule: ModuleDefBase<Id, Sh, Ext>,\n): ModuleDefBase<Id, Sh, Ext>['logic'] => {\n const tag = selfModule.tag\n return (build, options) => {\n const eff = tag.logic((api) => {\n const withSelf = Object.create(api) as BoundApi<Sh, any> & {\n readonly self: Logic.Of<Sh, any, ModuleHandle<Sh> & Ext, never>\n }\n ;(withSelf as any).self = Effect.suspend(() => (api as any).use(selfModule as any))\n return build(withSelf as any)\n }) as ModuleLogic<Sh, any, any>\n\n const meta: LogicUnitMeta = {\n id: options?.id,\n kind: options?.kind,\n name: options?.name,\n source: options?.source,\n moduleId: selfModule.id,\n }\n\n return attachLogicUnitMeta(eff as any, meta) as any\n }\n}\n\ntype MakeDef<Id extends string, SSchema extends AnySchema, AMap extends Action.ActionDefs> = {\n readonly state: SSchema\n readonly actions: AMap\n readonly reducers?: ReducersFromMap<SSchema, NoInfer_<AMap>>\n readonly immerReducers?: MutatorsFromMap<SSchema, NoInfer_<AMap>>\n readonly effects?: EffectsFromMap<NoInfer_<AMap>>\n readonly traits?: unknown\n readonly schemas?: Record<string, unknown>\n readonly meta?: Record<string, unknown>\n readonly services?: Record<string, Context.Tag<any, any>>\n readonly dev?: ModuleDev\n}\n\ntype AnyActionMap = Action.ActionDefs\ntype EmptyActionMap = Record<never, never>\n\ntype PayloadOfActionDef<V> = V extends Schema.Schema<any, any, any>\n ? Schema.Schema.Type<V>\n : V extends Action.ActionToken<any, infer P, any>\n ? P\n : never\n\ntype DeclaredEffectHandler<Payload> = ($: unknown, payload: Payload) => Effect.Effect<void, any, any>\n\ntype EffectsFromMap<M extends AnyActionMap> = {\n readonly [K in keyof M]?: ReadonlyArray<DeclaredEffectHandler<PayloadOfActionDef<M[K]>>>\n}\n\ntype MergeActionMap<Base extends AnyActionMap, Ext extends AnyActionMap> = {\n readonly [K in keyof Base | keyof Ext]: K extends keyof Ext ? Ext[K] : K extends keyof Base ? Base[K] : never\n}\n\n/**\n * Module.make \"app-side extension/override\" parameters (a two-stage responsibility split: domain library author → app developer).\n *\n * - `actions`: add-only (cannot override existing action schema); used to extend actionMap.\n * - `reducers`: add and override; used to override domain reducers or provide reducers for new actions.\n * - Other reflective fields (schemas/meta/services/dev) are shallow-merged (last-write-wins).\n */\nexport type MakeExtendDef<\n SSchema extends AnySchema,\n BaseActions extends AnyActionMap,\n ExtActions extends AnyActionMap = EmptyActionMap,\n> = {\n readonly actions?: ExtActions\n readonly reducers?: ReducersFromMap<SSchema, MergeActionMap<BaseActions, ExtActions>>\n readonly immerReducers?: MutatorsFromMap<SSchema, MergeActionMap<BaseActions, ExtActions>>\n readonly effects?: EffectsFromMap<MergeActionMap<BaseActions, ExtActions>>\n readonly schemas?: Record<string, unknown>\n readonly meta?: Record<string, unknown>\n readonly services?: Record<string, Context.Tag<any, any>>\n readonly dev?: ModuleDev\n}\n\nconst mergeMakeDef = <\n Id extends string,\n SSchema extends AnySchema,\n BaseActions extends AnyActionMap,\n ExtActions extends AnyActionMap,\n>(\n base: MakeDef<Id, SSchema, BaseActions>,\n extend?: MakeExtendDef<SSchema, BaseActions, ExtActions>,\n): MakeDef<Id, SSchema, MergeActionMap<BaseActions, ExtActions>> => {\n const baseActions = base.actions as Record<string, AnySchema>\n const extActions = (extend?.actions ?? {}) as Record<string, AnySchema>\n\n for (const key of Object.keys(extActions)) {\n if (key in baseActions && baseActions[key] !== extActions[key]) {\n throw new Error(\n `[Logix.Module.make] action key \"${key}\" already exists; overriding action schemas is not supported (define a new action tag instead).`,\n )\n }\n }\n\n const mergedActionDefs = { ...(base.actions as any), ...(extend?.actions as any) } as MergeActionMap<\n BaseActions,\n ExtActions\n >\n const actions = Action.normalizeActions(mergedActionDefs)\n\n const mergeEffects = (): Record<string, ReadonlyArray<unknown>> | undefined => {\n const baseEffects = (base.effects ?? {}) as Record<string, unknown>\n const extEffects = (extend?.effects ?? {}) as Record<string, unknown>\n\n const keys = Array.from(new Set([...Object.keys(baseEffects), ...Object.keys(extEffects)])).sort()\n if (keys.length === 0) return undefined\n\n const out: Record<string, ReadonlyArray<unknown>> = {}\n for (const key of keys) {\n if (!(key in actions)) {\n throw new Error(`[Logix.Module.make] effect key \"${key}\" does not exist in actionMap.`)\n }\n\n const baseValue = baseEffects[key]\n const extValue = extEffects[key]\n const baseArr = Array.isArray(baseValue) ? baseValue : baseValue === undefined ? [] : null\n const extArr = Array.isArray(extValue) ? extValue : extValue === undefined ? [] : null\n\n if (baseArr === null) {\n throw new Error(`[Logix.Module.make] effects[\"${key}\"] must be an array of handlers.`)\n }\n if (extArr === null) {\n throw new Error(`[Logix.Module.make] effects[\"${key}\"] must be an array of handlers.`)\n }\n\n const merged = [...baseArr, ...extArr].filter((h) => h !== undefined)\n for (const h of merged) {\n if (typeof h !== 'function') {\n throw new Error(`[Logix.Module.make] effects[\"${key}\"] handlers must be functions.`)\n }\n }\n\n if (merged.length > 0) {\n out[key] = merged as ReadonlyArray<unknown>\n }\n }\n\n return Object.keys(out).length > 0 ? out : undefined\n }\n\n const effects = mergeEffects()\n\n const wrapImmerReducers = (mutators?: Record<string, ((draft: unknown, payload: unknown) => void) | undefined>) => {\n if (!mutators) return {}\n const out: Record<string, unknown> = {}\n for (const key of Object.keys(mutators)) {\n const mutator = mutators[key]\n if (typeof mutator !== 'function') continue\n out[key] = ModuleTagNS.Reducer.mutate(mutator as any)\n }\n return out\n }\n\n const reducers = {\n ...wrapImmerReducers(base.immerReducers as any),\n ...(base.reducers ?? {}),\n ...wrapImmerReducers(extend?.immerReducers as any),\n ...(extend?.reducers ?? {}),\n } as Record<string, unknown>\n\n for (const key of Object.keys(reducers)) {\n if (!(key in actions)) {\n throw new Error(`[Logix.Module.make] reducer key \"${key}\" does not exist in actionMap.`)\n }\n }\n\n const schemas =\n base.schemas || extend?.schemas ? { ...(base.schemas ?? {}), ...(extend?.schemas ?? {}) } : undefined\n\n const meta = base.meta || extend?.meta ? { ...(base.meta ?? {}), ...(extend?.meta ?? {}) } : undefined\n\n const services =\n base.services || extend?.services ? { ...(base.services ?? {}), ...(extend?.services ?? {}) } : undefined\n\n const dev = base.dev || extend?.dev ? { ...(base.dev ?? {}), ...(extend?.dev ?? {}) } : undefined\n\n return {\n ...base,\n actions: actions as any,\n reducers: Object.keys(reducers).length > 0 ? (reducers as any) : undefined,\n effects: effects as any,\n schemas,\n meta,\n services,\n dev,\n } as any\n}\n\nexport const Reducer = ModuleTagNS.Reducer\n\nexport type Shape<S extends AnySchema, M extends Action.ActionDefs> = ModuleShape<\n S,\n Schema.Schema<ActionsFromMap<Action.NormalizedActionTokens<M>>>,\n Action.NormalizedActionTokens<M>\n>\n\nexport function make<\n Id extends string,\n SSchema extends AnySchema,\n AMap extends Action.ActionDefs,\n Ext extends object = {},\n>(\n id: Id,\n def: MakeDef<Id, SSchema, AMap>,\n): ModuleDef<\n Id,\n ModuleShape<\n SSchema,\n Schema.Schema<ActionsFromMap<Action.NormalizedActionTokens<AMap>>>,\n Action.NormalizedActionTokens<AMap>\n >,\n Ext\n>\n\nexport function make<\n Id extends string,\n SSchema extends AnySchema,\n AMap extends Action.ActionDefs,\n Ext extends object = {},\n ExtActions extends Action.ActionDefs = EmptyActionMap,\n>(\n id: Id,\n def: MakeDef<Id, SSchema, AMap>,\n extend: MakeExtendDef<SSchema, NoInfer_<AMap>, ExtActions>,\n): ModuleDef<\n Id,\n ModuleShape<\n SSchema,\n Schema.Schema<ActionsFromMap<Action.NormalizedActionTokens<MergeActionMap<AMap, ExtActions>>>>,\n Action.NormalizedActionTokens<MergeActionMap<AMap, ExtActions>>\n >,\n Ext\n>\n\nexport function make(id: any, def: any, extend?: any): any {\n const merged = mergeMakeDef(def as any, extend as any)\n\n const tag = ModuleTagNS.make(id, {\n state: merged.state,\n actions: merged.actions,\n reducers: merged.reducers,\n traits: merged.traits,\n }) as unknown as ModuleTag<any, AnyModuleShape>\n\n if (merged.effects && typeof merged.effects === 'object' && Object.keys(merged.effects).length > 0) {\n Object.defineProperty(tag as any, MODULE_DECLARED_EFFECTS, {\n value: merged.effects,\n enumerable: false,\n configurable: true,\n writable: false,\n })\n }\n\n const base: any = {\n _kind: 'ModuleDef' as const,\n id,\n tag,\n shape: tag.shape,\n stateSchema: tag.stateSchema,\n actionSchema: tag.actionSchema,\n actions: merged.actions,\n reducers: merged.reducers,\n effects: merged.effects,\n live: tag.live,\n schemas: merged.schemas,\n meta: merged.meta,\n services: merged.services,\n dev: merged.dev,\n }\n\n base.logic = makeLogicFactory(base as any)\n\n base.implement = (config: any) => {\n type Sh = AnyModuleShape\n\n const initial = config.initial as any\n const imports = config.imports as any\n const processes = config.processes as any\n const stateTransaction = config.stateTransaction as any\n\n const mountedResult = (config.logics ?? []).reduce(\n (\n acc: {\n mounted: ReadonlyArray<MountedLogicUnit<any>>\n overrides: ReadonlyArray<LogicOverrideWarning>\n },\n logic: any,\n ) => mountLogicUnit(acc.mounted, acc.overrides, { logic }),\n { mounted: [] as const, overrides: [] as const },\n )\n\n type State = {\n readonly mounted: ReadonlyArray<MountedLogicUnit<any>>\n readonly overrides: ReadonlyArray<LogicOverrideWarning>\n readonly layers: ReadonlyArray<Layer.Layer<any, never, any>>\n }\n\n const buildImpl = (state: State): ModuleImpl<any, AnyModuleShape, any> => {\n const diagnosticsLogic = makeOverrideDiagnosticsLogic(tag as any, state.overrides)\n const declaredEffectsLogic = makeDeclaredEffectsLogic(tag as any, merged.effects, id)\n const allLogics = [...state.mounted.map((u) => u.logic), declaredEffectsLogic, diagnosticsLogic]\n\n let impl = (tag as any).implement({\n initial,\n logics: allLogics,\n imports,\n processes,\n stateTransaction,\n }) as ModuleImpl<any, AnyModuleShape, any>\n\n for (const layer of state.layers) {\n impl = impl.withLayer(layer)\n }\n\n return impl\n }\n\n const createModule = (state: State): any => {\n const internal: ModuleInternal<any, AnyModuleShape> = {\n initial,\n imports,\n processes,\n stateTransaction,\n mounted: state.mounted,\n overrides: state.overrides,\n layers: state.layers,\n rebuild: () => buildImpl(state),\n }\n\n const mod: any = {\n ...base,\n _kind: 'Module' as const,\n impl: buildImpl(state),\n }\n\n Object.defineProperty(mod, MODULE_INTERNAL, {\n value: internal,\n enumerable: false,\n configurable: true,\n })\n\n mod.logic = makeLogicFactory(mod)\n\n mod.withLogic = (logic: any, options?: LogicUnitOptions) => mod.withLogics([logic, options] as any)\n\n mod.withLogics = (...inputs: ReadonlyArray<MountInput<any>>) => {\n const current = (mod as any)[MODULE_INTERNAL] as ModuleInternal<any, AnyModuleShape>\n const normalized = inputs.map(normalizeMountInput)\n const next = normalized.reduce((acc, item) => mountLogicUnit(acc.mounted, acc.overrides, item as any), {\n mounted: current.mounted,\n overrides: current.overrides,\n })\n\n return createModule({\n mounted: next.mounted,\n overrides: next.overrides,\n layers: current.layers,\n })\n }\n\n mod.withLayer = (layer: Layer.Layer<any, never, any>) => {\n const current = (mod as any)[MODULE_INTERNAL] as ModuleInternal<any, AnyModuleShape>\n return createModule({\n mounted: current.mounted,\n overrides: current.overrides,\n layers: [...current.layers, layer],\n })\n }\n\n mod.withLayers = (...layers: ReadonlyArray<Layer.Layer<any, never, any>>) =>\n layers.reduce((acc, layer) => acc.withLayer(layer), mod as any)\n\n return mod as any\n }\n\n return createModule({\n mounted: mountedResult.mounted,\n overrides: mountedResult.overrides,\n layers: [],\n })\n }\n\n return base\n}\n\nexport const Manage = {\n make: <D extends (...args: any[]) => AnyModule>(config: {\n readonly kind?: string\n readonly define: D\n }): { readonly kind?: string; readonly make: D } => ({\n kind: config.kind,\n make: config.define,\n }),\n} as const\n"],"mappings":"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","names":["Reducer","make","attachLogicUnitMeta","internal","Reducer","make"]}