@logixjs/core 0.0.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/dist/{Action-mqVvtEHt.d.ts → Action-DYl88bwj.d.ts} +1 -1
- package/dist/{Action-BkRHy2vg.d.cts → Action-DkxsI_DK.d.cts} +1 -1
- package/dist/Action.cjs.map +1 -1
- package/dist/Action.d.cts +1 -1
- package/dist/Action.d.ts +1 -1
- package/dist/Action.js +2 -2
- package/dist/{Actions-AsQ07yTP.d.cts → Actions-Dicm7jdc.d.cts} +2 -2
- package/dist/{Actions-AsQ07yTP.d.ts → Actions-Dicm7jdc.d.ts} +2 -2
- package/dist/Actions.cjs.map +1 -1
- package/dist/Actions.d.cts +1 -1
- package/dist/Actions.d.ts +1 -1
- package/dist/Actions.js +1 -1
- package/dist/{Bound-BN1DQ_lM.d.ts → Bound-1OJLzVIS.d.ts} +2 -2
- package/dist/{Bound-BPIfH9SS.d.cts → Bound-BMLrtQ1V.d.cts} +2 -2
- package/dist/Bound.cjs +1737 -399
- package/dist/Bound.cjs.map +1 -1
- package/dist/Bound.d.cts +5 -5
- package/dist/Bound.d.ts +5 -5
- package/dist/Bound.js +19 -17
- package/dist/{Debug-B5q5Bkzx.d.ts → Debug-DKrWP5H1.d.ts} +40 -22
- package/dist/{Debug-Bq8Sqjcr.d.cts → Debug-hIT44XsY.d.cts} +40 -22
- package/dist/Debug.cjs +1348 -318
- package/dist/Debug.cjs.map +1 -1
- package/dist/Debug.d.cts +12 -11
- package/dist/Debug.d.ts +12 -11
- package/dist/Debug.js +20 -11
- package/dist/EffectOp.cjs +15 -6
- package/dist/EffectOp.cjs.map +1 -1
- package/dist/EffectOp.js +3 -3
- package/dist/Env.cjs +772 -6
- package/dist/Env.cjs.map +1 -1
- package/dist/Env.js +5 -2
- package/dist/ExternalStore-DqJKKRJ4.d.ts +61 -0
- package/dist/ExternalStore-JC-gAgEI.d.cts +61 -0
- package/dist/ExternalStore.cjs +774 -0
- package/dist/ExternalStore.cjs.map +1 -0
- package/dist/ExternalStore.d.cts +8 -0
- package/dist/ExternalStore.d.ts +8 -0
- package/dist/ExternalStore.js +19 -0
- package/dist/ExternalStore.js.map +1 -0
- package/dist/{Flow-BhpjE22E.d.ts → Flow-CZmXRDqp.d.cts} +13 -4
- package/dist/{Flow-1fZT8MpX.d.cts → Flow-DIVDxz7R.d.ts} +13 -4
- package/dist/Flow.cjs +765 -148
- package/dist/Flow.cjs.map +1 -1
- package/dist/Flow.d.cts +6 -6
- package/dist/Flow.d.ts +6 -6
- package/dist/Flow.js +9 -8
- package/dist/{Handle-D_cLW1Z3.d.ts → Handle-Bo6cAFut.d.ts} +1 -1
- package/dist/{Handle-D8D1zPb_.d.cts → Handle-CfDvSqN7.d.cts} +1 -1
- package/dist/Handle.d.cts +5 -5
- package/dist/Handle.d.ts +5 -5
- package/dist/{Kernel-8kC-jOda.d.cts → Kernel-CuXBF9S_.d.cts} +16 -7
- package/dist/{Kernel-CnGE1Fyk.d.ts → Kernel-D9guNwRL.d.ts} +16 -7
- package/dist/Kernel.cjs +814 -26
- package/dist/Kernel.cjs.map +1 -1
- package/dist/Kernel.d.cts +13 -12
- package/dist/Kernel.d.ts +13 -12
- package/dist/Kernel.js +7 -4
- package/dist/{Link-Db7975nU.d.ts → Link-CUM0yUCH.d.ts} +10 -3
- package/dist/{Link-fX8x1eCK.d.cts → Link-NAfR6uGD.d.cts} +10 -3
- package/dist/Link.cjs +1294 -121
- package/dist/Link.cjs.map +1 -1
- package/dist/Link.d.cts +5 -5
- package/dist/Link.d.ts +5 -5
- package/dist/Link.js +37 -29
- package/dist/{Logic-DRh4sDZj.d.cts → Logic-09VQpIj3.d.cts} +7 -4
- package/dist/{Logic-BRjEMr-W.d.ts → Logic-DKg7ghGy.d.ts} +7 -4
- package/dist/Logic.cjs +2 -1
- package/dist/Logic.cjs.map +1 -1
- package/dist/Logic.d.cts +5 -5
- package/dist/Logic.d.ts +5 -5
- package/dist/Logic.js +1 -1
- package/dist/{MatchBuilder-CJk5oCkR.d.cts → MatchBuilder-CsW5jgrL.d.ts} +1 -1
- package/dist/{MatchBuilder-0QOc-nlU.d.ts → MatchBuilder-Dksk07F4.d.cts} +1 -1
- package/dist/MatchBuilder.cjs +2 -2
- package/dist/MatchBuilder.cjs.map +1 -1
- package/dist/MatchBuilder.d.cts +6 -6
- package/dist/MatchBuilder.d.ts +6 -6
- package/dist/MatchBuilder.js +2 -2
- package/dist/Middleware-D8tUDLv_.d.cts +100 -0
- package/dist/Middleware-DS7CbTTN.d.ts +100 -0
- package/dist/Middleware.cjs +678 -58
- 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 +15 -12
- package/dist/{Module-DnzluX2J.d.ts → Module-B_Cntyms.d.ts} +54 -25
- package/dist/{Module-B_0xRDMR.d.cts → Module-CmNOVXzf.d.cts} +54 -25
- package/dist/Module.cjs +9331 -3317
- package/dist/Module.cjs.map +1 -1
- package/dist/Module.d.cts +7 -6
- package/dist/Module.d.ts +7 -6
- package/dist/Module.js +39 -31
- package/dist/ModuleTag-CGho_InD.d.ts +113 -0
- package/dist/ModuleTag-CITb8L_G.d.cts +113 -0
- package/dist/ModuleTag.cjs +7248 -2847
- package/dist/ModuleTag.cjs.map +1 -1
- package/dist/ModuleTag.d.cts +6 -6
- package/dist/ModuleTag.d.ts +6 -6
- package/dist/ModuleTag.js +35 -29
- package/dist/Observability-Bdhnx2Dv.d.ts +385 -0
- package/dist/Observability-DXGAFBIT.d.cts +385 -0
- package/dist/Observability.cjs +5093 -1556
- package/dist/Observability.cjs.map +1 -1
- package/dist/Observability.d.cts +6 -7
- package/dist/Observability.d.ts +6 -7
- package/dist/Observability.js +28 -23
- package/dist/{Platform-CHX8o-U4.d.ts → Platform-B4s8tg6C.d.cts} +4 -5
- package/dist/{Platform-C49Pv956.d.cts → Platform-BV_0MW7g.d.cts} +5 -2
- package/dist/{Platform-C49Pv956.d.ts → Platform-BV_0MW7g.d.ts} +5 -2
- package/dist/{Platform-CVlv0xLQ.d.cts → Platform-W0Mefy_e.d.ts} +4 -5
- package/dist/Platform.cjs +2 -1
- package/dist/Platform.cjs.map +1 -1
- package/dist/Platform.d.cts +2 -3
- package/dist/Platform.d.ts +2 -3
- package/dist/Platform.js +2 -2
- package/dist/{Process-CM9xbMdP.d.ts → Process-CO8G7HO9.d.cts} +30 -5
- package/dist/{Process-mL8fHDSB.d.cts → Process-Cyf6VNDR.d.ts} +30 -5
- package/dist/Process.cjs +1288 -120
- package/dist/Process.cjs.map +1 -1
- package/dist/Process.d.cts +6 -6
- package/dist/Process.d.ts +6 -6
- package/dist/Process.js +34 -26
- package/dist/ReadQuery-C_or5nLC.d.ts +128 -0
- package/dist/ReadQuery-DXLzCE0E.d.cts +614 -0
- package/dist/ReadQuery-DXLzCE0E.d.ts +614 -0
- package/dist/ReadQuery-Yve1lmUo.d.cts +128 -0
- package/dist/ReadQuery.cjs +290 -5
- package/dist/ReadQuery.cjs.map +1 -1
- package/dist/ReadQuery.d.cts +3 -2
- package/dist/ReadQuery.d.ts +3 -2
- package/dist/ReadQuery.js +23 -5
- package/dist/{Reflection-CQnKwPXj.d.ts → Reflection-B2Xi1e4Q.d.ts} +89 -7
- package/dist/{Reflection-Kabo1mlU.d.cts → Reflection-DNB4V4_e.d.cts} +89 -7
- package/dist/Reflection.cjs +3227 -1617
- package/dist/Reflection.cjs.map +1 -1
- package/dist/Reflection.d.cts +17 -15
- package/dist/Reflection.d.ts +17 -15
- package/dist/Reflection.js +33 -25
- package/dist/{Resource-Dy1xD_DG.d.cts → Resource-pKvQQ4x5.d.cts} +3 -3
- package/dist/{Resource-Dy1xD_DG.d.ts → Resource-pKvQQ4x5.d.ts} +3 -3
- package/dist/Resource.cjs +781 -15
- package/dist/Resource.cjs.map +1 -1
- package/dist/Resource.d.cts +1 -1
- package/dist/Resource.d.ts +1 -1
- package/dist/Resource.js +6 -3
- package/dist/{Root-7ADUMk4t.d.cts → Root-CCVuFHB6.d.cts} +3 -3
- package/dist/{Root-7ADUMk4t.d.ts → Root-CCVuFHB6.d.ts} +3 -3
- package/dist/Root.cjs +786 -20
- package/dist/Root.cjs.map +1 -1
- package/dist/Root.d.cts +2 -2
- package/dist/Root.d.ts +2 -2
- package/dist/Root.js +7 -3
- package/dist/{Runtime-CtyzZG4i.d.ts → Runtime-CRmvwK4I.d.ts} +70 -14
- package/dist/{Runtime-B-aL-f29.d.cts → Runtime-C_wJM9mN.d.cts} +70 -14
- package/dist/Runtime.cjs +4942 -1601
- package/dist/Runtime.cjs.map +1 -1
- package/dist/Runtime.d.cts +17 -15
- package/dist/Runtime.d.ts +17 -15
- package/dist/Runtime.js +44 -32
- package/dist/{ScopeRegistry-D1owDNSm.d.cts → ScopeRegistry-BhYzqWri.d.cts} +6 -6
- package/dist/{ScopeRegistry-D1owDNSm.d.ts → ScopeRegistry-BhYzqWri.d.ts} +6 -6
- package/dist/ScopeRegistry.cjs +776 -10
- package/dist/ScopeRegistry.cjs.map +1 -1
- package/dist/ScopeRegistry.d.cts +1 -1
- package/dist/ScopeRegistry.d.ts +1 -1
- package/dist/ScopeRegistry.js +6 -3
- package/dist/{State-CU50R26M.d.cts → State-rNFsFPTl.d.cts} +2 -2
- package/dist/{State-CU50R26M.d.ts → State-rNFsFPTl.d.ts} +2 -2
- package/dist/State.cjs.map +1 -1
- package/dist/State.d.cts +1 -1
- package/dist/State.d.ts +1 -1
- package/dist/State.js +1 -1
- package/dist/{StateTrait-BGsZghTz.d.ts → StateTrait-CijdwNb6.d.ts} +25 -8
- package/dist/{StateTrait-OWhbj12c.d.cts → StateTrait-Dltto6PU.d.cts} +25 -8
- package/dist/StateTrait.cjs +1890 -528
- package/dist/StateTrait.cjs.map +1 -1
- package/dist/StateTrait.d.cts +9 -7
- package/dist/StateTrait.d.ts +9 -7
- package/dist/StateTrait.js +18 -14
- package/dist/{TraitLifecycle-CwV5WPFX.d.cts → TraitLifecycle-BKzDqzLu.d.cts} +2 -2
- package/dist/{TraitLifecycle-LdIWmKlg.d.ts → TraitLifecycle-Cvo94uDB.d.ts} +2 -2
- package/dist/TraitLifecycle.cjs +630 -67
- package/dist/TraitLifecycle.cjs.map +1 -1
- package/dist/TraitLifecycle.d.cts +6 -6
- package/dist/TraitLifecycle.d.ts +6 -6
- package/dist/TraitLifecycle.js +8 -7
- package/dist/Workflow-C_OWr4dV.d.ts +415 -0
- package/dist/Workflow-DmydkHO8.d.cts +415 -0
- package/dist/Workflow.cjs +3150 -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 +58 -0
- package/dist/Workflow.js.map +1 -0
- package/dist/{action-DiMDD_0v.d.cts → action-BQxjPFEw.d.cts} +5 -5
- package/dist/{action-DiMDD_0v.d.ts → action-BQxjPFEw.d.ts} +5 -5
- package/dist/chunk-2XRLXDWR.js +276 -0
- package/dist/chunk-2XRLXDWR.js.map +1 -0
- package/dist/chunk-3L6QGFMM.js +701 -0
- package/dist/chunk-3L6QGFMM.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-3IYZ5IGG.js → chunk-5WKUGEBY.js} +2 -2
- package/dist/{chunk-3RMKLXHX.js → chunk-63ZQ5RIN.js} +2 -2
- package/dist/{chunk-M3WTHJHJ.js → chunk-67DIEA53.js} +385 -148
- package/dist/chunk-67DIEA53.js.map +1 -0
- package/dist/{chunk-YS3AZQ2G.js → chunk-6HFAW2MH.js} +1 -1
- package/dist/chunk-6HFAW2MH.js.map +1 -0
- package/dist/{chunk-EY4NZKDR.js → chunk-6Y2TKCNY.js} +2 -2
- package/dist/{chunk-76WT3HOR.js → chunk-6YZOXFPQ.js} +25 -24
- package/dist/chunk-6YZOXFPQ.js.map +1 -0
- package/dist/{chunk-G5ZBFPNU.js → chunk-A2RQOJC7.js} +2 -2
- package/dist/{chunk-AUIR5O6W.js → chunk-AFSB6NKM.js} +13 -19
- package/dist/chunk-AFSB6NKM.js.map +1 -0
- package/dist/{chunk-JCXGZRMU.js → chunk-AO4JEOKD.js} +22 -23
- package/dist/chunk-AO4JEOKD.js.map +1 -0
- package/dist/{chunk-TAAPQVZN.js → chunk-AYELIQXR.js} +2 -2
- package/dist/{chunk-QMM6O4CD.js → chunk-BLHZW7DG.js} +15 -3
- package/dist/{chunk-QMM6O4CD.js.map → chunk-BLHZW7DG.js.map} +1 -1
- package/dist/{chunk-TQOBJYDP.js → chunk-CD4N74YC.js} +1 -1
- package/dist/chunk-CD4N74YC.js.map +1 -0
- package/dist/{chunk-ANLBCBDC.js → chunk-CGE2HBTH.js} +11 -11
- package/dist/chunk-CGE2HBTH.js.map +1 -0
- package/dist/{chunk-OFADUJWJ.js → chunk-CYYSQMLO.js} +5 -5
- package/dist/chunk-CYYSQMLO.js.map +1 -0
- package/dist/{chunk-66ALHVEX.js → chunk-EB46EYI7.js} +3 -3
- package/dist/{chunk-NZJKFF45.js → chunk-EKCDHWRK.js} +4 -4
- package/dist/chunk-EKCDHWRK.js.map +1 -0
- package/dist/{chunk-BABLDP24.js → chunk-EPQFNJU3.js} +152 -7
- package/dist/chunk-EPQFNJU3.js.map +1 -0
- package/dist/{chunk-OGWBVHB3.js → chunk-ESR6HGOY.js} +73 -14
- package/dist/chunk-ESR6HGOY.js.map +1 -0
- package/dist/{chunk-NBD3KUOZ.js → chunk-F6RP62H3.js} +150 -98
- package/dist/chunk-F6RP62H3.js.map +1 -0
- package/dist/chunk-FBYW3QDI.js +252 -0
- package/dist/chunk-FBYW3QDI.js.map +1 -0
- package/dist/{chunk-IPF7E66P.js → chunk-FYAODKVP.js} +2 -2
- package/dist/chunk-GNEN7NKO.js +908 -0
- package/dist/chunk-GNEN7NKO.js.map +1 -0
- package/dist/chunk-GWSM4KLB.js +763 -0
- package/dist/chunk-GWSM4KLB.js.map +1 -0
- package/dist/{chunk-4SO6JMZL.js → chunk-HDMXCUZL.js} +1 -1
- package/dist/chunk-HDMXCUZL.js.map +1 -0
- package/dist/{chunk-ZFY7U2FR.js → chunk-HJM5Y5NU.js} +43 -3
- package/dist/chunk-HJM5Y5NU.js.map +1 -0
- package/dist/{chunk-ZGDVUPTM.js → chunk-IOZ3VKPK.js} +129 -68
- package/dist/chunk-IOZ3VKPK.js.map +1 -0
- package/dist/{chunk-PYOE4VSI.js → chunk-IVXSVHO4.js} +303 -247
- package/dist/chunk-IVXSVHO4.js.map +1 -0
- package/dist/chunk-J3CWXIPV.js +242 -0
- package/dist/chunk-J3CWXIPV.js.map +1 -0
- package/dist/chunk-K6JQW266.js +42 -0
- package/dist/chunk-K6JQW266.js.map +1 -0
- package/dist/chunk-KMZYQF6Q.js +202 -0
- package/dist/chunk-KMZYQF6Q.js.map +1 -0
- package/dist/{chunk-JWOYLO27.js → chunk-LPPZDFTD.js} +22 -12
- package/dist/chunk-LPPZDFTD.js.map +1 -0
- package/dist/{chunk-PAYXCY6A.js → chunk-MYB2B5WX.js} +997 -576
- package/dist/chunk-MYB2B5WX.js.map +1 -0
- package/dist/chunk-MYKNINNN.js +228 -0
- package/dist/chunk-MYKNINNN.js.map +1 -0
- package/dist/chunk-NSQIRMVF.js +27 -0
- package/dist/{chunk-QCHIQWAJ.js.map → chunk-NSQIRMVF.js.map} +1 -1
- package/dist/chunk-NUDBM4MM.js +30 -0
- package/dist/chunk-NUDBM4MM.js.map +1 -0
- package/dist/chunk-NZMWWDAY.js +23 -0
- package/dist/chunk-NZMWWDAY.js.map +1 -0
- package/dist/{chunk-RNFE3ML2.js → chunk-OCUV2Y25.js} +4 -3
- package/dist/chunk-OCUV2Y25.js.map +1 -0
- package/dist/chunk-P4ZJOQA7.js +271 -0
- package/dist/chunk-P4ZJOQA7.js.map +1 -0
- package/dist/chunk-P6C5EZ3D.js +342 -0
- package/dist/chunk-P6C5EZ3D.js.map +1 -0
- package/dist/{chunk-CW6T36TN.js → chunk-PBD7BJUN.js} +62 -4
- package/dist/chunk-PBD7BJUN.js.map +1 -0
- package/dist/chunk-PBIUCQY3.js +696 -0
- package/dist/chunk-PBIUCQY3.js.map +1 -0
- package/dist/chunk-PD6YECQH.js +845 -0
- package/dist/chunk-PD6YECQH.js.map +1 -0
- package/dist/{chunk-M7IYCTJV.js → chunk-R4LFQGP3.js} +2 -2
- package/dist/chunk-RHJIGDUE.js +21 -0
- package/dist/chunk-RHJIGDUE.js.map +1 -0
- package/dist/{chunk-KP7MUZNX.js → chunk-RLXO27MW.js} +30 -8
- package/dist/chunk-RLXO27MW.js.map +1 -0
- package/dist/{chunk-DFNM3WX2.js → chunk-S44BEV4B.js} +168 -45
- package/dist/chunk-S44BEV4B.js.map +1 -0
- package/dist/chunk-S4S5N4BJ.js +1461 -0
- package/dist/chunk-S4S5N4BJ.js.map +1 -0
- package/dist/{chunk-BZ2SHDN2.js → chunk-SGTRAXXX.js} +3 -3
- package/dist/chunk-SGTRAXXX.js.map +1 -0
- package/dist/{chunk-M2RGJPXX.js → chunk-SJAE5PB5.js} +3 -3
- package/dist/{chunk-JGIWG6SR.js → chunk-SNPNHU3H.js} +3937 -1776
- package/dist/chunk-SNPNHU3H.js.map +1 -0
- package/dist/{chunk-IHVBV5C2.js → chunk-SOOBFXRR.js} +94 -71
- package/dist/chunk-SOOBFXRR.js.map +1 -0
- package/dist/{chunk-ZDTRWK5F.js → chunk-TAHFWKS6.js} +2 -2
- package/dist/chunk-UEFFTVPY.js +9 -0
- package/dist/chunk-UEFFTVPY.js.map +1 -0
- package/dist/{chunk-24VULZ7A.js → chunk-UR5BXLBP.js} +3 -3
- package/dist/chunk-UR5BXLBP.js.map +1 -0
- package/dist/{chunk-DMBALCE2.js → chunk-V2SBGVDO.js} +471 -186
- package/dist/chunk-V2SBGVDO.js.map +1 -0
- package/dist/chunk-VJLWD47W.js +23 -0
- package/dist/chunk-VJLWD47W.js.map +1 -0
- package/dist/{chunk-4CQAV7YB.js → chunk-W647DX5Z.js} +2 -2
- package/dist/{chunk-THATMZXD.js → chunk-WFIIU3YZ.js} +2 -2
- package/dist/{chunk-THATMZXD.js.map → chunk-WFIIU3YZ.js.map} +1 -1
- package/dist/chunk-YZDJMAKL.js +82 -0
- package/dist/chunk-YZDJMAKL.js.map +1 -0
- package/dist/{chunk-3TMODYZV.js → chunk-Z5XH6VHY.js} +5 -5
- package/dist/chunk-Z5XH6VHY.js.map +1 -0
- package/dist/{chunk-BE3HW4FY.js → chunk-ZBBMZMA6.js} +377 -170
- package/dist/chunk-ZBBMZMA6.js.map +1 -0
- package/dist/index.cjs +21224 -11714
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +195 -49
- package/dist/index.d.ts +195 -49
- package/dist/index.js +150 -74
- package/dist/index.js.map +1 -1
- package/dist/{ir-BMP7yxJJ.d.cts → ir-BSosEwc8.d.cts} +1 -1
- package/dist/{ir-DUOz6H-5.d.ts → ir-D-uqwL_4.d.ts} +1 -1
- package/dist/{module-B8CBqIZ_.d.cts → module-Ds4tarcI.d.cts} +230 -140
- package/dist/{module-k7m3txak.d.ts → module-Zd1Gn-Nj.d.ts} +230 -140
- package/package.json +20 -4
- package/dist/ModuleTag-C8FHY_sY.d.ts +0 -93
- package/dist/ModuleTag-EGbgBMpZ.d.cts +0 -93
- package/dist/Observability-COqEvp2C.d.cts +0 -713
- package/dist/Observability-cY4kLn0S.d.ts +0 -713
- package/dist/ReadQuery-BlMwhe-F.d.ts +0 -30
- package/dist/ReadQuery-CL5XlXts.d.cts +0 -30
- package/dist/ReadQuery-SinbStGF.d.cts +0 -38
- package/dist/ReadQuery-SinbStGF.d.ts +0 -38
- package/dist/chunk-24VULZ7A.js.map +0 -1
- package/dist/chunk-3QMIVH35.js +0 -43
- package/dist/chunk-3QMIVH35.js.map +0 -1
- package/dist/chunk-3TMODYZV.js.map +0 -1
- package/dist/chunk-4SO6JMZL.js.map +0 -1
- package/dist/chunk-76WT3HOR.js.map +0 -1
- package/dist/chunk-ANLBCBDC.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-BZ2SHDN2.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 +0 -406
- 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-KL5ACTCT.js +0 -8
- package/dist/chunk-KL5ACTCT.js.map +0 -1
- package/dist/chunk-KP7MUZNX.js.map +0 -1
- package/dist/chunk-M3BFQ7HK.js +0 -13
- package/dist/chunk-M3BFQ7HK.js.map +0 -1
- package/dist/chunk-M3WTHJHJ.js.map +0 -1
- package/dist/chunk-NBD3KUOZ.js.map +0 -1
- package/dist/chunk-NQZ2OSGR.js +0 -151
- package/dist/chunk-NQZ2OSGR.js.map +0 -1
- package/dist/chunk-NZJKFF45.js.map +0 -1
- package/dist/chunk-OFADUJWJ.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-RNFE3ML2.js.map +0 -1
- package/dist/chunk-TKZ7MEIA.js +0 -27
- package/dist/chunk-TKZ7MEIA.js.map +0 -1
- package/dist/chunk-TQOBJYDP.js.map +0 -1
- 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-YS3AZQ2G.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-ZGDVUPTM.js.map +0 -1
- package/dist/protocol-g_1897M2.d.cts +0 -127
- package/dist/protocol-g_1897M2.d.ts +0 -127
- /package/dist/{chunk-3IYZ5IGG.js.map → chunk-5WKUGEBY.js.map} +0 -0
- /package/dist/{chunk-3RMKLXHX.js.map → chunk-63ZQ5RIN.js.map} +0 -0
- /package/dist/{chunk-EY4NZKDR.js.map → chunk-6Y2TKCNY.js.map} +0 -0
- /package/dist/{chunk-G5ZBFPNU.js.map → chunk-A2RQOJC7.js.map} +0 -0
- /package/dist/{chunk-TAAPQVZN.js.map → chunk-AYELIQXR.js.map} +0 -0
- /package/dist/{chunk-66ALHVEX.js.map → chunk-EB46EYI7.js.map} +0 -0
- /package/dist/{chunk-IPF7E66P.js.map → chunk-FYAODKVP.js.map} +0 -0
- /package/dist/{chunk-M7IYCTJV.js.map → chunk-R4LFQGP3.js.map} +0 -0
- /package/dist/{chunk-M2RGJPXX.js.map → chunk-SJAE5PB5.js.map} +0 -0
- /package/dist/{chunk-ZDTRWK5F.js.map → chunk-TAHFWKS6.js.map} +0 -0
- /package/dist/{chunk-4CQAV7YB.js.map → chunk-W647DX5Z.js.map} +0 -0
|
@@ -1,27 +1,32 @@
|
|
|
1
|
+
import {
|
|
2
|
+
exportStaticIr,
|
|
3
|
+
extractManifest,
|
|
4
|
+
trialRun
|
|
5
|
+
} from "./chunk-67DIEA53.js";
|
|
1
6
|
import {
|
|
2
7
|
KernelContractMetaAllowlist,
|
|
3
8
|
evaluateFullCutoverGate,
|
|
9
|
+
fullCutoverGateModeLayer,
|
|
4
10
|
getKernelImplementationRef,
|
|
5
11
|
getRuntimeServicesEvidence
|
|
6
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-UR5BXLBP.js";
|
|
7
13
|
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
trialRun
|
|
11
|
-
} from "./chunk-M3WTHJHJ.js";
|
|
14
|
+
compileWorkflowStaticIrV1
|
|
15
|
+
} from "./chunk-3L6QGFMM.js";
|
|
12
16
|
import {
|
|
17
|
+
FullCutoverGateModeTag,
|
|
13
18
|
normalizeKernelImplementationRef
|
|
14
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-IOZ3VKPK.js";
|
|
15
20
|
import {
|
|
16
21
|
record
|
|
17
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-V2SBGVDO.js";
|
|
23
|
+
import {
|
|
24
|
+
EffectOpMiddlewareTag
|
|
25
|
+
} from "./chunk-LPPZDFTD.js";
|
|
18
26
|
import {
|
|
19
27
|
fnv1a32,
|
|
20
28
|
stableStringify
|
|
21
|
-
} from "./chunk-
|
|
22
|
-
import {
|
|
23
|
-
EffectOpMiddlewareTag
|
|
24
|
-
} from "./chunk-JWOYLO27.js";
|
|
29
|
+
} from "./chunk-4MZ7BT3R.js";
|
|
25
30
|
import {
|
|
26
31
|
__export
|
|
27
32
|
} from "./chunk-PZ5AY32C.js";
|
|
@@ -30,12 +35,126 @@ import {
|
|
|
30
35
|
var Reflection_exports = {};
|
|
31
36
|
__export(Reflection_exports, {
|
|
32
37
|
diffManifest: () => diffManifest2,
|
|
38
|
+
exportControlSurface: () => exportControlSurface2,
|
|
33
39
|
exportStaticIr: () => exportStaticIr2,
|
|
34
40
|
extractManifest: () => extractManifest2,
|
|
35
41
|
verifyFullCutoverGate: () => verifyFullCutoverGate,
|
|
36
42
|
verifyKernelContract: () => verifyKernelContract2
|
|
37
43
|
});
|
|
38
|
-
import {
|
|
44
|
+
import { Effect as Effect2, Exit as Exit2, Layer as Layer2, ServiceMap as ServiceMap2 } from "effect";
|
|
45
|
+
|
|
46
|
+
// src/internal/observability/controlSurfaceManifest.ts
|
|
47
|
+
var makeDigest = (value) => `control_surface_v1:${fnv1a32(stableStringify(value))}`;
|
|
48
|
+
var exportEffectsIndexDigest = (entries) => `effects_index_v1:${fnv1a32(stableStringify(entries))}`;
|
|
49
|
+
var exportWorkflowEffectsIndex = (args) => {
|
|
50
|
+
const moduleId = args.moduleId;
|
|
51
|
+
return Array.from(args.workflowSurface).sort((a, b) => a.programId < b.programId ? -1 : a.programId > b.programId ? 1 : 0).map((ir) => {
|
|
52
|
+
const localId = ir.programId.startsWith(`${moduleId}.`) ? ir.programId.slice(moduleId.length + 1) : ir.programId;
|
|
53
|
+
const triggerNode = ir.nodes.find((n) => n.kind === "trigger");
|
|
54
|
+
const trigger = triggerNode?.kind === "trigger" && triggerNode.trigger.kind === "action" ? { kind: "action", action: { moduleId, actionTag: triggerNode.trigger.actionTag } } : {
|
|
55
|
+
kind: "lifecycle",
|
|
56
|
+
phase: triggerNode?.kind === "trigger" && triggerNode.trigger.kind === "lifecycle" ? triggerNode.trigger.phase : "onStart"
|
|
57
|
+
};
|
|
58
|
+
return {
|
|
59
|
+
kind: "workflow",
|
|
60
|
+
effectId: `${moduleId}::workflow:${localId}`,
|
|
61
|
+
trigger,
|
|
62
|
+
programId: ir.programId,
|
|
63
|
+
programDigest: ir.digest
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
var exportControlSurfaceManifest = (input) => {
|
|
68
|
+
const modules = Array.from(input.modules).sort((a, b) => a.moduleId < b.moduleId ? -1 : a.moduleId > b.moduleId ? 1 : 0);
|
|
69
|
+
const meta = input.meta;
|
|
70
|
+
const base = {
|
|
71
|
+
version: 1,
|
|
72
|
+
modules,
|
|
73
|
+
...meta ? { meta } : null
|
|
74
|
+
};
|
|
75
|
+
return {
|
|
76
|
+
...base,
|
|
77
|
+
digest: makeDigest(base)
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
// src/internal/observability/workflowSurface.ts
|
|
82
|
+
var makeDigest2 = (value) => `workflow_surface_v1:${fnv1a32(stableStringify(value))}`;
|
|
83
|
+
var exportWorkflowSurface = (programs) => {
|
|
84
|
+
const sorted = Array.from(programs).sort(
|
|
85
|
+
(a, b) => a.programId < b.programId ? -1 : a.programId > b.programId ? 1 : 0
|
|
86
|
+
);
|
|
87
|
+
const base = { version: 1, programs: sorted };
|
|
88
|
+
return { ...base, digest: makeDigest2(base) };
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
// src/internal/reflection/controlSurface.ts
|
|
92
|
+
var MODULE_INTERNAL = /* @__PURE__ */ Symbol.for("logix.module.internal");
|
|
93
|
+
var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
94
|
+
var isObjectLike = (value) => typeof value === "object" && value !== null || typeof value === "function";
|
|
95
|
+
var asNonEmptyString = (value) => typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
|
|
96
|
+
var resolveTagId = (tag) => {
|
|
97
|
+
if (!isObjectLike(tag)) return void 0;
|
|
98
|
+
return asNonEmptyString(tag.id);
|
|
99
|
+
};
|
|
100
|
+
var resolveModuleIdOrThrow = (module) => {
|
|
101
|
+
if (isRecord(module) && module._tag === "ModuleImpl") {
|
|
102
|
+
const id = resolveTagId(module.module);
|
|
103
|
+
if (id) return id;
|
|
104
|
+
throw new Error(
|
|
105
|
+
"[ControlSurfaceManifest] Failed to resolve moduleId from ModuleImpl.module.id.\nFix: pass a configured Module/ModuleImpl (has .id/.tag.id/.module.id), not a read-only handle."
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
if (isRecord(module)) {
|
|
109
|
+
const id = asNonEmptyString(module.id);
|
|
110
|
+
if (id) return id;
|
|
111
|
+
const tagId = resolveTagId(module.tag);
|
|
112
|
+
if (tagId) return tagId;
|
|
113
|
+
}
|
|
114
|
+
throw new Error(
|
|
115
|
+
"[ControlSurfaceManifest] Failed to resolve moduleId.\nFix: pass a configured Module/ModuleImpl (has .id/.tag.id/.module.id), not a read-only handle."
|
|
116
|
+
);
|
|
117
|
+
};
|
|
118
|
+
var resolveWorkflowDefs = (module) => {
|
|
119
|
+
if (!isObjectLike(module)) return [];
|
|
120
|
+
const internal = module[MODULE_INTERNAL];
|
|
121
|
+
const defs = isRecord(internal) ? internal.workflowDefs : void 0;
|
|
122
|
+
return Array.isArray(defs) ? defs : [];
|
|
123
|
+
};
|
|
124
|
+
var exportControlSurface = (modules, options) => {
|
|
125
|
+
const entries = [];
|
|
126
|
+
const workflowSurfaces = [];
|
|
127
|
+
const seen = /* @__PURE__ */ new Set();
|
|
128
|
+
for (const module of modules) {
|
|
129
|
+
const moduleId = resolveModuleIdOrThrow(module);
|
|
130
|
+
if (seen.has(moduleId)) {
|
|
131
|
+
throw new Error(`[ControlSurfaceManifest] Duplicate moduleId "${moduleId}".`);
|
|
132
|
+
}
|
|
133
|
+
seen.add(moduleId);
|
|
134
|
+
const defs = resolveWorkflowDefs(module);
|
|
135
|
+
if (defs.length === 0) {
|
|
136
|
+
entries.push({ moduleId, effectsIndex: [] });
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
const workflowIrs = defs.map((def) => compileWorkflowStaticIrV1({ moduleId, def }));
|
|
140
|
+
const surface = exportWorkflowSurface(workflowIrs);
|
|
141
|
+
workflowSurfaces.push({ moduleId, surface });
|
|
142
|
+
const effectsIndex = exportWorkflowEffectsIndex({ moduleId, workflowSurface: surface.programs });
|
|
143
|
+
const effectsIndexDigest = effectsIndex.length > 0 ? exportEffectsIndexDigest(effectsIndex) : void 0;
|
|
144
|
+
entries.push({
|
|
145
|
+
moduleId,
|
|
146
|
+
workflowSurface: { digest: surface.digest },
|
|
147
|
+
effectsIndex,
|
|
148
|
+
...effectsIndexDigest ? { effectsIndexDigest } : null
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
const manifest = exportControlSurfaceManifest({
|
|
152
|
+
version: 1,
|
|
153
|
+
modules: entries,
|
|
154
|
+
...options?.meta ? { meta: options.meta } : null
|
|
155
|
+
});
|
|
156
|
+
return { manifest, workflowSurfaces };
|
|
157
|
+
};
|
|
39
158
|
|
|
40
159
|
// src/internal/reflection/diff.ts
|
|
41
160
|
var SEVERITY_RANK = {
|
|
@@ -45,7 +164,7 @@ var SEVERITY_RANK = {
|
|
|
45
164
|
};
|
|
46
165
|
var uniqSorted = (input) => {
|
|
47
166
|
const out = Array.from(new Set(input.filter((x) => typeof x === "string" && x.length > 0)));
|
|
48
|
-
out.sort(
|
|
167
|
+
out.sort();
|
|
49
168
|
return out;
|
|
50
169
|
};
|
|
51
170
|
var diffStringKeys = (before, after) => {
|
|
@@ -55,12 +174,12 @@ var diffStringKeys = (before, after) => {
|
|
|
55
174
|
for (const k of beforeSet) {
|
|
56
175
|
if (!afterSet.has(k)) removed.push(k);
|
|
57
176
|
}
|
|
58
|
-
removed.sort(
|
|
177
|
+
removed.sort();
|
|
59
178
|
const added = [];
|
|
60
179
|
for (const k of afterSet) {
|
|
61
180
|
if (!beforeSet.has(k)) added.push(k);
|
|
62
181
|
}
|
|
63
|
-
added.sort(
|
|
182
|
+
added.sort();
|
|
64
183
|
return { removed, added };
|
|
65
184
|
};
|
|
66
185
|
var eqJsonValue = (a, b) => stableStringify(a) === stableStringify(b);
|
|
@@ -137,8 +256,8 @@ var diffManifest = (before, after, options) => {
|
|
|
137
256
|
for (const id of afterById.keys()) {
|
|
138
257
|
if (!beforeById.has(id)) added.push(id);
|
|
139
258
|
}
|
|
140
|
-
removed.sort(
|
|
141
|
-
added.sort(
|
|
259
|
+
removed.sort();
|
|
260
|
+
added.sort();
|
|
142
261
|
for (const id of beforeById.keys()) {
|
|
143
262
|
const b = beforeById.get(id);
|
|
144
263
|
const a = afterById.get(id);
|
|
@@ -152,8 +271,8 @@ var diffManifest = (before, after, options) => {
|
|
|
152
271
|
if (b.derived !== a.derived) fields.push("derived");
|
|
153
272
|
if (fields.length > 0) riskyChanged.push({ id, fields });
|
|
154
273
|
}
|
|
155
|
-
kindChanged.sort((x, y) => x.id.
|
|
156
|
-
riskyChanged.sort((x, y) => x.id.
|
|
274
|
+
kindChanged.sort((x, y) => x.id < y.id ? -1 : x.id > y.id ? 1 : 0);
|
|
275
|
+
riskyChanged.sort((x, y) => x.id < y.id ? -1 : x.id > y.id ? 1 : 0);
|
|
157
276
|
if (removed.length > 0) {
|
|
158
277
|
changes.push({
|
|
159
278
|
severity: "BREAKING",
|
|
@@ -257,11 +376,11 @@ var diffManifest = (before, after, options) => {
|
|
|
257
376
|
const ra = SEVERITY_RANK[a.severity];
|
|
258
377
|
const rb = SEVERITY_RANK[b.severity];
|
|
259
378
|
if (ra !== rb) return ra - rb;
|
|
260
|
-
|
|
261
|
-
if (ca !== 0) return ca;
|
|
379
|
+
if (a.code !== b.code) return a.code < b.code ? -1 : 1;
|
|
262
380
|
const pa = a.pointer ?? "";
|
|
263
381
|
const pb = b.pointer ?? "";
|
|
264
|
-
return pa
|
|
382
|
+
if (pa !== pb) return pa < pb ? -1 : 1;
|
|
383
|
+
return 0;
|
|
265
384
|
});
|
|
266
385
|
const summary = {
|
|
267
386
|
breaking: changes.filter((c) => c.severity === "BREAKING").length,
|
|
@@ -287,15 +406,15 @@ var diffManifest = (before, after, options) => {
|
|
|
287
406
|
};
|
|
288
407
|
|
|
289
408
|
// src/internal/reflection/kernelContract.ts
|
|
290
|
-
import {
|
|
409
|
+
import { Effect, Exit, Layer, ServiceMap } from "effect";
|
|
291
410
|
var resolveRootImpl = (root) => root?._tag === "ModuleImpl" ? root : root?.impl;
|
|
292
|
-
var
|
|
411
|
+
var asNonEmptyString2 = (value) => typeof value === "string" && value.length > 0 ? value : void 0;
|
|
293
412
|
var asNonNegInt = (value, fallback = 0) => {
|
|
294
413
|
if (typeof value !== "number" || !Number.isFinite(value)) return fallback;
|
|
295
414
|
const n = Math.floor(value);
|
|
296
415
|
return n >= 0 ? n : fallback;
|
|
297
416
|
};
|
|
298
|
-
var
|
|
417
|
+
var isRecord2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
299
418
|
var makeTraceEffectOpObserver = () => {
|
|
300
419
|
return (op) => Effect.gen(function* () {
|
|
301
420
|
if (op.meta?.policy?.disableObservers) {
|
|
@@ -332,12 +451,12 @@ var extractRuntimeSummary = (evidence) => {
|
|
|
332
451
|
};
|
|
333
452
|
};
|
|
334
453
|
var canonicalizeOpMeta = (opMetaRaw) => {
|
|
335
|
-
if (!
|
|
454
|
+
if (!isRecord2(opMetaRaw)) return void 0;
|
|
336
455
|
const out = {};
|
|
337
456
|
for (const [k, v] of Object.entries(opMetaRaw)) {
|
|
338
457
|
if (k === "instanceId" || k === "txnId" || k === "runtimeLabel" || k === "linkId") continue;
|
|
339
458
|
if ((k === "deps" || k === "trace" || k === "tags") && Array.isArray(v) && v.every((x) => typeof x === "string")) {
|
|
340
|
-
out[k] = v.slice().sort(
|
|
459
|
+
out[k] = v.slice().sort();
|
|
341
460
|
continue;
|
|
342
461
|
}
|
|
343
462
|
out[k] = v;
|
|
@@ -360,17 +479,17 @@ var extractKernelContractTraceOps = (evidence) => {
|
|
|
360
479
|
for (const e of evidence.events) {
|
|
361
480
|
if (e.type !== "debug:event") continue;
|
|
362
481
|
const payload = e.payload;
|
|
363
|
-
if (!
|
|
482
|
+
if (!isRecord2(payload)) continue;
|
|
364
483
|
const meta = payload.meta;
|
|
365
484
|
const opMeta = meta?.meta;
|
|
366
485
|
const opSeq = asNonNegInt(opMeta?.opSeq, -1);
|
|
367
486
|
if (opSeq < 0) continue;
|
|
368
|
-
const instanceIdRaw =
|
|
487
|
+
const instanceIdRaw = asNonEmptyString2(payload.instanceId) ?? "unknown";
|
|
369
488
|
const instanceId = mapInstanceId(instanceIdRaw);
|
|
370
489
|
const txnSeq = asNonNegInt(payload.txnSeq, 0);
|
|
371
|
-
const moduleId =
|
|
372
|
-
const kind =
|
|
373
|
-
const name =
|
|
490
|
+
const moduleId = asNonEmptyString2(payload.moduleId) ?? "unknown";
|
|
491
|
+
const kind = asNonEmptyString2(meta?.kind) ?? asNonEmptyString2(payload.kind) ?? "unknown";
|
|
492
|
+
const name = asNonEmptyString2(meta?.name) ?? asNonEmptyString2(payload.label) ?? "effectop";
|
|
374
493
|
ops.push({
|
|
375
494
|
anchor: { instanceId, txnSeq, opSeq },
|
|
376
495
|
moduleId,
|
|
@@ -380,7 +499,7 @@ var extractKernelContractTraceOps = (evidence) => {
|
|
|
380
499
|
});
|
|
381
500
|
}
|
|
382
501
|
ops.sort((a, b) => {
|
|
383
|
-
if (a.anchor.instanceId !== b.anchor.instanceId) return a.anchor.instanceId
|
|
502
|
+
if (a.anchor.instanceId !== b.anchor.instanceId) return a.anchor.instanceId < b.anchor.instanceId ? -1 : 1;
|
|
384
503
|
if (a.anchor.txnSeq !== b.anchor.txnSeq) return a.anchor.txnSeq - b.anchor.txnSeq;
|
|
385
504
|
return a.anchor.opSeq - b.anchor.opSeq;
|
|
386
505
|
});
|
|
@@ -397,7 +516,7 @@ var diffKernelContractTraceOps = (before, after) => {
|
|
|
397
516
|
for (const op of after) {
|
|
398
517
|
afterByKey.set(anchorKey(op.anchor), op);
|
|
399
518
|
}
|
|
400
|
-
const allKeys = Array.from(/* @__PURE__ */ new Set([...beforeByKey.keys(), ...afterByKey.keys()])).sort(
|
|
519
|
+
const allKeys = Array.from(/* @__PURE__ */ new Set([...beforeByKey.keys(), ...afterByKey.keys()])).sort();
|
|
401
520
|
for (const key of allKeys) {
|
|
402
521
|
const b = beforeByKey.get(key);
|
|
403
522
|
const a = afterByKey.get(key);
|
|
@@ -441,7 +560,7 @@ var runOnce = (rootImpl, run, options) => Effect.gen(function* () {
|
|
|
441
560
|
const interaction = run?.interaction;
|
|
442
561
|
const program = Effect.gen(function* () {
|
|
443
562
|
const ctx = yield* rootImpl.layer.pipe(Layer.build);
|
|
444
|
-
const runtime =
|
|
563
|
+
const runtime = ServiceMap.get(ctx, rootImpl.module);
|
|
445
564
|
if (interaction) {
|
|
446
565
|
yield* interaction(runtime);
|
|
447
566
|
}
|
|
@@ -450,7 +569,8 @@ var runOnce = (rootImpl, run, options) => Effect.gen(function* () {
|
|
|
450
569
|
const traceLayer = Layer.succeed(EffectOpMiddlewareTag, {
|
|
451
570
|
stack: [makeTraceEffectOpObserver()]
|
|
452
571
|
});
|
|
453
|
-
const
|
|
572
|
+
const contractGateLayer = Layer.succeed(FullCutoverGateModeTag, "trial");
|
|
573
|
+
const extraLayer = run?.layer ? Layer.mergeAll(traceLayer, run.layer, contractGateLayer) : Layer.mergeAll(traceLayer, contractGateLayer);
|
|
454
574
|
const result = yield* trialRun(program, {
|
|
455
575
|
runId: run?.runId,
|
|
456
576
|
diagnosticsLevel: options.diagnosticsLevel ?? "light",
|
|
@@ -506,12 +626,12 @@ var verifyKernelContract = (root, options) => Effect.gen(function* () {
|
|
|
506
626
|
|
|
507
627
|
// src/Reflection.ts
|
|
508
628
|
var resolveRootImpl2 = (root) => root?._tag === "ModuleImpl" ? root : root?.impl;
|
|
509
|
-
var
|
|
629
|
+
var isRecord3 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
510
630
|
var stableJson = (value) => JSON.stringify(value) ?? "";
|
|
511
631
|
var diffMetaKeys = (before, after) => {
|
|
512
|
-
const b =
|
|
513
|
-
const a =
|
|
514
|
-
const keys = Array.from(/* @__PURE__ */ new Set([...Object.keys(b), ...Object.keys(a)])).sort(
|
|
632
|
+
const b = isRecord3(before) ? before : {};
|
|
633
|
+
const a = isRecord3(after) ? after : {};
|
|
634
|
+
const keys = Array.from(/* @__PURE__ */ new Set([...Object.keys(b), ...Object.keys(a)])).sort();
|
|
515
635
|
const changed = [];
|
|
516
636
|
for (const k of keys) {
|
|
517
637
|
if (stableJson(b[k]) !== stableJson(a[k])) {
|
|
@@ -535,7 +655,7 @@ var tryAllowlistKernelContractDiff = (args) => {
|
|
|
535
655
|
}
|
|
536
656
|
const before = change.before;
|
|
537
657
|
const after = change.after;
|
|
538
|
-
if (!
|
|
658
|
+
if (!isRecord3(before) || !isRecord3(after)) {
|
|
539
659
|
return { verdict: "FAIL", allowedDiffs: [] };
|
|
540
660
|
}
|
|
541
661
|
const anchorBefore = before.anchor;
|
|
@@ -564,12 +684,13 @@ var tryAllowlistKernelContractDiff = (args) => {
|
|
|
564
684
|
metaKey,
|
|
565
685
|
count,
|
|
566
686
|
...allow.get(metaKey) ? { reason: allow.get(metaKey) } : {}
|
|
567
|
-
})).sort((a, b) => a.metaKey.
|
|
687
|
+
})).sort((a, b) => a.metaKey < b.metaKey ? -1 : a.metaKey > b.metaKey ? 1 : 0);
|
|
568
688
|
return { verdict: "PASS", allowedDiffs };
|
|
569
689
|
};
|
|
570
690
|
var extractManifest2 = (module, options) => extractManifest(module, options);
|
|
571
691
|
var diffManifest2 = (before, after, options) => diffManifest(before, after, options);
|
|
572
692
|
var exportStaticIr2 = (module) => exportStaticIr(module);
|
|
693
|
+
var exportControlSurface2 = (modules, options) => exportControlSurface(modules, options);
|
|
573
694
|
var verifyKernelContract2 = (module, options) => verifyKernelContract(module, options);
|
|
574
695
|
var verifyFullCutoverGate = (module, options) => Effect2.gen(function* () {
|
|
575
696
|
const rootImpl = resolveRootImpl2(module);
|
|
@@ -585,7 +706,7 @@ var verifyFullCutoverGate = (module, options) => Effect2.gen(function* () {
|
|
|
585
706
|
const gateRun = options?.gateAfter ?? options?.after;
|
|
586
707
|
const gateProgram = Effect2.gen(function* () {
|
|
587
708
|
const ctx = yield* rootImpl.layer.pipe(Layer2.build);
|
|
588
|
-
const runtime =
|
|
709
|
+
const runtime = ServiceMap2.get(ctx, rootImpl.module);
|
|
589
710
|
if (gateRun?.interaction) {
|
|
590
711
|
yield* gateRun.interaction(runtime);
|
|
591
712
|
}
|
|
@@ -594,10 +715,11 @@ var verifyFullCutoverGate = (module, options) => Effect2.gen(function* () {
|
|
|
594
715
|
runtimeServicesEvidence: getRuntimeServicesEvidence(runtime)
|
|
595
716
|
};
|
|
596
717
|
});
|
|
718
|
+
const gateLayer = gateRun?.layer ? Layer2.mergeAll(gateRun.layer, fullCutoverGateModeLayer("trial")) : fullCutoverGateModeLayer("trial");
|
|
597
719
|
const gateResult = yield* trialRun(gateProgram, {
|
|
598
720
|
runId: gateRun?.runId,
|
|
599
721
|
diagnosticsLevel: options?.gateDiagnosticsLevel ?? "off",
|
|
600
|
-
layer:
|
|
722
|
+
layer: gateLayer,
|
|
601
723
|
runtimeServicesInstanceOverrides: gateRun?.runtimeServicesInstanceOverrides
|
|
602
724
|
});
|
|
603
725
|
const gateValue = Exit2.isSuccess(gateResult.exit) ? gateResult.exit.value : (() => {
|
|
@@ -625,8 +747,9 @@ export {
|
|
|
625
747
|
extractManifest2 as extractManifest,
|
|
626
748
|
diffManifest2 as diffManifest,
|
|
627
749
|
exportStaticIr2 as exportStaticIr,
|
|
750
|
+
exportControlSurface2 as exportControlSurface,
|
|
628
751
|
verifyKernelContract2 as verifyKernelContract,
|
|
629
752
|
verifyFullCutoverGate,
|
|
630
753
|
Reflection_exports
|
|
631
754
|
};
|
|
632
|
-
//# sourceMappingURL=chunk-
|
|
755
|
+
//# sourceMappingURL=chunk-S44BEV4B.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Reflection.ts","../src/internal/observability/controlSurfaceManifest.ts","../src/internal/observability/workflowSurface.ts","../src/internal/reflection/controlSurface.ts","../src/internal/reflection/diff.ts","../src/internal/reflection/kernelContract.ts"],"sourcesContent":["import { Effect, Exit, Layer, ServiceMap } from 'effect'\nimport type { AnyModuleShape, ModuleImpl } from './internal/module.js'\nimport type { AnyModule } from './Module.js'\nimport type { StaticIr } from './internal/state-trait/ir.js'\nimport type { ExtractManifestOptions, ModuleManifest } from './internal/reflection/manifest.js'\nimport * as Manifest from './internal/reflection/manifest.js'\nimport * as StaticIrExport from './internal/reflection/staticIr.js'\nimport type {\n ExportControlSurfaceOptions,\n ExportControlSurfaceResult,\n ExportedWorkflowSurface,\n} from './internal/reflection/controlSurface.js'\nimport * as ControlSurfaceExport from './internal/reflection/controlSurface.js'\nimport type { DiffManifestOptions, ModuleManifestDiff } from './internal/reflection/diff.js'\nimport * as ManifestDiff from './internal/reflection/diff.js'\nimport type {\n KernelContractVerificationResult,\n VerifyKernelContractOptions,\n} from './internal/reflection/kernelContract.js'\nimport { verifyKernelContract as verifyKernelContractInternal } from './internal/reflection/kernelContract.js'\nimport { trialRun } from './internal/observability/trialRun.js'\nimport type { RuntimeServicesOverrides } from './Kernel.js'\nimport * as Kernel from './Kernel.js'\nimport type * as Debug from './internal/runtime/core/DebugSink.js'\n\nexport type {\n ModuleManifest,\n ExtractManifestOptions,\n ModuleManifestDiff,\n DiffManifestOptions,\n KernelContractVerificationResult,\n VerifyKernelContractOptions,\n ExportControlSurfaceOptions,\n ExportControlSurfaceResult,\n ExportedWorkflowSurface,\n}\n\ntype AnyModuleLike = { readonly impl: ModuleImpl<any, AnyModuleShape, any> }\ntype RootLike<Sh extends AnyModuleShape> = ModuleImpl<any, Sh, any> | AnyModuleLike\n\nconst resolveRootImpl = <Sh extends AnyModuleShape>(root: RootLike<Sh>): ModuleImpl<any, Sh, any> =>\n ((root as any)?._tag === 'ModuleImpl'\n ? (root as ModuleImpl<any, Sh, any>)\n : ((root as any)?.impl as ModuleImpl<any, Sh, any>)) satisfies ModuleImpl<any, Sh, any>\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst stableJson = (value: unknown): string => JSON.stringify(value) ?? ''\n\nconst diffMetaKeys = (before: unknown, after: unknown): ReadonlyArray<string> => {\n const b = isRecord(before) ? before : {}\n const a = isRecord(after) ? after : {}\n const keys = Array.from(new Set([...Object.keys(b), ...Object.keys(a)])).sort()\n const changed: string[] = []\n for (const k of keys) {\n if (stableJson(b[k]) !== stableJson(a[k])) {\n changed.push(k)\n }\n }\n return changed\n}\n\nexport interface KernelContractAllowedDiff {\n readonly metaKey: string\n readonly count: number\n readonly reason?: string\n}\n\nconst tryAllowlistKernelContractDiff = (args: {\n readonly result: KernelContractVerificationResult\n readonly allowlist: ReadonlyArray<Kernel.KernelContractMetaAllowlistItem>\n}): { readonly verdict: 'PASS' | 'FAIL'; readonly allowedDiffs: ReadonlyArray<KernelContractAllowedDiff> } => {\n if (args.allowlist.length === 0) {\n return { verdict: args.result.verdict, allowedDiffs: [] }\n }\n\n const allow = new Map<string, string | undefined>()\n for (const item of args.allowlist) {\n allow.set(item.metaKey, item.reason)\n }\n\n const allowedCounts = new Map<string, number>()\n\n for (const change of args.result.changes) {\n if (change.code !== 'op.changed') {\n return { verdict: 'FAIL', allowedDiffs: [] }\n }\n\n const before = change.before as any\n const after = change.after as any\n if (!isRecord(before) || !isRecord(after)) {\n return { verdict: 'FAIL', allowedDiffs: [] }\n }\n\n const anchorBefore = before.anchor\n const anchorAfter = after.anchor\n if (stableJson(anchorBefore) !== stableJson(anchorAfter)) {\n return { verdict: 'FAIL', allowedDiffs: [] }\n }\n if (stableJson(before.moduleId) !== stableJson(after.moduleId)) {\n return { verdict: 'FAIL', allowedDiffs: [] }\n }\n if (stableJson(before.kind) !== stableJson(after.kind)) {\n return { verdict: 'FAIL', allowedDiffs: [] }\n }\n if (stableJson(before.name) !== stableJson(after.name)) {\n return { verdict: 'FAIL', allowedDiffs: [] }\n }\n\n const changed = diffMetaKeys(before.meta, after.meta)\n for (const metaKey of changed) {\n if (!allow.has(metaKey)) {\n return { verdict: 'FAIL', allowedDiffs: [] }\n }\n allowedCounts.set(metaKey, (allowedCounts.get(metaKey) ?? 0) + 1)\n }\n }\n\n const allowedDiffs = Array.from(allowedCounts.entries())\n .map(([metaKey, count]) => ({\n metaKey,\n count,\n ...(allow.get(metaKey) ? { reason: allow.get(metaKey) } : {}),\n }))\n .sort((a, b) => (a.metaKey < b.metaKey ? -1 : a.metaKey > b.metaKey ? 1 : 0))\n\n return { verdict: 'PASS', allowedDiffs }\n}\n\nexport interface FullCutoverGateTrialRunOptions<Sh extends AnyModuleShape> {\n readonly runId?: string\n readonly layer?: Layer.Layer<any, any, any>\n readonly runtimeServicesInstanceOverrides?: RuntimeServicesOverrides\n readonly interaction?: (runtime: any) => Effect.Effect<void, any, any>\n}\n\nexport interface VerifyFullCutoverGateOptions<Sh extends AnyModuleShape> extends VerifyKernelContractOptions<Sh> {\n readonly mode?: Kernel.FullCutoverGateMode\n /**\n * Evidence trimming level for gate evaluation:\n * - `off`: minimal summary (must still be runnable)\n * - `light` / `full`: add explainable details\n */\n readonly gateDiagnosticsLevel?: Debug.DiagnosticsLevel\n /**\n * Contract diff allowlist (disabled by default).\n * - Only allows specific op meta keys (by metaKey); the SSoT is code (KernelContractMetaAllowlist).\n */\n readonly enableContractMetaAllowlist?: boolean\n /**\n * After-run options used for gate evaluation; defaults to `options.after`.\n *\n * Only used to read runtimeServicesEvidence/kernelRef; does not rely on debug logs.\n */\n readonly gateAfter?: FullCutoverGateTrialRunOptions<Sh>\n}\n\nexport interface FullCutoverGateVerificationResult {\n readonly version: 'v1'\n readonly verdict: 'PASS' | 'FAIL'\n readonly gate: Kernel.FullCutoverGateResult\n readonly contract: KernelContractVerificationResult\n readonly contractVerdict: 'PASS' | 'FAIL'\n readonly allowedDiffs?: ReadonlyArray<KernelContractAllowedDiff>\n}\n\n/**\n * Reflection.extractManifest\n *\n * Extracts a platform-consumable Manifest IR (JSON, diffable) from the final module object (`AnyModule` / `ModuleImpl`).\n */\nexport const extractManifest = (\n module: ModuleImpl<any, AnyModuleShape, any> | AnyModule,\n options?: ExtractManifestOptions,\n): ModuleManifest => Manifest.extractManifest(module, options)\n\n/**\n * Reflection.diffManifest\n *\n * Diffs two Manifests and produces a stable, machine-readable summary (CI contract guard / UI reuse).\n */\nexport const diffManifest = (\n before: ModuleManifest,\n after: ModuleManifest,\n options?: DiffManifestOptions,\n): ModuleManifestDiff => ManifestDiff.diffManifest(before, after, options)\n\n/**\n * Reflection.exportStaticIr\n *\n * If the module contains a StateTrait program, exports canonical StaticIR (same shape and digest as StateTrait.exportStaticIr).\n */\nexport const exportStaticIr = (module: ModuleImpl<any, AnyModuleShape, any> | AnyModule): StaticIr | undefined =>\n StaticIrExport.exportStaticIr(module)\n\n/**\n * Reflection.exportControlSurface\n *\n * Exports the ControlSurfaceManifest (Root IR) and slice attachments (e.g. workflowSurface) from configured modules.\n *\n * Note: currently requires `AnyModule` (the configured module object returned by `ModuleDef.implement(...)`).\n */\nexport const exportControlSurface = (\n modules: ReadonlyArray<AnyModule>,\n options?: ExportControlSurfaceOptions,\n): ExportControlSurfaceResult => ControlSurfaceExport.exportControlSurface(modules, options)\n\n/**\n * Reflection.verifyKernelContract\n *\n * Runs two trial-runs (with optional different Layers/overrides) and exports a stable, machine-readable kernel contract diff report.\n */\nexport const verifyKernelContract = <Sh extends AnyModuleShape>(\n module: ModuleImpl<any, Sh, any> | AnyModule,\n options?: VerifyKernelContractOptions<Sh>,\n): import('effect').Effect.Effect<KernelContractVerificationResult, never, any> =>\n verifyKernelContractInternal(module as any, options as any)\n\nexport const verifyFullCutoverGate = <Sh extends AnyModuleShape>(\n module: ModuleImpl<any, Sh, any> | AnyModule,\n options?: VerifyFullCutoverGateOptions<Sh>,\n): Effect.Effect<FullCutoverGateVerificationResult, never, any> =>\n Effect.gen(function* () {\n const rootImpl = resolveRootImpl(module as any)\n\n const contractDiagnosticsLevel: Debug.DiagnosticsLevel =\n (options?.diagnosticsLevel as any) === 'off' ? 'light' : ((options?.diagnosticsLevel as any) ?? 'light')\n\n const contract = yield* verifyKernelContractInternal(module as any, {\n ...(options as any),\n diagnosticsLevel: contractDiagnosticsLevel,\n })\n\n const allowlistEnabled = options?.enableContractMetaAllowlist === true\n const allowlist = allowlistEnabled ? Kernel.KernelContractMetaAllowlist : []\n const contractAllowed = tryAllowlistKernelContractDiff({ result: contract, allowlist })\n const contractVerdict: 'PASS' | 'FAIL' = allowlistEnabled ? contractAllowed.verdict : contract.verdict\n\n const gateRun = (options?.gateAfter ?? options?.after) as FullCutoverGateTrialRunOptions<Sh> | undefined\n\n const gateProgram = Effect.gen(function* () {\n const ctx = yield* rootImpl.layer.pipe(Layer.build)\n const runtime: any = ServiceMap.get(ctx, rootImpl.module as any)\n if (gateRun?.interaction) {\n yield* gateRun.interaction(runtime)\n }\n return {\n kernelImplementationRef: Kernel.getKernelImplementationRef(runtime),\n runtimeServicesEvidence: Kernel.getRuntimeServicesEvidence(runtime),\n } as const\n })\n\n const gateLayer = gateRun?.layer\n ? (Layer.mergeAll(gateRun.layer, Kernel.fullCutoverGateModeLayer('trial')) as Layer.Layer<any, any, any>)\n : (Kernel.fullCutoverGateModeLayer('trial') as Layer.Layer<any, any, any>)\n\n const gateResult = yield* trialRun(gateProgram, {\n runId: gateRun?.runId,\n diagnosticsLevel: options?.gateDiagnosticsLevel ?? 'off',\n layer: gateLayer,\n runtimeServicesInstanceOverrides: gateRun?.runtimeServicesInstanceOverrides,\n })\n\n const gateValue = Exit.isSuccess(gateResult.exit)\n ? gateResult.exit.value\n : (() => {\n const msg = Exit.isFailure(gateResult.exit)\n ? String((gateResult.exit as any).cause ?? 'trial-run failed')\n : 'trial-run failed'\n throw new Error(msg)\n })()\n\n const gate = Kernel.evaluateFullCutoverGate({\n mode: options?.mode ?? 'fullCutover',\n requestedKernelId: gateValue.kernelImplementationRef.kernelId,\n runtimeServicesEvidence: gateValue.runtimeServicesEvidence,\n diagnosticsLevel: options?.gateDiagnosticsLevel ?? 'off',\n })\n\n const verdict: 'PASS' | 'FAIL' = gate.verdict === 'PASS' && contractVerdict === 'PASS' ? 'PASS' : 'FAIL'\n\n return {\n version: 'v1',\n verdict,\n gate,\n contract,\n contractVerdict,\n ...(allowlistEnabled ? { allowedDiffs: contractAllowed.allowedDiffs } : {}),\n }\n })\n","import { fnv1a32, stableStringify } from '../digest.js'\nimport type { JsonValue } from './jsonValue.js'\nimport type { WorkflowStaticIrV1 } from '../workflow/model.js'\n\nexport type ControlSurfaceVersion = 1\n\nexport type Digest = string\nexport type ModuleId = string\nexport type ActionTag = string\nexport type WorkflowStableId = string\n\nexport type ActionRef = { readonly moduleId: ModuleId; readonly actionTag: ActionTag }\n\nexport type EffectTrigger =\n | { readonly kind: 'action'; readonly action: ActionRef }\n | { readonly kind: 'lifecycle'; readonly phase: 'onStart' | 'onInit' }\n\nexport type SliceRef = { readonly digest: Digest }\n\nexport type WorkflowSurfaceRefV1 = SliceRef\n\nexport type ControlEffectIndexEntryV1 =\n | {\n readonly kind: 'workflow'\n readonly effectId: string\n readonly trigger: EffectTrigger\n readonly programId: WorkflowStableId\n readonly programDigest?: Digest\n }\n | {\n readonly kind: 'opaque'\n readonly effectId: string\n readonly trigger: EffectTrigger\n readonly sourceKey: string\n readonly summary?: string\n }\n\nexport type ControlSurfaceManifestV1 = {\n readonly version: ControlSurfaceVersion\n readonly digest: Digest\n readonly modules: ReadonlyArray<{\n readonly moduleId: ModuleId\n readonly workflowSurface?: WorkflowSurfaceRefV1\n readonly effectsIndex: ReadonlyArray<ControlEffectIndexEntryV1>\n readonly effectsIndexDigest?: Digest\n }>\n readonly meta?: { readonly generator?: JsonValue }\n}\n\nexport type ControlSurfaceManifest = ControlSurfaceManifestV1\n\nconst makeDigest = (value: unknown): string => `control_surface_v1:${fnv1a32(stableStringify(value))}`\n\nexport const exportEffectsIndexDigest = (entries: ReadonlyArray<ControlEffectIndexEntryV1>): Digest =>\n `effects_index_v1:${fnv1a32(stableStringify(entries))}`\n\nexport const exportWorkflowEffectsIndex = (args: {\n readonly moduleId: string\n readonly workflowSurface: ReadonlyArray<WorkflowStaticIrV1>\n}): ReadonlyArray<ControlEffectIndexEntryV1> => {\n const moduleId = args.moduleId\n return Array.from(args.workflowSurface)\n .sort((a, b) => (a.programId < b.programId ? -1 : a.programId > b.programId ? 1 : 0))\n .map((ir) => {\n const localId = ir.programId.startsWith(`${moduleId}.`) ? ir.programId.slice(moduleId.length + 1) : ir.programId\n const triggerNode = ir.nodes.find((n) => n.kind === 'trigger')\n const trigger: EffectTrigger =\n triggerNode?.kind === 'trigger' && triggerNode.trigger.kind === 'action'\n ? { kind: 'action', action: { moduleId, actionTag: triggerNode.trigger.actionTag } }\n : {\n kind: 'lifecycle',\n phase:\n triggerNode?.kind === 'trigger' && triggerNode.trigger.kind === 'lifecycle' ? triggerNode.trigger.phase : 'onStart',\n }\n\n return {\n kind: 'workflow',\n effectId: `${moduleId}::workflow:${localId}`,\n trigger,\n programId: ir.programId,\n programDigest: ir.digest,\n } satisfies ControlEffectIndexEntryV1\n })\n}\n\nexport const exportControlSurfaceManifest = (input: Omit<ControlSurfaceManifestV1, 'digest'>): ControlSurfaceManifestV1 => {\n const modules = Array.from(input.modules).sort((a, b) => (a.moduleId < b.moduleId ? -1 : a.moduleId > b.moduleId ? 1 : 0))\n const meta = input.meta\n\n const base = {\n version: 1 as const,\n modules,\n ...(meta ? { meta } : null),\n } satisfies Omit<ControlSurfaceManifestV1, 'digest'>\n\n return {\n ...base,\n digest: makeDigest(base),\n }\n}\n","import { fnv1a32, stableStringify } from '../digest.js'\nimport type { WorkflowStaticIrV1 } from '../workflow/model.js'\n\nexport type WorkflowSurfaceVersion = 1\n\nexport type WorkflowSurfaceV1 = {\n readonly version: WorkflowSurfaceVersion\n readonly digest: string\n readonly programs: ReadonlyArray<WorkflowStaticIrV1>\n}\n\nexport type WorkflowSurface = WorkflowSurfaceV1\n\nconst makeDigest = (value: unknown): string => `workflow_surface_v1:${fnv1a32(stableStringify(value))}`\n\nexport const exportWorkflowSurface = (programs: ReadonlyArray<WorkflowStaticIrV1>): WorkflowSurfaceV1 => {\n const sorted = Array.from(programs).sort((a, b) =>\n a.programId < b.programId ? -1 : a.programId > b.programId ? 1 : 0,\n )\n const base = { version: 1 as const, programs: sorted } as const\n return { ...base, digest: makeDigest(base) }\n}\n","import type { WorkflowDefV1 } from '../workflow/model.js'\nimport { compileWorkflowStaticIrV1 } from '../workflow/compiler.js'\nimport type { JsonValue } from '../observability/jsonValue.js'\nimport { exportControlSurfaceManifest, exportEffectsIndexDigest, exportWorkflowEffectsIndex } from '../observability/controlSurfaceManifest.js'\nimport type { ControlSurfaceManifestV1 } from '../observability/controlSurfaceManifest.js'\nimport { exportWorkflowSurface } from '../observability/workflowSurface.js'\nimport type { WorkflowSurfaceV1 } from '../observability/workflowSurface.js'\n\nexport type ExportedWorkflowSurface = {\n readonly moduleId: string\n readonly surface: WorkflowSurfaceV1\n}\n\nexport type ExportControlSurfaceResult = {\n readonly manifest: ControlSurfaceManifestV1\n readonly workflowSurfaces: ReadonlyArray<ExportedWorkflowSurface>\n}\n\nexport type ExportControlSurfaceOptions = {\n readonly meta?: { readonly generator?: JsonValue }\n}\n\nconst MODULE_INTERNAL = Symbol.for('logix.module.internal')\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst isObjectLike = (value: unknown): value is Record<string, unknown> | ((...args: never[]) => unknown) =>\n (typeof value === 'object' && value !== null) || typeof value === 'function'\n\nconst asNonEmptyString = (value: unknown): string | undefined =>\n typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined\n\nconst resolveTagId = (tag: unknown): string | undefined => {\n if (!isObjectLike(tag)) return undefined\n return asNonEmptyString((tag as Record<string, unknown>).id)\n}\n\nconst resolveModuleIdOrThrow = (module: unknown): string => {\n if (isRecord(module) && module._tag === 'ModuleImpl') {\n const id = resolveTagId(module.module)\n if (id) return id\n throw new Error(\n '[ControlSurfaceManifest] Failed to resolve moduleId from ModuleImpl.module.id.\\n' +\n 'Fix: pass a configured Module/ModuleImpl (has .id/.tag.id/.module.id), not a read-only handle.',\n )\n }\n\n if (isRecord(module)) {\n const id = asNonEmptyString(module.id)\n if (id) return id\n const tagId = resolveTagId(module.tag)\n if (tagId) return tagId\n }\n\n throw new Error(\n '[ControlSurfaceManifest] Failed to resolve moduleId.\\n' +\n 'Fix: pass a configured Module/ModuleImpl (has .id/.tag.id/.module.id), not a read-only handle.',\n )\n}\n\nconst resolveWorkflowDefs = (module: unknown): ReadonlyArray<WorkflowDefV1> => {\n if (!isObjectLike(module)) return []\n const internal = (module as Record<PropertyKey, unknown>)[MODULE_INTERNAL]\n const defs = isRecord(internal) ? internal.workflowDefs : undefined\n return Array.isArray(defs) ? (defs as ReadonlyArray<WorkflowDefV1>) : []\n}\n\nexport const exportControlSurface = (\n modules: ReadonlyArray<unknown>,\n options?: ExportControlSurfaceOptions,\n): ExportControlSurfaceResult => {\n const entries: Array<ControlSurfaceManifestV1['modules'][number]> = []\n const workflowSurfaces: Array<ExportedWorkflowSurface> = []\n\n const seen = new Set<string>()\n\n for (const module of modules) {\n const moduleId = resolveModuleIdOrThrow(module)\n if (seen.has(moduleId)) {\n throw new Error(`[ControlSurfaceManifest] Duplicate moduleId \"${moduleId}\".`)\n }\n seen.add(moduleId)\n\n const defs = resolveWorkflowDefs(module)\n if (defs.length === 0) {\n entries.push({ moduleId, effectsIndex: [] })\n continue\n }\n\n const workflowIrs = defs.map((def) => compileWorkflowStaticIrV1({ moduleId, def }))\n const surface = exportWorkflowSurface(workflowIrs)\n workflowSurfaces.push({ moduleId, surface })\n\n const effectsIndex = exportWorkflowEffectsIndex({ moduleId, workflowSurface: surface.programs })\n const effectsIndexDigest = effectsIndex.length > 0 ? exportEffectsIndexDigest(effectsIndex) : undefined\n\n entries.push({\n moduleId,\n workflowSurface: { digest: surface.digest },\n effectsIndex,\n ...(effectsIndexDigest ? { effectsIndexDigest } : null),\n })\n }\n\n const manifest = exportControlSurfaceManifest({\n version: 1 as const,\n modules: entries,\n ...(options?.meta ? { meta: options.meta } : null),\n })\n\n return { manifest, workflowSurfaces }\n}\n","import { stableStringify } from '../digest.js'\nimport type { JsonValue } from '../observability/jsonValue.js'\nimport type { ModuleManifest, ModuleManifestLogicUnit } from './manifest.js'\n\nexport type ManifestDiffSeverity = 'BREAKING' | 'RISKY' | 'INFO'\nexport type ManifestDiffVerdict = 'PASS' | 'WARN' | 'FAIL'\n\nexport interface ModuleManifestDiffChange {\n readonly severity: ManifestDiffSeverity\n readonly code: string\n readonly message?: string\n readonly pointer?: string\n readonly details?: JsonValue\n}\n\nexport interface ModuleManifestDiffSummary {\n readonly breaking: number\n readonly risky: number\n readonly info: number\n}\n\nexport interface ModuleManifestDiff {\n readonly version: string\n readonly moduleId: string\n readonly before: {\n readonly digest: string\n readonly manifestVersion?: string\n }\n readonly after: {\n readonly digest: string\n readonly manifestVersion?: string\n }\n readonly verdict: ManifestDiffVerdict\n readonly changes: ReadonlyArray<ModuleManifestDiffChange>\n readonly summary: ModuleManifestDiffSummary\n}\n\nexport interface DiffManifestOptions {\n /**\n * metaAllowlist:\n * - When omitted: diff all meta keys (defaults to treating all changes as RISKY).\n * - When provided: only diff allowlisted keys (others are ignored).\n */\n readonly metaAllowlist?: ReadonlyArray<string>\n}\n\nconst SEVERITY_RANK: Record<ManifestDiffSeverity, number> = {\n BREAKING: 0,\n RISKY: 1,\n INFO: 2,\n}\n\nconst uniqSorted = (input: ReadonlyArray<string>): ReadonlyArray<string> => {\n const out = Array.from(new Set(input.filter((x) => typeof x === 'string' && x.length > 0)))\n out.sort()\n return out\n}\n\nconst diffStringKeys = (\n before: ReadonlyArray<string> | undefined,\n after: ReadonlyArray<string> | undefined,\n): { readonly removed: ReadonlyArray<string>; readonly added: ReadonlyArray<string> } => {\n const beforeSet = new Set(uniqSorted(before ?? []))\n const afterSet = new Set(uniqSorted(after ?? []))\n\n const removed: string[] = []\n for (const k of beforeSet) {\n if (!afterSet.has(k)) removed.push(k)\n }\n removed.sort()\n\n const added: string[] = []\n for (const k of afterSet) {\n if (!beforeSet.has(k)) added.push(k)\n }\n added.sort()\n\n return { removed, added }\n}\n\nconst eqJsonValue = (a: unknown, b: unknown): boolean => stableStringify(a) === stableStringify(b)\n\nconst indexLogicUnits = (\n input: ReadonlyArray<ModuleManifestLogicUnit> | undefined,\n): ReadonlyMap<string, ModuleManifestLogicUnit> => {\n const map = new Map<string, ModuleManifestLogicUnit>()\n for (const unit of input ?? []) {\n if (!unit || typeof unit !== 'object') continue\n const id = (unit as any).id\n if (typeof id !== 'string' || id.length === 0) continue\n map.set(id, unit)\n }\n return map\n}\n\nexport const diffManifest = (\n before: ModuleManifest,\n after: ModuleManifest,\n options?: DiffManifestOptions,\n): ModuleManifestDiff => {\n const changes: ModuleManifestDiffChange[] = []\n\n // Identity / protocol\n if (before.moduleId !== after.moduleId) {\n changes.push({\n severity: 'BREAKING',\n code: 'moduleId.changed',\n message: `moduleId changed (${before.moduleId} -> ${after.moduleId})`,\n pointer: '/moduleId',\n details: {\n before: before.moduleId,\n after: after.moduleId,\n },\n })\n }\n\n if (before.manifestVersion !== after.manifestVersion) {\n changes.push({\n severity: 'INFO',\n code: 'manifestVersion.changed',\n message: `manifestVersion changed (${before.manifestVersion} -> ${after.manifestVersion})`,\n pointer: '/manifestVersion',\n details: {\n before: before.manifestVersion,\n after: after.manifestVersion,\n },\n })\n }\n\n // actionKeys\n {\n const { removed, added } = diffStringKeys(before.actionKeys, after.actionKeys)\n if (removed.length > 0 || added.length > 0) {\n changes.push({\n severity: removed.length > 0 ? 'BREAKING' : 'INFO',\n code: 'actionKeys.changed',\n message:\n removed.length > 0 ? `actionKeys removed: ${removed.join(', ')}` : `actionKeys added: ${added.join(', ')}`,\n pointer: '/actionKeys',\n details: { removed, added },\n })\n }\n }\n\n // schemaKeys\n {\n const { removed, added } = diffStringKeys(before.schemaKeys, after.schemaKeys)\n if (removed.length > 0 || added.length > 0) {\n changes.push({\n severity: removed.length > 0 ? 'BREAKING' : 'INFO',\n code: 'schemaKeys.changed',\n message:\n removed.length > 0 ? `schemaKeys removed: ${removed.join(', ')}` : `schemaKeys added: ${added.join(', ')}`,\n pointer: '/schemaKeys',\n details: { removed, added },\n })\n }\n }\n\n // logicUnits (slots)\n {\n const beforeById = indexLogicUnits(before.logicUnits)\n const afterById = indexLogicUnits(after.logicUnits)\n\n const removed: string[] = []\n const added: string[] = []\n const kindChanged: Array<{ readonly id: string; readonly before: string; readonly after: string }> = []\n const riskyChanged: Array<{ readonly id: string; readonly fields: ReadonlyArray<string> }> = []\n\n for (const id of beforeById.keys()) {\n if (!afterById.has(id)) removed.push(id)\n }\n for (const id of afterById.keys()) {\n if (!beforeById.has(id)) added.push(id)\n }\n\n removed.sort()\n added.sort()\n\n for (const id of beforeById.keys()) {\n const b = beforeById.get(id)\n const a = afterById.get(id)\n if (!b || !a) continue\n\n const fields: string[] = []\n if (b.kind !== a.kind) {\n kindChanged.push({ id, before: b.kind, after: a.kind })\n continue\n }\n if (b.name !== a.name) fields.push('name')\n if (b.derived !== a.derived) fields.push('derived')\n if (fields.length > 0) riskyChanged.push({ id, fields })\n }\n\n kindChanged.sort((x, y) => (x.id < y.id ? -1 : x.id > y.id ? 1 : 0))\n riskyChanged.sort((x, y) => (x.id < y.id ? -1 : x.id > y.id ? 1 : 0))\n\n if (removed.length > 0) {\n changes.push({\n severity: 'BREAKING',\n code: 'logicUnits.removed',\n message: `logicUnits removed: ${removed.join(', ')}`,\n pointer: '/logicUnits',\n details: { removed },\n })\n }\n\n if (kindChanged.length > 0) {\n changes.push({\n severity: 'BREAKING',\n code: 'logicUnits.kindChanged',\n message: `logicUnits kind changed: ${kindChanged.map((x) => x.id).join(', ')}`,\n pointer: '/logicUnits',\n details: { kindChanged },\n })\n }\n\n if (added.length > 0) {\n changes.push({\n severity: 'INFO',\n code: 'logicUnits.added',\n message: `logicUnits added: ${added.join(', ')}`,\n pointer: '/logicUnits',\n details: { added },\n })\n }\n\n if (riskyChanged.length > 0) {\n changes.push({\n severity: 'RISKY',\n code: 'logicUnits.changed',\n message: `logicUnits changed: ${riskyChanged.map((x) => x.id).join(', ')}`,\n pointer: '/logicUnits',\n details: { changed: riskyChanged },\n })\n }\n }\n\n // staticIr.digest\n {\n const beforeDigest = before.staticIr?.digest\n const afterDigest = after.staticIr?.digest\n if (beforeDigest !== afterDigest) {\n changes.push({\n severity: 'RISKY',\n code: 'staticIr.digestChanged',\n message: 'staticIr.digest changed',\n pointer: '/staticIr/digest',\n details: {\n before: beforeDigest ?? null,\n after: afterDigest ?? null,\n },\n })\n }\n }\n\n // meta (default: RISKY, allowlist supported)\n {\n const metaBefore = before.meta ?? {}\n const metaAfter = after.meta ?? {}\n\n const allowlist = options?.metaAllowlist\n const keys =\n allowlist != null ? uniqSorted(allowlist) : uniqSorted([...Object.keys(metaBefore), ...Object.keys(metaAfter)])\n\n const changed: Array<{\n readonly key: string\n readonly before: JsonValue | null\n readonly after: JsonValue | null\n }> = []\n\n for (const key of keys) {\n const b = key in metaBefore ? (metaBefore as any)[key] : undefined\n const a = key in metaAfter ? (metaAfter as any)[key] : undefined\n if (!eqJsonValue(b, a)) {\n changed.push({\n key,\n before: (b ?? null) as JsonValue | null,\n after: (a ?? null) as JsonValue | null,\n })\n }\n }\n\n if (changed.length > 0) {\n changes.push({\n severity: 'RISKY',\n code: 'meta.changed',\n message: 'meta changed',\n pointer: '/meta',\n details: {\n keys: changed.map((x) => x.key),\n changed,\n },\n })\n }\n }\n\n // source (default: INFO)\n {\n const b = before.source\n const a = after.source\n if (!eqJsonValue(b ?? null, a ?? null)) {\n changes.push({\n severity: 'INFO',\n code: 'source.changed',\n message: 'source changed',\n pointer: '/source',\n details: {\n before: b ?? null,\n after: a ?? null,\n },\n })\n }\n }\n\n changes.sort((a, b) => {\n const ra = SEVERITY_RANK[a.severity]\n const rb = SEVERITY_RANK[b.severity]\n if (ra !== rb) return ra - rb\n if (a.code !== b.code) return a.code < b.code ? -1 : 1\n const pa = a.pointer ?? ''\n const pb = b.pointer ?? ''\n if (pa !== pb) return pa < pb ? -1 : 1\n return 0\n })\n\n const summary: ModuleManifestDiffSummary = {\n breaking: changes.filter((c) => c.severity === 'BREAKING').length,\n risky: changes.filter((c) => c.severity === 'RISKY').length,\n info: changes.filter((c) => c.severity === 'INFO').length,\n }\n\n const verdict: ManifestDiffVerdict = summary.breaking > 0 ? 'FAIL' : summary.risky > 0 ? 'WARN' : 'PASS'\n\n return {\n version: '025',\n moduleId: after.moduleId,\n before: {\n digest: before.digest,\n manifestVersion: before.manifestVersion,\n },\n after: {\n digest: after.digest,\n manifestVersion: after.manifestVersion,\n },\n verdict,\n changes,\n summary,\n }\n}\n","import { Effect, Exit, Layer, ServiceMap } from 'effect'\nimport type { ModuleImpl, AnyModuleShape } from '../runtime/core/module.js'\nimport type { ModuleRuntime } from '../runtime/core/module.js'\nimport { trialRun } from '../observability/trialRun.js'\nimport type { EvidencePackage } from '../observability/evidence.js'\nimport type { JsonValue } from '../observability/jsonValue.js'\nimport { fnv1a32, stableStringify } from '../digest.js'\nimport type { Middleware } from '../effect-op.js'\nimport * as Debug from '../runtime/core/DebugSink.js'\nimport * as EffectOpCore from '../runtime/core/EffectOpCore.js'\nimport * as KernelRef from '../runtime/core/KernelRef.js'\nimport type * as RuntimeKernel from '../runtime/core/RuntimeKernel.js'\nimport * as RuntimeKernelCore from '../runtime/core/RuntimeKernel.js'\n\ntype AnyModuleLike = { readonly impl: ModuleImpl<any, AnyModuleShape, any> }\n\ntype RootLike<Sh extends AnyModuleShape> = ModuleImpl<any, Sh, any> | AnyModuleLike\n\nconst resolveRootImpl = <Sh extends AnyModuleShape>(root: RootLike<Sh>): ModuleImpl<any, Sh, any> =>\n ((root as any)?._tag === 'ModuleImpl'\n ? (root as ModuleImpl<any, Sh, any>)\n : ((root as any)?.impl as ModuleImpl<any, Sh, any>)) satisfies ModuleImpl<any, Sh, any>\n\nexport type KernelContractVerdict = 'PASS' | 'FAIL'\n\nexport interface KernelContractAnchor {\n readonly instanceId: string\n readonly txnSeq: number\n readonly opSeq: number\n}\n\nexport interface KernelContractTraceOp {\n readonly anchor: KernelContractAnchor\n readonly moduleId: string\n readonly kind: string\n readonly name: string\n readonly meta?: JsonValue\n}\n\nexport interface KernelContractRunSummary {\n readonly ok: boolean\n readonly kernelImplementationRef: KernelRef.KernelImplementationRef\n readonly runtimeServicesEvidence?: JsonValue\n readonly trace: {\n readonly digest: string\n readonly opCount: number\n }\n readonly error?: {\n readonly name: string\n readonly message: string\n }\n}\n\nexport type KernelContractDiffChangeCode = 'op.added' | 'op.removed' | 'op.changed' | 'run.failure'\n\nexport interface KernelContractDiffChange {\n readonly code: KernelContractDiffChangeCode\n readonly anchor?: KernelContractAnchor\n readonly before?: JsonValue\n readonly after?: JsonValue\n}\n\nexport interface KernelContractVerificationResult {\n readonly version: string\n readonly verdict: KernelContractVerdict\n readonly before: KernelContractRunSummary\n readonly after: KernelContractRunSummary\n readonly changes: ReadonlyArray<KernelContractDiffChange>\n readonly summary: {\n readonly added: number\n readonly removed: number\n readonly changed: number\n }\n}\n\nexport interface KernelContractRunOptions<Sh extends AnyModuleShape> {\n readonly runId?: string\n readonly layer?: Layer.Layer<any, any, any>\n readonly runtimeServicesInstanceOverrides?: RuntimeKernel.RuntimeServicesOverrides\n readonly interaction?: (runtime: ModuleRuntime<any, any>) => Effect.Effect<void, any, any>\n}\n\nexport interface VerifyKernelContractOptions<Sh extends AnyModuleShape> {\n readonly before?: KernelContractRunOptions<Sh>\n readonly after?: KernelContractRunOptions<Sh>\n readonly diagnosticsLevel?: Debug.DiagnosticsLevel\n readonly maxEvents?: number\n}\n\nconst asNonEmptyString = (value: unknown): string | undefined =>\n typeof value === 'string' && value.length > 0 ? value : undefined\n\nconst asNonNegInt = (value: unknown, fallback = 0): number => {\n if (typeof value !== 'number' || !Number.isFinite(value)) return fallback\n const n = Math.floor(value)\n return n >= 0 ? n : fallback\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst makeTraceEffectOpObserver = (): Middleware => {\n return <A, E, R>(op: import('../effect-op.js').EffectOp<A, E, R>): Effect.Effect<A, E, R> =>\n Effect.gen(function* () {\n // Observation-only capability: can be locally disabled by policy.\n if ((op.meta as any)?.policy?.disableObservers) {\n return yield* op.effect\n }\n\n const meta: any = op.meta ?? {}\n const slimOp = {\n id: op.id,\n kind: op.kind,\n name: op.name,\n payload: op.payload,\n meta: op.meta,\n }\n\n yield* Debug.record({\n type: 'trace:effectop',\n moduleId: typeof meta.moduleId === 'string' ? meta.moduleId : undefined,\n instanceId: typeof meta.instanceId === 'string' ? meta.instanceId : undefined,\n runtimeLabel: typeof meta.runtimeLabel === 'string' ? meta.runtimeLabel : undefined,\n txnSeq: typeof meta.txnSeq === 'number' && Number.isFinite(meta.txnSeq) ? Math.floor(meta.txnSeq) : undefined,\n data: slimOp,\n } as any)\n\n return yield* op.effect\n })\n}\n\nconst extractRuntimeSummary = (\n evidence: EvidencePackage,\n): {\n readonly kernelImplementationRef: KernelRef.KernelImplementationRef\n readonly runtimeServicesEvidence?: JsonValue\n} => {\n const summary: any = evidence.summary\n const runtime: any = summary?.runtime\n const kernelImplementationRefRaw = runtime?.kernelImplementationRef\n const kernelImplementationRef = KernelRef.normalizeKernelImplementationRef(kernelImplementationRefRaw)\n const services = runtime?.services as JsonValue | undefined\n return {\n kernelImplementationRef,\n runtimeServicesEvidence: services,\n }\n}\n\nconst canonicalizeOpMeta = (opMetaRaw: unknown): JsonValue | undefined => {\n if (!isRecord(opMetaRaw)) return undefined\n\n const out: Record<string, JsonValue> = {}\n for (const [k, v] of Object.entries(opMetaRaw)) {\n // volatile / non-contract anchors\n if (k === 'instanceId' || k === 'txnId' || k === 'runtimeLabel' || k === 'linkId') continue\n\n if ((k === 'deps' || k === 'trace' || k === 'tags') && Array.isArray(v) && v.every((x) => typeof x === 'string')) {\n out[k] = (v as ReadonlyArray<string>).slice().sort() as unknown as JsonValue\n continue\n }\n\n out[k] = v as JsonValue\n }\n\n return out as JsonValue\n}\n\nconst extractKernelContractTraceOps = (evidence: EvidencePackage): ReadonlyArray<KernelContractTraceOp> => {\n const instanceMap = new Map<string, string>()\n let nextInstanceIndex = 0\n\n const mapInstanceId = (raw: string): string => {\n if (raw === 'unknown') return 'unknown'\n const existing = instanceMap.get(raw)\n if (existing) return existing\n nextInstanceIndex += 1\n const next = `i${nextInstanceIndex}`\n instanceMap.set(raw, next)\n return next\n }\n\n const ops: KernelContractTraceOp[] = []\n\n for (const e of evidence.events) {\n if (e.type !== 'debug:event') continue\n const payload: any = e.payload\n if (!isRecord(payload)) continue\n\n const meta: any = payload.meta\n const opMeta: any = meta?.meta\n const opSeq = asNonNegInt(opMeta?.opSeq, -1)\n if (opSeq < 0) continue\n\n const instanceIdRaw = asNonEmptyString(payload.instanceId) ?? 'unknown'\n const instanceId = mapInstanceId(instanceIdRaw)\n const txnSeq = asNonNegInt(payload.txnSeq, 0)\n\n const moduleId = asNonEmptyString(payload.moduleId) ?? 'unknown'\n const kind = asNonEmptyString(meta?.kind) ?? asNonEmptyString(payload.kind) ?? 'unknown'\n const name = asNonEmptyString(meta?.name) ?? asNonEmptyString(payload.label) ?? 'effectop'\n\n ops.push({\n anchor: { instanceId, txnSeq, opSeq },\n moduleId,\n kind,\n name,\n meta: canonicalizeOpMeta(opMeta),\n })\n }\n\n ops.sort((a, b) => {\n if (a.anchor.instanceId !== b.anchor.instanceId) return a.anchor.instanceId < b.anchor.instanceId ? -1 : 1\n if (a.anchor.txnSeq !== b.anchor.txnSeq) return a.anchor.txnSeq - b.anchor.txnSeq\n return a.anchor.opSeq - b.anchor.opSeq\n })\n\n return ops\n}\n\nconst anchorKey = (a: KernelContractAnchor): string => `${a.instanceId}::t${a.txnSeq}::o${a.opSeq}`\n\nconst diffKernelContractTraceOps = (\n before: ReadonlyArray<KernelContractTraceOp>,\n after: ReadonlyArray<KernelContractTraceOp>,\n): {\n readonly changes: ReadonlyArray<KernelContractDiffChange>\n readonly summary: KernelContractVerificationResult['summary']\n} => {\n const changes: KernelContractDiffChange[] = []\n\n const beforeByKey = new Map<string, KernelContractTraceOp>()\n const afterByKey = new Map<string, KernelContractTraceOp>()\n\n for (const op of before) {\n beforeByKey.set(anchorKey(op.anchor), op)\n }\n for (const op of after) {\n afterByKey.set(anchorKey(op.anchor), op)\n }\n\n const allKeys = Array.from(new Set([...beforeByKey.keys(), ...afterByKey.keys()])).sort()\n\n for (const key of allKeys) {\n const b = beforeByKey.get(key)\n const a = afterByKey.get(key)\n\n if (!b && a) {\n changes.push({\n code: 'op.added',\n anchor: a.anchor,\n after: a as unknown as JsonValue,\n })\n continue\n }\n if (b && !a) {\n changes.push({\n code: 'op.removed',\n anchor: b.anchor,\n before: b as unknown as JsonValue,\n })\n continue\n }\n if (!b || !a) continue\n\n const bJson = stableStringify(b)\n const aJson = stableStringify(a)\n if (bJson !== aJson) {\n changes.push({\n code: 'op.changed',\n anchor: b.anchor,\n before: b as unknown as JsonValue,\n after: a as unknown as JsonValue,\n })\n }\n }\n\n const summary = {\n added: changes.filter((c) => c.code === 'op.added').length,\n removed: changes.filter((c) => c.code === 'op.removed').length,\n changed: changes.filter((c) => c.code === 'op.changed').length,\n } as const satisfies KernelContractVerificationResult['summary']\n\n return { changes, summary }\n}\n\nconst VERSION = 'v1'\n\nconst runOnce = <Sh extends AnyModuleShape>(\n rootImpl: ModuleImpl<any, Sh, any>,\n run: KernelContractRunOptions<Sh> | undefined,\n options: Pick<VerifyKernelContractOptions<Sh>, 'diagnosticsLevel' | 'maxEvents'>,\n): Effect.Effect<\n {\n readonly summary: KernelContractRunSummary\n readonly traceOps: ReadonlyArray<KernelContractTraceOp>\n },\n never,\n any\n> =>\n Effect.gen(function* () {\n const interaction = run?.interaction\n const program = Effect.gen(function* () {\n const ctx = yield* rootImpl.layer.pipe(Layer.build)\n const runtime = ServiceMap.get(ctx, rootImpl.module)\n if (interaction) {\n yield* interaction(runtime)\n }\n return runtime.instanceId\n }) as Effect.Effect<string, any, any>\n\n const traceLayer = Layer.succeed(EffectOpCore.EffectOpMiddlewareTag, {\n stack: [makeTraceEffectOpObserver()],\n }) as unknown as Layer.Layer<any, never, never>\n\n // Contract verification must always be able to inspect mixed/fallback wiring, so trial mode is explicit here.\n const contractGateLayer = Layer.succeed(RuntimeKernelCore.FullCutoverGateModeTag, 'trial' as const) as Layer.Layer<\n any,\n never,\n never\n >\n const extraLayer = run?.layer\n ? (Layer.mergeAll(traceLayer, run.layer, contractGateLayer) as Layer.Layer<any, any, any>)\n : (Layer.mergeAll(traceLayer, contractGateLayer) as Layer.Layer<any, any, any>)\n\n const result = yield* trialRun(program as any, {\n runId: run?.runId,\n diagnosticsLevel: options.diagnosticsLevel ?? 'light',\n maxEvents: options.maxEvents,\n layer: extraLayer,\n runtimeServicesInstanceOverrides: run?.runtimeServicesInstanceOverrides,\n })\n\n const ok = Exit.isSuccess(result.exit)\n const error =\n Exit.isFailure(result.exit) && result.exit.cause != null\n ? (() => {\n const failure = Exit.isFailure(result.exit) ? result.exit.cause : undefined\n const err = (failure as any)?._tag === 'Die' ? (failure as any).defect : (failure as any)\n if (err instanceof Error) {\n return { name: err.name, message: err.message }\n }\n return { name: 'UnknownError', message: String(err ?? 'unknown') }\n })()\n : undefined\n\n const runtimeSummary = extractRuntimeSummary(result.evidence)\n const traceOps = extractKernelContractTraceOps(result.evidence)\n const traceDigest = fnv1a32(stableStringify(traceOps))\n\n return {\n summary: {\n ok,\n kernelImplementationRef: runtimeSummary.kernelImplementationRef,\n runtimeServicesEvidence: runtimeSummary.runtimeServicesEvidence,\n trace: { digest: traceDigest, opCount: traceOps.length },\n ...(error ? { error } : {}),\n },\n traceOps,\n }\n })\n\nexport const verifyKernelContract = <Sh extends AnyModuleShape>(\n root: RootLike<Sh>,\n options?: VerifyKernelContractOptions<Sh>,\n): Effect.Effect<KernelContractVerificationResult, never, any> =>\n Effect.gen(function* () {\n const rootImpl = resolveRootImpl(root)\n\n const beforeRun = yield* runOnce(rootImpl, options?.before, {\n diagnosticsLevel: options?.diagnosticsLevel,\n maxEvents: options?.maxEvents,\n })\n\n const afterRun = yield* runOnce(rootImpl, options?.after, {\n diagnosticsLevel: options?.diagnosticsLevel,\n maxEvents: options?.maxEvents,\n })\n\n const hasRunFailure = !beforeRun.summary.ok || !afterRun.summary.ok\n const diff = hasRunFailure\n ? { changes: [{ code: 'run.failure' as const }], summary: { added: 0, removed: 0, changed: 0 } }\n : diffKernelContractTraceOps(beforeRun.traceOps, afterRun.traceOps)\n\n const verdict: KernelContractVerdict = hasRunFailure || diff.changes.length > 0 ? 'FAIL' : 'PASS'\n\n return {\n version: VERSION,\n verdict,\n before: beforeRun.summary,\n after: afterRun.summary,\n changes: diff.changes,\n summary: diff.summary,\n }\n })\n"],"mappings":"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","names":["diffManifest","exportControlSurface","exportStaticIr","extractManifest","verifyKernelContract","Effect","Exit","Layer","ServiceMap","makeDigest","asNonEmptyString","isRecord","resolveRootImpl","isRecord","extractManifest","diffManifest","exportStaticIr","exportControlSurface","verifyKernelContract","Effect","Layer","ServiceMap","Exit"]}
|