@logixjs/core 0.0.1 → 0.0.2

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 (300) hide show
  1. package/LICENSE +201 -0
  2. package/dist/{Bound-BN1DQ_lM.d.ts → Bound-CEa1ihvH.d.ts} +2 -2
  3. package/dist/{Bound-BPIfH9SS.d.cts → Bound-CNLNkC7c.d.cts} +2 -2
  4. package/dist/Bound.cjs +620 -163
  5. package/dist/Bound.cjs.map +1 -1
  6. package/dist/Bound.d.cts +3 -3
  7. package/dist/Bound.d.ts +3 -3
  8. package/dist/Bound.js +14 -14
  9. package/dist/{Debug-Bq8Sqjcr.d.cts → Debug-BhMYr-1i.d.cts} +3 -3
  10. package/dist/{Debug-B5q5Bkzx.d.ts → Debug-ByM7m4Ft.d.ts} +3 -3
  11. package/dist/Debug.cjs +553 -32
  12. package/dist/Debug.cjs.map +1 -1
  13. package/dist/Debug.d.cts +10 -8
  14. package/dist/Debug.d.ts +10 -8
  15. package/dist/Debug.js +12 -10
  16. package/dist/EffectOp.cjs.map +1 -1
  17. package/dist/EffectOp.js +2 -3
  18. package/dist/EffectOp.js.map +1 -1
  19. package/dist/Env.cjs +664 -6
  20. package/dist/Env.cjs.map +1 -1
  21. package/dist/Env.js +5 -2
  22. package/dist/ExternalStore-BAz83PVq.d.cts +60 -0
  23. package/dist/ExternalStore-BYWPbYs8.d.ts +60 -0
  24. package/dist/ExternalStore.cjs +746 -0
  25. package/dist/ExternalStore.cjs.map +1 -0
  26. package/dist/ExternalStore.d.cts +4 -0
  27. package/dist/ExternalStore.d.ts +4 -0
  28. package/dist/ExternalStore.js +19 -0
  29. package/dist/ExternalStore.js.map +1 -0
  30. package/dist/{Flow-1fZT8MpX.d.cts → Flow-BlSoMmhV.d.cts} +2 -2
  31. package/dist/{Flow-BhpjE22E.d.ts → Flow-CQSGve5c.d.ts} +2 -2
  32. package/dist/Flow.cjs +2 -2
  33. package/dist/Flow.cjs.map +1 -1
  34. package/dist/Flow.d.cts +4 -4
  35. package/dist/Flow.d.ts +4 -4
  36. package/dist/Flow.js +7 -8
  37. package/dist/{Handle-D_cLW1Z3.d.ts → Handle-B7PSmsrY.d.ts} +1 -1
  38. package/dist/{Handle-D8D1zPb_.d.cts → Handle-ByovhL-c.d.cts} +1 -1
  39. package/dist/Handle.d.cts +3 -3
  40. package/dist/Handle.d.ts +3 -3
  41. package/dist/{Kernel-CnGE1Fyk.d.ts → Kernel-DGSpS4GM.d.ts} +2 -2
  42. package/dist/{Kernel-8kC-jOda.d.cts → Kernel-DZAk-Mrn.d.cts} +2 -2
  43. package/dist/Kernel.cjs +680 -22
  44. package/dist/Kernel.cjs.map +1 -1
  45. package/dist/Kernel.d.cts +10 -8
  46. package/dist/Kernel.d.ts +10 -8
  47. package/dist/Kernel.js +7 -4
  48. package/dist/{Link-Db7975nU.d.ts → Link-Cm4eR9n0.d.ts} +10 -3
  49. package/dist/{Link-fX8x1eCK.d.cts → Link-DF8i8iWR.d.cts} +10 -3
  50. package/dist/Link.cjs +1128 -86
  51. package/dist/Link.cjs.map +1 -1
  52. package/dist/Link.d.cts +3 -3
  53. package/dist/Link.d.ts +3 -3
  54. package/dist/Link.js +30 -25
  55. package/dist/{Logic-DRh4sDZj.d.cts → Logic-BcQA0AvE.d.cts} +1 -1
  56. package/dist/{Logic-BRjEMr-W.d.ts → Logic-OotSE1xw.d.ts} +1 -1
  57. package/dist/Logic.d.cts +3 -3
  58. package/dist/Logic.d.ts +3 -3
  59. package/dist/{MatchBuilder-CJk5oCkR.d.cts → MatchBuilder-BNDJ8waF.d.ts} +1 -1
  60. package/dist/{MatchBuilder-0QOc-nlU.d.ts → MatchBuilder-CvZ5WY1B.d.cts} +1 -1
  61. package/dist/MatchBuilder.d.cts +4 -4
  62. package/dist/MatchBuilder.d.ts +4 -4
  63. package/dist/Middleware-D8tUDLv_.d.cts +100 -0
  64. package/dist/Middleware-DS7CbTTN.d.ts +100 -0
  65. package/dist/Middleware.cjs +461 -13
  66. package/dist/Middleware.cjs.map +1 -1
  67. package/dist/Middleware.d.cts +2 -86
  68. package/dist/Middleware.d.ts +2 -86
  69. package/dist/Middleware.js +13 -11
  70. package/dist/{Module-DnzluX2J.d.ts → Module-CFj0I2yE.d.ts} +45 -18
  71. package/dist/{Module-B_0xRDMR.d.cts → Module-DpXPW9EQ.d.cts} +45 -18
  72. package/dist/Module.cjs +8583 -5741
  73. package/dist/Module.cjs.map +1 -1
  74. package/dist/Module.d.cts +5 -4
  75. package/dist/Module.d.ts +5 -4
  76. package/dist/Module.js +32 -27
  77. package/dist/ModuleTag-BcVF6z7B.d.ts +113 -0
  78. package/dist/ModuleTag-DuZXo_NS.d.cts +113 -0
  79. package/dist/ModuleTag.cjs +2609 -1232
  80. package/dist/ModuleTag.cjs.map +1 -1
  81. package/dist/ModuleTag.d.cts +4 -4
  82. package/dist/ModuleTag.d.ts +4 -4
  83. package/dist/ModuleTag.js +28 -25
  84. package/dist/{Observability-cY4kLn0S.d.ts → Observability-D-ZWeEVb.d.ts} +22 -15
  85. package/dist/{Observability-COqEvp2C.d.cts → Observability-V7sRMYTh.d.cts} +22 -15
  86. package/dist/Observability.cjs +1938 -640
  87. package/dist/Observability.cjs.map +1 -1
  88. package/dist/Observability.d.cts +4 -4
  89. package/dist/Observability.d.ts +4 -4
  90. package/dist/Observability.js +21 -19
  91. package/dist/{Process-mL8fHDSB.d.cts → Process-B55aJMFk.d.cts} +29 -4
  92. package/dist/{Process-CM9xbMdP.d.ts → Process-DvhFEwUS.d.ts} +29 -4
  93. package/dist/Process.cjs +1122 -85
  94. package/dist/Process.cjs.map +1 -1
  95. package/dist/Process.d.cts +4 -3
  96. package/dist/Process.d.ts +4 -3
  97. package/dist/Process.js +27 -22
  98. package/dist/{ReadQuery-BlMwhe-F.d.ts → ReadQuery-C4vZ8Prc.d.ts} +2 -2
  99. package/dist/{ReadQuery-SinbStGF.d.ts → ReadQuery-CafjlJQo.d.cts} +1 -1
  100. package/dist/{ReadQuery-SinbStGF.d.cts → ReadQuery-CafjlJQo.d.ts} +1 -1
  101. package/dist/{ReadQuery-CL5XlXts.d.cts → ReadQuery-mc0NgrFV.d.cts} +2 -2
  102. package/dist/ReadQuery.cjs +3 -3
  103. package/dist/ReadQuery.cjs.map +1 -1
  104. package/dist/ReadQuery.d.cts +2 -2
  105. package/dist/ReadQuery.d.ts +2 -2
  106. package/dist/ReadQuery.js +3 -3
  107. package/dist/{Reflection-CQnKwPXj.d.ts → Reflection-C8xZ267q.d.ts} +88 -7
  108. package/dist/{Reflection-Kabo1mlU.d.cts → Reflection-DP7Vsv3f.d.cts} +88 -7
  109. package/dist/Reflection.cjs +2934 -1553
  110. package/dist/Reflection.cjs.map +1 -1
  111. package/dist/Reflection.d.cts +14 -11
  112. package/dist/Reflection.d.ts +14 -11
  113. package/dist/Reflection.js +26 -21
  114. package/dist/Resource.cjs +670 -12
  115. package/dist/Resource.cjs.map +1 -1
  116. package/dist/Resource.js +6 -3
  117. package/dist/Root.cjs +675 -17
  118. package/dist/Root.cjs.map +1 -1
  119. package/dist/Root.js +7 -3
  120. package/dist/{Runtime-CtyzZG4i.d.ts → Runtime-BWc9YfUB.d.ts} +37 -7
  121. package/dist/{Runtime-B-aL-f29.d.cts → Runtime-PShIC4DW.d.cts} +37 -7
  122. package/dist/Runtime.cjs +1899 -809
  123. package/dist/Runtime.cjs.map +1 -1
  124. package/dist/Runtime.d.cts +14 -11
  125. package/dist/Runtime.d.ts +14 -11
  126. package/dist/Runtime.js +33 -28
  127. package/dist/ScopeRegistry.cjs +668 -10
  128. package/dist/ScopeRegistry.cjs.map +1 -1
  129. package/dist/ScopeRegistry.js +6 -3
  130. package/dist/{StateTrait-OWhbj12c.d.cts → StateTrait-CQsDlXJm.d.cts} +23 -6
  131. package/dist/{StateTrait-BGsZghTz.d.ts → StateTrait-YvJzVDKl.d.ts} +23 -6
  132. package/dist/StateTrait.cjs +1475 -370
  133. package/dist/StateTrait.cjs.map +1 -1
  134. package/dist/StateTrait.d.cts +7 -5
  135. package/dist/StateTrait.d.ts +7 -5
  136. package/dist/StateTrait.js +17 -14
  137. package/dist/{TraitLifecycle-LdIWmKlg.d.ts → TraitLifecycle-CjIBICAA.d.ts} +2 -2
  138. package/dist/{TraitLifecycle-CwV5WPFX.d.cts → TraitLifecycle-NmqGiXPC.d.cts} +2 -2
  139. package/dist/TraitLifecycle.cjs +489 -32
  140. package/dist/TraitLifecycle.cjs.map +1 -1
  141. package/dist/TraitLifecycle.d.cts +4 -4
  142. package/dist/TraitLifecycle.d.ts +4 -4
  143. package/dist/TraitLifecycle.js +7 -7
  144. package/dist/Workflow-BlFG_20_.d.cts +414 -0
  145. package/dist/Workflow-CW9S_aAP.d.ts +414 -0
  146. package/dist/Workflow.cjs +2977 -0
  147. package/dist/Workflow.cjs.map +1 -0
  148. package/dist/Workflow.d.cts +7 -0
  149. package/dist/Workflow.d.ts +7 -0
  150. package/dist/Workflow.js +55 -0
  151. package/dist/Workflow.js.map +1 -0
  152. package/dist/{chunk-G5ZBFPNU.js → chunk-2A4UKO2D.js} +2 -2
  153. package/dist/chunk-2DE6D42I.js +248 -0
  154. package/dist/chunk-2DE6D42I.js.map +1 -0
  155. package/dist/{chunk-ANLBCBDC.js → chunk-2DVLMSOE.js} +6 -6
  156. package/dist/{chunk-BE3HW4FY.js → chunk-34CF6OGE.js} +14 -16
  157. package/dist/chunk-34CF6OGE.js.map +1 -0
  158. package/dist/{chunk-ZFY7U2FR.js → chunk-3LPIXG56.js} +43 -3
  159. package/dist/chunk-3LPIXG56.js.map +1 -0
  160. package/dist/chunk-3VZYDNXZ.js +10 -0
  161. package/dist/chunk-3VZYDNXZ.js.map +1 -0
  162. package/dist/{chunk-3TMODYZV.js → chunk-3XO4HR6V.js} +2 -2
  163. package/dist/chunk-46FGVWRF.js +817 -0
  164. package/dist/chunk-46FGVWRF.js.map +1 -0
  165. package/dist/chunk-4LODUXFI.js +288 -0
  166. package/dist/chunk-4LODUXFI.js.map +1 -0
  167. package/dist/{chunk-GMPEOUP2.js → chunk-4MZ7BT3R.js} +2 -2
  168. package/dist/chunk-4MZ7BT3R.js.map +1 -0
  169. package/dist/{chunk-TKZ7MEIA.js → chunk-53GVPGSM.js} +2 -2
  170. package/dist/{chunk-KP7MUZNX.js → chunk-5W2V2NVJ.js} +2 -2
  171. package/dist/chunk-5W2V2NVJ.js.map +1 -0
  172. package/dist/chunk-6DACKW3D.js +613 -0
  173. package/dist/chunk-6DACKW3D.js.map +1 -0
  174. package/dist/chunk-AQ7L2QZ5.js +1395 -0
  175. package/dist/chunk-AQ7L2QZ5.js.map +1 -0
  176. package/dist/{chunk-NZJKFF45.js → chunk-C2UZZQ76.js} +2 -2
  177. package/dist/chunk-CCKP5Z6F.js +701 -0
  178. package/dist/chunk-CCKP5Z6F.js.map +1 -0
  179. package/dist/chunk-CUKM2XUW.js +27 -0
  180. package/dist/{chunk-QCHIQWAJ.js.map → chunk-CUKM2XUW.js.map} +1 -1
  181. package/dist/{chunk-M2RGJPXX.js → chunk-DBD6Q6JH.js} +3 -3
  182. package/dist/{chunk-ZGDVUPTM.js → chunk-EB4RGQO3.js} +2 -2
  183. package/dist/{chunk-PAYXCY6A.js → chunk-G7ESIQTI.js} +12 -14
  184. package/dist/chunk-G7ESIQTI.js.map +1 -0
  185. package/dist/chunk-GPBAZQ23.js +348 -0
  186. package/dist/chunk-GPBAZQ23.js.map +1 -0
  187. package/dist/{chunk-OFADUJWJ.js → chunk-I4LCE5OY.js} +3 -5
  188. package/dist/{chunk-OFADUJWJ.js.map → chunk-I4LCE5OY.js.map} +1 -1
  189. package/dist/{chunk-DFNM3WX2.js → chunk-IMCC6TBN.js} +158 -39
  190. package/dist/chunk-IMCC6TBN.js.map +1 -0
  191. package/dist/{chunk-76WT3HOR.js → chunk-IROZNQAF.js} +22 -21
  192. package/dist/chunk-IROZNQAF.js.map +1 -0
  193. package/dist/{chunk-TAAPQVZN.js → chunk-ISKNULNH.js} +2 -2
  194. package/dist/chunk-J3CWXIPV.js +242 -0
  195. package/dist/chunk-J3CWXIPV.js.map +1 -0
  196. package/dist/{chunk-PYOE4VSI.js → chunk-JBKYRTCS.js} +224 -161
  197. package/dist/chunk-JBKYRTCS.js.map +1 -0
  198. package/dist/{chunk-66ALHVEX.js → chunk-KKIAYH4X.js} +3 -3
  199. package/dist/{chunk-3RMKLXHX.js → chunk-KLDVG3SY.js} +2 -2
  200. package/dist/{chunk-BABLDP24.js → chunk-KSZQYSEH.js} +3 -3
  201. package/dist/chunk-KSZQYSEH.js.map +1 -0
  202. package/dist/{chunk-CW6T36TN.js → chunk-M3M7JFAH.js} +4 -4
  203. package/dist/chunk-M3M7JFAH.js.map +1 -0
  204. package/dist/{chunk-THATMZXD.js → chunk-MLB253V2.js} +2 -2
  205. package/dist/{chunk-THATMZXD.js.map → chunk-MLB253V2.js.map} +1 -1
  206. package/dist/{chunk-JGIWG6SR.js → chunk-MS77U77X.js} +664 -550
  207. package/dist/chunk-MS77U77X.js.map +1 -0
  208. package/dist/chunk-MW4FA3MW.js +23 -0
  209. package/dist/chunk-MW4FA3MW.js.map +1 -0
  210. package/dist/chunk-MYKNINNN.js +228 -0
  211. package/dist/chunk-MYKNINNN.js.map +1 -0
  212. package/dist/{chunk-4CQAV7YB.js → chunk-O6TTQXTY.js} +2 -2
  213. package/dist/{chunk-NBD3KUOZ.js → chunk-OJDJ4VDQ.js} +35 -24
  214. package/dist/chunk-OJDJ4VDQ.js.map +1 -0
  215. package/dist/{chunk-NQZ2OSGR.js → chunk-PVZEMNJY.js} +9 -9
  216. package/dist/chunk-PVZEMNJY.js.map +1 -0
  217. package/dist/chunk-RN26DV2M.js +271 -0
  218. package/dist/chunk-RN26DV2M.js.map +1 -0
  219. package/dist/{chunk-JCXGZRMU.js → chunk-RQQW3IQC.js} +3 -3
  220. package/dist/chunk-RQQW3IQC.js.map +1 -0
  221. package/dist/{chunk-24VULZ7A.js → chunk-TKOGZDD6.js} +3 -3
  222. package/dist/{chunk-EGK3KN7B.js → chunk-TQYLVXGY.js} +70 -39
  223. package/dist/chunk-TQYLVXGY.js.map +1 -0
  224. package/dist/{chunk-QMM6O4CD.js → chunk-UACD2CL2.js} +15 -3
  225. package/dist/{chunk-QMM6O4CD.js.map → chunk-UACD2CL2.js.map} +1 -1
  226. package/dist/{chunk-M3WTHJHJ.js → chunk-VH575UTV.js} +30 -34
  227. package/dist/chunk-VH575UTV.js.map +1 -0
  228. package/dist/{chunk-AUIR5O6W.js → chunk-WWBMC24F.js} +9 -15
  229. package/dist/chunk-WWBMC24F.js.map +1 -0
  230. package/dist/{chunk-JWOYLO27.js → chunk-WYJUJV4L.js} +80 -7
  231. package/dist/chunk-WYJUJV4L.js.map +1 -0
  232. package/dist/{chunk-EY4NZKDR.js → chunk-XFMMPYNU.js} +2 -2
  233. package/dist/chunk-Y4VRBIS6.js +35 -0
  234. package/dist/chunk-Y4VRBIS6.js.map +1 -0
  235. package/dist/{chunk-DMBALCE2.js → chunk-ZC7MSQ5U.js} +77 -4
  236. package/dist/chunk-ZC7MSQ5U.js.map +1 -0
  237. package/dist/{chunk-OGWBVHB3.js → chunk-ZCK6SCOE.js} +67 -8
  238. package/dist/chunk-ZCK6SCOE.js.map +1 -0
  239. package/dist/{chunk-IHVBV5C2.js → chunk-ZTFTABXV.js} +2 -1
  240. package/dist/chunk-ZTFTABXV.js.map +1 -0
  241. package/dist/index.cjs +9532 -5017
  242. package/dist/index.cjs.map +1 -1
  243. package/dist/index.d.cts +163 -27
  244. package/dist/index.d.ts +163 -27
  245. package/dist/index.js +119 -56
  246. package/dist/index.js.map +1 -1
  247. package/dist/{ir-BMP7yxJJ.d.cts → ir-C-Zm_GlZ.d.cts} +1 -1
  248. package/dist/{ir-DUOz6H-5.d.ts → ir-DGyGiwVe.d.ts} +1 -1
  249. package/dist/{module-k7m3txak.d.ts → module-DqQ1U-Me.d.ts} +129 -100
  250. package/dist/{module-B8CBqIZ_.d.cts → module-doenaCsZ.d.cts} +129 -100
  251. package/package.json +12 -1
  252. package/dist/ModuleTag-C8FHY_sY.d.ts +0 -93
  253. package/dist/ModuleTag-EGbgBMpZ.d.cts +0 -93
  254. package/dist/chunk-3QMIVH35.js +0 -43
  255. package/dist/chunk-3QMIVH35.js.map +0 -1
  256. package/dist/chunk-76WT3HOR.js.map +0 -1
  257. package/dist/chunk-AUIR5O6W.js.map +0 -1
  258. package/dist/chunk-BABLDP24.js.map +0 -1
  259. package/dist/chunk-BE3HW4FY.js.map +0 -1
  260. package/dist/chunk-CW6T36TN.js.map +0 -1
  261. package/dist/chunk-DFNM3WX2.js.map +0 -1
  262. package/dist/chunk-DMBALCE2.js.map +0 -1
  263. package/dist/chunk-EGK3KN7B.js.map +0 -1
  264. package/dist/chunk-GMPEOUP2.js.map +0 -1
  265. package/dist/chunk-IHVBV5C2.js.map +0 -1
  266. package/dist/chunk-JCXGZRMU.js.map +0 -1
  267. package/dist/chunk-JGIWG6SR.js.map +0 -1
  268. package/dist/chunk-JWOYLO27.js.map +0 -1
  269. package/dist/chunk-KIXAU3GM.js +0 -137
  270. package/dist/chunk-KIXAU3GM.js.map +0 -1
  271. package/dist/chunk-KP7MUZNX.js.map +0 -1
  272. package/dist/chunk-M3WTHJHJ.js.map +0 -1
  273. package/dist/chunk-M7IYCTJV.js +0 -79
  274. package/dist/chunk-M7IYCTJV.js.map +0 -1
  275. package/dist/chunk-NBD3KUOZ.js.map +0 -1
  276. package/dist/chunk-NQZ2OSGR.js.map +0 -1
  277. package/dist/chunk-OGWBVHB3.js.map +0 -1
  278. package/dist/chunk-PAYXCY6A.js.map +0 -1
  279. package/dist/chunk-PYOE4VSI.js.map +0 -1
  280. package/dist/chunk-QCHIQWAJ.js +0 -21
  281. package/dist/chunk-VZB726PE.js +0 -93
  282. package/dist/chunk-VZB726PE.js.map +0 -1
  283. package/dist/chunk-W3TEWHLO.js +0 -568
  284. package/dist/chunk-W3TEWHLO.js.map +0 -1
  285. package/dist/chunk-ZFLHVFUC.js +0 -192
  286. package/dist/chunk-ZFLHVFUC.js.map +0 -1
  287. package/dist/chunk-ZFY7U2FR.js.map +0 -1
  288. /package/dist/{chunk-G5ZBFPNU.js.map → chunk-2A4UKO2D.js.map} +0 -0
  289. /package/dist/{chunk-ANLBCBDC.js.map → chunk-2DVLMSOE.js.map} +0 -0
  290. /package/dist/{chunk-3TMODYZV.js.map → chunk-3XO4HR6V.js.map} +0 -0
  291. /package/dist/{chunk-TKZ7MEIA.js.map → chunk-53GVPGSM.js.map} +0 -0
  292. /package/dist/{chunk-NZJKFF45.js.map → chunk-C2UZZQ76.js.map} +0 -0
  293. /package/dist/{chunk-M2RGJPXX.js.map → chunk-DBD6Q6JH.js.map} +0 -0
  294. /package/dist/{chunk-ZGDVUPTM.js.map → chunk-EB4RGQO3.js.map} +0 -0
  295. /package/dist/{chunk-TAAPQVZN.js.map → chunk-ISKNULNH.js.map} +0 -0
  296. /package/dist/{chunk-66ALHVEX.js.map → chunk-KKIAYH4X.js.map} +0 -0
  297. /package/dist/{chunk-3RMKLXHX.js.map → chunk-KLDVG3SY.js.map} +0 -0
  298. /package/dist/{chunk-4CQAV7YB.js.map → chunk-O6TTQXTY.js.map} +0 -0
  299. /package/dist/{chunk-24VULZ7A.js.map → chunk-TKOGZDD6.js.map} +0 -0
  300. /package/dist/{chunk-EY4NZKDR.js.map → chunk-XFMMPYNU.js.map} +0 -0
