@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,30 +0,0 @@
1
- import { R as ReadLane$1, a as ReadProducer$1, E as EqualsKind$1, b as ReadsDigest$1, c as ReadQueryStaticIr$1, d as ReadQuery$2, e as ReadQueryCompiled$1, f as ReadQueryInput$1, i as isReadQuery$1 } from './ReadQuery-SinbStGF.js';
2
-
3
- type ReadLane = ReadLane$1;
4
- type ReadProducer = ReadProducer$1;
5
- type EqualsKind = EqualsKind$1;
6
- type ReadsDigest = ReadsDigest$1;
7
- type ReadQueryStaticIr = ReadQueryStaticIr$1;
8
- type ReadQuery<S, V> = ReadQuery$2<S, V>;
9
- type ReadQueryCompiled<S, V> = ReadQueryCompiled$1<S, V>;
10
- type ReadQueryInput<S, V> = ReadQueryInput$1<S, V>;
11
- declare const isReadQuery: typeof isReadQuery$1;
12
- declare const make: <S, V>(spec: ReadQuery$2<S, V>) => ReadQuery$2<S, V>;
13
- declare const compile: <S, V>(input: ReadQueryInput$1<S, V>) => ReadQueryCompiled$1<S, V>;
14
-
15
- type ReadQuery$1_EqualsKind = EqualsKind;
16
- type ReadQuery$1_ReadLane = ReadLane;
17
- type ReadQuery$1_ReadProducer = ReadProducer;
18
- type ReadQuery$1_ReadQuery<S, V> = ReadQuery<S, V>;
19
- type ReadQuery$1_ReadQueryCompiled<S, V> = ReadQueryCompiled<S, V>;
20
- type ReadQuery$1_ReadQueryInput<S, V> = ReadQueryInput<S, V>;
21
- type ReadQuery$1_ReadQueryStaticIr = ReadQueryStaticIr;
22
- type ReadQuery$1_ReadsDigest = ReadsDigest;
23
- declare const ReadQuery$1_compile: typeof compile;
24
- declare const ReadQuery$1_isReadQuery: typeof isReadQuery;
25
- declare const ReadQuery$1_make: typeof make;
26
- declare namespace ReadQuery$1 {
27
- export { type ReadQuery$1_EqualsKind as EqualsKind, type ReadQuery$1_ReadLane as ReadLane, type ReadQuery$1_ReadProducer as ReadProducer, type ReadQuery$1_ReadQuery as ReadQuery, type ReadQuery$1_ReadQueryCompiled as ReadQueryCompiled, type ReadQuery$1_ReadQueryInput as ReadQueryInput, type ReadQuery$1_ReadQueryStaticIr as ReadQueryStaticIr, type ReadQuery$1_ReadsDigest as ReadsDigest, ReadQuery$1_compile as compile, ReadQuery$1_isReadQuery as isReadQuery, ReadQuery$1_make as make };
28
- }
29
-
30
- export { type EqualsKind as E, ReadQuery$1 as R, type ReadLane as a, type ReadProducer as b, type ReadsDigest as c, type ReadQueryStaticIr as d, type ReadQuery as e, type ReadQueryCompiled as f, type ReadQueryInput as g, compile as h, isReadQuery as i, make as m };
@@ -1,30 +0,0 @@
1
- import { R as ReadLane$1, a as ReadProducer$1, E as EqualsKind$1, b as ReadsDigest$1, c as ReadQueryStaticIr$1, d as ReadQuery$2, e as ReadQueryCompiled$1, f as ReadQueryInput$1, i as isReadQuery$1 } from './ReadQuery-SinbStGF.cjs';
2
-
3
- type ReadLane = ReadLane$1;
4
- type ReadProducer = ReadProducer$1;
5
- type EqualsKind = EqualsKind$1;
6
- type ReadsDigest = ReadsDigest$1;
7
- type ReadQueryStaticIr = ReadQueryStaticIr$1;
8
- type ReadQuery<S, V> = ReadQuery$2<S, V>;
9
- type ReadQueryCompiled<S, V> = ReadQueryCompiled$1<S, V>;
10
- type ReadQueryInput<S, V> = ReadQueryInput$1<S, V>;
11
- declare const isReadQuery: typeof isReadQuery$1;
12
- declare const make: <S, V>(spec: ReadQuery$2<S, V>) => ReadQuery$2<S, V>;
13
- declare const compile: <S, V>(input: ReadQueryInput$1<S, V>) => ReadQueryCompiled$1<S, V>;
14
-
15
- type ReadQuery$1_EqualsKind = EqualsKind;
16
- type ReadQuery$1_ReadLane = ReadLane;
17
- type ReadQuery$1_ReadProducer = ReadProducer;
18
- type ReadQuery$1_ReadQuery<S, V> = ReadQuery<S, V>;
19
- type ReadQuery$1_ReadQueryCompiled<S, V> = ReadQueryCompiled<S, V>;
20
- type ReadQuery$1_ReadQueryInput<S, V> = ReadQueryInput<S, V>;
21
- type ReadQuery$1_ReadQueryStaticIr = ReadQueryStaticIr;
22
- type ReadQuery$1_ReadsDigest = ReadsDigest;
23
- declare const ReadQuery$1_compile: typeof compile;
24
- declare const ReadQuery$1_isReadQuery: typeof isReadQuery;
25
- declare const ReadQuery$1_make: typeof make;
26
- declare namespace ReadQuery$1 {
27
- export { type ReadQuery$1_EqualsKind as EqualsKind, type ReadQuery$1_ReadLane as ReadLane, type ReadQuery$1_ReadProducer as ReadProducer, type ReadQuery$1_ReadQuery as ReadQuery, type ReadQuery$1_ReadQueryCompiled as ReadQueryCompiled, type ReadQuery$1_ReadQueryInput as ReadQueryInput, type ReadQuery$1_ReadQueryStaticIr as ReadQueryStaticIr, type ReadQuery$1_ReadsDigest as ReadsDigest, ReadQuery$1_compile as compile, ReadQuery$1_isReadQuery as isReadQuery, ReadQuery$1_make as make };
28
- }
29
-
30
- export { type EqualsKind as E, ReadQuery$1 as R, type ReadLane as a, type ReadProducer as b, type ReadsDigest as c, type ReadQueryStaticIr as d, type ReadQuery as e, type ReadQueryCompiled as f, type ReadQueryInput as g, compile as h, isReadQuery as i, make as m };
@@ -1,38 +0,0 @@
1
- type ReadLane = 'static' | 'dynamic';
2
- type ReadProducer = 'aot' | 'jit' | 'manual' | 'dynamic';
3
- type ReadQueryFallbackReason = 'missingDeps' | 'unsupportedSyntax' | 'unstableSelectorId';
4
- type EqualsKind = 'objectIs' | 'shallowStruct' | 'custom';
5
- interface ReadsDigest {
6
- readonly count: number;
7
- readonly hash: number;
8
- }
9
- interface ReadQueryStaticIr {
10
- readonly selectorId: string;
11
- readonly debugKey?: string;
12
- readonly lane: ReadLane;
13
- readonly producer: ReadProducer;
14
- readonly reads?: ReadonlyArray<string | number>;
15
- readonly readsDigest?: ReadsDigest;
16
- readonly fallbackReason?: ReadQueryFallbackReason;
17
- readonly equalsKind: EqualsKind;
18
- }
19
- interface ReadQuery<S, V> {
20
- readonly selectorId: string;
21
- readonly debugKey?: string;
22
- readonly reads: ReadonlyArray<string | number>;
23
- readonly select: (state: S) => V;
24
- readonly equalsKind: EqualsKind;
25
- readonly equals?: (previous: V, next: V) => boolean;
26
- }
27
- interface ReadQueryCompiled<S, V> extends ReadQuery<S, V> {
28
- readonly lane: ReadLane;
29
- readonly producer: ReadProducer;
30
- readonly readsDigest?: ReadsDigest;
31
- readonly fallbackReason?: ReadQueryFallbackReason;
32
- readonly staticIr: ReadQueryStaticIr;
33
- }
34
- type ReadQueryInput<S, V> = ((state: S) => V) | ReadQuery<S, V>;
35
- declare function isReadQuery<S, V>(input: ReadQueryInput<S, V>): input is ReadQuery<S, V>;
36
- declare function isReadQuery(input: unknown): input is ReadQuery<any, any>;
37
-
38
- export { type EqualsKind as E, type ReadLane as R, type ReadProducer as a, type ReadsDigest as b, type ReadQueryStaticIr as c, type ReadQuery as d, type ReadQueryCompiled as e, type ReadQueryInput as f, type ReadQueryFallbackReason as g, isReadQuery as i };
@@ -1,38 +0,0 @@
1
- type ReadLane = 'static' | 'dynamic';
2
- type ReadProducer = 'aot' | 'jit' | 'manual' | 'dynamic';
3
- type ReadQueryFallbackReason = 'missingDeps' | 'unsupportedSyntax' | 'unstableSelectorId';
4
- type EqualsKind = 'objectIs' | 'shallowStruct' | 'custom';
5
- interface ReadsDigest {
6
- readonly count: number;
7
- readonly hash: number;
8
- }
9
- interface ReadQueryStaticIr {
10
- readonly selectorId: string;
11
- readonly debugKey?: string;
12
- readonly lane: ReadLane;
13
- readonly producer: ReadProducer;
14
- readonly reads?: ReadonlyArray<string | number>;
15
- readonly readsDigest?: ReadsDigest;
16
- readonly fallbackReason?: ReadQueryFallbackReason;
17
- readonly equalsKind: EqualsKind;
18
- }
19
- interface ReadQuery<S, V> {
20
- readonly selectorId: string;
21
- readonly debugKey?: string;
22
- readonly reads: ReadonlyArray<string | number>;
23
- readonly select: (state: S) => V;
24
- readonly equalsKind: EqualsKind;
25
- readonly equals?: (previous: V, next: V) => boolean;
26
- }
27
- interface ReadQueryCompiled<S, V> extends ReadQuery<S, V> {
28
- readonly lane: ReadLane;
29
- readonly producer: ReadProducer;
30
- readonly readsDigest?: ReadsDigest;
31
- readonly fallbackReason?: ReadQueryFallbackReason;
32
- readonly staticIr: ReadQueryStaticIr;
33
- }
34
- type ReadQueryInput<S, V> = ((state: S) => V) | ReadQuery<S, V>;
35
- declare function isReadQuery<S, V>(input: ReadQueryInput<S, V>): input is ReadQuery<S, V>;
36
- declare function isReadQuery(input: unknown): input is ReadQuery<any, any>;
37
-
38
- export { type EqualsKind as E, type ReadLane as R, type ReadProducer as a, type ReadsDigest as b, type ReadQueryStaticIr as c, type ReadQuery as d, type ReadQueryCompiled as e, type ReadQueryInput as f, type ReadQueryFallbackReason as g, isReadQuery as i };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/Kernel.ts"],"sourcesContent":["import { Layer } from 'effect'\nimport type { Layer as LayerType } from 'effect'\nimport type * as Debug from './Debug.js'\nimport * as FullCutoverGate from './internal/runtime/core/FullCutoverGate.js'\nimport * as RuntimeKernel from './internal/runtime/core/RuntimeKernel.js'\nimport * as KernelRef from './internal/runtime/core/KernelRef.js'\nexport type { RuntimeServiceBuiltins } from './internal/runtime/core/RuntimeServiceBuiltins.js'\nexport { RuntimeServiceBuiltinsTag } from './internal/runtime/core/RuntimeServiceBuiltins.js'\n\nexport type KernelId = KernelRef.KernelId\n\nexport interface KernelImplementationRef extends KernelRef.KernelImplementationRef {}\n\nexport const defaultKernelImplementationRef = KernelRef.defaultKernelImplementationRef\n\nexport const isKernelImplementationRef = KernelRef.isKernelImplementationRef\n\nexport type RuntimeServiceOverride = RuntimeKernel.RuntimeServiceOverride\nexport type RuntimeServicesOverrides = RuntimeKernel.RuntimeServicesOverrides\nexport type RuntimeServiceBinding = RuntimeKernel.RuntimeServiceBinding\nexport type RuntimeServicesEvidence = RuntimeKernel.RuntimeServicesEvidence\n\nexport type RuntimeServiceImpl<Service> = RuntimeKernel.RuntimeServiceImpl<Service>\nexport type RuntimeServicesRegistry = RuntimeKernel.RuntimeServicesRegistry\n\nexport type CutoverCoverageMatrix = FullCutoverGate.CutoverCoverageMatrix\n\nexport const CutoverCoverageMatrix = FullCutoverGate.CutoverCoverageMatrix\n\nexport type FullCutoverGateMode = FullCutoverGate.FullCutoverGateMode\n\nexport type FullCutoverGateAnchor = FullCutoverGate.FullCutoverGateAnchor\n\nexport type FullCutoverGateVerdict = FullCutoverGate.FullCutoverGateVerdict\n\nexport type FullCutoverGateResult = FullCutoverGate.FullCutoverGateResult\n\nexport const evaluateFullCutoverGate = (args: {\n readonly mode: FullCutoverGateMode\n readonly requestedKernelId: KernelId\n readonly runtimeServicesEvidence: RuntimeServicesEvidence\n readonly coverageMatrix?: CutoverCoverageMatrix\n readonly diagnosticsLevel?: Debug.DiagnosticsLevel\n}): FullCutoverGateResult => {\n return FullCutoverGate.evaluateFullCutoverGate({\n mode: args.mode,\n requestedKernelId: args.requestedKernelId,\n runtimeServicesEvidence: args.runtimeServicesEvidence,\n coverageMatrix: args.coverageMatrix,\n diagnosticsLevel: args.diagnosticsLevel,\n })\n}\n\nexport interface KernelContractMetaAllowlistItem {\n readonly metaKey: string\n readonly reason?: string\n}\n\nexport const KernelContractMetaAllowlist = [] as const satisfies ReadonlyArray<KernelContractMetaAllowlistItem>\n\n/**\n * kernelLayer:\n * - Declares the requested kernel family in the current runtime tree.\n * - This does not prove full activation; fallback/mix is decided by RuntimeServicesEvidence.\n */\nexport const kernelLayer = (ref: KernelImplementationRef): LayerType.Layer<any, never, never> =>\n Layer.succeed(KernelRef.KernelImplementationRefTag, ref) as LayerType.Layer<any, never, never>\n\n/**\n * runtimeDefaultServicesOverridesLayer:\n * - Provides `runtime_default` scope `serviceId -> implId` overrides during ManagedRuntime assembly.\n * - Does not set servicesByModuleId by default (do not use moduleId as the default kernel selection granularity).\n */\nexport const runtimeDefaultServicesOverridesLayer = (\n services: RuntimeServicesOverrides,\n): LayerType.Layer<any, never, never> =>\n Layer.succeed(RuntimeKernel.RuntimeServicesRuntimeConfigTag, {\n services,\n }) as LayerType.Layer<any, never, never>\n\n/**\n * getRuntimeServicesEvidence:\n * - Reads RuntimeServicesEvidence installed on a ModuleRuntime (serviceId -> implId evidence).\n * - Public entry to avoid importing from `src/internal`.\n */\nexport const getRuntimeServicesEvidence = RuntimeKernel.getRuntimeServicesEvidence\n\n/**\n * getKernelImplementationRef:\n * - Reads KernelImplementationRef installed on a ModuleRuntime (requested kernel family).\n */\nexport const getKernelImplementationRef = KernelRef.getKernelImplementationRef\n\n/**\n * runtimeServicesRegistryLayer:\n * - Injects additional `serviceId -> impls` during runtime assembly (e.g. implementations provided by core-ng).\n */\nexport const runtimeServicesRegistryLayer = (registry: RuntimeServicesRegistry): LayerType.Layer<any, never, never> =>\n Layer.succeed(RuntimeKernel.RuntimeServicesRegistryTag, registry) as LayerType.Layer<any, never, never>\n\n/**\n * fullCutoverGateModeLayer:\n * - Controls cutover gate evaluation mode during runtime assembly (trial/fullCutover).\n * - The default path (048) should explicitly set fullCutover; trial-run/comparison may override to trial.\n */\nexport const fullCutoverGateModeLayer = (mode: FullCutoverGateMode): LayerType.Layer<any, never, never> =>\n Layer.succeed(RuntimeKernel.FullCutoverGateModeTag, mode) as LayerType.Layer<any, never, never>\n\n/**\n * isKernelFullyActivated:\n * - Minimal verdict for \"full cutover\": no fallbacks are allowed.\n */\nexport const isKernelFullyActivated = (evidence: RuntimeServicesEvidence): boolean =>\n !evidence.overridesApplied.some((s) => s.includes('fallback='))\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,+BAAAA;AAAA,EAAA;AAAA;AAAA,wCAAAC;AAAA,EAAA,+BAAAC;AAAA,EAAA;AAAA,oCAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA;AAAA,mCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,SAAS,aAAa;AAaf,IAAMC,kCAA2C;AAEjD,IAAMC,6BAAsC;AAY5C,IAAMC,yBAAwC;AAU9C,IAAMC,2BAA0B,CAAC,SAMX;AAC3B,SAAuB,wBAAwB;AAAA,IAC7C,MAAM,KAAK;AAAA,IACX,mBAAmB,KAAK;AAAA,IACxB,yBAAyB,KAAK;AAAA,IAC9B,gBAAgB,KAAK;AAAA,IACrB,kBAAkB,KAAK;AAAA,EACzB,CAAC;AACH;AAOO,IAAM,8BAA8B,CAAC;AAOrC,IAAM,cAAc,CAAC,QAC1B,MAAM,QAAkB,4BAA4B,GAAG;AAOlD,IAAM,uCAAuC,CAClD,aAEA,MAAM,QAAsB,iCAAiC;AAAA,EAC3D;AACF,CAAC;AAOI,IAAMC,8BAA2C;AAMjD,IAAMC,8BAAuC;AAM7C,IAAM,+BAA+B,CAAC,aAC3C,MAAM,QAAsB,4BAA4B,QAAQ;AAO3D,IAAM,2BAA2B,CAAC,SACvC,MAAM,QAAsB,wBAAwB,IAAI;AAMnD,IAAM,yBAAyB,CAAC,aACrC,CAAC,SAAS,iBAAiB,KAAK,CAAC,MAAM,EAAE,SAAS,WAAW,CAAC;","names":["CutoverCoverageMatrix","defaultKernelImplementationRef","evaluateFullCutoverGate","getKernelImplementationRef","getRuntimeServicesEvidence","isKernelImplementationRef","defaultKernelImplementationRef","isKernelImplementationRef","CutoverCoverageMatrix","evaluateFullCutoverGate","getRuntimeServicesEvidence","getKernelImplementationRef"]}
@@ -1,43 +0,0 @@
1
- // src/internal/runtime/core/env.ts
2
- import { Context, Layer } from "effect";
3
- var getNodeEnv = () => {
4
- try {
5
- const env = globalThis?.process?.env;
6
- return typeof env?.NODE_ENV === "string" ? env.NODE_ENV : void 0;
7
- } catch {
8
- return void 0;
9
- }
10
- };
11
- var isDevEnv = () => getNodeEnv() !== "production";
12
- var getDefaultStateTxnInstrumentation = () => isDevEnv() ? "full" : "light";
13
- var StateTransactionConfigTagImpl = class extends Context.Tag("@logixjs/core/StateTransactionRuntimeConfig")() {
14
- };
15
- var StateTransactionConfigTag = StateTransactionConfigTagImpl;
16
- var ReadQueryStrictGateConfigTagImpl = class extends Context.Tag("@logixjs/core/ReadQueryStrictGateRuntimeConfig")() {
17
- };
18
- var ReadQueryStrictGateConfigTag = ReadQueryStrictGateConfigTagImpl;
19
- var ReplayModeConfigTagImpl = class extends Context.Tag("@logixjs/core/ReplayModeConfig")() {
20
- };
21
- var ReplayModeConfigTag = ReplayModeConfigTagImpl;
22
- var StateTransactionOverridesTagImpl = class extends Context.Tag("@logixjs/core/StateTransactionOverrides")() {
23
- };
24
- var StateTransactionOverridesTag = StateTransactionOverridesTagImpl;
25
- var ConcurrencyPolicyTagImpl = class extends Context.Tag("@logixjs/core/ConcurrencyPolicy")() {
26
- };
27
- var ConcurrencyPolicyTag = ConcurrencyPolicyTagImpl;
28
- var ConcurrencyPolicyOverridesTagImpl = class extends Context.Tag("@logixjs/core/ConcurrencyPolicyOverrides")() {
29
- };
30
- var ConcurrencyPolicyOverridesTag = ConcurrencyPolicyOverridesTagImpl;
31
-
32
- export {
33
- getNodeEnv,
34
- isDevEnv,
35
- getDefaultStateTxnInstrumentation,
36
- StateTransactionConfigTag,
37
- ReadQueryStrictGateConfigTag,
38
- ReplayModeConfigTag,
39
- StateTransactionOverridesTag,
40
- ConcurrencyPolicyTag,
41
- ConcurrencyPolicyOverridesTag
42
- };
43
- //# sourceMappingURL=chunk-3QMIVH35.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/internal/runtime/core/env.ts"],"sourcesContent":["import { Context, Layer } from 'effect'\nimport type { TraitConvergeRequestedMode } from '../../state-trait/model.js'\nimport type { ReadQueryStrictGateConfig } from './ReadQuery.js'\n\n// Unified runtime env detection, avoiding bundlers inlining NODE_ENV at build time.\nexport const getNodeEnv = (): string | undefined => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const env = (globalThis as any)?.process?.env\n return typeof env?.NODE_ENV === 'string' ? env.NODE_ENV : undefined\n } catch {\n return undefined\n }\n}\n\nexport const isDevEnv = (): boolean => getNodeEnv() !== 'production'\n\nexport type StateTransactionInstrumentation = 'full' | 'light'\n\n/**\n * getDefaultStateTxnInstrumentation:\n * - Currently chooses default instrumentation by NODE_ENV:\n * - dev / test: full (keep patches and snapshots for debugging).\n * - production: light (keep minimal semantics to reduce overhead).\n * - May evolve with finer-grained overrides in Runtime.make / Module.make.\n */\nexport const getDefaultStateTxnInstrumentation = (): StateTransactionInstrumentation => (isDevEnv() ? 'full' : 'light')\n\n/**\n * Runtime-level StateTransaction config Service:\n * - Provided at the app layer by Logix.Runtime.make / AppRuntime.makeApp.\n * - ModuleRuntime.make can read runtime-level defaults from Env.\n *\n * Notes:\n * - instrumentation is only a runtime-level default.\n * - Explicit instrumentation in ModuleImpl / ModuleRuntimeOptions has higher priority.\n */\nexport interface StateTransactionRuntimeConfig {\n readonly instrumentation?: StateTransactionInstrumentation\n /**\n * StateTrait derived converge budget (ms):\n * - Exceeding the budget triggers a soft degrade (freeze derived fields, preserve base writes and 0/1 commit semantics).\n * - Default is 200ms (aligned with the 007 spec threshold).\n */\n readonly traitConvergeBudgetMs?: number\n /**\n * Auto-mode decision budget (ms):\n * - Only used during the decision phase when requestedMode=\"auto\".\n * - Exceeding the budget must immediately fall back to full (and record evidence).\n */\n readonly traitConvergeDecisionBudgetMs?: number\n /**\n * StateTrait converge scheduling strategy:\n * - full: full topo execution (current default; safest).\n * - dirty: minimal triggering based on dirtyPaths + deps in the txn window (requires accurate deps).\n */\n readonly traitConvergeMode?: TraitConvergeRequestedMode\n /**\n * 043: Trait converge time-slicing (explicit opt-in). Disabled by default.\n */\n readonly traitConvergeTimeSlicing?: TraitConvergeTimeSlicingPatch\n /**\n * 060: Txn Lanes (priority scheduling for transaction follow-up work). Enabled by default since 062.\n */\n readonly txnLanes?: TxnLanesPatch\n /**\n * Runtime-level per-module overrides (hotfix path):\n * - Only affects converge behavior for the specified moduleId.\n * - Lower priority than Provider overrides.\n */\n readonly traitConvergeOverridesByModuleId?: Readonly<Record<string, StateTransactionTraitConvergeOverrides>>\n /**\n * 060: Txn Lanes runtime_module overrides (hotfix / gradual tuning).\n * - Only affects the specified moduleId.\n * - Lower priority than Provider overrides.\n */\n readonly txnLanesOverridesByModuleId?: Readonly<Record<string, TxnLanesPatch>>\n}\n\nclass StateTransactionConfigTagImpl extends Context.Tag('@logixjs/core/StateTransactionRuntimeConfig')<\n StateTransactionConfigTagImpl,\n StateTransactionRuntimeConfig\n>() {}\n\nexport const StateTransactionConfigTag = StateTransactionConfigTagImpl\n\nexport type ReadQueryStrictGateRuntimeConfig = ReadQueryStrictGateConfig\n\nclass ReadQueryStrictGateConfigTagImpl extends Context.Tag('@logixjs/core/ReadQueryStrictGateRuntimeConfig')<\n ReadQueryStrictGateConfigTagImpl,\n ReadQueryStrictGateRuntimeConfig\n>() {}\n\nexport const ReadQueryStrictGateConfigTag = ReadQueryStrictGateConfigTagImpl\n\nexport type ReplayMode = 'live' | 'replay'\n\nexport interface ReplayModeConfig {\n readonly mode: ReplayMode\n}\n\nclass ReplayModeConfigTagImpl extends Context.Tag('@logixjs/core/ReplayModeConfig')<\n ReplayModeConfigTagImpl,\n ReplayModeConfig\n>() {}\n\nexport const ReplayModeConfigTag = ReplayModeConfigTagImpl\n\nexport const replayModeLayer = (mode: ReplayMode): Layer.Layer<ReplayModeConfigTagImpl, never, never> =>\n Layer.succeed(ReplayModeConfigTag, { mode })\n\nexport interface StateTransactionTraitConvergeOverrides {\n readonly traitConvergeMode?: TraitConvergeRequestedMode\n readonly traitConvergeBudgetMs?: number\n readonly traitConvergeDecisionBudgetMs?: number\n readonly traitConvergeTimeSlicing?: TraitConvergeTimeSlicingPatch\n}\n\nexport interface TxnLanesPatch {\n /**\n * enabled: whether Txn Lanes is enabled (default on since 062).\n * - undefined: default enabled (when not explicitly configured)\n * - false: disabled (returns to baseline behavior)\n * - true: enabled (only affects scheduling of follow-up work outside the transaction; transactions remain synchronous)\n */\n readonly enabled?: boolean\n /**\n * overrideMode: runtime temporary override (for debugging/rollback/comparison).\n * - forced_off: forcibly disables Txn Lanes (returns to baseline behavior).\n * - forced_sync: forces fully synchronous execution (ignores non-urgent deferral and time-slicing; used for comparisons).\n *\n * Notes:\n * - Override precedence follows StateTransactionOverrides: provider > runtime_module > runtime_default > builtin.\n * - Overrides must be explainable by evidence (see 060 LaneEvidence reasons).\n */\n readonly overrideMode?: 'forced_off' | 'forced_sync'\n /** non-urgent work loop slice budget (ms). */\n readonly budgetMs?: number\n /** Non-urgent backlog coalescing window (ms). */\n readonly debounceMs?: number\n /** Max lag upper bound (ms): exceeding it triggers an explainable starvation protection (forced catch-up). */\n readonly maxLagMs?: number\n /** Whether to allow coalescing/canceling intermediate non-urgent work (must preserve eventual consistency). */\n readonly allowCoalesce?: boolean\n /**\n * Yield strategy for the non-urgent work loop (progressive enhancement).\n * - baseline: uses only time budget + hard upper bound\n * - inputPending: when supported by browsers, also consults `navigator.scheduling.isInputPending`\n */\n readonly yieldStrategy?: 'baseline' | 'inputPending'\n}\n\nexport interface TraitConvergeTimeSlicingPatch {\n /**\n * enabled:\n * - false/undefined: disabled (default)\n * - true: enables time-slicing (only affects computed/link explicitly marked as deferred)\n */\n readonly enabled?: boolean\n /**\n * debounceMs: coalescing interval (ms) for the deferral window; merges high-frequency inputs into one deferred flush.\n */\n readonly debounceMs?: number\n /**\n * maxLagMs: max lag upper bound (ms); exceeding it triggers an explainable forced flush (starvation protection).\n */\n readonly maxLagMs?: number\n}\n\n/**\n * Provider-scoped StateTransactionOverrides (delta overrides):\n * - Used to inject more local overrides into a Provider subtree on top of inherited global runtime config.\n * - Override precedence: provider > runtime_module > runtime_default > builtin.\n */\nexport interface StateTransactionOverrides {\n readonly traitConvergeMode?: TraitConvergeRequestedMode\n readonly traitConvergeBudgetMs?: number\n readonly traitConvergeDecisionBudgetMs?: number\n readonly traitConvergeTimeSlicing?: TraitConvergeTimeSlicingPatch\n readonly traitConvergeOverridesByModuleId?: Readonly<Record<string, StateTransactionTraitConvergeOverrides>>\n /** 060: Txn Lanes provider-level overrides (delta overrides). */\n readonly txnLanes?: TxnLanesPatch\n /** 060: Txn Lanes provider_module overrides (by moduleId). */\n readonly txnLanesOverridesByModuleId?: Readonly<Record<string, TxnLanesPatch>>\n}\n\nclass StateTransactionOverridesTagImpl extends Context.Tag('@logixjs/core/StateTransactionOverrides')<\n StateTransactionOverridesTagImpl,\n StateTransactionOverrides\n>() {}\n\nexport const StateTransactionOverridesTag = StateTransactionOverridesTagImpl\n\nexport type ConcurrencyLimit = number | 'unbounded'\n\nexport interface ConcurrencyPolicyPatch {\n readonly concurrencyLimit?: ConcurrencyLimit\n readonly losslessBackpressureCapacity?: number\n readonly allowUnbounded?: boolean\n readonly pressureWarningThreshold?: {\n readonly backlogCount?: number\n readonly backlogDurationMs?: number\n }\n readonly warningCooldownMs?: number\n}\n\n/**\n * Runtime-level ConcurrencyPolicy:\n * - Provided at the app layer by Logix.Runtime.make / AppRuntime.makeApp.\n * - ModuleRuntime merges sources via a resolver (builtin/runtime_module/provider, etc.).\n *\n * Notes:\n * - overridesByModuleId is used for runtime_module hot-switching (hotfix / gradual tuning) and is lower priority than provider overrides.\n */\nexport interface ConcurrencyPolicy extends ConcurrencyPolicyPatch {\n readonly overridesByModuleId?: Readonly<Record<string, ConcurrencyPolicyPatch>>\n}\n\nclass ConcurrencyPolicyTagImpl extends Context.Tag('@logixjs/core/ConcurrencyPolicy')<\n ConcurrencyPolicyTagImpl,\n ConcurrencyPolicy\n>() {}\n\nexport const ConcurrencyPolicyTag = ConcurrencyPolicyTagImpl\n\n/**\n * Provider-scoped ConcurrencyPolicyOverrides (delta overrides):\n * - Used to inject more local overrides into a Provider subtree on top of inherited global runtime config.\n * - Override precedence: provider > runtime_module > runtime_default > builtin.\n */\nexport interface ConcurrencyPolicyOverrides extends ConcurrencyPolicyPatch {\n readonly overridesByModuleId?: Readonly<Record<string, ConcurrencyPolicyPatch>>\n}\n\nclass ConcurrencyPolicyOverridesTagImpl extends Context.Tag('@logixjs/core/ConcurrencyPolicyOverrides')<\n ConcurrencyPolicyOverridesTagImpl,\n ConcurrencyPolicyOverrides\n>() {}\n\nexport const ConcurrencyPolicyOverridesTag = ConcurrencyPolicyOverridesTagImpl\n"],"mappings":";AAAA,SAAS,SAAS,aAAa;AAKxB,IAAM,aAAa,MAA0B;AAClD,MAAI;AAEF,UAAM,MAAO,YAAoB,SAAS;AAC1C,WAAO,OAAO,KAAK,aAAa,WAAW,IAAI,WAAW;AAAA,EAC5D,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEO,IAAM,WAAW,MAAe,WAAW,MAAM;AAWjD,IAAM,oCAAoC,MAAwC,SAAS,IAAI,SAAS;AAqD/G,IAAM,gCAAN,cAA4C,QAAQ,IAAI,6CAA6C,EAGnG,EAAE;AAAC;AAEE,IAAM,4BAA4B;AAIzC,IAAM,mCAAN,cAA+C,QAAQ,IAAI,gDAAgD,EAGzG,EAAE;AAAC;AAEE,IAAM,+BAA+B;AAQ5C,IAAM,0BAAN,cAAsC,QAAQ,IAAI,gCAAgC,EAGhF,EAAE;AAAC;AAEE,IAAM,sBAAsB;AAgFnC,IAAM,mCAAN,cAA+C,QAAQ,IAAI,yCAAyC,EAGlG,EAAE;AAAC;AAEE,IAAM,+BAA+B;AA2B5C,IAAM,2BAAN,cAAuC,QAAQ,IAAI,iCAAiC,EAGlF,EAAE;AAAC;AAEE,IAAM,uBAAuB;AAWpC,IAAM,oCAAN,cAAgD,QAAQ,IAAI,0CAA0C,EAGpG,EAAE;AAAC;AAEE,IAAM,gCAAgC;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ScopeRegistry.ts"],"sourcesContent":["import { Context, Layer, ManagedRuntime } from 'effect'\nimport { isDevEnv } from './Env.js'\n\nexport type ScopeId = string\n\ntype AnyTag = Context.Tag<any, any>\n\ntype LeaseId = number\n\ntype Entry = {\n readonly leaseId: LeaseId\n readonly value: unknown\n}\n\nexport interface ScopeRegistry {\n /**\n * Registers a scope-bound value (multi-party registration supported; the last registration wins for get()).\n *\n * Returns a release function that revokes this registration.\n */\n readonly register: <A>(scopeId: ScopeId, token: Context.Tag<any, A>, value: A) => { readonly release: () => void }\n\n /**\n * Reads the current value for a token under a scope (the last registered value).\n */\n readonly get: <A>(scopeId: ScopeId, token: Context.Tag<any, A>) => A | undefined\n\n /**\n * Deletes all registrations of a token under a scope (regardless of who registered them).\n */\n readonly clearToken: (scopeId: ScopeId, token: AnyTag) => void\n\n /**\n * Clears all tokens under a scope.\n */\n readonly clearScope: (scopeId: ScopeId) => void\n\n /**\n * Clears the entire registry.\n */\n readonly clearAll: () => void\n}\n\nexport class ScopeRegistryTag extends Context.Tag('@logixjs/core/ScopeRegistry')<ScopeRegistryTag, ScopeRegistry>() {}\n\n/**\n * Stores a \"ManagedRuntime handle for a scope\" in ScopeRegistry.\n *\n * Typical use case: reusing the same runtime scope (Env/Scope/FiberRef) across React subtrees / independent roots\n * by registering the runtime under a scopeId and retrieving it elsewhere.\n */\nexport class ScopedRuntimeTag extends Context.Tag('@logixjs/core/ScopeRegistry/ScopedRuntime')<\n ScopedRuntimeTag,\n ManagedRuntime.ManagedRuntime<any, any>\n>() {}\n\nexport const internal = {\n ScopeRegistryTag,\n ScopedRuntimeTag,\n}\n\nconst makeRegistry = (): ScopeRegistry => {\n let nextLeaseId: LeaseId = 0\n\n // scopeId -> (token -> stack(entries))\n const scopes = new Map<ScopeId, Map<AnyTag, Array<Entry>>>()\n\n const getStack = (scopeId: ScopeId, token: AnyTag): Array<Entry> => {\n const byToken = scopes.get(scopeId)\n if (byToken) {\n const stack = byToken.get(token)\n if (stack) return stack\n const created: Array<Entry> = []\n byToken.set(token, created)\n return created\n }\n const created: Array<Entry> = []\n const createdByToken = new Map<AnyTag, Array<Entry>>()\n createdByToken.set(token, created)\n scopes.set(scopeId, createdByToken)\n return created\n }\n\n const tryDeleteEmpty = (scopeId: ScopeId, token: AnyTag): void => {\n const byToken = scopes.get(scopeId)\n if (!byToken) return\n const stack = byToken.get(token)\n if (stack && stack.length === 0) {\n byToken.delete(token)\n }\n if (byToken.size === 0) {\n scopes.delete(scopeId)\n }\n }\n\n const register: ScopeRegistry['register'] = (scopeId, token, value) => {\n nextLeaseId += 1\n const leaseId = nextLeaseId\n const stack = getStack(scopeId, token as AnyTag)\n\n // dev: multiple registrations for the same scopeId+token often indicate scopeId collisions or lifecycle leaks.\n // React / concurrent rendering / Provider rebuilds may cause short re-entrancy, so this is a soft warning.\n if (isDevEnv() && stack.length > 0) {\n // eslint-disable-next-line no-console\n console.debug(\n `[ScopeRegistry] Multiple registrations detected for scopeId=\"${scopeId}\". ` +\n `This is allowed (LIFO), but usually indicates scopeId collisions or missing cleanup.`,\n )\n }\n\n stack.push({ leaseId, value })\n\n const release = () => {\n const stack2 = scopes.get(scopeId)?.get(token as AnyTag)\n if (!stack2 || stack2.length === 0) return\n\n // Common case: LIFO release\n const last = stack2[stack2.length - 1]\n if (last && last.leaseId === leaseId) {\n stack2.pop()\n tryDeleteEmpty(scopeId, token as AnyTag)\n return\n }\n\n // Fallback: releasing from the middle (linear scan)\n const idx = stack2.findIndex((e) => e.leaseId === leaseId)\n if (idx >= 0) {\n stack2.splice(idx, 1)\n tryDeleteEmpty(scopeId, token as AnyTag)\n }\n }\n\n return { release }\n }\n\n const get: ScopeRegistry['get'] = (scopeId, token) => {\n const stack = scopes.get(scopeId)?.get(token as AnyTag)\n if (!stack || stack.length === 0) return undefined\n return stack[stack.length - 1]!.value as any\n }\n\n const clearToken: ScopeRegistry['clearToken'] = (scopeId, token) => {\n const byToken = scopes.get(scopeId)\n if (!byToken) return\n byToken.delete(token)\n if (byToken.size === 0) {\n scopes.delete(scopeId)\n }\n }\n\n const clearScope: ScopeRegistry['clearScope'] = (scopeId) => {\n scopes.delete(scopeId)\n }\n\n const clearAll: ScopeRegistry['clearAll'] = () => {\n scopes.clear()\n }\n\n return { register, get, clearToken, clearScope, clearAll }\n}\n\nexport const layer = (): Layer.Layer<ScopeRegistryTag, never, never> => Layer.succeed(ScopeRegistryTag, makeRegistry())\n"],"mappings":"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","names":["created"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/Actions.ts"],"sourcesContent":["import type { Context, Layer as EffectLayer, Stream, Effect } from 'effect'\n\n/**\n * Actions namespace (module-level):\n * - Provides Actions.Tag<A>: the action channel in Env (dispatch + actions$).\n * - Provides Actions.Layer<A>: a Layer shape that only carries that action channel.\n *\n * Type-level only; no additional runtime dependency.\n */\nexport type Tag<A> = Context.Tag<\n any,\n {\n dispatch: (a: A) => Effect.Effect<void>\n actions$: Stream.Stream<A>\n }\n>\n\nexport type Layer<A> = EffectLayer.Layer<Tag<A>, never, never>\n"],"mappings":";AAAA;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ModuleTag.ts","../src/internal/runtime/core/ModuleTraits.ts"],"sourcesContent":["import { Effect, FiberRef, Layer, Schema } from 'effect'\nimport * as Logic from './Logic.js'\nimport * as Action from './internal/action.js'\nimport * as ModuleFactory from './internal/runtime/ModuleFactory.js'\nimport type { FieldPath } from './internal/field-path.js'\nimport { mutateWithoutPatches, mutateWithPatchPaths } from './internal/runtime/core/mutativePatches.js'\nimport { getBoundInternals, setModuleTraitsProgram } from './internal/runtime/core/runtimeInternalsAccessor.js'\nimport * as Debug from './internal/runtime/core/DebugSink.js'\nimport * as LogicUnitMeta from './internal/runtime/core/LogicUnitMeta.js'\nimport type {\n ActionsFromMap,\n AnyModuleShape,\n AnySchema,\n BoundApi,\n ActionOf,\n ModuleImpl,\n ModuleLogic,\n ModuleShape,\n ModuleRuntime,\n ModuleTag,\n ModuleHandle,\n ModuleHandleUnion,\n StateChangeWithMeta,\n StateCommitMeta,\n StateCommitMode,\n StateCommitPriority,\n ReducersFromMap,\n StateOf,\n} from './internal/module.js'\nimport * as StateTrait from './StateTrait.js'\nimport type { StateTraitProgram } from './StateTrait.js'\nimport * as ModuleTraitsRegistry from './internal/debug/ModuleTraitsRegistry.js'\nimport * as ModuleTraits from './internal/runtime/core/ModuleTraits.js'\n\ntype NoInfer_<T> = [T][T extends any ? 0 : never]\n\n/**\n * Public exports for core type definitions such as ModuleTag / ModuleRuntime / ModuleImpl.\n *\n * Kept aligned with `.codex/skills/project-guide/references/runtime-logix/logix-core/api/02-module-and-logic-api.md`.\n * Concrete type definitions live in internal/module.ts; this module wires the factory implementation.\n */\nexport type {\n AnySchema,\n AnyModuleShape,\n ModuleShape,\n ModuleLogic,\n ModuleImpl,\n ModuleRuntime,\n ModuleTag,\n ModuleHandle,\n ModuleHandleUnion,\n StateOf,\n ActionsFromMap,\n ReducersFromMap,\n BoundApi,\n ActionOf,\n StateCommitMode,\n StateCommitPriority,\n StateCommitMeta,\n StateChangeWithMeta,\n} from './internal/module.js'\n\n/**\n * Reducer helper:\n * - `Reducer.mutate` provides the same mutative style as `$.state.mutate`.\n * - Internally uses mutative-based immutable updates to map \"in-place draft mutation\" into a pure `(state, action) => state`.\n *\n * @example\n *\n * const Counter = Logix.ModuleTag.make(\"Counter\", {\n * state: CounterState,\n * actions: CounterActions,\n * reducers: {\n * inc: Logix.ModuleTag.Reducer.mutate((draft, _payload) => {\n * draft.count += 1\n * }),\n * },\n * })\n *\n * yield* $.reducer(\n * \"setValue\",\n * Logix.ModuleTag.Reducer.mutate((draft, payload) => {\n * draft.value = payload\n * }),\n * )\n */\nexport const Reducer = {\n mutate:\n <S, A extends { readonly payload?: any }>(\n mutator: (draft: Logic.Draft<S>, payload: A['payload']) => void,\n ): ((state: S, action: A, sink?: (path: string | FieldPath) => void) => S) =>\n (state, action, sink) => {\n const payload = (action as any)?.payload as A['payload']\n if (!sink) {\n return mutateWithoutPatches(state as S, (draft) => {\n mutator(draft as Logic.Draft<S>, payload)\n })\n }\n\n const { nextState, patchPaths } = mutateWithPatchPaths(state as S, (draft) => {\n mutator(draft as Logic.Draft<S>, payload)\n })\n\n for (const path of patchPaths) {\n sink(path)\n }\n\n return nextState\n },\n\n mutateMap: <\n R extends Readonly<\n Record<string, ((state: any, action: any, sink?: (path: string | FieldPath) => void) => any) | undefined>\n >,\n >(mutators: {\n readonly [K in keyof NoInfer_<R>]?: (\n draft: Logic.Draft<Parameters<NonNullable<NoInfer_<R>[K]>>[0]>,\n payload: Parameters<NonNullable<NoInfer_<R>[K]>>[1] extends { readonly payload: infer P }\n ? P\n : Parameters<NonNullable<NoInfer_<R>[K]>>[1] extends { readonly payload?: infer P }\n ? P | undefined\n : never,\n ) => void\n }): R => {\n const out: Record<string, unknown> = {}\n for (const key of Object.keys(mutators)) {\n const mutator = (mutators as any)[key]\n if (typeof mutator !== 'function') continue\n out[key] = Reducer.mutate(mutator as any)\n }\n return out as any\n },\n}\n\n/**\n * A simplified Shape definition helper, designed for Action Maps.\n * @example type MyShape = Shape<typeof MyState, typeof MyActionMap>\n */\nexport type Shape<S extends AnySchema, M extends Record<string, AnySchema>> = ModuleShape<\n S,\n Schema.Schema<ActionsFromMap<Action.NormalizedActionTokens<M & Action.ActionDefs>>>,\n Action.NormalizedActionTokens<M & Action.ActionDefs>\n>\n\nconst makeImpl = <Id extends string, SSchema extends AnySchema, AMap extends Record<string, Action.AnyActionToken>>(\n id: Id,\n def: {\n readonly state: SSchema\n readonly actions: AMap\n readonly reducers?: ReducersFromMap<SSchema, AMap>\n },\n): ModuleTag<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>> =>\n ModuleFactory.Module(id, def) as ModuleTag<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>>\n\n/**\n * ModuleTag.make:\n * - Defines a domain module Tag using the given id and state/actions/reducers.\n * - The returned ModuleTag is both a Context.Tag and a factory carrying its Shape.\n *\n * Note: since 022, the old `Module` (Tag identity) was renamed to `ModuleTag`; use `Logix.Module` for module definition objects.\n */\nexport const make = <Id extends string, SSchema extends AnySchema, ADefs extends Action.ActionDefs>(\n id: Id,\n def: {\n readonly state: SSchema\n readonly actions: ADefs\n readonly reducers?: ReducersFromMap<SSchema, ADefs>\n /**\n * traits:\n * - Used to attach a StateTraitSpec (see specs/000-module-traits-runtime).\n * - The current implementation builds a Program during ModuleTag.make, and injects a setup-only Logic in `ModuleTag.implement`\n * to call `StateTrait.install`.\n * (Note: if you use `ModuleTag.live` to export a Layer and want trait behavior, call `StateTrait.install` explicitly in logics,\n * or use `ModuleTag.implement` instead.)\n */\n readonly traits?: unknown\n },\n): ModuleTag<\n Id,\n ModuleShape<\n SSchema,\n Schema.Schema<ActionsFromMap<Action.NormalizedActionTokens<ADefs>>>,\n Action.NormalizedActionTokens<ADefs>\n >\n> => {\n const actions = Action.normalizeActions(def.actions)\n const moduleTag = makeImpl(id, {\n state: def.state,\n actions,\n reducers: def.reducers as any,\n })\n\n type Sh = ModuleShape<\n SSchema,\n Schema.Schema<ActionsFromMap<Action.NormalizedActionTokens<ADefs>>>,\n Action.NormalizedActionTokens<ADefs>\n >\n\n const stateSchema = def.state as Schema.Schema<any, any>\n const moduleTraitsSpec = def.traits as StateTrait.StateTraitSpec<any> | undefined\n const baseProgram: StateTraitProgram<any> | undefined = moduleTraitsSpec\n ? StateTrait.build(stateSchema as any, moduleTraitsSpec as any)\n : undefined\n\n if (baseProgram) {\n // For TraitLifecycle/Debug/Devtools reads (definition-side hidden slot).\n setModuleTraitsProgram(moduleTag as any, baseProgram)\n ModuleTraitsRegistry.registerModuleProgram(id, baseProgram as StateTraitProgram<any>)\n }\n\n // 023: consolidate the trait \"declaration/merge entry points\" into the setup phase:\n // - module-level traits register as contributions first;\n // - logic-level declares via $.traits.declare;\n // - finally, finalize → freeze → build/install in one shot.\n\n const makeModuleTraitsContributionLogic = (traits: unknown): ModuleLogic<Sh, never, never> => {\n const logic = moduleTag.logic(($) => ({\n setup: Effect.sync(() => {\n if (!traits || typeof traits !== 'object') return\n // module-level provenance uses moduleId as the stable anchor\n // (aligned with 023 data-model: originType=module, originId=moduleId).\n // Note: traitsSpec still reuses StateTraitSpec; do not introduce a second IR.\n const internals = getBoundInternals($ as any)\n internals.traits.registerModuleTraitsContribution({\n traits,\n provenance: {\n originType: 'module',\n originId: id,\n originIdKind: 'explicit',\n originLabel: `module:${id}`,\n },\n })\n }),\n run: Effect.void,\n })) as ModuleLogic<Sh, never, never>\n\n LogicUnitMeta.attachLogicUnitMeta(logic as any, {\n id: '__logix_internal:traits:module_contrib',\n kind: 'internal',\n name: 'traits:module_contrib',\n moduleId: id,\n })\n return logic\n }\n\n const makeFinalizeTraitsLogic = (): ModuleLogic<Sh, never, never> => {\n const logic = moduleTag.logic(($) => ({\n setup: Effect.gen(function* () {\n const internals = getBoundInternals($ as any)\n const diagnosticsLevel = yield* FiberRef.get(Debug.currentDiagnosticsLevel)\n\n const contributions = internals.traits.getModuleTraitsContributions()\n let merged: ModuleTraits.TraitSpec\n let snapshot: ModuleTraits.ModuleTraitsSnapshot\n\n try {\n ;({ merged, snapshot } = ModuleTraits.finalizeTraitContributions({\n moduleId: id,\n contributions,\n }))\n } catch (cause) {\n if (\n diagnosticsLevel !== 'off' &&\n cause &&\n typeof cause === 'object' &&\n (cause as any)._tag === 'ModuleTraitsConflictError'\n ) {\n const conflicts = Array.isArray((cause as any).conflicts)\n ? ((cause as any).conflicts as ReadonlyArray<unknown>)\n : []\n const traitIds = conflicts\n .map((c: any) => (c && typeof c === 'object' ? (c as any).traitId : undefined))\n .filter((t): t is string => typeof t === 'string' && t.length > 0)\n .slice(0, 20)\n\n const data =\n diagnosticsLevel === 'full'\n ? {\n conflictCount: conflicts.length,\n conflicts,\n }\n : {\n conflictCount: conflicts.length,\n traitIds,\n }\n\n yield* Debug.record({\n type: 'trace:module:traits:conflict',\n moduleId: id,\n instanceId: internals.instanceId,\n data,\n } as any)\n }\n\n throw cause\n }\n\n internals.traits.setModuleTraitsSnapshot(snapshot)\n internals.traits.freezeModuleTraits()\n\n if (diagnosticsLevel !== 'off') {\n const data =\n diagnosticsLevel === 'full'\n ? {\n digest: snapshot.digest,\n count: snapshot.traits.length,\n traits: snapshot.traits,\n provenanceIndex: snapshot.provenanceIndex,\n }\n : {\n digest: snapshot.digest,\n count: snapshot.traits.length,\n }\n\n yield* Debug.record({\n type: 'trace:module:traits',\n moduleId: id,\n instanceId: internals.instanceId,\n data,\n } as any)\n }\n\n if (Object.keys(merged).length === 0) {\n return\n }\n\n const onlyModuleLevel = contributions.length === 1 && contributions[0]?.provenance?.originType === 'module'\n\n // Build a one-shot Program from the final merged Spec, and install it during initialization.\n // - If there is only a module-level contribution, reuse the program built in ModuleTag.make (useful for Debug/TraitLifecycle).\n const program =\n onlyModuleLevel && baseProgram ? baseProgram : StateTrait.build(stateSchema as any, merged as any)\n\n // For TraitLifecycle/Debug/Devtools reads (definition-side hidden slot).\n setModuleTraitsProgram(moduleTag as any, program)\n ModuleTraitsRegistry.registerModuleProgram(id, program as StateTraitProgram<any>)\n\n yield* StateTrait.install($ as unknown as BoundApi<any, any>, program)\n }),\n run: Effect.void,\n })) as ModuleLogic<Sh, never, never>\n\n LogicUnitMeta.attachLogicUnitMeta(logic as any, {\n id: '__logix_internal:traits:finalize',\n kind: 'internal',\n name: 'traits:finalize',\n moduleId: id,\n })\n\n return logic\n }\n\n // Wrap implement: inject (1) optional module-level contribution logic, and (2) required finalize+install logic.\n const originalImplement = moduleTag.implement\n ;(moduleTag as any).implement = (<R = never>(config: {\n initial: StateOf<typeof moduleTag.shape>\n logics?: Array<ModuleLogic<typeof moduleTag.shape, R, any>>\n imports?: ReadonlyArray<Layer.Layer<any, any, any> | ModuleImpl<any, AnyModuleShape, any>>\n processes?: ReadonlyArray<Effect.Effect<void, any, any>>\n }) => {\n const userLogics = (config.logics ?? []) as Array<ModuleLogic<typeof moduleTag.shape, R, any>>\n\n const moduleLevel = def.traits ? [makeModuleTraitsContributionLogic(def.traits) as any] : []\n\n const finalize = makeFinalizeTraitsLogic() as ModuleLogic<typeof moduleTag.shape, R, any>\n\n const mergedLogics = [...moduleLevel, ...userLogics, finalize]\n\n return originalImplement<R>({\n ...config,\n logics: mergedLogics,\n })\n }) as typeof moduleTag.implement\n\n return moduleTag\n}\n","import { fnv1a32, stableStringify } from '../../digest.js'\n\nexport type TraitId = string\n\nexport type TraitOriginType = 'module' | 'logicUnit'\nexport type TraitOriginIdKind = 'explicit' | 'derived'\n\nexport interface TraitProvenance {\n readonly originType: TraitOriginType\n readonly originId: string\n readonly originIdKind: TraitOriginIdKind\n /**\n * Human-readable label for Devtools/error messages (e.g. \"logicUnit:Profile#1\").\n */\n readonly originLabel: string\n /**\n * Optional location summary (e.g. file path / callsite); for navigation only and not used for semantic decisions.\n */\n readonly path?: string\n}\n\n/**\n * TraitSpec:\n * - Minimal representation of \"trait declarations\": a record keyed by traitId.\n * - The concrete value shape is defined by the specific trait system (e.g. StateTraitSpec).\n * - Value serializability is not constrained here (runtime install may depend on functions), but snapshots/evidence exports\n * must only include serializable subsets.\n */\nexport type TraitSpec = object\n\nexport interface TraitContribution {\n readonly traits: TraitSpec\n readonly provenance: TraitProvenance\n}\n\nexport interface ModuleTraitItem {\n readonly traitId: TraitId\n readonly name: string\n readonly description?: string\n}\n\nexport type TraitConflictKind = 'duplicate_traitId' | 'missing_requires' | 'excludes_violation'\n\nexport interface TraitConflict {\n readonly kind: TraitConflictKind\n readonly traitId: TraitId\n readonly sources: ReadonlyArray<TraitProvenance>\n readonly missing?: ReadonlyArray<TraitId>\n readonly present?: ReadonlyArray<TraitId>\n}\n\nexport class ModuleTraitsConflictError extends Error {\n readonly _tag = 'ModuleTraitsConflictError'\n\n constructor(\n readonly moduleId: string,\n readonly conflicts: ReadonlyArray<TraitConflict>,\n ) {\n super(\n [\n `[ModuleTraitsConflictError] Conflicting traitIds found (moduleId=${moduleId}).`,\n ...conflicts.map((c) =>\n c.kind === 'duplicate_traitId'\n ? `- duplicate ${c.traitId}: ${c.sources.map((s) => `${s.originType}:${s.originId}`).join(', ')}`\n : c.kind === 'missing_requires'\n ? `- missing requires for ${c.traitId}: ${(c.missing ?? []).join(', ')}; sources=${c.sources\n .map((s) => `${s.originType}:${s.originId}`)\n .join(', ')}`\n : `- excludes violation for ${c.traitId}: present=${(c.present ?? []).join(', ')}; sources=${c.sources\n .map((s) => `${s.originType}:${s.originId}`)\n .join(', ')}`,\n ),\n ].join('\\n'),\n )\n }\n}\n\nexport interface ModuleTraitsSnapshot {\n readonly moduleId: string\n readonly digest: string\n readonly traits: ReadonlyArray<ModuleTraitItem>\n readonly provenanceIndex: Record<TraitId, TraitProvenance>\n}\n\nconst toProvenanceKey = (p: TraitProvenance): string =>\n `${p.originType}:${p.originId}:${p.originIdKind}:${p.originLabel}:${p.path ?? ''}`\n\nconst compareProvenance = (a: TraitProvenance, b: TraitProvenance): number => {\n const type = a.originType.localeCompare(b.originType)\n if (type !== 0) return type\n const id = a.originId.localeCompare(b.originId)\n if (id !== 0) return id\n const kind = a.originIdKind.localeCompare(b.originIdKind)\n if (kind !== 0) return kind\n const label = a.originLabel.localeCompare(b.originLabel)\n if (label !== 0) return label\n return String(a.path ?? '').localeCompare(String(b.path ?? ''))\n}\n\nconst originTypeOrder = (t: TraitOriginType): number => (t === 'module' ? 0 : 1)\n\nconst compareTraitIdByProvenance = (\n a: { readonly traitId: TraitId; readonly provenance: TraitProvenance },\n b: { readonly traitId: TraitId; readonly provenance: TraitProvenance },\n): number => {\n const ta = originTypeOrder(a.provenance.originType) - originTypeOrder(b.provenance.originType)\n if (ta !== 0) return ta\n const oa = a.provenance.originId.localeCompare(b.provenance.originId)\n if (oa !== 0) return oa\n return a.traitId.localeCompare(b.traitId)\n}\n\nconst extractStringArray = (value: unknown): ReadonlyArray<string> => {\n if (!Array.isArray(value)) return []\n const out: Array<string> = []\n for (const v of value) {\n if (typeof v !== 'string') continue\n const s = v.trim()\n if (!s) continue\n out.push(s)\n }\n return out\n}\n\nconst getTraitRequires = (value: unknown): ReadonlyArray<TraitId> => {\n if (!value || typeof value !== 'object') return []\n const direct = extractStringArray((value as any).requires)\n return direct\n}\n\nconst getTraitExcludes = (value: unknown): ReadonlyArray<TraitId> => {\n if (!value || typeof value !== 'object') return []\n const direct = extractStringArray((value as any).excludes)\n return direct\n}\n\nconst getTraitName = (traitId: TraitId, value: unknown): string => {\n if (value && typeof value === 'object') {\n const n = (value as any).name\n if (typeof n === 'string' && n.trim().length > 0) return n.trim()\n }\n return traitId\n}\n\nconst getTraitDescription = (value: unknown): string | undefined => {\n if (value && typeof value === 'object') {\n const d = (value as any).description\n if (typeof d === 'string' && d.trim().length > 0) return d.trim()\n }\n return undefined\n}\n\nexport const finalizeTraitContributions = (args: {\n readonly moduleId: string\n readonly contributions: ReadonlyArray<TraitContribution>\n}): { readonly merged: TraitSpec; readonly snapshot: ModuleTraitsSnapshot } => {\n const traitById = new Map<TraitId, { readonly value: unknown; readonly provenance: TraitProvenance }>()\n\n const duplicateSources = new Map<TraitId, Array<TraitProvenance>>()\n\n const contributions = [...args.contributions].sort((a, b) => compareProvenance(a.provenance, b.provenance))\n\n for (const c of contributions) {\n const traits = c.traits\n if (!traits || typeof traits !== 'object') continue\n for (const traitId of Object.keys(traits).sort((a, b) => a.localeCompare(b))) {\n const value = (traits as Record<string, unknown>)[traitId]\n if (value === undefined) continue\n\n const prev = traitById.get(traitId)\n if (!prev) {\n traitById.set(traitId, { value, provenance: c.provenance })\n continue\n }\n\n const sources = duplicateSources.get(traitId) ?? [prev.provenance]\n sources.push(c.provenance)\n duplicateSources.set(traitId, sources)\n }\n }\n\n const conflicts: Array<TraitConflict> = []\n const registerConflict = (conflict: TraitConflict) => {\n const unique = new Map<string, TraitProvenance>()\n for (const s of conflict.sources) {\n unique.set(toProvenanceKey(s), s)\n }\n conflicts.push({\n ...conflict,\n sources: Array.from(unique.values()).sort(compareProvenance),\n })\n }\n\n // 1) duplicate traitId conflicts\n for (const traitId of Array.from(duplicateSources.keys()).sort((a, b) => a.localeCompare(b))) {\n registerConflict({\n kind: 'duplicate_traitId',\n traitId,\n sources: duplicateSources.get(traitId) ?? [],\n })\n }\n\n const merged: Record<string, unknown> = {}\n const provenanceIndex: Record<string, TraitProvenance> = {}\n const traits: Array<ModuleTraitItem> = []\n\n const entries: Array<{ readonly traitId: TraitId; readonly value: unknown; readonly provenance: TraitProvenance }> =\n []\n for (const traitId of traitById.keys()) {\n const entry = traitById.get(traitId)\n if (!entry) continue\n entries.push({ traitId, value: entry.value, provenance: entry.provenance })\n }\n\n const ids = entries\n .slice()\n .sort(compareTraitIdByProvenance)\n .map((e) => e.traitId)\n\n for (const traitId of ids) {\n const entry = traitById.get(traitId)\n if (!entry) continue\n merged[traitId] = entry.value\n provenanceIndex[traitId] = entry.provenance\n traits.push({\n traitId,\n name: getTraitName(traitId, entry.value),\n description: getTraitDescription(entry.value),\n })\n }\n\n // 2) consistency checks (FR-007): requires / excludes\n const present = new Set(ids)\n\n for (const traitId of ids) {\n const entry = traitById.get(traitId)\n if (!entry) continue\n\n const requires = getTraitRequires(entry.value)\n if (requires.length > 0) {\n const missing = requires.filter((r) => !present.has(r))\n if (missing.length > 0) {\n registerConflict({\n kind: 'missing_requires',\n traitId,\n missing: Array.from(new Set(missing)).sort((a, b) => a.localeCompare(b)),\n sources: [entry.provenance],\n })\n }\n }\n\n const excludes = getTraitExcludes(entry.value)\n if (excludes.length > 0) {\n const presentExcluded = excludes.filter((e) => present.has(e))\n if (presentExcluded.length > 0) {\n const otherSources: Array<TraitProvenance> = []\n for (const otherId of presentExcluded) {\n const other = traitById.get(otherId)\n if (other) otherSources.push(other.provenance)\n }\n registerConflict({\n kind: 'excludes_violation',\n traitId,\n present: Array.from(new Set(presentExcluded)).sort((a, b) => a.localeCompare(b)),\n sources: [entry.provenance, ...otherSources],\n })\n }\n }\n }\n\n if (conflicts.length > 0) {\n const kindOrder: Record<TraitConflictKind, number> = {\n duplicate_traitId: 0,\n missing_requires: 1,\n excludes_violation: 2,\n }\n conflicts.sort((a, b) => {\n const k = kindOrder[a.kind] - kindOrder[b.kind]\n if (k !== 0) return k\n return a.traitId.localeCompare(b.traitId)\n })\n throw new ModuleTraitsConflictError(args.moduleId, conflicts)\n }\n\n const digestBase = {\n moduleId: args.moduleId,\n traits,\n provenanceIndex,\n } as const\n\n const digest = `mtraits:023:${fnv1a32(stableStringify(digestBase))}`\n\n return {\n merged,\n snapshot: {\n moduleId: args.moduleId,\n digest,\n traits,\n provenanceIndex,\n },\n }\n}\n"],"mappings":"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","names":["traits"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/TraitLifecycle.ts","../src/internal/trait-lifecycle/index.ts"],"sourcesContent":["// TraitLifecycle: shared lower-level interface for Form/Query (@logixjs/core/TraitLifecycle, Phase 2 placeholder).\n//\n// - Exposes serializable FieldRef and unified request protocols.\n// - Concrete implementation lives in internal/trait-lifecycle/*; this module provides public API + type exports.\n\nimport type { BoundApi } from './Bound.js'\nimport { Effect } from 'effect'\nimport * as Internal from './internal/trait-lifecycle/index.js'\n\nexport type FieldRef = Internal.FieldRef\nexport type ValidateMode = Internal.ValidateRequest['mode']\nexport type ValidateRequest = Internal.ValidateRequest\nexport type ExecuteRequest = Internal.ExecuteRequest\nexport type CleanupRequest = Internal.CleanupRequest\nexport type SourceWiring = ReturnType<typeof Internal.makeSourceWiring>\n\nexport const Ref = Internal.Ref\n\nexport const scopedValidate = (bound: BoundApi<any, any>, request: ValidateRequest): Effect.Effect<void, never, any> =>\n Internal.scopedValidate(bound as any, request)\n\nexport const scopedExecute = (bound: BoundApi<any, any>, request: ExecuteRequest): Effect.Effect<void, never, any> =>\n Internal.scopedExecute(bound as any, request)\n\nexport const cleanup = (bound: BoundApi<any, any>, request: CleanupRequest): Effect.Effect<void, never, any> =>\n Internal.cleanup(bound as any, request)\n\nexport const makeSourceWiring = (bound: BoundApi<any, any>, module: unknown): SourceWiring =>\n Internal.makeSourceWiring(bound as any, module)\n\nexport const install = (bound: BoundApi<any, any>): Effect.Effect<void, never, any> => Internal.install(bound as any)\n","import { Effect, FiberRef, Option } from 'effect'\nimport type { BoundApi } from '../runtime/core/module.js'\nimport * as TaskRunner from '../runtime/core/TaskRunner.js'\nimport * as ReplayLog from '../runtime/core/ReplayLog.js'\nimport type { CleanupRequest, ExecuteRequest, FieldRef, ValidateRequest } from './model.js'\nimport type * as StateTraitValidate from '../state-trait/validate.js'\nimport * as RowId from '../state-trait/rowid.js'\nimport { getBoundInternals, getModuleTraitsProgram } from '../runtime/core/runtimeInternalsAccessor.js'\n\nexport type { CleanupRequest, ExecuteRequest, FieldRef, ValidateRequest }\n\n/**\n * Ref: builders for FieldRef (serializable and comparable).\n *\n * Notes:\n * - Phase 2 provides only minimal constructors.\n * - Array optimizations (RowID/trackBy) and richer ref semantics will land in later phases.\n */\nexport const Ref = {\n field: (path: string): FieldRef => ({ kind: 'field', path }),\n list: (path: string, listIndexPath?: ReadonlyArray<number>): FieldRef => ({\n kind: 'list',\n path,\n listIndexPath,\n }),\n item: (\n path: string,\n index: number,\n options?: { readonly listIndexPath?: ReadonlyArray<number>; readonly field?: string },\n ): FieldRef => ({\n kind: 'item',\n path,\n index,\n listIndexPath: options?.listIndexPath,\n field: options?.field,\n }),\n /**\n * fromValuePath:\n * - Parse a valuePath (e.g. \"items.0.warehouseId\") into a FieldRef.\n * - Supports a single index (required) and multi-level indices via listIndexPath (optional but recommended).\n *\n * Conventions:\n * - If numeric segments are present, return an item ref (the last index becomes item.index; preceding indices go into listIndexPath).\n * - If no numeric segments are present:\n * - \"items[]\" (pattern list root) returns a list ref.\n * - Otherwise return a field ref (including pattern fields like \"items[].x\").\n * - \"$root\" / empty string returns the root ref.\n */\n fromValuePath: (valuePath: string): FieldRef => {\n const raw = typeof valuePath === 'string' ? valuePath.trim() : ''\n if (!raw || raw === '$root') return Ref.root()\n\n const segments = raw.split('.').filter(Boolean)\n if (segments.length === 0) return Ref.root()\n\n const isIndex = (seg: string): boolean => /^[0-9]+$/.test(seg)\n const stripPattern = (seg: string): string => (seg.endsWith('[]') ? seg.slice(0, -2) : seg)\n\n const indexPositions: Array<{ readonly pos: number; readonly index: number }> = []\n for (let i = 0; i < segments.length; i++) {\n const seg = segments[i]!\n if (!isIndex(seg)) continue\n const index = Number(seg)\n if (!Number.isFinite(index) || index < 0) return Ref.field(raw)\n indexPositions.push({ pos: i, index })\n }\n\n // valuePath with indices => item ref\n if (indexPositions.length > 0) {\n const last = indexPositions[indexPositions.length - 1]!\n const listIndexPath = indexPositions.slice(0, -1).map((p) => p.index)\n\n const listPath = segments\n .slice(0, last.pos)\n .filter((seg) => !isIndex(seg))\n .map(stripPattern)\n .join('.')\n\n if (!listPath) return Ref.field(raw)\n\n const fieldRest = segments\n .slice(last.pos + 1)\n .map(stripPattern)\n .join('.')\n\n return Ref.item(listPath, last.index, {\n listIndexPath: listIndexPath.length > 0 ? listIndexPath : undefined,\n field: fieldRest ? fieldRest : undefined,\n })\n }\n\n // pattern list root => list ref\n if (segments.some((s) => s.includes('[]'))) {\n const last = segments[segments.length - 1]!\n if (last.endsWith('[]')) {\n return Ref.list(segments.map(stripPattern).join('.'))\n }\n }\n\n return Ref.field(raw)\n },\n root: (): FieldRef => ({ kind: 'root' }),\n} as const\n\n/**\n * scopedValidate (placeholder): in later phases this will compute the minimal set via ReverseClosure and write back into the error tree.\n */\nexport const scopedValidate = (bound: BoundApi<any, any>, request: ValidateRequest): Effect.Effect<void, never, any> =>\n Effect.gen(function* () {\n let internals: ReturnType<typeof getBoundInternals> | undefined\n try {\n internals = getBoundInternals(bound as any)\n } catch {\n return\n }\n\n const enqueue = internals.traits.enqueueStateTraitValidateRequest as unknown as\n | ((r: StateTraitValidate.ScopedValidateRequest) => void)\n | undefined\n\n if (!enqueue) return\n\n const toTarget = (ref: FieldRef): StateTraitValidate.ValidateTarget => {\n if (ref.kind === 'root') return { kind: 'root' }\n if (ref.kind === 'field') return { kind: 'field', path: ref.path }\n if (ref.kind === 'list') {\n return {\n kind: 'list',\n path: ref.path,\n ...(ref.listIndexPath ? { listIndexPath: ref.listIndexPath } : {}),\n }\n }\n return {\n kind: 'item',\n path: ref.path,\n index: ref.index,\n ...(ref.listIndexPath ? { listIndexPath: ref.listIndexPath } : {}),\n field: ref.field,\n }\n }\n\n const internal: StateTraitValidate.ScopedValidateRequest = {\n mode: request.mode as any,\n target: toTarget(request.target),\n }\n\n const inTxn = yield* FiberRef.get(TaskRunner.inSyncTransactionFiber)\n if (inTxn) {\n enqueue(internal)\n return\n }\n\n yield* internals.txn.runWithStateTransaction({ kind: 'trait', name: 'scopedValidate', details: request }, () =>\n Effect.sync(() => {\n enqueue(internal)\n }),\n )\n })\n\n/**\n * scopedExecute (placeholder): a unified execution entrypoint for query/resource actions (refresh/invalidate, etc.).\n */\nexport const scopedExecute = (bound: BoundApi<any, any>, request: ExecuteRequest): Effect.Effect<void, never, any> =>\n Effect.gen(function* () {\n if (request.kind === 'source:refresh') {\n const toFieldPath = (ref: FieldRef): string | undefined => {\n if (ref.kind === 'root') return undefined\n if (ref.kind === 'field' || ref.kind === 'list') return ref.path\n const base = `${ref.path}[]`\n return ref.field ? `${base}.${ref.field}` : base\n }\n\n const fieldPath = toFieldPath(request.target)\n if (!fieldPath) {\n return\n }\n\n yield* bound.traits.source.refresh(fieldPath) as Effect.Effect<void, never, any>\n return\n }\n\n if (request.kind !== 'query:invalidate') {\n return\n }\n\n const replayLogOpt = yield* Effect.serviceOption(ReplayLog.ReplayLog)\n if (Option.isNone(replayLogOpt)) {\n return\n }\n\n let moduleId: string | undefined\n let instanceId: string | undefined\n try {\n const internals = getBoundInternals(bound as any)\n moduleId = internals.moduleId\n instanceId = internals.instanceId\n } catch {\n moduleId = undefined\n instanceId = undefined\n }\n\n yield* replayLogOpt.value.record({\n _tag: 'InvalidateRequest',\n timestamp: Date.now(),\n moduleId,\n instanceId,\n kind: 'query',\n target: 'query',\n meta: request.request,\n })\n })\n\n/**\n * cleanup (placeholder): deterministic cleanup under structural changes (errors/ui/resources).\n */\nexport const cleanup = (bound: BoundApi<any, any>, request: CleanupRequest): Effect.Effect<void, never, any> =>\n Effect.gen(function* () {\n const apply = () =>\n bound.state.mutate((draft) => {\n const clearAt = (root: 'errors' | 'ui', path: string): void => {\n if (!path) return\n RowId.unsetAtPathMutating(draft, `${root}.${path}`)\n }\n\n if (request.kind === 'field:unregister') {\n const target = request.target\n if (target.kind !== 'field') return\n clearAt('errors', target.path)\n clearAt('ui', target.path)\n return\n }\n\n if (request.kind === 'list:item:remove') {\n const target = request.target\n if (target.kind !== 'item') return\n const base = `${target.path}.${target.index}`\n const path = target.field ? `${base}.${target.field}` : base\n clearAt('errors', path)\n clearAt('ui', path)\n return\n }\n\n if (request.kind === 'list:reorder') {\n // Reorder does not change the external index semantics by itself.\n // Alignment of errors/ui should be handled by domain reducers or higher-level logic; keep it a no-op here.\n return\n }\n })\n\n const inTxn = yield* FiberRef.get(TaskRunner.inSyncTransactionFiber)\n if (inTxn) {\n return yield* apply()\n }\n\n let runWithTxn:\n | ((\n origin: { readonly kind: string; readonly name?: string; readonly details?: unknown },\n body: () => Effect.Effect<void, never, any>,\n ) => Effect.Effect<void, never, any>)\n | undefined\n\n try {\n const internals = getBoundInternals(bound as any)\n runWithTxn = (origin, body) => internals.txn.runWithStateTransaction(origin as any, body)\n } catch {\n runWithTxn = undefined\n }\n\n if (!runWithTxn) {\n return yield* apply()\n }\n\n return yield* runWithTxn({ kind: 'trait', name: 'cleanup', details: request }, apply)\n })\n\ntype SourceWiring = {\n readonly setup: Effect.Effect<void, never, any>\n readonly refreshOnKeyChange: (changedPath: string) => Effect.Effect<void, never, any>\n}\n\nconst isAuxRootPath = (path: string): boolean =>\n path === 'errors' || path === 'ui' || path.startsWith('errors.') || path.startsWith('ui.')\n\nconst toPatternPath = (path: string): string => {\n if (!path) return path\n const segments = path.split('.').filter(Boolean)\n return segments\n .map((seg) => (/^[0-9]+$/.test(seg) ? '[]' : seg))\n .join('.')\n .replace(/\\.\\[\\]/g, '[]')\n}\n\nconst isDepAffectedByChange = (dep: string, changed: string): boolean => {\n if (!dep || !changed) return false\n if (dep === changed) return true\n if (changed.startsWith(`${dep}.`)) return true\n if (changed.startsWith(`${dep}[]`)) return true\n // list root structural change (e.g. changed=\"items\") should affect any list-item deps (e.g. dep=\"items[].x\").\n if (dep.startsWith(`${changed}[]`)) return true\n return false\n}\n\nexport const makeSourceWiring = (bound: BoundApi<any, any>, module: unknown): SourceWiring => {\n const program = getModuleTraitsProgram(module as any) as { readonly entries?: ReadonlyArray<any> } | undefined\n\n const sources = program?.entries?.filter((e) => e && e.kind === 'source') ?? []\n\n const sourceOnMount = sources.filter((e: any) =>\n Array.isArray(e?.meta?.triggers) ? e.meta.triggers.includes('onMount') : false,\n )\n\n const sourceOnKeyChange = sources.filter((e: any) =>\n Array.isArray(e?.meta?.triggers) ? e.meta.triggers.includes('onKeyChange') : false,\n )\n\n const setup = Effect.sync(() => {\n if (sourceOnMount.length === 0) return\n bound.lifecycle.onStart(\n Effect.forEach(sourceOnMount, (entry: any) => bound.traits.source.refresh(entry.fieldPath), {\n concurrency: 'unbounded',\n }).pipe(Effect.asVoid),\n )\n })\n\n const refreshOnKeyChange = (changedPath: string): Effect.Effect<void, never, any> =>\n Effect.gen(function* () {\n if (!changedPath || isAuxRootPath(changedPath)) return\n if (sourceOnKeyChange.length === 0) return\n\n const changedPattern = toPatternPath(changedPath)\n\n yield* Effect.forEach(\n sourceOnKeyChange,\n (entry: any) => {\n const deps = (entry?.meta?.deps ?? []) as ReadonlyArray<string>\n const affected = deps.some((dep) => isDepAffectedByChange(dep, changedPattern))\n if (!affected) return Effect.void\n return bound.traits.source.refresh(entry.fieldPath)\n },\n { concurrency: 'unbounded' },\n )\n }).pipe(Effect.asVoid)\n\n return { setup, refreshOnKeyChange }\n}\n\n/**\n * install (placeholder): the default wiring entrypoint for TraitLifecycle.\n *\n * Notes:\n * - Phase 2 only provides an entrypoint that feature packages can depend on.\n * - Concrete wiring for \"domain event → request → in-transaction execution\" will be composed by Form/Query default logics in later phases.\n */\nexport const install = (_bound: BoundApi<any, any>): Effect.Effect<void, never, any> => Effect.void\n"],"mappings":"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","names":["Ref","cleanup","install","makeSourceWiring","scopedExecute","scopedValidate","Ref","scopedValidate","scopedExecute","cleanup","makeSourceWiring","install"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/internal/root.ts","../src/internal/runtime/core/RootContext.ts"],"sourcesContent":["import { Context, Deferred, Effect, Layer } from 'effect'\nimport { isDevEnv } from './runtime/core/env.js'\nimport { RootContextTag, type RootContext } from './runtime/core/RootContext.js'\n\nexport type RootResolveEntrypoint = 'logic.root.resolve' | 'logic.$.root.resolve'\n\nexport interface RootResolveOptions {\n readonly entrypoint?: RootResolveEntrypoint\n /**\n * Whether to wait when RootContext is not ready yet:\n * - Default false: avoid misuse during layer/setup which can deadlock.\n * - `$.root.resolve` passes true in the run phase (run-only), allowing Env assembly to complete.\n */\n readonly waitForReady?: boolean\n}\n\nconst tagIdOf = (tag: Context.Tag<any, any>): string =>\n typeof (tag as any)?.id === 'string'\n ? String((tag as any).id)\n : typeof (tag as any)?.key === 'string'\n ? String((tag as any).key)\n : '<unknown tag>'\n\nconst makeMissingRootProviderError = (\n tag: Context.Tag<any, any>,\n entrypoint: RootResolveEntrypoint,\n extra?: string,\n): Error => {\n const dev = isDevEnv()\n const tokenId = tagIdOf(tag)\n const fix: string[] = dev\n ? [\n '- Provide it when creating the runtime tree (Logix.Runtime.make(...,{ layer }) / ManagedRuntime.make(Layer.mergeAll(...))).',\n \"- If you're in React and want the current runtime environment singleton, use useModule(ModuleTag).\",\n '- Do not rely on nested RuntimeProvider.layer to mock Root.resolve.',\n ]\n : []\n\n const message = dev\n ? [\n '[MissingRootProviderError] Cannot resolve Tag from root provider.',\n extra ? `\\n${extra}` : '',\n `tokenId: ${tokenId}`,\n `entrypoint: ${entrypoint}`,\n 'mode: global',\n 'startScope: root',\n '',\n 'fix:',\n ...fix,\n ]\n .filter((s) => s.length > 0)\n .join('\\n')\n : '[MissingRootProviderError] tag not found in root provider'\n\n const err = new Error(message)\n err.name = 'MissingRootProviderError'\n ;(err as any).tokenId = tokenId\n ;(err as any).entrypoint = entrypoint\n ;(err as any).mode = 'global'\n ;(err as any).startScope = { kind: 'root' }\n ;(err as any).fix = fix\n return err\n}\n\n/**\n * resolve\n *\n * Resolve a Tag explicitly from the root provider of the current Runtime tree (ServiceTag / ModuleTag).\n *\n * Semantics:\n * - Always reads rootContext; unaffected by nearer-scope Layer/Context overrides.\n * - For ModuleTag: expresses root singleton semantics only (not used for multi-instance selection).\n */\nexport const resolve = <Id, Svc>(\n tag: Context.Tag<Id, Svc>,\n options?: RootResolveOptions,\n): Effect.Effect<Svc, never, any> =>\n Effect.gen(function* () {\n const entrypoint: RootResolveEntrypoint = options?.entrypoint ?? 'logic.root.resolve'\n\n const root = yield* RootContextTag\n\n const rootContext = root.context ?? (options?.waitForReady ? yield* root.ready : undefined)\n\n if (!rootContext) {\n return yield* Effect.die(\n makeMissingRootProviderError(tag as Context.Tag<any, any>, entrypoint, 'reason: rootContextNotReady'),\n )\n }\n\n try {\n return Context.get(rootContext, tag as Context.Tag<any, any>) as Svc\n } catch {\n return yield* Effect.die(makeMissingRootProviderError(tag as Context.Tag<any, any>, entrypoint))\n }\n })\n\n/**\n * layerFromContext(tests/perf only)\n *\n * Provide a \"ready immediately\" RootContext for Root.resolve.\n * - `ready` is fulfilled immediately to avoid extra waits when waitForReady=true.\n */\nexport const layerFromContext = (context: Context.Context<any>): Layer.Layer<any, never, any> =>\n Layer.scoped(\n RootContextTag,\n Effect.gen(function* () {\n const ready = yield* Deferred.make<Context.Context<any>>()\n yield* Deferred.succeed(ready, context)\n const root: RootContext = { context, ready }\n return root\n }),\n )\n","import { Context, Deferred } from 'effect'\n\nexport interface RootContext {\n context: Context.Context<any> | undefined\n readonly ready: Deferred.Deferred<Context.Context<any>, never>\n readonly appId?: string\n readonly appModuleIds?: ReadonlyArray<string>\n}\n\nclass RootContextTagImpl extends Context.Tag('@logixjs/core/RootContext')<RootContextTagImpl, RootContext>() {}\n\nexport const RootContextTag = RootContextTagImpl\n"],"mappings":";;;;;AAAA,SAAS,WAAAA,UAAS,YAAAC,WAAU,QAAQ,aAAa;;;ACAjD,SAAS,eAAyB;AASlC,IAAM,qBAAN,cAAiC,QAAQ,IAAI,2BAA2B,EAAmC,EAAE;AAAC;AAEvG,IAAM,iBAAiB;;;ADK9B,IAAM,UAAU,CAAC,QACf,OAAQ,KAAa,OAAO,WACxB,OAAQ,IAAY,EAAE,IACtB,OAAQ,KAAa,QAAQ,WAC3B,OAAQ,IAAY,GAAG,IACvB;AAER,IAAM,+BAA+B,CACnC,KACA,YACA,UACU;AACV,QAAM,MAAM,SAAS;AACrB,QAAM,UAAU,QAAQ,GAAG;AAC3B,QAAM,MAAgB,MAClB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,EACF,IACA,CAAC;AAEL,QAAM,UAAU,MACZ;AAAA,IACE;AAAA,IACA,QAAQ;AAAA,EAAK,KAAK,KAAK;AAAA,IACvB,YAAY,OAAO;AAAA,IACnB,eAAe,UAAU;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,EACG,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAC1B,KAAK,IAAI,IACZ;AAEJ,QAAM,MAAM,IAAI,MAAM,OAAO;AAC7B,MAAI,OAAO;AACV,EAAC,IAAY,UAAU;AACvB,EAAC,IAAY,aAAa;AAC1B,EAAC,IAAY,OAAO;AACpB,EAAC,IAAY,aAAa,EAAE,MAAM,OAAO;AACzC,EAAC,IAAY,MAAM;AACpB,SAAO;AACT;AAWO,IAAM,UAAU,CACrB,KACA,YAEA,OAAO,IAAI,aAAa;AACtB,QAAM,aAAoC,SAAS,cAAc;AAEjE,QAAM,OAAO,OAAO;AAEpB,QAAM,cAAc,KAAK,YAAY,SAAS,eAAe,OAAO,KAAK,QAAQ;AAEjF,MAAI,CAAC,aAAa;AAChB,WAAO,OAAO,OAAO;AAAA,MACnB,6BAA6B,KAA8B,YAAY,6BAA6B;AAAA,IACtG;AAAA,EACF;AAEA,MAAI;AACF,WAAOC,SAAQ,IAAI,aAAa,GAA4B;AAAA,EAC9D,QAAQ;AACN,WAAO,OAAO,OAAO,IAAI,6BAA6B,KAA8B,UAAU,CAAC;AAAA,EACjG;AACF,CAAC;AAQI,IAAM,mBAAmB,CAAC,YAC/B,MAAM;AAAA,EACJ;AAAA,EACA,OAAO,IAAI,aAAa;AACtB,UAAM,QAAQ,OAAOC,UAAS,KAA2B;AACzD,WAAOA,UAAS,QAAQ,OAAO,OAAO;AACtC,UAAM,OAAoB,EAAE,SAAS,MAAM;AAC3C,WAAO;AAAA,EACT,CAAC;AACH;","names":["Context","Deferred","Context","Deferred"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/internal/state-trait/rowid.ts","../src/internal/runtime/core/ReplayLog.ts"],"sourcesContent":["export type RowId = string\n\nexport interface ListConfig {\n readonly path: string\n readonly trackBy?: string\n}\n\nexport type ListRemovalListener = (rowId: RowId) => void\n\ntype Segment = string | number\n\nconst parseSegments = (path: string): ReadonlyArray<Segment> => {\n if (!path) return []\n return path.split('.').map((seg) => (/^[0-9]+$/.test(seg) ? Number(seg) : seg))\n}\n\nexport const getAtPath = (state: any, path: string): any => {\n if (!path || state == null) return state\n const segments = parseSegments(path)\n let current: any = state\n for (const seg of segments) {\n if (current == null) return undefined\n if (typeof seg === 'number') {\n current = Array.isArray(current) ? current[seg] : current[String(seg)]\n continue\n }\n current = current[seg]\n }\n return current\n}\n\nexport const setAtPathMutating = (draft: unknown, path: string, value: unknown): void => {\n if (!path) return\n const segments = parseSegments(path)\n if (segments.length === 0) return\n\n let current: any = draft\n for (let i = 0; i < segments.length - 1; i++) {\n const key = segments[i]!\n const nextKey = segments[i + 1]!\n\n const next = current?.[key as any]\n if (next == null || typeof next !== 'object') {\n current[key as any] = typeof nextKey === 'number' ? [] : {}\n }\n current = current[key as any]\n }\n\n const last = segments[segments.length - 1]!\n current[last as any] = value\n}\n\nexport const unsetAtPathMutating = (draft: unknown, path: string): void => {\n if (!path) return\n const segments = parseSegments(path)\n if (segments.length === 0) return\n\n let current: any = draft\n for (let i = 0; i < segments.length - 1; i++) {\n const key = segments[i]!\n const next = current?.[key as any]\n if (next == null || typeof next !== 'object') {\n return\n }\n current = next\n }\n\n const last = segments[segments.length - 1]!\n if (Array.isArray(current) && typeof last === 'number') {\n current[last] = undefined\n return\n }\n\n if (current && typeof current === 'object') {\n delete current[last as any]\n }\n}\n\nexport const joinPath = (prefix: string, suffix: string): string => {\n if (!prefix) return suffix\n if (!suffix) return prefix\n return `${prefix}.${suffix}`\n}\n\nexport interface ListItemFieldPath {\n readonly listPath: string\n readonly itemPath: string\n}\n\n/**\n * parseListItemFieldPath:\n * - Recognize a list.item field path like \"items[].profileResource\".\n * - Supports nested arrays: returns listPath/itemPath for the innermost list.\n */\nexport const parseListItemFieldPath = (fieldPath: string): ListItemFieldPath | undefined => {\n const raw = typeof fieldPath === 'string' ? fieldPath.trim() : ''\n if (!raw) return undefined\n\n const segments = raw.split('.').filter(Boolean)\n let lastListSeg = -1\n for (let i = 0; i < segments.length; i++) {\n if (segments[i]!.endsWith('[]')) lastListSeg = i\n }\n if (lastListSeg < 0) return undefined\n\n const strip = (seg: string): string => (seg.endsWith('[]') ? seg.slice(0, -2) : seg)\n\n const listPath = segments\n .slice(0, lastListSeg + 1)\n .map(strip)\n .join('.')\n\n const itemPath = segments\n .slice(lastListSeg + 1)\n .map(strip)\n .join('.')\n\n return { listPath, itemPath }\n}\n\nexport const toListItemValuePath = (listPath: string, index: number, itemPath: string): string =>\n itemPath ? `${listPath}.${index}.${itemPath}` : `${listPath}.${index}`\n\ntype ListState = {\n readonly listPath: string\n readonly parentRowId?: RowId\n readonly itemsRef: ReadonlyArray<unknown>\n readonly ids: ReadonlyArray<RowId>\n readonly indexById: ReadonlyMap<RowId, number>\n readonly trackBy?: string\n}\n\nconst readTrackBy = (item: unknown, trackBy: string): unknown => {\n if (!item || typeof item !== 'object') return undefined\n const segments = trackBy.split('.')\n let current: any = item\n for (const seg of segments) {\n if (current == null) return undefined\n current = current[seg as any]\n }\n return current\n}\n\nconst didReorderByReference = (prevItems: ReadonlyArray<unknown>, nextItems: ReadonlyArray<unknown>): boolean => {\n const buckets = new Map<unknown, Array<number>>()\n for (let i = 0; i < prevItems.length; i++) {\n const item = prevItems[i]\n const list = buckets.get(item) ?? []\n list.push(i)\n buckets.set(item, list)\n }\n\n for (let nextIndex = 0; nextIndex < nextItems.length; nextIndex++) {\n const item = nextItems[nextIndex]\n const q = buckets.get(item)\n if (!q || q.length === 0) continue\n const prevIndex = q.shift()!\n if (prevIndex !== nextIndex) {\n return true\n }\n }\n\n return false\n}\n\nconst hasStableTrackByKeys = (items: ReadonlyArray<unknown>, trackBy: string): boolean =>\n items.every((item) => readTrackBy(item, trackBy) !== undefined)\n\nconst isSameTrackBySequence = (\n prevItems: ReadonlyArray<unknown>,\n nextItems: ReadonlyArray<unknown>,\n trackBy: string,\n): boolean => {\n if (prevItems.length !== nextItems.length) return false\n for (let i = 0; i < prevItems.length; i++) {\n if (!Object.is(readTrackBy(prevItems[i], trackBy), readTrackBy(nextItems[i], trackBy))) {\n return false\n }\n }\n return true\n}\n\nconst reconcileIds = (\n prev: ListState | undefined,\n nextItems: ReadonlyArray<unknown>,\n trackBy?: string,\n makeRowId?: () => RowId,\n): { readonly ids: ReadonlyArray<RowId>; readonly removed: ReadonlyArray<RowId> } => {\n const nextRowId =\n makeRowId ??\n (() => {\n let rowSeq = 0\n return () => {\n rowSeq += 1\n return `r${rowSeq}`\n }\n })()\n\n if (!prev) {\n return {\n ids: nextItems.map(() => nextRowId()),\n removed: [],\n }\n }\n\n if (prev.itemsRef === nextItems) {\n return {\n ids: prev.ids,\n removed: [],\n }\n }\n\n // Important: keep RowId stable under \"non-structural changes\" (field updates / object clones only),\n // otherwise in-flight state and caches would be invalidated needlessly.\n const sameLength = prev.itemsRef.length === nextItems.length\n if (sameLength) {\n // trackBy case: if the key sequence is identical, we can reuse old ids;\n // otherwise we must reconcile by key (avoid misclassifying clone+reorder as \"no reorder\").\n if (trackBy) {\n const canUseKeys = hasStableTrackByKeys(prev.itemsRef, trackBy) && hasStableTrackByKeys(nextItems, trackBy)\n if (canUseKeys) {\n if (isSameTrackBySequence(prev.itemsRef, nextItems, trackBy)) {\n return {\n ids: prev.ids,\n removed: [],\n }\n }\n } else {\n // If trackBy keys are not available, fall back to reference-level detection (keep stability for \"cloned but not reordered\").\n if (!didReorderByReference(prev.itemsRef, nextItems)) {\n return {\n ids: prev.ids,\n removed: [],\n }\n }\n }\n } else if (!didReorderByReference(prev.itemsRef, nextItems)) {\n return {\n ids: prev.ids,\n removed: [],\n }\n }\n }\n\n const keyOf = (item: unknown): unknown => {\n if (!trackBy) return item\n const k = readTrackBy(item, trackBy)\n return k !== undefined ? k : item\n }\n\n const buckets = new Map<unknown, Array<RowId>>()\n for (let i = 0; i < prev.itemsRef.length; i++) {\n const key = keyOf(prev.itemsRef[i])\n const list = buckets.get(key) ?? []\n list.push(prev.ids[i]!)\n buckets.set(key, list)\n }\n\n const ids: Array<RowId> = []\n for (let i = 0; i < nextItems.length; i++) {\n const key = keyOf(nextItems[i])\n const list = buckets.get(key)\n if (list && list.length > 0) {\n ids.push(list.shift()!)\n } else {\n ids.push(nextRowId())\n }\n }\n\n const removed: Array<RowId> = []\n for (const list of buckets.values()) {\n removed.push(...list)\n }\n\n return { ids, removed }\n}\n\nconst buildIndexById = (ids: ReadonlyArray<RowId>): ReadonlyMap<RowId, number> => {\n const map = new Map<RowId, number>()\n for (let i = 0; i < ids.length; i++) {\n map.set(ids[i]!, i)\n }\n return map\n}\n\nexport class RowIdStore {\n private readonly lists = new Map<string, ListState>()\n private readonly removalListeners = new Map<string, Set<ListRemovalListener>>()\n private readonly rowIdIndex = new Map<\n RowId,\n { readonly key: string; readonly listPath: string; readonly index: number }\n >()\n private nextRowSeq = 0\n\n constructor(private readonly instanceId?: string) {}\n\n private listKey = (listPath: string, parentRowId?: RowId): string =>\n parentRowId ? `${listPath}@@${parentRowId}` : listPath\n\n private makeRowId = (): RowId => {\n this.nextRowSeq += 1\n return this.instanceId ? `${this.instanceId}::r${this.nextRowSeq}` : `r${this.nextRowSeq}`\n }\n\n private notifyRemoved(listPath: string, rowId: RowId): void {\n const listeners = this.removalListeners.get(listPath)\n if (!listeners || listeners.size === 0) return\n for (const fn of listeners) {\n try {\n fn(rowId)\n } catch {\n // listener failures should never break runtime behavior\n }\n }\n }\n\n private removeDescendants(parentRowId: RowId): void {\n const keys: Array<string> = []\n for (const [k, st] of this.lists.entries()) {\n if (st.parentRowId === parentRowId) keys.push(k)\n }\n\n for (const key of keys) {\n const st = this.lists.get(key)\n if (!st) continue\n this.lists.delete(key)\n for (let i = 0; i < st.ids.length; i++) {\n const rowId = st.ids[i]!\n this.rowIdIndex.delete(rowId)\n this.notifyRemoved(st.listPath, rowId)\n this.removeDescendants(rowId)\n }\n }\n }\n\n onRemoved(listPath: string, listener: ListRemovalListener): () => void {\n const set = this.removalListeners.get(listPath) ?? new Set<ListRemovalListener>()\n set.add(listener)\n this.removalListeners.set(listPath, set)\n return () => {\n const current = this.removalListeners.get(listPath)\n if (!current) return\n current.delete(listener)\n if (current.size === 0) this.removalListeners.delete(listPath)\n }\n }\n\n getRowId(listPath: string, index: number, parentRowId?: RowId): RowId | undefined {\n const state = this.lists.get(this.listKey(listPath, parentRowId))\n return state ? state.ids[index] : undefined\n }\n\n getIndex(listPath: string, rowId: RowId): number | undefined {\n const info = this.rowIdIndex.get(rowId)\n if (!info) return undefined\n if (info.listPath !== listPath) return undefined\n return info.index\n }\n\n /**\n * ensureList:\n * - Align RowID mapping for the given listPath with the current items.\n * - Returns the latest ids (index -> RowId).\n */\n ensureList(\n listPath: string,\n items: ReadonlyArray<unknown>,\n trackBy?: string,\n parentRowId?: RowId,\n ): ReadonlyArray<RowId> {\n const key = this.listKey(listPath, parentRowId)\n const prev = this.lists.get(key)\n const { ids, removed } = reconcileIds(prev, items, trackBy ?? prev?.trackBy, this.makeRowId)\n\n const next: ListState = {\n listPath,\n parentRowId,\n itemsRef: items,\n ids,\n indexById: buildIndexById(ids),\n trackBy: trackBy ?? prev?.trackBy,\n }\n this.lists.set(key, next)\n\n if (removed.length > 0) {\n for (const rowId of removed) {\n this.rowIdIndex.delete(rowId)\n this.notifyRemoved(listPath, rowId)\n this.removeDescendants(rowId)\n }\n }\n\n // Refresh the reverse rowId -> index mapping (index changes are allowed).\n for (let i = 0; i < ids.length; i++) {\n const rowId = ids[i]!\n this.rowIdIndex.set(rowId, { key, listPath, index: i })\n }\n\n return ids\n }\n\n /**\n * updateAll:\n * - After each commit, align RowID mappings for all known lists.\n * - configs come from list declarations in StateTraitProgram.spec (may include trackBy).\n */\n updateAll(state: unknown, configs: ReadonlyArray<ListConfig>): void {\n const cfgByPath = new Map<string, ListConfig>()\n const paths: Array<string> = []\n for (const cfg of configs) {\n if (!cfg || typeof cfg.path !== 'string') continue\n const p = cfg.path.trim()\n if (!p) continue\n cfgByPath.set(p, cfg)\n paths.push(p)\n }\n\n const pathSet = new Set(paths)\n\n const parentOf = (path: string): string | undefined => {\n const segments = path.split('.').filter(Boolean)\n let best: string | undefined\n for (let i = 1; i < segments.length; i++) {\n const prefix = segments.slice(0, i).join('.')\n if (pathSet.has(prefix)) best = prefix\n }\n return best\n }\n\n const parentByPath = new Map<string, string | undefined>()\n const suffixByPath = new Map<string, string>()\n const childrenByParent = new Map<string | undefined, Array<string>>()\n\n for (const path of paths) {\n const parent = parentOf(path)\n parentByPath.set(path, parent)\n const suffix = parent ? path.slice(parent.length + 1) : path\n suffixByPath.set(path, suffix)\n const list = childrenByParent.get(parent) ?? []\n list.push(path)\n childrenByParent.set(parent, list)\n }\n\n // roots first (and deterministic traversal)\n const roots = (childrenByParent.get(undefined) ?? []).slice().sort((a, b) => a.localeCompare(b))\n\n const visit = (listPath: string, parentRowId: RowId | undefined, listValue: unknown): void => {\n const cfg = cfgByPath.get(listPath)\n const items = Array.isArray(listValue) ? (listValue as ReadonlyArray<unknown>) : []\n const ids = this.ensureList(listPath, items, cfg?.trackBy, parentRowId)\n\n const children = (childrenByParent.get(listPath) ?? []).slice().sort((a, b) => a.localeCompare(b))\n if (children.length === 0) return\n\n for (let i = 0; i < items.length; i++) {\n const row = items[i]\n const rowId = ids[i]\n if (!rowId) continue\n for (const childPath of children) {\n const suffix = suffixByPath.get(childPath) ?? ''\n const childValue = suffix ? getAtPath(row as any, suffix) : undefined\n visit(childPath, rowId, childValue)\n }\n }\n }\n\n for (const root of roots) {\n const value = getAtPath(state as any, root)\n visit(root, undefined, value)\n }\n }\n}\n\nexport const collectListConfigs = (spec: Record<string, unknown>): ReadonlyArray<ListConfig> => {\n const configs: Array<ListConfig> = []\n for (const key in spec) {\n if (!Object.prototype.hasOwnProperty.call(spec, key)) continue\n const raw = spec[key]\n if (!raw || typeof raw !== 'object') continue\n const tag = (raw as any)._tag\n if (tag !== 'StateTraitList') continue\n const trackBy = (raw as any).identityHint?.trackBy\n configs.push({\n path: key,\n trackBy: typeof trackBy === 'string' ? trackBy : undefined,\n })\n }\n return configs\n}\n","import { Context, Effect, Layer } from 'effect'\n\nexport type ResourceSnapshotPhase = 'idle' | 'loading' | 'success' | 'error'\n\nexport type ReplayLogEvent =\n | {\n readonly _tag: 'ResourceSnapshot'\n readonly resourceId: string\n readonly fieldPath: string\n readonly keyHash?: string\n /**\n * Optional: source concurrency policy (e.g. \"switch\" / \"exhaust-trailing\").\n * - Must remain slim & serializable.\n * - Used by Devtools/replay to explain why old results are dropped / why trailing happens.\n */\n readonly concurrency?: string\n readonly phase: ResourceSnapshotPhase\n readonly snapshot: unknown\n readonly timestamp: number\n readonly moduleId?: string\n readonly instanceId?: string\n }\n | {\n readonly _tag: 'InvalidateRequest'\n readonly timestamp: number\n readonly moduleId?: string\n readonly instanceId?: string\n readonly kind: 'resource' | 'query'\n readonly target: string\n readonly meta?: unknown\n }\n\nexport type ResourceSnapshotEvent = Extract<ReplayLogEvent, { readonly _tag: 'ResourceSnapshot' }>\n\nexport interface ReplayLogService {\n readonly record: (event: ReplayLogEvent) => Effect.Effect<void>\n readonly snapshot: Effect.Effect<ReadonlyArray<ReplayLogEvent>>\n readonly resetCursor: Effect.Effect<void>\n readonly consumeNext: (predicate: (event: ReplayLogEvent) => boolean) => Effect.Effect<ReplayLogEvent | undefined>\n readonly consumeNextResourceSnapshot: (params: {\n readonly resourceId: string\n readonly fieldPath: string\n readonly keyHash?: string\n readonly phase?: ResourceSnapshotPhase\n }) => Effect.Effect<ResourceSnapshotEvent | undefined>\n}\n\nexport class ReplayLog extends Context.Tag('@logixjs/core/ReplayLog')<ReplayLog, ReplayLogService>() {}\n\nexport const make = (initial?: ReadonlyArray<ReplayLogEvent>): ReplayLogService => {\n const events: Array<ReplayLogEvent> = initial ? Array.from(initial) : []\n let cursor = 0\n\n const consumeNext = (predicate: (event: ReplayLogEvent) => boolean): Effect.Effect<ReplayLogEvent | undefined> =>\n Effect.sync(() => {\n for (let i = cursor; i < events.length; i++) {\n const event = events[i]\n if (!predicate(event)) continue\n cursor = i + 1\n return event\n }\n return undefined\n })\n\n const consumeNextResourceSnapshot = (params: {\n readonly resourceId: string\n readonly fieldPath: string\n readonly keyHash?: string\n readonly phase?: ResourceSnapshotPhase\n }): Effect.Effect<ResourceSnapshotEvent | undefined> =>\n consumeNext((event): event is ResourceSnapshotEvent => {\n if (event._tag !== 'ResourceSnapshot') return false\n if (event.resourceId !== params.resourceId) return false\n if (event.fieldPath !== params.fieldPath) return false\n if (params.keyHash !== undefined && event.keyHash !== params.keyHash) {\n return false\n }\n if (params.phase !== undefined && event.phase !== params.phase) {\n return false\n }\n return true\n }).pipe(Effect.map((event) => event as ResourceSnapshotEvent | undefined))\n\n return {\n record: (event) => Effect.sync(() => events.push(event)),\n snapshot: Effect.sync(() => events.slice()),\n resetCursor: Effect.sync(() => {\n cursor = 0\n }),\n consumeNext,\n consumeNextResourceSnapshot,\n }\n}\n\nexport const layer = (initial?: ReadonlyArray<ReplayLogEvent>): Layer.Layer<ReplayLog, never, never> =>\n Layer.succeed(ReplayLog, make(initial))\n\nexport const record = (event: ReplayLogEvent): Effect.Effect<void, never, ReplayLog> =>\n Effect.gen(function* () {\n const log = yield* ReplayLog\n yield* log.record(event)\n })\n\nexport const snapshot: Effect.Effect<ReadonlyArray<ReplayLogEvent>, never, ReplayLog> = Effect.gen(function* () {\n const log = yield* ReplayLog\n return yield* log.snapshot\n})\n\nexport const resetCursor: Effect.Effect<void, never, ReplayLog> = Effect.gen(function* () {\n const log = yield* ReplayLog\n yield* log.resetCursor\n})\n\nexport const consumeNextResourceSnapshot = (params: {\n readonly resourceId: string\n readonly fieldPath: string\n readonly keyHash?: string\n readonly phase?: ResourceSnapshotPhase\n}): Effect.Effect<ResourceSnapshotEvent | undefined, never, ReplayLog> =>\n Effect.gen(function* () {\n const log = yield* ReplayLog\n return yield* log.consumeNextResourceSnapshot(params)\n })\n"],"mappings":"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","names":["consumeNextResourceSnapshot"]}