@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.
- package/LICENSE +201 -0
- package/dist/{Bound-BN1DQ_lM.d.ts → Bound-CEa1ihvH.d.ts} +2 -2
- package/dist/{Bound-BPIfH9SS.d.cts → Bound-CNLNkC7c.d.cts} +2 -2
- package/dist/Bound.cjs +620 -163
- package/dist/Bound.cjs.map +1 -1
- package/dist/Bound.d.cts +3 -3
- package/dist/Bound.d.ts +3 -3
- package/dist/Bound.js +14 -14
- package/dist/{Debug-Bq8Sqjcr.d.cts → Debug-BhMYr-1i.d.cts} +3 -3
- package/dist/{Debug-B5q5Bkzx.d.ts → Debug-ByM7m4Ft.d.ts} +3 -3
- package/dist/Debug.cjs +553 -32
- package/dist/Debug.cjs.map +1 -1
- package/dist/Debug.d.cts +10 -8
- package/dist/Debug.d.ts +10 -8
- package/dist/Debug.js +12 -10
- package/dist/EffectOp.cjs.map +1 -1
- package/dist/EffectOp.js +2 -3
- package/dist/EffectOp.js.map +1 -1
- package/dist/Env.cjs +664 -6
- package/dist/Env.cjs.map +1 -1
- package/dist/Env.js +5 -2
- package/dist/ExternalStore-BAz83PVq.d.cts +60 -0
- package/dist/ExternalStore-BYWPbYs8.d.ts +60 -0
- package/dist/ExternalStore.cjs +746 -0
- package/dist/ExternalStore.cjs.map +1 -0
- package/dist/ExternalStore.d.cts +4 -0
- package/dist/ExternalStore.d.ts +4 -0
- package/dist/ExternalStore.js +19 -0
- package/dist/ExternalStore.js.map +1 -0
- package/dist/{Flow-1fZT8MpX.d.cts → Flow-BlSoMmhV.d.cts} +2 -2
- package/dist/{Flow-BhpjE22E.d.ts → Flow-CQSGve5c.d.ts} +2 -2
- package/dist/Flow.cjs +2 -2
- package/dist/Flow.cjs.map +1 -1
- package/dist/Flow.d.cts +4 -4
- package/dist/Flow.d.ts +4 -4
- package/dist/Flow.js +7 -8
- package/dist/{Handle-D_cLW1Z3.d.ts → Handle-B7PSmsrY.d.ts} +1 -1
- package/dist/{Handle-D8D1zPb_.d.cts → Handle-ByovhL-c.d.cts} +1 -1
- package/dist/Handle.d.cts +3 -3
- package/dist/Handle.d.ts +3 -3
- package/dist/{Kernel-CnGE1Fyk.d.ts → Kernel-DGSpS4GM.d.ts} +2 -2
- package/dist/{Kernel-8kC-jOda.d.cts → Kernel-DZAk-Mrn.d.cts} +2 -2
- package/dist/Kernel.cjs +680 -22
- package/dist/Kernel.cjs.map +1 -1
- package/dist/Kernel.d.cts +10 -8
- package/dist/Kernel.d.ts +10 -8
- package/dist/Kernel.js +7 -4
- package/dist/{Link-Db7975nU.d.ts → Link-Cm4eR9n0.d.ts} +10 -3
- package/dist/{Link-fX8x1eCK.d.cts → Link-DF8i8iWR.d.cts} +10 -3
- package/dist/Link.cjs +1128 -86
- package/dist/Link.cjs.map +1 -1
- package/dist/Link.d.cts +3 -3
- package/dist/Link.d.ts +3 -3
- package/dist/Link.js +30 -25
- package/dist/{Logic-DRh4sDZj.d.cts → Logic-BcQA0AvE.d.cts} +1 -1
- package/dist/{Logic-BRjEMr-W.d.ts → Logic-OotSE1xw.d.ts} +1 -1
- package/dist/Logic.d.cts +3 -3
- package/dist/Logic.d.ts +3 -3
- package/dist/{MatchBuilder-CJk5oCkR.d.cts → MatchBuilder-BNDJ8waF.d.ts} +1 -1
- package/dist/{MatchBuilder-0QOc-nlU.d.ts → MatchBuilder-CvZ5WY1B.d.cts} +1 -1
- package/dist/MatchBuilder.d.cts +4 -4
- package/dist/MatchBuilder.d.ts +4 -4
- package/dist/Middleware-D8tUDLv_.d.cts +100 -0
- package/dist/Middleware-DS7CbTTN.d.ts +100 -0
- package/dist/Middleware.cjs +461 -13
- package/dist/Middleware.cjs.map +1 -1
- package/dist/Middleware.d.cts +2 -86
- package/dist/Middleware.d.ts +2 -86
- package/dist/Middleware.js +13 -11
- package/dist/{Module-DnzluX2J.d.ts → Module-CFj0I2yE.d.ts} +45 -18
- package/dist/{Module-B_0xRDMR.d.cts → Module-DpXPW9EQ.d.cts} +45 -18
- package/dist/Module.cjs +8583 -5741
- package/dist/Module.cjs.map +1 -1
- package/dist/Module.d.cts +5 -4
- package/dist/Module.d.ts +5 -4
- package/dist/Module.js +32 -27
- package/dist/ModuleTag-BcVF6z7B.d.ts +113 -0
- package/dist/ModuleTag-DuZXo_NS.d.cts +113 -0
- package/dist/ModuleTag.cjs +2609 -1232
- package/dist/ModuleTag.cjs.map +1 -1
- package/dist/ModuleTag.d.cts +4 -4
- package/dist/ModuleTag.d.ts +4 -4
- package/dist/ModuleTag.js +28 -25
- package/dist/{Observability-cY4kLn0S.d.ts → Observability-D-ZWeEVb.d.ts} +22 -15
- package/dist/{Observability-COqEvp2C.d.cts → Observability-V7sRMYTh.d.cts} +22 -15
- package/dist/Observability.cjs +1938 -640
- package/dist/Observability.cjs.map +1 -1
- package/dist/Observability.d.cts +4 -4
- package/dist/Observability.d.ts +4 -4
- package/dist/Observability.js +21 -19
- package/dist/{Process-mL8fHDSB.d.cts → Process-B55aJMFk.d.cts} +29 -4
- package/dist/{Process-CM9xbMdP.d.ts → Process-DvhFEwUS.d.ts} +29 -4
- package/dist/Process.cjs +1122 -85
- package/dist/Process.cjs.map +1 -1
- package/dist/Process.d.cts +4 -3
- package/dist/Process.d.ts +4 -3
- package/dist/Process.js +27 -22
- package/dist/{ReadQuery-BlMwhe-F.d.ts → ReadQuery-C4vZ8Prc.d.ts} +2 -2
- package/dist/{ReadQuery-SinbStGF.d.ts → ReadQuery-CafjlJQo.d.cts} +1 -1
- package/dist/{ReadQuery-SinbStGF.d.cts → ReadQuery-CafjlJQo.d.ts} +1 -1
- package/dist/{ReadQuery-CL5XlXts.d.cts → ReadQuery-mc0NgrFV.d.cts} +2 -2
- package/dist/ReadQuery.cjs +3 -3
- package/dist/ReadQuery.cjs.map +1 -1
- package/dist/ReadQuery.d.cts +2 -2
- package/dist/ReadQuery.d.ts +2 -2
- package/dist/ReadQuery.js +3 -3
- package/dist/{Reflection-CQnKwPXj.d.ts → Reflection-C8xZ267q.d.ts} +88 -7
- package/dist/{Reflection-Kabo1mlU.d.cts → Reflection-DP7Vsv3f.d.cts} +88 -7
- package/dist/Reflection.cjs +2934 -1553
- package/dist/Reflection.cjs.map +1 -1
- package/dist/Reflection.d.cts +14 -11
- package/dist/Reflection.d.ts +14 -11
- package/dist/Reflection.js +26 -21
- package/dist/Resource.cjs +670 -12
- package/dist/Resource.cjs.map +1 -1
- package/dist/Resource.js +6 -3
- package/dist/Root.cjs +675 -17
- package/dist/Root.cjs.map +1 -1
- package/dist/Root.js +7 -3
- package/dist/{Runtime-CtyzZG4i.d.ts → Runtime-BWc9YfUB.d.ts} +37 -7
- package/dist/{Runtime-B-aL-f29.d.cts → Runtime-PShIC4DW.d.cts} +37 -7
- package/dist/Runtime.cjs +1899 -809
- package/dist/Runtime.cjs.map +1 -1
- package/dist/Runtime.d.cts +14 -11
- package/dist/Runtime.d.ts +14 -11
- package/dist/Runtime.js +33 -28
- package/dist/ScopeRegistry.cjs +668 -10
- package/dist/ScopeRegistry.cjs.map +1 -1
- package/dist/ScopeRegistry.js +6 -3
- package/dist/{StateTrait-OWhbj12c.d.cts → StateTrait-CQsDlXJm.d.cts} +23 -6
- package/dist/{StateTrait-BGsZghTz.d.ts → StateTrait-YvJzVDKl.d.ts} +23 -6
- package/dist/StateTrait.cjs +1475 -370
- package/dist/StateTrait.cjs.map +1 -1
- package/dist/StateTrait.d.cts +7 -5
- package/dist/StateTrait.d.ts +7 -5
- package/dist/StateTrait.js +17 -14
- package/dist/{TraitLifecycle-LdIWmKlg.d.ts → TraitLifecycle-CjIBICAA.d.ts} +2 -2
- package/dist/{TraitLifecycle-CwV5WPFX.d.cts → TraitLifecycle-NmqGiXPC.d.cts} +2 -2
- package/dist/TraitLifecycle.cjs +489 -32
- package/dist/TraitLifecycle.cjs.map +1 -1
- package/dist/TraitLifecycle.d.cts +4 -4
- package/dist/TraitLifecycle.d.ts +4 -4
- package/dist/TraitLifecycle.js +7 -7
- package/dist/Workflow-BlFG_20_.d.cts +414 -0
- package/dist/Workflow-CW9S_aAP.d.ts +414 -0
- package/dist/Workflow.cjs +2977 -0
- package/dist/Workflow.cjs.map +1 -0
- package/dist/Workflow.d.cts +7 -0
- package/dist/Workflow.d.ts +7 -0
- package/dist/Workflow.js +55 -0
- package/dist/Workflow.js.map +1 -0
- package/dist/{chunk-G5ZBFPNU.js → chunk-2A4UKO2D.js} +2 -2
- package/dist/chunk-2DE6D42I.js +248 -0
- package/dist/chunk-2DE6D42I.js.map +1 -0
- package/dist/{chunk-ANLBCBDC.js → chunk-2DVLMSOE.js} +6 -6
- package/dist/{chunk-BE3HW4FY.js → chunk-34CF6OGE.js} +14 -16
- package/dist/chunk-34CF6OGE.js.map +1 -0
- package/dist/{chunk-ZFY7U2FR.js → chunk-3LPIXG56.js} +43 -3
- package/dist/chunk-3LPIXG56.js.map +1 -0
- package/dist/chunk-3VZYDNXZ.js +10 -0
- package/dist/chunk-3VZYDNXZ.js.map +1 -0
- package/dist/{chunk-3TMODYZV.js → chunk-3XO4HR6V.js} +2 -2
- package/dist/chunk-46FGVWRF.js +817 -0
- package/dist/chunk-46FGVWRF.js.map +1 -0
- package/dist/chunk-4LODUXFI.js +288 -0
- package/dist/chunk-4LODUXFI.js.map +1 -0
- package/dist/{chunk-GMPEOUP2.js → chunk-4MZ7BT3R.js} +2 -2
- package/dist/chunk-4MZ7BT3R.js.map +1 -0
- package/dist/{chunk-TKZ7MEIA.js → chunk-53GVPGSM.js} +2 -2
- package/dist/{chunk-KP7MUZNX.js → chunk-5W2V2NVJ.js} +2 -2
- package/dist/chunk-5W2V2NVJ.js.map +1 -0
- package/dist/chunk-6DACKW3D.js +613 -0
- package/dist/chunk-6DACKW3D.js.map +1 -0
- package/dist/chunk-AQ7L2QZ5.js +1395 -0
- package/dist/chunk-AQ7L2QZ5.js.map +1 -0
- package/dist/{chunk-NZJKFF45.js → chunk-C2UZZQ76.js} +2 -2
- package/dist/chunk-CCKP5Z6F.js +701 -0
- package/dist/chunk-CCKP5Z6F.js.map +1 -0
- package/dist/chunk-CUKM2XUW.js +27 -0
- package/dist/{chunk-QCHIQWAJ.js.map → chunk-CUKM2XUW.js.map} +1 -1
- package/dist/{chunk-M2RGJPXX.js → chunk-DBD6Q6JH.js} +3 -3
- package/dist/{chunk-ZGDVUPTM.js → chunk-EB4RGQO3.js} +2 -2
- package/dist/{chunk-PAYXCY6A.js → chunk-G7ESIQTI.js} +12 -14
- package/dist/chunk-G7ESIQTI.js.map +1 -0
- package/dist/chunk-GPBAZQ23.js +348 -0
- package/dist/chunk-GPBAZQ23.js.map +1 -0
- package/dist/{chunk-OFADUJWJ.js → chunk-I4LCE5OY.js} +3 -5
- package/dist/{chunk-OFADUJWJ.js.map → chunk-I4LCE5OY.js.map} +1 -1
- package/dist/{chunk-DFNM3WX2.js → chunk-IMCC6TBN.js} +158 -39
- package/dist/chunk-IMCC6TBN.js.map +1 -0
- package/dist/{chunk-76WT3HOR.js → chunk-IROZNQAF.js} +22 -21
- package/dist/chunk-IROZNQAF.js.map +1 -0
- package/dist/{chunk-TAAPQVZN.js → chunk-ISKNULNH.js} +2 -2
- package/dist/chunk-J3CWXIPV.js +242 -0
- package/dist/chunk-J3CWXIPV.js.map +1 -0
- package/dist/{chunk-PYOE4VSI.js → chunk-JBKYRTCS.js} +224 -161
- package/dist/chunk-JBKYRTCS.js.map +1 -0
- package/dist/{chunk-66ALHVEX.js → chunk-KKIAYH4X.js} +3 -3
- package/dist/{chunk-3RMKLXHX.js → chunk-KLDVG3SY.js} +2 -2
- package/dist/{chunk-BABLDP24.js → chunk-KSZQYSEH.js} +3 -3
- package/dist/chunk-KSZQYSEH.js.map +1 -0
- package/dist/{chunk-CW6T36TN.js → chunk-M3M7JFAH.js} +4 -4
- package/dist/chunk-M3M7JFAH.js.map +1 -0
- package/dist/{chunk-THATMZXD.js → chunk-MLB253V2.js} +2 -2
- package/dist/{chunk-THATMZXD.js.map → chunk-MLB253V2.js.map} +1 -1
- package/dist/{chunk-JGIWG6SR.js → chunk-MS77U77X.js} +664 -550
- package/dist/chunk-MS77U77X.js.map +1 -0
- package/dist/chunk-MW4FA3MW.js +23 -0
- package/dist/chunk-MW4FA3MW.js.map +1 -0
- package/dist/chunk-MYKNINNN.js +228 -0
- package/dist/chunk-MYKNINNN.js.map +1 -0
- package/dist/{chunk-4CQAV7YB.js → chunk-O6TTQXTY.js} +2 -2
- package/dist/{chunk-NBD3KUOZ.js → chunk-OJDJ4VDQ.js} +35 -24
- package/dist/chunk-OJDJ4VDQ.js.map +1 -0
- package/dist/{chunk-NQZ2OSGR.js → chunk-PVZEMNJY.js} +9 -9
- package/dist/chunk-PVZEMNJY.js.map +1 -0
- package/dist/chunk-RN26DV2M.js +271 -0
- package/dist/chunk-RN26DV2M.js.map +1 -0
- package/dist/{chunk-JCXGZRMU.js → chunk-RQQW3IQC.js} +3 -3
- package/dist/chunk-RQQW3IQC.js.map +1 -0
- package/dist/{chunk-24VULZ7A.js → chunk-TKOGZDD6.js} +3 -3
- package/dist/{chunk-EGK3KN7B.js → chunk-TQYLVXGY.js} +70 -39
- package/dist/chunk-TQYLVXGY.js.map +1 -0
- package/dist/{chunk-QMM6O4CD.js → chunk-UACD2CL2.js} +15 -3
- package/dist/{chunk-QMM6O4CD.js.map → chunk-UACD2CL2.js.map} +1 -1
- package/dist/{chunk-M3WTHJHJ.js → chunk-VH575UTV.js} +30 -34
- package/dist/chunk-VH575UTV.js.map +1 -0
- package/dist/{chunk-AUIR5O6W.js → chunk-WWBMC24F.js} +9 -15
- package/dist/chunk-WWBMC24F.js.map +1 -0
- package/dist/{chunk-JWOYLO27.js → chunk-WYJUJV4L.js} +80 -7
- package/dist/chunk-WYJUJV4L.js.map +1 -0
- package/dist/{chunk-EY4NZKDR.js → chunk-XFMMPYNU.js} +2 -2
- package/dist/chunk-Y4VRBIS6.js +35 -0
- package/dist/chunk-Y4VRBIS6.js.map +1 -0
- package/dist/{chunk-DMBALCE2.js → chunk-ZC7MSQ5U.js} +77 -4
- package/dist/chunk-ZC7MSQ5U.js.map +1 -0
- package/dist/{chunk-OGWBVHB3.js → chunk-ZCK6SCOE.js} +67 -8
- package/dist/chunk-ZCK6SCOE.js.map +1 -0
- package/dist/{chunk-IHVBV5C2.js → chunk-ZTFTABXV.js} +2 -1
- package/dist/chunk-ZTFTABXV.js.map +1 -0
- package/dist/index.cjs +9532 -5017
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +163 -27
- package/dist/index.d.ts +163 -27
- package/dist/index.js +119 -56
- package/dist/index.js.map +1 -1
- package/dist/{ir-BMP7yxJJ.d.cts → ir-C-Zm_GlZ.d.cts} +1 -1
- package/dist/{ir-DUOz6H-5.d.ts → ir-DGyGiwVe.d.ts} +1 -1
- package/dist/{module-k7m3txak.d.ts → module-DqQ1U-Me.d.ts} +129 -100
- package/dist/{module-B8CBqIZ_.d.cts → module-doenaCsZ.d.cts} +129 -100
- package/package.json +12 -1
- package/dist/ModuleTag-C8FHY_sY.d.ts +0 -93
- package/dist/ModuleTag-EGbgBMpZ.d.cts +0 -93
- package/dist/chunk-3QMIVH35.js +0 -43
- package/dist/chunk-3QMIVH35.js.map +0 -1
- package/dist/chunk-76WT3HOR.js.map +0 -1
- package/dist/chunk-AUIR5O6W.js.map +0 -1
- package/dist/chunk-BABLDP24.js.map +0 -1
- package/dist/chunk-BE3HW4FY.js.map +0 -1
- package/dist/chunk-CW6T36TN.js.map +0 -1
- package/dist/chunk-DFNM3WX2.js.map +0 -1
- package/dist/chunk-DMBALCE2.js.map +0 -1
- package/dist/chunk-EGK3KN7B.js.map +0 -1
- package/dist/chunk-GMPEOUP2.js.map +0 -1
- package/dist/chunk-IHVBV5C2.js.map +0 -1
- package/dist/chunk-JCXGZRMU.js.map +0 -1
- package/dist/chunk-JGIWG6SR.js.map +0 -1
- package/dist/chunk-JWOYLO27.js.map +0 -1
- package/dist/chunk-KIXAU3GM.js +0 -137
- package/dist/chunk-KIXAU3GM.js.map +0 -1
- package/dist/chunk-KP7MUZNX.js.map +0 -1
- package/dist/chunk-M3WTHJHJ.js.map +0 -1
- package/dist/chunk-M7IYCTJV.js +0 -79
- package/dist/chunk-M7IYCTJV.js.map +0 -1
- package/dist/chunk-NBD3KUOZ.js.map +0 -1
- package/dist/chunk-NQZ2OSGR.js.map +0 -1
- package/dist/chunk-OGWBVHB3.js.map +0 -1
- package/dist/chunk-PAYXCY6A.js.map +0 -1
- package/dist/chunk-PYOE4VSI.js.map +0 -1
- package/dist/chunk-QCHIQWAJ.js +0 -21
- package/dist/chunk-VZB726PE.js +0 -93
- package/dist/chunk-VZB726PE.js.map +0 -1
- package/dist/chunk-W3TEWHLO.js +0 -568
- package/dist/chunk-W3TEWHLO.js.map +0 -1
- package/dist/chunk-ZFLHVFUC.js +0 -192
- package/dist/chunk-ZFLHVFUC.js.map +0 -1
- package/dist/chunk-ZFY7U2FR.js.map +0 -1
- /package/dist/{chunk-G5ZBFPNU.js.map → chunk-2A4UKO2D.js.map} +0 -0
- /package/dist/{chunk-ANLBCBDC.js.map → chunk-2DVLMSOE.js.map} +0 -0
- /package/dist/{chunk-3TMODYZV.js.map → chunk-3XO4HR6V.js.map} +0 -0
- /package/dist/{chunk-TKZ7MEIA.js.map → chunk-53GVPGSM.js.map} +0 -0
- /package/dist/{chunk-NZJKFF45.js.map → chunk-C2UZZQ76.js.map} +0 -0
- /package/dist/{chunk-M2RGJPXX.js.map → chunk-DBD6Q6JH.js.map} +0 -0
- /package/dist/{chunk-ZGDVUPTM.js.map → chunk-EB4RGQO3.js.map} +0 -0
- /package/dist/{chunk-TAAPQVZN.js.map → chunk-ISKNULNH.js.map} +0 -0
- /package/dist/{chunk-66ALHVEX.js.map → chunk-KKIAYH4X.js.map} +0 -0
- /package/dist/{chunk-3RMKLXHX.js.map → chunk-KLDVG3SY.js.map} +0 -0
- /package/dist/{chunk-4CQAV7YB.js.map → chunk-O6TTQXTY.js.map} +0 -0
- /package/dist/{chunk-24VULZ7A.js.map → chunk-TKOGZDD6.js.map} +0 -0
- /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-
|
|
11
|
+
} from "./chunk-TKOGZDD6.js";
|
|
7
12
|
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
trialRun
|
|
11
|
-
} from "./chunk-M3WTHJHJ.js";
|
|
13
|
+
compileWorkflowStaticIrV1
|
|
14
|
+
} from "./chunk-CCKP5Z6F.js";
|
|
12
15
|
import {
|
|
13
16
|
normalizeKernelImplementationRef
|
|
14
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-EB4RGQO3.js";
|
|
15
18
|
import {
|
|
16
19
|
record
|
|
17
|
-
} from "./chunk-
|
|
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-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
141
|
-
added.sort(
|
|
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.
|
|
156
|
-
riskyChanged.sort((x, y) => x.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
|
-
|
|
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
|
|
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
|
|
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
|
|
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 (!
|
|
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(
|
|
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 (!
|
|
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 =
|
|
485
|
+
const instanceIdRaw = asNonEmptyString2(payload.instanceId) ?? "unknown";
|
|
369
486
|
const instanceId = mapInstanceId(instanceIdRaw);
|
|
370
487
|
const txnSeq = asNonNegInt(payload.txnSeq, 0);
|
|
371
|
-
const moduleId =
|
|
372
|
-
const kind =
|
|
373
|
-
const name =
|
|
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
|
|
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(
|
|
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
|
|
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 =
|
|
513
|
-
const a =
|
|
514
|
-
const keys = Array.from(/* @__PURE__ */ new Set([...Object.keys(b), ...Object.keys(a)])).sort(
|
|
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 (!
|
|
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.
|
|
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-
|
|
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-
|
|
4
|
+
} from "./chunk-6DACKW3D.js";
|
|
5
5
|
import {
|
|
6
6
|
Module
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-RQQW3IQC.js";
|
|
8
8
|
import {
|
|
9
9
|
attachLogicUnitMeta
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-Y4VRBIS6.js";
|
|
11
11
|
import {
|
|
12
12
|
mutateWithPatchPaths,
|
|
13
13
|
mutateWithoutPatches
|
|
14
|
-
} from "./chunk-
|
|
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-
|
|
20
|
+
} from "./chunk-KKIAYH4X.js";
|
|
21
21
|
import {
|
|
22
22
|
getBoundInternals,
|
|
23
23
|
setModuleTraitsProgram
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-KLDVG3SY.js";
|
|
25
25
|
import {
|
|
26
26
|
currentDiagnosticsLevel,
|
|
27
27
|
record
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-ZC7MSQ5U.js";
|
|
29
29
|
import {
|
|
30
30
|
fnv1a32,
|
|
31
31
|
stableStringify
|
|
32
|
-
} from "./chunk-
|
|
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
|
|
64
|
+
const type = compareString(a.originType, b.originType);
|
|
64
65
|
if (type !== 0) return type;
|
|
65
|
-
const id = a.originId
|
|
66
|
+
const id = compareString(a.originId, b.originId);
|
|
66
67
|
if (id !== 0) return id;
|
|
67
|
-
const kind = a.originIdKind
|
|
68
|
+
const kind = compareString(a.originIdKind, b.originIdKind);
|
|
68
69
|
if (kind !== 0) return kind;
|
|
69
|
-
const label = a.originLabel
|
|
70
|
+
const label = compareString(a.originLabel, b.originLabel);
|
|
70
71
|
if (label !== 0) return label;
|
|
71
|
-
return String(a.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
|
|
78
|
+
const oa = compareString(a.provenance.originId, b.provenance.originId);
|
|
78
79
|
if (oa !== 0) return oa;
|
|
79
|
-
return a.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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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-
|
|
398
|
+
//# sourceMappingURL=chunk-IROZNQAF.js.map
|