@@ -1,27 +1,30 @@
1
+ import {
2
+ exportStaticIr,
3
+ extractManifest,
4
+ trialRun
5
+ } from "./chunk-VH575UTV.js";
1
6
  import {
2
7
  KernelContractMetaAllowlist,
3
8
  evaluateFullCutoverGate,
4
9
  getKernelImplementationRef,
5
10
  getRuntimeServicesEvidence
6
- } from "./chunk-24VULZ7A.js";
11
+ } from "./chunk-TKOGZDD6.js";
7
12
  import {
8
- exportStaticIr,
9
- extractManifest,
10
- trialRun
11
- } from "./chunk-M3WTHJHJ.js";
13
+ compileWorkflowStaticIrV1
14
+ } from "./chunk-CCKP5Z6F.js";
12
15
  import {
13
16
  normalizeKernelImplementationRef
14
- } from "./chunk-ZGDVUPTM.js";
17
+ } from "./chunk-EB4RGQO3.js";
15
18
  import {
16
19
  record
17
- } from "./chunk-DMBALCE2.js";
20
+ } from "./chunk-ZC7MSQ5U.js";
21
+ import {
22
+ EffectOpMiddlewareTag
23
+ } from "./chunk-WYJUJV4L.js";
18
24
  import {
19
25
  fnv1a32,
20
26
  stableStringify
21
- } from "./chunk-GMPEOUP2.js";
22
- import {
23
- EffectOpMiddlewareTag
24
- } from "./chunk-JWOYLO27.js";
27
+ } from "./chunk-4MZ7BT3R.js";
25
28
  import {
26
29
  __export
27
30
  } from "./chunk-PZ5AY32C.js";
