@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
@@ -4,186 +4,51 @@ import {
4
4
  parseListItemFieldPath,
5
5
  setAtPathMutating,
6
6
  toListItemValuePath
7
- } from "./chunk-BABLDP24.js";
7
+ } from "./chunk-EPQFNJU3.js";
8
8
  import {
9
9
  Snapshot,
10
10
  internal,
11
11
  keyHash
12
- } from "./chunk-NZJKFF45.js";
12
+ } from "./chunk-EKCDHWRK.js";
13
13
  import {
14
- forceSourceRefresh,
15
- inSyncTransactionFiber
16
- } from "./chunk-ZFLHVFUC.js";
14
+ mergeCanonical,
15
+ sanitize
16
+ } from "./chunk-J3CWXIPV.js";
17
17
  import {
18
18
  compareFieldPath,
19
19
  getFieldPathId,
20
20
  makeFieldPathIdRegistry,
21
21
  normalizeFieldPath
22
- } from "./chunk-IHVBV5C2.js";
22
+ } from "./chunk-SOOBFXRR.js";
23
23
  import {
24
24
  getBoundInternals
25
- } from "./chunk-3RMKLXHX.js";
25
+ } from "./chunk-63ZQ5RIN.js";
26
26
  import {
27
27
  ReplayModeConfigTag,
28
+ forceSourceRefresh,
29
+ inSyncTransactionFiber,
28
30
  isDevEnv
29
- } from "./chunk-3QMIVH35.js";
30
- import {
31
- record
32
- } from "./chunk-DMBALCE2.js";
33
- import {
34
- fnv1a32,
35
- stableStringify
36
- } from "./chunk-GMPEOUP2.js";
31
+ } from "./chunk-S4S5N4BJ.js";
37
32
  import {
38
33
  RunSessionTag,
39
34
  make,
40
35
  run
41
- } from "./chunk-OFADUJWJ.js";
36
+ } from "./chunk-CYYSQMLO.js";
37
+ import {
38
+ currentDiagnosticsLevel,
39
+ record
40
+ } from "./chunk-V2SBGVDO.js";
42
41
  import {
43
42
  EffectOpMiddlewareTag
44
- } from "./chunk-JWOYLO27.js";
43
+ } from "./chunk-LPPZDFTD.js";
44
+ import {
45
+ fnv1a32,
46
+ stableStringify
47
+ } from "./chunk-4MZ7BT3R.js";
45
48
 
46
49
  // src/internal/state-trait/build.ts
47
50
  import * as SchemaAST from "effect/SchemaAST";
48
51
 
