@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/internal/reflection/staticIr.ts","../src/internal/reflection/manifest.ts","../src/internal/observability/artifacts/registry.ts","../src/internal/observability/trialRunModule.ts","../src/internal/platform/BuildEnv.ts","../src/internal/platform/ConstructionGuard.ts","../src/internal/platform/RuntimeHost.ts","../src/internal/runtime/Runtime.ts","../src/internal/observability/artifacts/model.ts","../src/internal/observability/artifacts/digest.ts","../src/internal/observability/artifacts/collect.ts","../src/internal/observability/trialRunReportPipeline.ts","../src/internal/observability/trialRun.ts"],"sourcesContent":["import type { AnyModuleShape, ModuleImpl } from '../runtime/core/module.js'\nimport { getModuleTraitsProgram } from '../runtime/core/runtimeInternalsAccessor.js'\nimport type { StaticIr } from '../state-trait/ir.js'\nimport type { StateTraitProgram } from '../state-trait/model.js'\nimport { exportStaticIr as exportStateTraitStaticIr } from '../state-trait/ir.js'\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst isModuleImpl = (value: unknown): value is ModuleImpl<any, AnyModuleShape, any> =>\n isRecord(value) && value._tag === 'ModuleImpl' && isRecord(value.module)\n\nconst resolveModuleId = (input: unknown): string => {\n if (isModuleImpl(input)) {\n const id = (input.module as any).id\n return typeof id === 'string' && id.length > 0 ? id : 'unknown'\n }\n\n if (isRecord(input)) {\n const id = input.id\n if (typeof id === 'string' && id.length > 0) return id\n const tag = (input as any).tag\n if (tag && (typeof tag === 'object' || typeof tag === 'function')) {\n const tagId = (tag as any).id\n if (typeof tagId === 'string' && tagId.length > 0) return tagId\n }\n }\n\n return 'unknown'\n}\n\nconst resolveModuleTag = (input: unknown): unknown => {\n if (isModuleImpl(input)) return input.module\n if (isRecord(input) && (input as any).tag) return (input as any).tag\n return undefined\n}\n\nexport const exportStaticIr = (module: unknown): StaticIr | undefined => {\n const tag = resolveModuleTag(module)\n if (!tag) return undefined\n\n const program = getModuleTraitsProgram(tag) as StateTraitProgram<any> | undefined\n if (!program) return undefined\n\n return exportStateTraitStaticIr({\n program,\n moduleId: resolveModuleId(module),\n })\n}\n","import { Schema } from 'effect'\nimport type { AnyModuleShape, ModuleImpl } from '../runtime/core/module.js'\nimport * as Action from '../action.js'\nimport { stableStringify, fnv1a32 } from '../digest.js'\nimport { isJsonValue, type JsonValue } from '../observability/jsonValue.js'\nimport { exportStaticIr } from './staticIr.js'\n\nexport interface ManifestBudgets {\n readonly maxBytes?: number\n}\n\nexport interface ExtractManifestOptions {\n readonly includeStaticIr?: boolean\n readonly budgets?: ManifestBudgets\n}\n\nexport interface ModuleManifestLogicUnit {\n readonly kind: string\n readonly id: string\n readonly derived?: boolean\n readonly name?: string\n}\n\nexport interface ModuleManifestAction {\n readonly actionTag: string\n readonly payload: {\n readonly kind: 'void' | 'nonVoid' | 'unknown'\n }\n readonly primaryReducer?: {\n readonly kind: 'declared' | 'registered'\n }\n readonly source?: {\n readonly file: string\n readonly line: number\n readonly column: number\n }\n}\n\nexport interface ModuleManifestEffect {\n readonly actionTag: string\n readonly sourceKey: string\n readonly kind: 'declared' | 'registered'\n readonly source?: {\n readonly file: string\n readonly line: number\n readonly column: number\n }\n}\n\nexport interface ModuleManifest {\n readonly manifestVersion: string\n readonly moduleId: string\n readonly actionKeys: ReadonlyArray<string>\n readonly actions: ReadonlyArray<ModuleManifestAction>\n readonly effects?: ReadonlyArray<ModuleManifestEffect>\n readonly schemaKeys?: ReadonlyArray<string>\n readonly logicUnits?: ReadonlyArray<ModuleManifestLogicUnit>\n readonly source?: {\n readonly file: string\n readonly line: number\n readonly column: number\n }\n readonly meta?: Record<string, JsonValue>\n readonly staticIr?: ReturnType<typeof exportStaticIr>\n readonly digest: string\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst isModuleImpl = (value: unknown): value is ModuleImpl<any, AnyModuleShape, any> =>\n isRecord(value) && value._tag === 'ModuleImpl' && isRecord(value.module)\n\nconst resolveModuleId = (input: unknown): string => {\n if (isModuleImpl(input)) {\n const id = (input.module as any).id\n return typeof id === 'string' && id.length > 0 ? id : 'unknown'\n }\n\n if (isRecord(input)) {\n const id = input.id\n if (typeof id === 'string' && id.length > 0) return id\n const tag = (input as any).tag\n if (tag && (typeof tag === 'object' || typeof tag === 'function')) {\n const tagId = (tag as any).id\n if (typeof tagId === 'string' && tagId.length > 0) return tagId\n }\n }\n\n return 'unknown'\n}\n\nconst resolveActionKeys = (input: unknown): ReadonlyArray<string> => {\n const tag = isModuleImpl(input) ? (input.module as any) : (input as any)?.tag\n const actionMap = tag?.shape?.actionMap\n if (!isRecord(actionMap)) return []\n return Object.keys(actionMap).sort()\n}\n\ntype DevSource = ModuleManifest['source']\n\nconst resolveDevSource = (input: unknown): DevSource | undefined => {\n if (!isRecord(input)) return undefined\n const file = (input as any).file\n const line = (input as any).line\n const column = (input as any).column\n if (typeof file !== 'string' || file.length === 0) return undefined\n if (typeof line !== 'number' || !Number.isInteger(line) || line < 1) return undefined\n if (typeof column !== 'number' || !Number.isInteger(column) || column < 1) return undefined\n return { file, line, column }\n}\n\nconst resolveTokenSource = (token: unknown): DevSource | undefined => {\n if (!token || (typeof token !== 'object' && typeof token !== 'function')) return undefined\n return resolveDevSource((token as any).source)\n}\n\nconst resolveActions = (input: unknown): ReadonlyArray<ModuleManifestAction> => {\n const tag = isModuleImpl(input) ? (input.module as any) : (input as any)?.tag\n const actionMap = tag?.shape?.actionMap\n if (!isRecord(actionMap)) return []\n\n const moduleSource = resolveSource(input)\n const reducers = isRecord(tag?.reducers) ? (tag.reducers as Record<string, unknown>) : undefined\n\n const actionTags = Object.keys(actionMap).sort()\n\n const out: Array<ModuleManifestAction> = []\n for (const actionTag of actionTags) {\n const token = actionMap[actionTag]\n const source = resolveTokenSource(token) ?? moduleSource\n const payloadKind =\n Action.isActionToken(token) && Schema.isSchema((token as Action.AnyActionToken).schema)\n ? (token as Action.AnyActionToken).schema === Schema.Void\n ? 'void'\n : 'nonVoid'\n : 'unknown'\n\n const primaryReducer =\n reducers && typeof reducers[actionTag] === 'function' ? ({ kind: 'declared' } as const) : undefined\n\n out.push({\n actionTag,\n payload: { kind: payloadKind },\n ...(primaryReducer ? { primaryReducer } : {}),\n ...(source ? { source } : {}),\n })\n }\n\n return out\n}\n\nconst MODULE_DECLARED_EFFECTS = Symbol.for('logix.module.effects.declared')\n\nconst resolveEffects = (input: unknown): ReadonlyArray<ModuleManifestEffect> | undefined => {\n const tag = isModuleImpl(input) ? (input.module as any) : (input as any)?.tag\n const actionMap = tag?.shape?.actionMap\n if (!isRecord(actionMap)) return undefined\n\n const effectsRaw = (tag as any)?.[MODULE_DECLARED_EFFECTS]\n if (!isRecord(effectsRaw)) return undefined\n\n const source = resolveSource(input)\n\n const logicUnitId = '__logix_internal:effects:declared'\n const handlerIds = new WeakMap<(...args: any[]) => any, string>()\n let nextHandlerSeq = 0\n\n const out: Array<ModuleManifestEffect> = []\n\n for (const actionTag of Object.keys(effectsRaw).sort()) {\n if (!(actionTag in actionMap)) continue\n\n const handlers = (effectsRaw as any)[actionTag]\n if (!Array.isArray(handlers)) continue\n\n for (const handler of handlers) {\n if (typeof handler !== 'function') continue\n\n let handlerId = handlerIds.get(handler)\n if (!handlerId) {\n nextHandlerSeq += 1\n handlerId = `h${nextHandlerSeq}`\n handlerIds.set(handler, handlerId)\n }\n\n const sourceKey = `${logicUnitId}::${handlerId}`\n\n out.push({\n actionTag,\n sourceKey,\n kind: 'declared',\n ...(source ? { source } : {}),\n })\n }\n }\n\n const seen = new Set<string>()\n const deduped: Array<ModuleManifestEffect> = []\n for (const item of out) {\n const key = `${item.actionTag}\\u0000${item.sourceKey}`\n if (seen.has(key)) continue\n seen.add(key)\n deduped.push(item)\n }\n\n deduped.sort((a, b) =>\n a.actionTag < b.actionTag\n ? -1\n : a.actionTag > b.actionTag\n ? 1\n : a.sourceKey < b.sourceKey\n ? -1\n : a.sourceKey > b.sourceKey\n ? 1\n : 0,\n )\n return deduped.length > 0 ? deduped : undefined\n}\n\nconst resolveSchemaKeys = (input: unknown): ReadonlyArray<string> | undefined => {\n if (!isRecord(input)) return undefined\n const schemas = (input as any).schemas\n if (!isRecord(schemas)) return undefined\n return Object.keys(schemas).sort()\n}\n\nconst resolveSource = (input: unknown): ModuleManifest['source'] | undefined => {\n if (!isRecord(input)) return undefined\n const dev = (input as any).dev\n return resolveDevSource(dev?.source)\n}\n\nconst resolveMeta = (input: unknown): Record<string, JsonValue> | undefined => {\n if (!isRecord(input)) return undefined\n const meta = (input as any).meta\n if (!isRecord(meta)) return undefined\n\n const out: Record<string, JsonValue> = {}\n for (const key of Object.keys(meta).sort()) {\n const value = meta[key]\n if (isJsonValue(value)) {\n out[key] = value\n }\n }\n return Object.keys(out).length > 0 ? out : undefined\n}\n\nconst MODULE_INTERNAL = Symbol.for('logix.module.internal')\n\nconst resolveLogicUnits = (input: unknown): ReadonlyArray<ModuleManifestLogicUnit> | undefined => {\n if (!isRecord(input)) return undefined\n const internal = (input as any)[MODULE_INTERNAL]\n const mounted = internal?.mounted\n if (!Array.isArray(mounted)) return undefined\n\n const out: Array<ModuleManifestLogicUnit> = []\n for (const unit of mounted) {\n if (!isRecord(unit)) continue\n const kind = unit.kind\n const id = unit.id\n if (typeof kind !== 'string' || kind.length === 0) continue\n if (typeof id !== 'string' || id.length === 0) continue\n\n const derived = unit.derived === true ? true : undefined\n const name = typeof unit.name === 'string' ? unit.name : undefined\n out.push({ kind, id, derived, name })\n }\n\n out.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : a.kind < b.kind ? -1 : a.kind > b.kind ? 1 : 0))\n return out.length > 0 ? out : undefined\n}\n\ntype DigestBase = {\n readonly manifestVersion: string\n readonly moduleId: string\n readonly actionKeys: ReadonlyArray<string>\n readonly actions: ReadonlyArray<ModuleManifestAction>\n readonly effects?: ReadonlyArray<ModuleManifestEffect>\n readonly schemaKeys?: ReadonlyArray<string>\n readonly logicUnits?: ReadonlyArray<ModuleManifestLogicUnit>\n readonly staticIrDigest?: string\n}\n\nconst digestOf = (base: DigestBase): string => `manifest:067:${fnv1a32(stableStringify(base))}`\n\nconst utf8ByteLength = (value: unknown): number => {\n const json = JSON.stringify(value)\n if (typeof TextEncoder !== 'undefined') {\n return new TextEncoder().encode(json).length\n }\n return json.length\n}\n\nconst applyMaxBytes = (manifest: ModuleManifest, maxBytes: number): ModuleManifest => {\n const originalBytes = utf8ByteLength(manifest)\n if (originalBytes <= maxBytes) return manifest\n\n const dropped: Array<string> = []\n const truncatedArrays: Array<string> = []\n\n const baseMarker = (): JsonValue => ({\n truncated: true,\n maxBytes,\n originalBytes,\n dropped,\n truncatedArrays,\n })\n\n const withMarker = (next: ModuleManifest): ModuleManifest => {\n const meta: Record<string, JsonValue> = {\n __logix: baseMarker(),\n }\n return { ...next, meta }\n }\n\n let next: ModuleManifest = withMarker(manifest)\n\n const markTruncatedArray = (name: string): void => {\n if (!truncatedArrays.includes(name)) {\n truncatedArrays.push(name)\n }\n }\n\n const dropField = (field: keyof ModuleManifest): void => {\n if ((next as any)[field] !== undefined) {\n dropped.push(String(field))\n next = withMarker({ ...(next as any), [field]: undefined })\n }\n }\n\n // Deterministic trimming order (least valuable first).\n dropField('meta')\n if (utf8ByteLength(next) <= maxBytes) return next\n\n dropField('source')\n if (utf8ByteLength(next) <= maxBytes) return next\n\n dropField('staticIr')\n if (utf8ByteLength(next) <= maxBytes) return next\n\n dropField('logicUnits')\n if (utf8ByteLength(next) <= maxBytes) return next\n\n dropField('schemaKeys')\n if (utf8ByteLength(next) <= maxBytes) return next\n\n dropField('effects')\n if (utf8ByteLength(next) <= maxBytes) return next\n\n // Last resort: deterministically truncate tail items (stable order: actions[] sorted by actionTag).\n const truncateActionsToFit = (): void => {\n const total = next.actions.length\n if (total <= 1) return\n\n // Find the largest prefix that fits.\n let lo = 1\n let hi = total\n let best = 1\n\n while (lo <= hi) {\n const mid = Math.floor((lo + hi) / 2)\n const candidate = withMarker({\n ...next,\n actions: next.actions.slice(0, mid),\n actionKeys: next.actionKeys.slice(0, mid),\n })\n if (utf8ByteLength(candidate) <= maxBytes) {\n best = mid\n lo = mid + 1\n } else {\n hi = mid - 1\n }\n }\n\n if (best < total) {\n markTruncatedArray('actions')\n markTruncatedArray('actionKeys')\n next = withMarker({\n ...next,\n actions: next.actions.slice(0, best),\n actionKeys: next.actionKeys.slice(0, best),\n })\n }\n }\n\n while (utf8ByteLength(next) > maxBytes) {\n const beforeLen = next.actions.length\n truncateActionsToFit()\n if (next.actions.length === beforeLen) {\n break\n }\n }\n\n return next\n}\n\nexport const extractManifest = (module: unknown, options?: ExtractManifestOptions): ModuleManifest => {\n const manifestVersion = '067'\n const moduleId = resolveModuleId(module)\n const actionKeys = resolveActionKeys(module)\n const actions = resolveActions(module)\n const effects = resolveEffects(module)\n\n const schemaKeys = resolveSchemaKeys(module)\n const logicUnits = resolveLogicUnits(module)\n const source = resolveSource(module)\n const meta = resolveMeta(module)\n\n const staticIr = options?.includeStaticIr ? exportStaticIr(module) : undefined\n\n const digestBase: DigestBase = {\n manifestVersion,\n moduleId,\n actionKeys,\n actions,\n effects,\n schemaKeys,\n logicUnits,\n staticIrDigest: staticIr?.digest,\n }\n\n const digest = digestOf(digestBase)\n\n const manifest: ModuleManifest = {\n manifestVersion,\n moduleId,\n actionKeys,\n actions,\n effects,\n schemaKeys,\n logicUnits,\n source,\n meta,\n staticIr,\n digest,\n }\n\n const maxBytes = options?.budgets?.maxBytes\n if (typeof maxBytes === 'number' && Number.isFinite(maxBytes) && maxBytes > 0) {\n return applyMaxBytes(manifest, maxBytes)\n }\n\n return manifest\n}\n","import type { TrialRunArtifactExporter } from './exporter.js'\n\nconst ARTIFACT_EXPORTERS = Symbol.for('logix.module.trialRunArtifactExporters')\n\nexport const registerTrialRunArtifactExporter = (tag: unknown, exporter: TrialRunArtifactExporter): void => {\n if (!tag || (typeof tag !== 'object' && typeof tag !== 'function')) {\n throw new Error('[Logix] registerTrialRunArtifactExporter: invalid module tag')\n }\n\n const current = ((tag as any)[ARTIFACT_EXPORTERS] ?? []) as unknown\n const next = Array.isArray(current) ? [...current, exporter] : [exporter]\n ;(tag as any)[ARTIFACT_EXPORTERS] = next\n}\n\nexport const getTrialRunArtifactExporters = (tag: unknown): ReadonlyArray<TrialRunArtifactExporter> => {\n if (!tag || (typeof tag !== 'object' && typeof tag !== 'function')) {\n return []\n }\n\n const current = (tag as any)[ARTIFACT_EXPORTERS] as unknown\n if (!Array.isArray(current)) return []\n return current.filter((x): x is TrialRunArtifactExporter => x && typeof x === 'object')\n}\n","import { Cause, Effect, Exit, Fiber, Layer, Option } from 'effect'\nimport type { AnyModuleShape, ModuleImpl } from '../runtime/core/module.js'\nimport * as BuildEnv from '../platform/BuildEnv.js'\nimport type { EvidencePackage, EvidencePackageSource } from './evidence.js'\nimport { makeEvidenceCollector, evidenceCollectorLayer } from './evidenceCollector.js'\nimport { makeRunSession, runSessionLayer, type RunId } from './runSession.js'\nimport {\n appendSinks,\n diagnosticsLevel,\n type DiagnosticsLevel,\n type Sink as DebugSink,\n} from '../runtime/core/DebugSink.js'\nimport type { KernelImplementationRef } from '../runtime/core/KernelRef.js'\nimport * as KernelRef from '../runtime/core/KernelRef.js'\nimport * as RuntimeKernel from '../runtime/core/RuntimeKernel.js'\nimport type { ConvergeStaticIrCollector } from '../runtime/core/ConvergeStaticIrCollector.js'\nimport { appendConvergeStaticIrCollectors } from '../runtime/core/ConvergeStaticIrCollector.js'\nimport type { SerializableErrorSummary } from '../runtime/core/errorSummary.js'\nimport { toSerializableErrorSummary } from '../runtime/core/errorSummary.js'\nimport { makeProgramRunnerKernel } from '../runtime/ProgramRunner.kernel.js'\nimport { extractManifest, type ModuleManifest } from '../reflection/manifest.js'\nimport { exportStaticIr } from '../reflection/staticIr.js'\nimport * as Runtime from '../runtime/Runtime.js'\nimport { collectTrialRunArtifacts } from './artifacts/collect.js'\nimport type { TrialRunArtifacts } from './artifacts/model.js'\nimport { getTrialRunArtifactExporters } from './artifacts/registry.js'\nimport {\n collectTrialRunReExport,\n reExportTrialRunReport,\n type TrialRunReportBudgets as TrialRunReExportBudgets,\n} from './trialRunReportPipeline.js'\n\ntype RootLike<Sh extends AnyModuleShape> = ModuleImpl<any, Sh, any> | { readonly impl: ModuleImpl<any, Sh, any> }\n\nexport interface TrialRunReportBudgets extends TrialRunReExportBudgets {}\n\nexport interface TrialRunReport {\n readonly runId: string\n readonly ok: boolean\n readonly manifest?: ModuleManifest\n readonly staticIr?: ReturnType<typeof exportStaticIr>\n readonly artifacts?: TrialRunArtifacts\n readonly environment?: EnvironmentIr\n readonly evidence?: EvidencePackage\n readonly summary?: unknown\n readonly error?: SerializableErrorSummary\n}\n\nexport interface EnvironmentIr {\n readonly tagIds: ReadonlyArray<string>\n readonly configKeys: ReadonlyArray<string>\n readonly missingServices: ReadonlyArray<string>\n readonly missingConfigKeys: ReadonlyArray<string>\n readonly kernelImplementationRef?: KernelImplementationRef\n readonly runtimeServicesEvidence?: RuntimeKernel.RuntimeServicesEvidence\n readonly notes?: unknown\n}\n\nexport interface TrialRunModuleOptions {\n readonly runId?: RunId\n readonly source?: EvidencePackageSource\n readonly startedAt?: number\n readonly diagnosticsLevel?: DiagnosticsLevel\n readonly maxEvents?: number\n readonly layer?: Layer.Layer<any, any, any>\n readonly buildEnv?: {\n readonly config?: Record<string, BuildEnv.BuildEnvConfigValue | undefined>\n readonly hostKind?: BuildEnv.BuildEnvOptions['runtimeHostKind']\n readonly configProvider?: BuildEnv.BuildEnvOptions['configProvider']\n }\n readonly trialRunTimeoutMs?: number\n readonly closeScopeTimeout?: number\n readonly budgets?: TrialRunReportBudgets\n}\n\nconst defaultHost = (): string => {\n if (typeof window !== 'undefined' && typeof document !== 'undefined') return 'browser'\n return 'node'\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst resolveRootImpl = <Sh extends AnyModuleShape>(root: RootLike<Sh>): ModuleImpl<any, Sh, any> =>\n ((root as any)?._tag === 'ModuleImpl'\n ? (root as ModuleImpl<any, Sh, any>)\n : ((root as any)?.impl as ModuleImpl<any, Sh, any>)) satisfies ModuleImpl<any, Sh, any>\n\nconst parseMissingConfigKeys = (message: string): ReadonlyArray<string> => {\n const out: string[] = []\n\n // Effect Config error messages vary; keep parsing conservative and deterministic.\n const patterns: ReadonlyArray<RegExp> = [\n /\\bMissing (?:data|value) for (?:key|path) \"?([A-Z0-9_./:-]+)\"?/g,\n /\\bMissing (?:data|value) at ([A-Z0-9_./:-]+)\\b/g,\n /\\bMissing configuration:? \"?([A-Z0-9_./:-]+)\"?/g,\n /\\bConfig\\b.*\\bmissing\\b.*\"?([A-Z0-9_./:-]+)\"?/gi,\n /\\bat\\s*\\[\"([A-Z0-9_./:-]+)\"\\]/g,\n ]\n\n for (const re of patterns) {\n let match: RegExpExecArray | null\n while ((match = re.exec(message))) {\n const key = match[1]\n if (typeof key === 'string' && key.length > 0) out.push(key)\n }\n }\n\n return Array.from(new Set(out)).sort()\n}\n\nconst parseMissingServiceIds = (message: string): ReadonlyArray<string> => {\n const out: string[] = []\n const re = /Service not found: ([^\\s(]+)/g\n let match: RegExpExecArray | null\n while ((match = re.exec(message))) {\n const id = match[1]?.replace(/[,:.;]+$/, '')\n if (typeof id === 'string' && id.length > 0) out.push(id)\n }\n return Array.from(new Set(out)).sort()\n}\n\nconst parseMissingDependencyFromCause = (\n cause: Cause.Cause<unknown>,\n): {\n readonly missingServices: ReadonlyArray<string>\n readonly missingConfigKeys: ReadonlyArray<string>\n} => {\n const missingServices: string[] = []\n const missingConfigKeys: string[] = []\n\n const candidates = cause.reasons\n .filter((reason) => Cause.isFailReason(reason) || Cause.isDieReason(reason))\n .map((reason) => (Cause.isFailReason(reason) ? reason.error : reason.defect))\n\n for (const candidate of candidates) {\n if (isRecord(candidate) && (candidate as any)._tag === 'ConstructionGuardError') {\n const missingService = (candidate as any).missingService\n if (typeof missingService === 'string' && missingService.length > 0) {\n missingServices.push(missingService)\n }\n }\n\n if (\n isRecord(candidate) &&\n (candidate as any)._tag === 'ConfigError' &&\n (candidate as any)._op === 'MissingData' &&\n Array.isArray((candidate as any).path) &&\n (candidate as any).path.every((k: unknown) => typeof k === 'string' && k.length > 0)\n ) {\n const key = (candidate as any).path.join('.')\n if (key.length > 0) missingConfigKeys.push(key)\n }\n }\n\n const messages: string[] = []\n for (const candidate of candidates) {\n if (candidate instanceof Error) {\n messages.push(candidate.message)\n continue\n }\n if (typeof candidate === 'string') {\n messages.push(candidate)\n continue\n }\n if (isRecord(candidate) && typeof (candidate as any).message === 'string') {\n messages.push(String((candidate as any).message))\n }\n }\n\n try {\n messages.push(Cause.pretty(cause))\n } catch {\n // ignore\n }\n\n const merged = messages.filter((s) => s.length > 0).join('\\n')\n\n if (merged) {\n missingServices.push(...parseMissingServiceIds(merged))\n missingConfigKeys.push(...parseMissingConfigKeys(merged))\n }\n\n return {\n missingServices: Array.from(new Set(missingServices)).sort(),\n missingConfigKeys: Array.from(new Set(missingConfigKeys)).sort(),\n }\n}\n\nconst buildEnvironmentIr = (params: {\n readonly kernelImplementationRef?: KernelImplementationRef\n readonly runtimeServicesEvidence?: RuntimeKernel.RuntimeServicesEvidence\n readonly buildEnvConfig?: Record<string, BuildEnv.BuildEnvConfigValue | undefined>\n readonly missingServices?: ReadonlyArray<string>\n readonly missingConfigKeys?: ReadonlyArray<string>\n}): EnvironmentIr => {\n const providedConfigKeys = Object.keys(params.buildEnvConfig ?? {})\n .filter((k) => k.length > 0 && (params.buildEnvConfig as any)[k] !== undefined)\n .sort()\n\n const missingServices = Array.from(new Set(params.missingServices ?? [])).sort()\n const missingConfigKeys = Array.from(new Set(params.missingConfigKeys ?? [])).sort()\n\n const runtimeServiceIds =\n params.runtimeServicesEvidence?.bindings?.map((b) => b.serviceId).filter((s) => typeof s === 'string') ?? []\n\n const tagIds = Array.from(new Set([...runtimeServiceIds, ...missingServices])).sort()\n\n const configKeys = Array.from(new Set([...providedConfigKeys, ...missingConfigKeys])).sort()\n\n return {\n tagIds,\n configKeys,\n missingServices,\n missingConfigKeys,\n kernelImplementationRef: params.kernelImplementationRef,\n runtimeServicesEvidence: params.runtimeServicesEvidence,\n }\n}\n\nconst toErrorSummaryWithCode = (cause: unknown, code: string, hint?: string): SerializableErrorSummary => {\n const base = toSerializableErrorSummary(cause).errorSummary\n return {\n name: base.name,\n message: base.message,\n code,\n hint: hint ?? base.hint,\n }\n}\n\nconst makeTrialRunTimeoutError = (): Error =>\n Object.assign(new Error('[Logix] trialRunModule timed out'), {\n name: 'TrialRunTimeoutError',\n })\n\nconst awaitFiberExitWithTimeout = <A, E>(\n fiber: Fiber.Fiber<A, E>,\n timeoutMs: number | undefined,\n): Effect.Effect<Exit.Exit<A, E | Error>, never, never> =>\n Effect.gen(function* () {\n const hasTimeout = typeof timeoutMs === 'number' && Number.isFinite(timeoutMs) && timeoutMs > 0\n if (!hasTimeout) {\n return (yield* Fiber.await(fiber)) as Exit.Exit<A, E | Error>\n }\n\n const raced = yield* Effect.promise<Exit.Exit<A, E | Error> | { readonly _tag: 'Timeout' }>(() =>\n new Promise((resolve) => {\n const timer = setTimeout(() => resolve({ _tag: 'Timeout' as const }), timeoutMs)\n void Effect.runPromise(Fiber.await(fiber)).then((exit) => {\n clearTimeout(timer)\n resolve(exit as Exit.Exit<A, E | Error>)\n })\n }),\n )\n\n if ((raced as any)._tag !== 'Timeout') {\n return raced as Exit.Exit<A, E | Error>\n }\n\n yield* Fiber.interrupt(fiber).pipe(Effect.asVoid, Effect.forkDetach({ startImmediately: true }))\n return Exit.fail(makeTrialRunTimeoutError())\n })\n\nexport const trialRunModule = <Sh extends AnyModuleShape>(\n root: RootLike<Sh>,\n options?: TrialRunModuleOptions,\n): Effect.Effect<TrialRunReport, never, never> =>\n Effect.gen(function* () {\n const rootImpl = resolveRootImpl(root)\n\n const session = makeRunSession({\n runId: options?.runId,\n source: options?.source ?? { host: defaultHost(), label: 'trial-run-module' },\n startedAt: options?.startedAt,\n })\n\n const collector = makeEvidenceCollector(session)\n\n const convergeCollector: ConvergeStaticIrCollector = {\n register: (ir) => {\n collector.registerConvergeStaticIr(ir)\n },\n }\n\n const sinksLayer = appendSinks([collector.debugSink as unknown as DebugSink])\n const resolvedDiagnosticsLevel = options?.diagnosticsLevel ?? 'light'\n const diagnosticsLayer = diagnosticsLevel(resolvedDiagnosticsLevel)\n const convergeLayer = appendConvergeStaticIrCollectors([convergeCollector])\n const collectorLayer = evidenceCollectorLayer(collector)\n const sessionLayer = runSessionLayer(session)\n\n const buildEnvConfig = options?.buildEnv?.config\n const buildEnvLayer = BuildEnv.layer({\n runtimeHostKind: options?.buildEnv?.hostKind,\n config: buildEnvConfig,\n configProvider: options?.buildEnv?.configProvider,\n })\n\n const trialLayer = Layer.mergeAll(\n buildEnvLayer,\n options?.layer ?? (Layer.empty as unknown as Layer.Layer<any, any, any>),\n sessionLayer,\n collectorLayer,\n diagnosticsLayer,\n sinksLayer,\n convergeLayer,\n ) as Layer.Layer<any, never, never>\n\n const kernel = yield* makeProgramRunnerKernel(\n (impl) =>\n Runtime.make(impl, {\n layer: trialLayer as any,\n // trial-run does not enable devtools by default; diagnostics is controlled by diagnosticsLevel.\n } as any),\n rootImpl,\n )\n\n const identity = kernel.identity\n\n const bootFiber = kernel.runtime.runFork(Effect.service(rootImpl.module as any).pipe(Effect.orDie))\n const bootExit = yield* awaitFiberExitWithTimeout(bootFiber, options?.trialRunTimeoutMs)\n\n let kernelImplementationRef: KernelImplementationRef | undefined\n let runtimeServicesEvidence: RuntimeKernel.RuntimeServicesEvidence | undefined\n let instanceId: string | undefined\n\n if (Exit.isSuccess(bootExit)) {\n const moduleRuntime = bootExit.value as any\n instanceId =\n typeof moduleRuntime?.instanceId === 'string' && moduleRuntime.instanceId.length > 0\n ? moduleRuntime.instanceId\n : undefined\n kernel.setInstanceId(instanceId)\n\n try {\n kernelImplementationRef = KernelRef.getKernelImplementationRef(moduleRuntime)\n } catch {\n kernelImplementationRef = undefined\n }\n\n if (resolvedDiagnosticsLevel !== 'off') {\n try {\n runtimeServicesEvidence = RuntimeKernel.getRuntimeServicesEvidence(moduleRuntime)\n } catch {\n runtimeServicesEvidence = undefined\n }\n }\n } else {\n const failure = Cause.findErrorOption(bootExit.cause)\n if (Option.isSome(failure)) {\n const err: any = failure.value\n const instanceIdFromErr = typeof err?.instanceId === 'string' ? err.instanceId : undefined\n if (instanceIdFromErr && instanceIdFromErr.length > 0) {\n kernel.setInstanceId(instanceIdFromErr)\n }\n }\n }\n\n const closeExit = yield* Effect.exit(\n kernel.close({\n timeoutMs:\n typeof options?.closeScopeTimeout === 'number' &&\n Number.isFinite(options.closeScopeTimeout) &&\n options.closeScopeTimeout > 0\n ? options.closeScopeTimeout\n : 1000,\n }),\n )\n\n let ok = Exit.isSuccess(bootExit) && Exit.isSuccess(closeExit)\n let error: SerializableErrorSummary | undefined\n let summary: unknown | undefined\n\n const depsFromBootFailure = Exit.isFailure(bootExit)\n ? parseMissingDependencyFromCause(bootExit.cause as Cause.Cause<unknown>)\n : { missingServices: [], missingConfigKeys: [] }\n\n const missingServices = depsFromBootFailure.missingServices\n const missingConfigKeys = depsFromBootFailure.missingConfigKeys\n\n const closeError = Exit.isFailure(closeExit)\n ? closeExit.cause.reasons.filter(Cause.isDieReason).map((reason) => reason.defect)[0]\n : undefined\n\n if (!Exit.isSuccess(bootExit)) {\n const failure = Option.getOrUndefined(Cause.findErrorOption(bootExit.cause))\n const defect = bootExit.cause.reasons.filter(Cause.isDieReason).map((reason) => reason.defect)[0]\n const base = failure ?? defect ?? bootExit.cause\n\n if (missingServices.length > 0 || missingConfigKeys.length > 0) {\n ok = false\n error = toErrorSummaryWithCode(\n base,\n 'MissingDependency',\n missingServices.length > 0\n ? 'Build-time missing service: provide a Layer mock/implementation via options.layer, or move the dependency access to runtime.'\n : 'Build-time missing config: provide the missing key(s) in buildEnv.config, or add a default value to Config.',\n )\n } else if (\n isRecord(base) &&\n ((base as any).name === 'TrialRunTimeoutError' || (base as any)._tag === 'TrialRunTimeout')\n ) {\n ok = false\n error = toErrorSummaryWithCode(\n base,\n 'TrialRunTimeout',\n 'Trial run timed out: check for Layer/assembly phase blocking (Effect.never / unfinished acquire).',\n )\n } else {\n ok = false\n error = toErrorSummaryWithCode(base, 'RuntimeFailure')\n }\n }\n\n if (Exit.isFailure(closeExit)) {\n const died = closeExit.cause.reasons.filter(Cause.isDieReason).map((reason) => reason.defect)[0]\n const failure = Option.getOrUndefined(Cause.findErrorOption(closeExit.cause))\n const base = died ?? failure ?? closeExit.cause\n\n const closeErrorSummary = (() => {\n const tag = isRecord(base) ? (base as any)._tag : undefined\n if (tag === 'DisposeTimeout') {\n return toErrorSummaryWithCode(\n base,\n 'DisposeTimeout',\n 'Dispose timed out: check for unclosed resource handles, fibers not interrupted, or event listeners not unregistered.',\n )\n }\n return toErrorSummaryWithCode(base, 'RuntimeFailure')\n })()\n\n ok = false\n if (!error) {\n // If boot succeeded but dispose failed, the close error is the primary failure.\n error = closeErrorSummary\n } else {\n // Preserve the primary boot failure (e.g. TrialRunTimeout) but keep dispose failure evidence.\n summary = { __logix: { closeError: closeErrorSummary } }\n }\n }\n\n const environment = buildEnvironmentIr({\n kernelImplementationRef,\n runtimeServicesEvidence,\n buildEnvConfig,\n missingServices,\n missingConfigKeys,\n })\n\n const moduleIdFromRoot =\n typeof (rootImpl.module as any)?.id === 'string' && (rootImpl.module as any).id.length > 0\n ? String((rootImpl.module as any).id)\n : undefined\n\n const reExportCollection = yield* Effect.promise(async () =>\n collectTrialRunReExport({\n collectEvidence: () =>\n collector.exportEvidencePackage({\n maxEvents: options?.maxEvents ?? 1000,\n }),\n collectManifest: () =>\n extractManifest(root as any, {\n includeStaticIr: true,\n budgets: { maxBytes: 200_000 },\n }),\n collectStaticIr: () => exportStaticIr(root as any),\n collectArtifacts: ({ manifest, staticIr }) =>\n collectTrialRunArtifacts({\n exporters: getTrialRunArtifactExporters(rootImpl.module as any),\n ctx: {\n moduleId: moduleIdFromRoot ?? manifest?.moduleId ?? 'unknown',\n manifest,\n staticIr: staticIr as any,\n environment,\n },\n }),\n }),\n )\n\n const report = reExportTrialRunReport({\n base: {\n runId: session.runId,\n ok,\n environment,\n summary,\n error,\n },\n collection: reExportCollection,\n maxEvents: options?.maxEvents ?? 1000,\n budgets: options?.budgets,\n })\n\n return report satisfies TrialRunReport\n })\n","import { ConfigProvider, Effect, Layer } from 'effect'\nimport * as ConstructionGuard from './ConstructionGuard.js'\nimport {\n RuntimeHost,\n type RuntimeHostKind,\n type RuntimeHostService,\n defaultLayer as defaultRuntimeHostLayer,\n make as makeRuntimeHost,\n layer as runtimeHostLayer,\n} from './RuntimeHost.js'\n\nexport type BuildEnvConfigValue = string | number | boolean\n\nexport interface BuildEnvOptions {\n readonly runtimeHost?: RuntimeHostService\n readonly runtimeHostKind?: RuntimeHostKind\n /**\n * Flat key/value config for mocking feature flags / env variables (values are coerced to string).\n */\n readonly config?: Record<string, BuildEnvConfigValue | undefined>\n /**\n * Advanced: inject a ConfigProvider directly (higher priority than config).\n */\n readonly configProvider?: ConfigProvider.ConfigProvider\n}\n\nconst toConfigProviderFromRecord = (\n record: Record<string, BuildEnvConfigValue | undefined> | undefined,\n): ConfigProvider.ConfigProvider => {\n const entries = Object.entries(record ?? {}).flatMap(([k, v]) => {\n if (!k || v === undefined) {\n return []\n }\n return [[k, String(v)] as const]\n })\n return ConfigProvider.fromUnknown(Object.fromEntries(entries))\n}\n\nexport const layer = (options: BuildEnvOptions = {}): Layer.Layer<RuntimeHost, never, never> => {\n const runtimeHost = options.runtimeHost\n ? runtimeHostLayer(options.runtimeHost)\n : options.runtimeHostKind\n ? runtimeHostLayer(makeRuntimeHost(options.runtimeHostKind))\n : defaultRuntimeHostLayer\n\n const configProvider = options.configProvider ? options.configProvider : toConfigProviderFromRecord(options.config)\n\n const config = ConfigProvider.layer(configProvider)\n\n return Layer.mergeAll(runtimeHost, config) as Layer.Layer<RuntimeHost, never, never>\n}\n\nexport const run = <A, E>(\n builder: Effect.Effect<A, E, RuntimeHost>,\n options: BuildEnvOptions = {},\n): Effect.Effect<A, E | ConstructionGuard.ConstructionGuardError, never> =>\n builder.pipe(Effect.provide(layer(options)), ConstructionGuard.guardBuildTime)\n","import { Cause, Effect } from 'effect'\n\nexport interface ConstructionGuardError extends Error {\n readonly _tag: 'ConstructionGuardError'\n readonly kind: 'missing_service' | 'unknown_defect'\n readonly missingService?: string\n readonly hint?: string\n}\n\nexport const makeConstructionGuardError = (options: {\n readonly kind: ConstructionGuardError['kind']\n readonly message: string\n readonly missingService?: string\n readonly hint?: string\n}): ConstructionGuardError =>\n Object.assign(new Error(options.message), {\n _tag: 'ConstructionGuardError',\n kind: options.kind,\n missingService: options.missingService,\n hint: options.hint,\n }) as ConstructionGuardError\n\nconst extractMissingService = (cause: Cause.Cause<unknown>): string | undefined => {\n const candidates = cause.reasons\n .filter((reason) => Cause.isDieReason(reason) || Cause.isFailReason(reason))\n .map((reason) => (Cause.isDieReason(reason) ? reason.defect : reason.error))\n\n for (const candidate of candidates) {\n const message =\n candidate instanceof Error ? candidate.message : typeof candidate === 'string' ? candidate : undefined\n\n if (!message) continue\n\n const match = /Service not found: ([^\\s(]+)/.exec(message)\n if (match?.[1]) return match[1]\n }\n\n return undefined\n}\n\n/**\n * guardBuildTime:\n * - During Build Env/Reflection, catch \"missing service\" defects and convert them into actionable errors.\n * - Preserve other failures/defects as-is (do not swallow business error semantics).\n */\nexport const guardBuildTime = <A, E, R>(\n self: Effect.Effect<A, E, R>,\n): Effect.Effect<A, E | ConstructionGuardError, R> =>\n self.pipe(\n Effect.catchCause((cause): Effect.Effect<never, ConstructionGuardError | E, never> => {\n const missing = extractMissingService(cause)\n if (missing) {\n return Effect.fail(\n makeConstructionGuardError({\n kind: 'missing_service',\n missingService: missing,\n message: `[ConstructionGuardError] Build-time dependency violation: service \"${missing}\" is not available in Build Env.`,\n hint:\n 'Build-time (Reflection) can only depend on a small set of mockable primitives (e.g. Config/RuntimeHost). ' +\n 'Move business service access to runtime (e.g. Trait handler / Logic run section) or isolate it via explicit injection.',\n }),\n )\n }\n return Effect.failCause(cause) as Effect.Effect<never, ConstructionGuardError | E>\n }),\n )\n","import { Layer, ServiceMap } from 'effect'\n\nexport type RuntimeHostKind = 'node' | 'browser' | 'unknown'\n\nexport interface RuntimeHostService {\n readonly kind: RuntimeHostKind\n readonly isNode: boolean\n readonly isBrowser: boolean\n}\n\nconst detectKind = (): RuntimeHostKind => {\n const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'\n\n if (isBrowser) return 'browser'\n\n const isNode = typeof process !== 'undefined' && typeof (process as any)?.versions?.node === 'string'\n\n if (isNode) return 'node'\n\n return 'unknown'\n}\n\nexport const make = (kind: RuntimeHostKind): RuntimeHostService => ({\n kind,\n isNode: kind === 'node',\n isBrowser: kind === 'browser',\n})\n\nexport class RuntimeHost extends ServiceMap.Service<RuntimeHost, RuntimeHostService>()('@logixjs/RuntimeHost') {}\n\nexport const layer = (service: RuntimeHostService): Layer.Layer<RuntimeHost, never, never> =>\n Layer.succeed(RuntimeHost, service)\n\nexport const mock = (kind: RuntimeHostKind): Layer.Layer<RuntimeHost, never, never> => layer(make(kind))\n\nexport const defaultLayer: Layer.Layer<RuntimeHost, never, never> = layer(make(detectKind()))\n","import { Effect, Layer, ManagedRuntime } from 'effect'\nimport type { AnyModuleShape, ModuleImpl } from './core/module.js'\nimport * as AppRuntimeImpl from './AppRuntime.js'\n\n/**\n * Runtime options:\n * - layer: extra top-level Env (e.g. Config / platform services) merged with Root ModuleImpl.layer.\n * - onError: app-level error handler entrypoint used to report uncaught errors at the Runtime level.\n */\nexport interface RuntimeOptions {\n readonly layer?: Layer.Layer<any, never, never>\n readonly onError?: (cause: import('effect').Cause.Cause<unknown>) => Effect.Effect<void>\n}\n\n/**\n * Runtime.make\n *\n * Build an application-level Runtime given a root ModuleImpl:\n *\n * - Use RootImpl.module + RootImpl.layer as the single global module.\n * - Fork RootImpl.processes as long-lived processes within the Runtime scope.\n * - Reuse the existing AppRuntime implementation as the underlying container and expose only ManagedRuntime.\n *\n * Notes:\n * - Uses broad any/never at the type level to avoid complex Env inference here.\n * - Business code only needs to ensure RootImpl.layer and options.layer together can provide the full Env.\n */\nexport const make = (\n rootImpl: ModuleImpl<any, AnyModuleShape, any>,\n options?: RuntimeOptions,\n): ManagedRuntime.ManagedRuntime<any, never> => {\n const appConfig: AppRuntimeImpl.LogixAppConfig<any> = {\n layer: (options?.layer ?? Layer.empty) as Layer.Layer<any, never, never>,\n modules: [AppRuntimeImpl.provide(rootImpl.module, rootImpl.layer as Layer.Layer<any, any, any>)],\n processes: rootImpl.processes ?? [],\n onError: options?.onError,\n }\n\n const app = AppRuntimeImpl.makeApp(appConfig)\n return app.makeRuntime() as ManagedRuntime.ManagedRuntime<any, never>\n}\n","import type { JsonValue } from '../jsonValue.js'\nimport type { SerializableErrorSummary } from '../../runtime/core/errorSummary.js'\n\nexport type ArtifactKey = string\n\nexport const artifactKeySchemaPattern = '^@[^\\\\s/]+\\\\/[^\\\\s@]+@v\\\\d+$' as const\n\nexport const isArtifactKey = (input: unknown): input is ArtifactKey =>\n typeof input === 'string' && /^@[^\\s/]+\\/[^\\s@]+@v\\d+$/.test(input)\n\ntype EnvelopeBase = {\n readonly artifactKey: ArtifactKey\n readonly truncated?: boolean\n readonly budgetBytes?: number\n readonly actualBytes?: number\n readonly digest?: string\n readonly notes?: JsonValue\n}\n\nexport type ArtifactEnvelope =\n | (EnvelopeBase & {\n readonly ok: true\n readonly value: JsonValue\n readonly error?: never\n })\n | (EnvelopeBase & {\n readonly ok: false\n readonly error: SerializableErrorSummary\n readonly value?: never\n })\n\nexport type TrialRunArtifacts = Readonly<Record<ArtifactKey, ArtifactEnvelope>>\n","import { fnv1a32, stableStringify } from '../../digest.js'\nimport type { JsonValue } from '../jsonValue.js'\n\nexport interface JsonValueDigest {\n readonly stableJson: string\n readonly bytes: number\n readonly digest: string\n}\n\nconst utf8ByteLengthString = (text: string): number => {\n if (typeof TextEncoder !== 'undefined') {\n return new TextEncoder().encode(text).length\n }\n return text.length\n}\n\nexport const digestJsonValue = (value: JsonValue): JsonValueDigest => {\n const stableJson = stableStringify(value)\n const bytes = utf8ByteLengthString(stableJson)\n return {\n stableJson,\n bytes,\n digest: `artifact:031:${fnv1a32(stableJson)}`,\n }\n}\n","import type { SerializableErrorSummary } from '../../runtime/core/errorSummary.js'\nimport { toSerializableErrorSummary } from '../../runtime/core/errorSummary.js'\nimport { isJsonValue, type JsonValue } from '../jsonValue.js'\nimport type { ArtifactEnvelope, ArtifactKey, TrialRunArtifacts } from './model.js'\nimport { isArtifactKey } from './model.js'\nimport type { TrialRunArtifactExporter, TrialRunArtifactInspectionContext } from './exporter.js'\nimport { digestJsonValue } from './digest.js'\n\nexport interface TrialRunArtifactsBudgets {\n /**\n * Per-artifact maximum serialized bytes (UTF-8).\n * Default: 50KB.\n */\n readonly maxBytes?: number\n}\n\nexport interface CollectTrialRunArtifactsOptions {\n readonly exporters: ReadonlyArray<TrialRunArtifactExporter>\n readonly ctx: TrialRunArtifactInspectionContext\n readonly budgets?: TrialRunArtifactsBudgets\n}\n\nconst toErrorSummaryWithCode = (cause: unknown, code: string, hint?: string): SerializableErrorSummary => {\n const base = toSerializableErrorSummary(cause).errorSummary\n return {\n name: base.name,\n message: base.message,\n code,\n hint: hint ?? base.hint,\n }\n}\n\nconst defaultArtifactBudgetBytes = 50 * 1024\n\nconst budgetOf = (budgets: TrialRunArtifactsBudgets | undefined): number =>\n typeof budgets?.maxBytes === 'number' && Number.isFinite(budgets.maxBytes) && budgets.maxBytes > 0\n ? budgets.maxBytes\n : defaultArtifactBudgetBytes\n\ntype Collected = {\n readonly artifactKey: ArtifactKey\n readonly envelope: ArtifactEnvelope\n}\n\nconst makeConflictEnvelope = (artifactKey: ArtifactKey, exporterIds: ReadonlyArray<string>): Collected => {\n const ids = Array.from(new Set(exporterIds.map((s) => String(s)).filter((s) => s.length > 0))).sort()\n return {\n artifactKey,\n envelope: {\n artifactKey,\n ok: false,\n error: {\n name: 'ArtifactKeyConflictError',\n message: `[Logix] TrialRun artifact key conflict: ${artifactKey}`,\n code: 'ArtifactKeyConflict',\n hint: ids.length > 0 ? `conflictingExporters=${ids.join(',')}` : undefined,\n },\n },\n }\n}\n\nconst truncateJsonValue = (\n value: JsonValue,\n maxBytes: number,\n): { readonly value: JsonValue; readonly actualBytes: number; readonly digest: string } => {\n const analyzed = digestJsonValue(value)\n const json = analyzed.stableJson\n const bytes = analyzed.bytes\n if (bytes <= maxBytes) {\n return { value, actualBytes: bytes, digest: analyzed.digest }\n }\n\n const previewChars = Math.min(json.length, Math.max(0, Math.min(256, maxBytes)))\n const preview = json.slice(0, previewChars)\n return {\n value: {\n _tag: 'oversized',\n bytes,\n preview,\n },\n actualBytes: bytes,\n digest: analyzed.digest,\n }\n}\n\nexport const collectTrialRunArtifacts = (options: CollectTrialRunArtifactsOptions): TrialRunArtifacts | undefined => {\n const exportersSorted = Array.from(options.exporters).sort((a, b) => {\n const ka = String(a?.artifactKey ?? '')\n const kb = String(b?.artifactKey ?? '')\n if (ka < kb) return -1\n if (ka > kb) return 1\n const ia = String(a?.exporterId ?? '')\n const ib = String(b?.exporterId ?? '')\n return ia < ib ? -1 : ia > ib ? 1 : 0\n })\n\n const conflicts = new Map<ArtifactKey, Array<string>>()\n for (const ex of exportersSorted) {\n const key = ex?.artifactKey\n const id = String(ex?.exporterId ?? '')\n if (!isArtifactKey(key)) {\n continue\n }\n const current = conflicts.get(key)\n if (current) current.push(id)\n else conflicts.set(key, [id])\n }\n\n const conflictKeys = new Set<ArtifactKey>()\n for (const [k, ids] of conflicts) {\n const unique = Array.from(new Set(ids))\n if (unique.length > 1) {\n conflictKeys.add(k)\n }\n }\n\n const maxBytes = budgetOf(options.budgets)\n const collected: Array<Collected> = []\n\n for (const exporter of exportersSorted) {\n const artifactKey = exporter?.artifactKey\n if (!isArtifactKey(artifactKey)) {\n continue\n }\n if (conflictKeys.has(artifactKey)) {\n continue\n }\n\n try {\n const value = exporter.export(options.ctx)\n if (value === undefined) continue\n if (!isJsonValue(value)) {\n collected.push({\n artifactKey,\n envelope: {\n artifactKey,\n ok: false,\n error: toErrorSummaryWithCode(\n new Error(`[Logix] Artifact exporter returned non-JsonValue: ${exporter.exporterId}`),\n 'ArtifactNonSerializable',\n `artifactKey=${artifactKey} exporterId=${exporter.exporterId}`,\n ),\n },\n })\n continue\n }\n\n const truncated = truncateJsonValue(value, maxBytes)\n const envelope: ArtifactEnvelope = {\n artifactKey,\n ok: true,\n value: truncated.value,\n digest: truncated.digest,\n ...(truncated.actualBytes > maxBytes\n ? {\n truncated: true,\n budgetBytes: maxBytes,\n actualBytes: truncated.actualBytes,\n }\n : {\n budgetBytes: maxBytes,\n actualBytes: truncated.actualBytes,\n }),\n }\n\n collected.push({ artifactKey, envelope })\n } catch (e) {\n collected.push({\n artifactKey,\n envelope: {\n artifactKey,\n ok: false,\n error: toErrorSummaryWithCode(\n e,\n 'ArtifactExportFailed',\n `artifactKey=${artifactKey} exporterId=${exporter.exporterId}`,\n ),\n },\n })\n }\n }\n\n for (const conflictKey of Array.from(conflictKeys).sort()) {\n collected.push(makeConflictEnvelope(conflictKey, conflicts.get(conflictKey) ?? []))\n }\n\n if (collected.length === 0) return undefined\n\n collected.sort((a, b) => (a.artifactKey < b.artifactKey ? -1 : a.artifactKey > b.artifactKey ? 1 : 0))\n\n return Object.fromEntries(collected.map((c) => [c.artifactKey, c.envelope])) satisfies TrialRunArtifacts\n}\n","import type { SerializableErrorSummary } from '../runtime/core/errorSummary.js'\nimport { toSerializableErrorSummary } from '../runtime/core/errorSummary.js'\n\nexport type TrialRunReExportField = 'manifest' | 'staticIr' | 'artifacts' | 'evidence'\nexport type TrialRunReExportStage = TrialRunReExportField | 'budget'\nexport type TrialRunReExportStatus = 'ok' | 'partial' | 'recovered' | 'failed'\n\nexport interface TrialRunReportBudgets {\n readonly maxBytes?: number\n}\n\nexport interface TrialRunReExportIssue {\n readonly stage: TrialRunReExportStage\n readonly code: string\n readonly message: string\n readonly hint?: string\n readonly recoverable: boolean\n}\n\nexport interface TrialRunReExportCollection<Manifest, StaticIr, Artifacts, Evidence> {\n readonly manifest?: Manifest\n readonly staticIr?: StaticIr\n readonly artifacts?: Artifacts\n readonly evidence?: Evidence\n readonly issues: ReadonlyArray<TrialRunReExportIssue>\n}\n\nexport interface TrialRunReportBase<Environment> {\n readonly runId: string\n readonly ok: boolean\n readonly environment?: Environment\n readonly summary?: unknown\n readonly error?: SerializableErrorSummary\n}\n\nexport type TrialRunReportShape<Manifest, StaticIr, Artifacts, Environment, Evidence> = TrialRunReportBase<Environment> & {\n readonly manifest?: Manifest\n readonly staticIr?: StaticIr\n readonly artifacts?: Artifacts\n readonly evidence?: Evidence\n}\n\nconst dropOrder: ReadonlyArray<TrialRunReExportField> = ['evidence', 'artifacts', 'staticIr', 'manifest']\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst asPositiveInt = (value: unknown): number | undefined => {\n if (typeof value !== 'number' || !Number.isFinite(value)) return undefined\n const n = Math.floor(value)\n return n > 0 ? n : undefined\n}\n\nconst utf8ByteLength = (value: unknown): number => {\n const json = JSON.stringify(value) ?? 'null'\n if (typeof TextEncoder !== 'undefined') {\n return new TextEncoder().encode(json).length\n }\n return json.length\n}\n\nconst issueFromCause = (args: {\n readonly stage: TrialRunReExportStage\n readonly code: string\n readonly cause: unknown\n readonly hint?: string\n}): TrialRunReExportIssue => {\n const err = toSerializableErrorSummary(args.cause).errorSummary\n return {\n stage: args.stage,\n code: args.code,\n message: err.message,\n hint: args.hint ?? err.hint,\n recoverable: true,\n }\n}\n\nconst collectSafely = <A>(args: {\n readonly stage: TrialRunReExportStage\n readonly code: string\n readonly hint?: string\n readonly issues: Array<TrialRunReExportIssue>\n readonly collect: () => A | undefined\n}): A | undefined => {\n try {\n return args.collect()\n } catch (cause) {\n args.issues.push(\n issueFromCause({\n stage: args.stage,\n code: args.code,\n cause,\n hint: args.hint,\n }),\n )\n return undefined\n }\n}\n\nexport const collectTrialRunReExport = <Manifest, StaticIr, Artifacts, Evidence>(args: {\n readonly collectManifest: () => Manifest | undefined\n readonly collectStaticIr: () => StaticIr | undefined\n readonly collectArtifacts: (input: { readonly manifest?: Manifest; readonly staticIr?: StaticIr }) => Artifacts | undefined\n readonly collectEvidence: () => Evidence | undefined\n}): TrialRunReExportCollection<Manifest, StaticIr, Artifacts, Evidence> => {\n const issues: Array<TrialRunReExportIssue> = []\n\n const evidence = collectSafely({\n stage: 'evidence',\n code: 'EvidenceExportFailed',\n hint: 'Evidence export failed; report keeps runtime status and drops evidence payload.',\n issues,\n collect: args.collectEvidence,\n })\n\n const manifest = collectSafely({\n stage: 'manifest',\n code: 'ManifestExportFailed',\n hint: 'Manifest export failed; report keeps runtime status and continues with remaining artifacts.',\n issues,\n collect: args.collectManifest,\n })\n\n const staticIr = collectSafely({\n stage: 'staticIr',\n code: 'StaticIrExportFailed',\n hint: 'Static IR export failed; report keeps runtime status and continues with remaining artifacts.',\n issues,\n collect: args.collectStaticIr,\n })\n\n const artifacts = collectSafely({\n stage: 'artifacts',\n code: 'ArtifactExportFailed',\n hint: 'Artifact export failed; report keeps runtime status and falls back to base summary/evidence.',\n issues,\n collect: () =>\n args.collectArtifacts({\n manifest,\n staticIr,\n }),\n })\n\n issues.sort((a, b) => (a.stage < b.stage ? -1 : a.stage > b.stage ? 1 : a.code < b.code ? -1 : a.code > b.code ? 1 : 0))\n\n return {\n manifest,\n staticIr,\n artifacts,\n evidence,\n issues,\n }\n}\n\nconst mergeSummaryWithReExport = (args: {\n readonly baseSummary: unknown\n readonly status: TrialRunReExportStatus\n readonly issues: ReadonlyArray<TrialRunReExportIssue>\n readonly maxEvents?: number\n readonly maxBytes?: number\n readonly dropped?: ReadonlyArray<TrialRunReExportField>\n readonly originalBytes?: number\n readonly finalBytes?: number\n}): unknown => {\n const reExport = {\n status: args.status,\n budgets: {\n ...(typeof args.maxEvents === 'number' && Number.isFinite(args.maxEvents) ? { maxEvents: Math.floor(args.maxEvents) } : {}),\n ...(typeof args.maxBytes === 'number' && Number.isFinite(args.maxBytes) ? { maxBytes: Math.floor(args.maxBytes) } : {}),\n },\n issues: args.issues,\n ...(args.dropped && args.dropped.length > 0 ? { dropped: Array.from(args.dropped) } : {}),\n ...(typeof args.originalBytes === 'number' ? { originalBytes: args.originalBytes } : {}),\n ...(typeof args.finalBytes === 'number' ? { finalBytes: args.finalBytes } : {}),\n }\n\n if (isRecord(args.baseSummary)) {\n const prevLogix = isRecord(args.baseSummary.__logix) ? args.baseSummary.__logix : {}\n return {\n ...args.baseSummary,\n __logix: {\n ...prevLogix,\n reExport,\n },\n }\n }\n\n return {\n __logix: {\n reExport,\n },\n }\n}\n\nconst fitReportByBudget = <Report extends { readonly runId: string; readonly ok: boolean }>(\n report: Report,\n maxBytes: number | undefined,\n): {\n readonly adjusted: Report\n readonly dropped: ReadonlyArray<TrialRunReExportField>\n readonly originalBytes?: number\n readonly finalBytes?: number\n readonly recovered: boolean\n readonly failed: boolean\n} => {\n if (maxBytes === undefined) {\n return {\n adjusted: report,\n dropped: [],\n recovered: false,\n failed: false,\n }\n }\n\n const originalBytes = utf8ByteLength(report)\n if (originalBytes <= maxBytes) {\n return {\n adjusted: report,\n dropped: [],\n originalBytes,\n finalBytes: originalBytes,\n recovered: false,\n failed: false,\n }\n }\n\n const dropped: Array<TrialRunReExportField> = []\n const working: Record<string, unknown> = { ...(report as unknown as Record<string, unknown>) }\n\n for (const field of dropOrder) {\n if (working[field] === undefined) continue\n delete working[field]\n dropped.push(field)\n const bytes = utf8ByteLength(working)\n if (bytes <= maxBytes) {\n return {\n adjusted: working as Report,\n dropped,\n originalBytes,\n finalBytes: bytes,\n recovered: true,\n failed: false,\n }\n }\n }\n\n const finalBytes = utf8ByteLength(working)\n\n return {\n adjusted: working as Report,\n dropped,\n originalBytes,\n finalBytes,\n recovered: false,\n failed: true,\n }\n}\n\nconst dedupeIssues = (issues: ReadonlyArray<TrialRunReExportIssue>): ReadonlyArray<TrialRunReExportIssue> => {\n const out: TrialRunReExportIssue[] = []\n const seen = new Set<string>()\n for (const issue of issues) {\n const key = `${issue.stage}:${issue.code}`\n if (seen.has(key)) continue\n seen.add(key)\n out.push(issue)\n }\n out.sort((a, b) => (a.stage < b.stage ? -1 : a.stage > b.stage ? 1 : a.code < b.code ? -1 : a.code > b.code ? 1 : 0))\n return out\n}\n\nexport const summarizeTrialRunReExport = (args: {\n readonly baseSummary: unknown\n readonly issues: ReadonlyArray<TrialRunReExportIssue>\n readonly maxEvents?: number\n readonly maxBytes?: number\n readonly dropped?: ReadonlyArray<TrialRunReExportField>\n readonly originalBytes?: number\n readonly finalBytes?: number\n readonly status: TrialRunReExportStatus\n}): unknown =>\n mergeSummaryWithReExport({\n baseSummary: args.baseSummary,\n status: args.status,\n issues: args.issues,\n maxEvents: args.maxEvents,\n maxBytes: args.maxBytes,\n dropped: args.dropped,\n originalBytes: args.originalBytes,\n finalBytes: args.finalBytes,\n })\n\nexport const reExportTrialRunReport = <Manifest, StaticIr, Artifacts, Environment, Evidence>(args: {\n readonly base: TrialRunReportBase<Environment>\n readonly collection: TrialRunReExportCollection<Manifest, StaticIr, Artifacts, Evidence>\n readonly maxEvents?: number\n readonly budgets?: TrialRunReportBudgets\n}): TrialRunReportShape<Manifest, StaticIr, Artifacts, Environment, Evidence> => {\n const maxBytes = asPositiveInt(args.budgets?.maxBytes)\n\n const draft: TrialRunReportShape<Manifest, StaticIr, Artifacts, Environment, Evidence> = {\n runId: args.base.runId,\n ok: args.base.ok,\n manifest: args.collection.manifest,\n staticIr: args.collection.staticIr,\n artifacts: args.collection.artifacts,\n environment: args.base.environment,\n evidence: args.collection.evidence,\n summary: args.base.summary,\n error: args.base.error,\n }\n\n const budgetFit = fitReportByBudget(draft, maxBytes)\n\n const issues: Array<TrialRunReExportIssue> = [...args.collection.issues]\n\n if (maxBytes !== undefined && typeof budgetFit.originalBytes === 'number' && budgetFit.originalBytes > maxBytes) {\n issues.push(\n budgetFit.failed\n ? {\n stage: 'budget',\n code: 'Oversized',\n message: `[Logix] TrialRunReport exceeded maxBytes (${budgetFit.originalBytes} > ${maxBytes})`,\n hint: 'Reduce maxEvents or budgets.maxBytes, or split manifest/evidence artifacts in CI.',\n recoverable: false,\n }\n : {\n stage: 'budget',\n code: 'ReExportBudgetRecovered',\n message: `[Logix] TrialRunReport exceeded maxBytes (${budgetFit.originalBytes} > ${maxBytes}) and was slimmed by dropping heavy exports.`,\n hint: 'Increase budgets.maxBytes to retain more reflection/evidence payloads.',\n recoverable: true,\n },\n )\n }\n\n const issuesDeduped = dedupeIssues(issues)\n\n const status: TrialRunReExportStatus = budgetFit.failed\n ? 'failed'\n : budgetFit.recovered\n ? 'recovered'\n : issuesDeduped.length > 0\n ? 'partial'\n : 'ok'\n\n const summary = summarizeTrialRunReExport({\n baseSummary: args.base.summary,\n issues: issuesDeduped,\n maxEvents: args.maxEvents,\n maxBytes,\n dropped: budgetFit.dropped,\n originalBytes: budgetFit.originalBytes,\n finalBytes: budgetFit.finalBytes,\n status,\n })\n\n let error = args.base.error\n if (budgetFit.failed && !error) {\n error = {\n message: `[Logix] TrialRunReport exceeded maxBytes (${budgetFit.originalBytes ?? 'unknown'} > ${maxBytes})`,\n code: 'Oversized',\n hint: 'Reduce maxEvents or budgets.maxBytes, or split manifest/evidence artifacts in CI.',\n }\n }\n\n const report = {\n ...budgetFit.adjusted,\n ok: budgetFit.failed ? false : args.base.ok,\n summary,\n ...(error ? { error } : {}),\n } satisfies TrialRunReportShape<Manifest, StaticIr, Artifacts, Environment, Evidence>\n\n if (maxBytes !== undefined) {\n const serializedBytes = utf8ByteLength(report)\n if (serializedBytes > maxBytes) {\n const overflowIssue: TrialRunReExportIssue = {\n stage: 'budget',\n code: 'Oversized',\n message: `[Logix] TrialRunReport exceeded maxBytes (${serializedBytes} > ${maxBytes})`,\n hint: 'Reduce maxEvents or budgets.maxBytes, or split manifest/evidence artifacts in CI.',\n recoverable: false,\n }\n\n const fallbackIssues = dedupeIssues([...issuesDeduped, overflowIssue])\n\n const fallbackSummary = summarizeTrialRunReExport({\n baseSummary: undefined,\n issues: fallbackIssues,\n maxEvents: args.maxEvents,\n maxBytes,\n dropped: ['manifest', 'staticIr', 'artifacts', 'evidence'],\n originalBytes: budgetFit.originalBytes ?? serializedBytes,\n finalBytes: serializedBytes,\n status: 'failed',\n })\n\n const fallbackError: SerializableErrorSummary = error ?? {\n message: `[Logix] TrialRunReport exceeded maxBytes (${serializedBytes} > ${maxBytes})`,\n code: 'Oversized',\n hint: 'Reduce maxEvents or budgets.maxBytes, or split manifest/evidence artifacts in CI.',\n }\n\n return {\n runId: args.base.runId,\n ok: false,\n environment: args.base.environment,\n summary: fallbackSummary,\n error: fallbackError,\n }\n }\n }\n\n return report\n}\n","import { Effect, Exit, Layer, Scope } from 'effect'\nimport type { EvidencePackage, EvidencePackageSource } from './evidence.js'\nimport { makeEvidenceCollector, evidenceCollectorLayer } from './evidenceCollector.js'\nimport { makeRunSession, runSessionLayer, type RunSession, type RunId } from './runSession.js'\nimport {\n appendSinks,\n diagnosticsLevel,\n type DiagnosticsLevel,\n type Sink as DebugSink,\n} from '../runtime/core/DebugSink.js'\nimport * as RuntimeKernel from '../runtime/core/RuntimeKernel.js'\nimport type { ConvergeStaticIrCollector } from '../runtime/core/ConvergeStaticIrCollector.js'\nimport { appendConvergeStaticIrCollectors } from '../runtime/core/ConvergeStaticIrCollector.js'\nexport * from './trialRunModule.js'\n\nexport interface TrialRunOptions {\n readonly runId?: RunId\n readonly source?: EvidencePackageSource\n readonly startedAt?: number\n readonly diagnosticsLevel?: DiagnosticsLevel\n readonly maxEvents?: number\n readonly layer?: Layer.Layer<any, any, any>\n readonly runtimeServicesInstanceOverrides?: RuntimeKernel.RuntimeServicesOverrides\n}\n\nexport interface TrialRunResult<A, E> {\n readonly session: RunSession\n readonly exit: Exit.Exit<A, E>\n readonly evidence: EvidencePackage\n}\n\nconst defaultHost = (): string => {\n if (typeof window !== 'undefined' && typeof document !== 'undefined') return 'browser'\n return 'node'\n}\n\nexport const trialRun = <A, E, R>(\n program: Effect.Effect<A, E, R>,\n options?: TrialRunOptions,\n): Effect.Effect<TrialRunResult<A, E>, never, R> =>\n Effect.gen(function* () {\n const session = makeRunSession({\n runId: options?.runId,\n source: options?.source ?? { host: defaultHost(), label: 'trial-run' },\n startedAt: options?.startedAt,\n })\n\n const collector = makeEvidenceCollector(session)\n\n const convergeCollector: ConvergeStaticIrCollector = {\n register: (ir) => {\n collector.registerConvergeStaticIr(ir)\n },\n }\n\n const sinksLayer = appendSinks([collector.debugSink as unknown as DebugSink])\n const diagnosticsLayer = diagnosticsLevel(options?.diagnosticsLevel ?? 'light')\n const convergeLayer = appendConvergeStaticIrCollectors([convergeCollector])\n const collectorLayer = evidenceCollectorLayer(collector)\n const sessionLayer = runSessionLayer(session)\n\n const overridesLayer =\n options?.runtimeServicesInstanceOverrides != null\n ? (Layer.succeed(\n RuntimeKernel.RuntimeServicesInstanceOverridesTag,\n options.runtimeServicesInstanceOverrides,\n ) as Layer.Layer<any, never, never>)\n : (Layer.empty as Layer.Layer<any, never, never>)\n\n const trialLayer = Layer.mergeAll(\n options?.layer ?? (Layer.empty as unknown as Layer.Layer<any, any, any>),\n sessionLayer,\n collectorLayer,\n overridesLayer,\n diagnosticsLayer,\n sinksLayer,\n convergeLayer,\n ) as Layer.Layer<any, never, any>\n\n const scope = yield* Scope.make()\n\n const exit = yield* Effect.exit(program).pipe(Effect.provideService(Scope.Scope, scope), Effect.provide(trialLayer))\n\n yield* Scope.close(scope, exit)\n\n const evidence = collector.exportEvidencePackage({\n maxEvents: options?.maxEvents,\n })\n\n return { session, exit, evidence } satisfies TrialRunResult<A, E>\n })\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAM,WAAW,CAAC,UAChB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAErE,IAAM,eAAe,CAAC,UACpB,SAAS,KAAK,KAAK,MAAM,SAAS,gBAAgB,SAAS,MAAM,MAAM;AAEzE,IAAM,kBAAkB,CAAC,UAA2B;AAClD,MAAI,aAAa,KAAK,GAAG;AACvB,UAAM,KAAM,MAAM,OAAe;AACjC,WAAO,OAAO,OAAO,YAAY,GAAG,SAAS,IAAI,KAAK;AAAA,EACxD;AAEA,MAAI,SAAS,KAAK,GAAG;AACnB,UAAM,KAAK,MAAM;AACjB,QAAI,OAAO,OAAO,YAAY,GAAG,SAAS,EAAG,QAAO;AACpD,UAAM,MAAO,MAAc;AAC3B,QAAI,QAAQ,OAAO,QAAQ,YAAY,OAAO,QAAQ,aAAa;AACjE,YAAM,QAAS,IAAY;AAC3B,UAAI,OAAO,UAAU,YAAY,MAAM,SAAS,EAAG,QAAO;AAAA,IAC5D;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAM,mBAAmB,CAAC,UAA4B;AACpD,MAAI,aAAa,KAAK,EAAG,QAAO,MAAM;AACtC,MAAI,SAAS,KAAK,KAAM,MAAc,IAAK,QAAQ,MAAc;AACjE,SAAO;AACT;AAEO,IAAMA,kBAAiB,CAAC,WAA0C;AACvE,QAAM,MAAM,iBAAiB,MAAM;AACnC,MAAI,CAAC,IAAK,QAAO;AAEjB,QAAM,UAAU,uBAAuB,GAAG;AAC1C,MAAI,CAAC,QAAS,QAAO;AAErB,SAAO,eAAyB;AAAA,IAC9B;AAAA,IACA,UAAU,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACH;;;AChDA,SAAS,cAAc;AAmEvB,IAAMC,YAAW,CAAC,UAChB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAErE,IAAMC,gBAAe,CAAC,UACpBD,UAAS,KAAK,KAAK,MAAM,SAAS,gBAAgBA,UAAS,MAAM,MAAM;AAEzE,IAAME,mBAAkB,CAAC,UAA2B;AAClD,MAAID,cAAa,KAAK,GAAG;AACvB,UAAM,KAAM,MAAM,OAAe;AACjC,WAAO,OAAO,OAAO,YAAY,GAAG,SAAS,IAAI,KAAK;AAAA,EACxD;AAEA,MAAID,UAAS,KAAK,GAAG;AACnB,UAAM,KAAK,MAAM;AACjB,QAAI,OAAO,OAAO,YAAY,GAAG,SAAS,EAAG,QAAO;AACpD,UAAM,MAAO,MAAc;AAC3B,QAAI,QAAQ,OAAO,QAAQ,YAAY,OAAO,QAAQ,aAAa;AACjE,YAAM,QAAS,IAAY;AAC3B,UAAI,OAAO,UAAU,YAAY,MAAM,SAAS,EAAG,QAAO;AAAA,IAC5D;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAM,oBAAoB,CAAC,UAA0C;AACnE,QAAM,MAAMC,cAAa,KAAK,IAAK,MAAM,SAAkB,OAAe;AAC1E,QAAM,YAAY,KAAK,OAAO;AAC9B,MAAI,CAACD,UAAS,SAAS,EAAG,QAAO,CAAC;AAClC,SAAO,OAAO,KAAK,SAAS,EAAE,KAAK;AACrC;AAIA,IAAM,mBAAmB,CAAC,UAA0C;AAClE,MAAI,CAACA,UAAS,KAAK,EAAG,QAAO;AAC7B,QAAM,OAAQ,MAAc;AAC5B,QAAM,OAAQ,MAAc;AAC5B,QAAM,SAAU,MAAc;AAC9B,MAAI,OAAO,SAAS,YAAY,KAAK,WAAW,EAAG,QAAO;AAC1D,MAAI,OAAO,SAAS,YAAY,CAAC,OAAO,UAAU,IAAI,KAAK,OAAO,EAAG,QAAO;AAC5E,MAAI,OAAO,WAAW,YAAY,CAAC,OAAO,UAAU,MAAM,KAAK,SAAS,EAAG,QAAO;AAClF,SAAO,EAAE,MAAM,MAAM,OAAO;AAC9B;AAEA,IAAM,qBAAqB,CAAC,UAA0C;AACpE,MAAI,CAAC,SAAU,OAAO,UAAU,YAAY,OAAO,UAAU,WAAa,QAAO;AACjF,SAAO,iBAAkB,MAAc,MAAM;AAC/C;AAEA,IAAM,iBAAiB,CAAC,UAAwD;AAC9E,QAAM,MAAMC,cAAa,KAAK,IAAK,MAAM,SAAkB,OAAe;AAC1E,QAAM,YAAY,KAAK,OAAO;AAC9B,MAAI,CAACD,UAAS,SAAS,EAAG,QAAO,CAAC;AAElC,QAAM,eAAe,cAAc,KAAK;AACxC,QAAM,WAAWA,UAAS,KAAK,QAAQ,IAAK,IAAI,WAAuC;AAEvF,QAAM,aAAa,OAAO,KAAK,SAAS,EAAE,KAAK;AAE/C,QAAM,MAAmC,CAAC;AAC1C,aAAW,aAAa,YAAY;AAClC,UAAM,QAAQ,UAAU,SAAS;AACjC,UAAM,SAAS,mBAAmB,KAAK,KAAK;AAC5C,UAAM,cACG,cAAc,KAAK,KAAK,OAAO,SAAU,MAAgC,MAAM,IACjF,MAAgC,WAAW,OAAO,OACjD,SACA,YACF;AAEN,UAAM,iBACJ,YAAY,OAAO,SAAS,SAAS,MAAM,aAAc,EAAE,MAAM,WAAW,IAAc;AAE5F,QAAI,KAAK;AAAA,MACP;AAAA,MACA,SAAS,EAAE,MAAM,YAAY;AAAA,MAC7B,GAAI,iBAAiB,EAAE,eAAe,IAAI,CAAC;AAAA,MAC3C,GAAI,SAAS,EAAE,OAAO,IAAI,CAAC;AAAA,IAC7B,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEA,IAAM,0BAA0B,uBAAO,IAAI,+BAA+B;AAE1E,IAAM,iBAAiB,CAAC,UAAoE;AAC1F,QAAM,MAAMC,cAAa,KAAK,IAAK,MAAM,SAAkB,OAAe;AAC1E,QAAM,YAAY,KAAK,OAAO;AAC9B,MAAI,CAACD,UAAS,SAAS,EAAG,QAAO;AAEjC,QAAM,aAAc,MAAc,uBAAuB;AACzD,MAAI,CAACA,UAAS,UAAU,EAAG,QAAO;AAElC,QAAM,SAAS,cAAc,KAAK;AAElC,QAAM,cAAc;AACpB,QAAM,aAAa,oBAAI,QAAyC;AAChE,MAAI,iBAAiB;AAErB,QAAM,MAAmC,CAAC;AAE1C,aAAW,aAAa,OAAO,KAAK,UAAU,EAAE,KAAK,GAAG;AACtD,QAAI,EAAE,aAAa,WAAY;AAE/B,UAAM,WAAY,WAAmB,SAAS;AAC9C,QAAI,CAAC,MAAM,QAAQ,QAAQ,EAAG;AAE9B,eAAW,WAAW,UAAU;AAC9B,UAAI,OAAO,YAAY,WAAY;AAEnC,UAAI,YAAY,WAAW,IAAI,OAAO;AACtC,UAAI,CAAC,WAAW;AACd,0BAAkB;AAClB,oBAAY,IAAI,cAAc;AAC9B,mBAAW,IAAI,SAAS,SAAS;AAAA,MACnC;AAEA,YAAM,YAAY,GAAG,WAAW,KAAK,SAAS;AAE9C,UAAI,KAAK;AAAA,QACP;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,GAAI,SAAS,EAAE,OAAO,IAAI,CAAC;AAAA,MAC7B,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,UAAuC,CAAC;AAC9C,aAAW,QAAQ,KAAK;AACtB,UAAM,MAAM,GAAG,KAAK,SAAS,KAAS,KAAK,SAAS;AACpD,QAAI,KAAK,IAAI,GAAG,EAAG;AACnB,SAAK,IAAI,GAAG;AACZ,YAAQ,KAAK,IAAI;AAAA,EACnB;AAEA,UAAQ;AAAA,IAAK,CAAC,GAAG,MACf,EAAE,YAAY,EAAE,YACZ,KACA,EAAE,YAAY,EAAE,YACd,IACA,EAAE,YAAY,EAAE,YACd,KACA,EAAE,YAAY,EAAE,YACd,IACA;AAAA,EACZ;AACA,SAAO,QAAQ,SAAS,IAAI,UAAU;AACxC;AAEA,IAAM,oBAAoB,CAAC,UAAsD;AAC/E,MAAI,CAACA,UAAS,KAAK,EAAG,QAAO;AAC7B,QAAM,UAAW,MAAc;AAC/B,MAAI,CAACA,UAAS,OAAO,EAAG,QAAO;AAC/B,SAAO,OAAO,KAAK,OAAO,EAAE,KAAK;AACnC;AAEA,IAAM,gBAAgB,CAAC,UAAyD;AAC9E,MAAI,CAACA,UAAS,KAAK,EAAG,QAAO;AAC7B,QAAM,MAAO,MAAc;AAC3B,SAAO,iBAAiB,KAAK,MAAM;AACrC;AAEA,IAAM,cAAc,CAAC,UAA0D;AAC7E,MAAI,CAACA,UAAS,KAAK,EAAG,QAAO;AAC7B,QAAM,OAAQ,MAAc;AAC5B,MAAI,CAACA,UAAS,IAAI,EAAG,QAAO;AAE5B,QAAM,MAAiC,CAAC;AACxC,aAAW,OAAO,OAAO,KAAK,IAAI,EAAE,KAAK,GAAG;AAC1C,UAAM,QAAQ,KAAK,GAAG;AACtB,QAAI,YAAY,KAAK,GAAG;AACtB,UAAI,GAAG,IAAI;AAAA,IACb;AAAA,EACF;AACA,SAAO,OAAO,KAAK,GAAG,EAAE,SAAS,IAAI,MAAM;AAC7C;AAEA,IAAM,kBAAkB,uBAAO,IAAI,uBAAuB;AAE1D,IAAM,oBAAoB,CAAC,UAAuE;AAChG,MAAI,CAACA,UAAS,KAAK,EAAG,QAAO;AAC7B,QAAM,WAAY,MAAc,eAAe;AAC/C,QAAM,UAAU,UAAU;AAC1B,MAAI,CAAC,MAAM,QAAQ,OAAO,EAAG,QAAO;AAEpC,QAAM,MAAsC,CAAC;AAC7C,aAAW,QAAQ,SAAS;AAC1B,QAAI,CAACA,UAAS,IAAI,EAAG;AACrB,UAAM,OAAO,KAAK;AAClB,UAAM,KAAK,KAAK;AAChB,QAAI,OAAO,SAAS,YAAY,KAAK,WAAW,EAAG;AACnD,QAAI,OAAO,OAAO,YAAY,GAAG,WAAW,EAAG;AAE/C,UAAM,UAAU,KAAK,YAAY,OAAO,OAAO;AAC/C,UAAM,OAAO,OAAO,KAAK,SAAS,WAAW,KAAK,OAAO;AACzD,QAAI,KAAK,EAAE,MAAM,IAAI,SAAS,KAAK,CAAC;AAAA,EACtC;AAEA,MAAI,KAAK,CAAC,GAAG,MAAO,EAAE,KAAK,EAAE,KAAK,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,IAAI,CAAE;AACxG,SAAO,IAAI,SAAS,IAAI,MAAM;AAChC;AAaA,IAAM,WAAW,CAAC,SAA6B,gBAAgB,QAAQ,gBAAgB,IAAI,CAAC,CAAC;AAE7F,IAAM,iBAAiB,CAAC,UAA2B;AACjD,QAAM,OAAO,KAAK,UAAU,KAAK;AACjC,MAAI,OAAO,gBAAgB,aAAa;AACtC,WAAO,IAAI,YAAY,EAAE,OAAO,IAAI,EAAE;AAAA,EACxC;AACA,SAAO,KAAK;AACd;AAEA,IAAM,gBAAgB,CAAC,UAA0B,aAAqC;AACpF,QAAM,gBAAgB,eAAe,QAAQ;AAC7C,MAAI,iBAAiB,SAAU,QAAO;AAEtC,QAAM,UAAyB,CAAC;AAChC,QAAM,kBAAiC,CAAC;AAExC,QAAM,aAAa,OAAkB;AAAA,IACnC,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,aAAa,CAACG,UAAyC;AAC3D,UAAM,OAAkC;AAAA,MACtC,SAAS,WAAW;AAAA,IACtB;AACA,WAAO,EAAE,GAAGA,OAAM,KAAK;AAAA,EACzB;AAEA,MAAI,OAAuB,WAAW,QAAQ;AAE9C,QAAM,qBAAqB,CAAC,SAAuB;AACjD,QAAI,CAAC,gBAAgB,SAAS,IAAI,GAAG;AACnC,sBAAgB,KAAK,IAAI;AAAA,IAC3B;AAAA,EACF;AAEA,QAAM,YAAY,CAAC,UAAsC;AACvD,QAAK,KAAa,KAAK,MAAM,QAAW;AACtC,cAAQ,KAAK,OAAO,KAAK,CAAC;AAC1B,aAAO,WAAW,EAAE,GAAI,MAAc,CAAC,KAAK,GAAG,OAAU,CAAC;AAAA,IAC5D;AAAA,EACF;AAGA,YAAU,MAAM;AAChB,MAAI,eAAe,IAAI,KAAK,SAAU,QAAO;AAE7C,YAAU,QAAQ;AAClB,MAAI,eAAe,IAAI,KAAK,SAAU,QAAO;AAE7C,YAAU,UAAU;AACpB,MAAI,eAAe,IAAI,KAAK,SAAU,QAAO;AAE7C,YAAU,YAAY;AACtB,MAAI,eAAe,IAAI,KAAK,SAAU,QAAO;AAE7C,YAAU,YAAY;AACtB,MAAI,eAAe,IAAI,KAAK,SAAU,QAAO;AAE7C,YAAU,SAAS;AACnB,MAAI,eAAe,IAAI,KAAK,SAAU,QAAO;AAG7C,QAAM,uBAAuB,MAAY;AACvC,UAAM,QAAQ,KAAK,QAAQ;AAC3B,QAAI,SAAS,EAAG;AAGhB,QAAI,KAAK;AACT,QAAI,KAAK;AACT,QAAI,OAAO;AAEX,WAAO,MAAM,IAAI;AACf,YAAM,MAAM,KAAK,OAAO,KAAK,MAAM,CAAC;AACpC,YAAM,YAAY,WAAW;AAAA,QAC3B,GAAG;AAAA,QACH,SAAS,KAAK,QAAQ,MAAM,GAAG,GAAG;AAAA,QAClC,YAAY,KAAK,WAAW,MAAM,GAAG,GAAG;AAAA,MAC1C,CAAC;AACD,UAAI,eAAe,SAAS,KAAK,UAAU;AACzC,eAAO;AACP,aAAK,MAAM;AAAA,MACb,OAAO;AACL,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AAEA,QAAI,OAAO,OAAO;AAChB,yBAAmB,SAAS;AAC5B,yBAAmB,YAAY;AAC/B,aAAO,WAAW;AAAA,QAChB,GAAG;AAAA,QACH,SAAS,KAAK,QAAQ,MAAM,GAAG,IAAI;AAAA,QACnC,YAAY,KAAK,WAAW,MAAM,GAAG,IAAI;AAAA,MAC3C,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO,eAAe,IAAI,IAAI,UAAU;AACtC,UAAM,YAAY,KAAK,QAAQ;AAC/B,yBAAqB;AACrB,QAAI,KAAK,QAAQ,WAAW,WAAW;AACrC;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,kBAAkB,CAAC,QAAiB,YAAqD;AACpG,QAAM,kBAAkB;AACxB,QAAM,WAAWD,iBAAgB,MAAM;AACvC,QAAM,aAAa,kBAAkB,MAAM;AAC3C,QAAM,UAAU,eAAe,MAAM;AACrC,QAAM,UAAU,eAAe,MAAM;AAErC,QAAM,aAAa,kBAAkB,MAAM;AAC3C,QAAM,aAAa,kBAAkB,MAAM;AAC3C,QAAM,SAAS,cAAc,MAAM;AACnC,QAAM,OAAO,YAAY,MAAM;AAE/B,QAAM,WAAW,SAAS,kBAAkBE,gBAAe,MAAM,IAAI;AAErE,QAAM,aAAyB;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,UAAU;AAAA,EAC5B;AAEA,QAAM,SAAS,SAAS,UAAU;AAElC,QAAM,WAA2B;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,WAAW,SAAS,SAAS;AACnC,MAAI,OAAO,aAAa,YAAY,OAAO,SAAS,QAAQ,KAAK,WAAW,GAAG;AAC7E,WAAO,cAAc,UAAU,QAAQ;AAAA,EACzC;AAEA,SAAO;AACT;;;AC1bA,IAAM,qBAAqB,uBAAO,IAAI,wCAAwC;AAEvE,IAAM,mCAAmC,CAAC,KAAc,aAA6C;AAC1G,MAAI,CAAC,OAAQ,OAAO,QAAQ,YAAY,OAAO,QAAQ,YAAa;AAClE,UAAM,IAAI,MAAM,8DAA8D;AAAA,EAChF;AAEA,QAAM,UAAY,IAAY,kBAAkB,KAAK,CAAC;AACtD,QAAM,OAAO,MAAM,QAAQ,OAAO,IAAI,CAAC,GAAG,SAAS,QAAQ,IAAI,CAAC,QAAQ;AACvE,EAAC,IAAY,kBAAkB,IAAI;AACtC;AAEO,IAAM,+BAA+B,CAAC,QAA0D;AACrG,MAAI,CAAC,OAAQ,OAAO,QAAQ,YAAY,OAAO,QAAQ,YAAa;AAClE,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,UAAW,IAAY,kBAAkB;AAC/C,MAAI,CAAC,MAAM,QAAQ,OAAO,EAAG,QAAO,CAAC;AACrC,SAAO,QAAQ,OAAO,CAAC,MAAqC,KAAK,OAAO,MAAM,QAAQ;AACxF;;;ACtBA,SAAS,SAAAC,QAAO,UAAAC,SAAQ,MAAM,OAAO,SAAAC,QAAO,cAAc;;;ACA1D;AAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;AAAA,SAAS,gBAAgB,UAAAC,SAAQ,SAAAC,cAAa;;;ACA9C;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS,OAAO,cAAc;AASvB,IAAM,6BAA6B,CAAC,YAMzC,OAAO,OAAO,IAAI,MAAM,QAAQ,OAAO,GAAG;AAAA,EACxC,MAAM;AAAA,EACN,MAAM,QAAQ;AAAA,EACd,gBAAgB,QAAQ;AAAA,EACxB,MAAM,QAAQ;AAChB,CAAC;AAEH,IAAM,wBAAwB,CAAC,UAAoD;AACjF,QAAM,aAAa,MAAM,QACtB,OAAO,CAAC,WAAW,MAAM,YAAY,MAAM,KAAK,MAAM,aAAa,MAAM,CAAC,EAC1E,IAAI,CAAC,WAAY,MAAM,YAAY,MAAM,IAAI,OAAO,SAAS,OAAO,KAAM;AAE7E,aAAW,aAAa,YAAY;AAClC,UAAM,UACJ,qBAAqB,QAAQ,UAAU,UAAU,OAAO,cAAc,WAAW,YAAY;AAE/F,QAAI,CAAC,QAAS;AAEd,UAAM,QAAQ,+BAA+B,KAAK,OAAO;AACzD,QAAI,QAAQ,CAAC,EAAG,QAAO,MAAM,CAAC;AAAA,EAChC;AAEA,SAAO;AACT;AAOO,IAAM,iBAAiB,CAC5B,SAEA,KAAK;AAAA,EACH,OAAO,WAAW,CAAC,UAAmE;AACpF,UAAM,UAAU,sBAAsB,KAAK;AAC3C,QAAI,SAAS;AACX,aAAO,OAAO;AAAA,QACZ,2BAA2B;AAAA,UACzB,MAAM;AAAA,UACN,gBAAgB;AAAA,UAChB,SAAS,sEAAsE,OAAO;AAAA,UACtF,MACE;AAAA,QAEJ,CAAC;AAAA,MACH;AAAA,IACF;AACA,WAAO,OAAO,UAAU,KAAK;AAAA,EAC/B,CAAC;AACH;;;ACjEF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS,OAAO,kBAAkB;AAUlC,IAAM,aAAa,MAAuB;AACxC,QAAM,YAAY,OAAO,WAAW,eAAe,OAAO,aAAa;AAEvE,MAAI,UAAW,QAAO;AAEtB,QAAM,SAAS,OAAO,YAAY,eAAe,OAAQ,SAAiB,UAAU,SAAS;AAE7F,MAAI,OAAQ,QAAO;AAEnB,SAAO;AACT;AAEO,IAAM,OAAO,CAAC,UAA+C;AAAA,EAClE;AAAA,EACA,QAAQ,SAAS;AAAA,EACjB,WAAW,SAAS;AACtB;AAEO,IAAM,cAAN,cAA0B,WAAW,QAAyC,EAAE,sBAAsB,EAAE;AAAC;AAEzG,IAAM,QAAQ,CAAC,YACpB,MAAM,QAAQ,aAAa,OAAO;AAE7B,IAAM,OAAO,CAAC,SAAkE,MAAM,KAAK,IAAI,CAAC;AAEhG,IAAM,eAAuD,MAAM,KAAK,WAAW,CAAC,CAAC;;;AFT5F,IAAM,6BAA6B,CACjC,WACkC;AAClC,QAAM,UAAU,OAAO,QAAQ,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM;AAC/D,QAAI,CAAC,KAAK,MAAM,QAAW;AACzB,aAAO,CAAC;AAAA,IACV;AACA,WAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAU;AAAA,EACjC,CAAC;AACD,SAAO,eAAe,YAAY,OAAO,YAAY,OAAO,CAAC;AAC/D;AAEO,IAAMC,SAAQ,CAAC,UAA2B,CAAC,MAA8C;AAC9F,QAAM,cAAc,QAAQ,cACxB,MAAiB,QAAQ,WAAW,IACpC,QAAQ,kBACN,MAAiB,KAAgB,QAAQ,eAAe,CAAC,IACzD;AAEN,QAAM,iBAAiB,QAAQ,iBAAiB,QAAQ,iBAAiB,2BAA2B,QAAQ,MAAM;AAElH,QAAM,SAAS,eAAe,MAAM,cAAc;AAElD,SAAOC,OAAM,SAAS,aAAa,MAAM;AAC3C;AAEO,IAAM,MAAM,CACjB,SACA,UAA2B,CAAC,MAE5B,QAAQ,KAAKC,QAAO,QAAQF,OAAM,OAAO,CAAC,GAAqB,cAAc;;;AGxD/E,SAAiB,SAAAG,cAA6B;AA2BvC,IAAMC,QAAO,CAClB,UACA,YAC8C;AAC9C,QAAM,YAAgD;AAAA,IACpD,OAAQ,SAAS,SAASC,OAAM;AAAA,IAChC,SAAS,CAAgB,QAAQ,SAAS,QAAQ,SAAS,KAAmC,CAAC;AAAA,IAC/F,WAAW,SAAS,aAAa,CAAC;AAAA,IAClC,SAAS,SAAS;AAAA,EACpB;AAEA,QAAM,MAAqB,QAAQ,SAAS;AAC5C,SAAO,IAAI,YAAY;AACzB;;;ACjCO,IAAM,gBAAgB,CAAC,UAC5B,OAAO,UAAU,YAAY,2BAA2B,KAAK,KAAK;;;ACCpE,IAAM,uBAAuB,CAAC,SAAyB;AACrD,MAAI,OAAO,gBAAgB,aAAa;AACtC,WAAO,IAAI,YAAY,EAAE,OAAO,IAAI,EAAE;AAAA,EACxC;AACA,SAAO,KAAK;AACd;AAEO,IAAM,kBAAkB,CAAC,UAAsC;AACpE,QAAM,aAAa,gBAAgB,KAAK;AACxC,QAAM,QAAQ,qBAAqB,UAAU;AAC7C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,QAAQ,gBAAgB,QAAQ,UAAU,CAAC;AAAA,EAC7C;AACF;;;ACFA,IAAM,yBAAyB,CAAC,OAAgB,MAAc,SAA4C;AACxG,QAAM,OAAO,2BAA2B,KAAK,EAAE;AAC/C,SAAO;AAAA,IACL,MAAM,KAAK;AAAA,IACX,SAAS,KAAK;AAAA,IACd;AAAA,IACA,MAAM,QAAQ,KAAK;AAAA,EACrB;AACF;AAEA,IAAM,6BAA6B,KAAK;AAExC,IAAM,WAAW,CAAC,YAChB,OAAO,SAAS,aAAa,YAAY,OAAO,SAAS,QAAQ,QAAQ,KAAK,QAAQ,WAAW,IAC7F,QAAQ,WACR;AAON,IAAM,uBAAuB,CAAC,aAA0B,gBAAkD;AACxG,QAAM,MAAM,MAAM,KAAK,IAAI,IAAI,YAAY,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK;AACpG,SAAO;AAAA,IACL;AAAA,IACA,UAAU;AAAA,MACR;AAAA,MACA,IAAI;AAAA,MACJ,OAAO;AAAA,QACL,MAAM;AAAA,QACN,SAAS,2CAA2C,WAAW;AAAA,QAC/D,MAAM;AAAA,QACN,MAAM,IAAI,SAAS,IAAI,wBAAwB,IAAI,KAAK,GAAG,CAAC,KAAK;AAAA,MACnE;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,oBAAoB,CACxB,OACA,aACyF;AACzF,QAAM,WAAW,gBAAgB,KAAK;AACtC,QAAM,OAAO,SAAS;AACtB,QAAM,QAAQ,SAAS;AACvB,MAAI,SAAS,UAAU;AACrB,WAAO,EAAE,OAAO,aAAa,OAAO,QAAQ,SAAS,OAAO;AAAA,EAC9D;AAEA,QAAM,eAAe,KAAK,IAAI,KAAK,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,QAAQ,CAAC,CAAC;AAC/E,QAAM,UAAU,KAAK,MAAM,GAAG,YAAY;AAC1C,SAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACF;AAAA,IACA,aAAa;AAAA,IACb,QAAQ,SAAS;AAAA,EACnB;AACF;AAEO,IAAM,2BAA2B,CAAC,YAA4E;AACnH,QAAM,kBAAkB,MAAM,KAAK,QAAQ,SAAS,EAAE,KAAK,CAAC,GAAG,MAAM;AACnE,UAAM,KAAK,OAAO,GAAG,eAAe,EAAE;AACtC,UAAM,KAAK,OAAO,GAAG,eAAe,EAAE;AACtC,QAAI,KAAK,GAAI,QAAO;AACpB,QAAI,KAAK,GAAI,QAAO;AACpB,UAAM,KAAK,OAAO,GAAG,cAAc,EAAE;AACrC,UAAM,KAAK,OAAO,GAAG,cAAc,EAAE;AACrC,WAAO,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI;AAAA,EACtC,CAAC;AAED,QAAM,YAAY,oBAAI,IAAgC;AACtD,aAAW,MAAM,iBAAiB;AAChC,UAAM,MAAM,IAAI;AAChB,UAAM,KAAK,OAAO,IAAI,cAAc,EAAE;AACtC,QAAI,CAAC,cAAc,GAAG,GAAG;AACvB;AAAA,IACF;AACA,UAAM,UAAU,UAAU,IAAI,GAAG;AACjC,QAAI,QAAS,SAAQ,KAAK,EAAE;AAAA,QACvB,WAAU,IAAI,KAAK,CAAC,EAAE,CAAC;AAAA,EAC9B;AAEA,QAAM,eAAe,oBAAI,IAAiB;AAC1C,aAAW,CAAC,GAAG,GAAG,KAAK,WAAW;AAChC,UAAM,SAAS,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC;AACtC,QAAI,OAAO,SAAS,GAAG;AACrB,mBAAa,IAAI,CAAC;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,WAAW,SAAS,QAAQ,OAAO;AACzC,QAAM,YAA8B,CAAC;AAErC,aAAW,YAAY,iBAAiB;AACtC,UAAM,cAAc,UAAU;AAC9B,QAAI,CAAC,cAAc,WAAW,GAAG;AAC/B;AAAA,IACF;AACA,QAAI,aAAa,IAAI,WAAW,GAAG;AACjC;AAAA,IACF;AAEA,QAAI;AACF,YAAM,QAAQ,SAAS,OAAO,QAAQ,GAAG;AACzC,UAAI,UAAU,OAAW;AACzB,UAAI,CAAC,YAAY,KAAK,GAAG;AACvB,kBAAU,KAAK;AAAA,UACb;AAAA,UACA,UAAU;AAAA,YACR;AAAA,YACA,IAAI;AAAA,YACJ,OAAO;AAAA,cACL,IAAI,MAAM,qDAAqD,SAAS,UAAU,EAAE;AAAA,cACpF;AAAA,cACA,eAAe,WAAW,eAAe,SAAS,UAAU;AAAA,YAC9D;AAAA,UACF;AAAA,QACF,CAAC;AACD;AAAA,MACF;AAEA,YAAM,YAAY,kBAAkB,OAAO,QAAQ;AACnD,YAAM,WAA6B;AAAA,QACjC;AAAA,QACA,IAAI;AAAA,QACJ,OAAO,UAAU;AAAA,QACjB,QAAQ,UAAU;AAAA,QAClB,GAAI,UAAU,cAAc,WACxB;AAAA,UACE,WAAW;AAAA,UACX,aAAa;AAAA,UACb,aAAa,UAAU;AAAA,QACzB,IACA;AAAA,UACE,aAAa;AAAA,UACb,aAAa,UAAU;AAAA,QACzB;AAAA,MACN;AAEA,gBAAU,KAAK,EAAE,aAAa,SAAS,CAAC;AAAA,IAC1C,SAAS,GAAG;AACV,gBAAU,KAAK;AAAA,QACb;AAAA,QACA,UAAU;AAAA,UACR;AAAA,UACA,IAAI;AAAA,UACJ,OAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA,eAAe,WAAW,eAAe,SAAS,UAAU;AAAA,UAC9D;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,aAAW,eAAe,MAAM,KAAK,YAAY,EAAE,KAAK,GAAG;AACzD,cAAU,KAAK,qBAAqB,aAAa,UAAU,IAAI,WAAW,KAAK,CAAC,CAAC,CAAC;AAAA,EACpF;AAEA,MAAI,UAAU,WAAW,EAAG,QAAO;AAEnC,YAAU,KAAK,CAAC,GAAG,MAAO,EAAE,cAAc,EAAE,cAAc,KAAK,EAAE,cAAc,EAAE,cAAc,IAAI,CAAE;AAErG,SAAO,OAAO,YAAY,UAAU,IAAI,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC7E;;;ACrJA,IAAM,YAAkD,CAAC,YAAY,aAAa,YAAY,UAAU;AAExG,IAAMC,YAAW,CAAC,UAChB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAErE,IAAM,gBAAgB,CAAC,UAAuC;AAC5D,MAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK,EAAG,QAAO;AACjE,QAAM,IAAI,KAAK,MAAM,KAAK;AAC1B,SAAO,IAAI,IAAI,IAAI;AACrB;AAEA,IAAMC,kBAAiB,CAAC,UAA2B;AACjD,QAAM,OAAO,KAAK,UAAU,KAAK,KAAK;AACtC,MAAI,OAAO,gBAAgB,aAAa;AACtC,WAAO,IAAI,YAAY,EAAE,OAAO,IAAI,EAAE;AAAA,EACxC;AACA,SAAO,KAAK;AACd;AAEA,IAAM,iBAAiB,CAAC,SAKK;AAC3B,QAAM,MAAM,2BAA2B,KAAK,KAAK,EAAE;AACnD,SAAO;AAAA,IACL,OAAO,KAAK;AAAA,IACZ,MAAM,KAAK;AAAA,IACX,SAAS,IAAI;AAAA,IACb,MAAM,KAAK,QAAQ,IAAI;AAAA,IACvB,aAAa;AAAA,EACf;AACF;AAEA,IAAM,gBAAgB,CAAI,SAML;AACnB,MAAI;AACF,WAAO,KAAK,QAAQ;AAAA,EACtB,SAAS,OAAO;AACd,SAAK,OAAO;AAAA,MACV,eAAe;AAAA,QACb,OAAO,KAAK;AAAA,QACZ,MAAM,KAAK;AAAA,QACX;AAAA,QACA,MAAM,KAAK;AAAA,MACb,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACF;AAEO,IAAM,0BAA0B,CAA0C,SAKN;AACzE,QAAM,SAAuC,CAAC;AAE9C,QAAM,WAAW,cAAc;AAAA,IAC7B,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA,SAAS,KAAK;AAAA,EAChB,CAAC;AAED,QAAM,WAAW,cAAc;AAAA,IAC7B,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA,SAAS,KAAK;AAAA,EAChB,CAAC;AAED,QAAM,WAAW,cAAc;AAAA,IAC7B,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA,SAAS,KAAK;AAAA,EAChB,CAAC;AAED,QAAM,YAAY,cAAc;AAAA,IAC9B,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA,SAAS,MACP,KAAK,iBAAiB;AAAA,MACpB;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACL,CAAC;AAED,SAAO,KAAK,CAAC,GAAG,MAAO,EAAE,QAAQ,EAAE,QAAQ,KAAK,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,IAAI,CAAE;AAEvH,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAM,2BAA2B,CAAC,SASnB;AACb,QAAM,WAAW;AAAA,IACf,QAAQ,KAAK;AAAA,IACb,SAAS;AAAA,MACP,GAAI,OAAO,KAAK,cAAc,YAAY,OAAO,SAAS,KAAK,SAAS,IAAI,EAAE,WAAW,KAAK,MAAM,KAAK,SAAS,EAAE,IAAI,CAAC;AAAA,MACzH,GAAI,OAAO,KAAK,aAAa,YAAY,OAAO,SAAS,KAAK,QAAQ,IAAI,EAAE,UAAU,KAAK,MAAM,KAAK,QAAQ,EAAE,IAAI,CAAC;AAAA,IACvH;AAAA,IACA,QAAQ,KAAK;AAAA,IACb,GAAI,KAAK,WAAW,KAAK,QAAQ,SAAS,IAAI,EAAE,SAAS,MAAM,KAAK,KAAK,OAAO,EAAE,IAAI,CAAC;AAAA,IACvF,GAAI,OAAO,KAAK,kBAAkB,WAAW,EAAE,eAAe,KAAK,cAAc,IAAI,CAAC;AAAA,IACtF,GAAI,OAAO,KAAK,eAAe,WAAW,EAAE,YAAY,KAAK,WAAW,IAAI,CAAC;AAAA,EAC/E;AAEA,MAAID,UAAS,KAAK,WAAW,GAAG;AAC9B,UAAM,YAAYA,UAAS,KAAK,YAAY,OAAO,IAAI,KAAK,YAAY,UAAU,CAAC;AACnF,WAAO;AAAA,MACL,GAAG,KAAK;AAAA,MACR,SAAS;AAAA,QACP,GAAG;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,SAAS;AAAA,MACP;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,oBAAoB,CACxB,QACA,aAQG;AACH,MAAI,aAAa,QAAW;AAC1B,WAAO;AAAA,MACL,UAAU;AAAA,MACV,SAAS,CAAC;AAAA,MACV,WAAW;AAAA,MACX,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,QAAM,gBAAgBC,gBAAe,MAAM;AAC3C,MAAI,iBAAiB,UAAU;AAC7B,WAAO;AAAA,MACL,UAAU;AAAA,MACV,SAAS,CAAC;AAAA,MACV;AAAA,MACA,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,QAAM,UAAwC,CAAC;AAC/C,QAAM,UAAmC,EAAE,GAAI,OAA8C;AAE7F,aAAW,SAAS,WAAW;AAC7B,QAAI,QAAQ,KAAK,MAAM,OAAW;AAClC,WAAO,QAAQ,KAAK;AACpB,YAAQ,KAAK,KAAK;AAClB,UAAM,QAAQA,gBAAe,OAAO;AACpC,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,QACL,UAAU;AAAA,QACV;AAAA,QACA;AAAA,QACA,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAEA,QAAM,aAAaA,gBAAe,OAAO;AAEzC,SAAO;AAAA,IACL,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,QAAQ;AAAA,EACV;AACF;AAEA,IAAM,eAAe,CAAC,WAAuF;AAC3G,QAAM,MAA+B,CAAC;AACtC,QAAM,OAAO,oBAAI,IAAY;AAC7B,aAAW,SAAS,QAAQ;AAC1B,UAAM,MAAM,GAAG,MAAM,KAAK,IAAI,MAAM,IAAI;AACxC,QAAI,KAAK,IAAI,GAAG,EAAG;AACnB,SAAK,IAAI,GAAG;AACZ,QAAI,KAAK,KAAK;AAAA,EAChB;AACA,MAAI,KAAK,CAAC,GAAG,MAAO,EAAE,QAAQ,EAAE,QAAQ,KAAK,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,IAAI,CAAE;AACpH,SAAO;AACT;AAEO,IAAM,4BAA4B,CAAC,SAUxC,yBAAyB;AAAA,EACvB,aAAa,KAAK;AAAA,EAClB,QAAQ,KAAK;AAAA,EACb,QAAQ,KAAK;AAAA,EACb,WAAW,KAAK;AAAA,EAChB,UAAU,KAAK;AAAA,EACf,SAAS,KAAK;AAAA,EACd,eAAe,KAAK;AAAA,EACpB,YAAY,KAAK;AACnB,CAAC;AAEI,IAAM,yBAAyB,CAAuD,SAKZ;AAC/E,QAAM,WAAW,cAAc,KAAK,SAAS,QAAQ;AAErD,QAAM,QAAmF;AAAA,IACvF,OAAO,KAAK,KAAK;AAAA,IACjB,IAAI,KAAK,KAAK;AAAA,IACd,UAAU,KAAK,WAAW;AAAA,IAC1B,UAAU,KAAK,WAAW;AAAA,IAC1B,WAAW,KAAK,WAAW;AAAA,IAC3B,aAAa,KAAK,KAAK;AAAA,IACvB,UAAU,KAAK,WAAW;AAAA,IAC1B,SAAS,KAAK,KAAK;AAAA,IACnB,OAAO,KAAK,KAAK;AAAA,EACnB;AAEA,QAAM,YAAY,kBAAkB,OAAO,QAAQ;AAEnD,QAAM,SAAuC,CAAC,GAAG,KAAK,WAAW,MAAM;AAEvE,MAAI,aAAa,UAAa,OAAO,UAAU,kBAAkB,YAAY,UAAU,gBAAgB,UAAU;AAC/G,WAAO;AAAA,MACL,UAAU,SACN;AAAA,QACE,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS,6CAA6C,UAAU,aAAa,MAAM,QAAQ;AAAA,QAC3F,MAAM;AAAA,QACN,aAAa;AAAA,MACf,IACA;AAAA,QACE,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS,6CAA6C,UAAU,aAAa,MAAM,QAAQ;AAAA,QAC3F,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,IACN;AAAA,EACF;AAEA,QAAM,gBAAgB,aAAa,MAAM;AAEzC,QAAM,SAAiC,UAAU,SAC7C,WACA,UAAU,YACR,cACA,cAAc,SAAS,IACrB,YACA;AAER,QAAM,UAAU,0BAA0B;AAAA,IACxC,aAAa,KAAK,KAAK;AAAA,IACvB,QAAQ;AAAA,IACR,WAAW,KAAK;AAAA,IAChB;AAAA,IACA,SAAS,UAAU;AAAA,IACnB,eAAe,UAAU;AAAA,IACzB,YAAY,UAAU;AAAA,IACtB;AAAA,EACF,CAAC;AAED,MAAI,QAAQ,KAAK,KAAK;AACtB,MAAI,UAAU,UAAU,CAAC,OAAO;AAC9B,YAAQ;AAAA,MACN,SAAS,6CAA6C,UAAU,iBAAiB,SAAS,MAAM,QAAQ;AAAA,MACxG,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAEA,QAAM,SAAS;AAAA,IACb,GAAG,UAAU;AAAA,IACb,IAAI,UAAU,SAAS,QAAQ,KAAK,KAAK;AAAA,IACzC;AAAA,IACA,GAAI,QAAQ,EAAE,MAAM,IAAI,CAAC;AAAA,EAC3B;AAEA,MAAI,aAAa,QAAW;AAC1B,UAAM,kBAAkBA,gBAAe,MAAM;AAC7C,QAAI,kBAAkB,UAAU;AAC9B,YAAM,gBAAuC;AAAA,QAC3C,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS,6CAA6C,eAAe,MAAM,QAAQ;AAAA,QACnF,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAEA,YAAM,iBAAiB,aAAa,CAAC,GAAG,eAAe,aAAa,CAAC;AAErE,YAAM,kBAAkB,0BAA0B;AAAA,QAChD,aAAa;AAAA,QACb,QAAQ;AAAA,QACR,WAAW,KAAK;AAAA,QAChB;AAAA,QACA,SAAS,CAAC,YAAY,YAAY,aAAa,UAAU;AAAA,QACzD,eAAe,UAAU,iBAAiB;AAAA,QAC1C,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV,CAAC;AAED,YAAM,gBAA0C,SAAS;AAAA,QACvD,SAAS,6CAA6C,eAAe,MAAM,QAAQ;AAAA,QACnF,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAEA,aAAO;AAAA,QACL,OAAO,KAAK,KAAK;AAAA,QACjB,IAAI;AAAA,QACJ,aAAa,KAAK,KAAK;AAAA,QACvB,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;;;ARnVA,IAAM,cAAc,MAAc;AAChC,MAAI,OAAO,WAAW,eAAe,OAAO,aAAa,YAAa,QAAO;AAC7E,SAAO;AACT;AAEA,IAAMC,YAAW,CAAC,UAChB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAErE,IAAM,kBAAkB,CAA4B,SAChD,MAAc,SAAS,eACpB,OACC,MAAc;AAEtB,IAAM,yBAAyB,CAAC,YAA2C;AACzE,QAAM,MAAgB,CAAC;AAGvB,QAAM,WAAkC;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,aAAW,MAAM,UAAU;AACzB,QAAI;AACJ,WAAQ,QAAQ,GAAG,KAAK,OAAO,GAAI;AACjC,YAAM,MAAM,MAAM,CAAC;AACnB,UAAI,OAAO,QAAQ,YAAY,IAAI,SAAS,EAAG,KAAI,KAAK,GAAG;AAAA,IAC7D;AAAA,EACF;AAEA,SAAO,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,KAAK;AACvC;AAEA,IAAM,yBAAyB,CAAC,YAA2C;AACzE,QAAM,MAAgB,CAAC;AACvB,QAAM,KAAK;AACX,MAAI;AACJ,SAAQ,QAAQ,GAAG,KAAK,OAAO,GAAI;AACjC,UAAM,KAAK,MAAM,CAAC,GAAG,QAAQ,YAAY,EAAE;AAC3C,QAAI,OAAO,OAAO,YAAY,GAAG,SAAS,EAAG,KAAI,KAAK,EAAE;AAAA,EAC1D;AACA,SAAO,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,KAAK;AACvC;AAEA,IAAM,kCAAkC,CACtC,UAIG;AACH,QAAM,kBAA4B,CAAC;AACnC,QAAM,oBAA8B,CAAC;AAErC,QAAM,aAAa,MAAM,QACtB,OAAO,CAAC,WAAWC,OAAM,aAAa,MAAM,KAAKA,OAAM,YAAY,MAAM,CAAC,EAC1E,IAAI,CAAC,WAAYA,OAAM,aAAa,MAAM,IAAI,OAAO,QAAQ,OAAO,MAAO;AAE9E,aAAW,aAAa,YAAY;AAClC,QAAID,UAAS,SAAS,KAAM,UAAkB,SAAS,0BAA0B;AAC/E,YAAM,iBAAkB,UAAkB;AAC1C,UAAI,OAAO,mBAAmB,YAAY,eAAe,SAAS,GAAG;AACnE,wBAAgB,KAAK,cAAc;AAAA,MACrC;AAAA,IACF;AAEA,QACEA,UAAS,SAAS,KACjB,UAAkB,SAAS,iBAC3B,UAAkB,QAAQ,iBAC3B,MAAM,QAAS,UAAkB,IAAI,KACpC,UAAkB,KAAK,MAAM,CAAC,MAAe,OAAO,MAAM,YAAY,EAAE,SAAS,CAAC,GACnF;AACA,YAAM,MAAO,UAAkB,KAAK,KAAK,GAAG;AAC5C,UAAI,IAAI,SAAS,EAAG,mBAAkB,KAAK,GAAG;AAAA,IAChD;AAAA,EACF;AAEA,QAAM,WAAqB,CAAC;AAC5B,aAAW,aAAa,YAAY;AAClC,QAAI,qBAAqB,OAAO;AAC9B,eAAS,KAAK,UAAU,OAAO;AAC/B;AAAA,IACF;AACA,QAAI,OAAO,cAAc,UAAU;AACjC,eAAS,KAAK,SAAS;AACvB;AAAA,IACF;AACA,QAAIA,UAAS,SAAS,KAAK,OAAQ,UAAkB,YAAY,UAAU;AACzE,eAAS,KAAK,OAAQ,UAAkB,OAAO,CAAC;AAAA,IAClD;AAAA,EACF;AAEA,MAAI;AACF,aAAS,KAAKC,OAAM,OAAO,KAAK,CAAC;AAAA,EACnC,QAAQ;AAAA,EAER;AAEA,QAAM,SAAS,SAAS,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,IAAI;AAE7D,MAAI,QAAQ;AACV,oBAAgB,KAAK,GAAG,uBAAuB,MAAM,CAAC;AACtD,sBAAkB,KAAK,GAAG,uBAAuB,MAAM,CAAC;AAAA,EAC1D;AAEA,SAAO;AAAA,IACL,iBAAiB,MAAM,KAAK,IAAI,IAAI,eAAe,CAAC,EAAE,KAAK;AAAA,IAC3D,mBAAmB,MAAM,KAAK,IAAI,IAAI,iBAAiB,CAAC,EAAE,KAAK;AAAA,EACjE;AACF;AAEA,IAAM,qBAAqB,CAAC,WAMP;AACnB,QAAM,qBAAqB,OAAO,KAAK,OAAO,kBAAkB,CAAC,CAAC,EAC/D,OAAO,CAAC,MAAM,EAAE,SAAS,KAAM,OAAO,eAAuB,CAAC,MAAM,MAAS,EAC7E,KAAK;AAER,QAAM,kBAAkB,MAAM,KAAK,IAAI,IAAI,OAAO,mBAAmB,CAAC,CAAC,CAAC,EAAE,KAAK;AAC/E,QAAM,oBAAoB,MAAM,KAAK,IAAI,IAAI,OAAO,qBAAqB,CAAC,CAAC,CAAC,EAAE,KAAK;AAEnF,QAAM,oBACJ,OAAO,yBAAyB,UAAU,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,OAAO,MAAM,QAAQ,KAAK,CAAC;AAE7G,QAAM,SAAS,MAAM,KAAK,oBAAI,IAAI,CAAC,GAAG,mBAAmB,GAAG,eAAe,CAAC,CAAC,EAAE,KAAK;AAEpF,QAAM,aAAa,MAAM,KAAK,oBAAI,IAAI,CAAC,GAAG,oBAAoB,GAAG,iBAAiB,CAAC,CAAC,EAAE,KAAK;AAE3F,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,yBAAyB,OAAO;AAAA,IAChC,yBAAyB,OAAO;AAAA,EAClC;AACF;AAEA,IAAMC,0BAAyB,CAAC,OAAgB,MAAc,SAA4C;AACxG,QAAM,OAAO,2BAA2B,KAAK,EAAE;AAC/C,SAAO;AAAA,IACL,MAAM,KAAK;AAAA,IACX,SAAS,KAAK;AAAA,IACd;AAAA,IACA,MAAM,QAAQ,KAAK;AAAA,EACrB;AACF;AAEA,IAAM,2BAA2B,MAC/B,OAAO,OAAO,IAAI,MAAM,kCAAkC,GAAG;AAAA,EAC3D,MAAM;AACR,CAAC;AAEH,IAAM,4BAA4B,CAChC,OACA,cAEAC,QAAO,IAAI,aAAa;AACtB,QAAM,aAAa,OAAO,cAAc,YAAY,OAAO,SAAS,SAAS,KAAK,YAAY;AAC9F,MAAI,CAAC,YAAY;AACf,WAAQ,OAAO,MAAM,MAAM,KAAK;AAAA,EAClC;AAEA,QAAM,QAAQ,OAAOA,QAAO;AAAA,IAAgE,MAC1F,IAAI,QAAQ,CAAC,YAAY;AACvB,YAAM,QAAQ,WAAW,MAAM,QAAQ,EAAE,MAAM,UAAmB,CAAC,GAAG,SAAS;AAC/E,WAAKA,QAAO,WAAW,MAAM,MAAM,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS;AACxD,qBAAa,KAAK;AAClB,gBAAQ,IAA+B;AAAA,MACzC,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAEA,MAAK,MAAc,SAAS,WAAW;AACrC,WAAO;AAAA,EACT;AAEA,SAAO,MAAM,UAAU,KAAK,EAAE,KAAKA,QAAO,QAAQA,QAAO,WAAW,EAAE,kBAAkB,KAAK,CAAC,CAAC;AAC/F,SAAO,KAAK,KAAK,yBAAyB,CAAC;AAC7C,CAAC;AAEI,IAAM,iBAAiB,CAC5B,MACA,YAEAA,QAAO,IAAI,aAAa;AACtB,QAAM,WAAW,gBAAgB,IAAI;AAErC,QAAM,UAAU,eAAe;AAAA,IAC7B,OAAO,SAAS;AAAA,IAChB,QAAQ,SAAS,UAAU,EAAE,MAAM,YAAY,GAAG,OAAO,mBAAmB;AAAA,IAC5E,WAAW,SAAS;AAAA,EACtB,CAAC;AAED,QAAM,YAAY,sBAAsB,OAAO;AAE/C,QAAM,oBAA+C;AAAA,IACnD,UAAU,CAAC,OAAO;AAChB,gBAAU,yBAAyB,EAAE;AAAA,IACvC;AAAA,EACF;AAEA,QAAM,aAAa,YAAY,CAAC,UAAU,SAAiC,CAAC;AAC5E,QAAM,2BAA2B,SAAS,oBAAoB;AAC9D,QAAM,mBAAmB,iBAAiB,wBAAwB;AAClE,QAAM,gBAAgB,iCAAiC,CAAC,iBAAiB,CAAC;AAC1E,QAAM,iBAAiB,uBAAuB,SAAS;AACvD,QAAM,eAAe,gBAAgB,OAAO;AAE5C,QAAM,iBAAiB,SAAS,UAAU;AAC1C,QAAM,gBAAyBC,OAAM;AAAA,IACnC,iBAAiB,SAAS,UAAU;AAAA,IACpC,QAAQ;AAAA,IACR,gBAAgB,SAAS,UAAU;AAAA,EACrC,CAAC;AAED,QAAM,aAAaC,OAAM;AAAA,IACvB;AAAA,IACA,SAAS,SAAUA,OAAM;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,SAAS,OAAO;AAAA,IACpB,CAAC,SACSC,MAAK,MAAM;AAAA,MACjB,OAAO;AAAA;AAAA,IAET,CAAQ;AAAA,IACV;AAAA,EACF;AAEA,QAAM,WAAW,OAAO;AAExB,QAAM,YAAY,OAAO,QAAQ,QAAQH,QAAO,QAAQ,SAAS,MAAa,EAAE,KAAKA,QAAO,KAAK,CAAC;AAClG,QAAM,WAAW,OAAO,0BAA0B,WAAW,SAAS,iBAAiB;AAEvF,MAAI;AACJ,MAAI;AACJ,MAAI;AAEJ,MAAI,KAAK,UAAU,QAAQ,GAAG;AAC5B,UAAM,gBAAgB,SAAS;AAC/B,iBACE,OAAO,eAAe,eAAe,YAAY,cAAc,WAAW,SAAS,IAC/E,cAAc,aACd;AACN,WAAO,cAAc,UAAU;AAE/B,QAAI;AACF,gCAAoC,2BAA2B,aAAa;AAAA,IAC9E,QAAQ;AACN,gCAA0B;AAAA,IAC5B;AAEA,QAAI,6BAA6B,OAAO;AACtC,UAAI;AACF,kCAAwC,2BAA2B,aAAa;AAAA,MAClF,QAAQ;AACN,kCAA0B;AAAA,MAC5B;AAAA,IACF;AAAA,EACF,OAAO;AACL,UAAM,UAAUF,OAAM,gBAAgB,SAAS,KAAK;AACpD,QAAI,OAAO,OAAO,OAAO,GAAG;AAC1B,YAAM,MAAW,QAAQ;AACzB,YAAM,oBAAoB,OAAO,KAAK,eAAe,WAAW,IAAI,aAAa;AACjF,UAAI,qBAAqB,kBAAkB,SAAS,GAAG;AACrD,eAAO,cAAc,iBAAiB;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAEA,QAAM,YAAY,OAAOE,QAAO;AAAA,IAC9B,OAAO,MAAM;AAAA,MACX,WACE,OAAO,SAAS,sBAAsB,YACtC,OAAO,SAAS,QAAQ,iBAAiB,KACzC,QAAQ,oBAAoB,IACxB,QAAQ,oBACR;AAAA,IACR,CAAC;AAAA,EACH;AAEA,MAAI,KAAK,KAAK,UAAU,QAAQ,KAAK,KAAK,UAAU,SAAS;AAC7D,MAAI;AACJ,MAAI;AAEJ,QAAM,sBAAsB,KAAK,UAAU,QAAQ,IAC/C,gCAAgC,SAAS,KAA6B,IACtE,EAAE,iBAAiB,CAAC,GAAG,mBAAmB,CAAC,EAAE;AAEjD,QAAM,kBAAkB,oBAAoB;AAC5C,QAAM,oBAAoB,oBAAoB;AAE9C,QAAM,aAAa,KAAK,UAAU,SAAS,IACvC,UAAU,MAAM,QAAQ,OAAOF,OAAM,WAAW,EAAE,IAAI,CAAC,WAAW,OAAO,MAAM,EAAE,CAAC,IAClF;AAEJ,MAAI,CAAC,KAAK,UAAU,QAAQ,GAAG;AAC7B,UAAM,UAAU,OAAO,eAAeA,OAAM,gBAAgB,SAAS,KAAK,CAAC;AAC3E,UAAM,SAAS,SAAS,MAAM,QAAQ,OAAOA,OAAM,WAAW,EAAE,IAAI,CAAC,WAAW,OAAO,MAAM,EAAE,CAAC;AAChG,UAAM,OAAO,WAAW,UAAU,SAAS;AAE3C,QAAI,gBAAgB,SAAS,KAAK,kBAAkB,SAAS,GAAG;AAC9D,WAAK;AACL,cAAQC;AAAA,QACN;AAAA,QACA;AAAA,QACA,gBAAgB,SAAS,IACrB,iIACA;AAAA,MACN;AAAA,IACF,WACEF,UAAS,IAAI,MACX,KAAa,SAAS,0BAA2B,KAAa,SAAS,oBACzE;AACA,WAAK;AACL,cAAQE;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,OAAO;AACL,WAAK;AACL,cAAQA,wBAAuB,MAAM,gBAAgB;AAAA,IACvD;AAAA,EACF;AAEA,MAAI,KAAK,UAAU,SAAS,GAAG;AAC7B,UAAM,OAAO,UAAU,MAAM,QAAQ,OAAOD,OAAM,WAAW,EAAE,IAAI,CAAC,WAAW,OAAO,MAAM,EAAE,CAAC;AAC/F,UAAM,UAAU,OAAO,eAAeA,OAAM,gBAAgB,UAAU,KAAK,CAAC;AAC5E,UAAM,OAAO,QAAQ,WAAW,UAAU;AAE1C,UAAM,qBAAqB,MAAM;AAC/B,YAAM,MAAMD,UAAS,IAAI,IAAK,KAAa,OAAO;AAClD,UAAI,QAAQ,kBAAkB;AAC5B,eAAOE;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,aAAOA,wBAAuB,MAAM,gBAAgB;AAAA,IACtD,GAAG;AAEH,SAAK;AACL,QAAI,CAAC,OAAO;AAEV,cAAQ;AAAA,IACV,OAAO;AAEL,gBAAU,EAAE,SAAS,EAAE,YAAY,kBAAkB,EAAE;AAAA,IACzD;AAAA,EACF;AAEA,QAAM,cAAc,mBAAmB;AAAA,IACrC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,mBACJ,OAAQ,SAAS,QAAgB,OAAO,YAAa,SAAS,OAAe,GAAG,SAAS,IACrF,OAAQ,SAAS,OAAe,EAAE,IAClC;AAEN,QAAM,qBAAqB,OAAOC,QAAO;AAAA,IAAQ,YAC/C,wBAAwB;AAAA,MACtB,iBAAiB,MACf,UAAU,sBAAsB;AAAA,QAC9B,WAAW,SAAS,aAAa;AAAA,MACnC,CAAC;AAAA,MACH,iBAAiB,MACf,gBAAgB,MAAa;AAAA,QAC3B,iBAAiB;AAAA,QACjB,SAAS,EAAE,UAAU,IAAQ;AAAA,MAC/B,CAAC;AAAA,MACH,iBAAiB,MAAMI,gBAAe,IAAW;AAAA,MACjD,kBAAkB,CAAC,EAAE,UAAU,SAAS,MACtC,yBAAyB;AAAA,QACvB,WAAW,6BAA6B,SAAS,MAAa;AAAA,QAC9D,KAAK;AAAA,UACH,UAAU,oBAAoB,UAAU,YAAY;AAAA,UACpD;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACL,CAAC;AAAA,EACH;AAEA,QAAM,SAAS,uBAAuB;AAAA,IACpC,MAAM;AAAA,MACJ,OAAO,QAAQ;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,YAAY;AAAA,IACZ,WAAW,SAAS,aAAa;AAAA,IACjC,SAAS,SAAS;AAAA,EACpB,CAAC;AAED,SAAO;AACT,CAAC;;;AS7eH,SAAS,UAAAC,SAAc,SAAAC,QAAO,aAAa;AA+B3C,IAAMC,eAAc,MAAc;AAChC,MAAI,OAAO,WAAW,eAAe,OAAO,aAAa,YAAa,QAAO;AAC7E,SAAO;AACT;AAEO,IAAM,WAAW,CACtB,SACA,YAEAC,QAAO,IAAI,aAAa;AACtB,QAAM,UAAU,eAAe;AAAA,IAC7B,OAAO,SAAS;AAAA,IAChB,QAAQ,SAAS,UAAU,EAAE,MAAMD,aAAY,GAAG,OAAO,YAAY;AAAA,IACrE,WAAW,SAAS;AAAA,EACtB,CAAC;AAED,QAAM,YAAY,sBAAsB,OAAO;AAE/C,QAAM,oBAA+C;AAAA,IACnD,UAAU,CAAC,OAAO;AAChB,gBAAU,yBAAyB,EAAE;AAAA,IACvC;AAAA,EACF;AAEA,QAAM,aAAa,YAAY,CAAC,UAAU,SAAiC,CAAC;AAC5E,QAAM,mBAAmB,iBAAiB,SAAS,oBAAoB,OAAO;AAC9E,QAAM,gBAAgB,iCAAiC,CAAC,iBAAiB,CAAC;AAC1E,QAAM,iBAAiB,uBAAuB,SAAS;AACvD,QAAM,eAAe,gBAAgB,OAAO;AAE5C,QAAM,iBACJ,SAAS,oCAAoC,OACxCE,OAAM;AAAA,IACS;AAAA,IACd,QAAQ;AAAA,EACV,IACCA,OAAM;AAEb,QAAM,aAAaA,OAAM;AAAA,IACvB,SAAS,SAAUA,OAAM;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,QAAQ,OAAO,MAAM,KAAK;AAEhC,QAAM,OAAO,OAAOD,QAAO,KAAK,OAAO,EAAE,KAAKA,QAAO,eAAe,MAAM,OAAO,KAAK,GAAGA,QAAO,QAAQ,UAAU,CAAC;AAEnH,SAAO,MAAM,MAAM,OAAO,IAAI;AAE9B,QAAM,WAAW,UAAU,sBAAsB;AAAA,IAC/C,WAAW,SAAS;AAAA,EACtB,CAAC;AAED,SAAO,EAAE,SAAS,MAAM,SAAS;AACnC,CAAC;","names":["exportStaticIr","isRecord","isModuleImpl","resolveModuleId","next","exportStaticIr","Cause","Effect","Layer","layer","Effect","Layer","layer","Layer","Effect","Layer","make","Layer","isRecord","utf8ByteLength","isRecord","Cause","toErrorSummaryWithCode","Effect","layer","Layer","make","exportStaticIr","Effect","Layer","defaultHost","Effect","Layer"]}
@@ -49,4 +49,4 @@ export {
49
49
  makeActions,
50
50
  normalizeActions
51
51
  };
52
- //# sourceMappingURL=chunk-YS3AZQ2G.js.map
52
+ //# sourceMappingURL=chunk-6HFAW2MH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/action.ts"],"sourcesContent":["import { Schema } from 'effect'\n\ntype ActionArgs<P> = [P] extends [void] ? [] | [P] : [P]\ntype ActionFn<P, Out> = (...args: ActionArgs<P>) => Out\n\ntype DevSource = {\n readonly file: string\n readonly line: number\n readonly column: number\n}\n\nexport type ActionValue<Tag extends string, Payload> = Payload extends void\n ? {\n readonly _tag: Tag\n readonly payload?: Payload\n }\n : {\n readonly _tag: Tag\n readonly payload: Payload\n }\n\nexport type ActionCreator<Tag extends string, Payload> = ActionFn<Payload, ActionValue<Tag, Payload>>\n\nexport type ActionToken<\n Tag extends string,\n Payload,\n PayloadSchema extends Schema.Schema<any> = Schema.Schema<any>,\n> = ActionCreator<Tag, Payload> & {\n readonly _kind: 'ActionToken'\n readonly tag: Tag\n readonly schema: PayloadSchema\n readonly source?: DevSource\n}\n\nexport type AnyActionToken = ActionToken<string, any, Schema.Schema<any>>\n\nexport const isActionToken = (value: unknown): value is AnyActionToken =>\n typeof value === 'function' &&\n (value as any)._kind === 'ActionToken' &&\n typeof (value as any).tag === 'string' &&\n Schema.isSchema((value as any).schema)\n\nexport const make = <Tag extends string, PayloadSchema extends Schema.Schema<any>>(\n tag: Tag,\n schema: PayloadSchema,\n options?: { readonly source?: DevSource },\n): ActionToken<Tag, Schema.Schema.Type<PayloadSchema>, PayloadSchema> => {\n const fn = ((...args: readonly [unknown?]) => ({\n _tag: tag,\n payload: args[0],\n })) as unknown as ActionToken<Tag, Schema.Schema.Type<PayloadSchema>, PayloadSchema>\n\n ;(fn as any)._kind = 'ActionToken'\n ;(fn as any).tag = tag\n ;(fn as any).schema = schema\n if (options?.source) {\n ;(fn as any).source = options.source\n }\n\n return fn\n}\n\nexport const makeActions = <M extends Record<string, Schema.Schema<any>>>(\n schemas: M,\n options?: {\n readonly source?: DevSource\n readonly sources?: Partial<Record<Extract<keyof M, string>, DevSource>>\n },\n): {\n readonly [K in keyof M]: ActionToken<Extract<K, string>, Schema.Schema.Type<M[K]>, M[K]>\n} => {\n const out: Record<string, AnyActionToken> = {}\n const sources = options?.sources as Record<string, DevSource | undefined> | undefined\n const defaultSource = options?.source\n for (const [key, schema] of Object.entries(schemas)) {\n const source = sources?.[key] ?? defaultSource\n out[key] = make(key, schema, source ? { source } : undefined)\n }\n return out as any\n}\n\nexport type ActionDef = Schema.Schema<any> | AnyActionToken\nexport type ActionDefs = Record<string, ActionDef>\n\nexport type NormalizedActionTokens<M extends ActionDefs> = {\n readonly [K in keyof M]: M[K] extends Schema.Schema<any>\n ? ActionToken<Extract<K, string>, Schema.Schema.Type<M[K]>, M[K]>\n : M[K] extends ActionToken<any, infer P, infer S>\n ? ActionToken<Extract<K, string>, P, S>\n : never\n}\n\nexport const normalizeActions = <M extends ActionDefs>(defs: M): NormalizedActionTokens<M> => {\n const out: Record<string, AnyActionToken> = {}\n\n for (const [key, def] of Object.entries(defs)) {\n if (Schema.isSchema(def)) {\n out[key] = make(key, def)\n continue\n }\n\n if (isActionToken(def)) {\n if (def.tag !== key) {\n throw new Error(`[Logix.Action] actionTag MUST equal key: key=\"${key}\", token.tag=\"${def.tag}\"`)\n }\n out[key] = def\n continue\n }\n\n throw new Error(`[Logix.Action] invalid action def for key \"${key}\"`)\n }\n\n return out as any\n}\n"],"mappings":";AAAA,SAAS,cAAc;AAoChB,IAAM,gBAAgB,CAAC,UAC5B,OAAO,UAAU,cAChB,MAAc,UAAU,iBACzB,OAAQ,MAAc,QAAQ,YAC9B,OAAO,SAAU,MAAc,MAAM;AAEhC,IAAM,OAAO,CAClB,KACA,QACA,YACuE;AACvE,QAAM,MAAM,IAAI,UAA+B;AAAA,IAC7C,MAAM;AAAA,IACN,SAAS,KAAK,CAAC;AAAA,EACjB;AAEC,EAAC,GAAW,QAAQ;AACpB,EAAC,GAAW,MAAM;AAClB,EAAC,GAAW,SAAS;AACtB,MAAI,SAAS,QAAQ;AACnB;AAAC,IAAC,GAAW,SAAS,QAAQ;AAAA,EAChC;AAEA,SAAO;AACT;AAEO,IAAM,cAAc,CACzB,SACA,YAMG;AACH,QAAM,MAAsC,CAAC;AAC7C,QAAM,UAAU,SAAS;AACzB,QAAM,gBAAgB,SAAS;AAC/B,aAAW,CAAC,KAAK,MAAM,KAAK,OAAO,QAAQ,OAAO,GAAG;AACnD,UAAM,SAAS,UAAU,GAAG,KAAK;AACjC,QAAI,GAAG,IAAI,KAAK,KAAK,QAAQ,SAAS,EAAE,OAAO,IAAI,MAAS;AAAA,EAC9D;AACA,SAAO;AACT;AAaO,IAAM,mBAAmB,CAAuB,SAAuC;AAC5F,QAAM,MAAsC,CAAC;AAE7C,aAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAQ,IAAI,GAAG;AAC7C,QAAI,OAAO,SAAS,GAAG,GAAG;AACxB,UAAI,GAAG,IAAI,KAAK,KAAK,GAAG;AACxB;AAAA,IACF;AAEA,QAAI,cAAc,GAAG,GAAG;AACtB,UAAI,IAAI,QAAQ,KAAK;AACnB,cAAM,IAAI,MAAM,iDAAiD,GAAG,iBAAiB,IAAI,GAAG,GAAG;AAAA,MACjG;AACA,UAAI,GAAG,IAAI;AACX;AAAA,IACF;AAEA,UAAM,IAAI,MAAM,8CAA8C,GAAG,GAAG;AAAA,EACtE;AAEA,SAAO;AACT;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  make
3
- } from "./chunk-NQZ2OSGR.js";
3
+ } from "./chunk-FBYW3QDI.js";
4
4
  import {
5
5
  __export
6
6
  } from "./chunk-PZ5AY32C.js";