@@ -30,6 +33,7 @@ import {
30
33
  var Reflection_exports = {};
31
34
  __export(Reflection_exports, {
32
35
  diffManifest: () => diffManifest2,
36
+ exportControlSurface: () => exportControlSurface2,
33
37
  exportStaticIr: () => exportStaticIr2,
34
38
  extractManifest: () => extractManifest2,
35
39
  verifyFullCutoverGate: () => verifyFullCutoverGate,
@@ -37,6 +41,119 @@ __export(Reflection_exports, {
37
41
  });
38
42
  import { Context as Context2, Effect as Effect2, Exit as Exit2, Layer as Layer2 } from "effect";
39
43
 
44
+ // src/internal/observability/controlSurfaceManifest.ts
45
+ var makeDigest = (value) => `control_surface_v1:${fnv1a32(stableStringify(value))}`;
46
+ var exportEffectsIndexDigest = (entries) => `effects_index_v1:${fnv1a32(stableStringify(entries))}`;
47
+ var exportWorkflowEffectsIndex = (args) => {
48
+ const moduleId = args.moduleId;
49
+ return Array.from(args.workflowSurface).sort((a, b) => a.programId < b.programId ? -1 : a.programId > b.programId ? 1 : 0).map((ir) => {
50
+ const localId = ir.programId.startsWith(`${moduleId}.`) ? ir.programId.slice(moduleId.length + 1) : ir.programId;
51
+ const triggerNode = ir.nodes.find((n) => n.kind === "trigger");
52
+ const trigger = triggerNode?.kind === "trigger" && triggerNode.trigger.kind === "action" ? { kind: "action", action: { moduleId, actionTag: triggerNode.trigger.actionTag } } : {
53
+ kind: "lifecycle",
54
+ phase: triggerNode?.kind === "trigger" && triggerNode.trigger.kind === "lifecycle" ? triggerNode.trigger.phase : "onStart"
55
+ };
56
+ return {
57
+ kind: "workflow",
58
+ effectId: `${moduleId}::workflow:${localId}`,
59
+ trigger,
60
+ programId: ir.programId,
61
+ programDigest: ir.digest
62
+ };
63
+ });
64
+ };
65
+ var exportControlSurfaceManifest = (input) => {
66
+ const modules = Array.from(input.modules).sort((a, b) => a.moduleId < b.moduleId ? -1 : a.moduleId > b.moduleId ? 1 : 0);
67
+ const meta = input.meta;
68
+ const base = {
69
+ version: 1,
70
+ modules,
71
+ ...meta ? { meta } : null
72
+ };
73
+ return {
74
+ ...base,
75
+ digest: makeDigest(base)
76
+ };
77
+ };
78
+
79
+ // src/internal/observability/workflowSurface.ts
80
+ var makeDigest2 = (value) => `workflow_surface_v1:${fnv1a32(stableStringify(value))}`;
81
+ var exportWorkflowSurface = (programs) => {
82
+ const sorted = Array.from(programs).sort(
83
+ (a, b) => a.programId < b.programId ? -1 : a.programId > b.programId ? 1 : 0
84
+ );
85
+ const base = { version: 1, programs: sorted };
86
+ return { ...base, digest: makeDigest2(base) };
87
+ };
88
+
89
+ // src/internal/reflection/controlSurface.ts
90
+ var MODULE_INTERNAL = /* @__PURE__ */ Symbol.for("logix.module.internal");
91
+ var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
92
+ var isObjectLike = (value) => typeof value === "object" && value !== null || typeof value === "function";
93
+ var asNonEmptyString = (value) => typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
94
+ var resolveTagId = (tag) => {
95
+ if (!isObjectLike(tag)) return void 0;
96
+ return asNonEmptyString(tag.id);
97
+ };
98
+ var resolveModuleIdOrThrow = (module) => {
99
+ if (isRecord(module) && module._tag === "ModuleImpl") {
100
+ const id = resolveTagId(module.module);
101
+ if (id) return id;
102
+ throw new Error(
103
+ "[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."
104
+ );
105
+ }
106
+ if (isRecord(module)) {
107
+ const id = asNonEmptyString(module.id);
108
+ if (id) return id;
109
+ const tagId = resolveTagId(module.tag);
110
+ if (tagId) return tagId;
111
+ }
112
+ throw new Error(
113
+ "[ControlSurfaceManifest] Failed to resolve moduleId.\nFix: pass a configured Module/ModuleImpl (has .id/.tag.id/.module.id), not a read-only handle."
114
+ );
115
+ };
116
+ var resolveWorkflowDefs = (module) => {
117
+ if (!isObjectLike(module)) return [];
118
+ const internal = module[MODULE_INTERNAL];
119
+ const defs = isRecord(internal) ? internal.workflowDefs : void 0;
120
+ return Array.isArray(defs) ? defs : [];
121
+ };
122
+ var exportControlSurface = (modules, options) => {
123
+ const entries = [];
124
+ const workflowSurfaces = [];
125
+ const seen = /* @__PURE__ */ new Set();
126
+ for (const module of modules) {
127
+ const moduleId = resolveModuleIdOrThrow(module);
128
+ if (seen.has(moduleId)) {
129
+ throw new Error(`[ControlSurfaceManifest] Duplicate moduleId "${moduleId}".`);
130
+ }
131
+ seen.add(moduleId);
132
+ const defs = resolveWorkflowDefs(module);
133
+ if (defs.length === 0) {
134
+ entries.push({ moduleId, effectsIndex: [] });
135
+ continue;
136
+ }
137
+ const workflowIrs = defs.map((def) => compileWorkflowStaticIrV1({ moduleId, def }));
138
+ const surface = exportWorkflowSurface(workflowIrs);
139
+ workflowSurfaces.push({ moduleId, surface });
140
+ const effectsIndex = exportWorkflowEffectsIndex({ moduleId, workflowSurface: surface.programs });
141
+ const effectsIndexDigest = effectsIndex.length > 0 ? exportEffectsIndexDigest(effectsIndex) : void 0;
142
+ entries.push({
143
+ moduleId,
144
+ workflowSurface: { digest: surface.digest },
145
+ effectsIndex,
146
+ ...effectsIndexDigest ? { effectsIndexDigest } : null
147
+ });
148
+ }
149
+ const manifest = exportControlSurfaceManifest({
150
+ version: 1,
151
+ modules: entries,
152
+ ...options?.meta ? { meta: options.meta } : null
153
+ });
154
+ return { manifest, workflowSurfaces };
155
+ };
156
+
40
157
  // src/internal/reflection/diff.ts
41
158
  var SEVERITY_RANK = {
42
159
  BREAKING: 0,
@@ -45,7 +162,7 @@ var SEVERITY_RANK = {
45
162
  };
46
163
  var uniqSorted = (input) => {
47
164
  const out = Array.from(new Set(input.filter((x) => typeof x === "string" && x.length > 0)));
48
- out.sort((a, b) => a.localeCompare(b));
165
+ out.sort();
49
166
  return out;
50
167
  };
51
168
  var diffStringKeys = (before, after) => {
@@ -55,12 +172,12 @@ var diffStringKeys = (before, after) => {
55
172
  for (const k of beforeSet) {
56
173
  if (!afterSet.has(k)) removed.push(k);
57
174
  }
58
- removed.sort((a, b) => a.localeCompare(b));
175
+ removed.sort();
59
176
  const added = [];
60
177
  for (const k of afterSet) {
61
178
  if (!beforeSet.has(k)) added.push(k);
62
179
  }
63
- added.sort((a, b) => a.localeCompare(b));
180
+ added.sort();
64
181
  return { removed, added };
65
182
  };
66
183
  var eqJsonValue = (a, b) => stableStringify(a) === stableStringify(b);
@@ -137,8 +254,8 @@ var diffManifest = (before, after, options) => {
137
254
  for (const id of afterById.keys()) {
138
255
  if (!beforeById.has(id)) added.push(id);
139
256
  }
140
- removed.sort((a, b) => a.localeCompare(b));
141
- added.sort((a, b) => a.localeCompare(b));
257
+ removed.sort();
258
+ added.sort();
142
259
  for (const id of beforeById.keys()) {
143
260
  const b = beforeById.get(id);
144
261
  const a = afterById.get(id);
@@ -152,8 +269,8 @@ var diffManifest = (before, after, options) => {
152
269
  if (b.derived !== a.derived) fields.push("derived");
153
270
  if (fields.length > 0) riskyChanged.push({ id, fields });
154
271
  }
155
- kindChanged.sort((x, y) => x.id.localeCompare(y.id));
156
- riskyChanged.sort((x, y) => x.id.localeCompare(y.id));
272
+ kindChanged.sort((x, y) => x.id < y.id ? -1 : x.id > y.id ? 1 : 0);
273
+ riskyChanged.sort((x, y) => x.id < y.id ? -1 : x.id > y.id ? 1 : 0);
157
274
  if (removed.length > 0) {
158
275
  changes.push({
159
276
  severity: "BREAKING",
@@ -257,11 +374,11 @@ var diffManifest = (before, after, options) => {
257
374
  const ra = SEVERITY_RANK[a.severity];
258
375
  const rb = SEVERITY_RANK[b.severity];
259
376
  if (ra !== rb) return ra - rb;
260
- const ca = a.code.localeCompare(b.code);
261
- if (ca !== 0) return ca;
377
+ if (a.code !== b.code) return a.code < b.code ? -1 : 1;
262
378
  const pa = a.pointer ?? "";
263
379
  const pb = b.pointer ?? "";
264
- return pa.localeCompare(pb);
380
+ if (pa !== pb) return pa < pb ? -1 : 1;
381
+ return 0;
265
382
  });
266
383
  const summary = {
267
384
  breaking: changes.filter((c) => c.severity === "BREAKING").length,
@@ -289,13 +406,13 @@ var diffManifest = (before, after, options) => {
289
406
  // src/internal/reflection/kernelContract.ts
290
407
  import { Context, Effect, Exit, Layer } from "effect";
291
408
  var resolveRootImpl = (root) => root?._tag === "ModuleImpl" ? root : root?.impl;
292
- var asNonEmptyString = (value) => typeof value === "string" && value.length > 0 ? value : void 0;
409
+ var asNonEmptyString2 = (value) => typeof value === "string" && value.length > 0 ? value : void 0;
293
410
  var asNonNegInt = (value, fallback = 0) => {
294
411
  if (typeof value !== "number" || !Number.isFinite(value)) return fallback;
295
412
  const n = Math.floor(value);
296
413
  return n >= 0 ? n : fallback;
297
414
  };
298
- var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
415
+ var isRecord2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
299
416
  var makeTraceEffectOpObserver = () => {
300
417
  return (op) => Effect.gen(function* () {
301
418
  if (op.meta?.policy?.disableObservers) {
@@ -332,12 +449,12 @@ var extractRuntimeSummary = (evidence) => {
332
449
  };
333
450
  };
334
451
  var canonicalizeOpMeta = (opMetaRaw) => {
335
- if (!isRecord(opMetaRaw)) return void 0;
452
+ if (!isRecord2(opMetaRaw)) return void 0;
336
453
  const out = {};
337
454
  for (const [k, v] of Object.entries(opMetaRaw)) {
338
455
  if (k === "instanceId" || k === "txnId" || k === "runtimeLabel" || k === "linkId") continue;
339
456
  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));
457
+ out[k] = v.slice().sort();
341
458
  continue;
342
459
  }
343
460
  out[k] = v;
@@ -360,17 +477,17 @@ var extractKernelContractTraceOps = (evidence) => {
360
477
  for (const e of evidence.events) {
361
478
  if (e.type !== "debug:event") continue;
362
479
  const payload = e.payload;
363
- if (!isRecord(payload)) continue;
480
+ if (!isRecord2(payload)) continue;
364
481
  const meta = payload.meta;
365
482
  const opMeta = meta?.meta;
366
483
  const opSeq = asNonNegInt(opMeta?.opSeq, -1);
367
484
  if (opSeq < 0) continue;
368
- const instanceIdRaw = asNonEmptyString(payload.instanceId) ?? "unknown";
485
+ const instanceIdRaw = asNonEmptyString2(payload.instanceId) ?? "unknown";
369
486
  const instanceId = mapInstanceId(instanceIdRaw);
370
487
  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";
488
+ const moduleId = asNonEmptyString2(payload.moduleId) ?? "unknown";
489
+ const kind = asNonEmptyString2(meta?.kind) ?? asNonEmptyString2(payload.kind) ?? "unknown";
490
+ const name = asNonEmptyString2(meta?.name) ?? asNonEmptyString2(payload.label) ?? "effectop";
374
491
  ops.push({
375
492
  anchor: { instanceId, txnSeq, opSeq },
376
493
  moduleId,
@@ -380,7 +497,7 @@ var extractKernelContractTraceOps = (evidence) => {
380
497
  });
381
498
  }
382
499
  ops.sort((a, b) => {
383
- if (a.anchor.instanceId !== b.anchor.instanceId) return a.anchor.instanceId.localeCompare(b.anchor.instanceId);
500
+ if (a.anchor.instanceId !== b.anchor.instanceId) return a.anchor.instanceId < b.anchor.instanceId ? -1 : 1;
384
501
  if (a.anchor.txnSeq !== b.anchor.txnSeq) return a.anchor.txnSeq - b.anchor.txnSeq;
385
502
  return a.anchor.opSeq - b.anchor.opSeq;
386
503
  });
@@ -397,7 +514,7 @@ var diffKernelContractTraceOps = (before, after) => {
397
514
  for (const op of after) {
398
515
  afterByKey.set(anchorKey(op.anchor), op);
399
516
  }
400
- const allKeys = Array.from(/* @__PURE__ */ new Set([...beforeByKey.keys(), ...afterByKey.keys()])).sort((a, b) => a.localeCompare(b));
517
+ const allKeys = Array.from(/* @__PURE__ */ new Set([...beforeByKey.keys(), ...afterByKey.keys()])).sort();
401
518
  for (const key of allKeys) {
402
519
  const b = beforeByKey.get(key);
403
520
  const a = afterByKey.get(key);
@@ -506,12 +623,12 @@ var verifyKernelContract = (root, options) => Effect.gen(function* () {
506
623
 
507
624
  // src/Reflection.ts
508
625
  var resolveRootImpl2 = (root) => root?._tag === "ModuleImpl" ? root : root?.impl;
509
- var isRecord2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
626
+ var isRecord3 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
510
627
  var stableJson = (value) => JSON.stringify(value) ?? "";
511
628
  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));
629
+ const b = isRecord3(before) ? before : {};
630
+ const a = isRecord3(after) ? after : {};
631
+ const keys = Array.from(/* @__PURE__ */ new Set([...Object.keys(b), ...Object.keys(a)])).sort();
515
632
  const changed = [];
516
633
  for (const k of keys) {
517
634
  if (stableJson(b[k]) !== stableJson(a[k])) {
@@ -535,7 +652,7 @@ var tryAllowlistKernelContractDiff = (args) => {
535
652
  }
536
653
  const before = change.before;
537
654
  const after = change.after;
538
- if (!isRecord2(before) || !isRecord2(after)) {
655
+ if (!isRecord3(before) || !isRecord3(after)) {
539
656
  return { verdict: "FAIL", allowedDiffs: [] };
540
657
  }
541
658
  const anchorBefore = before.anchor;
@@ -564,12 +681,13 @@ var tryAllowlistKernelContractDiff = (args) => {
564
681
  metaKey,
565
682
  count,
566
683
  ...allow.get(metaKey) ? { reason: allow.get(metaKey) } : {}
567
- })).sort((a, b) => a.metaKey.localeCompare(b.metaKey));
684
+ })).sort((a, b) => a.metaKey < b.metaKey ? -1 : a.metaKey > b.metaKey ? 1 : 0);
568
685
  return { verdict: "PASS", allowedDiffs };
569
686
  };
570
687
  var extractManifest2 = (module, options) => extractManifest(module, options);
571
688
  var diffManifest2 = (before, after, options) => diffManifest(before, after, options);
572
689
  var exportStaticIr2 = (module) => exportStaticIr(module);
690
+ var exportControlSurface2 = (modules, options) => exportControlSurface(modules, options);
573
691
  var verifyKernelContract2 = (module, options) => verifyKernelContract(module, options);
574
692
  var verifyFullCutoverGate = (module, options) => Effect2.gen(function* () {
575
693
  const rootImpl = resolveRootImpl2(module);
@@ -625,8 +743,9 @@ export {
625
743
  extractManifest2 as extractManifest,
626
744
  diffManifest2 as diffManifest,
627
745
  exportStaticIr2 as exportStaticIr,
746
+ exportControlSurface2 as exportControlSurface,
628
747
  verifyKernelContract2 as verifyKernelContract,
629
748
  verifyFullCutoverGate,
630
749
  Reflection_exports
631
750
  };
632
- //# sourceMappingURL=chunk-DFNM3WX2.js.map
751
+ //# sourceMappingURL=chunk-IMCC6TBN.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 { Context, Effect, Exit, Layer } 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 = Context.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 gateResult = yield* trialRun(gateProgram, {\n runId: gateRun?.runId,\n diagnosticsLevel: options?.gateDiagnosticsLevel ?? 'off',\n layer: gateRun?.layer,\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 { Context, Effect, Exit, Layer } 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'\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 = Context.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 const extraLayer = run?.layer ? (Layer.mergeAll(traceLayer, run.layer) as Layer.Layer<any, any, any>) : traceLayer\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","Context","Effect","Exit","Layer","makeDigest","asNonEmptyString","isRecord","resolveRootImpl","isRecord","extractManifest","diffManifest","exportStaticIr","exportControlSurface","verifyKernelContract","Effect","Layer","Context","Exit"]}
@@ -1,35 +1,35 @@
1
1
  import {
2
2
  build,
3
3
  install
4
- } from "./chunk-KIXAU3GM.js";
4
+ } from "./chunk-6DACKW3D.js";
5
5
  import {
6
6
  Module
7
- } from "./chunk-JCXGZRMU.js";
7
+ } from "./chunk-RQQW3IQC.js";
8
8
  import {
9
9
  attachLogicUnitMeta
10
- } from "./chunk-JGIWG6SR.js";
10
+ } from "./chunk-Y4VRBIS6.js";
11
11
  import {
12
12
  mutateWithPatchPaths,
13
13
  mutateWithoutPatches
14
- } from "./chunk-BE3HW4FY.js";
14
+ } from "./chunk-34CF6OGE.js";
15
15
  import {
16
16
  normalizeActions
17
17
  } from "./chunk-YS3AZQ2G.js";
18
18
  import {
19
19
  registerModuleProgram
20
- } from "./chunk-66ALHVEX.js";
20
+ } from "./chunk-KKIAYH4X.js";
21
21
  import {
22
22
  getBoundInternals,
23
23
  setModuleTraitsProgram
24
- } from "./chunk-3RMKLXHX.js";
24
+ } from "./chunk-KLDVG3SY.js";
25
25
  import {
26
26
  currentDiagnosticsLevel,
27
27
  record
28
- } from "./chunk-DMBALCE2.js";
28
+ } from "./chunk-ZC7MSQ5U.js";
29
29
  import {
30
30
  fnv1a32,
31
31
  stableStringify
32
- } from "./chunk-GMPEOUP2.js";
32
+ } from "./chunk-4MZ7BT3R.js";
33
33
  import {
34
34
  __export
35
35
  } from "./chunk-PZ5AY32C.js";
@@ -59,24 +59,25 @@ var ModuleTraitsConflictError = class extends Error {
59
59
  }
60
60
  };
61
61
  var toProvenanceKey = (p) => `${p.originType}:${p.originId}:${p.originIdKind}:${p.originLabel}:${p.path ?? ""}`;
62
+ var compareString = (a, b) => a < b ? -1 : a > b ? 1 : 0;
62
63
  var compareProvenance = (a, b) => {
63
- const type = a.originType.localeCompare(b.originType);
64
+ const type = compareString(a.originType, b.originType);
64
65
  if (type !== 0) return type;
65
- const id = a.originId.localeCompare(b.originId);
66
+ const id = compareString(a.originId, b.originId);
66
67
  if (id !== 0) return id;
67
- const kind = a.originIdKind.localeCompare(b.originIdKind);
68
+ const kind = compareString(a.originIdKind, b.originIdKind);
68
69
  if (kind !== 0) return kind;
69
- const label = a.originLabel.localeCompare(b.originLabel);
70
+ const label = compareString(a.originLabel, b.originLabel);
70
71
  if (label !== 0) return label;
71
- return String(a.path ?? "").localeCompare(String(b.path ?? ""));
72
+ return compareString(String(a.path ?? ""), String(b.path ?? ""));
72
73
  };
73
74
  var originTypeOrder = (t) => t === "module" ? 0 : 1;
74
75
  var compareTraitIdByProvenance = (a, b) => {
75
76
  const ta = originTypeOrder(a.provenance.originType) - originTypeOrder(b.provenance.originType);
76
77
  if (ta !== 0) return ta;
77
- const oa = a.provenance.originId.localeCompare(b.provenance.originId);
78
+ const oa = compareString(a.provenance.originId, b.provenance.originId);
78
79
  if (oa !== 0) return oa;
79
- return a.traitId.localeCompare(b.traitId);
80
+ return compareString(a.traitId, b.traitId);
80
81
  };
81
82
  var extractStringArray = (value) => {
82
83
  if (!Array.isArray(value)) return [];
@@ -120,7 +121,7 @@ var finalizeTraitContributions = (args) => {
120
121
  for (const c of contributions) {
121
122
  const traits2 = c.traits;
122
123
  if (!traits2 || typeof traits2 !== "object") continue;
123
- for (const traitId of Object.keys(traits2).sort((a, b) => a.localeCompare(b))) {
124
+ for (const traitId of Object.keys(traits2).sort()) {
124
125
  const value = traits2[traitId];
125
126
  if (value === void 0) continue;
126
127
  const prev = traitById.get(traitId);
@@ -144,7 +145,7 @@ var finalizeTraitContributions = (args) => {
144
145
  sources: Array.from(unique.values()).sort(compareProvenance)
145
146
  });
146
147
  };
147
- for (const traitId of Array.from(duplicateSources.keys()).sort((a, b) => a.localeCompare(b))) {
148
+ for (const traitId of Array.from(duplicateSources.keys()).sort()) {
148
149
  registerConflict({
149
150
  kind: "duplicate_traitId",
150
151
  traitId,
@@ -183,7 +184,7 @@ var finalizeTraitContributions = (args) => {
183
184
  registerConflict({
184
185
  kind: "missing_requires",
185
186
  traitId,
186
- missing: Array.from(new Set(missing)).sort((a, b) => a.localeCompare(b)),
187
+ missing: Array.from(new Set(missing)).sort(),
187
188
  sources: [entry.provenance]
188
189
  });
189
190
  }
@@ -200,7 +201,7 @@ var finalizeTraitContributions = (args) => {
200
201
  registerConflict({
201
202
  kind: "excludes_violation",
202
203
  traitId,
203
- present: Array.from(new Set(presentExcluded)).sort((a, b) => a.localeCompare(b)),
204
+ present: Array.from(new Set(presentExcluded)).sort(),
204
205
  sources: [entry.provenance, ...otherSources]
205
206
  });
206
207
  }
@@ -215,7 +216,7 @@ var finalizeTraitContributions = (args) => {
215
216
  conflicts.sort((a, b) => {
216
217
  const k = kindOrder[a.kind] - kindOrder[b.kind];
217
218
  if (k !== 0) return k;
218
- return a.traitId.localeCompare(b.traitId);
219
+ return compareString(a.traitId, b.traitId);
219
220
  });
220
221
  throw new ModuleTraitsConflictError(args.moduleId, conflicts);
221
222
  }
@@ -394,4 +395,4 @@ export {
394
395
  make,
395
396
  ModuleTag_exports
396
397
  };
397
- //# sourceMappingURL=chunk-76WT3HOR.js.map
398
+ //# sourceMappingURL=chunk-IROZNQAF.js.map