@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,27 +1,32 @@
1
+ import {
2
+ exportStaticIr,
3
+ extractManifest,
4
+ trialRun
5
+ } from "./chunk-67DIEA53.js";
1
6
  import {
2
7
  KernelContractMetaAllowlist,
3
8
  evaluateFullCutoverGate,
9
+ fullCutoverGateModeLayer,
4
10
  getKernelImplementationRef,
5
11
  getRuntimeServicesEvidence
6
- } from "./chunk-24VULZ7A.js";
12
+ } from "./chunk-UR5BXLBP.js";
7
13
  import {
8
- exportStaticIr,
9
- extractManifest,
10
- trialRun
11
- } from "./chunk-M3WTHJHJ.js";
14
+ compileWorkflowStaticIrV1
15
+ } from "./chunk-3L6QGFMM.js";
12
16
  import {
17
+ FullCutoverGateModeTag,
13
18
  normalizeKernelImplementationRef
14
- } from "./chunk-ZGDVUPTM.js";
19
+ } from "./chunk-IOZ3VKPK.js";
15
20
  import {
16
21
  record
17
- } from "./chunk-DMBALCE2.js";
22
+ } from "./chunk-V2SBGVDO.js";
23
+ import {
24
+ EffectOpMiddlewareTag
25
+ } from "./chunk-LPPZDFTD.js";
18
26
  import {
19
27
  fnv1a32,
20
28
  stableStringify
21
- } from "./chunk-GMPEOUP2.js";
22
- import {
23
- EffectOpMiddlewareTag
24
- } from "./chunk-JWOYLO27.js";
29
+ } from "./chunk-4MZ7BT3R.js";
25
30
  import {
26
31
  __export
27
32
  } from "./chunk-PZ5AY32C.js";