@@ -16,4 +16,4 @@ export {
16
16
  make2 as make,
17
17
  Flow_exports
18
18
  };
19
- //# sourceMappingURL=chunk-EY4NZKDR.js.map
19
+ //# sourceMappingURL=chunk-6Y2TKCNY.js.map
@@ -1,35 +1,35 @@
1
1
  import {
2
2
  build,
3
3
  install
4
- } from "./chunk-KIXAU3GM.js";
4
+ } from "./chunk-GWSM4KLB.js";
5
5
  import {
6
6
  Module
7
- } from "./chunk-JCXGZRMU.js";
7
+ } from "./chunk-AO4JEOKD.js";
8
8
  import {
9
9
  attachLogicUnitMeta
10
- } from "./chunk-JGIWG6SR.js";
10
+ } from "./chunk-NUDBM4MM.js";
11
11
  import {
12
12
  mutateWithPatchPaths,
13
13
  mutateWithoutPatches
14
- } from "./chunk-BE3HW4FY.js";
14
+ } from "./chunk-ZBBMZMA6.js";
15
15
  import {
16
16
  normalizeActions
17
- } from "./chunk-YS3AZQ2G.js";
17
+ } from "./chunk-6HFAW2MH.js";
18
18
  import {
19
19
  registerModuleProgram
20
- } from "./chunk-66ALHVEX.js";
20
+ } from "./chunk-EB46EYI7.js";
21
21
  import {
22
22
  getBoundInternals,
23
23
  setModuleTraitsProgram
24
- } from "./chunk-3RMKLXHX.js";
24
+ } from "./chunk-63ZQ5RIN.js";
25
25
  import {
26
26
  currentDiagnosticsLevel,
27
27
  record
28
- } from "./chunk-DMBALCE2.js";
28
+ } from "./chunk-V2SBGVDO.js";
29
29
  import {
30
30
  fnv1a32,
31
31
  stableStringify
32
- } from "./chunk-GMPEOUP2.js";
32
+ } from "./chunk-4MZ7BT3R.js";
33
33
  import {
34
34
  __export
35
35
  } from "./chunk-PZ5AY32C.js";
