@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
@@ -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>(_schema: Schema.Schema<S>) =>\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>,\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 { Effect, Fiber, Option, ServiceMap, Stream } 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 } from '../runtime/core/env.js'\nimport type { DeclarativeLinkRuntimeService } from '../runtime/core/env.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\ntype ExternalStoreLike = {\n readonly getSnapshot: () => unknown\n readonly subscribe: (listener: () => void) => (() => void) | undefined\n}\n\ntype ExternalStoreWritebackCommitPriority = 'normal' | 'low'\n\ntype ExternalStoreWritebackRequest = {\n readonly fieldPath: string\n readonly traitNodeId: string\n readonly normalizedPatchPath: ReadonlyArray<string>\n readonly nextValue: unknown\n readonly isEqual: (a: unknown, b: unknown) => boolean\n readonly commitPriority: ExternalStoreWritebackCommitPriority\n}\n\ntype ExternalStoreWritebackCoordinator = {\n readonly enqueue: (request: ExternalStoreWritebackRequest) => Effect.Effect<void, never, any>\n}\n\nconst writebackCoordinatorByInternals = new WeakMap<object, ExternalStoreWritebackCoordinator>()\n\nconst getOrCreateExternalStoreWritebackCoordinator = (args: {\n readonly internals: ReturnType<typeof getBoundInternals>\n readonly bound: BoundApi<any, any>\n readonly env: ServiceMap.ServiceMap<any>\n}): Effect.Effect<ExternalStoreWritebackCoordinator, never, any> =>\n Effect.gen(function* () {\n const cached = writebackCoordinatorByInternals.get(args.internals as any)\n if (cached) return cached\n\n let closed = false\n let inFlight = false\n let pendingWrites = new Map<string, ExternalStoreWritebackRequest>()\n\n const drainPendingWrites = (): ReadonlyArray<ExternalStoreWritebackRequest> => {\n if (pendingWrites.size === 0) return []\n const drained = pendingWrites\n pendingWrites = new Map()\n return Array.from(drained.values())\n }\n\n const applyWritebackBatch = (batch: ReadonlyArray<ExternalStoreWritebackRequest>): Effect.Effect<void, never, any> =>\n Effect.gen(function* () {\n if (batch.length === 0) return\n\n // Hot-path: single field writeback (most externalStore updates).\n // Avoid allocating per-batch/per-change arrays here: full diagnostics already has higher overhead.\n if (batch.length === 1) {\n const req = batch[0]!\n const prevState = (yield* args.bound.state.read) as any\n const prevValue = RowId.getAtPath(prevState as any, req.fieldPath)\n if (req.isEqual(prevValue, req.nextValue)) return\n\n const nextDraft = create(prevState, (draft) => {\n RowId.setAtPathMutating(draft as any, req.fieldPath, req.nextValue)\n })\n\n args.internals.txn.recordStatePatch(\n req.normalizedPatchPath,\n 'trait-external-store',\n prevValue,\n req.nextValue,\n req.traitNodeId,\n )\n args.internals.txn.updateDraft(nextDraft)\n return\n }\n\n const prevState = (yield* args.bound.state.read) as any\n\n const changes: Array<{\n readonly request: ExternalStoreWritebackRequest\n readonly prevValue: unknown\n }> = []\n\n for (let i = 0; i < batch.length; i++) {\n const req = batch[i]!\n const prevValue = RowId.getAtPath(prevState as any, req.fieldPath)\n if (req.isEqual(prevValue, req.nextValue)) continue\n changes.push({ request: req, prevValue })\n }\n\n if (changes.length === 0) return\n\n const nextDraft = create(prevState, (draft) => {\n for (let i = 0; i < changes.length; i++) {\n const { request } = changes[i]!\n RowId.setAtPathMutating(draft as any, request.fieldPath, request.nextValue)\n }\n })\n\n for (let i = 0; i < changes.length; i++) {\n const { request, prevValue } = changes[i]!\n args.internals.txn.recordStatePatch(\n request.normalizedPatchPath,\n 'trait-external-store',\n prevValue,\n request.nextValue,\n request.traitNodeId,\n )\n }\n\n args.internals.txn.updateDraft(nextDraft)\n })\n\n const coordinator: ExternalStoreWritebackCoordinator = {\n enqueue: (request) =>\n Effect.gen(function* () {\n if (closed) return\n\n pendingWrites.set(request.fieldPath, request)\n\n // Single-flusher: avoid an extra per-module fiber by letting the first caller drain the queue.\n if (inFlight) return\n inFlight = true\n\n try {\n while (true) {\n const batch = drainPendingWrites()\n if (batch.length === 0) return\n\n const commitPriority: ExternalStoreWritebackCommitPriority = batch.some((x) => x.commitPriority === 'normal')\n ? 'normal'\n : 'low'\n\n const originName = batch.length === 1 ? batch[0]!.fieldPath : 'externalStore:batched'\n\n yield* args.internals.txn\n .runWithStateTransaction(\n {\n kind: 'trait-external-store',\n name: originName,\n details: {\n stateCommit: {\n priority: commitPriority,\n },\n },\n },\n () => applyWritebackBatch(batch).pipe(Effect.asVoid),\n )\n .pipe(Effect.provide(args.env))\n }\n } finally {\n inFlight = false\n }\n }),\n }\n\n writebackCoordinatorByInternals.set(args.internals as any, coordinator)\n\n yield* Effect.addFinalizer(() =>\n Effect.sync(() => {\n closed = true\n pendingWrites.clear()\n }),\n )\n\n return coordinator\n })\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* Effect.service(descriptor.tag as ServiceMap.Key<any, unknown>).pipe(Effect.orDie)\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.services<any>()\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 const makeScopedDescriptorStore = (): Effect.Effect<ExternalStoreLike | undefined, never, any> =>\n Effect.gen(function* () {\n if (rawDescriptor?.kind === 'subscriptionRef') {\n let current = yield* Effect.provideService(rawDescriptor.ref.get as any, TaskRunner.inSyncTransactionFiber, false)\n const listeners = new Set<() => void>()\n\n const notify = (): void => {\n for (const listener of listeners) {\n listener()\n }\n }\n\n const fiber = yield* Effect.forkDetach(\n Effect.provideService(Stream.runForEach(rawDescriptor.ref.changes as Stream.Stream<unknown, never, never>, (value) =>\n Effect.sync(() => {\n current = value\n notify()\n }),\n ).pipe(Effect.catchCause(() => Effect.void)), TaskRunner.inSyncTransactionFiber, false),\n { startImmediately: true },\n )\n internals.lifecycle.registerDestroy(Fiber.interrupt(fiber).pipe(Effect.asVoid), { name: `externalStore:${fieldPath}:subscriptionRef` })\n\n return {\n getSnapshot: () => current,\n subscribe: (listener) => {\n listeners.add(listener)\n return () => {\n listeners.delete(listener)\n }\n },\n }\n }\n\n if (rawDescriptor?.kind === 'stream') {\n let current = rawDescriptor.initial\n const listeners = new Set<() => void>()\n\n const notify = (): void => {\n for (const listener of listeners) {\n listener()\n }\n }\n\n const fiber = yield* Effect.forkDetach(\n Effect.provideService(Stream.runForEach(rawDescriptor.stream as Stream.Stream<unknown, any, any>, (value) =>\n Effect.sync(() => {\n current = value\n notify()\n }),\n ).pipe(Effect.catchCause(() => Effect.void)), TaskRunner.inSyncTransactionFiber, false),\n { startImmediately: true },\n )\n internals.lifecycle.registerDestroy(Fiber.interrupt(fiber).pipe(Effect.asVoid), { name: `externalStore:${fieldPath}:stream` })\n\n return {\n getSnapshot: () => current,\n subscribe: (listener) => {\n listeners.add(listener)\n return () => {\n listeners.delete(listener)\n }\n },\n }\n }\n\n return undefined\n }) as Effect.Effect<ExternalStoreLike | undefined, never, any>\n\n if (rawDescriptor?.kind === 'module') {\n const linkRuntimeOpt = yield* Effect.serviceOption(\n DeclarativeLinkRuntimeTag as unknown as ServiceMap.Key<any, DeclarativeLinkRuntimeService>,\n )\n if (Option.isNone(linkRuntimeOpt)) {\n return yield* Effect.die(new Error('[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 && ServiceMap.isKey(tag)) {\n return internals.imports.get(tag as any)\n }\n\n if (ServiceMap.isKey(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.die(new Error(`[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 if (rawDescriptor.instanceId && rawDescriptor.instanceId !== sourceRuntime.instanceId) {\n return yield* Effect.die(new Error(`[StateTrait.externalStore] Module-as-Source instanceId mismatch for \"${fieldPath}\". ` +\n `descriptor.instanceId=${rawDescriptor.instanceId}, resolved.instanceId=${sourceRuntime.instanceId}`))\n }\n\n if (sourceRuntime.moduleId !== rawDescriptor.moduleId) {\n return yield* Effect.die(new Error(`[StateTrait.externalStore] Module-as-Source moduleId mismatch for \"${fieldPath}\". ` +\n `descriptor.moduleId=${rawDescriptor.moduleId}, resolved.moduleId=${sourceRuntime.moduleId}`))\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* Effect.service(TaskRunner.inSyncTransactionFiber).pipe(Effect.orDie)\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.provideServices(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 scopedDescriptorStore = yield* makeScopedDescriptorStore()\n const store = scopedDescriptorStore ?? (rawDescriptor?.kind === 'service' ? yield* resolveStore(entry) : rawStore)\n\n if (!store || typeof store !== 'object') {\n return yield* Effect.die(new Error(`[StateTrait.externalStore] Invalid store for \"${fieldPath}\". Expected { getSnapshot, subscribe }.`))\n }\n if (!isFn((store as any).getSnapshot) || !isFn((store as any).subscribe)) {\n return yield* Effect.die(new Error(`[StateTrait.externalStore] Invalid store for \"${fieldPath}\". Expected { getSnapshot, subscribe }.`))\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.promise<void>((signal) =>\n new Promise<void>((resolve) => {\n let done = false\n const r = () => {\n if (done) return\n done = true\n resume = undefined\n resolve()\n }\n\n resume = r\n\n signal.addEventListener(\n 'abort',\n () => {\n if (resume === r) {\n resume = undefined\n }\n },\n { once: true },\n )\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.provideService(Effect.sync(getSnapshotOrFuse), TaskRunner.inSyncTransactionFiber, false)\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 coordinator = yield* getOrCreateExternalStoreWritebackCoordinator({ internals, bound, env })\n\n const normalizedPatchPath = normalizeFieldPath(fieldPath) ?? []\n const commitPriority: ExternalStoreWritebackCommitPriority = traitLane === 'nonUrgent' ? 'low' : 'normal'\n\n const writeValueSync = (nextValue: unknown): Effect.Effect<void, never, any> =>\n Effect.gen(function* () {\n const inTxn = yield* Effect.service(TaskRunner.inSyncTransactionFiber).pipe(Effect.orDie)\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 internals.txn.recordStatePatch(normalizedPatchPath, 'trait-external-store', prevValue, nextValue, step.id)\n internals.txn.updateDraft(nextDraft)\n })\n\n if (inTxn) {\n return yield* body\n }\n\n return yield* internals.txn.runWithStateTransaction(\n {\n kind: 'trait-external-store',\n name: fieldPath,\n details: {\n stateCommit: {\n priority: commitPriority,\n },\n },\n },\n () => body.pipe(Effect.asVoid),\n )\n }).pipe(Effect.provideServices(env))\n\n const enqueueWriteValue = (nextValue: unknown): Effect.Effect<void, never, any> =>\n coordinator.enqueue({\n fieldPath,\n traitNodeId: step.id,\n normalizedPatchPath,\n nextValue,\n isEqual,\n commitPriority,\n })\n\n // Use the post-subscribe snapshot as the initial committed value to avoid missing an update between getSnapshot and subscribe.\n yield* writeValueSync(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 const fiber = yield* Effect.forkDetach(\n Effect.provideService(Effect.gen(function* () {\n while (true) {\n yield* awaitSignal()\n if (fused) return\n \n const snapshot = yield* readSnapshotOrFuse\n if (fused) {\n yield* recordFuseDiagnostic\n return\n }\n \n yield* enqueueWriteValue(computeValue(snapshot))\n }\n }), TaskRunner.inSyncTransactionFiber, false),\n { startImmediately: true },\n )\n internals.lifecycle.registerDestroy(Fiber.interrupt(fiber).pipe(Effect.asVoid), { name: `externalStore:${fieldPath}:writeback` })\n })\n","import { Effect } 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* Effect.service(Debug.currentDiagnosticsLevel).pipe(Effect.orDie)\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"],"mappings":"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","names":["build","exportStaticIr","install","Effect","prevState","nextDraft","fiber","signal","Effect","Effect","list","Effect","build","install","exportStaticIr"]}
@@ -4,4 +4,4 @@ var Actions_exports = {};
4
4
  export {
5
5
  Actions_exports
6
6
  };
7
- //# sourceMappingURL=chunk-4SO6JMZL.js.map
7
+ //# sourceMappingURL=chunk-HDMXCUZL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Actions.ts"],"sourcesContent":["import type { Effect, Layer as EffectLayer, ServiceMap, Stream } from 'effect'\n\n/**\n * Actions namespace (module-level):\n * - Provides Actions.Tag<A>: the action channel in Env (dispatch + actions$).\n * - Provides Actions.Layer<A>: a Layer shape that only carries that action channel.\n *\n * Type-level only; no additional runtime dependency.\n */\nexport type Tag<A> = ServiceMap.Key<\n any,\n {\n dispatch: (a: A) => Effect.Effect<void>\n actions$: Stream.Stream<A>\n }\n>\n\nexport type Layer<A> = EffectLayer.Layer<Tag<A>, never, never>\n"],"mappings":";AAAA;","names":[]}
@@ -1,10 +1,16 @@
1
+ import {
2
+ sanitize
3
+ } from "./chunk-J3CWXIPV.js";
1
4
  import {
2
5
  normalizeFieldPath
3
- } from "./chunk-IHVBV5C2.js";
6
+ } from "./chunk-SOOBFXRR.js";
7
+ import {
8
+ getExternalStoreDescriptor
9
+ } from "./chunk-NZMWWDAY.js";
4
10
  import {
5
11
  fnv1a32,
6
12
  stableStringify
7
- } from "./chunk-GMPEOUP2.js";
13
+ } from "./chunk-4MZ7BT3R.js";
8
14
 