49
- // src/internal/state-trait/meta.ts
50
- var uniqSortedStrings = (input) => {
51
- const set = /* @__PURE__ */ new Set();
52
- for (const item of input) {
53
- const v = item.trim();
54
- if (!v) continue;
55
- set.add(v);
56
- }
57
- return Array.from(set).sort((a, b) => a.localeCompare(b));
58
- };
59
- var isPlainRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
60
- var sanitizeJsonValue = (input, depth) => {
61
- if (input === null) return null;
62
- if (typeof input === "string") return input;
63
- if (typeof input === "boolean") return input;
64
- if (typeof input === "number") {
65
- return Number.isFinite(input) ? input : void 0;
66
- }
67
- if (depth >= 6) return void 0;
68
- if (Array.isArray(input)) {
69
- const out = [];
70
- for (const item of input) {
71
- const v = sanitizeJsonValue(item, depth + 1);
72
- if (v !== void 0) out.push(v);
73
- }
74
- return out;
75
- }
76
- if (isPlainRecord(input)) {
77
- const keys = Object.keys(input).sort();
78
- const out = {};
79
- for (const key of keys) {
80
- const v = sanitizeJsonValue(input[key], depth + 1);
81
- if (v !== void 0) out[key] = v;
82
- }
83
- return out;
84
- }
85
- return void 0;
86
- };
87
- var sanitize = (input) => {
88
- if (input === null || input === void 0) return void 0;
89
- if (typeof input !== "object" || Array.isArray(input)) return void 0;
90
- const record2 = input;
91
- const out = {};
92
- const pickString = (key) => {
93
- const value = record2[key];
94
- if (typeof value !== "string") return;
95
- const trimmed = value.trim();
96
- if (!trimmed) return;
97
- out[key] = trimmed;
98
- };
99
- pickString("label");
100
- pickString("description");
101
- pickString("group");
102
- pickString("docsUrl");
103
- pickString("cacheGroup");
104
- const canonical = record2.canonical;
105
- if (typeof canonical === "boolean") {
106
- out.canonical = canonical;
107
- }
108
- const tagsRaw = record2.tags;
109
- if (typeof tagsRaw === "string") {
110
- const tags = uniqSortedStrings([tagsRaw]);
111
- if (tags.length > 0) out.tags = tags;
112
- } else if (Array.isArray(tagsRaw)) {
113
- const tags = uniqSortedStrings(tagsRaw.filter((x) => typeof x === "string"));
114
- if (tags.length > 0) out.tags = tags;
115
- }
116
- const annotations = {};
117
- const annotationKeys = Object.keys(record2).filter((k) => k.startsWith("x-")).sort((a, b) => a.localeCompare(b));
118
- for (const key of annotationKeys) {
119
- const v = sanitizeJsonValue(record2[key], 0);
120
- if (v !== void 0) annotations[key] = v;
121
- }
122
- const annotationsRaw = record2.annotations;
123
- if (isPlainRecord(annotationsRaw)) {
124
- const keys = Object.keys(annotationsRaw).filter((k) => k.startsWith("x-")).sort((a, b) => a.localeCompare(b));
125
- for (const key of keys) {
126
- const v = sanitizeJsonValue(annotationsRaw[key], 0);
127
- if (v !== void 0) annotations[key] = v;
128
- }
129
- }
130
- if (Object.keys(annotations).length > 0) out.annotations = annotations;
131
- return Object.keys(out).length > 0 ? out : void 0;
132
- };
133
- var stableStringify2 = (meta) => {
134
- const out = {};
135
- const keys = Object.keys(meta).sort();
136
- for (const k of keys) {
137
- out[k] = meta[k];
138
- }
139
- return JSON.stringify(out);
140
- };
141
- var equals = (a, b) => {
142
- if (a === b) return true;
143
- if (!a || !b) return false;
144
- return stableStringify2(a) === stableStringify2(b);
145
- };
146
- var mergeCanonical = (current, incoming) => {
147
- const existing = current.meta;
148
- if (!existing) {
149
- return {
150
- meta: incoming.meta,
151
- origin: incoming.origin,
152
- conflicts: current.conflicts
153
- };
154
- }
155
- if (equals(existing, incoming.meta)) {
156
- return current;
157
- }
158
- const conflicts = [...current.conflicts ?? []];
159
- const push = (conflict) => {
160
- const exists = conflicts.some((c) => c.origin === conflict.origin && equals(c.meta, conflict.meta));
161
- if (!exists) conflicts.push(conflict);
162
- };
163
- const existingCanonical = existing.canonical === true;
164
- const incomingCanonical = incoming.meta.canonical === true;
165
- if (!existingCanonical && incomingCanonical) {
166
- push({
167
- origin: current.origin ?? "unknown",
168
- meta: existing
169
- });
170
- return {
171
- meta: incoming.meta,
172
- origin: incoming.origin,
173
- conflicts
174
- };
175
- }
176
- push({
177
- origin: incoming.origin,
178
- meta: incoming.meta
179
- });
180
- return {
181
- meta: existing,
182
- origin: current.origin ?? incoming.origin,
183
- conflicts
184
- };
185
- };
186
-
187
52
  // src/internal/state-trait/model.ts
188
53
  var normalizeSpec = (spec) => {
189
54
  const entries = [];
@@ -219,6 +84,14 @@ var normalizeSpec = (spec) => {
219
84
  meta: { ...meta, deps, _fieldPath: fieldPath }
220
85
  };
221
86
  }