@@ -40,7 +40,7 @@ __export(ModuleTag_exports, {
40
40
  Reducer: () => Reducer,
41
41
  make: () => make
42
42
  });
43
- import { Effect, FiberRef } from "effect";
43
+ import { Effect } from "effect";
44
44
 
45
45
  // src/internal/runtime/core/ModuleTraits.ts
46
46
  var ModuleTraitsConflictError = class extends Error {
@@ -59,24 +59,25 @@ var ModuleTraitsConflictError = class extends Error {
59
59
  }
60
60
  };
61
61
  var toProvenanceKey = (p) => `${p.originType}:${p.originId}:${p.originIdKind}:${p.originLabel}:${p.path ?? ""}`;
62
+ var compareString = (a, b) => a < b ? -1 : a > b ? 1 : 0;
62
63
  var compareProvenance = (a, b) => {
63
- const type = a.originType.localeCompare(b.originType);
64
+ const type = compareString(a.originType, b.originType);
64
65
  if (type !== 0) return type;
65
- const id = a.originId.localeCompare(b.originId);
66
+ const id = compareString(a.originId, b.originId);
66
67
  if (id !== 0) return id;
67
- const kind = a.originIdKind.localeCompare(b.originIdKind);
68
+ const kind = compareString(a.originIdKind, b.originIdKind);
68
69
  if (kind !== 0) return kind;
69
- const label = a.originLabel.localeCompare(b.originLabel);
70
+ const label = compareString(a.originLabel, b.originLabel);
70
71
  if (label !== 0) return label;
71
- return String(a.path ?? "").localeCompare(String(b.path ?? ""));
72
+ return compareString(String(a.path ?? ""), String(b.path ?? ""));
72
73
  };
