@logixjs/core 0.0.1 → 0.0.2

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 (300) hide show
  1. package/LICENSE +201 -0
  2. package/dist/{Bound-BN1DQ_lM.d.ts → Bound-CEa1ihvH.d.ts} +2 -2
  3. package/dist/{Bound-BPIfH9SS.d.cts → Bound-CNLNkC7c.d.cts} +2 -2
  4. package/dist/Bound.cjs +620 -163
  5. package/dist/Bound.cjs.map +1 -1
  6. package/dist/Bound.d.cts +3 -3
  7. package/dist/Bound.d.ts +3 -3
  8. package/dist/Bound.js +14 -14
  9. package/dist/{Debug-Bq8Sqjcr.d.cts → Debug-BhMYr-1i.d.cts} +3 -3
  10. package/dist/{Debug-B5q5Bkzx.d.ts → Debug-ByM7m4Ft.d.ts} +3 -3
  11. package/dist/Debug.cjs +553 -32
  12. package/dist/Debug.cjs.map +1 -1
  13. package/dist/Debug.d.cts +10 -8
  14. package/dist/Debug.d.ts +10 -8
  15. package/dist/Debug.js +12 -10
  16. package/dist/EffectOp.cjs.map +1 -1
  17. package/dist/EffectOp.js +2 -3
  18. package/dist/EffectOp.js.map +1 -1
  19. package/dist/Env.cjs +664 -6
  20. package/dist/Env.cjs.map +1 -1
  21. package/dist/Env.js +5 -2
  22. package/dist/ExternalStore-BAz83PVq.d.cts +60 -0
  23. package/dist/ExternalStore-BYWPbYs8.d.ts +60 -0
  24. package/dist/ExternalStore.cjs +746 -0
  25. package/dist/ExternalStore.cjs.map +1 -0
  26. package/dist/ExternalStore.d.cts +4 -0
  27. package/dist/ExternalStore.d.ts +4 -0
  28. package/dist/ExternalStore.js +19 -0
  29. package/dist/ExternalStore.js.map +1 -0
  30. package/dist/{Flow-1fZT8MpX.d.cts → Flow-BlSoMmhV.d.cts} +2 -2
  31. package/dist/{Flow-BhpjE22E.d.ts → Flow-CQSGve5c.d.ts} +2 -2
  32. package/dist/Flow.cjs +2 -2
  33. package/dist/Flow.cjs.map +1 -1
  34. package/dist/Flow.d.cts +4 -4
  35. package/dist/Flow.d.ts +4 -4
  36. package/dist/Flow.js +7 -8
  37. package/dist/{Handle-D_cLW1Z3.d.ts → Handle-B7PSmsrY.d.ts} +1 -1
  38. package/dist/{Handle-D8D1zPb_.d.cts → Handle-ByovhL-c.d.cts} +1 -1
  39. package/dist/Handle.d.cts +3 -3
  40. package/dist/Handle.d.ts +3 -3
  41. package/dist/{Kernel-CnGE1Fyk.d.ts → Kernel-DGSpS4GM.d.ts} +2 -2
  42. package/dist/{Kernel-8kC-jOda.d.cts → Kernel-DZAk-Mrn.d.cts} +2 -2
  43. package/dist/Kernel.cjs +680 -22
  44. package/dist/Kernel.cjs.map +1 -1
  45. package/dist/Kernel.d.cts +10 -8
  46. package/dist/Kernel.d.ts +10 -8
  47. package/dist/Kernel.js +7 -4
  48. package/dist/{Link-Db7975nU.d.ts → Link-Cm4eR9n0.d.ts} +10 -3
  49. package/dist/{Link-fX8x1eCK.d.cts → Link-DF8i8iWR.d.cts} +10 -3
  50. package/dist/Link.cjs +1128 -86
  51. package/dist/Link.cjs.map +1 -1
  52. package/dist/Link.d.cts +3 -3
  53. package/dist/Link.d.ts +3 -3
  54. package/dist/Link.js +30 -25
  55. package/dist/{Logic-DRh4sDZj.d.cts → Logic-BcQA0AvE.d.cts} +1 -1
  56. package/dist/{Logic-BRjEMr-W.d.ts → Logic-OotSE1xw.d.ts} +1 -1
  57. package/dist/Logic.d.cts +3 -3
  58. package/dist/Logic.d.ts +3 -3
  59. package/dist/{MatchBuilder-CJk5oCkR.d.cts → MatchBuilder-BNDJ8waF.d.ts} +1 -1
  60. package/dist/{MatchBuilder-0QOc-nlU.d.ts → MatchBuilder-CvZ5WY1B.d.cts} +1 -1
  61. package/dist/MatchBuilder.d.cts +4 -4
  62. package/dist/MatchBuilder.d.ts +4 -4
  63. package/dist/Middleware-D8tUDLv_.d.cts +100 -0
  64. package/dist/Middleware-DS7CbTTN.d.ts +100 -0
  65. package/dist/Middleware.cjs +461 -13
  66. package/dist/Middleware.cjs.map +1 -1
  67. package/dist/Middleware.d.cts +2 -86
  68. package/dist/Middleware.d.ts +2 -86
  69. package/dist/Middleware.js +13 -11
  70. package/dist/{Module-DnzluX2J.d.ts → Module-CFj0I2yE.d.ts} +45 -18
  71. package/dist/{Module-B_0xRDMR.d.cts → Module-DpXPW9EQ.d.cts} +45 -18
  72. package/dist/Module.cjs +8583 -5741
  73. package/dist/Module.cjs.map +1 -1
  74. package/dist/Module.d.cts +5 -4
  75. package/dist/Module.d.ts +5 -4
  76. package/dist/Module.js +32 -27
  77. package/dist/ModuleTag-BcVF6z7B.d.ts +113 -0
  78. package/dist/ModuleTag-DuZXo_NS.d.cts +113 -0
  79. package/dist/ModuleTag.cjs +2609 -1232
  80. package/dist/ModuleTag.cjs.map +1 -1
  81. package/dist/ModuleTag.d.cts +4 -4
  82. package/dist/ModuleTag.d.ts +4 -4
  83. package/dist/ModuleTag.js +28 -25
  84. package/dist/{Observability-cY4kLn0S.d.ts → Observability-D-ZWeEVb.d.ts} +22 -15
  85. package/dist/{Observability-COqEvp2C.d.cts → Observability-V7sRMYTh.d.cts} +22 -15
  86. package/dist/Observability.cjs +1938 -640
  87. package/dist/Observability.cjs.map +1 -1
  88. package/dist/Observability.d.cts +4 -4
  89. package/dist/Observability.d.ts +4 -4
  90. package/dist/Observability.js +21 -19
  91. package/dist/{Process-mL8fHDSB.d.cts → Process-B55aJMFk.d.cts} +29 -4
  92. package/dist/{Process-CM9xbMdP.d.ts → Process-DvhFEwUS.d.ts} +29 -4
  93. package/dist/Process.cjs +1122 -85
  94. package/dist/Process.cjs.map +1 -1
  95. package/dist/Process.d.cts +4 -3
  96. package/dist/Process.d.ts +4 -3
  97. package/dist/Process.js +27 -22
  98. package/dist/{ReadQuery-BlMwhe-F.d.ts → ReadQuery-C4vZ8Prc.d.ts} +2 -2
  99. package/dist/{ReadQuery-SinbStGF.d.ts → ReadQuery-CafjlJQo.d.cts} +1 -1
  100. package/dist/{ReadQuery-SinbStGF.d.cts → ReadQuery-CafjlJQo.d.ts} +1 -1
  101. package/dist/{ReadQuery-CL5XlXts.d.cts → ReadQuery-mc0NgrFV.d.cts} +2 -2
  102. package/dist/ReadQuery.cjs +3 -3
  103. package/dist/ReadQuery.cjs.map +1 -1
  104. package/dist/ReadQuery.d.cts +2 -2
  105. package/dist/ReadQuery.d.ts +2 -2
  106. package/dist/ReadQuery.js +3 -3
  107. package/dist/{Reflection-CQnKwPXj.d.ts → Reflection-C8xZ267q.d.ts} +88 -7
  108. package/dist/{Reflection-Kabo1mlU.d.cts → Reflection-DP7Vsv3f.d.cts} +88 -7
  109. package/dist/Reflection.cjs +2934 -1553
  110. package/dist/Reflection.cjs.map +1 -1
  111. package/dist/Reflection.d.cts +14 -11
  112. package/dist/Reflection.d.ts +14 -11
  113. package/dist/Reflection.js +26 -21
  114. package/dist/Resource.cjs +670 -12
  115. package/dist/Resource.cjs.map +1 -1
  116. package/dist/Resource.js +6 -3
  117. package/dist/Root.cjs +675 -17
  118. package/dist/Root.cjs.map +1 -1
  119. package/dist/Root.js +7 -3
  120. package/dist/{Runtime-CtyzZG4i.d.ts → Runtime-BWc9YfUB.d.ts} +37 -7
  121. package/dist/{Runtime-B-aL-f29.d.cts → Runtime-PShIC4DW.d.cts} +37 -7
  122. package/dist/Runtime.cjs +1899 -809
  123. package/dist/Runtime.cjs.map +1 -1
  124. package/dist/Runtime.d.cts +14 -11
  125. package/dist/Runtime.d.ts +14 -11
  126. package/dist/Runtime.js +33 -28
  127. package/dist/ScopeRegistry.cjs +668 -10
  128. package/dist/ScopeRegistry.cjs.map +1 -1
  129. package/dist/ScopeRegistry.js +6 -3
  130. package/dist/{StateTrait-OWhbj12c.d.cts → StateTrait-CQsDlXJm.d.cts} +23 -6
  131. package/dist/{StateTrait-BGsZghTz.d.ts → StateTrait-YvJzVDKl.d.ts} +23 -6
  132. package/dist/StateTrait.cjs +1475 -370
  133. package/dist/StateTrait.cjs.map +1 -1
  134. package/dist/StateTrait.d.cts +7 -5
  135. package/dist/StateTrait.d.ts +7 -5
  136. package/dist/StateTrait.js +17 -14
  137. package/dist/{TraitLifecycle-LdIWmKlg.d.ts → TraitLifecycle-CjIBICAA.d.ts} +2 -2
  138. package/dist/{TraitLifecycle-CwV5WPFX.d.cts → TraitLifecycle-NmqGiXPC.d.cts} +2 -2
  139. package/dist/TraitLifecycle.cjs +489 -32
  140. package/dist/TraitLifecycle.cjs.map +1 -1
  141. package/dist/TraitLifecycle.d.cts +4 -4
  142. package/dist/TraitLifecycle.d.ts +4 -4
  143. package/dist/TraitLifecycle.js +7 -7
  144. package/dist/Workflow-BlFG_20_.d.cts +414 -0
  145. package/dist/Workflow-CW9S_aAP.d.ts +414 -0
  146. package/dist/Workflow.cjs +2977 -0
  147. package/dist/Workflow.cjs.map +1 -0
  148. package/dist/Workflow.d.cts +7 -0
  149. package/dist/Workflow.d.ts +7 -0
  150. package/dist/Workflow.js +55 -0
  151. package/dist/Workflow.js.map +1 -0
  152. package/dist/{chunk-G5ZBFPNU.js → chunk-2A4UKO2D.js} +2 -2
  153. package/dist/chunk-2DE6D42I.js +248 -0
  154. package/dist/chunk-2DE6D42I.js.map +1 -0
  155. package/dist/{chunk-ANLBCBDC.js → chunk-2DVLMSOE.js} +6 -6
  156. package/dist/{chunk-BE3HW4FY.js → chunk-34CF6OGE.js} +14 -16
  157. package/dist/chunk-34CF6OGE.js.map +1 -0
  158. package/dist/{chunk-ZFY7U2FR.js → chunk-3LPIXG56.js} +43 -3
  159. package/dist/chunk-3LPIXG56.js.map +1 -0
  160. package/dist/chunk-3VZYDNXZ.js +10 -0
  161. package/dist/chunk-3VZYDNXZ.js.map +1 -0
  162. package/dist/{chunk-3TMODYZV.js → chunk-3XO4HR6V.js} +2 -2
  163. package/dist/chunk-46FGVWRF.js +817 -0
  164. package/dist/chunk-46FGVWRF.js.map +1 -0
  165. package/dist/chunk-4LODUXFI.js +288 -0
  166. package/dist/chunk-4LODUXFI.js.map +1 -0
  167. package/dist/{chunk-GMPEOUP2.js → chunk-4MZ7BT3R.js} +2 -2
  168. package/dist/chunk-4MZ7BT3R.js.map +1 -0
  169. package/dist/{chunk-TKZ7MEIA.js → chunk-53GVPGSM.js} +2 -2
  170. package/dist/{chunk-KP7MUZNX.js → chunk-5W2V2NVJ.js} +2 -2
  171. package/dist/chunk-5W2V2NVJ.js.map +1 -0
  172. package/dist/chunk-6DACKW3D.js +613 -0
  173. package/dist/chunk-6DACKW3D.js.map +1 -0
  174. package/dist/chunk-AQ7L2QZ5.js +1395 -0
  175. package/dist/chunk-AQ7L2QZ5.js.map +1 -0
  176. package/dist/{chunk-NZJKFF45.js → chunk-C2UZZQ76.js} +2 -2
  177. package/dist/chunk-CCKP5Z6F.js +701 -0
  178. package/dist/chunk-CCKP5Z6F.js.map +1 -0
  179. package/dist/chunk-CUKM2XUW.js +27 -0
  180. package/dist/{chunk-QCHIQWAJ.js.map → chunk-CUKM2XUW.js.map} +1 -1
  181. package/dist/{chunk-M2RGJPXX.js → chunk-DBD6Q6JH.js} +3 -3
  182. package/dist/{chunk-ZGDVUPTM.js → chunk-EB4RGQO3.js} +2 -2
  183. package/dist/{chunk-PAYXCY6A.js → chunk-G7ESIQTI.js} +12 -14
  184. package/dist/chunk-G7ESIQTI.js.map +1 -0
  185. package/dist/chunk-GPBAZQ23.js +348 -0
  186. package/dist/chunk-GPBAZQ23.js.map +1 -0
  187. package/dist/{chunk-OFADUJWJ.js → chunk-I4LCE5OY.js} +3 -5
  188. package/dist/{chunk-OFADUJWJ.js.map → chunk-I4LCE5OY.js.map} +1 -1
  189. package/dist/{chunk-DFNM3WX2.js → chunk-IMCC6TBN.js} +158 -39
  190. package/dist/chunk-IMCC6TBN.js.map +1 -0
  191. package/dist/{chunk-76WT3HOR.js → chunk-IROZNQAF.js} +22 -21
  192. package/dist/chunk-IROZNQAF.js.map +1 -0
  193. package/dist/{chunk-TAAPQVZN.js → chunk-ISKNULNH.js} +2 -2
  194. package/dist/chunk-J3CWXIPV.js +242 -0
  195. package/dist/chunk-J3CWXIPV.js.map +1 -0
  196. package/dist/{chunk-PYOE4VSI.js → chunk-JBKYRTCS.js} +224 -161
  197. package/dist/chunk-JBKYRTCS.js.map +1 -0
  198. package/dist/{chunk-66ALHVEX.js → chunk-KKIAYH4X.js} +3 -3
  199. package/dist/{chunk-3RMKLXHX.js → chunk-KLDVG3SY.js} +2 -2
  200. package/dist/{chunk-BABLDP24.js → chunk-KSZQYSEH.js} +3 -3
  201. package/dist/chunk-KSZQYSEH.js.map +1 -0
  202. package/dist/{chunk-CW6T36TN.js → chunk-M3M7JFAH.js} +4 -4
  203. package/dist/chunk-M3M7JFAH.js.map +1 -0
  204. package/dist/{chunk-THATMZXD.js → chunk-MLB253V2.js} +2 -2
  205. package/dist/{chunk-THATMZXD.js.map → chunk-MLB253V2.js.map} +1 -1
  206. package/dist/{chunk-JGIWG6SR.js → chunk-MS77U77X.js} +664 -550
  207. package/dist/chunk-MS77U77X.js.map +1 -0
  208. package/dist/chunk-MW4FA3MW.js +23 -0
  209. package/dist/chunk-MW4FA3MW.js.map +1 -0
  210. package/dist/chunk-MYKNINNN.js +228 -0
  211. package/dist/chunk-MYKNINNN.js.map +1 -0
  212. package/dist/{chunk-4CQAV7YB.js → chunk-O6TTQXTY.js} +2 -2
  213. package/dist/{chunk-NBD3KUOZ.js → chunk-OJDJ4VDQ.js} +35 -24
  214. package/dist/chunk-OJDJ4VDQ.js.map +1 -0
  215. package/dist/{chunk-NQZ2OSGR.js → chunk-PVZEMNJY.js} +9 -9
  216. package/dist/chunk-PVZEMNJY.js.map +1 -0
  217. package/dist/chunk-RN26DV2M.js +271 -0
  218. package/dist/chunk-RN26DV2M.js.map +1 -0
  219. package/dist/{chunk-JCXGZRMU.js → chunk-RQQW3IQC.js} +3 -3
  220. package/dist/chunk-RQQW3IQC.js.map +1 -0
  221. package/dist/{chunk-24VULZ7A.js → chunk-TKOGZDD6.js} +3 -3
  222. package/dist/{chunk-EGK3KN7B.js → chunk-TQYLVXGY.js} +70 -39
  223. package/dist/chunk-TQYLVXGY.js.map +1 -0
  224. package/dist/{chunk-QMM6O4CD.js → chunk-UACD2CL2.js} +15 -3
  225. package/dist/{chunk-QMM6O4CD.js.map → chunk-UACD2CL2.js.map} +1 -1
  226. package/dist/{chunk-M3WTHJHJ.js → chunk-VH575UTV.js} +30 -34
  227. package/dist/chunk-VH575UTV.js.map +1 -0
  228. package/dist/{chunk-AUIR5O6W.js → chunk-WWBMC24F.js} +9 -15
  229. package/dist/chunk-WWBMC24F.js.map +1 -0
  230. package/dist/{chunk-JWOYLO27.js → chunk-WYJUJV4L.js} +80 -7
  231. package/dist/chunk-WYJUJV4L.js.map +1 -0
  232. package/dist/{chunk-EY4NZKDR.js → chunk-XFMMPYNU.js} +2 -2
  233. package/dist/chunk-Y4VRBIS6.js +35 -0
  234. package/dist/chunk-Y4VRBIS6.js.map +1 -0
  235. package/dist/{chunk-DMBALCE2.js → chunk-ZC7MSQ5U.js} +77 -4
  236. package/dist/chunk-ZC7MSQ5U.js.map +1 -0
  237. package/dist/{chunk-OGWBVHB3.js → chunk-ZCK6SCOE.js} +67 -8
  238. package/dist/chunk-ZCK6SCOE.js.map +1 -0
  239. package/dist/{chunk-IHVBV5C2.js → chunk-ZTFTABXV.js} +2 -1
  240. package/dist/chunk-ZTFTABXV.js.map +1 -0
  241. package/dist/index.cjs +9532 -5017
  242. package/dist/index.cjs.map +1 -1
  243. package/dist/index.d.cts +163 -27
  244. package/dist/index.d.ts +163 -27
  245. package/dist/index.js +119 -56
  246. package/dist/index.js.map +1 -1
  247. package/dist/{ir-BMP7yxJJ.d.cts → ir-C-Zm_GlZ.d.cts} +1 -1
  248. package/dist/{ir-DUOz6H-5.d.ts → ir-DGyGiwVe.d.ts} +1 -1
  249. package/dist/{module-k7m3txak.d.ts → module-DqQ1U-Me.d.ts} +129 -100
  250. package/dist/{module-B8CBqIZ_.d.cts → module-doenaCsZ.d.cts} +129 -100
  251. package/package.json +12 -1
  252. package/dist/ModuleTag-C8FHY_sY.d.ts +0 -93
  253. package/dist/ModuleTag-EGbgBMpZ.d.cts +0 -93
  254. package/dist/chunk-3QMIVH35.js +0 -43
  255. package/dist/chunk-3QMIVH35.js.map +0 -1
  256. package/dist/chunk-76WT3HOR.js.map +0 -1
  257. package/dist/chunk-AUIR5O6W.js.map +0 -1
  258. package/dist/chunk-BABLDP24.js.map +0 -1
  259. package/dist/chunk-BE3HW4FY.js.map +0 -1
  260. package/dist/chunk-CW6T36TN.js.map +0 -1
  261. package/dist/chunk-DFNM3WX2.js.map +0 -1
  262. package/dist/chunk-DMBALCE2.js.map +0 -1
  263. package/dist/chunk-EGK3KN7B.js.map +0 -1
  264. package/dist/chunk-GMPEOUP2.js.map +0 -1
  265. package/dist/chunk-IHVBV5C2.js.map +0 -1
  266. package/dist/chunk-JCXGZRMU.js.map +0 -1
  267. package/dist/chunk-JGIWG6SR.js.map +0 -1
  268. package/dist/chunk-JWOYLO27.js.map +0 -1
  269. package/dist/chunk-KIXAU3GM.js +0 -137
  270. package/dist/chunk-KIXAU3GM.js.map +0 -1
  271. package/dist/chunk-KP7MUZNX.js.map +0 -1
  272. package/dist/chunk-M3WTHJHJ.js.map +0 -1
  273. package/dist/chunk-M7IYCTJV.js +0 -79
  274. package/dist/chunk-M7IYCTJV.js.map +0 -1
  275. package/dist/chunk-NBD3KUOZ.js.map +0 -1
  276. package/dist/chunk-NQZ2OSGR.js.map +0 -1
  277. package/dist/chunk-OGWBVHB3.js.map +0 -1
  278. package/dist/chunk-PAYXCY6A.js.map +0 -1
  279. package/dist/chunk-PYOE4VSI.js.map +0 -1
  280. package/dist/chunk-QCHIQWAJ.js +0 -21
  281. package/dist/chunk-VZB726PE.js +0 -93
  282. package/dist/chunk-VZB726PE.js.map +0 -1
  283. package/dist/chunk-W3TEWHLO.js +0 -568
  284. package/dist/chunk-W3TEWHLO.js.map +0 -1
  285. package/dist/chunk-ZFLHVFUC.js +0 -192
  286. package/dist/chunk-ZFLHVFUC.js.map +0 -1
  287. package/dist/chunk-ZFY7U2FR.js.map +0 -1
  288. /package/dist/{chunk-G5ZBFPNU.js.map → chunk-2A4UKO2D.js.map} +0 -0
  289. /package/dist/{chunk-ANLBCBDC.js.map → chunk-2DVLMSOE.js.map} +0 -0
  290. /package/dist/{chunk-3TMODYZV.js.map → chunk-3XO4HR6V.js.map} +0 -0
  291. /package/dist/{chunk-TKZ7MEIA.js.map → chunk-53GVPGSM.js.map} +0 -0
  292. /package/dist/{chunk-NZJKFF45.js.map → chunk-C2UZZQ76.js.map} +0 -0
  293. /package/dist/{chunk-M2RGJPXX.js.map → chunk-DBD6Q6JH.js.map} +0 -0
  294. /package/dist/{chunk-ZGDVUPTM.js.map → chunk-EB4RGQO3.js.map} +0 -0
  295. /package/dist/{chunk-TAAPQVZN.js.map → chunk-ISKNULNH.js.map} +0 -0
  296. /package/dist/{chunk-66ALHVEX.js.map → chunk-KKIAYH4X.js.map} +0 -0
  297. /package/dist/{chunk-3RMKLXHX.js.map → chunk-KLDVG3SY.js.map} +0 -0
  298. /package/dist/{chunk-4CQAV7YB.js.map → chunk-O6TTQXTY.js.map} +0 -0
  299. /package/dist/{chunk-24VULZ7A.js.map → chunk-TKOGZDD6.js.map} +0 -0
  300. /package/dist/{chunk-EY4NZKDR.js.map → chunk-XFMMPYNU.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/StateTrait.ts","../src/internal/state-trait/install.ts","../src/internal/state-trait/external-store.ts","../src/internal/state-trait/meta-diagnostics.ts"],"sourcesContent":["// StateTrait namespace module (@logixjs/core/StateTrait):\n// - Provides a DSL for trait specs (from/node/list/computed/source/link).\n// - build: normalizes the spec and produces Program/Graph/Plan.\n// - install: installs a Program into the runtime (registers source.refresh, runs converge/validate in txn windows).\n\nimport type { Schema } from 'effect'\nimport { Effect } from 'effect'\nimport type { BoundApi } from './Bound.js'\nimport type { ExternalStore as ExternalStoreType } from './ExternalStore.js'\nimport * as Model from './internal/state-trait/model.js'\nimport type { TraitMeta as TraitMetaInternal } from './internal/state-trait/meta.js'\nimport * as FieldPath from './internal/state-trait/field-path.js'\nimport * as RowId from './internal/state-trait/rowid.js'\nimport * as InternalBuild from './internal/state-trait/build.js'\nimport * as InternalInstall from './internal/state-trait/install.js'\nimport * as InternalIr from './internal/state-trait/ir.js'\n\n// Public type aliases.\nexport type StateTraitSpec<S> = Model.StateTraitSpec<S>\nexport type StateTraitEntry<S = unknown, P extends string = string> = Model.StateTraitEntry<S, P>\nexport type StateTraitProgram<S> = Model.StateTraitProgram<S>\nexport type StateTraitGraph = Model.StateTraitGraph\nexport type StateTraitPlan = Model.StateTraitPlan\nexport type StateTraitNode<Input = unknown, Ctx = unknown> = Model.StateTraitNode<Input, Ctx>\nexport type StateTraitList<Item = unknown> = Model.StateTraitList<Item>\nexport type CheckRule<Input = unknown, Ctx = unknown> = Model.CheckRule<Input, Ctx>\nexport type TraitMeta = TraitMetaInternal\n\nexport type StateFieldPath<S> = FieldPath.StateFieldPath<S>\nexport type StateAtPath<S, P> = FieldPath.StateAtPath<S, P>\n\nexport const $root = '$root' as const\n\ntype DepsArgs<S extends object, Deps extends ReadonlyArray<StateFieldPath<S>>> = {\n readonly [K in keyof Deps]: StateAtPath<S, Deps[K]>\n}\n\n/**\n * StateTrait.from:\n * - Narrows available field paths based on the state Schema, adding type constraints to trait specs.\n * - At runtime this returns the raw spec object; normalization is handled by internal layers.\n */\nexport const from =\n <S extends object, I>(_schema: Schema.Schema<S, I>) =>\n (spec: StateTraitSpec<S>): StateTraitSpec<S> =>\n spec\n\nexport const node = <Input = unknown, Ctx = unknown>(\n spec: Omit<Model.StateTraitNode<Input, Ctx>, '_tag'>,\n): Model.StateTraitNode<Input, Ctx> => ({\n _tag: 'StateTraitNode',\n ...spec,\n})\n\nexport const list = <Item = unknown>(spec: Omit<Model.StateTraitList<Item>, '_tag'>): Model.StateTraitList<Item> => ({\n _tag: 'StateTraitList',\n ...spec,\n})\n\n/**\n * StateTrait.computed:\n * - Declares computed semantics for a field.\n * - Uses explicit deps as the single source of truth for dependencies (diagnostics / reverse-closure / incremental sched).\n */\nexport const computed = <\n S extends object,\n P extends StateFieldPath<S>,\n const Deps extends ReadonlyArray<StateFieldPath<S>>,\n>(input: {\n readonly deps: Deps\n readonly get: (...depsValues: DepsArgs<S, Deps>) => StateAtPath<S, P>\n readonly equals?: (prev: StateAtPath<S, P>, next: StateAtPath<S, P>) => boolean\n /**\n * 043: explicit converge time-slicing scheduling.\n * - unset: immediate (default behavior unchanged)\n * - deferred: can be postponed and merged into later windows (requires runtime time-slicing enabled)\n */\n readonly scheduling?: Model.TraitConvergeScheduling\n}): StateTraitEntry<S, P> => {\n const derive = (state: Readonly<S>): StateAtPath<S, P> => {\n const args = (input.deps as ReadonlyArray<string>).map((dep) => RowId.getAtPath(state as any, dep))\n return (input.get as any)(...args)\n }\n return {\n fieldPath: undefined as unknown as P,\n kind: 'computed',\n meta: {\n deps: input.deps,\n derive,\n equals: input.equals,\n ...(input.scheduling ? { scheduling: input.scheduling } : {}),\n },\n } as StateTraitEntry<S, P>\n}\n\n/**\n * StateTrait.source:\n * - Declares an external resource source for a field (Resource / Query integration is implemented in later phases).\n * - The kernel owns keyHash gating / concurrency / ReplayMode behavior.\n */\nexport const source = <\n S extends object,\n P extends StateFieldPath<S>,\n const Deps extends ReadonlyArray<StateFieldPath<S>>,\n>(input: {\n readonly resource: string\n readonly deps: Deps\n readonly key: (...depsValues: DepsArgs<S, Deps>) => unknown\n readonly triggers?: ReadonlyArray<'onMount' | 'onKeyChange' | 'manual'>\n readonly debounceMs?: number\n readonly concurrency?: 'switch' | 'exhaust-trailing'\n /**\n * Serializable metadata for Devtools/docs (whitelisted fields are extracted during build).\n */\n readonly meta?: TraitMeta\n}): StateTraitEntry<S, P> => {\n const key = (state: Readonly<S>): unknown => {\n const args = (input.deps as ReadonlyArray<string>).map((dep) => RowId.getAtPath(state as any, dep))\n return (input.key as any)(...args)\n }\n return {\n fieldPath: undefined as unknown as P,\n kind: 'source',\n meta: { ...input, key },\n } as StateTraitEntry<S, P>\n}\n\n/**\n * StateTrait.externalStore:\n * - Declares that a field is written back from an ExternalStore (external input or Module-as-Source).\n * - The field is treated as external-owned: do not write to it from reducers/computed/link/source; use separate fields + derived traits.\n */\nexport const externalStore = <S extends object, P extends StateFieldPath<S>, T = StateAtPath<S, P>>(input: {\n readonly store: ExternalStoreType<T>\n readonly select?: (snapshot: T) => StateAtPath<S, P>\n readonly equals?: (prev: StateAtPath<S, P>, next: StateAtPath<S, P>) => boolean\n readonly coalesceWindowMs?: number\n readonly priority?: Model.TraitLane\n readonly meta?: TraitMeta\n}): StateTraitEntry<S, P> =>\n ({\n fieldPath: undefined as unknown as P,\n kind: 'externalStore',\n meta: input as any,\n }) as StateTraitEntry<S, P>\n\n/**\n * StateTrait.link:\n * - Declares a linkage from another field into the target field.\n * - `meta.from` is also constrained by `StateFieldPath<S>`.\n */\nexport const link = <S extends object, P extends StateFieldPath<S>>(meta: {\n from: StateFieldPath<S>\n /**\n * 043: explicit converge time-slicing scheduling.\n * - unset: immediate (default behavior unchanged)\n * - deferred: can be postponed and merged into later windows (requires runtime time-slicing enabled)\n */\n scheduling?: Model.TraitConvergeScheduling\n}): StateTraitEntry<S, P> =>\n ({\n fieldPath: undefined as unknown as P,\n kind: 'link',\n meta: { ...meta, ...(meta.scheduling ? { scheduling: meta.scheduling } : {}) },\n }) as StateTraitEntry<S, P>\n\n/**\n * StateTrait.build:\n * - Normalizes the spec into an executable Program (including Graph/Plan).\n * - When DSL and build constraints differ, build is the final authority (e.g. requiring explicit deps).\n */\nexport const build = <S extends object>(\n stateSchema: Schema.Schema<S, any>,\n spec: StateTraitSpec<S>,\n): StateTraitProgram<S> => InternalBuild.build(stateSchema, spec)\n\n/**\n * StateTrait.install:\n * - Installs Program-defined behavior (computed/link/source/check, etc.) on top of a Bound API.\n * - Each PlanStep corresponds to a long-lived Effect mounted into the runtime Scope.\n */\nexport const install = <S extends object>(\n bound: BoundApi<any, any>,\n program: StateTraitProgram<S>,\n): Effect.Effect<void, never, any> => InternalInstall.install(bound, program)\n\n/**\n * StateTrait.exportStaticIr:\n * - Exports minimal Static IR (aligned with 009 canonical FieldPath constraints) for Devtools / Alignment Lab.\n * - The return value must be JSON-stringifiable (evidence packages / replay pipeline).\n */\nexport type StaticIr = InternalIr.StaticIr\n\nexport const exportStaticIr = (\n program: StateTraitProgram<any>,\n moduleId: string,\n options?: {\n readonly version?: string\n },\n): StaticIr =>\n InternalIr.exportStaticIr({\n program,\n moduleId,\n version: options?.version,\n })\n","import { Effect } from 'effect'\nimport type { BoundApi } from '../runtime/core/module.js'\nimport { getBoundInternals } from '../runtime/core/runtimeInternalsAccessor.js'\nimport * as SourceRuntime from './source.js'\nimport * as ExternalStoreRuntime from './external-store.js'\nimport * as MetaDiagnostics from './meta-diagnostics.js'\nimport type {\n StateTraitProgram,\n StateTraitPlanStep,\n StateTraitEntry,\n TraitConvergeGenerationBumpReason,\n} from './model.js'\n\nconst buildEntryIndex = <S>(\n entries: ReadonlyArray<StateTraitEntry<S, string>>,\n): Map<string, Array<StateTraitEntry<S, string>>> => {\n const index = new Map<string, Array<StateTraitEntry<S, string>>>()\n for (const entry of entries) {\n const list = index.get(entry.fieldPath) ?? []\n list.push(entry)\n index.set(entry.fieldPath, list)\n }\n return index\n}\n\n/**\n * Install behaviors described by StateTraitProgram onto the given Bound API.\n *\n * - Phase 2 minimal implementation:\n * - Register watchers for computed fields: recompute target fields when State changes.\n * - Register watchers for link fields: sync target fields when source fields change.\n * - Reserve refresh entrypoints for source fields (no external calls yet).\n *\n * Notes:\n * - All watchers are installed via Bound API `$`, without directly depending on ModuleRuntime.\n * - Each PlanStep corresponds to a long-lived Effect and is mounted into the Runtime Scope via forkScoped.\n */\nexport const install = <S>(\n bound: BoundApi<any, any>,\n program: StateTraitProgram<S>,\n): Effect.Effect<void, never, any> => {\n return Effect.gen(function* () {\n // Register the program to Runtime first (the converge engine runs computed/link/check before txn commit).\n let internals: any | undefined\n try {\n internals = getBoundInternals(bound as any)\n ;(internals.traits.registerStateTraitProgram as any)(program, {\n bumpReason: 'logic_installed' as TraitConvergeGenerationBumpReason,\n })\n } catch {\n // no-op for legacy/mocked bound\n }\n\n if (internals) {\n yield* MetaDiagnostics.emitMetaSanitizeDiagnostics(program as any, {\n moduleId: internals.moduleId,\n instanceId: internals.instanceId,\n })\n }\n\n const entryIndex = buildEntryIndex(program.entries as any)\n\n const installStep = (step: StateTraitPlanStep): Effect.Effect<void, never, any> => {\n if (!step.targetFieldPath) {\n return Effect.void\n }\n\n if (step.kind !== 'source-refresh' && step.kind !== 'external-store-sync') {\n // computed/link/check are handled by the runtime core within the transaction window; install keeps only source.refresh/externalStore sync entrypoints.\n return Effect.void\n }\n\n const candidates = entryIndex.get(step.targetFieldPath)\n if (!candidates || candidates.length === 0) {\n // The plan references a missing spec: treat it as a build-time bug and ignore the step here.\n return Effect.void\n }\n\n const entry =\n step.kind === 'source-refresh'\n ? candidates.find((e) => e.kind === 'source')\n : candidates.find((e) => e.kind === 'externalStore')\n\n if (!entry) {\n return Effect.void\n }\n\n return step.kind === 'source-refresh'\n ? SourceRuntime.installSourceRefresh(bound, step, entry as any)\n : ExternalStoreRuntime.installExternalStoreSync(bound, step, entry as any)\n }\n\n yield* Effect.forEach(program.plan.steps, (step) => installStep(step)).pipe(Effect.asVoid)\n }).pipe(Effect.asVoid)\n}\n","import { Context, Effect, FiberRef, Option } from 'effect'\nimport { create } from 'mutative'\nimport type { BoundApi } from '../runtime/core/module.js'\nimport { getBoundInternals } from '../runtime/core/runtimeInternalsAccessor.js'\nimport * as TaskRunner from '../runtime/core/TaskRunner.js'\nimport * as Debug from '../runtime/core/DebugSink.js'\nimport { getExternalStoreDescriptor } from '../external-store-descriptor.js'\nimport { normalizeFieldPath } from '../field-path.js'\nimport { DeclarativeLinkRuntimeTag, HostSchedulerTag } from '../runtime/core/env.js'\nimport { getGlobalHostScheduler } from '../runtime/core/HostScheduler.js'\nimport * as RowId from './rowid.js'\nimport type { StateTraitEntry, StateTraitPlanStep } from './model.js'\n\nconst isFn = (value: unknown): value is (...args: ReadonlyArray<any>) => unknown => typeof value === 'function'\n\ntype ExternalStoreEntry<S> = Extract<StateTraitEntry<S, string>, { readonly kind: 'externalStore' }>\n\nconst resolveStore = (entry: ExternalStoreEntry<any>): Effect.Effect<any, never, any> =>\n Effect.gen(function* () {\n const store = (entry.meta as any)?.store\n const descriptor = getExternalStoreDescriptor(store)\n\n if (descriptor?.kind === 'service') {\n const service = yield* descriptor.tag\n return descriptor.map(service)\n }\n\n return store\n })\n\nexport const installExternalStoreSync = <S>(\n bound: BoundApi<any, any>,\n step: StateTraitPlanStep,\n entry: ExternalStoreEntry<S>,\n): Effect.Effect<void, never, any> =>\n Effect.gen(function* () {\n const fieldPath = step.targetFieldPath\n if (!fieldPath) return\n\n const env = yield* Effect.context<any>()\n const hostSchedulerOpt = yield* Effect.serviceOption(HostSchedulerTag)\n const hostScheduler = Option.isSome(hostSchedulerOpt) ? hostSchedulerOpt.value : getGlobalHostScheduler()\n const microtask = Effect.async<void, never>((resume) => {\n hostScheduler.scheduleMicrotask(() => resume(Effect.void))\n })\n\n let internals: ReturnType<typeof getBoundInternals>\n try {\n internals = getBoundInternals(bound as any)\n } catch {\n return\n }\n\n const select = (entry.meta as any)?.select as ((snapshot: unknown) => unknown) | undefined\n const equals = (entry.meta as any)?.equals as ((a: unknown, b: unknown) => boolean) | undefined\n\n const computeValue = (snapshot: unknown): unknown => (isFn(select) ? select(snapshot) : snapshot)\n const isEqual = (a: unknown, b: unknown): boolean => (isFn(equals) ? equals(a, b) : Object.is(a, b))\n\n const traitLane = (entry.meta as any)?.priority as 'urgent' | 'nonUrgent' | undefined\n\n const rawStore = (entry.meta as any)?.store\n const rawDescriptor = getExternalStoreDescriptor(rawStore)\n\n if (rawDescriptor?.kind === 'module') {\n const linkRuntimeOpt = yield* Effect.serviceOption(DeclarativeLinkRuntimeTag)\n if (Option.isNone(linkRuntimeOpt)) {\n return yield* Effect.dieMessage('[StateTrait.externalStore] Missing DeclarativeLinkRuntime service (073).')\n }\n\n const module = rawDescriptor.module\n\n const sourceRuntime = (() => {\n if (module && typeof module === 'object') {\n const moduleId = (module as any).moduleId\n const instanceId = (module as any).instanceId\n const getState = (module as any).getState\n if (typeof moduleId === 'string' && moduleId.length > 0 && typeof instanceId === 'string' && instanceId.length > 0 && getState) {\n return module as any\n }\n\n const tag = (module as any).tag\n if (tag && Context.isTag(tag)) {\n return internals.imports.get(tag as any)\n }\n\n if (Context.isTag(module as any)) {\n return internals.imports.get(module as any)\n }\n }\n return undefined\n })()\n\n if (!sourceRuntime) {\n return yield* Effect.dieMessage(\n `[StateTrait.externalStore] Module-as-Source store is unresolved for \"${fieldPath}\". ` +\n `Fix: include the source ModuleTag in module imports (moduleId=${rawDescriptor.moduleId}).`,\n )\n }\n\n if (rawDescriptor.instanceId && rawDescriptor.instanceId !== sourceRuntime.instanceId) {\n return yield* Effect.dieMessage(\n `[StateTrait.externalStore] Module-as-Source instanceId mismatch for \"${fieldPath}\". ` +\n `descriptor.instanceId=${rawDescriptor.instanceId}, resolved.instanceId=${sourceRuntime.instanceId}`,\n )\n }\n\n if (sourceRuntime.moduleId !== rawDescriptor.moduleId) {\n return yield* Effect.dieMessage(\n `[StateTrait.externalStore] Module-as-Source moduleId mismatch for \"${fieldPath}\". ` +\n `descriptor.moduleId=${rawDescriptor.moduleId}, resolved.moduleId=${sourceRuntime.moduleId}`,\n )\n }\n\n const staticIr = rawDescriptor.readQuery.staticIr\n const isRecognizableStatic =\n staticIr.lane === 'static' && staticIr.readsDigest != null && staticIr.fallbackReason == null\n\n if (!isRecognizableStatic) {\n yield* Debug.record({\n type: 'diagnostic',\n moduleId: internals.moduleId,\n instanceId: internals.instanceId,\n code: 'external_store::module_source_degraded',\n severity: 'warning',\n message:\n '[StateTrait.externalStore] Module-as-Source selector is not fully IR-recognizable; falling back to module-topic edge (may reduce perf).',\n hint:\n 'Fix: provide a static ReadQuery (ReadQuery.make) or annotate selector.fieldPaths to get a stable readsDigest; avoid dynamic lane.',\n kind: 'module_as_source_degraded',\n trigger: {\n kind: 'trait',\n name: 'externalStore.moduleSource',\n details: {\n sourceModuleId: rawDescriptor.moduleId,\n selectorId: staticIr.selectorId,\n lane: staticIr.lane,\n fallbackReason: staticIr.fallbackReason,\n readsDigest: staticIr.readsDigest,\n },\n },\n })\n }\n\n const moduleInstanceKey = `${sourceRuntime.moduleId}::${sourceRuntime.instanceId}` as any\n\n const writeValue = (nextValue: unknown): Effect.Effect<void, never, never> =>\n Effect.gen(function* () {\n const inTxn = yield* FiberRef.get(TaskRunner.inSyncTransactionFiber)\n\n const body = Effect.gen(function* () {\n const prevState = (yield* bound.state.read) as any\n const prevValue = RowId.getAtPath(prevState as any, fieldPath)\n\n if (isEqual(prevValue, nextValue)) {\n return\n }\n\n const nextDraft = create(prevState, (draft) => {\n RowId.setAtPathMutating(draft as any, fieldPath, nextValue)\n })\n\n const normalized = normalizeFieldPath(fieldPath) ?? []\n internals.txn.recordStatePatch(normalized, 'trait-external-store', prevValue, nextValue, step.id)\n internals.txn.updateDraft(nextDraft)\n })\n\n if (inTxn) {\n return yield* body\n }\n\n const stateCommitPriority = traitLane === 'nonUrgent' ? 'low' : 'normal'\n return yield* internals.txn.runWithStateTransaction(\n {\n kind: 'trait-external-store',\n name: fieldPath,\n details: {\n stateCommit: {\n priority: stateCommitPriority,\n },\n },\n },\n () => body.pipe(Effect.asVoid),\n )\n }).pipe(Effect.provide(env))\n\n const unregister = linkRuntimeOpt.value.registerModuleAsSourceLink({\n id: `${internals.instanceId}::externalStore:${step.id}`,\n sourceModuleInstanceKey: moduleInstanceKey,\n readQuery: rawDescriptor.readQuery as any,\n computeValue,\n equalsValue: isEqual,\n applyValue: writeValue,\n })\n\n yield* Effect.addFinalizer(() =>\n Effect.sync(() => {\n unregister()\n }),\n )\n\n // Initial sync: read the current source snapshot and write it back immediately.\n const initialState = yield* (sourceRuntime.getState as Effect.Effect<unknown, never, never>)\n const initialSelected = rawDescriptor.readQuery.select(initialState as any)\n yield* writeValue(computeValue(initialSelected))\n\n return\n }\n\n const store = rawDescriptor?.kind === 'service' ? yield* resolveStore(entry) : rawStore\n\n if (!store || typeof store !== 'object') {\n return yield* Effect.dieMessage(\n `[StateTrait.externalStore] Invalid store for \"${fieldPath}\". Expected { getSnapshot, subscribe }.`,\n )\n }\n if (!isFn((store as any).getSnapshot) || !isFn((store as any).subscribe)) {\n return yield* Effect.dieMessage(\n `[StateTrait.externalStore] Invalid store for \"${fieldPath}\". Expected { getSnapshot, subscribe }.`,\n )\n }\n\n let fused = false\n let fuseCause: unknown | undefined\n let fuseRecorded = false\n let pending = false\n let resume: (() => void) | undefined\n\n const recordFuseDiagnostic = Effect.gen(function* () {\n if (fuseRecorded) return\n fuseRecorded = true\n\n const errorMessage = (() => {\n if (fuseCause instanceof Error) return fuseCause.message\n if (typeof fuseCause === 'string') return fuseCause\n return 'unknown'\n })()\n\n yield* Debug.record({\n type: 'diagnostic',\n moduleId: internals.moduleId,\n instanceId: internals.instanceId,\n code: 'external_store::snapshot_threw',\n severity: 'warning',\n message:\n `[StateTrait.externalStore] store.getSnapshot() threw; trait is fused and will stop syncing for \"${fieldPath}\".`,\n hint: 'Fix: ensure getSnapshot is synchronous and non-throwing; async resources should use StateTrait.source or ExternalStore.fromStream({ current/initial }).',\n kind: 'external_store_fused:get_snapshot',\n trigger: {\n kind: 'trait',\n name: 'externalStore.getSnapshot',\n details: {\n fieldPath,\n traitId: step.id,\n storeKind: rawDescriptor?.kind ?? 'raw',\n error: errorMessage,\n },\n },\n })\n })\n\n const signal = (): void => {\n if (fused) return\n if (resume) {\n const r = resume\n pending = false\n r()\n return\n }\n pending = true\n }\n\n const awaitSignal = (): Effect.Effect<void, never, never> => {\n if (pending) {\n pending = false\n return Effect.void\n }\n\n return Effect.async<void, never>((resumeEffect, signal) => {\n let done = false\n const r = () => {\n if (done) return\n done = true\n resume = undefined\n resumeEffect(Effect.void)\n }\n\n resume = r\n\n try {\n signal.addEventListener(\n 'abort',\n () => {\n if (resume === r) {\n resume = undefined\n }\n },\n { once: true },\n )\n } catch {\n // best-effort\n }\n })\n }\n\n const getSnapshotOrFuse = (): unknown => {\n try {\n return (store as any).getSnapshot()\n } catch (err) {\n fused = true\n fuseCause = err\n return undefined\n }\n }\n\n const readSnapshotOrFuse = Effect.locally(TaskRunner.inSyncTransactionFiber, false)(Effect.sync(getSnapshotOrFuse))\n\n // T016: atomic init semantics (no missed updates between getSnapshot() and subscribe()).\n const before = yield* readSnapshotOrFuse\n if (fused) {\n yield* recordFuseDiagnostic\n return\n }\n\n const unsubscribe = (store as any).subscribe(signal) as (() => void) | undefined\n yield* Effect.addFinalizer(() =>\n Effect.sync(() => {\n try {\n unsubscribe?.()\n } catch {\n // best-effort\n }\n }),\n )\n\n const after = yield* readSnapshotOrFuse\n if (fused) {\n yield* recordFuseDiagnostic\n return\n }\n\n const writeValue = (nextValue: unknown): Effect.Effect<void, never, any> =>\n Effect.gen(function* () {\n const inTxn = yield* FiberRef.get(TaskRunner.inSyncTransactionFiber)\n\n const body = Effect.gen(function* () {\n const prevState = (yield* bound.state.read) as any\n const prevValue = RowId.getAtPath(prevState as any, fieldPath)\n\n if (isEqual(prevValue, nextValue)) {\n return\n }\n\n const nextDraft = create(prevState, (draft) => {\n RowId.setAtPathMutating(draft as any, fieldPath, nextValue)\n })\n\n const normalized = normalizeFieldPath(fieldPath) ?? []\n internals.txn.recordStatePatch(normalized, 'trait-external-store', prevValue, nextValue, step.id)\n internals.txn.updateDraft(nextDraft)\n })\n\n if (inTxn) {\n return yield* body\n }\n\n const stateCommitPriority = traitLane === 'nonUrgent' ? 'low' : 'normal'\n return yield* internals.txn.runWithStateTransaction(\n {\n kind: 'trait-external-store',\n name: fieldPath,\n details: {\n stateCommit: {\n priority: stateCommitPriority,\n },\n },\n },\n () => body.pipe(Effect.asVoid),\n )\n })\n\n // Use the post-subscribe snapshot as the initial committed value to avoid missing an update between getSnapshot and subscribe.\n yield* writeValue(computeValue(after))\n\n if (!isEqual(before, after)) {\n signal()\n }\n\n // Long-lived sync loop: coalesce changes, pull latest snapshot, and write back in a txn.\n yield* Effect.forkScoped(\n Effect.locally(TaskRunner.inSyncTransactionFiber, false)(\n Effect.gen(function* () {\n while (true) {\n yield* awaitSignal()\n if (fused) return\n yield* microtask\n if (fused) return\n\n const snapshot = yield* readSnapshotOrFuse\n if (fused) {\n yield* recordFuseDiagnostic\n return\n }\n\n yield* writeValue(computeValue(snapshot))\n }\n }),\n ),\n )\n })\n","import { Effect, FiberRef } from 'effect'\nimport * as Debug from '../runtime/core/DebugSink.js'\nimport { isDevEnv } from '../runtime/core/env.js'\nimport { onceInRunSession } from './converge-diagnostics.js'\nimport type { StateTraitProgram } from './model.js'\nimport * as Meta from './meta.js'\n\ntype MetaIssue = Readonly<{\n readonly origin: string\n readonly report: Meta.TraitMetaSanitizeReport\n}>\n\nconst formatList = (items: ReadonlyArray<string> | undefined, limit = 6): string | undefined => {\n if (!items || items.length === 0) return undefined\n if (items.length <= limit) return items.join(', ')\n return `${items.slice(0, limit).join(', ')}, …(+${items.length - limit})`\n}\n\nconst formatPart = (label: string, value: string | number | undefined): string | undefined => {\n if (value === undefined) return undefined\n return `${label}=${value}`\n}\n\nconst formatIssue = (issue: MetaIssue): string => {\n const r = issue.report\n\n const parts: Array<string> = []\n\n if (r.invalidInput) parts.push('invalidInput=true')\n\n const unknownKeys = formatList(r.unknownKeys, 6)\n if (unknownKeys) {\n parts.push(\n `unknownKeys=[${unknownKeys}]${typeof r.unknownKeyCount === 'number' && r.unknownKeyCount > r.unknownKeys!.length ? ` total=${r.unknownKeyCount}` : ''}`,\n )\n }\n\n const droppedKeys = formatList(r.droppedKeys, 6)\n if (droppedKeys) parts.push(`droppedKeys=[${droppedKeys}]`)\n\n if (typeof r.droppedTagItems === 'number' && r.droppedTagItems > 0) {\n parts.push(`droppedTagItems=${r.droppedTagItems}`)\n }\n\n const ignoredAnnotationKeys = formatList(r.ignoredAnnotationKeys, 6)\n if (ignoredAnnotationKeys) {\n parts.push(\n `ignoredAnnotationKeys=[${ignoredAnnotationKeys}]${\n typeof r.ignoredAnnotationKeyCount === 'number' && r.ignoredAnnotationKeyCount > r.ignoredAnnotationKeys!.length\n ? ` total=${r.ignoredAnnotationKeyCount}`\n : ''\n }`,\n )\n }\n\n const droppedAnnotationKeys = formatList(r.droppedAnnotationKeys, 6)\n if (droppedAnnotationKeys) {\n parts.push(\n `droppedAnnotationKeys=[${droppedAnnotationKeys}]${\n typeof r.droppedAnnotationKeyCount === 'number' && r.droppedAnnotationKeyCount > r.droppedAnnotationKeys!.length\n ? ` total=${r.droppedAnnotationKeyCount}`\n : ''\n }`,\n )\n }\n\n const droppedValues = formatPart('droppedAnnotationValues', r.droppedAnnotationValues)\n if (droppedValues) parts.push(droppedValues)\n\n const nonSerializable = formatPart('nonSerializable', r.droppedAnnotationNonSerializable)\n const depthExceeded = formatPart('depthExceeded', r.droppedAnnotationDepthExceeded)\n const nonFiniteNumber = formatPart('nonFiniteNumber', r.droppedAnnotationNonFiniteNumber)\n const reasons = [nonSerializable, depthExceeded, nonFiniteNumber].filter((x): x is string => x !== undefined)\n if (reasons.length > 0) parts.push(`reasons={${reasons.join(', ')}}`)\n\n return `[${issue.origin}] ${parts.join(' ')}`\n}\n\nconst collectNodeMetaIssues = (program: StateTraitProgram<any>): Array<MetaIssue> => {\n const spec: any = program.spec as any\n if (!spec || typeof spec !== 'object') return []\n\n const isNode = (value: unknown): value is { readonly _tag: 'StateTraitNode'; readonly meta?: unknown } =>\n typeof value === 'object' && value !== null && (value as any)._tag === 'StateTraitNode'\n\n const isList = (value: unknown): value is { readonly _tag: 'StateTraitList'; readonly item?: unknown; readonly list?: unknown } =>\n typeof value === 'object' && value !== null && (value as any)._tag === 'StateTraitList'\n\n const issues: Array<MetaIssue> = []\n\n const add = (origin: string, meta: unknown): void => {\n const { report } = Meta.sanitizeWithReport(meta)\n if (report) issues.push({ origin, report })\n }\n\n for (const key of Object.keys(spec)) {\n const raw = spec[key]\n if (!raw) continue\n\n if (isList(raw)) {\n if (raw.item && isNode(raw.item) && (raw.item as any).meta !== undefined) {\n add(`node:${key}[]`, (raw.item as any).meta)\n }\n if (raw.list && isNode(raw.list) && (raw.list as any).meta !== undefined) {\n add(`node:${key}`, (raw.list as any).meta)\n }\n continue\n }\n\n if (isNode(raw)) {\n if ((raw as any).meta === undefined) continue\n add(`node:${key === '$root' ? '$root' : key}`, (raw as any).meta)\n continue\n }\n }\n\n return issues\n}\n\nconst collectEntryMetaIssues = (program: StateTraitProgram<any>): Array<MetaIssue> => {\n const issues: Array<MetaIssue> = []\n\n for (const entry of program.entries) {\n if (entry.kind !== 'source' && entry.kind !== 'externalStore') continue\n const rawMeta = (entry.meta as any)?.meta\n if (rawMeta === undefined) continue\n\n const origin = entry.kind === 'source' ? `source:${entry.fieldPath}` : `externalStore:${entry.fieldPath}`\n const { report } = Meta.sanitizeWithReport(rawMeta)\n if (report) issues.push({ origin, report })\n }\n\n return issues\n}\n\nexport const emitMetaSanitizeDiagnostics = (\n program: StateTraitProgram<any>,\n ctx: Readonly<{ readonly moduleId?: string; readonly instanceId?: string }>,\n): Effect.Effect<void> =>\n Effect.gen(function* () {\n if (!isDevEnv()) return\n\n const level = yield* FiberRef.get(Debug.currentDiagnosticsLevel)\n if (level === 'off') return\n\n const moduleId = ctx.moduleId ?? 'unknown'\n const shouldEmit = yield* onceInRunSession(`meta_sanitize:${moduleId}`)\n if (!shouldEmit) return\n\n const issues = [...collectNodeMetaIssues(program), ...collectEntryMetaIssues(program)]\n if (issues.length === 0) return\n\n const limit = level === 'light' || level === 'sampled' ? 8 : 24\n const lines = issues.slice(0, limit).map(formatIssue)\n if (issues.length > limit) {\n lines.push(`…(+${issues.length - limit})`)\n }\n\n yield* Debug.record({\n type: 'diagnostic',\n moduleId: ctx.moduleId,\n instanceId: ctx.instanceId,\n code: 'state_trait::meta_sanitized',\n severity: 'warning',\n message: `[meta] TraitMeta contains non-exportable fields/values and will be sanitized (total ${issues.length}):\\n${lines.join('\\n')}`,\n hint:\n 'TraitMeta is export-only (Devtools/Static IR) and MUST be JsonValue. ' +\n 'Use `annotations` with `x-*` keys for extension hints; avoid closures/functions/Effect/Fiber/Tag/DOM/BigInt/circular refs. ' +\n 'See specs/016 and docs/ssot/platform/contracts/03-control-surface-manifest.md.',\n kind: 'meta_sanitized',\n })\n })\n\n"],"mappings":"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","names":["build","exportStaticIr","install","Effect","resume","writeValue","signal","Effect","FiberRef","Effect","FiberRef","list","Effect","build","install","exportStaticIr"]}