87
+ if (entry.kind === "externalStore") {
88
+ const meta = entry.meta;
89
+ return {
90
+ ...entry,
91
+ fieldPath,
92
+ meta: { ...meta, _fieldPath: fieldPath }
93
+ };
94
+ }
222
95
  if (entry.kind === "link") {
223
96
  const meta = entry.meta;
224
97
  const from = prefixDeps([meta.from], depPrefix)[0] ?? meta.from;
@@ -256,6 +129,7 @@ var normalizeSpec = (spec) => {
256
129
  expandMaybeRecord(node.computed);
257
130
  expandMaybeRecord(node.source);
258
131
  expandMaybeRecord(node.link);
132
+ expandMaybeRecord(node.externalStore);
259
133
  if (node.check) {
260
134
  const rules = {};
261
135
  const checkDepsPrefix = options?.checkDepsPrefix ?? (joinPrefix.endsWith("[]") ? joinPrefix : "");
@@ -346,8 +220,56 @@ var collectNodeMeta = (spec) => {
346
220
  return out;
347
221
  };
348
222
 
223
+ // src/internal/state-trait/converge-ir.ts
224
+ var getConvergeStaticIrDigest = (ir) => {
225
+ if (typeof ir.staticIrDigest === "string" && ir.staticIrDigest.length > 0) {
226
+ return ir.staticIrDigest;
227
+ }
228
+ const hash = fnv1a32(
229
+ stableStringify({ writersKey: ir.writersKey, depsKey: ir.depsKey, fieldPathsKey: ir.fieldPathsKey })
230
+ );
231
+ return `converge_ir_v2:${hash}`;
232
+ };
233
+ var exportConvergeStaticIr = (options) => ({
234
+ staticIrDigest: getConvergeStaticIrDigest(options.ir),
235
+ moduleId: options.moduleId,
236
+ instanceId: options.instanceId,
237
+ generation: options.ir.generation,
238
+ fieldPaths: options.ir.fieldPaths,
239
+ stepOutFieldPathIdByStepId: Array.from(options.ir.stepOutFieldPathIdByStepId),
240
+ stepSchedulingByStepId: options.ir.stepSchedulingByStepId.slice(),
241
+ topoOrder: options.ir.topoOrder.slice(),
242
+ buildDurationMs: options.ir.buildDurationMs
243
+ });
244
+
349
245
  // src/internal/state-trait/build.ts
350
246
  var nowPerf = () => typeof globalThis.performance !== "undefined" && typeof globalThis.performance.now === "function" ? globalThis.performance.now() : Date.now();
247
+ var collectMultipleWritersError = (entries) => {
248
+ const kindsByFieldPath = /* @__PURE__ */ new Map();
249
+ for (const entry of entries) {
250
+ if (entry.kind !== "computed" && entry.kind !== "link" && entry.kind !== "source" && entry.kind !== "externalStore") {
251
+ continue;
252
+ }
253
+ const set = kindsByFieldPath.get(entry.fieldPath) ?? /* @__PURE__ */ new Set();
254
+ set.add(entry.kind);
255
+ kindsByFieldPath.set(entry.fieldPath, set);
256
+ }
257
+ const conflicts = [];
258
+ for (const [fieldPath, kinds] of kindsByFieldPath.entries()) {
259
+ if (kinds.size <= 1) continue;
260
+ conflicts.push({ fieldPath, kinds: Array.from(kinds).sort() });
261
+ }
262
+ if (conflicts.length === 0) return void 0;
263
+ conflicts.sort((a, b) => a.fieldPath < b.fieldPath ? -1 : a.fieldPath > b.fieldPath ? 1 : 0);
264
+ const fields = conflicts.map((c) => c.fieldPath);
265
+ const primary = conflicts[0];
266
+ const kindSummary = primary.kinds.join(" + ");
267
+ return {
268
+ code: "MULTIPLE_WRITERS",
269
+ message: `[StateTrait.build] Multiple writers for field "${primary.fieldPath}" (${kindSummary}). Only one of computed/link/source/externalStore can write a fieldPath.`,
270
+ fields
271
+ };
272
+ };
351
273
  var getConvergeWriterDeps = (entry) => {
352
274
  if (entry.kind === "computed") {
353
275
  return entry.meta?.deps ?? [];
@@ -425,24 +347,11 @@ var collectSchemaFieldPaths = (schema) => {
425
347
  byKey.set(JSON.stringify(normalized), normalized);
426
348
  };
427
349
  const visit = (ast, prefix, seen) => {
428
- let current = ast;
429
- while (true) {
430
- if (SchemaAST.isSuspend(current)) {
431
- if (seen.has(current)) return;
432
- seen.add(current);
433
- current = current.f();
434
- continue;
435
- }
436
- if (SchemaAST.isRefinement(current)) {
437
- current = current.from;
438
- continue;
439
- }
440
- break;
441
- }
442
- if (SchemaAST.isTransformation(current)) {
443
- visit(current.to, prefix, seen);
444
- visit(current.from, prefix, seen);
445
- return;
350
+ let current = SchemaAST.toType(ast);
351
+ while (SchemaAST.isSuspend(current)) {
352
+ if (seen.has(current)) return;
353
+ seen.add(current);
354
+ current = SchemaAST.toType(current.thunk());
446
355
  }
447
356
  if (SchemaAST.isUnion(current)) {
448
357
  for (const t of current.types) {
@@ -450,16 +359,16 @@ var collectSchemaFieldPaths = (schema) => {
450
359
  }
451
360
  return;
452
361
  }
453
- if (SchemaAST.isTupleType(current)) {
362
+ if (SchemaAST.isArrays(current)) {
454
363
  for (const e of current.elements) {
455
- visit(e.type, prefix, seen);
364
+ visit(e, prefix, seen);
456
365
  }
457
366
  for (const r of current.rest) {
458
- visit(r.type, prefix, seen);
367
+ visit(r, prefix, seen);
459
368
  }
460
369
  return;
461
370
  }
462
- if (SchemaAST.isTypeLiteral(current)) {
371
+ if (SchemaAST.isObjects(current)) {
463
372
  for (const ps of current.propertySignatures) {
464
373
  const seg = String(ps.name);
465
374
  if (!seg) continue;
@@ -476,6 +385,7 @@ var collectSchemaFieldPaths = (schema) => {
476
385
  var buildConvergeIr = (stateSchema, entries) => {
477
386
  const startedAt = nowPerf();
478
387
  const generation = 0;
388
+ const multipleWritersError = collectMultipleWritersError(entries);
479
389
  const writers = entries.filter((e) => e.kind === "computed" || e.kind === "link");
480
390
  const writersKey = writers.map((entry) => `${entry.kind}:${entry.fieldPath}`).sort().join("|");
481
391
  const depsKey = writers.map((entry) => {
@@ -487,7 +397,7 @@ var buildConvergeIr = (stateSchema, entries) => {
487
397
  for (const entry of writers) {
488
398
  writerByPath.set(entry.fieldPath, entry);
489
399
  }
490
- const topo = writers.length > 0 ? computeConvergeTopoOrder(writers) : { order: [] };
400
+ const topo = multipleWritersError ? { order: [] } : writers.length > 0 ? computeConvergeTopoOrder(writers) : { order: [] };
491
401
  const stepsById = topo.configError ? [] : topo.order.map((path) => writerByPath.get(path));
492
402
  const fieldPathTable = /* @__PURE__ */ new Map();
493
403
  const addPath = (path) => {
@@ -511,6 +421,11 @@ var buildConvergeIr = (stateSchema, entries) => {
511
421
  const fieldPaths = Array.from(fieldPathTable.values()).sort(compareFieldPath);
512
422
  const fieldPathIdRegistry = makeFieldPathIdRegistry(fieldPaths);
513
423
  const fieldPathsKey = fnv1a32(stableStringify(fieldPaths));
424
+ const staticIrDigest = getConvergeStaticIrDigest({
425
+ writersKey,
426
+ depsKey,
427
+ fieldPathsKey
428
+ });
514
429
  const stepOutFieldPathIdByStepId = [];
515
430
  const stepDepsFieldPathIdsByStepId = [];
516
431
  const stepSchedulingByStepId = [];
@@ -538,9 +453,10 @@ var buildConvergeIr = (stateSchema, entries) => {
538
453
  writersKey,
539
454
  depsKey,
540
455
  fieldPathsKey,
456
+ staticIrDigest,
541
457
  fieldPaths,
542
458
  fieldPathIdRegistry,
543
- ...topo.configError ? { configError: topo.configError } : null,
459
+ ...multipleWritersError ? { configError: multipleWritersError } : topo.configError ? { configError: topo.configError } : null,
544
460
  stepsById,
545
461
  stepOutFieldPathIdByStepId,
546
462
  stepDepsFieldPathIdsByStepId,
@@ -696,6 +612,12 @@ var buildGraph = (entries, nodeMetaByFieldPath) => {
696
612
  });
697
613
  }
698
614
  }
615
+ } else if (entry.kind === "externalStore") {
616
+ planSteps.push({
617
+ id: `external-store:${fieldPath}`,
618
+ kind: "external-store-sync",
619
+ targetFieldPath: fieldPath
620
+ });
699
621
  } else if (entry.kind === "check") {
700
622
  planSteps.push({
701
623
  id: `check:${fieldPath}`,
@@ -836,7 +758,7 @@ var collectSchemaPaths = (entries) => {
836
758
  }
837
759
  }
838
760
  }
839
- return Array.from(byKey.entries()).sort((a, b) => a[0].localeCompare(b[0])).map(([, v]) => v);
761
+ return Array.from(byKey.entries()).sort((a, b) => a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0).map(([, v]) => v);
840
762
  };
841
763
  var build = (stateSchema, spec) => {
842
764
  const entries = normalizeSpec(spec);
@@ -888,8 +810,8 @@ var build = (stateSchema, spec) => {
888
810
  };
889
811
  };
890
812
 
891
- // src/internal/state-trait/source.ts
892
- import { Effect, Fiber, FiberRef, Option } from "effect";
813
+ // src/internal/state-trait/source.impl.ts
814
+ import { Effect, Fiber, Option } from "effect";
893
815
  import { create } from "mutative";
894
816
 
895
817
  // src/internal/state-trait/deps-trace.ts
@@ -1037,7 +959,7 @@ var trace = (fn, state) => {
1037
959
  };
1038
960
  };
1039
961
 
1040
- // src/internal/state-trait/source.ts
962
+ // src/internal/state-trait/source.impl.ts
1041
963
  var onceInRunSession = (key) => Effect.serviceOption(RunSessionTag).pipe(
1042
964
  Effect.map((maybe) => Option.isSome(maybe) ? maybe.value.local.once(key) : true)
1043
965
  );
@@ -1061,7 +983,9 @@ var emitDepsMismatch = (params) => Effect.gen(function* () {
1061
983
  kind: `deps_mismatch:${params.kind}`
1062
984
  });
1063
985
  });
1064
- var getMiddlewareStack = () => Effect.serviceOption(EffectOpMiddlewareTag).pipe(
986
+ var getMiddlewareStack = () => Effect.serviceOption(
987
+ EffectOpMiddlewareTag
988
+ ).pipe(
1065
989
  Effect.map((maybe) => Option.isSome(maybe) ? maybe.value.stack : [])
1066
990
  );
1067
991
  var recordTraitPatch = (bound, path, reason, from, to, traitNodeId) => {
@@ -1313,7 +1237,7 @@ var installSourceRefresh = (bound, step, entry) => {
1313
1237
  }
1314
1238
  const io = Effect.gen(function* () {
1315
1239
  if (replayMode === "replay" && replayLog) {
1316
- yield* Effect.yieldNow();
1240
+ yield* Effect.yieldNow;
1317
1241
  const consumePath = wroteLoadingPath ?? logFieldPath;
1318
1242
  if (!consumePath) return yield* Effect.void;
1319
1243
  const replayed = yield* replayLog.consumeNextResourceSnapshot({
@@ -1344,7 +1268,9 @@ var installSourceRefresh = (bound, step, entry) => {
1344
1268
  return yield* Effect.void;
1345
1269
  }
1346
1270
  const stack = yield* getMiddlewareStack();
1347
- const registryOpt = yield* Effect.serviceOption(internal.ResourceRegistryTag);
1271
+ const registryOpt = yield* Effect.serviceOption(
1272
+ internal.ResourceRegistryTag
1273
+ );
1348
1274
  const registry = Option.isSome(registryOpt) ? registryOpt.value : void 0;
1349
1275
  const spec = registry?.specs.get(resourceId);
1350
1276
  if (!spec) {
@@ -1425,47 +1351,40 @@ var installSourceRefresh = (bound, step, entry) => {
1425
1351
  });
1426
1352
  }
1427
1353
  }
1428
- }).pipe(Effect.catchAllCause(() => Effect.void));
1429
- const fiber = yield* Effect.forkScoped(Effect.locally(inSyncTransactionFiber, false)(io));
1354
+ }).pipe(Effect.catchCause(() => Effect.void));
1355
+ const fiber = yield* Effect.forkScoped(Effect.provideService(io, inSyncTransactionFiber, false));
1430
1356
  const myGen = gen2 += 1;
1431
1357
  inFlight2.set(rowId, { gen: myGen, fiber, keyHash: keyHash2 });
1432
1358
  yield* Effect.forkScoped(
1433
- Effect.locally(
1434
- inSyncTransactionFiber,
1435
- false
1436
- )(
1437
- Fiber.await(fiber).pipe(
1438
- Effect.zipRight(
1439
- Effect.sync(() => {
1440
- const current = inFlight2.get(rowId);
1441
- if (current && current.gen === myGen) {
1442
- inFlight2.delete(rowId);
1443
- }
1444
- })
1445
- ),
1446
- Effect.zipRight(
1447
- mode2 === "exhaust-trailing" ? Effect.gen(function* () {
1448
- const next = trailing2.get(rowId);
1449
- trailing2.delete(rowId);
1450
- if (next) {
1451
- yield* startFetch2(rowId, next.key, next.keyHash, replayMode, replayLog);
1452
- }
1453
- }) : Effect.void
1454
- ),
1455
- Effect.catchAllCause(() => Effect.void)
1456
- )
1457
- )
1359
+ Effect.provideService(Fiber.await(fiber).pipe(
1360
+ Effect.flatMap(() => Effect.sync(() => {
1361
+ const current = inFlight2.get(rowId);
1362
+ if (current && current.gen === myGen) {
1363
+ inFlight2.delete(rowId);
1364
+ }
1365
+ })),
1366
+ Effect.flatMap(() => mode2 === "exhaust-trailing" ? Effect.gen(function* () {
1367
+ const next = trailing2.get(rowId);
1368
+ trailing2.delete(rowId);
1369
+ if (next) {
1370
+ yield* startFetch2(rowId, next.key, next.keyHash, replayMode, replayLog);
1371
+ }
1372
+ }) : Effect.void),
1373
+ Effect.catchCause(() => Effect.void)
1374
+ ), inSyncTransactionFiber, false)
1458
1375
  );
1459
1376
  });
1460
1377
  register(
1461
1378
  fieldPath,
1462
1379
  (state) => Effect.gen(function* () {
1463
1380
  const { moduleId, instanceId } = getBoundScope(bound);
1464
- const replayModeOpt = yield* Effect.serviceOption(ReplayModeConfigTag);
1381
+ const replayModeOpt = yield* Effect.serviceOption(
1382
+ ReplayModeConfigTag
1383
+ );
1465
1384
  const replayMode = Option.isSome(replayModeOpt) ? replayModeOpt.value.mode : "live";
1466
1385
  const replayLogOpt = yield* Effect.serviceOption(ReplayLog);
1467
1386
  const replayLog = Option.isSome(replayLogOpt) ? replayLogOpt.value : void 0;
1468
- const force = yield* FiberRef.get(forceSourceRefresh);
1387
+ const force = yield* Effect.service(forceSourceRefresh).pipe(Effect.orDie);
1469
1388
  const listValue = getAtPath(state, listPath);
1470
1389
  const items = Array.isArray(listValue) ? listValue : [];
1471
1390
  const ids = store.ensureList(listPath, items);
@@ -1623,7 +1542,7 @@ var installSourceRefresh = (bound, step, entry) => {
1623
1542
  }
1624
1543
  const io = Effect.gen(function* () {
1625
1544
  if (replayMode === "replay" && replayLog) {
1626
- yield* Effect.yieldNow();
1545
+ yield* Effect.yieldNow;
1627
1546
  const replayed = yield* replayLog.consumeNextResourceSnapshot({
1628
1547
  resourceId,
1629
1548
  fieldPath,
@@ -1766,46 +1685,39 @@ var installSourceRefresh = (bound, step, entry) => {
1766
1685
  yield* recordSnapshot(replayMode, replayLog, event);
1767
1686
  }
1768
1687
  }
1769
- }).pipe(Effect.catchAllCause(() => Effect.void));
1770
- const fiber = yield* Effect.forkScoped(Effect.locally(inSyncTransactionFiber, false)(io));
1688
+ }).pipe(Effect.catchCause(() => Effect.void));
1689
+ const fiber = yield* Effect.forkScoped(Effect.provideService(io, inSyncTransactionFiber, false));
1771
1690
  const myGen = gen += 1;
1772
1691
  inFlight = { gen: myGen, fiber, keyHash: keyHash2 };
1773
1692
  yield* Effect.forkScoped(
1774
- Effect.locally(
1775
- inSyncTransactionFiber,
1776
- false
1777
- )(
1778
- Fiber.await(fiber).pipe(
1779
- Effect.zipRight(
1780
- Effect.sync(() => {
1781
- if (inFlight && inFlight.gen === myGen) {
1782
- inFlight = void 0;
1783
- }
1784
- })
1785
- ),
1786
- Effect.zipRight(
1787
- mode === "exhaust-trailing" ? Effect.gen(function* () {
1788
- const next = trailing;
1789
- trailing = void 0;
1790
- if (next) {
1791
- yield* startFetch(next.key, next.keyHash, replayMode, replayLog);
1792
- }
1793
- }) : Effect.void
1794
- ),
1795
- Effect.catchAllCause(() => Effect.void)
1796
- )
1797
- )
1693
+ Effect.provideService(Fiber.await(fiber).pipe(
1694
+ Effect.flatMap(() => Effect.sync(() => {
1695
+ if (inFlight && inFlight.gen === myGen) {
1696
+ inFlight = void 0;
1697
+ }
1698
+ })),
1699
+ Effect.flatMap(() => mode === "exhaust-trailing" ? Effect.gen(function* () {
1700
+ const next = trailing;
1701
+ trailing = void 0;
1702
+ if (next) {
1703
+ yield* startFetch(next.key, next.keyHash, replayMode, replayLog);
1704
+ }
1705
+ }) : Effect.void),
1706
+ Effect.catchCause(() => Effect.void)
1707
+ ), inSyncTransactionFiber, false)
1798
1708
  );
1799
1709
  });
1800
1710
  register(
1801
1711
  fieldPath,
1802
1712
  (state) => Effect.gen(function* () {
1803
1713
  const { moduleId, instanceId } = getBoundScope(bound);
1804
- const replayModeOpt = yield* Effect.serviceOption(ReplayModeConfigTag);
1714
+ const replayModeOpt = yield* Effect.serviceOption(
1715
+ ReplayModeConfigTag
1716
+ );
1805
1717
  const replayMode = Option.isSome(replayModeOpt) ? replayModeOpt.value.mode : "live";
1806
1718
  const replayLogOpt = yield* Effect.serviceOption(ReplayLog);
1807
1719
  const replayLog = Option.isSome(replayLogOpt) ? replayLogOpt.value : void 0;
1808
- const force = yield* FiberRef.get(forceSourceRefresh);
1720
+ const force = yield* Effect.service(forceSourceRefresh).pipe(Effect.orDie);
1809
1721
  let key;
1810
1722
  try {
1811
1723
  key = entry.meta.key(state);
@@ -1831,7 +1743,7 @@ var installSourceRefresh = (bound, step, entry) => {
1831
1743
  }
1832
1744
  if (key === void 0) {
1833
1745
  if (inFlight) {
1834
- yield* Fiber.interruptFork(inFlight.fiber);
1746
+ yield* Fiber.interrupt(inFlight.fiber);
1835
1747
  inFlight = void 0;
1836
1748
  }
1837
1749
  trailing = void 0;
@@ -1904,7 +1816,7 @@ var installSourceRefresh = (bound, step, entry) => {
1904
1816
  return;
1905
1817
  }
1906
1818
  if (mode === "switch" && inFlight) {
1907
- yield* Fiber.interruptFork(inFlight.fiber);
1819
+ yield* Fiber.interrupt(inFlight.fiber);
1908
1820
  inFlight = void 0;
1909
1821
  trailing = void 0;
1910
1822
  }
@@ -1914,11 +1826,155 @@ var installSourceRefresh = (bound, step, entry) => {
1914
1826
  return Effect.void;
1915
1827
  };
1916
1828
 
1829
+ // src/internal/state-trait/converge-diagnostics.ts
1830
+ import { Effect as Effect2, Option as Option2 } from "effect";
1831
+ import * as SchemaAST2 from "effect/SchemaAST";
1832
+ var onceKeysFallback = /* @__PURE__ */ new Set();
1833
+ var onceInRunSession2 = (key) => Effect2.serviceOption(RunSessionTag).pipe(
1834
+ Effect2.map((maybe) => {
1835
+ if (Option2.isSome(maybe)) {
1836
+ return maybe.value.local.once(key);
1837
+ }
1838
+ if (onceKeysFallback.has(key)) return false;
1839
+ onceKeysFallback.add(key);
1840
+ return true;
1841
+ })
1842
+ );
1843
+ var formatList2 = (items, limit = 10) => {
1844
+ if (items.length === 0) return "";
1845
+ if (items.length <= limit) return items.join(", ");
1846
+ return `${items.slice(0, limit).join(", ")}, \u2026(+${items.length - limit})`;
1847
+ };
1848
+ var emitDepsMismatch2 = (params) => {
1849
+ return Effect2.gen(function* () {
1850
+ const key = `${params.moduleId ?? "unknown"}::${params.instanceId ?? "unknown"}::${params.kind}::${params.fieldPath}`;
1851
+ const shouldEmit = yield* onceInRunSession2(`deps_mismatch:${key}`);
1852
+ if (!shouldEmit) return;
1853
+ yield* record({
1854
+ type: "diagnostic",
1855
+ moduleId: params.moduleId,
1856
+ instanceId: params.instanceId,
1857
+ code: "state_trait::deps_mismatch",
1858
+ severity: "warning",
1859
+ message: `[deps] ${params.kind} "${params.fieldPath}" declared=[${formatList2(params.diff.declared)}] reads=[${formatList2(params.diff.reads)}] missing=[${formatList2(params.diff.missing)}] unused=[${formatList2(params.diff.unused)}]`,
1860
+ hint: 'deps is the single source of truth for dependencies: incremental scheduling / reverse closures / performance optimizations rely on deps only. Keep deps consistent with actual reads; if you really depend on the whole object, declare a coarser-grained dep (e.g. "profile") to cover sub-field reads.',
1861
+ kind: `deps_mismatch:${params.kind}`
1862
+ });
1863
+ });
1864
+ };
1865
+ var schemaHasPath = (ast, segments, seen = /* @__PURE__ */ new Set()) => {
1866
+ if (segments.length === 0) return true;
1867
+ let current = SchemaAST2.toType(ast);
1868
+ while (SchemaAST2.isSuspend(current)) {
1869
+ if (seen.has(current)) {
1870
+ return true;
1871
+ }
1872
+ seen.add(current);
1873
+ current = SchemaAST2.toType(current.thunk());
1874
+ }
1875
+ if (SchemaAST2.isUnion(current)) {
1876
+ return current.types.some((t) => schemaHasPath(t, segments, seen));
1877
+ }
1878
+ if (SchemaAST2.isArrays(current)) {
1879
+ const candidates = [];
1880
+ for (const e of current.elements) candidates.push(e);
1881
+ for (const r of current.rest) candidates.push(r);
1882
+ if (candidates.length === 0) return true;
1883
+ return candidates.some((t) => schemaHasPath(t, segments, seen));
1884
+ }
1885
+ if (SchemaAST2.isObjects(current)) {
1886
+ const [head, ...tail] = segments;
1887
+ for (const ps of current.propertySignatures) {
1888
+ if (String(ps.name) !== head) continue;
1889
+ return schemaHasPath(ps.type, tail, seen);
1890
+ }
1891
+ for (const sig of current.indexSignatures) {
1892
+ const param = SchemaAST2.toType(sig.parameter);
1893
+ const tag2 = param?._tag;
1894
+ if (tag2 === "String" || tag2 === "TemplateLiteral") {
1895
+ return schemaHasPath(sig.type, tail, seen);
1896
+ }
1897
+ }
1898
+ return false;
1899
+ }
1900
+ const tag = current?._tag;
1901
+ if (tag === "AnyKeyword" || tag === "UnknownKeyword" || tag === "ObjectKeyword" || tag === "Declaration") {
1902
+ return true;
1903
+ }
1904
+ return false;
1905
+ };
1906
+ var schemaHasFieldPath = (stateSchemaAst, path) => {
1907
+ if (!path) return true;
1908
+ if (path === "$root") return true;
1909
+ const normalized = normalizeFieldPath(path);
1910
+ if (!normalized) return false;
1911
+ const segs = normalized[0] === "$root" ? normalized.slice(1) : normalized;
1912
+ return schemaHasPath(stateSchemaAst, segs);
1913
+ };
1914
+ var formatSchemaMismatchLine = (ref) => {
1915
+ if (ref.kind === "fieldPath") {
1916
+ return `- ${ref.entryKind} "${ref.entryFieldPath}" fieldPath="${ref.path}"`;
1917
+ }
1918
+ if (ref.kind === "dep") {
1919
+ const rule = ref.ruleName ? ` rule="${ref.ruleName}"` : "";
1920
+ return `- ${ref.entryKind} "${ref.entryFieldPath}" deps="${ref.path}"${rule}`;
1921
+ }
1922
+ if (ref.kind === "link_from") {
1923
+ return `- link "${ref.entryFieldPath}" from="${ref.path}"`;
1924
+ }
1925
+ if (ref.kind === "check_writeback") {
1926
+ return `- check "${ref.entryFieldPath}" writeback="${ref.path}"`;
1927
+ }
1928
+ return `- ${ref.entryKind} "${ref.entryFieldPath}" path="${ref.path}"`;
1929
+ };
1930
+ var emitSchemaMismatch = (program, ctx) => Effect2.gen(function* () {
1931
+ if (!isDevEnv()) return;
1932
+ const level = yield* Effect2.service(currentDiagnosticsLevel).pipe(Effect2.orDie);
1933
+ if (level === "off") return;
1934
+ const key = `${ctx.moduleId ?? "unknown"}::${ctx.instanceId}`;
1935
+ const shouldEmit = yield* onceInRunSession2(`schema_mismatch:${key}`);
1936
+ if (!shouldEmit) return;
1937
+ const refs = program.schemaPaths ?? [];
1938
+ if (refs.length === 0) return;
1939
+ const stateSchemaAst = program.stateSchema.ast;
1940
+ const mismatches = [];
1941
+ const seen = /* @__PURE__ */ new Set();
1942
+ for (const ref of refs) {
1943
+ if (schemaHasFieldPath(stateSchemaAst, ref.path)) continue;
1944
+ const k = `${ref.kind}|${ref.entryKind}|${ref.entryFieldPath}|${ref.ruleName ?? ""}|${ref.path}`;
1945
+ if (seen.has(k)) continue;
1946
+ seen.add(k);
1947
+ mismatches.push(ref);
1948
+ }
1949
+ if (mismatches.length === 0) return;
1950
+ const limit = level === "light" ? 8 : 24;
1951
+ const lines = mismatches.slice(0, limit).map(formatSchemaMismatchLine);
1952
+ if (mismatches.length > limit) {
1953
+ lines.push(`- \u2026(+${mismatches.length - limit})`);
1954
+ }
1955
+ yield* record({
1956
+ type: "diagnostic",
1957
+ moduleId: ctx.moduleId,
1958
+ instanceId: ctx.instanceId,
1959
+ code: "state_trait::schema_mismatch",
1960
+ severity: "warning",
1961
+ message: `[schema] The following paths are not declared in stateSchema (total ${mismatches.length}):
1962
+ ${lines.join("\n")}`,
1963
+ hint: "StateTrait writeback will create missing objects/fields. Declare all fieldPath/deps/link.from and errors.* writeback paths in stateSchema, or fix typos in trait paths.",
1964
+ kind: "schema_mismatch"
1965
+ });
1966
+ });
1967
+
1917
1968
  export {
1969
+ getConvergeStaticIrDigest,
1970
+ exportConvergeStaticIr,
1971
+ onceInRunSession2 as onceInRunSession,
1972
+ emitDepsMismatch2 as emitDepsMismatch,
1973
+ emitSchemaMismatch,
1918
1974
  diffDeps,
1919
1975
  trace,
1920
1976
  syncIdleInTransaction,
1921
1977
  installSourceRefresh,
1922
1978
  build
1923
1979
  };
1924
- //# sourceMappingURL=chunk-PYOE4VSI.js.map
1980
+ //# sourceMappingURL=chunk-IVXSVHO4.js.map