@logixjs/core 0.0.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/LICENSE +201 -0
  2. package/dist/{Action-mqVvtEHt.d.ts → Action-DYl88bwj.d.ts} +1 -1
  3. package/dist/{Action-BkRHy2vg.d.cts → Action-DkxsI_DK.d.cts} +1 -1
  4. package/dist/Action.cjs.map +1 -1
  5. package/dist/Action.d.cts +1 -1
  6. package/dist/Action.d.ts +1 -1
  7. package/dist/Action.js +2 -2
  8. package/dist/{Actions-AsQ07yTP.d.cts → Actions-Dicm7jdc.d.cts} +2 -2
  9. package/dist/{Actions-AsQ07yTP.d.ts → Actions-Dicm7jdc.d.ts} +2 -2
  10. package/dist/Actions.cjs.map +1 -1
  11. package/dist/Actions.d.cts +1 -1
  12. package/dist/Actions.d.ts +1 -1
  13. package/dist/Actions.js +1 -1
  14. package/dist/{Bound-BN1DQ_lM.d.ts → Bound-1OJLzVIS.d.ts} +2 -2
  15. package/dist/{Bound-BPIfH9SS.d.cts → Bound-BMLrtQ1V.d.cts} +2 -2
  16. package/dist/Bound.cjs +1737 -399
  17. package/dist/Bound.cjs.map +1 -1
  18. package/dist/Bound.d.cts +5 -5
  19. package/dist/Bound.d.ts +5 -5
  20. package/dist/Bound.js +19 -17
  21. package/dist/{Debug-B5q5Bkzx.d.ts → Debug-DKrWP5H1.d.ts} +40 -22
  22. package/dist/{Debug-Bq8Sqjcr.d.cts → Debug-hIT44XsY.d.cts} +40 -22
  23. package/dist/Debug.cjs +1348 -318
  24. package/dist/Debug.cjs.map +1 -1
  25. package/dist/Debug.d.cts +12 -11
  26. package/dist/Debug.d.ts +12 -11
  27. package/dist/Debug.js +20 -11
  28. package/dist/EffectOp.cjs +15 -6
  29. package/dist/EffectOp.cjs.map +1 -1
  30. package/dist/EffectOp.js +3 -3
  31. package/dist/Env.cjs +772 -6
  32. package/dist/Env.cjs.map +1 -1
  33. package/dist/Env.js +5 -2
  34. package/dist/ExternalStore-DqJKKRJ4.d.ts +61 -0
  35. package/dist/ExternalStore-JC-gAgEI.d.cts +61 -0
  36. package/dist/ExternalStore.cjs +774 -0
  37. package/dist/ExternalStore.cjs.map +1 -0
  38. package/dist/ExternalStore.d.cts +8 -0
  39. package/dist/ExternalStore.d.ts +8 -0
  40. package/dist/ExternalStore.js +19 -0
  41. package/dist/ExternalStore.js.map +1 -0
  42. package/dist/{Flow-BhpjE22E.d.ts → Flow-CZmXRDqp.d.cts} +13 -4
  43. package/dist/{Flow-1fZT8MpX.d.cts → Flow-DIVDxz7R.d.ts} +13 -4
  44. package/dist/Flow.cjs +765 -148
  45. package/dist/Flow.cjs.map +1 -1
  46. package/dist/Flow.d.cts +6 -6
  47. package/dist/Flow.d.ts +6 -6
  48. package/dist/Flow.js +9 -8
  49. package/dist/{Handle-D_cLW1Z3.d.ts → Handle-Bo6cAFut.d.ts} +1 -1
  50. package/dist/{Handle-D8D1zPb_.d.cts → Handle-CfDvSqN7.d.cts} +1 -1
  51. package/dist/Handle.d.cts +5 -5
  52. package/dist/Handle.d.ts +5 -5
  53. package/dist/{Kernel-8kC-jOda.d.cts → Kernel-CuXBF9S_.d.cts} +16 -7
  54. package/dist/{Kernel-CnGE1Fyk.d.ts → Kernel-D9guNwRL.d.ts} +16 -7
  55. package/dist/Kernel.cjs +814 -26
  56. package/dist/Kernel.cjs.map +1 -1
  57. package/dist/Kernel.d.cts +13 -12
  58. package/dist/Kernel.d.ts +13 -12
  59. package/dist/Kernel.js +7 -4
  60. package/dist/{Link-Db7975nU.d.ts → Link-CUM0yUCH.d.ts} +10 -3
  61. package/dist/{Link-fX8x1eCK.d.cts → Link-NAfR6uGD.d.cts} +10 -3
  62. package/dist/Link.cjs +1294 -121
  63. package/dist/Link.cjs.map +1 -1
  64. package/dist/Link.d.cts +5 -5
  65. package/dist/Link.d.ts +5 -5
  66. package/dist/Link.js +37 -29
  67. package/dist/{Logic-DRh4sDZj.d.cts → Logic-09VQpIj3.d.cts} +7 -4
  68. package/dist/{Logic-BRjEMr-W.d.ts → Logic-DKg7ghGy.d.ts} +7 -4
  69. package/dist/Logic.cjs +2 -1
  70. package/dist/Logic.cjs.map +1 -1
  71. package/dist/Logic.d.cts +5 -5
  72. package/dist/Logic.d.ts +5 -5
  73. package/dist/Logic.js +1 -1
  74. package/dist/{MatchBuilder-CJk5oCkR.d.cts → MatchBuilder-CsW5jgrL.d.ts} +1 -1
  75. package/dist/{MatchBuilder-0QOc-nlU.d.ts → MatchBuilder-Dksk07F4.d.cts} +1 -1
  76. package/dist/MatchBuilder.cjs +2 -2
  77. package/dist/MatchBuilder.cjs.map +1 -1
  78. package/dist/MatchBuilder.d.cts +6 -6
  79. package/dist/MatchBuilder.d.ts +6 -6
  80. package/dist/MatchBuilder.js +2 -2
  81. package/dist/Middleware-D8tUDLv_.d.cts +100 -0
  82. package/dist/Middleware-DS7CbTTN.d.ts +100 -0
  83. package/dist/Middleware.cjs +678 -58
  84. package/dist/Middleware.cjs.map +1 -1
  85. package/dist/Middleware.d.cts +2 -86
  86. package/dist/Middleware.d.ts +2 -86
  87. package/dist/Middleware.js +15 -12
  88. package/dist/{Module-DnzluX2J.d.ts → Module-B_Cntyms.d.ts} +54 -25
  89. package/dist/{Module-B_0xRDMR.d.cts → Module-CmNOVXzf.d.cts} +54 -25
  90. package/dist/Module.cjs +9331 -3317
  91. package/dist/Module.cjs.map +1 -1
  92. package/dist/Module.d.cts +7 -6
  93. package/dist/Module.d.ts +7 -6
  94. package/dist/Module.js +39 -31
  95. package/dist/ModuleTag-CGho_InD.d.ts +113 -0
  96. package/dist/ModuleTag-CITb8L_G.d.cts +113 -0
  97. package/dist/ModuleTag.cjs +7248 -2847
  98. package/dist/ModuleTag.cjs.map +1 -1
  99. package/dist/ModuleTag.d.cts +6 -6
  100. package/dist/ModuleTag.d.ts +6 -6
  101. package/dist/ModuleTag.js +35 -29
  102. package/dist/Observability-Bdhnx2Dv.d.ts +385 -0
  103. package/dist/Observability-DXGAFBIT.d.cts +385 -0
  104. package/dist/Observability.cjs +5093 -1556
  105. package/dist/Observability.cjs.map +1 -1
  106. package/dist/Observability.d.cts +6 -7
  107. package/dist/Observability.d.ts +6 -7
  108. package/dist/Observability.js +28 -23
  109. package/dist/{Platform-CHX8o-U4.d.ts → Platform-B4s8tg6C.d.cts} +4 -5
  110. package/dist/{Platform-C49Pv956.d.cts → Platform-BV_0MW7g.d.cts} +5 -2
  111. package/dist/{Platform-C49Pv956.d.ts → Platform-BV_0MW7g.d.ts} +5 -2
  112. package/dist/{Platform-CVlv0xLQ.d.cts → Platform-W0Mefy_e.d.ts} +4 -5
  113. package/dist/Platform.cjs +2 -1
  114. package/dist/Platform.cjs.map +1 -1
  115. package/dist/Platform.d.cts +2 -3
  116. package/dist/Platform.d.ts +2 -3
  117. package/dist/Platform.js +2 -2
  118. package/dist/{Process-CM9xbMdP.d.ts → Process-CO8G7HO9.d.cts} +30 -5
  119. package/dist/{Process-mL8fHDSB.d.cts → Process-Cyf6VNDR.d.ts} +30 -5
  120. package/dist/Process.cjs +1288 -120
  121. package/dist/Process.cjs.map +1 -1
  122. package/dist/Process.d.cts +6 -6
  123. package/dist/Process.d.ts +6 -6
  124. package/dist/Process.js +34 -26
  125. package/dist/ReadQuery-C_or5nLC.d.ts +128 -0
  126. package/dist/ReadQuery-DXLzCE0E.d.cts +614 -0
  127. package/dist/ReadQuery-DXLzCE0E.d.ts +614 -0
  128. package/dist/ReadQuery-Yve1lmUo.d.cts +128 -0
  129. package/dist/ReadQuery.cjs +290 -5
  130. package/dist/ReadQuery.cjs.map +1 -1
  131. package/dist/ReadQuery.d.cts +3 -2
  132. package/dist/ReadQuery.d.ts +3 -2
  133. package/dist/ReadQuery.js +23 -5
  134. package/dist/{Reflection-CQnKwPXj.d.ts → Reflection-B2Xi1e4Q.d.ts} +89 -7
  135. package/dist/{Reflection-Kabo1mlU.d.cts → Reflection-DNB4V4_e.d.cts} +89 -7
  136. package/dist/Reflection.cjs +3227 -1617
  137. package/dist/Reflection.cjs.map +1 -1
  138. package/dist/Reflection.d.cts +17 -15
  139. package/dist/Reflection.d.ts +17 -15
  140. package/dist/Reflection.js +33 -25
  141. package/dist/{Resource-Dy1xD_DG.d.cts → Resource-pKvQQ4x5.d.cts} +3 -3
  142. package/dist/{Resource-Dy1xD_DG.d.ts → Resource-pKvQQ4x5.d.ts} +3 -3
  143. package/dist/Resource.cjs +781 -15
  144. package/dist/Resource.cjs.map +1 -1
  145. package/dist/Resource.d.cts +1 -1
  146. package/dist/Resource.d.ts +1 -1
  147. package/dist/Resource.js +6 -3
  148. package/dist/{Root-7ADUMk4t.d.cts → Root-CCVuFHB6.d.cts} +3 -3
  149. package/dist/{Root-7ADUMk4t.d.ts → Root-CCVuFHB6.d.ts} +3 -3
  150. package/dist/Root.cjs +786 -20
  151. package/dist/Root.cjs.map +1 -1
  152. package/dist/Root.d.cts +2 -2
  153. package/dist/Root.d.ts +2 -2
  154. package/dist/Root.js +7 -3
  155. package/dist/{Runtime-CtyzZG4i.d.ts → Runtime-CRmvwK4I.d.ts} +70 -14
  156. package/dist/{Runtime-B-aL-f29.d.cts → Runtime-C_wJM9mN.d.cts} +70 -14
  157. package/dist/Runtime.cjs +4942 -1601
  158. package/dist/Runtime.cjs.map +1 -1
  159. package/dist/Runtime.d.cts +17 -15
  160. package/dist/Runtime.d.ts +17 -15
  161. package/dist/Runtime.js +44 -32
  162. package/dist/{ScopeRegistry-D1owDNSm.d.cts → ScopeRegistry-BhYzqWri.d.cts} +6 -6
  163. package/dist/{ScopeRegistry-D1owDNSm.d.ts → ScopeRegistry-BhYzqWri.d.ts} +6 -6
  164. package/dist/ScopeRegistry.cjs +776 -10
  165. package/dist/ScopeRegistry.cjs.map +1 -1
  166. package/dist/ScopeRegistry.d.cts +1 -1
  167. package/dist/ScopeRegistry.d.ts +1 -1
  168. package/dist/ScopeRegistry.js +6 -3
  169. package/dist/{State-CU50R26M.d.cts → State-rNFsFPTl.d.cts} +2 -2
  170. package/dist/{State-CU50R26M.d.ts → State-rNFsFPTl.d.ts} +2 -2
  171. package/dist/State.cjs.map +1 -1
  172. package/dist/State.d.cts +1 -1
  173. package/dist/State.d.ts +1 -1
  174. package/dist/State.js +1 -1
  175. package/dist/{StateTrait-BGsZghTz.d.ts → StateTrait-CijdwNb6.d.ts} +25 -8
  176. package/dist/{StateTrait-OWhbj12c.d.cts → StateTrait-Dltto6PU.d.cts} +25 -8
  177. package/dist/StateTrait.cjs +1890 -528
  178. package/dist/StateTrait.cjs.map +1 -1
  179. package/dist/StateTrait.d.cts +9 -7
  180. package/dist/StateTrait.d.ts +9 -7
  181. package/dist/StateTrait.js +18 -14
  182. package/dist/{TraitLifecycle-CwV5WPFX.d.cts → TraitLifecycle-BKzDqzLu.d.cts} +2 -2
  183. package/dist/{TraitLifecycle-LdIWmKlg.d.ts → TraitLifecycle-Cvo94uDB.d.ts} +2 -2
  184. package/dist/TraitLifecycle.cjs +630 -67
  185. package/dist/TraitLifecycle.cjs.map +1 -1
  186. package/dist/TraitLifecycle.d.cts +6 -6
  187. package/dist/TraitLifecycle.d.ts +6 -6
  188. package/dist/TraitLifecycle.js +8 -7
  189. package/dist/Workflow-C_OWr4dV.d.ts +415 -0
  190. package/dist/Workflow-DmydkHO8.d.cts +415 -0
  191. package/dist/Workflow.cjs +3150 -0
  192. package/dist/Workflow.cjs.map +1 -0
  193. package/dist/Workflow.d.cts +7 -0
  194. package/dist/Workflow.d.ts +7 -0
  195. package/dist/Workflow.js +58 -0
  196. package/dist/Workflow.js.map +1 -0
  197. package/dist/{action-DiMDD_0v.d.cts → action-BQxjPFEw.d.cts} +5 -5
  198. package/dist/{action-DiMDD_0v.d.ts → action-BQxjPFEw.d.ts} +5 -5
  199. package/dist/chunk-2XRLXDWR.js +276 -0
  200. package/dist/chunk-2XRLXDWR.js.map +1 -0
  201. package/dist/chunk-3L6QGFMM.js +701 -0
  202. package/dist/chunk-3L6QGFMM.js.map +1 -0
  203. package/dist/{chunk-GMPEOUP2.js → chunk-4MZ7BT3R.js} +2 -2
  204. package/dist/chunk-4MZ7BT3R.js.map +1 -0
  205. package/dist/{chunk-3IYZ5IGG.js → chunk-5WKUGEBY.js} +2 -2
  206. package/dist/{chunk-3RMKLXHX.js → chunk-63ZQ5RIN.js} +2 -2
  207. package/dist/{chunk-M3WTHJHJ.js → chunk-67DIEA53.js} +385 -148
  208. package/dist/chunk-67DIEA53.js.map +1 -0
  209. package/dist/{chunk-YS3AZQ2G.js → chunk-6HFAW2MH.js} +1 -1
  210. package/dist/chunk-6HFAW2MH.js.map +1 -0
  211. package/dist/{chunk-EY4NZKDR.js → chunk-6Y2TKCNY.js} +2 -2
  212. package/dist/{chunk-76WT3HOR.js → chunk-6YZOXFPQ.js} +25 -24
  213. package/dist/chunk-6YZOXFPQ.js.map +1 -0
  214. package/dist/{chunk-G5ZBFPNU.js → chunk-A2RQOJC7.js} +2 -2
  215. package/dist/{chunk-AUIR5O6W.js → chunk-AFSB6NKM.js} +13 -19
  216. package/dist/chunk-AFSB6NKM.js.map +1 -0
  217. package/dist/{chunk-JCXGZRMU.js → chunk-AO4JEOKD.js} +22 -23
  218. package/dist/chunk-AO4JEOKD.js.map +1 -0
  219. package/dist/{chunk-TAAPQVZN.js → chunk-AYELIQXR.js} +2 -2
  220. package/dist/{chunk-QMM6O4CD.js → chunk-BLHZW7DG.js} +15 -3
  221. package/dist/{chunk-QMM6O4CD.js.map → chunk-BLHZW7DG.js.map} +1 -1
  222. package/dist/{chunk-TQOBJYDP.js → chunk-CD4N74YC.js} +1 -1
  223. package/dist/chunk-CD4N74YC.js.map +1 -0
  224. package/dist/{chunk-ANLBCBDC.js → chunk-CGE2HBTH.js} +11 -11
  225. package/dist/chunk-CGE2HBTH.js.map +1 -0
  226. package/dist/{chunk-OFADUJWJ.js → chunk-CYYSQMLO.js} +5 -5
  227. package/dist/chunk-CYYSQMLO.js.map +1 -0
  228. package/dist/{chunk-66ALHVEX.js → chunk-EB46EYI7.js} +3 -3
  229. package/dist/{chunk-NZJKFF45.js → chunk-EKCDHWRK.js} +4 -4
  230. package/dist/chunk-EKCDHWRK.js.map +1 -0
  231. package/dist/{chunk-BABLDP24.js → chunk-EPQFNJU3.js} +152 -7
  232. package/dist/chunk-EPQFNJU3.js.map +1 -0
  233. package/dist/{chunk-OGWBVHB3.js → chunk-ESR6HGOY.js} +73 -14
  234. package/dist/chunk-ESR6HGOY.js.map +1 -0
  235. package/dist/{chunk-NBD3KUOZ.js → chunk-F6RP62H3.js} +150 -98
  236. package/dist/chunk-F6RP62H3.js.map +1 -0
  237. package/dist/chunk-FBYW3QDI.js +252 -0
  238. package/dist/chunk-FBYW3QDI.js.map +1 -0
  239. package/dist/{chunk-IPF7E66P.js → chunk-FYAODKVP.js} +2 -2
  240. package/dist/chunk-GNEN7NKO.js +908 -0
  241. package/dist/chunk-GNEN7NKO.js.map +1 -0
  242. package/dist/chunk-GWSM4KLB.js +763 -0
  243. package/dist/chunk-GWSM4KLB.js.map +1 -0
  244. package/dist/{chunk-4SO6JMZL.js → chunk-HDMXCUZL.js} +1 -1
  245. package/dist/chunk-HDMXCUZL.js.map +1 -0
  246. package/dist/{chunk-ZFY7U2FR.js → chunk-HJM5Y5NU.js} +43 -3
  247. package/dist/chunk-HJM5Y5NU.js.map +1 -0
  248. package/dist/{chunk-ZGDVUPTM.js → chunk-IOZ3VKPK.js} +129 -68
  249. package/dist/chunk-IOZ3VKPK.js.map +1 -0
  250. package/dist/{chunk-PYOE4VSI.js → chunk-IVXSVHO4.js} +303 -247
  251. package/dist/chunk-IVXSVHO4.js.map +1 -0
  252. package/dist/chunk-J3CWXIPV.js +242 -0
  253. package/dist/chunk-J3CWXIPV.js.map +1 -0
  254. package/dist/chunk-K6JQW266.js +42 -0
  255. package/dist/chunk-K6JQW266.js.map +1 -0
  256. package/dist/chunk-KMZYQF6Q.js +202 -0
  257. package/dist/chunk-KMZYQF6Q.js.map +1 -0
  258. package/dist/{chunk-JWOYLO27.js → chunk-LPPZDFTD.js} +22 -12
  259. package/dist/chunk-LPPZDFTD.js.map +1 -0
  260. package/dist/{chunk-PAYXCY6A.js → chunk-MYB2B5WX.js} +997 -576
  261. package/dist/chunk-MYB2B5WX.js.map +1 -0
  262. package/dist/chunk-MYKNINNN.js +228 -0
  263. package/dist/chunk-MYKNINNN.js.map +1 -0
  264. package/dist/chunk-NSQIRMVF.js +27 -0
  265. package/dist/{chunk-QCHIQWAJ.js.map → chunk-NSQIRMVF.js.map} +1 -1
  266. package/dist/chunk-NUDBM4MM.js +30 -0
  267. package/dist/chunk-NUDBM4MM.js.map +1 -0
  268. package/dist/chunk-NZMWWDAY.js +23 -0
  269. package/dist/chunk-NZMWWDAY.js.map +1 -0
  270. package/dist/{chunk-RNFE3ML2.js → chunk-OCUV2Y25.js} +4 -3
  271. package/dist/chunk-OCUV2Y25.js.map +1 -0
  272. package/dist/chunk-P4ZJOQA7.js +271 -0
  273. package/dist/chunk-P4ZJOQA7.js.map +1 -0
  274. package/dist/chunk-P6C5EZ3D.js +342 -0
  275. package/dist/chunk-P6C5EZ3D.js.map +1 -0
  276. package/dist/{chunk-CW6T36TN.js → chunk-PBD7BJUN.js} +62 -4
  277. package/dist/chunk-PBD7BJUN.js.map +1 -0
  278. package/dist/chunk-PBIUCQY3.js +696 -0
  279. package/dist/chunk-PBIUCQY3.js.map +1 -0
  280. package/dist/chunk-PD6YECQH.js +845 -0
  281. package/dist/chunk-PD6YECQH.js.map +1 -0
  282. package/dist/{chunk-M7IYCTJV.js → chunk-R4LFQGP3.js} +2 -2
  283. package/dist/chunk-RHJIGDUE.js +21 -0
  284. package/dist/chunk-RHJIGDUE.js.map +1 -0
  285. package/dist/{chunk-KP7MUZNX.js → chunk-RLXO27MW.js} +30 -8
  286. package/dist/chunk-RLXO27MW.js.map +1 -0
  287. package/dist/{chunk-DFNM3WX2.js → chunk-S44BEV4B.js} +168 -45
  288. package/dist/chunk-S44BEV4B.js.map +1 -0
  289. package/dist/chunk-S4S5N4BJ.js +1461 -0
  290. package/dist/chunk-S4S5N4BJ.js.map +1 -0
  291. package/dist/{chunk-BZ2SHDN2.js → chunk-SGTRAXXX.js} +3 -3
  292. package/dist/chunk-SGTRAXXX.js.map +1 -0
  293. package/dist/{chunk-M2RGJPXX.js → chunk-SJAE5PB5.js} +3 -3
  294. package/dist/{chunk-JGIWG6SR.js → chunk-SNPNHU3H.js} +3937 -1776
  295. package/dist/chunk-SNPNHU3H.js.map +1 -0
  296. package/dist/{chunk-IHVBV5C2.js → chunk-SOOBFXRR.js} +94 -71
  297. package/dist/chunk-SOOBFXRR.js.map +1 -0
  298. package/dist/{chunk-ZDTRWK5F.js → chunk-TAHFWKS6.js} +2 -2
  299. package/dist/chunk-UEFFTVPY.js +9 -0
  300. package/dist/chunk-UEFFTVPY.js.map +1 -0
  301. package/dist/{chunk-24VULZ7A.js → chunk-UR5BXLBP.js} +3 -3
  302. package/dist/chunk-UR5BXLBP.js.map +1 -0
  303. package/dist/{chunk-DMBALCE2.js → chunk-V2SBGVDO.js} +471 -186
  304. package/dist/chunk-V2SBGVDO.js.map +1 -0
  305. package/dist/chunk-VJLWD47W.js +23 -0
  306. package/dist/chunk-VJLWD47W.js.map +1 -0
  307. package/dist/{chunk-4CQAV7YB.js → chunk-W647DX5Z.js} +2 -2
  308. package/dist/{chunk-THATMZXD.js → chunk-WFIIU3YZ.js} +2 -2
  309. package/dist/{chunk-THATMZXD.js.map → chunk-WFIIU3YZ.js.map} +1 -1
  310. package/dist/chunk-YZDJMAKL.js +82 -0
  311. package/dist/chunk-YZDJMAKL.js.map +1 -0
  312. package/dist/{chunk-3TMODYZV.js → chunk-Z5XH6VHY.js} +5 -5
  313. package/dist/chunk-Z5XH6VHY.js.map +1 -0
  314. package/dist/{chunk-BE3HW4FY.js → chunk-ZBBMZMA6.js} +377 -170
  315. package/dist/chunk-ZBBMZMA6.js.map +1 -0
  316. package/dist/index.cjs +21224 -11714
  317. package/dist/index.cjs.map +1 -1
  318. package/dist/index.d.cts +195 -49
  319. package/dist/index.d.ts +195 -49
  320. package/dist/index.js +150 -74
  321. package/dist/index.js.map +1 -1
  322. package/dist/{ir-BMP7yxJJ.d.cts → ir-BSosEwc8.d.cts} +1 -1
  323. package/dist/{ir-DUOz6H-5.d.ts → ir-D-uqwL_4.d.ts} +1 -1
  324. package/dist/{module-B8CBqIZ_.d.cts → module-Ds4tarcI.d.cts} +230 -140
  325. package/dist/{module-k7m3txak.d.ts → module-Zd1Gn-Nj.d.ts} +230 -140
  326. package/package.json +20 -4
  327. package/dist/ModuleTag-C8FHY_sY.d.ts +0 -93
  328. package/dist/ModuleTag-EGbgBMpZ.d.cts +0 -93
  329. package/dist/Observability-COqEvp2C.d.cts +0 -713
  330. package/dist/Observability-cY4kLn0S.d.ts +0 -713
  331. package/dist/ReadQuery-BlMwhe-F.d.ts +0 -30
  332. package/dist/ReadQuery-CL5XlXts.d.cts +0 -30
  333. package/dist/ReadQuery-SinbStGF.d.cts +0 -38
  334. package/dist/ReadQuery-SinbStGF.d.ts +0 -38
  335. package/dist/chunk-24VULZ7A.js.map +0 -1
  336. package/dist/chunk-3QMIVH35.js +0 -43
  337. package/dist/chunk-3QMIVH35.js.map +0 -1
  338. package/dist/chunk-3TMODYZV.js.map +0 -1
  339. package/dist/chunk-4SO6JMZL.js.map +0 -1
  340. package/dist/chunk-76WT3HOR.js.map +0 -1
  341. package/dist/chunk-ANLBCBDC.js.map +0 -1
  342. package/dist/chunk-AUIR5O6W.js.map +0 -1
  343. package/dist/chunk-BABLDP24.js.map +0 -1
  344. package/dist/chunk-BE3HW4FY.js.map +0 -1
  345. package/dist/chunk-BZ2SHDN2.js.map +0 -1
  346. package/dist/chunk-CW6T36TN.js.map +0 -1
  347. package/dist/chunk-DFNM3WX2.js.map +0 -1
  348. package/dist/chunk-DMBALCE2.js.map +0 -1
  349. package/dist/chunk-EGK3KN7B.js +0 -406
  350. package/dist/chunk-EGK3KN7B.js.map +0 -1
  351. package/dist/chunk-GMPEOUP2.js.map +0 -1
  352. package/dist/chunk-IHVBV5C2.js.map +0 -1
  353. package/dist/chunk-JCXGZRMU.js.map +0 -1
  354. package/dist/chunk-JGIWG6SR.js.map +0 -1
  355. package/dist/chunk-JWOYLO27.js.map +0 -1
  356. package/dist/chunk-KIXAU3GM.js +0 -137
  357. package/dist/chunk-KIXAU3GM.js.map +0 -1
  358. package/dist/chunk-KL5ACTCT.js +0 -8
  359. package/dist/chunk-KL5ACTCT.js.map +0 -1
  360. package/dist/chunk-KP7MUZNX.js.map +0 -1
  361. package/dist/chunk-M3BFQ7HK.js +0 -13
  362. package/dist/chunk-M3BFQ7HK.js.map +0 -1
  363. package/dist/chunk-M3WTHJHJ.js.map +0 -1
  364. package/dist/chunk-NBD3KUOZ.js.map +0 -1
  365. package/dist/chunk-NQZ2OSGR.js +0 -151
  366. package/dist/chunk-NQZ2OSGR.js.map +0 -1
  367. package/dist/chunk-NZJKFF45.js.map +0 -1
  368. package/dist/chunk-OFADUJWJ.js.map +0 -1
  369. package/dist/chunk-OGWBVHB3.js.map +0 -1
  370. package/dist/chunk-PAYXCY6A.js.map +0 -1
  371. package/dist/chunk-PYOE4VSI.js.map +0 -1
  372. package/dist/chunk-QCHIQWAJ.js +0 -21
  373. package/dist/chunk-RNFE3ML2.js.map +0 -1
  374. package/dist/chunk-TKZ7MEIA.js +0 -27
  375. package/dist/chunk-TKZ7MEIA.js.map +0 -1
  376. package/dist/chunk-TQOBJYDP.js.map +0 -1
  377. package/dist/chunk-VZB726PE.js +0 -93
  378. package/dist/chunk-VZB726PE.js.map +0 -1
  379. package/dist/chunk-W3TEWHLO.js +0 -568
  380. package/dist/chunk-W3TEWHLO.js.map +0 -1
  381. package/dist/chunk-YS3AZQ2G.js.map +0 -1
  382. package/dist/chunk-ZFLHVFUC.js +0 -192
  383. package/dist/chunk-ZFLHVFUC.js.map +0 -1
  384. package/dist/chunk-ZFY7U2FR.js.map +0 -1
  385. package/dist/chunk-ZGDVUPTM.js.map +0 -1
  386. package/dist/protocol-g_1897M2.d.cts +0 -127
  387. package/dist/protocol-g_1897M2.d.ts +0 -127
  388. /package/dist/{chunk-3IYZ5IGG.js.map → chunk-5WKUGEBY.js.map} +0 -0
  389. /package/dist/{chunk-3RMKLXHX.js.map → chunk-63ZQ5RIN.js.map} +0 -0
  390. /package/dist/{chunk-EY4NZKDR.js.map → chunk-6Y2TKCNY.js.map} +0 -0
  391. /package/dist/{chunk-G5ZBFPNU.js.map → chunk-A2RQOJC7.js.map} +0 -0
  392. /package/dist/{chunk-TAAPQVZN.js.map → chunk-AYELIQXR.js.map} +0 -0
  393. /package/dist/{chunk-66ALHVEX.js.map → chunk-EB46EYI7.js.map} +0 -0
  394. /package/dist/{chunk-IPF7E66P.js.map → chunk-FYAODKVP.js.map} +0 -0
  395. /package/dist/{chunk-M7IYCTJV.js.map → chunk-R4LFQGP3.js.map} +0 -0
  396. /package/dist/{chunk-M2RGJPXX.js.map → chunk-SJAE5PB5.js.map} +0 -0
  397. /package/dist/{chunk-ZDTRWK5F.js.map → chunk-TAHFWKS6.js.map} +0 -0
  398. /package/dist/{chunk-4CQAV7YB.js.map → chunk-W647DX5Z.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/internal/runtime/core/EffectOpCore.ts","../src/internal/observability/jsonValue.ts"],"sourcesContent":["// EffectOp core model and middleware composition logic.\n// For higher-level Runtime / Devtools integration, see:\n// specs/000-module-traits-runtime/references/effectop-and-middleware.md\n\nimport { Context, Effect, FiberRef } from 'effect'\n\n/**\n * currentLinkId:\n * - Stores the current operation chain id (linkId) in a FiberRef.\n * - Used to correlate multiple boundary ops within the same chain (can be shared across modules via the same FiberRef).\n */\nexport const currentLinkId = FiberRef.unsafeMake<string | undefined>(undefined)\n\n/**\n * OperationPolicy:\n * - Local policy markers (intent only; no rule logic attached).\n *\n * Constraints (enforced by Runtime/middleware together):\n * - Only observation-only capabilities (Observer) may be disabled; global guards must not be disabled.\n */\nexport interface OperationPolicy {\n readonly disableObservers?: boolean\n}\n\n/**\n * OperationRejected:\n * - Unified failure result when a guard rejects execution.\n * - Semantics: explicit failure with no business side effects (rejection must happen before user code executes).\n */\nexport interface OperationRejected {\n readonly _tag: 'OperationRejected'\n readonly message: string\n readonly kind?: EffectOp['kind']\n readonly name?: string\n readonly linkId?: string\n readonly details?: unknown\n}\n\n/**\n * OperationError:\n * - Any boundary operation executed via EffectOp may be explicitly rejected by Guard middleware.\n * - Therefore, the middleware error channel must allow OperationRejected to be added.\n */\nexport type OperationError<E> = E | OperationRejected\n\nexport const makeOperationRejected = (params: {\n readonly message: string\n readonly kind?: EffectOp['kind']\n readonly name?: string\n readonly linkId?: string\n readonly details?: unknown\n}): OperationRejected => ({\n _tag: 'OperationRejected',\n message: params.message,\n kind: params.kind,\n name: params.name,\n linkId: params.linkId,\n details: params.details,\n})\n\n/**\n * EffectOp: a unified representation of an Effect execution at an \"observable boundary\".\n *\n * - Out / Err / Env are the generic parameters of the underlying Effect.\n * - meta carries structured context needed by Devtools / Middleware.\n */\nexport interface EffectOp<Out = unknown, Err = unknown, Env = unknown> {\n readonly id: string\n readonly kind:\n | 'action'\n | 'flow'\n | 'state'\n | 'service'\n | 'lifecycle'\n | 'trait-computed'\n | 'trait-link'\n | 'trait-source'\n | 'devtools'\n readonly name: string\n readonly payload?: unknown\n readonly meta?: {\n /**\n * linkId:\n * - Operation chain id: multiple boundary ops in the same chain must share it.\n * - Runtime ensures this field is populated on all boundary ops.\n */\n linkId?: string\n moduleId?: string\n instanceId?: string\n runtimeLabel?: string\n txnId?: string\n txnSeq?: number\n opSeq?: number\n fieldPath?: string\n deps?: ReadonlyArray<string>\n from?: string\n to?: string\n traitNodeId?: string\n stepId?: string\n resourceId?: string\n key?: unknown\n trace?: ReadonlyArray<string>\n tags?: ReadonlyArray<string>\n policy?: OperationPolicy\n // Reserved extension slot for middleware/devtools to attach extra information.\n readonly [k: string]: unknown\n }\n readonly effect: Effect.Effect<Out, Err, Env>\n}\n\n/**\n * Middleware: the general middleware model for observing / wrapping / guarding EffectOps.\n */\nexport type Middleware = <A, E, R>(op: EffectOp<A, E, R>) => Effect.Effect<A, OperationError<E>, R>\n\nexport type MiddlewareStack = ReadonlyArray<Middleware>\n\n/**\n * EffectOpMiddlewareEnv:\n * - A Service in Effect Env that carries the current Runtime's MiddlewareStack.\n * - Injected by Runtime.ts when constructing a ManagedRuntime.\n * - Runtime code (e.g. StateTrait.install) uses this Service to decide which MiddlewareStack to use.\n */\nexport interface EffectOpMiddlewareEnv {\n readonly stack: MiddlewareStack\n}\n\nexport class EffectOpMiddlewareTag extends Context.Tag('Logix/EffectOpMiddleware')<\n EffectOpMiddlewareTag,\n EffectOpMiddlewareEnv\n>() {}\n\n/**\n * composeMiddleware:\n * - Composes Middleware from \"outer to inner\" in declaration order:\n * - stack = [mw1, mw2] => mw1 -> mw2 -> effect -> mw2 -> mw1\n * - Matches the reduceRight example in the reference docs.\n */\nexport const composeMiddleware = (stack: MiddlewareStack): Middleware => {\n return <A, E, R>(op: EffectOp<A, E, R>): Effect.Effect<A, OperationError<E>, R> =>\n stack.reduceRight<Effect.Effect<A, OperationError<E>, R>>(\n (eff, mw) => mw({ ...op, effect: eff } as any) as any,\n op.effect as Effect.Effect<A, OperationError<E>, R>,\n )\n}\n\n/**\n * runWithMiddleware:\n * - Executes a given EffectOp with a MiddlewareStack according to the composition rules.\n * - If the stack is empty, returns op.effect directly.\n */\nexport const runWithMiddleware = <A, E, R>(op: EffectOp<A, E, R>, stack: MiddlewareStack): Effect.Effect<A, E, R> => {\n return Effect.gen(function* () {\n const existing = yield* FiberRef.get(currentLinkId)\n const metaLinkId = (op.meta as any)?.linkId\n const linkId = typeof metaLinkId === 'string' && metaLinkId.length > 0 ? metaLinkId : (existing ?? op.id)\n\n const nextOp: EffectOp<A, E, R> = {\n ...op,\n meta: {\n ...(op.meta ?? {}),\n linkId,\n },\n }\n\n const program = stack.length ? composeMiddleware(stack)(nextOp) : nextOp.effect\n\n // linkId is created at the boundary root and reused for nested ops (the FiberRef is the global single source of truth).\n // NOTE: middleware may explicitly reject with OperationRejected.\n return yield* Effect.locally(currentLinkId, linkId)(program as any)\n }) as Effect.Effect<A, E, R>\n}\n","export type JsonValue =\n | null\n | boolean\n | number\n | string\n | ReadonlyArray<JsonValue>\n | { readonly [key: string]: JsonValue }\n\nexport type DowngradeReason = 'non_serializable' | 'oversized' | 'unknown'\n\nexport const isJsonValue = (input: unknown): input is JsonValue => {\n const seen = new WeakSet<object>()\n\n const loop = (value: unknown, depth: number): value is JsonValue => {\n if (depth > 64) return false\n if (value === null) return true\n\n switch (typeof value) {\n case 'string':\n case 'boolean':\n return true\n case 'number':\n return Number.isFinite(value)\n case 'object': {\n if (Array.isArray(value)) {\n if (seen.has(value)) return false\n seen.add(value)\n for (const item of value) {\n if (!loop(item, depth + 1)) return false\n }\n return true\n }\n\n if (!isPlainRecord(value)) return false\n if (seen.has(value)) return false\n seen.add(value)\n\n for (const v of Object.values(value)) {\n if (!loop(v, depth + 1)) return false\n }\n\n return true\n }\n default:\n return false\n }\n }\n\n return loop(input, 0)\n}\n\nexport interface JsonValueProjectionStats {\n readonly dropped: number\n readonly oversized: number\n readonly nonSerializable: number\n}\n\nexport interface JsonValueProjection {\n readonly value: JsonValue\n readonly stats: JsonValueProjectionStats\n readonly downgrade?: DowngradeReason\n}\n\nexport interface JsonValueProjectOptions {\n readonly maxDepth?: number\n readonly maxObjectKeys?: number\n readonly maxArrayLength?: number\n readonly maxStringLength?: number\n readonly maxJsonBytes?: number\n readonly oversizedPreviewBytes?: number\n}\n\nconst defaultOptions: Required<JsonValueProjectOptions> = {\n maxDepth: 6,\n maxObjectKeys: 32,\n maxArrayLength: 32,\n maxStringLength: 256,\n maxJsonBytes: 4 * 1024,\n oversizedPreviewBytes: 256,\n}\n\nconst truncateString = (value: string, maxLen: number, stats: MutableStats): string => {\n if (value.length <= maxLen) return value\n stats.oversized += 1\n return value.slice(0, maxLen)\n}\n\ntype MutableStats = {\n dropped: number\n oversized: number\n nonSerializable: number\n}\n\nconst mergeDowngrade = (current: DowngradeReason | undefined, next: DowngradeReason): DowngradeReason => {\n if (!current) return next\n if (current === 'non_serializable' || next === 'non_serializable') return 'non_serializable'\n if (current === 'oversized' || next === 'oversized') return 'oversized'\n return 'unknown'\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n if (typeof value !== 'object' || value === null) return false\n const proto = Object.getPrototypeOf(value)\n return proto === Object.prototype || proto === null\n}\n\nconst asNumber = (value: number, stats: MutableStats): JsonValue => {\n if (Number.isFinite(value)) return value\n stats.nonSerializable += 1\n return String(value)\n}\n\nconst toJsonValueInternal = (\n input: unknown,\n options: Required<JsonValueProjectOptions>,\n stats: MutableStats,\n seen: WeakSet<object>,\n depth: number,\n): JsonValue => {\n if (input === null) return null\n\n switch (typeof input) {\n case 'string':\n return truncateString(input, options.maxStringLength, stats)\n case 'number':\n return asNumber(input, stats)\n case 'boolean':\n return input\n case 'bigint':\n stats.nonSerializable += 1\n return truncateString(input.toString(), options.maxStringLength, stats)\n case 'symbol':\n stats.nonSerializable += 1\n return truncateString(input.toString(), options.maxStringLength, stats)\n case 'function':\n stats.nonSerializable += 1\n return '[Function]'\n case 'undefined':\n stats.dropped += 1\n return null\n }\n\n // object\n if (depth >= options.maxDepth) {\n stats.oversized += 1\n return '[Truncated]'\n }\n\n if (input instanceof Date) {\n return input.toISOString()\n }\n\n if (input instanceof Error) {\n stats.nonSerializable += 1\n return {\n name: truncateString(input.name, options.maxStringLength, stats),\n message: truncateString(input.message, options.maxStringLength, stats),\n }\n }\n\n if (typeof input === 'object') {\n if (seen.has(input)) {\n stats.nonSerializable += 1\n return '[Circular]'\n }\n seen.add(input)\n }\n\n if (Array.isArray(input)) {\n const out: Array<JsonValue> = []\n const limit = Math.min(input.length, options.maxArrayLength)\n for (let i = 0; i < limit; i++) {\n out.push(toJsonValueInternal(input[i], options, stats, seen, depth + 1))\n }\n if (input.length > limit) {\n stats.oversized += 1\n out.push(`[...${input.length - limit} more]`)\n }\n return out\n }\n\n if (!isPlainRecord(input)) {\n stats.nonSerializable += 1\n return truncateString(String(input), options.maxStringLength, stats)\n }\n\n const entries = Object.entries(input)\n const limit = Math.min(entries.length, options.maxObjectKeys)\n const out: Record<string, JsonValue> = {}\n\n for (let i = 0; i < limit; i++) {\n const [rawKey, rawValue] = entries[i]!\n const key = truncateString(rawKey, options.maxStringLength, stats)\n if (rawValue === undefined) {\n stats.dropped += 1\n continue\n }\n out[key] = toJsonValueInternal(rawValue, options, stats, seen, depth + 1)\n }\n\n if (entries.length > limit) {\n stats.oversized += 1\n out.__truncatedKeys = entries.length - limit\n }\n\n return out\n}\n\nexport const projectJsonValue = (input: unknown, options?: JsonValueProjectOptions): JsonValueProjection => {\n const resolved: Required<JsonValueProjectOptions> = { ...defaultOptions, ...(options ?? {}) }\n const stats: MutableStats = { dropped: 0, oversized: 0, nonSerializable: 0 }\n const seen = new WeakSet<object>()\n\n let downgrade: DowngradeReason | undefined\n const value = toJsonValueInternal(input, resolved, stats, seen, 0)\n\n if (stats.nonSerializable > 0) {\n downgrade = mergeDowngrade(downgrade, 'non_serializable')\n }\n if (stats.oversized > 0) {\n downgrade = mergeDowngrade(downgrade, 'oversized')\n }\n\n // Hard gate: ensure JSON.stringify never throws and respect the max byte budget.\n try {\n const json = JSON.stringify(value)\n if (json.length > resolved.maxJsonBytes) {\n downgrade = mergeDowngrade(downgrade, 'oversized')\n const preview = json.slice(0, Math.min(resolved.oversizedPreviewBytes, resolved.maxJsonBytes))\n return {\n value: {\n _tag: 'oversized',\n bytes: json.length,\n preview,\n },\n stats: {\n dropped: stats.dropped,\n oversized: stats.oversized + 1,\n nonSerializable: stats.nonSerializable,\n },\n downgrade,\n }\n }\n } catch {\n downgrade = mergeDowngrade(downgrade, 'non_serializable')\n return {\n value: '[Unserializable]',\n stats: {\n dropped: stats.dropped,\n oversized: stats.oversized,\n nonSerializable: stats.nonSerializable + 1,\n },\n downgrade,\n }\n }\n\n return {\n value,\n stats: {\n dropped: stats.dropped,\n oversized: stats.oversized,\n nonSerializable: stats.nonSerializable,\n },\n downgrade,\n }\n}\n"],"mappings":"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","names":["out","limit"]}
@@ -1,137 +0,0 @@
1
- import {
2
- build,
3
- installSourceRefresh
4
- } from "./chunk-PYOE4VSI.js";
5
- import {
6
- getAtPath
7
- } from "./chunk-BABLDP24.js";
8
- import {
9
- exportStaticIr
10
- } from "./chunk-ZFY7U2FR.js";
11
- import {
12
- getBoundInternals
13
- } from "./chunk-3RMKLXHX.js";
14
- import {
15
- __export
16
- } from "./chunk-PZ5AY32C.js";
17
-
18
- // src/StateTrait.ts
19
- var StateTrait_exports = {};
20
- __export(StateTrait_exports, {
21
- $root: () => $root,
22
- build: () => build2,
23
- computed: () => computed,
24
- exportStaticIr: () => exportStaticIr2,
25
- from: () => from,
26
- install: () => install2,
27
- link: () => link,
28
- list: () => list,
29
- node: () => node,
30
- source: () => source
31
- });
32
-
33
- // src/internal/state-trait/install.ts
34
- import { Effect } from "effect";
35
- var buildEntryIndex = (entries) => {
36
- const index = /* @__PURE__ */ new Map();
37
- for (const entry of entries) {
38
- const list2 = index.get(entry.fieldPath) ?? [];
39
- list2.push(entry);
40
- index.set(entry.fieldPath, list2);
41
- }
42
- return index;
43
- };
44
- var install = (bound, program) => {
45
- try {
46
- const internals = getBoundInternals(bound);
47
- internals.traits.registerStateTraitProgram(program, {
48
- bumpReason: "logic_installed"
49
- });
50
- } catch {
51
- }
52
- const entryIndex = buildEntryIndex(program.entries);
53
- const installStep = (step) => {
54
- if (!step.targetFieldPath) {
55
- return Effect.void;
56
- }
57
- if (step.kind !== "source-refresh") {
58
- return Effect.void;
59
- }
60
- const candidates = entryIndex.get(step.targetFieldPath);
61
- if (!candidates || candidates.length === 0) {
62
- return Effect.void;
63
- }
64
- const entry = candidates.find((e) => e.kind === "source");
65
- if (!entry) {
66
- return Effect.void;
67
- }
68
- return installSourceRefresh(bound, step, entry);
69
- };
70
- return Effect.forEach(program.plan.steps, (step) => installStep(step)).pipe(Effect.asVoid);
71
- };
72
-
73
- // src/StateTrait.ts
74
- var $root = "$root";
75
- var from = (_schema) => (spec) => spec;
76
- var node = (spec) => ({
77
- _tag: "StateTraitNode",
78
- ...spec
79
- });
80
- var list = (spec) => ({
81
- _tag: "StateTraitList",
82
- ...spec
83
- });
84
- var computed = (input) => {
85
- const derive = (state) => {
86
- const args = input.deps.map((dep) => getAtPath(state, dep));
87
- return input.get(...args);
88
- };
89
- return {
90
- fieldPath: void 0,
91
- kind: "computed",
92
- meta: {
93
- deps: input.deps,
94
- derive,
95
- equals: input.equals,
96
- ...input.scheduling ? { scheduling: input.scheduling } : {}
97
- }
98
- };
99
- };
100
- var source = (input) => {
101
- const key = (state) => {
102
- const args = input.deps.map((dep) => getAtPath(state, dep));
103
- return input.key(...args);
104
- };
105
- return {
106
- fieldPath: void 0,
107
- kind: "source",
108
- meta: { ...input, key }
109
- };
110
- };
111
- var link = (meta) => ({
112
- fieldPath: void 0,
113
- kind: "link",
114
- meta: { ...meta, ...meta.scheduling ? { scheduling: meta.scheduling } : {} }
115
- });
116
- var build2 = (stateSchema, spec) => build(stateSchema, spec);
117
- var install2 = (bound, program) => install(bound, program);
118
- var exportStaticIr2 = (program, moduleId, options) => exportStaticIr({
119
- program,
120
- moduleId,
121
- version: options?.version
122
- });
123
-
124
- export {
125
- $root,
126
- from,
127
- node,
128
- list,
129
- computed,
130
- source,
131
- link,
132
- build2 as build,
133
- install2 as install,
134
- exportStaticIr2 as exportStaticIr,
135
- StateTrait_exports
136
- };
137
- //# sourceMappingURL=chunk-KIXAU3GM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/StateTrait.ts","../src/internal/state-trait/install.ts"],"sourcesContent":["// StateTrait namespace module (@logixjs/core/StateTrait):\n// - Provides a DSL for trait specs (from/node/list/computed/source/link).\n// - build: normalizes the spec and produces Program/Graph/Plan.\n// - install: installs a Program into the runtime (registers source.refresh, runs converge/validate in txn windows).\n\nimport type { Schema } from 'effect'\nimport { Effect } from 'effect'\nimport type { BoundApi } from './Bound.js'\nimport * as Model from './internal/state-trait/model.js'\nimport * as FieldPath from './internal/state-trait/field-path.js'\nimport * as RowId from './internal/state-trait/rowid.js'\nimport * as InternalBuild from './internal/state-trait/build.js'\nimport * as InternalInstall from './internal/state-trait/install.js'\nimport * as InternalIr from './internal/state-trait/ir.js'\n\n// Public type aliases.\nexport type StateTraitSpec<S> = Model.StateTraitSpec<S>\nexport type StateTraitEntry<S = unknown, P extends string = string> = Model.StateTraitEntry<S, P>\nexport type StateTraitProgram<S> = Model.StateTraitProgram<S>\nexport type StateTraitGraph = Model.StateTraitGraph\nexport type StateTraitPlan = Model.StateTraitPlan\nexport type StateTraitNode<Input = unknown, Ctx = unknown> = Model.StateTraitNode<Input, Ctx>\nexport type StateTraitList<Item = unknown> = Model.StateTraitList<Item>\nexport type CheckRule<Input = unknown, Ctx = unknown> = Model.CheckRule<Input, Ctx>\n\nexport type StateFieldPath<S> = FieldPath.StateFieldPath<S>\nexport type StateAtPath<S, P> = FieldPath.StateAtPath<S, P>\n\nexport const $root = '$root' as const\n\ntype DepsArgs<S extends object, Deps extends ReadonlyArray<StateFieldPath<S>>> = {\n readonly [K in keyof Deps]: StateAtPath<S, Deps[K]>\n}\n\n/**\n * StateTrait.from:\n * - Narrows available field paths based on the state Schema, adding type constraints to trait specs.\n * - At runtime this returns the raw spec object; normalization is handled by internal layers.\n */\nexport const from =\n <S extends object, I>(_schema: Schema.Schema<S, I>) =>\n (spec: StateTraitSpec<S>): StateTraitSpec<S> =>\n spec\n\nexport const node = <Input = unknown, Ctx = unknown>(\n spec: Omit<Model.StateTraitNode<Input, Ctx>, '_tag'>,\n): Model.StateTraitNode<Input, Ctx> => ({\n _tag: 'StateTraitNode',\n ...spec,\n})\n\nexport const list = <Item = unknown>(spec: Omit<Model.StateTraitList<Item>, '_tag'>): Model.StateTraitList<Item> => ({\n _tag: 'StateTraitList',\n ...spec,\n})\n\n/**\n * StateTrait.computed:\n * - Declares computed semantics for a field.\n * - Uses explicit deps as the single source of truth for dependencies (diagnostics / reverse-closure / incremental sched).\n */\nexport const computed = <\n S extends object,\n P extends StateFieldPath<S>,\n const Deps extends ReadonlyArray<StateFieldPath<S>>,\n>(input: {\n readonly deps: Deps\n readonly get: (...depsValues: DepsArgs<S, Deps>) => StateAtPath<S, P>\n readonly equals?: (prev: StateAtPath<S, P>, next: StateAtPath<S, P>) => boolean\n /**\n * 043: explicit converge time-slicing scheduling.\n * - unset: immediate (default behavior unchanged)\n * - deferred: can be postponed and merged into later windows (requires runtime time-slicing enabled)\n */\n readonly scheduling?: Model.TraitConvergeScheduling\n}): StateTraitEntry<S, P> => {\n const derive = (state: Readonly<S>): StateAtPath<S, P> => {\n const args = (input.deps as ReadonlyArray<string>).map((dep) => RowId.getAtPath(state as any, dep))\n return (input.get as any)(...args)\n }\n return {\n fieldPath: undefined as unknown as P,\n kind: 'computed',\n meta: {\n deps: input.deps,\n derive,\n equals: input.equals,\n ...(input.scheduling ? { scheduling: input.scheduling } : {}),\n },\n } as StateTraitEntry<S, P>\n}\n\n/**\n * StateTrait.source:\n * - Declares an external resource source for a field (Resource / Query integration is implemented in later phases).\n * - The kernel owns keyHash gating / concurrency / ReplayMode behavior.\n */\nexport const source = <\n S extends object,\n P extends StateFieldPath<S>,\n const Deps extends ReadonlyArray<StateFieldPath<S>>,\n>(input: {\n readonly resource: string\n readonly deps: Deps\n readonly key: (...depsValues: DepsArgs<S, Deps>) => unknown\n readonly triggers?: ReadonlyArray<'onMount' | 'onKeyChange' | 'manual'>\n readonly debounceMs?: number\n readonly concurrency?: 'switch' | 'exhaust-trailing'\n /**\n * Serializable metadata for Devtools/docs (whitelisted fields are extracted during build).\n */\n readonly meta?: Record<string, unknown>\n}): StateTraitEntry<S, P> => {\n const key = (state: Readonly<S>): unknown => {\n const args = (input.deps as ReadonlyArray<string>).map((dep) => RowId.getAtPath(state as any, dep))\n return (input.key as any)(...args)\n }\n return {\n fieldPath: undefined as unknown as P,\n kind: 'source',\n meta: { ...input, key },\n } as StateTraitEntry<S, P>\n}\n\n/**\n * StateTrait.link:\n * - Declares a linkage from another field into the target field.\n * - `meta.from` is also constrained by `StateFieldPath<S>`.\n */\nexport const link = <S extends object, P extends StateFieldPath<S>>(meta: {\n from: StateFieldPath<S>\n /**\n * 043: explicit converge time-slicing scheduling.\n * - unset: immediate (default behavior unchanged)\n * - deferred: can be postponed and merged into later windows (requires runtime time-slicing enabled)\n */\n scheduling?: Model.TraitConvergeScheduling\n}): StateTraitEntry<S, P> =>\n ({\n fieldPath: undefined as unknown as P,\n kind: 'link',\n meta: { ...meta, ...(meta.scheduling ? { scheduling: meta.scheduling } : {}) },\n }) as StateTraitEntry<S, P>\n\n/**\n * StateTrait.build:\n * - Normalizes the spec into an executable Program (including Graph/Plan).\n * - When DSL and build constraints differ, build is the final authority (e.g. requiring explicit deps).\n */\nexport const build = <S extends object>(\n stateSchema: Schema.Schema<S, any>,\n spec: StateTraitSpec<S>,\n): StateTraitProgram<S> => InternalBuild.build(stateSchema, spec)\n\n/**\n * StateTrait.install:\n * - Installs Program-defined behavior (computed/link/source/check, etc.) on top of a Bound API.\n * - Each PlanStep corresponds to a long-lived Effect mounted into the runtime Scope.\n */\nexport const install = <S extends object>(\n bound: BoundApi<any, any>,\n program: StateTraitProgram<S>,\n): Effect.Effect<void, never, any> => InternalInstall.install(bound, program)\n\n/**\n * StateTrait.exportStaticIr:\n * - Exports minimal Static IR (aligned with 009 canonical FieldPath constraints) for Devtools / Alignment Lab.\n * - The return value must be JSON-stringifiable (evidence packages / replay pipeline).\n */\nexport type StaticIr = InternalIr.StaticIr\n\nexport const exportStaticIr = (\n program: StateTraitProgram<any>,\n moduleId: string,\n options?: {\n readonly version?: string\n },\n): StaticIr =>\n InternalIr.exportStaticIr({\n program,\n moduleId,\n version: options?.version,\n })\n","import { Effect } from 'effect'\nimport type { BoundApi } from '../runtime/core/module.js'\nimport { getBoundInternals } from '../runtime/core/runtimeInternalsAccessor.js'\nimport * as SourceRuntime from './source.js'\nimport type {\n StateTraitProgram,\n StateTraitPlanStep,\n StateTraitEntry,\n TraitConvergeGenerationBumpReason,\n} from './model.js'\n\nconst buildEntryIndex = <S>(\n entries: ReadonlyArray<StateTraitEntry<S, string>>,\n): Map<string, Array<StateTraitEntry<S, string>>> => {\n const index = new Map<string, Array<StateTraitEntry<S, string>>>()\n for (const entry of entries) {\n const list = index.get(entry.fieldPath) ?? []\n list.push(entry)\n index.set(entry.fieldPath, list)\n }\n return index\n}\n\n/**\n * Install behaviors described by StateTraitProgram onto the given Bound API.\n *\n * - Phase 2 minimal implementation:\n * - Register watchers for computed fields: recompute target fields when State changes.\n * - Register watchers for link fields: sync target fields when source fields change.\n * - Reserve refresh entrypoints for source fields (no external calls yet).\n *\n * Notes:\n * - All watchers are installed via Bound API `$`, without directly depending on ModuleRuntime.\n * - Each PlanStep corresponds to a long-lived Effect and is mounted into the Runtime Scope via forkScoped.\n */\nexport const install = <S>(\n bound: BoundApi<any, any>,\n program: StateTraitProgram<S>,\n): Effect.Effect<void, never, any> => {\n // Register the program to Runtime first (the converge engine runs computed/link/check before txn commit).\n try {\n const internals = getBoundInternals(bound as any)\n ;(internals.traits.registerStateTraitProgram as any)(program, {\n bumpReason: 'logic_installed' as TraitConvergeGenerationBumpReason,\n })\n } catch {\n // no-op for legacy/mocked bound\n }\n\n const entryIndex = buildEntryIndex(program.entries as any)\n\n const installStep = (step: StateTraitPlanStep): Effect.Effect<void, never, any> => {\n if (!step.targetFieldPath) {\n return Effect.void\n }\n\n if (step.kind !== 'source-refresh') {\n // computed/link/check are handled by the runtime core within the transaction window; install keeps only source.refresh entrypoints.\n return Effect.void\n }\n\n const candidates = entryIndex.get(step.targetFieldPath)\n if (!candidates || candidates.length === 0) {\n // The plan references a missing spec: treat it as a build-time bug and ignore the step here.\n return Effect.void\n }\n\n const entry = candidates.find((e) => e.kind === 'source')\n\n if (!entry) {\n return Effect.void\n }\n\n return SourceRuntime.installSourceRefresh(bound, step, entry as any)\n }\n\n return Effect.forEach(program.plan.steps, (step) => installStep(step)).pipe(Effect.asVoid)\n}\n"],"mappings":"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","names":["build","exportStaticIr","install","list","build","install","exportStaticIr"]}
@@ -1,8 +0,0 @@
1
- // src/internal/runtime/core/Platform.ts
2
- import { Context } from "effect";
3
- var Tag = Context.GenericTag("@logixjs/Platform");
4
-
5
- export {
6
- Tag
7
- };
8
- //# sourceMappingURL=chunk-KL5ACTCT.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/internal/runtime/core/Platform.ts"],"sourcesContent":["import { Context, Effect } from 'effect'\n\nexport interface Service {\n readonly lifecycle: {\n readonly onSuspend: (eff: Effect.Effect<void, never, any>) => Effect.Effect<void, never, any>\n readonly onResume: (eff: Effect.Effect<void, never, any>) => Effect.Effect<void, never, any>\n readonly onReset?: (eff: Effect.Effect<void, never, any>) => Effect.Effect<void, never, any>\n }\n\n /**\n * Platform signal broadcaster (for host integration and tests): triggers registered lifecycle handlers.\n *\n * Notes:\n * - The default implementation should be a safe no-op.\n * - Failure policy is decided by the platform implementation; the runtime should ensure \"do not terminate the instance by default\".\n */\n readonly emitSuspend: () => Effect.Effect<void, never, any>\n readonly emitResume: () => Effect.Effect<void, never, any>\n readonly emitReset: () => Effect.Effect<void, never, any>\n}\n\nexport const Tag = Context.GenericTag<Service>('@logixjs/Platform')\n"],"mappings":";AAAA,SAAS,eAAuB;AAqBzB,IAAM,MAAM,QAAQ,WAAoB,mBAAmB;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/internal/runtime/core/FullCutoverGate.ts","../src/internal/runtime/core/RuntimeServiceBuiltins.ts"],"sourcesContent":["import type { KernelId } from './KernelRef.js'\nimport type { RuntimeServiceBinding, RuntimeServicesEvidence } from './RuntimeKernel.js'\n\nexport interface CutoverCoverageMatrix {\n readonly version: 'v1'\n readonly requiredServiceIds: ReadonlyArray<string>\n}\n\nexport const CutoverCoverageMatrix = {\n version: 'v1',\n requiredServiceIds: ['txnQueue', 'operationRunner', 'transaction', 'dispatch'],\n} as const satisfies CutoverCoverageMatrix\n\nexport type FullCutoverGateMode = 'trial' | 'fullCutover'\n\nexport interface FullCutoverGateAnchor {\n readonly moduleId: string\n readonly instanceId: string\n /**\n * Convention: txnSeq=0 denotes assembly (a wiring-time failure anchor).\n * Full Cutover Gate is evaluated during assembly by default, so it does not depend on a real txn.\n */\n readonly txnSeq: number\n}\n\nexport type FullCutoverGateVerdict = 'PASS' | 'FAIL'\n\nexport interface FullCutoverGateResult {\n readonly version: 'v1'\n readonly mode: FullCutoverGateMode\n readonly requestedKernelId: KernelId\n readonly verdict: FullCutoverGateVerdict\n /**\n * fullyActivated: a stricter \"full cutover\" truth value.\n * - Requires every serviceId in the coverage matrix to be bound to the expected implId.\n * - Requires no fallback (any `fallback=` in overridesApplied means not fully activated).\n *\n * Note: in trial mode the verdict may be PASS while fullyActivated can still be false.\n */\n readonly fullyActivated: boolean\n readonly missingServiceIds: ReadonlyArray<string>\n readonly fallbackServiceIds: ReadonlyArray<string>\n readonly anchor: FullCutoverGateAnchor\n /**\n * When diagnostics=off, it must stay slim (avoid permanent overhead).\n * In light/full, additional explainable info is allowed (still must be serializable).\n */\n readonly details?: {\n readonly expectedImplId: string\n readonly bindings: ReadonlyArray<RuntimeServiceBinding>\n readonly overridesApplied: ReadonlyArray<string>\n }\n}\n\nconst expectedImplIdForKernel = (kernelId: KernelId): string => (kernelId === 'core' ? 'builtin' : kernelId)\n\nconst parseFallbackServiceIds = (overridesApplied: ReadonlyArray<string>): ReadonlyArray<string> => {\n const out = new Set<string>()\n for (const entry of overridesApplied) {\n if (!entry.includes('(fallback=')) continue\n const colon = entry.indexOf(':')\n if (colon < 0) continue\n const eq = entry.indexOf('=', colon + 1)\n if (eq < 0) continue\n const serviceId = entry.slice(colon + 1, eq)\n if (serviceId.length > 0) out.add(serviceId)\n }\n return Array.from(out).sort((a, b) => a.localeCompare(b))\n}\n\nconst collectMissingServiceIds = (args: {\n readonly expectedImplId: string\n readonly requiredServiceIds: ReadonlyArray<string>\n readonly bindings: ReadonlyArray<RuntimeServiceBinding>\n}): ReadonlyArray<string> => {\n const bindingByServiceId = new Map<string, RuntimeServiceBinding>()\n for (const b of args.bindings) {\n bindingByServiceId.set(b.serviceId, b)\n }\n\n const missing: string[] = []\n for (const serviceId of args.requiredServiceIds) {\n const binding = bindingByServiceId.get(serviceId)\n const implId = binding?.implId\n if (!implId || implId !== args.expectedImplId) {\n missing.push(serviceId)\n }\n }\n\n return missing\n}\n\nexport const evaluateFullCutoverGate = (args: {\n readonly mode: FullCutoverGateMode\n readonly requestedKernelId: KernelId\n readonly runtimeServicesEvidence: RuntimeServicesEvidence\n readonly coverageMatrix?: CutoverCoverageMatrix\n readonly diagnosticsLevel?: 'off' | 'light' | 'full' | 'sampled'\n}): FullCutoverGateResult => {\n const expectedImplId = expectedImplIdForKernel(args.requestedKernelId)\n const matrix = args.coverageMatrix ?? CutoverCoverageMatrix\n\n const fallbackServiceIds = parseFallbackServiceIds(args.runtimeServicesEvidence.overridesApplied)\n const missingServiceIds = collectMissingServiceIds({\n expectedImplId,\n requiredServiceIds: matrix.requiredServiceIds,\n bindings: args.runtimeServicesEvidence.bindings,\n })\n\n const fullyActivated = missingServiceIds.length === 0 && fallbackServiceIds.length === 0\n\n const verdict: FullCutoverGateVerdict = args.mode === 'fullCutover' ? (fullyActivated ? 'PASS' : 'FAIL') : 'PASS'\n\n const moduleIdRaw = args.runtimeServicesEvidence.moduleId\n const moduleId = typeof moduleIdRaw === 'string' && moduleIdRaw.length > 0 ? moduleIdRaw : 'unknown'\n\n const anchor: FullCutoverGateAnchor = {\n moduleId,\n instanceId: args.runtimeServicesEvidence.instanceId,\n txnSeq: 0,\n }\n\n const level = args.diagnosticsLevel ?? 'off'\n\n return {\n version: 'v1',\n mode: args.mode,\n requestedKernelId: args.requestedKernelId,\n verdict,\n fullyActivated,\n missingServiceIds,\n fallbackServiceIds,\n anchor,\n ...(level === 'off'\n ? {}\n : {\n details: {\n expectedImplId,\n bindings: args.runtimeServicesEvidence.bindings,\n overridesApplied: args.runtimeServicesEvidence.overridesApplied,\n },\n }),\n }\n}\n","import { Context, Effect } from 'effect'\n\nexport interface RuntimeServiceBuiltins {\n /**\n * Returns the make Effect of a builtin implementation (provided by ModuleRuntime during assembly, avoiding external code\n * capturing internal closures/state).\n * - For kernel implementors only (e.g. core-ng) to implement behavior-equivalent replacements or thin wrappers.\n * - Not an app-facing contract; must not be depended on from business Flow/Logic.\n */\n readonly getBuiltinMake: (serviceId: string) => Effect.Effect<unknown, never, any>\n}\n\nexport class RuntimeServiceBuiltinsTag extends Context.Tag('@logixjs/core/RuntimeServiceBuiltins')<\n RuntimeServiceBuiltinsTag,\n RuntimeServiceBuiltins\n>() {}\n"],"mappings":";AAQO,IAAM,wBAAwB;AAAA,EACnC,SAAS;AAAA,EACT,oBAAoB,CAAC,YAAY,mBAAmB,eAAe,UAAU;AAC/E;AA2CA,IAAM,0BAA0B,CAAC,aAAgC,aAAa,SAAS,YAAY;AAEnG,IAAM,0BAA0B,CAAC,qBAAmE;AAClG,QAAM,MAAM,oBAAI,IAAY;AAC5B,aAAW,SAAS,kBAAkB;AACpC,QAAI,CAAC,MAAM,SAAS,YAAY,EAAG;AACnC,UAAM,QAAQ,MAAM,QAAQ,GAAG;AAC/B,QAAI,QAAQ,EAAG;AACf,UAAM,KAAK,MAAM,QAAQ,KAAK,QAAQ,CAAC;AACvC,QAAI,KAAK,EAAG;AACZ,UAAM,YAAY,MAAM,MAAM,QAAQ,GAAG,EAAE;AAC3C,QAAI,UAAU,SAAS,EAAG,KAAI,IAAI,SAAS;AAAA,EAC7C;AACA,SAAO,MAAM,KAAK,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAC1D;AAEA,IAAM,2BAA2B,CAAC,SAIL;AAC3B,QAAM,qBAAqB,oBAAI,IAAmC;AAClE,aAAW,KAAK,KAAK,UAAU;AAC7B,uBAAmB,IAAI,EAAE,WAAW,CAAC;AAAA,EACvC;AAEA,QAAM,UAAoB,CAAC;AAC3B,aAAW,aAAa,KAAK,oBAAoB;AAC/C,UAAM,UAAU,mBAAmB,IAAI,SAAS;AAChD,UAAM,SAAS,SAAS;AACxB,QAAI,CAAC,UAAU,WAAW,KAAK,gBAAgB;AAC7C,cAAQ,KAAK,SAAS;AAAA,IACxB;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,0BAA0B,CAAC,SAMX;AAC3B,QAAM,iBAAiB,wBAAwB,KAAK,iBAAiB;AACrE,QAAM,SAAS,KAAK,kBAAkB;AAEtC,QAAM,qBAAqB,wBAAwB,KAAK,wBAAwB,gBAAgB;AAChG,QAAM,oBAAoB,yBAAyB;AAAA,IACjD;AAAA,IACA,oBAAoB,OAAO;AAAA,IAC3B,UAAU,KAAK,wBAAwB;AAAA,EACzC,CAAC;AAED,QAAM,iBAAiB,kBAAkB,WAAW,KAAK,mBAAmB,WAAW;AAEvF,QAAM,UAAkC,KAAK,SAAS,gBAAiB,iBAAiB,SAAS,SAAU;AAE3G,QAAM,cAAc,KAAK,wBAAwB;AACjD,QAAM,WAAW,OAAO,gBAAgB,YAAY,YAAY,SAAS,IAAI,cAAc;AAE3F,QAAM,SAAgC;AAAA,IACpC;AAAA,IACA,YAAY,KAAK,wBAAwB;AAAA,IACzC,QAAQ;AAAA,EACV;AAEA,QAAM,QAAQ,KAAK,oBAAoB;AAEvC,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM,KAAK;AAAA,IACX,mBAAmB,KAAK;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAI,UAAU,QACV,CAAC,IACD;AAAA,MACE,SAAS;AAAA,QACP;AAAA,QACA,UAAU,KAAK,wBAAwB;AAAA,QACvC,kBAAkB,KAAK,wBAAwB;AAAA,MACjD;AAAA,IACF;AAAA,EACN;AACF;;;AC/IA,SAAS,eAAuB;AAYzB,IAAM,4BAAN,cAAwC,QAAQ,IAAI,sCAAsC,EAG/F,EAAE;AAAC;","names":[]}
@@ -1,13 +0,0 @@
1
- // src/internal/runtime/core/ConvergeStaticIrCollector.ts
2
- import { FiberRef, Layer } from "effect";
3
- var currentConvergeStaticIrCollectors = FiberRef.unsafeMake([]);
4
- var appendConvergeStaticIrCollectors = (collectors) => Layer.fiberRefLocallyScopedWith(currentConvergeStaticIrCollectors, (current) => [
5
- ...current,
6
- ...collectors
7
- ]);
8
-
9
- export {
10
- currentConvergeStaticIrCollectors,
11
- appendConvergeStaticIrCollectors
12
- };
13
- //# sourceMappingURL=chunk-M3BFQ7HK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/internal/runtime/core/ConvergeStaticIrCollector.ts"],"sourcesContent":["import { FiberRef, Layer } from 'effect'\nimport type { ConvergeStaticIrExport } from '../../state-trait/converge-ir.js'\n\n/**\n * ConvergeStaticIrCollector:\n * - Consumer interface for collecting ConvergeStaticIrExport (de-duplicated/indexed by staticIrDigest); an internal injectable capability.\n * - Typical implementations: DevtoolsHub (process-level) / EvidenceCollector (RunSession-level).\n *\n * Notes:\n * - Uses FiberRef<ReadonlyArray<...>> to allow appending multiple collectors within the same scope (similar to Debug sinks).\n * - ModuleRuntime reads the FiberRef value during installation and captures it in a closure, avoiding Env lookup on hot paths.\n */\nexport interface ConvergeStaticIrCollector {\n readonly register: (ir: ConvergeStaticIrExport) => void\n}\n\nexport const currentConvergeStaticIrCollectors = FiberRef.unsafeMake<ReadonlyArray<ConvergeStaticIrCollector>>([])\n\nexport const appendConvergeStaticIrCollectors = (\n collectors: ReadonlyArray<ConvergeStaticIrCollector>,\n): Layer.Layer<any, never, never> =>\n Layer.fiberRefLocallyScopedWith(currentConvergeStaticIrCollectors, (current) => [\n ...current,\n ...collectors,\n ]) as Layer.Layer<any, never, never>\n"],"mappings":";AAAA,SAAS,UAAU,aAAa;AAgBzB,IAAM,oCAAoC,SAAS,WAAqD,CAAC,CAAC;AAE1G,IAAM,mCAAmC,CAC9C,eAEA,MAAM,0BAA0B,mCAAmC,CAAC,YAAY;AAAA,EAC9E,GAAG;AAAA,EACH,GAAG;AACL,CAAC;","names":[]}
@@ -1 +0,0 @@
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/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 ? -1 : a.actionTag > b.actionTag ? 1 : a.sourceKey.localeCompare(b.sourceKey),\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.localeCompare(b.kind)))\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'\n\ntype RootLike<Sh extends AnyModuleShape> = ModuleImpl<any, Sh, any> | { readonly impl: ModuleImpl<any, Sh, any> }\n\nexport interface TrialRunReportBudgets {\n readonly maxBytes?: number\n}\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 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 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 ]\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((a, b) => a.localeCompare(b))\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((a, b) => a.localeCompare(b))\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 = [...Array.from(Cause.failures(cause)), ...Array.from(Cause.defects(cause))]\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, { renderErrorCause: true }))\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((a, b) => a.localeCompare(b)),\n missingConfigKeys: Array.from(new Set(missingConfigKeys)).sort((a, b) => a.localeCompare(b)),\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((a, b) => a.localeCompare(b))\n\n const missingServices = Array.from(new Set(params.missingServices ?? [])).sort((a, b) => a.localeCompare(b))\n const missingConfigKeys = Array.from(new Set(params.missingConfigKeys ?? [])).sort((a, b) => a.localeCompare(b))\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((a, b) => a.localeCompare(b))\n\n const configKeys = Array.from(new Set([...providedConfigKeys, ...missingConfigKeys])).sort((a, b) =>\n a.localeCompare(b),\n )\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 const start = hasTimeout ? Date.now() : 0\n\n while (true) {\n const exitOpt = yield* Fiber.poll(fiber)\n if (Option.isSome(exitOpt)) {\n return exitOpt.value as Exit.Exit<A, E | Error>\n }\n\n if (hasTimeout) {\n const elapsedMs = Date.now() - start\n if (elapsedMs >= timeoutMs) {\n yield* Fiber.interruptFork(fiber)\n return Exit.fail(makeTrialRunTimeoutError())\n }\n }\n\n // NOTE: timer yield (not TestClock-based)\n yield* Effect.promise(() => new Promise<void>((r) => setTimeout(r, 1)))\n }\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(rootImpl.module as any)\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.failureOption(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 const evidence = collector.exportEvidencePackage({\n maxEvents: options?.maxEvents ?? 1000,\n })\n\n const manifest = (() => {\n try {\n return extractManifest(root as any, {\n includeStaticIr: true,\n budgets: { maxBytes: 200_000 },\n })\n } catch {\n return undefined\n }\n })()\n\n const staticIr = (() => {\n try {\n return exportStaticIr(root as any)\n } catch {\n return undefined\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) ? Option.getOrUndefined(Cause.dieOption(closeExit.cause)) : undefined\n\n if (!Exit.isSuccess(bootExit)) {\n const failure = Option.getOrUndefined(Cause.failureOption(bootExit.cause))\n const defect = Option.getOrUndefined(Cause.dieOption(bootExit.cause))\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 = Option.getOrUndefined(Cause.dieOption(closeExit.cause))\n const failure = Option.getOrUndefined(Cause.failureOption(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 moduleId =\n typeof (rootImpl.module as any)?.id === 'string' && (rootImpl.module as any).id.length > 0\n ? String((rootImpl.module as any).id)\n : (manifest?.moduleId ?? 'unknown')\n\n const artifacts = collectTrialRunArtifacts({\n exporters: getTrialRunArtifactExporters(rootImpl.module as any),\n ctx: {\n moduleId,\n manifest,\n staticIr: staticIr as any,\n environment,\n },\n })\n\n let report: TrialRunReport = {\n runId: session.runId,\n ok,\n manifest,\n staticIr: staticIr as any,\n artifacts,\n environment,\n evidence,\n summary,\n error,\n }\n\n const maxBytes = options?.budgets?.maxBytes\n if (typeof maxBytes === 'number' && Number.isFinite(maxBytes) && maxBytes > 0) {\n const originalBytes = utf8ByteLength(report)\n if (originalBytes > maxBytes) {\n report = {\n runId: session.runId,\n ok: false,\n environment,\n error: {\n message: `[Logix] TrialRunReport exceeded maxBytes (${originalBytes} > ${maxBytes})`,\n code: 'Oversized',\n hint: 'Reduce maxEvents or budgets.maxBytes, or split manifest/evidence artifacts in CI.',\n },\n summary: {\n __logix: {\n truncated: true,\n maxBytes,\n originalBytes,\n dropped: ['manifest', 'staticIr', 'artifacts', 'evidence'],\n },\n },\n }\n }\n }\n\n return report\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 map = new Map<string, string>()\n for (const [k, v] of Object.entries(record ?? {})) {\n if (!k) continue\n if (v === undefined) continue\n map.set(k, String(v))\n }\n return ConfigProvider.fromMap(map)\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 = Layer.setConfigProvider(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 = [...Array.from(Cause.defects(cause)), ...Array.from(Cause.failures(cause))]\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.catchAllCause((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 { Context, Layer } 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 Context.Tag('@logixjs/RuntimeHost')<RuntimeHost, RuntimeHostService>() {}\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((a, b) =>\n a.localeCompare(b),\n )\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.localeCompare(ib)\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((a, b) => a.localeCompare(b))) {\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.localeCompare(b.artifactKey))\n\n return Object.fromEntries(collected.map((c) => [c.artifactKey, c.envelope])) satisfies TrialRunArtifacts\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":"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","names":["exportStaticIr","isRecord","isModuleImpl","resolveModuleId","next","exportStaticIr","Cause","Effect","Layer","layer","Effect","Layer","layer","Layer","Effect","Layer","make","Layer","isRecord","utf8ByteLength","Cause","toErrorSummaryWithCode","Effect","layer","Layer","make","exportStaticIr","Effect","Layer","defaultHost","Effect","Layer"]}