unspaghettit 0.2.0 → 0.4.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/README.md +56 -18
- package/build/client/_app/immutable/assets/0.DCOD5ne_.css +1 -0
- package/build/client/_app/immutable/assets/0.DCOD5ne_.css.br +0 -0
- package/build/client/_app/immutable/assets/0.DCOD5ne_.css.gz +0 -0
- package/build/client/_app/immutable/assets/12.nv0I59TU.css.gz +0 -0
- package/build/client/_app/immutable/assets/3.B3akUL9A.css.gz +0 -0
- package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css +1 -0
- package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css.br +0 -0
- package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css.gz +0 -0
- package/build/client/_app/immutable/chunks/B3vnQs252.js +1 -0
- package/build/client/_app/immutable/chunks/B3vnQs252.js.br +0 -0
- package/build/client/_app/immutable/chunks/B3vnQs252.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CxyLMlpt2.js → BANF9BhQ2.js} +1 -1
- package/build/client/_app/immutable/chunks/BANF9BhQ2.js.br +0 -0
- package/build/client/_app/immutable/chunks/BANF9BhQ2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BJdTO_n6.js +1 -0
- package/build/client/_app/immutable/chunks/BJdTO_n6.js.br +0 -0
- package/build/client/_app/immutable/chunks/BJdTO_n6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BPl9BITm.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BQ9GodWX2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bcyn5YUg.js +4 -0
- package/build/client/_app/immutable/chunks/Bcyn5YUg.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bcyn5YUg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bfc9rQXP.js +1 -0
- package/build/client/_app/immutable/chunks/Bfc9rQXP.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bfc9rQXP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BfMYiIUi.js → BjxqhpPG.js} +1 -1
- package/build/client/_app/immutable/chunks/BjxqhpPG.js.br +0 -0
- package/build/client/_app/immutable/chunks/BjxqhpPG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ByaoVvNB.js +1 -0
- package/build/client/_app/immutable/chunks/ByaoVvNB.js.br +0 -0
- package/build/client/_app/immutable/chunks/ByaoVvNB.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BzLd0mTH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C8b3IMj8.js +1 -0
- package/build/client/_app/immutable/chunks/C8b3IMj8.js.br +0 -0
- package/build/client/_app/immutable/chunks/C8b3IMj8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CXvvf4uQ.js +1 -0
- package/build/client/_app/immutable/chunks/CXvvf4uQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/CXvvf4uQ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cl7Z3e6-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ClC4qR7W2.js +2 -0
- package/build/client/_app/immutable/chunks/ClC4qR7W2.js.br +0 -0
- package/build/client/_app/immutable/chunks/ClC4qR7W2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CuGlh1c2.js +1 -0
- package/build/client/_app/immutable/chunks/CuGlh1c2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CuGlh1c2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CwzIdrQR.js +1 -0
- package/build/client/_app/immutable/chunks/CwzIdrQR.js.br +0 -0
- package/build/client/_app/immutable/chunks/CwzIdrQR.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D5speDV82.js +908 -0
- package/build/client/_app/immutable/chunks/D5speDV82.js.br +0 -0
- package/build/client/_app/immutable/chunks/D5speDV82.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D64sGJRN.js +1 -0
- package/build/client/_app/immutable/chunks/D64sGJRN.js.br +0 -0
- package/build/client/_app/immutable/chunks/D64sGJRN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DNaA4QRO2.js +1 -0
- package/build/client/_app/immutable/chunks/DNaA4QRO2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DNaA4QRO2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Da59TXPe.js +1 -0
- package/build/client/_app/immutable/chunks/Da59TXPe.js.br +2 -0
- package/build/client/_app/immutable/chunks/Da59TXPe.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DhTiE3j02.js +2 -0
- package/build/client/_app/immutable/chunks/DhTiE3j02.js.br +0 -0
- package/build/client/_app/immutable/chunks/DhTiE3j02.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dhqg7r_2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DmyaDy4d2.js +1 -0
- package/build/client/_app/immutable/chunks/DmyaDy4d2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DmyaDy4d2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DryaQyjN2.js +1 -0
- package/build/client/_app/immutable/chunks/DryaQyjN2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DryaQyjN2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DtK8qK5Q2.js +1 -0
- package/build/client/_app/immutable/chunks/DtK8qK5Q2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DtK8qK5Q2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DtblIi6X2.js +1 -0
- package/build/client/_app/immutable/chunks/DtblIi6X2.js.br +1 -0
- package/build/client/_app/immutable/chunks/DtblIi6X2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/UkzDDeO42.js +1 -0
- package/build/client/_app/immutable/chunks/UkzDDeO42.js.br +0 -0
- package/build/client/_app/immutable/chunks/UkzDDeO42.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Vu8LzrwP2.js +1 -0
- package/build/client/_app/immutable/chunks/Vu8LzrwP2.js.br +0 -0
- package/build/client/_app/immutable/chunks/Vu8LzrwP2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/_b612aVb.js +1 -0
- package/build/client/_app/immutable/chunks/_b612aVb.js.br +0 -0
- package/build/client/_app/immutable/chunks/_b612aVb.js.gz +0 -0
- package/build/client/_app/immutable/chunks/aNMRV4sP2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/cMamJTsF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ib21i2T_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/kNaey6uv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/oVMDLirx.js +1 -0
- package/build/client/_app/immutable/chunks/oVMDLirx.js.br +0 -0
- package/build/client/_app/immutable/chunks/oVMDLirx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/olAc024e.js +1 -0
- package/build/client/_app/immutable/chunks/olAc024e.js.br +0 -0
- package/build/client/_app/immutable/chunks/olAc024e.js.gz +0 -0
- package/build/client/_app/immutable/chunks/suTxxv1t.js.gz +0 -0
- package/build/client/_app/immutable/chunks/wXIHzLMQ2.js +1 -0
- package/build/client/_app/immutable/chunks/wXIHzLMQ2.js.br +0 -0
- package/build/client/_app/immutable/chunks/wXIHzLMQ2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/wrqalH0a.js +1 -0
- package/build/client/_app/immutable/chunks/wrqalH0a.js.br +0 -0
- package/build/client/_app/immutable/chunks/wrqalH0a.js.gz +0 -0
- package/build/client/_app/immutable/chunks/x60Tn5kT.js +1 -0
- package/build/client/_app/immutable/chunks/x60Tn5kT.js.br +0 -0
- package/build/client/_app/immutable/chunks/x60Tn5kT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BOrLmFwJ.js → yShDxCNj.js} +1 -1
- package/build/client/_app/immutable/chunks/yShDxCNj.js.br +2 -0
- package/build/client/_app/immutable/chunks/yShDxCNj.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.Etd-exTb.js +2 -0
- package/build/client/_app/immutable/entry/app.Etd-exTb.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Etd-exTb.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DY2B3u4g.js +1 -0
- package/build/client/_app/immutable/entry/start.DY2B3u4g.js.br +0 -0
- package/build/client/_app/immutable/entry/start.DY2B3u4g.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.tKfYV3__.js +8 -0
- package/build/client/_app/immutable/nodes/0.tKfYV3__.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.tKfYV3__.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.KYdA6ppX.js → 1.CER5ICKt.js} +1 -1
- package/build/client/_app/immutable/nodes/1.CER5ICKt.js.br +1 -0
- package/build/client/_app/immutable/nodes/1.CER5ICKt.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.rT7cD8kX.js +1 -0
- package/build/client/_app/immutable/nodes/10.rT7cD8kX.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.rT7cD8kX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.BAnV_Y5Y.js +2 -0
- package/build/client/_app/immutable/nodes/11.BAnV_Y5Y.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.BAnV_Y5Y.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{9.CMW6a2Lg.js → 12.DCTRFMqo.js} +4 -3
- package/build/client/_app/immutable/nodes/12.DCTRFMqo.js.br +0 -0
- package/build/client/_app/immutable/nodes/12.DCTRFMqo.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.DBz20KgG.js → 2.CF488WWF.js} +1 -1
- package/build/client/_app/immutable/nodes/2.CF488WWF.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CF488WWF.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CP7CPPVH.js +1 -0
- package/build/client/_app/immutable/nodes/3.CP7CPPVH.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CP7CPPVH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.D1bxCSiM.js +3 -0
- package/build/client/_app/immutable/nodes/4.D1bxCSiM.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.D1bxCSiM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.D6jZgh9y.js +48 -0
- package/build/client/_app/immutable/nodes/5.D6jZgh9y.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.D6jZgh9y.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BrBFUA0s.js +1 -0
- package/build/client/_app/immutable/nodes/6.BrBFUA0s.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BrBFUA0s.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.pajo8MfM.js +3 -0
- package/build/client/_app/immutable/nodes/7.pajo8MfM.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.pajo8MfM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.Cc80_Igi.js +5 -0
- package/build/client/_app/immutable/nodes/8.Cc80_Igi.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.Cc80_Igi.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.CemgNJfw.js → 9.D72NaL3l.js} +1 -1
- package/build/client/_app/immutable/nodes/9.D72NaL3l.js.br +1 -0
- package/build/client/_app/immutable/nodes/9.D72NaL3l.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/client/lyriks_logo.svg +148 -0
- package/build/client/lyriks_logo.svg.br +0 -0
- package/build/client/lyriks_logo.svg.gz +0 -0
- package/build/server/chunks/0-8YZc572z.js +15 -0
- package/build/server/chunks/0-8YZc572z.js.map +1 -0
- package/build/server/chunks/1-DxkfSJLu.js +9 -0
- package/build/server/chunks/{1-DPpKAKXV.js.map → 1-DxkfSJLu.js.map} +1 -1
- package/build/server/chunks/10-DkObdGtU.js +9 -0
- package/build/server/chunks/10-DkObdGtU.js.map +1 -0
- package/build/server/chunks/11-DL94HxpZ.js +9 -0
- package/build/server/chunks/11-DL94HxpZ.js.map +1 -0
- package/build/server/chunks/12-CI74sCkt.js +9 -0
- package/build/server/chunks/12-CI74sCkt.js.map +1 -0
- package/build/server/chunks/2-qhWwQ4eL.js +9 -0
- package/build/server/chunks/2-qhWwQ4eL.js.map +1 -0
- package/build/server/chunks/3-CzoZtSTp.js +16 -0
- package/build/server/chunks/3-CzoZtSTp.js.map +1 -0
- package/build/server/chunks/4-CDa9DBsh.js +16 -0
- package/build/server/chunks/4-CDa9DBsh.js.map +1 -0
- package/build/server/chunks/5-qD2xxOrq.js +9 -0
- package/build/server/chunks/5-qD2xxOrq.js.map +1 -0
- package/build/server/chunks/6-B4mWzvDn.js +9 -0
- package/build/server/chunks/6-B4mWzvDn.js.map +1 -0
- package/build/server/chunks/7-zExv-fTN.js +9 -0
- package/build/server/chunks/7-zExv-fTN.js.map +1 -0
- package/build/server/chunks/8-BVrGdQg4.js +9 -0
- package/build/server/chunks/{6-QQ7r8Rd5.js.map → 8-BVrGdQg4.js.map} +1 -1
- package/build/server/chunks/9-BnZLRMYA.js +9 -0
- package/build/server/chunks/9-BnZLRMYA.js.map +1 -0
- package/build/server/chunks/BehaviorGraph-C-9z37Sm.js +788 -0
- package/build/server/chunks/BehaviorGraph-C-9z37Sm.js.map +1 -0
- package/build/server/chunks/Clock-BfMWQpmJ.js +5 -0
- package/build/server/chunks/Clock-BfMWQpmJ.js.map +1 -0
- package/build/server/chunks/DeleteDomain-BvHEgAyp.js +24 -0
- package/build/server/chunks/DeleteDomain-BvHEgAyp.js.map +1 -0
- package/build/server/chunks/{FeatureValidator-B8qEjAUW.js → DeleteFeature-DnK8sBJI.js} +142 -77
- package/build/server/chunks/DeleteFeature-DnK8sBJI.js.map +1 -0
- package/build/server/chunks/DeleteProject-BXZcehHZ.js +41 -0
- package/build/server/chunks/DeleteProject-BXZcehHZ.js.map +1 -0
- package/build/server/chunks/Effect-BJtLR-6l.js +46 -0
- package/build/server/chunks/Effect-BJtLR-6l.js.map +1 -0
- package/build/server/chunks/{FeatureCard-BQOY6gJQ.js → FeatureCard-Bb50FEfp.js} +4 -4
- package/build/server/chunks/{FeatureCard-BQOY6gJQ.js.map → FeatureCard-Bb50FEfp.js.map} +1 -1
- package/build/server/chunks/{FeatureJson-Bv-qiOSf.js → FeatureJson-DYvMEAub.js} +2 -2
- package/build/server/chunks/{FeatureJson-Bv-qiOSf.js.map → FeatureJson-DYvMEAub.js.map} +1 -1
- package/build/server/chunks/{FeatureTransforms-UWDHmWEg.js → FeatureTransforms-B0aI_CJD.js} +10 -3
- package/build/server/chunks/FeatureTransforms-B0aI_CJD.js.map +1 -0
- package/build/server/chunks/{ManageTagsDialog-DBxA3tM2.js → ManageTagsDialog-D5xbAVNB.js} +5 -5
- package/build/server/chunks/ManageTagsDialog-D5xbAVNB.js.map +1 -0
- package/build/server/chunks/{ProgressBar-CfhccQ83.js → ProgressBar-CUC2EZqG.js} +3 -3
- package/build/server/chunks/ProgressBar-CUC2EZqG.js.map +1 -0
- package/build/server/chunks/{ProjectsIndex-CoDrvRya.js → ProjectsIndex-FgIu9dBp.js} +135 -14
- package/build/server/chunks/ProjectsIndex-FgIu9dBp.js.map +1 -0
- package/build/server/chunks/{RenameTag-BuWLMl1m.js → RenameTag-DWIIR4Bx.js} +3 -6
- package/build/server/chunks/RenameTag-DWIIR4Bx.js.map +1 -0
- package/build/server/chunks/ScenarioApplier-YPKECfZe.js +55 -0
- package/build/server/chunks/ScenarioApplier-YPKECfZe.js.map +1 -0
- package/build/server/chunks/SimulatorEngine-DM1F9nCO.js +1391 -0
- package/build/server/chunks/SimulatorEngine-DM1F9nCO.js.map +1 -0
- package/build/server/chunks/StateValue-BBjWox8f.js +105 -0
- package/build/server/chunks/StateValue-BBjWox8f.js.map +1 -0
- package/build/server/chunks/{TagDotStrip-B1XQ0m0Y.js → TagDotStrip-0rn-IJVE.js} +4 -4
- package/build/server/chunks/TagDotStrip-0rn-IJVE.js.map +1 -0
- package/build/server/chunks/{TagFilterSelect-DbO0Qduh.js → TagFilterSelect-Dbu-7Dg4.js} +5 -5
- package/build/server/chunks/{TagFilterSelect-DbO0Qduh.js.map → TagFilterSelect-Dbu-7Dg4.js.map} +1 -1
- package/build/server/chunks/{TagPalette-CtMNYCmu.js → TagPalette-CpdTiC_7.js} +101 -9
- package/build/server/chunks/TagPalette-CpdTiC_7.js.map +1 -0
- package/build/server/chunks/TransitionCatalog-CYXUANy6.js +271 -0
- package/build/server/chunks/TransitionCatalog-CYXUANy6.js.map +1 -0
- package/build/server/chunks/_layout.svelte-pSSG85WT.js +1342 -0
- package/build/server/chunks/_layout.svelte-pSSG85WT.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BKTveFAj.js → _page.svelte-BNH3szkk.js} +22 -17
- package/build/server/chunks/{_page.svelte-BKTveFAj.js.map → _page.svelte-BNH3szkk.js.map} +1 -1
- package/build/server/chunks/_page.svelte-BcuGvUt1.js +37 -0
- package/build/server/chunks/{_page.svelte-B7hT3P8E.js.map → _page.svelte-BcuGvUt1.js.map} +1 -1
- package/build/server/chunks/_page.svelte-BoOMG5Y0.js +37 -0
- package/build/server/chunks/{_page.svelte-De508ek8.js.map → _page.svelte-BoOMG5Y0.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-BqSC-1vK.js → _page.svelte-C4PRh_wP.js} +104 -54
- package/build/server/chunks/_page.svelte-C4PRh_wP.js.map +1 -0
- package/build/server/chunks/_page.svelte-Cqn34NXy.js +74 -0
- package/build/server/chunks/_page.svelte-Cqn34NXy.js.map +1 -0
- package/build/server/chunks/{_page.svelte-B1s7jxaQ.js → _page.svelte-DSCeOGv7.js} +15 -10
- package/build/server/chunks/_page.svelte-DSCeOGv7.js.map +1 -0
- package/build/server/chunks/_page.svelte-DqWdGt48.js +182 -0
- package/build/server/chunks/_page.svelte-DqWdGt48.js.map +1 -0
- package/build/server/chunks/_page.svelte-DsQHSEl4.js +49 -0
- package/build/server/chunks/_page.svelte-DsQHSEl4.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BKKCa9H5.js → _page.svelte-Uioz8hsG.js} +18 -11
- package/build/server/chunks/{_page.svelte-BKKCa9H5.js.map → _page.svelte-Uioz8hsG.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-Zf9H4KOP.js → _page.svelte-p38jot9e.js} +81 -478
- package/build/server/chunks/_page.svelte-p38jot9e.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BtI2zZ_Z.js → _page.svelte-yN5kzgJ9.js} +251 -447
- package/build/server/chunks/_page.svelte-yN5kzgJ9.js.map +1 -0
- package/build/server/chunks/{_server.ts-DsbbVoOn.js → _server.ts-1CtrHhte.js} +4 -4
- package/build/server/chunks/{_server.ts-DsbbVoOn.js.map → _server.ts-1CtrHhte.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CWvU15tL.js → _server.ts-71Qx1lQb.js} +4 -4
- package/build/server/chunks/{_server.ts-CWvU15tL.js.map → _server.ts-71Qx1lQb.js.map} +1 -1
- package/build/server/chunks/_server.ts-BAyekGHB.js +961 -0
- package/build/server/chunks/_server.ts-BAyekGHB.js.map +1 -0
- package/build/server/chunks/{_server.ts-BihpbxOW.js → _server.ts-BLWhU22T.js} +4 -4
- package/build/server/chunks/{_server.ts-BihpbxOW.js.map → _server.ts-BLWhU22T.js.map} +1 -1
- package/build/server/chunks/{_server.ts-YnfXkeMJ.js → _server.ts-C7EVZVxv.js} +22 -13
- package/build/server/chunks/_server.ts-C7EVZVxv.js.map +1 -0
- package/build/server/chunks/{_server.ts-vcaqdwxS.js → _server.ts-CGjYuLmo.js} +12 -7
- package/build/server/chunks/_server.ts-CGjYuLmo.js.map +1 -0
- package/build/server/chunks/{_server.ts-Dy5zQHe2.js → _server.ts-CX6H8fSE.js} +8 -31
- package/build/server/chunks/_server.ts-CX6H8fSE.js.map +1 -0
- package/build/server/chunks/{_server.ts-BuoQ02BW.js → _server.ts-CyEdTCLr.js} +4 -4
- package/build/server/chunks/{_server.ts-BuoQ02BW.js.map → _server.ts-CyEdTCLr.js.map} +1 -1
- package/build/server/chunks/_server.ts-DKVTM9Pj.js +77 -0
- package/build/server/chunks/_server.ts-DKVTM9Pj.js.map +1 -0
- package/build/server/chunks/{_server.ts-0uNTZKwF.js → _server.ts-Dip65hLJ.js} +15 -9
- package/build/server/chunks/_server.ts-Dip65hLJ.js.map +1 -0
- package/build/server/chunks/{_server.ts-D4EO0VHu.js → _server.ts-Dm0tCs2i.js} +5 -5
- package/build/server/chunks/{_server.ts-D4EO0VHu.js.map → _server.ts-Dm0tCs2i.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BIBWjQI-.js → _server.ts-DsYwK_uW.js} +4 -4
- package/build/server/chunks/{_server.ts-BIBWjQI-.js.map → _server.ts-DsYwK_uW.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DDa0Nk_S.js → _server.ts-RCEgegYU.js} +4 -4
- package/build/server/chunks/{_server.ts-DDa0Nk_S.js.map → _server.ts-RCEgegYU.js.map} +1 -1
- package/build/server/chunks/_server.ts-XOLAT4dd.js +146 -0
- package/build/server/chunks/_server.ts-XOLAT4dd.js.map +1 -0
- package/build/server/chunks/_server.ts-afh_zLVi.js +69 -0
- package/build/server/chunks/_server.ts-afh_zLVi.js.map +1 -0
- package/build/server/chunks/{browserContainer-CNX7ANld.js → browserContainer-BdldtueJ.js} +71 -1378
- package/build/server/chunks/browserContainer-BdldtueJ.js.map +1 -0
- package/build/server/chunks/buildSearchDocs-Cyfrnw9G.js +337 -0
- package/build/server/chunks/buildSearchDocs-Cyfrnw9G.js.map +1 -0
- package/build/server/chunks/{builderModeStore.svelte-ihupr-3p.js → builderModeStore.svelte-BEZMQEqn.js} +223 -11
- package/build/server/chunks/builderModeStore.svelte-BEZMQEqn.js.map +1 -0
- package/build/server/chunks/client-C9Cat4DK.js +51 -0
- package/build/server/chunks/{client-DfpLcAZ9.js.map → client-C9Cat4DK.js.map} +1 -1
- package/build/server/chunks/{error.svelte-C35KOpru.js → error.svelte-CzVR_A6P.js} +5 -5
- package/build/server/chunks/{error.svelte-C35KOpru.js.map → error.svelte-CzVR_A6P.js.map} +1 -1
- package/build/server/chunks/featureQueueContext-DuXpyTdC.js +32 -0
- package/build/server/chunks/featureQueueContext-DuXpyTdC.js.map +1 -0
- package/build/server/chunks/featureStore.svelte-DHZf88gu.js +162 -0
- package/build/server/chunks/featureStore.svelte-DHZf88gu.js.map +1 -0
- package/build/server/chunks/{projectsStore.svelte-QDz5PchX.js → featuresStore.svelte-bUyQBg1-.js} +95 -3
- package/build/server/chunks/featuresStore.svelte-bUyQBg1-.js.map +1 -0
- package/build/server/chunks/{hooks.server-Rv301GTB.js → hooks.server-y3jdg_sB.js} +6 -2
- package/build/server/chunks/hooks.server-y3jdg_sB.js.map +1 -0
- package/build/server/chunks/humanize-CkCPfeWi.js +53 -0
- package/build/server/chunks/humanize-CkCPfeWi.js.map +1 -0
- package/build/server/chunks/{index-server-7H0jzj0M.js → index-server-DvBux_Gf.js} +47 -2
- package/build/server/chunks/{index-server-7H0jzj0M.js.map → index-server-DvBux_Gf.js.map} +1 -1
- package/build/server/chunks/{internal-BPKrFkK1.js → internal-BFt8yDlf.js} +5 -5
- package/build/server/chunks/{internal-BPKrFkK1.js.map → internal-BFt8yDlf.js.map} +1 -1
- package/build/server/chunks/projectBundleClient-BtvWPh87.js +168 -0
- package/build/server/chunks/projectBundleClient-BtvWPh87.js.map +1 -0
- package/build/server/chunks/projectContextStore.svelte-jRJGJZ42.js +141 -0
- package/build/server/chunks/projectContextStore.svelte-jRJGJZ42.js.map +1 -0
- package/build/server/chunks/projectFeaturesStore.svelte-BwNEtDIL.js +87 -0
- package/build/server/chunks/projectFeaturesStore.svelte-BwNEtDIL.js.map +1 -0
- package/build/server/chunks/projectStore.svelte-BNuLNxk_.js +230 -0
- package/build/server/chunks/projectStore.svelte-BNuLNxk_.js.map +1 -0
- package/build/server/chunks/{reconcile-Dv7jS3C8.js → reconcile-CVG2LSlW.js} +54 -267
- package/build/server/chunks/reconcile-CVG2LSlW.js.map +1 -0
- package/build/server/chunks/registry-DqAn_hVE.js +21 -0
- package/build/server/chunks/registry-DqAn_hVE.js.map +1 -0
- package/build/server/chunks/{snapshotRepository-BPXCjX92.js → snapshotRepository-8f-2wTrb.js} +30 -5
- package/build/server/chunks/snapshotRepository-8f-2wTrb.js.map +1 -0
- package/build/server/chunks/{state-CpLVNZq7.js → state-CZZtjXLE.js} +3 -3
- package/build/server/chunks/{state-CpLVNZq7.js.map → state-CZZtjXLE.js.map} +1 -1
- package/build/server/chunks/{sync-DZ3dn761.js → sync-Bn6eSUhC.js} +3 -3
- package/build/server/chunks/{sync-DZ3dn761.js.map → sync-Bn6eSUhC.js.map} +1 -1
- package/build/server/chunks/{syncBridge-BwXzPdjJ.js → syncAwareRepositories-DvUjq5Q6.js} +27 -3
- package/build/server/chunks/syncAwareRepositories-DvUjq5Q6.js.map +1 -0
- package/build/server/chunks/{tagPaletteStore.svelte-DfZOBvgY.js → tagPaletteStore.svelte-C71bdzDl.js} +4 -4
- package/build/server/chunks/{tagPaletteStore.svelte-DfZOBvgY.js.map → tagPaletteStore.svelte-C71bdzDl.js.map} +1 -1
- package/build/server/index.js +2 -2
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +74 -29
- package/build/server/manifest.js.map +1 -1
- package/cli/README.md +70 -2
- package/cli/commands/check.ts +190 -0
- package/cli/commands/ci.ts +71 -0
- package/cli/commands/coverage-ingest.ts +112 -0
- package/cli/commands/dashboard.ts +14 -0
- package/cli/commands/init.ts +26 -0
- package/cli/commands/scenarios-adapter.ts +96 -0
- package/cli/commands/theme.ts +62 -0
- package/cli/scenarios/adapter-scaffold.ts +99 -0
- package/cli/scenarios/codegen.ts +7 -1
- package/cli/scenarios/results.ts +85 -0
- package/cli/skills/unspa-audit/SKILL.md +19 -0
- package/cli/skills/unspa-edit/SKILL.md +20 -3
- package/cli/skills/unspa-implement/SKILL.md +28 -0
- package/cli/unspa.ts +136 -2
- package/cli/util/context-files.ts +18 -2
- package/cli/util/theme.ts +34 -0
- package/mcp-server/bin.ts +104 -104
- package/mcp-server/migrate-defaults.ts +164 -164
- package/mcp-server/repo-link.ts +142 -134
- package/mcp-server/resources/guide.ts +24 -4
- package/mcp-server/resources/operations.ts +3 -0
- package/mcp-server/seed-snapshots.ts +22 -22
- package/mcp-server/server.ts +8 -4
- package/mcp-server/sync-aware-repos.ts +79 -79
- package/mcp-server/sync-notifier.ts +180 -127
- package/mcp-server/tools/_codegen.ts +115 -115
- package/mcp-server/tools/_entity_builders.ts +30 -0
- package/mcp-server/tools/_shared.ts +210 -210
- package/mcp-server/tools/action.ts +210 -210
- package/mcp-server/tools/batch.ts +29 -5
- package/mcp-server/tools/effect.ts +139 -135
- package/mcp-server/tools/entity.ts +132 -132
- package/mcp-server/tools/entityField.ts +132 -132
- package/mcp-server/tools/event.ts +116 -116
- package/mcp-server/tools/feature.ts +264 -264
- package/mcp-server/tools/invariant.ts +275 -275
- package/mcp-server/tools/persona.ts +141 -141
- package/mcp-server/tools/project.ts +500 -391
- package/mcp-server/tools/reachabilityGoal.ts +97 -0
- package/mcp-server/tools/read.ts +526 -483
- package/mcp-server/tools/reorder.ts +114 -114
- package/mcp-server/tools/resource.ts +194 -194
- package/mcp-server/tools/rule.ts +302 -302
- package/mcp-server/tools/scenario.ts +4 -1
- package/mcp-server/tools/specGaps.ts +221 -221
- package/mcp-server/tools/state.ts +10 -2
- package/mcp-server/tools/surface.ts +102 -102
- package/mcp-server/tools/transition.ts +96 -96
- package/mcp-server/tools/verification.ts +131 -0
- package/package.json +15 -2
- package/src/app.css +208 -9
- package/src/app.html +15 -1
- package/src/features/behavior-model/application/ports/FeatureRepository.ts +16 -16
- package/src/features/behavior-model/application/use-cases/CreateFeature.ts +24 -24
- package/src/features/behavior-model/application/use-cases/DeleteFeature.ts +8 -8
- package/src/features/behavior-model/application/use-cases/GetFeature.ts +9 -9
- package/src/features/behavior-model/application/use-cases/ListFeatures.ts +10 -10
- package/src/features/behavior-model/application/use-cases/MutateFeature.ts +90 -90
- package/src/features/behavior-model/application/use-cases/SaveFeature.ts +31 -31
- package/src/features/behavior-model/domain/entities/Entity.ts +45 -45
- package/src/features/behavior-model/domain/entities/EventDefinition.ts +35 -35
- package/src/features/behavior-model/domain/entities/Feature.ts +10 -0
- package/src/features/behavior-model/domain/entities/Persona.ts +33 -33
- package/src/features/behavior-model/domain/entities/ReachabilityGoal.ts +39 -0
- package/src/features/behavior-model/domain/entities/Resource.ts +54 -54
- package/src/features/behavior-model/domain/entities/Scenario.ts +15 -0
- package/src/features/behavior-model/domain/entities/StateDefinition.ts +13 -0
- package/src/features/behavior-model/domain/entities/Surface.ts +75 -75
- package/src/features/behavior-model/domain/entities/index.ts +9 -9
- package/src/features/behavior-model/domain/services/BehaviorGraphModel.ts +556 -0
- package/src/features/behavior-model/domain/services/DerivedState.ts +67 -0
- package/src/features/behavior-model/domain/services/EffectApplier.ts +112 -3
- package/src/features/behavior-model/domain/services/EffectiveEntities.ts +166 -166
- package/src/features/behavior-model/domain/services/EntityDeducer.ts +83 -83
- package/src/features/behavior-model/domain/services/EventCatalog.ts +141 -141
- package/src/features/behavior-model/domain/services/FeatureExpressionNormalizer.ts +43 -5
- package/src/features/behavior-model/domain/services/FeatureSharedStateNormalizer.ts +24 -3
- package/src/features/behavior-model/domain/services/FeatureTransforms.ts +33 -0
- package/src/features/behavior-model/domain/services/FeatureValidator.ts +124 -16
- package/src/features/behavior-model/domain/services/PersonaApplier.ts +39 -39
- package/src/features/behavior-model/domain/services/ResourceDeducer.ts +64 -64
- package/src/features/behavior-model/domain/services/ResourceUsage.ts +79 -79
- package/src/features/behavior-model/domain/services/ScenarioApplier.ts +40 -40
- package/src/features/behavior-model/domain/services/SharedStateDefinitions.ts +32 -32
- package/src/features/behavior-model/domain/services/StatePathReferences.ts +249 -217
- package/src/features/behavior-model/domain/services/TransitionCatalog.ts +173 -173
- package/src/features/behavior-model/domain/value-objects/Effect.ts +100 -3
- package/src/features/behavior-model/domain/value-objects/EntityFieldType.ts +57 -57
- package/src/features/behavior-model/domain/value-objects/Expression.ts +22 -2
- package/src/features/behavior-model/domain/value-objects/ParameterType.ts +57 -57
- package/src/features/behavior-model/domain/value-objects/Resource.ts +210 -210
- package/src/features/behavior-model/domain/value-objects/RuleCategory.ts +57 -57
- package/src/features/behavior-model/domain/value-objects/RuleCondition.ts +52 -1
- package/src/features/behavior-model/domain/value-objects/SimulationClock.ts +35 -0
- package/src/features/behavior-model/domain/value-objects/ids.ts +2 -0
- package/src/features/behavior-model/infrastructure/io/FeatureJson.ts +89 -89
- package/src/features/behavior-model/infrastructure/persistence/HttpFeatureRepository.ts +43 -43
- package/src/features/behavior-model/infrastructure/persistence/JsonFolderFeatureRepository.ts +10 -0
- package/src/features/behavior-model/infrastructure/persistence/snapshot-discovery.ts +76 -76
- package/src/features/behavior-model/infrastructure/seed/seedStorefront.ts +967 -967
- package/src/features/behavior-model/presentation/adapters/VisBehaviorGraphRenderer.ts +501 -0
- package/src/features/behavior-model/presentation/components/ActionEditor.svelte +683 -682
- package/src/features/behavior-model/presentation/components/ActionsEditor.svelte +232 -232
- package/src/features/behavior-model/presentation/components/BehaviorGraph.svelte +568 -0
- package/src/features/behavior-model/presentation/components/EffectEditor.svelte +168 -168
- package/src/features/behavior-model/presentation/components/EntityEditor.svelte +241 -248
- package/src/features/behavior-model/presentation/components/EntityFieldRow.svelte +180 -181
- package/src/features/behavior-model/presentation/components/EntityManager.svelte +252 -251
- package/src/features/behavior-model/presentation/components/EventsManager.svelte +373 -372
- package/src/features/behavior-model/presentation/components/FeatureEditor.svelte +396 -348
- package/src/features/behavior-model/presentation/components/FeatureHeader.svelte +165 -148
- package/src/features/behavior-model/presentation/components/FeatureHealthStrip.svelte +110 -110
- package/src/features/behavior-model/presentation/components/HistoryPanel.svelte +154 -154
- package/src/features/behavior-model/presentation/components/NewFeatureForm.svelte +66 -66
- package/src/features/behavior-model/presentation/components/ParameterNameSelect.svelte +84 -84
- package/src/features/behavior-model/presentation/components/ParametersEditor.svelte +411 -411
- package/src/features/behavior-model/presentation/components/PersonaEditor.svelte +244 -244
- package/src/features/behavior-model/presentation/components/PersonasManager.svelte +130 -130
- package/src/features/behavior-model/presentation/components/ReachabilityGoalEditor.svelte +230 -0
- package/src/features/behavior-model/presentation/components/ReachabilityGoalsEditor.svelte +86 -0
- package/src/features/behavior-model/presentation/components/ResourcesManager.svelte +291 -290
- package/src/features/behavior-model/presentation/components/ScenariosEditor.svelte +496 -496
- package/src/features/behavior-model/presentation/components/StateDefinitionsEditor.svelte +356 -356
- package/src/features/behavior-model/presentation/components/SurfaceEntitiesView.svelte +88 -88
- package/src/features/behavior-model/presentation/components/SurfaceInvariantsEditor.svelte +76 -76
- package/src/features/behavior-model/presentation/components/SurfaceList.svelte +300 -300
- package/src/features/behavior-model/presentation/components/SurfaceMetaEditor.svelte +158 -156
- package/src/features/behavior-model/presentation/components/SurfacePanel.svelte +198 -198
- package/src/features/behavior-model/presentation/components/SurfacePersonasView.svelte +122 -122
- package/src/features/behavior-model/presentation/components/SurfaceResourcesView.svelte +113 -113
- package/src/features/behavior-model/presentation/components/SurfaceRulesEditor.svelte +69 -69
- package/src/features/behavior-model/presentation/components/TransitionsManager.svelte +322 -321
- package/src/features/behavior-model/presentation/context/featureQueueContext.ts +78 -0
- package/src/features/behavior-model/presentation/stores/editorStore.svelte.ts +132 -131
- package/src/features/behavior-model/presentation/stores/featureStore.svelte.ts +177 -177
- package/src/features/behavior-model/presentation/stores/featuresStore.svelte.ts +98 -98
- package/src/features/behavior-model/presentation/view-models/BehaviorGraphTheme.ts +44 -0
- package/src/features/behavior-model/presentation/view-models/factories.ts +181 -132
- package/src/features/builder-mode/domain/BuilderModeDashboard.ts +7 -1
- package/src/features/builder-mode/presentation/components/BuilderModeDashboard.svelte +78 -16
- package/src/features/builder-mode/presentation/components/BuilderTagChips.svelte +25 -0
- package/src/features/builder-mode/presentation/stores/builderModeStore.svelte.ts +247 -3
- package/src/features/domains/infrastructure/persistence/JsonFolderDomainRepository.ts +9 -0
- package/src/features/global-search/application/use-cases/LoadSearchIndex.ts +70 -0
- package/src/features/global-search/domain/SearchDoc.ts +111 -0
- package/src/features/global-search/domain/buildSearchDocs.ts +483 -0
- package/src/features/global-search/domain/searchNav.ts +58 -0
- package/src/features/global-search/domain/searchScoring.ts +81 -0
- package/src/features/global-search/infrastructure/adapters/defaultSearchHost.ts +28 -0
- package/src/features/global-search/presentation/components/GlobalSearch.svelte +262 -0
- package/src/features/global-search/presentation/ports/SearchHostPorts.ts +41 -0
- package/src/features/global-search/presentation/searchKindMeta.ts +108 -0
- package/src/features/global-search/presentation/stores/globalSearchStore.svelte.ts +171 -0
- package/src/features/implementation-queue/presentation/components/FloatingQueueWidget.svelte +264 -0
- package/src/features/implementation-queue/presentation/stores/globalQueueStore.svelte.ts +172 -0
- package/src/features/implementation-status/application/ports/ImplementationStatusRepository.ts +8 -8
- package/src/features/implementation-status/application/use-cases/GetImplementationStatus.ts +8 -8
- package/src/features/implementation-status/domain/ApplyCapturedToSpec.ts +323 -322
- package/src/features/implementation-status/domain/FieldDiff.ts +238 -236
- package/src/features/implementation-status/infrastructure/persistence/InMemoryImplementationStatusRepository.ts +21 -21
- package/src/features/implementation-status/presentation/components/ImplementationStatusPanel.svelte +831 -831
- package/src/features/implementation-status/presentation/stores/implementationStatusStore.svelte.ts +97 -97
- package/src/features/library/application/use-cases/ApplyBlueprintsToFeature.ts +33 -33
- package/src/features/library/domain/services/BlueprintApplier.ts +94 -94
- package/src/features/library/infrastructure/blueprints/auth/ResetPasswordBlueprint.ts +332 -332
- package/src/features/library/infrastructure/blueprints/auth/SignInBlueprint.ts +281 -281
- package/src/features/library/infrastructure/blueprints/auth/SignUpBlueprint.ts +299 -299
- package/src/features/library/infrastructure/blueprints/auth/VerifyEmailBlueprint.ts +288 -288
- package/src/features/library/infrastructure/blueprints/auth/shared.ts +146 -146
- package/src/features/library/infrastructure/blueprints/commerce/CartBlueprint.ts +222 -222
- package/src/features/library/infrastructure/blueprints/commerce/CatalogBlueprint.ts +190 -190
- package/src/features/library/infrastructure/blueprints/commerce/CheckoutBlueprint.ts +322 -322
- package/src/features/library/infrastructure/blueprints/commerce/OrderConfirmationBlueprint.ts +172 -172
- package/src/features/library/infrastructure/blueprints/commerce/ProductDetailsBlueprint.ts +290 -290
- package/src/features/library/infrastructure/blueprints/content/ReviewsBlueprint.ts +392 -392
- package/src/features/library/infrastructure/blueprints/onboarding/OnboardingWizardBlueprint.ts +344 -344
- package/src/features/library/infrastructure/blueprints/utility/CanvasBlueprint.ts +419 -419
- package/src/features/library/infrastructure/blueprints/utility/CookieConsentBlueprint.ts +195 -195
- package/src/features/library/infrastructure/blueprints/utility/NotFoundBlueprint.ts +86 -86
- package/src/features/library/infrastructure/blueprints/utility/SearchPaletteBlueprint.ts +192 -192
- package/src/features/library/infrastructure/blueprints/utility/StoreLocatorBlueprint.ts +221 -221
- package/src/features/library/infrastructure/blueprints/utility/TaskBoardBlueprint.ts +196 -196
- package/src/features/maturity/application/use-cases/ScoreFeature.ts +7 -7
- package/src/features/maturity/domain/MaturityReport.ts +70 -70
- package/src/features/maturity/domain/MaturityScorer.ts +1001 -985
- package/src/features/maturity/presentation/components/MaturityPanel.svelte +376 -372
- package/src/features/mcp-tools/application/tools/dryRunSimulate.ts +24 -24
- package/src/features/mcp-tools/application/tools/findStateReferences.ts +19 -19
- package/src/features/mcp-tools/application/tools/generateTypes.ts +0 -1
- package/src/features/mcp-tools/application/tools/getAction.ts +165 -165
- package/src/features/mcp-tools/application/tools/getFeature.ts +5 -5
- package/src/features/mcp-tools/application/tools/getFeatureIndex.ts +79 -79
- package/src/features/mcp-tools/application/tools/getNeighborhood.ts +319 -319
- package/src/features/mcp-tools/application/tools/getSurface.ts +86 -86
- package/src/features/mcp-tools/application/tools/index.ts +56 -56
- package/src/features/mcp-tools/application/tools/listActions.ts +49 -49
- package/src/features/mcp-tools/application/tools/listFeatures.ts +7 -7
- package/src/features/mcp-tools/application/tools/scoreFeature.ts +153 -153
- package/src/features/projects/application/ports/ProjectRepository.ts +14 -14
- package/src/features/projects/application/use-cases/AddFeatureToProject.ts +23 -23
- package/src/features/projects/application/use-cases/CreateProject.ts +16 -16
- package/src/features/projects/application/use-cases/FindProjectContainingFeature.ts +23 -23
- package/src/features/projects/application/use-cases/GetProjectAggregate.ts +131 -131
- package/src/features/projects/application/use-cases/ImportProjectBundle.ts +45 -0
- package/src/features/projects/application/use-cases/MoveFeatureInProject.ts +36 -36
- package/src/features/projects/application/use-cases/RemoveFeatureFromProject.ts +23 -23
- package/src/features/projects/domain/entities/Project.ts +12 -0
- package/src/features/projects/domain/services/InheritedFromProject.ts +130 -130
- package/src/features/projects/infrastructure/persistence/JsonFolderProjectRepository.ts +9 -0
- package/src/features/projects/presentation/components/ProjectCard.svelte +27 -8
- package/src/features/projects/presentation/components/ProjectEditor.svelte +23 -19
- package/src/features/projects/presentation/components/ProjectFeaturesPanel.svelte +433 -433
- package/src/features/projects/presentation/components/ProjectsIndex.svelte +54 -10
- package/src/features/projects/presentation/stores/projectContextStore.svelte.ts +170 -170
- package/src/features/projects/presentation/stores/projectFeaturesStore.svelte.ts +114 -114
- package/src/features/projects/presentation/stores/projectStore.svelte.ts +265 -266
- package/src/features/projects/presentation/stores/projectsStore.svelte.ts +134 -134
- package/src/features/simulator/application/use-cases/RunScenarios.ts +27 -1
- package/src/features/simulator/application/use-cases/SimulateAction.ts +47 -47
- package/src/features/simulator/domain/SimulationResult.ts +79 -79
- package/src/features/simulator/domain/SimulatorEngine.ts +43 -9
- package/src/features/simulator/domain/StateExplorer.ts +369 -0
- package/src/features/simulator/domain/SurfaceReachability.ts +130 -0
- package/src/features/simulator/presentation/components/ParameterInputs.svelte +277 -277
- package/src/features/simulator/presentation/components/PersonaPicker.svelte +52 -52
- package/src/features/simulator/presentation/components/ScenarioPicker.svelte +42 -45
- package/src/features/simulator/presentation/components/SidePanel.svelte +170 -170
- package/src/features/simulator/presentation/components/SimulationResultView.svelte +394 -394
- package/src/features/simulator/presentation/components/SimulatorPanel.svelte +293 -293
- package/src/features/simulator/presentation/components/StateInspector.svelte +101 -101
- package/src/features/simulator/presentation/stores/simulatorStore.svelte.ts +268 -268
- package/src/features/tutorial/presentation/components/CodeBlock.svelte +5 -1
- package/src/features/verification/application/ports/BehavioralIndexReader.ts +12 -0
- package/src/features/verification/application/use-cases/VerifyFeatures.ts +151 -0
- package/src/features/verification/domain/DriftReport.ts +37 -0
- package/src/features/verification/domain/EventCoherenceReport.ts +27 -0
- package/src/features/verification/domain/IndexedImplementation.ts +27 -0
- package/src/features/verification/domain/VerificationReport.ts +59 -0
- package/src/features/verification/domain/VerificationThresholds.ts +52 -0
- package/src/features/verification/domain/VerificationVerdict.ts +43 -0
- package/src/features/verification/domain/aggregateVerdict.ts +244 -0
- package/src/features/verification/domain/analyzeEventCoherence.ts +43 -0
- package/src/features/verification/domain/detectDrift.ts +166 -0
- package/src/features/verification/domain/verifiedCoverage.ts +37 -0
- package/src/features/verification/infrastructure/persistence/FileBehavioralIndexReader.ts +81 -0
- package/src/features/verification/infrastructure/persistence/StaticBehavioralIndexReader.ts +15 -0
- package/src/features/verification/presentation/components/VerifyPanel.svelte +74 -0
- package/src/features/verification/presentation/stores/verificationStore.svelte.ts +64 -0
- package/src/hooks.server.ts +11 -1
- package/src/lib/server/openLocalDirectory.ts +40 -0
- package/src/lib/server/searchIndex.ts +161 -0
- package/src/lib/server/snapshotRepository.ts +37 -37
- package/src/lib/server/sync/YDocManager.ts +391 -391
- package/src/lib/server/sync/historyStore.ts +276 -276
- package/src/lib/server/sync/wsServer.ts +1 -1
- package/src/lib/sync/protocol.ts +147 -147
- package/src/lib/sync/roomId.ts +33 -33
- package/src/lib/theme/registry.ts +77 -0
- package/src/lib/theme/themeStore.svelte.ts +64 -0
- package/src/routes/+layout.svelte +288 -30
- package/src/routes/api/domains/[id]/+server.ts +7 -3
- package/src/routes/api/projects/[id]/+server.ts +14 -4
- package/src/routes/api/projects/import/+server.ts +16 -38
- package/src/routes/api/search-index/+server.ts +16 -0
- package/src/routes/api/snapshots/[id]/+server.ts +56 -44
- package/src/routes/api/snapshots/[id]/implementation-status/+server.ts +13 -13
- package/src/routes/api/snapshots/[id]/verify/+server.ts +37 -0
- package/src/routes/api/sync/reload/+server.ts +157 -157
- package/src/routes/api/system/hub-directory/+server.ts +24 -0
- package/src/routes/features/+page.svelte +484 -484
- package/src/routes/features/[id]/+page.svelte +55 -49
- package/src/routes/features/[id]/graph/+page.svelte +39 -0
- package/src/routes/features/[id]/verify/+page.svelte +89 -0
- package/src/routes/mcp/+page.svelte +16 -1
- package/src/routes/projects/[id]/+page.svelte +70 -70
- package/src/routes/projects/[id]/graph/+page.svelte +79 -0
- package/src/routes/tutorial/+page.svelte +3 -2
- package/src/shared/infrastructure/browserContainer.ts +61 -61
- package/src/shared/presentation/components/KebabMenu.svelte +95 -0
- package/src/shared/presentation/components/MenuItem.svelte +29 -0
- package/src/shared/presentation/components/ProgressBar.svelte +1 -1
- package/src/shared/presentation/toast/SyncToast.svelte +14 -3
- package/src/shared/presentation/toast/viewLinkResolver.ts +32 -0
- package/static/lyriks_logo.svg +148 -0
- package/vite.config.ts +47 -47
- package/build/client/_app/immutable/assets/0.DFMDYAU9.css +0 -1
- package/build/client/_app/immutable/assets/0.DFMDYAU9.css.br +0 -0
- package/build/client/_app/immutable/assets/0.DFMDYAU9.css.gz +0 -0
- package/build/client/_app/immutable/assets/9.nv0I59TU.css.gz +0 -0
- package/build/client/_app/immutable/chunks/BO66rBOa2.js +0 -1
- package/build/client/_app/immutable/chunks/BO66rBOa2.js.br +0 -0
- package/build/client/_app/immutable/chunks/BO66rBOa2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BOrLmFwJ.js.br +0 -0
- package/build/client/_app/immutable/chunks/BOrLmFwJ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BfMYiIUi.js.br +0 -0
- package/build/client/_app/immutable/chunks/BfMYiIUi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bp2_Vghh.js +0 -1
- package/build/client/_app/immutable/chunks/Bp2_Vghh.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bp2_Vghh.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bp8HpEPe2.js +0 -4
- package/build/client/_app/immutable/chunks/Bp8HpEPe2.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bp8HpEPe2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C8rRKIXT.js +0 -1
- package/build/client/_app/immutable/chunks/C8rRKIXT.js.br +0 -0
- package/build/client/_app/immutable/chunks/C8rRKIXT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CJjJLwzv2.js +0 -1
- package/build/client/_app/immutable/chunks/CJjJLwzv2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CJjJLwzv2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CxyLMlpt2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CxyLMlpt2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D6jhrpTg.js +0 -1
- package/build/client/_app/immutable/chunks/D6jhrpTg.js.br +0 -0
- package/build/client/_app/immutable/chunks/D6jhrpTg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D8YEa1po.js +0 -1
- package/build/client/_app/immutable/chunks/D8YEa1po.js.br +0 -0
- package/build/client/_app/immutable/chunks/D8YEa1po.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D9dKmajw.js +0 -1
- package/build/client/_app/immutable/chunks/D9dKmajw.js.br +0 -0
- package/build/client/_app/immutable/chunks/D9dKmajw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DBJWcC6Y.js +0 -1
- package/build/client/_app/immutable/chunks/DBJWcC6Y.js.br +0 -0
- package/build/client/_app/immutable/chunks/DBJWcC6Y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DHoA038D.js +0 -1
- package/build/client/_app/immutable/chunks/DHoA038D.js.br +0 -2
- package/build/client/_app/immutable/chunks/DHoA038D.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DKgYpi6_.js +0 -1
- package/build/client/_app/immutable/chunks/DKgYpi6_.js.br +0 -0
- package/build/client/_app/immutable/chunks/DKgYpi6_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DatGSObE.js +0 -1
- package/build/client/_app/immutable/chunks/DatGSObE.js.br +0 -0
- package/build/client/_app/immutable/chunks/DatGSObE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dg0acPpT.js +0 -1
- package/build/client/_app/immutable/chunks/Dg0acPpT.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dg0acPpT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DjWKKtqp.js +0 -1
- package/build/client/_app/immutable/chunks/DjWKKtqp.js.br +0 -1
- package/build/client/_app/immutable/chunks/DjWKKtqp.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dq0DUAz1.js +0 -1
- package/build/client/_app/immutable/chunks/Dq0DUAz1.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dq0DUAz1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/HKLi1Yz3.js +0 -1
- package/build/client/_app/immutable/chunks/HKLi1Yz3.js.br +0 -0
- package/build/client/_app/immutable/chunks/HKLi1Yz3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/N7PXjlRH.js +0 -1
- package/build/client/_app/immutable/chunks/N7PXjlRH.js.br +0 -0
- package/build/client/_app/immutable/chunks/N7PXjlRH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/hpWJNn0t2.js +0 -2
- package/build/client/_app/immutable/chunks/hpWJNn0t2.js.br +0 -0
- package/build/client/_app/immutable/chunks/hpWJNn0t2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/iQu0D9Ux.js +0 -1
- package/build/client/_app/immutable/chunks/iQu0D9Ux.js.br +0 -0
- package/build/client/_app/immutable/chunks/iQu0D9Ux.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CLgh6Mx_.js +0 -2
- package/build/client/_app/immutable/entry/app.CLgh6Mx_.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CLgh6Mx_.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.D5GPCQZD.js +0 -1
- package/build/client/_app/immutable/entry/start.D5GPCQZD.js.br +0 -0
- package/build/client/_app/immutable/entry/start.D5GPCQZD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.BOoI-hsu.js +0 -4
- package/build/client/_app/immutable/nodes/0.BOoI-hsu.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.BOoI-hsu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.KYdA6ppX.js.br +0 -2
- package/build/client/_app/immutable/nodes/1.KYdA6ppX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.DBz20KgG.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.DBz20KgG.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.19DIoFtw.js +0 -1
- package/build/client/_app/immutable/nodes/3.19DIoFtw.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.19DIoFtw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.BvMzqBJj.js +0 -3
- package/build/client/_app/immutable/nodes/4.BvMzqBJj.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.BvMzqBJj.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.Dq6obSGG.js +0 -42
- package/build/client/_app/immutable/nodes/5.Dq6obSGG.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.Dq6obSGG.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BOHISqs-.js +0 -5
- package/build/client/_app/immutable/nodes/6.BOHISqs-.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BOHISqs-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.CemgNJfw.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.CemgNJfw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.DejSfIYh.js +0 -5
- package/build/client/_app/immutable/nodes/8.DejSfIYh.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.DejSfIYh.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.CMW6a2Lg.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.CMW6a2Lg.js.gz +0 -0
- package/build/server/chunks/0-C_o0oz-N.js +0 -15
- package/build/server/chunks/0-C_o0oz-N.js.map +0 -1
- package/build/server/chunks/1-DPpKAKXV.js +0 -9
- package/build/server/chunks/2-AlfFqtL1.js +0 -9
- package/build/server/chunks/2-AlfFqtL1.js.map +0 -1
- package/build/server/chunks/3-vbjUt_51.js +0 -16
- package/build/server/chunks/3-vbjUt_51.js.map +0 -1
- package/build/server/chunks/4-BNow4x6D.js +0 -16
- package/build/server/chunks/4-BNow4x6D.js.map +0 -1
- package/build/server/chunks/5-D7OCJpxD.js +0 -9
- package/build/server/chunks/5-D7OCJpxD.js.map +0 -1
- package/build/server/chunks/6-QQ7r8Rd5.js +0 -9
- package/build/server/chunks/7-CbPLGaIG.js +0 -9
- package/build/server/chunks/7-CbPLGaIG.js.map +0 -1
- package/build/server/chunks/8-CVO-E-sf.js +0 -9
- package/build/server/chunks/8-CVO-E-sf.js.map +0 -1
- package/build/server/chunks/9-DxT1baO5.js +0 -9
- package/build/server/chunks/9-DxT1baO5.js.map +0 -1
- package/build/server/chunks/FeatureTransforms-UWDHmWEg.js.map +0 -1
- package/build/server/chunks/FeatureValidator-B8qEjAUW.js.map +0 -1
- package/build/server/chunks/ManageTagsDialog-DBxA3tM2.js.map +0 -1
- package/build/server/chunks/ProgressBar-CfhccQ83.js.map +0 -1
- package/build/server/chunks/ProjectsIndex-CoDrvRya.js.map +0 -1
- package/build/server/chunks/RenameTag-BuWLMl1m.js.map +0 -1
- package/build/server/chunks/TagDotStrip-B1XQ0m0Y.js.map +0 -1
- package/build/server/chunks/TagPalette-CtMNYCmu.js.map +0 -1
- package/build/server/chunks/_layout.svelte-BREws55o.js +0 -616
- package/build/server/chunks/_layout.svelte-BREws55o.js.map +0 -1
- package/build/server/chunks/_page.svelte-B1s7jxaQ.js.map +0 -1
- package/build/server/chunks/_page.svelte-B7hT3P8E.js +0 -29
- package/build/server/chunks/_page.svelte-BqSC-1vK.js.map +0 -1
- package/build/server/chunks/_page.svelte-BtI2zZ_Z.js.map +0 -1
- package/build/server/chunks/_page.svelte-De508ek8.js +0 -29
- package/build/server/chunks/_page.svelte-Zf9H4KOP.js.map +0 -1
- package/build/server/chunks/_server.ts-0uNTZKwF.js.map +0 -1
- package/build/server/chunks/_server.ts-DcZPhyhK.js +0 -59
- package/build/server/chunks/_server.ts-DcZPhyhK.js.map +0 -1
- package/build/server/chunks/_server.ts-Dy5zQHe2.js.map +0 -1
- package/build/server/chunks/_server.ts-YnfXkeMJ.js.map +0 -1
- package/build/server/chunks/_server.ts-vcaqdwxS.js.map +0 -1
- package/build/server/chunks/browserContainer-CNX7ANld.js.map +0 -1
- package/build/server/chunks/builderModeStore.svelte-ihupr-3p.js.map +0 -1
- package/build/server/chunks/client-DfpLcAZ9.js +0 -24
- package/build/server/chunks/featuresStore.svelte-DR1gYZyu.js +0 -98
- package/build/server/chunks/featuresStore.svelte-DR1gYZyu.js.map +0 -1
- package/build/server/chunks/hooks.server-Rv301GTB.js.map +0 -1
- package/build/server/chunks/identityStore.svelte-IIvW2_3b.js +0 -59
- package/build/server/chunks/identityStore.svelte-IIvW2_3b.js.map +0 -1
- package/build/server/chunks/projectsStore.svelte-QDz5PchX.js.map +0 -1
- package/build/server/chunks/reconcile-Dv7jS3C8.js.map +0 -1
- package/build/server/chunks/snapshotRepository-BPXCjX92.js.map +0 -1
- package/build/server/chunks/syncBridge-BwXzPdjJ.js.map +0 -1
- package/src/features/implementation-queue/presentation/components/QueuePanel.svelte +0 -204
- package/src/features/implementation-queue/presentation/stores/queueStore.svelte.ts +0 -143
- /package/build/client/_app/immutable/assets/{9.nv0I59TU.css → 12.nv0I59TU.css} +0 -0
- /package/build/client/_app/immutable/assets/{9.nv0I59TU.css.br → 12.nv0I59TU.css.br} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-BAyekGHB.js","sources":["../../../.svelte-kit/adapter-node/chunks/RunScenarios.js","../../../.svelte-kit/adapter-node/entries/endpoints/api/snapshots/_id_/verify/_server.ts.js"],"sourcesContent":["import { i as advanceClock } from \"./StateValue.js\";\nimport { a as evaluateCondition, o as fillDefaults, t as simulate } from \"./SimulatorEngine.js\";\nimport { i as applyPersonaToSnapshot, n as applyScenarioToSnapshot, r as applyPersonaToParameters, t as applyScenarioToParameters } from \"./ScenarioApplier.js\";\n//#region src/features/simulator/application/use-cases/RunScenarios.ts\n/**\n* Evaluate a scenario's expectedAssertions against a post-simulation snapshot.\n* Shared by the subject action and by each multi-step step. On a `blocked`\n* status every assertion is reported `held: null, skipped: true`: comparing\n* \"state after success\" to a snapshot where no success effects ran is\n* meaningless, so the runner skips explicitly instead of silently evaluating\n* against the untouched snapshot.\n*/\nvar evaluateAssertions = (assertions, status, snapshot, params) => assertions.map((a) => {\n\tif (status === \"blocked\") return {\n\t\tpath: String(a.path),\n\t\toperator: a.operator,\n\t\theld: null,\n\t\tskipped: true,\n\t\t...a.description ? { description: a.description } : {}\n\t};\n\tconst rawPath = a.path;\n\tif (typeof rawPath !== \"string\" || rawPath.length === 0) return {\n\t\tpath: String(a.path),\n\t\toperator: a.operator,\n\t\theld: false,\n\t\t...a.description ? { description: a.description } : {}\n\t};\n\tconst held = evaluateCondition({\n\t\tleft: a.path,\n\t\toperator: a.operator,\n\t\tright: a.value\n\t}, snapshot, params);\n\treturn {\n\t\tpath: rawPath,\n\t\toperator: a.operator,\n\t\theld,\n\t\t...a.description ? { description: a.description } : {}\n\t};\n});\nvar runOne = (surface, action, scenario, feature, projectFeatures) => {\n\tconst persona = scenario.personaId !== void 0 ? feature.personas.find((p) => p.id === scenario.personaId) ?? null : null;\n\tif (scenario.personaId !== void 0 && persona === null) throw new Error(`Scenario ${scenario.id} references unknown personaId \"${String(scenario.personaId)}\"`);\n\tconst personaSnapshot = persona ? applyPersonaToSnapshot(persona, {}) : {};\n\tconst personaParams = persona ? applyPersonaToParameters(persona, action, {}) : {};\n\tconst baseSnapshot = applyScenarioToSnapshot(scenario, personaSnapshot);\n\tconst stepResults = [];\n\tlet snapshot = baseSnapshot;\n\tfor (const [index, step] of (scenario.steps ?? []).entries()) {\n\t\tconst stepSurface = step.surfaceId === void 0 ? surface : feature.surfaces.find((s) => s.id === step.surfaceId);\n\t\tconst stepAction = stepSurface?.actions.find((a) => a.id === step.actionId);\n\t\tif (!stepSurface || !stepAction) throw new Error(`Scenario ${scenario.id} step ${index} references unknown ${!stepSurface ? `surfaceId \"${String(step.surfaceId)}\"` : `actionId \"${String(step.actionId)}\"`}`);\n\t\tconst stepPersonaParams = persona ? applyPersonaToParameters(persona, stepAction, {}) : {};\n\t\tconst stepParamNames = new Set(stepAction.parameters.map((p) => p.name));\n\t\tconst stepOverrideParams = {};\n\t\tfor (const ov of step.parameterOverrides) if (stepParamNames.has(ov.parameterName)) stepOverrideParams[ov.parameterName] = ov.value;\n\t\tconst stepParams = {\n\t\t\t...stepPersonaParams,\n\t\t\t...stepOverrideParams\n\t\t};\n\t\tif (step.timeAdvance !== void 0 && step.timeAdvance !== 0) snapshot = advanceClock(snapshot, step.timeAdvance);\n\t\tconst stepResult = simulate({\n\t\t\tsurface: stepSurface,\n\t\t\taction: stepAction,\n\t\t\tsnapshot,\n\t\t\tparameters: stepParams,\n\t\t\tfeatureInvariants: feature.featureInvariants,\n\t\t\tfeature,\n\t\t\t...projectFeatures ? { projectFeatures } : {}\n\t\t});\n\t\tsnapshot = stepResult.nextState;\n\t\tconst stepStatus = stepResult.status === \"blocked\" ? \"blocked\" : \"success\";\n\t\tconst stepExpected = step.expectedStatus ?? \"success\";\n\t\tconst stepStatusMatches = stepStatus === stepExpected;\n\t\tconst stepFilled = fillDefaults(stepAction.parameters, stepParams);\n\t\tconst stepAssertions = evaluateAssertions(step.expectedAssertions ?? [], stepStatus, stepResult.nextState, stepFilled);\n\t\tconst stepAssertionsHold = stepAssertions.every((a) => a.skipped || a.held);\n\t\tconst stepPass = stepStatusMatches && stepAssertionsHold;\n\t\tconst stepFailedAssertions = stepAssertions.filter((a) => !a.skipped && !a.held).length;\n\t\tstepResults.push({\n\t\t\tindex,\n\t\t\tsurfaceId: stepSurface.id,\n\t\t\tactionId: stepAction.id,\n\t\t\tactionName: stepAction.name,\n\t\t\tdescription: step.description ?? null,\n\t\t\tactualStatus: stepStatus,\n\t\t\texpectedStatus: stepExpected,\n\t\t\tstatusMatches: stepStatusMatches,\n\t\t\tassertions: stepAssertions,\n\t\t\tparameterErrors: stepResult.parameterErrors,\n\t\t\tinvariantViolations: stepResult.invariantViolations,\n\t\t\tpass: stepPass,\n\t\t\tsummary: stepPass ? `pass. ${stepStatus}` : !stepStatusMatches ? `status was ${stepStatus} but expected ${stepExpected}` : `${stepFailedAssertions} assertion${stepFailedAssertions === 1 ? \"\" : \"s\"} did not hold`\n\t\t});\n\t}\n\tconst scenarioParams = applyScenarioToParameters(scenario, action, {});\n\tconst baseParams = {\n\t\t...personaParams,\n\t\t...scenarioParams\n\t};\n\tif (scenario.timeAdvance !== void 0 && scenario.timeAdvance !== 0) snapshot = advanceClock(snapshot, scenario.timeAdvance);\n\tconst result = simulate({\n\t\tsurface,\n\t\taction,\n\t\tsnapshot,\n\t\tparameters: baseParams,\n\t\tfeatureInvariants: feature.featureInvariants,\n\t\tfeature,\n\t\t...projectFeatures ? { projectFeatures } : {}\n\t});\n\tconst filledParams = fillDefaults(action.parameters, baseParams);\n\tconst finalSnapshot = result.nextState;\n\tconst actualStatus = result.status === \"blocked\" ? \"blocked\" : \"success\";\n\tconst assertions = evaluateAssertions(scenario.expectedAssertions ?? [], actualStatus, finalSnapshot, filledParams);\n\tconst expectedStatus = scenario.expectedStatus ?? null;\n\tconst statusMatches = expectedStatus === null || expectedStatus === actualStatus;\n\tconst assertionsHold = assertions.every((a) => a.skipped || a.held);\n\tconst silentSkipFail = assertions.length > 0 && assertions.every((a) => a.skipped) && expectedStatus !== \"blocked\";\n\tconst transitionCheck = scenario.expectedTransition === void 0 ? null : actualStatus === \"blocked\" ? {\n\t\texpected: scenario.expectedTransition,\n\t\tactual: result.transition,\n\t\tmatches: true\n\t} : {\n\t\texpected: scenario.expectedTransition,\n\t\tactual: result.transition,\n\t\tmatches: scenario.expectedTransition === result.transition\n\t};\n\tconst transitionOk = transitionCheck === null || transitionCheck.matches;\n\tconst stepsPass = stepResults.every((s) => s.pass);\n\tconst firstFailedStep = stepResults.find((s) => !s.pass);\n\tconst pass = stepsPass && statusMatches && assertionsHold && transitionOk && !silentSkipFail;\n\tconst failedAssertionCount = assertions.filter((a) => !a.skipped && !a.held).length;\n\tconst paramErrorBlurb = result.parameterErrors.length > 0 ? ` (parameter validation rejected: ${result.parameterErrors.map((e) => `${e.parameterName}. ${e.reason}`).join(\"; \")})` : \"\";\n\tconst invariantBlurb = result.invariantViolations.length > 0 ? ` (invariant violations: ${result.invariantViolations.map((v) => v.invariantName).join(\", \")})` : \"\";\n\tconst evaluatedAssertionCount = assertions.filter((a) => !a.skipped).length;\n\tconst skippedAssertionCount = assertions.length - evaluatedAssertionCount;\n\tconst skippedBlurb = skippedAssertionCount > 0 ? `, ${skippedAssertionCount} skipped (action was blocked)` : \"\";\n\tconst transitionBlurb = transitionCheck && !transitionCheck.matches ? ` (transition went to ${String(transitionCheck.actual)} but expected ${String(transitionCheck.expected)})` : \"\";\n\tconst stepPrefix = stepResults.length > 0 ? `${stepResults.length} step${stepResults.length === 1 ? \"\" : \"s\"} ok, ` : \"\";\n\tconst summary = pass ? `pass. ${stepPrefix}${actualStatus}${evaluatedAssertionCount > 0 ? `, ${evaluatedAssertionCount} assertion${evaluatedAssertionCount === 1 ? \"\" : \"s\"} held` : \"\"}${skippedBlurb}` : `fail. ${!stepsPass && firstFailedStep ? `step ${firstFailedStep.index} (${firstFailedStep.actionName}): ${firstFailedStep.summary}` : !statusMatches ? `status was ${actualStatus} but expected ${expectedStatus}${paramErrorBlurb}${invariantBlurb}` : !transitionOk ? `transition mismatch${transitionBlurb}` : silentSkipFail ? `action was blocked so all ${assertions.length} assertion${assertions.length === 1 ? \"\" : \"s\"} skipped. Set expectedStatus:\"blocked\" if the block is intentional; otherwise fix the scenario so the action runs.${paramErrorBlurb}${invariantBlurb}` : `${failedAssertionCount}/${evaluatedAssertionCount} assertion${evaluatedAssertionCount === 1 ? \"\" : \"s\"} did not hold${invariantBlurb}`}`;\n\treturn {\n\t\tsurfaceId: surface.id,\n\t\tactionId: action.id,\n\t\tactionName: action.name,\n\t\tscenarioId: scenario.id,\n\t\tscenarioName: scenario.name,\n\t\tpersonaId: persona ? String(persona.id) : null,\n\t\tpersonaName: persona?.name ?? null,\n\t\tpass,\n\t\tactualStatus,\n\t\texpectedStatus,\n\t\tstatusMatches,\n\t\tassertions,\n\t\tsteps: stepResults,\n\t\ttransitionCheck,\n\t\tparameterErrors: result.parameterErrors,\n\t\tinvariantViolations: result.invariantViolations,\n\t\tsummary\n\t};\n};\n/**\n* Walk the feature, optionally filtered to one surface or one action,\n* and execute every scenario through the deterministic simulator. Reports\n* pass/fail per scenario so scenarios become executable specs (the report's\n* \"scenarios are decorative\" complaint).\n*/\nvar runScenariosUseCase = () => {\n\treturn (input) => {\n\t\tconst results = [];\n\t\tfor (const surface of input.feature.surfaces) {\n\t\t\tif (input.surfaceId && surface.id !== input.surfaceId) continue;\n\t\t\tfor (const action of surface.actions) {\n\t\t\t\tif (input.actionId && action.id !== input.actionId) continue;\n\t\t\t\tconst scenarios = action.scenarios ?? [];\n\t\t\t\tfor (const scenario of scenarios) results.push(runOne(surface, action, scenario, input.feature, input.projectFeatures));\n\t\t\t}\n\t\t}\n\t\tconst passed = results.filter((r) => r.pass).length;\n\t\treturn {\n\t\t\tfeatureId: String(input.feature.id),\n\t\t\tfeatureName: input.feature.name,\n\t\t\ttotal: results.length,\n\t\t\tpassed,\n\t\t\tfailed: results.length - passed,\n\t\t\tresults\n\t\t};\n\t};\n};\n//#endregion\nexport { runScenariosUseCase as t };\n","import { t as getSnapshotRepository } from \"../../../../../../chunks/snapshotRepository.js\";\nimport { a as evaluateCondition, i as recomputeDerived, n as buildInitialSnapshot, o as fillDefaults, r as collectDerivedDefs, s as scoreFeature, t as simulate, u as isEvolution } from \"../../../../../../chunks/SimulatorEngine.js\";\nimport { t as runScenariosUseCase } from \"../../../../../../chunks/RunScenarios.js\";\nimport { json } from \"@sveltejs/kit\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join, parse, resolve } from \"node:path\";\n//#region src/features/simulator/domain/StateExplorer.ts\nvar DEFAULT_MAX_DEPTH = 6;\nvar DEFAULT_MAX_STATES = 2e3;\n/**\n* Order-stable canonical serialization for the visited set: object keys sorted,\n* array order preserved (order is semantically meaningful for lists).\n*/\nvar canonical = (v) => {\n\tif (v === void 0) return \"undefined\";\n\tif (v === null || typeof v !== \"object\") return JSON.stringify(v);\n\tif (Array.isArray(v)) return `[${v.map(canonical).join(\",\")}]`;\n\tconst obj = v;\n\treturn `{${Object.keys(obj).sort().map((k) => `${JSON.stringify(k)}:${canonical(obj[k])}`).join(\",\")}}`;\n};\nvar requiresUnsuppliableParam = (action) => action.parameters.some((p) => p.required && p.defaultValue === void 0);\nvar exploreStateSpace = (feature, options = {}, projectFeatures) => {\n\tconst maxDepth = options.maxDepth ?? DEFAULT_MAX_DEPTH;\n\tconst maxStates = options.maxStates ?? DEFAULT_MAX_STATES;\n\tconst allDefs = [...feature.surfaces.flatMap((s) => s.stateDefinitions), ...options.seedStateDefs ?? []];\n\tconst derivedDefs = collectDerivedDefs(allDefs);\n\tconst checkedInvariants = [...feature.featureInvariants ?? [], ...options.extraInvariants ?? []];\n\tconst moves = [];\n\tconst skippedActions = [];\n\tfor (const surface of feature.surfaces) for (const action of surface.actions) {\n\t\tif (isEvolution(action)) continue;\n\t\tif (requiresUnsuppliableParam(action)) {\n\t\t\tskippedActions.push({\n\t\t\t\tsurfaceId: String(surface.id),\n\t\t\t\tactionId: String(action.id),\n\t\t\t\tactionName: action.name,\n\t\t\t\treason: \"has a required parameter with no default; the explorer cannot invent a value\"\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tmoves.push({\n\t\t\tsurface,\n\t\t\taction\n\t\t});\n\t}\n\tconst goals = feature.reachabilityGoals ?? [];\n\tconst trackGoals = goals.length > 0;\n\tconst initial = recomputeDerived(buildInitialSnapshot(allDefs), derivedDefs);\n\tconst initialKey = canonical(initial);\n\tconst queue = [{\n\t\tsnapshot: initial,\n\t\tpath: [],\n\t\tkey: initialKey\n\t}];\n\tconst visited = new Set([initialKey]);\n\tconst firedActions = /* @__PURE__ */ new Set();\n\tconst violations = [];\n\tconst violationSeen = /* @__PURE__ */ new Set();\n\tlet statesExplored = 0;\n\tlet depthReached = 0;\n\tlet deadlockStates = 0;\n\tlet truncated = false;\n\tconst forwardEdges = /* @__PURE__ */ new Map();\n\tconst expandedPath = /* @__PURE__ */ new Map();\n\tconst goalSatisfyingKeys = /* @__PURE__ */ new Map();\n\tconst goalEvaluated = /* @__PURE__ */ new Set();\n\tfor (const goal of goals) goalSatisfyingKeys.set(String(goal.id), /* @__PURE__ */ new Set());\n\tconst recordGoalSatisfaction = (snapshot, key) => {\n\t\tif (goalEvaluated.has(key)) return;\n\t\tgoalEvaluated.add(key);\n\t\tfor (const goal of goals) if (evaluateCondition(goal.condition, snapshot)) goalSatisfyingKeys.get(String(goal.id)).add(key);\n\t};\n\tif (trackGoals) recordGoalSatisfaction(initial, initialKey);\n\twhile (queue.length > 0) {\n\t\tconst node = queue.shift();\n\t\tif (statesExplored >= maxStates) {\n\t\t\ttruncated = true;\n\t\t\tbreak;\n\t\t}\n\t\tstatesExplored += 1;\n\t\tdepthReached = Math.max(depthReached, node.path.length);\n\t\tif (trackGoals) expandedPath.set(node.key, node.path);\n\t\tlet anySuccess = false;\n\t\tfor (const move of moves) {\n\t\t\tconst params = fillDefaults(move.action.parameters, {});\n\t\t\tconst result = simulate({\n\t\t\t\tsurface: move.surface,\n\t\t\t\taction: move.action,\n\t\t\t\tsnapshot: node.snapshot,\n\t\t\t\tparameters: params,\n\t\t\t\tfeatureInvariants: checkedInvariants,\n\t\t\t\tfeature,\n\t\t\t\t...projectFeatures ? { projectFeatures } : {}\n\t\t\t});\n\t\t\tif (result.invariantViolations.length > 0) {\n\t\t\t\tfor (const v of result.invariantViolations) {\n\t\t\t\t\tconst key = `${v.invariantId}@${move.action.id}`;\n\t\t\t\t\tif (violationSeen.has(key)) continue;\n\t\t\t\t\tviolationSeen.add(key);\n\t\t\t\t\tviolations.push({\n\t\t\t\t\t\tinvariantId: String(v.invariantId),\n\t\t\t\t\t\tinvariantName: v.invariantName,\n\t\t\t\t\t\tsurfaceId: String(move.surface.id),\n\t\t\t\t\t\tactionId: String(move.action.id),\n\t\t\t\t\t\tactionName: move.action.name,\n\t\t\t\t\t\tpath: [...node.path, move.action.name]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (result.status === \"success\") {\n\t\t\t\tfiredActions.add(String(move.action.id));\n\t\t\t\tanySuccess = true;\n\t\t\t\tconst key = canonical(result.nextState);\n\t\t\t\tif (trackGoals) {\n\t\t\t\t\tlet succ = forwardEdges.get(node.key);\n\t\t\t\t\tif (!succ) {\n\t\t\t\t\t\tsucc = /* @__PURE__ */ new Set();\n\t\t\t\t\t\tforwardEdges.set(node.key, succ);\n\t\t\t\t\t}\n\t\t\t\t\tsucc.add(key);\n\t\t\t\t\trecordGoalSatisfaction(result.nextState, key);\n\t\t\t\t}\n\t\t\t\tif (!visited.has(key) && node.path.length < maxDepth) {\n\t\t\t\t\tvisited.add(key);\n\t\t\t\t\tqueue.push({\n\t\t\t\t\t\tsnapshot: result.nextState,\n\t\t\t\t\t\tpath: [...node.path, move.action.name],\n\t\t\t\t\t\tkey\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!anySuccess) deadlockStates += 1;\n\t}\n\tconst deadActions = moves.filter((m) => !firedActions.has(String(m.action.id))).map((m) => ({\n\t\tsurfaceId: String(m.surface.id),\n\t\tactionId: String(m.action.id),\n\t\tactionName: m.action.name\n\t}));\n\tconst goalResults = goals.map((goal) => {\n\t\tconst satisfyingKeys = goalSatisfyingKeys.get(String(goal.id));\n\t\tif (goal.kind === \"reachable\") return {\n\t\t\tgoalId: String(goal.id),\n\t\t\tgoalName: goal.name,\n\t\t\tkind: goal.kind,\n\t\t\tsatisfied: satisfyingKeys.size > 0\n\t\t};\n\t\tconst reachesGoal = reverseReachable(satisfyingKeys, forwardEdges);\n\t\tlet trapPath = null;\n\t\tfor (const [key, path] of expandedPath) if (!reachesGoal.has(key) && (trapPath === null || path.length < trapPath.length)) trapPath = path;\n\t\treturn {\n\t\t\tgoalId: String(goal.id),\n\t\t\tgoalName: goal.name,\n\t\t\tkind: goal.kind,\n\t\t\tsatisfied: trapPath === null,\n\t\t\t...trapPath ? { counterexamplePath: trapPath } : {}\n\t\t};\n\t});\n\treturn {\n\t\tstatesExplored,\n\t\tdepthReached,\n\t\ttruncated,\n\t\tinvariantViolations: violations,\n\t\tdeadActions,\n\t\tdeadlockStates,\n\t\tskippedActions,\n\t\tgoalResults\n\t};\n};\n/**\n* The set of state keys that can reach any key in `targets` by following the\n* transition graph forward — computed by walking the graph BACKWARD from the\n* targets. Used for `always_reachable`: a state outside this set is one from\n* which the goal can no longer be reached (a liveness trap).\n*/\nvar reverseReachable = (targets, forwardEdges) => {\n\tconst reverse = /* @__PURE__ */ new Map();\n\tfor (const [from, tos] of forwardEdges) for (const to of tos) {\n\t\tconst preds = reverse.get(to);\n\t\tif (preds) preds.push(from);\n\t\telse reverse.set(to, [from]);\n\t}\n\tconst reached = new Set(targets);\n\tconst stack = [...targets];\n\twhile (stack.length > 0) {\n\t\tconst current = stack.pop();\n\t\tfor (const pred of reverse.get(current) ?? []) if (!reached.has(pred)) {\n\t\t\treached.add(pred);\n\t\t\tstack.push(pred);\n\t\t}\n\t}\n\treturn reached;\n};\n//#endregion\n//#region src/features/simulator/domain/SurfaceReachability.ts\nvar collectTransitionTarget = (effect, into) => {\n\tif (effect.type === \"transition_surface\") into.push(String(effect.target));\n};\n/** Every surface id this surface can navigate to, declared edges + effect edges. */\nvar outgoingTargets = (surface) => {\n\tconst targets = [];\n\tfor (const transition of surface.transitions) targets.push(String(transition.target));\n\tfor (const action of surface.actions) collectActionTargets(action, targets);\n\tfor (const rule of surface.rules) collectTransitionTarget(rule.effect, targets);\n\treturn targets;\n};\nvar collectActionTargets = (action, into) => {\n\tfor (const effect of action.effects) collectTransitionTarget(effect, into);\n\tfor (const effect of action.onBlockedEffects ?? []) collectTransitionTarget(effect, into);\n\tfor (const rule of action.rules) collectTransitionTarget(rule.effect, into);\n};\nvar analyzeSurfaceReachability = (feature) => {\n\tconst surfaces = feature.surfaces;\n\tif (surfaces.length === 0) return {\n\t\tentrySurfaceId: null,\n\t\treachableSurfaceIds: [],\n\t\tunreachableSurfaces: [],\n\t\tterminalSurfaces: []\n\t};\n\tconst surfaceIds = new Set(surfaces.map((s) => String(s.id)));\n\tconst edges = /* @__PURE__ */ new Map();\n\tfor (const surface of surfaces) edges.set(String(surface.id), outgoingTargets(surface).filter((t) => surfaceIds.has(t)));\n\tconst entry = String(surfaces[0].id);\n\tconst reachable = new Set([entry]);\n\tconst queue = [entry];\n\twhile (queue.length > 0) {\n\t\tconst current = queue.shift();\n\t\tfor (const next of edges.get(current) ?? []) if (!reachable.has(next)) {\n\t\t\treachable.add(next);\n\t\t\tqueue.push(next);\n\t\t}\n\t}\n\tconst unreachableSurfaces = [];\n\tconst terminalSurfaces = [];\n\tfor (const surface of surfaces) {\n\t\tconst id = String(surface.id);\n\t\tif (!reachable.has(id)) unreachableSurfaces.push({\n\t\t\tsurfaceId: id,\n\t\t\tsurfaceName: surface.name\n\t\t});\n\t\tif ((edges.get(id) ?? []).length === 0) terminalSurfaces.push({\n\t\t\tsurfaceId: id,\n\t\t\tsurfaceName: surface.name\n\t\t});\n\t}\n\treturn {\n\t\tentrySurfaceId: entry,\n\t\treachableSurfaceIds: [...reachable],\n\t\tunreachableSurfaces,\n\t\tterminalSurfaces\n\t};\n};\n//#endregion\n//#region src/features/verification/domain/VerificationVerdict.ts\nvar verdictPassed = (checks) => checks.every((c) => c.status !== \"fail\");\n//#endregion\n//#region src/features/verification/domain/aggregateVerdict.ts\nvar scenariosCheck = (scenarios, thresholds) => {\n\tif (scenarios.total === 0) return thresholds.requireScenarios ? {\n\t\tid: \"scenarios\",\n\t\tlabel: \"Scenarios\",\n\t\tstatus: \"fail\",\n\t\tdetail: \"no scenarios authored (required)\"\n\t} : {\n\t\tid: \"scenarios\",\n\t\tlabel: \"Scenarios\",\n\t\tstatus: \"warn\",\n\t\tdetail: \"no scenarios authored\"\n\t};\n\tif (scenarios.failed > thresholds.maxScenarioFailures) return {\n\t\tid: \"scenarios\",\n\t\tlabel: \"Scenarios\",\n\t\tstatus: \"fail\",\n\t\tdetail: `${scenarios.failed}/${scenarios.total} failing (max ${thresholds.maxScenarioFailures})`,\n\t\titems: scenarios.results.filter((r) => !r.pass).map((r) => `${r.actionName} › ${r.scenarioName}`)\n\t};\n\treturn {\n\t\tid: \"scenarios\",\n\t\tlabel: \"Scenarios\",\n\t\tstatus: \"pass\",\n\t\tdetail: `${scenarios.passed}/${scenarios.total} passing`\n\t};\n};\nvar invariantsCheck = (exploration, thresholds) => {\n\tif (exploration.invariantViolations.length === 0) return {\n\t\tid: \"invariants\",\n\t\tlabel: \"Invariants\",\n\t\tstatus: \"pass\",\n\t\tdetail: \"no reachable violation within bounds\"\n\t};\n\treturn {\n\t\tid: \"invariants\",\n\t\tlabel: \"Invariants\",\n\t\tstatus: thresholds.allowInvariantViolations ? \"warn\" : \"fail\",\n\t\tdetail: `${exploration.invariantViolations.length} reachable violation(s)`,\n\t\titems: exploration.invariantViolations.map((v) => `${v.invariantName} via [${v.path.join(\" → \")}]`),\n\t\ttraces: exploration.invariantViolations.map((v) => ({\n\t\t\tlabel: v.invariantName,\n\t\t\tpath: v.path,\n\t\t\tsurfaceId: v.surfaceId,\n\t\t\tactionId: v.actionId\n\t\t}))\n\t};\n};\nvar maturityCheck = (maturity, thresholds) => {\n\tif (thresholds.minMaturity <= 0) return {\n\t\tid: \"maturity\",\n\t\tlabel: \"Maturity\",\n\t\tstatus: \"pass\",\n\t\tdetail: `${maturity.percentage}% (no gate)`\n\t};\n\tconst passed = maturity.percentage >= thresholds.minMaturity;\n\treturn {\n\t\tid: \"maturity\",\n\t\tlabel: \"Maturity\",\n\t\tstatus: passed ? \"pass\" : \"fail\",\n\t\tdetail: `${maturity.percentage}% (min ${thresholds.minMaturity}%)`,\n\t\t...passed ? {} : { items: maturity.criticalIssues.slice(0, 10).map((i) => `${i.area}: ${i.message}`) }\n\t};\n};\nvar verifiedCheck = (coverage, thresholds) => {\n\tconst pct = coverage.total === 0 ? 100 : Math.round(coverage.verified / coverage.total * 100);\n\tif (thresholds.minVerified <= 0) return {\n\t\tid: \"verified\",\n\t\tlabel: \"Verified\",\n\t\tstatus: \"pass\",\n\t\tdetail: `${coverage.verified}/${coverage.total} action(s) proven against code (${pct}%, no gate)`\n\t};\n\treturn {\n\t\tid: \"verified\",\n\t\tlabel: \"Verified\",\n\t\tstatus: pct >= thresholds.minVerified ? \"pass\" : \"fail\",\n\t\tdetail: `${pct}% of actions proven against code (${coverage.verified}/${coverage.total}, min ${thresholds.minVerified}%)`\n\t};\n};\nvar reachabilityCheck = (reachability) => {\n\tif (reachability.unreachableSurfaces.length === 0) return {\n\t\tid: \"reachability\",\n\t\tlabel: \"Reachability\",\n\t\tstatus: \"pass\",\n\t\tdetail: \"every surface is reachable\"\n\t};\n\treturn {\n\t\tid: \"reachability\",\n\t\tlabel: \"Reachability\",\n\t\tstatus: \"warn\",\n\t\tdetail: `${reachability.unreachableSurfaces.length} surface(s) unreachable by navigation`,\n\t\titems: reachability.unreachableSurfaces.map((s) => s.surfaceName)\n\t};\n};\nvar livenessCheck = (exploration, thresholds) => {\n\tconst unmet = exploration.goalResults.filter((g) => !g.satisfied);\n\tif (unmet.length === 0) return {\n\t\tid: \"liveness\",\n\t\tlabel: \"Liveness\",\n\t\tstatus: \"pass\",\n\t\tdetail: `${exploration.goalResults.length} reachability goal(s) hold within bounds`\n\t};\n\treturn {\n\t\tid: \"liveness\",\n\t\tlabel: \"Liveness\",\n\t\tstatus: thresholds.failOnUnmetGoals ? \"fail\" : \"warn\",\n\t\tdetail: `${unmet.length} reachability goal(s) unmet`,\n\t\titems: unmet.map((g) => g.counterexamplePath && g.counterexamplePath.length > 0 ? `${g.goalName} (${g.kind}) — trap via [${g.counterexamplePath.join(\" → \")}]` : `${g.goalName} (${g.kind}) — never reached within bounds`),\n\t\ttraces: unmet.filter((g) => g.counterexamplePath && g.counterexamplePath.length > 0).map((g) => ({\n\t\t\tlabel: `${g.goalName} (${g.kind})`,\n\t\t\tpath: g.counterexamplePath ?? []\n\t\t}))\n\t};\n};\nvar deadActionsCheck = (exploration, thresholds) => {\n\tif (exploration.deadActions.length === 0) return {\n\t\tid: \"dead-actions\",\n\t\tlabel: \"Dead actions\",\n\t\tstatus: \"pass\",\n\t\tdetail: \"none within bounds\"\n\t};\n\treturn {\n\t\tid: \"dead-actions\",\n\t\tlabel: \"Dead actions\",\n\t\tstatus: thresholds.failOnDeadActions ? \"fail\" : \"warn\",\n\t\tdetail: `${exploration.deadActions.length} action(s) never fired within bounds`,\n\t\titems: exploration.deadActions.map((a) => a.actionName)\n\t};\n};\nvar aggregateChecks = (input) => {\n\tconst { scenarios, maturity, exploration, reachability, drift, deadHandlers, verifiedCoverage, thresholds } = input;\n\tconst checks = [scenariosCheck(scenarios, thresholds)];\n\tif (exploration) {\n\t\tchecks.push(invariantsCheck(exploration, thresholds));\n\t\tif (exploration.goalResults.length > 0) checks.push(livenessCheck(exploration, thresholds));\n\t\tchecks.push(deadActionsCheck(exploration, thresholds));\n\t\tif (exploration.deadlockStates > 0) checks.push({\n\t\t\tid: \"deadlocks\",\n\t\t\tlabel: \"Deadlocks\",\n\t\t\tstatus: \"warn\",\n\t\t\tdetail: `${exploration.deadlockStates} reachable state(s) with no enabled action (may be legitimate terminals)`\n\t\t});\n\t\tif (exploration.truncated) checks.push({\n\t\t\tid: \"bounds\",\n\t\t\tlabel: \"Search bounds\",\n\t\t\tstatus: \"warn\",\n\t\t\tdetail: \"model check truncated — findings are \\\"within bounds\\\", not a proof. Raise maxDepth/maxStates to widen.\"\n\t\t});\n\t}\n\tchecks.push(maturityCheck(maturity, thresholds));\n\tif (verifiedCoverage) checks.push(verifiedCheck(verifiedCoverage, thresholds));\n\tif (reachability) checks.push(reachabilityCheck(reachability));\n\tif (drift.length > 0) checks.push({\n\t\tid: \"drift\",\n\t\tlabel: \"Drift\",\n\t\tstatus: thresholds.allowDrift ? \"warn\" : \"fail\",\n\t\tdetail: `${drift.length} implementation(s) audited against an older spec`,\n\t\titems: drift.map((d) => `${d.key} (audited ${d.auditedSpecVersion}, now ${d.currentSpecVersion})`)\n\t});\n\tif (deadHandlers && deadHandlers.length > 0) checks.push({\n\t\tid: \"events\",\n\t\tlabel: \"Event wiring\",\n\t\tstatus: \"warn\",\n\t\tdetail: `${deadHandlers.length} handler(s) triggered by an event nothing in the project emits`,\n\t\titems: deadHandlers.map((h) => `${h.actionName} ← \"${h.event}\"`)\n\t});\n\treturn checks;\n};\nvar aggregateFeatureVerdict = (input) => {\n\tconst checks = aggregateChecks(input);\n\treturn {\n\t\tfeatureId: input.featureId,\n\t\tfeatureName: input.featureName,\n\t\tpassed: verdictPassed(checks),\n\t\tchecks\n\t};\n};\n//#endregion\n//#region src/features/verification/domain/analyzeEventCoherence.ts\n/**\n* Pure cross-feature event-coherence analysis. Collects every event emitted\n* anywhere in the cohort, then flags every handler whose triggering event is in\n* nobody's emit set. Evolution placeholders (empty bodies) are ignored on both\n* sides — they aren't committed behavior yet.\n*/\nvar analyzeEventCoherence = (features) => {\n\tconst emitted = /* @__PURE__ */ new Set();\n\tfor (const feature of features) for (const surface of feature.surfaces) for (const action of surface.actions) {\n\t\tif (isEvolution(action)) continue;\n\t\tfor (const event of action.emittedEvents) emitted.add(String(event));\n\t}\n\tconst deadHandlers = [];\n\tfor (const feature of features) for (const surface of feature.surfaces) for (const action of surface.actions) {\n\t\tif (isEvolution(action)) continue;\n\t\tconst trigger = action.triggeredByEvent;\n\t\tif (trigger && !emitted.has(String(trigger))) deadHandlers.push({\n\t\t\tfeatureId: String(feature.id),\n\t\t\tfeatureName: feature.name,\n\t\t\tsurfaceId: String(surface.id),\n\t\t\tactionId: String(action.id),\n\t\t\tactionName: action.name,\n\t\t\tevent: String(trigger)\n\t\t});\n\t}\n\treturn { deadHandlers };\n};\n//#endregion\n//#region src/features/verification/domain/detectDrift.ts\nvar buildIdentifierSets = (feature) => {\n\tconst surfaceIds = /* @__PURE__ */ new Set();\n\tconst actionIds = /* @__PURE__ */ new Set();\n\tconst statePaths = /* @__PURE__ */ new Set();\n\tconst ruleIds = /* @__PURE__ */ new Set();\n\tconst invariantIds = /* @__PURE__ */ new Set();\n\tconst transitionIds = /* @__PURE__ */ new Set();\n\tconst eventNames = /* @__PURE__ */ new Set();\n\tconst otherIds = /* @__PURE__ */ new Set();\n\tfor (const inv of feature.featureInvariants ?? []) invariantIds.add(String(inv.id));\n\tfor (const event of feature.events ?? []) eventNames.add(String(event.name));\n\tfor (const vs of feature.valueSets ?? []) otherIds.add(String(vs.id));\n\tfor (const persona of feature.personas ?? []) otherIds.add(String(persona.id));\n\tfor (const resource of feature.resources ?? []) otherIds.add(String(resource.id));\n\tfor (const entity of feature.entities ?? []) otherIds.add(String(entity.id));\n\tfor (const surface of feature.surfaces) {\n\t\tsurfaceIds.add(String(surface.id));\n\t\tfor (const transition of surface.transitions) transitionIds.add(String(transition.id));\n\t\tfor (const rule of surface.rules) ruleIds.add(String(rule.id));\n\t\tfor (const inv of surface.invariants) invariantIds.add(String(inv.id));\n\t\tfor (const def of surface.stateDefinitions) statePaths.add(String(def.path));\n\t\tfor (const action of surface.actions) {\n\t\t\tactionIds.add(String(action.id));\n\t\t\tfor (const rule of action.rules) ruleIds.add(String(rule.id));\n\t\t\tfor (const inv of action.invariants) invariantIds.add(String(inv.id));\n\t\t\tfor (const transition of action.transitions) transitionIds.add(String(transition.id));\n\t\t}\n\t}\n\treturn {\n\t\tsurfaceIds,\n\t\tactionIds,\n\t\tstatePaths,\n\t\truleIds,\n\t\tinvariantIds,\n\t\ttransitionIds,\n\t\teventNames,\n\t\totherIds\n\t};\n};\n/** Whether `suffix` names an entity of `type` in this feature. Unknown types fall back to any-kind. */\nvar owns = (sets, type, suffix) => {\n\tswitch (type) {\n\t\tcase \"surface\": return sets.surfaceIds.has(suffix);\n\t\tcase \"action\": return sets.actionIds.has(suffix);\n\t\tcase \"state\": return sets.statePaths.has(suffix);\n\t\tcase \"event\": return sets.eventNames.has(suffix);\n\t\tcase \"rule\":\n\t\tcase \"surface_rule\": return sets.ruleIds.has(suffix);\n\t\tcase \"invariant\":\n\t\tcase \"surface_invariant\": return sets.invariantIds.has(suffix);\n\t\tcase \"transition\": return sets.transitionIds.has(suffix);\n\t\tdefault: return sets.surfaceIds.has(suffix) || sets.actionIds.has(suffix) || sets.statePaths.has(suffix) || sets.eventNames.has(suffix) || sets.ruleIds.has(suffix) || sets.invariantIds.has(suffix) || sets.transitionIds.has(suffix) || sets.otherIds.has(suffix);\n\t}\n};\nvar detectDrift = (features, index) => {\n\tconst owners = features.map((feature) => ({\n\t\tfeature,\n\t\tsets: buildIdentifierSets(feature)\n\t}));\n\tconst stale = [];\n\tconst unversioned = [];\n\tconst orphans = [];\n\tlet checked = 0;\n\tfor (const entry of index) {\n\t\tif (entry.status === \"missing\") continue;\n\t\tconst sep = entry.key.indexOf(\":\");\n\t\tif (sep < 0) {\n\t\t\torphans.push({\n\t\t\t\tkey: entry.key,\n\t\t\t\treason: \"malformed key (expected \\\"<type>:<id-or-path>\\\")\"\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst type = entry.key.slice(0, sep);\n\t\tconst suffix = entry.key.slice(sep + 1);\n\t\tconst owner = owners.find((o) => owns(o.sets, type, suffix));\n\t\tif (!owner) {\n\t\t\torphans.push({\n\t\t\t\tkey: entry.key,\n\t\t\t\treason: \"no spec entity matches this key (renamed or removed?)\"\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tchecked += 1;\n\t\tif (!entry.auditedSpecVersion) {\n\t\t\tunversioned.push(entry.key);\n\t\t\tcontinue;\n\t\t}\n\t\tconst audited = Date.parse(entry.auditedSpecVersion);\n\t\tconst current = Date.parse(String(owner.feature.updatedAt));\n\t\tif (Number.isNaN(audited) || Number.isNaN(current)) {\n\t\t\tunversioned.push(entry.key);\n\t\t\tcontinue;\n\t\t}\n\t\tif (current > audited) stale.push({\n\t\t\tkey: entry.key,\n\t\t\tentitySuffix: suffix,\n\t\t\tfeatureId: String(owner.feature.id),\n\t\t\tfeatureName: owner.feature.name,\n\t\t\tstatus: entry.status,\n\t\t\tauditedSpecVersion: entry.auditedSpecVersion,\n\t\t\tcurrentSpecVersion: String(owner.feature.updatedAt)\n\t\t});\n\t}\n\treturn {\n\t\tstale,\n\t\tunversioned,\n\t\torphans,\n\t\tchecked\n\t};\n};\n//#endregion\n//#region src/features/verification/domain/verifiedCoverage.ts\nvar verifiedCoverageForFeature = (feature, index) => {\n\tconst verifiedActionIds = /* @__PURE__ */ new Set();\n\tfor (const entry of index) if (entry.verifiedAt && entry.key.startsWith(\"action:\")) verifiedActionIds.add(entry.key.slice(7));\n\tlet verified = 0;\n\tlet total = 0;\n\tfor (const surface of feature.surfaces) for (const action of surface.actions) {\n\t\tif (isEvolution(action)) continue;\n\t\ttotal += 1;\n\t\tif (verifiedActionIds.has(String(action.id))) verified += 1;\n\t}\n\treturn {\n\t\tverified,\n\t\ttotal\n\t};\n};\n//#endregion\n//#region src/features/verification/domain/VerificationThresholds.ts\nvar defaultThresholds = () => ({\n\tminMaturity: 0,\n\tmaxScenarioFailures: 0,\n\tallowInvariantViolations: false,\n\tfailOnDeadActions: false,\n\tallowDrift: true,\n\trequireScenarios: false,\n\tfailOnUnmetGoals: false,\n\tminVerified: 0\n});\nvar withThresholdDefaults = (partial = {}) => ({\n\t...defaultThresholds(),\n\t...partial\n});\n//#endregion\n//#region src/features/verification/application/use-cases/VerifyFeatures.ts\n/**\n* The verification spine as one composable use case: load the cohort, detect\n* spec→code drift across it once, then for each feature run the scenario suite,\n* score maturity, analyze navigation reachability, optionally model-check the\n* state space, and fold it all into a gated verdict.\n*\n* Pure orchestration — it composes deterministic domain functions and returns\n* data. No console, no process exit, no clock: the driving adapters (CLI / MCP)\n* own presentation and the exit code, which keeps this testable with fakes.\n*/\nvar verifyFeaturesUseCase = (deps) => {\n\tconst runScenarios = runScenariosUseCase();\n\treturn async (input = {}) => {\n\t\tconst thresholds = withThresholdDefaults(input.thresholds);\n\t\tconst ids = input.featureIds && input.featureIds.length > 0 ? [...input.featureIds] : (await deps.features.list()).map((s) => s.id);\n\t\tconst loaded = [];\n\t\tfor (const id of ids) {\n\t\t\tconst feature = await deps.features.get(id);\n\t\t\tif (feature) loaded.push(feature);\n\t\t}\n\t\tconst indexEntries = await deps.index.read();\n\t\tconst drift = detectDrift(loaded, indexEntries);\n\t\tconst eventCoherence = analyzeEventCoherence(loaded);\n\t\tconst explorerOptions = input.modelCheck === true ? {} : typeof input.modelCheck === \"object\" ? input.modelCheck : null;\n\t\tconst projectInvariants = input.projectInvariants ?? [];\n\t\tconst perFeature = loaded.map((feature) => {\n\t\t\tconst siblings = loaded.filter((f) => f.id !== feature.id);\n\t\t\tconst scenarios = runScenarios({\n\t\t\t\tfeature,\n\t\t\t\tprojectFeatures: siblings\n\t\t\t});\n\t\t\tconst maturity = scoreFeature(feature);\n\t\t\tconst reachability = analyzeSurfaceReachability(feature);\n\t\t\tconst exploration = explorerOptions !== null ? exploreStateSpace(feature, projectInvariants.length > 0 ? {\n\t\t\t\t...explorerOptions,\n\t\t\t\textraInvariants: projectInvariants,\n\t\t\t\tseedStateDefs: siblings.flatMap((f) => f.surfaces.flatMap((s) => s.stateDefinitions))\n\t\t\t} : explorerOptions, siblings) : void 0;\n\t\t\tconst featureDrift = drift.stale.filter((d) => d.featureId === String(feature.id));\n\t\t\tconst featureDeadHandlers = eventCoherence.deadHandlers.filter((h) => h.featureId === String(feature.id));\n\t\t\treturn {\n\t\t\t\tscenarios,\n\t\t\t\texploration,\n\t\t\t\tverdict: aggregateFeatureVerdict({\n\t\t\t\t\tfeatureId: String(feature.id),\n\t\t\t\t\tfeatureName: feature.name,\n\t\t\t\t\tscenarios,\n\t\t\t\t\tmaturity,\n\t\t\t\t\treachability,\n\t\t\t\t\t...exploration ? { exploration } : {},\n\t\t\t\t\tdrift: featureDrift,\n\t\t\t\t\tdeadHandlers: featureDeadHandlers,\n\t\t\t\t\tverifiedCoverage: verifiedCoverageForFeature(feature, indexEntries),\n\t\t\t\t\tthresholds\n\t\t\t\t})\n\t\t\t};\n\t\t});\n\t\tconst verdicts = perFeature.map((p) => p.verdict);\n\t\treturn {\n\t\t\tpassed: verdicts.every((v) => v.passed),\n\t\t\tfeatures: verdicts,\n\t\t\tdrift,\n\t\t\teventCoherence,\n\t\t\tsummary: {\n\t\t\t\tfeaturesChecked: verdicts.length,\n\t\t\t\tfeaturesPassed: verdicts.filter((v) => v.passed).length,\n\t\t\t\tfeaturesFailed: verdicts.filter((v) => !v.passed).length,\n\t\t\t\tscenariosRun: perFeature.reduce((acc, p) => acc + p.scenarios.total, 0),\n\t\t\t\tscenariosFailed: perFeature.reduce((acc, p) => acc + p.scenarios.failed, 0),\n\t\t\t\tinvariantViolations: perFeature.reduce((acc, p) => acc + (p.exploration?.invariantViolations.length ?? 0), 0)\n\t\t\t}\n\t\t};\n\t};\n};\n//#endregion\n//#region src/features/verification/infrastructure/persistence/FileBehavioralIndexReader.ts\nvar LINK_FILENAME = \".unspa.json\";\nvar VALID_STATUS = new Set([\n\t\"implemented\",\n\t\"partial\",\n\t\"missing\"\n]);\n/** Walk up from `cwd` to the nearest `.unspa.json`, mirroring the MCP/CLI link discovery. */\nvar discover = (cwd) => {\n\tlet current = resolve(cwd);\n\tconst { root } = parse(current);\n\tfor (;;) {\n\t\tconst candidate = join(current, LINK_FILENAME);\n\t\tif (existsSync(candidate)) return candidate;\n\t\tif (current === root) break;\n\t\tconst parent = resolve(current, \"..\");\n\t\tif (parent === current) break;\n\t\tcurrent = parent;\n\t}\n\treturn null;\n};\n/**\n* Reads the audited entries out of a repo's `.unspa.json`. A missing or\n* malformed file is treated as \"no index\" (empty), never an error — a repo that\n* has never run an implementation audit should still verify cleanly. Maps the\n* on-disk entry onto the domain's {@link IndexedImplementation}, dropping the\n* fields drift doesn't need.\n*/\nvar fileBehavioralIndexReader = (options = {}) => ({ async read() {\n\tconst cwd = options.cwd ?? process.cwd();\n\tconst filePath = (options.path ? options.path.endsWith(LINK_FILENAME) ? options.path : join(options.path, LINK_FILENAME) : null) ?? discover(cwd);\n\tif (!filePath || !existsSync(filePath)) return [];\n\tlet link;\n\ttry {\n\t\tlink = JSON.parse(readFileSync(filePath, \"utf8\"));\n\t} catch {\n\t\treturn [];\n\t}\n\tconst index = link.index ?? {};\n\treturn Object.entries(index).map(([key, raw]) => {\n\t\treturn {\n\t\t\tkey,\n\t\t\tstatus: raw?.status && VALID_STATUS.has(raw.status) ? raw.status : \"missing\",\n\t\t\t...typeof raw?.specVersion === \"string\" ? { auditedSpecVersion: raw.specVersion } : {},\n\t\t\t...typeof raw?.verifiedAt === \"string\" ? { verifiedAt: raw.verifiedAt } : {}\n\t\t};\n\t});\n} });\n//#endregion\n//#region src/routes/api/snapshots/[id]/verify/+server.ts\nvar prerender = false;\n/**\n* Run the verification spine for one feature and return the report. The cohort\n* is scoped to the feature's project (when it belongs to one) so the\n* cross-feature checks — event coherence, cascade resolution — see the siblings\n* they need; otherwise it's just this feature. Model checking is on by default\n* (so the view can show counterexamples); pass `?modelCheck=0` to skip the\n* heavier state-space exploration.\n*/\nvar GET = async ({ params, url }) => {\n\tconst id = params.id;\n\tconst { repo, projectRepo } = getSnapshotRepository();\n\tlet cohort = [id];\n\tfor (const summary of await projectRepo.list()) {\n\t\tconst project = await projectRepo.get(summary.id);\n\t\tif (project?.featureIds.some((f) => String(f) === String(id))) {\n\t\t\tcohort = project.featureIds;\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn json(await verifyFeaturesUseCase({\n\t\tfeatures: repo,\n\t\tindex: fileBehavioralIndexReader({})\n\t})({\n\t\tfeatureIds: cohort,\n\t\tmodelCheck: url.searchParams.get(\"modelCheck\") !== \"0\"\n\t}));\n};\n//#endregion\nexport { GET, prerender };\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { h as getSnapshotRepository } from './snapshotRepository-8f-2wTrb.js';
|
|
2
2
|
import { j as json } from './index-CLnuRv4X.js';
|
|
3
|
-
import './TagPalette-
|
|
4
|
-
import './FeatureJson-
|
|
3
|
+
import './TagPalette-CpdTiC_7.js';
|
|
4
|
+
import './FeatureJson-DYvMEAub.js';
|
|
5
5
|
import './ImplementationStatus-7CfVZQtq.js';
|
|
6
6
|
import 'node:fs';
|
|
7
7
|
import 'write-file-atomic';
|
|
@@ -20,4 +20,4 @@ var GET = async () => {
|
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
export { GET, prerender };
|
|
23
|
-
//# sourceMappingURL=_server.ts-
|
|
23
|
+
//# sourceMappingURL=_server.ts-BLWhU22T.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-BLWhU22T.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/snapshots/_server.ts.js"],"sourcesContent":["import { t as getSnapshotRepository } from \"../../../../chunks/snapshotRepository.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/snapshots/+server.ts\nvar prerender = false;\nvar GET = async () => {\n\tconst { repo, directory } = getSnapshotRepository();\n\treturn json({\n\t\tdirectory,\n\t\tsummaries: await repo.list()\n\t});\n};\n//#endregion\nexport { GET, prerender };\n"],"names":[],"mappings":";;;;;;;;;;;AAEA;AACG,IAAC,SAAS,GAAG;AACb,IAAC,GAAG,GAAG,YAAY;AACtB,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,qBAAqB,EAAE;AACpD,CAAC,OAAO,IAAI,CAAC;AACb,EAAE,SAAS;AACX,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC,IAAI;AAC5B,EAAE,CAAC;AACH;;;;"}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { h as getSnapshotRepository } from './snapshotRepository-8f-2wTrb.js';
|
|
2
|
+
import { s as systemClock } from './Clock-BfMWQpmJ.js';
|
|
3
|
+
import { c as createSyncAwareFeatureRepository } from './syncAwareRepositories-DvUjq5Q6.js';
|
|
4
|
+
import { d as deleteFeatureUseCase, g as getFeatureUseCase, F as FeatureValidationError, s as saveFeatureUseCase } from './DeleteFeature-DnK8sBJI.js';
|
|
4
5
|
import { e as error, j as json } from './index-CLnuRv4X.js';
|
|
5
|
-
import './TagPalette-
|
|
6
|
-
import './FeatureJson-
|
|
6
|
+
import './TagPalette-CpdTiC_7.js';
|
|
7
|
+
import './FeatureJson-DYvMEAub.js';
|
|
7
8
|
import './ImplementationStatus-7CfVZQtq.js';
|
|
8
9
|
import 'node:fs';
|
|
9
10
|
import 'write-file-atomic';
|
|
10
11
|
import 'node:path';
|
|
11
12
|
import 'node:os';
|
|
12
|
-
import './sync-
|
|
13
|
+
import './sync-Bn6eSUhC.js';
|
|
13
14
|
import './protocol-3LlFyPP_.js';
|
|
14
15
|
import 'yjs';
|
|
15
16
|
import 'ws';
|
|
17
|
+
import './StateValue-BBjWox8f.js';
|
|
16
18
|
import './index-DBqjc0Yf.js';
|
|
17
19
|
|
|
18
20
|
//#region src/routes/api/snapshots/[id]/+server.ts
|
|
@@ -20,7 +22,7 @@ var prerender = false;
|
|
|
20
22
|
var GET = async ({ params }) => {
|
|
21
23
|
const id = params.id;
|
|
22
24
|
const { repo } = getSnapshotRepository();
|
|
23
|
-
const feature = await repo
|
|
25
|
+
const feature = await getFeatureUseCase({ repository: repo })(id);
|
|
24
26
|
if (!feature) throw error(404, `Snapshot ${id} not found`);
|
|
25
27
|
return json(feature);
|
|
26
28
|
};
|
|
@@ -35,18 +37,25 @@ var PUT = async ({ params, request }) => {
|
|
|
35
37
|
if (!body || typeof body !== "object") throw error(400, "Body must be an Feature object");
|
|
36
38
|
const feature = body;
|
|
37
39
|
if (feature.id !== id) throw error(400, `Body id "${feature.id}" does not match URL id "${id}"`);
|
|
38
|
-
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
const { repo } = getSnapshotRepository();
|
|
41
|
+
const saveFeature = saveFeatureUseCase({
|
|
42
|
+
repository: createSyncAwareFeatureRepository(repo),
|
|
43
|
+
clock: systemClock
|
|
44
|
+
});
|
|
45
|
+
try {
|
|
46
|
+
await saveFeature(feature);
|
|
47
|
+
} catch (e) {
|
|
48
|
+
if (e instanceof FeatureValidationError) throw error(400, `Feature validation failed:\n - ${e.errors.join("\n - ")}`);
|
|
49
|
+
throw e;
|
|
50
|
+
}
|
|
42
51
|
return json({ ok: true });
|
|
43
52
|
};
|
|
44
53
|
var DELETE = async ({ params }) => {
|
|
45
54
|
const id = params.id;
|
|
46
55
|
const { repo } = getSnapshotRepository();
|
|
47
|
-
await repo
|
|
56
|
+
await deleteFeatureUseCase({ repository: repo })(id);
|
|
48
57
|
return new Response(null, { status: 204 });
|
|
49
58
|
};
|
|
50
59
|
|
|
51
60
|
export { DELETE, GET, PUT, prerender };
|
|
52
|
-
//# sourceMappingURL=_server.ts-
|
|
61
|
+
//# sourceMappingURL=_server.ts-C7EVZVxv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-C7EVZVxv.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/snapshots/_id_/_server.ts.js"],"sourcesContent":["import { t as getSnapshotRepository } from \"../../../../../chunks/snapshotRepository.js\";\nimport { t as systemClock } from \"../../../../../chunks/Clock.js\";\nimport { t as createSyncAwareFeatureRepository } from \"../../../../../chunks/syncAwareRepositories.js\";\nimport { a as getFeatureUseCase, n as saveFeatureUseCase, r as FeatureValidationError, t as deleteFeatureUseCase } from \"../../../../../chunks/DeleteFeature.js\";\nimport { error, json } from \"@sveltejs/kit\";\n//#region src/routes/api/snapshots/[id]/+server.ts\nvar prerender = false;\nvar GET = async ({ params }) => {\n\tconst id = params.id;\n\tconst { repo } = getSnapshotRepository();\n\tconst feature = await getFeatureUseCase({ repository: repo })(id);\n\tif (!feature) throw error(404, `Snapshot ${id} not found`);\n\treturn json(feature);\n};\nvar PUT = async ({ params, request }) => {\n\tconst id = params.id;\n\tlet body;\n\ttry {\n\t\tbody = await request.json();\n\t} catch {\n\t\tthrow error(400, \"Invalid JSON body\");\n\t}\n\tif (!body || typeof body !== \"object\") throw error(400, \"Body must be an Feature object\");\n\tconst feature = body;\n\tif (feature.id !== id) throw error(400, `Body id \"${feature.id}\" does not match URL id \"${id}\"`);\n\tconst { repo } = getSnapshotRepository();\n\tconst saveFeature = saveFeatureUseCase({\n\t\trepository: createSyncAwareFeatureRepository(repo),\n\t\tclock: systemClock\n\t});\n\ttry {\n\t\tawait saveFeature(feature);\n\t} catch (e) {\n\t\tif (e instanceof FeatureValidationError) throw error(400, `Feature validation failed:\\n - ${e.errors.join(\"\\n - \")}`);\n\t\tthrow e;\n\t}\n\treturn json({ ok: true });\n};\nvar DELETE = async ({ params }) => {\n\tconst id = params.id;\n\tconst { repo } = getSnapshotRepository();\n\tawait deleteFeatureUseCase({ repository: repo })(id);\n\treturn new Response(null, { status: 204 });\n};\n//#endregion\nexport { DELETE, GET, PUT, prerender };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAKA;AACG,IAAC,SAAS,GAAG;AACb,IAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AAChC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACrB,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,qBAAqB,EAAE;AACzC,CAAC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AAClE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;AAC3D,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC;AACrB;AACG,IAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AACzC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACrB,CAAC,IAAI,IAAI;AACT,CAAC,IAAI;AACL,EAAE,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC7B,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,mBAAmB,CAAC;AACvC,CAAC;AACD,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gCAAgC,CAAC;AAC1F,CAAC,MAAM,OAAO,GAAG,IAAI;AACrB,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACjG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,qBAAqB,EAAE;AACzC,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AACxC,EAAE,UAAU,EAAE,gCAAgC,CAAC,IAAI,CAAC;AACpD,EAAE,KAAK,EAAE;AACT,EAAE,CAAC;AACH,CAAC,IAAI;AACL,EAAE,MAAM,WAAW,CAAC,OAAO,CAAC;AAC5B,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,IAAI,CAAC,YAAY,sBAAsB,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,+BAA+B,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvH,EAAE,MAAM,CAAC;AACT,CAAC;AACD,CAAC,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAC1B;AACG,IAAC,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AACnC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACrB,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,qBAAqB,EAAE;AACzC,CAAC,MAAM,oBAAoB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3C;;;;"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { h as getSnapshotRepository } from './snapshotRepository-8f-2wTrb.js';
|
|
2
|
+
import { s as systemClock } from './Clock-BfMWQpmJ.js';
|
|
3
|
+
import { d as deleteDomainUseCase, g as getDomainUseCase, s as saveDomainUseCase } from './DeleteDomain-BvHEgAyp.js';
|
|
2
4
|
import { e as error, j as json } from './index-CLnuRv4X.js';
|
|
3
|
-
import './TagPalette-
|
|
4
|
-
import './FeatureJson-
|
|
5
|
+
import './TagPalette-CpdTiC_7.js';
|
|
6
|
+
import './FeatureJson-DYvMEAub.js';
|
|
5
7
|
import './ImplementationStatus-7CfVZQtq.js';
|
|
6
8
|
import 'node:fs';
|
|
7
9
|
import 'write-file-atomic';
|
|
@@ -14,7 +16,7 @@ var prerender = false;
|
|
|
14
16
|
var GET = async ({ params }) => {
|
|
15
17
|
const id = params.id;
|
|
16
18
|
const { domainRepo } = getSnapshotRepository();
|
|
17
|
-
const domain = await domainRepo
|
|
19
|
+
const domain = await getDomainUseCase({ repository: domainRepo })(id);
|
|
18
20
|
if (!domain) throw error(404, `Domain ${id} not found`);
|
|
19
21
|
return json(domain);
|
|
20
22
|
};
|
|
@@ -31,15 +33,18 @@ var PUT = async ({ params, request }) => {
|
|
|
31
33
|
if (domain.id !== id) throw error(400, `Body id "${domain.id}" does not match URL id "${id}"`);
|
|
32
34
|
if (typeof domain.name !== "string" || domain.name.trim().length === 0) throw error(400, "Domain name is required");
|
|
33
35
|
const { domainRepo } = getSnapshotRepository();
|
|
34
|
-
await
|
|
36
|
+
await saveDomainUseCase({
|
|
37
|
+
repository: domainRepo,
|
|
38
|
+
clock: systemClock
|
|
39
|
+
})(domain);
|
|
35
40
|
return json({ ok: true });
|
|
36
41
|
};
|
|
37
42
|
var DELETE = async ({ params }) => {
|
|
38
43
|
const id = params.id;
|
|
39
44
|
const { domainRepo } = getSnapshotRepository();
|
|
40
|
-
await domainRepo
|
|
45
|
+
await deleteDomainUseCase({ repository: domainRepo })(id);
|
|
41
46
|
return new Response(null, { status: 204 });
|
|
42
47
|
};
|
|
43
48
|
|
|
44
49
|
export { DELETE, GET, PUT, prerender };
|
|
45
|
-
//# sourceMappingURL=_server.ts-
|
|
50
|
+
//# sourceMappingURL=_server.ts-CGjYuLmo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-CGjYuLmo.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/domains/_id_/_server.ts.js"],"sourcesContent":["import { t as getSnapshotRepository } from \"../../../../../chunks/snapshotRepository.js\";\nimport { t as systemClock } from \"../../../../../chunks/Clock.js\";\nimport { n as saveDomainUseCase, r as getDomainUseCase, t as deleteDomainUseCase } from \"../../../../../chunks/DeleteDomain.js\";\nimport { error, json } from \"@sveltejs/kit\";\n//#region src/routes/api/domains/[id]/+server.ts\nvar prerender = false;\nvar GET = async ({ params }) => {\n\tconst id = params.id;\n\tconst { domainRepo } = getSnapshotRepository();\n\tconst domain = await getDomainUseCase({ repository: domainRepo })(id);\n\tif (!domain) throw error(404, `Domain ${id} not found`);\n\treturn json(domain);\n};\nvar PUT = async ({ params, request }) => {\n\tconst id = params.id;\n\tlet body;\n\ttry {\n\t\tbody = await request.json();\n\t} catch {\n\t\tthrow error(400, \"Invalid JSON body\");\n\t}\n\tif (!body || typeof body !== \"object\") throw error(400, \"Body must be a Domain object\");\n\tconst domain = body;\n\tif (domain.id !== id) throw error(400, `Body id \"${domain.id}\" does not match URL id \"${id}\"`);\n\tif (typeof domain.name !== \"string\" || domain.name.trim().length === 0) throw error(400, \"Domain name is required\");\n\tconst { domainRepo } = getSnapshotRepository();\n\tawait saveDomainUseCase({\n\t\trepository: domainRepo,\n\t\tclock: systemClock\n\t})(domain);\n\treturn json({ ok: true });\n};\nvar DELETE = async ({ params }) => {\n\tconst id = params.id;\n\tconst { domainRepo } = getSnapshotRepository();\n\tawait deleteDomainUseCase({ repository: domainRepo })(id);\n\treturn new Response(null, { status: 204 });\n};\n//#endregion\nexport { DELETE, GET, PUT, prerender };\n"],"names":[],"mappings":";;;;;;;;;;;;;AAIA;AACG,IAAC,SAAS,GAAG;AACb,IAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AAChC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACrB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,qBAAqB,EAAE;AAC/C,CAAC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;AACtE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;AACxD,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC;AACpB;AACG,IAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AACzC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACrB,CAAC,IAAI,IAAI;AACT,CAAC,IAAI;AACL,EAAE,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC7B,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,mBAAmB,CAAC;AACvC,CAAC;AACD,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,8BAA8B,CAAC;AACxF,CAAC,MAAM,MAAM,GAAG,IAAI;AACpB,CAAC,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,yBAAyB,CAAC;AACpH,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,qBAAqB,EAAE;AAC/C,CAAC,MAAM,iBAAiB,CAAC;AACzB,EAAE,UAAU,EAAE,UAAU;AACxB,EAAE,KAAK,EAAE;AACT,EAAE,CAAC,CAAC,MAAM,CAAC;AACX,CAAC,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAC1B;AACG,IAAC,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AACnC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACrB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,qBAAqB,EAAE;AAC/C,CAAC,MAAM,mBAAmB,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;AAC1D,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3C;;;;"}
|
|
@@ -1,44 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { h as getSnapshotRepository } from './snapshotRepository-8f-2wTrb.js';
|
|
2
|
+
import { s as systemClock } from './Clock-BfMWQpmJ.js';
|
|
3
|
+
import { c as createSyncAwareFeatureRepository, a as createSyncAwareProjectRepository } from './syncAwareRepositories-DvUjq5Q6.js';
|
|
4
|
+
import { r as renameTagUseCase } from './RenameTag-DWIIR4Bx.js';
|
|
4
5
|
import { e as error, j as json } from './index-CLnuRv4X.js';
|
|
5
|
-
import './TagPalette-
|
|
6
|
-
import './FeatureJson-
|
|
6
|
+
import './TagPalette-CpdTiC_7.js';
|
|
7
|
+
import './FeatureJson-DYvMEAub.js';
|
|
7
8
|
import './ImplementationStatus-7CfVZQtq.js';
|
|
8
9
|
import 'node:fs';
|
|
9
10
|
import 'write-file-atomic';
|
|
10
11
|
import 'node:path';
|
|
11
12
|
import 'node:os';
|
|
12
|
-
import './sync-
|
|
13
|
+
import './sync-Bn6eSUhC.js';
|
|
13
14
|
import './protocol-3LlFyPP_.js';
|
|
14
15
|
import 'yjs';
|
|
15
16
|
import 'ws';
|
|
16
17
|
import './index-DBqjc0Yf.js';
|
|
17
18
|
|
|
18
|
-
//#region src/lib/server/syncAwareRepositories.ts
|
|
19
|
-
/**
|
|
20
|
-
* Decorates a base ProjectRepository so that save() routes through the
|
|
21
|
-
* Y.Doc-aware sync bridge instead of writing straight to disk. List, get,
|
|
22
|
-
* and delete still defer to the base repo — only the write path needs the
|
|
23
|
-
* collaborative-edit broadcast.
|
|
24
|
-
*/
|
|
25
|
-
var createSyncAwareProjectRepository = (base) => ({
|
|
26
|
-
list: () => base.list(),
|
|
27
|
-
get: (id) => base.get(id),
|
|
28
|
-
delete: (id) => base.delete(id),
|
|
29
|
-
save: async (project) => {
|
|
30
|
-
await replaceSnapshotViaSync("project", project.id, project);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
var createSyncAwareFeatureRepository = (base) => ({
|
|
34
|
-
list: () => base.list(),
|
|
35
|
-
get: (id) => base.get(id),
|
|
36
|
-
delete: (id) => base.delete(id),
|
|
37
|
-
save: async (feature) => {
|
|
38
|
-
await replaceSnapshotViaSync("feature", feature.id, feature);
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
//#endregion
|
|
42
19
|
//#region src/routes/api/tag-palette/rename/+server.ts
|
|
43
20
|
var prerender = false;
|
|
44
21
|
var parseTag = (raw, label) => {
|
|
@@ -76,4 +53,4 @@ var POST = async ({ request }) => {
|
|
|
76
53
|
};
|
|
77
54
|
|
|
78
55
|
export { POST, prerender };
|
|
79
|
-
//# sourceMappingURL=_server.ts-
|
|
56
|
+
//# sourceMappingURL=_server.ts-CX6H8fSE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-CX6H8fSE.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/tag-palette/rename/_server.ts.js"],"sourcesContent":["import { t as getSnapshotRepository } from \"../../../../../chunks/snapshotRepository.js\";\nimport { t as systemClock } from \"../../../../../chunks/Clock.js\";\nimport { n as createSyncAwareProjectRepository, t as createSyncAwareFeatureRepository } from \"../../../../../chunks/syncAwareRepositories.js\";\nimport { t as renameTagUseCase } from \"../../../../../chunks/RenameTag.js\";\nimport { error, json } from \"@sveltejs/kit\";\n//#region src/routes/api/tag-palette/rename/+server.ts\nvar prerender = false;\nvar parseTag = (raw, label) => {\n\tif (!raw || typeof raw !== \"object\") throw error(400, `${label} must be {type, value}`);\n\tconst obj = raw;\n\tconst type = typeof obj.type === \"string\" ? obj.type.trim() : \"\";\n\tconst value = typeof obj.value === \"string\" ? obj.value.trim() : \"\";\n\tif (!type) throw error(400, `${label}.type is required`);\n\tif (!value) throw error(400, `${label}.value is required`);\n\treturn {\n\t\ttype,\n\t\tvalue\n\t};\n};\nvar POST = async ({ request }) => {\n\tlet body;\n\ttry {\n\t\tbody = await request.json();\n\t} catch {\n\t\tthrow error(400, \"Invalid JSON body\");\n\t}\n\tif (!body || typeof body !== \"object\") throw error(400, \"Body must be {from, to}\");\n\tconst from = parseTag(body.from, \"from\");\n\tconst to = parseTag(body.to, \"to\");\n\tconst { projectRepo, repo, tagPaletteRepo } = getSnapshotRepository();\n\treturn json(await renameTagUseCase({\n\t\tprojects: createSyncAwareProjectRepository(projectRepo),\n\t\tfeatures: createSyncAwareFeatureRepository(repo),\n\t\tpalette: tagPaletteRepo,\n\t\tclock: systemClock\n\t})({\n\t\tfrom,\n\t\tto\n\t}));\n};\n//#endregion\nexport { POST, prerender };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAKA;AACG,IAAC,SAAS,GAAG;AAChB,IAAI,QAAQ,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK;AAC/B,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACxF,CAAC,MAAM,GAAG,GAAG,GAAG;AAChB,CAAC,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;AACjE,CAAC,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;AACpE,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACzD,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC3D,CAAC,OAAO;AACR,EAAE,IAAI;AACN,EAAE;AACF,EAAE;AACF,CAAC;AACE,IAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK;AAClC,CAAC,IAAI,IAAI;AACT,CAAC,IAAI;AACL,EAAE,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC7B,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,mBAAmB,CAAC;AACvC,CAAC;AACD,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,yBAAyB,CAAC;AACnF,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;AACzC,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;AACnC,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,qBAAqB,EAAE;AACtE,CAAC,OAAO,IAAI,CAAC,MAAM,gBAAgB,CAAC;AACpC,EAAE,QAAQ,EAAE,gCAAgC,CAAC,WAAW,CAAC;AACzD,EAAE,QAAQ,EAAE,gCAAgC,CAAC,IAAI,CAAC;AAClD,EAAE,OAAO,EAAE,cAAc;AACzB,EAAE,KAAK,EAAE;AACT,EAAE,CAAC,CAAC;AACJ,EAAE,IAAI;AACN,EAAE;AACF,EAAE,CAAC,CAAC;AACJ;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { f as asFeatureId } from './TagPalette-
|
|
2
|
-
import {
|
|
1
|
+
import { f as asFeatureId } from './TagPalette-CpdTiC_7.js';
|
|
2
|
+
import { h as getSnapshotRepository } from './snapshotRepository-8f-2wTrb.js';
|
|
3
3
|
import { e as error, j as json } from './index-CLnuRv4X.js';
|
|
4
|
-
import './FeatureJson-
|
|
4
|
+
import './FeatureJson-DYvMEAub.js';
|
|
5
5
|
import './ImplementationStatus-7CfVZQtq.js';
|
|
6
6
|
import 'node:fs';
|
|
7
7
|
import 'write-file-atomic';
|
|
@@ -47,4 +47,4 @@ var GET = async ({ params }) => {
|
|
|
47
47
|
};
|
|
48
48
|
|
|
49
49
|
export { GET, prerender };
|
|
50
|
-
//# sourceMappingURL=_server.ts-
|
|
50
|
+
//# sourceMappingURL=_server.ts-CyEdTCLr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-CyEdTCLr.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/projects/_id_/bundle/_server.ts.js"],"sourcesContent":["import { _ as asFeatureId } from \"../../../../../../chunks/TagPalette.js\";\nimport { t as getSnapshotRepository } from \"../../../../../../chunks/snapshotRepository.js\";\nimport { error, json } from \"@sveltejs/kit\";\n//#region src/routes/api/projects/[id]/bundle/+server.ts\nvar prerender = false;\n/**\n* Returns the full self-contained ProjectBundleV1 for one Project so the\n* browser can encrypt it client-side and trigger a `.unspa` download.\n*\n* Plaintext only — encryption is the caller's responsibility. The\n* passphrase never reaches the server, which keeps the security model\n* simple (\"the only way to decrypt is the user's passphrase\") and avoids\n* any server-side key storage. The endpoint is GET and unauthenticated\n* for the same reason every other API on this dashboard is: it's\n* intended for `127.0.0.1` use only (the dashboard CLI warns loudly on\n* any non-loopback bind).\n*/\nvar GET = async ({ params }) => {\n\tconst id = params.id;\n\tconst { projectRepo, repo: featureRepo, statusRepo } = getSnapshotRepository();\n\tconst project = await projectRepo.get(id);\n\tif (!project) throw error(404, `Project ${id} not found`);\n\tconst features = [];\n\tconst statuses = [];\n\tfor (const fid of project.featureIds) {\n\t\tconst feature = await featureRepo.get(asFeatureId(String(fid)));\n\t\tif (feature) features.push(feature);\n\t\tconst status = await statusRepo.get(asFeatureId(String(fid)));\n\t\tif (status) statuses.push(status);\n\t}\n\treturn json({\n\t\tformat: \"unspaghettit-project-bundle\",\n\t\tversion: 1,\n\t\texportedAt: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tproject,\n\t\tfeatures,\n\t\tstatuses\n\t});\n};\n//#endregion\nexport { GET, prerender };\n"],"names":[],"mappings":";;;;;;;;;;;AAGA;AACG,IAAC,SAAS,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AAChC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACrB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,qBAAqB,EAAE;AAC/E,CAAC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1C,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;AAC1D,CAAC,MAAM,QAAQ,GAAG,EAAE;AACpB,CAAC,MAAM,QAAQ,GAAG,EAAE;AACpB,CAAC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE;AACvC,EAAE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,EAAE,IAAI,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AACrC,EAAE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,EAAE,IAAI,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AACnC,CAAC;AACD,CAAC,OAAO,IAAI,CAAC;AACb,EAAE,MAAM,EAAE,6BAA6B;AACvC,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,UAAU,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACxD,EAAE,OAAO;AACT,EAAE,QAAQ;AACV,EAAE;AACF,EAAE,CAAC;AACH;;;;"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { h as getSnapshotRepository } from './snapshotRepository-8f-2wTrb.js';
|
|
2
|
+
import { a as createSyncAwareProjectRepository, c as createSyncAwareFeatureRepository } from './syncAwareRepositories-DvUjq5Q6.js';
|
|
3
|
+
import { e as error, j as json } from './index-CLnuRv4X.js';
|
|
4
|
+
import './TagPalette-CpdTiC_7.js';
|
|
5
|
+
import './FeatureJson-DYvMEAub.js';
|
|
6
|
+
import './ImplementationStatus-7CfVZQtq.js';
|
|
7
|
+
import 'node:fs';
|
|
8
|
+
import 'write-file-atomic';
|
|
9
|
+
import 'node:path';
|
|
10
|
+
import 'node:os';
|
|
11
|
+
import './sync-Bn6eSUhC.js';
|
|
12
|
+
import './protocol-3LlFyPP_.js';
|
|
13
|
+
import 'yjs';
|
|
14
|
+
import 'ws';
|
|
15
|
+
import './index-DBqjc0Yf.js';
|
|
16
|
+
|
|
17
|
+
//#region src/features/projects/application/use-cases/ImportProjectBundle.ts
|
|
18
|
+
/**
|
|
19
|
+
* Restore a ProjectBundleV1 onto the snapshot repositories. The write ORDER is
|
|
20
|
+
* the invariant this use case owns:
|
|
21
|
+
* 1. every Feature first, so the project save's add-feature guard can resolve
|
|
22
|
+
* them;
|
|
23
|
+
* 2. then the Project itself, preserving its id, featureIds[] ordering, queue,
|
|
24
|
+
* and metadata;
|
|
25
|
+
* 3. lastly the implementation-status sidecars (idempotent if absent).
|
|
26
|
+
*
|
|
27
|
+
* Pass sync-aware repositories to broadcast the writes to open editors. Conflict
|
|
28
|
+
* policy (v1): bundle ids are preserved and overwrite any existing rows — the
|
|
29
|
+
* "restore my own backup" flow. Previously this orchestration lived inline in
|
|
30
|
+
* the import route handler.
|
|
31
|
+
*/
|
|
32
|
+
var importProjectBundleUseCase = (deps) => {
|
|
33
|
+
return async (bundle) => {
|
|
34
|
+
for (const feature of bundle.features) await deps.features.save(feature);
|
|
35
|
+
await deps.projects.save(bundle.project);
|
|
36
|
+
for (const status of bundle.statuses) await deps.statuses.save(status);
|
|
37
|
+
return {
|
|
38
|
+
projectId: bundle.project.id,
|
|
39
|
+
featuresImported: bundle.features.length,
|
|
40
|
+
statusesImported: bundle.statuses.length
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
//#endregion
|
|
45
|
+
//#region src/routes/api/projects/import/+server.ts
|
|
46
|
+
var prerender = false;
|
|
47
|
+
/**
|
|
48
|
+
* Restore a decrypted ProjectBundleV1 onto the snapshot repository. The
|
|
49
|
+
* write-ordering + conflict policy lives in the importProjectBundle use case;
|
|
50
|
+
* this handler only validates the wire envelope and wires sync-aware repos so
|
|
51
|
+
* open editors get the restored snapshots reactively.
|
|
52
|
+
*/
|
|
53
|
+
var POST = async ({ request }) => {
|
|
54
|
+
let body;
|
|
55
|
+
try {
|
|
56
|
+
body = await request.json();
|
|
57
|
+
} catch {
|
|
58
|
+
throw error(400, "Invalid JSON body");
|
|
59
|
+
}
|
|
60
|
+
if (!body || typeof body !== "object") throw error(400, "Body must be a ProjectBundle");
|
|
61
|
+
const bundle = body;
|
|
62
|
+
if (bundle.format !== "unspaghettit-project-bundle") throw error(400, "Body is not a ProjectBundle (wrong format tag)");
|
|
63
|
+
if (bundle.version !== 1) throw error(400, `Unsupported bundle version ${bundle.version}`);
|
|
64
|
+
if (!bundle.project || typeof bundle.project.id !== "string") throw error(400, "Bundle is missing a project");
|
|
65
|
+
const { repo, projectRepo, statusRepo } = getSnapshotRepository();
|
|
66
|
+
return json({
|
|
67
|
+
ok: true,
|
|
68
|
+
...await importProjectBundleUseCase({
|
|
69
|
+
features: createSyncAwareFeatureRepository(repo),
|
|
70
|
+
projects: createSyncAwareProjectRepository(projectRepo),
|
|
71
|
+
statuses: statusRepo
|
|
72
|
+
})(bundle)
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export { POST, prerender };
|
|
77
|
+
//# sourceMappingURL=_server.ts-DKVTM9Pj.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-DKVTM9Pj.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/projects/import/_server.ts.js"],"sourcesContent":["import { t as getSnapshotRepository } from \"../../../../../chunks/snapshotRepository.js\";\nimport { n as createSyncAwareProjectRepository, t as createSyncAwareFeatureRepository } from \"../../../../../chunks/syncAwareRepositories.js\";\nimport { error, json } from \"@sveltejs/kit\";\n//#region src/features/projects/application/use-cases/ImportProjectBundle.ts\n/**\n* Restore a ProjectBundleV1 onto the snapshot repositories. The write ORDER is\n* the invariant this use case owns:\n* 1. every Feature first, so the project save's add-feature guard can resolve\n* them;\n* 2. then the Project itself, preserving its id, featureIds[] ordering, queue,\n* and metadata;\n* 3. lastly the implementation-status sidecars (idempotent if absent).\n*\n* Pass sync-aware repositories to broadcast the writes to open editors. Conflict\n* policy (v1): bundle ids are preserved and overwrite any existing rows — the\n* \"restore my own backup\" flow. Previously this orchestration lived inline in\n* the import route handler.\n*/\nvar importProjectBundleUseCase = (deps) => {\n\treturn async (bundle) => {\n\t\tfor (const feature of bundle.features) await deps.features.save(feature);\n\t\tawait deps.projects.save(bundle.project);\n\t\tfor (const status of bundle.statuses) await deps.statuses.save(status);\n\t\treturn {\n\t\t\tprojectId: bundle.project.id,\n\t\t\tfeaturesImported: bundle.features.length,\n\t\t\tstatusesImported: bundle.statuses.length\n\t\t};\n\t};\n};\n//#endregion\n//#region src/routes/api/projects/import/+server.ts\nvar prerender = false;\n/**\n* Restore a decrypted ProjectBundleV1 onto the snapshot repository. The\n* write-ordering + conflict policy lives in the importProjectBundle use case;\n* this handler only validates the wire envelope and wires sync-aware repos so\n* open editors get the restored snapshots reactively.\n*/\nvar POST = async ({ request }) => {\n\tlet body;\n\ttry {\n\t\tbody = await request.json();\n\t} catch {\n\t\tthrow error(400, \"Invalid JSON body\");\n\t}\n\tif (!body || typeof body !== \"object\") throw error(400, \"Body must be a ProjectBundle\");\n\tconst bundle = body;\n\tif (bundle.format !== \"unspaghettit-project-bundle\") throw error(400, \"Body is not a ProjectBundle (wrong format tag)\");\n\tif (bundle.version !== 1) throw error(400, `Unsupported bundle version ${bundle.version}`);\n\tif (!bundle.project || typeof bundle.project.id !== \"string\") throw error(400, \"Bundle is missing a project\");\n\tconst { repo, projectRepo, statusRepo } = getSnapshotRepository();\n\treturn json({\n\t\tok: true,\n\t\t...await importProjectBundleUseCase({\n\t\t\tfeatures: createSyncAwareFeatureRepository(repo),\n\t\t\tprojects: createSyncAwareProjectRepository(projectRepo),\n\t\t\tstatuses: statusRepo\n\t\t})(bundle)\n\t});\n};\n//#endregion\nexport { POST, prerender };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,0BAA0B,GAAG,CAAC,IAAI,KAAK;AAC3C,CAAC,OAAO,OAAO,MAAM,KAAK;AAC1B,EAAE,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1E,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1C,EAAE,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AACxE,EAAE,OAAO;AACT,GAAG,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;AAC/B,GAAG,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;AAC3C,GAAG,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC;AACrC,GAAG;AACH,CAAC,CAAC;AACF,CAAC;AACD;AACA;AACG,IAAC,SAAS,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK;AAClC,CAAC,IAAI,IAAI;AACT,CAAC,IAAI;AACL,EAAE,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC7B,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,mBAAmB,CAAC;AACvC,CAAC;AACD,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,8BAA8B,CAAC;AACxF,CAAC,MAAM,MAAM,GAAG,IAAI;AACpB,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,6BAA6B,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gDAAgD,CAAC;AACxH,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,2BAA2B,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3F,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,6BAA6B,CAAC;AAC9G,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,qBAAqB,EAAE;AAClE,CAAC,OAAO,IAAI,CAAC;AACb,EAAE,EAAE,EAAE,IAAI;AACV,EAAE,GAAG,MAAM,0BAA0B,CAAC;AACtC,GAAG,QAAQ,EAAE,gCAAgC,CAAC,IAAI,CAAC;AACnD,GAAG,QAAQ,EAAE,gCAAgC,CAAC,WAAW,CAAC;AAC1D,GAAG,QAAQ,EAAE;AACb,GAAG,CAAC,CAAC,MAAM;AACX,EAAE,CAAC;AACH;;;;"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { h as getSnapshotRepository } from './snapshotRepository-8f-2wTrb.js';
|
|
2
|
+
import { s as systemClock } from './Clock-BfMWQpmJ.js';
|
|
3
|
+
import { a as createSyncAwareProjectRepository } from './syncAwareRepositories-DvUjq5Q6.js';
|
|
4
|
+
import { d as deleteProjectUseCase, g as getProjectUseCase, s as saveProjectUseCase } from './DeleteProject-BXZcehHZ.js';
|
|
3
5
|
import { e as error, j as json } from './index-CLnuRv4X.js';
|
|
4
|
-
import './TagPalette-
|
|
5
|
-
import './FeatureJson-
|
|
6
|
+
import './TagPalette-CpdTiC_7.js';
|
|
7
|
+
import './FeatureJson-DYvMEAub.js';
|
|
6
8
|
import './ImplementationStatus-7CfVZQtq.js';
|
|
7
9
|
import 'node:fs';
|
|
8
10
|
import 'write-file-atomic';
|
|
9
11
|
import 'node:path';
|
|
10
12
|
import 'node:os';
|
|
11
|
-
import './sync-
|
|
13
|
+
import './sync-Bn6eSUhC.js';
|
|
12
14
|
import './protocol-3LlFyPP_.js';
|
|
13
15
|
import 'yjs';
|
|
14
16
|
import 'ws';
|
|
@@ -19,7 +21,7 @@ var prerender = false;
|
|
|
19
21
|
var GET = async ({ params }) => {
|
|
20
22
|
const id = params.id;
|
|
21
23
|
const { projectRepo } = getSnapshotRepository();
|
|
22
|
-
const project = await projectRepo
|
|
24
|
+
const project = await getProjectUseCase({ repository: projectRepo })(id);
|
|
23
25
|
if (!project) throw error(404, `Project ${id} not found`);
|
|
24
26
|
return json(project);
|
|
25
27
|
};
|
|
@@ -36,15 +38,19 @@ var PUT = async ({ params, request }) => {
|
|
|
36
38
|
if (project.id !== id) throw error(400, `Body id "${project.id}" does not match URL id "${id}"`);
|
|
37
39
|
if (typeof project.name !== "string" || project.name.trim().length === 0) throw error(400, "Project name is required");
|
|
38
40
|
if (typeof project.description !== "string" || project.description.trim().length === 0) throw error(400, "Project description is required");
|
|
39
|
-
|
|
41
|
+
const { projectRepo } = getSnapshotRepository();
|
|
42
|
+
await saveProjectUseCase({
|
|
43
|
+
repository: createSyncAwareProjectRepository(projectRepo),
|
|
44
|
+
clock: systemClock
|
|
45
|
+
})(project);
|
|
40
46
|
return json({ ok: true });
|
|
41
47
|
};
|
|
42
48
|
var DELETE = async ({ params }) => {
|
|
43
49
|
const id = params.id;
|
|
44
50
|
const { projectRepo } = getSnapshotRepository();
|
|
45
|
-
await projectRepo
|
|
51
|
+
await deleteProjectUseCase({ repository: projectRepo })(id);
|
|
46
52
|
return new Response(null, { status: 204 });
|
|
47
53
|
};
|
|
48
54
|
|
|
49
55
|
export { DELETE, GET, PUT, prerender };
|
|
50
|
-
//# sourceMappingURL=_server.ts-
|
|
56
|
+
//# sourceMappingURL=_server.ts-Dip65hLJ.js.map
|