@@ -30,12 +35,126 @@ import {
30
35
  var Reflection_exports = {};
31
36
  __export(Reflection_exports, {
32
37
  diffManifest: () => diffManifest2,
38
+ exportControlSurface: () => exportControlSurface2,
33
39
  exportStaticIr: () => exportStaticIr2,
34
40
  extractManifest: () => extractManifest2,
35
41
  verifyFullCutoverGate: () => verifyFullCutoverGate,
36
42
  verifyKernelContract: () => verifyKernelContract2
37
43
  });
38
- import { Context as Context2, Effect as Effect2, Exit as Exit2, Layer as Layer2 } from "effect";
44
+ import { Effect as Effect2, Exit as Exit2, Layer as Layer2, ServiceMap as ServiceMap2 } from "effect";
45
+
46
+ // src/internal/observability/controlSurfaceManifest.ts
47
+ var makeDigest = (value) => `control_surface_v1:${fnv1a32(stableStringify(value))}`;
48
+ var exportEffectsIndexDigest = (entries) => `effects_index_v1:${fnv1a32(stableStringify(entries))}`;
49
+ var exportWorkflowEffectsIndex = (args) => {
50
+ const moduleId = args.moduleId;
51
+ return Array.from(args.workflowSurface).sort((a, b) => a.programId < b.programId ? -1 : a.programId > b.programId ? 1 : 0).map((ir) => {
52
+ const localId = ir.programId.startsWith(`${moduleId}.`) ? ir.programId.slice(moduleId.length + 1) : ir.programId;
53
+ const triggerNode = ir.nodes.find((n) => n.kind === "trigger");
54
+ const trigger = triggerNode?.kind === "trigger" && triggerNode.trigger.kind === "action" ? { kind: "action", action: { moduleId, actionTag: triggerNode.trigger.actionTag } } : {
55
+ kind: "lifecycle",
56
+ phase: triggerNode?.kind === "trigger" && triggerNode.trigger.kind === "lifecycle" ? triggerNode.trigger.phase : "onStart"
57
+ };
58
+ return {
59
+ kind: "workflow",
60
+ effectId: `${moduleId}::workflow:${localId}`,
61
+ trigger,
62
+ programId: ir.programId,
63
+ programDigest: ir.digest
64
+ };
65
+ });
66
+ };
67
+ var exportControlSurfaceManifest = (input) => {
68
+ const modules = Array.from(input.modules).sort((a, b) => a.moduleId < b.moduleId ? -1 : a.moduleId > b.moduleId ? 1 : 0);
69
+ const meta = input.meta;
70
+ const base = {
71
+ version: 1,
72
+ modules,
73
+ ...meta ? { meta } : null
74
+ };
75
+ return {
76
+ ...base,
77
+ digest: makeDigest(base)
78
+ };
79
+ };
80
+
81
+ // src/internal/observability/workflowSurface.ts
82
+ var makeDigest2 = (value) => `workflow_surface_v1:${fnv1a32(stableStringify(value))}`;
83
+ var exportWorkflowSurface = (programs) => {
84
+ const sorted = Array.from(programs).sort(
85
+ (a, b) => a.programId < b.programId ? -1 : a.programId > b.programId ? 1 : 0
86
+ );
87
+ const base = { version: 1, programs: sorted };
88
+ return { ...base, digest: makeDigest2(base) };
89
+ };
90
+
91
+ // src/internal/reflection/controlSurface.ts
92
+ var MODULE_INTERNAL = /* @__PURE__ */ Symbol.for("logix.module.internal");
93
+ var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
94
+ var isObjectLike = (value) => typeof value === "object" && value !== null || typeof value === "function";
95
+ var asNonEmptyString = (value) => typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
96
+ var resolveTagId = (tag) => {
97
+ if (!isObjectLike(tag)) return void 0;
98
+ return asNonEmptyString(tag.id);
99
+ };
100
+ var resolveModuleIdOrThrow = (module) => {
101
+ if (isRecord(module) && module._tag === "ModuleImpl") {
102
+ const id = resolveTagId(module.module);
103
+ if (id) return id;
104
+ throw new Error(
105
+ "[ControlSurfaceManifest] Failed to resolve moduleId from ModuleImpl.module.id.\nFix: pass a configured Module/ModuleImpl (has .id/.tag.id/.module.id), not a read-only handle."
106
+ );
107
+ }
108
+ if (isRecord(module)) {
109
+ const id = asNonEmptyString(module.id);
110
+ if (id) return id;
111
+ const tagId = resolveTagId(module.tag);
112
+ if (tagId) return tagId;
113
+ }
114
+ throw new Error(
115
+ "[ControlSurfaceManifest] Failed to resolve moduleId.\nFix: pass a configured Module/ModuleImpl (has .id/.tag.id/.module.id), not a read-only handle."
116
+ );
117
+ };
118
+ var resolveWorkflowDefs = (module) => {
119
+ if (!isObjectLike(module)) return [];
120
+ const internal = module[MODULE_INTERNAL];
121
+ const defs = isRecord(internal) ? internal.workflowDefs : void 0;
122
+ return Array.isArray(defs) ? defs : [];
123
+ };
124
+ var exportControlSurface = (modules, options) => {
125
+ const entries = [];
126
+ const workflowSurfaces = [];
127
+ const seen = /* @__PURE__ */ new Set();
128
+ for (const module of modules) {
129
+ const moduleId = resolveModuleIdOrThrow(module);
130
+ if (seen.has(moduleId)) {
131
+ throw new Error(`[ControlSurfaceManifest] Duplicate moduleId "${moduleId}".`);
132
+ }
133
+ seen.add(moduleId);
134
+ const defs = resolveWorkflowDefs(module);
135
+ if (defs.length === 0) {
136
+ entries.push({ moduleId, effectsIndex: [] });
137
+ continue;
138
+ }
139
+ const workflowIrs = defs.map((def) => compileWorkflowStaticIrV1({ moduleId, def }));
140
+ const surface = exportWorkflowSurface(workflowIrs);
141
+ workflowSurfaces.push({ moduleId, surface });
142
+ const effectsIndex = exportWorkflowEffectsIndex({ moduleId, workflowSurface: surface.programs });
143
+ const effectsIndexDigest = effectsIndex.length > 0 ? exportEffectsIndexDigest(effectsIndex) : void 0;
144
+ entries.push({
145
+ moduleId,
146
+ workflowSurface: { digest: surface.digest },
147
+ effectsIndex,
148
+ ...effectsIndexDigest ? { effectsIndexDigest } : null
149
+ });
150
+ }
151
+ const manifest = exportControlSurfaceManifest({
152
+ version: 1,
153
+ modules: entries,
154
+ ...options?.meta ? { meta: options.meta } : null
155
+ });
156
+ return { manifest, workflowSurfaces };
157
+ };
39
158
 
40
159
  // src/internal/reflection/diff.ts
41
160
  var SEVERITY_RANK = {
@@ -45,7 +164,7 @@ var SEVERITY_RANK = {
45
164
  };
46
165
  var uniqSorted = (input) => {
47
166
  const out = Array.from(new Set(input.filter((x) => typeof x === "string" && x.length > 0)));
48
- out.sort((a, b) => a.localeCompare(b));
167
+ out.sort();
49
168
  return out;
50
169
  };
51
170
  var diffStringKeys = (before, after) => {
@@ -55,12 +174,12 @@ var diffStringKeys = (before, after) => {
55
174
  for (const k of beforeSet) {
56
175
  if (!afterSet.has(k)) removed.push(k);
57
176
  }
58
- removed.sort((a, b) => a.localeCompare(b));
177
+ removed.sort();
59
178
  const added = [];
60
179
  for (const k of afterSet) {
61
180
  if (!beforeSet.has(k)) added.push(k);
62
181
  }
63
- added.sort((a, b) => a.localeCompare(b));
182
+ added.sort();
64
183
  return { removed, added };
65
184
  };
66
185
  var eqJsonValue = (a, b) => stableStringify(a) === stableStringify(b);
@@ -137,8 +256,8 @@ var diffManifest = (before, after, options) => {
137
256
  for (const id of afterById.keys()) {
138
257
  if (!beforeById.has(id)) added.push(id);
139
258
  }
140
- removed.sort((a, b) => a.localeCompare(b));
141
- added.sort((a, b) => a.localeCompare(b));
259
+ removed.sort();
260
+ added.sort();
142
261
  for (const id of beforeById.keys()) {
143
262
  const b = beforeById.get(id);
144
263
  const a = afterById.get(id);
@@ -152,8 +271,8 @@ var diffManifest = (before, after, options) => {
152
271
  if (b.derived !== a.derived) fields.push("derived");
153
272
  if (fields.length > 0) riskyChanged.push({ id, fields });
154
273
  }
155
- kindChanged.sort((x, y) => x.id.localeCompare(y.id));
156
- riskyChanged.sort((x, y) => x.id.localeCompare(y.id));
274
+ kindChanged.sort((x, y) => x.id < y.id ? -1 : x.id > y.id ? 1 : 0);
275
+ riskyChanged.sort((x, y) => x.id < y.id ? -1 : x.id > y.id ? 1 : 0);
157
276
  if (removed.length > 0) {
158
277
  changes.push({
159
278
  severity: "BREAKING",
@@ -257,11 +376,11 @@ var diffManifest = (before, after, options) => {
257
376
  const ra = SEVERITY_RANK[a.severity];
258
377
  const rb = SEVERITY_RANK[b.severity];
259
378
  if (ra !== rb) return ra - rb;
260
- const ca = a.code.localeCompare(b.code);
261
- if (ca !== 0) return ca;
379
+ if (a.code !== b.code) return a.code < b.code ? -1 : 1;
262
380
  const pa = a.pointer ?? "";
263
381
  const pb = b.pointer ?? "";
264
- return pa.localeCompare(pb);
382
+ if (pa !== pb) return pa < pb ? -1 : 1;
383
+ return 0;
265
384
  });
266
385
  const summary = {
267
386
  breaking: changes.filter((c) => c.severity === "BREAKING").length,
@@ -287,15 +406,15 @@ var diffManifest = (before, after, options) => {
287
406
  };
288
407
 
289
408
  // src/internal/reflection/kernelContract.ts
290
- import { Context, Effect, Exit, Layer } from "effect";
409
+ import { Effect, Exit, Layer, ServiceMap } from "effect";
291
410
  var resolveRootImpl = (root) => root?._tag === "ModuleImpl" ? root : root?.impl;
292
- var asNonEmptyString = (value) => typeof value === "string" && value.length > 0 ? value : void 0;
411
+ var asNonEmptyString2 = (value) => typeof value === "string" && value.length > 0 ? value : void 0;
293
412
  var asNonNegInt = (value, fallback = 0) => {
294
413
  if (typeof value !== "number" || !Number.isFinite(value)) return fallback;
295
414
  const n = Math.floor(value);
296
415
  return n >= 0 ? n : fallback;
297
416
  };
298
- var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
417
+ var isRecord2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
299
418
  var makeTraceEffectOpObserver = () => {
300
419
  return (op) => Effect.gen(function* () {
301
420
  if (op.meta?.policy?.disableObservers) {
@@ -332,12 +451,12 @@ var extractRuntimeSummary = (evidence) => {
332
451
  };
333
452
  };
334
453
  var canonicalizeOpMeta = (opMetaRaw) => {
335
- if (!isRecord(opMetaRaw)) return void 0;
454
+ if (!isRecord2(opMetaRaw)) return void 0;
336
455
  const out = {};
337
456
  for (const [k, v] of Object.entries(opMetaRaw)) {
338
457
  if (k === "instanceId" || k === "txnId" || k === "runtimeLabel" || k === "linkId") continue;
339
458
  if ((k === "deps" || k === "trace" || k === "tags") && Array.isArray(v) && v.every((x) => typeof x === "string")) {
340
- out[k] = v.slice().sort((a, b) => a.localeCompare(b));
459
+ out[k] = v.slice().sort();
341
460
  continue;
342
461
  }
343
462
  out[k] = v;
@@ -360,17 +479,17 @@ var extractKernelContractTraceOps = (evidence) => {
360
479
  for (const e of evidence.events) {
361
480
  if (e.type !== "debug:event") continue;
362
481
  const payload = e.payload;
363
- if (!isRecord(payload)) continue;
482
+ if (!isRecord2(payload)) continue;
364
483
  const meta = payload.meta;
365
484
  const opMeta = meta?.meta;
366
485
  const opSeq = asNonNegInt(opMeta?.opSeq, -1);
367
486
  if (opSeq < 0) continue;
368
- const instanceIdRaw = asNonEmptyString(payload.instanceId) ?? "unknown";
487
+ const instanceIdRaw = asNonEmptyString2(payload.instanceId) ?? "unknown";
369
488
  const instanceId = mapInstanceId(instanceIdRaw);
370
489
  const txnSeq = asNonNegInt(payload.txnSeq, 0);
371
- const moduleId = asNonEmptyString(payload.moduleId) ?? "unknown";
372
- const kind = asNonEmptyString(meta?.kind) ?? asNonEmptyString(payload.kind) ?? "unknown";
373
- const name = asNonEmptyString(meta?.name) ?? asNonEmptyString(payload.label) ?? "effectop";
490
+ const moduleId = asNonEmptyString2(payload.moduleId) ?? "unknown";
491
+ const kind = asNonEmptyString2(meta?.kind) ?? asNonEmptyString2(payload.kind) ?? "unknown";
492
+ const name = asNonEmptyString2(meta?.name) ?? asNonEmptyString2(payload.label) ?? "effectop";
374
493
  ops.push({
375
494
  anchor: { instanceId, txnSeq, opSeq },
376
495
  moduleId,
@@ -380,7 +499,7 @@ var extractKernelContractTraceOps = (evidence) => {
380
499
  });
381
500
  }
382
501
  ops.sort((a, b) => {
383
- if (a.anchor.instanceId !== b.anchor.instanceId) return a.anchor.instanceId.localeCompare(b.anchor.instanceId);
502
+ if (a.anchor.instanceId !== b.anchor.instanceId) return a.anchor.instanceId < b.anchor.instanceId ? -1 : 1;
384
503
  if (a.anchor.txnSeq !== b.anchor.txnSeq) return a.anchor.txnSeq - b.anchor.txnSeq;
385
504
  return a.anchor.opSeq - b.anchor.opSeq;
386
505
  });
@@ -397,7 +516,7 @@ var diffKernelContractTraceOps = (before, after) => {
397
516
  for (const op of after) {
398
517
  afterByKey.set(anchorKey(op.anchor), op);
399
518
  }
400
- const allKeys = Array.from(/* @__PURE__ */ new Set([...beforeByKey.keys(), ...afterByKey.keys()])).sort((a, b) => a.localeCompare(b));
519
+ const allKeys = Array.from(/* @__PURE__ */ new Set([...beforeByKey.keys(), ...afterByKey.keys()])).sort();
401
520
  for (const key of allKeys) {
402
521
  const b = beforeByKey.get(key);
403
522
  const a = afterByKey.get(key);
@@ -441,7 +560,7 @@ var runOnce = (rootImpl, run, options) => Effect.gen(function* () {
441
560
  const interaction = run?.interaction;
442
561
  const program = Effect.gen(function* () {
443
562
  const ctx = yield* rootImpl.layer.pipe(Layer.build);
444
- const runtime = Context.get(ctx, rootImpl.module);
563
+ const runtime = ServiceMap.get(ctx, rootImpl.module);
445
564
  if (interaction) {
446
565
  yield* interaction(runtime);
447
566
  }
@@ -450,7 +569,8 @@ var runOnce = (rootImpl, run, options) => Effect.gen(function* () {
450
569
  const traceLayer = Layer.succeed(EffectOpMiddlewareTag, {
451
570
  stack: [makeTraceEffectOpObserver()]
452
571
  });
453
- const extraLayer = run?.layer ? Layer.mergeAll(traceLayer, run.layer) : traceLayer;
572
+ const contractGateLayer = Layer.succeed(FullCutoverGateModeTag, "trial");
573
+ const extraLayer = run?.layer ? Layer.mergeAll(traceLayer, run.layer, contractGateLayer) : Layer.mergeAll(traceLayer, contractGateLayer);
454
574
  const result = yield* trialRun(program, {
455
575
  runId: run?.runId,
456
576
  diagnosticsLevel: options.diagnosticsLevel ?? "light",
@@ -506,12 +626,12 @@ var verifyKernelContract = (root, options) => Effect.gen(function* () {
506
626
 
507
627
  // src/Reflection.ts
508
628
  var resolveRootImpl2 = (root) => root?._tag === "ModuleImpl" ? root : root?.impl;
509
- var isRecord2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
629
+ var isRecord3 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
510
630
  var stableJson = (value) => JSON.stringify(value) ?? "";
511
631
  var diffMetaKeys = (before, after) => {
512
- const b = isRecord2(before) ? before : {};
513
- const a = isRecord2(after) ? after : {};
514
- const keys = Array.from(/* @__PURE__ */ new Set([...Object.keys(b), ...Object.keys(a)])).sort((x, y) => x.localeCompare(y));
632
+ const b = isRecord3(before) ? before : {};
633
+ const a = isRecord3(after) ? after : {};
634
+ const keys = Array.from(/* @__PURE__ */ new Set([...Object.keys(b), ...Object.keys(a)])).sort();
515
635
  const changed = [];
516
636
  for (const k of keys) {
517
637
  if (stableJson(b[k]) !== stableJson(a[k])) {
@@ -535,7 +655,7 @@ var tryAllowlistKernelContractDiff = (args) => {
535
655
  }
536
656
  const before = change.before;
537
657
  const after = change.after;
538
- if (!isRecord2(before) || !isRecord2(after)) {
658
+ if (!isRecord3(before) || !isRecord3(after)) {
539
659
  return { verdict: "FAIL", allowedDiffs: [] };
540
660
  }
541
661
  const anchorBefore = before.anchor;
@@ -564,12 +684,13 @@ var tryAllowlistKernelContractDiff = (args) => {
564
684
  metaKey,
565
685
  count,
566
686
  ...allow.get(metaKey) ? { reason: allow.get(metaKey) } : {}
567
- })).sort((a, b) => a.metaKey.localeCompare(b.metaKey));
687
+ })).sort((a, b) => a.metaKey < b.metaKey ? -1 : a.metaKey > b.metaKey ? 1 : 0);
568
688
  return { verdict: "PASS", allowedDiffs };
569
689
  };
570
690
  var extractManifest2 = (module, options) => extractManifest(module, options);
571
691
  var diffManifest2 = (before, after, options) => diffManifest(before, after, options);
572
692
  var exportStaticIr2 = (module) => exportStaticIr(module);
693
+ var exportControlSurface2 = (modules, options) => exportControlSurface(modules, options);
573
694
  var verifyKernelContract2 = (module, options) => verifyKernelContract(module, options);
574
695
  var verifyFullCutoverGate = (module, options) => Effect2.gen(function* () {
575
696
  const rootImpl = resolveRootImpl2(module);
@@ -585,7 +706,7 @@ var verifyFullCutoverGate = (module, options) => Effect2.gen(function* () {
585
706
  const gateRun = options?.gateAfter ?? options?.after;
586
707
  const gateProgram = Effect2.gen(function* () {
587
708
  const ctx = yield* rootImpl.layer.pipe(Layer2.build);
588
- const runtime = Context2.get(ctx, rootImpl.module);
709
+ const runtime = ServiceMap2.get(ctx, rootImpl.module);
589
710
  if (gateRun?.interaction) {
590
711
  yield* gateRun.interaction(runtime);
591
712
  }
@@ -594,10 +715,11 @@ var verifyFullCutoverGate = (module, options) => Effect2.gen(function* () {
594
715
  runtimeServicesEvidence: getRuntimeServicesEvidence(runtime)
595
716
  };
596
717
  });
718
+ const gateLayer = gateRun?.layer ? Layer2.mergeAll(gateRun.layer, fullCutoverGateModeLayer("trial")) : fullCutoverGateModeLayer("trial");
597
719
  const gateResult = yield* trialRun(gateProgram, {
598
720
  runId: gateRun?.runId,
599
721
  diagnosticsLevel: options?.gateDiagnosticsLevel ?? "off",
600
- layer: gateRun?.layer,
722
+ layer: gateLayer,
601
723
  runtimeServicesInstanceOverrides: gateRun?.runtimeServicesInstanceOverrides
602
724
  });
603
725
  const gateValue = Exit2.isSuccess(gateResult.exit) ? gateResult.exit.value : (() => {
@@ -625,8 +747,9 @@ export {
625
747
  extractManifest2 as extractManifest,
626
748
  diffManifest2 as diffManifest,
627
749
  exportStaticIr2 as exportStaticIr,
750
+ exportControlSurface2 as exportControlSurface,
628
751
  verifyKernelContract2 as verifyKernelContract,
629
752
  verifyFullCutoverGate,
630
753
  Reflection_exports
631
754
  };
632
- //# sourceMappingURL=chunk-DFNM3WX2.js.map
755
+ //# sourceMappingURL=chunk-S44BEV4B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Reflection.ts","../src/internal/observability/controlSurfaceManifest.ts","../src/internal/observability/workflowSurface.ts","../src/internal/reflection/controlSurface.ts","../src/internal/reflection/diff.ts","../src/internal/reflection/kernelContract.ts"],"sourcesContent":["import { Effect, Exit, Layer, ServiceMap } from 'effect'\nimport type { AnyModuleShape, ModuleImpl } from './internal/module.js'\nimport type { AnyModule } from './Module.js'\nimport type { StaticIr } from './internal/state-trait/ir.js'\nimport type { ExtractManifestOptions, ModuleManifest } from './internal/reflection/manifest.js'\nimport * as Manifest from './internal/reflection/manifest.js'\nimport * as StaticIrExport from './internal/reflection/staticIr.js'\nimport type {\n ExportControlSurfaceOptions,\n ExportControlSurfaceResult,\n ExportedWorkflowSurface,\n} from './internal/reflection/controlSurface.js'\nimport * as ControlSurfaceExport from './internal/reflection/controlSurface.js'\nimport type { DiffManifestOptions, ModuleManifestDiff } from './internal/reflection/diff.js'\nimport * as ManifestDiff from './internal/reflection/diff.js'\nimport type {\n KernelContractVerificationResult,\n VerifyKernelContractOptions,\n} from './internal/reflection/kernelContract.js'\nimport { verifyKernelContract as verifyKernelContractInternal } from './internal/reflection/kernelContract.js'\nimport { trialRun } from './internal/observability/trialRun.js'\nimport type { RuntimeServicesOverrides } from './Kernel.js'\nimport * as Kernel from './Kernel.js'\nimport type * as Debug from './internal/runtime/core/DebugSink.js'\n\nexport type {\n ModuleManifest,\n ExtractManifestOptions,\n ModuleManifestDiff,\n DiffManifestOptions,\n KernelContractVerificationResult,\n VerifyKernelContractOptions,\n ExportControlSurfaceOptions,\n ExportControlSurfaceResult,\n ExportedWorkflowSurface,\n}\n\ntype AnyModuleLike = { readonly impl: ModuleImpl<any, AnyModuleShape, any> }\ntype RootLike<Sh extends AnyModuleShape> = ModuleImpl<any, Sh, any> | AnyModuleLike\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 isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst stableJson = (value: unknown): string => JSON.stringify(value) ?? ''\n\nconst diffMetaKeys = (before: unknown, after: unknown): ReadonlyArray<string> => {\n const b = isRecord(before) ? before : {}\n const a = isRecord(after) ? after : {}\n const keys = Array.from(new Set([...Object.keys(b), ...Object.keys(a)])).sort()\n const changed: string[] = []\n for (const k of keys) {\n if (stableJson(b[k]) !== stableJson(a[k])) {\n changed.push(k)\n }\n }\n return changed\n}\n\nexport interface KernelContractAllowedDiff {\n readonly metaKey: string\n readonly count: number\n readonly reason?: string\n}\n\nconst tryAllowlistKernelContractDiff = (args: {\n readonly result: KernelContractVerificationResult\n readonly allowlist: ReadonlyArray<Kernel.KernelContractMetaAllowlistItem>\n}): { readonly verdict: 'PASS' | 'FAIL'; readonly allowedDiffs: ReadonlyArray<KernelContractAllowedDiff> } => {\n if (args.allowlist.length === 0) {\n return { verdict: args.result.verdict, allowedDiffs: [] }\n }\n\n const allow = new Map<string, string | undefined>()\n for (const item of args.allowlist) {\n allow.set(item.metaKey, item.reason)\n }\n\n const allowedCounts = new Map<string, number>()\n\n for (const change of args.result.changes) {\n if (change.code !== 'op.changed') {\n return { verdict: 'FAIL', allowedDiffs: [] }\n }\n\n const before = change.before as any\n const after = change.after as any\n if (!isRecord(before) || !isRecord(after)) {\n return { verdict: 'FAIL', allowedDiffs: [] }\n }\n\n const anchorBefore = before.anchor\n const anchorAfter = after.anchor\n if (stableJson(anchorBefore) !== stableJson(anchorAfter)) {\n return { verdict: 'FAIL', allowedDiffs: [] }\n }\n if (stableJson(before.moduleId) !== stableJson(after.moduleId)) {\n return { verdict: 'FAIL', allowedDiffs: [] }\n }\n if (stableJson(before.kind) !== stableJson(after.kind)) {\n return { verdict: 'FAIL', allowedDiffs: [] }\n }\n if (stableJson(before.name) !== stableJson(after.name)) {\n return { verdict: 'FAIL', allowedDiffs: [] }\n }\n\n const changed = diffMetaKeys(before.meta, after.meta)\n for (const metaKey of changed) {\n if (!allow.has(metaKey)) {\n return { verdict: 'FAIL', allowedDiffs: [] }\n }\n allowedCounts.set(metaKey, (allowedCounts.get(metaKey) ?? 0) + 1)\n }\n }\n\n const allowedDiffs = Array.from(allowedCounts.entries())\n .map(([metaKey, count]) => ({\n metaKey,\n count,\n ...(allow.get(metaKey) ? { reason: allow.get(metaKey) } : {}),\n }))\n .sort((a, b) => (a.metaKey < b.metaKey ? -1 : a.metaKey > b.metaKey ? 1 : 0))\n\n return { verdict: 'PASS', allowedDiffs }\n}\n\nexport interface FullCutoverGateTrialRunOptions<Sh extends AnyModuleShape> {\n readonly runId?: string\n readonly layer?: Layer.Layer<any, any, any>\n readonly runtimeServicesInstanceOverrides?: RuntimeServicesOverrides\n readonly interaction?: (runtime: any) => Effect.Effect<void, any, any>\n}\n\nexport interface VerifyFullCutoverGateOptions<Sh extends AnyModuleShape> extends VerifyKernelContractOptions<Sh> {\n readonly mode?: Kernel.FullCutoverGateMode\n /**\n * Evidence trimming level for gate evaluation:\n * - `off`: minimal summary (must still be runnable)\n * - `light` / `full`: add explainable details\n */\n readonly gateDiagnosticsLevel?: Debug.DiagnosticsLevel\n /**\n * Contract diff allowlist (disabled by default).\n * - Only allows specific op meta keys (by metaKey); the SSoT is code (KernelContractMetaAllowlist).\n */\n readonly enableContractMetaAllowlist?: boolean\n /**\n * After-run options used for gate evaluation; defaults to `options.after`.\n *\n * Only used to read runtimeServicesEvidence/kernelRef; does not rely on debug logs.\n */\n readonly gateAfter?: FullCutoverGateTrialRunOptions<Sh>\n}\n\nexport interface FullCutoverGateVerificationResult {\n readonly version: 'v1'\n readonly verdict: 'PASS' | 'FAIL'\n readonly gate: Kernel.FullCutoverGateResult\n readonly contract: KernelContractVerificationResult\n readonly contractVerdict: 'PASS' | 'FAIL'\n readonly allowedDiffs?: ReadonlyArray<KernelContractAllowedDiff>\n}\n\n/**\n * Reflection.extractManifest\n *\n * Extracts a platform-consumable Manifest IR (JSON, diffable) from the final module object (`AnyModule` / `ModuleImpl`).\n */\nexport const extractManifest = (\n module: ModuleImpl<any, AnyModuleShape, any> | AnyModule,\n options?: ExtractManifestOptions,\n): ModuleManifest => Manifest.extractManifest(module, options)\n\n/**\n * Reflection.diffManifest\n *\n * Diffs two Manifests and produces a stable, machine-readable summary (CI contract guard / UI reuse).\n */\nexport const diffManifest = (\n before: ModuleManifest,\n after: ModuleManifest,\n options?: DiffManifestOptions,\n): ModuleManifestDiff => ManifestDiff.diffManifest(before, after, options)\n\n/**\n * Reflection.exportStaticIr\n *\n * If the module contains a StateTrait program, exports canonical StaticIR (same shape and digest as StateTrait.exportStaticIr).\n */\nexport const exportStaticIr = (module: ModuleImpl<any, AnyModuleShape, any> | AnyModule): StaticIr | undefined =>\n StaticIrExport.exportStaticIr(module)\n\n/**\n * Reflection.exportControlSurface\n *\n * Exports the ControlSurfaceManifest (Root IR) and slice attachments (e.g. workflowSurface) from configured modules.\n *\n * Note: currently requires `AnyModule` (the configured module object returned by `ModuleDef.implement(...)`).\n */\nexport const exportControlSurface = (\n modules: ReadonlyArray<AnyModule>,\n options?: ExportControlSurfaceOptions,\n): ExportControlSurfaceResult => ControlSurfaceExport.exportControlSurface(modules, options)\n\n/**\n * Reflection.verifyKernelContract\n *\n * Runs two trial-runs (with optional different Layers/overrides) and exports a stable, machine-readable kernel contract diff report.\n */\nexport const verifyKernelContract = <Sh extends AnyModuleShape>(\n module: ModuleImpl<any, Sh, any> | AnyModule,\n options?: VerifyKernelContractOptions<Sh>,\n): import('effect').Effect.Effect<KernelContractVerificationResult, never, any> =>\n verifyKernelContractInternal(module as any, options as any)\n\nexport const verifyFullCutoverGate = <Sh extends AnyModuleShape>(\n module: ModuleImpl<any, Sh, any> | AnyModule,\n options?: VerifyFullCutoverGateOptions<Sh>,\n): Effect.Effect<FullCutoverGateVerificationResult, never, any> =>\n Effect.gen(function* () {\n const rootImpl = resolveRootImpl(module as any)\n\n const contractDiagnosticsLevel: Debug.DiagnosticsLevel =\n (options?.diagnosticsLevel as any) === 'off' ? 'light' : ((options?.diagnosticsLevel as any) ?? 'light')\n\n const contract = yield* verifyKernelContractInternal(module as any, {\n ...(options as any),\n diagnosticsLevel: contractDiagnosticsLevel,\n })\n\n const allowlistEnabled = options?.enableContractMetaAllowlist === true\n const allowlist = allowlistEnabled ? Kernel.KernelContractMetaAllowlist : []\n const contractAllowed = tryAllowlistKernelContractDiff({ result: contract, allowlist })\n const contractVerdict: 'PASS' | 'FAIL' = allowlistEnabled ? contractAllowed.verdict : contract.verdict\n\n const gateRun = (options?.gateAfter ?? options?.after) as FullCutoverGateTrialRunOptions<Sh> | undefined\n\n const gateProgram = Effect.gen(function* () {\n const ctx = yield* rootImpl.layer.pipe(Layer.build)\n const runtime: any = ServiceMap.get(ctx, rootImpl.module as any)\n if (gateRun?.interaction) {\n yield* gateRun.interaction(runtime)\n }\n return {\n kernelImplementationRef: Kernel.getKernelImplementationRef(runtime),\n runtimeServicesEvidence: Kernel.getRuntimeServicesEvidence(runtime),\n } as const\n })\n\n const gateLayer = gateRun?.layer\n ? (Layer.mergeAll(gateRun.layer, Kernel.fullCutoverGateModeLayer('trial')) as Layer.Layer<any, any, any>)\n : (Kernel.fullCutoverGateModeLayer('trial') as Layer.Layer<any, any, any>)\n\n const gateResult = yield* trialRun(gateProgram, {\n runId: gateRun?.runId,\n diagnosticsLevel: options?.gateDiagnosticsLevel ?? 'off',\n layer: gateLayer,\n runtimeServicesInstanceOverrides: gateRun?.runtimeServicesInstanceOverrides,\n })\n\n const gateValue = Exit.isSuccess(gateResult.exit)\n ? gateResult.exit.value\n : (() => {\n const msg = Exit.isFailure(gateResult.exit)\n ? String((gateResult.exit as any).cause ?? 'trial-run failed')\n : 'trial-run failed'\n throw new Error(msg)\n })()\n\n const gate = Kernel.evaluateFullCutoverGate({\n mode: options?.mode ?? 'fullCutover',\n requestedKernelId: gateValue.kernelImplementationRef.kernelId,\n runtimeServicesEvidence: gateValue.runtimeServicesEvidence,\n diagnosticsLevel: options?.gateDiagnosticsLevel ?? 'off',\n })\n\n const verdict: 'PASS' | 'FAIL' = gate.verdict === 'PASS' && contractVerdict === 'PASS' ? 'PASS' : 'FAIL'\n\n return {\n version: 'v1',\n verdict,\n gate,\n contract,\n contractVerdict,\n ...(allowlistEnabled ? { allowedDiffs: contractAllowed.allowedDiffs } : {}),\n }\n })\n","import { fnv1a32, stableStringify } from '../digest.js'\nimport type { JsonValue } from './jsonValue.js'\nimport type { WorkflowStaticIrV1 } from '../workflow/model.js'\n\nexport type ControlSurfaceVersion = 1\n\nexport type Digest = string\nexport type ModuleId = string\nexport type ActionTag = string\nexport type WorkflowStableId = string\n\nexport type ActionRef = { readonly moduleId: ModuleId; readonly actionTag: ActionTag }\n\nexport type EffectTrigger =\n | { readonly kind: 'action'; readonly action: ActionRef }\n | { readonly kind: 'lifecycle'; readonly phase: 'onStart' | 'onInit' }\n\nexport type SliceRef = { readonly digest: Digest }\n\nexport type WorkflowSurfaceRefV1 = SliceRef\n\nexport type ControlEffectIndexEntryV1 =\n | {\n readonly kind: 'workflow'\n readonly effectId: string\n readonly trigger: EffectTrigger\n readonly programId: WorkflowStableId\n readonly programDigest?: Digest\n }\n | {\n readonly kind: 'opaque'\n readonly effectId: string\n readonly trigger: EffectTrigger\n readonly sourceKey: string\n readonly summary?: string\n }\n\nexport type ControlSurfaceManifestV1 = {\n readonly version: ControlSurfaceVersion\n readonly digest: Digest\n readonly modules: ReadonlyArray<{\n readonly moduleId: ModuleId\n readonly workflowSurface?: WorkflowSurfaceRefV1\n readonly effectsIndex: ReadonlyArray<ControlEffectIndexEntryV1>\n readonly effectsIndexDigest?: Digest\n }>\n readonly meta?: { readonly generator?: JsonValue }\n}\n\nexport type ControlSurfaceManifest = ControlSurfaceManifestV1\n\nconst makeDigest = (value: unknown): string => `control_surface_v1:${fnv1a32(stableStringify(value))}`\n\nexport const exportEffectsIndexDigest = (entries: ReadonlyArray<ControlEffectIndexEntryV1>): Digest =>\n `effects_index_v1:${fnv1a32(stableStringify(entries))}`\n\nexport const exportWorkflowEffectsIndex = (args: {\n readonly moduleId: string\n readonly workflowSurface: ReadonlyArray<WorkflowStaticIrV1>\n}): ReadonlyArray<ControlEffectIndexEntryV1> => {\n const moduleId = args.moduleId\n return Array.from(args.workflowSurface)\n .sort((a, b) => (a.programId < b.programId ? -1 : a.programId > b.programId ? 1 : 0))\n .map((ir) => {\n const localId = ir.programId.startsWith(`${moduleId}.`) ? ir.programId.slice(moduleId.length + 1) : ir.programId\n const triggerNode = ir.nodes.find((n) => n.kind === 'trigger')\n const trigger: EffectTrigger =\n triggerNode?.kind === 'trigger' && triggerNode.trigger.kind === 'action'\n ? { kind: 'action', action: { moduleId, actionTag: triggerNode.trigger.actionTag } }\n : {\n kind: 'lifecycle',\n phase:\n triggerNode?.kind === 'trigger' && triggerNode.trigger.kind === 'lifecycle' ? triggerNode.trigger.phase : 'onStart',\n }\n\n return {\n kind: 'workflow',\n effectId: `${moduleId}::workflow:${localId}`,\n trigger,\n programId: ir.programId,\n programDigest: ir.digest,\n } satisfies ControlEffectIndexEntryV1\n })\n}\n\nexport const exportControlSurfaceManifest = (input: Omit<ControlSurfaceManifestV1, 'digest'>): ControlSurfaceManifestV1 => {\n const modules = Array.from(input.modules).sort((a, b) => (a.moduleId < b.moduleId ? -1 : a.moduleId > b.moduleId ? 1 : 0))\n const meta = input.meta\n\n const base = {\n version: 1 as const,\n modules,\n ...(meta ? { meta } : null),\n } satisfies Omit<ControlSurfaceManifestV1, 'digest'>\n\n return {\n ...base,\n digest: makeDigest(base),\n }\n}\n","import { fnv1a32, stableStringify } from '../digest.js'\nimport type { WorkflowStaticIrV1 } from '../workflow/model.js'\n\nexport type WorkflowSurfaceVersion = 1\n\nexport type WorkflowSurfaceV1 = {\n readonly version: WorkflowSurfaceVersion\n readonly digest: string\n readonly programs: ReadonlyArray<WorkflowStaticIrV1>\n}\n\nexport type WorkflowSurface = WorkflowSurfaceV1\n\nconst makeDigest = (value: unknown): string => `workflow_surface_v1:${fnv1a32(stableStringify(value))}`\n\nexport const exportWorkflowSurface = (programs: ReadonlyArray<WorkflowStaticIrV1>): WorkflowSurfaceV1 => {\n const sorted = Array.from(programs).sort((a, b) =>\n a.programId < b.programId ? -1 : a.programId > b.programId ? 1 : 0,\n )\n const base = { version: 1 as const, programs: sorted } as const\n return { ...base, digest: makeDigest(base) }\n}\n","import type { WorkflowDefV1 } from '../workflow/model.js'\nimport { compileWorkflowStaticIrV1 } from '../workflow/compiler.js'\nimport type { JsonValue } from '../observability/jsonValue.js'\nimport { exportControlSurfaceManifest, exportEffectsIndexDigest, exportWorkflowEffectsIndex } from '../observability/controlSurfaceManifest.js'\nimport type { ControlSurfaceManifestV1 } from '../observability/controlSurfaceManifest.js'\nimport { exportWorkflowSurface } from '../observability/workflowSurface.js'\nimport type { WorkflowSurfaceV1 } from '../observability/workflowSurface.js'\n\nexport type ExportedWorkflowSurface = {\n readonly moduleId: string\n readonly surface: WorkflowSurfaceV1\n}\n\nexport type ExportControlSurfaceResult = {\n readonly manifest: ControlSurfaceManifestV1\n readonly workflowSurfaces: ReadonlyArray<ExportedWorkflowSurface>\n}\n\nexport type ExportControlSurfaceOptions = {\n readonly meta?: { readonly generator?: JsonValue }\n}\n\nconst MODULE_INTERNAL = Symbol.for('logix.module.internal')\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst isObjectLike = (value: unknown): value is Record<string, unknown> | ((...args: never[]) => unknown) =>\n (typeof value === 'object' && value !== null) || typeof value === 'function'\n\nconst asNonEmptyString = (value: unknown): string | undefined =>\n typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined\n\nconst resolveTagId = (tag: unknown): string | undefined => {\n if (!isObjectLike(tag)) return undefined\n return asNonEmptyString((tag as Record<string, unknown>).id)\n}\n\nconst resolveModuleIdOrThrow = (module: unknown): string => {\n if (isRecord(module) && module._tag === 'ModuleImpl') {\n const id = resolveTagId(module.module)\n if (id) return id\n throw new Error(\n '[ControlSurfaceManifest] Failed to resolve moduleId from ModuleImpl.module.id.\\n' +\n 'Fix: pass a configured Module/ModuleImpl (has .id/.tag.id/.module.id), not a read-only handle.',\n )\n }\n\n if (isRecord(module)) {\n const id = asNonEmptyString(module.id)\n if (id) return id\n const tagId = resolveTagId(module.tag)\n if (tagId) return tagId\n }\n\n throw new Error(\n '[ControlSurfaceManifest] Failed to resolve moduleId.\\n' +\n 'Fix: pass a configured Module/ModuleImpl (has .id/.tag.id/.module.id), not a read-only handle.',\n )\n}\n\nconst resolveWorkflowDefs = (module: unknown): ReadonlyArray<WorkflowDefV1> => {\n if (!isObjectLike(module)) return []\n const internal = (module as Record<PropertyKey, unknown>)[MODULE_INTERNAL]\n const defs = isRecord(internal) ? internal.workflowDefs : undefined\n return Array.isArray(defs) ? (defs as ReadonlyArray<WorkflowDefV1>) : []\n}\n\nexport const exportControlSurface = (\n modules: ReadonlyArray<unknown>,\n options?: ExportControlSurfaceOptions,\n): ExportControlSurfaceResult => {\n const entries: Array<ControlSurfaceManifestV1['modules'][number]> = []\n const workflowSurfaces: Array<ExportedWorkflowSurface> = []\n\n const seen = new Set<string>()\n\n for (const module of modules) {\n const moduleId = resolveModuleIdOrThrow(module)\n if (seen.has(moduleId)) {\n throw new Error(`[ControlSurfaceManifest] Duplicate moduleId \"${moduleId}\".`)\n }\n seen.add(moduleId)\n\n const defs = resolveWorkflowDefs(module)\n if (defs.length === 0) {\n entries.push({ moduleId, effectsIndex: [] })\n continue\n }\n\n const workflowIrs = defs.map((def) => compileWorkflowStaticIrV1({ moduleId, def }))\n const surface = exportWorkflowSurface(workflowIrs)\n workflowSurfaces.push({ moduleId, surface })\n\n const effectsIndex = exportWorkflowEffectsIndex({ moduleId, workflowSurface: surface.programs })\n const effectsIndexDigest = effectsIndex.length > 0 ? exportEffectsIndexDigest(effectsIndex) : undefined\n\n entries.push({\n moduleId,\n workflowSurface: { digest: surface.digest },\n effectsIndex,\n ...(effectsIndexDigest ? { effectsIndexDigest } : null),\n })\n }\n\n const manifest = exportControlSurfaceManifest({\n version: 1 as const,\n modules: entries,\n ...(options?.meta ? { meta: options.meta } : null),\n })\n\n return { manifest, workflowSurfaces }\n}\n","import { stableStringify } from '../digest.js'\nimport type { JsonValue } from '../observability/jsonValue.js'\nimport type { ModuleManifest, ModuleManifestLogicUnit } from './manifest.js'\n\nexport type ManifestDiffSeverity = 'BREAKING' | 'RISKY' | 'INFO'\nexport type ManifestDiffVerdict = 'PASS' | 'WARN' | 'FAIL'\n\nexport interface ModuleManifestDiffChange {\n readonly severity: ManifestDiffSeverity\n readonly code: string\n readonly message?: string\n readonly pointer?: string\n readonly details?: JsonValue\n}\n\nexport interface ModuleManifestDiffSummary {\n readonly breaking: number\n readonly risky: number\n readonly info: number\n}\n\nexport interface ModuleManifestDiff {\n readonly version: string\n readonly moduleId: string\n readonly before: {\n readonly digest: string\n readonly manifestVersion?: string\n }\n readonly after: {\n readonly digest: string\n readonly manifestVersion?: string\n }\n readonly verdict: ManifestDiffVerdict\n readonly changes: ReadonlyArray<ModuleManifestDiffChange>\n readonly summary: ModuleManifestDiffSummary\n}\n\nexport interface DiffManifestOptions {\n /**\n * metaAllowlist:\n * - When omitted: diff all meta keys (defaults to treating all changes as RISKY).\n * - When provided: only diff allowlisted keys (others are ignored).\n */\n readonly metaAllowlist?: ReadonlyArray<string>\n}\n\nconst SEVERITY_RANK: Record<ManifestDiffSeverity, number> = {\n BREAKING: 0,\n RISKY: 1,\n INFO: 2,\n}\n\nconst uniqSorted = (input: ReadonlyArray<string>): ReadonlyArray<string> => {\n const out = Array.from(new Set(input.filter((x) => typeof x === 'string' && x.length > 0)))\n out.sort()\n return out\n}\n\nconst diffStringKeys = (\n before: ReadonlyArray<string> | undefined,\n after: ReadonlyArray<string> | undefined,\n): { readonly removed: ReadonlyArray<string>; readonly added: ReadonlyArray<string> } => {\n const beforeSet = new Set(uniqSorted(before ?? []))\n const afterSet = new Set(uniqSorted(after ?? []))\n\n const removed: string[] = []\n for (const k of beforeSet) {\n if (!afterSet.has(k)) removed.push(k)\n }\n removed.sort()\n\n const added: string[] = []\n for (const k of afterSet) {\n if (!beforeSet.has(k)) added.push(k)\n }\n added.sort()\n\n return { removed, added }\n}\n\nconst eqJsonValue = (a: unknown, b: unknown): boolean => stableStringify(a) === stableStringify(b)\n\nconst indexLogicUnits = (\n input: ReadonlyArray<ModuleManifestLogicUnit> | undefined,\n): ReadonlyMap<string, ModuleManifestLogicUnit> => {\n const map = new Map<string, ModuleManifestLogicUnit>()\n for (const unit of input ?? []) {\n if (!unit || typeof unit !== 'object') continue\n const id = (unit as any).id\n if (typeof id !== 'string' || id.length === 0) continue\n map.set(id, unit)\n }\n return map\n}\n\nexport const diffManifest = (\n before: ModuleManifest,\n after: ModuleManifest,\n options?: DiffManifestOptions,\n): ModuleManifestDiff => {\n const changes: ModuleManifestDiffChange[] = []\n\n // Identity / protocol\n if (before.moduleId !== after.moduleId) {\n changes.push({\n severity: 'BREAKING',\n code: 'moduleId.changed',\n message: `moduleId changed (${before.moduleId} -> ${after.moduleId})`,\n pointer: '/moduleId',\n details: {\n before: before.moduleId,\n after: after.moduleId,\n },\n })\n }\n\n if (before.manifestVersion !== after.manifestVersion) {\n changes.push({\n severity: 'INFO',\n code: 'manifestVersion.changed',\n message: `manifestVersion changed (${before.manifestVersion} -> ${after.manifestVersion})`,\n pointer: '/manifestVersion',\n details: {\n before: before.manifestVersion,\n after: after.manifestVersion,\n },\n })\n }\n\n // actionKeys\n {\n const { removed, added } = diffStringKeys(before.actionKeys, after.actionKeys)\n if (removed.length > 0 || added.length > 0) {\n changes.push({\n severity: removed.length > 0 ? 'BREAKING' : 'INFO',\n code: 'actionKeys.changed',\n message:\n removed.length > 0 ? `actionKeys removed: ${removed.join(', ')}` : `actionKeys added: ${added.join(', ')}`,\n pointer: '/actionKeys',\n details: { removed, added },\n })\n }\n }\n\n // schemaKeys\n {\n const { removed, added } = diffStringKeys(before.schemaKeys, after.schemaKeys)\n if (removed.length > 0 || added.length > 0) {\n changes.push({\n severity: removed.length > 0 ? 'BREAKING' : 'INFO',\n code: 'schemaKeys.changed',\n message:\n removed.length > 0 ? `schemaKeys removed: ${removed.join(', ')}` : `schemaKeys added: ${added.join(', ')}`,\n pointer: '/schemaKeys',\n details: { removed, added },\n })\n }\n }\n\n // logicUnits (slots)\n {\n const beforeById = indexLogicUnits(before.logicUnits)\n const afterById = indexLogicUnits(after.logicUnits)\n\n const removed: string[] = []\n const added: string[] = []\n const kindChanged: Array<{ readonly id: string; readonly before: string; readonly after: string }> = []\n const riskyChanged: Array<{ readonly id: string; readonly fields: ReadonlyArray<string> }> = []\n\n for (const id of beforeById.keys()) {\n if (!afterById.has(id)) removed.push(id)\n }\n for (const id of afterById.keys()) {\n if (!beforeById.has(id)) added.push(id)\n }\n\n removed.sort()\n added.sort()\n\n for (const id of beforeById.keys()) {\n const b = beforeById.get(id)\n const a = afterById.get(id)\n if (!b || !a) continue\n\n const fields: string[] = []\n if (b.kind !== a.kind) {\n kindChanged.push({ id, before: b.kind, after: a.kind })\n continue\n }\n if (b.name !== a.name) fields.push('name')\n if (b.derived !== a.derived) fields.push('derived')\n if (fields.length > 0) riskyChanged.push({ id, fields })\n }\n\n kindChanged.sort((x, y) => (x.id < y.id ? -1 : x.id > y.id ? 1 : 0))\n riskyChanged.sort((x, y) => (x.id < y.id ? -1 : x.id > y.id ? 1 : 0))\n\n if (removed.length > 0) {\n changes.push({\n severity: 'BREAKING',\n code: 'logicUnits.removed',\n message: `logicUnits removed: ${removed.join(', ')}`,\n pointer: '/logicUnits',\n details: { removed },\n })\n }\n\n if (kindChanged.length > 0) {\n changes.push({\n severity: 'BREAKING',\n code: 'logicUnits.kindChanged',\n message: `logicUnits kind changed: ${kindChanged.map((x) => x.id).join(', ')}`,\n pointer: '/logicUnits',\n details: { kindChanged },\n })\n }\n\n if (added.length > 0) {\n changes.push({\n severity: 'INFO',\n code: 'logicUnits.added',\n message: `logicUnits added: ${added.join(', ')}`,\n pointer: '/logicUnits',\n details: { added },\n })\n }\n\n if (riskyChanged.length > 0) {\n changes.push({\n severity: 'RISKY',\n code: 'logicUnits.changed',\n message: `logicUnits changed: ${riskyChanged.map((x) => x.id).join(', ')}`,\n pointer: '/logicUnits',\n details: { changed: riskyChanged },\n })\n }\n }\n\n // staticIr.digest\n {\n const beforeDigest = before.staticIr?.digest\n const afterDigest = after.staticIr?.digest\n if (beforeDigest !== afterDigest) {\n changes.push({\n severity: 'RISKY',\n code: 'staticIr.digestChanged',\n message: 'staticIr.digest changed',\n pointer: '/staticIr/digest',\n details: {\n before: beforeDigest ?? null,\n after: afterDigest ?? null,\n },\n })\n }\n }\n\n // meta (default: RISKY, allowlist supported)\n {\n const metaBefore = before.meta ?? {}\n const metaAfter = after.meta ?? {}\n\n const allowlist = options?.metaAllowlist\n const keys =\n allowlist != null ? uniqSorted(allowlist) : uniqSorted([...Object.keys(metaBefore), ...Object.keys(metaAfter)])\n\n const changed: Array<{\n readonly key: string\n readonly before: JsonValue | null\n readonly after: JsonValue | null\n }> = []\n\n for (const key of keys) {\n const b = key in metaBefore ? (metaBefore as any)[key] : undefined\n const a = key in metaAfter ? (metaAfter as any)[key] : undefined\n if (!eqJsonValue(b, a)) {\n changed.push({\n key,\n before: (b ?? null) as JsonValue | null,\n after: (a ?? null) as JsonValue | null,\n })\n }\n }\n\n if (changed.length > 0) {\n changes.push({\n severity: 'RISKY',\n code: 'meta.changed',\n message: 'meta changed',\n pointer: '/meta',\n details: {\n keys: changed.map((x) => x.key),\n changed,\n },\n })\n }\n }\n\n // source (default: INFO)\n {\n const b = before.source\n const a = after.source\n if (!eqJsonValue(b ?? null, a ?? null)) {\n changes.push({\n severity: 'INFO',\n code: 'source.changed',\n message: 'source changed',\n pointer: '/source',\n details: {\n before: b ?? null,\n after: a ?? null,\n },\n })\n }\n }\n\n changes.sort((a, b) => {\n const ra = SEVERITY_RANK[a.severity]\n const rb = SEVERITY_RANK[b.severity]\n if (ra !== rb) return ra - rb\n if (a.code !== b.code) return a.code < b.code ? -1 : 1\n const pa = a.pointer ?? ''\n const pb = b.pointer ?? ''\n if (pa !== pb) return pa < pb ? -1 : 1\n return 0\n })\n\n const summary: ModuleManifestDiffSummary = {\n breaking: changes.filter((c) => c.severity === 'BREAKING').length,\n risky: changes.filter((c) => c.severity === 'RISKY').length,\n info: changes.filter((c) => c.severity === 'INFO').length,\n }\n\n const verdict: ManifestDiffVerdict = summary.breaking > 0 ? 'FAIL' : summary.risky > 0 ? 'WARN' : 'PASS'\n\n return {\n version: '025',\n moduleId: after.moduleId,\n before: {\n digest: before.digest,\n manifestVersion: before.manifestVersion,\n },\n after: {\n digest: after.digest,\n manifestVersion: after.manifestVersion,\n },\n verdict,\n changes,\n summary,\n }\n}\n","import { Effect, Exit, Layer, ServiceMap } from 'effect'\nimport type { ModuleImpl, AnyModuleShape } from '../runtime/core/module.js'\nimport type { ModuleRuntime } from '../runtime/core/module.js'\nimport { trialRun } from '../observability/trialRun.js'\nimport type { EvidencePackage } from '../observability/evidence.js'\nimport type { JsonValue } from '../observability/jsonValue.js'\nimport { fnv1a32, stableStringify } from '../digest.js'\nimport type { Middleware } from '../effect-op.js'\nimport * as Debug from '../runtime/core/DebugSink.js'\nimport * as EffectOpCore from '../runtime/core/EffectOpCore.js'\nimport * as KernelRef from '../runtime/core/KernelRef.js'\nimport type * as RuntimeKernel from '../runtime/core/RuntimeKernel.js'\nimport * as RuntimeKernelCore from '../runtime/core/RuntimeKernel.js'\n\ntype AnyModuleLike = { readonly impl: ModuleImpl<any, AnyModuleShape, any> }\n\ntype RootLike<Sh extends AnyModuleShape> = ModuleImpl<any, Sh, any> | AnyModuleLike\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\nexport type KernelContractVerdict = 'PASS' | 'FAIL'\n\nexport interface KernelContractAnchor {\n readonly instanceId: string\n readonly txnSeq: number\n readonly opSeq: number\n}\n\nexport interface KernelContractTraceOp {\n readonly anchor: KernelContractAnchor\n readonly moduleId: string\n readonly kind: string\n readonly name: string\n readonly meta?: JsonValue\n}\n\nexport interface KernelContractRunSummary {\n readonly ok: boolean\n readonly kernelImplementationRef: KernelRef.KernelImplementationRef\n readonly runtimeServicesEvidence?: JsonValue\n readonly trace: {\n readonly digest: string\n readonly opCount: number\n }\n readonly error?: {\n readonly name: string\n readonly message: string\n }\n}\n\nexport type KernelContractDiffChangeCode = 'op.added' | 'op.removed' | 'op.changed' | 'run.failure'\n\nexport interface KernelContractDiffChange {\n readonly code: KernelContractDiffChangeCode\n readonly anchor?: KernelContractAnchor\n readonly before?: JsonValue\n readonly after?: JsonValue\n}\n\nexport interface KernelContractVerificationResult {\n readonly version: string\n readonly verdict: KernelContractVerdict\n readonly before: KernelContractRunSummary\n readonly after: KernelContractRunSummary\n readonly changes: ReadonlyArray<KernelContractDiffChange>\n readonly summary: {\n readonly added: number\n readonly removed: number\n readonly changed: number\n }\n}\n\nexport interface KernelContractRunOptions<Sh extends AnyModuleShape> {\n readonly runId?: string\n readonly layer?: Layer.Layer<any, any, any>\n readonly runtimeServicesInstanceOverrides?: RuntimeKernel.RuntimeServicesOverrides\n readonly interaction?: (runtime: ModuleRuntime<any, any>) => Effect.Effect<void, any, any>\n}\n\nexport interface VerifyKernelContractOptions<Sh extends AnyModuleShape> {\n readonly before?: KernelContractRunOptions<Sh>\n readonly after?: KernelContractRunOptions<Sh>\n readonly diagnosticsLevel?: Debug.DiagnosticsLevel\n readonly maxEvents?: number\n}\n\nconst asNonEmptyString = (value: unknown): string | undefined =>\n typeof value === 'string' && value.length > 0 ? value : undefined\n\nconst asNonNegInt = (value: unknown, fallback = 0): number => {\n if (typeof value !== 'number' || !Number.isFinite(value)) return fallback\n const n = Math.floor(value)\n return n >= 0 ? n : fallback\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst makeTraceEffectOpObserver = (): Middleware => {\n return <A, E, R>(op: import('../effect-op.js').EffectOp<A, E, R>): Effect.Effect<A, E, R> =>\n Effect.gen(function* () {\n // Observation-only capability: can be locally disabled by policy.\n if ((op.meta as any)?.policy?.disableObservers) {\n return yield* op.effect\n }\n\n const meta: any = op.meta ?? {}\n const slimOp = {\n id: op.id,\n kind: op.kind,\n name: op.name,\n payload: op.payload,\n meta: op.meta,\n }\n\n yield* Debug.record({\n type: 'trace:effectop',\n moduleId: typeof meta.moduleId === 'string' ? meta.moduleId : undefined,\n instanceId: typeof meta.instanceId === 'string' ? meta.instanceId : undefined,\n runtimeLabel: typeof meta.runtimeLabel === 'string' ? meta.runtimeLabel : undefined,\n txnSeq: typeof meta.txnSeq === 'number' && Number.isFinite(meta.txnSeq) ? Math.floor(meta.txnSeq) : undefined,\n data: slimOp,\n } as any)\n\n return yield* op.effect\n })\n}\n\nconst extractRuntimeSummary = (\n evidence: EvidencePackage,\n): {\n readonly kernelImplementationRef: KernelRef.KernelImplementationRef\n readonly runtimeServicesEvidence?: JsonValue\n} => {\n const summary: any = evidence.summary\n const runtime: any = summary?.runtime\n const kernelImplementationRefRaw = runtime?.kernelImplementationRef\n const kernelImplementationRef = KernelRef.normalizeKernelImplementationRef(kernelImplementationRefRaw)\n const services = runtime?.services as JsonValue | undefined\n return {\n kernelImplementationRef,\n runtimeServicesEvidence: services,\n }\n}\n\nconst canonicalizeOpMeta = (opMetaRaw: unknown): JsonValue | undefined => {\n if (!isRecord(opMetaRaw)) return undefined\n\n const out: Record<string, JsonValue> = {}\n for (const [k, v] of Object.entries(opMetaRaw)) {\n // volatile / non-contract anchors\n if (k === 'instanceId' || k === 'txnId' || k === 'runtimeLabel' || k === 'linkId') continue\n\n if ((k === 'deps' || k === 'trace' || k === 'tags') && Array.isArray(v) && v.every((x) => typeof x === 'string')) {\n out[k] = (v as ReadonlyArray<string>).slice().sort() as unknown as JsonValue\n continue\n }\n\n out[k] = v as JsonValue\n }\n\n return out as JsonValue\n}\n\nconst extractKernelContractTraceOps = (evidence: EvidencePackage): ReadonlyArray<KernelContractTraceOp> => {\n const instanceMap = new Map<string, string>()\n let nextInstanceIndex = 0\n\n const mapInstanceId = (raw: string): string => {\n if (raw === 'unknown') return 'unknown'\n const existing = instanceMap.get(raw)\n if (existing) return existing\n nextInstanceIndex += 1\n const next = `i${nextInstanceIndex}`\n instanceMap.set(raw, next)\n return next\n }\n\n const ops: KernelContractTraceOp[] = []\n\n for (const e of evidence.events) {\n if (e.type !== 'debug:event') continue\n const payload: any = e.payload\n if (!isRecord(payload)) continue\n\n const meta: any = payload.meta\n const opMeta: any = meta?.meta\n const opSeq = asNonNegInt(opMeta?.opSeq, -1)\n if (opSeq < 0) continue\n\n const instanceIdRaw = asNonEmptyString(payload.instanceId) ?? 'unknown'\n const instanceId = mapInstanceId(instanceIdRaw)\n const txnSeq = asNonNegInt(payload.txnSeq, 0)\n\n const moduleId = asNonEmptyString(payload.moduleId) ?? 'unknown'\n const kind = asNonEmptyString(meta?.kind) ?? asNonEmptyString(payload.kind) ?? 'unknown'\n const name = asNonEmptyString(meta?.name) ?? asNonEmptyString(payload.label) ?? 'effectop'\n\n ops.push({\n anchor: { instanceId, txnSeq, opSeq },\n moduleId,\n kind,\n name,\n meta: canonicalizeOpMeta(opMeta),\n })\n }\n\n ops.sort((a, b) => {\n if (a.anchor.instanceId !== b.anchor.instanceId) return a.anchor.instanceId < b.anchor.instanceId ? -1 : 1\n if (a.anchor.txnSeq !== b.anchor.txnSeq) return a.anchor.txnSeq - b.anchor.txnSeq\n return a.anchor.opSeq - b.anchor.opSeq\n })\n\n return ops\n}\n\nconst anchorKey = (a: KernelContractAnchor): string => `${a.instanceId}::t${a.txnSeq}::o${a.opSeq}`\n\nconst diffKernelContractTraceOps = (\n before: ReadonlyArray<KernelContractTraceOp>,\n after: ReadonlyArray<KernelContractTraceOp>,\n): {\n readonly changes: ReadonlyArray<KernelContractDiffChange>\n readonly summary: KernelContractVerificationResult['summary']\n} => {\n const changes: KernelContractDiffChange[] = []\n\n const beforeByKey = new Map<string, KernelContractTraceOp>()\n const afterByKey = new Map<string, KernelContractTraceOp>()\n\n for (const op of before) {\n beforeByKey.set(anchorKey(op.anchor), op)\n }\n for (const op of after) {\n afterByKey.set(anchorKey(op.anchor), op)\n }\n\n const allKeys = Array.from(new Set([...beforeByKey.keys(), ...afterByKey.keys()])).sort()\n\n for (const key of allKeys) {\n const b = beforeByKey.get(key)\n const a = afterByKey.get(key)\n\n if (!b && a) {\n changes.push({\n code: 'op.added',\n anchor: a.anchor,\n after: a as unknown as JsonValue,\n })\n continue\n }\n if (b && !a) {\n changes.push({\n code: 'op.removed',\n anchor: b.anchor,\n before: b as unknown as JsonValue,\n })\n continue\n }\n if (!b || !a) continue\n\n const bJson = stableStringify(b)\n const aJson = stableStringify(a)\n if (bJson !== aJson) {\n changes.push({\n code: 'op.changed',\n anchor: b.anchor,\n before: b as unknown as JsonValue,\n after: a as unknown as JsonValue,\n })\n }\n }\n\n const summary = {\n added: changes.filter((c) => c.code === 'op.added').length,\n removed: changes.filter((c) => c.code === 'op.removed').length,\n changed: changes.filter((c) => c.code === 'op.changed').length,\n } as const satisfies KernelContractVerificationResult['summary']\n\n return { changes, summary }\n}\n\nconst VERSION = 'v1'\n\nconst runOnce = <Sh extends AnyModuleShape>(\n rootImpl: ModuleImpl<any, Sh, any>,\n run: KernelContractRunOptions<Sh> | undefined,\n options: Pick<VerifyKernelContractOptions<Sh>, 'diagnosticsLevel' | 'maxEvents'>,\n): Effect.Effect<\n {\n readonly summary: KernelContractRunSummary\n readonly traceOps: ReadonlyArray<KernelContractTraceOp>\n },\n never,\n any\n> =>\n Effect.gen(function* () {\n const interaction = run?.interaction\n const program = Effect.gen(function* () {\n const ctx = yield* rootImpl.layer.pipe(Layer.build)\n const runtime = ServiceMap.get(ctx, rootImpl.module)\n if (interaction) {\n yield* interaction(runtime)\n }\n return runtime.instanceId\n }) as Effect.Effect<string, any, any>\n\n const traceLayer = Layer.succeed(EffectOpCore.EffectOpMiddlewareTag, {\n stack: [makeTraceEffectOpObserver()],\n }) as unknown as Layer.Layer<any, never, never>\n\n // Contract verification must always be able to inspect mixed/fallback wiring, so trial mode is explicit here.\n const contractGateLayer = Layer.succeed(RuntimeKernelCore.FullCutoverGateModeTag, 'trial' as const) as Layer.Layer<\n any,\n never,\n never\n >\n const extraLayer = run?.layer\n ? (Layer.mergeAll(traceLayer, run.layer, contractGateLayer) as Layer.Layer<any, any, any>)\n : (Layer.mergeAll(traceLayer, contractGateLayer) as Layer.Layer<any, any, any>)\n\n const result = yield* trialRun(program as any, {\n runId: run?.runId,\n diagnosticsLevel: options.diagnosticsLevel ?? 'light',\n maxEvents: options.maxEvents,\n layer: extraLayer,\n runtimeServicesInstanceOverrides: run?.runtimeServicesInstanceOverrides,\n })\n\n const ok = Exit.isSuccess(result.exit)\n const error =\n Exit.isFailure(result.exit) && result.exit.cause != null\n ? (() => {\n const failure = Exit.isFailure(result.exit) ? result.exit.cause : undefined\n const err = (failure as any)?._tag === 'Die' ? (failure as any).defect : (failure as any)\n if (err instanceof Error) {\n return { name: err.name, message: err.message }\n }\n return { name: 'UnknownError', message: String(err ?? 'unknown') }\n })()\n : undefined\n\n const runtimeSummary = extractRuntimeSummary(result.evidence)\n const traceOps = extractKernelContractTraceOps(result.evidence)\n const traceDigest = fnv1a32(stableStringify(traceOps))\n\n return {\n summary: {\n ok,\n kernelImplementationRef: runtimeSummary.kernelImplementationRef,\n runtimeServicesEvidence: runtimeSummary.runtimeServicesEvidence,\n trace: { digest: traceDigest, opCount: traceOps.length },\n ...(error ? { error } : {}),\n },\n traceOps,\n }\n })\n\nexport const verifyKernelContract = <Sh extends AnyModuleShape>(\n root: RootLike<Sh>,\n options?: VerifyKernelContractOptions<Sh>,\n): Effect.Effect<KernelContractVerificationResult, never, any> =>\n Effect.gen(function* () {\n const rootImpl = resolveRootImpl(root)\n\n const beforeRun = yield* runOnce(rootImpl, options?.before, {\n diagnosticsLevel: options?.diagnosticsLevel,\n maxEvents: options?.maxEvents,\n })\n\n const afterRun = yield* runOnce(rootImpl, options?.after, {\n diagnosticsLevel: options?.diagnosticsLevel,\n maxEvents: options?.maxEvents,\n })\n\n const hasRunFailure = !beforeRun.summary.ok || !afterRun.summary.ok\n const diff = hasRunFailure\n ? { changes: [{ code: 'run.failure' as const }], summary: { added: 0, removed: 0, changed: 0 } }\n : diffKernelContractTraceOps(beforeRun.traceOps, afterRun.traceOps)\n\n const verdict: KernelContractVerdict = hasRunFailure || diff.changes.length > 0 ? 'FAIL' : 'PASS'\n\n return {\n version: VERSION,\n verdict,\n before: beforeRun.summary,\n after: afterRun.summary,\n changes: diff.changes,\n summary: diff.summary,\n }\n })\n"],"mappings":"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","names":["diffManifest","exportControlSurface","exportStaticIr","extractManifest","verifyKernelContract","Effect","Exit","Layer","ServiceMap","makeDigest","asNonEmptyString","isRecord","resolveRootImpl","isRecord","extractManifest","diffManifest","exportStaticIr","exportControlSurface","verifyKernelContract","Effect","Layer","ServiceMap","Exit"]}