9
15
  // src/internal/state-trait/ir.ts
10
16
  var normalizeFieldPaths = (paths) => {
@@ -25,6 +31,8 @@ var toNodeKind = (step) => {
25
31
  return "link";
26
32
  case "source-refresh":
27
33
  return "source";
34
+ case "external-store-sync":
35
+ return "externalStore";
28
36
  case "check-validate":
29
37
  return "check";
30
38
  }
@@ -49,6 +57,9 @@ var getReadsForEntry = (entry) => {
49
57
  const from = entry.meta.from;
50
58
  return from ? [from] : [];
51
59
  }
60
+ if (entry.kind === "externalStore") {
61
+ return [];
62
+ }
52
63
  if (entry.kind === "check") {
53
64
  const rules = entry.meta?.rules ?? {};
54
65
  const out = [];
@@ -96,11 +107,40 @@ var exportStaticIr = (params) => {
96
107
  const write = normalizeFieldPath2(target);
97
108
  const writes = write ? [write] : [];
98
109
  const meta = target ? metaByField.get(target) : void 0;
110
+ const externalStorePolicy = () => {
111
+ if (kind !== "externalStore") return void 0;
112
+ if (!entry || entry.kind !== "externalStore") return void 0;
113
+ const descriptor = getExternalStoreDescriptor(entry.meta.store);
114
+ const storeId = descriptor?.storeId;
115
+ const priorityRaw = entry.meta?.priority;
116
+ const lane = priorityRaw === "nonUrgent" ? "nonUrgent" : "urgent";
117
+ const meta2 = sanitize(entry.meta.meta);
118
+ const source = descriptor?.kind === "module" ? {
119
+ kind: "module",
120
+ storeId,
121
+ moduleId: descriptor.moduleId,
122
+ ...descriptor.instanceId ? { instanceKey: descriptor.instanceId } : {},
123
+ selectorId: descriptor.readQuery.staticIr.selectorId,
124
+ readsDigest: descriptor.readQuery.staticIr.readsDigest,
125
+ fallbackReason: descriptor.readQuery.staticIr.fallbackReason
126
+ } : descriptor ? { kind: "external", storeId } : { kind: "external", storeId: "unknown" };
127
+ const coalesceWindowMs = entry.meta?.coalesceWindowMs;
128
+ return {
129
+ traitId: step.id,
130
+ storeId: storeId ?? "unknown",
131
+ source,
132
+ ownership: "external-owned",
133
+ lane,
134
+ ...typeof coalesceWindowMs === "number" && Number.isFinite(coalesceWindowMs) && coalesceWindowMs > 0 ? { coalesceWindowMs } : {},
135
+ ...meta2 ? { meta: meta2 } : {}
136
+ };
137
+ };
99
138
  const base2 = {
100
139
  nodeId: step.id,
101
140
  kind,
102
141
  reads,
103
142
  writes: kind === "check" ? [] : writes,
143
+ ...kind === "externalStore" ? { policy: externalStorePolicy() } : {},
104
144
  meta
105
145
  };
106
146
  if (kind !== "check" && target && !write) {
@@ -130,4 +170,4 @@ var exportStaticIr = (params) => {
130
170
  export {
131
171
  exportStaticIr
132
172
  };
133
- //# sourceMappingURL=chunk-ZFY7U2FR.js.map
173
+ //# sourceMappingURL=chunk-HJM5Y5NU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/state-trait/ir.ts"],"sourcesContent":["import type { StateTraitEntry, StateTraitPlanStep, StateTraitProgram } from './model.js'\nimport * as CanonicalFieldPath from '../field-path.js'\nimport { fnv1a32, stableStringify } from '../digest.js'\nimport { getExternalStoreDescriptor } from '../external-store-descriptor.js'\nimport * as Meta from './meta.js'\n\nexport type FieldPath = CanonicalFieldPath.FieldPath\n\nexport interface StaticIrNode {\n readonly nodeId: string\n readonly kind: string\n readonly reads: ReadonlyArray<FieldPath>\n readonly writes: ReadonlyArray<FieldPath>\n readonly writesUnknown?: boolean\n readonly policy?: Record<string, unknown>\n readonly meta?: {\n readonly label?: string\n readonly description?: string\n readonly tags?: ReadonlyArray<string>\n readonly group?: string\n readonly docsUrl?: string\n readonly cacheGroup?: string\n readonly annotations?: Record<string, unknown>\n }\n}\n\nexport interface StaticIrEdge {\n readonly edgeId: string\n readonly from: string\n readonly to: string\n readonly kind: string\n}\n\nexport interface StaticIr {\n readonly version: string\n readonly moduleId: string\n /**\n * Stable digest (for drift detection / diffing): determined solely by the current export structure.\n */\n readonly digest: string\n readonly nodes: ReadonlyArray<StaticIrNode>\n readonly edges: ReadonlyArray<StaticIrEdge>\n readonly conflicts?: ReadonlyArray<unknown>\n}\n\nconst normalizeFieldPaths = (paths: ReadonlyArray<string> | undefined): ReadonlyArray<FieldPath> => {\n if (!paths || paths.length === 0) return []\n const out: Array<FieldPath> = []\n for (const path of paths) {\n const normalized = CanonicalFieldPath.normalizeFieldPath(path)\n if (normalized) out.push(normalized)\n }\n return out\n}\n\nconst normalizeFieldPath = (path: string | undefined): FieldPath | undefined =>\n path ? CanonicalFieldPath.normalizeFieldPath(path) : undefined\n\nconst toNodeKind = (step: StateTraitPlanStep): string => {\n switch (step.kind) {\n case 'computed-update':\n return 'computed'\n case 'link-propagate':\n return 'link'\n case 'source-refresh':\n return 'source'\n case 'external-store-sync':\n return 'externalStore'\n case 'check-validate':\n return 'check'\n }\n}\n\nconst findEntryForStep = (\n program: StateTraitProgram<any>,\n step: StateTraitPlanStep,\n): StateTraitEntry<any, string> | undefined => {\n const fieldPath = step.targetFieldPath\n if (!fieldPath) return undefined\n const kind = toNodeKind(step)\n return program.entries.find(\n (e) =>\n e.fieldPath === fieldPath &&\n (e.kind === kind ||\n (kind === 'check' && e.kind === 'check') ||\n (kind === 'source' && e.kind === 'source') ||\n (kind === 'link' && e.kind === 'link') ||\n (kind === 'computed' && e.kind === 'computed')),\n )\n}\n\nconst getReadsForEntry = (entry: StateTraitEntry<any, string> | undefined): ReadonlyArray<string> | undefined => {\n if (!entry) return undefined\n if (entry.kind === 'computed') {\n return (entry.meta as any).deps as ReadonlyArray<string> | undefined\n }\n if (entry.kind === 'source') {\n return (entry.meta as any).deps as ReadonlyArray<string> | undefined\n }\n if (entry.kind === 'link') {\n const from = (entry.meta as any).from as string | undefined\n return from ? [from] : []\n }\n if (entry.kind === 'externalStore') {\n return []\n }\n if (entry.kind === 'check') {\n const rules = ((entry.meta as any)?.rules ?? {}) as Record<string, any>\n const out: Array<string> = []\n for (const name of Object.keys(rules)) {\n const rule = rules[name]\n const deps = rule?.deps as ReadonlyArray<string> | undefined\n if (deps) out.push(...deps)\n }\n return out\n }\n return undefined\n}\n\nexport const exportStaticIr = (params: {\n readonly program: StateTraitProgram<any>\n readonly moduleId: string\n readonly version?: string\n}): StaticIr => {\n const moduleId = params.moduleId\n const version = params.version ?? '009'\n\n const metaByField = new Map<\n string,\n {\n readonly label?: string\n readonly description?: string\n readonly tags?: ReadonlyArray<string>\n readonly group?: string\n readonly docsUrl?: string\n readonly cacheGroup?: string\n readonly annotations?: Record<string, unknown>\n }\n >()\n for (const node of params.program.graph.nodes) {\n const meta = node.meta as any\n if (!meta || typeof meta !== 'object') continue\n const label = typeof meta.label === 'string' ? meta.label : undefined\n const description = typeof meta.description === 'string' ? meta.description : undefined\n const tags =\n Array.isArray(meta.tags) && meta.tags.every((t: unknown) => typeof t === 'string')\n ? (meta.tags as ReadonlyArray<string>)\n : undefined\n const group = typeof meta.group === 'string' ? meta.group : undefined\n const docsUrl = typeof meta.docsUrl === 'string' ? meta.docsUrl : undefined\n const cacheGroup = typeof meta.cacheGroup === 'string' ? meta.cacheGroup : undefined\n\n const annotationsRaw = meta.annotations\n const annotations =\n annotationsRaw && typeof annotationsRaw === 'object' && !Array.isArray(annotationsRaw)\n ? (annotationsRaw as Record<string, unknown>)\n : undefined\n\n if (label || description || tags || group || docsUrl || cacheGroup || annotations) {\n metaByField.set(node.id, {\n label,\n description,\n tags,\n group,\n docsUrl,\n cacheGroup,\n annotations,\n })\n }\n }\n\n const nodes: Array<StaticIrNode> = params.program.plan.steps.map((step) => {\n const kind = toNodeKind(step)\n const entry = findEntryForStep(params.program, step)\n const reads = normalizeFieldPaths(getReadsForEntry(entry))\n\n const target = step.targetFieldPath\n const write = normalizeFieldPath(target)\n const writes = write ? [write] : []\n\n const meta = target ? metaByField.get(target) : undefined\n\n const externalStorePolicy = (): Record<string, unknown> | undefined => {\n if (kind !== 'externalStore') return undefined\n if (!entry || entry.kind !== 'externalStore') return undefined\n\n const descriptor = getExternalStoreDescriptor((entry.meta as any).store)\n const storeId = descriptor?.storeId\n\n const priorityRaw = (entry.meta as any)?.priority\n const lane = priorityRaw === 'nonUrgent' ? 'nonUrgent' : 'urgent'\n\n const meta = Meta.sanitize((entry.meta as any).meta)\n\n const source =\n descriptor?.kind === 'module'\n ? {\n kind: 'module',\n storeId,\n moduleId: descriptor.moduleId,\n ...(descriptor.instanceId ? { instanceKey: descriptor.instanceId } : {}),\n selectorId: descriptor.readQuery.staticIr.selectorId,\n readsDigest: descriptor.readQuery.staticIr.readsDigest,\n fallbackReason: descriptor.readQuery.staticIr.fallbackReason,\n }\n : descriptor\n ? { kind: 'external', storeId }\n : { kind: 'external', storeId: 'unknown' }\n\n const coalesceWindowMs = (entry.meta as any)?.coalesceWindowMs\n\n return {\n traitId: step.id,\n storeId: storeId ?? 'unknown',\n source,\n ownership: 'external-owned',\n lane,\n ...(typeof coalesceWindowMs === 'number' && Number.isFinite(coalesceWindowMs) && coalesceWindowMs > 0\n ? { coalesceWindowMs }\n : {}),\n ...(meta ? { meta } : {}),\n }\n }\n\n const base: StaticIrNode = {\n nodeId: step.id,\n kind,\n reads,\n writes: kind === 'check' ? [] : writes,\n ...(kind === 'externalStore' ? { policy: externalStorePolicy() } : {}),\n meta,\n }\n\n if (kind !== 'check' && target && !write) {\n return { ...base, writesUnknown: true }\n }\n return base\n })\n\n const edges: Array<StaticIrEdge> = params.program.graph.edges.map((edge) => ({\n edgeId: edge.id,\n from: edge.from,\n to: edge.to,\n kind: edge.kind,\n }))\n\n const base = {\n version,\n moduleId,\n nodes,\n edges,\n } as const\n\n const digest = `stir:${version}:${fnv1a32(stableStringify(base))}`\n\n return {\n ...base,\n digest,\n }\n}\n"],"mappings":"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","names":["normalizeFieldPath","meta","base"]}
@@ -1,21 +1,11 @@
1
1
  import {
2
2
  isDevEnv
3
- } from "./chunk-3QMIVH35.js";
3
+ } from "./chunk-S4S5N4BJ.js";
4
4
 
5
5
  // src/internal/runtime/core/RuntimeKernel.ts
6
- import { Context, Effect, Option } from "effect";
7
- var RuntimeServicesRuntimeConfigTagImpl = class extends Context.Tag("@logixjs/core/RuntimeServicesRuntimeConfig")() {
8
- };
9
- var RuntimeServicesRuntimeConfigTag = RuntimeServicesRuntimeConfigTagImpl;
10
- var RuntimeServicesProviderOverridesTagImpl = class extends Context.Tag("@logixjs/core/RuntimeServicesProviderOverrides")() {
11
- };
12
- var RuntimeServicesProviderOverridesTag = RuntimeServicesProviderOverridesTagImpl;
13
- var RuntimeServicesInstanceOverridesTagImpl = class extends Context.Tag("@logixjs/core/RuntimeServicesInstanceOverrides")() {
14
- };
15
- var RuntimeServicesInstanceOverridesTag = RuntimeServicesInstanceOverridesTagImpl;
16
- var FullCutoverGateModeTagImpl = class extends Context.Tag("@logixjs/core/FullCutoverGateMode")() {
17
- };
18
- var FullCutoverGateModeTag = FullCutoverGateModeTagImpl;
6
+ import { Effect, Option, ServiceMap } from "effect";
7
+
8
+ // src/internal/runtime/core/RuntimeKernel.selection.ts
19
9
  var ORDERED_SCOPES = [
20
10
  "builtin",
21
11
  "runtime_default",
@@ -38,27 +28,6 @@ var normalizeOverride = (value) => {
38
28
  notes: typeof notesRaw === "string" && notesRaw.length > 0 ? notesRaw : void 0
39
29
  };
40
30
  };
41
- var resolveRuntimeServicesOverrides = (args) => Effect.gen(function* () {
42
- const runtimeConfigOpt = yield* Effect.serviceOption(RuntimeServicesRuntimeConfigTag);
43
- const providerOverridesOpt = yield* Effect.serviceOption(RuntimeServicesProviderOverridesTag);
44
- const instanceOverridesOpt = yield* Effect.serviceOption(RuntimeServicesInstanceOverridesTag);
45
- const runtimeConfig = Option.isSome(runtimeConfigOpt) ? runtimeConfigOpt.value : void 0;
46
- const providerOverrides = Option.isSome(providerOverridesOpt) ? providerOverridesOpt.value : void 0;
47
- const instanceOverrides = Option.isSome(instanceOverridesOpt) ? instanceOverridesOpt.value : void 0;
48
- const moduleId = args.moduleId;
49
- const runtimeModule = moduleId && runtimeConfig?.servicesByModuleId ? runtimeConfig.servicesByModuleId[moduleId] : void 0;
50
- const providerModule = moduleId && providerOverrides?.servicesByModuleId ? providerOverrides.servicesByModuleId[moduleId] : void 0;
51
- return {
52
- runtimeDefault: runtimeConfig?.services,
53
- runtimeModule,
54
- provider: providerOverrides?.services,
55
- providerModule,
56
- instance: instanceOverrides
57
- };
58
- });
59
- var RuntimeServicesRegistryTagImpl = class extends Context.Tag("@logixjs/core/RuntimeServicesRegistry")() {
60
- };
61
- var RuntimeServicesRegistryTag = RuntimeServicesRegistryTagImpl;
62
31
  var selectRuntimeService = (serviceId, impls, overrides) => {
63
32
  const builtin = impls[0];
64
33
  if (!builtin) {
@@ -76,18 +45,19 @@ var selectRuntimeService = (serviceId, impls, overrides) => {
76
45
  consider("provider", overrides.providerModule);
77
46
  consider("instance", overrides.instance);
78
47
  if (!desired) {
79
- return {
48
+ const binding2 = Object.freeze({
49
+ serviceId,
50
+ implId: builtin.implId,
51
+ implVersion: builtin.implVersion,
52
+ scope: "builtin",
53
+ overridden: false,
54
+ notes: builtin.notes
55
+ });
56
+ return Object.freeze({
80
57
  impl: builtin,
81
- binding: {
82
- serviceId,
83
- implId: builtin.implId,
84
- implVersion: builtin.implVersion,
85
- scope: "builtin",
86
- overridden: false,
87
- notes: builtin.notes
88
- },
89
- overridesApplied: []
90
- };
58
+ binding: binding2,
59
+ overridesApplied: Object.freeze([])
60
+ });
91
61
  }
92
62
  const desiredImplId = desired.override.implId;
93
63
  const selected = impls.find((i) => i.implId === desiredImplId);
@@ -95,34 +65,125 @@ var selectRuntimeService = (serviceId, impls, overrides) => {
95
65
  const didFallback = selected == null;
96
66
  const fallbackNote = didFallback ? `Unknown implId "${desiredImplId}", falling back to builtin "${builtin.implId}"` : void 0;
97
67
  const notes = [desired.override.notes, impl.notes, fallbackNote].filter((s) => typeof s === "string" && s.length > 0).join("; ");
98
- return {
68
+ const binding = Object.freeze({
69
+ serviceId,
70
+ implId: impl.implId,
71
+ implVersion: impl.implVersion,
72
+ scope: desired.scope,
73
+ overridden: true,
74
+ notes: notes.length > 0 ? notes : void 0
75
+ });
76
+ const overridesApplied = Object.freeze([
77
+ didFallback ? `${desired.scope}:${serviceId}=${desiredImplId} (fallback=${builtin.implId})` : `${desired.scope}:${serviceId}=${desiredImplId}`
78
+ ]);
79
+ return Object.freeze({
99
80
  impl,
100
- binding: {
101
- serviceId,
102
- implId: impl.implId,
103
- implVersion: impl.implVersion,
104
- scope: desired.scope,
105
- overridden: true,
106
- notes: notes.length > 0 ? notes : void 0
107
- },
108
- overridesApplied: [
109
- didFallback ? `${desired.scope}:${serviceId}=${desiredImplId} (fallback=${builtin.implId})` : `${desired.scope}:${serviceId}=${desiredImplId}`
110
- ]
111
- };
81
+ binding,
82
+ overridesApplied
83
+ });
112
84
  };
113
85
  var makeRuntimeServicesEvidence = (args) => {
114
86
  let scope = "builtin";
115
87
  for (const b of args.bindings) {
116
88
  scope = maxScope(scope, b.scope);
117
89
  }
118
- return {
90
+ const bindings = Object.freeze(
91
+ args.bindings.map(
92
+ (binding) => Object.freeze({
93
+ serviceId: binding.serviceId,
94
+ ...binding.implId ? { implId: binding.implId } : {},
95
+ ...binding.implVersion ? { implVersion: binding.implVersion } : {},
96
+ scope: binding.scope,
97
+ overridden: binding.overridden,
98
+ ...binding.notes ? { notes: binding.notes } : {}
99
+ })
100
+ )
101
+ );
102
+ const overridesApplied = Object.freeze([...args.overridesApplied]);
103
+ return Object.freeze({
119
104
  moduleId: args.moduleId,
120
105
  instanceId: args.instanceId,
121
106
  scope,
122
- bindings: args.bindings,
123
- overridesApplied: args.overridesApplied
124
- };
107
+ bindings,
108
+ overridesApplied
109
+ });
125
110
  };
111
+
112
+ // src/internal/runtime/core/RuntimeKernel.ts
113
+ var RuntimeServicesRuntimeConfigTagImpl = class extends ServiceMap.Service()("@logixjs/core/RuntimeServicesRuntimeConfig") {
114
+ };
115
+ var RuntimeServicesRuntimeConfigTag = RuntimeServicesRuntimeConfigTagImpl;
116
+ var RuntimeServicesProviderOverridesTagImpl = class extends ServiceMap.Service()("@logixjs/core/RuntimeServicesProviderOverrides") {
117
+ };
118
+ var RuntimeServicesProviderOverridesTag = RuntimeServicesProviderOverridesTagImpl;
119
+ var RuntimeServicesInstanceOverridesTagImpl = class extends ServiceMap.Service()("@logixjs/core/RuntimeServicesInstanceOverrides") {
120
+ };
121
+ var RuntimeServicesInstanceOverridesTag = RuntimeServicesInstanceOverridesTagImpl;
122
+ var FullCutoverGateModeTagImpl = class extends ServiceMap.Service()("@logixjs/core/FullCutoverGateMode") {
123
+ };
124
+ var FullCutoverGateModeTag = FullCutoverGateModeTagImpl;
125
+ var isPlainRecord2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
126
+ var normalizeRuntimeServiceOverride = (value) => {
127
+ if (!isPlainRecord2(value)) return void 0;
128
+ const implIdRaw = value.implId;
129
+ const notesRaw = value.notes;
130
+ const implId = typeof implIdRaw === "string" && implIdRaw.length > 0 ? implIdRaw : void 0;
131
+ const notes = typeof notesRaw === "string" && notesRaw.length > 0 ? notesRaw : void 0;
132
+ if (!implId && !notes) return void 0;
133
+ return Object.freeze({
134
+ ...implId ? { implId } : {},
135
+ ...notes ? { notes } : {}
136
+ });
137
+ };
138
+ var freezeRuntimeServicesOverrides = (value) => {
139
+ if (!isPlainRecord2(value)) return void 0;
140
+ const out = {};
141
+ for (const [serviceId, rawOverride] of Object.entries(value)) {
142
+ if (serviceId.length === 0) continue;
143
+ const normalized = normalizeRuntimeServiceOverride(rawOverride);
144
+ if (!normalized) continue;
145
+ out[serviceId] = normalized;
146
+ }
147
+ if (Object.keys(out).length === 0) return void 0;
148
+ return Object.freeze(out);
149
+ };
150
+ var freezeRuntimeServicesOverridesAtModule = (args) => {
151
+ if (!args.moduleId || args.moduleId.length === 0) return void 0;
152
+ if (!isPlainRecord2(args.byModuleId)) return void 0;
153
+ return freezeRuntimeServicesOverrides(args.byModuleId[args.moduleId]);
154
+ };
155
+ var resolveRuntimeServicesOverrides = (args) => Effect.gen(function* () {
156
+ const runtimeConfigOpt = yield* Effect.serviceOption(RuntimeServicesRuntimeConfigTag);
157
+ const providerOverridesOpt = yield* Effect.serviceOption(RuntimeServicesProviderOverridesTag);
158
+ const instanceOverridesOpt = yield* Effect.serviceOption(RuntimeServicesInstanceOverridesTag);
159
+ const runtimeConfig = Option.isSome(runtimeConfigOpt) ? runtimeConfigOpt.value : void 0;
160
+ const providerOverrides = Option.isSome(providerOverridesOpt) ? providerOverridesOpt.value : void 0;
161
+ const instanceOverrides = Option.isSome(instanceOverridesOpt) ? instanceOverridesOpt.value : void 0;
162
+ const moduleId = args.moduleId;
163
+ const runtimeDefaults = freezeRuntimeServicesOverrides(runtimeConfig?.services);
164
+ const runtimeModule = freezeRuntimeServicesOverridesAtModule({
165
+ moduleId,
166
+ byModuleId: runtimeConfig?.servicesByModuleId
167
+ });
168
+ const providerDefaults = freezeRuntimeServicesOverrides(providerOverrides?.services);
169
+ const providerModule = freezeRuntimeServicesOverridesAtModule({
170
+ moduleId,
171
+ byModuleId: providerOverrides?.servicesByModuleId
172
+ });
173
+ const instance = freezeRuntimeServicesOverrides(instanceOverrides);
174
+ return Object.freeze({
175
+ runtimeDefault: runtimeDefaults,
176
+ runtimeModule,
177
+ provider: providerDefaults,
178
+ providerModule,
179
+ instance
180
+ });
181
+ });
182
+ var RuntimeServicesRegistryTagImpl = class extends ServiceMap.Service()("@logixjs/core/RuntimeServicesRegistry") {
183
+ };
184
+ var RuntimeServicesRegistryTag = RuntimeServicesRegistryTagImpl;
185
+ var selectRuntimeService2 = selectRuntimeService;
186
+ var makeRuntimeServicesEvidence2 = makeRuntimeServicesEvidence;
126
187
  var RUNTIME_SERVICES_EVIDENCE = /* @__PURE__ */ Symbol.for("@logixjs/core/runtimeServicesEvidence");
127
188
  var defineHidden = (target, key, value) => {
128
189
  Object.defineProperty(target, key, {
@@ -167,7 +228,7 @@ var getRuntimeServicesEvidence = (runtime) => {
167
228
  };
168
229
 
169
230
  // src/internal/runtime/core/KernelRef.ts
170
- import { Context as Context2, Effect as Effect2, Option as Option2 } from "effect";
231
+ import { Effect as Effect2, Option as Option2, ServiceMap as ServiceMap2 } from "effect";
171
232
  var isKernelId = (value) => typeof value === "string" && value.length > 0 && /^[a-z0-9-]+$/.test(value);
172
233
  var defaultKernelImplementationRef = {
173
234
  kernelId: "core",
@@ -209,7 +270,7 @@ var normalizeKernelImplementationRef = (value, fallback = defaultKernelImplement
209
270
  ...Array.isArray(v.capabilities) && v.capabilities.every((c) => typeof c === "string") ? { capabilities: v.capabilities } : {}
210
271
  };
211
272
  };
212
- var KernelImplementationRefTagImpl = class extends Context2.Tag("@logixjs/core/KernelImplementationRef")() {
273
+ var KernelImplementationRefTagImpl = class extends ServiceMap2.Service()("@logixjs/core/KernelImplementationRef") {
213
274
  };
214
275
  var KernelImplementationRefTag = KernelImplementationRefTagImpl;
215
276
  var resolveKernelImplementationRef = () => Effect2.gen(function* () {
@@ -255,8 +316,8 @@ export {
255
316
  FullCutoverGateModeTag,
256
317
  resolveRuntimeServicesOverrides,
257
318
  RuntimeServicesRegistryTag,
258
- selectRuntimeService,
259
- makeRuntimeServicesEvidence,
319
+ selectRuntimeService2 as selectRuntimeService,
320
+ makeRuntimeServicesEvidence2 as makeRuntimeServicesEvidence,
260
321
  setRuntimeServicesEvidence,
261
322
  getRuntimeServicesEvidence,
262
323
  defaultKernelImplementationRef,
@@ -267,4 +328,4 @@ export {
267
328
  setKernelImplementationRef,
268
329
  getKernelImplementationRef
269
330
  };
270
- //# sourceMappingURL=chunk-ZGDVUPTM.js.map
331
+ //# sourceMappingURL=chunk-IOZ3VKPK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/runtime/core/RuntimeKernel.ts","../src/internal/runtime/core/RuntimeKernel.selection.ts","../src/internal/runtime/core/KernelRef.ts"],"sourcesContent":["import { Effect, Option, ServiceMap } from 'effect'\nimport { isDevEnv } from './env.js'\nimport {\n makeRuntimeServicesEvidence as makeRuntimeServicesEvidenceImpl,\n selectRuntimeService as selectRuntimeServiceImpl,\n type RuntimeServicesOverrideLayers,\n} from './RuntimeKernel.selection.js'\n\nexport type OverrideScope = 'builtin' | 'runtime_default' | 'runtime_module' | 'provider' | 'instance'\n\nexport type RuntimeServiceOverride = {\n readonly implId?: string\n readonly notes?: string\n}\n\n/**\n * RuntimeServicesOverrides: a serializable override for runtime service implementation selection.\n *\n * - The key is a stable serviceId.\n * - The value may only contain serializable fields (no functions/closures) so evidence can be produced and explained.\n */\nexport type RuntimeServicesOverrides = Readonly<Record<string, RuntimeServiceOverride>>\n\nexport interface RuntimeServicesRuntimeConfig {\n /** Runtime-level default overrides (runtime_default). */\n readonly services?: RuntimeServicesOverrides\n /** Per-module delta overrides by moduleId (runtime_module). */\n readonly servicesByModuleId?: Readonly<Record<string, RuntimeServicesOverrides>>\n}\n\nclass RuntimeServicesRuntimeConfigTagImpl extends ServiceMap.Service<\n RuntimeServicesRuntimeConfigTagImpl,\n RuntimeServicesRuntimeConfig\n>()('@logixjs/core/RuntimeServicesRuntimeConfig') {}\n\nexport const RuntimeServicesRuntimeConfigTag = RuntimeServicesRuntimeConfigTagImpl\n\nexport interface RuntimeServicesProviderOverrides {\n /** Provider-scoped default overrides (provider). */\n readonly services?: RuntimeServicesOverrides\n /** Provider-scoped per-module delta overrides by moduleId (provider). */\n readonly servicesByModuleId?: Readonly<Record<string, RuntimeServicesOverrides>>\n}\n\nclass RuntimeServicesProviderOverridesTagImpl extends ServiceMap.Service<\n RuntimeServicesProviderOverridesTagImpl,\n RuntimeServicesProviderOverrides\n>()('@logixjs/core/RuntimeServicesProviderOverrides') {}\n\nexport const RuntimeServicesProviderOverridesTag = RuntimeServicesProviderOverridesTagImpl\n\nclass RuntimeServicesInstanceOverridesTagImpl extends ServiceMap.Service<\n RuntimeServicesInstanceOverridesTagImpl,\n RuntimeServicesOverrides\n>()('@logixjs/core/RuntimeServicesInstanceOverrides') {}\n\nexport const RuntimeServicesInstanceOverridesTag = RuntimeServicesInstanceOverridesTagImpl\n\n/**\n * FullCutoverGateMode: controls whether fallbacks are allowed during assembly.\n *\n * - trial: allows fallbacks (for trial-run / comparison / diagnostics).\n * - fullCutover: forbids fallbacks (any fallback or missing binding fails).\n *\n * Default: fullCutover. trial must be opted in explicitly.\n */\nexport type FullCutoverGateMode = 'trial' | 'fullCutover'\n\nclass FullCutoverGateModeTagImpl extends ServiceMap.Service<\n FullCutoverGateModeTagImpl,\n FullCutoverGateMode\n>()('@logixjs/core/FullCutoverGateMode') {}\n\nexport const FullCutoverGateModeTag = FullCutoverGateModeTagImpl\n\nexport interface RuntimeServiceBinding {\n readonly serviceId: string\n readonly implId?: string\n readonly implVersion?: string\n readonly scope: OverrideScope\n readonly overridden: boolean\n readonly notes?: string\n}\n\nexport interface RuntimeServicesEvidence {\n readonly moduleId?: string\n readonly instanceId: string\n readonly scope: OverrideScope\n readonly bindings: ReadonlyArray<RuntimeServiceBinding>\n readonly overridesApplied: ReadonlyArray<string>\n}\n\nconst isPlainRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst normalizeRuntimeServiceOverride = (value: unknown): RuntimeServiceOverride | undefined => {\n if (!isPlainRecord(value)) return undefined\n\n const implIdRaw = value.implId\n const notesRaw = value.notes\n\n const implId = typeof implIdRaw === 'string' && implIdRaw.length > 0 ? implIdRaw : undefined\n const notes = typeof notesRaw === 'string' && notesRaw.length > 0 ? notesRaw : undefined\n if (!implId && !notes) return undefined\n\n return Object.freeze({\n ...(implId ? { implId } : {}),\n ...(notes ? { notes } : {}),\n }) as RuntimeServiceOverride\n}\n\nconst freezeRuntimeServicesOverrides = (\n value: RuntimeServicesOverrides | undefined,\n): RuntimeServicesOverrides | undefined => {\n if (!isPlainRecord(value)) return undefined\n\n const out: Record<string, RuntimeServiceOverride> = {}\n for (const [serviceId, rawOverride] of Object.entries(value)) {\n if (serviceId.length === 0) continue\n const normalized = normalizeRuntimeServiceOverride(rawOverride)\n if (!normalized) continue\n out[serviceId] = normalized\n }\n\n if (Object.keys(out).length === 0) return undefined\n return Object.freeze(out) as RuntimeServicesOverrides\n}\n\nconst freezeRuntimeServicesOverridesAtModule = (args: {\n readonly moduleId: string | undefined\n readonly byModuleId: Readonly<Record<string, RuntimeServicesOverrides>> | undefined\n}): RuntimeServicesOverrides | undefined => {\n if (!args.moduleId || args.moduleId.length === 0) return undefined\n if (!isPlainRecord(args.byModuleId)) return undefined\n return freezeRuntimeServicesOverrides(args.byModuleId[args.moduleId])\n}\n\nexport const resolveRuntimeServicesOverrides = (args: {\n readonly moduleId: string | undefined\n}): Effect.Effect<RuntimeServicesOverrideLayers, never, any> =>\n Effect.gen(function* () {\n const runtimeConfigOpt = yield* Effect.serviceOption(RuntimeServicesRuntimeConfigTag)\n const providerOverridesOpt = yield* Effect.serviceOption(RuntimeServicesProviderOverridesTag)\n const instanceOverridesOpt = yield* Effect.serviceOption(RuntimeServicesInstanceOverridesTag)\n\n const runtimeConfig = Option.isSome(runtimeConfigOpt) ? runtimeConfigOpt.value : undefined\n const providerOverrides = Option.isSome(providerOverridesOpt) ? providerOverridesOpt.value : undefined\n const instanceOverrides = Option.isSome(instanceOverridesOpt) ? instanceOverridesOpt.value : undefined\n\n const moduleId = args.moduleId\n const runtimeDefaults = freezeRuntimeServicesOverrides(runtimeConfig?.services)\n const runtimeModule = freezeRuntimeServicesOverridesAtModule({\n moduleId,\n byModuleId: runtimeConfig?.servicesByModuleId,\n })\n const providerDefaults = freezeRuntimeServicesOverrides(providerOverrides?.services)\n const providerModule = freezeRuntimeServicesOverridesAtModule({\n moduleId,\n byModuleId: providerOverrides?.servicesByModuleId,\n })\n const instance = freezeRuntimeServicesOverrides(instanceOverrides)\n\n return Object.freeze({\n runtimeDefault: runtimeDefaults,\n runtimeModule,\n provider: providerDefaults,\n providerModule,\n instance,\n }) as RuntimeServicesOverrideLayers\n })\n\nexport interface RuntimeServiceImpl<Service> {\n readonly implId: string\n readonly implVersion: string\n readonly make: Effect.Effect<Service, never, any>\n readonly notes?: string\n}\n\n/**\n * RuntimeServicesRegistry:\n * - Used to inject additional serviceId → impls (e.g. implementations provided by core-ng).\n * - A non-serializable contract used only during assembly; selection evidence is still carried by\n * RuntimeServicesOverrides + RuntimeServicesEvidence.\n */\nexport interface RuntimeServicesRegistry {\n readonly implsByServiceId: Readonly<Record<string, ReadonlyArray<RuntimeServiceImpl<any>>>>\n}\n\nclass RuntimeServicesRegistryTagImpl extends ServiceMap.Service<\n RuntimeServicesRegistryTagImpl,\n RuntimeServicesRegistry\n>()('@logixjs/core/RuntimeServicesRegistry') {}\n\nexport const RuntimeServicesRegistryTag = RuntimeServicesRegistryTagImpl\n\nexport interface RuntimeServiceSelection<Service> {\n readonly binding: RuntimeServiceBinding\n readonly impl: RuntimeServiceImpl<Service>\n readonly overridesApplied: ReadonlyArray<string>\n}\n\nexport const selectRuntimeService = selectRuntimeServiceImpl\n\nexport const makeRuntimeServicesEvidence = makeRuntimeServicesEvidenceImpl\n\nconst RUNTIME_SERVICES_EVIDENCE = Symbol.for('@logixjs/core/runtimeServicesEvidence')\n\nconst defineHidden = (target: object, key: symbol, value: unknown): void => {\n Object.defineProperty(target, key, {\n value,\n enumerable: false,\n configurable: true,\n writable: false,\n })\n}\n\nconst formatScope = (moduleId: unknown, instanceId: unknown): string => {\n const m = typeof moduleId === 'string' && moduleId.length > 0 ? moduleId : 'unknown'\n const i = typeof instanceId === 'string' && instanceId.length > 0 ? instanceId : 'unknown'\n return `moduleId=${m}, instanceId=${i}`\n}\n\nexport const setRuntimeServicesEvidence = (runtime: object, evidence: RuntimeServicesEvidence): void => {\n defineHidden(runtime, RUNTIME_SERVICES_EVIDENCE, evidence)\n}\n\nexport const getRuntimeServicesEvidence = (runtime: object): RuntimeServicesEvidence => {\n const scope = runtime as { readonly moduleId?: unknown; readonly instanceId?: unknown }\n const evidence = (runtime as any)[RUNTIME_SERVICES_EVIDENCE] as RuntimeServicesEvidence | undefined\n if (!evidence) {\n const msg = isDevEnv()\n ? [\n '[MissingRuntimeServicesEvidence] Runtime services evidence not installed on ModuleRuntime instance.',\n `scope: ${formatScope(scope.moduleId, scope.instanceId)}`,\n 'fix:',\n '- Ensure ModuleRuntime.make assembles RuntimeKernel and attaches evidence (020 US2).',\n '- If you created a mock runtime for tests, attach evidence or avoid calling evidence-only APIs.',\n ].join('\\n')\n : 'Runtime services evidence not installed'\n throw new Error(msg)\n }\n\n const runtimeInstanceId = scope.instanceId\n if (\n typeof runtimeInstanceId === 'string' &&\n runtimeInstanceId.length > 0 &&\n runtimeInstanceId !== evidence.instanceId\n ) {\n throw new Error(\n isDevEnv()\n ? [\n '[InconsistentRuntimeServicesEvidence] Runtime services evidence instanceId mismatch.',\n `runtime: ${formatScope(scope.moduleId, runtimeInstanceId)}`,\n `evidence: ${formatScope(evidence.moduleId, evidence.instanceId)}`,\n ].join('\\n')\n : 'Runtime services evidence mismatch',\n )\n }\n\n return evidence\n}\n","import type {\n OverrideScope,\n RuntimeServiceBinding,\n RuntimeServiceImpl,\n RuntimeServiceOverride,\n RuntimeServiceSelection,\n RuntimeServicesEvidence,\n RuntimeServicesOverrides,\n} from './RuntimeKernel.js'\n\nexport interface RuntimeServicesOverrideLayers {\n readonly runtimeDefault?: RuntimeServicesOverrides\n readonly runtimeModule?: RuntimeServicesOverrides\n readonly provider?: RuntimeServicesOverrides\n readonly providerModule?: RuntimeServicesOverrides\n readonly instance?: RuntimeServicesOverrides\n}\n\nconst ORDERED_SCOPES: ReadonlyArray<OverrideScope> = [\n 'builtin',\n 'runtime_default',\n 'runtime_module',\n 'provider',\n 'instance',\n]\n\nconst maxScope = (a: OverrideScope, b: OverrideScope): OverrideScope => {\n const ai = ORDERED_SCOPES.indexOf(a)\n const bi = ORDERED_SCOPES.indexOf(b)\n return (ai >= bi ? a : b) as OverrideScope\n}\n\nconst isPlainRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst normalizeOverride = (value: unknown): RuntimeServiceOverride | undefined => {\n if (!isPlainRecord(value)) return undefined\n\n const implIdRaw = value.implId\n const notesRaw = value.notes\n\n return {\n implId: typeof implIdRaw === 'string' && implIdRaw.length > 0 ? implIdRaw : undefined,\n notes: typeof notesRaw === 'string' && notesRaw.length > 0 ? notesRaw : undefined,\n }\n}\n\nexport const selectRuntimeService = <Service>(\n serviceId: string,\n impls: ReadonlyArray<RuntimeServiceImpl<Service>>,\n overrides: RuntimeServicesOverrideLayers,\n): RuntimeServiceSelection<Service> => {\n const builtin = impls[0]\n if (!builtin) {\n throw new Error(`[Logix] RuntimeKernel registry missing builtin impl for: ${serviceId}`)\n }\n\n let desired: { readonly scope: OverrideScope; readonly override: RuntimeServiceOverride } | undefined\n const consider = (scope: OverrideScope, patch: RuntimeServicesOverrides | undefined): void => {\n const next = patch ? normalizeOverride(patch[serviceId]) : undefined\n if (!next || !next.implId) return\n desired = { scope, override: next }\n }\n\n consider('runtime_default', overrides.runtimeDefault)\n consider('runtime_module', overrides.runtimeModule)\n consider('provider', overrides.provider)\n consider('provider', overrides.providerModule)\n consider('instance', overrides.instance)\n\n if (!desired) {\n const binding = Object.freeze({\n serviceId,\n implId: builtin.implId,\n implVersion: builtin.implVersion,\n scope: 'builtin',\n overridden: false,\n notes: builtin.notes,\n }) as RuntimeServiceBinding\n\n return Object.freeze({\n impl: builtin,\n binding,\n overridesApplied: Object.freeze([] as Array<string>) as ReadonlyArray<string>,\n }) as RuntimeServiceSelection<Service>\n }\n\n const desiredImplId = desired.override.implId!\n const selected = impls.find((i) => i.implId === desiredImplId)\n const impl = selected ?? builtin\n\n const didFallback = selected == null\n const fallbackNote = didFallback\n ? `Unknown implId \"${desiredImplId}\", falling back to builtin \"${builtin.implId}\"`\n : undefined\n\n const notes = [desired.override.notes, impl.notes, fallbackNote]\n .filter((s): s is string => typeof s === 'string' && s.length > 0)\n .join('; ')\n\n const binding = Object.freeze({\n serviceId,\n implId: impl.implId,\n implVersion: impl.implVersion,\n scope: desired.scope,\n overridden: true,\n notes: notes.length > 0 ? notes : undefined,\n }) as RuntimeServiceBinding\n\n const overridesApplied = Object.freeze([\n didFallback\n ? `${desired.scope}:${serviceId}=${desiredImplId} (fallback=${builtin.implId})`\n : `${desired.scope}:${serviceId}=${desiredImplId}`,\n ]) as ReadonlyArray<string>\n\n return Object.freeze({\n impl,\n binding,\n overridesApplied,\n }) as RuntimeServiceSelection<Service>\n}\n\nexport const makeRuntimeServicesEvidence = (args: {\n readonly moduleId: string | undefined\n readonly instanceId: string\n readonly bindings: ReadonlyArray<RuntimeServiceBinding>\n readonly overridesApplied: ReadonlyArray<string>\n}): RuntimeServicesEvidence => {\n let scope: OverrideScope = 'builtin'\n for (const b of args.bindings) {\n scope = maxScope(scope, b.scope)\n }\n\n const bindings = Object.freeze(\n args.bindings.map((binding) =>\n Object.freeze({\n serviceId: binding.serviceId,\n ...(binding.implId ? { implId: binding.implId } : {}),\n ...(binding.implVersion ? { implVersion: binding.implVersion } : {}),\n scope: binding.scope,\n overridden: binding.overridden,\n ...(binding.notes ? { notes: binding.notes } : {}),\n }) as RuntimeServiceBinding,\n ),\n ) as ReadonlyArray<RuntimeServiceBinding>\n\n const overridesApplied = Object.freeze([...args.overridesApplied]) as ReadonlyArray<string>\n\n return Object.freeze({\n moduleId: args.moduleId,\n instanceId: args.instanceId,\n scope,\n bindings,\n overridesApplied,\n }) as RuntimeServicesEvidence\n}\n","import { Effect, Option, ServiceMap } from 'effect'\nimport { isDevEnv } from './env.js'\n\n/**\n * Stable identifier for a kernel variant (requested kernel family).\n *\n * - Recommended: `[a-z0-9-]+` (lower-kebab).\n * - Recommended reserved names: `core` (builtin semantics), `core-ng` (history/comparison).\n */\nexport type KernelId = 'core' | 'core-ng' | (string & {})\n\nconst isKernelId = (value: unknown): value is KernelId =>\n typeof value === 'string' && value.length > 0 && /^[a-z0-9-]+$/.test(value)\n\nexport interface KernelImplementationRef {\n /**\n * Requested kernel family id (not a version number).\n * Actual activation / fallback must be interpreted via RuntimeServicesEvidence.\n */\n readonly kernelId: KernelId\n /** The npm package that provides the kernel implementation. */\n readonly packageName: string\n /** Optional semver for explainability (not used as a semantic anchor). */\n readonly packageVersion?: string\n /** Optional build hash/id for evidence diff explainability. */\n readonly buildId?: string\n /** Explainability-only labels; must not become semantic switches. */\n readonly capabilities?: ReadonlyArray<string>\n}\n\nexport const defaultKernelImplementationRef = {\n kernelId: 'core',\n packageName: '@logixjs/core',\n} as const satisfies KernelImplementationRef\n\nexport const isKernelImplementationRef = (value: unknown): value is KernelImplementationRef => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return false\n\n const keys = Object.keys(value)\n for (const k of keys) {\n if (k !== 'kernelId' && k !== 'packageName' && k !== 'packageVersion' && k !== 'buildId' && k !== 'capabilities') {\n return false\n }\n }\n\n const v: any = value\n if (!isKernelId(v.kernelId)) return false\n if (typeof v.packageName !== 'string' || v.packageName.length === 0) return false\n\n if (v.packageVersion !== undefined && (typeof v.packageVersion !== 'string' || v.packageVersion.length === 0)) {\n return false\n }\n if (v.buildId !== undefined && (typeof v.buildId !== 'string' || v.buildId.length === 0)) {\n return false\n }\n if (v.capabilities !== undefined) {\n if (!Array.isArray(v.capabilities)) return false\n if (!v.capabilities.every((c: unknown) => typeof c === 'string')) return false\n }\n\n return true\n}\n\nexport const normalizeKernelImplementationRef = (\n value: unknown,\n fallback: KernelImplementationRef = defaultKernelImplementationRef,\n): KernelImplementationRef => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return fallback\n\n const v: any = value\n if (!isKernelId(v.kernelId)) return fallback\n if (typeof v.packageName !== 'string' || v.packageName.length === 0) return fallback\n\n return {\n kernelId: v.kernelId,\n packageName: v.packageName,\n ...(typeof v.packageVersion === 'string' && v.packageVersion.length > 0\n ? { packageVersion: v.packageVersion }\n : {}),\n ...(typeof v.buildId === 'string' && v.buildId.length > 0 ? { buildId: v.buildId } : {}),\n ...(Array.isArray(v.capabilities) && v.capabilities.every((c: unknown) => typeof c === 'string')\n ? { capabilities: v.capabilities as ReadonlyArray<string> }\n : {}),\n }\n}\n\nclass KernelImplementationRefTagImpl extends ServiceMap.Service<\n KernelImplementationRefTagImpl,\n KernelImplementationRef\n>()('@logixjs/core/KernelImplementationRef') {}\n\nexport const KernelImplementationRefTag = KernelImplementationRefTagImpl\n\nexport const resolveKernelImplementationRef = (): Effect.Effect<KernelImplementationRef, never, any> =>\n Effect.gen(function* () {\n const opt = yield* Effect.serviceOption(KernelImplementationRefTag)\n return normalizeKernelImplementationRef(Option.isSome(opt) ? opt.value : undefined)\n })\n\nconst KERNEL_IMPLEMENTATION_REF = Symbol.for('@logixjs/core/kernelImplementationRef')\n\nconst defineHidden = (target: object, key: symbol, value: unknown): void => {\n Object.defineProperty(target, key, {\n value,\n enumerable: false,\n configurable: true,\n writable: false,\n })\n}\n\nconst formatScope = (moduleId: unknown, instanceId: unknown): string => {\n const m = typeof moduleId === 'string' && moduleId.length > 0 ? moduleId : 'unknown'\n const i = typeof instanceId === 'string' && instanceId.length > 0 ? instanceId : 'unknown'\n return `moduleId=${m}, instanceId=${i}`\n}\n\nexport const setKernelImplementationRef = (runtime: object, ref: KernelImplementationRef): void => {\n defineHidden(runtime, KERNEL_IMPLEMENTATION_REF, ref)\n}\n\nexport const getKernelImplementationRef = (runtime: object): KernelImplementationRef => {\n const scope = runtime as { readonly moduleId?: unknown; readonly instanceId?: unknown }\n const ref = (runtime as any)[KERNEL_IMPLEMENTATION_REF] as KernelImplementationRef | undefined\n if (!ref) {\n const msg = isDevEnv()\n ? [\n '[MissingKernelImplementationRef] KernelImplementationRef not installed on ModuleRuntime instance.',\n `scope: ${formatScope(scope.moduleId, scope.instanceId)}`,\n 'fix:',\n '- Ensure ModuleRuntime.make installs KernelImplementationRef (045 kernel contract).',\n '- If you created a mock runtime for tests, attach KernelImplementationRef or avoid calling kernel-only APIs.',\n ].join('\\n')\n : 'KernelImplementationRef not installed'\n throw new Error(msg)\n }\n return ref\n}\n"],"mappings":"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","names":["binding","isPlainRecord","selectRuntimeService","makeRuntimeServicesEvidence","Effect","Option","ServiceMap","ServiceMap","Effect","Option","defineHidden","formatScope"]}