73
74
  var originTypeOrder = (t) => t === "module" ? 0 : 1;
74
75
  var compareTraitIdByProvenance = (a, b) => {
75
76
  const ta = originTypeOrder(a.provenance.originType) - originTypeOrder(b.provenance.originType);
76
77
  if (ta !== 0) return ta;
77
- const oa = a.provenance.originId.localeCompare(b.provenance.originId);
78
+ const oa = compareString(a.provenance.originId, b.provenance.originId);
78
79
  if (oa !== 0) return oa;
79
- return a.traitId.localeCompare(b.traitId);
80
+ return compareString(a.traitId, b.traitId);
80
81
  };
81
82
  var extractStringArray = (value) => {
82
83
  if (!Array.isArray(value)) return [];
@@ -120,7 +121,7 @@ var finalizeTraitContributions = (args) => {
120
121
  for (const c of contributions) {
121
122
  const traits2 = c.traits;
122
123
  if (!traits2 || typeof traits2 !== "object") continue;
123
- for (const traitId of Object.keys(traits2).sort((a, b) => a.localeCompare(b))) {
124
+ for (const traitId of Object.keys(traits2).sort()) {
124
125
  const value = traits2[traitId];
125
126
  if (value === void 0) continue;
126
127
  const prev = traitById.get(traitId);
@@ -144,7 +145,7 @@ var finalizeTraitContributions = (args) => {
144
145
  sources: Array.from(unique.values()).sort(compareProvenance)
145
146
  });
146
147
  };
147
- for (const traitId of Array.from(duplicateSources.keys()).sort((a, b) => a.localeCompare(b))) {
148
+ for (const traitId of Array.from(duplicateSources.keys()).sort()) {
148
149
  registerConflict({
149
150
  kind: "duplicate_traitId",
150
151
  traitId,
@@ -183,7 +184,7 @@ var finalizeTraitContributions = (args) => {
183
184
  registerConflict({
184
185
  kind: "missing_requires",
185
186
  traitId,
186
- missing: Array.from(new Set(missing)).sort((a, b) => a.localeCompare(b)),
187
+ missing: Array.from(new Set(missing)).sort(),
187
188
  sources: [entry.provenance]
188
189
  });
189
190
  }
@@ -200,7 +201,7 @@ var finalizeTraitContributions = (args) => {
200
201
  registerConflict({
201
202
  kind: "excludes_violation",
202
203
  traitId,
203
- present: Array.from(new Set(presentExcluded)).sort((a, b) => a.localeCompare(b)),
204
+ present: Array.from(new Set(presentExcluded)).sort(),
204
205
  sources: [entry.provenance, ...otherSources]
205
206
  });
206
207
  }
@@ -215,7 +216,7 @@ var finalizeTraitContributions = (args) => {
215
216
  conflicts.sort((a, b) => {
216
217
  const k = kindOrder[a.kind] - kindOrder[b.kind];
217
218
  if (k !== 0) return k;
218
- return a.traitId.localeCompare(b.traitId);
219
+ return compareString(a.traitId, b.traitId);
219
220
  });
220
221
  throw new ModuleTraitsConflictError(args.moduleId, conflicts);
221
222
  }
@@ -307,7 +308,7 @@ var make = (id, def) => {
307
308
  const logic = moduleTag.logic(($) => ({
308
309
  setup: Effect.gen(function* () {
309
310
  const internals = getBoundInternals($);
310
- const diagnosticsLevel = yield* FiberRef.get(currentDiagnosticsLevel);
311
+ const diagnosticsLevel = yield* Effect.service(currentDiagnosticsLevel).pipe(Effect.orDie);
311
312
  const contributions = internals.traits.getModuleTraitsContributions();
312
313
  let merged;
313
314
  let snapshot;
@@ -394,4 +395,4 @@ export {
394
395
  make,
395
396
  ModuleTag_exports
396
397
  };
397
- //# sourceMappingURL=chunk-76WT3HOR.js.map
398
+ //# sourceMappingURL=chunk-6YZOXFPQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ModuleTag.ts","../src/internal/runtime/core/ModuleTraits.ts"],"sourcesContent":["import { Effect, Layer, Schema } from 'effect'\nimport * as Logic from './Logic.js'\nimport * as Action from './internal/action.js'\nimport * as ModuleFactory from './internal/runtime/ModuleFactory.js'\nimport type { FieldPath } from './internal/field-path.js'\nimport { mutateWithoutPatches, mutateWithPatchPaths } from './internal/runtime/core/mutativePatches.js'\nimport { getBoundInternals, setModuleTraitsProgram } from './internal/runtime/core/runtimeInternalsAccessor.js'\nimport * as Debug from './internal/runtime/core/DebugSink.js'\nimport * as LogicUnitMeta from './internal/runtime/core/LogicUnitMeta.js'\nimport type {\n ActionsFromMap,\n AnyModuleShape,\n AnySchema,\n BoundApi,\n ActionOf,\n ModuleImpl,\n ModuleLogic,\n ModuleShape,\n ModuleRuntime,\n ModuleTag,\n ModuleHandle,\n ModuleHandleUnion,\n StateChangeWithMeta,\n StateCommitMeta,\n StateCommitMode,\n StateCommitPriority,\n ReducersFromMap,\n StateOf,\n} from './internal/module.js'\nimport * as StateTrait from './StateTrait.js'\nimport type { StateTraitProgram } from './StateTrait.js'\nimport * as ModuleTraitsRegistry from './internal/debug/ModuleTraitsRegistry.js'\nimport * as ModuleTraits from './internal/runtime/core/ModuleTraits.js'\n\ntype NoInfer_<T> = [T][T extends any ? 0 : never]\n\n/**\n * Public exports for core type definitions such as ModuleTag / ModuleRuntime / ModuleImpl.\n *\n * Kept aligned with `docs/ssot/runtime/logix-core/api/02-module-and-logic-api.md`.\n * Concrete type definitions live in internal/module.ts; this module wires the factory implementation.\n */\nexport type {\n AnySchema,\n AnyModuleShape,\n ModuleShape,\n ModuleLogic,\n ModuleImpl,\n ModuleRuntime,\n ModuleRuntimeOfShape,\n ModuleTag,\n ModuleHandle,\n ModuleHandleUnion,\n StateOf,\n ActionsFromMap,\n ReducersFromMap,\n BoundApi,\n ActionOf,\n LogicEffect,\n DispatchEffect,\n ActionForTag,\n BoundApiRootApi,\n BoundApiStateApi,\n BoundApiDispatchersApi,\n BoundApiDispatchApi,\n BoundApiLifecycleApi,\n BoundApiUseApi,\n BoundApiTraitsApi,\n BoundApiReducerApi,\n StateCommitMode,\n StateCommitPriority,\n StateCommitMeta,\n StateChangeWithMeta,\n} from './internal/module.js'\n\n/**\n * Reducer helper:\n * - `Reducer.mutate` provides the same mutative style as `$.state.mutate`.\n * - Internally uses mutative-based immutable updates to map \"in-place draft mutation\" into a pure `(state, action) => state`.\n *\n * @example\n *\n * const Counter = Logix.ModuleTag.make(\"Counter\", {\n * state: CounterState,\n * actions: CounterActions,\n * reducers: {\n * inc: Logix.ModuleTag.Reducer.mutate((draft, _payload) => {\n * draft.count += 1\n * }),\n * },\n * })\n *\n * yield* $.reducer(\n * \"setValue\",\n * Logix.ModuleTag.Reducer.mutate((draft, payload) => {\n * draft.value = payload\n * }),\n * )\n */\nexport const Reducer = {\n mutate:\n <S, A extends { readonly payload?: any }>(\n mutator: (draft: Logic.Draft<S>, payload: A['payload']) => void,\n ): ((state: S, action: A, sink?: (path: string | FieldPath) => void) => S) =>\n (state, action, sink) => {\n const payload = (action as any)?.payload as A['payload']\n if (!sink) {\n return mutateWithoutPatches(state as S, (draft) => {\n mutator(draft as Logic.Draft<S>, payload)\n })\n }\n\n const { nextState, patchPaths } = mutateWithPatchPaths(state as S, (draft) => {\n mutator(draft as Logic.Draft<S>, payload)\n })\n\n for (const path of patchPaths) {\n sink(path)\n }\n\n return nextState\n },\n\n mutateMap: <\n R extends Readonly<\n Record<string, ((state: any, action: any, sink?: (path: string | FieldPath) => void) => any) | undefined>\n >,\n >(mutators: {\n readonly [K in keyof NoInfer_<R>]?: (\n draft: Logic.Draft<Parameters<NonNullable<NoInfer_<R>[K]>>[0]>,\n payload: Parameters<NonNullable<NoInfer_<R>[K]>>[1] extends { readonly payload: infer P }\n ? P\n : Parameters<NonNullable<NoInfer_<R>[K]>>[1] extends { readonly payload?: infer P }\n ? P | undefined\n : never,\n ) => void\n }): R => {\n const out: Record<string, unknown> = {}\n for (const key of Object.keys(mutators)) {\n const mutator = (mutators as any)[key]\n if (typeof mutator !== 'function') continue\n out[key] = Reducer.mutate(mutator as any)\n }\n return out as any\n },\n}\n\n/**\n * A simplified Shape definition helper, designed for Action Maps.\n * @example type MyShape = Shape<typeof MyState, typeof MyActionMap>\n */\nexport type ActionTokenMap<ADefs extends Action.ActionDefs> = Action.NormalizedActionTokens<ADefs>\n\nexport type ActionUnionOf<ADefs extends Action.ActionDefs> = ActionsFromMap<ActionTokenMap<ADefs>>\n\nexport type ActionSchemaOf<ADefs extends Action.ActionDefs> = Schema.Schema<ActionUnionOf<ADefs>>\n\nexport type Shape<SSchema extends AnySchema, ADefs extends Action.ActionDefs> = ModuleShape<\n SSchema,\n ActionSchemaOf<ADefs>,\n ActionTokenMap<ADefs>\n>\n\nexport type ShapeFromActionTokenMap<\n SSchema extends AnySchema,\n AMap extends Record<string, Action.AnyActionToken>,\n> = ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>\n\nconst makeImpl = <Id extends string, SSchema extends AnySchema, AMap extends Record<string, Action.AnyActionToken>>(\n id: Id,\n def: {\n readonly state: SSchema\n readonly actions: AMap\n readonly reducers?: ReducersFromMap<SSchema, AMap>\n },\n): ModuleTag<Id, ShapeFromActionTokenMap<SSchema, AMap>> =>\n ModuleFactory.Module(id, def) as ModuleTag<Id, ShapeFromActionTokenMap<SSchema, AMap>>\n\n/**\n * ModuleTag.make:\n * - Defines a domain module Tag using the given id and state/actions/reducers.\n * - The returned ModuleTag is both a Context.Tag and a factory carrying its Shape.\n *\n * Note: since 022, the old `Module` (Tag identity) was renamed to `ModuleTag`; use `Logix.Module` for module definition objects.\n */\nexport const make = <Id extends string, SSchema extends AnySchema, ADefs extends Action.ActionDefs>(\n id: Id,\n def: {\n readonly state: SSchema\n readonly actions: ADefs\n readonly reducers?: ReducersFromMap<SSchema, ADefs>\n /**\n * traits:\n * - Used to attach a StateTraitSpec (see specs/000-module-traits-runtime).\n * - The current implementation builds a Program during ModuleTag.make, and injects a setup-only Logic in `ModuleTag.implement`\n * to call `StateTrait.install`.\n * (Note: if you use `ModuleTag.live` to export a Layer and want trait behavior, call `StateTrait.install` explicitly in logics,\n * or use `ModuleTag.implement` instead.)\n */\n readonly traits?: unknown\n },\n): ModuleTag<Id, Shape<SSchema, ADefs>> => {\n const actions = Action.normalizeActions(def.actions)\n const moduleTag: ModuleTag<Id, Shape<SSchema, ADefs>> = makeImpl(id, {\n state: def.state,\n actions,\n reducers: def.reducers as any,\n })\n\n type Sh = Shape<SSchema, ADefs>\n\n const stateSchema = def.state as Schema.Schema<any>\n const moduleTraitsSpec = def.traits as StateTrait.StateTraitSpec<any> | undefined\n const baseProgram: StateTraitProgram<any> | undefined = moduleTraitsSpec\n ? StateTrait.build(stateSchema as any, moduleTraitsSpec as any)\n : undefined\n\n if (baseProgram) {\n // For TraitLifecycle/Debug/Devtools reads (definition-side hidden slot).\n setModuleTraitsProgram(moduleTag as any, baseProgram)\n ModuleTraitsRegistry.registerModuleProgram(id, baseProgram as StateTraitProgram<any>)\n }\n\n // 023: consolidate the trait \"declaration/merge entry points\" into the setup phase:\n // - module-level traits register as contributions first;\n // - logic-level declares via $.traits.declare;\n // - finally, finalize → freeze → build/install in one shot.\n\n const makeModuleTraitsContributionLogic = (traits: unknown): ModuleLogic<Sh, never, never> => {\n const logic = moduleTag.logic(($) => ({\n setup: Effect.sync(() => {\n if (!traits || typeof traits !== 'object') return\n // module-level provenance uses moduleId as the stable anchor\n // (aligned with 023 data-model: originType=module, originId=moduleId).\n // Note: traitsSpec still reuses StateTraitSpec; do not introduce a second IR.\n const internals = getBoundInternals($ as any)\n internals.traits.registerModuleTraitsContribution({\n traits,\n provenance: {\n originType: 'module',\n originId: id,\n originIdKind: 'explicit',\n originLabel: `module:${id}`,\n },\n })\n }),\n run: Effect.void,\n })) as ModuleLogic<Sh, never, never>\n\n LogicUnitMeta.attachLogicUnitMeta(logic as any, {\n id: '__logix_internal:traits:module_contrib',\n kind: 'internal',\n name: 'traits:module_contrib',\n moduleId: id,\n })\n return logic\n }\n\n const makeFinalizeTraitsLogic = (): ModuleLogic<Sh, never, never> => {\n const logic = moduleTag.logic(($) => ({\n setup: Effect.gen(function* () {\n const internals = getBoundInternals($ as any)\n const diagnosticsLevel = yield* Effect.service(Debug.currentDiagnosticsLevel).pipe(Effect.orDie)\n\n const contributions = internals.traits.getModuleTraitsContributions()\n let merged: ModuleTraits.TraitSpec\n let snapshot: ModuleTraits.ModuleTraitsSnapshot\n\n try {\n ;({ merged, snapshot } = ModuleTraits.finalizeTraitContributions({\n moduleId: id,\n contributions,\n }))\n } catch (cause) {\n if (\n diagnosticsLevel !== 'off' &&\n cause &&\n typeof cause === 'object' &&\n (cause as any)._tag === 'ModuleTraitsConflictError'\n ) {\n const conflicts = Array.isArray((cause as any).conflicts)\n ? ((cause as any).conflicts as ReadonlyArray<unknown>)\n : []\n const traitIds = conflicts\n .map((c: any) => (c && typeof c === 'object' ? (c as any).traitId : undefined))\n .filter((t): t is string => typeof t === 'string' && t.length > 0)\n .slice(0, 20)\n\n const data =\n diagnosticsLevel === 'full'\n ? {\n conflictCount: conflicts.length,\n conflicts,\n }\n : {\n conflictCount: conflicts.length,\n traitIds,\n }\n\n yield* Debug.record({\n type: 'trace:module:traits:conflict',\n moduleId: id,\n instanceId: internals.instanceId,\n data,\n } as any)\n }\n\n throw cause\n }\n\n internals.traits.setModuleTraitsSnapshot(snapshot)\n internals.traits.freezeModuleTraits()\n\n if (diagnosticsLevel !== 'off') {\n const data =\n diagnosticsLevel === 'full'\n ? {\n digest: snapshot.digest,\n count: snapshot.traits.length,\n traits: snapshot.traits,\n provenanceIndex: snapshot.provenanceIndex,\n }\n : {\n digest: snapshot.digest,\n count: snapshot.traits.length,\n }\n\n yield* Debug.record({\n type: 'trace:module:traits',\n moduleId: id,\n instanceId: internals.instanceId,\n data,\n } as any)\n }\n\n if (Object.keys(merged).length === 0) {\n return\n }\n\n const onlyModuleLevel = contributions.length === 1 && contributions[0]?.provenance?.originType === 'module'\n\n // Build a one-shot Program from the final merged Spec, and install it during initialization.\n // - If there is only a module-level contribution, reuse the program built in ModuleTag.make (useful for Debug/TraitLifecycle).\n const program =\n onlyModuleLevel && baseProgram ? baseProgram : StateTrait.build(stateSchema as any, merged as any)\n\n // For TraitLifecycle/Debug/Devtools reads (definition-side hidden slot).\n setModuleTraitsProgram(moduleTag as any, program)\n ModuleTraitsRegistry.registerModuleProgram(id, program as StateTraitProgram<any>)\n\n yield* StateTrait.install($ as unknown as BoundApi<any, any>, program)\n }),\n run: Effect.void,\n })) as ModuleLogic<Sh, never, never>\n\n LogicUnitMeta.attachLogicUnitMeta(logic as any, {\n id: '__logix_internal:traits:finalize',\n kind: 'internal',\n name: 'traits:finalize',\n moduleId: id,\n })\n\n return logic\n }\n\n // Wrap implement: inject (1) optional module-level contribution logic, and (2) required finalize+install logic.\n const originalImplement = moduleTag.implement\n ;(moduleTag as any).implement = (<R = never>(config: {\n initial: StateOf<typeof moduleTag.shape>\n logics?: Array<ModuleLogic<typeof moduleTag.shape, R, any>>\n imports?: ReadonlyArray<Layer.Layer<any, any, any> | ModuleImpl<any, AnyModuleShape, any>>\n processes?: ReadonlyArray<Effect.Effect<void, any, any>>\n }) => {\n const userLogics = (config.logics ?? []) as Array<ModuleLogic<typeof moduleTag.shape, R, any>>\n\n const moduleLevel = def.traits ? [makeModuleTraitsContributionLogic(def.traits) as any] : []\n\n const finalize = makeFinalizeTraitsLogic() as ModuleLogic<typeof moduleTag.shape, R, any>\n\n const mergedLogics = [...moduleLevel, ...userLogics, finalize]\n\n return originalImplement<R>({\n ...config,\n logics: mergedLogics,\n })\n }) as typeof moduleTag.implement\n\n return moduleTag\n}\n","import { fnv1a32, stableStringify } from '../../digest.js'\n\nexport type TraitId = string\n\nexport type TraitOriginType = 'module' | 'logicUnit'\nexport type TraitOriginIdKind = 'explicit' | 'derived'\n\nexport interface TraitProvenance {\n readonly originType: TraitOriginType\n readonly originId: string\n readonly originIdKind: TraitOriginIdKind\n /**\n * Human-readable label for Devtools/error messages (e.g. \"logicUnit:Profile#1\").\n */\n readonly originLabel: string\n /**\n * Optional location summary (e.g. file path / callsite); for navigation only and not used for semantic decisions.\n */\n readonly path?: string\n}\n\n/**\n * TraitSpec:\n * - Minimal representation of \"trait declarations\": a record keyed by traitId.\n * - The concrete value shape is defined by the specific trait system (e.g. StateTraitSpec).\n * - Value serializability is not constrained here (runtime install may depend on functions), but snapshots/evidence exports\n * must only include serializable subsets.\n */\nexport type TraitSpec = object\n\nexport interface TraitContribution {\n readonly traits: TraitSpec\n readonly provenance: TraitProvenance\n}\n\nexport interface ModuleTraitItem {\n readonly traitId: TraitId\n readonly name: string\n readonly description?: string\n}\n\nexport type TraitConflictKind = 'duplicate_traitId' | 'missing_requires' | 'excludes_violation'\n\nexport interface TraitConflict {\n readonly kind: TraitConflictKind\n readonly traitId: TraitId\n readonly sources: ReadonlyArray<TraitProvenance>\n readonly missing?: ReadonlyArray<TraitId>\n readonly present?: ReadonlyArray<TraitId>\n}\n\nexport class ModuleTraitsConflictError extends Error {\n readonly _tag = 'ModuleTraitsConflictError'\n\n constructor(\n readonly moduleId: string,\n readonly conflicts: ReadonlyArray<TraitConflict>,\n ) {\n super(\n [\n `[ModuleTraitsConflictError] Conflicting traitIds found (moduleId=${moduleId}).`,\n ...conflicts.map((c) =>\n c.kind === 'duplicate_traitId'\n ? `- duplicate ${c.traitId}: ${c.sources.map((s) => `${s.originType}:${s.originId}`).join(', ')}`\n : c.kind === 'missing_requires'\n ? `- missing requires for ${c.traitId}: ${(c.missing ?? []).join(', ')}; sources=${c.sources\n .map((s) => `${s.originType}:${s.originId}`)\n .join(', ')}`\n : `- excludes violation for ${c.traitId}: present=${(c.present ?? []).join(', ')}; sources=${c.sources\n .map((s) => `${s.originType}:${s.originId}`)\n .join(', ')}`,\n ),\n ].join('\\n'),\n )\n }\n}\n\nexport interface ModuleTraitsSnapshot {\n readonly moduleId: string\n readonly digest: string\n readonly traits: ReadonlyArray<ModuleTraitItem>\n readonly provenanceIndex: Record<TraitId, TraitProvenance>\n}\n\nconst toProvenanceKey = (p: TraitProvenance): string =>\n `${p.originType}:${p.originId}:${p.originIdKind}:${p.originLabel}:${p.path ?? ''}`\n\nconst compareString = (a: string, b: string): number => (a < b ? -1 : a > b ? 1 : 0)\n\nconst compareProvenance = (a: TraitProvenance, b: TraitProvenance): number => {\n const type = compareString(a.originType, b.originType)\n if (type !== 0) return type\n const id = compareString(a.originId, b.originId)\n if (id !== 0) return id\n const kind = compareString(a.originIdKind, b.originIdKind)\n if (kind !== 0) return kind\n const label = compareString(a.originLabel, b.originLabel)\n if (label !== 0) return label\n return compareString(String(a.path ?? ''), String(b.path ?? ''))\n}\n\nconst originTypeOrder = (t: TraitOriginType): number => (t === 'module' ? 0 : 1)\n\nconst compareTraitIdByProvenance = (\n a: { readonly traitId: TraitId; readonly provenance: TraitProvenance },\n b: { readonly traitId: TraitId; readonly provenance: TraitProvenance },\n): number => {\n const ta = originTypeOrder(a.provenance.originType) - originTypeOrder(b.provenance.originType)\n if (ta !== 0) return ta\n const oa = compareString(a.provenance.originId, b.provenance.originId)\n if (oa !== 0) return oa\n return compareString(a.traitId, b.traitId)\n}\n\nconst extractStringArray = (value: unknown): ReadonlyArray<string> => {\n if (!Array.isArray(value)) return []\n const out: Array<string> = []\n for (const v of value) {\n if (typeof v !== 'string') continue\n const s = v.trim()\n if (!s) continue\n out.push(s)\n }\n return out\n}\n\nconst getTraitRequires = (value: unknown): ReadonlyArray<TraitId> => {\n if (!value || typeof value !== 'object') return []\n const direct = extractStringArray((value as any).requires)\n return direct\n}\n\nconst getTraitExcludes = (value: unknown): ReadonlyArray<TraitId> => {\n if (!value || typeof value !== 'object') return []\n const direct = extractStringArray((value as any).excludes)\n return direct\n}\n\nconst getTraitName = (traitId: TraitId, value: unknown): string => {\n if (value && typeof value === 'object') {\n const n = (value as any).name\n if (typeof n === 'string' && n.trim().length > 0) return n.trim()\n }\n return traitId\n}\n\nconst getTraitDescription = (value: unknown): string | undefined => {\n if (value && typeof value === 'object') {\n const d = (value as any).description\n if (typeof d === 'string' && d.trim().length > 0) return d.trim()\n }\n return undefined\n}\n\nexport const finalizeTraitContributions = (args: {\n readonly moduleId: string\n readonly contributions: ReadonlyArray<TraitContribution>\n}): { readonly merged: TraitSpec; readonly snapshot: ModuleTraitsSnapshot } => {\n const traitById = new Map<TraitId, { readonly value: unknown; readonly provenance: TraitProvenance }>()\n\n const duplicateSources = new Map<TraitId, Array<TraitProvenance>>()\n\n const contributions = [...args.contributions].sort((a, b) => compareProvenance(a.provenance, b.provenance))\n\n for (const c of contributions) {\n const traits = c.traits\n if (!traits || typeof traits !== 'object') continue\n for (const traitId of Object.keys(traits).sort()) {\n const value = (traits as Record<string, unknown>)[traitId]\n if (value === undefined) continue\n\n const prev = traitById.get(traitId)\n if (!prev) {\n traitById.set(traitId, { value, provenance: c.provenance })\n continue\n }\n\n const sources = duplicateSources.get(traitId) ?? [prev.provenance]\n sources.push(c.provenance)\n duplicateSources.set(traitId, sources)\n }\n }\n\n const conflicts: Array<TraitConflict> = []\n const registerConflict = (conflict: TraitConflict) => {\n const unique = new Map<string, TraitProvenance>()\n for (const s of conflict.sources) {\n unique.set(toProvenanceKey(s), s)\n }\n conflicts.push({\n ...conflict,\n sources: Array.from(unique.values()).sort(compareProvenance),\n })\n }\n\n // 1) duplicate traitId conflicts\n for (const traitId of Array.from(duplicateSources.keys()).sort()) {\n registerConflict({\n kind: 'duplicate_traitId',\n traitId,\n sources: duplicateSources.get(traitId) ?? [],\n })\n }\n\n const merged: Record<string, unknown> = {}\n const provenanceIndex: Record<string, TraitProvenance> = {}\n const traits: Array<ModuleTraitItem> = []\n\n const entries: Array<{ readonly traitId: TraitId; readonly value: unknown; readonly provenance: TraitProvenance }> =\n []\n for (const traitId of traitById.keys()) {\n const entry = traitById.get(traitId)\n if (!entry) continue\n entries.push({ traitId, value: entry.value, provenance: entry.provenance })\n }\n\n const ids = entries\n .slice()\n .sort(compareTraitIdByProvenance)\n .map((e) => e.traitId)\n\n for (const traitId of ids) {\n const entry = traitById.get(traitId)\n if (!entry) continue\n merged[traitId] = entry.value\n provenanceIndex[traitId] = entry.provenance\n traits.push({\n traitId,\n name: getTraitName(traitId, entry.value),\n description: getTraitDescription(entry.value),\n })\n }\n\n // 2) consistency checks (FR-007): requires / excludes\n const present = new Set(ids)\n\n for (const traitId of ids) {\n const entry = traitById.get(traitId)\n if (!entry) continue\n\n const requires = getTraitRequires(entry.value)\n if (requires.length > 0) {\n const missing = requires.filter((r) => !present.has(r))\n if (missing.length > 0) {\n registerConflict({\n kind: 'missing_requires',\n traitId,\n missing: Array.from(new Set(missing)).sort(),\n sources: [entry.provenance],\n })\n }\n }\n\n const excludes = getTraitExcludes(entry.value)\n if (excludes.length > 0) {\n const presentExcluded = excludes.filter((e) => present.has(e))\n if (presentExcluded.length > 0) {\n const otherSources: Array<TraitProvenance> = []\n for (const otherId of presentExcluded) {\n const other = traitById.get(otherId)\n if (other) otherSources.push(other.provenance)\n }\n registerConflict({\n kind: 'excludes_violation',\n traitId,\n present: Array.from(new Set(presentExcluded)).sort(),\n sources: [entry.provenance, ...otherSources],\n })\n }\n }\n }\n\n if (conflicts.length > 0) {\n const kindOrder: Record<TraitConflictKind, number> = {\n duplicate_traitId: 0,\n missing_requires: 1,\n excludes_violation: 2,\n }\n conflicts.sort((a, b) => {\n const k = kindOrder[a.kind] - kindOrder[b.kind]\n if (k !== 0) return k\n return compareString(a.traitId, b.traitId)\n })\n throw new ModuleTraitsConflictError(args.moduleId, conflicts)\n }\n\n const digestBase = {\n moduleId: args.moduleId,\n traits,\n provenanceIndex,\n } as const\n\n const digest = `mtraits:023:${fnv1a32(stableStringify(digestBase))}`\n\n return {\n merged,\n snapshot: {\n moduleId: args.moduleId,\n digest,\n traits,\n provenanceIndex,\n },\n }\n}\n"],"mappings":"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","names":["traits"]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  layerFromContext,
3
3
  resolve
4
- } from "./chunk-AUIR5O6W.js";
4
+ } from "./chunk-AFSB6NKM.js";
5
5
  import {
6
6
  __export
7
7
  } from "./chunk-PZ5AY32C.js";
@@ -20,4 +20,4 @@ export {
20
20
  layerFromContext2 as layerFromContext,
21
21
  Root_exports
22
22
  };
23
- //# sourceMappingURL=chunk-G5ZBFPNU.js.map
23
+ //# sourceMappingURL=chunk-A2RQOJC7.js.map
@@ -1,17 +1,12 @@
1
+ import {
2
+ RootContextTag
3
+ } from "./chunk-YZDJMAKL.js";
1
4
  import {
2
5
  isDevEnv
3
- } from "./chunk-3QMIVH35.js";
4
-
5
- // src/internal/root.ts
6
- import { Context as Context2, Deferred as Deferred2, Effect, Layer } from "effect";
7
-
8
- // src/internal/runtime/core/RootContext.ts
9
- import { Context } from "effect";
10
- var RootContextTagImpl = class extends Context.Tag("@logixjs/core/RootContext")() {
11
- };
12
- var RootContextTag = RootContextTagImpl;
6
+ } from "./chunk-S4S5N4BJ.js";
13
7
 
14
8
  // src/internal/root.ts
9
+ import { Deferred, Effect, Layer, ServiceMap } from "effect";
15
10
  var tagIdOf = (tag) => typeof tag?.id === "string" ? String(tag.id) : typeof tag?.key === "string" ? String(tag.key) : "<unknown tag>";
16
11
  var makeMissingRootProviderError = (tag, entrypoint, extra) => {
17
12
  const dev = isDevEnv();
@@ -44,32 +39,31 @@ ${extra}` : "",
44
39
  };
45
40
  var resolve = (tag, options) => Effect.gen(function* () {
46
41
  const entrypoint = options?.entrypoint ?? "logic.root.resolve";
47
- const root = yield* RootContextTag;
48
- const rootContext = root.context ?? (options?.waitForReady ? yield* root.ready : void 0);
42
+ const root = yield* Effect.service(RootContextTag).pipe(Effect.orDie);
43
+ const rootContext = root.context ?? (options?.waitForReady ? yield* Deferred.await(root.ready) : void 0);
49
44
  if (!rootContext) {
50
45
  return yield* Effect.die(
51
46
  makeMissingRootProviderError(tag, entrypoint, "reason: rootContextNotReady")
52
47
  );
53
48
  }
54
49
  try {
55
- return Context2.get(rootContext, tag);
50
+ return ServiceMap.get(rootContext, tag);
56
51
  } catch {
57
52
  return yield* Effect.die(makeMissingRootProviderError(tag, entrypoint));
58
53
  }
59
54
  });
60
- var layerFromContext = (context) => Layer.scoped(
55
+ var layerFromContext = (context) => Layer.effect(
61
56
  RootContextTag,
62
57
  Effect.gen(function* () {
63
- const ready = yield* Deferred2.make();
64
- yield* Deferred2.succeed(ready, context);
65
- const root = { context, ready };
58
+ const ready = yield* Deferred.make();
59
+ yield* Deferred.succeed(ready, context);
60
+ const root = { context, ready, lifecycle: { state: "ready" } };
66
61
  return root;
67
62
  })
68
63
  );
69
64
 
70
65
  export {
71
- RootContextTag,
72
66
  resolve,
73
67
  layerFromContext
74
68
  };
75
- //# sourceMappingURL=chunk-AUIR5O6W.js.map
69
+ //# sourceMappingURL=chunk-AFSB6NKM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/root.ts"],"sourcesContent":["import { Deferred, Effect, Layer, ServiceMap } from 'effect'\nimport { isDevEnv } from './runtime/core/env.js'\nimport { RootContextTag, type RootContext } from './runtime/core/RootContext.js'\n\nexport type RootResolveEntrypoint = 'logic.root.resolve' | 'logic.$.root.resolve'\n\nexport interface RootResolveOptions {\n readonly entrypoint?: RootResolveEntrypoint\n /**\n * Whether to wait when RootContext is not ready yet:\n * - Default false: avoid misuse during layer/setup which can deadlock.\n * - `$.root.resolve` passes true in the run phase (run-only), allowing Env assembly to complete.\n */\n readonly waitForReady?: boolean\n}\n\nconst tagIdOf = (tag: ServiceMap.Key<any, any>): string =>\n typeof (tag as any)?.id === 'string'\n ? String((tag as any).id)\n : typeof (tag as any)?.key === 'string'\n ? String((tag as any).key)\n : '<unknown tag>'\n\nconst makeMissingRootProviderError = (\n tag: ServiceMap.Key<any, any>,\n entrypoint: RootResolveEntrypoint,\n extra?: string,\n): Error => {\n const dev = isDevEnv()\n const tokenId = tagIdOf(tag)\n const fix: string[] = dev\n ? [\n '- Provide it when creating the runtime tree (Logix.Runtime.make(...,{ layer }) / ManagedRuntime.make(Layer.mergeAll(...))).',\n \"- If you're in React and want the current runtime environment singleton, use useModule(ModuleTag).\",\n '- Do not rely on nested RuntimeProvider.layer to mock Root.resolve.',\n ]\n : []\n\n const message = dev\n ? [\n '[MissingRootProviderError] Cannot resolve Tag from root provider.',\n extra ? `\\n${extra}` : '',\n `tokenId: ${tokenId}`,\n `entrypoint: ${entrypoint}`,\n 'mode: global',\n 'startScope: root',\n '',\n 'fix:',\n ...fix,\n ]\n .filter((s) => s.length > 0)\n .join('\\n')\n : '[MissingRootProviderError] tag not found in root provider'\n\n const err = new Error(message)\n err.name = 'MissingRootProviderError'\n ;(err as any).tokenId = tokenId\n ;(err as any).entrypoint = entrypoint\n ;(err as any).mode = 'global'\n ;(err as any).startScope = { kind: 'root' }\n ;(err as any).fix = fix\n return err\n}\n\n/**\n * resolve\n *\n * Resolve a Tag explicitly from the root provider of the current Runtime tree (ServiceTag / ModuleTag).\n *\n * Semantics:\n * - Always reads rootContext; unaffected by nearer-scope Layer/Context overrides.\n * - For ModuleTag: expresses root singleton semantics only (not used for multi-instance selection).\n */\nexport const resolve = <Id, Svc>(\n tag: ServiceMap.Key<Id, Svc>,\n options?: RootResolveOptions,\n): Effect.Effect<Svc, never, any> =>\n Effect.gen(function* () {\n const entrypoint: RootResolveEntrypoint = options?.entrypoint ?? 'logic.root.resolve'\n\n const root = yield* Effect.service(RootContextTag).pipe(Effect.orDie)\n\n const rootContext = root.context ?? (options?.waitForReady ? yield* Deferred.await(root.ready) : undefined)\n\n if (!rootContext) {\n return yield* Effect.die(\n makeMissingRootProviderError(tag as ServiceMap.Key<any, any>, entrypoint, 'reason: rootContextNotReady'),\n )\n }\n\n try {\n return ServiceMap.get(rootContext, tag as ServiceMap.Key<any, any>) as Svc\n } catch {\n return yield* Effect.die(makeMissingRootProviderError(tag as ServiceMap.Key<any, any>, entrypoint))\n }\n })\n\n/**\n * layerFromContext(tests/perf only)\n *\n * Provide a \"ready immediately\" RootContext for Root.resolve.\n * - `ready` is fulfilled immediately to avoid extra waits when waitForReady=true.\n */\nexport const layerFromContext = (context: ServiceMap.ServiceMap<any>): Layer.Layer<any, never, any> =>\n Layer.effect(\n RootContextTag,\n Effect.gen(function* () {\n const ready = yield* Deferred.make<ServiceMap.ServiceMap<any>>()\n yield* Deferred.succeed(ready, context)\n const root: RootContext = { context, ready, lifecycle: { state: 'ready' } }\n return root\n }),\n )\n"],"mappings":";;;;;;;;AAAA,SAAS,UAAU,QAAQ,OAAO,kBAAkB;AAgBpD,IAAM,UAAU,CAAC,QACf,OAAQ,KAAa,OAAO,WACxB,OAAQ,IAAY,EAAE,IACtB,OAAQ,KAAa,QAAQ,WAC3B,OAAQ,IAAY,GAAG,IACvB;AAER,IAAM,+BAA+B,CACnC,KACA,YACA,UACU;AACV,QAAM,MAAM,SAAS;AACrB,QAAM,UAAU,QAAQ,GAAG;AAC3B,QAAM,MAAgB,MAClB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,EACF,IACA,CAAC;AAEL,QAAM,UAAU,MACZ;AAAA,IACE;AAAA,IACA,QAAQ;AAAA,EAAK,KAAK,KAAK;AAAA,IACvB,YAAY,OAAO;AAAA,IACnB,eAAe,UAAU;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,EACG,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAC1B,KAAK,IAAI,IACZ;AAEJ,QAAM,MAAM,IAAI,MAAM,OAAO;AAC7B,MAAI,OAAO;AACV,EAAC,IAAY,UAAU;AACvB,EAAC,IAAY,aAAa;AAC1B,EAAC,IAAY,OAAO;AACpB,EAAC,IAAY,aAAa,EAAE,MAAM,OAAO;AACzC,EAAC,IAAY,MAAM;AACpB,SAAO;AACT;AAWO,IAAM,UAAU,CACrB,KACA,YAEA,OAAO,IAAI,aAAa;AACtB,QAAM,aAAoC,SAAS,cAAc;AAEjE,QAAM,OAAO,OAAO,OAAO,QAAQ,cAAc,EAAE,KAAK,OAAO,KAAK;AAEpE,QAAM,cAAc,KAAK,YAAY,SAAS,eAAe,OAAO,SAAS,MAAM,KAAK,KAAK,IAAI;AAEjG,MAAI,CAAC,aAAa;AAChB,WAAO,OAAO,OAAO;AAAA,MACnB,6BAA6B,KAAiC,YAAY,6BAA6B;AAAA,IACzG;AAAA,EACF;AAEA,MAAI;AACF,WAAO,WAAW,IAAI,aAAa,GAA+B;AAAA,EACpE,QAAQ;AACN,WAAO,OAAO,OAAO,IAAI,6BAA6B,KAAiC,UAAU,CAAC;AAAA,EACpG;AACF,CAAC;AAQI,IAAM,mBAAmB,CAAC,YAC/B,MAAM;AAAA,EACJ;AAAA,EACA,OAAO,IAAI,aAAa;AACtB,UAAM,QAAQ,OAAO,SAAS,KAAiC;AAC/D,WAAO,SAAS,QAAQ,OAAO,OAAO;AACtC,UAAM,OAAoB,EAAE,SAAS,OAAO,WAAW,EAAE,OAAO,QAAQ,EAAE;AAC1E,WAAO;AAAA,EACT,CAAC;AACH;","names":[]}